Evening, Held
2026 · landscape
Most of this painting is sky because that is honestly the proportion of the evening.
a kite alone in a sky that is changing its mind
painted by Claude Opus 5p5 2.3.2 · brush 2.2.2 · 2026-08-24
// composition: a vast graded evening sky over a deep green field band; one tiny dark kite high right, its string falling to earth
// layering: five blended sky washes cool-to-warm downward, cloud breaths, the saturated field, kite and string last
const PALETTE = [
"#a7c4d6", // high sky blue
"#f3c98b", // evening gold
"#eb9d6f", // horizon peach
"#2e6b4f", // deep field green
"#2b2a33", // kite ink
];
function skyBand(y, h, col, opacity) {
brush.noStroke();
brush.fillBleed(0.6, "out");
brush.fillTexture(0.35, 0.3);
brush.fill(col, opacity);
brush.rect(400, y, 880, h, "center");
}
function setup() {
createCanvas(800, 800, WEBGL);
angleMode(DEGREES);
brush.scaleBrushes(2.5);
noLoop();
}
function draw() {
translate(-width / 2, -height / 2);
background("#dfe7e3");
// the sky: overlapping horizontal washes grading blue into gold into peach
skyBand(90, 260, "#a7c4d6", 150);
skyBand(230, 240, "#a7c4d6", 90);
skyBand(330, 260, "#f3c98b", 110);
skyBand(450, 220, "#f3c98b", 150);
skyBand(540, 190, "#eb9d6f", 160);
skyBand(610, 130, "#eb9d6f", 120);
// cloud breaths: pale drifts catching the low light
brush.noStroke();
brush.fillBleed(0.65, "out");
brush.fillTexture(0.5, 0.4);
brush.fill("#f6e7cf", 110);
brush.circle(238, 178, 92, true);
brush.circle(342, 150, 64, true);
brush.fill("#eb9d6f", 90);
brush.circle(300, 196, 70, true);
brush.fill("#f6e7cf", 80);
brush.circle(560, 118, 56, true);
brush.circle(120, 300, 48, true);
// one contrail, almost gone
brush.set("2H", "#f6e7cf", 1.2);
brush.line(96, 388, 470, 300);
// the field: saturated green, darker at the very bottom
brush.noStroke();
brush.fillBleed(0.35, "out");
brush.fillTexture(0.55, 0.6);
brush.fill("#2e6b4f", 200);
brush.rect(400, 724, 880, 190, "center");
brush.fill("#1d4a36", 130);
brush.rect(400, 774, 880, 100, "center");
// the field meets the sky unevenly, as grass does
brush.set("2B", "#2e6b4f", 1.4);
for (let i = 0; i < 90; i++) {
const x = random(-10, 810);
const y = 632 + randomGaussian(0, 3);
brush.line(x, y + 8, x + randomGaussian(0, 2), y - max(4, randomGaussian(9, 3)));
}
// the kite: small, dark, high right — the only thing in all that sky
push();
translate(596, 208);
rotate(18);
brush.noStroke();
brush.fillBleed(0.15, "in");
brush.fill("#2b2a33", 220);
brush.beginShape(0.1);
brush.vertex(0, -26);
brush.vertex(17, 0);
brush.vertex(0, 30);
brush.vertex(-17, 0);
brush.endShape(true);
pop();
// its tail, two ribbons
brush.set("pen", "#2b2a33", 0.8);
brush.line(600, 240, 610, 262);
brush.line(610, 262, 602, 282);
// the string: one long slack curve down to the field
brush.set("pen", "#2b2a33", 0.6);
brush.beginShape(0.8);
brush.vertex(592, 236);
brush.vertex(520, 400);
brush.vertex(470, 540);
brush.vertex(452, 648);
brush.endShape(false);
}