let cp = ["#711641", "#C30943", "#EF7F32", "#78914F", "#3B0E18"];
w = min(windowWidth, windowHeight);
for (let i = 0; i < num; i++) {
translate(random(-w / 4, w + w / 4), random(-w / 4, w + w / 4));
let mr = random([w / 4, w / 2]);
let c = color(random([255, random(cp)]));
c.setAlpha(random(80, 255));
for (let r = mr; r >= 0; r -= rg) {
let lr = map(r, mr, 0, 0, rg / 2);
let mxpr = random(1, mr / 6);
for (let j = 0; j < int(num / 5); j++) {
let sq = sqrt(random(1));
let pr = random(1, mxpr);
if (int(random(4)) == 0) {
strokeWeight(random(1, mxpr / 20));
ellipse(((sq * mr) / 2) * cos(a), ((sq * mr) / 2) * sin(a), pr, pr);
rakkan(rw/2.5, w-rw/1.25, rw, 0);
function rakkan(posx, posy, r, csw) {
rect(0, 0, r / 1.4, r * 1.5, r / 5);
for (let i = 0; i < 10; i++) {
let z = random(lr / 20, lr / 2);
vertex(nr / 2 + random(-z, z), -nr / 2 + random(-z, z));
vertex(random(-z, z), -nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), random(-z, z));
vertex(random(-z, z), nr / 2 + random(-z, z));
vertex(nr / 2 + random(-z, z), nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), random(-z, z));
vertex(nr / 2 + random(-z, z), random(-z, z));
vertex(nr / 2 + random(-z, z), -nr / 2 + random(-z, z));
vertex(random(-z, z), -nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), random(-z, z));
vertex(random(-z, z), nr / 2 + random(-z, z));
vertex(nr / 2 + random(-z, z), nr / 2 + random(-z, z));
vertex(nr / 2 + random(-z, z), -nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), -nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), nr / 2 + random(-z, z));
vertex(nr / 2 + random(-z, z), -nr / 2 + random(-z, z));
vertex(nr / 2 + random(-z, z), nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), random(-z, z));
vertex(nr / 2 + random(-z, z), random(-z, z));
vertex(nr / 2 + random(-z, z), -nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), nr / 2 + random(-z, z));