GIRL_OS
> The design system behind veronikavolkov.dev.
Color
Neon on near-black. The palette runs hot: pink is the system's voice, cyan is action and links, cream is for reading. Ratios below are measured against --bg-base #050505. PASS = WCAG AA for normal text (≥4.5:1); LARGE/UI = use for large text, borders, or graphics only (≥3:1).
▸ click any swatch to copy its token name
Typography
Three families, three jobs. Space Grotesk shouts (display), Space Mono speaks (everything readable), Architects Daughter whispers (hand-marked asides). Display is always uppercase with tight tracking; 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
An 8-point spacing scale keeps rhythm consistent. The signature 32px pink grid (--grid-color) sits under everything: it is the "operating system" texture. Borders are hairline pink at 25% or solid 2px pink for structure; corners stay square (radius 0) to hold the terminal feel.
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 | Primary voice |
Accessibility
A high-contrast neon palette is an accessibility asset when it's used with discipline. These are the non-negotiable rules: they're what let this look loud and hit 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. |