.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; } .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 text-caption; margin: var(--space-3) 0 var(--space-2); padding: 0 var(--space-3); color: var(--color-text-subtle); text-transform: uppercase; letter-spacing: 0.04em; } .treeList { list-style: none; display: grid; gap: var(--space-1); padding: 0; } .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 { width: 100%; min-width: 0; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--space-2); min-height: calc(var(--control-size-lg) - var(--space-2)); padding: var(--space-2) var(--space-3); padding-left: calc(var(--space-3) + (var(--tree-depth, 0) * var(--space-4))); border: 1px solid transparent; border-radius: var(--radius-lg); background: transparent; color: var(--color-text-muted); text-align: left; transition: background 160ms var(--easing-standard), color 160ms var(--easing-standard), border-color 160ms var(--easing-standard), transform 180ms var(--easing-standard); } .treeItem:hover, .treeItem:focus-visible { background: var(--color-surface-hover); color: var(--color-text); } .treeItemFolder { color: var(--color-text); } .treeItemActive { 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); } .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 { color: inherit; opacity: 0.85; } .label { @include text-label; min-width: 0; } .itemMeta { @include text-caption; color: var(--color-text-muted); } .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; } }