From 424edb29d7e37e40b63afeb72bc20de91fff9fd3 Mon Sep 17 00:00:00 2001 From: Marwan Mostafa Date: Thu, 7 May 2026 14:47:08 +0300 Subject: [PATCH] fix(website): hero green input desat only, drop card rim/shadow The drop shadow needed an opaque rect that bled black through the PNGs' transparent corners, and the hairline rim drew a visible outline slightly off the baked corner radius. Both treatments looked worse than no treatment, so this commit keeps only the part that worked: the saturate(0.78) brightness(0.92) filter on the green input PNG so it stops outshouting the final-output card. --- apps/website/src/components/home/HeroCanvas.vue | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/website/src/components/home/HeroCanvas.vue b/apps/website/src/components/home/HeroCanvas.vue index 89333edafc..b6218a921a 100644 --- a/apps/website/src/components/home/HeroCanvas.vue +++ b/apps/website/src/components/home/HeroCanvas.vue @@ -441,7 +441,12 @@ function drawNode(ctx: CanvasRenderingContext2D, id: NodeId) { drawChip(chip2Y, 'DEPTH MAP', depthOn, depthHovered) } else if (n.type === 'image') { const outputUi = nodes['n-output-ui'] as SvgNode - const filter = id === 'n-blue' ? levelsFilter(outputUi.progress) : null + let filter: string | null = null + if (id === 'n-blue') filter = levelsFilter(outputUi.progress) + // The input PNG runs hot in pure #15FF00 territory — soften it just + // enough that the eye lands on the final-output card first while the + // green still reads as "input source". + else if (id === 'n-green') filter = 'saturate(0.78) brightness(0.92)' drawImageCover(ctx, x, y, n.w, n.h, n.rx, n.color, n.img, filter) } else if (n.type === 'svg') { if (n.img && n.img.complete && n.img.naturalWidth !== 0) {