:root{--bg:#f6f8fc;--surface:#fff;--panel:#fff;--ink:#152337;--text:#4d5a6d;--muted:#93a0b3;--border:#e7ebf2;--purple:#6049e8;--purple-bright:#735cf5;--purple-lite:#f0eeff;--teal:#19aaa4;--green:#11a776;--red:#e05159;--amber:#df963d;--shadow:0 14px 35px rgba(34,48,81,.048);--sb:#121b2d;--sb2:#1c2739;--sb-text:#aab7ce;--radius:19px;color-scheme:light}
*{box-sizing:border-box}html{font-family:'DM Sans',Inter,Segoe UI,sans-serif;font-size:14px}body{margin:0;background:var(--bg);color:var(--ink);min-height:100vh;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button{cursor:pointer}svg{display:inline-block;vertical-align:middle;flex-shrink:0}button svg{pointer-events:none}a{color:var(--purple);text-decoration:none}a:hover{text-decoration:underline}[hidden]{display:none!important}button:disabled{opacity:.48;cursor:not-allowed}input:disabled{opacity:.6}input,select,textarea{outline:none}::placeholder{color:#a6b0c0}::selection{background:#ded8ff;color:#252040}.boot{position:fixed;inset:0;background:var(--bg);z-index:900;display:flex;align-items:center;justify-content:center}.orbit{width:105px;height:105px;border-radius:30px;background:#fff;box-shadow:0 15px 65px #6049e822;display:grid;place-items:center;animation:pulse 1s infinite alternate}.orbit img{width:80px;height:80px;object-fit:contain}@keyframes pulse{to{transform:scale(1.07)}}
.login-screen{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:#fff}.login-art{min-height:100vh;background:linear-gradient(152deg,#3528a1 0%,#6249df 55%,#9380ff 100%);color:white;display:flex;flex-direction:column;padding:45px 9%;position:relative;overflow:hidden}.login-art:after{position:absolute;content:'';width:500px;height:500px;border:1px solid #ffffff3e;border-radius:50%;right:-140px;bottom:-260px;box-shadow:0 0 0 65px #ffffff0b,0 0 0 130px #ffffff0a,0 0 0 195px #ffffff08}.art-bubbles span{position:absolute;border-radius:100%;background:#ffffff10;filter:blur(1px)}.art-bubbles span:nth-child(1){width:220px;height:220px;top:18%;right:-80px}.art-bubbles span:nth-child(2){width:120px;height:120px;top:6%;left:45%}.art-bubbles span:nth-child(3){width:380px;height:380px;bottom:-200px;left:-140px}.login-art-content{z-index:1;display:flex;flex-direction:column;margin:auto 0}.brand-light{display:flex;gap:15px;align-items:center;font:800 22px 'Plus Jakarta Sans',Arial,sans-serif}.brand-light img{height:53px;width:53px;object-fit:contain;background:white;border-radius:13px;padding:4px}.art-tag{font-size:11px;letter-spacing:2.5px;font-weight:700;margin-top:80px;opacity:.75}.login-art h1{font:800 clamp(35px,4.1vw,65px)/1.14 'Plus Jakarta Sans',Arial,sans-serif,sans-serif;letter-spacing:-2.9px;margin:22px 0}.login-art h1 em{font-style:normal;color:#bcffff}.login-art p{font-size:15px;color:#e5e4ff}.art-footer{z-index:1;margin-top:auto;font-size:10px;letter-spacing:2.5px;color:#dfd9ff}.login-pane{display:flex;align-items:center;justify-content:center;padding:40px}.login-box{width:min(400px,100%)}.login-mini-logo{width:66px;height:66px;border:1px solid var(--border);border-radius:19px;display:grid;place-items:center;margin-bottom:32px}.login-mini-logo img{width:55px;object-fit:contain}.overline{font-size:10px;letter-spacing:2px;font-weight:800;color:var(--purple)}.login-box h2{font:800 30px 'Plus Jakarta Sans',Arial,sans-serif;letter-spacing:-1.4px;margin:11px 0 4px}.login-sub{margin:0 0 35px}.field-label{display:block;font-size:12px;color:var(--text);font-weight:700;margin:17px 0 9px}.input-icon{display:flex;align-items:center;gap:11px;border:1px solid var(--border);background:#fff;padding:0 14px;border-radius:11px;height:49px}.input-icon:focus-within{border-color:var(--purple);box-shadow:0 0 0 3px #6049e81a}.input-icon>span{color:var(--muted)}.input-icon input{width:100%;min-width:0;border:0;height:45px;color:var(--ink)}.ghost-icon{border:0;background:transparent;color:var(--muted);padding:4px}.login-button{width:100%;height:51px;margin-top:28px;justify-content:space-between!important}.form-error{color:var(--red);font-size:12px;min-height:19px}.login-bottom{border-top:1px solid var(--border);padding-top:20px;color:var(--muted);font-size:11px;margin-top:35px;text-align:center}
.app-shell{display:flex;min-height:100vh}.sidebar{background:var(--sb);color:var(--sb-text);width:258px;flex:0 0 258px;min-height:100vh;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;z-index:21;transition:width .22s,flex-basis .22s}.side-head{height:91px;padding:26px 21px;display:flex;justify-content:space-between;align-items:center}.brand{display:flex;align-items:center;gap:11px;min-width:0}.brand img{width:41px;height:41px;object-fit:contain;background:white;border-radius:12px;padding:3px}.brand strong{font:800 18px 'Plus Jakarta Sans',Arial,sans-serif;letter-spacing:-.4px;color:#fff}.brand small{font-size:10px;color:#8290ab;display:block;margin-top:1px;white-space:nowrap}.side-collapse{color:#9da9bd!important}.sidebar-new{border:1px solid #ffffff20;background:linear-gradient(115deg,#7b66fa,#654cee);border-radius:13px;color:#fff;display:flex;align-items:center;gap:10px;padding:14px 14px;margin:8px 14px 31px;text-align:left;font-weight:700;box-shadow:0 8px 16px #0002}.sidebar-new kbd{margin-left:auto;opacity:.7;font-size:12px}.sidebar-new:hover{filter:brightness(1.1)}.nav-caption{font-size:10px;font-weight:800;letter-spacing:1.5px;color:#687792;padding:0 25px;margin-bottom:10px}.sidebar nav{overflow-y:auto;flex:1;padding:0 11px 20px;scrollbar-width:thin;scrollbar-color:#3d4a60 transparent}.nav-item{width:100%;padding:12px 13px;border:0;border-radius:11px;display:flex;align-items:center;gap:13px;color:var(--sb-text);background:transparent;text-align:left;margin:3px 0;font-weight:600;font-size:12.5px;transition:.15s}.nav-item svg{opacity:.86}.nav-item:hover{background:#ffffff0b;color:#fff}.nav-item.active{background:linear-gradient(95deg,#745bfc34,#745bfc14);color:#f4f2ff}.nav-item.active:before{content:'';position:absolute;left:0;height:22px;width:3px;background:#9e8aff;border-radius:6px}.nav-item.active svg{color:#aa9bff}.nav-item .count{margin-left:auto;background:#302a51;border-radius:5px;padding:2px 6px;font-size:10px}.sidebar-bottom{margin-top:auto;padding:9px 11px 16px;border-top:1px solid #ffffff0b}.sidebar-help{background:transparent;color:var(--sb-text);display:flex;align-items:center;gap:11px;border:none;width:100%;padding:13px;font-weight:600;text-align:left}.sidebar-help svg:last-child{margin-left:auto}.sidebar-help:hover{color:white}.side-user{display:flex;align-items:center;gap:10px;border:1px solid #ffffff13;background:#ffffff07;padding:11px 8px;border-radius:12px}.avatar,.top-avatar{width:34px;height:34px;border-radius:10px;background:linear-gradient(140deg,#5e65fa,#20afcf);color:#fff;display:grid;place-items:center;font-size:14px;font-weight:700;flex-shrink:0}.user-info{min-width:0;flex:1}.user-info strong{display:block;color:#f3f4fc;font-size:12px;overflow:hidden;text-overflow:ellipsis}.user-info small{font-size:10px;color:#8b9bb5}.side-user .icon-btn{color:#8795ab}.sidebar.collapsed{width:78px;flex-basis:78px}.sidebar.collapsed .brand div,.sidebar.collapsed .side-collapse,.sidebar.collapsed .nav-label,.sidebar.collapsed .nav-caption,.sidebar.collapsed .user-info,.sidebar.collapsed .sidebar-help svg:last-child,.sidebar.collapsed .sidebar-new kbd{display:none}.sidebar.collapsed .side-head{padding:22px 17px}.sidebar.collapsed .sidebar-new{justify-content:center;padding:13px;margin:9px 12px 30px}.sidebar.collapsed .nav-item{justify-content:center}.sidebar.collapsed .side-user{justify-content:center;padding:7px}.sidebar.collapsed .side-user .icon-btn{display:none}.sidebar.collapsed .sidebar-help{justify-content:center}.app-area{min-width:0;flex:1;display:flex;flex-direction:column}.topbar{height:75px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 35px;position:sticky;top:0;z-index:10}.top-left,.top-actions,.breadcrumb{display:flex;align-items:center;gap:14px}.breadcrumb{gap:10px;color:#8b97aa;font-size:12px}.breadcrumb svg{width:13px}.breadcrumb strong{color:var(--ink);font-weight:700}.top-actions{gap:17px}.search-trigger{width:265px;height:36px;border:1px solid var(--border);background:#f8f9fd;color:#9aa5b5;border-radius:9px;display:flex;align-items:center;gap:10px;padding:0 11px;text-align:left;font-size:11.5px}.search-trigger svg{width:15px}.search-trigger kbd{border:1px solid #e3e7ee;color:#8c9aaf;font-size:10px;padding:2px 5px;border-radius:5px;margin-left:auto}.live-pill{display:flex;align-items:center;gap:7px;color:#169776;font-weight:700;font-size:11px}.live-pill i{height:7px;width:7px;background:#1bc68d;border-radius:100%;box-shadow:0 0 0 3px #17bc8430}.icon-btn{background:none;border:none;display:grid;place-items:center;width:32px;height:32px;color:#79869a;border-radius:8px}.icon-btn:hover{background:#edf1f8;color:var(--ink)}.mobile-menu{display:none}.main{padding:33px 38px 48px;width:100%;max-width:1650px;margin:0 auto;flex:1}.app-footer{padding:10px 39px 21px;color:#a8b2c2;font-size:10.5px;display:flex;justify-content:space-between}
.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:28px}.page-header h1{font:800 clamp(24px,2.8vw,32px)/1.24 'Plus Jakarta Sans',Arial,sans-serif;letter-spacing:-1.1px;margin:0 0 7px}.page-header p{color:var(--muted);margin:0;font-size:12px}.page-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.context-bar{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:21px}.context-select{background:#fff;border:1px solid var(--border);border-radius:9px;display:flex;align-items:center;gap:7px;padding:0 10px;height:38px;color:#8d9bb0}.context-select select,.context-select input{border:0;background:transparent;color:var(--ink);font-size:12px;font-weight:600;max-width:220px;min-width:92px;height:36px}.context-select select:focus,.context-select input:focus{outline:0}.context-select input[type=date]{max-width:151px}.context-select svg{width:14px;height:14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:10px 15px;background:#fff;border:1px solid var(--border);border-radius:10px;color:var(--ink);font-size:12px;font-weight:700;min-height:37px;white-space:nowrap;transition:transform .12s,box-shadow .12s,background .12s}.btn:hover{box-shadow:0 5px 13px #13253e12;transform:translateY(-1px)}.btn:active{transform:scale(.98)}.btn.primary{color:#fff;background:linear-gradient(125deg,#7561fc,#5941e0);border-color:#6852e9;box-shadow:0 6px 16px #6950e02d}.btn.soft{background:var(--purple-lite);color:var(--purple);border-color:#e9e6ff}.btn.danger{color:#d94955;border-color:#f8dee1;background:#fff7f7}.btn.small{min-height:30px;padding:6px 10px;font-size:11px}.btn svg{width:15px;height:15px}.card{background:var(--panel);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:var(--radius)}.card-pad{padding:23px}.grid{display:grid;gap:17px}.kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:18px}.metric{padding:22px 22px 19px;min-width:0;position:relative;overflow:hidden}.metric-top{display:flex;align-items:center;justify-content:space-between}.metric-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;color:var(--purple);background:var(--purple-lite)}.metric-icon svg{height:19px;width:19px}.metric-icon.teal{color:#0ca5a0;background:#e4f9f7}.metric-icon.blue{color:#477bd8;background:#edf4ff}.metric-icon.orange{color:#d88829;background:#fff5e6}.metric-label{font-size:12px;color:#8490a2;font-weight:600;margin-top:16px}.metric-value{font:800 clamp(21px,2.2vw,28px) 'Plus Jakarta Sans',Arial,sans-serif;letter-spacing:-1.1px;margin:5px 0;white-space:nowrap}.metric-value small{font-size:11px;font-weight:700;color:#93a0b1;margin-left:5px}.metric-footer{font-size:11px;color:#97a3b5}.trend-up{color:#17a56f}.trend-down{color:#e45c6c}.dashboard-lower{grid-template-columns:minmax(0,1.55fr) minmax(300px,1fr)}.card-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}.card-head h3{font:800 15px 'Plus Jakarta Sans',Arial,sans-serif;letter-spacing:-.35px;margin:0}.card-head small{color:#97a3b5}.inline-head{display:flex;gap:9px;align-items:center}.chart-body{width:100%;height:245px;position:relative}.chart-body svg{height:100%;width:100%;overflow:visible}.chart-labels{display:flex;justify-content:space-between;color:#a2adbc;font-size:10px}.panel-description{color:var(--muted);font-size:11px;margin:0}.quality-rows{display:grid;gap:13px}.quality-item{display:flex;align-items:center;justify-content:space-between;gap:15px}.quality-item strong{font-size:11.5px}.quality-track{height:8px;border-radius:10px;background:#eff1f6;overflow:hidden;margin-top:6px}.quality-track span{display:block;height:100%;border-radius:10px}.quality-figure{font:700 13px 'Plus Jakarta Sans',Arial,sans-serif}.activity-feed{display:grid;gap:5px}.activity-item{display:flex;align-items:center;gap:13px;border-bottom:1px solid #eef1f5;padding:11px 0}.activity-item:last-child{border:0}.activity-icon{height:34px;width:34px;border-radius:11px;background:#f2f0ff;color:#6554e7;display:grid;place-items:center}.activity-name{font-weight:700;font-size:12px}.activity-sub{color:#94a0b2;font-size:10.5px;margin-top:4px}.activity-time{margin-left:auto;font-size:11px;color:#93a0b0}
.two-col{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}.three-col{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.field-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.field-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.field{display:flex;flex-direction:column;gap:7px;min-width:0}.field label{font-size:11px;font-weight:700;color:#69778a}.field input,.field select,.field textarea,.table-search{border:1px solid #e3e8f0;background:#fff;width:100%;min-width:0;min-height:40px;padding:10px 12px;border-radius:9px;color:var(--ink);font-size:12.5px}.field textarea{resize:vertical;min-height:105px}.field input:focus,.field select:focus,.field textarea:focus,.table-search:focus{border-color:#9485ff;box-shadow:0 0 0 3px #8c7cff18}.field small{color:var(--muted)}.form-footer{display:flex;align-items:center;justify-content:flex-end;gap:9px;margin-top:19px}.subsection{font:800 14px 'Plus Jakarta Sans',Arial,sans-serif;margin:0 0 17px}.panel-topline{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.tiny-subtitle{font-size:11px;color:#97a3b3}.chip{border-radius:20px;padding:5px 9px;background:#edfff7;color:#168d63;font-size:10px;font-weight:700;white-space:nowrap}.chip.warn{background:#fff6e7;color:#ca8a29}.chip.purple{background:#f3efff;color:#7760e8}.chip.danger{background:#fff0f1;color:#d85360}.switcher{background:#f3f4f8;border:1px solid #eaeef3;border-radius:9px;display:flex;padding:3px;gap:3px}.switcher button{border:0;background:none;color:#8996a8;font-size:11px;font-weight:700;padding:6px 13px;border-radius:6px}.switcher button.active{background:#fff;color:#4734b8;box-shadow:0 2px 7px #24335d0d}.table-wrap{overflow:auto;max-width:100%;border-radius:0 0 16px 16px}.data-table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap;font-size:12px}.data-table th{font-size:10px;letter-spacing:.4px;text-transform:uppercase;color:#99a5b4;font-weight:800;padding:14px 16px;background:#fafbfe;border-bottom:1px solid var(--border)}.data-table td{border-bottom:1px solid #eff2f7;padding:13px 16px;color:#465467}.data-table tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:#f8f9ff}.data-table td strong{color:#253149}.data-table button.link-action{border:0;background:transparent;color:var(--purple);font-weight:700;padding:3px;font-size:11px}.data-table .number{text-align:right;font-variant-numeric:tabular-nums}.table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:21px 22px}.table-toolbar h3{font:800 15px 'Plus Jakarta Sans',Arial,sans-serif;margin:0}.table-toolbar-right{display:flex;align-items:center;gap:8px}.table-search{height:34px;min-height:34px;width:180px;font-size:11px}.empty{padding:48px 20px;text-align:center;color:#8d99aa;font-size:12px}.empty svg{display:block;width:32px;height:32px;margin:0 auto 12px;color:#a9b5c5}.empty strong{display:block;color:#344358;margin-bottom:5px}.loading-page{display:grid;place-items:center;min-height:42vh}.spinner{height:31px;width:31px;border:3px solid #e9e5ff;border-top-color:var(--purple);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.banner{display:flex;gap:12px;align-items:center;padding:14px 16px;background:#f0edff;border:1px solid #e8e2ff;border-radius:13px;color:#5e4ac8;margin-bottom:18px;font-size:12px}.banner.green{background:#edfff7;border-color:#d9f9e9;color:#168564}.banner.warning{background:#fff9ed;border-color:#f9ead0;color:#a86e16}.weight-box{background:linear-gradient(123deg,#171f33,#27334c);color:#f1f8ff;border-radius:13px;padding:18px;margin-bottom:18px;display:flex;align-items:center;justify-content:space-between}.weight-box strong{font:800 33px 'Plus Jakarta Sans',Arial,sans-serif;letter-spacing:-1px}.weight-box small{color:#a5b4c9;font-size:10px}.weight-box .weight-meta{display:flex;flex-direction:column;gap:3px}.progress-round{width:12px;height:12px;border-radius:50%;display:inline-block;background:#708096}.progress-round.connected{background:#1eca92;box-shadow:0 0 0 5px #17ae7024}.tabbar{display:flex;gap:4px;background:#f1f3f8;border-radius:11px;padding:5px;width:max-content;margin-bottom:17px}.tabbar button{background:transparent;border:0;padding:9px 17px;font-size:12px;color:#7b8aa0;border-radius:8px;font-weight:700}.tabbar button.active{background:#fff;color:var(--purple);box-shadow:0 3px 10px #172a4512}.device-status{display:inline-flex;align-items:center;gap:6px;color:#8c99ac;font-size:11px}.device-status .dot{height:7px;width:7px;background:#a3acbc;border-radius:50%}.device-status.online .dot{background:#15bd84}.help-line{font-size:11px;color:#98a5b7;line-height:1.6}.terminal{background:#151e2f;color:#b8e5e1;border-radius:12px;padding:14px;font:11px/1.7 'Consolas',monospace;height:225px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere}.terminal:empty:before{content:'No device packets received';color:#6d7c93}.form-pair{display:grid;grid-template-columns:1fr 1fr;gap:15px}.detail-kpi{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:17px}.detail-kpi>div{padding:15px 18px;border:1px solid var(--border);background:#fff;border-radius:13px}.detail-kpi small{font-size:10px;color:#9da8b7}.detail-kpi strong{display:block;font:800 20px 'Plus Jakarta Sans',Arial,sans-serif;margin-top:5px}.toggle{display:flex;align-items:center;gap:8px;font-size:11px;color:#5b6b80}.toggle input{accent-color:#6750e5}.bottom-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:17px}.notice-inline{font-size:11px;color:#9ba6b4}.searchbox{display:flex;gap:9px;align-items:center;width:100%;max-width:580px;padding:13px 17px;background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow)}.searchbox input{flex:1;border:0;background:none;color:var(--ink);min-width:0}.searchbox:focus-within{border-color:#9281ff}.searchbox svg{color:#9ca7b6}.search-title{font:800 34px 'Plus Jakarta Sans',Arial,sans-serif;letter-spacing:-1.5px}.intro-center{text-align:center;padding:15px 0 34px}.intro-center p{color:#9aa6b9;margin:10px 0 24px}
.toast-area{position:fixed;right:25px;bottom:25px;z-index:1000;display:flex;flex-direction:column;gap:9px}.toast{border:1px solid var(--border);background:#fff;border-radius:12px;box-shadow:0 20px 55px #1d2b4a24;padding:13px 16px;display:flex;gap:9px;align-items:center;min-width:230px;max-width:420px;color:#2e3e57;font-size:12px}.toast.error{border-color:#f0c6cc}.toast svg{color:var(--green)}.toast.error svg{color:var(--red)}.modal-overlay,.command-overlay{position:fixed;inset:0;z-index:250;background:#1b24418c;backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:20px}.modal-card{width:min(620px,100%);max-height:92vh;overflow-y:auto;background:var(--surface);border-radius:21px;box-shadow:0 32px 90px #111e3a55;padding:27px}.modal-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}.modal-heading h2{font:800 20px 'Plus Jakarta Sans',Arial,sans-serif;margin:0;letter-spacing:-.65px}.modal-heading button{border:0;background:#f2f3f9;width:32px;height:32px;border-radius:9px}.command-overlay{align-items:flex-start;padding-top:13vh}.command-palette{width:min(580px,100%);background:#fff;border-radius:15px;box-shadow:0 20px 70px #101b3850;overflow:hidden}.command-input{display:flex;align-items:center;gap:12px;padding:20px;border-bottom:1px solid var(--border);color:#7d8da3}.command-input input{border:0;min-width:0;flex:1;outline:0;font-size:14px}.command-input kbd{font-size:10px;background:#f4f5f8;padding:5px 7px;border-radius:6px}.command-results{max-height:350px;overflow:auto;padding:8px}.command-option{display:flex;gap:12px;align-items:center;width:100%;padding:13px 16px;background:none;border:0;text-align:left;border-radius:9px;color:#39485e;font-size:13px}.command-option:hover{background:#f2f0ff;color:#5b47dd}.mobile-backdrop{display:none}
[data-theme=dark]{--bg:#101725;--surface:#172133;--panel:#192436;--ink:#f0f4ff;--text:#c0cadc;--muted:#8c9ab1;--border:#2b3a50;--purple-lite:#2c2854;--shadow:0 11px 40px #05091340;color-scheme:dark}[data-theme=dark] .card,[data-theme=dark] .field input,[data-theme=dark] .field select,[data-theme=dark] .field textarea,[data-theme=dark] .context-select,[data-theme=dark] .context-select select,[data-theme=dark] .context-select input,[data-theme=dark] .modal-card,[data-theme=dark] .table-search,[data-theme=dark] .searchbox,[data-theme=dark] .btn:not(.primary):not(.soft):not(.danger){background:var(--panel);color:var(--ink)}[data-theme=dark] .data-table th,[data-theme=dark] .data-table tbody tr:hover,[data-theme=dark] .detail-kpi>div{background:#1b283c;color:var(--ink)}[data-theme=dark] .data-table td,[data-theme=dark] .data-table td strong,[data-theme=dark] .activity-name,[data-theme=dark] .metric-value,[data-theme=dark] .command-option{color:var(--ink)}[data-theme=dark] .search-trigger,[data-theme=dark] .toggle,[data-theme=dark] .tabbar,[data-theme=dark] .switcher{background:#222e42}[data-theme=dark] .tabbar button.active,[data-theme=dark] .switcher button.active{background:#344258;color:#d8d1ff}[data-theme=dark] .quality-track{background:#3a4356}[data-theme=dark] .command-palette,[data-theme=dark] .input-icon{background:var(--surface);border-color:var(--border)}[data-theme=dark] .command-input input,[data-theme=dark] .input-icon input{background:transparent;color:var(--ink)}[data-theme=dark] .toast{background:#263247;color:#f0f2ff}[data-theme=dark] .login-screen{background:var(--surface)}[data-theme=dark] .btn.danger{background:#482934;color:#ffa9af}[data-theme=dark] .banner{background:#2a2851}[data-theme=dark] .banner.green{background:#1f4037}[data-theme=dark] .banner.warning{background:#403726}
@media(max-width:1300px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.dashboard-lower{grid-template-columns:1fr}.main{padding:29px 27px}.topbar{padding:0 27px}}@media(max-width:980px){.sidebar{position:fixed;transform:translateX(-101%);box-shadow:0 15px 40px #0c14252d}.sidebar.open{transform:translateX(0)}.mobile-menu{display:grid}.mobile-backdrop.show{display:block;position:fixed;inset:0;background:#18233880;z-index:20}.sidebar.collapsed{width:258px;flex-basis:258px}.sidebar.collapsed .brand div,.sidebar.collapsed .nav-label,.sidebar.collapsed .user-info,.sidebar.collapsed .nav-caption{display:block}.sidebar.collapsed .nav-item,.sidebar.collapsed .sidebar-new,.sidebar.collapsed .side-user{justify-content:initial}.sidebar.collapsed .sidebar-new{margin:8px 14px 31px}.sidebar.collapsed .side-user .icon-btn{display:grid}.sidebar.collapsed .side-head{padding:26px 21px}.sidebar.collapsed .sidebar-help svg:last-child{display:block}.sidebar.collapsed .sidebar-new kbd{display:inline}.topbar{padding:0 23px}}@media(max-width:700px){.main{padding:24px 15px}.topbar{height:63px;padding:0 15px}.search-trigger{width:36px;justify-content:center;padding:0}.search-trigger span:not(:first-child),.search-trigger kbd{display:none}.top-actions{gap:7px}.breadcrumb{font-size:11px;gap:5px}.live-pill{font-size:0;margin-right:2px}.page-header{align-items:flex-start;flex-direction:column;gap:15px}.page-header h1{font-size:26px}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.metric{padding:15px}.metric-icon{width:32px;height:32px}.metric-value{font-size:22px}.metric-label{font-size:11px;margin-top:13px}.two-col,.three-col,.form-pair{grid-template-columns:1fr}.field-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.detail-kpi{grid-template-columns:repeat(2,1fr)}.context-bar{gap:6px}.context-select{flex:1;min-width:100px;padding:0 7px}.context-select select,.context-select input{width:100%;min-width:0;font-size:11px}.card-pad{padding:18px}.data-table td{padding:11px 12px}.table-toolbar{padding:16px;flex-wrap:wrap}.table-toolbar-right{width:100%}.table-search{flex:1}.app-footer{padding:10px 15px 20px}.app-footer span:last-child{display:none}.modal-card{padding:18px}.login-art{display:none}.login-screen{display:block}.login-pane{min-height:100vh;padding:26px}.login-box{max-width:380px}.login-mini-logo{margin-bottom:30px}}@media print{.sidebar,.topbar,.app-footer,.page-tools,.context-bar,.form-footer,.table-toolbar-right,.btn,.toast-area,.tabbar{display:none!important}.main{padding:0}.card{box-shadow:none;break-inside:avoid}.app-area{width:100%}.table-wrap{overflow:visible}.data-table{white-space:normal;font-size:9px}body{background:white!important;color:black!important}}

/* Global removal of numeric up/down spin controls including dynamically created forms. */
input[type="number"]{-moz-appearance:textfield;appearance:textfield}
input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;display:none}
.hw-topbar{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:18px;background:var(--surface);border:1px solid var(--border);padding:16px;border-radius:14px}
.hw-topbar .btn{margin-left:auto}.hw-grid{align-items:start}.hw-card .panel-topline{margin-bottom:16px}.hw-device-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.hw-device-grid .field{min-width:0}.hw-device-grid input,.hw-device-grid select{width:100%;min-width:0}.hw-device-grid .field:nth-last-child(-n+3){grid-column:span 2}.hw-live-data{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:15px}.hw-live-data>div{background:var(--bg);padding:12px 15px;border-radius:10px;display:flex;flex-direction:column;gap:7px}.hw-live-data small{color:var(--muted)}.hw-live-data strong{font-size:19px;white-space:nowrap}.hw-console{margin-top:17px}.hw-notice{padding:18px 2px;color:var(--text);font-size:12px;line-height:1.7}.hw-topbar .toggle{white-space:nowrap}.hw-card .bottom-actions{flex-wrap:wrap}.device-status.online{color:var(--green)}
@media(max-width:680px){.hw-device-grid{grid-template-columns:1fr}.hw-device-grid .field:nth-last-child(-n+3){grid-column:span 1}.hw-live-data{grid-template-columns:1fr}.hw-topbar .btn{margin-left:0}}
/* Production device configuration: compact responsive controls with conditional visibility. */
.hw-bridge-panel{margin:12px 0 18px;border:1px solid var(--line, #e3e9f0);box-shadow:0 8px 25px rgba(26,40,62,.05)}
.hw-bridge-panel .field-grid{margin:12px 0}
.hw-bridge-panel input{width:100%;min-width:0}
.hw-device-grid{align-items:start}
.hw-extra{grid-column:1/-1;border-top:1px solid var(--line,#e1e5ed);margin-top:10px;padding-top:10px}
.hw-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.hw-options .field{min-width:0}
.hw-options .field[hidden],.hw-device-grid .field[hidden]{display:none!important}
.hw-device-extra-actions{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:10px 0}
.hw-device-extra-actions small{color:var(--muted);font-size:11px}
.hw-card .bottom-actions{flex-wrap:wrap}
.hw-card .device-status{white-space:nowrap}
.hw-bridge-panel p,.hw-bridge-panel small{color:var(--muted)}
@media(max-width:720px){.hw-options{grid-template-columns:1fr}.hw-device-extra-actions{flex-wrap:wrap}.hw-topbar{flex-wrap:wrap}.hw-bridge-panel .field-grid{grid-template-columns:1fr}}
.hw-rdu-template{border-top:1px solid var(--line,#e3e8ef);margin-top:12px;padding-top:12px;display:grid;gap:10px}
.hw-rdu-template .field{min-width:0}.hw-rdu-template small{font-size:11px;color:var(--muted)}

/* Role access and delete actions */
.danger-text{color:#dc4354!important}.danger-text:hover{text-decoration:underline}.data-table td:last-child{white-space:nowrap}.field-grid input[type=number]{-moz-appearance:textfield}.field-grid input[type=number]::-webkit-inner-spin-button,.field-grid input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}

/* Operator policy: no number stepper buttons anywhere, including modals. */
input[type="number"], input[type="number"]:hover, input[type="number"]:focus { -moz-appearance:textfield!important;appearance:textfield!important; }
input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button {-webkit-appearance:none!important;appearance:none!important;display:none!important;margin:0!important;}
.center-code-group{min-width:0;display:flex;flex-direction:column;gap:7px;grid-column:span 1}
.center-meta{display:none;border-radius:11px;border:1px solid #c6eadd;padding:10px 12px;background:linear-gradient(120deg,#e9fcf5,#eff7ff,#f7f2ff);color:#15574b;font-size:12px;line-height:1.5}
.center-meta.show{display:block}
.center-meta.invalid{background:linear-gradient(110deg,#fff2f2,#fff8ee);border-color:#f1c3c5;color:#ae3745}
.center-meta b{font-weight:800;margin-right:7px}
.center-meta .meta-label{color:#59756e;font-size:10px;text-transform:uppercase;letter-spacing:.35px;margin-right:5px}
.center-meta-grid{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}
.operator-device-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:11px;margin:15px 0}
.operator-device-card{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--border);background:var(--card,#fff);border-radius:12px}
.operator-device-card input{width:17px;height:17px}
.operator-device-card strong{font-size:13px}
.operator-device-card small{display:block;color:var(--muted);margin-top:4px;font-size:11px}
.operator-terminal{white-space:pre-wrap;overflow-wrap:anywhere;min-height:240px;max-height:54vh;overflow:auto}
[data-theme="dark"] .center-meta{background:linear-gradient(100deg,#173f38,#24394d,#353052);color:#d5fff0;border-color:#395f60}
[data-theme="dark"] .center-meta.invalid{background:#4b292f;color:#ffdee0;border-color:#a25b62}
[data-theme="dark"] .center-meta .meta-label{color:#a5c9c0}
[data-theme="dark"] .operator-device-card{background:#20293c}
/* Durable offline queue indicator: always visible, compact and responsive. */
body:has(#rmrdSyncStatus:not([hidden])) .toast-area{bottom:80px}
body:has(#rmrdSyncStatus:not([hidden])) .app-footer{padding-bottom:70px}
@media(max-width:600px){#rmrdSyncStatus{gap:5px!important;font-size:10px!important}#rmrdSyncStatus .btn{font-size:10px!important}}

/* Browser-only device selection - no number-input spinner controls. */
.browser-port-panel{margin:16px 0}
.browser-port-panel .bottom-actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.operator-device-grid + .page-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.operator-device-grid + .page-tools > .page-tools{display:flex;flex-wrap:wrap;gap:8px}
input[type=number]{-moz-appearance:textfield!important;appearance:textfield!important}
input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none!important;display:none!important;margin:0!important}

/* Remote workstation: serial-only COM selector */
.serial-port-pick{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:12px 14px;margin:12px 0;background:var(--surface,rgba(119,137,165,.08));border:1px solid var(--line,rgba(119,137,165,.22));border-radius:12px}
.serial-port-pick>div{display:flex;flex-direction:column;gap:4px}
.serial-port-pick strong{font-size:13px}
.serial-port-pick small{color:var(--muted,#64748b);font-size:12px}
@media(max-width:540px){.serial-port-pick .btn{width:100%}}
/* Local serial operator settings + collection cycle gate */
.mp-port-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(235px,1fr));gap:12px}
.mp-port-card{border:1px solid var(--border,#dce4ee);background:var(--bg,#f8fafc);padding:14px;border-radius:14px;display:grid;gap:9px}
.mp-port-card>small{color:var(--muted);font-size:11px}
.mp-port-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.mp-port-fields label{font-size:11px;color:var(--muted);display:grid;gap:3px}
.mp-port-fields input,.mp-port-fields select{min-width:0;width:100%;padding:8px;background:var(--card,#fff);color:var(--text,#14263e);border:1px solid var(--border,#dce4ee);border-radius:8px}
.mp-scale-reset{margin:8px 0;color:#158560;font-weight:700;font-size:12px}
.mp-scale-reset.waiting{color:#ba6b00;background:#fff4df;border:1px solid #efce84;border-radius:9px;padding:10px}
.mp-quick-connect{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.mp-qc-status{display:block;color:var(--muted);margin-top:12px;font-size:11px}
input[type=number]{appearance:textfield;-moz-appearance:textfield}
input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
@media(max-width:800px){.mp-quick-connect{justify-content:flex-start}.mp-port-fields{grid-template-columns:1fr 1fr}}

/* Web-only secure view isolation and clean UI */
#login[hidden],#shell[hidden],#modal[hidden],#command[hidden],#rmrdSyncStatus[hidden]{display:none!important}
body:not(.mp-authenticated) #shell{display:none!important}
body:not(.mp-authenticated){height:100vh;max-height:100vh;overflow:hidden;overscroll-behavior:none}
body:not(.mp-authenticated) #login:not([hidden]){position:fixed;inset:0;z-index:1000;width:100%;height:100vh;max-height:100vh;overflow-y:auto}
body.mp-authenticated #login{display:none!important}
input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
input[type=number]{appearance:textfield;-moz-appearance:textfield}
.login-art h1{font-size:clamp(36px,4vw,60px);letter-spacing:-1.8px}
.login-box h2{margin:12px 0 22px}
.page-header p:empty{display:none}
