Fundações
The materials everything else is built from. Every value on this page is read from the token source, so what you see is what ships.
/01
Surfaces
A section declares its material with data-surface; every
semantic role rebinds inside it. Text roles are derived per surface
(hue and chroma kept, lightness moved) until they pass on both the
surface and its panel tone. Ratios below are computed, not claimed.
data-surface="paper" · light
Paper
#F2F0E9
Texto principal sobre paper. Texto secundário, ainda legível.
- ● Erro: campo obrigatório
- ● Atenção: verifique os dados
- ● Ativo
- ● Informação
- surface-alt
- #E3E1DA
- fg
- #151715 · 15.80:1
- fg-muted
- #62635E · 5.31:1
- rule
- #C5C4BE
- rule-strong
- #7F7E7A · 3.56:1
- action
- #1559A6 · 6.12:1
- action-fill
- #1559A6
- action-fill-fg
- #F2F0E9 · 6.12:1
- focus
- #151715 · 15.80:1
- status-error
- #BC2827 · 5.31:1
- status-warn
- #7D5E02 · 5.30:1
- status-ok
- #24563C · 7.45:1
- status-info
- #1559A6 · 6.12:1
data-surface="concrete" · light
Concrete
#B8B7B0
Texto principal sobre concrete. Texto secundário, ainda legível.
- ● Erro: campo obrigatório
- ● Atenção: verifique os dados
- ● Ativo
- ● Informação
- surface-alt
- #ADACA5
- fg
- #151715 · 8.96:1
- fg-muted
- #3E403B · 5.22:1
- rule
- #979791
- rule-strong
- #585954 · 3.51:1
- action
- #013E7E · 5.24:1
- action-fill
- #1559A6
- action-fill-fg
- #F2F0E9 · 6.12:1
- focus
- #151715 · 8.96:1
- status-error
- #84020C · 5.23:1
- status-warn
- #513C03 · 5.23:1
- status-ok
- #15482F · 5.22:1
- status-info
- #013E7E · 5.24:1
data-surface="graphite" · dark
Graphite
#252724
Texto principal sobre graphite. Texto secundário, ainda legível.
- ● Erro: campo obrigatório
- ● Atenção: verifique os dados
- ● Ativo
- ● Informação
- surface-alt
- #2F312E
- fg
- #F2F0E9 · 13.21:1
- fg-muted
- #979A93 · 5.28:1
- rule
- #454643
- rule-strong
- #7A7C77 · 3.57:1
- action
- #5A9CEE · 5.32:1
- action-fill
- #1559A6
- action-fill-fg
- #F2F0E9 · 6.12:1
- focus
- #F2BE32 · 8.74:1
- status-error
- #FE695E · 5.30:1
- status-warn
- #F2BE32 · 8.74:1
- status-ok
- #71A487 · 5.28:1
- status-info
- #5A9CEE · 5.32:1
data-surface="night" · dark
Night
#151715
Texto principal sobre night. Texto secundário, ainda legível.
- ● Erro: campo obrigatório
- ● Atenção: verifique os dados
- ● Ativo
- ● Informação
- surface-alt
- #20211F
- fg
- #F2F0E9 · 15.80:1
- fg-muted
- #878A83 · 5.14:1
- rule
- #363835
- rule-strong
- #6C6D69 · 3.46:1
- action
- #4A8BDC · 5.16:1
- action-fill
- #1559A6
- action-fill-fg
- #F2F0E9 · 6.12:1
- focus
- #F2BE32 · 10.46:1
- status-error
- #EB574E · 5.15:1
- status-warn
- #F2BE32 · 10.46:1
- status-ok
- #619477 · 5.16:1
- status-info
- #4A8BDC · 5.16:1
data-surface="botanical" · dark
Botanical
#24563C
Texto principal sobre botanical. Texto secundário, ainda legível.
- ● Erro: campo obrigatório
- ● Atenção: verifique os dados
- ● Ativo
- ● Informação
- surface-alt
- #315F45
- fg
- #F2F0E9 · 7.45:1
- fg-muted
- #CBCEC7 · 5.34:1
- rule
- #497058
- rule-strong
- #90B099 · 3.58:1
- action
- #FAC63D · 5.35:1
- action-fill
- #F2BE32
- action-fill-fg
- #151715 · 10.46:1
- focus
- #F2BE32 · 4.93:1
- status-error
- #FEBDB5 · 5.33:1
- status-warn
- #FAC63D · 5.35:1
- status-ok
- #A4D9B9 · 5.34:1
- status-info
- #ACD0FE · 5.34:1
data-surface="signal-yellow" · light
Signal yellow
#F2BE32
Texto principal sobre signal yellow. Texto secundário, ainda legível.
- ● Erro: campo obrigatório
- ● Atenção: verifique os dados
- ● Ativo
- ● Informação
- surface-alt
- #E3B333
- fg
- #151715 · 10.46:1
- fg-muted
- #484A44 · 5.21:1
- rule
- #C59D33
- rule-strong
- #7B5E05 · 3.54:1
- action
- #151715 · 10.46:1
- action-fill
- #151715
- action-fill-fg
- #F2BE32 · 10.46:1
- focus
- #151715 · 10.46:1
- status-error
- #97030F · 5.22:1
- status-warn
- #5C4602 · 5.23:1
- status-ok
- #205239 · 5.24:1
- status-info
- #024890 · 5.23:1
data-surface="signal-blue" · dark
Signal blue
#1559A6
Texto principal sobre signal blue. Texto secundário, ainda legível.
- ● Erro: campo obrigatório
- ● Atenção: verifique os dados
- ● Ativo
- ● Informação
- surface-alt
- #2662AB
- fg
- #F2F0E9 · 6.12:1
- fg-muted
- #DDE0D9 · 5.23:1
- rule
- #4275B4
- rule-strong
- #92BCF0 · 3.54:1
- action
- #F2F0E9 · 6.12:1
- action-fill
- #F2F0E9
- action-fill-fg
- #1559A6 · 6.12:1
- focus
- #F2BE32 · 4.05:1
- status-error
- #FED6D0 · 5.23:1
- status-warn
- #FFDB87 · 5.22:1
- status-ok
- #B6EBCB · 5.22:1
- status-info
- #CAE1FF · 5.22:1
data-surface="signal-red" · dark
Signal red
#B21B1E
Texto principal sobre signal red. Texto secundário, ainda legível.
- ● Erro: campo obrigatório
- ● Atenção: verifique os dados
- ● Ativo
- ● Informação
- surface-alt
- #B8302C
- fg
- #F2F0E9 · 6.00:1
- fg-muted
- #E0E3DC · 5.28:1
- rule
- #C24D44
- rule-strong
- #FFA297 · 3.54:1
- action
- #F2F0E9 · 6.00:1
- action-fill
- #F2F0E9
- action-fill-fg
- #B21B1E · 6.00:1
- focus
- #F2F0E9 · 6.00:1
- status-error
- #FED9D4 · 5.24:1
- status-warn
- #FFDE93 · 5.25:1
- status-ok
- #B8EECD · 5.26:1
- status-info
- #CFE4FE · 5.27:1
/02
Palette
The brief's primitives, verbatim. Components never use them directly — they go through surface roles, which carry the contrast guarantees.
-
paper
#F2F0E9
oklch 95% 0.010 94
-
concrete
#B8B7B0
oklch 78% 0.010 100
-
graphite
#252724
oklch 27% 0.006 135
-
ink
#151715
oklch 20% 0.005 145
-
gray
#777973
oklch 57% 0.009 122
-
botanical
#24563C
oklch 41% 0.070 158
-
moss
#777E60
oklch 58% 0.045 118
-
signal-yellow
#F2BE32
oklch 83% 0.156 87
-
transit-blue
#1559A6
oklch 47% 0.140 255
-
signal-red
#C93632
oklch 56% 0.185 27
/03
Type
Three voices (ADR-0014). Bricolage Grotesque for display: the one face with personality, at 87.5% width with its optical display cut. IBM Plex Sans for text, labels and signage, condensed to 85% on plates. IBM Plex Mono for indices and metadata. Sizes are fluid between 360 and 1440px viewports. Display leading is 1.0 so Portuguese accents and cedillas never collide.
-
Ações públicas
-
Estação São João
-
Vigília — Saída
-
Concreto, sinalização e verde
Concrete, signage and green
-
Como funciona
How it works
-
Notas de campo
Field notes
-
Cada artefato é uma estação: um mecanismo, uma explicação e anotações de campo.
Every artifact is a station: a mechanism, an explanation and field notes.
-
O corpo de uma aranha procedural é um agente de direção: busca e chegada, com força e velocidade limitadas. Cada perna é uma cadeia de cinemática inversa.
A procedural spider's body is a steering agent: seek plus arrival, with capped force and speed. Each leg is an inverse-kinematics chain.
-
Foto: Arte Fora do Museu, CC BY 2.0.
Photo: Arte Fora do Museu, CC BY 2.0.
-
← Saída · Próxima estação: Quatro Cantos
← Exit · Next station: Quatro Cantos
-
Projetos · Sobre · Contato
Projects · About · Contact
-
interaction study / 2026 / vue + typescript
-
/01 · 23°33′S 46°38′W · 2026-10-10
/04
Space
A 4px base with deliberate jumps at the top end: 128, 192 and 256 are for the voids between architectural rooms, not for padding.
- space-2
- space-4
- space-8
- space-12
- space-16
- space-24
- space-32
- space-48
- space-64
- space-96
- space-128
- space-192
- space-256
/05
Grid
4 columns below 600px, 8 up to 1024px, 12 beyond.
Margin 16→96px, gutter 16→
32px. Named lines let a block bleed to the viewport
edge while text stays on the content columns. Press
Shift+G or add ?grid to overlay
it on any page.
/06
Structure & motion
Boundaries come from rules and tone, not boxes. No shadows, no elevation, no rounded cards. One easing curve, no overshoot; every duration drops to zero under reduced motion.
Rules
Radius
none · input 2px · round (markers)
Focus
2px ring · 3px offset · ink or yellow per surface
Motion
- instant 120ms
- quick 240ms
- base 480ms
- slow 800ms
cubic-bezier(0.2, 0, 0, 1)