:root{color-scheme:dark;--color-bg: #061019;--color-panel: #0c1a25;--color-panel-strong: #102433;--color-border: rgba(85, 205, 255, .28);--color-cyan: #42d9ff;--color-green: #68f0a3;--color-amber: #f7b955;--color-red: #ff5d68;--color-text: #e6f4ff;--color-muted: #88a6b8;--shadow-panel: 0 18px 60px rgba(0, 0, 0, .28)}*{box-sizing:border-box}html,body,#app{width:100%;min-width:0;height:100%;margin:0}body{overflow:hidden;color:var(--color-text);background:linear-gradient(90deg,rgba(66,217,255,.045) 1px,transparent 1px),linear-gradient(rgba(66,217,255,.035) 1px,transparent 1px),linear-gradient(180deg,#07131d,#04090f);background-size:40px 40px,40px 40px,auto;font-family:Inter,Microsoft YaHei,PingFang SC,Segoe UI,Arial,sans-serif}button,input,select{font:inherit}button{color:inherit}h1,h2,h3,p,ul{margin:0}ul{padding:0;list-style:none}.app-shell{display:grid;grid-template-rows:68px minmax(0,1fr) 28px;gap:10px;height:100%;min-width:0;overflow:hidden;padding:10px}.command-bar,.panel,.viewport-panel,.data-dock,.system-footer{border:1px solid var(--color-border);border-radius:8px;background:linear-gradient(180deg,#0f212ffa,#061019fa);box-shadow:var(--shadow-panel)}.command-bar{display:grid;grid-template-columns:minmax(340px,1fr) 172px auto;align-items:center;gap:14px;padding:0 12px}.brand-lockup{display:flex;align-items:center;min-width:0;gap:12px}.brand-mark{display:grid;width:40px;height:40px;flex:0 0 auto;place-items:center;border:1px solid rgba(66,217,255,.52);border-radius:7px;color:var(--color-cyan);background:#42d9ff14;font-size:14px;font-weight:800}.brand-lockup p{color:var(--color-cyan);font-size:10px;letter-spacing:0}.brand-lockup h1{overflow:hidden;font-size:20px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.mode-strip{display:grid;gap:3px;border-left:1px solid rgba(136,166,184,.2);padding-left:14px}.mode-strip span,.metric-row span,.system-footer strong{color:var(--color-muted);font-size:11px}.mode-strip strong{color:var(--color-green);font-size:14px}.command-actions{position:relative;display:flex;align-items:center;justify-content:flex-end;gap:8px}.command-button,.icon-button,.tab,.import-button,.title-import-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid rgba(136,166,184,.28);border-radius:7px;background:#0c1a25eb;cursor:pointer;transition:border-color .15s ease,background .15s ease,color .15s ease}.command-button{height:38px;padding:0 12px;font-size:13px}.icon-button{width:38px;height:38px}.command-button:hover,.icon-button:hover,.tab:hover,.import-button:hover,.title-import-button:hover{border-color:#42d9ff9e;background:#42d9ff1f}.command-button:disabled{cursor:not-allowed;opacity:.46}.command-button.primary{border-color:#42d9ff9e;color:var(--color-cyan);background:#42d9ff1c}.command-button.primary.is-running:disabled{border-color:#68f0a39e;color:var(--color-green);background:#68f0a31a;opacity:.88}.command-button.primary.is-loading:disabled{opacity:.72}.command-button.warning{border-color:#f7b955ad;color:var(--color-amber);background:#f7b9551a}.command-button.danger{border-color:#ff5d6894;color:var(--color-red)}.icon-button.active{border-color:#f7b955b8;color:var(--color-amber);background:#f7b9551a}.command-popover{position:absolute;top:46px;right:42px;z-index:8;width:min(330px,calc(100vw - 28px));border:1px solid rgba(66,217,255,.34);border-radius:8px;padding:12px;background:linear-gradient(180deg,#0c1f2cfa,#050d14fa);box-shadow:0 22px 42px #00000061,inset 0 1px #ffffff0d}.popover-heading{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:9px}.popover-heading span{color:var(--color-muted);font-size:11px}.popover-heading strong{font-size:13px}.popover-heading strong.normal{color:var(--color-green)}.popover-heading strong.warning{color:var(--color-amber)}.popover-heading strong.critical{color:var(--color-red)}.alarm-popover-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:9px}.alarm-popover-grid span{display:grid;gap:3px;border:1px solid rgba(136,166,184,.14);border-radius:6px;padding:7px 8px;color:var(--color-muted);background:#050d146b;font-size:10px}.alarm-popover-grid strong{overflow:hidden;color:var(--color-text);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.alarm-popover-list{display:grid;gap:6px}.alarm-popover-list li{display:grid;grid-template-columns:58px 42px minmax(0,1fr);gap:6px;align-items:center;color:var(--color-muted);font-size:10px}.alarm-popover-list strong{color:var(--color-amber);font-size:10px}.alarm-popover-list li.error strong{color:var(--color-red)}.alarm-popover-list em{overflow:hidden;font-style:normal;text-overflow:ellipsis;white-space:nowrap}.alarm-popover p{color:var(--color-muted);font-size:11px}.import-button{width:100%;height:32px;color:var(--color-cyan);font-size:12px}.file-input{display:none}.workbench{display:grid;grid-template-columns:300px minmax(0,1fr) 320px;grid-template-rows:minmax(0,1fr) 218px;grid-template-areas:"left center right" "bottom bottom bottom";gap:10px;min-height:0}.app-shell.is-focus-mode{grid-template-rows:68px minmax(0,1fr)}.app-shell.is-focus-mode .workbench{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);grid-template-areas:"center"}.app-shell.is-focus-mode .left-rail,.app-shell.is-focus-mode .right-rail,.app-shell.is-focus-mode .bottom-dock,.app-shell.is-focus-mode .system-footer{display:none}.app-shell.is-focus-mode .viewport-panel{min-height:0}.left-rail{grid-area:left}.right-rail{grid-area:right}.bottom-dock{grid-area:bottom}.panel,.viewport-panel,.data-dock{min-width:0;min-height:0}.panel{overflow:auto;padding:14px}.panel-title{display:flex;align-items:center;gap:8px;margin-bottom:12px;color:var(--color-cyan)}.panel-title h2{flex:1 1 auto}.title-import-button{flex:0 0 auto;height:26px;padding:0 8px;color:var(--color-cyan);font-size:11px}.panel-title h2,.dock-pane h3,.form-section h3,.alarm-list h3{color:var(--color-text);font-size:14px;font-weight:700}.form-section,.alarm-list{border-top:1px solid rgba(136,166,184,.16);padding-top:12px}.form-section+.form-section,.alarm-list{margin-top:12px}.form-section h3,.alarm-list h3{margin-bottom:10px;color:#cfe5f2}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}.section-heading h3{margin-bottom:0}.section-action-button{display:inline-flex;align-items:center;justify-content:center;gap:5px;height:24px;min-width:58px;border:1px solid rgba(66,217,255,.42);border-radius:6px;padding:0 8px;color:var(--color-cyan);background:#42d9ff1a;font-size:11px;cursor:pointer}.section-action-button:hover{border-color:#42d9ffb8;background:#42d9ff29}.section-action-button:disabled,.title-import-button:disabled{cursor:not-allowed;opacity:.52}label{display:grid;gap:6px;color:var(--color-muted);font-size:11px}input,select{width:100%;min-width:0;height:30px;border:1px solid rgba(136,166,184,.24);border-radius:6px;padding:0 8px;color:var(--color-text);background:#050d14b8;outline:none}input:focus,select:focus{border-color:#42d9ffb8}input:disabled,select:disabled{cursor:not-allowed;opacity:.55}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.metric-row{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:26px;border-bottom:1px solid rgba(136,166,184,.1)}.metric-row strong{color:#d9edf8;font-size:12px}.parameter-panel{padding:10px 12px}.parameter-panel .panel-title{margin-bottom:6px}.parameter-panel .form-section{padding-top:5px}.parameter-panel .form-section+.form-section{margin-top:4px}.parameter-panel .form-section h3{margin-bottom:3px;font-size:13px}.parameter-panel .section-heading{margin-bottom:3px}.parameter-panel .section-action-button{height:22px;min-width:54px;padding:0 7px;font-size:10px}.parameter-panel label{gap:2px;font-size:10px}.parameter-panel input,.parameter-panel select{height:21px;padding:0 7px;font-size:11px}.parameter-panel .field-grid{gap:4px;margin-top:3px}.parameter-panel .compact-metric-grid{gap:4px}.parameter-panel .compact-metric-grid .metric-row{min-height:26px;padding:2px 6px}.compact-parameter-summary{display:none}.compact-metric-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px}.compact-metric-grid .metric-row{min-height:29px;border:1px solid rgba(136,166,184,.12);border-radius:6px;padding:3px 7px;background:#050d145c}.compact-metric-grid .metric-row span,.compact-metric-grid .metric-row strong{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewport-panel{position:relative;grid-area:center;display:grid;grid-template-rows:auto minmax(0,1fr);min-height:0;overflow:hidden}.digital-twin-viewport,.digital-twin-canvas{display:block;width:100%;height:100%}.digital-twin-viewport{position:relative;grid-row:2;grid-column:1;min-width:0;min-height:0}.viewport-toolbar,.viewport-readout{z-index:2;display:flex;align-items:center;gap:8px;color:var(--color-muted);font-size:11px}.viewport-toolbar{position:relative;grid-row:1;grid-column:1;max-width:100%;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;padding:8px 10px 6px;border-bottom:1px solid rgba(66,217,255,.14);background:linear-gradient(180deg,#07151fd6,#050d147a);pointer-events:none}.viewport-layer-strip,.viewport-view-strip{display:flex;flex-wrap:wrap;gap:6px;min-width:0;pointer-events:auto}.viewport-toolbar span,.viewport-tool,.viewport-readout span{border:1px solid rgba(66,217,255,.22);border-radius:6px;min-height:28px;padding:5px 8px;background:#050d14a8}.viewport-tool{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-width:58px;color:var(--color-muted);cursor:pointer}.viewport-tool:hover{border-color:#42d9ff94;color:var(--color-cyan);background:#42d9ff1a}.viewport-tool.active{border-color:#42d9ffb8;color:var(--color-cyan);background:#42d9ff24}.viewport-layer-toggle{min-width:74px}.viewport-layer-toggle:not(.active){border-color:#87a1ad2e;color:#87a1adad;background:#050d147a}.viewport-readout{position:absolute;right:12px;bottom:12px}.viewport-axis-triad{position:absolute;left:14px;bottom:12px;z-index:2;width:104px;height:76px;border:1px solid rgba(66,217,255,.2);border-radius:6px;background:#050d146b;box-shadow:inset 0 0 16px #42d9ff14;pointer-events:none}.viewport-axis-triad:before{position:absolute;left:45px;bottom:27px;width:7px;height:7px;border-radius:50%;background:#d4e5e8;box-shadow:0 0 10px #d4e5e873;content:""}.axis-triad-arm{position:absolute;left:48px;bottom:30px;width:var(--axis-length, 42px);height:2px;border-radius:999px;transform-origin:0 50%;opacity:var(--axis-opacity, 1);transform:rotate(var(--axis-angle, 0deg))}.axis-triad-arm:after{position:absolute;right:-1px;top:-3px;width:0;height:0;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:7px solid currentColor;content:""}.axis-triad-arm em{position:absolute;right:-18px;top:-9px;color:currentColor;font-size:10px;font-style:normal;font-weight:800;text-shadow:0 0 8px currentColor;transform:rotate(var(--axis-label-angle, 0deg))}.axis-triad-arm.axis-x{color:#ff6f7a;background:currentColor}.axis-triad-arm.axis-y{color:#70f4a6;background:currentColor}.axis-triad-arm.axis-z{color:#42d9ff;background:currentColor}.scene-preview{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;background:linear-gradient(90deg,rgba(66,217,255,.08) 1px,transparent 1px),linear-gradient(rgba(66,217,255,.08) 1px,transparent 1px),linear-gradient(180deg,#0a1c28cc,#03080eeb);background-size:34px 34px,34px 34px,auto}.plate{position:absolute;right:13%;bottom:16%;width:60%;height:30%;transform:skew(-18deg) rotateX(58deg);border:1px solid rgba(66,217,255,.48);border-radius:7px;background:linear-gradient(90deg,rgba(66,217,255,.11) 1px,transparent 1px),linear-gradient(rgba(66,217,255,.1) 1px,transparent 1px),linear-gradient(135deg,#253947,#111f2a);background-size:36px 36px,36px 36px,auto;box-shadow:0 26px 60px #0000005c}.path-line{position:absolute;left:9%;right:9%;height:2px;background:repeating-linear-gradient(90deg,var(--color-cyan),var(--color-cyan) 10px,transparent 10px,transparent 18px);box-shadow:0 0 16px #42d9ffd1}.path-line-a{top:38%}.path-line-b{top:57%}.hotspot{position:absolute;left:58%;top:36%;width:66px;height:42px;border-radius:50%;background:radial-gradient(circle,rgba(255,93,104,.88),rgba(247,185,85,.56) 42%,transparent 72%)}.robot-silhouette{position:absolute;left:16%;bottom:28%;width:260px;height:250px}.joint,.link,.probe{position:absolute;display:block;transform-origin:center}.joint{border:1px solid rgba(104,240,163,.45);border-radius:50%;background:#203645;box-shadow:0 0 18px #68f0a342}.joint-base{bottom:0;left:20px;width:68px;height:68px}.joint-elbow{top:52px;left:116px;width:44px;height:44px}.link{height:22px;border:1px solid rgba(66,217,255,.35);border-radius:6px;background:linear-gradient(90deg,#263d4c,#9db5c0,#223747)}.link-shoulder{bottom:62px;left:55px;width:134px;transform:rotate(-48deg)}.link-forearm{top:72px;left:146px;width:118px;transform:rotate(29deg)}.probe{right:0;top:118px;width:26px;height:76px;border:1px solid rgba(247,185,85,.65);border-radius:6px;background:linear-gradient(180deg,#32414c,#f7b955)}.probe:after{position:absolute;top:76px;left:-24px;width:74px;height:108px;content:"";background:linear-gradient(180deg,rgba(66,217,255,.22),transparent);clip-path:polygon(50% 0,0 100%,100% 100%)}.status-overview{display:grid;gap:8px}.manual-mode-card{display:grid;gap:5px;border-bottom:1px solid rgba(136,166,184,.14);padding-bottom:6px}.segmented-control,.joint-selector,.jog-controls{display:grid;gap:6px}.segmented-control{grid-template-columns:1fr 1fr}.joint-selector{grid-template-columns:repeat(6,1fr)}.manual-joint-editor{display:grid;gap:4px}.manual-joint-header{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.manual-joint-header h3{color:var(--color-text);font-size:12px}.manual-joint-header span{color:var(--color-muted);font-size:10px}.joint-control-row{display:grid;grid-template-columns:minmax(86px,1fr) minmax(62px,.78fr) 44px;align-items:center;gap:5px;min-width:0;border:1px solid rgba(136,166,184,.16);border-radius:6px;padding:3px 6px;color:var(--color-text);background:#050d146b}.joint-control-row.active{border-color:#42d9ff9e;background:#42d9ff1c;box-shadow:inset 3px 0 #f7b955e6}.joint-control-copy{display:grid;min-width:0;gap:1px;text-align:left}.joint-select-button{min-width:0;border:0;padding:0;color:inherit;background:transparent;cursor:pointer}.joint-control-copy strong{overflow:hidden;color:var(--color-text);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.joint-label-compact{display:none}.joint-control-copy small{overflow:hidden;color:var(--color-muted);font-size:8px;text-overflow:ellipsis;white-space:nowrap}.joint-control-row input[type=range]{width:100%;min-width:0;accent-color:var(--color-cyan)}.joint-control-value{color:var(--color-green);font-size:11px;font-weight:800;text-align:right}.jog-controls{grid-template-columns:repeat(4,1fr)}.segmented-control button,.joint-selector button,.jog-controls button{min-width:0;height:22px;border:1px solid rgba(136,166,184,.2);border-radius:6px;color:var(--color-muted);background:#050d1485;cursor:pointer}.segmented-control button.active,.joint-selector button.active{border-color:#42d9ff9e;color:var(--color-cyan);background:#42d9ff1a}.jog-controls button{color:var(--color-green)}.manual-status-strip{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:5px}.manual-status-strip.has-tcp-quality{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr)}.limit-status{overflow:hidden;color:var(--color-muted);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.tcp-drag-status{overflow:hidden;border:1px solid rgba(66,217,255,.22);border-radius:5px;padding:2px 6px;color:var(--color-cyan);font-size:10px;background:#42d9ff12;text-overflow:ellipsis;white-space:nowrap}.manual-quality-inline{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:4px;min-width:0}.manual-quality-inline b{color:var(--color-cyan);font-size:9px;font-weight:900;line-height:1}.manual-quality-inline strong{overflow:hidden;color:var(--color-text);font-size:9px;font-weight:800;text-align:right;text-overflow:ellipsis}.tcp-drag-status .manual-quality-inline{display:inline-grid;width:58px;vertical-align:bottom}.tcp-status-copy{display:inline-block;overflow:hidden;max-width:calc(100% - 62px);padding-left:4px;text-overflow:ellipsis;vertical-align:bottom}.manual-tcp-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;color:var(--color-text);font-size:10px}.manual-tcp-strip>span{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:4px;overflow:hidden;border:1px solid rgba(136,166,184,.14);border-radius:5px;padding:3px 5px;background:#050d146b;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.manual-tcp-strip>span:hover{border-color:#42d9ff94;background:#42d9ff1a}.manual-tcp-strip>span.active{border-color:#42d9ffad;background:#42d9ff1f;box-shadow:inset 0 0 0 1px #42d9ff1f}.manual-tcp-strip b{color:var(--color-cyan);font-size:9px;font-weight:900;line-height:1}.manual-tcp-strip strong{overflow:hidden;color:var(--color-text);font-size:10px;font-weight:800;text-align:right;text-overflow:ellipsis}.scan-progress-card{display:grid;gap:7px;border:1px solid rgba(66,217,255,.18);border-radius:7px;padding:8px 9px;background:#050d1480}.scan-progress-copy{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.scan-progress-copy span,.scan-progress-card small,.status-metric span{color:var(--color-muted);font-size:11px}.scan-progress-copy strong{color:var(--color-green);font-size:25px;line-height:1}.scan-progress-track{overflow:hidden;height:8px;border-radius:999px;background:#88a6b829}.scan-progress-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--color-cyan),var(--color-green));box-shadow:0 0 12px #68f0a375}.status-metric-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.status-metric{display:grid;grid-template-columns:1fr;align-items:center;gap:3px;border:1px solid rgba(136,166,184,.12);border-radius:7px;padding:6px;background:#050d1485}.status-metric strong{overflow:hidden;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.status-metric svg{display:none}.status-metric.ok{color:var(--color-green)}.status-metric.warn{color:var(--color-amber)}.status-alarm-line{display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid rgba(104,240,163,.16);border-radius:6px;padding:5px 7px;background:#050d1475}.status-alarm-line span{color:var(--color-muted);font-size:11px}.status-alarm-line strong{overflow:hidden;color:var(--color-green);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.joint-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.joint-grid div{display:grid;gap:4px;border:1px solid rgba(136,166,184,.14);border-radius:6px;padding:8px;background:#050d147a}.joint-grid span{color:var(--color-muted);font-size:10px}.joint-grid strong{font-size:12px}.tcp-compact-grid{display:grid;grid-template-columns:.72fr repeat(3,minmax(0,1fr));gap:5px;margin-top:5px}.tcp-compact-grid b{display:flex;align-items:center;border:1px solid rgba(50,211,255,.18);border-radius:6px;padding:5px 6px;background:#050d1470;color:var(--color-cyan);font-size:10px;font-weight:800;letter-spacing:0;line-height:1.12}.tcp-compact-grid span{display:grid;gap:2px;border:1px solid rgba(136,166,184,.14);border-radius:6px;padding:5px 6px;color:var(--color-muted);background:#050d1470;font-size:10px}.tcp-compact-grid strong{overflow:hidden;color:var(--color-text);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.alarm-list p{border-left:3px solid var(--color-green);padding-left:8px;color:var(--color-green);font-size:12px}.right-rail.panel{padding:11px 12px}.right-rail .panel-title{margin-bottom:8px}.right-rail .manual-mode-card{gap:5px;padding-bottom:7px}.right-rail .status-overview{gap:8px}.right-rail .scan-progress-card{gap:5px;padding:7px 8px}.right-rail .scan-progress-copy strong{font-size:23px}.right-rail .status-metric{min-height:42px;padding:5px 6px}.right-rail .form-section,.right-rail .alarm-list{padding-top:8px}.right-rail .form-section+.form-section,.right-rail .alarm-list{margin-top:8px}.right-rail .form-section h3,.right-rail .alarm-list h3{margin-bottom:6px;font-size:13px}.right-rail .joint-grid{gap:5px}.right-rail .joint-grid div{gap:1px;min-height:40px;padding:5px 7px}.right-rail .metric-row{min-height:21px}.right-rail .alarm-list p{min-height:22px;padding-top:2px}.right-rail.is-manual-mode.panel{padding:9px 10px}.right-rail.is-manual-mode .panel-title{margin-bottom:5px}.right-rail.is-manual-mode .manual-mode-card{gap:3px;border-bottom:0;padding-bottom:0}.right-rail.is-manual-mode .joint-control-copy small{display:none}.right-rail.is-manual-mode .joint-control-row{height:29px;padding:1px 6px}.right-rail.is-manual-mode .joint-control-copy strong{font-size:10px;line-height:1.05}.right-rail.is-manual-mode .joint-control-row input[type=range]{height:12px}.right-rail.is-manual-mode .joint-control-value{font-size:10px}.right-rail.is-manual-mode .segmented-control button,.right-rail.is-manual-mode .jog-controls button{height:19px}.right-rail.is-manual-mode .manual-tcp-strip span{padding:2px 5px}.data-dock{display:grid;grid-template-rows:40px minmax(0,1fr);overflow:hidden}.dock-tabs{display:flex;gap:8px;align-items:center;border-bottom:1px solid rgba(136,166,184,.16);padding:8px 10px 0}.tab{height:30px;padding:0 10px;color:var(--color-muted);font-size:12px}.tab.active{border-color:#42d9ffa3;color:var(--color-cyan);background:#42d9ff1a}.dock-grid{display:grid;grid-template-columns:1fr 1fr 1fr 1.15fr;gap:10px;min-height:0;padding:10px}.dock-pane{min-width:0;min-height:0}.dock-pane h3{margin-bottom:8px;font-size:12px}.dock-pane-heading{display:flex;min-height:16px;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.dock-pane-heading h3{margin-bottom:0}.data-source-badge{flex:0 0 auto;border:1px solid rgba(66,217,255,.34);border-radius:999px;padding:1px 7px;color:var(--color-cyan);background:#42d9ff14;font-size:10px;font-weight:800;letter-spacing:0;line-height:14px}.data-source-badge.imported{border-color:#68f0a36b;color:var(--color-green);background:#68f0a31a}.chart-surface,.log-pane ul{height:calc(100% - 24px);min-height:0;border:1px solid rgba(136,166,184,.16);border-radius:6px;background:#050d1485}.log-pane ul{display:grid;align-content:start;gap:6px;overflow:hidden;padding:8px}.log-pane li{display:grid;grid-template-columns:62px 48px minmax(0,1fr);gap:8px;align-items:center;color:var(--color-muted);font-size:11px}.log-pane strong{color:var(--color-green);font-size:10px}.log-pane li.warn strong{color:var(--color-amber)}.log-pane li.error strong{color:var(--color-red)}.log-pane em{overflow:hidden;font-style:normal;text-overflow:ellipsis;white-space:nowrap}.system-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 12px;color:var(--color-text);font-size:11px}.system-footer span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-height: 820px){.app-shell{grid-template-rows:64px minmax(0,1fr) 26px;gap:8px;padding:8px}.workbench{grid-template-rows:minmax(0,1fr) 214px;gap:8px}.app-shell.is-focus-mode{grid-template-rows:64px minmax(0,1fr)}.app-shell.is-focus-mode .workbench{grid-template-rows:minmax(0,1fr)}.panel{padding:12px}.form-section+.form-section,.alarm-list{margin-top:10px}}@media (max-width: 1100px){.command-bar{grid-template-columns:minmax(260px,1fr) auto}.mode-strip{display:none}.command-actions{gap:6px}.command-button{padding:0 9px}.workbench{grid-template-columns:230px minmax(0,1fr);grid-template-rows:minmax(240px,1fr) 226px 150px;grid-template-areas:"left center" "right center" "bottom bottom"}.field-grid{grid-template-columns:1fr}.parameter-panel{overflow:hidden;padding:7px 10px}.parameter-panel .panel-title{margin-bottom:5px}.parameter-panel .form-section:nth-of-type(n+2){display:none}.parameter-panel .form-section{padding-top:3px}.parameter-panel .field-grid{gap:3px}.parameter-panel .compact-parameter-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;border-top:1px solid rgba(136,166,184,.16);padding-top:6px}.parameter-panel .compact-parameter-summary span{display:grid;gap:2px;min-height:23px;border:1px solid rgba(136,166,184,.13);border-radius:6px;padding:3px 5px;background:#050d1466}.parameter-panel .compact-parameter-summary span:nth-child(3){grid-column:1 / -1;grid-template-columns:42px minmax(0,1fr);align-items:center}.parameter-panel .compact-parameter-summary b{color:var(--color-cyan);font-size:9px;line-height:1}.parameter-panel .compact-parameter-summary strong{overflow:hidden;color:var(--color-text);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.parameter-panel .compact-parameter-summary span:nth-child(3) strong{text-align:right}.dock-grid{grid-template-columns:1fr}.dock-pane{display:none}.dock-pane.is-active{display:block}.right-rail:not(.is-manual-mode).panel{overflow:hidden;padding:8px 9px}.right-rail:not(.is-manual-mode) .panel-title{margin-bottom:5px}.right-rail:not(.is-manual-mode) .status-overview{gap:6px}.right-rail:not(.is-manual-mode) .manual-mode-card{gap:4px;padding-bottom:5px}.right-rail:not(.is-manual-mode) .scan-progress-card{gap:3px;padding:5px 7px}.right-rail:not(.is-manual-mode) .scan-progress-copy strong{font-size:20px}.right-rail:not(.is-manual-mode) .scan-progress-card small{display:none}.right-rail:not(.is-manual-mode) .scan-progress-track{height:6px}.right-rail:not(.is-manual-mode) .status-metric-grid{gap:4px}.right-rail:not(.is-manual-mode) .status-metric{min-height:36px;padding:4px}.right-rail:not(.is-manual-mode) .status-alarm-line,.right-rail:not(.is-manual-mode) .form-section h3,.right-rail:not(.is-manual-mode) .joint-grid{display:none}.right-rail:not(.is-manual-mode) .form-section{margin-top:0;padding-top:5px}.right-rail:not(.is-manual-mode) .tcp-compact-grid{grid-template-columns:.62fr repeat(3,minmax(0,1fr));gap:4px;margin-top:0}.right-rail:not(.is-manual-mode) .tcp-compact-grid b,.right-rail:not(.is-manual-mode) .tcp-compact-grid span{padding:4px 5px;font-size:9px}.right-rail:not(.is-manual-mode) .tcp-compact-grid strong{font-size:10px}.right-rail.is-manual-mode.panel{padding:6px 8px;overflow:hidden}.right-rail.is-manual-mode .panel-title{display:none}.right-rail.is-manual-mode .status-overview,.right-rail.is-manual-mode .manual-mode-card{gap:3px}.right-rail.is-manual-mode .manual-joint-editor{grid-template-columns:repeat(2,minmax(0,1fr));gap:3px}.right-rail.is-manual-mode .manual-joint-header{grid-column:1 / -1}.right-rail.is-manual-mode .manual-joint-header h3,.right-rail.is-manual-mode .manual-joint-header span{font-size:9px}.right-rail.is-manual-mode .joint-control-row{grid-template-columns:minmax(0,1fr) 34px;grid-template-rows:20px 8px;gap:2px 4px;height:35px;padding:3px 4px}.right-rail.is-manual-mode .joint-select-button{display:flex;align-items:center;grid-column:1;grid-row:1;min-height:20px}.right-rail.is-manual-mode .joint-control-row input[type=range]{grid-column:1 / -1;grid-row:2;height:8px}.right-rail.is-manual-mode .joint-label-full{display:none}.right-rail.is-manual-mode .joint-label-compact{display:block}.right-rail.is-manual-mode .joint-control-copy strong{font-size:9px}.right-rail.is-manual-mode .joint-control-value{grid-column:2;grid-row:1;font-size:9px}.right-rail.is-manual-mode .limit-status,.right-rail.is-manual-mode .tcp-drag-status,.right-rail.is-manual-mode .manual-tcp-strip{font-size:9px}.right-rail.is-manual-mode .manual-tcp-strip span{padding:1px 4px}}@media (max-width: 760px){.brand-lockup h1{font-size:16px}.brand-mark,.icon-button{width:34px;height:34px}.command-button span{display:none}.command-button{width:34px;height:34px;padding:0}.workbench{grid-template-columns:206px minmax(0,1fr)}.parameter-panel{overflow:hidden;padding:9px 10px}.parameter-panel .panel-title{margin-bottom:5px}.parameter-panel .form-section:nth-of-type(n+2){display:none}.parameter-panel .form-section{padding-top:4px}.parameter-panel .field-grid{gap:3px}.parameter-panel .compact-parameter-summary{display:none}.right-rail:not(.is-manual-mode).panel{overflow:hidden;padding:8px}.right-rail:not(.is-manual-mode) .panel-title{margin-bottom:5px}.right-rail:not(.is-manual-mode) .form-section,.right-rail:not(.is-manual-mode) .status-alarm-line{display:none}.right-rail:not(.is-manual-mode) .status-overview{gap:6px}.right-rail:not(.is-manual-mode) .manual-mode-card{gap:5px;padding-bottom:5px}.right-rail:not(.is-manual-mode) .scan-progress-card{gap:4px;padding:6px 7px}.right-rail:not(.is-manual-mode) .scan-progress-copy strong{font-size:22px}.right-rail:not(.is-manual-mode) .status-metric-grid{gap:4px}.right-rail:not(.is-manual-mode) .status-metric{min-height:37px;padding:4px}.dock-tabs{gap:5px}.tab{padding:0 7px}.system-footer{gap:8px}}
