@use "../shared/tree-nav" as treeNav; .sidebar { --sidebar-nav-item-min-height: var(--control-size-lg); position: relative; min-width: 0; min-height: 0; display: grid; grid-template-rows: auto auto minmax(0, 1fr); gap: var(--space-4); padding: var(--space-4); overflow: hidden; border-top-left-radius: inherit; isolation: isolate; } .sidebarDragMode { user-select: none; cursor: grabbing; } .sidebarDragMode .treeItem { cursor: grabbing; } .header { display: grid; gap: var(--space-3); } .headerActions { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--space-2); justify-items: stretch; } .headerControls { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; } .headerDrawerOpen { z-index: 4; } .headerActionButton { width: 100%; min-height: var(--control-size-md); display: inline-flex; align-items: center; justify-content: center; border: 1px solid color-mix(in srgb, var(--color-border-strong) 44%, transparent); border-radius: var(--radius-pill); background: color-mix(in srgb, var(--color-surface) 94%, transparent); color: var(--color-text-muted); box-shadow: var(--shadow-soft); transition: background 160ms var(--easing-standard), color 160ms var(--easing-standard), border-color 160ms var(--easing-standard), transform 180ms var(--easing-standard); } .headerActionButton:hover, .headerActionButton:focus-visible { background: var(--color-surface-hover); border-color: var(--color-border); color: var(--color-text); } .headerActionButton:hover { transform: translateY(-1px); } .headerCollapseButton { background: color-mix(in srgb, var(--color-accent-soft) 58%, transparent); color: var(--color-accent-strong); } .section { display: grid; grid-template-rows: auto minmax(0, 1fr); gap: var(--space-2); min-height: 0; position: relative; z-index: 1; transition: opacity 180ms var(--easing-standard), transform 220ms var(--easing-standard); } .sectionHidden { opacity: 0; pointer-events: none; transform: translateX(var(--space-3)); } .navScroller { min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding-right: var(--space-1); padding-bottom: calc(var(--space-4) + var(--sidebar-dock-clearance, var(--shell-dock-clearance))); margin-right: calc(var(--space-1) * -1); } .sectionLabel { @include text-label; color: var(--color-text-muted); } .navList { list-style: none; display: grid; gap: var(--space-1); padding: 0; } .treeSectionLabel { @include treeNav.section-label; margin: var(--space-3) 0 var(--space-2); padding: 0 var(--space-3); } .treeList { @include treeNav.tree-list; } .treeEmptySlot { @include treeNav.empty-slot; } .treeInputRow { @include treeNav.input-row; } .treeInput { @include treeNav.input; } .navItem { width: 100%; min-width: 0; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--space-2); min-height: var(--sidebar-nav-item-min-height); padding: var(--space-2) var(--space-3); @include interactive-frame(transparent, transparent, var(--color-text-muted), var(--radius-lg)); text-align: left; @include interactive-frame-hover(var(--color-surface-hover), transparent, var(--color-text)); } .treeItem { @include treeNav.item; } .treeItem:hover, .treeItem:focus-visible { @include treeNav.item-hover; } .treeItemFolder { @include treeNav.item-folder; } .treeItemDragging { @include treeNav.item-dragging; } .treeItemDropBefore { @include treeNav.item-drop-before; } .treeItemDropAfter { @include treeNav.item-drop-after; } .treeItemDropInside { @include treeNav.item-drop-inside; } .folderChevron { @include treeNav.folder-chevron; } .folderChevronOpen { @include treeNav.folder-chevron-open; } .treeItemActive { @include treeNav.item-active; } .navItemActive { border-color: var(--color-border); background: var(--color-surface); color: var(--color-text); box-shadow: inset 0 1px 0 color-mix(in srgb, white 4%, transparent); } .icon { @include treeNav.icon; } .label { @include treeNav.label; } .itemMeta { @include treeNav.item-meta; } .sidebarCollapsed { gap: var(--space-3); padding: var(--space-3) var(--space-2); } .sidebarCollapsed .headerActions { grid-template-columns: repeat(3, minmax(0, 1fr)); } .sidebarCollapsed .headerControls { justify-items: center; } .sidebarCollapsed .header { justify-items: center; } .sidebarCollapsed .navScroller { padding-right: 0; margin-right: 0; } .sidebarCollapsed .navItem { grid-template-columns: auto; justify-content: center; gap: 0; min-height: calc(var(--control-size-lg) - var(--space-1)); padding: var(--space-2); border-radius: var(--radius-md); } .sidebarCollapsed .label, .sidebarCollapsed .itemMeta, .sidebarCollapsed .treeSectionLabel, .sidebarCollapsed .treeList { display: none; } .sidebarCollapsed .icon { opacity: 1; } .sidebarCollapsed .section { gap: var(--space-3); } @include respond-down(mobile) { .sidebar { display: none; } }