/* https://grabient.com/_gI1gI1gI1gGYgGYgGYgPngPngPngBRgAAf-u?style=linearSwatches&steps=34&angle=90 */
background: linear-gradient(90deg, #ebf8eb 0.000%, #ebf8eb 2.941%, #e0f6f3 calc(2.941% + 1px), #e0f6f3 5.882%, #d2f1f7 calc(5.882% + 1px), #d2f1f7 8.824%, #c1e8f8 calc(8.824% + 1px), #c1e8f8 11.765%, #afdbf5 calc(11.765% + 1px), #afdbf5 14.706%, #9ccdee calc(14.706% + 1px), #9ccdee 17.647%, #88bbe4 calc(17.647% + 1px), #88bbe4 20.588%, #74a9d7 calc(20.588% + 1px), #74a9d7 23.529%, #6295c8 calc(23.529% + 1px), #6295c8 26.471%, #5181b6 calc(26.471% + 1px), #5181b6 29.412%, #436ea3 calc(29.412% + 1px), #436ea3 32.353%, #375c8f calc(32.353% + 1px), #375c8f 35.294%, #2e4c7c calc(35.294% + 1px), #2e4c7c 38.235%, #293e69 calc(38.235% + 1px), #293e69 41.176%, #283457 calc(41.176% + 1px), #283457 44.118%, #2b2c48 calc(44.118% + 1px), #2b2c48 47.059%, #31293b calc(47.059% + 1px), #31293b 50.000%, #3a2831 calc(50.000% + 1px), #3a2831 52.941%, #472c2b calc(52.941% + 1px), #472c2b 55.882%, #563328 calc(55.882% + 1px), #563328 58.824%, #683e29 calc(58.824% + 1px), #683e29 61.765%, #7a4c2e calc(61.765% + 1px), #7a4c2e 64.706%, #8e5c36 calc(64.706% + 1px), #8e5c36 67.647%, #a26e42 calc(67.647% + 1px), #a26e42 70.588%, #b58150 calc(70.588% + 1px), #b58150 73.529%, #c79561 calc(73.529% + 1px), #c79561 76.471%, #d6a873 calc(76.471% + 1px), #d6a873 79.412%, #e4bb87 calc(79.412% + 1px), #e4bb87 82.353%, #eecc9a calc(82.353% + 1px), #eecc9a 85.294%, #f5dbae calc(85.294% + 1px), #f5dbae 88.235%, #f8e7c0 calc(88.235% + 1px), #f8e7c0 91.176%, #f7f0d1 calc(91.176% + 1px), #f7f0d1 94.118%, #f3f6df calc(94.118% + 1px), #f3f6df 97.059%, #ebf8ea 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/_gI1gI1gI1gGYgGYgGYgPngPngPngBRgAAf-u?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="#ebf8eb" 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="#e0f6f3" 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="#d2f1f7" 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="#c1e8f8" 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="#afdbf5" 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="#9ccdee" 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="#88bbe4" 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="#74a9d7" 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="#6295c8" 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="#5181b6" 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="#436ea3" 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="#375c8f" 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="#2e4c7c" 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="#293e69" 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="#283457" 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="#2b2c48" 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="#31293b" 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="#3a2831" 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="#472c2b" 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="#563328" 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="#683e29" 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="#7a4c2e" 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="#8e5c36" 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="#a26e42" 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="#b58150" 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="#c79561" 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="#d6a873" 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="#e4bb87" 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="#eecc9a" 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="#f5dbae" 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="#f8e7c0" 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="#f7f0d1" 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="#f3f6df" 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="#ebf8ea" fill-opacity="1.000" /></g>
</svg>
["#ebf8eb", "#e0f6f3", "#d2f1f7", "#c1e8f8", "#afdbf5", "#9ccdee", "#88bbe4", "#74a9d7", "#6295c8", "#5181b6", "#436ea3", "#375c8f", "#2e4c7c", "#293e69", "#283457", "#2b2c48", "#31293b", "#3a2831", "#472c2b", "#563328", "#683e29", "#7a4c2e", "#8e5c36", "#a26e42", "#b58150", "#c79561", "#d6a873", "#e4bb87", "#eecc9a", "#f5dbae", "#f8e7c0", "#f7f0d1", "#f3f6df", "#ebf8ea"]
// https://grabient.com/_gI1gI1gI1gGYgGYgGYgPngPngPngBRgAAf-u?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.565, 0.565, 0.565);
vec3 b = vec3(0.408, 0.408, 0.408);
vec3 c = vec3(0.999, 0.999, 0.999);
vec3 d = vec3(0.081, 0.000, -0.082);
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.565, 0.565, 0.565],
[0.408, 0.408, 0.408],
[0.999, 0.999, 0.999],
[0.081, 0.000, -0.082]
]