CRT Television
Scan lines, slight bloom, and colors that look broadcast rather than rendered.
Construction · Scanline
Everything is drawn by a tube: horizontal scan lines across the whole surface, a bloom around anything bright, and edges that fringe slightly.
Every style renders this same screen, so the only thing changing between two of them is the style. The component above is the file below, running.
Prompt
Design this interface in the CRT Television style. Scan lines over everything, a faint bloom on bright areas, and a slightly off broadcast palette. Type stays large because the tube could not resolve small. Build every
The numbers in this prompt are printed from the tokens below, so it cannot drift from what the specimen renders.
What carries the look
- scan lines over everything
- faint bloom
- broadcast palette
- large type
What this style refuses
- crisp small text
- flat matte surfaces
- cool minimal palettes
- hairline detail
The refusals are the half that keeps generated interfaces from converging — a prompt that only says what to add gets the default look.
Tokens
Palette
#101018#0a0a10#181822#12121a#33334a#2b2b40#f0eef8#f0eef8#a5a2bc#a29fb8#ff5fa2#ff5fa2#1a0410#1a0410Shape and type
Measured contrast — body 16.49:1 light, 17.19:1 dark; secondary text 7.66:1 and 7.7:1. Every pair clears WCAG AA in both themes, checked on each build.
Specimen · Specimen.tsx
import type { CSSProperties } from "react";
/**
* Vibary · CRT Television
*
* Scan lines, slight bloom, and colors that look broadcast rather than rendered.
*
* One complete product screen, rendered from the token object below —