/* src/layout/file-tree/FileTree.css */ .file-tree { display: flex; flex-direction: column; height: 100%; } /* The panel header (title + "+" button) is rendered by the host * SidebarViewContainer in the unified chrome row, NOT inside FileTree. * The "+" button picks up its styling from the host's * .sidebar-view-header__actions rules — no panel-local override needed. */ .file-tree__content { flex: 1; overflow-y: auto; touch-action: pan-y pinch-zoom; /* No top/bottom padding: the first row sits flush against the * chrome-row split so the active-row fill is continuous with the * panel header's bottom border (no gap band between them). */ padding: 0; } .file-tree__empty { padding: 1rem; text-align: center; color: var(--text-tertiary); font-size: 0.875rem; } .file-tree__empty-folder { padding: 0.25rem 0.5rem; color: var(--text-tertiary); font-size: 0.75rem; font-style: italic; } .file-tree__loading { display: flex; align-items: center; gap: 0.5rem; padding: 0.25rem 0.5rem; color: var(--text-tertiary); font-size: 0.75rem; } .file-tree__spinner { animation: spin 1s linear infinite; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .file-tree__error { padding: 0.25rem 0.5rem; color: var(--error); font-size: 0.75rem; } .file-tree__error button { margin-left: 0.5rem; padding: 0.125rem 0.5rem; font-size: 0.75rem; background: none; border: 1px solid var(--border-color); /* Square — matches the rectilinear chrome. */ border-radius: 0; color: var(--text-primary); cursor: pointer; } .file-tree__error button:hover { background-color: var(--bg-tertiary); }