:root{--bg: #0f1115;--bg-panel: #1a1d24;--bg-panel-2: #232730;--border: #2a2f3a;--text: #e6e8ec;--text-dim: #9aa0ad;--accent: #f5c518;--accent-hover: #ffd64a;--danger: #d9534f}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;overscroll-behavior:none}.app{display:flex;flex-direction:column;height:100vh}.topbar{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--bg-panel);border-bottom:1px solid var(--border)}.topbar h1{margin:0;font-size:18px;color:var(--accent);letter-spacing:.5px}.subtitle{color:var(--text-dim);font-size:12px}.layout{display:grid;grid-template-columns:260px 1fr 300px;flex:1;min-height:0;position:relative;transition:grid-template-columns .25s ease}.layout.left-collapsed{grid-template-columns:0 1fr 300px}.layout.right-collapsed{grid-template-columns:260px 1fr 0}.layout.left-collapsed.right-collapsed{grid-template-columns:0 1fr 0}.sidebar{background:var(--bg-panel);overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:12px;min-width:0;transition:padding .25s ease,opacity .2s ease}.sidebar.collapsed{padding:0;border:none;overflow:hidden;opacity:0;pointer-events:none}.sidebar-left{border-right:1px solid var(--border)}.sidebar-right{border-left:1px solid var(--border)}.sidebar-handle{position:absolute;top:50%;transform:translateY(-50%);width:18px;height:56px;padding:0;background:var(--bg-panel-2);color:var(--text-dim);border:1px solid var(--border);font-size:14px;line-height:1;cursor:pointer;z-index:5;display:flex;align-items:center;justify-content:center;transition:left .25s ease,right .25s ease,background .15s,color .15s}.sidebar-handle:hover{background:var(--accent);color:#1a1a1a;border-color:var(--accent)}.handle-left{left:260px;border-radius:0 6px 6px 0;border-left:none}.handle-left.collapsed{left:0}.handle-right{right:300px;border-radius:6px 0 0 6px;border-right:none}.handle-right.collapsed{right:0}.viewer{position:relative;min-width:0;min-height:0;background:#15171c}.viewer-inner{position:relative;width:100%;height:100%}.compass-cluster{position:absolute;top:18px;right:18px;display:grid;grid-template-columns:130px 12px;grid-template-rows:12px 130px;gap:5px;grid-template-areas:"roll ." "cps  pitch";pointer-events:none}.overlay-compass{grid-area:cps;position:relative;border:1px solid #374151;border-radius:8px;pointer-events:none;box-sizing:border-box}.inclination-bar{background:#0a0d14bf;border:1px solid rgba(107,114,128,.35);border-radius:6px;position:relative;overflow:hidden}.inclination-bar--vertical{grid-area:pitch}.inclination-bar--horizontal{grid-area:roll}.inclination-bar--vertical:before{content:"";position:absolute;left:18%;right:18%;top:50%;height:1px;background:#fff3;transform:translateY(-50%)}.inclination-bar--horizontal:before{content:"";position:absolute;top:18%;bottom:18%;left:50%;width:1px;background:#fff3;transform:translate(-50%)}.inclination-bubble{position:absolute;width:10px;height:10px;border-radius:50%;border:1px solid rgba(255,255,255,.25);transform:translate(-50%,-50%);transition:top .1s ease-out,left .1s ease-out,background-color .25s ease,box-shadow .25s ease}.inclination-bar--vertical .inclination-bubble{top:var(--pos);left:50%}.inclination-bar--horizontal .inclination-bubble{left:var(--pos);top:50%}.inclination-bubble[data-level=ok]{background:#27ae60;box-shadow:0 0 5px #27ae6090}.inclination-bubble[data-level=warn]{background:#f5c518;box-shadow:0 0 5px #f5c51890}.inclination-bubble[data-level=danger]{background:#e74c3c;box-shadow:0 0 5px #e74c3c90}.compass-lock{position:absolute;top:4px;right:4px;width:22px;height:22px;padding:0;background:#14171c8c;border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:12px;line-height:1;cursor:pointer;pointer-events:auto;display:flex;align-items:center;justify-content:center}.compass-lock:hover{background:var(--accent);border-color:var(--accent)}.btn-home{position:absolute;bottom:24px;left:152px;background:#232730d9;color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:background .15s}.btn-home:hover{background:var(--accent);color:#1a1a1a;border-color:var(--accent)}.collision-banner{position:absolute;top:10px;left:50%;transform:translate(-50%);z-index:20;display:flex;align-items:center;gap:8px;background:#7f1d1deb;border:1px solid #ef4444;border-radius:8px;padding:7px 18px;color:#fecaca;font-size:13px;font-weight:700;letter-spacing:.03em;pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 2px 12px #ef444466;animation:collision-pulse 1.2s ease-in-out infinite}.collision-banner-icon{color:#ef4444;font-size:16px;will-change:opacity;animation:bounce-arrow .7s ease-in-out infinite alternate}@keyframes collision-pulse{0%,to{opacity:.92}50%{opacity:1}}@keyframes bounce-arrow{0%{opacity:.6}to{opacity:1}}.collision-prefs-tab{display:flex;flex-direction:column;gap:8px;padding:4px 0}.panel{background:var(--bg-panel-2);border:1px solid var(--border);border-radius:8px;padding:10px 12px}.panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.panel-header h2{margin:0;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim)}.btn{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:6px;padding:4px 10px;font-size:12px;cursor:pointer;transition:background .15s}.btn:hover{background:var(--border)}.btn-primary{background:var(--accent);color:#1a1a1a;border-color:var(--accent);font-weight:600}.btn-primary:hover{background:var(--accent-hover)}.btn-icon{padding:2px 8px}.leg-group{margin-top:10px;padding-top:8px;border-top:1px dashed var(--border)}.leg-group:first-of-type{border-top:none;margin-top:0;padding-top:0}.leg-title{font-size:12px;font-weight:600;color:var(--accent);margin-bottom:6px}.servo-row{margin-bottom:6px}.servo-label{display:flex;justify-content:space-between;font-size:11px;color:var(--text-dim)}.servo-val{color:var(--text);font-variant-numeric:tabular-nums}.servo-row input[type=range]{--track-bg: var(--bg);width:100%;height:16px;margin:2px 0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;cursor:pointer}.servo-row input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:var(--track-bg)}.servo-row input[type=range]::-moz-range-track{height:4px;border-radius:2px;background:var(--track-bg);border:none}.servo-row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent);margin-top:-5px;border:none}.servo-row input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--accent);border:none}.servo-row input[type=range].locked::-webkit-slider-thumb{background:#8a7a18}.servo-row input[type=range].locked::-moz-range-thumb{background:#8a7a18}.servo-range{display:flex;justify-content:space-between;font-size:10px;color:var(--text-dim)}.range-orig{color:#5b6678;font-style:italic}.lock-badge{margin-left:4px;font-size:10px;cursor:help}.collapsible-header{cursor:pointer;-webkit-user-select:none;user-select:none}.collapsible-header:hover h2{color:var(--text)}.collapse-caret{font-size:10px;color:var(--text-dim)}.cog-header-collapsed{margin-bottom:0}.geom-section{margin-top:8px}.geom-section:first-of-type{margin-top:0}.geom-row{display:grid;grid-template-columns:1fr 80px auto;gap:6px;align-items:center;margin:4px 0;font-size:12px}.geom-row-label{display:flex;align-items:center;gap:4px;min-width:0}.cog-axis-lock{flex-shrink:0;width:16px;height:16px;padding:0;background:transparent;border:none;font-size:10px;line-height:1;cursor:pointer;color:var(--text-dim);border-radius:2px;display:flex;align-items:center;justify-content:center}.cog-axis-lock:hover{color:var(--text)}.geom-cog-reset{display:flex;justify-content:flex-end;margin-top:6px}.profile-panel{padding:8px 10px}.profile-panel-row{display:flex;align-items:center;gap:6px}.profile-name-row{display:flex;align-items:center;gap:6px;padding:6px 12px 4px;font-size:11px}.profile-name-label{color:var(--text-dim);flex-shrink:0}.profile-name-value{color:var(--accent);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-name-value em{color:var(--text-dim);font-style:italic;font-weight:400}.profile-select{flex:1;min-width:0;background:var(--bg);color:var(--accent);font-weight:600;font-size:11px;border:1px solid var(--border);border-radius:4px;padding:2px 4px;cursor:pointer}.profile-select:focus{outline:none;border-color:var(--accent)}.geom-save-row{padding-top:4px;padding-bottom:6px}.btn-save-profile{flex-shrink:0;white-space:nowrap;font-size:14px;padding:2px 7px}.modal-title{margin:0 0 14px;font-size:15px;font-weight:600;color:var(--text)}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(12px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%);background:var(--bg-panel);color:var(--text);border:1px solid var(--accent);border-radius:8px;padding:9px 20px;font-size:13px;font-weight:500;white-space:nowrap;pointer-events:none;z-index:9999;animation:toast-in .2s ease}.geom-row input{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:3px 6px;font-size:12px;text-align:right}.geom-row .unit{color:var(--text-dim);font-size:11px}.empty{color:var(--text-dim);font-size:12px;font-style:italic;padding:8px 0}.toggle-row{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;align-items:center;column-gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-row input[type=checkbox]{grid-row:1 / span 2;width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.toggle-row>span:nth-of-type(1){font-size:13px;color:var(--text)}.toggle-row .hint{font-size:11px;color:var(--text-dim)}.copy-state-btn{margin-top:10px;width:100%;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:6px 8px;font-size:12px;cursor:pointer}.copy-state-btn:hover{background:var(--border)}.pose-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.pose-item{display:flex;gap:4px;align-items:center}.pose-name{flex:1;text-align:left;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:6px 8px;font-size:12px;cursor:pointer}.pose-name:hover{background:var(--border)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center}.modal{background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;padding:24px;width:100%;max-width:420px;max-height:90vh;overflow-y:auto;position:relative}.modal-close{position:absolute;top:12px;right:12px;background:none;border:none;color:var(--text-dim);font-size:14px;cursor:pointer;padding:4px 6px;border-radius:4px;line-height:1;transition:background .15s,color .15s}.modal-close:hover{background:var(--bg-panel-2);color:var(--text)}.modal-hint{color:var(--text-dim);font-size:10px;font-weight:400}.modal-tabs{display:flex;border-bottom:1px solid var(--border);margin-bottom:20px}.modal-tab{flex:1;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-dim);padding:8px;font-size:14px;cursor:pointer;transition:color .15s,border-color .15s}.modal-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.modal-form{display:flex;flex-direction:column;gap:14px}.modal-field{display:flex;flex-direction:column;gap:4px}.modal-field label{font-size:12px;color:var(--text-dim)}.modal-field input[type=text],.modal-field input[type=password]{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:8px 10px;font-size:13px}.modal-field input:focus{outline:none;border-color:var(--accent)}.modal-error{color:var(--danger);font-size:12px;margin:0}.modal-submit{margin-top:4px;padding:8px;font-size:14px}.avatar-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-top:4px}.avatar-tile{background:var(--bg);border:2px solid var(--border);border-radius:8px;padding:4px;cursor:pointer;transition:border-color .15s;display:flex;align-items:center;justify-content:center}.avatar-tile:hover{border-color:var(--text-dim)}.avatar-tile.selected{border-color:var(--accent);background:#f5c51814}.app-tabs{display:flex;align-items:stretch;background:var(--bg-panel);border-bottom:2px solid var(--border);flex-shrink:0;padding:0 16px;gap:0}.app-tab{background:none;border:none;border-bottom:3px solid transparent;margin-bottom:-2px;color:var(--text-dim);padding:10px 22px;font-size:13px;font-weight:600;letter-spacing:.3px;cursor:pointer;transition:color .15s,border-bottom-color .15s;white-space:nowrap}.app-tab:hover{color:var(--text)}.app-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:10px}.demo-badge{font-size:11px;color:var(--accent);opacity:.8;white-space:nowrap;display:flex;align-items:center}.user-button{display:flex;align-items:center;gap:6px;background:var(--bg-panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:5px 10px;font-size:12px;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s}.user-button:hover{background:var(--border)}.user-button-logged{padding:4px 8px}.user-button-icon{font-size:14px}.user-button-login{font-size:12px;max-width:100px;overflow:hidden;text-overflow:ellipsis}.user-button-caret{font-size:10px;color:var(--text-dim)}.user-button-wrapper{margin-left:auto;position:relative}.user-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:200px;max-width:320px;background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #0006;z-index:50;overflow:hidden}.user-menu-item{display:block;width:100%;text-align:left;background:none;border:none;border-bottom:1px solid var(--border);color:var(--text);padding:10px 14px;font-size:13px;cursor:pointer;transition:background .15s}.user-menu-item:last-child{border-bottom:none}.user-menu-item:hover{background:var(--bg-panel-2)}.user-menu-item-danger{color:var(--danger)}.user-menu-back{display:block;width:100%;text-align:left;background:none;border:none;border-bottom:1px solid var(--border);color:var(--text-dim);padding:8px 14px;font-size:12px;cursor:pointer;transition:background .15s}.user-menu-back:hover{background:var(--bg-panel-2)}.profile-menu{padding:12px}.profile-menu-title{margin:0 0 10px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim)}.profile-save-row{display:flex;gap:6px;margin-bottom:10px}.profile-name-input{flex:1;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:5px 8px;font-size:12px;min-width:0}.profile-update-btn{width:100%;margin-bottom:8px;font-size:12px;color:var(--accent);border-color:var(--accent);opacity:.85}.profile-update-btn:hover{background:#f5c5181a;opacity:1}.profile-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;max-height:300px;overflow-y:auto}.profile-item{display:flex;gap:4px;align-items:center}.profile-item.active .profile-name-btn{border-color:var(--accent);color:var(--accent)}.profile-name-btn{flex:1;text-align:left;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:6px 8px;font-size:12px;cursor:pointer;display:flex;align-items:center;gap:6px;transition:background .15s}.profile-name-btn:hover{background:var(--border)}.profile-active-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);flex-shrink:0}@keyframes banner-in{0%{opacity:0;transform:translate(-50%) translateY(16px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.install-banner{position:fixed;bottom:20px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;background:var(--bg-panel);border:1px solid var(--accent);border-radius:14px;padding:12px 14px 12px 12px;z-index:9990;box-shadow:0 8px 32px #0000008c;max-width:min(460px,92vw);animation:banner-in .3s ease}.install-banner-logo{flex-shrink:0;display:flex;align-items:center}.install-banner-body{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.install-banner-title{font-size:13px;font-weight:700;color:var(--accent)}.install-banner-hint{font-size:12px;color:var(--text-dim);display:flex;align-items:center;gap:4px;flex-wrap:wrap}.install-share-icon{display:inline-block;width:14px;height:14px;vertical-align:middle;color:var(--text);flex-shrink:0}.install-banner-btn{flex-shrink:0;font-size:12px;padding:6px 14px;white-space:nowrap}.install-banner-close{flex-shrink:0;background:none;border:none;color:var(--text-dim);cursor:pointer;padding:4px 6px;font-size:13px;border-radius:4px;line-height:1;transition:color .15s,background .15s}.install-banner-close:hover{color:var(--text);background:var(--bg-panel-2)}.leg-layout-picker{display:flex;gap:10px}.leg-layout-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;background:var(--bg);border:2px solid var(--border);border-radius:8px;padding:10px 8px;cursor:pointer;color:var(--text-dim);font-size:12px;transition:border-color .15s,color .15s,background .15s}.leg-layout-btn:hover{border-color:var(--text-dim);color:var(--text)}.leg-layout-btn.active{border-color:var(--accent);color:var(--accent);background:#f5c5180f}.leg-layout-svg{width:60px;height:40px}.profile-panel-gear-row{margin-top:4px}.btn-profile-gear{width:100%;text-align:left;padding:3px 8px;font-size:11px;line-height:1.4;color:var(--text-dim);white-space:nowrap}.btn-profile-gear:hover{color:var(--accent);background:var(--bg-panel-2)}.modal-wide{max-width:760px;width:92vw;padding:20px 22px 18px}.modal-auth{max-width:700px;width:92vw;overflow-x:hidden}.auth-layout{display:flex;gap:0;min-width:0}.auth-form-col{flex:0 0 50%;min-width:0;padding-right:22px;border-right:1px solid var(--border)}.auth-robot-panel{flex:0 0 50%;min-width:0;padding-left:22px;display:flex;align-items:center;overflow:hidden}.auth-robot-text{font-family:Courier New,Courier,monospace;font-size:11px;line-height:1.7;color:var(--text-dim);margin:0;white-space:pre-wrap;word-break:break-word;width:100%}.auth-cursor{display:inline-block;width:.55ch;height:1.1em;background:var(--accent);vertical-align:text-bottom;margin-left:1px;animation:blink-cursor .75s step-end infinite}@keyframes blink-cursor{0%,to{opacity:1}50%{opacity:0}}.settings-layout{display:flex;gap:0;min-height:420px;max-height:62vh;overflow:hidden;margin:0 -4px}.settings-tabs{width:138px;flex-shrink:0;border-right:1px solid var(--border);padding:4px 0;display:flex;flex-direction:column;gap:2px}.settings-tab{background:none;border:none;border-right:2px solid transparent;margin-right:-1px;color:var(--text-dim);padding:9px 14px;font-size:13px;text-align:left;cursor:pointer;transition:background .15s,color .15s;border-radius:4px 0 0 4px}.settings-tab:hover{background:var(--bg-panel-2);color:var(--text)}.settings-tab.active{background:var(--bg-panel-2);color:var(--accent);border-right-color:var(--accent)}.settings-content{flex:1;overflow-y:auto;padding:4px 0 4px 18px}.settings-textarea{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:8px 10px;font-size:13px;resize:vertical;font-family:inherit}.settings-textarea:focus{outline:none;border-color:var(--accent)}.settings-modal-actions{margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}.servos-tab{display:flex;flex-direction:column;gap:14px}.servos-section{display:flex;flex-direction:column;gap:8px}.servos-section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim)}.servos-hint{font-size:12px;color:var(--text-dim);font-style:italic;padding:10px 0}.servo-combobox{position:relative}.servo-combobox-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:7px 10px;font-size:13px;cursor:pointer;text-align:left;transition:border-color .15s}.servo-combobox-trigger:hover{border-color:var(--text-dim)}.sct-brand{color:var(--text-dim);font-size:11px;margin-right:4px}.sct-none{color:var(--text-dim);font-style:italic}.sct-caret{color:var(--text-dim);font-size:10px;flex-shrink:0}.servo-combobox-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:300;background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #00000073;overflow:hidden}.servo-combobox-search{display:block;width:100%;background:var(--bg);color:var(--text);border:none;border-bottom:1px solid var(--border);padding:8px 10px;font-size:13px;font-family:inherit}.servo-combobox-search:focus{outline:none}.servo-combobox-list{max-height:190px;overflow-y:auto}.servo-combobox-option{display:flex;align-items:center;gap:8px;width:100%;background:none;border:none;color:var(--text);padding:7px 12px;font-size:13px;cursor:pointer;text-align:left;transition:background .1s}.servo-combobox-option:hover{background:var(--bg-panel-2)}.servo-combobox-option.selected{color:var(--accent);background:#f5c5180f}.sco-brand{color:var(--text-dim);font-size:11px;min-width:70px}.sco-model{font-weight:600}.sco-tag{font-size:10px;background:var(--bg);border:1px solid var(--border);border-radius:3px;padding:1px 5px;color:var(--text-dim);margin-left:auto}.servo-combobox-empty{padding:8px 12px;font-size:12px;color:var(--text-dim);font-style:italic}.servo-combobox-new{display:block;width:100%;background:none;border:none;border-top:1px solid var(--border);color:var(--accent);padding:8px 12px;font-size:12px;font-weight:600;cursor:pointer;text-align:left;transition:background .1s}.servo-combobox-new:hover{background:#f5c51814}.servo-spec-card{background:var(--bg);border:1px solid var(--border);border-radius:8px;overflow:hidden}.ssc-header{display:flex;justify-content:space-between;align-items:flex-start;padding:10px 12px 8px;border-bottom:1px solid var(--border);background:var(--bg-panel-2)}.ssc-model{font-size:16px;font-weight:700;color:var(--accent)}.ssc-brand{font-size:11px;color:var(--text-dim);margin-top:2px}.ssc-tags{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end;max-width:200px}.ssc-tag{font-size:10px;border:1px solid var(--border);border-radius:3px;padding:2px 6px;color:var(--text-dim);white-space:nowrap}.ssc-tag.gear-metal{color:#85afd6;border-color:#85afd655}.ssc-tag.gear-titanium{color:#b28cf5;border-color:#b28cf555}.ssc-tag.gear-plastic{color:#7db87d;border-color:#7db87d55}.ssc-grid{display:grid;grid-template-columns:1fr 1fr}.ssc-row{display:flex;justify-content:space-between;align-items:center;padding:5px 12px;font-size:12px;border-bottom:1px solid rgba(42,47,58,.5);gap:8px}.ssc-row:nth-child(odd){background:#ffffff04}.ssc-row span:first-child{color:var(--text-dim);white-space:nowrap}.ssc-row span:last-child{color:var(--text);font-variant-numeric:tabular-nums;text-align:right}.ssc-notes{padding:7px 12px;font-size:11px;color:var(--text-dim);font-style:italic;border-top:1px solid var(--border)}.leg-calib-sections{display:flex;flex-direction:column;gap:4px}.leg-accordion{border:1px solid var(--border);border-radius:6px;overflow:hidden}.leg-accordion-header{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg);border:none;color:var(--text);cursor:pointer;width:100%;text-align:left;font-size:13px;font-weight:600;transition:background .15s}.leg-accordion-header:hover{background:var(--bg-panel-2)}.leg-index-badge{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--border);color:var(--text-dim);font-size:10px;font-weight:700;flex-shrink:0}.leg-accordion-caret{margin-left:auto;font-size:10px;color:var(--text-dim)}.leg-accordion-content{padding:10px 12px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:8px;background:var(--bg-panel-2)}.servo-calib-block{background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;padding:8px 10px}.scb-joint-label{font-size:10px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.6px;margin-bottom:7px}.scb-row{display:grid;grid-template-columns:118px 1fr;align-items:center;gap:8px;margin-bottom:5px;font-size:12px}.scb-label{color:var(--text-dim);text-align:right}.scb-inputs{display:flex;align-items:center;gap:5px}.scb-num-input{width:60px;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:3px 6px;font-size:12px;text-align:right;font-variant-numeric:tabular-nums}.scb-num-input:focus{outline:none;border-color:var(--accent)}.scb-arrow,.scb-unit{color:var(--text-dim);font-size:11px}.scb-invert-label{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:12px;color:var(--text)}.scb-invert-label input[type=checkbox]{accent-color:var(--accent);width:14px;height:14px}.new-servo-form{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:14px}.nsf-title{font-size:13px;font-weight:600;color:var(--text);margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--border)}.nsf-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.nsf-field{display:flex;flex-direction:column;gap:3px}.nsf-label{font-size:11px;color:var(--text-dim)}.nsf-input,.nsf-select{background:var(--bg-panel);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:5px 8px;font-size:12px;font-family:inherit}.nsf-input:focus,.nsf-select:focus{outline:none;border-color:var(--accent)}.nsf-dim-row{display:flex;gap:4px}.nsf-dim-row .nsf-input{flex:1;min-width:0}.nsf-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px;padding-top:10px;border-top:1px solid var(--border)}.toolbox{background:var(--bg-panel-2);border:1px solid var(--border);border-radius:8px;overflow:hidden;flex-shrink:0}.toolbox-floating{position:fixed;left:var(--tx, 300px);top:var(--ty, 120px);width:290px;z-index:var(--tz, 100);box-shadow:0 8px 32px #000000a6;border-color:var(--accent);max-height:calc(100vh - 80px);display:flex;flex-direction:column;transition:left .25s ease,top .25s ease}.toolbox-dragging{opacity:.9;pointer-events:none;z-index:200;box-shadow:0 16px 48px #000000d9;transition:none}.toolbox-header{display:flex;align-items:center;gap:6px;padding:6px 10px;background:var(--bg-panel);cursor:grab;-webkit-user-select:none;user-select:none;border-bottom:1px solid var(--border)}.toolbox-header:active{cursor:grabbing}.toolbox-drag-handle{color:var(--text-dim);font-size:13px;flex-shrink:0;opacity:.4;transition:opacity .15s}.toolbox-header:hover .toolbox-drag-handle{opacity:1}.toolbox-title{flex:1;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-dim)}.toolbox-pin{background:none;border:none;color:var(--text-dim);cursor:pointer;padding:1px 5px;font-size:14px;font-weight:700;border-radius:4px;line-height:1;flex-shrink:0}.toolbox-pin:hover{background:var(--bg-panel-2);color:var(--text)}.toolbox-body{padding:10px 12px;overflow-y:auto}.toolbox-floating .toolbox-body{flex:1;min-height:0}.toolbox-reset{display:flex;justify-content:flex-end;margin-top:8px;padding-top:8px;border-top:1px dashed var(--border)}.insert-marker{height:3px;border-radius:2px;background:transparent;flex-shrink:0;transition:background .1s,box-shadow .1s}.insert-marker.active{background:var(--accent);box-shadow:0 0 8px var(--accent)}.sequencer-panel{position:relative;flex:0 0 auto;height:0;background:var(--bg-panel);border-top:1px solid var(--border);overflow:visible;transition:height .25s ease;z-index:10}.sequencer-panel.open{height:var(--seq-panel-h, 258px)}.sequencer-panel.resizing{transition:none}.sequencer-panel.seq-drop-zone .seq-panel-handle{border-style:dashed;border-color:var(--accent);background:#f5c51824;color:var(--accent);transition:none}.sequencer-panel.open.seq-drop-zone .sequencer-content{box-shadow:inset 0 0 0 2px var(--accent),inset 0 0 24px #f5c5180f}.seq-resize-handle{flex:0 0 5px;cursor:ns-resize;background:transparent;position:relative;transition:background .15s}.seq-resize-handle:after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:36px;height:3px;background:var(--border);border-radius:2px;transition:background .15s,width .15s}.seq-resize-handle:hover{background:#f5c51812}.seq-resize-handle:hover:after{background:var(--accent);width:56px}.seq-panel-handle{position:absolute;top:0;left:50%;transform:translate(-50%) translateY(-100%);height:18px;padding:0 14px;background:var(--bg-panel-2);color:var(--text-dim);border:1px solid var(--border);border-bottom:none;border-radius:6px 6px 0 0;font-size:11px;white-space:nowrap;cursor:pointer;z-index:5;display:flex;align-items:center;gap:6px;transition:background .15s,color .15s,border-color .15s}.seq-panel-handle:hover{background:var(--accent);color:#1a1a1a;border-color:var(--accent)}.sequencer-content{overflow:hidden;height:100%;display:flex;flex-direction:column}.seq-toolbar{flex:0 0 38px;display:flex;align-items:center;gap:5px;padding:0 10px;background:var(--bg-panel);border-bottom:1px solid var(--border)}.seq-btn{width:26px;height:22px;display:flex;align-items:center;justify-content:center;background:var(--bg-panel-2);border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:11px;cursor:pointer;transition:background .1s,border-color .1s,color .1s}.seq-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.seq-btn:disabled{opacity:.35;cursor:not-allowed}.seq-btn-active{background:#f5c51826;border-color:var(--accent);color:var(--accent)}.seq-btn-paused{background:#63b3ed1f;border-color:#63b3ed;color:#63b3ed}.toolbox-floating[data-toolbox-id=seq-ctrl]{width:auto;min-width:0}[data-toolbox-id=seq-ctrl] .toolbox-body{padding:5px 8px}.seq-controls{display:flex;align-items:center;gap:8px;padding:4px 2px;justify-content:center}.seq-ctrl-btn{width:38px;height:26px;border-radius:5px;border:none;border-bottom:3px solid rgba(0,0,0,.28);font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .07s,border-bottom-width .07s,filter .1s;box-shadow:inset 0 1px #ffffff38;position:relative}.seq-ctrl-btn--play{background:#22c55e;color:#fff}.seq-ctrl-btn--pause{background:#d97706;color:#fff}.seq-ctrl-btn--stop{background:#ea580c;color:#fff}.seq-ctrl-btn:disabled{opacity:.32;cursor:not-allowed;border-bottom-color:#0000001f;box-shadow:none}.seq-ctrl-btn:not(:disabled):hover{filter:brightness(1.12);transform:translateY(-1px)}.seq-ctrl-btn:not(:disabled):active{transform:translateY(2px);border-bottom-width:1px;box-shadow:inset 0 2px 4px #0000002e}.seq-ctrl-error{width:100%;font-size:10px;color:var(--danger, #f87171);text-align:center;cursor:pointer;opacity:.85;margin-top:4px}.toolbox-inline{display:flex;align-items:center;gap:4px}.toolbox-drag-handle--sm{font-size:10px;cursor:grab;opacity:.45;padding:2px 1px}.toolbox-drag-handle--sm:hover{opacity:1}.toolbox-inline .seq-controls{padding:0;gap:5px}.toolbox-inline .seq-ctrl-btn{width:28px;height:20px;border-radius:4px;font-size:10px;border-bottom-width:2px}.seq-sep{width:1px;height:18px;background:var(--border);margin:0 4px;flex-shrink:0}.seq-ctrl{display:flex;align-items:center;gap:5px;font-size:11px;cursor:default}.seq-ctrl-label{color:var(--text-dim);white-space:nowrap}.seq-ctrl input[type=range]{width:68px;height:3px;accent-color:var(--accent);cursor:pointer}.seq-ctrl-val{color:var(--accent);font-size:11px;min-width:28px;font-variant-numeric:tabular-nums}.seq-play-error{padding:6px 10px;background:#4a1a1a;color:#f88;font-size:11px;border-top:1px solid #7a3030;cursor:pointer;-webkit-user-select:none;user-select:none}.seq-scroll-wrapper{flex:1;overflow:auto;background:var(--bg)}.seq-inner{display:flex;flex-direction:row;width:max-content;min-height:100%}.seq-sticky-labels{position:sticky;left:0;z-index:3;background:var(--bg-panel-2);flex:0 0 112px;display:flex;flex-direction:column;border-right:2px solid var(--border)}.seq-hdr-cell{flex:0 0 30px;display:flex;align-items:center;padding:0 8px;font-size:10px;color:var(--text-dim);background:var(--bg-panel-2);border-bottom:1px solid var(--border);white-space:nowrap}.seq-labels-hdr{text-transform:uppercase;letter-spacing:.5px;font-size:9px}.seq-label-row{flex:0 0 22px;display:flex;align-items:center;gap:5px;padding:0 6px;cursor:grab;transition:background .1s;border-bottom:1px solid rgba(42,47,58,.5)}.seq-label-row:hover{background:#ffffff0a}.seq-label-row.drag-over{background:#f5c5181f;border-top:2px solid var(--accent)}.seq-row-drag{color:var(--text-dim);font-size:9px;opacity:.45;flex-shrink:0}.seq-row-label-text{font-size:10px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.seq-step-col{flex:0 0 74px;display:flex;flex-direction:column;border-right:1px solid var(--border);transition:background .35s ease}.seq-step-col.active{background:#f5c5180f}.seq-step-col.drag-col-over{outline:2px dashed var(--accent);outline-offset:-2px}.seq-step-hdr{justify-content:space-between;padding:0 4px 0 7px;gap:2px;transition:background .35s ease,color .35s ease;overflow:visible}.seq-step-col.active .seq-step-hdr{background:#f5c5182e;color:var(--accent);border-bottom-color:var(--accent)}.seq-step-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;cursor:pointer}.seq-step-actions{display:flex;gap:1px;opacity:0;pointer-events:none;transition:opacity .12s;flex-shrink:0}.seq-step-hdr:hover .seq-step-actions{opacity:1;pointer-events:auto}.seq-icon-btn{width:14px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--text-dim);font-size:11px;cursor:pointer;border-radius:2px;padding:0;line-height:1}.seq-icon-btn:hover{background:var(--border);color:var(--text)}.seq-icon-btn-danger:hover{color:var(--danger)}.seq-cell{flex:0 0 22px;display:flex;align-items:center;justify-content:center;font-size:10px;font-family:Courier New,monospace;border-bottom:1px solid rgba(42,47,58,.5);color:var(--text-dim);transition:background .35s ease,color .35s ease;-webkit-user-select:none;user-select:none}.seq-step-col.active .seq-cell{color:var(--text)}.seq-cell-empty{cursor:default}.seq-add-col{flex:0 0 72px;display:flex;flex-direction:column}.seq-add-btn{background:transparent;border:1px dashed var(--border);border-radius:4px;color:var(--text-dim);font-size:10px;cursor:pointer;padding:2px 6px;transition:border-color .15s,color .15s;white-space:nowrap}.seq-add-btn:hover{border-color:var(--accent);color:var(--accent)}.seq-toolbar-left{display:flex;align-items:center;gap:5px;flex:1;flex-wrap:nowrap}.seq-toolbar-right{display:flex;align-items:center;gap:5px;flex-shrink:0}.seq-interp-toggle{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--text-muted, #888);cursor:pointer;-webkit-user-select:none;user-select:none}.seq-interp-toggle input{cursor:pointer;accent-color:var(--accent, #7c9ef8)}.seq-step-col.interpolated .seq-step-hdr{opacity:.55}.seq-step-col.interpolated .seq-cell{opacity:.45;font-style:italic}.seq-step-col.interpolated .seq-step-name{color:var(--text-muted, #888)}.seq-step-col.interpolated{border-top:2px solid transparent;border-image:repeating-linear-gradient(90deg,#7c9ef855 0 4px,transparent 4px 8px) 1}.seq-btn-save{font-size:12px}.seq-btn-generate{width:auto;padding:0 8px;white-space:nowrap;gap:4px;display:inline-flex;align-items:center}.seq-name-select{height:22px;max-width:160px;min-width:80px;background:var(--bg-panel-2);border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:11px;padding:0 6px;cursor:pointer;outline:none;transition:border-color .15s}.seq-name-select:hover{border-color:var(--accent)}.seq-name-select:focus{border-color:var(--accent)}.seq-demo-name{font-size:12px;color:var(--text-dim);font-style:italic;padding:0 4px}.seq-options-wrap{position:relative}.seq-options-menu{min-width:140px;background:var(--bg-panel-2);border:1px solid var(--border);border-radius:6px;box-shadow:0 4px 16px #00000073;overflow:hidden;padding:3px 0}.seq-options-menu-portal{position:fixed;bottom:var(--om-bottom);right:var(--om-right);z-index:10000}.seq-step-ctx-menu{background:var(--panel-bg, #1e1e2e);border:1px solid var(--border, #444);border-radius:6px;overflow:hidden;padding:3px 0;min-width:120px}.seq-step-ctx-menu-portal{position:fixed;top:var(--scm-top);left:var(--scm-left);z-index:10000}.seq-step-ctx-menu button{display:block;width:100%;padding:5px 12px;background:none;border:none;color:inherit;text-align:left;font-size:12px;cursor:pointer}.seq-step-ctx-menu button:hover{background:#ffffff14}.seq-step-ctx-menu button.danger{color:#f28b82}.seq-step-ctx-menu button.danger:hover{background:#f28b821f}.seq-options-item{display:block;width:100%;padding:6px 12px;background:transparent;border:none;color:var(--text);font-size:11px;text-align:left;cursor:pointer;transition:background .1s}.seq-options-item:hover{background:#ffffff12}.seq-options-item-danger{color:var(--danger)}.seq-options-item-danger:hover{background:#ef44441f}.seq-options-sep{height:1px;background:var(--border);margin:3px 0}.seq-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:500;display:flex;align-items:center;justify-content:center}.seq-modal{background:var(--bg-panel-2);border:1px solid var(--border);border-radius:10px;padding:20px 24px;min-width:300px;box-shadow:0 8px 32px #0009;display:flex;flex-direction:column;gap:12px}.seq-modal-title{font-size:13px;font-weight:600;color:var(--text)}.seq-modal-input{width:100%;height:32px;background:var(--bg);border:1px solid var(--border);border-radius:5px;color:var(--text);font-size:12px;padding:0 10px;outline:none;transition:border-color .15s;box-sizing:border-box}.seq-modal-input:focus{border-color:var(--accent)}.seq-modal-error{font-size:11px;color:var(--danger)}.seq-modal-actions{display:flex;justify-content:flex-end;gap:8px}.seq-modal-btn{height:28px;padding:0 14px;background:var(--bg-panel);border:1px solid var(--border);border-radius:5px;color:var(--text);font-size:11px;cursor:pointer;transition:background .1s,border-color .1s}.seq-modal-btn:hover{border-color:var(--accent);color:var(--accent)}.seq-modal-btn-primary{background:var(--accent);border-color:var(--accent);color:#1a1a1a;font-weight:600}.seq-modal-btn-primary:hover{background:#e6b800;border-color:#e6b800;color:#1a1a1a}.step-info-panel{position:absolute;bottom:48px;right:12px;background:#15171ce0;border:1px solid var(--border);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:8px;min-width:180px;box-shadow:0 4px 20px #00000080;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:20}.step-info-name{width:100%;height:26px;background:transparent;border:1px solid transparent;border-radius:4px;color:var(--text);font-size:13px;font-weight:600;padding:0 6px;outline:none;box-sizing:border-box;cursor:default;transition:background .15s,border-color .15s}.step-info-name:hover{background:var(--bg-panel-2);border-color:var(--border);cursor:text}.step-info-name:focus{background:var(--bg-panel-2);border-color:var(--accent);cursor:text}.step-info-actions{display:flex;gap:5px;align-items:center}.step-info-btn{height:24px;padding:0 9px;background:var(--bg-panel-2);border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:11px;cursor:pointer;transition:background .1s,border-color .1s,color .1s}.step-info-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.step-info-btn:disabled{opacity:.3;cursor:not-allowed}.step-info-btn-save{flex:1;background:#f5c5181f;border-color:var(--accent);color:var(--accent);font-weight:600}.step-info-btn-save:hover:not(:disabled){background:var(--accent);color:#1a1a1a}@media (max-width: 900px){.layout{grid-template-columns:1fr;grid-template-rows:1fr auto}.sidebar{max-height:40vh}.sidebar-left,.sidebar-right{border:none;border-top:1px solid var(--border)}}.btn-sm{padding:2px 8px;font-size:11px}.btn-danger{border-color:#c0392b;color:#c0392b}.btn-danger:hover{background:#c0392b26}.sequences-tab{display:flex;flex-direction:column;gap:12px;height:100%}.sequences-list{flex:1;display:flex;flex-direction:column;gap:4px;overflow-y:auto;min-height:60px}.seq-empty{color:var(--text-dim);font-size:12px;padding:12px 0;text-align:center}.seq-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--border);border-radius:6px;background:var(--bg)}.seq-info{flex:1;min-width:0}.seq-name{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.seq-meta{font-size:10px;color:var(--text-dim)}.seq-actions{display:flex;gap:4px;flex-shrink:0}.gait-generator{display:flex;flex-direction:column;gap:14px}.ggt-title{font-size:13px;font-weight:600;color:var(--text)}.ggt-section{display:flex;flex-direction:column;gap:6px}.ggt-section-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim)}.ggt-checkboxes{display:flex;flex-direction:column;gap:5px}.ggt-check-label{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer}.ggt-check-label input[type=checkbox]{accent-color:var(--accent);width:14px;height:14px}.ggt-slider-row{display:grid;grid-template-columns:100px 1fr 36px;align-items:center;gap:8px}.ggt-slider-label{font-size:12px;color:var(--text-dim)}.ggt-slider{accent-color:var(--accent);width:100%}.ggt-slider-value{font-size:12px;color:var(--text);text-align:right}.ggt-limits-row{display:flex;align-items:center;gap:14px;font-size:12px}.ggt-limits-row label{display:flex;align-items:center;gap:5px;cursor:pointer}.ggt-limits-row input[type=radio]{accent-color:var(--accent)}.ggt-preview{display:flex;flex-direction:column;gap:8px}.seq-btn-programs{font-size:13px;height:28px;width:120px;padding:0 20px;color:var(--text-dim);border-color:var(--border);margin-left:auto;margin-right:40px;white-space:nowrap;flex-shrink:0;align-self:center}.seq-btn-programs:hover{background:var(--bg-panel-2);color:var(--accent);border-color:var(--accent)}.program-page{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding:20px 24px 16px;background:var(--bg)}.program-layout{display:flex;flex:1;min-height:0;gap:0;overflow:hidden}.program-sidebar{width:180px;flex-shrink:0;border-right:1px solid var(--border);padding-right:12px;overflow-y:auto;display:flex;flex-direction:column;gap:4px}.program-sidebar-head{font-size:11px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.program-sidebar-item{background:none;border:1px solid transparent;border-radius:6px;color:var(--text);padding:6px 10px;font-size:13px;cursor:pointer;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background .15s}.program-sidebar-item:hover{background:var(--bg-panel-2)}.program-sidebar-item.active{border-color:var(--accent);color:var(--accent);background:#f5c5180f}.program-new-btn{margin-top:8px}.program-editor{flex:1;padding-left:16px;overflow-y:auto;display:flex;flex-direction:column;gap:0;min-width:0}.program-empty-hint{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text-dim);font-size:13px;text-align:center;line-height:1.6}.program-name-input{width:100%;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 10px;font-size:14px;font-weight:600;margin-bottom:14px}.program-name-input:focus{outline:none;border-color:var(--accent)}.program-flow{display:flex;flex-direction:column;align-items:stretch;gap:0;flex:1}.flow-arrow{text-align:center;color:var(--text-dim);font-size:14px;line-height:1;padding:3px 0;-webkit-user-select:none;user-select:none}.flow-block{border:1px solid var(--border);border-radius:8px;background:var(--bg-panel-2);padding:10px 12px;position:relative}.flow-block-init{border-color:#2d5fa0;background:#2d5fa01a}.flow-block-loop{border-color:#6a3f9a;background:#6a3f9a1a}.flow-init-hint{margin:6px 0 0;font-size:11px;color:var(--text-dim)}.flow-block-label{font-size:11px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.flow-step-btns{position:absolute;top:8px;right:8px;display:flex;gap:2px;opacity:0;transition:opacity .15s}.flow-block-step:hover .flow-step-btns{opacity:1}.flow-step-btn{background:var(--bg);border:1px solid var(--border);color:var(--text-dim);border-radius:3px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;font-size:11px;cursor:pointer;padding:0;transition:background .12s,color .12s}.flow-step-btn:hover{background:var(--border);color:var(--text)}.flow-step-btn:disabled{opacity:.3;cursor:default}.flow-step-btn-del:hover{background:#c0392b33;color:var(--danger)}.flow-row{display:flex;align-items:center;gap:8px}.flow-hint{font-size:12px;color:var(--text-dim);flex-shrink:0}.flow-init-name{font-size:13px;color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.flow-select{flex:1;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:4px 6px;font-size:12px}.flow-select:focus{outline:none;border-color:var(--accent)}.flow-add-btn{background:none;border:1px dashed var(--border);border-radius:8px;color:var(--text-dim);padding:8px 12px;font-size:12px;cursor:pointer;text-align:center;transition:border-color .15s,color .15s;width:100%}.flow-add-btn:hover{border-color:var(--accent);color:var(--accent)}.flow-add-panel{border:1px solid var(--border);border-radius:8px;background:var(--bg-panel-2);overflow:hidden;display:flex;flex-direction:column}.flow-add-option{background:none;border:none;border-bottom:1px solid var(--border);color:var(--text);padding:9px 14px;font-size:13px;cursor:pointer;text-align:left;transition:background .15s}.flow-add-option:hover{background:var(--bg)}.flow-add-cancel{background:none;border:none;color:var(--text-dim);padding:7px 14px;font-size:12px;cursor:pointer;text-align:center;transition:color .15s}.flow-add-cancel:hover{color:var(--text)}.flow-loop-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.flow-loop-opt{display:flex;align-items:center;gap:4px;font-size:12px;cursor:pointer}.flow-loop-opt input[type=radio]{accent-color:var(--accent);cursor:pointer}.program-actions-row{display:flex;align-items:center;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}.flow-btn-right{margin-left:auto;flex-shrink:0}.flow-loop-select{width:110px}.text-sm-danger{font-size:12px;color:var(--danger)}.program-spacer{flex:1}.picker-seq-select{margin-top:4px}.picker-msg{color:var(--text-dim);font-size:13px;margin:0}.seq-picker-list{max-height:300px;overflow-y:auto;margin:12px 0;display:flex;flex-direction:column;gap:4px}.seq-picker-item{background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:8px 12px;font-size:13px;cursor:pointer;text-align:left;transition:border-color .15s,background .15s}.seq-picker-item:hover{border-color:var(--accent);background:#f5c5180f}.ggt-preview-row{display:flex;align-items:center;gap:8px}.ggt-preview-gait{font-size:11px;color:var(--text-dim);width:52px;flex-shrink:0}.ggt-stability-bar-wrap{flex:1}.ggt-stability-bar{position:relative;display:flex;height:22px;border-radius:4px;overflow:visible;border:1px solid var(--border)}.ggt-sz{flex:1;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;overflow:hidden;white-space:nowrap}.ggt-sz-0{background:#c0392b8c;color:#f8b8b0;border-radius:3px 0 0 3px}.ggt-sz-1{background:#d3540073;color:#f0c090}.ggt-sz-2{background:#f39c1259;color:#f5d88a}.ggt-sz-3{background:#27ae604d;color:#a8e6c0}.ggt-sz-4{background:#27ae608c;color:#6ddc9a;border-radius:0 3px 3px 0}.ggt-stability-needle{position:absolute;top:-3px;bottom:-3px;width:3px;border-radius:2px;background:#fff;box-shadow:0 0 4px #000000b3;left:var(--needle-pos, 50%);transform:translate(-50%);pointer-events:none}.ggt-warning-note{font-size:11px;color:#e67e22;padding:4px 8px;background:#e67e221a;border-radius:4px;border-left:2px solid #e67e22}.ggt-actions{display:flex;gap:8px;justify-content:flex-end;padding-top:4px;border-top:1px solid var(--border)}.toggle-row--disabled{opacity:.45;cursor:not-allowed}.toggle-row--disabled input{cursor:not-allowed}.torque-legend{display:flex;flex-direction:column;gap:4px;padding:8px 10px;background:var(--bg);border:1px solid var(--border);border-radius:6px;font-size:11px}.tl-row{display:flex;align-items:center;gap:7px}.tl-dot{display:inline-block;width:10px;height:10px;border-radius:50%;flex-shrink:0}.tl-dot--green{background:#22c55e}.tl-dot--yellow{background:#eab308}.tl-dot--orange{background:#f97316}.tl-dot--red{background:#ef4444}.tl-note{margin-top:3px;color:var(--text-dim);font-size:10px;font-style:italic}.perf-section-row{display:flex;align-items:center;gap:5px;margin-top:10px;padding-top:8px;border-top:1px solid var(--border);position:relative}.perf-section-row+.perf-section-row{margin-top:4px;padding-top:0;border-top:none}.perf-dot{display:inline-block;width:10px;height:2px;border-radius:1px;flex-shrink:0}.perf-section-label{flex:1;font-size:11px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px}.info-btn{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;border:1px solid var(--text-dim);background:none;color:var(--text-dim);font-size:10px;font-style:italic;font-weight:700;cursor:pointer;flex-shrink:0;padding:0;line-height:1}.info-btn:hover{border-color:var(--accent);color:var(--accent)}.perf-popover{position:absolute;left:0;top:calc(100% + 4px);z-index:200;width:240px;background:var(--bg-panel-2);border:1px solid var(--border);border-radius:6px;padding:8px 10px;font-size:11px;color:var(--text);line-height:1.5;box-shadow:0 4px 16px #00000080}.perf-popover p{margin:0 0 5px}.perf-popover p:last-child{margin:0}.perf-popover code{font-family:monospace;background:var(--bg);padding:1px 4px;border-radius:3px;font-size:10px}.perf-pop-warn{color:#fb923c;font-style:italic;font-size:10px}.perf-hint{font-size:11px;color:var(--text-dim);font-style:italic;margin-top:4px}.power-chart-svg{display:block;margin-top:4px}.perf-legend-line{display:inline-block;width:12px;height:2px;border-radius:1px;flex-shrink:0}.perf-legend-line--meca{background:var(--accent)}.perf-legend-line--elec{background:#60a5fa}.perf-dot--meca{background:var(--accent)}.perf-dot--elec{background:#60a5fa}.perf-table-wrap{margin-top:5px;border:1px solid var(--border);border-radius:4px;overflow:hidden;background:var(--bg)}.perf-table{width:100%;font-size:11px;border-collapse:collapse}.perf-table th{color:var(--text-dim);font-size:10px;font-weight:500;text-align:right;padding:2px 6px 2px 4px;border-bottom:1px solid var(--border)}.perf-table th:first-child{text-align:left;padding-left:6px}.perf-table td{color:var(--text);text-align:right;padding:3px 6px 3px 4px;font-variant-numeric:tabular-nums}.perf-table td:first-child{text-align:left;padding-left:6px}.perf-table tbody tr+tr td{border-top:1px solid var(--border)}.perf-table-label{display:inline-flex;align-items:center;gap:5px;color:var(--text-dim);font-size:10px}.perf-note{font-size:10px;color:var(--text-dim);font-style:italic;margin-top:4px}.hardware-tab{display:flex;flex-direction:column;gap:20px}.hw-section{display:flex;flex-direction:column;gap:10px}.hw-section-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--text-dim);padding-bottom:4px;border-bottom:1px solid var(--border)}.hw-weight-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.hw-field{display:flex;flex-direction:column;gap:3px}.hw-label{font-size:13px;font-weight:500;color:var(--text)}.hw-sublabel{font-size:11px;color:var(--text-dim);line-height:1.3}.hw-input-row{display:flex;align-items:center;gap:6px;margin-top:4px}.hw-num-input{width:90px;padding:5px 8px;background:var(--bg);border:1px solid var(--border);border-radius:5px;color:var(--text);font-size:13px;text-align:right}.hw-num-input:focus{outline:none;border-color:var(--accent)}.hw-unit{font-size:12px;color:var(--text-dim)}.hw-estimate-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;background:var(--bg);border:1px solid var(--border);border-radius:6px}.hw-estimate-hint{font-size:11px;color:var(--text-dim);flex:1;min-width:0}.hw-spec-card{background:var(--bg);border:1px solid var(--border);border-radius:8px;overflow:hidden}.hw-spec-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:5px 10px;font-size:12px;border-bottom:1px solid var(--border)}.hw-spec-row:last-of-type{border-bottom:none}.hw-spec-row span:first-child{color:var(--text-dim);flex-shrink:0}.hw-spec-row span:last-child{color:var(--text);text-align:right;word-break:break-word}.hw-spec-notes{padding:6px 10px 8px;font-size:11px;color:var(--text-dim);font-style:italic;border-top:1px solid var(--border);line-height:1.4}.sco-hint{margin-left:auto;font-size:10px;color:var(--text-dim);background:var(--bg-panel-2);padding:1px 5px;border-radius:3px;flex-shrink:0}.project-tab{display:flex;align-items:center;gap:8px}.project-tab-label{font-weight:600}.project-tab-name{color:var(--text);font-weight:500;font-style:normal;font-size:13px;max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-tab-name em{color:var(--text-dim);font-style:italic;font-weight:400}.project-page{flex:1;display:flex;min-height:0;background:var(--bg);overflow:hidden}.pp-sidebar{width:280px;flex-shrink:0;border-right:1px solid var(--border);background:var(--bg-panel);display:flex;flex-direction:column;padding:14px;gap:10px}.pp-sidebar-header{display:flex;align-items:baseline;justify-content:space-between;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--text-dim);padding:0 2px 4px;border-bottom:1px solid var(--border)}.pp-sidebar-count{font-size:11px;color:var(--text-dim);background:var(--bg-panel-2);padding:1px 7px;border-radius:9px}.pp-project-list{flex:1;display:flex;flex-direction:column;gap:6px;overflow-y:auto;padding:2px 0}.pp-empty{text-align:center;color:var(--text-dim);padding:16px 8px;font-style:italic;font-size:12px}.pp-project-card{position:relative;display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:var(--bg-panel-2);border:1px solid var(--border);border-radius:6px;color:var(--text);text-align:left;cursor:pointer;transition:background .15s,border-color .15s}.pp-project-card:hover:not(:disabled){border-color:var(--accent)}.pp-project-card.active{border-color:var(--accent);background:#63b3ed14}.pp-project-card:disabled{opacity:.6;cursor:wait}.pp-card-name{display:flex;align-items:center;gap:6px;font-weight:600;font-size:13px}.pp-card-active{font-size:10px;color:var(--accent);background:#63b3ed26;padding:1px 6px;border-radius:3px;text-transform:uppercase;letter-spacing:.3px}.pp-card-desc{font-size:11px;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pp-card-stats{font-size:11px;color:var(--text-dim);display:flex;gap:6px}.pp-card-spinner{position:absolute;top:50%;right:12px;transform:translateY(-50%);color:var(--accent);font-weight:700}.pp-new-btn{width:100%;flex-shrink:0}.pp-main{flex:1;overflow-y:auto;padding:24px 32px;min-width:0}.pp-no-project{text-align:center;color:var(--text-dim);padding:60px 20px}.pp-no-project h2{color:var(--text);font-size:18px;margin:0 0 6px}.pp-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding-bottom:12px;border-bottom:1px solid var(--border);margin-bottom:12px}.pp-header-main{flex:1;min-width:0}.pp-header-title{margin:0 0 4px;font-size:22px;color:var(--text)}.pp-header-desc{margin:0;color:var(--text-dim);font-size:13px}.pp-header-actions{display:flex;gap:8px;flex-shrink:0}.pp-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:18px}.pp-tab{background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;color:var(--text-dim);padding:8px 16px;font-size:13px;font-weight:600;cursor:pointer;transition:color .15s,border-bottom-color .15s}.pp-tab:hover{color:var(--text)}.pp-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.pp-section{max-width:800px}.pp-hint{color:var(--text-dim);font-size:13px;line-height:1.5;margin:0 0 16px}.pp-panel-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;padding-top:12px;border-top:1px solid var(--border)}.pp-new-form{max-width:520px;background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;padding:20px 24px;display:flex;flex-direction:column;gap:12px}.pp-new-form-title{font-size:16px;font-weight:600;color:var(--text);margin-bottom:4px}.pp-content-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.pp-content-col{background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;padding:12px 14px;display:flex;flex-direction:column;gap:6px;min-width:0}.pp-content-title{display:flex;align-items:baseline;justify-content:space-between;font-weight:600;font-size:13px;color:var(--text);padding-bottom:6px;border-bottom:1px solid var(--border);margin-bottom:4px}.pp-content-count{font-size:11px;color:var(--text-dim);background:var(--bg-panel-2);padding:1px 7px;border-radius:9px;font-weight:600}.pp-empty-mini{color:var(--text-dim);font-style:italic;font-size:12px;padding:6px 0}.pp-item-row{display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--bg-panel-2);border-radius:4px}.pp-item-main{flex:1;display:flex;flex-direction:column;min-width:0}.pp-item-name{font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pp-item-date{font-size:10px;color:var(--text-dim)}.import-section{margin-top:14px}.import-section-header{display:flex;align-items:baseline;justify-content:space-between;font-weight:600;font-size:13px;margin-bottom:6px;color:var(--text)}.import-section-all{background:none;border:none;color:var(--accent);font-size:11px;cursor:pointer;padding:0}.import-section-all:hover{text-decoration:underline}.import-list{display:flex;flex-direction:column;gap:4px;max-height:180px;overflow-y:auto;border:1px solid var(--border);border-radius:4px;padding:6px 8px;background:var(--bg-panel-2)}.import-list-empty{color:var(--text-dim);font-style:italic;font-size:12px;padding:6px 0}.import-row{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text);cursor:pointer;padding:2px 0}.import-row input[type=checkbox]{margin:0}.seq-step-thumb-row,.seq-step-thumb-row-spacer{flex:0 0 60px;display:flex;align-items:center;justify-content:center;padding:3px;background:var(--bg-panel-2);border-bottom:1px solid var(--border);box-sizing:border-box}.seq-step-thumb-row{cursor:pointer}.seq-step-thumb-row.is-interp{background:transparent;cursor:default}.seq-step-col.active .seq-step-thumb-row{background:#f5c5182e}.pose-thumb{width:100%;height:100%;max-width:64px;max-height:54px;object-fit:contain;display:block;border-radius:3px;background:#15171c;-webkit-user-select:none;user-select:none}.pose-thumb-placeholder{width:64px;height:54px;border:1px dashed var(--border);border-radius:3px;background:#0003}.pose-thumb-renderer{position:fixed;left:-10000px;top:0;pointer-events:none;opacity:0}.photo-space-hint{margin:0 0 10px;font-size:11px;color:var(--text-dim);line-height:1.4}.photo-space-actions{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.photo-space-actions .btn{width:100%;text-align:center}.photo-space-coords{display:flex;flex-direction:column;gap:2px;padding-top:8px;border-top:1px dashed var(--border)}.photo-space-coords-label{font-size:10px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px}.photo-space-coords code{font-size:11px;font-family:Courier New,monospace;color:var(--text)}
