palette = ["#BF4B60", "#D9D9D9", "#D99255", "#260101", "#BF9595"];
background(random(palette));
drawFrame(0, 0, width, height, offset/2);
separateGrid(offset, offset, width - offset * 2);
let w = width - offset * 2;
let h = height - offset * 2;
function separateGrid(x, y, d) {
let sepNum = int(random(2, 5));
let w = ceil(d / sepNum);
for (let i = x; i < x + d; i += w) {
for (let j = y; j < y + d; j += w) {
if ((random(100) < 90 && w > width / 2) || w > width / 5) {
translate(i + w / 2, j + w / 2);
translate(-w / 2, -w / 2);
let inside_offset = w / random([2, 4, 8]);
drawFrame(0, 0, w, w, inside_offset);
function drawFrame(x, y, w, h, o) {
let bool = random() > 0.5;
drawSideRect(x, y, o, o, bool);
drawSideRect(x + w - o, y, o, o, bool);
drawSideRect(x, y + h - o, o, o, bool);
drawSideRect(x + w, y + h, -o, -o, !bool);
drawSideRect(x + o, y, w - o * 2, o);
drawSideRect(x + o, y + h, w - o * 2, -o);
drawSideRect(x, y + o, o, h - o * 2);
drawSideRect(x + w - o, y + o, o, h - o * 2);
rect(x + o, y + o, w - o * 2, h - o * 2);
if (min(w, h) > o * 2 * 2) {
drawFrame(x + o, y + o, w - o * 2, h - o * 2, o);
drawSideRect(x + o, y + o, w - o * 2, h - o * 2, false);
function drawSideRect(x, y, w, h, isHorizontal = random() > 0.5) {
let colors = shuffle(palette.concat());
drawingContext.shadowColor = color(0, 0, 0, 33);
drawingContext.shadowBlur = min(w, h) / 3;
let sep = int(random([3]));
let step = sep + (sep - 1) + 2;
for (let i = 0; i < step; i++) {
fill(colors[i % colors.length]);
rect(o, o * i, abs(w) - o * 2, o);
fill(colors[i % colors.length]);
rect(o, o * i, abs(w) - o * 2, o);
} else if (abs(w) > abs(h)) {
for (let i = 0; i < step; i++) {
fill(colors[i % colors.length]);
rect(o, o * i, abs(w) - o * 2, o);
for (let i = 0; i < step; i++) {
fill(colors[i % colors.length]);
rect(o * i, o, o, abs(h) - o * 2);
function createPalette(_url) {
let slash_index = _url.lastIndexOf("/");
let pallate_str = _url.slice(slash_index + 1);
let arr = pallate_str.split("-");
for (let i = 0; i < arr.length; i++) {
arr[i] = color("#" + arr[i]);