GIRL_OS
> The design system behind veronikavolkov.dev.
Color
A set of neon accents on a near-black background. Pink is used for body text and labels, cyan for links and actions, and cream for headings. All contrast ratios below are measured against --bg-base #050505. PASS = meets WCAG AA for normal text (≥4.5:1); LARGE/UI = for large text, borders, or graphics only (≥3:1).
▸ click any swatch to copy its token name
Typography
Three typefaces, each with a defined role. Space Grotesk is used for display and headings, Space Mono for body and UI text, and Architects Daughter for occasional hand-written asides. Display text is uppercase with tight letter-spacing; Space Mono carries all long-form reading.
Families
Type scale
lh 1.0 · −0.05em
uppercase · −0.02em
uppercase · +1px
lh 1.7
uppercase · +2px
Space & Grid
Spacing follows an 8-point scale for consistent rhythm. A 32px pink grid (--grid-color) sits behind the page as a background texture. Borders are either a 1px pink hairline at 25% opacity or a solid 2px pink; corners are square (radius 0).
Components
Each component below is live: hover, focus, and tab through them to see interaction states. Everything is built from the tokens above.
Buttons & CTAs
States: default (pink outline) · hover (fill) · focus-visible (cyan ring) · active (1px nudge) · disabled (40% + not-allowed)
Status & tags
Project card
Case Study Name
One-line description of the project, the audience, and what shipped.
Access_Records →Medicare Redesign
End-to-end section redesign: research, IA, and a converting microsite.
Open_Case_Study →Stat block
Form input
Data table
| Token | Value | Role |
|---|---|---|
--font-display | Space Grotesk | Headlines |
--font-mono | Space Mono | Body & UI |
--neon-pink | #ff1493 | Body text |
Accessibility
A high-contrast neon palette can support accessibility when it is used carefully. These are the rules that keep the design meeting WCAG AA.
| Guardrail | Rule |
|---|---|
| Body text contrast | Only pink, bubblegum, cyan, cream, copper on --bg-base for reading, all ≥4.5:1. Violet & red are ≥3:1: large text / borders / icons only. |
| Focus visibility | Every interactive element shows a 3px --neon-cyan focus ring at 2px offset. Never remove :focus-visible. |
| Touch targets | Minimum 44×44px hit area on buttons, nav links, and cards. |
| Motion | prefers-reduced-motion disables transitions & smooth scroll. No motion is load-bearing. |
| Meaning ≠ color | Status always pairs color with a text label + dot glyph (Live / Offline), never color alone. |
| Grid contrast | The 32px grid stays ≤15% opacity so it never competes with text. |