:root{--iot-bg: #f4f7fb;--iot-ink: #0f172a;--iot-muted: #64748b;--iot-line: #e8eef6;--iot-primary: #1677ff;--iot-cyan: #0ea5e9;--iot-teal: #14b8a6;--iot-green: #10b981;--iot-amber: #f59e0b;--iot-red: #ef4444;--iot-navy: #0b1220;--iot-navy-2: #101c31;--iot-radius: 14px;--iot-shadow: 0 1px 2px rgba(15, 23, 42, .03), 0 12px 32px -18px rgba(15, 23, 42, .18)}*{box-sizing:border-box}html,body,#app{min-height:100%}body{margin:0;color:var(--iot-ink);font-size:var(--iot-font-size, 14px);background:radial-gradient(1100px 520px at 8% -8%,rgba(59,130,246,.09),transparent 55%),radial-gradient(900px 480px at 100% 0%,rgba(20,184,166,.08),transparent 50%),var(--iot-bg);font-family:var(--iot-font-family, "Inter", "PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);-webkit-font-smoothing:antialiased}.ant-table,.ant-table-wrapper,.ant-form,.ant-btn,.ant-input,.ant-select,.ant-menu{font-size:var(--iot-font-size, 14px)}html[data-density=compact] .ant-table-tbody>tr>td{padding:6px 10px!important}html[data-density=comfortable] .ant-table-tbody>tr>td{padding:14px 16px!important}body.iot-zebra .ant-table-tbody>tr:nth-child(2n)>td{background:#fbfdff}::selection{background:#1677ff2e}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}::-webkit-scrollbar-track{background:transparent}a{color:var(--iot-primary);text-decoration:none}.iot-mono{font-family:JetBrains Mono,Cascadia Code,SFMono-Regular,Consolas,monospace}.app-shell{min-height:100vh;height:auto!important}.app-shell>.ant-layout{min-height:100vh;height:auto!important;flex:1 1 auto}:root[data-radius=small] .iot-card,:root[data-radius=small] .ant-card,:root[data-radius=small] .device-card,:root[data-radius=small] .device-strip,:root[data-radius=small] .summary-item,:root[data-radius=small] .stat-card,:root[data-radius=small] .org-card{border-radius:8px!important}:root[data-radius=large] .iot-card,:root[data-radius=large] .ant-card,:root[data-radius=large] .device-card,:root[data-radius=large] .device-strip,:root[data-radius=large] .summary-item,:root[data-radius=large] .stat-card,:root[data-radius=large] .org-card{border-radius:18px!important}:root[data-shadow=none] .iot-card,:root[data-shadow=none] .ant-card,:root[data-shadow=none] .device-card,:root[data-shadow=none] .device-strip,:root[data-shadow=none] .summary-item,:root[data-shadow=none] .stat-card,:root[data-shadow=none] .org-card{box-shadow:none!important}:root[data-shadow=strong] .iot-card,:root[data-shadow=strong] .ant-card,:root[data-shadow=strong] .device-card,:root[data-shadow=strong] .device-strip,:root[data-shadow=strong] .summary-item,:root[data-shadow=strong] .stat-card,:root[data-shadow=strong] .org-card{box-shadow:0 18px 45px -20px #0f172a59!important}body.iot-bg-grid .app-content{background-image:linear-gradient(rgba(148,163,184,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.055) 1px,transparent 1px);background-size:28px 28px}body.iot-sidebar-navy .app-sider{background:linear-gradient(180deg,#071426,#0b223d 62%,#071426)!important}body.iot-sidebar-purple .app-sider{background:radial-gradient(520px 240px at 12% 4%,rgba(124,58,237,.3),transparent 62%),linear-gradient(180deg,#100b22,#1b1235 58%,#0b0718)!important}body.iot-sidebar-green .app-sider{background:radial-gradient(520px 240px at 12% 4%,rgba(16,185,129,.24),transparent 62%),linear-gradient(180deg,#071a16,#0b2a22 58%,#061410)!important}.app-sider{position:sticky!important;top:0;height:100vh;overflow:hidden;background:radial-gradient(520px 240px at 12% 4%,rgba(37,99,235,.28),transparent 62%),linear-gradient(180deg,#0b1220,#0a1526 58%,#08101d)!important;box-shadow:8px 0 32px -22px #0f172a99;z-index:20}.app-sider:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(148,163,184,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.035) 1px,transparent 1px);background-size:28px 28px;pointer-events:none;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.7),transparent 85%);mask-image:linear-gradient(180deg,rgba(0,0,0,.7),transparent 85%)}.brand{position:relative;display:flex;align-items:center;gap:10px;height:56px;padding:0 16px;color:#f8fafc;z-index:1}.brand-mark{width:38px;height:38px;flex:0 0 auto;display:grid;place-items:center;border-radius:12px;background:linear-gradient(145deg,#2dd4bf33,#3b82f63d);border:1px solid rgba(125,211,252,.22);box-shadow:0 0 30px #2dd4bf29}.brand-text{min-width:0;line-height:1.15}.brand-text strong{display:block;font-size:15px;letter-spacing:.4px;white-space:nowrap}.brand-text span{display:block;margin-top:3px;font-size:11px;letter-spacing:1.4px;color:#94a3b8d9;text-transform:uppercase}.sider-section-label{position:relative;z-index:1;margin:14px 24px 6px;font-size:10px;letter-spacing:2px;color:#64748be6}.sider-menu{position:relative;z-index:1;padding:4px 0;border-inline-end:none!important;background:transparent!important}.app-sider .ant-layout-sider-children{display:flex;flex-direction:column;height:100%}.app-sider .sider-menu{flex:1 1 auto;min-height:0;height:auto;overflow-y:auto;padding-bottom:96px}.app-sider .sider-menu::-webkit-scrollbar{width:4px}.app-sider .sider-menu::-webkit-scrollbar-thumb{background:#94a3b833;border-radius:4px}.app-sider.ant-layout-sider-collapsed .sider-footer,.app-sider.ant-layout-sider-collapsed .sider-section-label,.app-sider.ant-layout-sider-collapsed .app-logo-text{display:none!important}.app-sider.ant-layout-sider-collapsed .brand{justify-content:center;padding-left:0!important;padding-right:0!important}.sider-menu .ant-menu-item{border-radius:9px;font-size:13.5px}.sider-menu .ant-menu-item-selected:after{display:none}.sider-menu .ant-menu-item-selected{background:linear-gradient(90deg,var(--iot-primary),var(--brand-accent, var(--iot-teal)))!important;box-shadow:0 8px 22px -10px var(--iot-primary)}.sider-menu .ant-menu-item-selected:hover{background:linear-gradient(90deg,var(--iot-primary),var(--brand-accent, var(--iot-teal)))!important}.sider-footer{position:absolute;left:16px;right:16px;bottom:16px;z-index:1;padding:12px 14px;border:1px solid rgba(148,163,184,.14);border-radius:12px;background:#0f172a8c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#cbd5e1c7;font-size:11px;line-height:1.6}.app-header{position:sticky;top:0;z-index:15;display:flex;align-items:center;justify-content:space-between;height:56px!important;min-height:56px!important;padding:0 20px;border-bottom:1px solid rgba(226,232,240,.8);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#ffffffdb!important;line-height:normal}.header-left{display:flex;align-items:center;gap:10px;min-width:0;line-height:normal}.header-title{font-size:15px;font-weight:650;letter-spacing:.1px;line-height:1.2}.header-sub{margin-top:1px;font-size:10px;color:var(--iot-muted);line-height:1.25}.header-actions{display:flex;align-items:center;gap:8px}.live-pill{display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 12px;border:1px solid var(--iot-line);border-radius:999px;background:#fff;color:var(--iot-muted);font-size:12px}.live-pill .dot{width:7px;height:7px;border-radius:50%;background:#94a3b8}.live-pill.online .dot{background:var(--iot-green);box-shadow:0 0 0 4px #10b98124;animation:pulse 1.8s infinite}.live-pill.online{color:#047857;border-color:#10b9813d;background:#ecfdf5cc}.app-content{padding:16px 24px 32px;min-height:calc(100vh - 56px)}.page-wrap{max-width:1560px;margin:0 auto;animation:pageIn .35s ease both}@keyframes pageIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{box-shadow:0 0 #10b98147}50%{box-shadow:0 0 0 5px #10b98100}}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:14px}.page-head h1{margin:0;font-size:21px;font-weight:700;letter-spacing:-.3px;color:#0b1220}.page-head p{margin:4px 0 0;color:var(--iot-muted);font-size:12px}.page-head-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.iot-card{border:1px solid rgba(226,232,240,.9)!important;border-radius:var(--iot-radius)!important;box-shadow:var(--iot-shadow)!important;background:#ffffffeb!important;overflow:hidden}.iot-card .ant-card-head{min-height:54px;border-bottom-color:#eef3f9}.iot-card .ant-card-head-title{font-size:14px;font-weight:650;color:#1e293b}.iot-card .ant-card-extra{font-size:12px}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.stat-card{position:relative;padding:18px 18px 16px;border:1px solid rgba(226,232,240,.9);border-radius:var(--iot-radius);background:#ffffffeb;box-shadow:var(--iot-shadow);overflow:hidden;transition:transform .2s ease,box-shadow .2s ease}.stat-card:hover{transform:translateY(-2px);box-shadow:0 2px 4px #0f172a08,0 22px 44px -22px #0f172a3d}.stat-card:before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--accent, var(--iot-primary));opacity:.9}.stat-card:after{content:"";position:absolute;width:130px;height:130px;right:-50px;top:-64px;border-radius:50%;background:var(--accent-soft, rgba(22, 119, 255, .08))}.stat-top{display:flex;align-items:center;justify-content:space-between;gap:8px;position:relative;z-index:1}.stat-label{color:var(--iot-muted);font-size:12.5px;letter-spacing:.2px}.stat-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;color:var(--accent, var(--iot-primary));background:var(--accent-soft, rgba(22, 119, 255, .08));font-size:16px}.stat-value{position:relative;z-index:1;margin-top:10px;font-size:30px;font-weight:700;letter-spacing:-.8px;line-height:1;color:#0b1220}.stat-value small{font-size:13px;font-weight:500;color:#94a3b8;margin-left:4px;letter-spacing:0}.stat-foot{position:relative;z-index:1;display:flex;align-items:center;gap:8px;margin-top:10px;font-size:11.5px;color:#94a3b8}.iot-table .ant-table{background:transparent}.iot-table .ant-table-thead>tr>th{font-size:12px;font-weight:600;letter-spacing:.2px;text-transform:none;padding:12px 14px;border-bottom:1px solid #edf2f9}.iot-table .ant-table-tbody>tr>td{padding:13px 14px;font-size:13px;border-bottom:1px solid #f1f5f9}.iot-table .ant-table-tbody>tr:last-child>td{border-bottom:none}.iot-table .ant-pagination{margin:18px 0 2px}.cell-main{font-weight:600;color:#0f172a}.cell-sub{margin-top:2px;font-size:11.5px;color:#94a3b8}.mono-tag{display:inline-flex;align-items:center;padding:2px 8px;border-radius:6px;background:#f1f5f9;color:#475569;font-family:JetBrains Mono,Cascadia Code,Consolas,monospace;font-size:11.5px}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#cbd5e1;vertical-align:middle;flex:0 0 auto}.status-dot.online{background:var(--iot-green);box-shadow:0 0 0 4px #10b98124;animation:pulse 1.8s infinite}.status-chip{display:inline-flex;align-items:center;gap:7px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:500}.status-chip.online{color:#047857;background:#10b9811a}.status-chip.offline{color:#64748b;background:#f1f5f9}.type-pill{display:inline-flex;align-items:center;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:500;white-space:nowrap}.metric-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(172px,1fr));gap:12px}.metric-card{position:relative;padding:16px;border:1px solid #eaf0f8;border-radius:12px;background:linear-gradient(180deg,#fff,#fbfdff);overflow:hidden;transition:border-color .2s ease,transform .2s ease}.metric-card:hover{border-color:#1677ff47;transform:translateY(-1px)}.metric-card.failed{border-color:#ef44443d;background:linear-gradient(180deg,#fff,#fff7f7)}.metric-label{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:12px;color:var(--iot-muted)}.metric-value{margin-top:8px;font-size:25px;font-weight:700;letter-spacing:-.6px;color:#0b1220;line-height:1.1;word-break:break-all}.metric-value.offline{color:#94a3b8}.metric-unit{margin-left:3px;font-size:12px;font-weight:500;color:#94a3b8}.metric-meta{margin-top:8px;font-size:10.5px;color:#b0bccd}.terminal{border-radius:12px;background:#08111f;border:1px solid rgba(56,189,248,.14);box-shadow:inset 0 0 40px #0ea5e90d;overflow:hidden}.terminal-head{display:flex;align-items:center;gap:7px;padding:10px 14px;border-bottom:1px solid rgba(148,163,184,.1);background:#0f172a99}.terminal-head .traffic{display:inline-flex;gap:5px}.terminal-head .traffic i{display:block;width:8px;height:8px;border-radius:50%;background:#334155}.terminal-head .traffic i:nth-child(1){background:#f87171}.terminal-head .traffic i:nth-child(2){background:#fbbf24}.terminal-head .traffic i:nth-child(3){background:#34d399}.terminal-title{margin-left:4px;color:#94a3b8;font-size:11px;letter-spacing:.5px}.terminal-body{height:320px;overflow-y:auto;padding:14px;color:#cbd5e1;font-family:JetBrains Mono,Cascadia Code,SFMono-Regular,Consolas,monospace;font-size:12px;line-height:1.75}.terminal-line{display:flex;gap:10px;white-space:pre-wrap;word-break:break-all}.terminal-line .time{flex:0 0 auto;color:#475569}.terminal-line .arrow{flex:0 0 auto;color:#38bdf8}.terminal-line .text{min-width:0}.terminal-line.response .text{color:#86efac}.terminal-line.error .text{color:#fca5a5}.terminal-empty{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:#475569;font-family:inherit;font-size:12px}.login-page{position:relative;min-height:100vh;display:grid;grid-template-columns:1.15fr .85fr;background:radial-gradient(900px 500px at 6% 0%,rgba(37,99,235,.16),transparent 58%),radial-gradient(800px 500px at 100% 100%,rgba(20,184,166,.13),transparent 55%),#060d19;overflow:hidden}.login-page:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(148,163,184,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.05) 1px,transparent 1px);background-size:40px 40px;-webkit-mask-image:radial-gradient(900px 600px at 30% 20%,#000 20%,transparent 75%);mask-image:radial-gradient(900px 600px at 30% 20%,#000 20%,transparent 75%);pointer-events:none}.login-brand{position:relative;z-index:1;padding:68px 7vw;display:flex;flex-direction:column;justify-content:center;color:#e2e8f0}.login-badge{display:inline-flex;align-items:center;gap:8px;width:fit-content;padding:6px 12px;border:1px solid rgba(125,211,252,.18);border-radius:999px;background:#0ea5e914;color:#7dd3fc;font-size:11.5px;letter-spacing:.6px}.login-title{margin:26px 0 0;font-size:clamp(36px,4.6vw,62px);line-height:1.06;letter-spacing:-2.4px;font-weight:750;color:#f8fafc}.login-title em{font-style:normal;background:linear-gradient(100deg,#7dd3fc,#2dd4bf 55%,#a7f3d0);-webkit-background-clip:text;background-clip:text;color:transparent}.login-desc{max-width:520px;margin:20px 0 0;color:#94a3b8eb;font-size:14.5px;line-height:1.85}.login-points{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}.login-point{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid rgba(148,163,184,.14);border-radius:10px;background:#0f172a6b;color:#cbd5e1;font-size:12px}.login-point .anticon{color:#2dd4bf}.login-visual{position:relative;margin-top:44px;max-width:560px;height:210px;border:1px solid rgba(125,211,252,.12);border-radius:18px;background:linear-gradient(145deg,#0f172abf,#08111fe6);overflow:hidden}.login-visual:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(circle at 20% 30%,rgba(45,212,191,.16),transparent 30%),radial-gradient(circle at 80% 70%,rgba(59,130,246,.18),transparent 32%)}.login-node{position:absolute;width:11px;height:11px;border-radius:50%;background:#2dd4bf;box-shadow:0 0 0 6px #2dd4bf1a,0 0 22px #2dd4bf80;animation:float 4s ease-in-out infinite}.login-node.n2{background:#60a5fa;box-shadow:0 0 0 6px #60a5fa1a,0 0 22px #60a5fa80;animation-delay:-1.2s}.login-node.n3{background:#a78bfa;box-shadow:0 0 0 6px #a78bfa1a,0 0 22px #a78bfa80;animation-delay:-2.4s}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.login-float-card{position:absolute;padding:10px 12px;border:1px solid rgba(148,163,184,.14);border-radius:10px;background:#0f172acc;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#cbd5e1;font-size:10.5px;line-height:1.5;animation:float 5s ease-in-out infinite}.login-float-card strong{display:block;color:#f8fafc;font-size:12px;font-weight:600}.login-float-card span{color:#5eead4}.login-panel{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;padding:40px 6vw;background:#f8fafc09;border-left:1px solid rgba(148,163,184,.08);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.login-card{width:100%;max-width:400px;padding:34px 32px 28px;border:1px solid rgba(255,255,255,.9);border-radius:18px;background:#fffffffa;box-shadow:0 30px 80px -30px #0000008c;position:relative}.login-locale{position:absolute;top:14px;right:16px;display:flex;gap:5px;align-items:center;color:#cbd5e1;font-size:10px}.login-locale a{color:#94a3b8;font-size:10px}.login-locale .locale-current{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;border:1px solid #e2e8f0;border-radius:6px;color:#64748b!important;background:#f8fafc;font-size:10.5px!important;cursor:pointer}.login-locale .locale-current:hover{border-color:#bfdbfe;color:#1d4ed8!important;background:#eff6ff}.login-locale a.active{color:var(--iot-primary);font-weight:650}.login-card h2{margin:0;font-size:22px;letter-spacing:-.4px}.login-card .login-sub{margin:6px 0 22px;color:var(--iot-muted);font-size:12.5px}.login-card .ant-input-affix-wrapper,.login-card .ant-input{height:42px}.login-submit{height:44px;font-weight:600;letter-spacing:.4px;background:linear-gradient(96deg,#1677ff,#0ea5e9 60%,#14b8a6)!important;border:none!important;box-shadow:0 10px 24px -12px #0ea5e9cc}.login-demo{margin-top:18px;padding:10px 12px;border:1px dashed #dbeafe;border-radius:10px;background:#f8fbff;color:#64748b;font-size:11.5px;line-height:1.7}.login-demo b{color:#1d4ed8;font-weight:600}.login-footer{margin-top:18px;text-align:center;color:#94a3b8;font-size:10.5px}.soft-panel{padding:14px;border:1px solid #edf2f9;border-radius:12px;background:#f8fbff}.info-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px dashed #eef3f9;font-size:12.5px}.info-row:last-child{border-bottom:none}.info-row .label{color:var(--iot-muted)}.info-row .value{color:#0f172a;font-weight:500;text-align:right}.empty-hint{padding:40px 20px;text-align:center;color:#94a3b8;font-size:12.5px}.filter-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px;padding:14px 16px;border:1px solid rgba(226,232,240,.9);border-radius:var(--iot-radius);background:#ffffffdb;box-shadow:var(--iot-shadow)}.filter-bar .ant-input-affix-wrapper,.filter-bar .ant-select-selector{border-radius:8px!important}.chart-wrap{width:100%;height:280px}.gradient-text{background:linear-gradient(96deg,#1677ff,#0ea5e9 55%,#14b8a6);-webkit-background-clip:text;background-clip:text;color:transparent}.avatar-role{display:inline-flex;align-items:center;gap:5px;font-size:10px;color:#64748b}.user-chip{display:flex;align-items:center;gap:9px;padding:4px 6px 4px 4px;border-radius:999px;cursor:pointer;transition:background .2s ease}.user-chip:hover{background:#f1f5f9}.user-chip .meta{line-height:1.2}.user-chip .meta strong{display:block;font-size:12px;font-weight:600;color:#0f172a}.user-chip .meta span{display:block;font-size:10px;color:#94a3b8}.command-quick{display:flex;flex-wrap:wrap;gap:8px}.command-chip{padding:7px 12px;border:1px solid #e2e8f0;border-radius:9px;background:#fff;color:#334155;font-size:12px;cursor:pointer;transition:all .18s ease}.command-chip:hover{border-color:#93c5fd;color:#1d4ed8;background:#f0f7ff;transform:translateY(-1px)}.command-chip.status{border-color:#14b8a647;color:#0f766e;background:#f0fdfacc}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 12px;font-size:13px;font-weight:650;color:#334155}.section-title:before{content:"";width:3px;height:14px;border-radius:3px;background:linear-gradient(180deg,#1677ff,#14b8a6)}.ant-modal-content,.ant-drawer-content{border-radius:16px!important}.ant-drawer-content{border-radius:16px 0 0 16px!important}.ant-tag{border-radius:6px}.ant-btn{box-shadow:none}.ant-btn-primary{box-shadow:0 6px 16px -10px #1677ffe6}@media (max-width: 1180px){.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.login-page{grid-template-columns:1fr 1fr}.login-brand{padding:48px 5vw}}@media (max-width: 900px){.app-sider{display:none}.login-page{grid-template-columns:1fr}.login-brand{display:none}.login-panel{min-height:100vh;padding:30px 18px}.app-content{padding:16px}.app-header{padding:0 16px}.page-head{flex-direction:column;align-items:flex-start}.stat-grid{grid-template-columns:1fr 1fr}}@media (max-width: 560px){.stat-grid{grid-template-columns:1fr}.header-sub{display:none}.page-head h1{font-size:20px}.metric-grid{grid-template-columns:1fr 1fr}.login-card{padding:26px 20px}}.page-head{margin-bottom:12px}.page-head h1{font-size:19px;font-weight:680;letter-spacing:-.2px}.page-head p{margin-top:3px;font-size:11.5px}.filter-bar{padding:0 2px 12px;margin-bottom:14px;border:0;border-bottom:1px solid var(--iot-line);border-radius:0;background:transparent;box-shadow:none}.iot-card:has(.iot-table){overflow:hidden}.iot-card:has(.iot-table) .ant-card-body{padding:0 16px 10px}.iot-table .ant-table-container{border-radius:10px}.iot-table .ant-table-thead>tr>th{position:sticky;top:0;z-index:2;padding:10px 14px;background:#f8fafc!important;color:#667085;font-size:11px;font-weight:650;letter-spacing:.25px;border-bottom:1px solid #e9eef5!important}.iot-table .ant-table-thead>tr>th:before{display:none!important}.iot-table .ant-table-tbody>tr>td{padding:13px 14px;border-bottom:1px solid #f1f4f8;vertical-align:middle}.iot-table .ant-table-tbody>tr:hover>td{background:#f8fbff!important}.iot-table .ant-table-tbody>tr.ant-table-row-selected>td{background:#f2f8ff!important}.iot-table .ant-table-pagination.ant-pagination{display:flex;justify-content:flex-end;margin:14px 0 4px}.iot-table .ant-pagination-item,.iot-table .ant-pagination-prev,.iot-table .ant-pagination-next{min-width:28px;height:28px;line-height:26px;border-radius:7px}.iot-table .ant-pagination-item-active{border-color:var(--iot-primary);background:var(--iot-primary)}.iot-table .ant-pagination-item-active a{color:#fff}.iot-table .ant-btn-link{padding:0 4px;font-size:12px}.iot-table .ant-tag{margin-inline-end:4px;border-radius:6px;font-size:11px;line-height:19px}.iot-table .ant-table-cell-fix-right{background:#fff}.iot-table .ant-table-thead .ant-table-cell-fix-right{background:#f8fafc!important}@media (max-width: 760px){.filter-bar{padding-bottom:10px}.iot-card:has(.iot-table) .ant-card-body{padding:0 10px 8px}}:root{--iot-font-sans: "MiSans", "HarmonyOS Sans SC", "PingFang SC", "Microsoft YaHei UI", "Inter", "Segoe UI", sans-serif;--iot-font-heading: "MiSans", "HarmonyOS Sans SC", "Avenir Next", "Segoe UI Variable Display", "Inter", sans-serif;--iot-font-display: "Source Han Serif SC", "Noto Serif SC", "Songti SC", "STSong", "SimSun", serif;--iot-font-number: "Bahnschrift", "DIN Alternate", "Roboto Condensed", "Arial Narrow", "Inter", sans-serif;--iot-font-mono: "JetBrains Mono", "Cascadia Code", "SFMono-Regular", Consolas, monospace}body{font-family:var(--iot-font-family, var(--iot-font-sans));font-feature-settings:"kern" 1,"liga" 1,"cv05" 1,"cv11" 1;letter-spacing:.004em}.page-head h1{font-family:var(--iot-font-heading);font-size:22px;font-weight:620;letter-spacing:-.55px;line-height:1.22}.page-head p{font-family:var(--iot-font-sans);letter-spacing:.025em}.brand-text strong{font-family:var(--iot-font-heading);font-weight:720;letter-spacing:-.2px}.brand-text span{letter-spacing:.11em;font-weight:450}.section-title,.ant-card-head-title,.ai-session-head,.pt-title{font-family:var(--iot-font-heading);letter-spacing:-.18px}.stat-value,.hero-stat strong,.pt-stat-value,.metric-value,.summary-value,.kpi-value,.numeric-value{font-family:var(--iot-font-number);font-variant-numeric:tabular-nums;letter-spacing:-.65px;font-weight:600}.ant-statistic-content-value,.ant-statistic-content{font-family:var(--iot-font-number);font-variant-numeric:tabular-nums}.iot-mono,.mono-tag,.ant-tag.iot-mono,pre,code{font-family:var(--iot-font-mono);letter-spacing:-.12px}.ant-table-thead>tr>th{font-family:var(--iot-font-heading);font-size:11px!important;font-weight:580!important;letter-spacing:.045em}.ant-btn{font-family:var(--iot-font-sans);font-weight:520;letter-spacing:.012em}.ant-input,.ant-input-affix-wrapper,.ant-select,.ant-textarea,textarea{font-family:var(--iot-font-sans);font-weight:450}.hero-eyebrow,.eyebrow,.ai-session-meta,.pt-stat-label{letter-spacing:.13em;text-transform:uppercase}.login-brand h1,.login-brand .login-title,.custom-hero .hero-title{font-family:var(--iot-font-display);letter-spacing:-.8px;font-weight:600}.ai-bubble,.ai-empty-title{letter-spacing:.008em}@media (max-width: 560px){.page-head h1{font-size:20px;letter-spacing:-.35px}}.page-head p{font-size:13px!important;line-height:1.65}.ant-card-head-title{font-size:14px!important}.iot-table .ant-table-thead>tr>th{padding:11px 14px!important;font-size:12px!important}.iot-table .ant-table-tbody>tr>td{font-size:13.5px!important}.iot-table .ant-tag{font-size:11.5px!important}.iot-table .ant-btn-link{font-size:12.5px!important}.form-hint,.cell-sub,.custom-sub,.editor-hint,.preview-label,.share-tip,.send-note,.docs-note,.login-demo,.api-cat-card span,.api-rule-grid span{font-size:12px!important;line-height:1.7!important}.ant-form-item-label>label{font-size:13px!important}.ant-form-item-explain,.ant-form-item-extra{font-size:11.5px!important}.ant-modal .ant-modal-title{font-size:16px!important}.ant-alert-message{font-size:13px!important}.ant-alert-description{font-size:12px!important;line-height:1.7!important}.session-traffic-head b{font-size:13px!important}.session-traffic-head span{font-size:11.5px!important}.device-list-main .name{font-size:13.5px!important}.device-list-main .meta{font-size:11.5px!important}.terminal-body{font-size:12.5px!important}@media (max-width: 760px){.page-head p{font-size:12px!important}.iot-table .ant-table-tbody>tr>td{font-size:12.5px!important}}.ant-btn{height:34px;padding:0 14px;border-radius:9px!important;box-shadow:none!important;font-weight:560!important;letter-spacing:.01em;transition:background .16s ease,border-color .16s ease,color .16s ease,box-shadow .16s ease,transform .16s ease}.ant-btn-sm{height:28px;padding:0 10px;border-radius:7px!important;font-size:12px!important}.ant-btn-lg{height:40px;padding:0 18px;border-radius:10px!important}.ant-btn-icon-only{width:34px;padding:0}.ant-btn-icon-only.ant-btn-sm{width:28px}.ant-btn-default{border-color:#dce5f0!important;background:#fff!important;color:#334155!important}.ant-btn-default:not(:disabled):hover{border-color:#93c5fd!important;background:#f8fbff!important;color:#1d4ed8!important}.ant-btn-default:not(:disabled):active{border-color:#60a5fa!important;background:#eff6ff!important}.ant-btn-primary{border:0!important;background:linear-gradient(135deg,#1d4ed8,#2563eb 52%,#0ea5e9)!important;color:#fff!important;box-shadow:0 8px 18px -12px #2563ebf2!important}.ant-btn-primary:not(:disabled):hover{background:linear-gradient(135deg,#2563eb,#3b82f6 52%,#22d3ee)!important;box-shadow:0 10px 22px -12px #2563eb!important;transform:translateY(-1px)}.ant-btn-primary:not(:disabled):active{transform:translateY(0);box-shadow:0 4px 10px -8px #2563ebf2!important}.ant-btn-primary.ant-btn-background-ghost{border:1px solid #bfdbfe!important;background:#f0f7ff!important;color:#1d4ed8!important;box-shadow:none!important}.ant-btn-primary.ant-btn-background-ghost:hover{border-color:#93c5fd!important;background:#e8f2ff!important;color:#1e40af!important}.ant-btn-text{color:#475569!important;background:transparent!important}.ant-btn-text:not(:disabled):hover{color:#0f172a!important;background:#f1f5f9!important}.ant-btn-link{height:auto;padding:0 2px;color:#2563eb!important;font-weight:560!important}.ant-btn-link:not(:disabled):hover{color:#1d4ed8!important}.ant-btn-default.ant-btn-dangerous{border-color:#fecaca!important;background:#fff!important;color:#b91c1c!important}.ant-btn-default.ant-btn-dangerous:not(:disabled):hover{border-color:#fca5a5!important;background:#fef2f2!important;color:#991b1b!important}.ant-btn-primary.ant-btn-dangerous{background:linear-gradient(135deg,#dc2626,#ef4444)!important;box-shadow:0 8px 18px -12px #dc2626e6!important}.ant-btn:disabled{opacity:.48;box-shadow:none!important}.ant-btn>.anticon+span,.ant-btn>span+.anticon{margin-inline-start:7px}.ant-modal-footer .ant-btn+.ant-btn{margin-inline-start:8px}.iot-card{border-color:#e8eef7!important;background:#fff!important;box-shadow:0 1px 2px #0f172a09,0 10px 28px -24px #0f172a38!important}.iot-card .ant-card-head{min-height:50px;padding:0 18px;border-bottom-color:#edf2f8}.iot-card .ant-card-body{padding:18px}.ant-input,.ant-input-affix-wrapper,.ant-select-selector,.ant-picker,.ant-input-number{border-radius:9px!important;border-color:#dfe7f1!important;box-shadow:none!important}.ant-input:hover,.ant-input-affix-wrapper:hover,.ant-select-selector:hover,.ant-picker:hover,.ant-input-number:hover{border-color:#bfdbfe!important}.ant-input:focus,.ant-input-focused,.ant-input-affix-wrapper-focused,.ant-select-focused .ant-select-selector,.ant-picker-focused{border-color:#93c5fd!important;box-shadow:0 0 0 3px #2563eb14!important}.ant-tag{border-radius:6px;font-weight:520}.ant-card-head-title{letter-spacing:-.1px}.header-help-btn{height:30px!important;padding:0 10px!important;border-radius:8px!important;color:#475569!important;font-size:12.5px!important}.header-help-btn:hover{background:#f1f5f9!important;color:#0f172a!important}.page-head p{font-size:13.5px!important;line-height:1.65!important}.iot-table .ant-table-thead>tr>th{font-size:12.5px!important}.iot-table .ant-table-tbody>tr>td{font-size:14px!important}.cell-sub,.form-hint,.share-tip,.editor-hint,.docs-note,.help-template{font-size:12.5px!important;line-height:1.65!important}.ant-tag{font-size:12px!important}.ant-form-item-label>label{font-size:13.5px!important}.ant-descriptions-item-label,.ant-descriptions-item-content{font-size:12.5px!important}.sider-menu .ant-menu-item{font-size:14px!important}.ant-card-head-title{font-size:14.5px!important}@media (max-width: 760px){.iot-table .ant-table-tbody>tr>td{font-size:13px!important}.header-help-btn span{display:none}}.login-card form{margin-top:6px}.login-card .ant-form-item{margin-bottom:18px}.login-card .ant-form-item-control-input{min-height:46px}.login-card .ant-input-affix-wrapper,.login-card .ant-input{width:100%;height:46px!important;padding:0 13px;display:flex;align-items:center}.login-card .ant-input-affix-wrapper>input.ant-input,.login-card .ant-input-affix-wrapper .ant-input{height:44px!important;line-height:44px;padding:0;background:transparent}.login-card .ant-input-prefix{display:flex;align-items:center;margin-right:10px;line-height:1}.login-card .ant-input-suffix{display:flex;align-items:center;margin-left:8px;line-height:1}.login-card .ant-input-password-icon{display:flex;align-items:center}.login-card .login-submit{height:46px!important;margin-top:2px}.login-captcha{display:flex;align-items:center;gap:8px}.login-captcha .ant-input{flex:1;min-width:0}.login-captcha-image{flex:0 0 132px;width:132px;height:46px;border:1px solid #dbe7f5;border-radius:8px;background:#f3f8ff;cursor:pointer}.login-captcha-image:hover{border-color:#93c5fd}.login-captcha-hint{margin-top:5px;color:#94a3b8;font-size:11px}.form-hint.iot-hint-tip{position:relative;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin:0 0 0 4px;padding:0;border:1px solid #cbd5e1;border-radius:50%;color:transparent!important;background:#fff;font-size:0!important;line-height:1;vertical-align:-3px;cursor:help;overflow:visible;flex:0 0 auto}.form-hint.iot-hint-tip.iot-hint-inline{margin-left:6px;vertical-align:middle}.form-hint.iot-hint-tip:before{content:"?";color:#64748b;font-size:10px;font-weight:700;line-height:1}.iot-hint-popover{position:fixed;inset:auto;z-index:3000;margin:0;border:0;max-width:300px;padding:7px 9px;border-radius:6px;color:#f8fafc;background:#1e293b;box-shadow:0 8px 24px -10px #0f172a8c;font-size:11.5px;line-height:1.55;white-space:normal;text-align:left;pointer-events:none;opacity:0;visibility:hidden;transform:translateY(3px);transition:opacity .15s ease,transform .15s ease}.iot-hint-popover.visible{opacity:1;visibility:visible;transform:translateY(0)}.form-hint.iot-hint-tip:hover{border-color:#93c5fd;background:#eff6ff}
