: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)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-family-sans);background:var(--bg-color);color:var(--text-color);font-size:11px;overflow:hidden}#toolbar{z-index:100;background:var(--toolbar-bg);backdrop-filter:blur(8px);border-radius:var(--radius-round);box-shadow:var(--shadow-md);white-space:nowrap;align-items:center;gap:4px;max-width:calc(100vw - 20px);padding:6px 12px;display:flex;position:fixed;top:10px;left:50%;overflow-x:auto;transform:translate(-50%)}#toolbar::-webkit-scrollbar{display:none}#toolbar{scrollbar-width:none}.tb-sep{background:var(--separator);width:1px;height:20px;margin:0 4px}.tb-btn{border-radius:var(--radius-2xl);color:var(--secondary-text);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;background:0 0;border:none;padding:5px 12px;font-size:12px}.tb-btn.active{background:var(--color-primary);color:#fff}.tb-btn.panel-btn{background:var(--item-bg);color:var(--input-text)}.tb-btn.panel-btn.active{background:var(--color-primary);color:#fff}.tb-theme{background:var(--separator);cursor:pointer;color:gold;border:none;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:14px;display:flex}#canvas-container{position:fixed;inset:0}#canvas-container canvas{display:block}#axis-indicator{pointer-events:none;z-index:100;width:100px;height:100px;position:fixed;bottom:20px;right:20px}#axis-indicator canvas{display:block}.panel{background:var(--panel-bg);backdrop-filter:blur(8px);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);border:1px solid var(--panel-border);flex-direction:column;min-width:240px;display:flex;position:fixed;overflow:hidden}.panel.hidden{display:none}.panel-header{border-bottom:1px solid var(--panel-border);cursor:move;user-select:none;white-space:nowrap;justify-content:space-between;align-items:center;padding:10px 14px 8px;display:flex}.panel-title{color:var(--text-color);font-size:11px;font-weight:600}.panel-actions{gap:4px;display:flex}.panel-icon-btn{cursor:pointer;border-radius:var(--radius-sm);width:22px;height:22px;color:var(--secondary-text);background:0 0;border:none;justify-content:center;align-items:center;font-size:14px;display:flex}.panel-icon-btn:hover{background:var(--hover-bg);color:var(--text-color)}.panel-body{flex-direction:column;flex:1;padding:12px 14px;display:flex;overflow-y:auto}#panel-file{width:298px;max-height:calc(100vh - 80px);top:60px;left:14px}#panel-file .panel-body{flex-direction:column;display:flex}#panel-file .drop-zone{flex-direction:column;flex:1;display:flex}#panel-joints{width:298px;max-height:calc(100vh - 80px);top:360px;left:14px}#panel-actuators{width:320px;max-height:calc(100vh - 80px);top:60px;left:330px}#panel-structure{width:360px;max-height:calc(50vh - 50px);top:60px;right:14px}#panel-structure .panel-body{padding:0}#panel-edit{width:280px;max-height:calc(50vh - 100px);top:calc(50vh + 20px);right:14px}#panel-edit .panel-body{flex-direction:column;display:flex}#panel-collision{width:240px;max-height:600px;top:60px;right:290px}#info-tooltip{background:var(--tooltip-bg);backdrop-filter:blur(8px);border:1px solid var(--panel-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);color:var(--text-color);pointer-events:none;z-index:1000;max-width:280px;padding:10px 12px;font-size:10px;line-height:1.5;display:none;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}#info-tooltip.visible{display:block}#statusbar{background:var(--panel-bg);backdrop-filter:blur(4px);border-top:1px solid var(--panel-border);height:28px;color:var(--secondary-text);z-index:50;justify-content:center;align-items:center;gap:20px;font-size:11px;display:flex;position:fixed;bottom:0;left:0;right:0}.status-item{align-items:center;gap:4px;display:flex}.status-key{color:var(--color-primary);font-weight:600}#topbar-nav{z-index:100;background:var(--toolbar-bg);backdrop-filter:var(--toolbar-blur,blur(12px));border:1px solid var(--panel-border);white-space:nowrap;border-top:none;border-radius:0 0 12px 12px;justify-content:flex-start;align-items:center;gap:2px;height:40px;padding:0 20px;display:none;position:fixed;top:0;left:0;right:0;overflow-x:auto;box-shadow:0 1px 4px #0000001f}#topbar-nav::-webkit-scrollbar{display:none}#topbar-nav{scrollbar-width:none}#topbar-nav.visible{display:flex}#topbar-nav:after{content:"";background:linear-gradient(to right, transparent, var(--toolbar-bg,#fffffff2));pointer-events:none;flex-shrink:0;width:32px;position:sticky;top:0;bottom:0;right:0}.nav-logo{color:var(--text-color);white-space:nowrap;flex-shrink:0;align-items:center;gap:6px;min-width:28px;padding:4px 10px;font-size:13px;font-weight:700;display:flex}.nav-logo-icon{flex-shrink:0;font-size:18px}.nav-logo-text{flex-shrink:1;min-width:0;overflow:hidden}.tb-sep{background:var(--separator);flex-shrink:0;width:1px;height:20px;margin:0 3px}.robot-selector{cursor:pointer;color:var(--text-color);white-space:nowrap;background:linear-gradient(135deg,#2979ff1a,#2979ff0a);border:1px solid #2979ff40;border-radius:14px;flex-shrink:1;align-items:center;gap:4px;min-width:60px;max-width:180px;padding:4px 8px 4px 6px;font-size:12px;transition:all .15s;display:flex;position:relative;overflow:hidden}.robot-selector:hover{border-color:var(--color-primary);background:linear-gradient(135deg,#2979ff29,#2979ff14)}.robot-selector-thumb{background:linear-gradient(135deg,#4b5563,#1f2937);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;font-size:14px;display:flex}.robot-selector-info{flex-direction:column;gap:0;min-width:0;line-height:1.2;display:flex}.robot-selector-name{text-overflow:ellipsis;font-size:12px;font-weight:700;overflow:hidden}.robot-selector-meta{color:var(--secondary-text);text-overflow:ellipsis;font-size:10px;overflow:hidden}.robot-selector-arrow{color:var(--color-primary);flex-shrink:0;margin-left:4px;font-size:10px}.nav-tab{color:var(--secondary-text);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;background:0 0;border:none;border-radius:18px;flex-shrink:0;align-items:center;gap:4px;padding:5px 8px;font-size:13px;font-weight:500;display:flex;overflow:visible}.nav-tab:hover{background:var(--hover-bg);color:var(--text-color)}.nav-tab.active{background:var(--color-primary);color:#fff;box-shadow:0 2px 8px #2979ff4d}[data-theme=dark] .nav-tab.active{background:var(--color-primary);box-shadow:0 2px 8px #0e639c40}[data-theme=dark] .nav-tab{color:var(--secondary-text)}[data-theme=dark] .nav-tab:hover{color:var(--text-primary)}[data-theme=dark] .tb-btn{color:var(--secondary-text)}[data-theme=dark] .tb-btn:hover{color:var(--text-primary)}[data-theme=dark] #topbar-nav{box-shadow:0 1px 4px #0006}[data-theme=dark] .nav-logo{color:var(--text-primary)}[data-theme=dark] .robot-selector{color:var(--text-primary);border-color:#0e639c66}.nav-tab-icon{flex-shrink:0;font-size:14px}.nav-tab-label{flex-shrink:0;font-size:12px}.nav-sep{background:var(--separator);flex-shrink:0;width:1px;height:24px;margin:0 8px}.tb-badge{background:var(--color-danger);color:#fff;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;min-width:18px;height:18px;margin-left:2px;padding:0 5px;font-size:11px;font-weight:600;display:inline-flex}.nav-tab.active .tb-badge{color:#fff;background:#ffffff4d}.tb-btn{color:var(--secondary-text);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;background:0 0;border:none;border-radius:18px;flex-shrink:0;align-items:center;gap:4px;padding:5px 10px;font-size:13px;font-weight:500;display:flex}.tb-btn:hover{background:var(--hover-bg);color:var(--text-color)}.tb-btn:disabled{opacity:.35;cursor:not-allowed;pointer-events:auto}.tb-btn.icon-only{padding:5px 7px;font-size:14px}.user-menu-wrap{flex-shrink:0;position:relative;overflow:visible}.user-menu-btn{background:var(--item-bg);border:1px solid var(--panel-border);cursor:pointer;color:var(--text-color);white-space:nowrap;border-radius:16px;align-items:center;gap:4px;padding:4px 8px 4px 10px;font-size:12px;font-weight:500;display:flex}.user-menu-btn:hover{background:var(--hover-bg)}.user-avatar{color:#fff;background:#2979ff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:11px;font-weight:700;display:flex}.user-role-tag{color:var(--color-primary);background:#2979ff26;border-radius:8px;padding:1px 6px;font-size:10px;font-weight:500}.user-dropdown{background:var(--panel-bg);border:1px solid var(--panel-border);box-shadow:var(--shadow-lg);z-index:1000;border-radius:12px;min-width:200px;padding:8px;display:none;position:fixed}.user-dropdown.visible{display:block}.user-dropdown-item{cursor:pointer;color:var(--text-color);border-radius:8px;align-items:center;gap:8px;padding:9px 14px;font-size:13px;transition:background .12s;display:flex}.user-dropdown-item:hover{background:var(--hover-bg)}.user-dropdown-sep{background:var(--separator);height:1px;margin:4px 0}.admin-only.rbac-hidden,#panel-joints,#panel-actuators,#panel-structure,#panel-edit,#panel-collision,#panel-link-info,#info-tooltip,#statusbar,#axis-indicator{display:none!important}#viewer-iframe-container{z-index:97;display:none;position:fixed;inset:76px 0 0}#viewer-iframe-container iframe{border:none;width:100%;height:100%}#problem-modal{z-index:9998;background:#00000080;justify-content:center;align-items:center;display:none;position:fixed;inset:0}#login-page{z-index:9999;background:linear-gradient(135deg,#1a1a2e 0%,var(--bg-primary) 50%,var(--color-primary-dark) 100%);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}body.embedded-mode #toolbar,body.embedded-mode .panel,body.embedded-mode #axis-indicator,body.embedded-mode #rm-trigger,body.embedded-mode #dh-trigger,body.embedded-mode #user-bar,body.embedded-mode #topbar-nav,body.embedded-mode #problem-list-view,body.embedded-mode #login-page,body.embedded-mode #viewer-iframe-container{display:none!important}body.embedded-mode #canvas-container{display:block!important;position:fixed!important;inset:0!important}[data-theme=dark] .ace_gutter{background:var(--ace-gutter)!important;color:var(--secondary-text)!important}[data-theme=dark] .ace_scroller{background:var(--ace-bg)!important}.editor-highlight-line{z-index:20;background-color:#2979ff4d;position:absolute}.ace_changed_line{z-index:20;position:absolute;background:#6496ff4d!important}#joint-problem-panel{background:var(--panel-bg);border-left:1px solid var(--panel-border);z-index:99;flex-direction:column;width:400px;height:calc(100vh - 76px);display:flex;position:fixed;top:76px;right:0;box-shadow:-4px 0 20px #00000026}#joint-problem-panel.collapsed{width:44px}#joint-problem-panel.collapsed .panel-content,#joint-problem-panel.hidden{display:none}#joint-problem-panel .panel-tab{background:var(--panel-bg);border-right:1px solid var(--panel-border);cursor:pointer;z-index:1;flex-direction:column;align-items:center;width:44px;height:100%;padding-top:12px;display:flex;position:absolute;top:0;left:0}#joint-problem-panel .panel-tab:hover{background:var(--hover-bg)}#joint-problem-panel .tab-icon{margin-bottom:8px;font-size:18px}#joint-problem-panel .tab-title{writing-mode:vertical-rl;color:var(--text-color);letter-spacing:2px;font-size:12px;font-weight:500}#joint-problem-panel .tab-badge{color:#fff;background:#f44336;border-radius:9px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 4px;font-size:10px;font-weight:600;display:flex;position:absolute;top:8px;right:8px}#joint-problem-panel .panel-content{flex-direction:column;flex:1;margin-left:44px;display:flex;overflow:hidden}#joint-problem-panel .panel-header{border-bottom:1px solid var(--panel-border);background:var(--item-bg);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}#joint-problem-panel .panel-header-title{color:var(--text-color);font-size:14px;font-weight:600}#joint-problem-panel .panel-header-joint{color:var(--primary-text);margin-left:8px;font-size:12px}#joint-problem-panel .panel-header-actions{gap:4px;display:flex}#joint-problem-panel .panel-body{flex:1;padding:12px;overflow-y:auto}#joint-problem-panel .panel-footer{border-top:1px solid var(--panel-border);gap:8px;padding:12px 16px;display:flex}#joint-problem-panel .panel-footer .btn{border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast);border:none;flex:1;padding:10px;font-size:12px;font-weight:500}#joint-problem-panel .panel-footer .btn-primary{background:var(--color-primary);color:#fff}#joint-problem-panel .panel-footer .btn-primary:hover{background:var(--color-primary-hover)}#joint-problem-panel .panel-footer .btn-secondary{background:var(--btn-secondary-bg);color:var(--btn-secondary-text)}#joint-problem-panel .panel-footer .btn-secondary:hover{filter:brightness(1.1)}.jpp-empty-state{text-align:center;color:var(--secondary-text);padding:40px 20px}.jpp-empty-state .empty-icon{margin-bottom:12px;font-size:48px}.jpp-empty-state .empty-text{font-size:13px}.detail-panel{width:var(--detail-expanded-width,400px);background:var(--panel-bg);border-left:1px solid var(--panel-border);z-index:99;flex-direction:column;height:calc(100vh - 76px);transition:width .3s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:76px;right:0;overflow:hidden;box-shadow:-4px 0 20px #00000026}.detail-panel[data-position=left]{border-left:none;border-right:1px solid var(--panel-border);left:0;right:auto;box-shadow:4px 0 20px #00000026}.detail-panel.collapsed{width:var(--detail-collapsed-width,44px)}.detail-panel.collapsed .detail-panel-content{opacity:0;pointer-events:none}.detail-panel.hidden{display:none}.detail-panel:not(.collapsed):not(.hidden) .detail-panel-content{opacity:1;pointer-events:auto;transition:opacity .2s .15s}.detail-panel-tab{background:var(--panel-bg);border-right:1px solid var(--panel-border);cursor:pointer;z-index:1;flex-direction:column;flex-shrink:0;align-items:center;width:44px;height:100%;padding-top:12px;display:flex;position:absolute;top:0;left:0}.detail-panel[data-position=left] .detail-panel-tab{border-right:none;border-left:1px solid var(--panel-border);left:auto;right:0}.detail-panel-tab:hover{background:var(--hover-bg)}.detail-panel-tab-icon{margin-bottom:8px;font-size:18px}.detail-panel-tab-title{writing-mode:vertical-rl;color:var(--text-color);letter-spacing:2px;font-size:12px;font-weight:500}.detail-panel-content{opacity:1;flex-direction:column;flex:1;margin-left:44px;display:flex;overflow:hidden}.detail-panel[data-position=left] .detail-panel-content{margin-left:0;margin-right:44px}.detail-panel-header{border-bottom:1px solid var(--panel-border);background:var(--item-bg);flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.detail-panel-header-title{color:var(--text-color);font-size:14px;font-weight:600}.detail-panel-header-actions{gap:4px;display:flex}.detail-panel-btn-icon{width:28px;height:28px;color:var(--secondary-text);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;font-size:14px;transition:all .15s;display:flex}.detail-panel-btn-icon:hover{background:var(--hover-bg);color:var(--text-color)}.detail-panel-body{flex:1;padding:12px;overflow-y:auto}.detail-panel-inline-form{border-top:1px solid var(--panel-border);background:var(--panel-bg);flex-shrink:0}.detail-panel-footer{border-top:1px solid var(--panel-border);flex-shrink:0;gap:8px;padding:12px 16px;display:flex}.detail-panel-footer .btn{border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast);border:none;flex:1;padding:10px;font-size:12px;font-weight:500}.detail-panel-footer .btn-primary{background:var(--color-primary);color:#fff}.detail-panel-footer .btn-primary:hover{background:var(--color-primary-hover)}.detail-panel-footer .btn-secondary{background:var(--btn-secondary-bg);color:var(--btn-secondary-text)}.detail-panel-footer .btn-secondary:hover{filter:brightness(1.1)}[data-theme=dark] .detail-panel-header{background:var(--bg-elevated);border-color:var(--border-color)}[data-theme=dark] .detail-panel-header-title{color:var(--text-primary)}[data-theme=dark] .detail-panel-body{background:var(--bg-primary)}[data-theme=dark] .detail-panel-tab{background:var(--bg-surface);border-color:var(--border-color)}[data-theme=dark] .detail-panel-tab .detail-panel-tab-title{color:var(--text-primary)}[data-theme=dark] .detail-panel-footer .btn-secondary{background:var(--btn-secondary-bg);color:var(--text-primary)}[data-theme=dark] .detail-panel-footer .btn-primary{background:var(--color-primary)}.detail-field{margin-bottom:12px}.detail-field:last-child{margin-bottom:0}.detail-field-row{gap:12px;margin-bottom:12px;display:flex}.detail-field-row .detail-field{flex:1;margin-bottom:0}.detail-label{color:var(--secondary-text);text-transform:uppercase;letter-spacing:.3px;margin-bottom:4px;font-size:11px;font-weight:500;display:block}.detail-value{color:var(--text-color);font-size:13px;line-height:1.5}.detail-value-title{color:var(--primary-text);font-size:15px;font-weight:600}.detail-description{color:var(--secondary-text);background:var(--item-bg);white-space:pre-wrap;border-radius:6px;padding:8px 10px;font-size:12px;line-height:1.6}.detail-severity-badge{border-radius:4px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-block}.detail-status-dot{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:4px;display:inline-block}.detail-progress-bar{background:var(--border-color);vertical-align:middle;border-radius:3px;width:80px;height:6px;margin-right:8px;display:inline-block;overflow:hidden}.detail-progress-fill{background:var(--color-primary,#2979ff);border-radius:3px;height:100%;transition:width .3s}.detail-progress-text{color:var(--secondary-text);vertical-align:middle;font-size:12px}.detail-overdue{font-weight:600;color:var(--color-danger-dark)!important}.detail-info-tag{background:var(--item-bg);color:var(--secondary-text);border:1px solid var(--border-color);border-radius:4px;padding:2px 8px;font-size:11px;display:inline-block}.detail-info-tag-link{color:var(--color-primary,#2979ff);border-color:var(--color-primary,#2979ff);background:#2979ff14}.detail-blocker-badge{background:var(--color-danger-light);color:var(--color-danger-dark);border:1px solid var(--color-danger-light);border-radius:4px;padding:4px 12px;font-size:12px;font-weight:600;display:inline-block}[data-theme=dark] .detail-description{background:#2a2a2a}[data-theme=dark] .detail-info-tag{border-color:var(--text-secondary);background:#2a2a2a}[data-theme=dark] .detail-blocker-badge{background:var(--color-danger-light);color:var(--color-danger-text);border-color:var(--color-danger-light)}.rbac-disabled{opacity:.4!important;cursor:not-allowed!important;pointer-events:none!important}.rbac-hidden{display:none!important}.rbac-readonly-hint{border-radius:var(--radius-lg);color:var(--color-warning);text-align:center;background:#ff980026;margin:8px 0;padding:8px 16px;font-size:11px}[data-theme=dark] #problem-list-view,[data-theme=dark] #requirements-view{background:var(--bg-primary)!important}[data-theme=dark] #problem-list-title,[data-theme=dark] #problem-modal-title,[data-theme=dark] #req-modal-title,[data-theme=dark] #import-modal-title,[data-theme=dark] #llm-review-title{color:var(--text-primary)!important}[data-theme=dark] #problem-modal h3,[data-theme=dark] #requirement-modal h3,[data-theme=dark] #import-modal h3,[data-theme=dark] #llm-review-modal h3{color:var(--text-primary)!important}[data-theme=dark] #problem-form label,[data-theme=dark] #requirement-form label{color:var(--text-secondary)!important}[data-theme=dark] #problem-title,[data-theme=dark] #problem-description,[data-theme=dark] #problem-severity,[data-theme=dark] #problem-status,[data-theme=dark] #problem-subcategory,[data-theme=dark] #problem-due-date,[data-theme=dark] #problem-joint,[data-theme=dark] #problem-assignee,[data-theme=dark] #req-title,[data-theme=dark] #req-description,[data-theme=dark] #req-priority,[data-theme=dark] #req-source{background:var(--input-bg)!important;color:var(--text-primary)!important;border-color:var(--input-bg)!important}[data-theme=dark] #delete-problem-btn,[data-theme=dark] #delete-req-btn,[data-theme=dark] #problem-submit-btn,[data-theme=dark] #req-submit-btn,[data-theme=dark] #import-confirm-btn,[data-theme=dark] #llm-review-distribute-btn,[data-theme=dark] #add-problem-btn,[data-theme=dark] #add-requirement-btn{background:var(--color-primary)!important}[data-theme=dark] #problem-empty-state,[data-theme=dark] #req-empty-state,[data-theme=dark] #problem-empty-state p,[data-theme=dark] #req-empty-state p{color:var(--text-secondary)!important}[data-theme=dark] .jpp-problem-item{background:var(--bg-elevated)!important}[data-theme=dark] .jpp-problem-title{color:var(--text-primary)!important}[data-theme=dark] .jpp-problem-meta{color:var(--text-secondary)!important}[data-theme=dark] #joint-problem-panel .panel-footer .btn-secondary{background:var(--btn-secondary-bg)!important;color:var(--text-primary)!important}[data-theme=dark] #joint-problem-panel .panel-footer .btn-primary{background:var(--color-primary)!important}[data-theme=dark] #joint-problem-panel .panel-header{background:var(--bg-elevated)!important;border-color:var(--border-color)!important}[data-theme=dark] #joint-problem-panel .panel-header-title{color:var(--text-primary)!important}[data-theme=dark] #joint-problem-panel .panel-body{background:var(--bg-primary)!important}[data-theme=dark] #joint-problem-panel .panel-tab{background:var(--bg-surface)!important;border-color:var(--border-color)!important}[data-theme=dark] #joint-problem-panel .panel-tab .tab-title{color:var(--text-primary)!important}[data-theme=dark] #report-table table,[data-theme=dark] #gantt-table table{background:var(--bg-surface)!important}[data-theme=dark] #report-table th,[data-theme=dark] #gantt-table th{background:var(--bg-elevated)!important;color:var(--text-primary)!important;border-color:var(--border-color)!important}[data-theme=dark] #report-table td,[data-theme=dark] #gantt-table td{color:var(--text-primary)!important;border-color:var(--border-color)!important}#link-tree-panel{background:var(--panel-bg);border-right:1px solid var(--panel-border);z-index:96;flex-direction:row;width:280px;height:calc(100vh - 76px);transition:width .2s;display:none;position:fixed;top:76px;left:0;box-shadow:2px 0 12px #00000014}#link-tree-panel.lt-visible{display:flex}#link-tree-panel.lt-collapsed{width:44px}#link-tree-panel.lt-collapsed .lt-content{display:none}#link-tree-panel .lt-tab{background:var(--item-bg);border-right:1px solid var(--panel-border);cursor:pointer;z-index:1;flex-direction:column;align-items:center;width:44px;height:100%;padding-top:12px;display:flex;position:absolute;top:0;left:0}#link-tree-panel .lt-tab:hover{background:var(--hover-bg)}#link-tree-panel .lt-tab-icon{margin-bottom:8px;font-size:18px}#link-tree-panel .lt-tab-title{writing-mode:vertical-rl;color:var(--text-color);letter-spacing:2px;font-size:12px;font-weight:500}#link-tree-panel .lt-content{flex-direction:column;flex:1;margin-left:44px;display:flex;overflow:hidden}#link-tree-panel .lt-header{border-bottom:1px solid var(--panel-border);background:var(--item-bg);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}#link-tree-panel .lt-header-title{color:var(--text-color);font-size:14px;font-weight:600}#link-tree-panel .lt-header-actions{gap:4px;display:flex}#link-tree-panel .lt-body{flex:1;padding:8px 0;overflow-y:auto}.lt-link-item{cursor:pointer;color:var(--text-color);border-bottom:1px solid #0000;align-items:center;padding:6px 12px;font-size:13px;transition:background .15s;display:flex}.lt-link-item:hover{background:var(--hover-bg)}.lt-link-item.lt-selected{background:var(--selected-bg,#e3f2fd);border-left:3px solid var(--color-primary)}.lt-link-icon{flex-shrink:0;margin-right:8px;font-size:14px}.lt-link-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.lt-link-mesh-badge{background:var(--color-primary);color:#fff;border-radius:8px;flex-shrink:0;margin-left:6px;padding:1px 6px;font-size:10px}.lt-empty{text-align:center;color:var(--hint-text);padding:24px 16px;font-size:13px}#link-tree-panel .lt-footer{border-top:1px solid var(--panel-border);background:var(--item-bg);padding:10px 12px}.lt-upload-info{color:var(--text-color);word-break:break-all;margin-bottom:8px;font-size:12px}.lt-upload-info .lt-mesh-name{color:var(--color-primary);font-weight:600}.lt-upload-btn{border:1px dashed var(--panel-border);background:var(--hover-bg);width:100%;color:var(--text-color);text-align:center;cursor:pointer;border-radius:6px;padding:8px 12px;font-size:12px;transition:all .15s;display:block}.lt-upload-btn:hover{border-color:var(--color-primary);background:var(--selected-bg,#e3f2fd)}.lt-uploading{opacity:.6;pointer-events:none}[data-theme=dark] #link-tree-panel{background:var(--bg-primary)!important;border-color:var(--border-color)!important}[data-theme=dark] #link-tree-panel .lt-tab{background:var(--bg-surface)!important;border-color:var(--border-color)!important}[data-theme=dark] #link-tree-panel .lt-tab .lt-tab-title{color:var(--text-primary)!important}[data-theme=dark] #link-tree-panel .lt-header{background:var(--bg-elevated)!important;border-color:var(--border-color)!important}[data-theme=dark] #link-tree-panel .lt-header-title{color:var(--text-primary)!important}[data-theme=dark] #link-tree-panel .lt-body{background:var(--bg-primary)!important}[data-theme=dark] .lt-link-item{color:var(--text-primary)!important}[data-theme=dark] .lt-link-item:hover{background:var(--hover-bg)!important}[data-theme=dark] .lt-link-item.lt-selected{background:var(--selected-bg)!important;border-left-color:var(--color-primary)!important}[data-theme=dark] #link-tree-panel .lt-footer{background:var(--bg-elevated)!important;border-color:var(--border-color)!important}[data-theme=dark] .lt-upload-info{color:var(--text-primary)!important}[data-theme=dark] .lt-upload-btn{background:var(--input-bg)!important;border-color:var(--input-bg)!important;color:var(--text-primary)!important}[data-theme=dark] .lt-upload-btn:hover{border-color:var(--color-primary)!important;background:var(--selected-bg)!important}[data-theme=dark] .lt-empty{color:#7a7a7a!important}.lt-step-node{cursor:pointer;user-select:none;align-items:center;height:22px;padding-right:6px;display:flex}.lt-step-node:hover{background:var(--hover-bg)}.lt-step-node.lt-step-selected{background:var(--selected-bg)}.lt-step-node.lt-step-hidden{opacity:.4}.lt-step-arrow{color:#888;text-align:center;flex-shrink:0;width:14px;min-width:14px;font-size:10px;display:inline-block}.lt-step-arrow.lt-step-leaf{color:#bbb;font-size:11px}[data-theme=dark] .lt-step-arrow{color:#666}[data-theme=dark] .lt-step-arrow.lt-step-leaf{color:var(--text-secondary)}.lt-step-check{text-align:center;color:#888;cursor:pointer;flex-shrink:0;width:16px;min-width:16px;font-size:11px;display:inline-block}.lt-step-check:hover{color:var(--text-color)}.lt-step-name{color:var(--text-color);text-overflow:ellipsis;white-space:nowrap;flex:1;padding-left:2px;font-size:12px;line-height:22px;overflow:hidden}.problem-card{background:var(--item-bg);border:1px solid var(--panel-border);box-shadow:var(--shadow-sm);cursor:pointer;border-radius:12px;margin-bottom:10px;padding:14px;transition:transform .15s,box-shadow .15s,border-color .15s;position:relative}.problem-card:hover{border-color:var(--color-primary);transform:translateY(-2px);box-shadow:0 4px 16px #0000001f}.problem-card-header{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:6px;display:flex}.problem-card-title{color:var(--text-color);text-overflow:ellipsis;white-space:nowrap;flex:1;margin:0;font-size:13px;font-weight:600;overflow:hidden}.problem-card-blocker{font-size:16px;position:absolute;top:8px;right:8px}.problem-card-desc{color:var(--secondary-text);text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 10px;font-size:11px;display:-webkit-box;overflow:hidden}.problem-card-tags{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:8px;display:flex}.problem-card-tag{white-space:nowrap;border-radius:4px;align-items:center;gap:3px;padding:2px 6px;font-size:10px;font-weight:500;display:inline-flex}.problem-card-footer{align-items:center;gap:6px;display:flex}.problem-card-progress-bg{background:var(--separator-color);border-radius:3px;flex:1;height:5px;overflow:hidden}.problem-card-progress-bar{border-radius:3px;height:100%}.problem-card-progress-text{color:var(--secondary-text);white-space:nowrap;font-size:10px}.problem-card-assignee{color:var(--hint-text);white-space:nowrap;margin-left:auto;font-size:10px}.problem-card-meta{border-top:1px solid var(--separator,#e5e7eb);align-items:center;gap:8px;margin-top:6px;padding-top:6px;display:flex}[data-theme=dark] .problem-card-meta{border-color:var(--border-color)}[data-theme=dark] .problem-card{background:var(--bg-elevated);border-color:var(--border-color);box-shadow:0 1px 4px #0000004d}[data-theme=dark] .problem-card:hover{border-color:var(--color-primary);box-shadow:0 4px 16px #0006}[data-theme=dark] .problem-card-title{color:var(--text-primary)}[data-theme=dark] .problem-card-desc{color:var(--text-secondary)}[data-theme=dark] .problem-card-progress-bg{background:var(--input-bg)}[data-theme=dark] label{color:var(--text-primary)!important}[data-theme=dark] .requirement-card{background:var(--bg-elevated)!important;border-color:var(--border-color)!important}[data-theme=dark] .requirement-card h4,[data-theme=dark] .requirement-card span{color:var(--text-primary)!important}[data-theme=dark] button[style*="background:#e3f2fd"],[data-theme=dark] button[style*="background:rgb(227, 242, 253)"]{background:var(--color-primary-light)!important;color:var(--color-info)!important;border:1px solid var(--color-primary-light)!important}[data-theme=dark] button[style*="background:#ffebee"],[data-theme=dark] button[style*="background:rgb(255, 235, 238)"]{background:var(--color-danger-light)!important;color:var(--color-danger-text)!important;border:1px solid var(--color-danger-light)!important}[data-theme=dark] span[style*="background:#f3e5f5"],[data-theme=dark] span[style*="background:rgb(243, 229, 245)"]{color:var(--color-embedded)!important;background:#9c27b026!important}[data-theme=dark] #import-upload-btn{background:var(--color-primary-light)!important;border-color:var(--color-primary)!important;color:var(--color-info)!important}[data-theme=dark] #problem-error,[data-theme=dark] #import-error,[data-theme=dark] #req-error{background:var(--color-danger-light)!important;border-color:var(--color-danger)!important;color:var(--color-danger-text)!important}[data-theme=dark] #import-success{background:var(--color-success-light)!important;border-color:var(--color-success)!important;color:var(--color-success-text)!important}[data-theme=dark] #problem-modal-title,[data-theme=dark] #req-modal-title,[data-theme=dark] #problem-list-title{color:var(--text-primary)!important}[data-theme=dark] button[onclick*="openProblemModal()"][style*="background:#2979ff"]{background:var(--color-primary)!important}[data-theme=dark] #gantt-chart text{fill:#ccc!important}[data-theme=dark] #gantt-chart .gantt-bar-text{fill:#fff!important}[data-theme=dark] #report-view,[data-theme=dark] #report-view h2,[data-theme=dark] #report-view h3,[data-theme=dark] #report-view h4,[data-theme=dark] #report-view p,[data-theme=dark] #report-view span,[data-theme=dark] #report-view td,[data-theme=dark] #report-view th,[data-theme=dark] #gantt-view,[data-theme=dark] #gantt-view h2,[data-theme=dark] #gantt-view h3,[data-theme=dark] #gantt-view h4,[data-theme=dark] #requirements-view h2,[data-theme=dark] .modal-content h3{color:var(--text-primary)!important}[data-theme=dark] #joint-problem-panel span,[data-theme=dark] #joint-problem-panel div{color:var(--text-primary)}[data-theme=dark] #login-page{background:var(--login-gradient)!important}[data-theme=dark] #login-card{background:var(--login-card-bg)!important;box-shadow:var(--shadow-xl)!important}[data-theme=dark] #login-card h1{color:var(--text-primary)!important}[data-theme=dark] #login-card label{color:var(--text-secondary)!important}[data-theme=dark] #login-card input{background:var(--input-bg)!important;color:var(--text-primary)!important;border-color:var(--input-bg)!important}[data-theme=dark] #login-error{background:var(--color-danger-light)!important;border-color:var(--color-danger)!important;color:var(--color-danger-text)!important}[data-theme=dark] #login-btn{background:linear-gradient(135deg,#0e639c 0%,#094771 100%)!important}[data-theme=dark] #login-card span[onclick*=quickFill]{background:var(--bg-elevated)!important;color:var(--text-primary)!important}[data-theme=dark] #login-card span[onclick*=quickFill]:hover{background:var(--input-bg)!important}[data-theme=dark] #statusbar{background:var(--color-primary)!important;color:var(--text-inverse)!important}[data-theme=dark] #statusbar span{color:var(--text-inverse)!important}[data-theme=dark] h1,[data-theme=dark] h2,[data-theme=dark] h3,[data-theme=dark] h4,[data-theme=dark] h5,[data-theme=dark] h6,[data-theme=dark] p{color:var(--text-primary)!important}[data-theme=dark] .user-dropdown{background:var(--bg-surface)!important;border-color:var(--border-color)!important;box-shadow:0 8px 24px #0006!important}[data-theme=dark] .user-dropdown-header{background:var(--bg-elevated)!important;border-color:var(--border-color)!important}[data-theme=dark] .user-dropdown-name{color:var(--text-primary)!important}[data-theme=dark] .user-dropdown-role{color:var(--text-secondary)!important}[data-theme=dark] .user-dropdown-item{color:var(--text-primary)!important}[data-theme=dark] .user-dropdown-item:hover{background:var(--hover-bg)!important}[data-theme=dark] .user-dropdown-sep{border-color:var(--border-color)!important}[data-theme=dark] .user-role-tag{background:var(--selected-bg)!important;color:var(--color-info)!important}[data-theme=dark] .user-avatar{background:var(--color-primary)!important;color:var(--text-inverse)!important}[data-theme=dark] .user-menu-btn{color:var(--text-primary)!important}[data-theme=dark] .robot-selector-dropdown{background:var(--bg-surface)!important;border-color:var(--border-color)!important;box-shadow:0 8px 24px #0006!important}[data-theme=dark] .robot-selector-dropdown .rs-item{color:var(--text-primary)!important}[data-theme=dark] .robot-selector-dropdown .rs-item:hover{background:var(--hover-bg)!important}[data-theme=dark] .robot-selector-dropdown .rs-item.rs-selected{background:var(--selected-bg)!important}[data-theme=dark] .robot-mgmt-modal{background:var(--bg-surface)!important;color:var(--text-primary)!important}[data-theme=dark] .robot-mgmt-modal h3{color:var(--text-primary)!important}[data-theme=dark] .robot-mgmt-modal input,[data-theme=dark] .robot-mgmt-modal select{background:var(--input-bg)!important;color:var(--text-primary)!important;border-color:var(--input-bg)!important}[data-theme=dark] .robot-mgmt-modal button{color:var(--text-primary)!important}[data-theme=dark] .robot-mgmt-modal .rm-robot-card{background:var(--bg-elevated)!important;border-color:var(--border-color)!important}[data-theme=dark] .robot-mgmt-modal .rm-robot-card span{color:var(--text-primary)!important}[data-theme=dark] #dingtalk-modal{background:var(--bg-surface)!important;color:var(--text-primary)!important}[data-theme=dark] #dingtalk-modal h3{color:var(--text-primary)!important}[data-theme=dark] #dingtalk-modal input{background:var(--input-bg)!important;color:var(--text-primary)!important;border-color:var(--input-bg)!important}#problem-list-view{background:var(--bg-color);z-index:98;padding:20px 28px;display:none;position:fixed;inset:76px 0 0;overflow-y:auto}#problem-list-view.active{display:block}.pl-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:16px;display:flex}.pl-title{color:var(--text-color);align-items:center;gap:10px;font-size:20px;font-weight:700;display:flex}.pl-subtitle{color:var(--secondary-text);margin-top:4px;font-size:13px}.pl-actions{align-items:center;gap:8px;display:flex}.pl-toolbar{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;padding:10px 12px;display:flex}.pl-search{border:1px solid var(--input-border);background:var(--input-bg);color:var(--input-text);border-radius:8px;outline:none;width:240px;padding:7px 12px;font-family:inherit;font-size:13px}.pl-search:focus{border-color:var(--color-primary,#2979ff)}.pl-search::placeholder{color:var(--hint-text)}.pl-filter-select{border:1px solid var(--input-border);background:var(--input-bg);color:var(--input-text);cursor:pointer;border-radius:8px;outline:none;padding:6px 10px;font-size:11px}.pl-filter-select:focus{border-color:var(--color-primary,#2979ff)}.pl-count{color:var(--secondary-text);margin-left:auto;font-size:11px}.pl-vscroll-info{color:var(--color-primary,#2979ff);white-space:nowrap;background:#2979ff14;border-radius:10px;margin-left:8px;padding:2px 8px;font-size:10px}[data-theme=dark] .pl-vscroll-info{background:#64b4ff1f}.problem-table{border-collapse:separate;border-spacing:0;background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:8px;width:100%;font-size:12px;overflow:hidden}.problem-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:10px 12px;font-size:11px;font-weight:600}.problem-table tbody td{border-bottom:1px solid var(--separator);color:var(--text-color);vertical-align:middle;padding:10px 12px}.problem-table tbody tr:hover{background:var(--item-bg)}.problem-table tbody tr.problem-overdue{background:#ef44440a}.ptd-title-wrap{align-items:center;gap:6px;display:flex}.ptd-title-text{text-overflow:ellipsis;white-space:nowrap;max-width:280px;font-size:13px;font-weight:500;overflow:hidden}.ptd-blocker{flex-shrink:0;font-size:14px}.ptd-assignee{color:var(--secondary-text)}.ptd-due{white-space:nowrap}.ptd-due.overdue{color:var(--color-danger-dark)}[data-theme=dark] .ptd-due.overdue{color:var(--color-danger-text)}.pl-status-badge{white-space:nowrap;border-radius:10px;align-items:center;gap:4px;padding:2px 8px;font-size:10px;font-weight:600;display:inline-flex}.pl-status-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.pl-status-badge.open{background:var(--color-critical-bg);color:var(--color-critical-text)}.pl-status-badge.in_progress{background:var(--color-major-bg);color:var(--color-major-text)}.pl-status-badge.resolved{background:var(--color-success-light);color:var(--color-success-dark)}.pl-status-badge.closed{background:var(--color-status-closed-bg);color:var(--color-status-closed-text)}[data-theme=dark] .pl-status-badge.open{color:var(--color-danger-text);background:#ef444433}[data-theme=dark] .pl-status-badge.in_progress{color:var(--color-warning-text);background:#f9731633}[data-theme=dark] .pl-status-badge.resolved{color:var(--color-success-text);background:#22c55e33}[data-theme=dark] .pl-status-badge.closed{color:var(--color-status-closed-text);background:#9ca3af33}.pl-priority{border-radius:10px;padding:2px 8px;font-size:10px;font-weight:700;display:inline-block}.pl-priority.P0{background:var(--color-critical-bg);color:var(--color-critical-text)}.pl-priority.P1{background:var(--color-major-bg);color:var(--color-major-text)}.pl-priority.P2{background:var(--color-minor-bg);color:var(--color-minor-text)}.pl-priority.P3{background:var(--color-status-closed-bg);color:var(--color-status-closed-text)}[data-theme=dark] .pl-priority.P0{color:var(--color-danger-text);background:#ef444433}[data-theme=dark] .pl-priority.P1{color:var(--color-warning-text);background:#f9731633}[data-theme=dark] .pl-priority.P2{color:var(--color-minor-text);background:#f59e0b33}[data-theme=dark] .pl-priority.P3{color:var(--color-status-closed-text);background:#9ca3af26}.pl-progress-bar{background:var(--separator);vertical-align:middle;border-radius:3px;width:60px;height:6px;display:inline-block;overflow:hidden}.pl-progress-bar>span{background:var(--color-primary,#2979ff);border-radius:3px;height:100%;display:block}.pl-progress-bar.done>span{background:var(--color-success)}.pl-progress-text{color:var(--secondary-text);vertical-align:middle;margin-left:4px;font-size:10px}.pc-severity-badge{white-space:nowrap;border-radius:10px;padding:2px 8px;font-size:10px;font-weight:700;display:inline-block}.pc-severity-badge.P0{background:var(--color-critical-bg);color:var(--color-critical-text)}.pc-severity-badge.P1{background:var(--color-major-bg);color:var(--color-major-text)}.pc-severity-badge.P2{background:var(--color-minor-bg);color:var(--color-minor-text)}.pc-severity-badge.P3{background:var(--color-status-closed-bg);color:var(--color-status-closed-text)}[data-theme=dark] .pc-severity-badge.P0{color:var(--color-danger-text);background:#ef444433}[data-theme=dark] .pc-severity-badge.P1{color:var(--color-warning-text);background:#f9731633}[data-theme=dark] .pc-severity-badge.P2{color:var(--color-minor-text);background:#f59e0b33}[data-theme=dark] .pc-severity-badge.P3{color:var(--color-status-closed-text);background:#9ca3af26}.pc-status-badge{white-space:nowrap;border-radius:10px;align-items:center;gap:4px;padding:2px 8px;font-size:10px;font-weight:600;display:inline-flex}.pc-status-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.pc-status-badge.open{background:var(--color-critical-bg);color:var(--color-critical-text)}.pc-status-badge.open .pc-status-dot{background:var(--color-danger)}.pc-status-badge.in_progress{background:var(--color-major-bg);color:var(--color-major-text)}.pc-status-badge.in_progress .pc-status-dot{background:var(--color-major)}.pc-status-badge.resolved{background:var(--color-success-light);color:var(--color-success-dark)}.pc-status-badge.resolved .pc-status-dot{background:var(--color-success)}.pc-status-badge.closed{background:var(--color-status-closed-bg);color:var(--color-status-closed-text)}.pc-status-badge.closed .pc-status-dot{background:var(--color-status-closed)}[data-theme=dark] .pc-status-badge.open{color:var(--color-danger-text);background:#ef444433}[data-theme=dark] .pc-status-badge.open .pc-status-dot{background:#fca5a5}[data-theme=dark] .pc-status-badge.in_progress{color:var(--color-warning-text);background:#f9731633}[data-theme=dark] .pc-status-badge.in_progress .pc-status-dot{background:#fdba74}[data-theme=dark] .pc-status-badge.resolved{color:var(--color-success-text);background:#22c55e33}[data-theme=dark] .pc-status-badge.resolved .pc-status-dot{background:#86efac}[data-theme=dark] .pc-status-badge.closed{color:var(--color-status-closed-text);background:#9ca3af33}[data-theme=dark] .pc-status-badge.closed .pc-status-dot{background:#d1d5db}.pc-progress-bar{background:var(--separator,#e5e7eb);vertical-align:middle;border-radius:3px;width:60px;height:6px;display:inline-block;overflow:hidden}.pc-progress-fill{background:var(--color-primary,#2979ff);border-radius:3px;height:100%;transition:width .3s;display:block}.pc-progress-bar.done .pc-progress-fill{background:var(--color-success)}.pc-progress-text{color:var(--secondary-text);vertical-align:middle;margin-left:4px;font-size:10px}.pc-blocker-badge{cursor:help;flex-shrink:0;align-items:center;font-size:14px;display:inline-flex}.problem-card .pc-blocker-badge{font-size:16px;position:absolute;top:8px;right:8px}.pc-due{white-space:nowrap;font-size:12px}.pc-due.overdue{color:var(--color-danger-dark);font-weight:600}[data-theme=dark] .pc-due.overdue{color:var(--color-danger-text)}.pc-req-link{white-space:nowrap;background:var(--color-primary-light);color:var(--color-primary-dark);cursor:default;border-radius:4px;align-items:center;gap:2px;padding:1px 6px;font-size:10px;font-weight:500;display:inline-flex}.pc-req-link.none{color:var(--hint-text,#999);background:0 0}[data-theme=dark] .pc-req-link{background:var(--color-primary-light);color:var(--color-info)}[data-theme=dark] .pc-req-link.none{color:#666;background:0 0}.pl-subchip{background:var(--item-bg);color:var(--secondary-text);border-radius:4px;padding:1px 6px;font-size:10px;font-weight:500;display:inline-block}.pl-action{border:1px solid var(--panel-border);background:var(--input-bg);color:var(--text-color);cursor:pointer;border-radius:5px;margin-right:3px;padding:4px 8px;font-size:11px;transition:all .12s}.pl-action:hover{background:var(--color-primary,#2979ff);color:#fff;border-color:var(--color-primary,#2979ff)}.pl-action.danger:hover{background:var(--color-danger);border-color:var(--color-danger)}.pl-empty{text-align:center;color:var(--hint-text);padding:60px 20px}.pl-empty-icon{margin-bottom:16px;font-size:48px}.pl-empty-text{font-size:14px}[data-theme=dark] #dingtalk-modal label{color:var(--text-primary)!important}.btn-primary{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:8px;align-items:center;gap:6px;padding:8px 16px;font-size:13px;font-weight:600;transition:background .15s;display:inline-flex}[data-theme=dark] .btn-primary{background:var(--color-primary)}[data-theme=dark] .btn-primary:hover{background:var(--color-primary-hover)}.btn-secondary{border:1px solid var(--input-border);background:var(--input-bg);color:var(--input-text);cursor:pointer;border-radius:8px;padding:6px 12px;font-size:12px;transition:all .15s}.btn-secondary:hover{background:var(--hover-bg)}[data-theme=dark] .btn-secondary{background:var(--btn-secondary-bg);color:var(--text-primary);border-color:var(--input-bg)}[data-theme=dark] .btn-secondary:hover{background:var(--hover-bg)}.btn-sm{cursor:pointer;border:1px solid var(--input-border);background:var(--input-bg);color:var(--text-color);border-radius:6px;padding:2px 8px;font-size:10px;transition:all .15s}.btn-sm:hover{background:var(--hover-bg)}[data-theme=dark] .btn-sm{background:var(--input-bg);color:var(--text-primary);border-color:var(--input-bg)}[data-theme=dark] .btn-sm:hover{background:var(--hover-bg)}.view-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;display:flex}.view-title{color:var(--text-color);align-items:center;gap:10px;font-size:22px;font-weight:700;display:flex}.view-subtitle{color:var(--secondary-text);margin-top:4px;font-size:13px}[data-theme=dark] .view-title{color:var(--text-primary)}[data-theme=dark] .view-subtitle{color:var(--text-secondary)}.req-card{background:var(--panel-bg);border:1px solid var(--panel-border);box-shadow:var(--shadow-sm);cursor:pointer;border-radius:12px;margin-bottom:12px;padding:18px 20px;transition:transform .15s,box-shadow .15s;position:relative}.req-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}[data-theme=dark] .req-card{background:var(--bg-elevated);border-color:var(--border-color);box-shadow:0 1px 4px #0000004d}[data-theme=dark] .req-card:hover{box-shadow:0 4px 20px #0006}.req-card-header{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.req-card-title{color:var(--text-color);flex:1;align-items:center;gap:8px;min-width:0;font-size:15px;font-weight:700;display:flex}.req-card-title span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}[data-theme=dark] .req-card-title{color:var(--text-primary)}.req-card-desc{color:var(--secondary-text);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:10px;font-size:13px;line-height:1.6;display:-webkit-box;overflow:hidden}[data-theme=dark] .req-card-desc{color:var(--text-secondary)}.req-card-meta{color:var(--hint-text);justify-content:space-between;align-items:center;gap:10px;font-size:11px;display:flex}.req-card-tags{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:10px;display:flex}.req-card-actions{align-items:center;gap:4px;display:flex}.req-priority-badge{border-radius:10px;padding:2px 8px;font-size:10px;font-weight:700}.req-priority-badge.p0{background:var(--color-critical-bg);color:var(--color-critical-text)}.req-priority-badge.p1{background:var(--color-major-bg);color:var(--color-major-text)}.req-priority-badge.p2{background:var(--color-minor-bg);color:var(--color-minor-text)}.req-priority-badge.p3{background:var(--color-status-closed-bg);color:var(--color-status-closed-text)}[data-theme=dark] .req-priority-badge.p0{color:var(--color-danger-text);background:#ef444433}[data-theme=dark] .req-priority-badge.p1{color:var(--color-warning-text);background:#f9731633}[data-theme=dark] .req-priority-badge.p2{color:var(--color-minor-text);background:#f59e0b33}[data-theme=dark] .req-priority-badge.p3{color:var(--color-status-closed-text);background:#9ca3af26}.req-status-badge{white-space:nowrap;border-radius:8px;padding:4px 10px;font-size:12px;font-weight:600}.req-status-badge.pending_analysis{background:var(--color-status-closed-bg);color:var(--color-status-closed-text)}.req-status-badge.analyzing{color:#1e40af;background:#dbeafe}.req-status-badge.pending_review{background:var(--color-minor-bg);color:var(--color-minor-text)}.req-status-badge.assigned{background:var(--color-success-light);color:var(--color-success-dark)}.req-status-badge.rejected{background:var(--color-critical-bg);color:var(--color-critical-text)}[data-theme=dark] .req-status-badge.pending_analysis{color:var(--color-status-closed-text);background:#9ca3af33}[data-theme=dark] .req-status-badge.analyzing{color:#93c5fd;background:#3b82f633}[data-theme=dark] .req-status-badge.pending_review{color:var(--color-minor-text);background:#f59e0b33}[data-theme=dark] .req-status-badge.assigned{color:var(--color-success-text);background:#22c55e33}[data-theme=dark] .req-status-badge.rejected{color:var(--color-danger-text);background:#ef444433}.req-source-tag{border-radius:8px;padding:2px 8px;font-size:10px;font-weight:600}[data-theme=dark] .req-source-tag{opacity:.9}.req-dist-tag{color:#fff;border-radius:8px;padding:2px 8px;font-size:11px;font-weight:600}.filter-pill{border:1px solid var(--input-border);background:var(--input-bg);color:var(--input-text);cursor:pointer;white-space:nowrap;border-radius:8px;padding:6px 12px;font-size:12px;transition:all .15s}.filter-pill:hover{background:var(--hover-bg)}.filter-pill.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}[data-theme=dark] .filter-pill{background:var(--input-bg);color:var(--text-primary);border-color:var(--input-bg)}[data-theme=dark] .filter-pill:hover{background:var(--hover-bg)}[data-theme=dark] .filter-pill.active{background:var(--color-primary);border-color:var(--color-primary)}.view-mode-switch{border:1px solid var(--panel-border);background:var(--item-bg);border-radius:8px;display:inline-flex;overflow:hidden}.vms-btn{color:var(--secondary-text);cursor:pointer;border:none;border-right:1px solid var(--panel-border);background:0 0;padding:5px 10px;font-size:12px}.vms-btn:last-child{border-right:none}.vms-btn:hover{background:var(--panel-bg)}.vms-btn.active{background:var(--color-primary);color:#fff;font-weight:700}[data-theme=dark] .view-mode-switch{border-color:var(--border-color);background:var(--bg-elevated)}[data-theme=dark] .vms-btn{color:var(--text-secondary);border-color:var(--border-color)}[data-theme=dark] .vms-btn:hover{background:var(--bg-primary)}[data-theme=dark] .vms-btn.active{background:var(--color-primary)}#mech-view-switch-bar{z-index:100;background:var(--panel-bg);border:1px solid var(--panel-border);white-space:nowrap;border-radius:6px;flex-wrap:nowrap;align-items:center;gap:6px;max-width:calc(100vw - 40px);padding:3px 6px;display:flex;position:fixed;top:48px;left:50%;overflow-x:auto;transform:translate(-50%);box-shadow:0 2px 8px #00000014}#mech-view-switch-bar::-webkit-scrollbar{display:none}#mech-view-switch-bar{scrollbar-width:none}.mech-view-label{color:var(--secondary-text);white-space:nowrap;margin-right:2px;font-size:12px}.mech-view-meta{color:var(--secondary-text);white-space:nowrap;margin-left:4px;font-size:11px}[data-theme=dark] #mech-view-switch-bar{box-shadow:0 2px 12px #0000004d}.mech-view-sep{color:var(--panel-border);margin:0 2px;font-size:14px}.mech-view-btn{border:1px solid var(--panel-border);background:var(--item-bg);color:var(--text-color);cursor:pointer;white-space:nowrap;border-radius:4px;padding:2px 8px;font-size:11px}.mech-view-btn:hover{background:var(--hover-bg,#e8eaed)}.user-dropdown-header{border-bottom:1px solid var(--panel-border);margin-bottom:4px;padding:10px 12px}.user-dropdown-name{color:var(--text-color);font-size:13px;font-weight:700}.user-dropdown-role{color:var(--secondary-text);font-size:11px}.cat-progress-bg{background:var(--item-bg);border-radius:11px;overflow:hidden}.cat-progress-bar{color:#fff;border-radius:11px;align-items:center;height:100%;padding-left:10px;font-size:11px;font-weight:600;display:flex}.empty-state{text-align:center;color:var(--hint-text);padding:60px 20px}.empty-state-icon{margin-bottom:16px;font-size:48px}.empty-state-text{font-size:14px}input:focus,textarea:focus,select:focus{border-color:var(--color-primary);outline:none}.problem-table-wrap{background:var(--panel-bg);border:1px solid var(--panel-border);box-shadow:var(--shadow-sm);border-radius:12px;overflow:hidden}[data-theme=dark] .problem-table-wrap{background:var(--bg-surface);border-color:var(--border-color);box-shadow:0 1px 4px #0000004d}.problem-table-wrap .problem-table th,.problem-table-wrap .problem-table td{padding:12px 14px}.modal-overlay{backdrop-filter:blur(4px);z-index:1000;background:#00000080;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.modal-overlay.visible{display:flex}[data-theme=dark] .modal-overlay{background:#0009}.modal-content{background:var(--panel-bg);width:540px;max-width:90vw;max-height:88vh;box-shadow:var(--shadow-lg);border-radius:16px;overflow:auto}[data-theme=dark] .modal-content{background:var(--bg-surface);box-shadow:0 20px 60px #0009}.modal-header{border-bottom:1px solid var(--panel-border);justify-content:space-between;align-items:center;padding:18px 22px;display:flex}.modal-title{color:var(--text-color);font-size:16px;font-weight:700}[data-theme=dark] .modal-title{color:var(--text-primary)}.modal-body{padding:20px 22px}.modal-footer{border-top:1px solid var(--panel-border);justify-content:flex-end;gap:10px;padding:14px 22px;display:flex}.form-input,.form-textarea,.form-select{border:1px solid var(--input-border);background:var(--input-bg);width:100%;color:var(--input-text);box-sizing:border-box;border-radius:8px;padding:9px 12px;font-family:inherit;font-size:13px;transition:border-color .15s}.form-input:focus,.form-textarea:focus,.form-select:focus{border-color:var(--color-primary);outline:none}.form-textarea{resize:vertical;min-height:80px}[data-theme=dark] .form-input,[data-theme=dark] .form-textarea,[data-theme=dark] .form-select{background:var(--input-bg);color:var(--text-primary);border-color:var(--input-bg)}.form-row{margin-bottom:16px}.form-label{color:var(--text-color);margin-bottom:6px;font-size:12px;font-weight:600;display:block}[data-theme=dark] .form-label{color:var(--text-secondary)}.form-row-inline{gap:12px;display:flex}.form-row-inline>div{flex:1}.radio-group{flex-wrap:wrap;gap:8px;display:flex}.radio-item{border:1px solid var(--input-border);cursor:pointer;background:var(--input-bg);border-radius:8px;padding:6px 12px;font-size:12px;transition:all .15s}.radio-item.selected{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}[data-theme=dark] .radio-item{background:var(--input-bg);color:var(--text-primary);border-color:var(--input-bg)}[data-theme=dark] .radio-item.selected{background:var(--color-primary);border-color:var(--color-primary)}.status-pill{white-space:nowrap;border-radius:10px;align-items:center;gap:4px;padding:3px 10px;font-size:11px;font-weight:600;display:inline-flex}.status-pill.open{background:var(--color-critical-bg);color:var(--color-critical-text)}.status-pill.progress{background:var(--color-major-bg);color:var(--color-major-text)}.status-pill.resolved{background:var(--color-success-light);color:var(--color-success-dark)}.status-pill.closed{background:var(--color-status-closed-bg);color:var(--color-status-closed-text)}[data-theme=dark] .status-pill.open{color:var(--color-danger-text);background:#ef444433}[data-theme=dark] .status-pill.progress{color:var(--color-warning-text);background:#f9731633}[data-theme=dark] .status-pill.resolved{color:var(--color-success-text);background:#22c55e33}[data-theme=dark] .status-pill.closed{color:var(--color-status-closed-text);background:#9ca3af33}.priority-dot{border-radius:50%;width:8px;height:8px;margin-right:4px;display:inline-block}.priority-dot.p0{background:var(--color-danger)}.priority-dot.p1{background:var(--color-major)}.priority-dot.p2{background:#eab308}.action-btns{gap:6px;display:flex}.action-btn{border:1px solid var(--input-border);background:var(--input-bg);color:var(--text-color);cursor:pointer;border-radius:6px;padding:4px 8px;font-size:11px}.action-btn:hover{background:var(--hover-bg);border-color:var(--color-primary);color:var(--color-primary)}.action-btn.danger:hover{border-color:var(--color-danger);color:var(--color-danger)}[data-theme=dark] .action-btn{background:var(--input-bg);color:var(--text-primary);border-color:var(--input-bg)}[data-theme=dark] .action-btn:hover{background:var(--hover-bg);border-color:var(--color-primary);color:#6cb6ff}[data-theme=dark] .action-btn.danger:hover{border-color:var(--color-danger);color:var(--color-danger)}.progress-wrap{background:var(--item-bg);border-radius:4px;width:120px;height:8px;position:relative;overflow:hidden}.progress-bar{background:var(--color-primary);border-radius:4px;height:100%;transition:width .4s}[data-theme=dark] .progress-wrap{background:var(--input-bg)}[data-theme=dark] .progress-bar{background:var(--color-primary)}.progress-text{color:var(--secondary-text);margin-top:3px;font-size:11px}.stat-grid{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px;display:grid}.stat-card{background:var(--panel-bg);border:1px solid var(--panel-border);box-shadow:var(--shadow-sm);border-radius:14px;padding:20px}[data-theme=dark] .stat-card{background:var(--bg-surface);border-color:var(--border-color);box-shadow:0 1px 4px #0000004d}.stat-label{color:var(--secondary-text);margin-bottom:8px;font-size:12px}.stat-value{color:var(--text-color);font-size:32px;font-weight:800;line-height:1.1}[data-theme=dark] .stat-value{color:var(--text-primary)}.stat-change{align-items:center;gap:4px;margin-top:6px;font-size:12px;display:flex}.stat-change.up{color:var(--color-danger)}.stat-change.down{color:var(--color-success)}.stat-change.neutral{color:var(--secondary-text)}.report-section{background:var(--panel-bg);border:1px solid var(--panel-border);box-shadow:var(--shadow-sm);border-radius:14px;margin-bottom:16px;padding:20px}[data-theme=dark] .report-section{background:var(--bg-surface);border-color:var(--border-color);box-shadow:0 1px 4px #0000004d}.section-title{color:var(--text-color);align-items:center;gap:8px;margin-bottom:16px;font-size:15px;font-weight:700;display:flex}[data-theme=dark] .section-title{color:var(--text-primary)}.cat-row{align-items:center;gap:14px;margin-bottom:12px;display:flex}.cat-name{width:100px;color:var(--text-color);align-items:center;gap:6px;font-size:13px;font-weight:600;display:flex}[data-theme=dark] .cat-name{color:var(--text-primary)}.cat-progress{background:var(--item-bg);border-radius:11px;flex:1;height:22px;position:relative;overflow:hidden}[data-theme=dark] .cat-progress{background:var(--input-bg)}.cat-progress-bar{color:#fff;border-radius:11px;align-items:center;height:100%;padding-left:10px;font-size:11px;font-weight:600;transition:width .6s;display:flex}.cat-stats{width:130px;color:var(--secondary-text);text-align:right;font-size:12px}.severity-grid{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.severity-card{background:var(--item-bg);border-radius:10px;padding:16px}[data-theme=dark] .severity-card{background:var(--bg-elevated)}.severity-icon-lg{margin-bottom:8px;font-size:24px}.severity-stat{color:var(--text-color);margin-bottom:4px;font-size:20px;font-weight:700}[data-theme=dark] .severity-stat{color:var(--text-primary)}.severity-label{color:var(--secondary-text);font-size:11px}.task-item{border:1px solid var(--panel-border);background:var(--item-bg);border-radius:10px;margin-bottom:10px;padding:14px}[data-theme=dark] .task-item{background:var(--bg-elevated);border-color:var(--border-color)}.task-item-header{align-items:center;gap:10px;margin-bottom:8px;display:flex}.task-checkbox{width:18px;height:18px;accent-color:var(--color-primary);cursor:pointer}[data-theme=dark] .task-checkbox{accent-color:#0e639c}.task-cat-badge{color:#fff;border-radius:6px;padding:3px 8px;font-size:10px;font-weight:600}.task-title{color:var(--text-color);flex:1;font-size:13px;font-weight:600}[data-theme=dark] .task-title{color:var(--text-primary)}.task-meta{color:var(--secondary-text);gap:10px;font-size:11px;display:flex}.task-desc{color:var(--secondary-text);margin-bottom:6px;margin-left:28px;font-size:12px;line-height:1.5}.task-criteria{color:var(--hint-text);margin-left:28px;font-size:11px}.task-criteria li{margin-left:14px}[data-theme=dark] .gantt-container{background:var(--bg-primary)!important}[data-theme=dark] .gantt-toolbar{background:var(--bg-surface)!important;border-color:var(--border-color)!important}[data-theme=dark] .gantt-toolbar label{color:var(--text-secondary)!important}[data-theme=dark] .gantt-toolbar select{background:var(--input-bg)!important;color:var(--text-primary)!important;border-color:var(--input-bg)!important}[data-theme=dark] .gantt-task-list{background:var(--bg-surface)!important;border-color:var(--border-color)!important}[data-theme=dark] .gantt-task-list-header{background:var(--bg-elevated)!important;border-color:var(--border-color)!important;color:var(--text-primary)!important}[data-theme=dark] .gantt-task-row{color:var(--text-primary)!important;border-color:var(--border-color)!important}[data-theme=dark] .gantt-task-row:hover{background:var(--hover-bg)!important}[data-theme=dark] .gantt-task-row.group-header{color:var(--color-info)!important;background:var(--selected-bg)!important}[data-theme=dark] .gantt-task-row .task-severity.P0{color:var(--color-danger-text);background:#ef444433}[data-theme=dark] .gantt-task-row .task-severity.P1{color:var(--color-warning-text);background:#f9731633}[data-theme=dark] .gantt-task-row .task-severity.P2{color:#6cb6ff;background:#2979ff33}[data-theme=dark] .gantt-task-row .task-severity.P3{color:var(--color-status-closed-text);background:#9ca3af33}[data-theme=dark] .gantt-timeline{background:var(--bg-primary)!important}[data-theme=dark] .gantt-timeline-header{background:var(--bg-surface)!important;border-color:var(--border-color)!important}[data-theme=dark] .gantt-grid-line{stroke:#3e3e42!important}[data-theme=dark] .gantt-today-label{fill:#fca5a5!important}[data-theme=dark] .gantt-tooltip{background:var(--bg-surface)!important;border-color:var(--border-color)!important;color:var(--text-primary)!important}[data-theme=dark] .gantt-tooltip .tt-title{color:var(--color-info)!important}[data-theme=dark] .gantt-empty-state{color:var(--text-secondary)!important}#cat-gantt-wrap{flex-direction:column;flex:1;min-height:0;display:none;overflow:hidden}#cat-gantt-wrap .gantt-toolbar{background:var(--item-bg);border:1px solid var(--panel-border);border-radius:8px;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:12px;margin-bottom:10px;padding:8px 12px;display:flex;position:static;top:auto}#cat-gantt-wrap .gantt-tb-group{align-items:center;gap:4px;display:flex}#cat-gantt-wrap .gantt-tb-label{color:var(--secondary-text);margin-right:2px;font-size:11px}#cat-gantt-wrap .gantt-tb-btn{border:1px solid var(--panel-border);background:var(--panel-bg);color:var(--primary-text);cursor:pointer;border-radius:5px;padding:4px 8px;font-size:10px;transition:background .15s,color .15s}#cat-gantt-wrap .gantt-tb-btn:hover{background:var(--primary);color:#fff;border-color:var(--primary)}#cat-gantt-wrap .gantt-tb-btn.active{background:var(--primary);color:#fff;border-color:var(--primary);font-weight:700}#cat-gantt-body{border:1px solid var(--panel-border);background:var(--input-bg);border-radius:8px;position:relative;overflow:hidden}#cat-gantt-body .gantt-body{flex:1;height:100%;display:flex;overflow:hidden}#cat-gantt-body .gantt-task-list{border-right:1px solid var(--panel-border);background:var(--item-bg);flex-shrink:0;max-height:none;overflow-y:auto}#cat-gantt-body .gantt-timeline{background:var(--input-bg);flex:1;overflow:auto}[data-theme=dark] #cat-gantt-wrap .gantt-toolbar{background:var(--bg-surface);border-color:var(--border-color)}[data-theme=dark] #cat-gantt-wrap .gantt-tb-btn{background:var(--input-bg);color:var(--text-primary);border-color:var(--input-bg)}[data-theme=dark] #cat-gantt-wrap .gantt-tb-btn:hover,[data-theme=dark] #cat-gantt-wrap .gantt-tb-btn.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}[data-theme=dark] #cat-gantt-wrap .gantt-tb-label{color:var(--text-secondary)}[data-theme=dark] #cat-gantt-body{border-color:var(--border-color);background:var(--bg-primary)}[data-theme=dark] #cat-gantt-body .gantt-task-list{background:var(--bg-surface);border-color:var(--border-color)}[data-theme=dark] #cat-gantt-body .gantt-timeline{background:var(--bg-primary)}[data-theme=dark] .problem-table-wrap .problem-table th{background:var(--bg-elevated)!important;color:var(--text-secondary)!important;border-color:var(--border-color)!important}[data-theme=dark] .problem-table-wrap .problem-table td{color:var(--text-primary)!important;border-color:var(--border-color)!important}[data-theme=dark] .problem-table-wrap .problem-table tbody tr:hover td{background:var(--hover-bg)!important}#problem-modal,#import-modal,#requirement-modal,#llm-review-modal{backdrop-filter:blur(4px)}[data-theme=dark] #problem-modal>div,[data-theme=dark] #requirement-modal>div,[data-theme=dark] #import-modal>div,[data-theme=dark] #llm-review-modal>div{background:var(--bg-surface)!important;box-shadow:0 20px 60px #0009!important}[data-theme=dark] #problem-title,[data-theme=dark] #problem-description,[data-theme=dark] #problem-severity,[data-theme=dark] #problem-status,[data-theme=dark] #problem-subcategory,[data-theme=dark] #problem-due-date,[data-theme=dark] #problem-joint,[data-theme=dark] #problem-assignee,[data-theme=dark] #req-title,[data-theme=dark] #req-description,[data-theme=dark] #req-priority,[data-theme=dark] #req-source{background:var(--input-bg)!important;color:var(--text-primary)!important;border-color:var(--input-bg)!important;border-radius:8px!important}[data-theme=dark] #problem-submit-btn,[data-theme=dark] #req-submit-btn,[data-theme=dark] #import-confirm-btn,[data-theme=dark] #llm-review-distribute-btn,[data-theme=dark] #add-problem-btn,[data-theme=dark] #add-requirement-btn{background:var(--color-primary)!important}[data-theme=dark] #problem-modal button[onclick*=close],[data-theme=dark] #requirement-modal button[onclick*=close],[data-theme=dark] #import-modal button[onclick*=close],[data-theme=dark] #llm-review-modal button[onclick*=close],[data-theme=dark] #llm-review-modal button[onclick*=取消]{background:var(--btn-secondary-bg)!important;color:var(--text-primary)!important;border-color:var(--input-bg)!important}[data-theme=dark] #report-view{background:var(--bg-primary)!important}[data-theme=dark] #report-view h2,[data-theme=dark] #report-view h3,[data-theme=dark] #report-view h4,[data-theme=dark] #report-view p,[data-theme=dark] #report-view span,[data-theme=dark] #report-view td,[data-theme=dark] #report-view th{color:var(--text-primary)!important}[data-theme=dark] #requirements-view{background:var(--bg-primary)!important}[data-theme=dark] #requirements-view h2{color:var(--text-primary)!important}[data-theme=dark] #problem-list-view{background:var(--bg-primary)!important}[data-theme=dark] #filter-toolbar,[data-theme=dark] #req-filter-toolbar{background:var(--bg-surface)!important;box-shadow:0 1px 4px #0000004d!important}[data-theme=dark] #filter-toolbar select,[data-theme=dark] #filter-toolbar input,[data-theme=dark] #req-filter-toolbar select,[data-theme=dark] #req-filter-toolbar input,[data-theme=dark] #filter-status,[data-theme=dark] #filter-severity,[data-theme=dark] #filter-subcategory,[data-theme=dark] #filter-keyword,[data-theme=dark] #filter-sort,[data-theme=dark] #req-filter-status,[data-theme=dark] #req-filter-priority,[data-theme=dark] #req-filter-source,[data-theme=dark] #req-filter-keyword{background:var(--input-bg)!important;color:var(--text-primary)!important;border-color:var(--input-bg)!important}[data-theme=dark] #filter-clear-btn,[data-theme=dark] #req-filter-clear-btn{background:var(--btn-secondary-bg)!important;color:var(--text-primary)!important;border-color:var(--input-bg)!important}[data-theme=dark] #problem-empty-state,[data-theme=dark] #req-empty-state,[data-theme=dark] #problem-empty-state p,[data-theme=dark] #req-empty-state p{color:var(--text-secondary)!important}[data-theme=dark] #llm-review-tasks>div{background:var(--bg-elevated)!important;border-color:var(--border-color)!important}[data-theme=dark] #llm-review-tasks select,[data-theme=dark] #llm-review-tasks input{background:var(--input-bg)!important;color:var(--text-primary)!important;border-color:var(--input-bg)!important}[data-theme=dark] #llm-review-info{background:var(--bg-elevated)!important}[data-theme=dark] #import-preview-table{background:var(--bg-surface)!important}[data-theme=dark] #import-preview-table th,[data-theme=dark] #import-preview-table td{background:var(--bg-surface)!important;color:var(--text-primary)!important;border-color:var(--border-color)!important}[data-theme=dark] #import-target-robot{background:var(--input-bg)!important;color:var(--text-primary)!important;border-color:var(--input-bg)!important}[data-theme=dark] #problem-progress{accent-color:#0e639c}[data-theme=dark] div[style*="background:#e8e8e8"],[data-theme=dark] div[style*="background:rgb(232, 232, 232)"]{background:var(--input-bg)!important}[data-theme=dark] a{color:var(--text-accent)!important}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-status-closed)}[data-theme=dark] ::-webkit-scrollbar-thumb{background:#555}[data-theme=dark] ::-webkit-scrollbar-thumb:hover{background:#777}.trend-chart{height:240px;margin-top:10px;position:relative;overflow-x:auto}.trend-chart-legend{gap:14px;font-size:11px;display:flex;position:absolute;top:0;right:10px}.trend-chart-legend-item{align-items:center;gap:6px;display:flex}.trend-chart-legend-line{width:14px;height:3px}.trend-chart-legend-line.created{background:var(--color-danger)}.trend-chart-legend-line.resolved{background:var(--color-success)}.cat-detail-grid{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}@media (width<=1280px){.cat-detail-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=1024px){.cat-detail-grid{grid-template-columns:1fr}}.cat-detail-card{border:1px solid var(--panel-border);background:var(--panel-bg);border-radius:12px;padding:16px;position:relative}[data-theme=dark] .cat-detail-card{background:var(--bg-surface);border-color:var(--border-color)}.cdc-header{border-bottom:1px solid var(--separator);align-items:center;gap:12px;margin-bottom:12px;padding-bottom:12px;display:flex}.cdc-progress-ring{flex-shrink:0;width:56px;height:56px;position:relative}.cdc-title{flex:1}.cdc-name{color:var(--text-color);font-size:14px;font-weight:700}[data-theme=dark] .cdc-name{color:var(--text-primary)}.cdc-sub{color:var(--secondary-text);margin-top:2px;font-size:11px}.cdc-enter-btn{border:1px solid var(--color-primary);color:var(--color-primary);cursor:pointer;background:0 0;border-radius:6px;padding:4px 10px;font-size:11px}.cdc-enter-btn:hover{background:var(--color-primary);color:#fff}.cdc-stats-grid{grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:12px;display:grid}.cdc-stat-box{background:var(--item-bg);text-align:center;border-radius:8px;padding:8px 6px}[data-theme=dark] .cdc-stat-box{background:var(--bg-elevated)}.cdc-stat-box .v{color:var(--text-color);font-size:16px;font-weight:700}[data-theme=dark] .cdc-stat-box .v{color:var(--text-primary)}.cdc-stat-box .l{color:var(--secondary-text);margin-top:2px;font-size:10px}.cdc-section-title{color:var(--secondary-text);text-transform:uppercase;letter-spacing:.5px;margin:10px 0 6px;font-size:11px;font-weight:700}.cdc-severity-bar{background:var(--item-bg);border-radius:4px;height:8px;margin:6px 0 4px;display:flex;overflow:hidden}[data-theme=dark] .cdc-severity-bar{background:var(--bg-elevated)}.cdc-severity-bar>span{height:100%;transition:width .3s;display:block}.cdc-severity-legend{color:var(--secondary-text);gap:10px;margin-bottom:12px;font-size:10px;display:flex}.cdc-owner-row{border-radius:6px;align-items:center;gap:8px;padding:5px 8px;font-size:11px;display:flex}.cdc-owner-row:hover{background:var(--item-bg)}[data-theme=dark] .cdc-owner-row:hover{background:var(--bg-elevated)}.cdc-owner-avatar{background:var(--color-primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:10px;font-weight:700;display:flex}.cdc-owner-name{color:var(--text-color);flex:1}[data-theme=dark] .cdc-owner-name{color:var(--text-primary)}.cdc-overdue-row{align-items:center;gap:6px;padding:4px 0;font-size:11px;display:flex}.cdc-overdue-row .od-days{color:#dc2626;background:#ef444426;border-radius:999px;flex-shrink:0;padding:1px 6px;font-size:9px;font-weight:700}.cdc-overdue-row .od-title{text-overflow:ellipsis;white-space:nowrap;color:var(--text-color);flex:1;overflow:hidden}[data-theme=dark] .cdc-overdue-row .od-title{color:var(--text-primary)}.cdc-weekly-comp{grid-template-columns:1fr 1fr;gap:6px;margin:10px 0;display:grid}.cdc-wc-item{background:var(--item-bg);text-align:center;border-radius:6px;padding:8px}[data-theme=dark] .cdc-wc-item{background:var(--bg-elevated)}.cdc-wc-label{color:var(--secondary-text);margin-bottom:3px;font-size:10px}.cdc-wc-value{color:var(--text-color);font-size:15px;font-weight:700}[data-theme=dark] .cdc-wc-value{color:var(--text-primary)}.cdc-wc-delta{align-items:center;gap:2px;margin-top:2px;font-size:10px;display:inline-flex}.cdc-wc-delta.up{color:var(--color-danger)}.cdc-wc-delta.down{color:var(--color-success)}.cdc-wc-delta.neutral{color:var(--secondary-text)}.cdc-mini-gantt{background:var(--item-bg);border-radius:8px;margin:10px 0;overflow:hidden}[data-theme=dark] .cdc-mini-gantt{background:var(--bg-elevated)}.cdc-mini-gantt svg{width:100%;display:block}.cdc-mg-tooltip{pointer-events:none;color:#fff;white-space:nowrap;z-index:200;opacity:0;background:#000000d9;border-radius:4px;padding:4px 8px;font-size:10px;transition:opacity .15s;position:absolute}[data-theme=dark] .cdc-mg-tooltip{background:var(--input-bg);border:1px solid #555}.cdc-pie-wrap{align-items:center;gap:12px;margin:10px 0;display:flex}.cdc-pie-wrap svg{flex-shrink:0}.cdc-pie-legend{flex:1;min-width:0}.cdc-pie-legend-item{color:var(--secondary-text);align-items:center;gap:6px;margin-bottom:3px;font-size:10px;display:flex;overflow:hidden}.cdc-pie-legend-swatch{border-radius:2px;flex-shrink:0;width:10px;height:10px}.cdc-pie-legend-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.cdc-pie-legend-count{color:var(--text-color);flex-shrink:0;font-weight:600}[data-theme=dark] .cdc-pie-legend-count{color:var(--text-primary)}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.15)}}.dt-modal .dt-modal-content{flex-direction:column;width:560px;max-height:88vh;display:flex;overflow:hidden}.dt-modal .dt-modal-body{flex:1;padding-right:4px;overflow-y:auto}.dt-lead-row{align-items:center;gap:8px;margin-bottom:8px;display:flex}.dt-lead-row .dt-lead-label{width:90px;color:var(--hint-text);flex-shrink:0;font-size:12px}.dt-lead-select{border:1px solid var(--panel-border);background:var(--item-bg);color:var(--text-color);border-radius:6px;flex:1;min-height:28px;padding:4px 8px;font-size:12px}[data-theme=dark] .dt-lead-select{background:var(--input-bg);border-color:var(--input-bg);color:var(--text-primary)}.btn-micro{border:1px solid var(--panel-border);background:var(--btn-secondary-bg,#f0f0f0);color:var(--btn-secondary-text,#333);cursor:pointer;white-space:nowrap;border-radius:6px;padding:5px 10px;font-size:11px;transition:all .15s}.btn-micro:hover{background:var(--hover-bg,#e0e0e0);border-color:var(--primary,#2979ff)}[data-theme=dark] .btn-micro{background:var(--input-bg);color:var(--text-primary);border-color:#4a4a4a}[data-theme=dark] .btn-micro:hover{border-color:var(--color-primary);background:#4a4a4a}.dt-scene-grid{grid-template-columns:repeat(2,1fr);gap:8px 12px;margin-bottom:8px;display:grid}@media (width>=520px){.dt-scene-grid{grid-template-columns:repeat(3,1fr)}}.dt-scene-grid label{cursor:pointer;color:var(--text-color);align-items:center;gap:6px;font-size:12px;display:flex}.dt-timing-row{align-items:center;gap:12px;margin-bottom:8px;display:flex}.dt-timing-row .dt-timing-label{color:var(--hint-text);flex-shrink:0;width:65px;font-size:12px}.dt-timing-row .form-input,.dt-timing-row .filter-select{width:auto;min-width:70px;padding:5px 8px;font-size:12px}.dt-modal-body .section-title{color:var(--text-color);border-bottom:1px solid var(--separator,#e5e5e5);align-items:center;gap:6px;margin:16px 0 8px;padding-bottom:4px;font-size:12px;font-weight:700;display:flex}[data-theme=dark] .dt-modal-body .section-title{color:var(--text-primary);border-bottom-color:#3e3e3e}.user-manage-table thead th{background:var(--item-bg);z-index:1;position:sticky;top:0}.user-manage-table tbody tr:hover{background:var(--hover-bg)}.user-manage-table td{vertical-align:middle}.user-role-badge{border-radius:10px;padding:2px 8px;font-size:11px;font-weight:500;display:inline-block}.user-role-badge.role-admin{color:#c2185b;background:#fce4ec}.user-role-badge.role-engineer{color:var(--color-primary-dark);background:#e3f2fd}.user-role-badge.role-pm{color:#f9a825;background:#fff8e1}.user-role-badge.role-visitor{color:#616161;background:#e0e0e0}[data-theme=dark] .user-role-badge.role-admin{color:#f48fb1;background:#4a1a2e}[data-theme=dark] .user-role-badge.role-engineer{color:#90caf9;background:#0d2b45}[data-theme=dark] .user-role-badge.role-pm{color:#ffe082;background:#3d3318}[data-theme=dark] .user-role-badge.role-visitor{color:#bdbdbd;background:#2a2a2a}.user-status-badge{border-radius:10px;padding:2px 6px;font-size:12px;line-height:1;display:inline-block}.user-status-badge.status-active{background:#e8f5e9}.user-status-badge.status-disabled{background:var(--btn-secondary-bg)}[data-theme=dark] .user-status-badge.status-active{background:#1a3a1a}[data-theme=dark] .user-status-badge.status-disabled{background:var(--bg-elevated)}#user-edit-form .form-row{margin-bottom:0}.btn-icon{cursor:pointer;background:0 0;border:none;border-radius:4px;margin:0 2px;padding:2px 6px;font-size:14px;transition:background .15s}.btn-icon:hover{background:var(--hover-bg)}#profile-modal .modal-body{padding-bottom:8px}#profile-categories-display{word-break:break-all}#user-manage-modal .modal-body{padding:0}#user-edit-form .form-row,#user-reset-pwd-panel .form-row{margin-bottom:0}#user-edit-categories-wrap select[multiple]{min-height:80px}#user-edit-categories-wrap select[multiple] option{padding:4px 8px}#user-edit-categories-wrap select[multiple] option:checked{color:#fff;background:#2979ff}@media (width<=768px){#toolbar{border-radius:0 0 12px 12px;gap:2px;max-width:100vw;padding:6px 8px;top:0;left:0;right:0;transform:none}.tb-btn{padding:5px 8px;font-size:11px}#topbar-nav{gap:1px;padding:0 8px;overflow:auto hidden}#topbar-nav::-webkit-scrollbar{display:none}#topbar-nav{scrollbar-width:none}.robot-selector{max-width:120px}.robot-selector-meta,.nav-tab-label{display:none}.nav-tab{min-width:unset;padding:6px 8px}#mech-view-switch-bar{top:52px}.panel{width:100%!important;max-width:100vw!important;max-height:55vh!important;min-width:unset!important;border-radius:12px 12px 0 0!important;inset:auto 0 0!important}}.ll-circle,.ll-rect{cursor:pointer;pointer-events:auto}.dual-picker-overlay{animation:.25s ease-out dualPickerFadeIn}@keyframes dualPickerFadeIn{0%{opacity:0}to{opacity:1}}@keyframes dualPickerFadeOut{0%{opacity:1}to{opacity:0}}@keyframes dualPickerSlideIn{0%{opacity:0;transform:translateY(30px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes dualPickerSlideOut{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(20px)scale(.96)}}.dual-picker-overlay.closing{animation:.2s ease-in forwards dualPickerFadeOut}.dual-picker-panel{background:var(--panel-bg);width:740px;max-width:94vw;max-height:85vh;box-shadow:var(--shadow-lg);border-radius:16px;flex-direction:column;animation:.25s ease-out dualPickerSlideIn;display:flex;overflow:hidden}.dual-picker-overlay.closing .dual-picker-panel{animation:.2s ease-in forwards dualPickerSlideOut}.dual-picker-body{flex:1;gap:0;min-height:0;display:flex;overflow:hidden}.dual-picker-left{border-right:1px solid var(--panel-border);background:var(--bg-secondary);flex-direction:column;width:280px;min-width:240px;padding:16px;display:flex;overflow-y:auto}.dual-picker-right{flex-direction:column;flex:1;min-width:0;padding:16px;display:flex;overflow:hidden}.dual-picker-section-title{color:var(--secondary-text);flex-shrink:0;margin-bottom:12px;font-size:12px;font-weight:600}.dual-picker-search-wrap{flex-shrink:0;margin-bottom:12px;position:relative}.dual-picker-search-icon{pointer-events:none;font-size:13px;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.dual-picker-search-input{border:1px solid var(--input-border);background:var(--input-bg);width:100%;color:var(--input-text);box-sizing:border-box;border-radius:8px;padding:9px 32px;font-family:inherit;font-size:13px;transition:border-color .15s}.dual-picker-search-input:focus{border-color:var(--color-primary);outline:none}.dual-picker-search-clear{color:var(--hint-text);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px 6px;font-size:14px;line-height:1;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.dual-picker-search-clear:hover{background:var(--hover-bg);color:var(--text-color)}.dual-picker-candidate-list{flex-direction:column;flex:1;gap:6px;min-height:0;display:flex;overflow-y:auto}.dual-picker-candidate-list::-webkit-scrollbar{width:5px}.dual-picker-candidate-list::-webkit-scrollbar-thumb{background:var(--separator);border-radius:3px}.dual-picker-empty-hint{text-align:center;color:var(--hint-text);padding:24px 12px;font-size:13px}.dual-picker-current-card{flex:1;justify-content:center;align-items:center;display:flex}.dual-picker-current-card .dual-picker-empty-hint{color:var(--hint-text)}.dual-picker-card{border:1px solid var(--panel-border);cursor:pointer;background:var(--input-bg);transition:all var(--transition-fast);border-radius:10px;flex-shrink:0;align-items:center;gap:10px;padding:10px 12px;display:flex}.dual-picker-card:hover{border-color:var(--color-primary);background:var(--color-primary-bg)}.dual-picker-card.selected{border-color:var(--color-primary);background:var(--color-primary-light);box-shadow:0 0 0 1px var(--color-primary)}.dual-picker-card-disabled{opacity:.45;pointer-events:none}.dual-picker-divider{color:var(--text-muted,#999);border-top:1px solid var(--border-color,#e5e7eb);margin-top:6px;padding:10px 4px 4px;font-size:11px}.dual-picker-card-icon{background:var(--hover-bg);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;font-size:22px;display:flex}.dual-picker-card-icon.step{background:#e3f2fd}.dual-picker-card-icon.urdf{background:#fff3e0}.dual-picker-card-icon.both{background:#e8f5e9}.dual-picker-card-info{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.dual-picker-card-name{color:var(--text-color);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.dual-picker-card-name .highlight{color:#333;background:#fff176;border-radius:2px;padding:0 1px}.dual-picker-card-meta{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.dual-picker-tag{white-space:nowrap;border-radius:10px;padding:1px 8px;font-size:10px;font-weight:500;display:inline-block}.dual-picker-tag.mechanical{color:#e65100;background:#fff3e0}.dual-picker-tag.control{color:#0d47a1;background:#e3f2fd}.dual-picker-tag.embedded{color:#6a1b9a;background:#f3e5f5}.dual-picker-tag.hardware{color:#e65100;background:#fff8e1}.dual-picker-tag.software{color:#1b5e20;background:#e8f5e9}.dual-picker-tag.other,.dual-picker-tag.nontech{color:#616161;background:#f5f5f5}.dual-picker-joints{color:var(--hint-text);white-space:nowrap;font-size:10px}.dual-picker-badge{text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;border-radius:4px;padding:1px 7px;font-size:9px;font-weight:700;display:inline-block}.dual-picker-badge.step{color:#fff;background:#1976d2}.dual-picker-badge.urdf{color:#fff;background:#f57c00}.dual-picker-badge.both{color:#fff;background:#388e3c}.dual-picker-error{background:var(--color-danger-light);border:1px solid var(--color-danger);color:var(--color-danger-dark);border-radius:6px;flex:1;margin-right:auto;padding:8px 12px;font-size:12px}.dual-picker-left-card{border:2px solid var(--color-primary);background:var(--color-primary-bg);border-radius:12px;flex-direction:column;align-items:center;gap:10px;padding:20px 16px;display:flex}.dual-picker-left-card .dual-picker-card-icon{border-radius:14px;width:56px;height:56px;font-size:28px}.dual-picker-left-card .dual-picker-card-name{text-align:center;white-space:normal;font-size:15px}.dual-picker-left-model{color:var(--hint-text);text-align:center;font-size:11px}.dual-picker-left-card .dual-picker-card-meta{justify-content:center}.dual-picker-result-count{color:var(--hint-text);flex-shrink:0;margin-bottom:8px;font-size:10px}@media (width<=640px){.dual-picker-panel{width:96vw;max-height:92vh}.dual-picker-body{flex-direction:column;overflow-y:auto}.dual-picker-left{width:100%;min-width:unset;border-right:none;border-bottom:1px solid var(--panel-border);flex-shrink:0;padding:12px}.dual-picker-right{padding:12px;overflow:visible}.dual-picker-candidate-list{max-height:220px}}.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);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(--primary-text)}.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)}.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-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);font-weight:600}.context-menu-item.context-menu-primary:hover{background:var(--color-primary);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}#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);color:var(--text-inverse);border-color:var(--color-primary)}.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)}.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.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);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{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.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);gap:10px;font-size:10px;display:flex}.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(--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-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(--primary);color:#fff;border-color:var(--primary)}.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(--primary);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(--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(--primary);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(--primary);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(--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 130px 200px;align-items:center;gap:12px;margin-bottom:8px;padding:10px 12px;display:grid}.version-row.is-current{border-color:var(--primary);background:#2563eb0d}.version-row .vr-ver{font-size:14px;font-weight:700}.version-row .vr-ver .is-current-pill{background:var(--primary);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-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(--primary);color:#fff;border-color:var(--primary)}.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}
