@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(/assets/dm-sans-latin-ext-wght-normal-BOFOeGcA.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(/assets/dm-sans-latin-wght-normal-Xz1IZZA0.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff")}:root{font-family:DM Sans Variable,Microsoft YaHei,PingFang SC,sans-serif;color:#e7ecee;background:#101416;font-synthesis:none;font-size:14px;line-height:1.5;--panel: #181d20;--border: #303b40;--muted: #8e9da4;--lime: #d6ff72;--cyan: #72d7e6;--mono: "IBM Plex Mono", Consolas, monospace;color-scheme:dark}*{box-sizing:border-box}body{margin:0}button,input,a{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button{cursor:pointer}button{color:inherit}button:disabled{cursor:not-allowed;opacity:.36}button,a,input{outline-offset:4px}button:focus-visible,a:focus-visible{outline:2px solid var(--lime)}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}h2{font-size:18px;font-weight:600;letter-spacing:.025em}svg{flex-shrink:0}button{display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap}input[type=range]{accent-color:var(--lime);min-width:0;width:100%;height:4px;cursor:pointer}input[type=checkbox]{accent-color:var(--cyan);width:13px;height:13px;margin:0;cursor:pointer}.app-shell{max-width:1920px;margin:auto;padding:0 22px}.app-header{height:78px;display:flex;align-items:center;gap:26px}.brand{display:flex;align-items:center;gap:12px}.brand img{width:36px;height:36px}.brand strong{font-size:28px;letter-spacing:-.8px;line-height:1}.app-description{color:var(--muted);letter-spacing:.14em;font-size:14px}.header-right{margin-left:auto;display:flex;align-items:center;gap:28px}.connection{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:13px}.good{color:var(--lime)}.status-dot{display:inline-block;width:7px;height:7px;background:#7f9099;border-radius:50%;flex-shrink:0}.good .status-dot,.status-dot.lime{background:var(--lime);box-shadow:0 0 10px #d6ff7222}.text-button{border:0;background:none;padding:6px 0;color:var(--muted);font-size:12px}.text-button:hover{color:#e7ecee}.help-button{font-size:13px;gap:10px}.workspace{display:grid;grid-template-columns:minmax(320px,1.04fr) minmax(360px,1.2fr) minmax(280px,.82fr);gap:14px;align-items:stretch}.panel{border:1px solid var(--border);background:linear-gradient(145deg,#1b2225,#171d20);border-radius:10px;padding:17px}.panel-heading{display:flex;align-items:center;justify-content:space-between;min-height:28px;margin-bottom:15px;gap:8px}.panel-heading p{color:var(--muted);font-size:12px;margin-top:3px}.quiet{display:flex;gap:8px;align-items:center;color:var(--muted);font-size:12px}.tiny-label{color:#809399;font:10px var(--mono);letter-spacing:.1em}.dot-separator{margin:0 4px}.segmented{display:flex;background:#111719;border:1px solid var(--border);border-radius:7px;padding:3px}.segmented button{flex:1;border:0;background:none;color:#9daeb4;border-radius:5px;min-height:30px;transition:background .15s,color .15s;font-size:13px}.segmented .selected{background:#2c373d;color:#f2f6f7;box-shadow:0 1px 4px #0003}.segmented button:hover{color:#fff}.source-tabs{margin-bottom:13px}.input-panel{display:flex;flex-direction:column}.input-viewport{position:relative;isolation:isolate;aspect-ratio:1.1;min-height:300px;border:1px solid #3a484e;border-radius:8px;overflow:hidden;background-color:#0b1114;background-image:linear-gradient(#22323948 1px,transparent 1px),linear-gradient(90deg,#22323948 1px,transparent 1px);background-size:24px 24px}.input-viewport:after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 70px #0003}.input-viewport video,.input-viewport canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}.input-viewport video{opacity:0}.input-viewport video.visible{opacity:.8}.input-viewport canvas{z-index:2}.camera-source video,.camera-source canvas{transform:scaleX(-1)}.input-caption{position:absolute;left:12px;top:12px;color:#a8bbc2;font:10px var(--mono),"Microsoft YaHei";background:#0b1114a8;padding:4px 6px;border-radius:3px;z-index:3;letter-spacing:.025em}.input-action{position:absolute;bottom:12px;right:12px;z-index:4}.subtle-button{background:#182025dd;border:1px solid #3b4a51;color:#afc1c8;border-radius:6px;padding:7px 10px;font-size:11px}.subtle-button:hover{background:#2e3a40;color:#fff}.frame-corners{pointer-events:none;position:absolute;inset:14px;border:0;z-index:1}.camera-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:35px;text-align:center;background:#0d1317c9;z-index:3}.empty-camera{width:62px;height:62px;display:grid;place-items:center;color:var(--cyan);border:1px solid #354a51;border-radius:16px;margin-bottom:16px;background:#172329}.camera-empty h3{font-size:17px;font-weight:500}.camera-empty p{font-size:12px;line-height:1.9;color:var(--muted);margin:9px 0 20px;max-width:265px}.camera-empty .button{min-height:39px;padding:0 20px}.camera-loading,.paused-caption{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:10px;background:#0b1114b0;z-index:3;font-size:13px}.spinner{width:18px;height:18px;border:2px solid #536d71;border-top-color:var(--lime);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.tracking-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px}.side-tabs{width:45%;flex-shrink:0}.side-tabs button{min-height:27px;font-size:12px}.tracking-status{display:flex;gap:7px;align-items:center;font-size:11px;color:#9fadb3;text-align:right}.tracking-status.good{color:#d0dfcf}.input-metrics{display:flex;justify-content:space-between;gap:8px;color:#6f848e;font:10px var(--mono),"Microsoft YaHei";margin-top:13px}.input-metrics b{font-weight:400;color:#a7bac3;margin:0 3px}.steps{display:flex;justify-content:space-between;align-items:center;gap:6px;color:#607882;margin:24px 0 17px}.steps>span{display:flex;align-items:center;gap:6px;font-size:11px;white-space:nowrap}.steps i{font:11px var(--mono);display:grid;place-items:center;width:24px;height:24px;border-radius:50%;border:1px solid #546a75;color:#7e97a2}.steps .done{color:#c7d5d9}.steps .done i{color:var(--lime);border-color:#829b55;background:#a9cc4310}.main-actions{display:flex;gap:9px}.button{border-radius:6px;min-height:43px;padding:9px 14px;font-size:13px;font-weight:500;transition:background .15s,box-shadow .15s}.main-actions .button{flex:1;padding:9px 8px}.primary{background:var(--lime);color:#17200c;border:1px solid var(--lime)}.primary:not(:disabled):hover{background:#e4ff9e;box-shadow:0 0 18px #d6ff7218}.primary.following:disabled{opacity:1;background:#bedf75;border-color:#bedf75}.secondary{background:transparent;border:1px solid #8a9b9f;color:#e2e8ea}.secondary:not(:disabled):hover{background:#303b40}.input-note{display:flex;align-items:center;gap:8px;color:#879ba5;font-size:10px;line-height:1.8;margin-top:16px}.robot-panel{display:flex;flex-direction:column;min-height:680px;padding-bottom:12px}.robot-panel .panel-heading{margin-bottom:10px}.robot-canvas-wrap{position:relative;flex:1;min-height:450px;background:radial-gradient(ellipse at 50% 70%,#263137,#111719 90%);border:1px solid #36454b;border-radius:8px;overflow:hidden}.robot-canvas{position:absolute;inset:0}.robot-canvas canvas{display:block;touch-action:none}.view-hint{position:absolute;left:13px;top:12px;color:#7f959e;font-size:10px;pointer-events:none}.view-hint span{margin:0 5px}.view-reset{position:absolute;right:11px;bottom:12px}.viewport-message{position:absolute;top:50%;left:10%;width:80%;text-align:center;color:#adc2ce;font-size:13px;pointer-events:none}.robot-legend{display:flex;align-items:center;gap:25px;font-size:11px;color:#9cadb3;padding:12px 1px 0}.robot-legend>span,.robot-legend label{display:flex;align-items:center;gap:8px}.robot-legend label{cursor:pointer}.legend-line{display:inline-block;width:23px;height:2px;background:var(--lime)}.legend-line.cyan{background:var(--cyan)}.legend-line.dashed{background:repeating-linear-gradient(90deg,var(--cyan) 0 5px,transparent 5px 8px)}.telemetry-panel{display:flex;flex-direction:column}.joints{display:flex;flex-direction:column;gap:10px}.joint{border:1px solid #303e44;border-radius:7px;padding:13px 12px;background:#1b2327}.joint h3{font-size:14px;letter-spacing:.04em;font-weight:500;display:flex;gap:10px;align-items:center;margin-bottom:11px}.joint h3>span{color:#93a6ad;font:11px var(--mono)}.joint-body{display:flex;gap:10px}.joint-values{flex:1;min-width:0}.joint-values>div{display:flex;justify-content:space-between;gap:7px;align-items:center;font-size:11px;color:#9daeb5}.joint-values>div+div{margin-top:6px}.joint-values b{font:15px var(--mono);color:#e8eef0;letter-spacing:-.4px;white-space:nowrap}.joint-values b.cyan-text{color:var(--cyan)}.joint-range{flex:.85;border-left:1px solid #35454d;padding-left:11px;color:#82979f;font-size:9px}.range-labels{display:flex;justify-content:space-between;gap:5px;font:9px var(--mono);color:#a0b2bb;margin:5px 0 8px}.range-track{height:4px;position:relative;background:#36454d;border-radius:4px}.range-track:before{content:"";position:absolute;left:50%;width:1px;background:#82989e;height:8px;top:-2px}.range-track i,.range-track em{position:absolute;top:-3px;height:10px;width:3px;border-radius:2px;background:var(--lime);transform:translate(-50%)}.range-track em{background:var(--cyan);height:6px;top:-1px;width:2px}.error-chart{border:1px solid #303e44;border-radius:7px;margin-top:12px;padding:13px 11px 8px;background:#151d20;flex:1;display:flex;flex-direction:column;justify-content:center}.row-label{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px;gap:6px}.row-label strong{font-size:12px;font-weight:500}.row-label span{font-size:10px;color:#718994}.error-chart svg{display:block;width:100%;min-height:105px;max-height:160px}.error-chart svg text{fill:#8099a5;font:8px var(--mono)}.chart-legend{display:flex;gap:12px;font:9px var(--mono);color:#79919b}.chart-legend span{display:flex;align-items:center;gap:5px}.chart-legend span:last-child{margin-left:auto;font-size:9px}.status-dot.cyan{background:var(--cyan)}.chart-legend .status-dot{width:4px;height:4px}.settings{border:1px solid #303e44;border-radius:7px;margin:12px 0;overflow:hidden;background:#192226}.settings label{display:flex;align-items:center;gap:8px;font-size:11px;padding:13px 11px;white-space:nowrap}.settings label+label{border-top:1px solid #2e3c43}.settings label>span{font-size:9px;color:#80939c}.settings label>span:first-child{margin-left:auto}.settings input{flex:1}.settings output{font:10px var(--mono);min-width:38px;text-align:right;color:#b4c7cd}.danger{color:#ff7f7f;border:1px solid #ae5259;background:#7f363614;width:100%;font-size:13px}.danger:not(:disabled):hover{background:#7f363638}.danger:disabled{opacity:.5}.danger kbd{font:9px var(--mono);padding:1px 4px;border:1px solid #78464c;border-radius:3px;opacity:.75}.reset-robot{align-self:center;font-size:10px;margin-top:6px}.events-panel{margin-top:14px;padding:15px 18px 12px}.events-header{display:flex;align-items:center;gap:22px;margin-bottom:10px}.events-header h2{font-size:15px}.pipeline{display:flex;align-items:center;gap:8px;color:#8ea3ae;font-size:11px;margin-left:auto}.events-header .text-button{font-size:10px}.event-list{background:#10171aad;border-radius:6px;max-height:110px;overflow:auto;padding:0 12px}.event-row{display:flex;gap:13px;align-items:center;min-height:31px;border-bottom:1px dashed #2b373e;font-size:11px}.event-row:last-child{border-bottom:0}.event-row time{font:10px var(--mono);color:#859ca8;flex-shrink:0}.event-row>span{color:#bed0d6}.event-row.success .status-dot{background:var(--lime)}.event-row.warning .status-dot{background:#e9b373}.event-row.info .status-dot{background:var(--cyan)}.event-empty{padding:12px;color:#79919e;font-size:12px}.app-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#5f7985;font-size:10px;padding:12px 2px 14px}.app-footer>span{display:flex;align-items:center;gap:7px}.app-footer .status-dot{width:5px;height:5px;background:#58717c}.app-footer i:not(.status-dot){height:9px;width:1px;background:#35464e;margin:0 6px}.modal-backdrop{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:20;display:grid;place-items:center;padding:22px}.help-dialog{position:relative;background:#1a2226;border:1px solid #43565f;box-shadow:0 30px 120px #0008;border-radius:14px;max-width:510px;padding:32px}.dialog-close{position:absolute;right:20px;top:16px}.help-symbol{display:grid;place-items:center;width:56px;height:56px;background:#d6ff7211;border:1px solid #d6ff7244;color:var(--lime);border-radius:14px;margin-bottom:18px}.help-dialog h2{font-size:25px;margin-bottom:12px}.help-dialog>p,.help-dialog li p{font-size:12px;line-height:1.9;color:#a3b5be}.help-dialog ol{padding-left:22px;margin:20px 0}.help-dialog li{padding-left:6px;margin:13px 0}.help-dialog li::marker{color:var(--lime);font:12px var(--mono)}.help-dialog strong{font-weight:500;font-size:13px}.help-notice{font-size:11px;color:#b7c8cb;border-left:2px solid #d6ff7288;padding-left:12px;margin:18px 0 24px;line-height:1.9}.help-dialog>.button{width:100%}@media(min-width:1500px){.app-shell{padding:0 28px}.workspace{gap:18px;grid-template-columns:1.04fr 1.18fr .86fr}.panel{padding:20px}.robot-panel{min-height:750px}.input-viewport{aspect-ratio:1.13}.panel-heading{margin-bottom:18px}.joint{padding:17px 14px}.joint h3{font-size:16px}.joint-values b{font-size:18px}.joint-range,.range-labels{font-size:10px}.settings label{padding:19px 13px}.steps{margin-top:27px}.main-actions .button{min-height:47px}.input-note{font-size:11px}.error-chart svg{max-height:180px}}@media(max-width:1180px){.app-shell{padding:0 15px}.workspace{grid-template-columns:1fr 1.18fr}.telemetry-panel{grid-column:1/-1;display:grid;grid-template-columns:1.2fr 1fr .9fr;gap:14px;align-items:start}.telemetry-panel>.panel-heading{grid-column:1/-1;margin-bottom:0}.joints{flex-direction:row;grid-column:1/3;grid-row:2}.joint{flex:1}.error-chart{grid-column:3;grid-row:2/4;margin:0;align-self:stretch}.settings{grid-column:1;grid-row:3;margin:0}.telemetry-panel .danger{grid-column:2;grid-row:3;align-self:center}.reset-robot{grid-column:2;grid-row:4;margin:0;justify-self:center}.robot-panel{min-height:650px}.input-viewport{min-height:300px}.settings label{padding:10px}.app-description{font-size:12px}.pipeline{font-size:10px}.app-header{gap:18px}}@media(max-width:740px){.app-shell{padding:0 12px}.app-header{height:69px;gap:10px}.brand{gap:8px}.brand strong{font-size:23px}.brand img{width:29px;height:29px}.app-description{display:none}.header-right{gap:12px}.connection{font-size:10px;gap:5px}.help-button{font-size:0;gap:0}.workspace{grid-template-columns:1fr;gap:12px}.panel{padding:16px}.input-viewport{aspect-ratio:1.2;min-height:270px}.input-note{font-size:11px}.steps>span{font-size:12px}.robot-panel{min-height:510px}.robot-canvas-wrap{min-height:420px}.telemetry-panel{display:flex;grid-column:auto;gap:0;align-items:stretch}.telemetry-panel>.panel-heading{margin-bottom:14px}.joints{gap:10px}.joint{padding:12px 10px}.joint-body{flex-direction:column;gap:12px}.joint-range{padding:9px 0 0;border-left:0;border-top:1px solid #35454d}.joint-values b{font-size:17px}.range-labels{font-size:10px}.error-chart{margin-top:14px}.error-chart svg{max-height:135px}.settings{margin:12px 0}.settings label{padding:15px}.reset-robot{margin-top:6px}.events-panel{margin-top:12px}.pipeline{display:none}.events-header .text-button{margin-left:auto}.event-row{font-size:10px;gap:8px;padding:6px 0;align-items:flex-start}.event-row .status-dot{margin-top:5px}.event-row time{font-size:9px;margin-top:2px}.app-footer{font-size:9px;align-items:flex-start}.app-footer>span:last-child{justify-content:flex-end;flex-wrap:wrap;max-width:60%}.help-dialog{padding:25px}.help-dialog h2{font-size:23px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}.spinner{animation-duration:2s}}
