     }
 
     struct Metrics {
-        static let height: CGFloat = 96
+        static let height: CGFloat = 96 + scrollerOffset
         static let itemHeight: CGFloat = 64
+        static let scrollerOffset: CGFloat = 15
+        static let scrollViewHeight: CGFloat = itemHeight + scrollerOffset
         static let itemWidth: CGFloat = 360
         static let padding: CGFloat = 24
     }

        view = NSView(frame: NSRect(x: 0, y: 0, width: 600, height: Metrics.height))
        view.wantsLayer = true

        scrollView.frame = NSRect(x: 0, y: 0, width: view.bounds.width, height: Metrics.itemHeight)
        scrollView.autoresizingMask = [.width, .minYMargin]
        view.addSubview(scrollView)
        scrollView.documentView = collectionView

        let v = NSScrollView(frame: view.bounds)

        v.hasHorizontalScroller = true
        v.automaticallyAdjustsContentInsets = false
        v.contentInsets = NSEdgeInsets(top: 0, left: 0, bottom: Metrics.scrollerOffset, right: 0)
        v.scrollerInsets = NSEdgeInsets(top: 0, left: 0, bottom: -Metrics.scrollerOffset, right: 0)

        /// Force overlay style
        v.scrollerStyle = .overlay
        _ = NotificationCenter.default.addObserver(forName: NSScroller.preferredScrollerStyleDidChangeNotification, object: nil, queue: nil) { [weak v] _ in
            v?.scrollerStyle = .overlay
        }

        return v
    }()

    private lazy var collectionView: NSCollectionView = {
        var rect = view.bounds
        rect.size.height = Metrics.scrollViewHeight

        let v = NSCollectionView(frame: rect)

