levity

# fade scroll layout Sticky header, footer, and scrolling content. 1. `.full-flex-wrapper` suctions to the page dimensions with `position: absolute` 2. `.fade-overflow-container` grows to fit the page and overflows. Critical: `flex: 1`, `min-height: 0`, and `overflow: auto` 3. `.content-wrapper` applies max-width and centers (we do this inside the overflow container to separate the content from the scrollbar) 4. `.box` renders a box with background and left/right padding (no vertical padding because we assume content has vertical margins) Notes: - The fade overflow container applies "gutters" with negative margin and positive padding for the fade effect. these create overflows in the parent container if the gutter is larger than the fade container's siblings. To fix this, we need to apply `overflow: hidden` on the parent container. - The fade container is best paired with an inner content wrapper that restricts width, so the scrollbar can be as close to the window edge as possible. - The fade container needs to be at a lower z-index than its neighbors, but can't be at < 0, so we set `z-index: 1` on literally everything just so we can set `z-index: 0` on the fade container Etiam erat metus, posuere eu ultrices eu, feugiat at tellus. Duis et semper nulla. Pellentesque pellentesque interdum ex nec fringilla. Donec fringilla finibus bibendum. Ut vel est libero. Nunc et cursus nisl, sed lacinia massa. Praesent sed sem a erat malesuada ullamcorper. Sed eget enim nec enim vulputate ultrices eu ut eros. Morbi at leo fringilla, posuere magna nec, tristique libero. Phasellus ligula nisi, dapibus non feugiat quis, vulputate a nisl. Suspendisse velit diam, viverra nec massa ac, tempus scelerisque ipsum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean ac eros id nisl iaculis ultrices. Fusce tristique tempor purus, a sodales purus semper et. Sed vel lectus ipsum. Nulla et commodo mauris. Maecenas pellentesque massa ut est ultricies ultrices. Sed auctor vehicula tellus, quis tristique massa tempus suscipit. Pellentesque pellentesque velit ac cursus condimentum. Mauris commodo fermentum iaculis. Cras a feugiat metus. Curabitur molestie nisi a bibendum finibus. Ut purus ipsum, gravida at fringilla id, sagittis lacinia leo. Donec maximus, risus eu commodo imperdiet, eros erat bibendum lorem, ac vulputate nunc eros ac augue. Mauris eu auctor ante. Integer faucibus lorem erat, sed ultricies dui cursus at. Suspendisse potenti. Donec porta scelerisque orci. Nullam vel orci vestibulum, feugiat enim efficitur, commodo est. Praesent vestibulum maximus nisl sit amet elementum. Etiam pretium, orci ornare euismod semper, massa nisl dictum erat, id porta sapien tellus eget est. Etiam et hendrerit ante, ut molestie tortor. Suspendisse potenti. Nunc at convallis tellus. Donec ullamcorper elementum nisl in mattis. Suspendisse sem arcu, tristique non viverra eget, auctor nec arcu. Praesent gravida tortor est, in bibendum nisl efficitur at. Praesent tincidunt nisi quis quam ultricies ullamcorper. Nam lobortis magna vitae orci ullamcorper tincidunt at id ante. Donec id enim ac ligula sollicitudin pellentesque. Aliquam erat volutpat. Proin felis ex, congue ac tempus nec, iaculis a elit. Donec lobortis purus rhoncus, sagittis ex ut, vehicula odio. Etiam maximus augue sed dolor feugiat, sit amet mollis eros venenatis. In id lorem vitae tortor pretium dictum nec non lectus. Etiam erat metus, posuere eu ultrices eu, feugiat at tellus. Duis et semper nulla. Pellentesque pellentesque interdum ex nec fringilla. Donec fringilla finibus bibendum. Ut vel est libero. Nunc et cursus nisl, sed lacinia massa. Praesent sed sem a erat malesuada ullamcorper. Sed eget enim nec enim vulputate ultrices eu ut eros. Morbi at leo fringilla, posuere magna nec, tristique libero. Phasellus ligula nisi, dapibus non feugiat quis, vulputate a nisl. Suspendisse velit diam, viverra nec massa ac, tempus scelerisque ipsum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean ac eros id nisl iaculis ultrices. Fusce tristique tempor purus, a sodales purus semper et. Sed vel lectus ipsum. Nulla et commodo mauris. Maecenas pellentesque massa ut est ultricies ultrices. Sed auctor vehicula tellus, quis tristique massa tempus suscipit. Pellentesque pellentesque velit ac cursus condimentum. Mauris commodo fermentum iaculis. Cras a feugiat metus. Curabitur molestie nisi a bibendum finibus. Ut purus ipsum, gravida at fringilla id, sagittis lacinia leo. Donec maximus, risus eu commodo imperdiet, eros erat bibendum lorem, ac vulputate nunc eros ac augue. Mauris eu auctor ante. Integer faucibus lorem erat, sed ultricies dui cursus at. Suspendisse potenti. Donec porta scelerisque orci. Nullam vel orci vestibulum, feugiat enim efficitur, commodo est. Praesent vestibulum maximus nisl sit amet elementum. Etiam pretium, orci ornare euismod semper, massa nisl dictum erat, id porta sapien tellus eget est. Etiam et hendrerit ante, ut molestie tortor. Suspendisse potenti. Nunc at convallis tellus. Donec ullamcorper elementum nisl in mattis. Suspendisse sem arcu, tristique non viverra eget, auctor nec arcu. Praesent gravida tortor est, in bibendum nisl efficitur at. Praesent tincidunt nisi quis quam ultricies ullamcorper. Nam lobortis magna vitae orci ullamcorper tincidunt at id ante. Donec id enim ac ligula sollicitudin pellentesque. Aliquam erat volutpat. Proin felis ex, congue ac tempus nec, iaculis a elit. Donec lobortis purus rhoncus, sagittis ex ut, vehicula odio. Etiam maximus augue sed dolor feugiat, sit amet mollis eros venenatis. In id lorem vitae tortor pretium dictum nec non lectus.