Tokens, typography, voice.
A live reference for Struqo's visual system. Every value is read from apps/web/app/globals.css at render time, so this page cannot drift from the code.
Code is the source of truth. The Figma library and this page mirror globals.css, never the other way around.
Four conventions, graded by urgency. Warning (red) for blocking errors or data inconsistency. Alert (orange) for non-blocking attention. Hint (blue) for neutral information. Success (green) for confirmations. Color carries the message; the container stays restrained.
Warning
Alert
Hint
Success
List-item container in three variants: static for passive info, interactive with a hover state, and with an actions menu for secondary operations. The card body is always the primary click target. Secondary actions live in the ⋯ menu in the top-right, never as parallel buttons.
Secondary info, kept neutral
Secondary info, kept neutral
Secondary info, kept neutral
The brandmark lockup: a square mark plus the mono wordmark. Presentational only, wrap it in a link where it should navigate. It inherits its text colour from the parent so a wrapping link's hover state carries through.
Page title with slots for title, actions, breadcrumb and a meta line, with an optional divider. It sits inside the page and is not the app-shell chrome (that arrives as its own organism).
Projects
Projects
Projects
Label, helper text, error message and the a11y wiring around any control. The error state sets aria-invalid and tints the border. Control-agnostic: input, select or textarea.
We never share it.
Required field.
Tree treatments.
Three answers to "What would Dieter Rams do?" for the wood building block. Same geometry, three dialects. Used on the landing ("Why wood") and the stance page.
Tree as a wood drawing: hatched post trunk, mono dimension, faceted crown.
Pure line dialect, the same language as the ValueProps diagrams.
Flat pictogram in muted green, the softest and most organic.
Self-aware, relaxed, with a wink.
Measured: three to five beats per longer page. The product is meant to grow and become big; the posture can already smile at itself today without making itself small.
text-text-3 currently fails WCAG AA contrast, panel inputs suppress the global focus ring, and wood species swatches still live outside the CSS token system. Details in docs/DESIGN_SYSTEM.md under Known gaps.