.dw-sidebar { width: var(--sidebar-width); flex-shrink: 0; height: 100vh; position: sticky; top: 0; display: flex; flex-direction: column; border-right: 1px solid var(--color-border); background: var(--color-surface); padding: var(--space-5) var(--space-3); transition: width 0.2s ease; overflow: hidden; z-index: 2; } .dw-sidebar--collapsed { width: 60px; padding: var(--space-5) var(--space-2); } .dw-sidebar__brand { display: flex; align-items: center; gap: var(--space-2); padding: 0 var(--space-2); min-height: 36px; cursor: pointer; border-radius: var(--radius-md); text-decoration: none; color: inherit; transition: background var(--transition-fast); flex: 1; } .dw-sidebar__brand:hover { background: var(--color-surface-hover); } .dw-sidebar__top { display: flex; align-items: center; gap: var(--space-2); margin-bottom: var(--space-6); } .dw-sidebar--collapsed .dw-sidebar__top { flex-direction: column; gap: var(--space-2); } .dw-sidebar--collapsed .dw-sidebar__brand { justify-content: center; padding: 0; } .dw-sidebar__logo { width: 42px; height: 42px; object-fit: contain; flex-shrink: 0; border-radius: var(--radius-md); } .dw-sidebar--collapsed .dw-sidebar__logo { width: 36px; height: 36px; } .dw-sidebar__wordmark { font-size: var(--text-lg); font-weight: 700; letter-spacing: -0.02em; white-space: nowrap; } .dw-sidebar__nav { display: flex; flex-direction: column; gap: 2px; flex: 1; } .dw-sidebar__footer { border-top: 1px solid var(--color-border); padding-top: var(--space-3); display: flex; flex-direction: column; gap: var(--space-2); } .dw-sidebar__user { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-3); } .dw-sidebar__user-avatar { width: 28px; height: 28px; border-radius: var(--radius-full); background: var(--color-accent-soft); color: var(--color-accent-text); display: flex; align-items: center; justify-content: center; font-size: var(--text-xs); font-weight: 700; flex-shrink: 0; } .dw-sidebar__user-name { font-size: var(--text-sm); color: var(--color-text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .dw-sidebar__logout-btn { display: flex; align-items: center; justify-content: center; padding: var(--space-1) var(--space-3); height: 30px; border: none; background: transparent; color: var(--color-text-muted); font-size: var(--text-xs); cursor: pointer; border-radius: var(--radius-md); transition: background var(--transition-fast), color var(--transition-fast); } .dw-sidebar__logout-btn:hover { background: var(--color-danger-soft); color: var(--color-danger); } .dw-sidebar__link { display: flex; align-items: center; gap: var(--space-3); height: 36px; padding: 0 var(--space-3); border-radius: var(--radius-md); font-size: var(--text-sm); font-weight: 500; color: var(--color-text-secondary); transition: background var(--transition-fast), color var(--transition-fast); position: relative; white-space: nowrap; text-decoration: none; } .dw-sidebar--collapsed .dw-sidebar__link { justify-content: center; padding: 0; } .dw-sidebar__link:hover { background: var(--color-surface-hover); color: var(--color-text-primary); } .dw-sidebar__link--active { background: var(--color-accent-soft); color: var(--color-accent-text); } .dw-sidebar__link--active::before { content: ""; position: absolute; left: -12px; top: 50%; transform: translateY(-50%); width: 3px; height: 14px; border-radius: var(--radius-full); background: var(--color-accent); } .dw-sidebar--collapsed .dw-sidebar__link--active::before { left: -8px; } .dw-sidebar__link-icon { flex-shrink: 0; width: 20px; text-align: center; font-size: var(--text-sm); } .dw-sidebar__link-label { overflow: hidden; text-overflow: ellipsis; } .dw-sidebar__collapse-btn { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border: none; background: transparent; color: var(--color-text-muted); font-size: var(--text-sm); cursor: pointer; border-radius: var(--radius-md); flex-shrink: 0; transition: background var(--transition-fast), color var(--transition-fast); } .dw-sidebar__collapse-btn:hover { background: var(--color-surface-hover); color: var(--color-text-primary); } /* Badge counts */ .dw-sidebar__badge { margin-left: auto; font-size: 10px; font-weight: 600; min-width: 18px; height: 18px; display: flex; align-items: center; justify-content: center; border-radius: var(--radius-full); background: var(--color-surface-hover); color: var(--color-text-muted); padding: 0 5px; } .dw-sidebar__badge--warning { background: var(--color-warning-soft); color: var(--color-warning); } /* Mobile: bottom navigation bar */ @media (max-width: 768px) { .dw-sidebar { width: 100%; height: auto; position: fixed; bottom: 0; top: auto; left: 0; right: 0; flex-direction: row; border-right: none; border-top: 1px solid var(--color-border); padding: var(--space-2) var(--space-3); z-index: 100; overflow-x: auto; } .dw-sidebar__top { display: none; } .dw-sidebar__nav { flex-direction: row; gap: 0; flex: 1; justify-content: space-around; } .dw-sidebar__footer { display: none; } .dw-sidebar__link { flex-direction: column; gap: 2px; height: auto; padding: var(--space-1) var(--space-2); font-size: 10px; min-width: 48px; align-items: center; justify-content: center; } .dw-sidebar__link-icon { font-size: var(--text-base); } .dw-sidebar__link-label { font-size: 10px; white-space: nowrap; } .dw-sidebar__link--active::before { display: none; } .dw-sidebar__badge { position: absolute; top: -2px; right: -2px; margin-left: 0; min-width: 14px; height: 14px; font-size: 9px; } .dw-sidebar__collapse-btn { display: none; } }