.rail { --rail-workspace-size: var(--control-size-lg); position: relative; z-index: 3; flex: 1; min-height: 0; display: flex; flex-direction: column; align-items: center; gap: var(--space-3); padding: var(--space-3) var(--space-2) calc(var(--space-3) + var(--rail-dock-clearance, var(--shell-dock-clearance))); overflow: visible; } .railCollapsed { --rail-workspace-size: calc(var(--control-size-md) + 0.1rem); justify-content: flex-start; gap: 0; padding-top: var(--space-4); padding-inline: var(--space-1); } .topCluster { width: 100%; display: flex; flex-direction: column; align-items: center; gap: var(--space-2); } .topCluster { gap: var(--space-3); } .railCollapsed .topCluster { gap: var(--space-3); } .railCollapsed .topCluster { align-items: center; } .items { width: 100%; min-height: 0; flex: 1; display: flex; flex-direction: column; align-items: center; gap: var(--space-2); overflow: visible; padding-block: var(--space-1); } .itemSlot { position: relative; width: 100%; display: flex; justify-content: center; overflow: visible; } .itemSlot:hover, .itemSlot:focus-within, .itemSlotActive { z-index: 12; } .activeIndicator { position: absolute; left: calc(50% - (var(--rail-workspace-size) / 2) - var(--space-2)); top: 50%; width: 0.26rem; height: 0.55rem; border-radius: var(--radius-pill); background: hsl(0 0% 100% / 0.94); transform: translateY(-50%) scaleY(0.72); transform-origin: center; opacity: 0; z-index: 2; transition: opacity 140ms var(--easing-standard), height 180ms var(--easing-standard), transform 180ms var(--easing-standard); } .itemSlot:hover .activeIndicator { opacity: 1; height: 1.1rem; transform: translateY(-50%) scaleY(1); } .itemSlotActive .activeIndicator { opacity: 1; height: 2.1rem; transform: translateY(-50%) scaleY(1); } .hoverLabel { position: absolute; left: calc(100% + var(--space-3)); top: 50%; z-index: 8; display: inline-flex; align-items: center; min-height: 2rem; padding: 0 var(--space-3); border: 1px solid color-mix(in srgb, var(--color-border-strong) 52%, transparent); border-radius: var(--radius-md); background: var(--color-surface-muted); color: var(--color-text); white-space: nowrap; box-shadow: 0 12px 28px color-mix(in srgb, black 16%, transparent); @include text-label; pointer-events: none; opacity: 0; transform: translateY(-50%) translateX(calc(var(--space-2) * -1)); transition: opacity 140ms var(--easing-standard), transform 180ms cubic-bezier(0.22, 1, 0.36, 1); } .hoverLabel::before { content: ""; position: absolute; top: 50%; left: calc(var(--space-2) * -1); width: 0.7rem; height: 0.7rem; border-left: 1px solid color-mix(in srgb, var(--color-border-strong) 52%, transparent); border-bottom: 1px solid color-mix(in srgb, var(--color-border-strong) 52%, transparent); background: var(--color-surface-muted); transform: translateY(-50%) rotate(45deg); } .sectionDivider { width: calc(var(--rail-workspace-size) - var(--space-2)); height: 1px; border-radius: var(--radius-pill); background: color-mix(in srgb, var(--color-border-strong) 58%, transparent); } .itemSlot:hover .hoverLabel { opacity: 1; transform: translateY(-50%) translateX(0); } .workspaceButton { width: var(--rail-workspace-size); height: var(--rail-workspace-size); display: inline-flex; align-items: center; justify-content: center; @include interactive-frame(var(--color-surface-muted), var(--color-border), var(--color-text-muted), var(--radius-lg)); @include text-label; @include interactive-frame-hover(); transition: border-radius 180ms var(--easing-standard), background 180ms var(--easing-standard), color 180ms var(--easing-standard), transform 180ms var(--easing-standard); } .personalButton { background: var(--color-accent); border-color: transparent; color: var(--color-accent-contrast); font-weight: 700; letter-spacing: -0.02em; } .itemSlot:hover .workspaceButton, .itemSlot:focus-within .workspaceButton { border-radius: var(--radius-md); transform: translateY(-1px); } .workspaceButtonActive { background: var(--color-accent); border-color: transparent; color: var(--color-accent-contrast); border-radius: var(--radius-md); box-shadow: none; }