:root{--bg:#f3f6f8;--ink:#13222b;--muted:#667780;--line:#dce5e8;--nav:#0c2428;--teal:#0d8c7c;--orange:#f28b32;--red:#d84941;--card:#fff}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,Microsoft YaHei,system-ui,sans-serif}button,input,select{font:inherit}a{color:inherit;text-decoration:none}.shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:236px;background:var(--nav);color:#d7e8e6;padding:18px 14px 24px;overflow:auto;transition:transform .22s ease,box-shadow .22s ease}.sidebar.floating{transform:translateX(-194px)}.sidebar.floating.open{transform:translateX(0);box-shadow:18px 0 40px #0004}.sidebar-tools{display:flex;justify-content:flex-end;padding:0 4px 10px}.sidebar-pin-btn{width:28px;height:28px;border:0;border-radius:8px;background:#16383b;color:#d7e8e6;display:grid;place-items:center;cursor:pointer}.sidebar-pin-btn:hover{background:#1d474a}.brand{display:flex;gap:11px;align-items:center;padding:0 9px 24px;border-bottom:1px solid #244044}.brand-mark{width:36px;height:36px;border-radius:10px;background:var(--teal);display:grid;place-items:center;font-weight:800;color:#fff}.brand strong{display:block;color:#fff}.brand small{color:#7faaa5}.nav-group{margin-top:20px}.nav-title{font-size:11px;letter-spacing:.12em;color:#6f9692;padding:0 12px 8px}.nav a{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:8px;font-size:14px;margin:2px 0}.nav a.active,.nav a:hover{background:#153b3d;color:#fff}.main{margin-left:236px;transition:margin-left .22s ease}.shell.sidebar-hidden .main{margin-left:42px}.topbar{height:68px;background:#fff;border-bottom:1px solid var(--line);padding:0 30px;justify-content:space-between;position:-webkit-sticky;position:sticky;top:0;z-index:5}.status,.topbar{display:flex;align-items:center}.status{gap:8px;color:var(--muted);font-size:13px}.dot{width:8px;height:8px;border-radius:50%;background:#25b384;box-shadow:0 0 0 4px #dcf6ec}.content{padding:28px 30px 60px;max-width:1600px;margin:auto}.sidebar-edge{position:fixed;left:0;top:0;bottom:0;width:18px;z-index:3}.heading{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:22px}.heading h1{font-size:25px;margin:0 0 6px;letter-spacing:-.02em}.heading p{margin:0;color:var(--muted);font-size:14px}.btn{border:0;background:var(--teal);color:#fff;border-radius:8px;padding:10px 15px;cursor:pointer;font-weight:600}.btn.secondary{background:#fff;color:var(--ink);border:1px solid var(--line)}.btn.danger{background:#fff0ef;color:var(--red)}.grid4{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:16px;gap:16px}.card,.metric{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 2px 7px #17343d0a}.metric{padding:19px}.metric .label{color:var(--muted);font-size:13px}.metric .value{font-size:27px;font-weight:750;margin:10px 0 4px}.metric .note{font-size:12px;color:#779089}.metric.warn{border-top:3px solid var(--orange)}.metric.danger{border-top:3px solid var(--red)}.card{padding:20px;margin-top:18px}.card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.card h2{font-size:16px;margin:0}.split{display:grid;grid-template-columns:1.55fr 1fr;grid-gap:18px;gap:18px}.alert{background:#fff2f0;border:1px solid #ffd2cc;color:#8c2823;border-radius:10px;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.alert strong{font-size:14px}.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:17px}.field{height:39px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:0 12px;min-width:180px;color:#47575e}.search{min-width:280px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;color:#6b7c84;background:#f8fafb;font-weight:600;padding:11px;border-bottom:1px solid var(--line)}td,th{white-space:nowrap}td{padding:13px 11px;border-bottom:1px solid #edf1f2}tr:last-child td{border:0}.badge{display:inline-flex;align-items:center;border-radius:20px;padding:4px 9px;font-size:11px;font-weight:700}.badge.critical{background:#ffebe9;color:#c63f37}.badge.warning{background:#fff1dc;color:#a95c13}.badge.info,.badge.online,.badge.success{background:#e3f6f0;color:#087361}.badge.confirmed,.badge.offline{background:#edf0f1;color:#66767d}.badge.unconfirmed{background:#fff1dc;color:#a95c13}.link{color:var(--teal);font-weight:600;cursor:pointer}.chart{height:280px}.muted{color:var(--muted)}.kpi-row{display:flex;gap:18px}.kpi-mini{flex:1 1;padding:14px;background:#f7faf9;border-radius:9px}.kpi-mini b{font-size:20px;display:block;margin-top:5px}.modal-back{position:fixed;inset:0;background:#081b1e80;display:grid;place-items:center;z-index:20}.modal{background:#fff;width:min(560px,90vw);border-radius:14px;padding:24px;box-shadow:0 20px 60px #0003}.modal h2{margin-top:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}.form-grid label{font-size:12px;color:var(--muted);display:grid;grid-gap:6px;gap:6px}.form-grid label.perm-check{display:flex;gap:8px;align-items:center}.form-grid input,.form-grid select{border:1px solid var(--line);padding:10px;border-radius:8px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.toast{position:fixed;right:24px;bottom:24px;background:#123a39;color:#fff;padding:13px 18px;border-radius:9px;z-index:30}.empty{text-align:center;padding:45px;color:var(--muted)}.login-page{min-height:100vh;display:grid;place-items:center;background:linear-gradient(145deg,#0c2428,#123a39 55%,#0d8c7c22)}.login-card{width:min(420px,92vw);background:#fff;border-radius:14px;padding:32px;box-shadow:0 20px 60px #0003;display:grid;grid-gap:14px;gap:14px}.login-card h1{margin:8px 0 0;font-size:24px}.login-card label{display:grid;grid-gap:6px;gap:6px;font-size:12px;color:var(--muted)}.login-card input{border:1px solid var(--line);padding:10px;border-radius:8px}.login-error{background:#fff2f0;color:#8c2823;border:1px solid #ffd2cc;border-radius:8px;padding:10px 12px;font-size:13px}.perm-grid{margin-top:16px;display:grid;grid-gap:10px;gap:10px}.perm-check{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink)}.perm-check input{margin:0;cursor:pointer}.topbar-right{gap:18px}.topbar-right,.user-menu{display:flex;align-items:center}.user-menu{gap:10px}.logout-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;font-size:13px}@media(max-width:1000px){.sidebar{width:72px}.brand div:last-child,.nav span,.nav-title{display:none}.main{margin-left:72px}.grid4{grid-template-columns:1fr 1fr}.split{grid-template-columns:1fr}}@media(max-width:650px){.content{padding:20px 14px}.topbar{padding:0 14px}.form-grid,.grid4{grid-template-columns:1fr}.heading{gap:12px}.sidebar{display:none}.main{margin:0}}.login-card label.login-input{height:53px;border:1px solid #d4dde6;border-radius:5px;background:#eef3f7;display:flex;align-items:center;gap:10px;padding:0 14px;color:#bdc6d2}.login-card label.login-input:focus-within{border-color:#b8c6d5;background:#f4f7fa}.login-card label.login-input svg{flex:0 0 auto;color:#bdc6d2}.login-card label.login-input input{height:100%;border:0;background:transparent;padding:0;outline:0;min-width:0;width:100%;font-size:20px;color:#263844}.login-card label.login-input input::placeholder{color:#b7c0cc;opacity:1}.compact-responsive-table{table-layout:fixed;width:100%;min-width:0}.compact-responsive-table td:not(.table-actions),.compact-responsive-table th:not(.table-actions){min-width:0;overflow:hidden;text-overflow:ellipsis}.table-actions{position:-webkit-sticky;position:sticky;right:0;z-index:1;background:#fff;padding-left:4px!important}.compact-responsive-table th.table-actions{z-index:2;background:#f8fafb}.table-actions.actions-3{width:210px}.table-actions.actions-2{width:142px}.table-actions.actions-1{width:76px}.table-action-group{display:flex;gap:6px;align-items:center;justify-content:flex-start;white-space:nowrap}.btn.compact-action{padding:8px 10px;border-radius:8px;line-height:1.2;white-space:nowrap}.compact-responsive-table td:not(.table-actions)>*{max-width:100%}.badge.danger{background:#ffebe9;color:#c63f37}.heading>.table-action-group{flex-wrap:wrap;justify-content:flex-end}.btn:disabled{opacity:.5;cursor:not-allowed}.modal{max-height:90vh;overflow:auto}.btn.danger{background:#c63f37;color:#fff;border-color:#c63f37}.btn.danger:hover{background:#a92f29;border-color:#a92f29}.billing-template-modal{width:min(1180px,96vw);max-width:none}.billing-template-modal textarea{width:100%;min-height:76px;border:1px solid var(--line);border-radius:8px;padding:10px;font:inherit;resize:vertical}.billing-template-modal .full{grid-column:1/-1}.billing-rule-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:20px 0 10px}.billing-rule-head h3{margin:0;font-size:15px}.billing-rules{display:grid;grid-gap:8px;gap:8px}.billing-rule-row{grid-template-columns:160px minmax(160px,.9fr) minmax(220px,1.3fr) auto auto}.billing-rule-row input,.billing-rule-row select{min-width:0;width:100%;height:39px;border:1px solid var(--line);border-radius:8px;padding:0 10px}.billing-editor-label{display:grid;grid-gap:7px;gap:7px;margin-top:18px;color:var(--muted);font-size:12px}.billing-editor-label textarea{min-height:230px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;line-height:1.5}@media(max-width:800px){.billing-rule-row{grid-template-columns:1fr 1fr}.billing-rule-row .perm-check{justify-self:start}.billing-template-modal .full{grid-column:auto}}.billing-template-preview-back{z-index:31}.billing-template-preview-modal{width:min(1200px,96vw);height:min(900px,92vh);max-width:none;padding:20px;display:flex;flex-direction:column}.billing-template-preview-modal .card-head{flex:0 0 auto;margin-bottom:12px}.billing-template-preview-frame{width:100%;min-height:0;flex:1 1;border:1px solid var(--line);border-radius:8px;background:#fff}.billing-manual-modal{width:min(760px,94vw)}.billing-manual-values{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:12px;gap:12px;margin-top:16px;padding:14px;border-radius:9px;background:#f6f9f9}.billing-manual-values label{display:grid;grid-gap:6px;gap:6px;font-size:12px;color:var(--muted)}.billing-manual-values input{height:39px;border:1px solid var(--line);border-radius:8px;padding:0 10px;color:var(--ink)}.billing-manual-values small{display:block;color:var(--muted)}.billing-manual-values b{display:block;margin-top:8px}@media(max-width:760px){.billing-manual-values{grid-template-columns:1fr 1fr}}.billing-placeholder-help{display:grid;grid-gap:6px;gap:6px;margin-top:18px;padding:12px 14px;border:1px solid #bfe8dc;border-radius:9px;background:#f1fbf8;color:#365159;font-size:12px}.billing-placeholder-help b{color:#087361}.billing-placeholder-help span{overflow-wrap:anywhere}.billing-template-modal code{padding:1px 4px;border-radius:4px;background:#edf3f4;color:#34515a}.billing-template-setup{display:grid;grid-gap:12px;gap:12px}.billing-template-setup label{display:grid;grid-gap:6px;gap:6px;color:var(--muted);font-size:12px}.billing-template-setup input,.billing-template-setup select{height:39px;min-width:0;border:1px solid var(--line);border-radius:8px;padding:0 10px;color:var(--ink);background:#fff}.billing-template-setup textarea{min-height:72px}.billing-template-name{width:min(440px,100%)}.billing-template-meta{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.billing-template-meta>label{width:220px}.billing-template-meta>label:nth-child(2){width:260px}.billing-template-meta .perm-check{display:flex;align-items:center;gap:8px;width:auto;height:39px;white-space:nowrap}.billing-template-meta .perm-check input{width:16px;height:16px;padding:0;accent-color:var(--teal)}.billing-template-setup .full{width:100%}.billing-rule-labels,.billing-rule-row{grid-template-columns:minmax(160px,1.2fr) 145px 170px 130px auto}.billing-rule-labels{display:grid;grid-gap:8px;gap:8px;padding:0 3px;color:var(--muted);font-size:12px}.billing-rule-row{display:grid;grid-gap:8px;gap:8px;align-items:center}.billing-rule-row input:disabled{background:#f1f4f5;color:#93a0a5;cursor:not-allowed}@media(max-width:800px){.billing-template-meta>label,.billing-template-meta>label:nth-child(2){width:100%}.billing-rule-labels{display:none}.billing-rule-row{grid-template-columns:1fr 1fr}.billing-rule-row .btn{justify-self:start}}.billing-template-name-row{display:flex;align-items:flex-end;gap:16px}.billing-template-name-row .billing-template-name{width:min(440px,100%)}.billing-template-name-row .billing-template-code{width:260px}.billing-template-name-row .perm-check{display:flex;align-items:center;gap:8px;height:39px;padding-bottom:1px;color:var(--ink);font-size:13px;white-space:nowrap}.billing-template-name-row .perm-check input{width:16px;height:16px;padding:0;accent-color:var(--teal)}.billing-notification-setup{display:grid;grid-template-columns:minmax(0,1fr) 220px;grid-gap:12px;gap:12px;margin-top:18px}.billing-notification-setup label{display:grid;grid-gap:6px;gap:6px;color:var(--muted);font-size:12px}.billing-notification-setup input,.billing-notification-setup select{height:39px;min-width:0;border:1px solid var(--line);border-radius:8px;padding:0 10px;color:var(--ink);background:#fff}.billing-notification-setup textarea{width:100%;min-height:72px;border:1px solid var(--line);border-radius:8px;padding:10px;font:inherit;resize:vertical}.billing-notification-setup .full{grid-column:1/-1}@media(max-width:800px){.billing-template-name-row{align-items:stretch;flex-direction:column;gap:6px}.billing-template-name-row .billing-template-code{width:100%}.billing-notification-setup{grid-template-columns:1fr}.billing-notification-setup .full{grid-column:auto}}.device-profile-task-selector{width:100%;min-height:92px;max-height:240px;overflow:auto;border:1px solid var(--line);border-radius:8px;background:#fff;padding:7px 10px;display:grid;grid-template-columns:1fr;grid-gap:3px;gap:3px}.device-profile-task-selector .device-profile-task-option{display:flex;grid-template-columns:none;align-items:center;gap:9px;min-width:0;padding:7px 4px;color:var(--ink);font-size:13px;cursor:pointer}.device-profile-task-selector .device-profile-task-option:hover{background:#f3faf8}.device-profile-task-selector .device-profile-task-option.disabled{opacity:.48;cursor:not-allowed}.device-profile-task-selector .device-profile-task-option input{flex:0 0 auto;margin:0}.device-profile-task-selector .device-profile-task-option span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-profile-task-selector .muted{padding:6px 4px;font-size:13px}.billing-rate-mode{display:grid;grid-template-columns:auto 220px;align-items:center;grid-gap:10px;gap:10px;width:max-content;margin:0 0 12px;color:var(--muted);font-size:12px}.billing-rate-mode select{height:39px;border:1px solid var(--line);border-radius:8px;padding:0 10px;color:var(--ink);background:#fff}.billing-rate-table-head{display:flex;align-items:center;gap:12px;margin-bottom:8px}.billing-rate-table-head .billing-rule-labels{flex:1 1}.billing-rule-labels,.billing-rule-row{grid-template-columns:minmax(180px,1.2fr) 180px 140px auto}@media(max-width:800px){.billing-rate-mode{grid-template-columns:1fr;width:100%}.billing-rate-table-head{align-items:flex-start;flex-direction:column}.billing-rate-table-head .billing-rule-labels{display:none}}.billing-rate-table-head{justify-content:space-between;margin-top:4px;color:var(--muted);font-size:13px}.billing-rate-table-wrap{max-height:310px;margin-bottom:4px;border:1px solid var(--line);border-radius:10px}.billing-rate-compact-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}.billing-rate-compact-table th{padding:9px 10px;background:#f5f8f9;color:#64747c;font-size:13px;font-weight:700;text-align:left;white-space:nowrap;border-bottom:1px solid var(--line)}.billing-rate-compact-table td{padding:7px 8px;border-bottom:1px solid #e8eef0;background:#fff}.billing-rate-compact-table tbody tr:last-child td{border-bottom:0}.billing-rate-compact-table th:first-child{width:42%}.billing-rate-compact-table th:nth-child(2){width:28%}.billing-rate-compact-table th:nth-child(3){width:18%}.billing-rate-compact-table .billing-rate-action{width:104px;text-align:center}.billing-rate-compact-table input{width:100%;height:38px;min-width:0;border:1px solid #d7e1e5;border-radius:8px;padding:0 10px;color:var(--ink);background:#fff;font:inherit}.billing-rate-compact-table input:focus{outline:2px solid #0d948833;border-color:#0d9488}.billing-rate-compact-table input:disabled{background:#f2f5f6;color:#9aa7ac;cursor:not-allowed}.billing-rate-compact-table td.billing-rate-action{padding:7px;text-align:center}.billing-rate-compact-table .compact-action{min-width:64px;padding:8px 9px}@media(max-width:620px){.billing-rate-table-wrap{overflow-x:auto}.billing-rate-compact-table{min-width:610px}}.task-billing-hint{padding:10px 12px;border:1px solid #bfe8dc;border-radius:8px;background:#f1fbf8;color:#365159;font-size:12px;line-height:1.55}.task-billing-module{grid-column:1/-1;display:grid;grid-gap:12px;gap:12px;margin-top:2px;padding:15px;border:1px solid #bfe8dc;border-radius:10px;background:#fbfefd}.task-billing-module-head{display:flex;align-items:baseline;gap:10px}.task-billing-module-head h3{margin:0;color:var(--ink);font-size:15px}.task-billing-module-head span{color:var(--muted);font-size:12px}.task-billing-module-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:10px 16px;gap:10px 16px}.task-billing-module .task-billing-hint{grid-column:1/-1}@media(max-width:900px){.task-billing-module-grid{grid-template-columns:1fr 1fr}}@media(max-width:620px){.task-billing-module-grid{grid-template-columns:1fr}.task-billing-module-head{align-items:flex-start;flex-direction:column;gap:3px}}.task-billing-template-row{display:grid;grid-template-columns:repeat(2,minmax(0,300px));grid-gap:14px;gap:14px}.task-billing-field-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:10px 14px;gap:10px 14px}.task-billing-field-grid>label{min-width:0}@media(max-width:1000px){.task-billing-field-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.task-billing-field-grid,.task-billing-template-row{grid-template-columns:1fr}}.inventory-toolbar{align-items:center;position:relative}.inventory-type-tree{position:relative;min-width:300px}.inventory-tree-trigger{width:100%;display:flex;align-items:center;gap:10px;justify-content:space-between;cursor:pointer}.inventory-tree-trigger b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}.inventory-tree-panel{position:absolute;top:45px;left:0;z-index:12;width:min(380px,80vw);max-height:420px;overflow:auto;padding:9px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 14px 35px #10282b26}.inventory-tree-panel button{width:100%;border:0;background:transparent;text-align:left;padding:8px 10px;border-radius:7px;color:#47575e;cursor:pointer}.inventory-tree-panel button.active,.inventory-tree-panel button:hover{background:#e3f6f0;color:#087361}.inventory-tree-panel button.category{font-weight:700}.inventory-tree-panel button.type{padding-left:30px}.inventory-tree-branch{border-top:1px solid #edf1f2;margin-top:4px;padding-top:4px}.inventory-status-filter{min-width:220px}.inventory-counts{margin-left:auto;display:flex;gap:12px;align-items:center;color:var(--muted);font-size:13px;white-space:nowrap}.inventory-counts b{color:var(--ink)}.inventory-table td.inventory-check,.inventory-table th.inventory-check{width:44px;text-align:center;padding-left:6px;padding-right:6px}.inventory-check input{width:16px;height:16px;accent-color:var(--teal);cursor:pointer}.inventory-check input:disabled{cursor:not-allowed;opacity:.35}@media(max-width:900px){.inventory-type-tree{min-width:240px}.inventory-status-filter{min-width:190px}.inventory-counts{width:100%;margin-left:0}.inventory-toolbar .search{flex:1 1}}.auth-card{width:min(540px,94vw)}.auth-card h1{margin:0}.auth-card .auth-subtitle{margin:-6px 0 4px;color:var(--muted);font-size:13px;line-height:1.55}.auth-tabs{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:6px;gap:6px;padding:4px;background:#eef3f3;border-radius:9px}.auth-tabs button{border:0;border-radius:7px;padding:9px;background:transparent;color:var(--muted);cursor:pointer;font-weight:650}.auth-tabs button.active{background:#fff;color:var(--teal);box-shadow:0 1px 4px #10282b1c}.auth-code-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:8px;gap:8px}.auth-code-row .btn{white-space:nowrap}.auth-links{display:flex;justify-content:space-between;gap:12px;font-size:13px}.auth-links a{color:var(--teal);font-weight:650}.auth-message{background:#e3f6f0;color:#087361;border:1px solid #bfe8dc;border-radius:8px;padding:10px 12px;font-size:13px}.auth-form-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.auth-form-grid .full{grid-column:1/-1}@media(max-width:620px){.auth-form-grid{grid-template-columns:1fr}.auth-form-grid .full{grid-column:auto}.auth-code-row{grid-template-columns:1fr}.auth-links{flex-direction:column}}.auth-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.auth-grid .full{grid-column:1/-1}@media(max-width:620px){.auth-grid{grid-template-columns:1fr}.auth-grid .full{grid-column:auto}}.protocol-definition-table{font-size:12px}.protocol-definition-table th{position:relative;padding:7px 6px;border-right:1px solid var(--line);overflow:visible}.protocol-definition-table td{height:38px;padding:3px 4px;border-right:1px solid #edf1f2;overflow:hidden;text-overflow:ellipsis}.protocol-definition-table td:last-child,.protocol-definition-table th:last-child{border-right:0}.protocol-definition-table .field{height:31px;min-width:0;width:100%;padding:0 6px;border-radius:5px;font-size:12px}.protocol-definition-table .btn{height:31px;padding:5px 8px;border-radius:5px;font-size:12px}.protocol-column-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:4px}.protocol-column-resizer{position:absolute;z-index:4;top:0;right:-4px;width:8px;height:100%;cursor:col-resize;touch-action:none}.protocol-column-resizer:after{content:"";position:absolute;top:5px;bottom:5px;left:3px;width:2px;border-radius:2px;background:transparent}.protocol-column-resizer:hover:after{background:var(--teal)}.profile-buffer-detail-table{table-layout:fixed;font-size:12px}.profile-buffer-detail-table th{padding:8px 7px;vertical-align:top;white-space:normal;line-height:1.25;overflow:hidden}.profile-buffer-detail-table td{padding:9px 7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-buffer-detail-table .profile-buffer-index{width:44px;padding-left:7px;padding-right:5px}.profile-buffer-column-name{font-weight:700;overflow-wrap:anywhere;word-break:break-word}.profile-buffer-column-meta{margin-top:4px;font-weight:400;color:var(--muted);line-height:1.25}.profile-buffer-column-obis,.profile-buffer-column-unit{white-space:nowrap}.profile-buffer-column-unit{margin-top:2px}.task-curve-card-head{display:flex;align-items:flex-start;justify-content:space-between}.task-curve-head-actions{flex-wrap:wrap}@media(max-width:760px){.task-curve-meter-search,.task-curve-toolbar>label,.task-curve-toolbar>label .field,.task-curve-toolbar>select{width:100%;min-width:0}.task-curve-toolbar>label{justify-content:space-between}.task-curve-card-head{flex-wrap:wrap}.task-curve-head-actions{width:100%;justify-content:flex-start;margin-left:0}.task-curve-actions{width:auto;flex-wrap:wrap}.task-trend-chart{height:340px}.task-curve-refresh-status{white-space:normal}}.task-curve-filter-card{padding:16px 20px}.task-curve-toolbar{margin:0;align-items:center}.task-curve-toolbar>label{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}.task-curve-toolbar>label .field{min-width:155px}.task-curve-toolbar>select{min-width:300px}.task-curve-meter-search{min-width:250px;flex:1 1 300px}.task-curve-refresh-status{display:flex;align-items:center;gap:6px;min-height:39px;font-size:12px;color:var(--muted);margin-left:auto;white-space:nowrap}.task-curve-refresh-dot{width:8px;height:8px;border-radius:50%;background:#a9b4b8;box-shadow:0 0 0 3px #edf1f2}.task-curve-refresh-status.live{color:#087361}.task-curve-refresh-status.live .task-curve-refresh-dot{background:#25b384;box-shadow:0 0 0 3px #dcf6ec}.task-curve-card{padding:18px 20px}.task-curve-card-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;grid-gap:18px;gap:18px;margin-bottom:10px}.task-curve-title-block{display:grid;justify-items:start;grid-gap:4px;gap:4px;min-width:0}.task-curve-card-head h2{font-size:18px}.task-curve-meta{font-size:12px}.task-curve-head-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-left:auto;flex-wrap:nowrap;min-width:0}.task-curve-actions{flex:0 0 auto;margin:0}.task-curve-actions .btn{display:inline-flex;align-items:center;gap:6px}.task-curve-actions a.disabled{pointer-events:none;opacity:.5}.task-curve-series{display:flex;align-items:center;gap:8px 18px;flex-wrap:wrap;padding:8px 0 3px}.task-curve-series label{display:flex;align-items:center;gap:6px;max-width:320px;font-size:12px;color:#4d6169;cursor:pointer}.task-curve-series label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-curve-series input{accent-color:var(--teal)}.task-trend-chart{height:390px;cursor:-webkit-grab;cursor:grab;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.task-trend-chart.dragging{cursor:-webkit-grabbing;cursor:grabbing}.task-trend-chart .recharts-brush{cursor:default}.task-curve-drag-hint{text-align:center;font-size:12px;margin-top:5px}.task-curve-detail-modal{width:min(1500px,96vw);height:min(860px,92vh);max-height:92vh;display:flex;flex-direction:column;overflow:hidden}.task-curve-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.task-curve-detail-head h2{margin:0 0 5px}.task-curve-detail-table-wrap{flex:1 1;min-height:0;border:1px solid var(--line);border-radius:8px}.task-curve-detail-table{min-width:max-content;table-layout:auto}.task-curve-detail-table td,.task-curve-detail-table th{max-width:260px;overflow:hidden;text-overflow:ellipsis}.task-curve-detail-table th{position:-webkit-sticky;position:sticky;top:0;z-index:1;white-space:normal;min-width:120px}.task-curve-detail-table td:first-child,.task-curve-detail-table th:first-child{position:-webkit-sticky;position:sticky;left:0;z-index:2;background:#fff;min-width:170px}.task-curve-detail-table th:first-child{z-index:3;background:#f8fafb}.task-curve-pagination{display:flex;align-items:center;justify-content:flex-end;gap:9px;padding-top:14px}@media(max-width:980px){.task-curve-refresh-status{width:100%;margin-left:0}}@media(max-width:760px){.task-curve-meter-search,.task-curve-toolbar>label,.task-curve-toolbar>label .field,.task-curve-toolbar>select{width:100%;min-width:0}.task-curve-toolbar>label{justify-content:space-between}.task-curve-card-head{display:flex;flex-wrap:wrap}.task-curve-head-actions{width:100%;justify-content:flex-start;margin-left:0;flex-wrap:wrap}.task-curve-actions{width:auto;flex-wrap:wrap}.task-trend-chart{height:340px}.task-curve-refresh-status{white-space:normal}}.dashboard-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:16px;gap:16px}.dashboard-pie-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:16px;gap:16px;margin-top:16px}.dashboard-pie-card{margin-top:0;padding:18px;min-width:0}.dashboard-pie-card .card-head{margin-bottom:2px}.dashboard-pie-chart{height:205px;position:relative}.dashboard-pie-total{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;text-align:center}.dashboard-pie-total strong{font-size:25px;line-height:1.1;color:var(--ink)}.dashboard-pie-total span{font-size:12px;color:var(--muted);margin-top:4px}.dashboard-pie-legend{display:grid;grid-gap:7px;gap:7px;margin-top:-2px}.dashboard-pie-legend-item{display:grid;grid-template-columns:9px minmax(0,1fr) auto;align-items:center;grid-gap:7px;gap:7px;font-size:12px;color:#52656d}.dashboard-pie-legend-item b{color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.dashboard-pie-legend-dot{width:8px;height:8px;border-radius:50%}@media(max-width:1180px){.dashboard-pie-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.dashboard-pie-grid,.dashboard-summary-grid{grid-template-columns:1fr}.dashboard-pie-chart{height:220px}}.access-decoder-modal{width:min(1500px,98vw)!important;max-width:none!important;max-height:96vh!important;padding:24px 28px}.access-decoder-basic-grid{display:grid;grid-template-columns:minmax(260px,2fr) minmax(260px,1.35fr) minmax(150px,.7fr) auto;grid-gap:14px;gap:14px;align-items:end}.access-decoder-editor-label,.access-decoder-field-label{display:grid!important;grid-template-columns:minmax(0,1fr)!important;grid-gap:7px;gap:7px;width:100%;min-width:0;color:var(--muted);font-size:12px}.access-decoder-editor-label .field,.access-decoder-field-label .field{width:100%!important;min-width:0!important}.access-decoder-enabled{display:flex;align-items:center;gap:9px;min-height:44px;white-space:nowrap}.access-decoder-editor-label{margin-top:18px}.access-decoder-editor-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.access-decoder-editor-heading .btn{font-size:12px}.access-decoder-editor{display:block;height:auto!important;padding:12px 14px!important;font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,monospace;line-height:1.55;resize:vertical;white-space:pre;overflow:auto}.access-decoder-code-editor{width:100%;min-width:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#282c34}.access-decoder-code-editor .cm-editor{height:100%;outline:none}.access-decoder-code-editor .cm-scroller{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.55}.access-decoder-code-editor .cm-gutters{border-right:1px solid #3b4048}.access-decoder-code-editor .cm-focused{outline:2px solid #0d8c7c88;outline-offset:-2px}.access-decoder-parameters-editor{min-height:300px}.access-decoder-source-editor{min-height:480px}.access-decoder-frame-editor{min-height:82px}.access-decoder-test-section{margin-top:18px;border:1px solid var(--line);border-radius:12px;padding:16px}.access-decoder-test-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:18px;gap:18px}@media(max-width:900px){.access-decoder-basic-grid{grid-template-columns:1fr 1fr}.access-decoder-test-grid{grid-template-columns:1fr}}@media(max-width:620px){.access-decoder-modal{padding:18px 16px}.access-decoder-basic-grid{grid-template-columns:1fr}.access-decoder-parameters-editor{min-height:250px}.access-decoder-source-editor{min-height:380px}}.access-decoder-basic-grid{grid-template-columns:minmax(180px,240px) minmax(220px,300px) 120px 150px auto;gap:12px;align-items:start}.access-decoder-basic-grid .access-decoder-enabled{padding-top:27px;align-self:start}@media(max-width:900px){.access-decoder-basic-grid{grid-template-columns:1fr 1fr}}@media(max-width:620px){.access-decoder-basic-grid{grid-template-columns:1fr}}.brand-subtitle{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.brand-version{font-size:11px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.leaflet-image-layer,.leaflet-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane,.leaflet-pane>canvas,.leaflet-pane>svg,.leaflet-tile,.leaflet-tile-container,.leaflet-zoom-box{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-bottom,.leaflet-top{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-pan-anim .leaflet-tile,.leaflet-zoom-anim .leaflet-tile{transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-control,.leaflet-popup-pane{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:grabbing}.leaflet-image-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-image-layer.leaflet-interactive,.leaflet-marker-icon.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline-offset:1px}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{border:2px dotted #38f;background:hsla(0,0%,100%,.5)}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;font-size:.75rem;line-height:1.5}.leaflet-bar{box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:focus,.leaflet-bar a:hover{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px rgba(0,0,0,.4);background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(/_next/static/media/layers.ef6db872.png);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(/_next/static/media/layers-2x.9859cd12.png);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:13px;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(/_next/static/media/marker-icon.d577052a.png)}.leaflet-container .leaflet-control-attribution{background:#fff;background:hsla(0,0%,100%,.8);margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:focus,.leaflet-control-attribution a:hover{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;box-sizing:border-box;background:hsla(0,0%,100%,.8);text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers{box-shadow:none}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-layers{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:13px;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px rgba(0,0,0,.4)}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:transparent}.leaflet-container a.leaflet-popup-close-button:focus,.leaflet-container a.leaflet-popup-close-button:hover{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678,M12=0.70710678,M21=-0.70710678,M22=0.70710678)}.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px rgba(0,0,0,.4)}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before,.leaflet-tooltip-top:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}