/* https://grabient.com/_gAAgAAf-ufwsfxBf3EgNmgl5hCjgD0gbufz4gAvopVgA?style=linearSwatches&steps=34&angle=90 */
background: linear-gradient(90deg, #000000 0.000%, #000000 2.941%, #0f0019 calc(2.941% + 1px), #0f0019 5.882%, #280054 calc(5.882% + 1px), #280054 8.824%, #400077 calc(8.824% + 1px), #400077 11.765%, #58007a calc(11.765% + 1px), #58007a 14.706%, #6e005c calc(14.706% + 1px), #6e005c 17.647%, #840024 calc(17.647% + 1px), #840024 20.588%, #980000 calc(20.588% + 1px), #980000 23.529%, #ab0000 calc(23.529% + 1px), #ab0000 26.471%, #bc0000 calc(26.471% + 1px), #bc0000 29.412%, #cb0000 calc(29.412% + 1px), #cb0000 32.353%, #d90a00 calc(32.353% + 1px), #d90a00 35.294%, #e44c00 calc(35.294% + 1px), #e44c00 38.235%, #ed8900 calc(38.235% + 1px), #ed8900 41.176%, #f4bb1b calc(41.176% + 1px), #f4bb1b 44.118%, #f8df55 calc(44.118% + 1px), #f8df55 47.059%, #faf278 calc(47.059% + 1px), #faf278 50.000%, #f9f37a calc(50.000% + 1px), #f9f37a 52.941%, #f6e15b calc(52.941% + 1px), #f6e15b 55.882%, #f1bf23 calc(55.882% + 1px), #f1bf23 58.824%, #e98e00 calc(58.824% + 1px), #e98e00 61.765%, #df5200 calc(61.765% + 1px), #df5200 64.706%, #d31100 calc(64.706% + 1px), #d31100 67.647%, #c40000 calc(67.647% + 1px), #c40000 70.588%, #b40000 calc(70.588% + 1px), #b40000 73.529%, #a20000 calc(73.529% + 1px), #a20000 76.471%, #8f0000 calc(76.471% + 1px), #8f0000 79.412%, #7a001c calc(79.412% + 1px), #7a001c 82.353%, #640056 calc(82.353% + 1px), #640056 85.294%, #4d0078 calc(85.294% + 1px), #4d0078 88.235%, #350079 calc(88.235% + 1px), #350079 91.176%, #1c005a calc(91.176% + 1px), #1c005a 94.118%, #040021 calc(94.118% + 1px), #040021 97.059%, #000000 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/_gAAgAAf-ufwsfxBf3EgNmgl5hCjgD0gbufz4gAvopVgA?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="#000000" 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="#0f0019" 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="#280054" 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="#400077" 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="#58007a" 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="#6e005c" 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="#840024" 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="#980000" 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="#ab0000" 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="#bc0000" 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="#cb0000" 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="#d90a00" 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="#e44c00" 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="#ed8900" 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="#f4bb1b" 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="#f8df55" 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="#faf278" 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="#f9f37a" 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="#f6e15b" 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="#f1bf23" 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="#e98e00" 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="#df5200" 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="#d31100" 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="#c40000" 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="#b40000" 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="#a20000" 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="#8f0000" 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="#7a001c" 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="#640056" 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="#4d0078" 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="#350079" 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="#1c005a" 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="#040021" 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="#000000" fill-opacity="1.000" /></g>
</svg>
["#000000", "#0f0019", "#280054", "#400077", "#58007a", "#6e005c", "#840024", "#980000", "#ab0000", "#bc0000", "#cb0000", "#d90a00", "#e44c00", "#ed8900", "#f4bb1b", "#f8df55", "#faf278", "#f9f37a", "#f6e15b", "#f1bf23", "#e98e00", "#df5200", "#d31100", "#c40000", "#b40000", "#a20000", "#8f0000", "#7a001c", "#640056", "#4d0078", "#350079", "#1c005a", "#040021", "#000000"]
// https://grabient.com/_gAAgAAf-ufwsfxBf3EgNmgl5hCjgD0gbufz4gAvopVgA?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.000, 0.000, -0.082);
vec3 b = vec3(-0.980, -0.959, -0.572);
vec3 c = vec3(0.519, 1.448, 2.543);
vec3 d = vec3(0.244, 1.774, -0.776);
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.000, 0.000, -0.082],
[-0.980, -0.959, -0.572],
[0.519, 1.448, 2.543],
[0.244, 1.774, -0.776]
]