Command, not clutter
Every frame should help the operator choose the next action. Reduce decorative marks that do not change the decision.
Brand-facing foundations for Figma handoff and product alignment. This document defines positioning, identity, color, typography, surface rules, imagery, and voice. Component source now lives in the standalone HTML/CSS component library.
The product should feel calm, capable, and precise. It is not a marketing splash page; it is a working surface for brand teams.
components/<Name>/<Name>.html plus its local
.css, with shared tokens in components/tokens.css.
components/html-component-preview.html is the live HTML component
preview. figma-component-library.html is the specimen board for Figma
iteration, states, contracts, and handoff notes.
Every frame should help the operator choose the next action. Reduce decorative marks that do not change the decision.
Cyan marks readiness and neutral diagram paths. It is not a generic highlight, progress, or positive-status color.
Use restrained type, tabular numbers, and clear section rhythm so dense brand work can be scanned quickly.
Ink surfaces are rare. Use them for the top brief, a decisive KPI, or a focused state that reframes the page.
Neutral shell, white reading surfaces, controlled cyan accents, hairline edges, compact metadata, medium type, no noisy badges.
Neon AI dashboard, green decorative chrome, stock-photo landing page, heavy card stack, oversized hero marketing layout.
Default mode. Most frames should feel quiet, readable, and stable.
Use data, timestamps, labels, and tabular numbers to make decisions scan fast.
Reserve motion for state change; reserve cyan for ready and diagram-neutral meaning.
Keep the product naming plain. Pulse is the system context; Post is the focused interface surface.
Use when the screen is specifically the Post product experience.
Use in docs, Figma page titles, and cross-product handoff material.
Keep at least one cap-height around text lockups. Do not box the wordmark in a badge unless it is navigation chrome.
The palette is not a cyan UI theme. Hierarchy comes from tone, surface, and text level; color carries meaning. Green carries positive/active/approved states, blue carries suggested action and scheduled states, amber carries risk/on-hold states, cyan is ready and diagram-neutral, purple is in progress, and red is only for declining data.
Page background and ambient field.
Color/Stage #eef3f3
Default reading and content surface.
Color/Surface #ffffff
Primary text, anchors, and rare focus surfaces.
Color/Ink/800 #1d1d1f
Ready-state family and neutral diagram lines; use #0D7685 for ready text.
Color/Cyan/500 #49e0f5
Positive status, active/live, approved, upward data trend, best performance.
Color/Green #43BA51
Suggested action, scheduled, and stable data trend.
Color/Blue #3987F3
Risk, negative status, on hold, and worst performance in diagrams.
Color/Amber #F19A08
Data is down: negative delta, drop-off, loss, or metric decline only.
Data/Decline #EF4444
In progress, rendering, and active machine work.
Color/Purple #6366F1
Status tags use one compact scale: green for positive, active/live, and approved; blue for suggested action and scheduled; amber for risk, negative, and on hold; cyan ready tags use a light cyan background with #0D7685 text; purple means in progress. Red is not a status tag color.
Data trends are separate from status: green means upward, red means downward, and blue means stable. Diagrams use primary cyan for neutral paths, green for best performance, and amber for worst performance.
Generation status is its own process ladder: queued is neutral gray; scheduled is blue; in progress, generating, rendering, and building are purple; ready uses light cyan with #0D7685 text; approved, live, published, and completed are green; on hold, blocked, failed, and needs attention are amber. Red never appears in generation status.
Lightness ramp — every family shares six stops: 50 / 100 soft fills, 200 borders, 500 base, 600 text or dot on light, 700 deepest emphasis.
Text levels — separate reading levels by tone and weight, not by inventing sizes. Lead with level 1, let 2–4 carry the rest.
--text-1 #1d1d1f
--text-2 #44464a
--text-3 #5f6369
--text-4 #8a8e95
--text-5 #b1b5bb
Inclusive use — the 500 base of each status color is a fill / dot value, not a text value. On white, status text and thin icons use deeper stops: red 600 for decline data, blue 600, and amber / green 700 (their 500/600 fall under 4.5:1). Never carry status by hue alone — always pair the color with an icon, label, or position, so red↔green and blue↔cyan stay distinguishable for color-vision deficiency.
Status tags and data trends do not share meaning blindly. Green can mean approved status or upward data, but red appears only when data declines; risk and on-hold stay amber.
Section numbers, decorative rails, generic badges, whole-card fills, or "important because it looks nice." Structure is tone and spacing, not color.
Ink is a scale: 900 anchors, 800 primary text, 700 control chrome, 600 secondary. Step neutral surfaces (canvas → surface → 2 → 3) for nested grouping before a divider.
Manrope owns everything: brand, UI, numerics, and token labels. Product workspaces can use a 64px page display title when the title carries the screen without a kicker; give that display title a 20px support gap so the subtitle breathes. Quieter pages use H1 48, H2 28, H3 21, H4 18. Hierarchy is built from size, spacing, and position, never from heavier weight. Newsreader remains reserved for report covers and report-hero display.
Newsreader / 88 / max medium
Newsreader italic / report only
Manrope / 64 / gap 20
48 / 1.02 / medium
28 / 1.16 / medium
21 / 1.22 / medium
18 / 1.24 / 600
13 / 1.42 / 400
14 / 1.5 / 400
11 / uppercase
--fs-figure 32 · tabular · one size per view
A large title is not made important by the heaviest Bold. Separate levels with size, spacing, position, and structure. Headings cap at medium; reserve the heaviest weight for one key number or action.
The gap between any title/heading and its caption or body is a fixed 8px, set once in tokens. Pages do not retune it. The supporting line under a large title is the caption / description.
Use a restrained document grid for handoff pages and a stable product grid for React surfaces. The `Grid` source component now packages document, section, split, and content-grid recipes so repeated layouts do not become page-local one-offs. The system should feel ordered and readable, not tiled or tense.
max 1520 / margin 24-28
260 + fluid / gap 22
tonal + gap 10
vertical first
<760: 1 column
The product should feel light but not decorative. Material rules create hierarchy with color, tone, spacing, and depth before relying on framed edges.
Stroke/Support
Divider/Local
Effect/Hierarchy
mask-image gradient — so content
melts softly under fixed chrome instead of ending on a hard line. Keep it subtle:
content stays readable through it, and any fixed control (launcher, buttons) sits
crisp above the scrim.Effect/Scrim
Dot/Flat
Imagery should reveal the actual product, post, or creative state. Avoid decorative stock treatment when the user needs to inspect content.
Show product, outfit, post preview, creator frame, or chart state directly.
Media previews are image-only. Metadata lives below or beside the media frame.
Do not hide weak imagery behind blur, glow, or vague AI styling.
Copy should sound like a sharp teammate. Concrete, brief, and tied to the next action.
Ship competitor response before 3 PM
Delivery clarity is the risk window.
68% ready / ETA 18m
Elevate, unleash, next-gen
When this page is imported to Figma, split it into brand pages and keep component sets in the separate component library.
Positioning, owner, review date, and product naming.
Principles, expression, and use/avoid rules.
Neutral palette, cyan rules, semantic color roles.
Manrope roles only; tabular numerals via font features.
Document grid, section grid, content rows, responsive collapse.
Stage, neutral panel, ink, white surface, radius, effects.
Media direction, chart marks, and product copy rules.