.header[data-v-9e0b0d68]{display:flex;align-items:center;justify-content:space-between;height:var(--header-height);padding:0 var(--space-lg);background:var(--bg-secondary);border-bottom:1px solid var(--border-subtle);gap:var(--space-xl)}.mobile-menu-btn[data-v-9e0b0d68]{display:none;padding:var(--space-sm);color:var(--text-primary);border-radius:var(--radius-md)}.mobile-menu-btn[data-v-9e0b0d68]:hover{background:var(--bg-tertiary)}@media (max-width: 1200px){.header[data-v-9e0b0d68]{padding:0 var(--space-md);justify-content:space-between}.header-left[data-v-9e0b0d68]{flex:0 1 auto;min-width:0;gap:var(--space-sm)}.project-info[data-v-9e0b0d68]{flex-shrink:1;min-width:0;overflow:hidden}.logo svg[data-v-9e0b0d68]{width:24px;height:24px;flex-shrink:0}.project-name[data-v-9e0b0d68]{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.edit-icon[data-v-9e0b0d68]{display:none}.header-center[data-v-9e0b0d68]{display:none!important}.header-right[data-v-9e0b0d68]{flex-shrink:0;min-width:auto;gap:var(--space-sm)}.btn[data-v-9e0b0d68]{padding:var(--space-sm) var(--space-md);min-width:auto;min-height:44px;flex-shrink:0}}@media (max-width: 768px){.mobile-menu-btn[data-v-9e0b0d68]{display:flex}.btn span[data-v-9e0b0d68]{display:none}.header-left[data-v-9e0b0d68]{flex:1;min-width:0}.header-right[data-v-9e0b0d68]{display:none!important}}.header-left[data-v-9e0b0d68]{display:flex;align-items:center;gap:var(--space-md);min-width:280px}.logo[data-v-9e0b0d68]{flex-shrink:0}.project-info[data-v-9e0b0d68]{flex:1}.project-name[data-v-9e0b0d68]{font-family:var(--font-display);font-size:16px;font-weight:600;color:var(--text-primary);cursor:pointer;display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-md);transition:background var(--transition-fast)}.project-name[data-v-9e0b0d68]:hover{background:var(--bg-tertiary)}.edit-icon[data-v-9e0b0d68]{opacity:0;transition:opacity var(--transition-fast);color:var(--text-muted)}.project-name:hover .edit-icon[data-v-9e0b0d68]{opacity:1}.project-name-input[data-v-9e0b0d68]{font-family:var(--font-display);font-size:16px;font-weight:600;background:var(--bg-tertiary);border:1px solid var(--accent-primary);padding:var(--space-xs) var(--space-sm);width:200px}.header-center[data-v-9e0b0d68]{flex:1;display:flex;justify-content:center}.stats[data-v-9e0b0d68]{display:flex;align-items:center;gap:var(--space-lg);background:var(--bg-tertiary);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-lg)}.stat-item[data-v-9e0b0d68]{display:flex;align-items:baseline;gap:var(--space-sm)}.stat-value[data-v-9e0b0d68]{font-family:var(--font-mono);font-size:18px;font-weight:600;color:var(--accent-primary)}.stat-label[data-v-9e0b0d68]{font-size:12px;color:var(--text-muted)}.stat-divider[data-v-9e0b0d68]{width:1px;height:20px;background:var(--border-subtle)}.header-right[data-v-9e0b0d68]{display:flex;align-items:center;gap:var(--space-md);min-width:280px;justify-content:flex-end}.btn[data-v-9e0b0d68]{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:13px;font-weight:500;transition:all var(--transition-fast)}.btn-secondary[data-v-9e0b0d68]{background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border-default)}.btn-secondary[data-v-9e0b0d68]:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--border-strong)}.btn-primary[data-v-9e0b0d68]{background:var(--accent-primary);color:var(--bg-primary);font-weight:600}.btn-primary[data-v-9e0b0d68]:hover:not(:disabled){background:var(--accent-hover)}.btn-primary[data-v-9e0b0d68]:disabled{opacity:.5;cursor:not-allowed}.export-dropdown[data-v-9e0b0d68],.import-dropdown[data-v-9e0b0d68]{position:relative}.dropdown-menu[data-v-9e0b0d68]{position:absolute;top:calc(100% + 8px);right:0;background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:var(--space-sm);min-width:180px;box-shadow:var(--shadow-lg);z-index:100;animation:scaleIn .15s ease}.dropdown-menu button[data-v-9e0b0d68]{display:flex;align-items:center;gap:var(--space-md);width:100%;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:13px;color:var(--text-secondary);transition:all var(--transition-fast)}.dropdown-menu button[data-v-9e0b0d68]:hover{background:var(--bg-hover);color:var(--text-primary)}.format-badge[data-v-9e0b0d68]{font-family:var(--font-mono);font-size:10px;font-weight:600;padding:2px 6px;border-radius:var(--radius-sm)}.format-badge.coco[data-v-9e0b0d68]{background:#7c3aed;color:#fff}.format-badge.yolo[data-v-9e0b0d68]{background:#059669;color:#fff}.format-badge.voc[data-v-9e0b0d68]{background:#dc2626;color:#fff}.header-actions[data-v-9e0b0d68]{display:none;position:fixed;top:var(--header-height);right:0;z-index:40;flex-direction:column;align-items:center;gap:var(--space-sm);padding:var(--space-sm)}@media (max-width: 768px){.header-actions[data-v-9e0b0d68]{display:flex}.header-actions .btn[data-v-9e0b0d68]{min-width:44px;min-height:44px}}.sidebar[data-v-2bbfbe3a]{width:var(--sidebar-width);background:var(--bg-secondary);border-right:1px solid var(--border-subtle);display:flex;flex-direction:column;overflow:hidden}.mobile-sheet[data-v-2bbfbe3a]{padding-top:0}.mobile-header[data-v-2bbfbe3a],.sheet-handle[data-v-2bbfbe3a]{display:none}@media (max-width: 768px){.sidebar[data-v-2bbfbe3a]{width:280px}.mobile-header[data-v-2bbfbe3a]{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-md) 0}.sheet-handle[data-v-2bbfbe3a]{display:block;width:40px;height:4px;background:var(--border-default);border-radius:2px}.close-btn[data-v-2bbfbe3a]{display:flex;width:36px;height:36px;align-items:center;justify-content:center;border-radius:50%;color:var(--text-secondary);background:var(--bg-tertiary);margin-left:auto}.close-btn[data-v-2bbfbe3a]:hover{background:var(--bg-hover);color:var(--text-primary)}}.sidebar-header[data-v-2bbfbe3a]{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--border-subtle)}.sidebar-header h2[data-v-2bbfbe3a]{font-family:var(--font-display);font-size:14px;font-weight:600;color:var(--text-primary)}.count[data-v-2bbfbe3a]{font-family:var(--font-mono);font-size:12px;color:var(--text-muted);background:var(--bg-tertiary);padding:2px 8px;border-radius:var(--radius-md)}.upload-zone[data-v-2bbfbe3a]{padding:var(--space-md);border-bottom:1px solid var(--border-subtle);transition:background var(--transition-fast)}.upload-zone.drag-over[data-v-2bbfbe3a]{background:var(--accent-muted)}.upload-btn[data-v-2bbfbe3a]{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);width:100%;padding:var(--space-md);background:var(--accent-subtle);color:var(--accent-primary);border:1px dashed var(--accent-primary);border-radius:var(--radius-lg);font-size:13px;font-weight:500;transition:all var(--transition-fast)}.upload-btn[data-v-2bbfbe3a]:hover{background:var(--accent-muted);border-style:solid}.upload-buttons[data-v-2bbfbe3a]{display:flex;flex-direction:column;gap:var(--space-sm)}.folder-btn[data-v-2bbfbe3a]{background:var(--bg-tertiary);border-style:dashed var(--border-default);color:var(--text-secondary)}.folder-btn[data-v-2bbfbe3a]:hover{background:var(--bg-hover);border-style:solid;color:var(--text-primary)}.upload-hint[data-v-2bbfbe3a]{text-align:center;font-size:11px;color:var(--text-muted);margin-top:var(--space-sm)}.image-list[data-v-2bbfbe3a]{flex:1;overflow-y:auto;padding:var(--space-sm)}.image-item[data-v-2bbfbe3a]{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast);position:relative}.image-item[data-v-2bbfbe3a]:hover{background:var(--bg-tertiary)}.image-item.active[data-v-2bbfbe3a]{background:var(--accent-muted);outline:1px solid var(--accent-primary)}.thumbnail-wrapper[data-v-2bbfbe3a]{position:relative;width:48px;height:48px;border-radius:var(--radius-sm);overflow:hidden;flex-shrink:0}.thumbnail[data-v-2bbfbe3a]{width:100%;height:100%;object-fit:cover}.thumbnail-placeholder[data-v-2bbfbe3a]{width:100%;height:100%;background:var(--bg-tertiary);display:flex;align-items:center;justify-content:center;color:var(--text-muted)}.annotation-badge[data-v-2bbfbe3a]{position:absolute;top:2px;right:2px;background:var(--accent-primary);color:var(--bg-primary);font-family:var(--font-mono);font-size:10px;font-weight:600;padding:1px 4px;border-radius:var(--radius-sm);min-width:16px;text-align:center}.image-info[data-v-2bbfbe3a]{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.image-name[data-v-2bbfbe3a]{font-size:12px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.image-size[data-v-2bbfbe3a]{font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}.delete-btn[data-v-2bbfbe3a]{position:absolute;right:4px;top:50%;transform:translateY(-50%);opacity:1;padding:var(--space-xs);color:var(--text-muted);border-radius:var(--radius-sm);transition:all var(--transition-fast)}.delete-btn[data-v-2bbfbe3a]:hover{background:var(--error);color:#fff}.empty-list[data-v-2bbfbe3a]{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:13px}.canvas-container[data-v-fa8f82f1]{flex:1;position:relative;overflow:hidden;background:var(--bg-secondary);touch-action:none}.empty-state[data-v-fa8f82f1]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;color:var(--text-muted);animation:fadeIn .3s ease}.empty-icon[data-v-fa8f82f1]{margin-bottom:var(--space-lg);opacity:.5}.empty-state h3[data-v-fa8f82f1]{font-family:var(--font-display);font-size:18px;font-weight:600;color:var(--text-secondary);margin-bottom:var(--space-sm)}.empty-state p[data-v-fa8f82f1]{font-size:14px}.canvas-wrapper[data-v-fa8f82f1]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:var(--shadow-lg);border-radius:var(--radius-sm);overflow:hidden}.canvas-image[data-v-fa8f82f1]{display:block;width:100%;height:100%;object-fit:contain;-webkit-user-select:none;user-select:none;pointer-events:none}.annotation-svg[data-v-fa8f82f1]{position:absolute;top:0;left:0;pointer-events:none}.annotation-svg .annotation-bbox[data-v-fa8f82f1],.annotation-svg .annotation-polygon[data-v-fa8f82f1],.annotation-svg .annotation-keypoint[data-v-fa8f82f1]{pointer-events:all;transition:stroke-width .1s ease}.annotation-svg .annotation-bbox[data-v-fa8f82f1]:hover,.annotation-svg .annotation-polygon[data-v-fa8f82f1]:hover,.annotation-svg .annotation-keypoint[data-v-fa8f82f1]:hover{stroke-width:3}.annotation-svg .resize-handles[data-v-fa8f82f1]{pointer-events:all}.annotation-svg .annotation-bbox.selected[data-v-fa8f82f1],.annotation-svg .annotation-polygon.selected[data-v-fa8f82f1],.annotation-svg .annotation-keypoint.selected[data-v-fa8f82f1]{stroke-width:3;filter:drop-shadow(0 0 4px currentColor)}.zoom-indicator[data-v-fa8f82f1]{position:absolute;bottom:var(--space-lg);left:var(--space-lg);background:var(--bg-elevated);color:var(--text-secondary);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-md);font-family:var(--font-mono);font-size:12px;border:1px solid var(--border-subtle);display:flex;align-items:center;gap:4px}.zoom-input[data-v-fa8f82f1]{width:40px;background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-mono);font-size:12px;padding:2px 4px;text-align:center;-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.zoom-input[data-v-fa8f82f1]:focus{box-shadow:0 0 0 1px var(--accent-muted)}.zoom-input[data-v-fa8f82f1]::-webkit-outer-spin-button,.zoom-input[data-v-fa8f82f1]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.zoom-percent[data-v-fa8f82f1]{color:var(--text-muted)}.tool-hint[data-v-fa8f82f1]{position:absolute;bottom:var(--space-lg);left:50%;transform:translate(-50%);background:var(--bg-elevated);color:var(--text-secondary);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-lg);font-size:13px;border:1px solid var(--border-subtle);animation:fadeIn .2s ease}.tool-hint kbd[data-v-fa8f82f1]{display:inline-block;background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-sm);padding:2px 6px;font-family:var(--font-mono);font-size:11px;margin:0 2px}.category-dropdown[data-v-544cbf6e]{position:relative;width:100%;max-width:160px}.dropdown-trigger[data-v-544cbf6e]{width:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs);padding:6px 10px;background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);font-size:12px;cursor:pointer;transition:all var(--transition-fast)}.dropdown-trigger[data-v-544cbf6e]:hover{border-color:var(--accent-primary);background:var(--bg-hover)}.dropdown-trigger.open[data-v-544cbf6e]{border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--accent-subtle)}.selected-content[data-v-544cbf6e]{display:flex;align-items:center;gap:6px}.category-dot[data-v-544cbf6e]{width:10px;height:10px;border-radius:50%;flex-shrink:0}.category-label[data-v-544cbf6e]{flex:1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.placeholder[data-v-544cbf6e]{color:var(--text-muted)}.chevron[data-v-544cbf6e]{flex-shrink:0;color:var(--text-muted);transition:transform var(--transition-fast)}.dropdown-trigger.open .chevron[data-v-544cbf6e]{transform:rotate(180deg)}.dropdown-menu[data-v-544cbf6e]{position:absolute;top:calc(100% + 4px);left:0;right:0;min-width:180px;background:var(--bg-secondary);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:0 8px 24px #00000040;z-index:1000;overflow:hidden}.dropdown-search[data-v-544cbf6e]{padding:8px;border-bottom:1px solid var(--border-subtle)}.dropdown-search input[data-v-544cbf6e]{width:100%;padding:6px 10px;font-size:12px;background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary)}.dropdown-search input[data-v-544cbf6e]::placeholder{color:var(--text-muted)}.dropdown-search input[data-v-544cbf6e]:focus{outline:none;border-color:var(--accent-primary)}.dropdown-list[data-v-544cbf6e]{max-height:240px;overflow-y:auto;padding:4px}.dropdown-list[data-v-544cbf6e]::-webkit-scrollbar{width:6px}.dropdown-list[data-v-544cbf6e]::-webkit-scrollbar-track{background:transparent}.dropdown-list[data-v-544cbf6e]::-webkit-scrollbar-thumb{background:var(--border-default);border-radius:3px}.dropdown-item[data-v-544cbf6e]{width:100%;display:flex;align-items:center;gap:8px;padding:8px 10px;background:transparent;border:none;border-radius:var(--radius-md);color:var(--text-primary);font-size:13px;cursor:pointer;transition:background var(--transition-fast)}.dropdown-item[data-v-544cbf6e]:hover{background:var(--bg-tertiary)}.dropdown-item.selected[data-v-544cbf6e]{background:var(--accent-subtle);color:var(--accent-primary)}.dropdown-item .category-name[data-v-544cbf6e]{flex:1;text-align:left}.check-icon[data-v-544cbf6e]{flex-shrink:0;color:var(--accent-primary)}.no-results[data-v-544cbf6e]{padding:16px;text-align:center;color:var(--text-muted);font-size:12px}.dropdown-enter-active[data-v-544cbf6e],.dropdown-leave-active[data-v-544cbf6e]{transition:all .15s ease}.dropdown-enter-from[data-v-544cbf6e],.dropdown-leave-to[data-v-544cbf6e]{opacity:0;transform:translateY(-8px)}.config-btn[data-v-6b2bf205]{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);width:100%;padding:var(--space-sm) var(--space-md);margin-top:var(--space-md);background:var(--bg-tertiary);border:1px solid var(--border-subtle);border-radius:var(--radius-md);color:var(--text-secondary);font-size:13px;cursor:pointer;transition:all var(--transition-fast)}.config-btn[data-v-6b2bf205]:hover{background:var(--bg-elevated);color:var(--accent-primary);border-color:var(--accent-muted)}.modal-backdrop[data-v-6b2bf205]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn-6b2bf205 .15s ease}.modal-content[data-v-6b2bf205]{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);width:500px;max-width:90vw;max-height:85vh;overflow:hidden;display:flex;flex-direction:column;animation:scaleIn-6b2bf205 .15s ease}.modal-header[data-v-6b2bf205]{display:flex;align-items:center;justify-content:space-between;padding:var(--space-lg);border-bottom:1px solid var(--border-subtle)}.modal-header h2[data-v-6b2bf205]{font-family:var(--font-display);font-size:16px;font-weight:600;color:var(--text-primary);margin:0}.modal-close[data-v-6b2bf205]{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-md);color:var(--text-muted);transition:all var(--transition-fast)}.modal-close[data-v-6b2bf205]:hover{background:var(--bg-tertiary);color:var(--text-primary)}.modal-tabs[data-v-6b2bf205]{display:flex;border-bottom:1px solid var(--border-subtle)}.tab-btn[data-v-6b2bf205]{flex:1;padding:var(--space-md);font-size:13px;color:var(--text-muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:all var(--transition-fast)}.tab-btn[data-v-6b2bf205]:hover{color:var(--text-secondary);background:var(--bg-tertiary)}.tab-btn.active[data-v-6b2bf205]{color:var(--accent-primary);border-bottom-color:var(--accent-primary)}.modal-body[data-v-6b2bf205]{padding:var(--space-lg);overflow-y:auto;max-height:500px}.tab-content[data-v-6b2bf205]{display:flex;flex-direction:column;gap:var(--space-md)}.input-label[data-v-6b2bf205]{font-size:12px;font-weight:500;color:var(--text-secondary)}.tab-content textarea[data-v-6b2bf205]{width:100%;padding:var(--space-md);font-size:13px;resize:vertical;min-height:80px}.empty-state[data-v-6b2bf205]{display:flex;flex-direction:column;align-items:center;padding:var(--space-xl);color:var(--text-muted)}.empty-state p[data-v-6b2bf205]{margin-top:var(--space-sm);font-size:12px}.image-selection[data-v-6b2bf205]{display:flex;flex-direction:column;gap:var(--space-sm)}.selection-header[data-v-6b2bf205]{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--text-secondary)}.clear-btn[data-v-6b2bf205]{font-size:11px;color:var(--accent-primary);background:none;border:none;cursor:pointer}.clear-btn[data-v-6b2bf205]:hover{text-decoration:underline}.image-grid[data-v-6b2bf205]{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:var(--space-sm);max-height:180px;overflow-y:auto}.image-item[data-v-6b2bf205]{position:relative;aspect-ratio:1;border:2px solid var(--border-subtle);border-radius:var(--radius-md);overflow:hidden;cursor:pointer;transition:all var(--transition-fast)}.image-item[data-v-6b2bf205]:hover{border-color:var(--accent-primary)}.image-item.selected[data-v-6b2bf205]{border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--accent-muted)}.image-item img[data-v-6b2bf205]{width:100%;height:100%;object-fit:cover}.image-info[data-v-6b2bf205]{position:absolute;bottom:0;left:0;right:0;padding:var(--space-xs);background:linear-gradient(transparent,#000000b3);display:flex;flex-direction:column}.image-name[data-v-6b2bf205]{font-size:9px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.annotation-count[data-v-6b2bf205]{font-size:8px;color:var(--text-muted)}.selected-badge[data-v-6b2bf205]{position:absolute;top:4px;right:4px;width:18px;height:18px;background:var(--accent-primary);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--bg-primary)}.preview-section[data-v-6b2bf205]{background:var(--bg-tertiary);border-radius:var(--radius-md);padding:var(--space-md)}.preview-header[data-v-6b2bf205]{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-sm);font-size:12px;color:var(--text-secondary)}.preview-count[data-v-6b2bf205]{font-family:var(--font-mono);color:var(--text-muted)}.preview-list[data-v-6b2bf205]{display:flex;flex-direction:column;gap:var(--space-sm);max-height:150px;overflow-y:auto}.preview-item[data-v-6b2bf205]{display:flex;gap:var(--space-sm);padding:var(--space-sm);background:var(--bg-secondary);border-radius:var(--radius-sm)}.preview-info[data-v-6b2bf205]{flex:1;min-width:0}.preview-name[data-v-6b2bf205]{font-size:11px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px}.preview-bboxes[data-v-6b2bf205],.preview-cls[data-v-6b2bf205]{font-family:var(--font-mono);font-size:9px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bbox-label[data-v-6b2bf205],.cls-label[data-v-6b2bf205]{color:var(--text-secondary)}.error-message[data-v-6b2bf205]{margin:0 var(--space-lg);padding:var(--space-sm) var(--space-md);background:#f8717126;border:1px solid var(--error);border-radius:var(--radius-md);color:var(--error);font-size:12px;text-align:center}.hint[data-v-6b2bf205]{font-size:11px;color:var(--text-muted);margin-top:var(--space-xs)}.modal-footer[data-v-6b2bf205]{display:flex;gap:var(--space-sm);justify-content:flex-end;padding:var(--space-lg);border-top:1px solid var(--border-subtle)}.btn-cancel[data-v-6b2bf205],.btn-confirm[data-v-6b2bf205]{padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);font-size:13px;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.btn-cancel[data-v-6b2bf205]{background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border-subtle)}.btn-cancel[data-v-6b2bf205]:hover{background:var(--bg-elevated);color:var(--text-primary)}.btn-confirm[data-v-6b2bf205]{background:var(--accent-primary);color:var(--bg-primary);border:none}.btn-confirm[data-v-6b2bf205]:hover:not(:disabled){background:var(--accent-hover)}.btn-confirm[data-v-6b2bf205]:disabled{opacity:.5;cursor:not-allowed}@keyframes fadeIn-6b2bf205{0%{opacity:0}to{opacity:1}}@keyframes scaleIn-6b2bf205{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}.right-panel[data-v-94c04a5d]{width:var(--right-panel-width);background:var(--bg-secondary);border-left:1px solid var(--border-subtle);display:flex;flex-direction:column;overflow-y:auto}.mobile-sheet[data-v-94c04a5d]{position:relative}@media (max-width: 768px){.mobile-sheet[data-v-94c04a5d]{position:fixed}}.mobile-header[data-v-94c04a5d],.sheet-handle[data-v-94c04a5d]{display:none}@media (max-width: 768px){.right-panel[data-v-94c04a5d]{width:85vw;max-width:320px}.mobile-header[data-v-94c04a5d]{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-md) 0}.sheet-handle[data-v-94c04a5d]{display:block;width:40px;height:4px;background:var(--border-default);border-radius:2px}.close-btn[data-v-94c04a5d]{display:flex;width:36px;height:36px;align-items:center;justify-content:center;border-radius:50%;color:var(--text-secondary);background:var(--bg-tertiary);margin-left:auto}.close-btn[data-v-94c04a5d]:hover{background:var(--bg-hover);color:var(--text-primary)}}.panel-section[data-v-94c04a5d]{padding:var(--space-lg);border-bottom:1px solid var(--border-subtle)}.section-header[data-v-94c04a5d]{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-md)}.section-header h3[data-v-94c04a5d]{font-family:var(--font-display);font-size:13px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.header-actions[data-v-94c04a5d]{display:flex;gap:var(--space-xs)}.add-btn.small[data-v-94c04a5d]{width:24px;height:24px}.delete-btn[data-v-94c04a5d],.add-btn[data-v-94c04a5d]{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-md);color:var(--text-muted);transition:all var(--transition-fast)}.delete-btn[data-v-94c04a5d]:hover{background:var(--error);color:#fff}.add-btn[data-v-94c04a5d]:hover{background:var(--bg-tertiary);color:var(--accent-primary)}.property-row[data-v-94c04a5d]{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) 0;border-bottom:1px solid var(--border-subtle)}.property-row[data-v-94c04a5d]:last-child{border-bottom:none}.property-row label[data-v-94c04a5d]{font-size:12px;color:var(--text-muted)}.property-row .value[data-v-94c04a5d]{font-size:12px;color:var(--text-primary)}.type-badge[data-v-94c04a5d]{font-size:11px;font-weight:500;padding:2px 8px;border-radius:var(--radius-sm)}.type-badge.bbox[data-v-94c04a5d]{background:#4ade8033;color:var(--annotation-bbox)}.type-badge.polygon[data-v-94c04a5d]{background:#f472b633;color:var(--annotation-polygon)}.type-badge.keypoint[data-v-94c04a5d]{background:#60a5fa33;color:var(--annotation-keypoint)}.bbox-values[data-v-94c04a5d]{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-xs);font-size:11px;color:var(--text-secondary)}.no-selection[data-v-94c04a5d]{display:flex;flex-direction:column;align-items:center;padding:var(--space-xl);color:var(--text-muted);text-align:center}.no-selection p[data-v-94c04a5d]{font-size:12px;margin-top:var(--space-sm)}.category-list[data-v-94c04a5d]{display:flex;flex-direction:column;gap:var(--space-xs);max-height:40vh;overflow-y:auto}.category-group[data-v-94c04a5d]{margin-bottom:var(--space-sm)}.group-header[data-v-94c04a5d]{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:var(--bg-tertiary);border-radius:var(--radius-md);cursor:pointer;-webkit-user-select:none;user-select:none}.group-header[data-v-94c04a5d]:hover{background:var(--bg-hover)}.group-toggle[data-v-94c04a5d]{color:var(--text-muted);transition:transform var(--transition-fast)}.group-toggle svg.collapsed[data-v-94c04a5d]{transform:rotate(-90deg)}.group-name[data-v-94c04a5d]{flex:1;font-size:12px;font-weight:500;color:var(--text-primary)}.group-count[data-v-94c04a5d]{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);background:var(--bg-primary);padding:1px 6px;border-radius:var(--radius-sm)}.group-delete[data-v-94c04a5d]{opacity:0;padding:2px;color:var(--text-muted);border-radius:var(--radius-sm);transition:all var(--transition-fast)}.group-header:hover .group-delete[data-v-94c04a5d]{opacity:1}.group-delete[data-v-94c04a5d]:hover{background:var(--error);color:#fff}.group-items[data-v-94c04a5d]{padding-left:var(--space-md)}.category-item[data-v-94c04a5d]{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm);border-radius:var(--radius-md);transition:background var(--transition-fast);cursor:pointer}.category-item[data-v-94c04a5d]:hover{background:var(--bg-tertiary)}.drag-handle[data-v-94c04a5d]{cursor:grab;color:var(--text-muted);opacity:.5;flex-shrink:0}.drag-handle[data-v-94c04a5d]:hover{opacity:1}.category-item.dragging[data-v-94c04a5d]{opacity:.5;background:var(--bg-tertiary)}.category-item.drag-over[data-v-94c04a5d]{border-top:2px solid var(--accent-primary)}.category-color[data-v-94c04a5d]{width:12px;height:12px;border-radius:50%;flex-shrink:0}.category-name[data-v-94c04a5d]{flex:1;font-size:13px;color:var(--text-primary)}.category-count[data-v-94c04a5d]{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);background:var(--bg-tertiary);padding:1px 6px;border-radius:var(--radius-sm)}.cat-delete[data-v-94c04a5d]{opacity:1;padding:2px;color:var(--text-muted);border-radius:var(--radius-sm);transition:all var(--transition-fast)}.cat-delete[data-v-94c04a5d]:hover{background:var(--error);color:#fff}.cat-edit[data-v-94c04a5d]{opacity:0;padding:2px;color:var(--text-muted);border-radius:var(--radius-sm);transition:all var(--transition-fast)}.category-item:hover .cat-edit[data-v-94c04a5d]{opacity:1}.cat-edit[data-v-94c04a5d]:hover{background:var(--accent-primary);color:#fff}.edit-header[data-v-94c04a5d]{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-sm);font-size:13px;font-weight:500;color:var(--text-primary)}.btn-icon[data-v-94c04a5d]{padding:2px;color:var(--text-muted);border-radius:var(--radius-sm)}.btn-icon[data-v-94c04a5d]:hover{background:var(--bg-hover);color:var(--text-primary)}.add-category-form[data-v-94c04a5d]{margin-top:var(--space-md);padding:var(--space-md);background:var(--bg-tertiary);border-radius:var(--radius-lg);animation:scaleIn .15s ease}.add-category-form input[data-v-94c04a5d]{width:100%;font-size:13px;margin-bottom:var(--space-sm)}.group-dropdown[data-v-94c04a5d]{position:relative;width:100%;margin-bottom:var(--space-sm)}.group-dropdown .dropdown-trigger[data-v-94c04a5d]{width:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs);padding:6px 10px;background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);font-size:13px;cursor:pointer;transition:all var(--transition-fast)}.group-dropdown .dropdown-trigger[data-v-94c04a5d]:hover{border-color:var(--accent-primary);background:var(--bg-hover)}.group-dropdown .dropdown-trigger.open[data-v-94c04a5d]{border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--accent-subtle)}.group-dropdown .chevron[data-v-94c04a5d]{color:var(--text-muted);transition:transform var(--transition-fast)}.group-dropdown .dropdown-trigger.open .chevron[data-v-94c04a5d]{transform:rotate(180deg)}.group-dropdown .dropdown-menu[data-v-94c04a5d]{background:var(--bg-secondary);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:0 8px 24px #00000040;z-index:1000;overflow:hidden;padding:4px}.group-dropdown .dropdown-item[data-v-94c04a5d]{width:100%;display:flex;align-items:center;padding:8px 10px;background:transparent;border:none;border-radius:var(--radius-md);color:var(--text-primary);font-size:13px;cursor:pointer;transition:background var(--transition-fast)}.group-dropdown .dropdown-item[data-v-94c04a5d]:hover{background:var(--bg-tertiary)}.group-dropdown .dropdown-item.selected[data-v-94c04a5d]{background:var(--accent-subtle);color:var(--accent-primary)}.color-picker[data-v-94c04a5d]{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-bottom:var(--space-md)}.color-option[data-v-94c04a5d]{width:24px;height:24px;border-radius:50%;border:2px solid transparent;transition:all var(--transition-fast)}.color-option[data-v-94c04a5d]:hover{transform:scale(1.1)}.color-option.selected[data-v-94c04a5d]{border-color:#fff;box-shadow:0 0 0 2px var(--bg-primary)}.form-actions[data-v-94c04a5d]{display:flex;gap:var(--space-sm);justify-content:flex-end}.btn-cancel[data-v-94c04a5d],.btn-confirm[data-v-94c04a5d]{padding:var(--space-xs) var(--space-md);border-radius:var(--radius-md);font-size:12px;font-weight:500}.btn-cancel[data-v-94c04a5d]{color:var(--text-secondary)}.btn-cancel[data-v-94c04a5d]:hover{background:var(--bg-hover)}.btn-confirm[data-v-94c04a5d]{background:var(--accent-primary);color:var(--bg-primary)}.btn-confirm[data-v-94c04a5d]:hover{background:var(--accent-hover)}.image-info[data-v-94c04a5d]{display:flex;flex-direction:column;gap:var(--space-sm)}.info-row[data-v-94c04a5d]{display:flex;justify-content:space-between;align-items:center}.info-label[data-v-94c04a5d]{font-size:12px;color:var(--text-muted)}.info-value[data-v-94c04a5d]{font-size:12px;color:var(--text-primary);max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.no-image[data-v-94c04a5d]{color:var(--text-muted);font-size:12px;text-align:center;padding:var(--space-lg)}.panel-footer[data-v-94c04a5d]{margin-top:auto;border-top:1px solid var(--border-subtle);border-bottom:none}.footer[data-v-e7d72491]{display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 var(--space-lg);background:var(--bg-secondary);border-top:1px solid var(--border-subtle)}.footer-left[data-v-e7d72491],.footer-right[data-v-e7d72491]{display:flex;align-items:center;gap:var(--space-sm)}.footer-center[data-v-e7d72491]{display:flex;align-items:center}.tool-group[data-v-e7d72491],.action-group[data-v-e7d72491]{display:flex;align-items:center;gap:var(--space-xs)}.tool-btn[data-v-e7d72491]{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);color:var(--text-secondary);transition:all var(--transition-fast)}.tool-btn[data-v-e7d72491]:hover{background:var(--bg-tertiary);color:var(--text-primary)}.tool-btn.active[data-v-e7d72491]{background:var(--accent-muted);color:var(--accent-primary)}.tool-label[data-v-e7d72491]{font-size:12px}.tool-key[data-v-e7d72491]{font-family:var(--font-mono);font-size:10px;padding:2px 4px;background:var(--bg-tertiary);border-radius:var(--radius-sm);color:var(--text-muted)}.tool-btn.active .tool-key[data-v-e7d72491]{background:var(--accent-primary);color:var(--bg-primary)}.divider[data-v-e7d72491]{width:1px;height:24px;background:var(--border-subtle);margin:0 var(--space-sm)}.action-btn[data-v-e7d72491]{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-md);color:var(--text-secondary);transition:all var(--transition-fast)}.action-btn[data-v-e7d72491]:hover:not(:disabled){background:var(--bg-tertiary);color:var(--text-primary)}.action-btn[data-v-e7d72491]:disabled{opacity:.3}.action-btn.active[data-v-e7d72491]{background:var(--accent-muted);color:var(--accent-primary)}.shortcut-hint[data-v-e7d72491]{font-size:11px;color:var(--text-muted);display:flex;align-items:center;gap:var(--space-sm)}.shortcut-hint kbd[data-v-e7d72491]{font-family:var(--font-mono);font-size:10px;padding:2px 5px;background:var(--bg-tertiary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);margin:0 2px}.zoom-btn[data-v-e7d72491]{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-md);color:var(--text-secondary);transition:all var(--transition-fast)}.zoom-btn[data-v-e7d72491]:hover{background:var(--bg-tertiary);color:var(--text-primary)}.zoom-value[data-v-e7d72491]{font-family:var(--font-mono);font-size:12px;color:var(--text-secondary);min-width:44px;text-align:center}.zoom-btn.reset[data-v-e7d72491]{margin-left:var(--space-sm)}@media (max-width: 1200px){.footer[data-v-e7d72491]{height:var(--footer-height);padding:0 var(--space-sm)}.footer-left[data-v-e7d72491],.footer-right[data-v-e7d72491]{gap:var(--space-xs)}.footer-center[data-v-e7d72491],.tool-label[data-v-e7d72491],.tool-key[data-v-e7d72491]{display:none}.tool-btn[data-v-e7d72491]{padding:var(--space-sm);min-width:44px;min-height:44px;justify-content:center}.divider[data-v-e7d72491]{margin:0 var(--space-xs)}.zoom-value[data-v-e7d72491]{font-size:11px;min-width:36px}.zoom-btn[data-v-e7d72491]{width:36px;height:36px;min-width:36px}}.app[data-v-ed6434a9]{display:flex;flex-direction:column;height:100vh;background:var(--bg-primary);overflow:hidden}.main-content[data-v-ed6434a9]{display:flex;flex:1;overflow:hidden}:root{--bg-primary: #1a1816;--bg-secondary: #242220;--bg-tertiary: #2e2b28;--bg-elevated: #383432;--bg-hover: #403c38;--border-subtle: #3d3935;--border-default: #4a4540;--border-strong: #5a5550;--text-primary: #f5f2ed;--text-secondary: #a8a299;--text-muted: #6b6560;--accent-primary: #e5a84b;--accent-hover: #f0bc6a;--accent-muted: rgba(229, 168, 75, .15);--accent-subtle: rgba(229, 168, 75, .08);--annotation-bbox: #4ade80;--annotation-bbox-fill: rgba(74, 222, 128, .1);--annotation-polygon: #f472b6;--annotation-polygon-fill: rgba(244, 114, 182, .1);--annotation-keypoint: #60a5fa;--annotation-keypoint-fill: rgba(96, 165, 250, .2);--selection-bg: rgba(229, 168, 75, .3);--success: #4ade80;--warning: #fbbf24;--error: #f87171;--font-display: "DM Sans", sans-serif;--font-body: "IBM Plex Sans", sans-serif;--font-mono: "JetBrains Mono", monospace;--space-xs: 4px;--space-sm: 8px;--space-md: 12px;--space-lg: 16px;--space-xl: 24px;--space-2xl: 32px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5);--shadow-glow: 0 0 20px rgba(229, 168, 75, .2);--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .3s ease-out;--header-height: 56px;--footer-height: 48px;--sidebar-width: 220px;--right-panel-width: 280px}*{margin:0;padding:0;box-sizing:border-box;user-select:none;-webkit-user-select:none}input,textarea,[contenteditable=true]{user-select:auto;-webkit-user-select:auto}html,body{height:100%;overflow:hidden}body{font-family:var(--font-body);font-size:14px;line-height:1.5;color:var(--text-primary);background:var(--bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#app{height:100%;display:flex;flex-direction:column}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-default);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}::selection{background:var(--accent-muted);color:var(--text-primary)}:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}button{font-family:inherit;font-size:inherit;border:none;background:none;cursor:pointer;color:inherit}button:disabled{cursor:not-allowed;opacity:.5}input,textarea,select{font-family:inherit;font-size:inherit;color:inherit;background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-muted)}.text-primary{color:var(--text-primary)}.text-secondary{color:var(--text-secondary)}.text-muted{color:var(--text-muted)}.text-accent{color:var(--accent-primary)}.font-display{font-family:var(--font-display)}.font-mono{font-family:var(--font-mono)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInLeft{0%{transform:translate(-20px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideInRight{0%{transform:translate(20px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes scaleIn{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}@keyframes bounce{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.animate-pulse{animation:pulse 2s ease-in-out infinite}.animate-fade-in{animation:fadeIn var(--transition-slow) forwards}.animate-slide-in-left{animation:slideInLeft var(--transition-slow) forwards}.animate-slide-in-right{animation:slideInRight var(--transition-slow) forwards}.animate-scale-in{animation:scaleIn var(--transition-base) forwards}@media (max-width: 1024px){:root{--sidebar-width: 180px;--right-panel-width: 240px}}@media (max-width: 768px){:root{--header-height: 50px;--footer-height: 60px;--sidebar-width: 0px;--right-panel-width: 0px;--space-lg: 12px;--space-xl: 16px}.sidebar{position:fixed!important;top:var(--header-height);bottom:var(--footer-height);left:0;width:280px;z-index:50;transform:translate(-100%)!important;transition:transform .3s ease}.sidebar.open{transform:translate(0)!important}.right-panel{position:fixed!important;top:var(--header-height);bottom:var(--footer-height);right:0;left:auto;width:85vw;max-width:320px;z-index:50;transform:translate(100%)!important;transition:transform .3s ease}.right-panel.open{transform:translate(0)!important}.mobile-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:40;opacity:0;pointer-events:none;transition:opacity .3s ease}.mobile-backdrop.visible{opacity:1;pointer-events:auto}.mobile-fab{display:flex!important;position:fixed;bottom:calc(var(--footer-height) + 16px);right:16px;flex-direction:column;gap:12px;z-index:30}.fab-btn{width:56px;height:56px;border-radius:50%;background:var(--accent-primary);color:var(--bg-primary);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-lg);transition:all var(--transition-fast)}.fab-btn:active{transform:scale(.95)}.fab-btn.secondary{width:48px;height:48px;background:var(--bg-elevated);color:var(--text-primary)}.main-content{flex-direction:column}.footer{height:var(--footer-height);padding:0 var(--space-md)}.toolbar-group{gap:var(--space-xs)}.toolbar-btn{padding:var(--space-sm);min-width:44px;min-height:44px}.toolbar-btn span{display:none}.header{height:var(--header-height);padding:0 var(--space-md)}.header-center{display:none}.header-left{min-width:auto}.header-right{min-width:auto;gap:var(--space-sm)}button{min-height:44px;min-width:44px}.mobile-sheet{background:var(--bg-secondary);border-radius:16px 16px 0 0;box-shadow:var(--shadow-lg)}.sheet-handle{width:40px;height:4px;background:var(--border-default);border-radius:2px;margin:8px auto 0}.resize-handle{width:16px;height:16px;border-width:2px}}@media (min-width: 769px){.mobile-backdrop,.mobile-fab{display:none!important}.sidebar.open,.right-panel.open{transform:none}}
