A personal site made from scratch! https://badblocks.dev
Find a file
badbl0cks 0e6d352dca
Rework the CRT raster, glow and flicker effects
The three effects had drifted apart from each other and from the token
system. Consolidate them behind --crt-* tokens and fix what was broken.

- The animated text-shadow silently overrode the static one, so
  reduce-motion users saw a 5px white glow and everyone else a 3px
  currentColor glow. Both now come from one declaration, with the
  aberration offset factored out into --crt-shift.
- Step the aberration instead of tweening it. text-shadow is not
  compositable and this one inherits to every glyph, so the smooth
  version repainted the whole document at refresh rate.
- The flicker was invisible: a near-black tint at an effective alpha of
  0.008-0.096 over a black background, a peak lift of under 2/255.
  Retint with the accent at ~3%.
- Anchor the vignette to the viewport. It was sized to body's box, which
  is document-height, so on long pages the bloom sat off-screen.
- Pin the overlays with position: fixed rather than painting
  document-sized layers, and give the grille hard stops so it is three
  stripes rather than a smooth R->G->B ramp.
- Scale the raster pitch down at >=2dppx, where a 2px scanline is 4
  device px and resamples into moire at fractional DPR.
- Raise --color-mg to oklch(0.62): at 0.5 it was 3.5:1 on the
  background and 1.7:1 over the vignette centre. Halve the vignette
  alpha via its own token, keeping --color-accent-transparent at 50%
  for ProjectCard's glow.

Collapses the two keyframe blocks from 193 lines to 40.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 17:39:05 -07:00
.vscode Initial commit from Astro 2025-12-19 14:06:51 -08:00
public Rework the CRT raster, glow and flicker effects 2026-08-07 17:39:05 -07:00
src Add Projects page backed by the Forgejo API, with caching 2026-07-20 12:10:32 -07:00
.dockerignore Add license page, update LICENSE file, and link license page on the base 2026-07-11 00:16:01 -07:00
.env.example dev work 2026-07-11 00:11:02 -07:00
.gitignore Update .gitignore to temporarily hide unused assets until integration 2026-02-27 08:37:25 -08:00
.prettierrc.mjs Add contact actions and migrate contact form to Astro actions 2026-01-22 14:04:27 -08:00
astro.config.mjs more dev work 2026-07-11 11:06:10 -07:00
bun.lockb Update index to re-flow flex items based on max-width 2026-07-18 02:50:59 -07:00
compose.yaml more dev work 2026-07-11 11:06:10 -07:00
Dockerfile more dev work 2026-07-11 11:06:10 -07:00
LICENSE Add license page, update LICENSE file, and link license page on the base 2026-07-11 00:16:01 -07:00
package.json Update index to re-flow flex items based on max-width 2026-07-18 02:50:59 -07:00
tsconfig.json Add contact actions and migrate contact form to Astro actions 2026-01-22 14:04:27 -08:00