Procedural triangle fan
I don't know if you'd find it easier, but I often use split vector values for this and (greater/less than) math node:



As you can see, this way you can easily control position on the object. Creating a line from this is simply a matter of offsetting the value in both directions and adding the results:




You can easily make it more compact, but I'll leave it as simple as possible to experiment with.

EDIT: Well ok then, I'd use gradient texture indeed and then just apply different formulas for color interpolation or/and scale the texture coordinates.
If you think about Gradient texture (Linear), it's actually a simple interpolation between black and white (0 to 1). Using right mathematical formula should give you any interpolation you want.
So I'd approach this first by scaling the mapping vector from Object output (multiplying by value higher than 1 would squash the values inside, while using values between 0 and 1 would extend the interpolation beyond the object). So, if you think about that, you could say that with default values you have a soft line of the width of your object:


The 'greater than' node explains it enough, I hope:


So to control the interpolation - the first thing that comes to my mind would be use power math node:


Then simply scale the mapping vector:


Simply multiplying vector values inside that group:


If you'd like to shift the lines, you just add a value to each axis, just like I did multiplying there.
If you experiment with different math formulas and Gradient texture interpolations (Quadratic, Ease) i think you will find the best way to control the line smoothness this way:



EDIT2: To debug transition you can literally draw it like a function: use Displacement Input for your Material Output (in this example I used simple box scaled in Z to 0.01, with adaptive subdivision). This is how values for Quadratic interpolation look like originally:


...and powered by 2: