2.1 Foundation
The bedrock four. Text, background, soft voice, lift.
2.2 Block quad · pink (hero)
Pink-700 is the signature accent. 500 is the base. 300 is for highlights, pressed states, and anywhere you want the colour to glow without shouting.
2.3 Block quad · supporting
Yellow, green, and blue round out the quad. Each has highlight / base / shadow the same way pink does.
2.4 Warm neutrals
The quiet three. Warm 3 is the canonical page background in light mode. Warm 5 is the sunken surface. Warm 7 is the divider and deep-shadow tint.
2.5 The 70/20/10 split
Use warm paper as your air. Use ink for the structural frame. Save pink for the moment that actually matters.
Composition ratio
- 70% Warm neutrals & paper — the breathing room
- 20% Ink — the structure
- 10% Pink — the moment that matters
2.6 Accessible pairings
WCAG AA requires 4.5:1 for normal text, 3:1 for large text. These pairings all pass at normal-text level unless noted.
#EA2880 · #EF56A3 · #F982C3. The canonical brand pinks above are #FF3F7A · #FF5B8D · #FE84A9. Use the canonical values for any new work. A one-pass SVG re-render would bring everything into alignment.
2.7 Surface modes · three rooms
Flat UI runs out of air. Three surface modes (paper, warm, ink) divide the page into rooms; the ambient glow travels through all of them.
--bg-paperThe default — clean, neutral, lets colour and type do the work. Use for any reading-heavy surface.
--warm-3A half-tone warmer. Soft break between paper sections, and the canonical page background in light mode.
--inkThe dramatic room — messaging, testimonials, anything that benefits from pink-on-dark contrast. Also the dark-mode base.
2.8 Ambient glow
A three-stop radial stack lives behind every page via body::before. Position-fixed so it never clips on scroll. Tokens shift hue and intensity between light and dark so the mood holds in both.
--glow-blue rgba(31, 170, 232, 0.04)
--glow-warm rgba(249, 195, 62, 0.03)
--glow-blue rgba(91, 217, 252, 0.07)
--glow-warm rgba(255, 216, 120, 0.05)
2.9 Stage hash
A 45° hairline hatch marks the “staging” area behind every component preview. The --stage-hash token flips value so the pattern is visible on cream and ink alike — never full-contrast, always felt more than seen.
2.10 Atmosphere tokens · copy-ready
Every token below ships in _shared.css, theme-aware out of the box.
2.11 Rules & notes
A few things that can break the atmosphere. Avoid them.
overflow: hidden on a root container — use a mask-image fade if you need the edge to soften. Keep per-page hero gradients subtle; the body layer does most of the work. In dark mode, the glow is pre-tuned — don't add extra pink to compensate.