*{box-sizing:border-box}
.browser-capture-video{position:fixed;width:1px;height:1px;right:0;bottom:0;opacity:.001;pointer-events:none;z-index:2}
.image-centre-guide{position:absolute;left:50%;top:50%;width:34px;height:34px;transform:translate(-50%,-50%);pointer-events:none;color:#ffe58f;z-index:1}.centre-ring{position:absolute;left:9px;top:9px;width:16px;height:16px;border:2px solid currentColor;border-radius:50%;filter:drop-shadow(0 0 1px #111)}.centre-cross{position:absolute;background:currentColor;box-shadow:0 0 2px #111}.centre-cross.horizontal{left:0;top:16px;width:34px;height:2px}.centre-cross.vertical{left:16px;top:0;width:2px;height:34px}.centre-caption{position:absolute;top:40px;left:50%;transform:translateX(-50%);white-space:nowrap;padding:3px 6px;border-radius:3px;background:#152431e8;font-size:10px}.master-guide-status{position:absolute;right:10px;bottom:10px;pointer-events:none;padding:5px 7px;border-radius:3px;background:#152431e8;color:#d9e3eb;font-size:10px}.master-guide-status.taught{color:#f6a3ec}
.axis-convention{position:absolute;top:10px;left:10px;display:flex;gap:12px;align-items:center;padding:7px 9px;border-radius:4px;background:#152431e8;font-size:10px;color:#d4e0e9;pointer-events:none}.axis-convention b{font:600 13px Consolas,monospace}.axis-convention .axis-x{color:#ff8888}.axis-convention .axis-y{color:#82c3ff}
#modelMode{min-width:0;max-width:52%;border:1px solid #dce5e8;border-radius:4px;background:#f7fafb;color:#49616f;font-size:10px;padding:5px}.cap-select{position:absolute;bottom:12px;left:12px;border:1px solid #cddcda;border-radius:5px;background:#f7fafbed;color:#315c50;padding:8px 12px;font-size:11px;cursor:pointer}.cap-select:disabled{opacity:.5}
/* Keep the complete coordinate/status card visible beside the camera. */
.xyz.xy{grid-template-columns:repeat(2,1fr)}.master-controls{display:flex;gap:5px;margin:0 0 12px}.master-controls select,.master-controls button{min-width:0;border:1px solid #dce5e8;border-radius:4px;background:#f7fafb;font-size:9px;color:#49616f;padding:6px 5px}.master-controls select{flex:1}.master-controls button span{font-size:8px;color:#8497a1}.master-controls button:disabled{opacity:.4;cursor:default}.coordinates .distance+.distance{margin-top:8px}
.body-geometry{margin-top:12px;padding-top:10px;border-top:1px solid #e8edf0}.axis-row{display:flex;justify-content:space-between;font-size:9px;color:#81909c}.axis-row b{font:10px Consolas,monospace;color:#45616d}.body-geometry .robot-xyz{padding:8px 0}.body-geometry .robot-xyz b{font-size:14px;margin-left:3px}.coordinates .robot-block{margin-top:10px;padding-top:10px}
.xyz.xy.valid>div{background:#edf6ef;border-color:#cfe2d4}.xyz.xy strong{font-variant-numeric:tabular-nums}.calibration.ready{color:#356c45;background:#eef7ef;border-color:#cce3ce}#masterStatus{min-height:12px}#coordinateFrame{line-height:1.35}
:root{color-scheme:light;--ink:#223343;--muted:#81909c;--border:#dfe6ea;--green:#bee18d}
.help-button{border:1px solid #dce5e8;border-radius:4px;background:#f7fafb;color:#49616f;font-size:9px;padding:5px 6px;cursor:pointer}
.last-transmission{border-top:1px solid #e8edf0;margin-top:8px;padding-top:7px;display:grid;gap:3px;font-size:9px;color:#667d8a;min-width:0}.sent-heading{color:#536d7c;font-weight:600}.last-transmission strong{font:11px Consolas,monospace;color:#486c60;overflow-wrap:anywhere}.last-transmission span{font-size:8px;line-height:1.4;color:#8497a1}.last-transmission.ng strong{color:#9a603e}.last-transmission.history strong,.last-transmission.unknown strong{color:#8a9299}
#operatorHelp{width:min(620px,92vw);max-height:84vh;border:1px solid #d8e2e7;border-radius:9px;padding:20px 22px;color:#304858;background:#fff;box-shadow:0 12px 50px #162b3c40;font-size:12px;line-height:1.6}#operatorHelp::backdrop{background:#172a3966}.help-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.help-heading h2{font-size:16px;margin:0}.help-heading button{border:1px solid #dce5e8;background:#f7fafb;border-radius:4px;padding:6px 9px;color:#49616f;cursor:pointer}#operatorHelp p{color:#5b7484}#operatorHelp dt{font-weight:600;margin-top:14px}#operatorHelp dd{margin:4px 0 0;color:#6d818e}
.browser-rgb-controls{display:flex;align-items:center;gap:5px}.browser-rgb-controls button,.browser-rgb-controls select{min-width:0;border:1px solid #dce5e8;border-radius:4px;background:#f0f6f1;color:#315c50;font-size:10px;padding:6px;white-space:nowrap}.browser-rgb-controls select{max-width:190px}.rgb-only .master-controls,.rgb-only .fixed-view-label,.rgb-only .camera-delta-row,.rgb-only .body-geometry{display:none}.rgb-only aside{grid-template-rows:minmax(0,1fr)!important}.rgb-only #modelMode{max-width:42%}.rgb-only .camera-panel>.panel-header{flex-wrap:wrap;height:auto;min-height:46px;padding-top:6px;padding-bottom:6px}.rgb-only .coordinates .coordinate-body{justify-content:center}
body{margin:0;height:100vh;height:100dvh;overflow:hidden;display:flex;flex-direction:column;background:#edf1f4;color:var(--ink);font:13px 'Segoe UI','Malgun Gothic',Arial,sans-serif;-webkit-font-smoothing:antialiased}
button{font:inherit;cursor:pointer;touch-action:manipulation}button:focus-visible{outline:3px solid #66aade;outline-offset:2px}[hidden]{display:none!important}
.topbar{flex:none;height:68px;padding:0 24px;display:flex;align-items:center;gap:12px;background:#fff;border-bottom:1px solid var(--border)}
.brand{display:flex;align-items:center;gap:9px;letter-spacing:1.5px;font-size:17px;font-weight:750;margin-right:auto;white-space:nowrap}.brand-mark{width:30px;height:32px;display:grid;place-items:center;background:#223747;color:var(--green);border-radius:5px;font-size:24px}.brand small{font-size:10px;letter-spacing:2px;color:#8b9aa6;font-weight:500;margin-left:6px}
.source-tabs{display:flex;background:#edf1f4;padding:3px;border-radius:7px}.source-tabs button{border:0;border-radius:5px;background:transparent;color:#7c8995;padding:8px 14px;font-size:11px}.source-tabs button span{margin-left:4px;font-size:10px}.source-tabs button.selected{background:#fff;color:#264453;box-shadow:0 1px 4px #19303f16}
.icon-button{background:#fff;border:1px solid var(--border);border-radius:5px;height:32px;width:32px;color:#6d8190}.connection{font-size:10px;color:#9b7d43;min-width:135px;text-align:right}.connection.live{color:#50834c}.connection.replay{color:#557ca3}
main{flex:1;min-height:0;padding:18px 24px;display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:16px}.panel{min-height:0;min-width:0;background:#fff;border:1px solid var(--border);border-radius:9px;overflow:hidden;display:flex;flex-direction:column}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:6px;height:46px;flex:none;padding:0 16px;border-bottom:1px solid #e9eef1}.panel-header h1,.panel-header h2{font-size:13px;font-weight:650;margin:0;white-space:nowrap}.panel-header h1 span,.panel-header h2 span{font-size:10px;font-weight:400;color:var(--muted);margin-left:7px}.small-label{font-size:9px;color:#94a2ad;white-space:nowrap}
.viewport{flex:1;min-height:0;position:relative;background:#131d28;overflow:hidden;display:flex;align-items:center;justify-content:center}.viewport img{width:100%;height:100%;object-fit:contain;position:absolute;inset:0}.empty-state{text-align:center;padding:14px;color:#a4b5c6}.camera-icon{font-size:37px;color:#657c8e;margin-bottom:15px}.empty-state h2{font-size:16px;font-weight:500;margin:8px 0;color:#d1dce5}.empty-state p{font-size:11px;line-height:1.8;margin:9px 0 18px}.empty-state button{border:1px solid #4a6370;color:#c6dea9;background:#233642;border-radius:5px;padding:9px 14px;font-size:11px}.empty-state button span{font-size:10px;margin-left:5px;color:#a1b29d}.replay-badge{position:absolute;right:12px;top:12px;background:#203441dc;color:#cae0ee;padding:6px 9px;border:1px solid #536b7b;border-radius:4px;font-size:9px;letter-spacing:.4px}
.camera-footer{flex:none;min-height:40px;display:flex;align-items:center;gap:20px;padding:0 16px;font-size:10px;color:var(--muted)}.camera-footer b{font:12px Consolas,monospace;color:#45616d;font-weight:500}.camera-footer>span:last-child{margin-left:auto;font:9px Consolas,monospace;color:#a2afb8}
aside{display:grid;min-height:0;min-width:0;grid-template-rows:minmax(140px,1fr) minmax(382px,1.35fr);gap:16px}.depth-empty{text-align:center;color:#758b9d;font-size:10px;line-height:1.9}.depth-empty>span{font-size:35px;color:#4e6d80}.depth-empty p{margin:5px}.depth-footer{height:27px;flex:none;display:flex;align-items:center;gap:10px;padding:0 14px;font-size:8px;color:#84949f}.depth-footer i{flex:1;height:3px;border-radius:3px;background:linear-gradient(90deg,#302076,#259be8,#5ee88a,#efcf42,#b72213)}
.coordinate-body{padding:16px;flex:1;display:flex;flex-direction:column;justify-content:center}.coordinate-label{font-size:11px;font-weight:550;color:#41596b}.coordinate-label>span{display:block;font-size:9px;font-weight:400;color:#93a1ae;margin-top:3px}.xyz{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:13px 0 10px}.xyz>div{background:#f0f5f4;border:1px solid #e1ebe7;border-radius:5px;padding:10px 8px}.xyz span{display:block;color:#819b91;font-size:9px;margin-bottom:7px}.xyz strong{font:22px Consolas,monospace;letter-spacing:-1px;color:#315c50}.distance{display:flex;justify-content:space-between;font-size:10px;color:#82949c}.distance b{color:#537565;font:11px Consolas,monospace;font-weight:400}.surface-note{font-size:8px;color:#98a3ab;margin:8px 0 0;line-height:1.5}.robot-block{margin-top:16px;padding-top:14px;border-top:1px solid #e8edf0}.robot-xyz{display:flex;justify-content:space-between;gap:12px;padding:12px 1px;color:#91a1ac;font:10px Consolas,monospace}.robot-xyz b{font-size:17px;color:#899caa;margin-left:7px;font-weight:400}.calibration{font-size:9px;color:#9b7a3f;background:#faf6ed;border:1px solid #ece2cf;border-radius:4px;padding:6px 8px;text-align:center}.setup-note{font-size:8px;color:#a4afb8;margin:6px 0 0;text-align:center}
footer{flex:none;min-height:38px;padding:0 24px 8px;display:flex;align-items:center;gap:13px;font-size:9px;color:#8d9ca8}footer i{font-style:normal;margin:0 6px;color:#bbc5cd}footer em{font-size:8px;font-style:normal;color:#a08d6e;margin-left:9px}#captureNote{margin-left:auto;font-size:9px;white-space:nowrap}.replay-controls{display:flex;align-items:center;gap:5px;margin-left:auto}.replay-controls button{border:1px solid #d6e0e6;background:#f9fbfc;border-radius:4px;color:#647e91;height:25px;min-width:27px;font-size:13px}.replay-controls span{font:9px Consolas,monospace;margin-left:5px;min-width:50px}#toast{position:fixed;bottom:45px;left:50%;transform:translateX(-50%);background:#243c4c;color:#eff6fa;border-radius:6px;padding:12px 18px;max-width:90%;font-size:11px;z-index:3}
@media(max-width:1000px){main{grid-template-columns:minmax(0,1fr) 290px;padding:14px 18px;gap:12px}.topbar{padding:0 18px}aside{gap:12px}.coordinate-body{padding:13px}.xyz strong{font-size:20px}.camera-footer{gap:12px;padding:0 12px}.camera-footer>span:last-child{display:none}.connection{min-width:0}footer{padding-left:18px;padding-right:18px}footer em{display:block;margin:2px 0 0}}
@media(max-height:700px) and (min-width:761px){.topbar{height:55px}main{padding-top:12px;padding-bottom:12px}aside{grid-template-rows:minmax(95px,1fr) minmax(332px,1.4fr);gap:12px}.panel-header{height:38px}.coordinate-body{padding:10px 14px}.xyz{margin:8px 0}.xyz>div{padding:7px 8px}.robot-block{margin-top:10px;padding-top:10px}.robot-xyz{padding:8px 0}.depth-footer{height:21px}footer{min-height:30px}}
@media(max-width:760px){.topbar{height:74px;display:grid;grid-template-columns:1fr auto 30px;gap:5px 8px;padding:9px 12px}.brand{font-size:14px;gap:6px}.brand-mark{width:25px;height:27px;font-size:20px}.brand small{display:none}.source-tabs button{font-size:10px;padding:7px 8px}.source-tabs button span{font-size:9px}.connection{grid-column:1/-1;font-size:9px;text-align:right}.icon-button{width:29px;height:29px}main{display:flex;flex-direction:column;padding:10px;gap:10px}.camera-panel{flex:1.2}.panel-header{height:36px;padding:0 11px}.panel-header h1,.panel-header h2{font-size:11px}.panel-header h1 span,.panel-header h2 span{font-size:9px;margin-left:4px}.camera-footer{min-height:29px;font-size:9px;gap:14px}.camera-footer b{font-size:10px}aside{flex:1;min-height:260px;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);grid-template-rows:1fr;gap:10px}.coordinate-body{padding:10px}.coordinate-label{font-size:9px}.coordinate-label>span{font-size:8px}.xyz{gap:4px;margin:9px 0 8px}.xyz>div{padding:7px 5px}.xyz span{font-size:8px;margin-bottom:4px}.xyz strong{font-size:17px;letter-spacing:-.8px}.distance{font-size:8px}.distance b{font-size:9px}.surface-note{font-size:7px;margin-top:6px}.robot-block{margin-top:10px;padding-top:9px}.robot-xyz{padding:8px 0;gap:6px;font-size:9px}.robot-xyz b{font-size:14px;margin-left:3px}.calibration{font-size:8px;padding:5px 2px}.setup-note{font-size:7px;margin-top:4px}.depth-footer{padding:0 8px;gap:6px;height:23px}.depth-panel .small-label{display:none}footer{min-height:35px;padding:0 12px 5px;font-size:8px;gap:5px}footer i{margin:0 2px}footer em{font-size:7px}#captureNote{display:none}.replay-controls{gap:3px}.replay-controls button{min-width:23px;height:23px}.replay-controls span{font-size:8px;min-width:39px;margin-left:2px}.empty-state h2{font-size:13px}.empty-state p{font-size:10px;margin:6px 0 12px}.camera-icon{font-size:29px;margin-bottom:8px}.empty-state button{padding:7px 10px;font-size:10px}.replay-badge{font-size:8px;top:8px;right:8px}}

@media(min-width:761px){aside{grid-template-rows:minmax(110px,1fr) minmax(488px,1.6fr)}}
@media(max-width:760px){.rgb-only aside{min-height:205px;grid-template-columns:1fr;flex:.65}.rgb-only .browser-rgb-controls select{max-width:130px}.rgb-only #sourceLabel{display:none}.rgb-only .coordinates .coordinate-body{padding:8px 14px}.rgb-only .coordinates .robot-block{margin-top:5px;padding-top:5px}.rgb-only .camera-panel>.panel-header h1 span{display:none}.rgb-only #modelMode{max-width:45%}}
@media(max-height:800px) and (min-width:761px){.topbar{height:55px}main{padding-top:10px;padding-bottom:10px}aside{grid-template-rows:minmax(80px,1fr) minmax(410px,1.8fr);gap:10px}.panel-header{height:36px}.coordinate-body{padding:10px 14px}.xyz{margin:7px 0}.xyz>div{padding:6px 8px}.master-controls{margin-bottom:4px}.surface-note{margin-top:5px}.body-geometry{margin-top:8px;padding-top:6px}.coordinates .robot-block{margin-top:7px;padding-top:7px}.depth-footer{height:21px}footer{min-height:30px}}
@media(max-height:800px) and (min-width:761px){aside{grid-template-rows:minmax(80px,1fr) minmax(456px,1.8fr)}.last-transmission{margin-top:5px;padding-top:5px;gap:2px}.last-transmission strong{font-size:10px}}
@media(max-width:760px){.last-transmission{margin-top:4px;padding-top:4px;gap:2px}.last-transmission strong{font-size:9px}.last-transmission span,.sent-heading{font-size:7px}.help-button{font-size:8px;padding:4px}.coordinates .coordinate-body{justify-content:flex-start}.rgb-only .coordinates .coordinate-body{justify-content:center}}
