:root{font-family:Microsoft YaHei,PingFang SC,system-ui,sans-serif;color:#172d42;background:#f4f7fa;font-synthesis:none;font-size:15px;font-weight:400;line-height:1.5;--border:#dce5ed;--muted:#667e94;--teal:#008b82}*{box-sizing:border-box}body{margin:0}button,input,select,a.button{font:inherit}button,select,a.button{min-height:38px;border:1px solid #aabdcf;border-radius:4px;color:#18334b;background:#fff;padding:7px 17px;cursor:pointer;text-decoration:none;transition:background .15s,border-color .15s}button:hover,a.button:hover{background:#f0f7f8;border-color:#008b82}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid #51c4c0;outline-offset:2px}input{border:1px solid #bccddb;border-radius:4px;min-height:42px;padding:8px 11px;color:#172d42;background:#fff;min-width:0}h1,h2,h3,p{margin:0}h2{font-size:19px;line-height:1.5;font-weight:650}h3{font-size:15px;font-weight:650}.muted{color:var(--muted)}.good{color:var(--teal)}.small,small{font-size:12px}.primary{background:var(--teal);color:#fff;border-color:var(--teal)}.primary:hover{background:#00776f;color:#fff}.accent-outline{border-color:var(--teal);color:var(--teal)}.text-button{border-color:transparent;background:transparent;color:var(--teal);padding:6px 8px;white-space:nowrap}.app{min-height:100vh;display:grid;grid-template-columns:216px 1fr}.sidebar{background:#19334b;color:#fff;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;width:216px;z-index:2}.sidebar h1{font-size:23px;line-height:1.4;padding:24px 20px 29px;white-space:nowrap}.sidebar button{background:transparent;color:#e9f2fa;display:flex;align-items:center;gap:17px;width:100%;border:0;border-radius:0;padding:20px 24px;text-align:left;font-size:17px;border-left:5px solid transparent}.sidebar button:hover{background:#26465f}.sidebar button.active{background:#105e6b;border-left-color:#11b6b2;font-weight:600}.sidebar .manage-nav{margin-top:auto;padding-bottom:30px}.workspace{grid-column:2;min-width:0;padding:18px 24px 22px}header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px;gap:16px}header h1{font-size:30px;line-height:1.3;font-weight:700}header p{color:#46627a;font-size:17px;margin-top:5px}.header-actions{display:flex;gap:12px;padding-top:5px}.panel{background:#fff;border:1px solid var(--border);border-radius:3px}.overview{margin-bottom:14px}.device-line{display:flex;gap:20px;align-items:center;padding:13px 17px;min-height:68px}.device-line label{font-size:17px;font-weight:600;white-space:nowrap}.device-line select{min-width:160px;max-width:50%;height:43px;padding:6px 13px}.connection{display:flex;align-items:center;gap:9px;font-size:16px;white-space:nowrap}.connection i{width:11px;height:11px;border-radius:50%;background:currentColor}.reconnecting{color:#987116;font-size:13px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--border);padding:23px 0 24px}.metrics>div{display:flex;flex-direction:column;align-items:center;gap:5px;border-right:1px solid var(--border);padding:0 8px}.metrics>div:last-child{border:0}.metrics span{font-size:15px}.metrics strong{font-size:30px;line-height:1.4;font-weight:650;white-space:nowrap;font-variant-numeric:tabular-nums}.metrics strong.record-status{font-size:27px}.plot-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:10px;align-items:stretch}.plot-panel{position:relative;min-width:0;overflow:hidden}.panel-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 16px 0}.panel-toolbar>div{display:flex;align-items:center;gap:10px}.panel-toolbar label{font-size:13px}.panel-toolbar select{min-height:32px;padding:4px 10px;min-width:92px}.radar{display:block;width:100%;height:auto;min-height:380px;margin-top:15px;max-height:650px}.radar text{font-family:inherit;fill:#17334e;font-size:15px}.radar g text[fill=white]{fill:#fff}.target-panel{padding:12px 15px 14px}.target-panel>h2{padding:0 4px 9px}.target-row{display:grid;grid-template-columns:32px 1fr;gap:11px;border-top:1px solid var(--border);padding:12px 2px 14px}.slot{display:grid;place-content:center;width:29px;height:29px;border-radius:50%;color:#fff;font-size:17px;font-weight:600}.target-row h3{margin:3px 0 5px}.target-row dl,.health dl{display:grid;grid-template-columns:auto 1fr;column-gap:8px;row-gap:2px;margin:0;font-size:14px}.target-row dt,.health dt{white-space:nowrap}.target-row dd,.health dd{margin:0;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.health{border-top:1px solid var(--border);padding:10px 4px 0}.health h2{margin-bottom:5px}.health dl{font-size:13px}.plot-empty{position:absolute;top:43%;left:15%;right:15%;text-align:center;background:#ffffffed;border:1px solid #dce5ed;padding:18px 14px;font-size:18px;color:#49657c;box-shadow:0 6px 25px #17334e08;border-radius:3px}.plot-empty small{display:block;margin-top:6px;font-size:13px}footer{display:flex;justify-content:space-between;gap:15px;font-size:12px;color:#667e94;padding:11px 16px 0}.notice{background:#fff8e9;border-left:3px solid #cc9a42;padding:10px 14px;margin-top:12px;font-size:13px}.error{color:#b64230;margin:10px 0;font-size:14px}.modal-shade{position:fixed;inset:0;z-index:10;background:#122b4259;display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(2px)}.modal{width:590px;max-height:90vh;overflow:auto;background:#fff;border-radius:6px;padding:24px;box-shadow:0 20px 80px #102c4333}.modal-head{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);padding-bottom:12px;margin-bottom:18px}.modal form{display:grid;gap:16px}.modal label,.login-box label,.history-toolbar label{display:flex;flex-direction:column;gap:6px;font-size:14px}.modal label input{width:100%}.modal .registered{margin-top:22px;border-top:1px solid var(--border);padding-top:15px}.registered>div{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--border);font-size:14px}.registered small{display:block;color:#667e94}.registered span:last-child{text-align:right}.registered p{margin-top:10px}.registration-result{display:grid;gap:13px}.registration-result h3{color:var(--teal)}.registration-result p{font-size:13px;overflow-wrap:anywhere}.registration-result button{justify-self:start}.registration-result input{font-family:Consolas,monospace;font-size:13px}.login-page{display:grid;place-items:center;min-height:100vh;padding:24px;background:#f4f7fa}.login-box{width:420px;max-width:100%;background:#fff;border:1px solid var(--border);border-top:4px solid var(--teal);padding:35px 30px;border-radius:5px;box-shadow:0 15px 60px #19334b0b}.login-box>svg{color:var(--teal);width:32px;height:32px;margin-bottom:12px}.login-box h1{font-size:27px;margin-bottom:12px}.login-box>p{font-size:14px;color:#667e94}.login-box form{display:grid;gap:16px;margin:24px 0}.login-box .small{font-size:12px;line-height:1.8}.loading{display:grid;place-content:center;height:100vh;color:#667e94}.history-toolbar{display:flex;align-items:end;gap:14px;flex-wrap:wrap;padding:16px;margin-bottom:14px}.history-toolbar input{font-size:14px;max-width:100%}.playback{display:flex;align-items:center;gap:14px;padding:8px 18px}.playback input{flex:1;min-width:40px;accent-color:var(--teal);padding:0}.playback span{font-size:13px;white-space:nowrap;color:#667e94}.history-time{font-size:12px;text-align:center;color:#667e94;padding:6px 10px 14px}.footnote{font-size:12px;color:#667e94;padding:12px 0}@media(min-width:1500px){.workspace{padding:20px 28px}.plot-layout{grid-template-columns:minmax(0,1fr) 320px}.target-row{padding-top:15px;padding-bottom:18px}.target-row dl{font-size:15px}.radar{max-height:720px}.metrics{padding:25px 0}.sidebar{width:230px}.app{grid-template-columns:230px 1fr}}@media(max-width:1160px){.app{grid-template-columns:184px 1fr}.sidebar{width:184px}.sidebar h1{font-size:20px;padding-left:16px}.sidebar button{padding-left:17px;font-size:16px;gap:12px}.workspace{padding:16px}.plot-layout{grid-template-columns:minmax(0,1fr) 258px}.target-panel{padding:10px}.target-row{grid-template-columns:27px 1fr;gap:7px}.target-row dl{font-size:12px}.radar{min-height:350px}.metrics strong{font-size:26px}.metrics strong.record-status{font-size:23px}.panel-toolbar{flex-wrap:wrap}.metrics span{font-size:13px}}@media(max-width:850px){.app{display:block}.sidebar{position:relative;width:100%;height:auto;display:grid;grid-template-columns:1fr auto;background:#19334b}.sidebar h1{padding:14px 18px;font-size:20px}.sidebar nav{grid-row:2;grid-column:1/-1;display:flex;border-top:1px solid #ffffff15}.sidebar nav button{justify-content:center;width:50%;padding:12px;border-left:0;border-bottom:3px solid transparent;gap:9px}.sidebar nav button.active{border-bottom-color:#13bdb5}.sidebar .manage-nav{width:auto;font-size:0;margin:0;padding:14px 18px;gap:0}.sidebar .manage-nav svg{width:23px;height:23px}.workspace{padding:16px}.plot-layout{grid-template-columns:1fr}.target-panel{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 12px}.target-panel>h2{grid-column:1/-1}.target-row{padding:12px 0;grid-template-columns:24px 1fr;gap:7px}.slot{width:24px;height:24px;font-size:14px}.target-row dl{font-size:12px;grid-template-columns:1fr}.target-row dt{color:#667e94;font-size:11px}.target-row dd{text-align:left;margin-bottom:5px}.health{grid-column:1/-1;display:flex;justify-content:space-between;gap:12px}.health h2{font-size:16px}.health dl{display:flex;flex-wrap:wrap;gap:5px 10px;justify-content:end}.health dd{margin-right:9px}.radar{min-height:0}.metrics{padding:18px 0}.metrics strong{font-size:24px}.metrics strong.record-status{font-size:21px}footer{padding:12px 0;display:block}footer span{display:block;margin-bottom:4px}.history-toolbar{gap:12px}.panel-toolbar{flex-wrap:nowrap}header h1{font-size:26px}header p{font-size:15px}}@media(max-width:490px){.workspace{padding:12px}header{align-items:center;margin-bottom:13px}header h1{font-size:24px}header p{font-size:12px}.header-actions{gap:7px}button,.header-actions button{padding:7px 10px;font-size:13px;min-height:35px}.device-line{padding:12px;gap:11px;flex-wrap:wrap}.device-line label{font-size:14px}.device-line select{min-width:0;flex:1;max-width:61%;font-size:13px}.connection{font-size:13px;gap:5px}.connection i{width:8px;height:8px}.metrics{grid-template-columns:1fr 1fr;row-gap:17px;padding:16px 0}.metrics>div:nth-child(2){border:0}.metrics strong{font-size:26px}.metrics span{font-size:12px}.metrics strong.record-status{font-size:23px}.panel-toolbar{padding:12px 10px 0;gap:5px}.panel-toolbar h2{font-size:15px}.panel-toolbar>div{gap:6px}.panel-toolbar label{font-size:11px}.panel-toolbar select{min-width:62px;font-size:12px;padding:3px 6px;min-height:30px}.panel-toolbar .text-button{font-size:12px;padding:4px;min-height:30px}.radar{margin-top:8px}.radar text{font-size:17px}.target-panel{padding:12px 10px;gap:0 8px}.target-panel>h2{font-size:17px}.target-row{gap:6px;grid-template-columns:20px minmax(0,1fr)}.target-row h3{font-size:13px;margin-top:0}.slot{width:20px;height:20px;font-size:12px}.target-row dd{font-size:11px;white-space:normal;overflow-wrap:anywhere}.health{display:block}.health dl{justify-content:start;margin-top:8px;font-size:12px}.plot-empty{left:12%;right:12%;top:35%;padding:12px 8px;font-size:15px}.plot-empty small{font-size:11px}.modal{padding:18px}.modal-shade{padding:12px}.modal-head h2{font-size:19px}.history-toolbar label,.history-toolbar input{width:100%}.playback{gap:8px;padding:8px 12px}.health h2{font-size:16px}.history-time{font-size:11px}.reconnecting{font-size:12px}}.danger{color:#fff;background:#b64230;border-color:#b64230}.danger:hover{color:#fff;background:#973626;border-color:#973626}.danger-outline{color:#b64230;border-color:#caa49d;background:#fff}.danger-outline:hover{color:#973626;border-color:#b64230;background:#fff3f0}.registered-device{align-items:center}.registered-identity{min-width:0;flex:1;overflow-wrap:anywhere}.registered-status{text-align:right;flex-shrink:0}.registered-device button{flex-shrink:0}.delete-confirm{display:grid;gap:16px}.delete-confirm p{overflow-wrap:anywhere}.confirmation-actions{display:flex;justify-content:flex-end;gap:12px}.registration-result strong{overflow-wrap:anywhere}@media(max-width:490px){.registered-device{flex-wrap:wrap}.registered-status{font-size:12px}.registered-device .registered-identity{flex-basis:55%}.registered-device button{margin-left:auto}.confirmation-actions button{min-width:90px}}
