:root{--blue:#2468ed;--ink:#183451;--muted:#71849b;--line:#e5edf6;--bg:#f5f8fd}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;color:var(--ink);font-size:14px}header{height:82px;display:flex;justify-content:space-between;align-items:center;padding:0 max(32px,calc((100vw - 1200px)/2));background:white;border-bottom:1px solid var(--line)}a{color:var(--blue);text-decoration:none}.brand{display:flex;gap:13px;align-items:center;font-size:30px}.brand strong{font-size:22px;letter-spacing:2px}.brand span{font-size:13px;letter-spacing:1px;color:var(--muted);border-left:1px solid var(--line);padding-left:15px}nav{display:flex;align-items:center;gap:25px;font-size:12px}.badge{padding:7px 12px;background:#edf4ff;border-radius:20px;color:var(--blue)}main{max-width:1200px;margin:0 auto;padding:44px 0 20px}.intro .eyebrow{font-size:10px;letter-spacing:2.5px;color:var(--blue);font-weight:700}.intro h1{font-size:32px;letter-spacing:-1px;font-weight:600;margin:13px 0}.intro>p:last-child{color:var(--muted);margin-bottom:28px}details{margin-bottom:16px;font-size:12px;color:var(--muted)}summary{cursor:pointer}#auth-form{display:flex;gap:10px;margin:15px 0;align-items:end}#auth-form label{flex:1}label{display:block;font-size:12px;color:var(--muted);margin-bottom:9px}input{font:inherit;color:var(--ink);background:white;border:1px solid #dce5f1;border-radius:7px;outline:none;padding:12px 13px;min-width:0}input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #2468ed12}#token{display:block;width:100%;margin-top:8px}button{border:0;background:var(--blue);color:white;cursor:pointer;font:inherit;font-size:12px;font-weight:600;border-radius:7px;padding:13px 18px;transition:background .15s}button:hover{background:#1855cd}button:disabled{opacity:.45;cursor:not-allowed}.secondary{background:#eaf1fc;color:var(--blue)}.statusbar{display:flex;gap:25px;align-items:center;padding:17px 22px;background:#edf4ff;border:1px solid #dde9fc;border-radius:9px;font-size:12px;margin-bottom:23px}.statusbar>div{display:flex;align-items:center;gap:9px;font-weight:600}.statusbar>span{color:#5b7391}i{height:7px;width:7px;border-radius:50%;background:#a8b9ce;display:inline-block}i.online{background:#2bb38b}.textbutton{background:transparent;color:var(--blue);padding:0;font-size:11px}.textbutton:hover{background:transparent;color:#153d89}#refresh{margin-left:auto}.workspace{display:grid;grid-template-columns:1fr 1.12fr;gap:23px}.panel{background:white;border:1px solid var(--line);border-radius:12px;padding:27px}.section-label{color:#8296ae;font-size:11px;letter-spacing:1px;font-weight:600}.section-label>span{color:var(--blue);margin-right:10px}h2{font-size:21px;letter-spacing:-.4px;font-weight:600;margin:20px 0 26px}.searchbox{display:flex;gap:9px}.searchbox input{width:100%;flex:1;font-size:12px}.searchbox button{white-space:nowrap}.quick{display:flex;align-items:center;gap:8px;margin:16px 0 26px;font-size:10px;color:var(--muted)}.quick button{font-size:10px;padding:5px 9px;background:#f2f6fd;color:#5a789d;font-weight:400}.quick button:hover{color:var(--blue);background:#e6efff}#results{min-height:300px}.empty{padding:70px 0;text-align:center;color:#a1afbf;font-size:12px}.target{width:100%;display:block;text-align:left;border:1px solid var(--line);background:white;padding:17px;margin-bottom:10px;color:var(--ink);border-radius:8px}.target:hover,.target.selected{background:#f4f8ff;border-color:#8db6ff}.target-title{display:flex;justify-content:space-between;align-items:center;font-size:15px}.target-title small{font-size:10px;font-weight:400;color:var(--muted)}.target p{margin:8px 0 0;color:var(--muted);font-size:11px;font-weight:400}.field-heading{display:flex;align-items:center;justify-content:space-between}.field-heading h2{margin-bottom:18px}.field-heading>span{color:#8ba0bb;font-size:10px}.field{height:300px;border:1px solid #d9e7f7;border-radius:7px;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;background-color:#f5f9ff;background-image:linear-gradient(#dae7f850 1px,transparent 1px),linear-gradient(90deg,#dae7f850 1px,transparent 1px);background-size:30px 30px}#field-empty{font-size:12px;color:#8ca4c0}#survey{height:100%;width:100%;object-fit:contain;position:absolute}#sensor{position:absolute;border:1.5px solid #3679f4;box-shadow:0 0 0 1000px #f0f6ff33;width:62%;height:62%;pointer-events:none}#sensor:after{content:'+';position:absolute;color:#3680ef;left:50%;top:50%;transform:translate(-50%,-50%);font-size:18px;font-weight:300}.north,.east{position:absolute;color:#4b79ae;font-size:10px;background:#f5f9ffcc;padding:3px;border-radius:3px}.north{top:10px;left:50%}.east{left:9px;top:50%}.field-source{position:absolute;bottom:9px;right:10px;color:#55759c;font-size:9px;background:#f5f9ffdb;padding:4px 6px;border-radius:3px}.field-data{display:flex;justify-content:space-between;margin-top:20px;gap:12px}.field-data span{display:block;font-size:10px;color:var(--muted);margin-bottom:7px}.field-data strong{font-size:11px;font-weight:500;font-variant-numeric:tabular-nums}.rotation{display:flex;align-items:center;gap:8px;margin-top:18px}.rotation label{margin:0}.rotation input{width:70px;padding:6px 9px;font-size:11px}.rotation>span{color:var(--muted)}.rotation button{margin-left:auto}.note{font-size:10px;line-height:1.8;color:#8b9bb0;margin:14px 0}.controls{display:flex;gap:10px;margin-top:18px}.controls #goto{flex:1}.stop{background:white;color:#dc5c66;border:1px solid #f0cbd1}.stop:hover{background:#fff1f3}.activity{margin-top:23px;padding:20px 26px;border:1px solid var(--line);border-radius:10px;background:white}.activity>div:first-child{display:flex;justify-content:space-between}#log{font-size:11px;color:var(--muted);max-height:140px;overflow:auto;margin-top:13px}#log p{margin:7px 0;line-height:1.6;overflow-wrap:anywhere}#log .error{color:#bd4e5b}#log .success{color:#248b75}footer{display:flex;justify-content:space-between;color:#9aaabd;font-size:9px;letter-spacing:1px;margin-top:24px}.doc{white-space:pre-wrap;font:13px/1.9 Consolas,"Microsoft YaHei",monospace;background:white;padding:30px;border:1px solid var(--line)}@media(max-width:1260px){main{padding:30px 24px 20px}}@media(max-width:760px){header{padding:0 20px;height:70px}.brand span{display:none}nav{gap:12px}.workspace{grid-template-columns:1fr}.intro h1{font-size:27px}.panel{padding:22px}.statusbar{flex-wrap:wrap;gap:12px}#refresh{margin-left:0}.field{height:290px}#results{min-height:120px}.searchbox{flex-wrap:wrap}.field-data{flex-wrap:wrap}footer{gap:20px}}

@media(max-width:760px){header{flex-wrap:wrap;gap:12px;padding:16px 20px;height:auto;min-height:70px}nav{width:100%;justify-content:space-between;gap:8px}}

[hidden]{display:none!important}.tabs{display:flex;gap:8px;margin:0 0 24px}.tabs button{background:#eaf1fc;color:#52759f}.tabs button.active{background:var(--blue);color:#fff}.device-grid,.sequence-grid{display:grid;grid-template-columns:1fr 1fr;gap:23px}.device-actions{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.device-actions>input{flex:1 1 100%;font-size:12px}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px}label>input:not([type=checkbox]),label>select,label>textarea{display:block;width:100%;margin-top:7px}.device select{padding:12px;border:1px solid #dce5f1;border-radius:7px;color:var(--ink);background:#fff}.device-result{background:#f4f8ff;border:1px solid var(--line);border-radius:7px;padding:15px;max-height:260px;overflow:auto;font:11px/1.7 Consolas,'Microsoft YaHei',monospace;white-space:pre-wrap;overflow-wrap:anywhere;min-width:0}.device-grid>.device{min-width:0}.check{display:flex;align-items:center;gap:8px}.sequence-grid{grid-template-columns:.7fr 1.3fr}.sequence-grid>.panel{min-width:0}textarea{padding:12px;border:1px solid #dce5f1;border-radius:7px;font:12px/1.6 Consolas,monospace;resize:vertical;min-height:240px}hr{border:0;border-top:1px solid var(--line);margin:24px 0}.sequence-list{margin-top:20px;font-size:12px;color:var(--muted)}@media(max-width:760px){.device-grid,.sequence-grid{grid-template-columns:1fr}.tabs{width:100%;gap:6px}.tabs button{padding:11px 12px}.formgrid{grid-template-columns:1fr 1fr}}

.device-picker{flex:1 1 100%;margin:0}.device-picker select,.mount-picker select{padding:10px;border:1px solid #dce5f1;border-radius:7px;background:white;color:var(--ink);font:inherit;width:100%}.connection-state{font-size:12px;color:#71849b;line-height:1.7}.connection-state[data-connected=true]{color:#21836a}.operation-feedback{font-size:12px;line-height:1.8;padding:11px 13px;border-radius:7px;background:#eef4ff;color:#416b9c;overflow-wrap:anywhere}.operation-feedback:empty{display:none}.operation-feedback[data-level=success]{background:#eaf8f1;color:#20735b}.operation-feedback[data-level=warning]{background:#fff7e9;color:#916324}.operation-feedback[data-level=error]{background:#fff0f1;color:#ae3747}.notifications{position:fixed;right:24px;top:24px;z-index:10000;display:grid;gap:10px;max-width:min(440px,calc(100vw - 32px));pointer-events:none}.toast{padding:16px 20px;background:#edf4ff;border:1px solid #adc8f4;border-radius:10px;box-shadow:0 8px 28px #19365324;line-height:1.7;font-size:13px;overflow-wrap:anywhere}.toast.success{background:#effaf5;border-color:#9bd4bc;color:#1f6d54}.toast.error{background:#fff1f2;border-color:#e8a3ad;color:#a22b3c}.toast.warning{background:#fff8ec;border-color:#e0c28c;color:#8a5c1b}.statusbar{flex-wrap:wrap}.mount-picker{margin:0;display:flex;gap:8px;align-items:center;flex:1 1 220px}.mount-picker select{max-width:300px;font-size:12px;min-width:0}.statusbar #refresh{margin-left:0}.device-result{max-height:180px}@media(max-width:760px){.notifications{right:16px;top:16px}.mount-picker{flex-basis:100%}.mount-picker select{max-width:none}.device-actions button{font-size:11px;padding:11px 13px}}

.console-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:23px;margin-bottom:24px}.console-grid>.panel{min-width:0}#console-view{height:460px;background:#122033;border-radius:8px;position:relative;overflow:auto;display:flex;align-items:center;justify-content:center;color:#adbed5}#console-image{max-width:100%;max-height:none;transform-origin:center;flex-shrink:0}#console-reticle{position:absolute;inset:0;pointer-events:none;background:linear-gradient(transparent calc(50% - .5px),#83b7ff80 50%,transparent calc(50% + .5px)),linear-gradient(90deg,transparent calc(50% - .5px),#83b7ff80 50%,transparent calc(50% + .5px))}#console-mosaic-view{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin:12px 0}#console-mosaic-view canvas{width:100%;background:#122033}.console-grid canvas{width:100%;height:auto}.console-section-title{padding:20px 0;font-size:18px;font-weight:600;cursor:pointer}.history-list{max-height:320px;overflow:auto}.extra-device{min-width:0}.extra-device>select,.builder-step select,.builder-target select,#console-pane select{max-width:100%;padding:9px;border:1px solid #dce5f1;border-radius:6px;background:white;color:var(--ink)}.sequence-builder{margin-bottom:24px}.builder-target{border:1px solid #cddff8;border-radius:9px;padding:20px;margin:18px 0;background:#f8fbff}.builder-step{padding:14px;background:white;border:1px solid #e3ebf5;border-radius:8px;margin:12px 0}.builder-step .device-actions{margin-top:0}.builder-step .formgrid{grid-template-columns:repeat(4,minmax(0,1fr))}.builder-step input{min-width:0}.builder-target h3{margin-right:auto}.tabs{flex-wrap:wrap}#console-pane>.panel{margin-bottom:24px}.extra-device .formgrid{margin:14px 0}#console-pane .formgrid p{overflow-wrap:anywhere}#console-controls{margin-bottom:24px}@media(max-width:1000px){.console-grid{grid-template-columns:1fr}}@media(max-width:760px){#console-view{height:300px}.builder-step .formgrid{grid-template-columns:1fr 1fr}.builder-target{padding:12px}.builder-step{padding:10px}.tabs button{font-size:11px;padding:10px}.device-actions select{min-width:0}.console-grid{gap:16px}}
