/* https://grabient.com/_gJuf8pgAegHygNEgGigHvgBXgFAgH2gL_gLviZv40jgA?style=linearSwatches&steps=34&angle=90 */
background: linear-gradient(90deg, #45072f 0.000%, #45072f 2.941%, #460c38 calc(2.941% + 1px), #460c38 5.882%, #491141 calc(5.882% + 1px), #491141 8.824%, #4e1549 calc(8.824% + 1px), #4e1549 11.765%, #551a51 calc(11.765% + 1px), #551a51 14.706%, #5e1f5a calc(14.706% + 1px), #5e1f5a 17.647%, #682361 calc(17.647% + 1px), #682361 20.588%, #732869 calc(20.588% + 1px), #732869 23.529%, #802c70 calc(23.529% + 1px), #802c70 26.471%, #8e3177 calc(26.471% + 1px), #8e3177 29.412%, #9d357d calc(29.412% + 1px), #9d357d 32.353%, #ad3a83 calc(32.353% + 1px), #ad3a83 35.294%, #bc3e88 calc(35.294% + 1px), #bc3e88 38.235%, #cc438c calc(38.235% + 1px), #cc438c 41.176%, #dc4791 calc(41.176% + 1px), #dc4791 44.118%, #ec4b94 calc(44.118% + 1px), #ec4b94 47.059%, #fb4f97 calc(47.059% + 1px), #fb4f97 50.000%, #ff5499 calc(50.000% + 1px), #ff5499 52.941%, #ff589a calc(52.941% + 1px), #ff589a 55.882%, #ff5c9b calc(55.882% + 1px), #ff5c9b 58.824%, #ff609b calc(58.824% + 1px), #ff609b 61.765%, #ff649a calc(61.765% + 1px), #ff649a 64.706%, #ff6899 calc(64.706% + 1px), #ff6899 67.647%, #ff6c97 calc(67.647% + 1px), #ff6c97 70.588%, #ff7094 calc(70.588% + 1px), #ff7094 73.529%, #ff7491 calc(73.529% + 1px), #ff7491 76.471%, #ff778d calc(76.471% + 1px), #ff778d 79.412%, #ff7b88 calc(79.412% + 1px), #ff7b88 82.353%, #ff7e83 calc(82.353% + 1px), #ff7e83 85.294%, #ff827d calc(85.294% + 1px), #ff827d 88.235%, #ff8577 calc(88.235% + 1px), #ff8577 91.176%, #ff8970 calc(91.176% + 1px), #ff8970 94.118%, #ff8c69 calc(94.118% + 1px), #ff8c69 97.059%, #ff8f62 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/_gJuf8pgAegHygNEgGigHvgBXgFAgH2gL_gLviZv40jgA?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="#45072f" 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="#460c38" 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="#491141" 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="#4e1549" 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="#551a51" 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="#5e1f5a" 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="#682361" 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="#732869" 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="#802c70" 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="#8e3177" 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="#9d357d" 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="#ad3a83" 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="#bc3e88" 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="#cc438c" 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="#dc4791" 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="#ec4b94" 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="#fb4f97" 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="#ff5499" 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="#ff589a" 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="#ff5c9b" 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="#ff609b" 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="#ff649a" 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="#ff6899" 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="#ff6c97" 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="#ff7094" 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="#ff7491" 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="#ff778d" 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="#ff7b88" 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="#ff7e83" 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="#ff827d" 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="#ff8577" 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="#ff8970" 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="#ff8c69" 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="#ff8f62" fill-opacity="1.000" /></g>
</svg>
["#45072f", "#460c38", "#491141", "#4e1549", "#551a51", "#5e1f5a", "#682361", "#732869", "#802c70", "#8e3177", "#9d357d", "#ad3a83", "#bc3e88", "#cc438c", "#dc4791", "#ec4b94", "#fb4f97", "#ff5499", "#ff589a", "#ff5c9b", "#ff609b", "#ff649a", "#ff6899", "#ff6c97", "#ff7094", "#ff7491", "#ff778d", "#ff7b88", "#ff7e83", "#ff827d", "#ff8577", "#ff8970", "#ff8c69", "#ff8f62"]
// https://grabient.com/_gJuf8pgAegHygNEgGigHvgBXgFAgH2gL_gLviZv40jgA?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.775, -0.062, 0.183);
vec3 b = vec3(0.506, 0.849, 0.425);
vec3 c = vec3(0.651, 0.114, 0.421);
vec3 d = vec3(0.502, 0.767, 0.751);
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.775, -0.062, 0.183],
[0.506, 0.849, 0.425],
[0.651, 0.114, 0.421],
[0.502, 0.767, 0.751]
]