.sidebar {
  box-sizing: border-box;
  height: 100vh;
  height: 100dvh;
  overflow-y: auto;
  overscroll-behavior-y: contain;
}

.sidebar-header, .sidebar-footer { flex-shrink: 0; }
.sidebar-nav { min-height: 0; overflow-y: auto; overscroll-behavior-y: contain; }
.sidebar-footer { padding-bottom: calc(20px + env(safe-area-inset-bottom, 0px)); }

@media (max-width: 768px) {
  .sidebar {
    top: var(--sidebar-visible-top, 0px);
    height: var(--sidebar-visible-height, 100dvh);
  }
  .sidebar.active.collapsed { width: var(--sidebar-width); }
  .sidebar.active.collapsed .sidebar-footer { display: block; }
  .sidebar.active .logout-btn { min-height: 44px; }
}