Styleguide
Every design partial, rendered with the live theme CSS and tied back to its DESIGN.md source.
This theme is generated from DESIGN.md - the single source of truth for colors, type, spacing, radius, and component recipes. Change a token there and the whole SCSS system + this page regenerate. To adjust:
edit DESIGN.md→npm run tokens→npm run build→reload
Colors
DESIGN.md colors → --color-*. The value under each swatch is the source hex.
Typography
DESIGN.md typography.<role> → --type-<role>-*. The source fontSize is the desktop target; the build turns it into a fluid clamp().
Spacing scale (fluid)
DESIGN.md spacing → --space-*. Source px shown; the bar is the resolved fluid width.
Radius
DESIGN.md rounded → --radius-*. Match radius to element size.
0px
4px
8px
16px
28px
9999px
Layout - breakout grid
DESIGN.md layout → --layout-*. Viewport-relative widths, so each level steps at any screen size. One .content-grid; each child opts into a width with one class.
layout.gutter 1.5rem
layout.gutter-lg 2.5rem
layout.content-width min(68rem, 90vw)
layout.content-width-lg min(68rem, 88vw)
layout.content-width-2xl min(72rem, 82vw)
layout.breakout-width min(100rem, 96vw)
layout.breakout-width-2xl min(110rem, 94vw)
layout.prose-width min(38rem, 90vw)
layout.section-gap clamp(3rem, 8vw, 7rem)
layout.section-gap-tight clamp(1.5rem, 4vw, 3rem)
Buttons (variant × size × state, via vocalcom_btn)
DESIGN.md recipes button-primary / button-secondary / button-accent.
Components
DESIGN.md recipes card / note, plus form controls.
Card
The default content surface, from the card recipe in DESIGN.md.
Form controls
DESIGN.md recipe control. Every one is a NATIVE element restyled, not a div - so focus, keyboard and screen-reader behaviour are the browser's, not ours.
Checkbox
Radio
Switch
Segmented
Select
Input group
Range
File
Guidelines (from DESIGN.md)
- Do use `ink` on `surface` for body copy and `on-primary` on `primary` for filled buttons.
- Do reach for the spacing and type scales before typing a raw pixel value.
- Do use `.content-grid` breakout classes for width instead of nested max-width wrappers.
- Don't put body text on `accent` or `primary`, or pair `muted` with anything darker than `subtle`.
- Don't add a new color, radius, or type size in CSS. Add it here and run `npm run tokens`.
- Don't stack drop shadows for hierarchy. Use spacing, the subtle fill, and the border first.
Blocks (11) → sandbox
| Hero | blocks/_block-hero.scss | block_hero |
| Text | blocks/_block-text.scss | block_text |
| Media + text | blocks/_block-media-text.scss | block_media_text |
| Cards | blocks/_block-cards.scss | block_cards |
| CTA | blocks/_block-cta.scss | block_cta |
| Form | blocks/_block-form.scss | block_form |
| Video | blocks/_block-video.scss | block_video |
| Use Cases | blocks/_block-use-cases.scss | block_use_cases |
| Articles | blocks/_block-articles.scss | block_articles |
| Webinars | blocks/_block-webinars.scss | block_webinars |
| Logos | blocks/_block-logos.scss | block_logos |