I this case a circle_size of 1.0 should make a circle with the screen height as it's radius (UV.y goes from 0 to 1 accross a rect which covers exactly the screen), which will definitely not always cover the whole screen.
The minimum circle size that will cover the screen from any position inside the screen is going to be the diagonal length of the screen, which would normally be sqrt(width * width + height * height) but in your case height is always 1 so sqrt(width * width + 1) would also work, and if you expect a maximum aspect ratio of say 4 width to 1 height you can just pre-calculate that value and always use it if you want. since being too big is fine. square roots can be a little expensive but just 1 here probably wont hurt much.
once you have the necessary minimum radius to cover the screen you just need to multiply circle_size by it in the step function, so that way an input value of 0 to 1 in circle_size will become 0 to min_r in the step function
COLOR.a = step(circle_size * min_r, dist);