VISUALLIdesign system

Brand book

Visualli turns anything people bring — a PDF, a link, a video, a thought — into a visual map they can walk into. The design system serves one promise: understand anything visually. Visuals are the stage; text is the stagehand.

Feel: joyful · spatial · visual · gradual reveal · fresh. Never: generic SaaS, generic "AI startup" (no blue-to-purple gradients, no sparkle-everything, no glassy cards), never a wall of text.

Content fundamentals

Visual foundations

Color — three families, three jobs

  1. Spectrum (spectrum-teal, spectrum-harbor, spectrum-iris, spectrum-berry, spectrum-coral, spectrum-amber, spectrum-sun, spectrum-stone, plus root-ink) — the logo's exact letter colors. Brand moments only: the wordmark, SpectrumBar, marketing blocks, the Signature swash. Never as a UI fill behind text, never blended into a gradient. The SpectrumBar replaces the old blue→pink gradient: colors side by side, each one whole.
  2. Topics (topic-<name> + topic-<name>-ring, eight of them) — pastel fills derived from the spectrum, for nodes and anything that echoes a node (vault dots, avatars, roadmap votes). Topic colors separate siblings; they never carry meaning. Labels on them always use node-ink (10:1 or better). They stay pastel in dark mode — ideas glow on the dark canvas.
  3. Interface neutrals — canvas, surface, surface-sunken, surface-overlay, line, line-strong, ink, ink-muted, ink-subtle, plus action/on-action, focus, link and the four statuses. Chrome is quiet so the map can be loud.

Rules: one action per view (Send, New Visualli, Join early access). action is root-ink in light and paper in dark — there is no brand-blue button. Status colors always travel with an icon and a word. Every text token's usage note names the grounds it passes on; all pairs are checked at 4.5:1 (7:1 in the high-contrast themes) across all eight themes.

Type — four voices

Family Face Use
display Haksen (caps only, the wordmark's geometry) eyebrow, display-*: kickers, deck titles, empty states, vault group labels
ui Atkinson Hyperlegible Next everything you read and operate: title-l … caption
hand Kalam the canvas: node-root, node-label; the one signature word per screen ("Understand anything Visually."); up to three hand-set key words in a marketing lede
note Caveat edge-label on connectors, annotation marginalia ("tap the rings to step inside ↓")
mono Atkinson Hyperlegible Mono code: the .visualli JSON, spec docs

Atkinson Hyperlegible was drawn for low-vision readers; choosing it says inclusive before a word is read. Hand faces live on the canvas and in marketing — never in buttons, inputs or menus. In Readable type mode all hand faces fall back to ui.

Space, radius, elevation

Layout

One canvas, three floating pieces: the Vault on the left (288px, collapsible), the Composer bottom-center (max 720px), canvas controls top-right. The depth trail sits top-left of the canvas, just right of the Vault. Nothing docks edge-to-edge; everything floats over the map with space-4 of air, so the canvas always reads as infinite.

Motion — gradual reveal

The signature move is the bloom: when a layer opens, ideas grow out from the center one by one (duration-reveal 420ms, stagger-reveal 70ms, ease-bloom with a small overshoot), then connectors draw themselves in. Drilling in is a camera dive (duration-zoom 500ms, ease-zoom) into the node you chose; backing out shrinks and fades. UI motion is short and quiet (duration-quick, ease-standard). Every animation respects Reduce motion and prefers-reduced-motion: zooms become cross-fades, blooms become a 120ms fade.

States

Hover lifts (−2px) and turns a node's rings 2°; press settles 1px. Focus is always a solid 2px focus ring with 2px offset (on nodes: the outline itself turns focus). Disabled is 45% opacity plus a reason nearby. Selected nodes get an ink outline.

Iconography

Lucide outline icons (lucide-react 0.344, the set already in the web app): 24px grid, 2px stroke, round caps — 1.75–2.25px at 16px. Use Icon with the names in ICONS; never mix filled icons in. Icons inherit currentColor. The assets/Icons group holds the 24 most-used as SVG files (ink #182140) for design tools. No emoji in product chrome. There is no "AI" glyph: Visualli's chat receipts carry the still tree (TreeMark) — the same drawing ThinkingTree animates while Visualli works, settled once it's done. Tips (transient hints) carry a check mark.

Logos

Use the uploaded files in assets/Logos, never redraw. visualli-wordmark-light.png on light grounds; visualli-wordmark-dark.png (badge on near-black) on dark grounds; visualli-tree-color.png alone as the app mark at 24px and up; visualli-tree-mono.png for single-color print; visualli-spec-mark.png only for the open specification. Clear space around the wordmark: the height of the tree disc. The wordmark's letter colors define the spectrum — do not recolor it.

Don't

Using this system

Load tokens.css, then components/bundle.css (it imports the Google faces), React 18, then components/bundle.js — components are on window.Visualli. Set the look on <html>: data-theme (one of light, dark, focus-light, focus-dark, colorsafe-light, colorsafe-dark, contrast-light, contrast-dark), plus data-type, data-motion, data-reveal, data-scale — or call Visualli.applyComfort(choice). Further sections: Canvas language (the open-spec layer), Comfort modes, Surfaces, Marketing, Migration.