.app-select{border:1px solid var(--line);background:var(--surface);min-width:120px;min-height:40px;color:var(--ink);text-align:left;border-radius:6px;justify-content:space-between;align-items:center;gap:16px;padding:8px 11px;font-size:13px;display:inline-flex}.app-select:hover,.app-select:focus,.app-select[aria-expanded=true]{background:var(--surface);color:var(--ink);border-color:var(--line);box-shadow:none}.app-select>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.app-select-menu{border:1px solid var(--line);background:var(--surface);color:var(--ink);scrollbar-width:thin;border-radius:6px;margin:0;padding:4px;position:fixed;inset:auto;overflow-y:auto;box-shadow:0 6px 18px #20344d18}.app-select-menu::backdrop{background:0 0}.app-select-menu button{text-align:left;background:var(--surface);width:100%;min-height:38px;color:var(--ink);padding:8px 10px;font-size:13px;line-height:22px;display:block}.app-select-menu button:hover,.app-select-menu button.is-active,.app-select-menu button[aria-selected=true]{background:var(--surface);color:var(--ink)}.app-select-menu button.is-active,.app-select-menu button[aria-selected=true]{font-weight:600}@media (width<=600px){.app-select{min-width:105px}.app-select-menu button{min-height:44px}}.admin-page{width:100%;max-width:1600px;color:var(--ink);margin:0 auto}.admin-list{overflow:visible}.admin-toolbar{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:18px 20px;display:flex}.admin-toolbar .app-select{border:1px solid var(--line);min-width:120px;height:38px;color:var(--ink);background:#fff;border-radius:6px;padding:0 10px;font-size:13px}.admin-search{border:1px solid var(--line);color:#62738a;background:#fff;border-radius:6px;flex:1;align-items:center;gap:8px;min-width:120px;max-width:300px;padding:0 10px;display:flex}.admin-search input,.admin-search input:focus,.admin-search input:focus-visible{width:100%;min-width:0;height:36px;min-height:36px;box-shadow:none;background:0 0;border:0;border-radius:0;outline:0;padding:8px 0;font-size:13px}.admin-toolbar-actions{align-items:center;gap:10px;margin-left:auto;display:flex}.admin-toolbar>.admin-batch-toggle{margin-left:auto}.admin-batch-toggle,.admin-toolbar .admin-create{white-space:nowrap}.admin-list>.error-bar{margin:12px 20px}.admin-table-wrap{min-width:0}.admin-table{border-collapse:collapse;text-align:center;font-variant-numeric:tabular-nums;table-layout:auto;width:100%;font-size:13px}.admin-table th{background:var(--blue-soft);border-bottom:1px solid var(--line);color:#4d6079;white-space:nowrap;padding:12px;font-weight:600}.admin-table td{vertical-align:middle;overflow-wrap:anywhere;border-bottom:1px solid #edf0f5;height:64px;padding:15px 12px;line-height:1.6}.admin-table tbody tr:hover{background:#fbfcff}.admin-table tbody tr.is-selected{background:#f2f6ff}.admin-table th:last-child,.admin-table td:last-child{text-align:center;padding-right:12px}.admin-table th.admin-selection,.admin-table td.admin-selection{text-align:center;width:44px;padding:12px 4px}.admin-table td[data-label=序号]{color:#62738a}.admin-table th:first-child,.admin-table td:first-child{padding-left:12px}.member-admin-table td[data-label=姓名],.member-admin-table td[data-label=账号]{max-width:150px}.member-admin-table td[data-label=注册时间],.member-admin-table td[data-label=最近登录]{max-width:145px}.admin-check{appearance:auto;width:16px;height:16px;min-height:16px;accent-color:var(--blue);vertical-align:middle;cursor:pointer;padding:0}.admin-check:disabled{cursor:default}.admin-code{text-align:center;white-space:nowrap;padding-inline:30px;display:block}.admin-code .admin-text-anchor>.icon-button{position:absolute;top:50%;left:calc(100% + 2px);transform:translateY(-50%)}.admin-code .admin-text-anchor{letter-spacing:.2px;font-size:12px}.admin-code .icon-button{color:#5e728e;width:28px;min-width:28px;height:28px}.admin-status{color:#5c687c;white-space:nowrap;background:#eef1f5;border-radius:4px;padding:3px 8px;font-size:12px;line-height:1.5;display:inline-flex}.admin-status.active{color:#1e5dd0;background:#eaf2ff}.admin-status.used{color:#17734b;background:#eaf7f0}.admin-status.disabled{color:#99521d;background:#fff4e8}.admin-actions,.admin-password-actions{white-space:nowrap;align-items:center;gap:12px;display:flex}.admin-actions{justify-content:center}.admin-actions>.text-button,.admin-row-more>.text-button,.admin-password-actions .text-button{align-items:center;gap:3px;padding:6px 0;font-size:12px;display:flex}.admin-password-cell{min-width:0}.admin-password-actions{text-align:center;white-space:nowrap;height:36px;display:block;position:relative}.admin-password-mask-eye{vertical-align:top;height:36px;display:inline-block;position:relative}.admin-password-mask{letter-spacing:1px;text-align:center;width:36px;line-height:36px;display:block}.admin-password-eye{width:28px;height:36px;position:absolute;top:0;left:100%}.admin-password-actions>.text-button{height:36px;position:absolute;top:0;left:calc(50% + 62px)}.admin-cell-error{color:#b42318;white-space:normal;overflow-wrap:anywhere;margin-top:4px;font-size:12px;display:block}.admin-name-cell{min-width:0}.admin-name-display{text-align:center;padding-inline:28px;line-height:32px}.admin-text-anchor{vertical-align:middle;max-width:100%;display:inline-block;position:relative}.admin-text-anchor>span{overflow-wrap:anywhere}.admin-name-pencil{width:26px;height:32px;position:absolute;top:50%;left:calc(100% + 2px);transform:translateY(-50%)}.admin-name-edit{justify-content:center;align-items:center;gap:4px;display:flex}.admin-name-edit input{text-align:center;width:100%;min-width:0;max-width:180px;min-height:34px;padding:5px 7px;font-size:13px}.member-admin-table td[data-label=账号]{padding-inline:30px}.admin-member-delete{color:#62738a;width:26px;height:32px;position:absolute;top:50%;left:calc(100% + 2px);transform:translateY(-50%)}.admin-member-delete:hover{color:#b42318}.admin-password-actions .admin-password-eye,.admin-password-actions .admin-password-eye:hover,.admin-password-actions .admin-password-eye:focus{width:28px;height:36px;box-shadow:none;background:0 0}.admin-password-actions>.text-button:before{content:"";background:var(--line);width:1px;height:16px;position:absolute;top:10px;left:-8px}.admin-password-popup{z-index:80;background:var(--surface);border:1px solid var(--line);width:max-content;min-width:160px;max-width:min(320px,100vw - 24px);max-height:calc(100dvh - 24px);color:var(--ink);border-radius:8px;padding:8px 10px;position:fixed;overflow:auto}.admin-password-popup-row{align-items:center;gap:12px;display:flex}.admin-password-popup-content{white-space:pre-wrap;overflow-wrap:anywhere;flex:1;min-width:0;font-size:14px;line-height:1.6}.admin-password-popup-content .admin-cell-error{margin:0}.admin-password-popup .admin-password-copy{flex:none;width:28px;height:28px}.admin-row-more{position:relative}.admin-row-menu{z-index:15;border:1px solid var(--line);text-align:left;background:#fff;border-radius:6px;min-width:108px;padding:4px;position:absolute;top:100%;right:0;box-shadow:0 5px 16px #20344d18}.admin-row-menu button{text-align:left;white-space:nowrap;background:0 0;width:100%;padding:9px 12px;font-size:13px;display:block}.admin-row-menu button:hover{background:#f2f6fc}.admin-page .danger{color:#b42318}.admin-batch{border-bottom:1px solid var(--line);background:#f5f8ff;flex-wrap:wrap;align-items:center;gap:18px;padding:12px 20px;font-size:13px;display:flex}.admin-batch button{font-size:12px}.admin-batch>button:last-child{margin-left:auto}.admin-mobile-select{display:none}.admin-empty{text-align:center;color:#62738a;padding:58px 20px;font-size:13px}.admin-pager{color:#62738a;justify-content:space-between;align-items:center;min-height:47px;padding:12px 20px;font-size:12px;display:flex}.admin-pager>div{align-items:center;gap:12px;display:flex}.admin-pager .icon-button{width:30px;height:30px}.admin-modal{width:460px;max-width:calc(100vw - 32px);height:fit-content;max-height:calc(100dvh - 48px);color:var(--ink);overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#c5cfdf transparent;background:#fff;border:1px solid #e0e7f0;border-radius:12px;margin:auto;padding:0;position:fixed;inset:0;overflow:auto;box-shadow:0 16px 48px #182b4824}.admin-modal::backdrop,.admin-confirm::backdrop{background:#1223383d}.admin-modal>header{border-bottom:1px solid var(--line);z-index:1;background:#fff;justify-content:space-between;align-items:center;padding:18px 24px;display:flex;position:sticky;top:0}.admin-modal h2{margin:0;font-size:19px;font-weight:650}.admin-modal-body{padding:24px}.admin-field{flex-direction:column;gap:8px;margin-bottom:20px;font-size:13px;font-weight:550;display:flex}.admin-field input,.admin-field .app-select{width:100%;min-width:0;min-height:40px;color:var(--ink);background:#fff;border:1px solid #d5dfec;border-radius:6px;padding:10px 12px;font-size:14px;font-weight:400}.admin-field input[readonly]{color:#536780;background:#f6f8fb}.admin-form-actions{border-top:1px solid var(--line);justify-content:flex-end;gap:10px;margin-top:24px;padding-top:16px;display:flex}.admin-form-actions .button{min-width:78px}.admin-detail-code{align-items:center;gap:10px;padding-bottom:18px;display:flex}.admin-detail-code input{background:#f4f7fb;border:1px solid #e0e7f0;border-radius:6px;flex:1;width:100%;min-width:0;padding:10px;font-size:14px}.admin-detail-code .button{flex:none;padding:8px 12px;font-size:12px}.admin-details{margin:0;font-size:13px;display:grid}.admin-details>div{border-top:1px solid #edf0f5;grid-template-columns:100px 1fr;gap:12px;padding:10px 0;display:grid}.admin-details dt{color:#62738a}.admin-details dd{overflow-wrap:anywhere;margin:0}.admin-confirm{width:390px;max-width:calc(100vw - 32px);color:var(--ink);border:0;border-radius:12px;padding:24px;box-shadow:0 12px 40px #182b4824}.admin-confirm h2{margin:0 0 16px;font-size:18px}.admin-confirm p{overflow-wrap:anywhere;margin:8px 0;font-size:13px;line-height:1.7}.admin-confirm footer{justify-content:flex-end;gap:10px;margin-top:24px;display:flex}@media (width<=1350px){.member-admin-table th,.member-admin-table td{padding-left:8px;padding-right:8px;font-size:12px}.admin-actions,.admin-password-actions{gap:8px}.member-admin-table td[data-label=注册时间],.member-admin-table td[data-label=最近登录]{max-width:112px}}@media (width<=1100px){.admin-mobile-select{align-items:center;gap:8px;display:flex}.admin-toolbar{flex-wrap:wrap;padding:16px}.admin-search{max-width:none}.admin-table thead{display:none}.admin-table,.admin-table tbody{display:block}.admin-table tr{border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr;gap:14px 18px;padding:18px 16px;display:grid}.admin-table td,.admin-table td:nth-child(n),.admin-table td.admin-selection{text-align:center;border:0;width:auto;min-width:0;max-width:none;height:auto;padding:0}.admin-table td:before{content:attr(data-label);color:#62738a;margin-bottom:6px;font-size:11px;display:block}.admin-table td.admin-selection{grid-column:1/-1}.admin-table td.admin-selection:before,.admin-table td:last-child:before{display:none}.admin-table td:last-child{grid-column:1/-1}.admin-actions{justify-content:center}.admin-code{white-space:normal;flex-wrap:wrap;gap:3px}.admin-code>span{overflow-wrap:anywhere}.invite-admin-table td[data-label=邀请码]{grid-column:1/-1}.admin-row-menu{top:auto;bottom:100%}}@media (width<=600px){.admin-toolbar{gap:10px}.admin-toolbar .app-select{min-width:105px}.admin-search{flex-basis:calc(100% - 125px)}.admin-toolbar-actions{width:100%;margin-left:0}.admin-toolbar-actions>.admin-create{flex:1;justify-content:center}.admin-toolbar>.admin-batch-toggle{margin-left:auto}.admin-modal{max-height:calc(100dvh - 32px)}.admin-modal>header{padding:16px 20px}.admin-modal-body{padding:20px}.admin-field input,.admin-field .app-select{font-size:16px}.admin-batch{gap:12px;padding:12px 16px}}@media (width>=1101px){.member-admin-table,.invite-admin-table{table-layout:fixed}.admin-col-selection{width:44px}.member-col-index,.invite-col-index{width:5%}.member-col-name{width:15%}.member-col-username{width:13%}.member-col-password{width:19%}.member-col-role{width:12%}.member-col-status{width:8%}.member-col-registered,.member-col-login{width:14%}.invite-col-recipient{width:11%}.invite-col-username{width:12%}.invite-col-code{width:27%}.invite-col-created,.invite-col-expires{width:15%}.invite-col-status{width:9%}.invite-col-actions{width:6%}}@media (width<=1100px){.admin-table colgroup{display:none}.admin-table td:before{text-align:center}.admin-password-cell>.text-button{margin-inline:auto}.admin-name-edit input{font-size:16px}.member-admin-table td:last-child{grid-column:auto}.member-admin-table td:last-child:before{display:block}.member-admin-table td[data-label=密码]{grid-column:1/-1}.admin-code{padding-inline:30px}.admin-name-display{padding-inline:28px}}.camera-panel.camera-preview-panel{grid-template-rows:48px minmax(0,1fr) 44px;min-width:0;min-height:320px;display:grid;overflow:hidden}.monitor-content .overview-grid[hidden]{display:none}.camera-preview-panel .panel-head{gap:10px;min-width:0;padding:0 14px}.camera-preview-status{color:var(--muted);align-items:center;gap:10px;min-width:0;font-size:11px;display:flex}.camera-preview-status>span:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.camera-preview-status .device-status{white-space:nowrap}.camera-picture{color:#b9c6d8;aspect-ratio:16/9;background:#17202d;place-items:center;min-height:0;display:grid;position:relative;overflow:hidden}.camera-picture-placeholder{z-index:1;background:#17202d;flex-direction:column;justify-content:center;align-items:center;gap:12px;font-size:12px;display:flex;position:absolute;inset:0}.camera-picture-placeholder .button{color:#b9c6d8;background:#253247;border-color:#46556b}.camera-picture video{object-fit:contain;width:100%;height:100%;position:absolute;inset:0}.camera-preview-toolbar{background:var(--surface);justify-content:flex-end;align-items:center;gap:8px;padding:0 14px;display:flex}.camera-quality-trigger{border:1px solid var(--line);background:var(--surface);color:#334155;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;gap:6px;width:84px;height:32px;padding:0 8px;font-size:14px;display:inline-flex}.camera-quality-trigger:hover,.camera-quality-trigger[aria-expanded=true]{background:var(--blue-soft);color:var(--blue);border-color:#bfcee6}.camera-quality-menu{z-index:60;border:1px solid var(--line);background:var(--surface);min-width:140px;color:var(--ink);border-radius:8px;padding:4px;position:fixed;box-shadow:0 4px 16px #202b3c14}.camera-quality-menu button{white-space:nowrap;text-align:left;border-radius:5px;justify-content:space-between;align-items:center;gap:8px;width:100%;min-height:36px;padding:8px;font-size:14px;display:flex}.camera-quality-menu button:hover{background:var(--blue-soft);color:var(--blue)}.camera-quality-menu button.selected{background:var(--blue);color:#fff}.quality-check-space{flex:none;width:15px;height:15px}@media (width<=600px){.camera-quality-trigger{height:44px}.camera-quality-menu button{min-height:44px}}.camera-preview-toolbar .icon-button{width:36px;height:36px}.camera-picture:fullscreen{aspect-ratio:auto;width:100vw;height:100dvh}@media (width>=1001px) and (height>=560px){.overview-shell .camera-preview-panel{align-self:stretch;height:100%;min-height:0}.overview-shell .camera-picture{aspect-ratio:auto}}@media (width<=600px){.camera-panel.camera-preview-panel{grid-template-rows:44px minmax(0,1fr) 44px;min-height:0}.camera-preview-status{gap:6px;font-size:10px}.camera-preview-panel .panel-head{padding:0 12px}.camera-preview-toolbar .icon-button{width:44px;height:44px}}.node-center{color:#0f172a;background:#fff;border:1px solid #e5e7eb;border-radius:12px;max-width:1120px;margin:0 auto;padding:16px 18px}.node-dialog{color:#0f172a;scrollbar-width:thin;scrollbar-color:#cbd5e1 #f7f9fc;background:#fff;border:0;border-radius:12px;width:min(1120px,100vw - 228px);max-width:none;height:min(620px,100dvh - 48px);max-height:calc(100dvh - 48px);margin:auto;padding:0;position:fixed;inset:0 0 0 180px;overflow:auto;box-shadow:0 12px 40px #0f172a26}.node-dialog::backdrop{background:#0f172a33}.node-dialog .node-center{border:0;border-radius:0;flex-direction:column;max-width:none;min-height:100%;margin:0;display:flex}.node-dialog .node-header,.node-dialog .node-steps,.node-dialog .node-information,.node-dialog .node-stage-heading,.node-dialog .node-device-grid,.node-dialog .node-footer{flex-shrink:0}.node-dialog .node-footer{margin-top:auto}.node-dialog .node-verify,.node-dialog .node-complete,.node-dialog .node-binding{margin-bottom:12px}.node-header{justify-content:space-between;align-items:center;gap:16px;display:flex}.node-header h2{margin:0;font-size:22px;font-weight:650;line-height:30px}.node-center p{color:#475569;max-width:72ch;margin:0;font-size:13px;line-height:1.6}.node-header .icon-button{flex-shrink:0}.node-steps{border-top:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb;gap:16px;margin:10px 0;padding:10px 0;list-style:none;display:flex}.node-steps li{color:#64748b;flex:1;align-items:center;gap:9px;font-size:13px;display:flex}.node-steps li>svg{color:#94a3b8;margin-left:auto}.node-step-number{font-variant-numeric:tabular-nums;background:#f1f5f9;border-radius:50%;flex-shrink:0;place-items:center;width:28px;height:28px;display:grid}.node-steps .current{color:#1d4ed8;font-weight:600}.node-steps .current .node-step-number{color:#fff;background:#2563eb}.node-steps .done{color:#166534}.node-steps .done .node-step-number{color:#166534;background:#edf8f0}.node-steps .failed{color:#a13025}.node-steps .failed .node-step-number{color:#a13025;background:#fff4f2;outline:1px solid #a13025}.node-information{background:#f7f9fc;border-radius:8px;grid-template-columns:minmax(180px,.8fr) minmax(0,2.2fr);gap:20px;padding:10px 14px;display:grid}.node-center h3{margin:0 0 4px;font-size:15px;font-weight:600;line-height:22px}.node-information h3{color:#64748b;margin-bottom:2px;font-size:12px;font-weight:400;line-height:18px}.node-information strong{font-size:15px;line-height:22px}.node-center dl{margin:0}.node-center dt{color:#64748b;font-size:12px;line-height:18px}.node-center dd{color:#0f172a;overflow-wrap:anywhere;font-variant-numeric:tabular-nums;margin:0;font-size:13px;line-height:20px}.node-information dl{grid-template-columns:1fr 1fr;align-items:center;gap:16px;display:grid}.node-information dt{margin-bottom:2px}.node-stage-heading{justify-content:space-between;align-items:center;gap:16px;margin:12px 0 10px;display:flex}.node-stage-heading h3{margin:0}.node-device-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.node-device{border:1px solid #e5e7eb;border-radius:8px;min-width:0;padding:12px 14px}.node-device.selected{grid-column:1/-1}.node-device-title{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;display:flex}.node-device-title>svg{color:#2563eb;flex-shrink:0}.node-device h4{flex:1;margin:0;font-size:15px;font-weight:600;line-height:22px}.node-status{color:#475569;white-space:nowrap;background:#f1f5f9;border-radius:5px;padding:1px 8px;font-size:12px;line-height:20px}.node-status.good{color:#166534;background:#edf8f0}.node-status.bad{color:#a13025;background:#fff4f2}.node-device dl>div{grid-template-columns:80px 1fr;gap:10px;padding:1px 0;display:grid}.node-device .button{margin-top:10px}.node-device .node-detected{color:#166534;margin-top:10px}.node-port{color:#475569;max-width:440px;margin-top:12px;font-size:13px;display:block}.node-port select{width:100%;height:40px;margin-top:6px;display:block}.node-device>.text-button{margin-top:10px}.node-binding-summary{gap:36px;display:flex;margin-bottom:16px!important}.node-binding-summary dt{margin-bottom:3px}.node-fields{grid-template-columns:minmax(0,440px);gap:16px;display:grid}.node-fields label{color:#475569;min-width:0;font-size:13px}.node-fields input{width:100%;height:40px;margin-top:6px;display:block}.node-fields input[readonly]{color:#475569;background:#f7f9fc}.node-verify-heading{justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px;font-size:14px;display:flex}.node-measurements{border-top:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding:14px 0;display:grid;margin:0 0 12px!important}.node-measurements dd{margin-top:4px;font-size:26px;line-height:1.4}.node-measurements small{color:#475569;margin-left:8px;font-size:13px}.node-verify>p{margin-top:8px}.node-verification-hint{color:#a13025!important}.node-verify .camera-panel{width:min(100%,480px);margin:0 auto 10px}.node-center .node-verify .camera-panel.camera-preview-panel{grid-template-rows:34px minmax(0,1fr) 36px;height:190px;min-height:0}.node-center .node-verify .camera-preview-panel .panel-head{min-height:34px;padding-top:0;padding-bottom:0}.node-verify .camera-picture{aspect-ratio:auto}.node-verify .camera-quality-trigger{height:30px}.node-complete{padding:10px 0}.node-complete-icon{color:#166534;background:#edf8f0;border-radius:50%;place-items:center;width:42px;height:42px;margin-bottom:12px;display:grid}.node-complete h3{font-size:19px}.node-complete dl{gap:8px;margin:16px 0 8px;display:grid}.node-complete dl>div{grid-template-columns:110px 1fr;gap:16px;display:grid}.node-footer{border-top:1px solid #e5e7eb;justify-content:space-between;align-items:center;gap:16px;margin-top:12px;padding-top:12px;display:flex}.node-footer>div{align-items:center;gap:10px;display:flex}.node-center .button{min-height:36px;padding:6px 12px}.node-error{color:#a13025;overflow-wrap:anywhere;background:#fff4f2;border-radius:6px;margin-top:12px;padding:10px 12px;font-size:13px;line-height:1.6}.node-loading{align-items:center;gap:10px;padding:24px 0;display:flex}.node-center ::selection{color:#0f172a;background:#dbeafe}.node-center input{caret-color:#2563eb}.node-center h2:focus{outline:none}.node-camera-status{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;display:flex}.node-camera-status p{margin:0}.obs-settings p{color:#475569;margin:0 0 14px;font-size:13px;line-height:1.7}.obs-settings label{color:#475569;margin-top:16px;font-size:13px;display:block}.obs-settings input{width:100%;min-width:0;height:42px;margin-top:8px;display:block}.obs-server{align-items:center;gap:8px;display:flex}.obs-server input{flex:1}.obs-settings label+p{margin-top:14px}.dm-node-actions{align-items:center;gap:12px;display:flex}.device-row-actions{gap:14px}.device-row-actions .node-row-entry{font-size:12px}.dm-node-entry{white-space:nowrap}@media (width<=900px){.node-information{grid-template-columns:1fr;gap:8px}.dm-toolbar{flex-wrap:wrap}.dm-node-actions{justify-content:flex-end;width:100%}}@media (width<=950px){.node-dialog{width:calc(100vw - 98px);left:66px}}@media (width<=600px){.node-dialog{width:calc(100vw - 24px);height:calc(100dvh - 24px);max-height:calc(100dvh - 24px);left:0}.node-dialog .node-footer{margin-top:12px}.node-center{padding:16px 14px}.node-header h2{font-size:20px}.node-steps{grid-template-columns:1fr 1fr;gap:12px 8px;display:grid}.node-steps li{gap:8px;font-size:13px}.node-steps li>svg{display:none}.node-information{padding:12px}.node-information dl{grid-template-columns:1fr;gap:6px}.node-information dl>div{grid-template-columns:105px 1fr;gap:8px;display:grid}.node-information dt{margin-bottom:0}.node-device-grid,.node-fields{grid-template-columns:1fr}.node-device{padding:12px}.node-center .button,.node-center .icon-button{min-height:44px}.node-stage-heading{align-items:flex-start;gap:12px}.node-binding-summary{flex-direction:column;gap:12px}.node-footer{flex-direction:column;align-items:stretch}.node-footer>div{flex-wrap:wrap}.node-footer>div:last-child{justify-content:flex-end}.node-measurements{gap:14px}.node-measurements dd{font-size:24px}.node-center .node-verify .camera-panel.camera-preview-panel{grid-template-rows:44px minmax(0,1fr) 44px;height:220px}.node-center .node-verify .camera-preview-panel .panel-head{min-height:44px}.node-verify .camera-quality-trigger{height:44px}.node-complete h3{font-size:18px}.node-complete dl>div{grid-template-columns:105px 1fr;gap:10px}.dm-node-actions{flex-wrap:wrap;justify-content:flex-start}.device-row-actions{flex-wrap:wrap}}.node-status.detected{color:#1d4ed8;background:#eaf2ff}.node-status.waiting{color:#9a4d00;background:#fff4e5}.node-setup{flex-wrap:wrap;align-items:center;gap:16px;margin-top:12px;display:flex}.node-setup label{color:#475569;align-items:center;gap:8px;font-size:13px;display:flex}.node-setup input{width:16px;height:16px}.node-setup .button{margin-top:0}.device-management{--dm-ink:#0f172a;--dm-muted:#64748b;--dm-line:#e5e7eb;color:var(--dm-ink)}.workspace:has(.device-management){background:#f7f9fc;min-height:100vh}.device-management ::selection{color:#0f172a;background:#dbeafe}.device-management input{caret-color:#2563eb}.dm-toolbar{justify-content:space-between;align-items:center;gap:20px;min-height:40px;margin-bottom:18px;display:flex}.dm-counts{white-space:nowrap;background:#e5e7eb;border-radius:28px;flex-shrink:0;align-items:center;gap:2px;padding:4px;font-size:14px;display:inline-flex}.dm-counts button{min-height:38px;color:var(--dm-muted);border-radius:24px;justify-content:center;align-items:center;gap:8px;padding:7px 18px;display:inline-flex}.dm-counts button[aria-pressed=true]{color:var(--dm-ink);background:#fff;font-weight:600;box-shadow:0 2px 5px #20344d14}.dm-counts i{background:#9ca3af;border-radius:50%;width:8px;height:8px}.dm-counts i.online{background:#16a34a}.dm-filters{align-items:center;gap:12px;display:flex}.dm-filters select{border-color:var(--dm-line);width:125px;height:40px;font-size:13px}.dm-search{color:var(--dm-muted);width:230px;position:relative}.dm-search>svg{pointer-events:none;position:absolute;top:12px;left:12px}.dm-search input{border-color:var(--dm-line);width:100%;height:40px;padding:8px 38px 8px 36px;font-size:13px}.dm-search input::placeholder{color:var(--dm-muted);opacity:1}.dm-search .icon-button{width:34px;height:34px;position:absolute;top:3px;right:3px}.dm-list-panel{border-color:var(--dm-line);border-radius:10px;overflow:hidden}.device-list-scroll{scrollbar-width:thin;scrollbar-color:#cbd5e1 #f7f9fc;overflow-x:auto}.device-list-table{border-collapse:collapse;table-layout:fixed;width:100%;min-width:840px;font-size:14px}.device-col-name,.device-col-connection{width:27%}.device-col-interval{width:9%}.device-col-status{width:10%}.device-col-time{width:15%}.device-col-actions{width:12%}.device-list-table>thead{background:var(--blue-soft);color:var(--dm-muted)}.device-list-table>thead th{text-align:left;white-space:nowrap;padding:16px 20px;font-size:13px;font-weight:500}.device-list-table>thead th:nth-child(n+3){text-align:center}.device-summary-row{cursor:pointer;height:76px}.device-summary-row:hover{background:#f8fafc}.device-summary-row.is-selected{background:#eff4fb}.device-summary-row>th,.device-summary-row>td{border-top:1px solid var(--dm-line);vertical-align:middle;text-align:left;overflow-wrap:anywhere;padding:12px 20px;font-weight:400}.device-summary-row>td:nth-child(n+3){text-align:center}.dm-device-name{text-align:left;width:100%;color:var(--dm-ink);padding:0;display:block}.dm-device-name strong{font-size:14px;font-weight:600;line-height:22px;display:block}.dm-connection{font-size:13px}.device-management .dm-status{color:#475569;background:#f1f5f9;border-radius:5px;padding:3px 9px;font-size:12px;line-height:20px}.device-management .dm-status.online{color:#166534;background:#edf8f0}.device-management .dm-status.online i{background:#16a34a}.device-management .dm-status i{background:#94a3b8}.device-sample-time{font-variant-numeric:tabular-nums;font-size:13px}.device-row-actions{white-space:nowrap;justify-content:center;align-items:center;min-height:36px;display:flex}.device-row-actions .text-button{color:#2563eb;padding:6px 0;font-size:13px}.device-list-footer{border-top:1px solid var(--dm-line);color:var(--dm-muted);padding:14px 20px;font-size:12px}.dm-list-empty{text-align:center;height:180px;color:var(--dm-muted);border-top:1px solid var(--dm-line)}.device-feedback-row>td{padding:0}.device-list-error,.dm-detail-error{color:#a13025;overflow-wrap:anywhere;background:#fff4f2;padding:12px 20px;font-size:13px}.device-list-error .text-button,.dm-detail-error .text-button{color:inherit;margin-left:10px}.dm-drawer{z-index:35;border-left:1px solid var(--dm-line);scrollbar-width:thin;scrollbar-color:#cbd5e1 #fff;background:#fff;flex-direction:column;width:min(680px,45vw);animation:.2s cubic-bezier(.16,1,.3,1) dm-drawer-open;display:flex;position:fixed;top:65px;bottom:0;right:0;box-shadow:-8px 0 28px #0f172a0f}@keyframes dm-drawer-open{0%{transform:translate(18px)}to{transform:translate(0)}}.dm-drawer-header{border-bottom:1px solid var(--dm-line);flex-shrink:0;padding:24px 28px 20px}.dm-drawer-title{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.dm-drawer-title h2{overflow-wrap:anywhere;font-size:20px;font-weight:600;line-height:28px}.dm-drawer-title .icon-button{flex-shrink:0;margin:-6px -8px 0 0}.dm-drawer-state{justify-content:space-between;align-items:center;gap:16px;margin-top:20px;display:flex}.dm-drawer-state>div{color:var(--dm-muted);flex-wrap:wrap;align-items:center;gap:12px;font-size:12px;display:flex}.dm-drawer-state .button{border-color:var(--dm-line);color:#2563eb;flex-shrink:0;min-height:36px;padding:6px 12px}.dm-tabs{border-bottom:1px solid var(--dm-line);flex-shrink:0;gap:28px;padding:0 28px;display:flex}.dm-tabs button{height:52px;color:var(--dm-muted);border-bottom:2px solid #0000;padding:0 0 2px;font-size:14px}.dm-tabs button[aria-selected=true]{color:#2563eb;border-bottom-color:#2563eb;font-weight:600}.dm-detail-scroll{scrollbar-width:thin;scrollbar-color:#cbd5e1 #fff;flex:1;min-height:0;padding:24px 28px 32px;overflow-y:auto}.dm-detail-scroll [hidden]{display:none}.dm-section+.dm-section{margin-top:28px}.dm-section h3{margin-bottom:14px;font-size:14px;font-weight:600}.dm-summary-grid{grid-template-columns:1fr 1fr;gap:12px;margin:0;display:grid}.dm-summary-grid>div{background:#f7f9fc;border-radius:8px;padding:13px 16px}.dm-summary-grid dt{color:var(--dm-muted);margin-bottom:5px;font-size:12px}.dm-summary-grid dd{margin:0;font-size:16px;font-weight:500;line-height:24px}.dm-facts{margin:0}.dm-facts>div{border-bottom:1px solid #eef1f5;grid-template-columns:minmax(140px,40%) minmax(0,1fr);align-items:center;gap:16px;min-height:48px;padding:10px 0;font-size:13px;display:grid}.dm-facts dt{color:var(--dm-muted);overflow-wrap:anywhere}.dm-facts dd{overflow-wrap:anywhere;font-variant-numeric:tabular-nums;min-width:0;margin:0}.dm-read-time{color:var(--dm-muted);margin:-4px 0 12px;font-size:12px}.dm-empty{color:var(--dm-muted);padding:18px 0;font-size:13px}.dm-facts>.dm-interval-field{align-items:start;height:88px;min-height:88px;padding:12px 0 28px;position:relative}.dm-interval-field dt{line-height:36px}.dm-interval-display,.dm-interval-controls{justify-content:space-between;align-items:center;gap:12px;height:36px;display:flex}.dm-interval-display .text-button,.dm-interval-actions .text-button{white-space:nowrap;background:0 0;height:36px;min-height:36px;padding:4px 0;font-size:13px}.dm-interval-display .text-button,.dm-interval-actions .dm-interval-save{color:#1677ff}.dm-interval-actions .dm-interval-cancel{color:#666}.dm-interval-actions .dm-interval-cancel:hover{color:#333}.dm-interval-actions{justify-content:flex-end;align-items:center;gap:14px;margin-left:auto;display:flex}.dm-interval-save{justify-content:flex-end;min-width:42px}.dm-interval-input{flex:none;width:72px;height:36px;display:block;position:relative}.dm-interval-input input{appearance:textfield;width:100%;height:36px;min-height:36px;padding:6px 25px 6px 8px;font-size:13px}.dm-interval-input input::-webkit-inner-spin-button{appearance:none;margin:0}.dm-interval-input input::-webkit-outer-spin-button{appearance:none;margin:0}.dm-interval-input>span{color:var(--dm-muted);pointer-events:none;line-height:36px;position:absolute;top:0;right:8px}.dm-interval-edit .dm-field-error{margin:0;line-height:16px;position:absolute;bottom:3px;left:calc(40% + 16px);right:0}.dm-field-error{color:#a13025;margin-top:8px;font-size:12px}.dm-detail-error{border-radius:6px;margin-bottom:20px;padding:12px 14px}@media (width<=1100px){.device-summary-row>th,.device-summary-row>td,.device-list-table>thead th{padding-left:14px;padding-right:14px}.dm-drawer{width:520px}.dm-drawer-header,.dm-detail-scroll{padding-left:24px;padding-right:24px}.dm-tabs{padding:0 24px}}@media (width<=700px){.dm-toolbar{flex-direction:column;align-items:stretch;gap:14px}.dm-counts{align-self:flex-start;gap:2px}.dm-counts button{padding-inline:16px}.dm-filters{gap:10px;width:100%}.dm-search{flex:1;width:auto}.dm-filters select{width:112px}.device-list-table{min-width:0;display:block}.device-list-table>colgroup,.device-list-table>thead{display:none}.device-list-table>tbody{display:block}.device-summary-row{border-top:1px solid var(--dm-line);grid-template-columns:1fr 1fr;gap:12px;height:auto;padding:16px;display:grid}.device-summary-row:first-child{border-top:0}.device-summary-row>th,.device-summary-row>td{border:0;min-width:0;padding:0;display:block}.device-summary-row>td:nth-child(n+3){text-align:left}.device-row-actions{justify-content:flex-end}.device-summary-row>th,.device-summary-row>.dm-connection{grid-column:1/-1}.device-summary-row>.dm-connection{color:var(--dm-muted)}.device-summary-row>td[data-label=采集]:before,.device-summary-row>td[data-label=最后数据]:before{content:attr(data-label);color:var(--dm-muted);margin-right:8px;font-size:12px}.device-summary-row>td[data-label=状态]{justify-content:flex-end;display:flex}.device-row-actions{min-height:32px}.device-feedback-row,.device-feedback-row>td{display:block}.device-list-error{padding:12px 16px}.dm-list-empty{line-height:180px;display:block}.dm-drawer{width:min(520px,100%);top:65px}.dm-facts>div{grid-template-columns:minmax(110px,40%) minmax(0,1fr);gap:12px}.dm-drawer-header{padding:20px}.dm-detail-scroll{padding:24px 20px}.dm-tabs{gap:26px;padding:0 20px}.dm-drawer-state{gap:10px}.dm-drawer-state>div{gap:8px}.dm-drawer-title h2{font-size:18px}}@media (width<=600px){.dm-drawer{top:55px;bottom:calc(62px + env(safe-area-inset-bottom))}.dm-interval-controls{gap:8px}.dm-interval-input{width:64px}.dm-interval-edit .dm-field-error{left:0}}@media (prefers-reduced-motion:reduce){.dm-drawer{animation:none}}.serial-bridge-panel .dm-detail-error{margin:16px 0}.serial-bridge-panel .bridge-port-value{align-items:center;gap:6px;display:flex}.bridge-port-value .icon-button{vertical-align:middle;margin:0}.dm-interval-actions .text-button:hover,.dm-interval-display .text-button:hover{background:0 0}.obs-address-field{color:#475569;margin-top:16px;font-size:13px}.obs-server-value{overflow-wrap:anywhere;-webkit-user-select:text;user-select:text;min-width:0;color:var(--ink);flex:1;padding:8px 0;line-height:1.7}.sensor-head-actions .sensor-release{white-space:nowrap;min-height:28px;color:var(--blue);padding:3px 0;font-size:11px}.sensor-head-actions{gap:6px}.sensor-head-actions .device-status{font-size:11px}.sensor-release:disabled{color:#7b8797;opacity:.65;cursor:not-allowed}.history-page .compact-history-tools{margin-bottom:18px!important}.time-range-control{flex:none;min-width:180px;position:relative}.time-range-control .ant-picker{box-sizing:border-box;width:100%;height:38px}.time-range-control.is-closed .ant-picker{pointer-events:none}.time-range-control.is-closed .ant-picker-input,.time-range-control.is-closed .ant-picker-range-separator,.time-range-control.is-closed .ant-picker-suffix{visibility:hidden;flex:none;width:0;padding:0}.time-range-control.is-closed .ant-picker-active-bar{display:none}.time-range-control.is-open{width:360px}.range-summary{white-space:nowrap;border-radius:6px;justify-content:space-between;align-items:center;gap:14px;width:100%;padding:0 12px 0 34px;font-size:13px;display:flex;position:absolute;inset:0}.time-range-control.is-closed:has(.range-summary){width:max-content;min-width:190px}.range-summary{min-height:38px;margin-top:-38px;position:relative}.range-summary:hover{background:#245de90a}.history-range-popup{z-index:50}.history-range-popup .ant-picker-presets li>span{min-height:32px;padding:5px 0;display:block}.selection-count{color:var(--blue);background:#edf3ff;border-radius:4px;margin-left:auto;padding:1px 6px}.plot-tooltip rect{fill:#f0f5ff;stroke:#d5e1f5;stroke-width:1px}.plot-tooltip text{font-variant-numeric:tabular-nums;font-size:13px;font-weight:600}.plot-time-label rect{fill:#eaf0fa}.plot-time-label text{fill:#233751;font-variant-numeric:tabular-nums;font-size:11px}.history-page .metric-trigger{min-width:125px;height:38px}.history-page .history-export{min-height:38px;padding:8px 14px}.history-page .reset-view{font-size:12px}@media (width<=650px){.history-page .compact-history-tools{gap:8px!important;display:flex!important}.time-range-control.is-open{width:100%}.time-range-control.is-closed{max-width:100%;min-width:160px!important}.range-summary{white-space:normal;font-size:11px}.history-range-popup{max-width:calc(100vw - 16px)}.history-range-popup .ant-picker-panel-layout{flex-direction:column}.history-range-popup .ant-picker-presets{border-inline-end:0;border-bottom:1px solid #e4e9f0;max-width:none;min-height:0}.history-range-popup .ant-picker-presets ul{gap:6px;margin:0;padding:5px;display:flex}.history-range-popup .ant-picker-panels{flex-direction:column}.history-range-popup .ant-picker-panel-container{max-width:calc(100vw - 16px);max-height:70dvh;overflow:auto}.history-range-popup .ant-picker-time-panel{width:130px}.history-range-popup .ant-picker-datetime-panel{flex-direction:column}.history-range-popup .ant-picker-datetime-panel .ant-picker-time-panel{border-inline-start:0;border-top:1px solid #e4e9f0;width:100%}.history-range-popup .ant-picker-time-panel .ant-picker-content{height:110px}.history-range-popup .ant-picker-panel{max-width:calc(100vw - 22px)}}.monitor-content .overview-grid{grid-template-columns:minmax(0,1fr) 330px;align-items:start}.monitor-content .sensor-stack{flex-direction:column;gap:12px;display:flex}.sensor-head-actions{align-items:center;gap:7px;display:flex}.sensor-head-actions .icon-button{width:30px;height:30px}.sensor-product{color:#596a80;margin:1px 14px 12px;font-size:11px}.sensor-card .sensor-readings{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:row;gap:15px 10px;padding:0 14px 15px;display:grid}.sensor-card.sensor-par .sensor-readings{grid-template-columns:1fr}.sensor-readings .reading{text-align:left;border-radius:4px;min-width:0;min-height:55px;padding:0}.sensor-readings .reading:hover{background:#f2f6ff}.sensor-readings .reading-label{color:#536680;font-size:12px}.sensor-readings .reading strong{font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:baseline;gap:5px;margin-top:5px;font-size:27px;line-height:1.35;display:flex}.sensor-readings .reading small{color:#536680;margin:0;font-size:11px}.sensor-card-foot{border-top:1px solid var(--line);color:#5e6f83;flex-wrap:wrap;justify-content:space-between;gap:8px;padding:10px 14px;font-size:11px;display:flex}.devices-summary{color:#596a80;justify-content:space-between;align-items:center;gap:16px;margin:3px 0 18px;font-size:12px;display:flex}.devices-summary>span:first-child{align-items:center;gap:6px;display:flex}.devices-summary strong{color:var(--ink);font-size:16px}.online-dot{background:#15957b;border-radius:50%;width:6px;height:6px;display:inline-block}.device-list{overflow:hidden}.device-list-heading,.device-list-row{grid-template-columns:minmax(270px,1.3fr) minmax(160px,1fr) 165px 62px;align-items:center;gap:20px;padding:14px 20px;display:grid}.device-list-heading{color:#55677e;border-bottom:1px solid var(--line);background:#f8fafc;font-size:11px}.device-list-row{text-align:left;width:100%;min-height:98px;color:var(--ink);border-bottom:1px solid var(--line)}.device-list-row:last-child{border-bottom:0}.device-list-row:hover{background:#f5f8ff}.device-identity{align-items:center;gap:14px;min-width:0;display:flex}.device-identity>svg{color:#627996;flex:none}.device-identity strong{font-size:14px;font-weight:600;line-height:1.5;display:block}.device-identity small,.device-link small,.device-row-state time{color:#5c6e85;margin-top:6px;font-size:11px;line-height:1.5;display:block}.device-link{overflow-wrap:anywhere;font-size:12px}.device-row-action{color:var(--blue);justify-content:flex-end;align-items:center;gap:4px;font-size:12px;display:flex}.device-row-state .device-status{font-size:12px}.device-drawer{border:0;border-left:1px solid var(--line);background:var(--surface);width:min(620px,100vw);max-width:100vw;height:100dvh;max-height:100dvh;color:var(--ink);margin:0;padding:0;position:fixed;inset:0 0 0 auto;overflow:hidden}.device-drawer[open]{flex-direction:column;display:flex}.device-drawer::backdrop{background:#1423373d}.drawer-heading{border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items:center;gap:18px;padding:23px 24px 19px;display:flex}.drawer-heading h2{margin:0;font-size:18px;font-weight:600;line-height:1.4}.drawer-heading p{color:#596a80;margin:6px 0 0;font-size:12px}.drawer-heading .icon-button{flex:none;width:40px;height:40px}.drawer-content{overscroll-behavior:contain;flex:1;padding:0 24px 24px;overflow:auto}.drawer-content .air-settings{border:0;border-radius:0;margin:0;overflow:visible}.drawer-content .air-settings>.panel-head{padding:17px 0 12px}.drawer-content .air-settings .panel-head h2{font-size:14px}.drawer-content .air-controls{grid-template-columns:1fr 1fr;gap:16px;padding:18px 0;display:grid}.drawer-content .air-toggle{grid-column:1/-1}.drawer-content .air-interval{grid-template-columns:1fr 90px;gap:5px 8px}.drawer-content .air-port{grid-template-columns:1fr;align-content:start;gap:6px;display:grid}.drawer-content .air-port select{width:100%;max-width:100%;font-size:12px}.drawer-content .air-record-status{gap:8px 20px;margin:0 -24px;padding:12px 24px}.drawer-content .air-record-status time{width:100%;margin-left:0}.drawer-content .air-values{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 22px;padding:5px 0 18px}.drawer-content .air-values>div{padding:14px 0}.drawer-content .air-values dt{font-size:12px}.drawer-content .air-values dd{font-size:13px}.drawer-content .air-raw{padding:0 0 16px}.drawer-content .air-raw dl{grid-template-columns:1fr}.model-discrepancy{color:#755620;background:#fff8e8;border-radius:5px;margin:14px 0 0;padding:10px 12px;font-size:12px;line-height:1.7}.drawer-state{padding:22px 0 10px}.drawer-state strong{font-size:15px}.drawer-state p,.pending-settings p{color:#596a80;font-size:13px;line-height:1.8}.device-facts{margin:0 0 22px}.device-facts>div{border-bottom:1px solid var(--line);grid-template-columns:90px 1fr;gap:20px;padding:14px 0;font-size:13px;display:grid}.device-facts dt{color:#596a80}.device-facts dd{overflow-wrap:anywhere;margin:0}.pending-settings{border-top:1px solid var(--line);padding-top:12px}.pending-settings h3{font-size:14px}.pending-settings a{color:var(--blue);align-items:center;gap:5px;font-size:12px;display:inline-flex}.history-toolbar,.history-navigation,.history-view-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.history-toolbar{margin-bottom:20px}.history-navigation{border-bottom:1px solid var(--line);margin-bottom:14px;padding-bottom:12px}.history-groups{gap:4px;display:flex}.history-groups button{border-radius:5px;min-height:38px;padding:9px 17px;font-size:13px}.history-groups .active{color:#1659df;background:#e7efff;font-weight:600}.history-navigation select{max-width:190px;min-height:38px}.history-view-controls{justify-content:flex-start;margin-bottom:12px}.history-view-controls .button{min-height:35px;padding:7px 10px;font-size:12px}.history-view-controls .button.selected{color:var(--blue);border-color:var(--blue);background:#eef4ff}.history-view-controls>span{color:#596a80;margin-left:auto;font-size:11px}.history-caption{color:#5c6d84;flex-wrap:wrap;justify-content:space-between;gap:8px;margin-bottom:13px;font-size:11px;display:flex}.history-panel-head{margin-bottom:12px}.history-no-data{justify-content:space-between;align-items:center;gap:12px;padding:16px 18px;display:flex}.history-no-data .history-panel-head{margin-bottom:0}.history-empty{color:#66778d;margin:0;font-size:12px}.plot-inspector{background:#f3f6fb;border-radius:6px;justify-content:space-between;align-items:center;gap:16px;min-height:78px;margin-bottom:16px;padding:11px 14px;display:flex}.plot-inspector>div:first-child{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.plot-inspector>div>span{color:#52647c;font-size:11px}.plot-inspector strong{font-variant-numeric:tabular-nums;align-items:baseline;gap:7px;font-size:29px;font-weight:600;line-height:1.15;display:flex}.plot-inspector strong small{color:#52647c;font-size:12px;font-weight:400}.plot-inspector-meta{text-align:right;flex-direction:column;align-items:flex-end;gap:7px;display:flex}.plot-inspector-meta time{font-variant-numeric:tabular-nums;font-size:13px}.plot-inspector-meta span{color:#52647c;font-size:11px}@media (width>=1700px){.monitor-content .overview-grid{grid-template-columns:minmax(0,1fr) 360px}.sensor-readings .reading strong{font-size:29px}}@media (width<=1200px){.monitor-content .overview-grid{grid-template-columns:minmax(0,1fr) 290px}.device-list-heading,.device-list-row{grid-template-columns:minmax(220px,1.3fr) minmax(110px,1fr) 130px 45px;gap:12px;padding:14px}.sensor-card-foot{font-size:10px}}@media (width<=1000px){.monitor-content .overview-grid{grid-template-columns:1fr}.monitor-content .sensor-stack{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;display:grid}.sensor-card .sensor-readings{grid-template-columns:1fr}.device-list-heading{display:none}.device-list-row{grid-template-columns:minmax(240px,1fr) 130px 48px}.device-link{grid-area:2/1;margin-top:-4px;padding-left:35px}.device-row-state{grid-area:1/2/3}.device-row-action{grid-area:1/3/3}}@media (width<=650px){.monitor-content .sensor-stack{align-items:stretch;display:flex}.sensor-card .sensor-readings{grid-template-columns:repeat(2,minmax(0,1fr))}.sensor-card-foot{font-size:11px}.devices-summary{flex-direction:column;align-items:flex-start;gap:6px}.device-list-row{grid-template-columns:minmax(0,1fr) 84px;gap:9px;padding:16px 12px}.device-identity{gap:9px}.device-identity strong{font-size:13px}.device-identity small{font-size:10px}.device-row-state{grid-column:2}.device-row-state time{font-size:10px}.device-link{padding-left:30px;font-size:11px}.device-row-action{grid-area:3/2;justify-content:flex-start}.device-drawer{width:100vw}.drawer-heading{padding:17px 16px}.drawer-heading h2{font-size:17px}.drawer-content{padding:0 16px 20px}.drawer-content .air-controls,.drawer-content .air-port{grid-template-columns:1fr}.drawer-content .air-port select,.drawer-content .air-interval input{min-height:44px;font-size:16px}.drawer-content .air-record-status{margin:0 -16px;padding:12px 16px}.history-toolbar{gap:10px}.history-toolbar .range-actions{justify-content:space-between;width:100%}.history-toolbar>.button{margin-left:auto}.history-groups{gap:0}.history-groups button{padding:9px 12px}.history-navigation select{width:100%;max-width:none;font-size:16px}.history-view-controls{gap:8px}.history-view-controls>span{width:100%;margin-left:0}.history-caption{font-size:10px}.history-panel{padding:13px 12px}.history-panel-head{align-items:center}.history-panel-head .stats{gap:12px}.history-panel-head .stats strong{font-size:15px}.plot-inspector{flex-direction:column;align-items:flex-start;gap:8px;min-height:105px;padding:12px}.plot-inspector strong{font-size:28px}.plot-inspector-meta{text-align:left;align-items:flex-start;gap:5px}.plot-inspector-meta time{font-size:12px}.history-no-data{flex-direction:column;align-items:flex-start}.history-no-data .history-panel-head{margin-bottom:0}.device-row-state .device-status{font-size:11px}}.drawer-notice{color:#2558a5;text-align:center;pointer-events:none;background:#eef5ff;border:1px solid #d2e2fa;border-radius:7px;max-width:calc(100% - 32px);padding:12px 20px;font-size:13px;position:absolute;bottom:22px;left:50%;transform:translate(-50%)}.overview-shell .sensor-card .panel-label{gap:0}.overview-shell .sensor-card .panel-head{padding:10px 16px 4px}.overview-shell .sensor-card .sensor-readings{gap:22px 16px;padding:12px 16px 18px}.overview-shell .sensor-readings .reading-label{font-size:12px}.overview-shell .sensor-readings .reading strong{gap:5px;margin-top:8px;font-size:30px;line-height:1.2}@media (width>=1001px){.overview-shell .workspace{flex-direction:column;height:100dvh;display:flex}.overview-shell .topbar{flex:none}.overview-shell .monitor-content{flex-direction:column;flex:1;width:100%;min-height:0;padding:18px 24px;display:flex}.overview-shell .overview-grid{flex:1;grid-template-rows:minmax(0,1fr);align-items:stretch;min-height:0}.overview-shell .monitor-content .sensor-stack{grid-template-rows:minmax(0,1fr) minmax(0,1.4fr) minmax(0,1fr);grid-template-columns:1fr;align-self:stretch;align-items:stretch;gap:12px;min-height:0;display:grid}.overview-shell .sensor-card{grid-template-rows:44px minmax(0,1fr);min-height:0;display:grid}.overview-shell .sensor-card .sensor-readings{align-content:center;gap:clamp(10px,2.5vh,28px) 16px}}@media (width>=1001px) and (height<=650px){.overview-shell .monitor-content{padding:10px 18px}.overview-shell .sensor-card{grid-template-rows:34px minmax(0,1fr)}.overview-shell .sensor-card .panel-head{min-height:32px;padding:3px 14px}.overview-shell .sensor-card .sensor-readings{gap:8px 12px;padding:6px 14px 10px}.overview-shell .sensor-readings .reading{min-height:44px}.overview-shell .sensor-readings .reading strong{margin-top:4px;font-size:26px}}.history-page .compact-history-tools{justify-content:flex-start;gap:10px;margin-bottom:10px}.compact-history-tools .history-export{margin-left:auto}.metric-picker{position:relative}.metric-trigger{justify-content:space-between;min-width:172px}.metric-options{z-index:24;background:var(--surface);border:1px solid var(--line);border-radius:7px;width:310px;max-width:calc(100vw - 32px);padding:6px 14px 12px;font-size:13px;position:absolute;top:calc(100% + 7px);left:0;box-shadow:0 8px 24px #172b4c18}.metric-options label{cursor:pointer;align-items:center;gap:9px;min-height:36px;display:flex}.metric-options input,.custom-range-fields .full-time-option input{width:15px;height:15px;min-height:0;accent-color:var(--blue);flex:none;margin:0;padding:0}.metric-select-all{border-bottom:1px solid var(--line);padding:5px 0}.metric-option-group{padding-top:6px}.metric-group-name{font-weight:600}.metric-option-group>div{grid-template-columns:1fr 1fr;gap:0 12px;padding-left:24px;display:grid}.metric-option-group:last-child>div{grid-template-columns:1fr}.custom-range-fields .full-time-option{border-top:1px solid var(--line);flex-direction:row;align-items:center;gap:8px;padding-top:12px;display:flex}.history-page .compact-history-caption{align-items:center;min-height:30px;margin:0 0 14px}.compact-history-caption>span:last-child{align-items:center;gap:14px;display:flex}.zoom-instruction{color:#596a80;font-size:11px}.history-select-empty{text-align:center;color:#596a80;padding:40px}.history-page .plot svg:focus{outline:none}.history-page .plot svg{cursor:crosshair}.history-page .plot svg:active{cursor:grabbing}@media (width<=650px){.history-page .compact-history-tools{grid-template-columns:1fr auto;gap:10px;display:grid}.compact-history-tools .metric-picker{min-width:0}.compact-history-tools .metric-trigger{width:100%;min-width:0;font-size:12px}.compact-history-tools .metric-options{left:0}.history-page .compact-history-caption{gap:4px;font-size:10px}.compact-history-caption .zoom-instruction{display:none}.history-page .plot-inspector{min-height:94px;margin-bottom:12px}.overview-shell .sensor-card .sensor-readings{padding:12px 16px 22px}}.history-page{position:relative}.history-time-tools{align-items:center;gap:8px;display:flex}.duration-select{background:var(--panel,#fff);border:1px solid var(--line);min-width:110px;height:38px;color:var(--ink);border-radius:6px;padding:0 30px 0 12px;font-size:13px}.calendar-control{flex:none;width:38px;height:38px;position:relative}.calendar-trigger{justify-content:center;width:38px;height:38px;min-height:38px;padding:0!important}.calendar-editor{z-index:51;border:1px solid var(--line);background:#fff;border-radius:6px;width:360px;padding:8px;position:absolute;top:46px;left:0}.calendar-editor .ant-picker{width:100%}.natural-day-popup .ant-picker-cell:not(.ant-picker-cell-in-view){visibility:hidden;pointer-events:none}.natural-day-popup .ant-picker-content tr:has(.ant-picker-cell):not(:has(.ant-picker-cell-in-view)){display:none}.plot-tooltip{font-variant-numeric:tabular-nums;font-size:13px;font-weight:600}.plot-time-label{font-variant-numeric:tabular-nums;font-size:11px;font-weight:400}.history-detail-loading{color:#586b83;font-size:11px;position:absolute;top:48px;right:0}.devices-summary{justify-content:flex-start;gap:16px;margin:0 0 16px}.devices-summary h2{color:var(--ink);margin:0;font-size:18px;font-weight:650}.devices-summary strong{font-size:13px}.device-list-heading,.device-list-row{grid-template-columns:minmax(185px,1.25fr) minmax(180px,1.1fr) 90px 135px 150px;gap:18px;padding:16px 20px}.device-list-heading{color:#243b58;background:#e9eff8;font-size:12px;font-weight:650}.device-list-row{min-height:78px}.device-identity strong{font-size:14px}.device-link,.device-last-sample{color:#50627b;font-variant-numeric:tabular-nums;font-size:12px;line-height:1.5}.device-row-action{justify-content:flex-end;gap:16px}.device-row-action button{white-space:nowrap;align-items:center;gap:4px;min-height:34px;font-size:12px;display:inline-flex}.device-row-action button:disabled{color:#7b8797;cursor:not-allowed;opacity:.65}.air-controls{grid-template-columns:1fr 1fr}@media (width<=1200px) and (width>=1001px){.device-list-heading,.device-list-row{grid-template-columns:minmax(165px,1.2fr) minmax(145px,1fr) 75px 120px 135px;gap:10px;padding:14px}}@media (width<=1000px){.device-list-heading{display:none}.device-list-row{grid-template-columns:minmax(0,1fr) auto;gap:8px 18px;padding:18px}.device-identity{grid-area:1/1}.device-row-state{grid-area:1/2}.device-link{grid-area:2/1;margin:0;padding:0}.device-last-sample{grid-area:3/1;font-size:11px}.device-row-action{flex-wrap:wrap;grid-area:2/2/4;align-self:end;gap:12px}}@media (width<=650px){.devices-summary{flex-direction:row;align-items:center}.history-time-tools{gap:6px}.duration-select{min-width:90px}.calendar-editor{width:340px;max-width:calc(100vw - 16px);position:fixed;top:145px;left:calc(50% - 170px)}.history-page .compact-history-tools{flex-wrap:wrap}.natural-day-popup .ant-picker-panel-container{max-width:calc(100vw - 16px)}.device-list-row{padding:16px 12px}.device-row-action{gap:8px}.device-identity strong{font-size:13px}}.history-page .plot svg{height:220px}.sensor-readings .reading:hover,.sensor-readings .reading:active,.sensor-readings .reading:focus{box-shadow:none;background:0 0}.sensor-readings .reading:focus-visible{outline:none}.history-panel{scroll-margin-top:82px}.date-range-trigger{white-space:nowrap;font-variant-numeric:tabular-nums;gap:10px;height:38px;min-height:38px;font-size:13px;padding:0 12px!important}.date-range-separator{color:#71819a;margin:0 10px}.travel-calendar{z-index:100;color:#233751;font-variant-numeric:tabular-nums;background:#fff;border-radius:12px;flex-direction:column;width:400px;max-width:calc(100vw - 24px);font-size:14px;display:flex;position:fixed;overflow:hidden;box-shadow:0 12px 40px #182b4833}.calendar-header{border-bottom:1px solid #edf0f5;flex:none;justify-content:center;align-items:center;min-height:48px;padding:12px 44px;display:flex;position:relative}.calendar-header h2{margin:0;font-size:16px;font-weight:650}.calendar-header .calendar-close{color:#52647c;width:34px;height:34px;position:absolute;right:10px}.calendar-week,.calendar-days{text-align:center;grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.calendar-week{color:#52647c;background:#fff;border-bottom:1px solid #edf0f5;flex:none;margin:0;padding:8px 16px;font-size:13px}.calendar-months{overscroll-behavior:contain;overflow-anchor:none;scrollbar-width:thin;scrollbar-color:#c5cfdf transparent;flex:1;min-height:0;padding:0 12px 12px;display:block;position:relative;overflow-y:auto}.calendar-months::-webkit-scrollbar{width:6px}.calendar-months::-webkit-scrollbar-thumb{background:#c5cfdf;border-radius:4px}.calendar-month{padding-bottom:8px}.calendar-month-heading{z-index:1;color:#263c58;text-align:left;background:#f4f7fb;margin:0 -12px 6px;padding:8px 20px;font-size:15px;font-weight:650;line-height:1.4;position:sticky;top:0}.calendar-day,.calendar-blank{min-width:0;height:42px}.calendar-day{color:#111827;background:0 0;border-radius:0;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:2px 0;scroll-margin:48px 0 12px;font-size:16px;line-height:1.2;display:flex;position:relative}.calendar-data-dot{background:#245de9;border-radius:50%;width:4px;height:4px;position:absolute;bottom:3px}.calendar-day.is-endpoint .calendar-data-dot{background:#fff}.calendar-day small{white-space:nowrap;height:12px;font-size:10px;line-height:12px}.calendar-day span{height:20px}.calendar-day:hover{background:#e8f0ff}.calendar-day.in-range{background:#eaf2ff}.calendar-day.is-endpoint{color:#fff;background:#245de9;border-radius:5px}.calendar-day.is-start:not(.is-end){border-radius:5px 0 0 5px}.calendar-day.is-end:not(.is-start){border-radius:0 5px 5px 0}.calendar-footer{background:#fff;border-top:1px solid #e3eaf3;flex:none;padding:10px 16px 12px;box-shadow:0 -4px 14px #182b480a}.calendar-summary{flex:none;grid-template-columns:minmax(0,1fr) 54px minmax(0,1fr);align-items:center;gap:6px;padding:12px 16px 10px;display:grid}.calendar-summary-date{text-align:left;color:#233751;background:#fff;border:1px solid #dce4f0;border-radius:7px;flex-direction:column;justify-content:center;align-self:stretch;gap:6px;min-width:0;padding:8px 10px;display:flex}.calendar-summary-date>span{color:#53677f;font-size:12px}.calendar-summary-date>div{flex-wrap:wrap;align-items:baseline;gap:4px;display:flex}.calendar-summary-date strong{white-space:nowrap;font-size:16px;font-weight:600}.calendar-summary-date small{color:#53677f;white-space:nowrap;font-size:11px}.calendar-summary-year{color:#53677f;margin-bottom:3px;font-size:12px;font-weight:400;display:block}.calendar-summary-date:hover{background:#f4f7fb}.calendar-summary-date.is-active{background:#eaf2ff;border-color:#245de9}.calendar-summary-date.is-active>span{color:#245de9}.calendar-summary-span{color:#61738b;flex-direction:column;align-items:center;gap:2px;font-size:12px;display:flex}.calendar-summary-span>div{color:#245de9;align-items:baseline;gap:3px;display:flex}.calendar-summary-span strong{font-size:26px;font-weight:650;line-height:1.1}.calendar-summary-span small{font-size:13px}.calendar-summary-span svg{margin-top:3px}.calendar-data-status{color:#52647c;flex:none;justify-content:flex-end;align-items:center;padding:0 16px 8px;font-size:11px;display:flex}.calendar-data-status .calendar-data-error{color:#a73532}.calendar-footer .calendar-confirm{justify-content:center;width:100%;min-height:38px;font-size:14px}.calendar-footer .date-range-error{color:#a73532;margin:0 0 8px;font-size:12px}@media (width<=650px){.history-time-tools{flex-wrap:wrap;grid-column:1/-1;width:100%}.date-range-trigger{flex:1;gap:6px;font-size:12px}.date-range-separator{margin:0 6px}.date-range-trigger>span{white-space:normal}.travel-calendar{border-radius:14px 14px 0 0;width:100%;max-width:100%;max-height:calc(100dvh - 24px);bottom:0;top:auto!important;left:0!important}.calendar-months{padding:0 10px 12px}.calendar-month-heading{margin:0 -10px 6px;padding:8px 18px}.calendar-week{padding:8px 14px}.calendar-day,.calendar-blank{height:44px}.calendar-footer{padding:10px 14px max(12px,env(safe-area-inset-bottom))}.calendar-footer .calendar-confirm{min-height:44px}.calendar-summary{padding:12px 12px 10px}.calendar-summary-date{padding:8px}.calendar-summary-span strong{font-size:24px}}:root{--bg:#f3f5f8;--surface:#fff;--ink:#202b3c;--muted:#748092;--line:#e4e8ef;--blue:#2563eb;--blue-soft:#edf3ff;--radius:8px;color:var(--ink);background:var(--bg);font-synthesis:none;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:Inter,Microsoft YaHei UI,PingFang SC,system-ui,sans-serif}*{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;margin:0;font-size:14px;line-height:1.5}h1,h2,h3,p{margin:0}button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;background:0 0;border:0}button:disabled{cursor:not-allowed;opacity:.38}button,a{touch-action:manipulation}a{color:inherit;text-decoration:none}svg{flex-shrink:0}:is(button,a,input,select,textarea,summary,svg,[tabindex],[contenteditable]):focus{box-shadow:none;outline:none}button:focus:not(:focus-visible),a:focus:not(:focus-visible),select:focus:not(:focus-visible),summary:focus:not(:focus-visible){outline:none}::selection{background:#dce8ff}input,select{background:var(--surface);min-height:40px;color:var(--ink);border:1px solid #d6dde7;border-radius:6px;min-width:0;padding:8px 11px}button{transition:background-color .15s,color .15s}button:hover{color:var(--blue)}.button{border:1px solid var(--line);background:var(--surface);white-space:nowrap;border-radius:6px;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:8px 14px;font-size:13px;display:inline-flex}.button:hover{background:var(--blue-soft)}.button.primary{background:var(--blue);color:#fff;border-color:var(--blue)}.button.primary:hover{background:#1d4ed8}.icon-button{color:#667286;border-radius:6px;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.icon-button:hover{background:var(--blue-soft)}.text-button{color:#53617a;border-radius:5px;align-items:center;gap:7px;min-height:36px;padding:8px;font-size:12px;display:inline-flex}.text-button:hover{background:var(--blue-soft)}.form-error{color:#b42318;background:#fff1f0;border-radius:5px;justify-content:space-between;align-items:center;gap:8px;padding:9px 11px;font-size:12px;display:flex}.form-error button{color:inherit;text-decoration:underline}.sidebar{background:var(--surface);border-right:1px solid var(--line);z-index:40;flex-direction:column;width:180px;padding:0 12px;display:flex;position:fixed;inset:0 auto 0 0}.brand{white-space:nowrap;align-items:center;gap:10px;height:65px;padding:0 4px;display:flex}.brand .brand-icon{border-radius:6px;width:32px;height:32px}.brand strong{white-space:normal;font-size:14px;font-weight:600;line-height:1.45}.brand strong>span{display:block}.sidebar nav{gap:6px;padding-top:19px;display:grid}.sidebar nav button{color:#627088;text-align:left;border-radius:6px;align-items:center;gap:12px;min-height:43px;padding:10px 13px;font-size:13px;display:flex}.sidebar nav button:hover{background:#f5f7fb}.sidebar nav button.nav-active{background:var(--blue-soft);color:var(--blue);font-weight:550}.sidebar-bottom{border-top:1px solid var(--line);color:var(--muted);align-items:center;gap:10px;margin-top:auto;padding:18px 14px;font-size:12px;display:flex}.workspace{margin-left:180px}.topbar{border-bottom:1px solid var(--line);background:var(--surface);z-index:25;justify-content:space-between;align-items:center;gap:12px;height:65px;padding:0 26px;display:flex;position:sticky;top:0}.topbar h1{white-space:nowrap;font-size:19px;font-weight:600}.topbar-tools{align-items:center;gap:15px;display:flex}.header-time{color:var(--muted);font-size:12px}.user-name{border-left:1px solid var(--line);color:#5a667b;padding-left:15px;font-size:12px}.monitor-content{max-width:1800px;margin:0 auto;padding:22px 26px 30px}.panel,.sensor-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);min-width:0}.panel-head{justify-content:space-between;align-items:center;gap:12px;min-height:49px;padding:13px 17px;display:flex}.panel-label{align-items:center;gap:9px;font-size:13px;font-weight:550;display:inline-flex}.panel-label svg{color:#64748b}.panel-actions{align-items:center;gap:14px;display:flex}.device-model{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:180px;font-size:11px;overflow:hidden}.device-status{color:#798597;white-space:nowrap;align-items:center;gap:6px;font-size:11px;display:inline-flex}.device-status i{background:#a7b1bf;border-radius:50%;width:6px;height:6px}.device-status.online{color:#16805d}.device-status.online i{background:#1da578}.overview-grid{grid-template-columns:minmax(0,1fr) 340px;gap:18px;display:grid}.camera-panel{flex-direction:column;display:flex;overflow:hidden}.video-surface{aspect-ratio:16/9;background:#17202d;border-radius:4px;flex:1;min-height:245px;max-height:430px;margin:0 12px;position:relative;overflow:hidden}.video-surface video{object-fit:contain;width:100%;height:100%;position:absolute;inset:0}.camera-empty{color:#586577;place-items:center;display:grid;position:absolute;inset:0}.camera-empty svg{stroke-width:1.25px}.video-toolbar{height:48px;color:var(--muted);justify-content:space-between;align-items:center;gap:10px;padding:0 12px;font-size:11px;display:flex}.video-toolbar>div{align-items:center;gap:6px;display:flex}.sensor-stack{grid-template-rows:auto;align-self:start;gap:12px;display:grid}.sensor-card .panel-head{min-height:39px;padding:10px 15px}.sensor-readings{grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:15px;padding:0 14px 9px;display:grid}.reading{text-align:left;border-radius:4px;min-width:0;padding:0}.reading:hover{background:#f6f9ff}.reading-label{color:#748094;margin-bottom:5px;font-size:11px;display:block}.reading strong{letter-spacing:-.5px;color:#263954;flex-wrap:wrap;align-items:baseline;gap:6px;font-size:27px;font-weight:550;line-height:1.25;display:flex}.reading strong small{color:#7a8698;letter-spacing:0;font-size:11px;font-weight:400}.device-meta{color:#8590a0;border-top:1px solid #f0f2f6;justify-content:space-between;align-items:center;gap:12px;padding:7px 15px;font-size:10px;display:flex}.device-meta>span{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.device-meta b{color:#69788f;margin-left:5px;font-weight:400}.device-meta time{white-space:nowrap}.chart-toolbar{justify-content:flex-end;padding:19px 0 13px;display:flex}.range-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.segmented{background:#e9edf3;border-radius:6px;gap:2px;padding:3px;display:inline-flex}.segmented button{color:#6b788c;white-space:nowrap;border-radius:4px;min-height:31px;padding:6px 12px;font-size:12px}.segmented button.selected{background:var(--surface);color:var(--blue);box-shadow:0 1px 3px #172b4c10}.trends-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.trend-panel{padding:5px 15px 14px}.chart-head{justify-content:space-between;align-items:center;gap:10px;min-height:43px;display:flex}.chart-label{align-items:center;gap:8px;min-width:0;font-size:12px;font-weight:500;display:flex}.chart-label i{border-radius:2px;flex-shrink:0;width:6px;height:6px}.chart-label small{color:var(--muted);overflow-wrap:anywhere;font-size:10px;font-weight:400}.wide-trend{grid-column:1/-1}.plot{min-height:168px;position:relative}.plot svg{touch-action:pan-y;width:100%;height:168px;display:block;overflow:visible}.axis{fill:#8490a1;font-family:inherit;font-size:10px}.chart-empty{color:#64748b;background:repeating-linear-gradient(#0000 0 52px,#f2f4f7 53px,#0000 54px);place-items:center;height:168px;display:grid}.plot-readout{color:var(--muted);flex-wrap:wrap;align-items:center;gap:9px;padding-top:8px;font-size:10px;display:flex}.plot-readout strong{font-weight:500}.filter-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:15px;display:flex}.filter-right{align-items:center;gap:9px;display:flex}.filter-right select{min-width:130px;font-size:12px}.custom-range{font-size:12px;position:relative}.custom-range summary{cursor:pointer;border:1px solid var(--line);background:var(--surface);border-radius:5px;align-items:center;gap:6px;min-height:37px;padding:6px 10px;list-style:none;display:flex}.custom-range-fields{z-index:20;background:var(--surface);border:1px solid var(--line);border-radius:7px;gap:12px;width:275px;padding:15px;display:grid;position:absolute;top:43px;left:0;box-shadow:0 8px 25px #172b4c14}.custom-range-fields label{gap:5px;font-size:12px;display:grid}.history-caption{color:var(--muted);justify-content:space-between;gap:12px;margin:16px 0;font-size:11px;display:flex}.history-charts{gap:14px;display:grid}.history-panel{padding:17px}.history-panel-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.stats{gap:20px;display:flex}.stats>span{color:var(--muted);align-items:center;gap:8px;font-size:11px;display:flex}.stats strong{color:#42516a;font-size:16px;font-weight:500}.timeline-labels{color:var(--muted);justify-content:space-between;margin-top:7px;font-size:10px;display:flex}.status-summary{grid-template-columns:repeat(3,1fr);gap:15px;margin-bottom:18px;display:grid}.status-summary>div{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px}.status-summary>div>span{color:var(--muted);margin-bottom:10px;font-size:12px;display:block}.status-summary strong{color:#304663;font-size:26px;font-weight:550}.status-summary small{color:#8b96a6;margin-left:6px;font-size:14px;font-weight:400}.device-table-wrap{overflow:auto}.device-table{border-collapse:collapse;text-align:left;width:100%;min-width:700px;font-size:12px}.device-table th{color:#7b8798;border-bottom:1px solid var(--line);background:#fafbfd;padding:13px 18px;font-size:11px;font-weight:500}.device-table td{overflow-wrap:anywhere;border-bottom:1px solid #eef1f5;max-width:250px;padding:21px 18px}.device-table tbody tr:last-child td{border:0}.device-table tbody tr:hover{background:#fafcff}.device-number{color:#4b5f7b;font-family:ui-monospace,Consolas,monospace}.error-bar{color:#ae4a3d;background:#fff4f2;border:1px solid #f1d5d0;border-radius:6px;align-items:center;gap:10px;margin-bottom:15px;padding:10px 13px;font-size:12px;display:flex}.error-bar span{flex:1}.error-bar button{color:inherit;text-decoration:underline}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=1150px){.overview-grid{grid-template-columns:minmax(0,1fr) 300px}.reading strong{font-size:25px}.sensor-readings{gap:10px}.monitor-content{padding:18px}.topbar{padding:0 18px}}@media (width<=950px){.sidebar{width:66px;padding:0 8px}.brand{justify-content:center;padding:0}.brand strong,.sidebar nav button>span{display:none}.sidebar nav button{justify-content:center;padding:10px}.sidebar-bottom{justify-content:center;padding:18px 0}.sidebar-bottom>svg{display:none}.workspace{margin-left:66px}.header-time{font-size:11px}.topbar-tools{gap:10px}.overview-grid{grid-template-columns:minmax(0,1fr) 285px}.device-meta{padding-left:12px;padding-right:12px;font-size:9px}}@media (width<=760px){.overview-grid{grid-template-columns:1fr}.sensor-stack{grid-template-rows:auto;grid-template-columns:repeat(3,minmax(0,1fr))}.sensor-readings{grid-auto-flow:row;gap:10px}.reading strong{font-size:23px}.device-meta{flex-wrap:wrap;gap:3px}.video-surface{max-height:370px}.header-time{display:none}.stats{gap:12px}.stats>span{gap:5px}}@media (width<=600px){.sidebar{height:calc(62px + env(safe-area-inset-bottom));width:100%;padding:0 7px env(safe-area-inset-bottom);border-right:0;border-top:1px solid var(--line);inset:auto 0 0}.sidebar .brand,.sidebar-bottom{display:none}.sidebar nav{justify-content:space-around;gap:4px;padding:5px 0;display:flex}.sidebar nav button{border-radius:6px;flex-direction:column;flex:1;gap:4px;min-height:50px;padding:5px;font-size:10px}.sidebar nav button>span{display:block}.sidebar nav button>svg{width:19px;height:19px}.workspace{padding-bottom:calc(65px + env(safe-area-inset-bottom));margin-left:0}.topbar{gap:8px;height:55px;padding:0 14px}.topbar h1{font-size:17px}.topbar-tools{gap:5px}.user-name{display:none}.icon-button{width:36px;height:36px}.monitor-content{padding:14px 12px 20px}.overview-grid{gap:12px}.video-surface{min-height:185px;max-height:300px;margin:0 9px}.panel-head{min-height:43px;padding:11px 13px}.video-toolbar{height:43px;padding:0 8px}.video-toolbar>div{gap:2px}.sensor-stack{grid-template-columns:1fr;gap:10px}.sensor-readings{grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:15px;padding-bottom:10px}.reading strong{font-size:27px}.sensor-card .panel-head{padding:10px 14px}.device-meta{flex-wrap:nowrap;padding:6px 14px;font-size:10px}.trends-grid{grid-template-columns:1fr;gap:11px}.wide-trend{grid-column:auto}.trend-panel{padding:4px 12px 12px}.chart-toolbar{padding:15px 0 11px}.filter-bar{align-items:stretch;gap:12px}.filter-right{justify-content:space-between;width:100%}.filter-right select{flex:1;max-width:170px}.segmented button{min-height:34px;padding:7px 12px}.custom-range-fields{width:min(275px,100vw - 32px);left:auto;right:0}.history-caption{flex-wrap:wrap;gap:8px;font-size:10px}.history-panel{padding:13px}.history-panel-head{flex-wrap:wrap;gap:12px;margin-bottom:15px}.stats{gap:18px;margin-left:auto}.stats strong{font-size:14px}.stats>span{font-size:10px}.status-summary{gap:8px;margin-bottom:12px}.status-summary>div{padding:13px 11px}.status-summary>div>span{margin-bottom:8px;font-size:11px}.status-summary strong{font-size:22px}.status-summary small{margin-left:3px;font-size:11px}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.password-field input::-ms-reveal{display:none}.password-field input::-ms-clear{display:none}.form-field{gap:8px;min-width:0;display:grid}.field-error{color:#b42318;font-size:12px}.field-hint{color:#637187;font-size:12px}.form-success{color:#147451;background:#edf9f3;border-radius:6px;padding:10px 12px;font-size:13px}.connection-state{justify-content:center;align-items:center;gap:12px;display:flex}.invitation-page{gap:16px;display:grid}.new-invitation{gap:12px;max-width:650px;padding:20px;display:grid}.invite-copy{gap:8px;display:flex}.invite-copy input{flex:1;min-width:0;font-family:monospace}.revoke-actions{gap:6px;display:flex}.danger{color:#b42318}.device-status.warning{color:#946200}.device-status.warning i{background:#d79b24}.device-status.error{color:#b42318}.device-status.error i{background:#ce5548}.camera-empty{color:#aeb9c8;flex-direction:column;justify-content:center;gap:14px;font-size:13px;display:flex}.camera-empty .button{color:#fff;background:#253247;border-color:#46556b}.data-stale{color:#946200;font-size:11px}.device-error{color:#b42318;margin-top:4px;font-size:11px;display:block}.device-detail{color:var(--muted);padding:0 15px 10px;font-size:12px}.device-detail summary{cursor:pointer;padding:4px 0}.device-detail p{overflow-wrap:anywhere;padding:4px 0}.sensor-card .device-status{white-space:normal;text-align:right}.chart-empty{font-size:12px}.loading-overlay{color:var(--muted);text-align:center;padding:12px}.login-card input[aria-invalid=true]{border-color:#b42318}@media (width<=600px){.invite-copy{flex-wrap:wrap}.invite-copy input{flex-basis:100%}.sidebar nav button{font-size:9px}.video-toolbar{flex-wrap:wrap;height:auto;min-height:48px;padding:8px}.new-invitation{padding:15px}}.camera-empty{z-index:1;background:#17202d}.invitation-page{max-width:1120px;margin:0 auto}.invitation-list{overflow:hidden}.invitation-toolbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:18px 22px;display:flex}.invitation-summary{align-items:center;gap:20px;min-width:0;display:flex}.invitation-count{white-space:nowrap;font-size:14px;font-weight:550}.invitation-count b{color:#53627a;text-align:center;background:#eef2f7;border-radius:5px;min-width:24px;margin-left:6px;padding:1px 7px;font-size:12px;font-weight:500;display:inline-block}.invitation-policy{color:#6b788c;font-size:12px}.invitation-table{table-layout:fixed;border-collapse:collapse;text-align:left;width:100%;font-size:13px}.invitation-table th{color:#69768a;border-bottom:1px solid var(--line);background:#fafbfd;padding:11px 22px;font-size:12px;font-weight:400}.invitation-table th:first-child{width:19%}.invitation-table th:nth-child(2){width:17%}.invitation-table th:nth-child(3){width:26%}.invitation-table th:nth-child(4){width:18%}.invitation-table th:nth-child(5){width:20%}.invitation-table td{overflow-wrap:anywhere;border-bottom:1px solid #edf0f5;height:62px;padding:10px 22px}.invitation-table tbody tr:last-child td{border-bottom:0}.invitation-table tbody tr:hover{background:#fbfcff}.invitation-table th:last-child,.invitation-table td:last-child{text-align:right}.invitation-id{color:#53627a;font-family:ui-monospace,Consolas,monospace;font-size:12px}.invitation-status{color:#657183;white-space:nowrap;background:#f0f2f5;border-radius:5px;align-items:center;gap:6px;padding:3px 8px;font-size:12px;display:inline-flex}.invitation-status i{background:currentColor;border-radius:50%;width:5px;height:5px}.invitation-status.active{color:#2563eb;background:#edf3ff}.invitation-status.used{color:#17734c;background:#edf8f2}.invitation-revoke{color:#69768a;min-height:36px;padding:6px 0}.invitation-revoke:hover{color:#b42318;background:0 0}.invitation-no-action{color:#909baa}.invitation-table .revoke-actions{justify-content:flex-end;gap:4px}.invitation-table .text-button{white-space:nowrap}.invitation-feedback{align-items:center;gap:7px;margin:12px 22px;display:flex}.invitation-empty{color:#6b788c;flex-direction:column;justify-content:center;align-items:center;gap:13px;min-height:210px;font-size:13px;display:flex}.invitation-empty>svg{color:#94a3b8;stroke-width:1.5px}.invitation-dialog{width:min(520px,100vw - 32px);max-height:calc(100svh - 32px);color:var(--ink);background:#fff;border:1px solid #e4e8ef;border-radius:12px;padding:26px;overflow:auto;box-shadow:0 20px 80px #172b4c30}.invitation-dialog::backdrop{background:#15243b59}.invitation-dialog-header{align-items:center;gap:10px;margin-bottom:25px;display:flex}.invitation-dialog-header h2{flex:1;font-size:18px;font-weight:600}.invitation-success-icon{color:#16805d;background:#edf8f2;border-radius:50%;place-items:center;width:32px;height:32px;display:grid}.invite-code-label{color:#667286;margin-bottom:8px;font-size:12px;display:block}.invite-code{letter-spacing:.2px;color:#233a60;background:#f6f8fc;border-color:#e2e8f2;width:100%;height:52px;padding:12px;font-family:ui-monospace,Consolas,monospace;font-size:14px}.invitation-expiry{color:#657183;justify-content:space-between;gap:12px;margin-top:15px;font-size:12px;display:flex}.invitation-once{color:#657183;margin-top:10px;font-size:12px}.invitation-dialog .field-error{margin-top:12px}.invitation-dialog-actions{justify-content:flex-end;gap:10px;margin-top:26px;display:flex}.invitation-dialog-actions .button{min-height:42px;padding-inline:18px}.invitation-close-check{color:#785819;background:#fff9ec;border:1px solid #eedab0;border-radius:7px;margin-top:20px;padding:14px;font-size:13px}.invitation-close-check>div{justify-content:flex-end;gap:10px;margin-top:12px;display:flex}.invitation-close-check .danger{color:#b42318;background:#fff}@media (width<=760px){.invitation-toolbar{padding:16px}.invitation-summary{flex-direction:column;align-items:flex-start;gap:8px}.invitation-table th,.invitation-table td{padding-left:14px;padding-right:14px}.invitation-table{font-size:12px}}@media (width<=600px){.invitation-policy{font-size:11px}.invitation-toolbar{gap:10px}.invitation-toolbar .button{padding:8px 11px;font-size:12px}.invitation-table thead{display:none}.invitation-table,.invitation-table tbody{width:100%;display:block}.invitation-table tr{border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr;gap:12px 8px;padding:16px;display:grid}.invitation-table tr:last-child{border-bottom:0}.invitation-table td{border:0;flex-direction:column;align-items:flex-start;gap:5px;min-width:0;height:auto;padding:0;display:flex}.invitation-table td:before{content:attr(data-label);color:#738095;font-size:11px}.invitation-table td:nth-child(2),.invitation-table td:nth-child(4){align-items:flex-end}.invitation-table td:last-child{grid-column:1/-1;align-items:flex-end}.invitation-table td:last-child:before{display:none}.invitation-table td:last-child .text-button{border:1px solid var(--line);border-radius:5px;min-height:40px;padding:7px 10px}.invitation-feedback{margin:12px 16px}.invitation-dialog{padding:22px 18px}.invitation-dialog-header{gap:8px;margin-bottom:20px}.invitation-dialog-header h2{font-size:17px}.invite-code{letter-spacing:0;padding:10px;font-size:12px}.invitation-dialog-actions .button{flex:1;padding-inline:10px}.invitation-expiry{font-size:11px}.invitation-dialog-actions{margin-top:22px}}.floating-notice{z-index:100;color:#304663;pointer-events:none;background:#fff;border-radius:9px;align-items:center;gap:9px;width:max-content;max-width:calc(100vw - 32px);padding:12px 18px;font-size:13px;animation:.18s ease-out toast-appear;display:flex;position:fixed;top:82px;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #172b4c1a}.floating-notice svg{color:var(--blue,#2563eb);flex-shrink:0}.floating-notice span{overflow-wrap:anywhere}@keyframes toast-appear{0%{opacity:0;transform:translate(-50%,-6px)}to{opacity:1;transform:translate(-50%)}}@media (width<=600px){.floating-notice{top:calc(68px + env(safe-area-inset-top));padding:11px 15px}}.login-page{place-items:center;min-height:100svh;padding:24px;display:grid}.login-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;width:min(100%,384px);padding:28px 32px 20px}.brand-icon{background:var(--blue);color:#fff;border-radius:8px;flex-shrink:0;place-items:center;width:38px;height:38px;display:grid}.login-brand .brand-icon{width:28px;height:28px}.login-brand .brand-icon svg{width:20px;height:20px}.login-brand{justify-content:center;align-items:center;gap:10px;margin-bottom:28px;display:flex}.login-brand h1{letter-spacing:.2px;min-width:0;font-size:20px;font-weight:600;line-height:1.4}.login-card form{gap:16px;display:grid}.auth-field{min-width:0;position:relative}.login-card .auth-field label{z-index:1;color:#526075;cursor:text;width:fit-content;font-size:11px;font-weight:500;line-height:16px;position:absolute;top:7px;left:12px;right:48px}.login-card .auth-field input{background:var(--surface);width:100%;height:56px;min-height:56px;caret-color:var(--blue);border:1px solid #d6dde7;border-radius:9px;padding:24px 12px 8px;font-size:14px;line-height:22px;transition:border-color .15s,box-shadow .15s;display:block;box-shadow:0 2px 3px #172b4c06}.login-card .auth-field input::placeholder{color:#68758a;opacity:1}.login-card .auth-field input:hover{border-color:#aab8cc}:is(.login-card .auth-field input[aria-invalid=true],.login-card .auth-field input:user-invalid){border-color:#c43c35}.login-card .password-field input{padding-right:48px}.password-field button{color:#68758a;border-radius:6px;place-items:center;width:44px;height:44px;padding:0;display:grid;position:absolute;top:6px;right:3px}.password-field button svg{width:19px;height:19px}.login-submit svg{width:17px;height:17px}.password-field button:hover{color:var(--blue);background:var(--blue-soft)}.login-card .field-error{padding-inline:2px;line-height:1.5}.login-card .field-hint{color:#637187;font-size:12px;line-height:18px}.login-submit{border-radius:8px;gap:8px;width:100%;height:40px;min-height:40px;margin-top:10px;font-size:14px;font-weight:500}.register-card .login-submit{margin-top:4px}.auth-divider{color:#637187;align-items:center;gap:16px;margin:20px 0 8px;font-size:12px;line-height:18px;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--line);flex:1;height:1px}.auth-footer{flex-wrap:wrap;justify-content:center;align-items:center;gap:2px;font-size:13px;display:flex}.auth-switch{min-height:44px;color:var(--blue);border-radius:5px;justify-content:center;align-items:center;padding:8px 6px;font-size:13px;display:inline-flex}.auth-switch:hover{text-underline-offset:4px;text-decoration:underline}.connection-state{min-height:100px}@media (width<=600px){.login-page{padding:16px}.login-card{padding:24px 24px 16px}.login-brand{margin-bottom:24px}.login-card form{gap:14px}.login-card .auth-field input{font-size:16px}.login-submit{height:44px;min-height:44px}.register-card .login-brand{margin-bottom:20px}}@media (height<=700px){.login-page{padding-block:16px}.register-card{padding-block:24px 16px}.register-card .login-brand{margin-bottom:20px}.register-card form{gap:12px}.register-card .auth-divider{margin-top:16px;margin-bottom:8px}}@media (height<=450px){.login-page{padding:12px}.login-card{padding:18px 24px 12px}.login-brand{margin-bottom:18px}.login-card form{gap:12px}.login-submit{margin-top:4px}.auth-divider{margin:14px 0 4px}}@media (prefers-reduced-motion:reduce){.login-card .auth-field input{transition:none}}.video-surface:fullscreen{aspect-ratio:auto;border-radius:0;width:100vw;height:100vh;max-height:none;margin:0}.camera-panel .video-toolbar>div{flex-wrap:wrap}.camera-panel .video-toolbar{flex-wrap:wrap;height:auto;min-height:48px}.site-filing{text-align:center;color:#526075;flex:none;justify-content:center;align-items:center;min-height:44px;padding:0 16px;font-size:12px;line-height:1.5;display:flex}.site-filing a{overflow-wrap:anywhere;border-radius:4px;justify-content:center;align-items:center;max-width:100%;min-height:44px;padding:8px;display:inline-flex}.site-filing a:hover{color:var(--blue);text-underline-offset:3px;text-decoration:underline}.site-filing a:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}.login-page{min-height:calc(100svh - 44px)}.workspace{flex-direction:column;min-height:100svh;display:flex}.workspace>.monitor-content{flex:1;width:100%;min-width:0}
