// ============================================================================ // Nav Rail — Desktop/Kiosk Navigation // Per spec Section 3.1: 72px collapsed / 256px expanded // Section 5.4: Spacing & Grid // ============================================================================ .nav-rail { display: flex; flex-direction: column; width: var(--cc-nav-rail-collapsed-width); min-height: 100vh; background-color: var(--cc-surface-container-high); border-right: 1px solid var(--cc-outline); transition: width 200ms cubic-bezier(0.4, 0, 0.2, 1); overflow: hidden; z-index: 10; &--expanded { width: var(--cc-nav-rail-expanded-width); } } .nav-rail__header { display: flex; align-items: center; gap: 12px; padding: 16px 12px; min-height: 64px; border-bottom: 1px solid var(--cc-outline); } .nav-rail__toggle { display: flex; align-items: center; justify-content: center; width: 48px; height: 48px; min-width: 48px; border: none; border-radius: 50%; background: transparent; color: var(--cc-on-surface); cursor: pointer; transition: background-color 150ms ease; &:hover { background-color: rgba(255, 255, 255, 0.08); } &:focus-visible { outline: 3px solid var(--status-active); outline-offset: 2px; } } .nav-rail__brand { font-size: 18px; font-weight: 600; color: var(--status-active); white-space: nowrap; letter-spacing: 0.02em; } .nav-rail__nav { flex: 1; padding-top: 8px; // Override Angular Material list item styles for compact nav rail items --mat-list-list-item-one-line-vertical-gap: 4px; } .nav-rail__item { display: flex; align-items: center; gap: 16px; min-height: 56px; padding: 0 12px; border-radius: 28px; margin: 2px 12px; color: var(--cc-on-surface-variant); text-decoration: none; transition: background-color 150ms ease, color 150ms ease; &:hover { background-color: rgba(255, 255, 255, 0.08); color: var(--cc-on-surface); } &--active { background-color: var(--status-active-bg); color: var(--status-active); .nav-rail__label { font-weight: 500; } } } .nav-rail__label { font-size: 14px; font-weight: 400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } // Responsive: Hide nav rail on mobile (bottom nav takes over) @media (max-width: 599px) { .nav-rail { display: none; } }