.folderTree { font-size: 0.875rem; user-select: none; } .treeNode { display: flex; align-items: center; padding: 4px 8px; cursor: pointer; border-radius: 4px; gap: 6px; min-height: 32px; position: relative; } .treeNode:hover { background: var(--color-bg-hover, rgba(0, 0, 0, 0.04)); } .treeNode.selected { background: var(--color-bg-selected, rgba(25, 118, 210, 0.08)); font-weight: 600; } .treeNode.multiSelected { background: var(--color-bg-multi-selected, rgba(25, 118, 210, 0.14)); box-shadow: inset 3px 0 0 var(--color-primary, #1976d2); } .treeNode.multiSelected:hover { background: var(--color-bg-multi-selected-hover, rgba(25, 118, 210, 0.20)); } .treeNode.dropTarget { background: var(--color-bg-drop, rgba(25, 118, 210, 0.15)); outline: 2px dashed var(--color-primary, #1976d2); outline-offset: -2px; } .treeNode.dragging { opacity: 0.5; } .chevron { width: 16px; height: 16px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; transition: transform 0.15s ease; color: var(--color-text-secondary, #666); font-size: 10px; } .chevron.expanded { transform: rotate(90deg); } .chevron.empty { visibility: hidden; } .folderIcon { flex-shrink: 0; color: var(--color-text-secondary, #888); font-size: 14px; } .folderName { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .renameInput { flex: 1; border: 1px solid var(--color-primary, #1976d2); border-radius: 3px; padding: 1px 4px; font-size: inherit; font-family: inherit; outline: none; min-width: 0; } .actions { display: none; gap: 2px; margin-left: auto; flex-shrink: 0; } .treeNode:hover .actions { display: flex; } .actionBtn { background: none; border: none; cursor: pointer; padding: 2px 4px; border-radius: 3px; color: var(--color-text-secondary, #888); font-size: 12px; line-height: 1; display: flex; align-items: center; } .actionBtn:hover { background: var(--color-bg-hover, rgba(0, 0, 0, 0.08)); color: var(--color-text-primary, #333); } .actionBtn.danger:hover { color: var(--color-error, #d32f2f); } .children { padding-left: 16px; } .rootLabel { font-weight: 600; color: var(--color-text-primary, #333); } /* File nodes inside the tree */ .fileNode { cursor: pointer; } .fileNode:hover { background: var(--color-bg-hover, rgba(0, 0, 0, 0.04)); } .fileIcon { flex-shrink: 0; font-size: 12px; } .fileSize { font-size: 10px; color: var(--color-text-secondary, #999); flex-shrink: 0; margin-left: auto; } .rootActions { display: flex; gap: 2px; margin-left: auto; flex-shrink: 0; }