diff --git a/apps/dashboard/src/styles.css b/apps/dashboard/src/styles.css index 256162b..601e7ac 100644 --- a/apps/dashboard/src/styles.css +++ b/apps/dashboard/src/styles.css @@ -37,7 +37,7 @@ a { color: inherit; } .skip-link { position: fixed; left: 1rem; top: -5rem; z-index: 100; background: white; color: black; padding: .75rem 1rem; border-radius: .5rem; } .skip-link:focus { top: 1rem; } .app-shell { min-height: 100vh; } -.sidebar { position: fixed; inset: 0 auto 0 0; z-index: 30; width: 17.5rem; padding: 1.5rem 1rem; visibility: hidden; background: #0c1511; border-right: 1px solid var(--border); transform: translateX(-100%); transition: transform 180ms ease, visibility 180ms; } +.sidebar { position: fixed; inset: 0 auto 0 0; z-index: 30; width: 17.5rem; padding: 1.5rem 1rem; overflow-x: hidden; overflow-y: auto; overscroll-behavior-y: contain; scrollbar-gutter: stable; visibility: hidden; background: #0c1511; border-right: 1px solid var(--border); transform: translateX(-100%); transition: transform 180ms ease, visibility 180ms; } .sidebar.is-open { visibility: visible; transform: translateX(0); } .brand { display: flex; align-items: center; gap: .75rem; padding: 0 .5rem 1.75rem; } .brand-mark { display: grid; place-items: center; width: 2.4rem; height: 2.4rem; border-radius: .75rem; color: #07130c; background: var(--accent); font-weight: 900; } diff --git a/docs/frontend.md b/docs/frontend.md index 043b081..cb6d87a 100644 --- a/docs/frontend.md +++ b/docs/frontend.md @@ -87,6 +87,7 @@ Keep feature components focused: ## Accessibility and presentation - All actions must be keyboard accessible and have visible focus. +- The fixed primary sidebar is its own vertical scroll region so every route and the platform controls remain reachable on short or low-resolution screens. - Dialogs label purpose, trap/restore focus, and distinguish cancel from destructive confirmation. - Status must not rely on color alone. - Relative times include an exact timestamp where operationally useful.