Guide · 5 min
A design system without CSS
Named styles, states, parts and animations. This very site has zero lines of CSS. Here is how.
The site you are reading is written in Kaury, and it has no CSS file and no CSS block. Its whole look — pills, cards, the ticker, the code that types itself — is made of three ideas.
1. Restyle an element everywhere
A style named after an element applies to all of them:
style button
border 2 black, radius 999, bold
style title
font "Cabinet Grotesk", weight 800, tracking -1
2. Create your own words
Any other name makes a new word. Put it on any element line:
style card-paper
background #E9DDB9, radius 24, padding 32
hover lift 4, shadow hard
selected background black, color white
link color orange
mobile padding 20
page "/"
section
column card-paper
subtitle "Simple to write"
link "Read more" "/docs/"
Inside a style you can describe:
| Kind | Words |
|---|---|
| states | hover, selected, current, open, focus, pressed, disabled, checked |
| parts inside | title, text, link, image, button, code, summary, emphasis… |
| screens | mobile, tablet, desktop |
States follow your data: button "Code", tab-pill, selected (tab == 0).
3. Animate with words
animation scroll-left, 40s, loop, linear
from move 0 0
to move -50% 0
page "/"
section
row no-wrap, scroll-left
text "Kaury ✳ Kaury ✳ Kaury ✳"
The code that types itself on the home page is the same idea with steps 12 and reveal 0% → reveal 100%. An animation with scroll plays while the element scrolls into view. Visitors who ask their system for less motion get none, automatically.
The result
One file, readable from top to bottom: colors, fonts, words, animations, then pages. Look at the source of this site.