.MainLayout { display: grid; grid-template-areas: "aside header" "aside tabs" "aside main" "aside footer"; grid-template-rows: [header] var(--main-layout-header) [tabs] min-content [main] 1fr [footer] auto; grid-template-columns: [sidebar] minmax(var(--main-layout-header), min-content) [main] 1fr; height: 100%; > header { grid-area: header; background: $layoutBackground; padding: $padding $padding * 2; span + .lens-version { margin-left: $margin; } .lens-version { font-size: x-small; text-transform: uppercase; } } > aside { grid-area: aside; position: relative; background: $sidebarBackground; white-space: nowrap; transition: width 150ms cubic-bezier(0.4, 0, 0.2, 1); &.pinned { width: var(--sidebar-width); } &:not(.pinned) { position: absolute; width: var(--main-layout-header); height: 100%; overflow: hidden; &.accessible:hover { width: var(--sidebar-width); transition-delay: 750ms; box-shadow: 3px 3px 16px rgba(0, 0, 0, 0.35); z-index: $zIndex-sidebar-hover; } } } > main { display: contents; } footer { position: relative; grid-area: footer; min-width: 0; // restrict size when overflow content (e.g. tabs scrolling) } }