.content-viewport is overflow-y: auto so flex:1 on dash-grid grew to content height. Fix: dashboard uses height:100% instead of min-height, and :has(>.dashboard) disables content-viewport scroll only on that route — all other pages keep their normal scroll.