design.matuta.art

design
system

The warm, papery workshop-desk tokens and component library that every matuta subdomain shares. One stylesheet, one shell script, mobile-first. This page is the living reference — everything below is rendered by the real CSS.

Colors warm neutrals + clay brand

Every value is a CSS custom property on :root. Reference them as var(--clay) — never hard-code hex.

Neutrals
Ink
#1a1a1a
--ink
Ink 2
#3b382f
--ink-2
Paper
#ffffff
--paper
Desk
#e9e6df
--desk
Desk 2
#f0ede6
--desk-2
Cream
#faf8f1
--cream
Cream 2
#f3f0e8
--cream-2
Hair
#e7e3db
--hair
Muted
#8a8377
--mut
Muted 2
#b3ab9c
--mut-2
Brand
Clay
#b8532f
--clay
Clay deep
#97401f
--clay-deep
Clay soft
#f6e7df
--clay-soft
Sun
#e0a32e
--sun
Sun soft
#fbf0d6
--sun-soft
Signal spectrum
Clay
#b8532f
--sig-clay
Rust
#c2410c
--sig-rust
Amber
#c1841a
--sig-amber
Leaf
#5f8a2b
--sig-leaf
Pine
#2f8a5f
--sig-pine
Teal
#0e7f96
--sig-teal
Ocean
#2563b8
--sig-ocean
Indigo
#4f46b5
--sig-indigo
Berry
#a83a6b
--sig-berry
Wood
#8a5a2b
--sig-wood
Semantic
Success
#2f8a5f
--success
Danger
#c0342b
--danger
Warning
#c1841a
--warning
Info
#2563b8
--info

Tones data-tone drives --tone

Set data-tone="teal" on any element (or ancestor) and every var(--tone) inside it retints — accent borders, dots, chips, arrows. This is how one component library yields per-section color.

clay rust amber leaf pine teal ocean indigo berry wood ink

Typography Barlow Condensed · Barlow · Spline Sans Mono

Display (Barlow Condensed) for headings & labels, usually uppercase. Body (Barlow) for prose. Mono (Spline Sans Mono) for data, meta and code.

Families
Barlow Condensed — display
Barlow — body copy for readable prose and interface text.
Spline Sans Mono — 0123456789 · data & code
Type scale
display 44Workshop
h1 30Heading one
h2 18Heading two
lead 17Lead paragraph
body 14.5Body text
sm 13Small text
xs 11Extra small / meta
Devices
Eyebrow · mtt-eyebrow

H1 device · mtt-h1

H2 with rule mtt-h2

Lead paragraph — mtt-lead — a slightly larger intro line for a section.

Spacing 4px base scale

Step tokens --space-1--space-24. Semantic aliases: --gap-card, --gap-grid, --gap-section, --pad-card, --pad-panel.

--space-1 · 4
--space-2 · 8
--space-3 · 12
--space-4 · 16
--space-5 · 20
--space-6 · 24
--space-8 · 32
--space-12 · 48
--space-16 · 64
--space-24 · 96

Radius & shadow

Radius
xs · 3
sm · 6
md · 8
lg · 12
pill
Shadow
card
raise
pop
sheet

Buttons mtt-btn

Variants
Sizes

Chips mtt-chip · mtt-filterchip

Value chips (tone-aware)
M6 soft sm 1013mmsocket
Filter chips

Cards & tiles

Tile grid · mtt-tile
Accent-top card · mtt-card
Broca 6 mm
HSS · madeira & metal
Uma card compacta com barra de acento colorida por data-tone, título display e corpo em body.
Interativa
hover para levantar
Adicione mtt-card--interactive para o lift + sombra no hover.

List & guide rows

Guide row · mtt-guiderow
tmux 2 cards · 10 × 11 cm · A4 landscape
List row · mtt-listrow
Lixa grão 120 P120 · madeira

Notices & callout

Info
Neutral note — the default tone.
Success
Everything checks out.
Warning
Double-check before you cut.
Danger
Stop — this can damage the piece.
Callout · mtt-callout + mtt-rulelist
Regras de ouro
  • Meça duas vezes, corte uma.
  • Óculos sempre.
  • Lixe na direção dos veios.

Metrics, facts & tables

Metric · mtt-metric
240
ferramentas no mapa
Facts · mtt-facts
M6
rosca
10mm
chave
1.0
passo
Table · mtt-table
GrãoUsoEtapa
P80desbaste1
P120nivelar2
P220acabar3

Usage one link, one script

The whole system is two files in sites/_shared/, copied into every site at build time. Link the stylesheet, drop the shell script before </body>, and set the active section on <body>.

<link rel="stylesheet" href="/_shared/matuta.css">

<body data-mtt-section="guias">
  <!-- page content using .mtt-* classes -->
  <script src="/_shared/shell.js" defer></script>
</body>
Assets

Root-relative /_shared/… resolves per subdomain. From outside the monorepo, the canonical URL is https://design.matuta.art/_shared/matuta.css. data-mtt-section takes inicio · guias · blog · apps · sobre.

React components @matuta/ds

The same system also ships as a typed React component library — @matuta/ds, in packages/matuta-ds/. Every class documented above is wrapped as a component, and the tokens + CSS are generated from this very stylesheet at build time, so there is one source of truth and no drift. It's also the format Claude Design builds with — the components map 1:1 onto the .mtt-* markup.

Install & use
import "@matuta/ds/styles.css";
import { Button, Card, Notice, Icon } from "@matuta/ds";

<Button variant="outline" tone="teal" icon={<Icon name="wrench" />}>Ferramentas</Button>

<Card tone="clay" title="Broca 6 mm" sub="HSS · madeira">
  Uma card com a barra de acento colorida pelo tom.
</Card>
Tones

Every component takes a tone prop — or wrap a subtree in <ToneProvider tone="teal"> — and every var(--tone) inside retints, exactly like the data-tone system above.

Components
GroupComponents
ActionsButton · Chip · ChipPath · FilterChip
SurfacesCard · Tile · TileGrid
RowsGuideRow · ListRow · PostRow · FeaturedPost
FeedbackNotice · Callout · RuleList · EmptyState
DataMetric · Facts · Fact · DataTable
NavigationTabs · Breadcrumb · SearchBar · Nav
ContentHero · SectionHeader · Eyebrow · Lead · Manifesto · Pillars · Pillar · Prose
PrimitivesIcon · ToneProvider

Build with npm run build in packages/matuta-ds/dist/ (ESM bundle + .d.ts types + CSS). React is a peer dependency.