/* https://grabient.com/_gKagHMgKhgFcgGjgIvgPmgWIgWAf-2f8if8a?style=linearSwatches&steps=34&angle=90 */
background: linear-gradient(90deg, #f988bd 0.000%, #f988bd 2.941%, #ffa3e2 calc(2.941% + 1px), #ffa3e2 5.882%, #ffbbff calc(5.882% + 1px), #ffbbff 8.824%, #ffceff calc(8.824% + 1px), #ffceff 11.765%, #ffdbff calc(11.765% + 1px), #ffdbff 14.706%, #f8e0ff calc(14.706% + 1px), #f8e0ff 17.647%, #efdeff calc(17.647% + 1px), #efdeff 20.588%, #e3d3ff calc(20.588% + 1px), #e3d3ff 23.529%, #d6c3ff calc(23.529% + 1px), #d6c3ff 26.471%, #c6acfc calc(26.471% + 1px), #c6acfc 29.412%, #b692da calc(29.412% + 1px), #b692da 32.353%, #a575b5 calc(32.353% + 1px), #a575b5 35.294%, #94598f calc(35.294% + 1px), #94598f 38.235%, #843e6b calc(38.235% + 1px), #843e6b 41.176%, #76284c calc(41.176% + 1px), #76284c 44.118%, #691733 calc(44.118% + 1px), #691733 47.059%, #5f0d23 calc(47.059% + 1px), #5f0d23 50.000%, #570b1d calc(50.000% + 1px), #570b1d 52.941%, #531021 calc(52.941% + 1px), #531021 55.882%, #511c2f calc(55.882% + 1px), #511c2f 58.824%, #532f46 calc(58.824% + 1px), #532f46 61.765%, #584764 calc(61.765% + 1px), #584764 64.706%, #5f6387 calc(64.706% + 1px), #5f6387 67.647%, #6a7fad calc(67.647% + 1px), #6a7fad 70.588%, #769bd3 calc(70.588% + 1px), #769bd3 73.529%, #85b4f5 calc(73.529% + 1px), #85b4f5 76.471%, #95c9ff calc(76.471% + 1px), #95c9ff 79.412%, #a6d8ff calc(79.412% + 1px), #a6d8ff 82.353%, #b6dfff calc(82.353% + 1px), #b6dfff 85.294%, #c7dfff calc(85.294% + 1px), #c7dfff 88.235%, #d6d7ff calc(88.235% + 1px), #d6d7ff 91.176%, #e4c8ff calc(91.176% + 1px), #e4c8ff 94.118%, #f0b4ff calc(94.118% + 1px), #f0b4ff 97.059%, #f99aea calc(97.059% + 1px) 100.000%);
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="400" viewBox="0 0 800 400" preserveAspectRatio="none">
<!-- https://grabient.com/_gKagHMgKhgFcgGjgIvgPmgWIgWAf-2f8if8a?style=linearSwatches&steps=34&angle=90 -->
<defs>
<clipPath id="bounds">
<rect x="0" y="0" width="800" height="400" />
</clipPath>
</defs>
<g clip-path="url(#bounds)"><path d="M 0.000,647.214 L 0.000,-247.214 L 23.529,-247.214 L 23.529,647.214 Z" fill="#f988bd" fill-opacity="1.000" /><path d="M 23.529,647.214 L 23.529,-247.214 L 47.059,-247.214 L 47.059,647.214 Z" fill="#ffa3e2" fill-opacity="1.000" /><path d="M 47.059,647.214 L 47.059,-247.214 L 70.588,-247.214 L 70.588,647.214 Z" fill="#ffbbff" fill-opacity="1.000" /><path d="M 70.588,647.214 L 70.588,-247.214 L 94.118,-247.214 L 94.118,647.214 Z" fill="#ffceff" fill-opacity="1.000" /><path d="M 94.118,647.214 L 94.118,-247.214 L 117.647,-247.214 L 117.647,647.214 Z" fill="#ffdbff" fill-opacity="1.000" /><path d="M 117.647,647.214 L 117.647,-247.214 L 141.176,-247.214 L 141.176,647.214 Z" fill="#f8e0ff" fill-opacity="1.000" /><path d="M 141.176,647.214 L 141.176,-247.214 L 164.706,-247.214 L 164.706,647.214 Z" fill="#efdeff" fill-opacity="1.000" /><path d="M 164.706,647.214 L 164.706,-247.214 L 188.235,-247.214 L 188.235,647.214 Z" fill="#e3d3ff" fill-opacity="1.000" /><path d="M 188.235,647.214 L 188.235,-247.214 L 211.765,-247.214 L 211.765,647.214 Z" fill="#d6c3ff" fill-opacity="1.000" /><path d="M 211.765,647.214 L 211.765,-247.214 L 235.294,-247.214 L 235.294,647.214 Z" fill="#c6acfc" fill-opacity="1.000" /><path d="M 235.294,647.214 L 235.294,-247.214 L 258.824,-247.214 L 258.824,647.214 Z" fill="#b692da" fill-opacity="1.000" /><path d="M 258.824,647.214 L 258.824,-247.214 L 282.353,-247.214 L 282.353,647.214 Z" fill="#a575b5" fill-opacity="1.000" /><path d="M 282.353,647.214 L 282.353,-247.214 L 305.882,-247.214 L 305.882,647.214 Z" fill="#94598f" fill-opacity="1.000" /><path d="M 305.882,647.214 L 305.882,-247.214 L 329.412,-247.214 L 329.412,647.214 Z" fill="#843e6b" fill-opacity="1.000" /><path d="M 329.412,647.214 L 329.412,-247.214 L 352.941,-247.214 L 352.941,647.214 Z" fill="#76284c" fill-opacity="1.000" /><path d="M 352.941,647.214 L 352.941,-247.214 L 376.471,-247.214 L 376.471,647.214 Z" fill="#691733" fill-opacity="1.000" /><path d="M 376.471,647.214 L 376.471,-247.214 L 400.000,-247.214 L 400.000,647.214 Z" fill="#5f0d23" fill-opacity="1.000" /><path d="M 400.000,647.214 L 400.000,-247.214 L 423.529,-247.214 L 423.529,647.214 Z" fill="#570b1d" fill-opacity="1.000" /><path d="M 423.529,647.214 L 423.529,-247.214 L 447.059,-247.214 L 447.059,647.214 Z" fill="#531021" fill-opacity="1.000" /><path d="M 447.059,647.214 L 447.059,-247.214 L 470.588,-247.214 L 470.588,647.214 Z" fill="#511c2f" fill-opacity="1.000" /><path d="M 470.588,647.214 L 470.588,-247.214 L 494.118,-247.214 L 494.118,647.214 Z" fill="#532f46" fill-opacity="1.000" /><path d="M 494.118,647.214 L 494.118,-247.214 L 517.647,-247.214 L 517.647,647.214 Z" fill="#584764" fill-opacity="1.000" /><path d="M 517.647,647.214 L 517.647,-247.214 L 541.176,-247.214 L 541.176,647.214 Z" fill="#5f6387" fill-opacity="1.000" /><path d="M 541.176,647.214 L 541.176,-247.214 L 564.706,-247.214 L 564.706,647.214 Z" fill="#6a7fad" fill-opacity="1.000" /><path d="M 564.706,647.214 L 564.706,-247.214 L 588.235,-247.214 L 588.235,647.214 Z" fill="#769bd3" fill-opacity="1.000" /><path d="M 588.235,647.214 L 588.235,-247.214 L 611.765,-247.214 L 611.765,647.214 Z" fill="#85b4f5" fill-opacity="1.000" /><path d="M 611.765,647.214 L 611.765,-247.214 L 635.294,-247.214 L 635.294,647.214 Z" fill="#95c9ff" fill-opacity="1.000" /><path d="M 635.294,647.214 L 635.294,-247.214 L 658.824,-247.214 L 658.824,647.214 Z" fill="#a6d8ff" fill-opacity="1.000" /><path d="M 658.824,647.214 L 658.824,-247.214 L 682.353,-247.214 L 682.353,647.214 Z" fill="#b6dfff" fill-opacity="1.000" /><path d="M 682.353,647.214 L 682.353,-247.214 L 705.882,-247.214 L 705.882,647.214 Z" fill="#c7dfff" fill-opacity="1.000" /><path d="M 705.882,647.214 L 705.882,-247.214 L 729.412,-247.214 L 729.412,647.214 Z" fill="#d6d7ff" fill-opacity="1.000" /><path d="M 729.412,647.214 L 729.412,-247.214 L 752.941,-247.214 L 752.941,647.214 Z" fill="#e4c8ff" fill-opacity="1.000" /><path d="M 752.941,647.214 L 752.941,-247.214 L 776.471,-247.214 L 776.471,647.214 Z" fill="#f0b4ff" fill-opacity="1.000" /><path d="M 776.471,647.214 L 776.471,-247.214 L 800.000,-247.214 L 800.000,647.214 Z" fill="#f99aea" fill-opacity="1.000" /></g>
</svg>
["#f988bd", "#ffa3e2", "#ffbbff", "#ffceff", "#ffdbff", "#f8e0ff", "#efdeff", "#e3d3ff", "#d6c3ff", "#c6acfc", "#b692da", "#a575b5", "#94598f", "#843e6b", "#76284c", "#691733", "#5f0d23", "#570b1d", "#531021", "#511c2f", "#532f46", "#584764", "#5f6387", "#6a7fad", "#769bd3", "#85b4f5", "#95c9ff", "#a6d8ff", "#b6dfff", "#c7dfff", "#d6d7ff", "#e4c8ff", "#f0b4ff", "#f99aea"]
// https://grabient.com/_gKagHMgKhgFcgGjgIvgPmgWIgWAf-2f8if8a?style=linearSwatches&steps=34&angle=90
// cosine gradient palette — https://iquilezles.org/articles/palettes/
const float STEPS = 34.0;
const float ANGLE = 90.0;
vec3 palette(float t) {
vec3 a = vec3(0.666, 0.460, 0.673);
vec3 b = vec3(0.348, 0.419, 0.559);
vec3 c = vec3(0.998, 1.416, 1.408);
vec3 d = vec3(-0.074, -0.222, -0.230);
return a + b * cos(6.283185 * (c * t + d));
}
// N hard swatches sampled from the palette
vec3 stops(float t) {
float i = min(floor(clamp(t, 0.0, 1.0) * STEPS), STEPS - 1.0);
return palette(i / (STEPS - 1.0));
}
void mainImage(out vec4 fragColor, in vec2 fragCoord) {
vec2 p = fragCoord - 0.5 * iResolution.xy;
// CSS angle: 0 = up, clockwise; span = CSS gradient-line length
vec2 dir = vec2(sin(radians(ANGLE)), cos(radians(ANGLE)));
float len = abs(iResolution.x * dir.x) + abs(iResolution.y * dir.y);
float t = dot(p, dir) / len + 0.5;
fragColor = vec4(stops(t), 1.0);
}
[
[0.666, 0.460, 0.673],
[0.348, 0.419, 0.559],
[0.998, 1.416, 1.408],
[-0.074, -0.222, -0.230]
]