Skip to content

Fill the hero badge so the grid stops crossing it - #692

Merged
hansmartensdev merged 1 commit into
mainfrom
claude/hansmartens-market-positioning-mlt89z
Sep 18, 2026
Merged

hansmartensdev merged 1 commit into
mainfrom
claude/hansmartens-market-positioning-mlt89z

Conversation

@hansmartensdev

Copy link
Copy Markdown
Owner

The pill on a gridded hero is Badge variant="brand", which fills at bg-brand-500/10, and the hero behind it draws a 56px lattice. A 1px line read straight through the pill and cut it in half.

Both colour modes carry a grid, from two different components: HeroGrid in light, hero-beam__grid inside HeroBeam in dark. What differs is how much of it shows. The line sits at a far lower contrast against near-black than against white, so in dark mode it was close to invisible before it ever reached the pill.

The fix mixes the same 10% of the brand into the section's own ground, which the hero paints as bg-background in both modes. That gives the colour the pill already renders as, with nothing left to see through, and it reads the brand and background tokens, so one rule covers all eight colour themes and both modes with no second value to keep in step. Checked on the built pages: eight distinct pill colours across the eight themes, in both modes.

In sRGB, not OKLCH. --color-background in light is oklch(100% 0 0), whose hue is powerless, so mixing toward it in OKLCH pulls the hue away from the brand and the pill comes out the wrong colour. sRGB is also what the browser composites the translucent fill in, so the result lands on the pill's current colour.

Scoped by showHeroHalo, which already gates both grid layers, so it names exactly the heroes that need this. Verified against the built HTML in both modes: /about/, /blog/, /contact/ and /projects/ carry it; the home and components heroes draw no grid and are untouched, as are the badges elsewhere that use the same variant away from a grid.

Claude-Session: https://claude.ai/code/session_01BwJB1u6U3vdEZ9LrHRebST

What does this PR do?

A clear description of the change and why it was made.

Fixes # (issue number, if applicable)

Type of change

  • Bug fix
  • New feature or component
  • Documentation update
  • Refactor or code quality improvement
  • Other: ___

Checklist

  • pnpm lint passes with 0 errors
  • pnpm check passes with 0 errors
  • pnpm build completes successfully
  • I have tested this change in the browser
  • No unnecessary files are included in this PR

Screenshots (if relevant)

Add before/after screenshots for visual changes.

The pill on a gridded hero is Badge variant="brand", which fills at
bg-brand-500/10, and the hero behind it draws a 56px lattice. A 1px
line read straight through the pill and cut it in half.

Both colour modes carry a grid, from two different components:
HeroGrid in light, hero-beam__grid inside HeroBeam in dark. What
differs is how much of it shows. The line sits at a far lower contrast
against near-black than against white, so in dark mode it was close to
invisible before it ever reached the pill.

The fix mixes the same 10% of the brand into the section's own ground,
which the hero paints as bg-background in both modes. That gives the
colour the pill already renders as, with nothing left to see through,
and it reads the brand and background tokens, so one rule covers all
eight colour themes and both modes with no second value to keep in
step. Checked on the built pages: eight distinct pill colours across
the eight themes, in both modes.

In sRGB, not OKLCH. --color-background in light is oklch(100% 0 0),
whose hue is powerless, so mixing toward it in OKLCH pulls the hue away
from the brand and the pill comes out the wrong colour. sRGB is also
what the browser composites the translucent fill in, so the result
lands on the pill's current colour.

Scoped by showHeroHalo, which already gates both grid layers, so it
names exactly the heroes that need this. Verified against the built
HTML in both modes: /about/, /blog/, /contact/ and /projects/ carry it;
the home and components heroes draw no grid and are untouched, as are
the badges elsewhere that use the same variant away from a grid.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BwJB1u6U3vdEZ9LrHRebST
@vercel

vercel Bot commented Sep 18, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
astro-rocket Ready Ready Preview Sep 18, 2026 1:03pm UTC

@hansmartensdev
hansmartensdev merged commit 9037063 into main Sep 18, 2026
4 checks passed
@hansmartensdev
hansmartensdev deleted the claude/hansmartens-market-positioning-mlt89z branch September 18, 2026 13:03

This branch was successfully deployed

1 active deployment
Preview — ccb37f72 Deployed Sep 18, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants