Puzzle #101: Gravel

The Kudamono implementation of Gravel also supports non-rectangular grids and holes, so I made a couple more puzzles to explore the possibilities of that.

Rules: Shade some cells and divide the remaining cells into squares. Each unshaded square must touch at least one other square or the edge of the grid on each of its lower sides. Squares of the same side-length cannot touch. Cells with black or white circle clues must be shaded or unshaded, respectively. Number clues inside shaded regions indicate the total area of the region. Number clues inside unshaded squares indicate the side-length of the square.