:root{--bg-primary:#e8eaed;--bg-secondary:#f8f8f8;--bg-surface:#fffffff2;--bg-elevated:#fff;--text-primary:#333;--text-secondary:#999;--text-tertiary:#bbb;--text-accent:#2979ff;--text-inverse:#fff;--border-color:#f0f0f0;--border-input:#e0e0e0;--border-focus:#2979ff;--separator-color:#ddd;--input-bg:#fff;--input-border:#e0e0e0;--input-text:#333;--input-placeholder:#bbb;--hover-bg:#f0f0f0;--selected-bg:#e8f0fe;--active-bg:#d0e0fd;--color-primary:#2979ff;--color-primary-hover:#1a6aff;--color-primary-dark:#1565c0;--color-primary-light:#e3f2fd;--color-primary-bg:#2979ff14;--color-success:#4caf50;--color-success-hover:#43a047;--color-success-light:#e8f5e9;--color-success-dark:#2e7d32;--color-success-text:#1b5e20;--color-danger:#ef4444;--color-danger-hover:#d32f2f;--color-danger-light:#fee2e2;--color-danger-dark:#c62828;--color-danger-text:#991b1b;--color-warning:#ff9800;--color-warning-hover:#f57c00;--color-warning-light:#fff3e0;--color-warning-text:#e65100;--color-info:#2196f3;--color-info-light:#e3f2fd;--color-info-text:#0d47a1;--color-mechanical:#ff6b35;--color-control:#2979ff;--color-embedded:#9c27b0;--color-hardware:#ffa726;--color-software:#4caf50;--color-nontech:#6b7280;--color-critical:#ef4444;--color-critical-bg:#fee2e2;--color-critical-text:#991b1b;--color-major:#f97316;--color-major-bg:#fed7aa;--color-major-text:#9a3412;--color-minor:#eab308;--color-minor-bg:#fef3c7;--color-minor-text:#854d0e;--color-suggestion:#3b82f6;--color-suggestion-bg:#dbeafe;--color-suggestion-text:#1e40af;--color-status-open:#f44336;--color-status-open-bg:#fee2e2;--color-status-open-text:#991b1b;--color-status-in_progress:#ff9800;--color-status-in_progress-bg:#fed7aa;--color-status-in_progress-text:#9a3412;--color-status-resolved:#4caf50;--color-status-resolved-bg:#dcfce7;--color-status-resolved-text:#166534;--color-status-closed:#9e9e9e;--color-status-closed-bg:#e5e7eb;--color-status-closed-text:#4b5563;--toolbar-bg:#ffffffeb;--toolbar-blur:blur(12px);--btn-secondary-bg:#f0f0f0;--btn-secondary-text:#555;--scrollbar-thumb:#ccc;--scrollbar-track:transparent;--editor-bg:#fafafa;--editor-gutter:#f0f0f0;--editor-line-highlight:#2979ff4d;--overlay-bg:#00000080;--overlay-light:#00000014;--spacing-xs:2px;--spacing-sm:4px;--spacing-md:8px;--spacing-lg:12px;--spacing-xl:16px;--spacing-2xl:24px;--spacing-3xl:32px;--font-family-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-family-mono:"SF Mono", Menlo, Monaco, "Cascadia Code", monospace;--font-size-2xs:9px;--font-size-xs:10px;--font-size-sm:11px;--font-size-base:12px;--font-size-md:13px;--font-size-lg:14px;--font-size-xl:15px;--font-size-2xl:16px;--font-size-3xl:18px;--font-size-4xl:20px;--font-size-5xl:22px;--font-size-6xl:24px;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--line-height-tight:1.2;--line-height-normal:1.5;--line-height-relaxed:1.6;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-xl:12px;--radius-2xl:16px;--radius-round:24px;--radius-full:9999px;--shadow-sm:0 1px 4px #00000014;--shadow-md:0 2px 12px #00000080;--shadow-lg:0 4px 20px #0000004d;--shadow-xl:0 20px 60px #0000004d;--shadow-card:0 1px 3px #0000000f;--shadow-dropdown:0 8px 32px #0003;--transition-fast:.15s;--transition-normal:.2s;--transition-slow:.25s ease-out;--z-base:1;--z-dropdown:100;--z-sticky:200;--z-modal-backdrop:500;--z-modal:1000;--z-toast:9999;--z-tooltip:10000}[data-theme=dark]{--bg-primary:#1e1e1e;--bg-secondary:#252526;--bg-surface:#252526;--bg-elevated:#2d2d2d;--text-primary:#ccc;--text-secondary:#888;--text-tertiary:#555;--text-accent:#3794ff;--text-inverse:#fff;--border-color:#3e3e42;--border-input:#3c3c3c;--border-focus:#0e639c;--separator-color:#474747;--input-bg:#3c3c3c;--input-border:#3c3c3c;--input-text:#ccc;--input-placeholder:#6a6a6a;--hover-bg:#2a2d2e;--selected-bg:#094771;--active-bg:#0e639c;--color-primary:#0e639c;--color-primary-hover:#17b;--color-primary-dark:#094771;--color-primary-light:#0e639c26;--color-primary-bg:#0e639c1f;--color-success:#2e7d32;--color-success-hover:#388e3c;--color-success-light:#22c55e26;--color-success-dark:#1b5e20;--color-success-text:#86efac;--color-danger:#c62828;--color-danger-hover:#d32f2f;--color-danger-light:#ef444433;--color-danger-dark:#b71c1c;--color-danger-text:#fca5a5;--color-warning:#f57c00;--color-warning-hover:#e65100;--color-warning-light:#f9731633;--color-warning-text:#fdba74;--color-info:#64b5f6;--color-info-light:#2196f326;--color-info-text:#90caf9;--color-mechanical:#ff6b35;--color-control:#2979ff;--color-embedded:#9c27b0;--color-hardware:#ffa726;--color-software:#4caf50;--color-nontech:#6b7280;--color-critical:#ef4444;--color-critical-bg:#ef444433;--color-critical-text:#fca5a5;--color-major:#f97316;--color-major-bg:#f9731633;--color-major-text:#fdba74;--color-minor:#eab308;--color-minor-bg:#eab30833;--color-minor-text:#fcd34d;--color-suggestion:#3b82f6;--color-suggestion-bg:#3b82f633;--color-suggestion-text:#93c5fd;--color-status-open:#f44336;--color-status-open-bg:#ef444433;--color-status-open-text:#fca5a5;--color-status-in_progress:#ff9800;--color-status-in_progress-bg:#f9731633;--color-status-in_progress-text:#fdba74;--color-status-resolved:#4caf50;--color-status-resolved-bg:#22c55e33;--color-status-resolved-text:#86efac;--color-status-closed:#9e9e9e;--color-status-closed-bg:#9ca3af26;--color-status-closed-text:#d1d5db;--toolbar-bg:#2d2d30;--btn-secondary-bg:#3a3d41;--btn-secondary-text:#ccc;--toolbar-blur:none;--scrollbar-thumb:#555;--scrollbar-track:transparent;--editor-bg:#1e1e1e;--editor-gutter:#252526;--editor-line-highlight:#0e639c4d;--overlay-bg:#0009;--overlay-light:#ffffff0a;--shadow-sm:0 1px 4px #0000004d;--shadow-md:0 2px 12px #0006;--shadow-lg:0 4px 20px #00000080;--shadow-xl:0 20px 60px #00000080;--shadow-card:0 1px 3px #0003;--shadow-dropdown:0 8px 32px #00000080;--login-gradient:linear-gradient(135deg, #0d0d1a 0%, #0f1a2e 50%, #0a1a30 100%);--login-card-bg:#252526fa;--login-card-shadow:0 4px 30px #00000080}:root{--login-gradient:linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);--login-card-bg:#fffffff2;--login-card-shadow:var(--shadow-xl);--bg-color:var(--bg-primary);--text-color:var(--text-primary);--panel-bg:var(--bg-surface);--panel-border:var(--border-color);--primary-text:var(--text-accent);--secondary-text:var(--text-secondary);--hint-text:var(--text-tertiary);--separator:var(--separator-color);--item-bg:var(--bg-secondary)}.btn-row{gap:8px;display:flex}.btn{border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast);border:none;flex:1;padding:8px;font-size:11px;font-weight:500}.btn-primary{background:var(--color-primary);color:var(--text-inverse)}.btn-primary:hover{background:var(--color-primary-hover)}.btn-secondary{background:var(--btn-secondary-bg);color:var(--btn-secondary-text)}.btn-secondary:hover{filter:brightness(1.1)}.btn-danger{background:var(--color-danger);color:var(--text-inverse)}.btn-danger:hover{background:var(--color-danger-hover)}input[type=file]{display:none}.drop-zone{border:2px dashed var(--separator);border-radius:var(--radius-lg);text-align:center;color:var(--secondary-text);transition:border-color var(--transition-normal), background var(--transition-normal);flex-direction:column;gap:8px;margin-bottom:10px;padding:12px;font-size:11px;line-height:1.8;display:flex}.drop-zone.dragover{border-color:var(--color-primary);background:var(--selected-bg)}.drop-zone .drop-hint{color:var(--hint-text);margin-top:4px;font-size:10px}.joint-tabs{align-items:center;gap:4px;display:flex}.joint-tab{background:var(--btn-secondary-bg);color:var(--btn-secondary-text);cursor:pointer;border:none;border-radius:10px;padding:3px 8px;font-size:10px;line-height:1.4}.joint-tab.active{background:var(--color-primary-dark);color:var(--text-inverse)}#atab-mujoco[data-mujoco-state=loading]{opacity:.6;cursor:wait}#atab-mujoco[data-mujoco-state=ready]{color:#a5d6a7;background:#1b5e20}#atab-mujoco[data-mujoco-state=error]{color:#ffcdd2;background:#b71c1c}.joint-item{border-radius:var(--radius-lg);background:var(--item-bg);margin-bottom:6px;padding:8px 10px}.joint-name{color:var(--text-color);align-items:center;margin-bottom:6px;font-size:11px;font-weight:600;display:flex}.joint-type-badge{border-radius:var(--radius-lg);background:var(--selected-bg);color:var(--primary-text);flex-shrink:0;align-items:center;margin-left:6px;padding:1px 6px;font-size:9px;font-weight:400;display:inline-flex}.mimic-badge{border-radius:var(--radius-lg);background:var(--color-warning);color:var(--text-inverse);cursor:help;flex-shrink:0;align-items:center;margin-left:6px;padding:1px 6px;font-size:9px;font-weight:500;display:inline-flex}.slider-row{align-items:center;gap:4px;display:flex}.slider-row input[type=range]{accent-color:var(--color-primary);flex:1}.slider-val-input{border:1px solid var(--input-border);border-radius:var(--radius-sm);width:50px;color:var(--primary-text);background:var(--input-bg);text-align:right;padding:2px 4px;font-size:10px;font-weight:600}.slider-unit{color:var(--secondary-text);min-width:18px;font-size:10px}.joint-limits{align-items:center;gap:2px;margin-top:4px;display:flex}.joint-limits label{color:var(--secondary-text);min-width:8px;font-size:9px;font-weight:600}.joint-limits input[type=text]{border:1px solid var(--input-border);width:38px;color:var(--input-text);background:var(--input-bg);border-radius:3px;padding:2px;font-size:9px}.empty-hint{text-align:center;color:var(--hint-text);padding:30px 0;font-size:11px}.actuator-item{border-radius:var(--radius-lg);background:var(--item-bg);margin-bottom:6px;padding:8px 10px}.actuator-name{color:var(--text-color);justify-content:space-between;align-items:center;margin-bottom:6px;font-size:11px;font-weight:600;display:flex}.actuator-type-badge{border-radius:var(--radius-lg);background:var(--color-mechanical);color:var(--text-inverse);flex-shrink:0;align-items:center;margin-left:6px;padding:1px 6px;font-size:9px;font-weight:400;display:inline-flex}.actuator-joint-label{color:var(--secondary-text);margin-bottom:4px;font-size:9px}.struct-hint{color:var(--secondary-text);margin-bottom:8px;font-size:10px}.tree-node{margin-left:14px}.tree-item{border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast);align-items:center;gap:5px;padding:4px 6px;font-size:11px;display:flex}.tree-item:hover{background:var(--hover-bg)}.tree-item.selected{background:var(--selected-bg);color:var(--text-color)}.tree-item.selected .tree-item-link,.tree-item.selected .tree-item-joint{color:inherit}.tree-item-link{color:var(--primary-text)}.tree-item-joint{color:var(--color-mechanical)}.tree-icon{font-size:10px}.edit-toolbar{align-items:center;gap:6px;margin-bottom:8px;display:flex}.edit-filename{border:1px solid var(--input-border);border-radius:var(--radius-md);color:var(--input-text);background:var(--input-bg);flex:1;padding:5px 8px;font-size:11px}.btn-save{border-radius:var(--radius-md);background:var(--color-danger);color:var(--text-inverse);cursor:pointer;border:none;padding:5px 12px;font-size:11px}.btn-save:hover{background:var(--color-danger-hover)}.code-editor{background:var(--item-bg);border:1px solid var(--border-input);border-radius:var(--radius-md);width:100%;color:var(--input-text);outline:none;flex:1;min-height:200px;font-size:11px;line-height:1.5;position:relative}.code-editor:focus{border-color:var(--color-primary)}#urdf-editor{width:100%!important;height:100%!important;font-size:11px!important}.ace_editor{border-radius:var(--radius-md)}.collision-list-item{border-radius:var(--radius-md);background:var(--item-bg);cursor:pointer;transition:background var(--transition-fast);justify-content:space-between;align-items:center;margin-bottom:3px;padding:4px 8px;display:flex}.collision-list-item:hover{background:var(--hover-bg)}.collision-list-item.selected{background:var(--selected-bg)}.coll-name{color:var(--text-color);font-size:10px}.coll-type{color:var(--secondary-text);font-size:9px}.btn-icon-delete{cursor:pointer;width:18px;height:18px;color:var(--secondary-text);background:0 0;border:none;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:flex}.btn-icon-delete:hover{background:var(--color-danger-light);color:var(--color-danger-dark)}.prop-section{margin-top:6px}.prop-label{color:var(--secondary-text);margin-bottom:2px;font-size:10px;font-weight:500}.prop-row{gap:3px;margin-bottom:3px;display:flex}.prop-row label{color:var(--secondary-text);align-items:center;min-width:12px;font-size:9px;display:flex}.prop-row input[type=number]{border:1px solid var(--input-border);border-radius:var(--radius-sm);color:var(--input-text);background:var(--input-bg);flex:1;padding:2px 4px;font-size:10px}.prop-row input:focus{border-color:var(--color-primary);outline:none}.type-select{border:1px solid var(--input-border);width:100%;color:var(--input-text);background:var(--input-bg);border-radius:5px;padding:4px 6px;font-size:11px}.tooltip-title{color:var(--primary-text);margin-bottom:6px;font-size:11px;font-weight:600}.tooltip-section{margin-bottom:4px}.tooltip-label{color:var(--secondary-text);font-weight:500}.tooltip-value{color:var(--text-color);margin-left:4px}.severity-badge{border-radius:var(--radius-sm);padding:2px 6px;font-size:10px;font-weight:600}.severity-badge.p0{background:var(--color-critical-bg);color:var(--color-critical-text)}.severity-badge.p1{background:var(--color-major-bg);color:var(--color-major-text)}.severity-badge.p2{background:var(--color-minor-bg);color:var(--color-minor)}.severity-badge.p3{background:var(--color-success-light);color:var(--color-success-dark)}.status-dot{border-radius:50%;width:6px;height:6px;display:inline-block}.status-dot.open{background:var(--color-status-open)}.status-dot.in_progress{background:var(--color-status-in_progress)}.status-dot.resolved{background:var(--color-status-resolved)}.status-dot.closed{background:var(--color-status-closed)}#joint-hotspot-container{pointer-events:none;z-index:99;width:100%;height:100%;position:absolute;top:0;left:0}.joint-hotspot{pointer-events:auto;cursor:pointer;z-index:100;width:16px;height:16px;position:absolute}.joint-hotspot-dot{border:2px solid #fff;border-radius:50%;width:12px;height:12px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 4px #0006}.joint-hotspot:hover .joint-hotspot-dot{transform:scale(1.3)}.joint-hotspot.selected-cluster .joint-hotspot-dot{transform:scale(1.18);box-shadow:0 0 0 4px #7170ff33,0 0 16px #7170ff8c}.joint-hotspot-dot.active{background:var(--color-status-open)}.joint-hotspot-dot.resolved{background:var(--color-status-resolved)}.joint-hotspot-count{background:var(--panel-bg);border:1px solid var(--input-border);min-width:14px;height:14px;color:var(--input-text);border-radius:7px;justify-content:center;align-items:center;padding:0 3px;font-size:9px;font-weight:700;display:flex;position:absolute;top:-4px;right:-4px;box-shadow:0 1px 2px #0003}#joint-context-menu{z-index:9999;background:var(--panel-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);border:1px solid var(--input-border);min-width:220px;padding:4px 0;display:none;position:fixed}#joint-context-menu.visible{display:block}.context-menu-item{color:var(--input-text);cursor:pointer;transition:background var(--transition-fast);align-items:center;gap:8px;padding:10px 16px;font-size:13px;display:flex}.context-menu-item:hover{background:var(--bg-color)}.context-menu-item.disabled{color:var(--text-secondary);cursor:not-allowed;opacity:.5}.context-menu-item.disabled:hover{background:0 0}.context-menu-item.context-menu-primary{color:var(--color-primary-dark);font-weight:600}.context-menu-item.context-menu-primary:hover{background:var(--color-primary-dark);color:var(--text-inverse)}.context-menu-item.context-menu-primary.disabled{color:var(--text-secondary);font-weight:400}.context-menu-item.context-menu-primary.disabled:hover{color:var(--text-secondary);background:0 0}.context-menu-separator{background:var(--panel-border);height:1px;margin:4px 0}.context-menu-icon{text-align:center;width:18px;font-size:14px}.context-menu-joint-info{color:var(--secondary-text);background:var(--item-bg);border-bottom:1px solid var(--panel-border);align-items:center;gap:4px;padding:8px 16px;font-size:11px;display:flex}.context-menu-joint-icon{font-size:12px}.context-menu-joint-name{color:var(--color-primary);font-weight:600}.context-menu-joint-type{color:var(--secondary-text);font-size:10px}[data-theme=dark] .context-menu-item.disabled{color:var(--text-tertiary)}[data-theme=dark] .context-menu-separator{background:var(--separator-color)}.visitor-readonly .pl-action{display:none}.visitor-readonly .problem-card{cursor:default}.asi-modal{background:var(--panel-bg);border:1px solid var(--panel-border);width:min(880px,92vw);max-height:88vh;color:var(--text-color);border-radius:12px;overflow:auto}.asi-modal .modal-header p{color:var(--secondary-text);margin:4px 0 0;font-size:13px}.asi-body{gap:16px;padding:20px;display:grid}.asi-drop{border:1px dashed var(--panel-border);background:var(--item-bg);min-height:92px;color:var(--secondary-text);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;display:flex}.asi-drop:hover{border-color:var(--color-primary);color:var(--text-color)}.asi-drop input{max-width:320px;margin-right:12px}.asi-status{min-height:20px;color:var(--secondary-text);font-size:13px}.asi-status.error{color:var(--color-danger)}.asi-source-note{border:1px solid color-mix(in srgb, var(--color-warning) 35%, transparent);background:color-mix(in srgb, var(--color-warning) 7%, transparent);border-radius:6px;align-items:baseline;gap:8px;padding:9px 10px;font-size:12px;display:flex}.asi-source-note span,.asi-source-note small{color:var(--secondary-text)}.asi-source-note strong{color:var(--text-color);font-weight:590}.asi-source-note small{margin-left:auto;font-size:11px}.asi-stats{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.asi-stats div{background:var(--item-bg);border:1px solid var(--panel-border);border-radius:8px;gap:4px;padding:14px;display:grid}.asi-stats strong{color:var(--text-color);font-size:24px;font-weight:590}.asi-stats span{color:var(--secondary-text);font-size:12px}.asi-review{border:1px solid color-mix(in srgb, var(--color-warning) 40%, transparent);background:color-mix(in srgb, var(--color-warning) 8%, transparent);border-radius:8px;gap:10px;padding:14px;display:grid}.asi-review span{color:var(--text-color);font-size:13px}.asi-review div{gap:8px;display:flex}.asi-review input{min-width:0;color:var(--text-color);background:var(--item-bg);border:1px solid var(--panel-border);border-radius:6px;flex:1;padding:9px 10px}.asi-complete{color:var(--text-color);background:color-mix(in srgb, var(--color-primary) 10%, transparent);border:1px solid color-mix(in srgb, var(--color-primary) 35%, transparent);border-radius:8px;padding:14px}@media (width<=640px){.asi-stats{grid-template-columns:1fr}.asi-review div{flex-direction:column}}#dual-viewport-container{z-index:98;flex-direction:row;display:none;position:fixed;inset:0}#dual-viewport-container.active{display:flex}.dual-viewport{flex:1;position:relative;overflow:hidden}.dual-viewport canvas{width:100%;height:100%;display:block}.viewport-label{z-index:10;background:var(--overlay-bg);color:var(--text-inverse);letter-spacing:.5px;pointer-events:none;white-space:nowrap;border-radius:6px;padding:4px 10px;font-size:11px;font-weight:600;position:absolute;top:12px;left:12px}.viewport-label.right{left:auto;right:12px}#viewport-divider{background:var(--separator,#474747);cursor:col-resize;z-index:20;width:4px;transition:background .15s;position:absolute;top:0;bottom:0}#viewport-divider:hover{background:var(--color-primary,#2979ff);width:4px}#viewport-divider.dragging{background:var(--color-primary,#2979ff)}.viewport-controls{z-index:10;background:var(--overlay-bg);white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:4px 8px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.viewport-controls button{background:var(--overlay-light);color:var(--text-primary);cursor:pointer;border:none;border-radius:4px;padding:3px 8px;font-size:10px;font-weight:500;transition:all .15s}.viewport-controls button:hover{color:var(--text-inverse);background:#ffffff38}.viewport-controls button.active{background:var(--color-primary,#2979ff);color:var(--text-inverse)}.sync-indicator{z-index:10;background:var(--color-success);color:var(--text-inverse);pointer-events:none;white-space:nowrap;border-radius:4px;padding:2px 8px;font-size:9px;font-weight:600;position:absolute;top:44px;left:50%;transform:translate(-50%)}.sync-indicator.independent{background:var(--color-warning)}#dual-viewport-exit{z-index:200;background:var(--overlay-bg);width:32px;height:32px;color:var(--text-inverse);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:16px;transition:background .15s;display:none;position:fixed;top:16px;right:16px}#dual-viewport-exit.visible{display:flex}#dual-viewport-exit:hover{background:var(--color-danger-hover)}[data-theme=dark] .viewport-label,[data-theme=dark] .viewport-controls,[data-theme=dark] #dual-viewport-exit{background:var(--bg-primary);border:1px solid var(--panel-border)}.viewport-loading-overlay{z-index:30;-webkit-backdrop-filter:blur(4px);background:#0000008c;flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex;position:absolute;inset:0}.viewport-loading-spinner{border:3px solid #fff3;border-top-color:var(--color-primary,#2979ff);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite vp-spin}@keyframes vp-spin{to{transform:rotate(360deg)}}.viewport-loading-text{color:#fff;letter-spacing:.5px;text-shadow:0 1px 3px #0000004d;font-size:14px;font-weight:500}.viewport-error-overlay{z-index:30;-webkit-backdrop-filter:blur(4px);background:#000000a6;flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex;position:absolute;inset:0}.viewport-error-icon{filter:drop-shadow(0 2px 4px #0000004d);font-size:42px;line-height:1;animation:2s ease-in-out infinite vp-error-pulse}@keyframes vp-error-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.85;transform:scale(1.08)}}.viewport-error-message{color:#ff8a80;text-align:center;text-shadow:0 1px 3px #0000004d;max-width:280px;font-size:13px;font-weight:500;line-height:1.5}.viewport-error-retry-btn{color:#fff;cursor:pointer;letter-spacing:.5px;background:#ffffff1f;border:1px solid #ffffff40;border-radius:8px;margin-top:4px;padding:8px 24px;font-size:13px;font-weight:600;transition:all .2s}.viewport-error-retry-btn:hover{background:#ffffff38;border-color:#fff6;transform:translateY(-1px);box-shadow:0 2px 8px #0000004d}.viewport-error-retry-btn:active{background:#ffffff2e;transform:translateY(0)}.mf-backdrop{background:#0000008c;justify-content:center;align-items:center;animation:.2s mfFadeIn;display:flex;position:fixed;inset:0}.mf-backdrop.closing{animation:.18s mfFadeOut}@keyframes mfFadeIn{0%{opacity:0}to{opacity:1}}@keyframes mfFadeOut{0%{opacity:1}to{opacity:0}}.mf-panel{background:var(--panel-bg,#2d2d2dfa);border:1px solid var(--panel-border,#3a3a3a);border-radius:16px;flex-direction:column;max-height:calc(100vh - 60px);animation:.2s mfSlideIn;display:flex;overflow:hidden;box-shadow:0 8px 40px #00000080}.mf-panel.closing{animation:.18s mfSlideOut}@keyframes mfSlideIn{0%{opacity:.8;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}@keyframes mfSlideOut{0%{opacity:1;transform:translateY(0)}to{opacity:.4;transform:translateY(-8px)}}.mf-header{border-bottom:1px solid var(--panel-border,#3a3a3a);flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.mf-header h2{color:var(--text-color,#e0e0e0);margin:0;font-size:15px;font-weight:600}.mf-btn-close{cursor:pointer;width:28px;height:28px;color:var(--secondary-text,#888);background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:16px;display:flex}.mf-btn-close:hover{background:var(--hover-bg,#444);color:var(--text-color,#e0e0e0)}.mf-body{flex:1;min-height:120px;padding:16px 24px;overflow-y:auto}.mf-body::-webkit-scrollbar{width:5px}.mf-body::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:3px}.mf-footer{border-top:1px solid var(--panel-border,#3a3a3a);flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 24px;display:flex}.mf-btn{cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:7px 18px;font-size:12px;font-weight:500;transition:all .15s}.mf-btn-primary{background:var(--color-primary);color:var(--text-inverse)}.mf-btn-primary:hover{background:var(--color-primary-hover)}.mf-btn-primary:disabled{background:var(--scrollbar-thumb);color:var(--text-secondary);cursor:not-allowed}.mf-btn-secondary{background:var(--btn-secondary-bg,#3a3a3a);color:var(--btn-secondary-text,#ccc)}.mf-btn-secondary:hover{filter:brightness(1.15)}.mf-btn-success{background:var(--color-success);color:var(--text-inverse)}.mf-btn-success:hover{background:var(--color-success-hover)}.mf-btn-danger{background:var(--color-danger);color:var(--text-inverse)}.mf-btn-danger:hover{background:var(--color-danger-hover)}.mf-btn-sm{border-radius:6px;padding:5px 12px;font-size:11px}.mf-steps{flex-shrink:0;justify-content:center;align-items:center;gap:0;padding:18px 20px 14px;display:flex}.mf-step-dot{cursor:default;flex-direction:column;align-items:center;display:flex;position:relative}.mf-step-dot .mf-dot-circle{border:2px solid #0000;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:600;transition:all .2s;display:flex}.mf-step-dot.active .mf-dot-circle{background:var(--color-primary-dark);color:var(--text-inverse);border-color:var(--color-primary-dark)}.mf-step-dot.done .mf-dot-circle{background:var(--color-success);color:var(--text-inverse);border-color:var(--color-success)}.mf-step-dot.pending .mf-dot-circle{color:var(--secondary-text,#888);border-color:var(--secondary-text,#888);background:0 0}.mf-step-dot .mf-dot-label{color:var(--secondary-text,#888);white-space:nowrap;margin-top:4px;font-size:10px;transition:color .2s}.mf-step-dot.active .mf-dot-label{color:var(--color-primary-dark)}.mf-step-dot.done .mf-dot-label{color:var(--color-success)}.mf-step-line{background:var(--separator,#555);border-radius:1px;width:48px;height:2px;margin:0 4px 20px;transition:background .2s}.mf-step-line.done{background:var(--color-success)}.mf-confirm-overlay{background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.mf-confirm-panel{background:var(--panel-bg,#2d2d2dfa);border:1px solid var(--panel-border,#3a3a3a);text-align:center;border-radius:12px;max-width:360px;padding:20px 24px;box-shadow:0 8px 32px #00000080}.mf-confirm-panel p{color:var(--text-color,#e0e0e0);margin:0 0 16px;font-size:13px}.mf-toast{color:var(--text-inverse);pointer-events:none;border-radius:10px;padding:10px 20px;font-size:12px;font-weight:500;animation:.2s mfToastIn;position:fixed;bottom:40px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0006}@keyframes mfToastIn{0%{opacity:0;transform:translate(-50%)translateY(8px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.mf-toast.success{background:var(--color-success)}.mf-toast.error{background:var(--color-danger-dark)}.mf-toast.warning{background:var(--color-warning)}.mf-toast.info{background:var(--color-primary-dark)}#rs-trigger{flex-shrink:0;margin:0 8px 0 0}.rs-btn{background:var(--item-bg,#ffffff14);color:var(--text-color,#e0e0e0);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border:none;border-radius:8px;align-items:center;gap:6px;max-width:220px;height:34px;padding:6px 14px;font-size:12px;font-weight:500;transition:all .15s;display:flex;overflow:hidden}.rs-btn:hover{background:var(--hover-bg,#444)}.rs-btn .rs-arrow{color:var(--secondary-text,#888);margin-left:2px;font-size:9px}.rs-btn .rs-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.rs-btn .rs-name{text-overflow:ellipsis;overflow:hidden}.rs-backdrop{z-index:199;position:fixed;inset:0}.rs-dropdown{z-index:200;background:var(--panel-bg,#2d2d2dfa);border:1px solid var(--panel-border,#3a3a3a);border-radius:16px;flex-direction:column;width:540px;max-width:calc(100vw - 24px);max-height:520px;animation:.15s rsFadeIn;display:flex;position:fixed;top:48px;left:24px;box-shadow:0 8px 32px #0006}@keyframes rsFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.rs-header{border-bottom:1px solid var(--panel-border,#3a3a3a);align-items:center;gap:8px;padding:12px 16px;display:flex}.rs-search{border:1px solid var(--input-border,#555);background:var(--input-bg,#2a2a2a);color:var(--input-text,#ccc);border-radius:10px;outline:none;flex:1;padding:6px 12px;font-size:12px;transition:border-color .2s}.rs-search:focus{border-color:var(--color-primary)}.rs-search::placeholder{color:var(--hint-text,#666)}.rs-toggle{border:1px solid var(--panel-border,#3a3a3a);border-radius:10px;display:flex;overflow:hidden}.rs-toggle button{background:var(--btn-secondary-bg,#3a3a3a);color:var(--btn-secondary-text,#ccc);cursor:pointer;border:none;padding:6px 10px;font-size:12px;transition:all .15s}.rs-toggle button.active{background:var(--color-primary-dark);color:var(--text-inverse)}.rs-body{flex:1;padding:8px 12px;overflow-y:auto}.rs-body::-webkit-scrollbar{width:4px}.rs-body::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:2px}.rs-cat-title{color:var(--secondary-text,#888);text-transform:uppercase;letter-spacing:.5px;align-items:center;gap:6px;padding:8px 4px 4px;font-size:11px;font-weight:600;display:flex}.rs-cat-title .rs-cat-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.rs-item{cursor:pointer;border-radius:10px;align-items:center;gap:10px;padding:8px 10px;transition:background .12s;display:flex}.rs-item:hover{background:var(--hover-bg,#444)}.rs-item.selected{background:var(--selected-bg,#1a4d7a)}.rs-item .rs-item-icon{background:#ffffff14;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:16px;display:flex}.rs-item .rs-item-info{flex:1;min-width:0}.rs-item .rs-item-name{color:var(--text-color,#e0e0e0);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.rs-item .rs-item-meta{color:var(--secondary-text,#888);font-size:11px}.rs-item .rs-item-check{color:var(--color-success);flex-shrink:0;font-size:14px}.rs-grid{flex-direction:column;gap:2px;display:flex}.rs-label-row{grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:4px;display:grid}.rs-label-title{margin-top:2px;padding:4px 4px 2px}.rs-label-badge{letter-spacing:.3px;color:var(--color-primary,#2979ff);background:#2979ff2e;border:1px solid #2979ff4d;border-radius:10px;padding:2px 8px;font-size:10px;font-weight:600;display:inline-block}.rs-card-label{color:var(--color-primary,#2979ff);background:#2979ff26;border:1px solid #2979ff40;border-radius:8px;padding:1px 6px;font-size:10px;font-weight:600;display:inline-block}.rs-card{border:1px solid var(--panel-border,#3a3a3a);cursor:pointer;background:var(--item-bg,#3a3a3a);border-radius:12px;padding:12px;transition:all .15s}.rs-card:hover{border-color:var(--color-primary);box-shadow:0 2px 8px #2979ff26}.rs-card.selected{border-color:var(--color-primary);background:var(--selected-bg,#1a4d7a)}.rs-card .rs-card-header{align-items:center;gap:8px;margin-bottom:6px;display:flex}.rs-card .rs-card-icon{background:#ffffff14;border-radius:10px;justify-content:center;align-items:center;width:36px;height:36px;font-size:18px;display:flex}.rs-card .rs-card-name{color:var(--text-color,#e0e0e0);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.rs-card .rs-card-cat{color:var(--text-inverse);border-radius:4px;margin-top:2px;padding:2px 6px;font-size:10px;display:inline-block}.rs-card .rs-card-meta{color:var(--secondary-text,#888);align-items:center;gap:10px;min-height:20px;font-size:10px;display:flex}.rs-card .rs-card-meta>span{align-self:center;line-height:18px}.rs-card .rs-card-meta .dual-picker-badge,.rs-card .rs-card-meta .rs-card-label{line-height:16px}.rs-empty{text-align:center;color:var(--secondary-text,#888);padding:32px 16px;font-size:13px}.rs-empty .rs-empty-icon{margin-bottom:8px;font-size:32px}.rs-btn.placeholder{color:var(--secondary-text,#888);font-style:italic}.rw-body{max-height:380px}.rw-form-row-inline{gap:12px;display:flex}.rw-step-title{color:var(--text-color,#e0e0e0);margin-bottom:14px;font-size:13px;font-weight:600}.rw-step-desc{color:var(--secondary-text,#888);margin-bottom:14px;font-size:11px;line-height:1.5}.rw-form-group{margin-bottom:12px}.rw-form-label{color:var(--secondary-text,#888);margin-bottom:4px;font-size:11px;font-weight:500;display:block}.rw-form-label .rw-required{color:var(--color-danger);margin-left:2px}.rw-form-input{border:1px solid var(--input-border,#555);background:var(--input-bg,#2a2a2a);width:100%;color:var(--input-text,#ccc);box-sizing:border-box;border-radius:8px;outline:none;padding:8px 12px;font-size:13px;transition:border-color .15s}.rw-form-input:focus{border-color:var(--color-primary)}.rw-form-input::placeholder{color:var(--hint-text,#666)}.rw-form-input.error{border-color:var(--color-danger)}.rw-form-error{color:var(--color-danger);margin-top:3px;font-size:10px}.rw-form-select{border:1px solid var(--input-border,#555);background:var(--input-bg,#2a2a2a);width:100%;color:var(--input-text,#ccc);cursor:pointer;border-radius:8px;outline:none;padding:8px 12px;font-size:13px}.rw-form-select:focus{border-color:var(--color-primary)}.rw-form-textarea{border:1px solid var(--input-border,#555);background:var(--input-bg,#2a2a2a);width:100%;color:var(--input-text,#ccc);resize:vertical;box-sizing:border-box;border-radius:8px;outline:none;min-height:60px;padding:8px 12px;font-family:inherit;font-size:13px;transition:border-color .15s}.rw-form-textarea:focus{border-color:var(--color-primary)}.rw-upload-zone{border:2px dashed var(--input-border,#555);text-align:center;cursor:pointer;background:var(--input-bg,#2a2a2a);border-radius:12px;padding:32px 20px;transition:all .2s}.rw-upload-zone:hover,.rw-upload-zone.dragover{border-color:var(--color-primary);background:#2979ff14}.rw-upload-zone.has-file{border-color:var(--color-success);background:#4caf5014;border-style:solid}.rw-upload-icon{margin-bottom:8px;font-size:36px}.rw-upload-text{color:var(--secondary-text,#888);font-size:12px}.rw-upload-file-info{color:var(--color-success);justify-content:center;align-items:center;gap:8px;font-size:13px;font-weight:500;display:flex}.rw-upload-file-info .rw-file-remove{color:var(--secondary-text,#888);cursor:pointer;font-size:14px}.rw-upload-file-info .rw-file-remove:hover{color:var(--color-danger)}.rw-parse-summary{flex-wrap:wrap;gap:12px;margin-top:12px;display:flex}.rw-parse-card{text-align:center;background:var(--input-bg,#2a2a2a);border:1px solid var(--separator,#555);border-radius:8px;flex:1;min-width:100px;padding:10px 8px}.rw-parse-card .rw-parse-num{color:var(--color-primary);font-size:20px;font-weight:700}.rw-parse-card .rw-parse-lbl{color:var(--secondary-text,#888);margin-top:2px;font-size:10px}.rw-joint-table{border-collapse:collapse;width:100%;font-size:11px}.rw-joint-table thead{z-index:1;background:var(--panel-bg,#2d2d2dfa);position:sticky;top:0}.rw-joint-table th{text-align:left;color:var(--secondary-text,#888);border-bottom:1px solid var(--panel-border,#3a3a3a);padding:8px 10px;font-size:10px;font-weight:600}.rw-joint-table td{color:var(--text-color,#e0e0e0);border-bottom:1px solid var(--separator,#555);padding:8px 10px}.rw-joint-table tbody tr:hover{background:var(--hover-bg,#444)}.rw-joint-type{color:var(--color-info);background:#2979ff26;border-radius:8px;padding:1px 6px;font-size:10px;font-weight:500;display:inline-block}.rw-joint-type.fixed{color:var(--color-status-closed);background:#9e9e9e26}.rw-th-check{text-align:center;width:36px}.rw-td-check{text-align:center}.rw-joint-display-cb{accent-color:var(--color-primary);cursor:pointer;width:14px;height:14px}.rw-no-joints{text-align:center;color:var(--secondary-text,#888);padding:24px;font-size:12px}.rw-collab-add{gap:8px;margin-bottom:12px;display:flex}.rw-collab-add input{flex:1}.rw-collab-list{flex-direction:column;gap:6px;display:flex}.rw-collab-item{background:var(--input-bg,#2a2a2a);border:1px solid var(--separator,#555);border-radius:8px;align-items:center;gap:8px;padding:8px 12px;display:flex}.rw-collab-item .rw-collab-avatar{background:var(--color-primary);width:28px;height:28px;color:var(--text-inverse);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:600;display:flex}.rw-collab-item .rw-collab-info{flex:1;min-width:0}.rw-collab-item .rw-collab-name{color:var(--text-color,#e0e0e0);font-size:12px;font-weight:500}.rw-collab-item .rw-collab-email{color:var(--secondary-text,#888);font-size:10px}.rw-collab-remove{cursor:pointer;color:var(--secondary-text,#888);background:0 0;border:none;border-radius:4px;padding:2px 4px;font-size:14px}.rw-collab-remove:hover{color:var(--color-danger);background:#ff44441a}.rw-collab-empty{text-align:center;color:var(--secondary-text,#888);padding:20px;font-size:11px}.rw-notify-section{border-bottom:1px solid var(--separator,#555);margin-bottom:16px;padding-bottom:14px}.rw-notify-section:last-child{border-bottom:none;margin-bottom:0}.rw-notify-section-title{color:var(--text-color,#e0e0e0);align-items:center;gap:6px;margin-bottom:10px;font-size:12px;font-weight:600;display:flex}.rw-multi-select{width:100%;position:relative}.rw-multi-select-trigger{border:1px solid var(--input-border,#555);background:var(--input-bg,#2a2a2a);color:var(--input-text,#ccc);cursor:pointer;box-sizing:border-box;border-radius:8px;justify-content:space-between;align-items:center;min-height:32px;padding:7px 10px;font-size:12px;transition:border-color .15s;display:flex}.rw-multi-select-trigger:hover{border-color:var(--color-primary)}.rw-multi-select-trigger.open{border-color:var(--color-primary);border-radius:8px 8px 0 0}.rw-multi-select-trigger .rw-placeholder{color:var(--hint-text,#666)}.rw-multi-select-trigger .rw-tags{flex-wrap:wrap;flex:1;gap:4px;min-width:0;display:flex}.rw-multi-select-trigger .rw-tag{color:var(--color-info);white-space:nowrap;text-overflow:ellipsis;background:#2979ff26;border-radius:10px;align-items:center;gap:3px;max-width:120px;padding:1px 6px;font-size:11px;font-weight:500;display:inline-flex;overflow:hidden}.rw-multi-select-trigger .rw-tag-remove{cursor:pointer;opacity:.7;font-size:12px}.rw-multi-select-trigger .rw-tag-remove:hover{opacity:1;color:var(--color-danger)}.rw-multi-select-arrow{color:var(--secondary-text,#888);flex-shrink:0;margin-left:6px;font-size:10px}.rw-multi-select-dropdown{z-index:10;background:var(--input-bg,#2a2a2a);border:1px solid #2979ff;border-top:none;border-radius:0 0 8px 8px;max-height:180px;display:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.rw-multi-select-dropdown.open{display:block}.rw-multi-select-dropdown .rw-option{cursor:pointer;color:var(--text-color,#e0e0e0);align-items:center;gap:8px;padding:7px 10px;font-size:12px;transition:background .1s;display:flex}.rw-multi-select-dropdown .rw-option:hover{background:var(--hover-bg,#444)}.rw-multi-select-dropdown .rw-option.rw-option-none{color:var(--secondary-text,#888);font-style:italic}.rw-option input[type=checkbox]{accent-color:var(--color-primary)}.rw-scene-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.rw-scene-item{border:1px solid var(--separator,#555);cursor:pointer;color:var(--text-color,#e0e0e0);user-select:none;border-radius:8px;align-items:center;gap:6px;padding:7px 10px;font-size:12px;transition:background .15s,border-color .15s;display:flex}.rw-scene-item:hover{background:var(--hover-bg,#444)}.rw-scene-item.checked{border-color:var(--color-primary);background:#2979ff14}.rw-scene-item input[type=checkbox]{accent-color:var(--color-primary);cursor:pointer}.rw-config-row{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.rw-config-field{flex-direction:column;gap:3px;display:flex}.rw-config-field label{color:var(--secondary-text,#888);font-size:10px;font-weight:500}.rw-config-field input,.rw-config-field select{border:1px solid var(--input-border,#555);background:var(--input-bg,#2a2a2a);color:var(--input-text,#ccc);box-sizing:border-box;border-radius:8px;outline:none;padding:6px 10px;font-size:12px}.rw-config-field input:focus,.rw-config-field select:focus{border-color:var(--color-primary)}.rw-config-field input[type=time]{width:100px}.rw-config-field input[type=number]{width:80px}.rw-config-field select{width:120px}.dh-backdrop{z-index:310;background:#0000008c;justify-content:center;align-items:center;animation:.2s dhFadeIn;display:flex;position:fixed;inset:0}@keyframes dhFadeIn{0%{opacity:0}to{opacity:1}}.dh-panel{background:var(--panel-bg,#2d2d2dfa);border:1px solid var(--panel-border,#3a3a3a);border-radius:16px;flex-direction:column;width:780px;max-width:calc(100vw - 32px);max-height:calc(100vh - 60px);animation:.2s dhSlideIn;display:flex;box-shadow:0 8px 40px #00000080}@keyframes dhSlideIn{0%{opacity:.8;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}.dh-header{border-bottom:1px solid var(--panel-border,#3a3a3a);flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.dh-header h2{color:var(--text-color,#e0e0e0);align-items:center;gap:8px;margin:0;font-size:15px;font-weight:600;display:flex}.dh-header-actions{align-items:center;gap:8px;display:flex}.dh-btn{cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:6px 14px;font-size:12px;font-weight:500;transition:all .15s}.dh-btn-primary{background:var(--color-primary);color:var(--text-inverse)}.dh-btn-primary:hover{background:var(--color-primary-hover)}.dh-btn-secondary{background:var(--btn-secondary-bg,#3a3a3a);color:var(--btn-secondary-text,#ccc)}.dh-btn-secondary:hover{filter:brightness(1.15)}.dh-btn-close{cursor:pointer;width:28px;height:28px;color:var(--secondary-text,#888);background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:16px;display:flex}.dh-btn-close:hover{background:var(--hover-bg,#444);color:var(--text-color,#e0e0e0)}.dh-body{flex:1;padding:16px 20px;overflow-y:auto}.dh-body::-webkit-scrollbar{width:5px}.dh-body::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:3px}.dh-summary{grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px;display:grid}.dh-card{background:var(--item-bg,#3a3a3a);border-radius:12px;flex-direction:column;gap:4px;padding:14px 16px;display:flex}.dh-card-label{color:var(--secondary-text,#888);font-size:10px;font-weight:500}.dh-card-value{color:var(--text-color,#e0e0e0);font-size:24px;font-weight:700}.dh-card-detail{color:var(--hint-text,#666);font-size:10px}.dh-card.pass{border-left:3px solid #4caf50}.dh-card.warn{border-left:3px solid #ff9800}.dh-card.fail{border-left:3px solid #f44336}.dh-card.info{border-left:3px solid #2979ff}.dh-section{margin-bottom:16px}.dh-section-title{color:var(--text-color,#e0e0e0);align-items:center;gap:8px;margin-bottom:10px;font-size:13px;font-weight:600;display:flex}.dh-section-badge{border-radius:10px;align-items:center;padding:2px 8px;font-size:10px;font-weight:500;display:inline-flex}.dh-section-badge.ok{color:var(--color-success);background:#4caf5026}.dh-section-badge.warn{color:var(--color-warning);background:#ff980026}.dh-section-badge.error{color:var(--color-danger);background:#f4433626}.dh-check-list{flex-direction:column;gap:6px;display:flex}.dh-check-item{background:var(--item-bg,#3a3a3a);border-radius:8px;align-items:flex-start;gap:10px;padding:10px 12px;font-size:12px;display:flex}.dh-check-icon{flex-shrink:0;margin-top:1px;font-size:16px}.dh-check-body{flex:1}.dh-check-title{color:var(--text-color,#e0e0e0);font-weight:500}.dh-check-desc{color:var(--secondary-text,#888);margin-top:2px;font-size:11px}.dh-check-item.pass .dh-check-icon{color:var(--color-success)}.dh-check-item.warn .dh-check-icon{color:var(--color-warning)}.dh-check-item.fail .dh-check-icon{color:var(--color-danger)}.dh-robot-card{background:var(--item-bg,#3a3a3a);border-radius:8px;align-items:center;gap:12px;margin-bottom:6px;padding:10px 14px;font-size:12px;display:flex}.dh-robot-card .dh-robot-status{border-radius:50%;flex-shrink:0;width:8px;height:8px}.dh-robot-card .dh-robot-status.healthy{background:var(--color-success)}.dh-robot-card .dh-robot-status.warning{background:var(--color-warning)}.dh-robot-card .dh-robot-status.error{background:var(--color-danger)}.dh-robot-name{color:var(--text-color,#e0e0e0);flex:1;font-weight:600}.dh-robot-detail{color:var(--secondary-text,#888);font-size:11px}.dh-empty{text-align:center;color:var(--secondary-text,#888);padding:32px 16px;font-size:13px}.dh-meta{color:var(--secondary-text,#888);gap:20px;margin-top:12px;font-size:11px;display:flex}.dh-joint-orphan-list{flex-direction:column;gap:8px;display:flex}.dh-joint-orphan-item{background:var(--item-bg,#3a3a3a);border-left:3px solid #f44336;border-radius:8px;flex-direction:column;gap:8px;padding:10px 14px;display:flex}.dh-joint-orphan-header{align-items:center;gap:8px;font-size:12px;display:flex}.dh-joint-orphan-title{color:var(--text-color,#e0e0e0);flex:1;font-weight:600}.dh-joint-orphan-meta{color:var(--secondary-text,#888);font-size:11px}.dh-joint-orphan-actions{align-items:center;gap:4px;display:flex}.dh-joint-select{background:var(--item-bg,#3a3a3a);color:var(--text-color,#e0e0e0);border:1px solid var(--panel-border,#555);border-radius:4px;padding:2px 6px;font-size:11px}#robot-mgmt-view{background:var(--bg-color);z-index:98;padding:20px 28px;display:none;position:fixed;inset:70px 0 32px;overflow-y:auto}#robot-mgmt-view.active{display:block}.mgmt-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;display:flex}.mgmt-title{color:var(--text-color);font-size:22px;font-weight:700}.mgmt-title .pill{color:var(--color-danger);background:#ef44441f;border-radius:10px;margin-left:10px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.mgmt-toolbar{flex-wrap:wrap;gap:10px;display:flex}.mgmt-search{border:1px solid var(--panel-border);background:var(--input-bg);color:var(--text-color);border-radius:8px;outline:none;width:240px;padding:8px 12px;font-size:13px}.mgmt-search:focus{border-color:var(--color-primary,#2979ff)}.mgmt-search::placeholder{color:var(--hint-text)}.mgmt-btn{border:1px solid var(--panel-border);background:var(--btn-secondary-bg);color:var(--btn-secondary-text);cursor:pointer;white-space:nowrap;border-radius:8px;padding:6px 14px;font-size:12px;font-weight:500;transition:all .15s}.mgmt-btn:hover{background:var(--hover-bg)}.mgmt-btn-primary{background:var(--color-primary);color:var(--text-inverse);border-color:var(--color-primary);font-weight:600}.mgmt-btn-primary:hover{background:var(--color-primary-hover)}.robot-mgmt-table{border-collapse:separate;border-spacing:0;background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:10px;width:100%;font-size:13px;overflow:hidden}.robot-mgmt-table thead th{background:var(--item-bg);text-align:left;color:var(--secondary-text);border-bottom:1px solid var(--panel-border);white-space:nowrap;padding:11px 12px;font-size:12px;font-weight:600}.robot-mgmt-table tbody td{border-bottom:1px solid var(--separator);color:var(--text-color);vertical-align:middle;padding:12px}.robot-mgmt-table tbody tr:hover{background:var(--item-bg)}.robot-mgmt-table tbody tr.archived{opacity:.55}.robot-mgmt-table tbody tr.archived .mgmt-cell-name{text-decoration:line-through}.mgmt-thumb{background:linear-gradient(135deg, var(--color-primary), #5b9eff);color:#fff;border-radius:8px;justify-content:center;align-items:center;width:40px;height:40px;font-size:20px;display:flex}.mgmt-cell-name{font-weight:600}.mgmt-cell-model{font-family:var(--font-family-mono);color:var(--secondary-text);font-size:11px}.mgmt-tag{border-radius:10px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.mgmt-tag.ok{color:var(--color-success-hover);background:#22c55e1f}.mgmt-tag.warn{color:var(--color-warning-text);background:#f59e0b24}.mgmt-tag.err{color:var(--color-danger);background:#ef44441f}.mgmt-tag.muted{color:var(--text-secondary);background:#94a3b82e}.mgmt-asset-tags{flex-wrap:wrap;gap:4px;max-width:168px;display:flex}.mgmt-asset-tags .mgmt-tag{padding:2px 7px;font-size:10px}.mgmt-asset-versions{flex-direction:column;gap:4px;min-width:0;display:flex}.mgmt-version-line{grid-template-columns:64px minmax(0,1fr);align-items:baseline;gap:6px;font-size:11px;display:grid}.mgmt-version-line strong{color:var(--color-primary-dark);white-space:nowrap;font-weight:700}.mgmt-version-line span{min-width:0;color:var(--secondary-text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mgmt-version-line.muted strong,.mgmt-version-line.muted span{color:var(--text-secondary)}.mgmt-action-btn{border:1px solid var(--panel-border);background:var(--input-bg);color:var(--text-color);cursor:pointer;border-radius:6px;margin-right:4px;padding:4px 10px;font-size:12px}.mgmt-action-btn:hover{background:var(--color-primary-dark);color:#fff;border-color:var(--color-primary-dark)}.mgmt-action-btn.danger:hover{background:var(--color-danger);border-color:var(--color-danger)}.mgmt-action-btn:disabled,.mgmt-action-btn.disabled{opacity:.4;cursor:not-allowed}.mgmt-stats-bar{align-items:center;gap:6px;font-size:11px;display:flex}.mgmt-mini-bar{background:var(--separator);border-radius:3px;width:70px;height:6px;display:inline-block;overflow:hidden}.mgmt-mini-bar>i{background:var(--color-success);height:100%;display:block}.mgmt-confirm-overlay{z-index:500;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.mgmt-confirm-box{background:var(--panel-bg);border:1px solid var(--panel-border);text-align:center;border-radius:12px;width:90%;max-width:400px;padding:20px 24px;box-shadow:0 8px 32px #0003}.mgmt-confirm-box p{color:var(--text-color);margin:0 0 16px;font-size:13px;line-height:1.6}.mgmt-confirm-actions{justify-content:center;gap:8px;display:flex}.mgmt-toast{z-index:600;color:var(--text-inverse);pointer-events:none;border-radius:10px;padding:10px 20px;font-size:12px;font-weight:500;animation:.2s mgmtToastIn;position:fixed;bottom:40px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0000004d}@keyframes mgmtToastIn{0%{opacity:0;transform:translate(-50%)translateY(8px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.mgmt-toast.success{background:var(--color-success)}.mgmt-toast.error{background:var(--color-danger-dark)}.ver-backdrop{z-index:500;background:#00000080;justify-content:flex-end;align-items:flex-start;animation:.15s verFadeIn;display:flex;position:fixed;inset:0}@keyframes verFadeIn{0%{opacity:0}to{opacity:1}}.ver-drawer{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:14px;flex-direction:column;width:540px;max-width:calc(100vw - 20px);height:calc(100vh - 60px);margin:10px 10px 10px 0;animation:.2s verSlideIn;display:flex;box-shadow:-4px 0 24px #0000004d}@keyframes verSlideIn{0%{opacity:.8;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.ver-header{border-bottom:1px solid var(--panel-border);flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.ver-header h3{color:var(--text-color);align-items:center;gap:6px;margin:0;font-size:14px;font-weight:600;display:flex}.ver-close{cursor:pointer;width:28px;height:28px;color:var(--secondary-text);background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:16px;display:flex}.ver-close:hover{background:var(--hover-bg);color:var(--text-color)}.ver-toolbar{border-bottom:1px solid var(--panel-border);flex-shrink:0;align-items:center;gap:8px;padding:10px 16px;display:flex}.ver-btn{cursor:pointer;border:none;border-radius:6px;padding:5px 12px;font-size:11px;font-weight:500;transition:all .15s}.ver-btn-primary{background:var(--color-primary);color:var(--text-inverse)}.ver-btn-primary:hover{background:var(--color-primary-hover)}.ver-btn-secondary{background:var(--btn-secondary-bg);color:var(--btn-secondary-text)}.ver-btn-secondary:hover{filter:brightness(.95)}.ver-btn-success{background:var(--color-success);color:var(--text-inverse)}.ver-btn-success:hover{background:var(--color-success-hover)}.ver-btn-warn{background:var(--color-warning);color:var(--text-inverse)}.ver-btn-warn:hover{background:#f57c00}.ver-btn-sm{border-radius:5px;padding:3px 8px;font-size:10px}.ver-create-form{border-bottom:1px solid var(--panel-border);flex-shrink:0;align-items:flex-end;gap:8px;padding:10px 16px;display:flex}.ver-create-form.hidden{display:none}.ver-form-group{flex-direction:column;gap:3px;display:flex}.ver-form-label{color:var(--secondary-text);font-size:10px;font-weight:500}.ver-form-input{border:1px solid var(--input-border);background:var(--input-bg);color:var(--input-text);border-radius:6px;outline:none;padding:5px 8px;font-size:11px}.ver-form-input:focus{border-color:var(--color-primary)}.ver-list{flex:1;padding:12px 14px;overflow-y:auto}.ver-list::-webkit-scrollbar{width:5px}.ver-list::-webkit-scrollbar-thumb{background:var(--separator);border-radius:3px}.ver-card{background:var(--item-bg);border:1px solid var(--panel-border);border-radius:8px;margin-bottom:8px;padding:10px 14px;transition:all .15s;position:relative}.ver-card:hover{border-color:var(--text-tertiary)}.ver-card.current{border-color:var(--color-primary);background:#2979ff0a}.ver-card.current:before{content:"当前";background:var(--color-primary);color:var(--text-inverse);border-radius:0 0 4px 4px;padding:1px 6px;font-size:9px;font-weight:600;position:absolute;top:-1px;right:10px}.ver-card-header{align-items:center;gap:8px;margin-bottom:4px;display:flex}.ver-card-ver{color:var(--text-color);font-size:13px;font-weight:700}.ver-card-date{color:var(--secondary-text);font-size:10px}.ver-card-files{color:var(--secondary-text);background:var(--input-bg);border-radius:4px;padding:2px 6px;font-size:10px}.ver-card-changelog{color:var(--secondary-text);white-space:pre-wrap;background:#0000000f;border-radius:4px;max-height:50px;margin:4px 0 8px;padding:4px 6px;font-size:11px;overflow-y:auto}.ver-card-actions{flex-wrap:wrap;gap:3px;display:flex}.ver-empty{text-align:center;color:var(--secondary-text);padding:40px 16px;font-size:13px}.ver-loading{color:var(--secondary-text);justify-content:center;align-items:center;gap:8px;padding:40px;font-size:12px;display:flex}.ver-spinner{border:2px solid var(--panel-border);border-top-color:var(--color-primary);border-radius:50%;width:14px;height:14px;animation:.6s linear infinite verSpin}@keyframes verSpin{to{transform:rotate(360deg)}}.ver-diff-panel{z-index:10;background:var(--panel-bg);border-radius:14px;flex-direction:column;display:flex;position:absolute;inset:0}.ver-diff-panel.hidden{display:none}.ver-diff-header{border-bottom:1px solid var(--panel-border);flex-shrink:0;justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.ver-diff-header h4{color:var(--text-color);margin:0;font-size:13px}.ver-diff-content{font-family:var(--font-family-mono);flex:1;padding:0;font-size:11px;line-height:1.5;overflow:auto}.ver-diff-line{white-space:pre;border-bottom:1px solid #00000008;padding:1px 14px}.ver-diff-line.add{color:var(--color-success-dark);background:#4caf501f}.ver-diff-line.del{color:var(--color-danger-dark);background:#f443361f}.ver-diff-line.hdr{color:var(--color-primary-dark);background:#2979ff14}.ver-diff-line.info{color:var(--secondary-text)}.urdfp-backdrop{z-index:500;background:#00000080;justify-content:flex-end;align-items:flex-start;animation:.15s urdfpFadeIn;display:flex;position:fixed;inset:0}@keyframes urdfpFadeIn{0%{opacity:0}to{opacity:1}}.urdfp-drawer{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:14px;flex-direction:column;width:620px;max-width:calc(100vw - 20px);height:calc(100vh - 60px);margin:10px 10px 10px 0;animation:.2s urdfpSlideIn;display:flex;box-shadow:-4px 0 24px #0000004d}@keyframes urdfpSlideIn{0%{opacity:.8;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.urdfp-header{border-bottom:1px solid var(--panel-border);flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.urdfp-header h3{color:var(--text-color);margin:0;font-size:14px;font-weight:600}.urdfp-close{cursor:pointer;width:28px;height:28px;color:var(--secondary-text);background:0 0;border:none;border-radius:6px;font-size:16px}.urdfp-close:hover{background:var(--hover-bg);color:var(--text-color)}.urdfp-body{flex:1;padding:12px 16px;overflow-y:auto}.urdfp-body::-webkit-scrollbar{width:5px}.urdfp-body::-webkit-scrollbar-thumb{background:var(--separator);border-radius:3px}.urdfp-footer{border-top:1px solid var(--panel-border);flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;padding:10px 16px;display:flex}.urdfp-empty{text-align:center;color:var(--secondary-text);padding:32px 16px;font-size:12px}.urdfp-loading{color:var(--secondary-text);justify-content:center;align-items:center;gap:8px;padding:40px;font-size:12px;display:flex}.urdfp-spinner{border:2px solid var(--panel-border);border-top-color:var(--color-primary);border-radius:50%;width:14px;height:14px;animation:.6s linear infinite verSpin}.urdfp-section{margin-bottom:20px}.urdfp-section-title{color:var(--text-color);border-bottom:1px solid var(--separator);margin-bottom:8px;padding-bottom:6px;font-size:13px;font-weight:600}.urdfp-grid{flex-direction:column;gap:4px;display:flex}.urdfp-grid-header{color:var(--secondary-text);text-transform:uppercase;grid-template-columns:1fr .7fr 1fr 1fr 1fr 1fr;gap:6px;padding:4px 6px;font-size:10px;font-weight:600;display:grid}.urdfp-grid-2col .urdfp-grid-header{grid-template-columns:1fr 1fr}.urdfp-grid-7col .urdfp-grid-header{grid-template-columns:1fr .8fr .8fr .8fr .8fr .8fr .8fr}.urdfp-row{border-radius:6px;grid-template-columns:1fr .7fr 1fr 1fr 1fr 1fr;align-items:center;gap:6px;padding:4px 6px;display:grid}.urdfp-grid-2col .urdfp-row{grid-template-columns:1fr 1fr}.urdfp-grid-7col .urdfp-row{grid-template-columns:1fr .8fr .8fr .8fr .8fr .8fr .8fr}.urdfp-row:hover{background:var(--item-bg)}.urdfp-joint-name{color:var(--text-color);font-size:12px;font-weight:500;font-family:var(--font-family-mono)}.urdfp-tag{border-radius:4px;padding:1px 6px;font-size:10px;font-weight:600;display:inline-block}.urdfp-type-tag{color:var(--color-primary);background:#2979ff1f}.urdfp-input{border:1px solid var(--input-border);background:var(--input-bg);color:var(--input-text);box-sizing:border-box;text-align:right;border-radius:5px;outline:none;width:100%;padding:4px 6px;font-size:11px}.urdfp-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px #2979ff1f}.pu-backdrop{z-index:500;background:#00000080;justify-content:center;align-items:center;animation:.15s urdfpFadeIn;display:flex;position:fixed;inset:0}.pu-modal{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:14px;flex-direction:column;width:96vw;max-width:1080px;height:82vh;animation:.2s urdfpSlideIn;display:flex;box-shadow:0 8px 40px #00000059}.pu-header{border-bottom:1px solid var(--panel-border);flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.pu-header h3{color:var(--text-color);margin:0;font-size:14px;font-weight:600}.pu-close{cursor:pointer;width:28px;height:28px;color:var(--secondary-text);background:0 0;border:none;border-radius:6px;font-size:16px}.pu-close:hover{background:var(--hover-bg);color:var(--text-color)}.pu-body{flex:1;padding:0;display:flex;overflow:hidden}.pu-footer{border-top:1px solid var(--panel-border);flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;padding:10px 16px;display:flex}.pu-link-tree{border-right:1px solid var(--separator);background:var(--item-bg);width:280px;padding:12px 8px;overflow-y:auto}.pu-link-tree::-webkit-scrollbar{width:5px}.pu-link-tree::-webkit-scrollbar-thumb{background:var(--separator);border-radius:3px}.pu-link-search{border:1px solid var(--panel-border);background:var(--panel-bg);width:100%;color:var(--primary-text);border-radius:6px;outline:none;margin-bottom:8px;padding:6px 10px;font-size:12px}.pu-link-search:focus{border-color:var(--color-primary)}.pu-tree-section-label{color:var(--secondary-text);padding:4px 10px;font-size:10px;font-weight:700}.pu-link-row{cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:7px 12px;font-size:12px;display:flex}.pu-link-row:hover{background:var(--panel-bg)}.pu-link-row.selected{background:var(--color-primary-dark);color:#fff}.pu-link-row .pl-name{font-family:var(--font-family-mono);flex:1;font-size:11px}.pu-link-row .pl-badge{color:var(--color-warning);background:#f59e0b2e;border-radius:999px;padding:1px 6px;font-size:9px}.pu-link-row.selected .pl-badge{color:#fff;background:#ffffff40}.pu-detail{flex:1;padding:18px 22px;overflow-y:auto}.pu-detail-empty{height:100%;color:var(--secondary-text);flex-direction:column;justify-content:center;align-items:center;gap:10px;font-size:13px;display:flex}.pu-detail-empty .emoji{font-size:44px}.pu-section-card{border:1px solid var(--panel-border);background:var(--panel-bg);border-radius:10px;margin-bottom:14px;padding:14px 16px}.pu-section-card h4{align-items:center;gap:8px;margin:0 0 10px;font-size:13px;font-weight:700;display:flex}.pu-mesh-compare{grid-template-columns:1fr 30px 1fr;gap:8px;margin:12px 0;display:grid}.pu-mesh-box{border:1px solid var(--panel-border);border-radius:8px;padding:10px 12px}.pu-mesh-box .pm-label{color:var(--secondary-text);margin-bottom:4px;font-size:11px;font-weight:700}.pu-mesh-box .pm-file{font-family:var(--font-family-mono);word-break:break-all;font-size:11px}.pu-mesh-box.new{background:#22c55e12;border-color:#22c55e}.pu-mesh-arrow{color:var(--secondary-text);justify-content:center;align-items:center;font-size:20px;display:flex}.pu-form-grid{grid-template-columns:1fr 1fr;gap:10px 14px;display:grid}.pu-form-grid label{color:var(--secondary-text);margin-bottom:4px;font-size:11px;display:block}.pu-form-grid input,.pu-form-grid select,.pu-form-grid textarea{border:1px solid var(--panel-border);background:var(--item-bg);width:100%;color:var(--primary-text);border-radius:6px;padding:6px 10px;font-family:inherit;font-size:12px}.pu-form-grid input:focus,.pu-form-grid select:focus{border-color:var(--color-primary);outline:none}.pu-form-row-full{grid-column:1/-1}.pu-recent-updates{margin-top:16px}.pu-recent-updates strong{margin-bottom:6px;font-size:12px;display:block}.rr-item{gap:8px;padding:4px 0;font-size:11px;display:flex}.rr-tag{background:var(--item-bg);color:var(--secondary-text);white-space:nowrap;border-radius:4px;padding:1px 6px}.version-current-card{border:1px solid var(--panel-border);background:linear-gradient(135deg,#2563eb1f,#22c55e1a);border-radius:12px;align-items:center;gap:16px;margin:0 22px 14px;padding:14px 18px;display:flex}.version-current-card .vc-tag{background:var(--color-primary-dark);color:#fff;border-radius:999px;padding:4px 10px;font-size:11px;font-weight:700}.version-current-card .vc-main{flex:1}.version-current-card .vc-ver{color:var(--color-primary-dark);font-size:18px;font-weight:700}.version-current-card .vc-meta{color:var(--secondary-text);margin-top:2px;font-size:11px}.version-current-card .vc-changelog{background:var(--item-bg);border-radius:8px;margin-top:8px;padding:8px 12px;font-size:12px;line-height:1.6}.version-upload-zone{border:2px dashed var(--panel-border);text-align:center;cursor:pointer;background:var(--item-bg);border-radius:10px;margin:0 22px 14px;padding:14px;transition:all .2s}.version-upload-zone:hover{border-color:var(--color-primary);background:#2563eb0f}.version-timeline{padding:0 22px 8px}.version-timeline-title{color:var(--secondary-text);border-bottom:1px solid var(--separator);margin-bottom:10px;padding-bottom:6px;font-size:12px;font-weight:700}.version-row{border:1px solid var(--panel-border);background:var(--panel-bg);border-radius:8px;grid-template-columns:60px 1fr 150px 200px;align-items:center;gap:12px;margin-bottom:8px;padding:10px 12px;display:grid}.version-row.is-current{border-color:var(--color-primary);background:#2563eb0d}.version-row .vr-ver{font-size:14px;font-weight:700}.version-row .vr-ver .is-current-pill{background:var(--color-primary-dark);color:#fff;vertical-align:middle;border-radius:999px;margin-left:4px;padding:2px 6px;font-size:9px}.version-row .vr-meta{color:var(--secondary-text);font-size:11px}.version-row .vr-change{font-size:12px;line-height:1.5}.version-row .vr-stats{color:var(--secondary-text);flex-direction:column;gap:2px;font-size:10px;display:flex}.version-row .vr-stats-step{line-height:1.35}.version-row .vr-actions{flex-wrap:wrap;gap:4px;display:flex}.version-row .vr-actions button{border:1px solid var(--panel-border);background:var(--item-bg);cursor:pointer;color:var(--primary-text);border-radius:6px;padding:4px 8px;font-size:11px}.version-row .vr-actions button:hover{background:var(--color-primary-dark);color:#fff;border-color:var(--color-primary-dark)}.version-row .vr-actions button.danger:hover{background:var(--color-danger);border-color:var(--color-danger)}[data-theme=dark] .ver-card-changelog{background:#ffffff0a}[data-theme=dark] .ver-card{background:#2d2d2d;border-color:#3e3e42}[data-theme=dark] .pu-link-tree{background:#1e1e1e}[data-theme=dark] .pu-section-card{background:#2d2d2d}[data-theme=dark] .version-current-card{background:linear-gradient(135deg,#2563eb14,#22c55e0f)}[data-theme=dark] .ver-diff-line{border-color:#ffffff08}.model-loading-overlay{z-index:99;-webkit-backdrop-filter:blur(4px);opacity:1;background:#000000a6;flex-direction:column;justify-content:center;align-items:center;transition:opacity .3s;display:flex;position:absolute;inset:0}.model-loading-overlay.model-loading-fadeout{opacity:0;pointer-events:none}.model-loading-spinner{border:3px solid #fff3;border-top-color:var(--color-primary,#2979ff);border-radius:50%;width:48px;height:48px;margin-bottom:16px;animation:.8s linear infinite model-loading-spin}@keyframes model-loading-spin{to{transform:rotate(360deg)}}.model-loading-text{color:#fff;text-align:center;max-width:80%;font-size:14px;line-height:1.5}.model-loading-progress{background:#ffffff26;border-radius:2px;width:240px;height:4px;margin-top:12px;overflow:hidden}.model-loading-progress-bar{background:var(--color-primary,#2979ff);border-radius:2px;width:0%;height:100%;transition:width .2s}.model-loading-progress-text{color:#ffffffbf;margin-top:6px;font-size:12px}.model-error-overlay{z-index:100;-webkit-backdrop-filter:blur(4px);background:#000000bf;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.model-error-icon{color:#f44;background:#ff444426;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;margin-bottom:16px;font-size:24px;display:flex}.model-error-message{color:#f88;text-align:center;max-width:80%;margin-bottom:20px;font-size:14px;line-height:1.5}.model-error-retry{background:var(--color-primary,#2979ff);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:8px 24px;font-size:13px;transition:background .2s}.model-error-retry:hover{background:var(--color-primary-hover,#1565c0)}[data-theme=dark] .model-loading-overlay{background:#000000bf}[data-theme=dark] .model-error-overlay{background:#000000d9}
