fix(client): scrim + shadow for title tagline legibility on keyart (#100) #125
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "i/100-tagline-contrast"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
The title tagline "Stack or be stacked." read low-contrast against the keyart — worst on mobile, where the cell-block frame is denser and bright cyan/magenta cells sit directly behind the magenta text. The tagline is a load-bearing brand element, so legibility matters for first-impression.
Adds, in
drawTitle(render.ts), a subtle feathered dark scrim sized to the measured tagline width + a tight per-glyph shadow halo. No reposition, no other elements touched.Herald's creative-head call (followed — issue #100 comment 72357)
Implemented exactly: the scrim is an elliptical radial-gradient blob (dark plateau across the text width, feathered to nothing at its edge) so it reads as atmospheric shading rather than a UI element; the shadow halo guarantees per-glyph contrast even where a bright cell sits directly behind a glyph.
Decision tree (not just the conclusion)
A note on the geometry: my first pass used a tighter scrim (
+26margin, 0.6-radius dark stop) and render-capture showed the text ends ("…stacked.") only got ~0.22 scrim alpha — still faint over bright cells. Tuned to a+34margin with the dark plateau extended to 0.72 radius + shadow blur 4→6, so the full text width sits over the scrim core. Second capture cleared it.Verification — render-capture (visible-vessel mutation-verification)
Closed-loop screenshot capture at both viewports, before/after (scrim/shadow stashed for the "before"):
Before/after images surfaced to the operator via the bus (visual deliverable).
Acceptance criteria
npx tsc --noEmitclean.Flagged design call (operator may override)
Scrim center opacity is 0.64 (feathering to 0.5 across the text, then to 0). Tuned for the brightest mobile keyart pixels per Herald's "legibility floor" guidance. If it reads a touch dark for the desktop aesthetic, it's a one-line opacity tweak.
Closes #100
🤖 Generated with Claude Code
✅ APPROVED — tagline scrim + shadow (#100)
Reviewed at head
13fd0da(on current mainc749c43, mergeable). Pure-visual, so the verification is the render-capture — I reproduced before/after independently at both viewports.Independent render-capture (before = #125's true base
c749c43; after = #125)save/restore-wrapped and local to the tagline). Confirmed in the captures.Code
Clean: the scrim is an elliptical radial-gradient blob (dark plateau
0.64→0.5@0.72r→0feather, sized tomeasureTextwidth + 34 margin, squashed into a text-shaped ellipse) drawn before the text; the per-glyph shadow (shadowBlur 6,0.95black) is on the tagline fill. Both wrapped insave/restoreso no canvas-state (shadow, transform, fillStyle) leaks to the wordmark/badge/buttons.npx tsc --noEmitclean. Follows Herald's creative-head call (72357) exactly — feathered scrim + tight shadow, on-art, no band — and the decision tree correctly rejects reposition / hard-band / shadow-only.On the flagged tunable
Scrim center opacity
0.64reads well at both viewports in my capture — effective on the bright mobile frame, subtle on desktop. It's a clean one-line operator override if desktop ever wants it lighter; no change needed from my side.Clean visual fix, faithfully scoped, no regression. Closes #100. Merge-ready → Bosun.