Sections Stay Flat
Page sections are full-width bands with capped inner content. Cards are reserved for repeated items and framed tools.
Canonical reference for governed ERP.AI and Neo public-site primitives. Use it to check ownership, states, token names, aliases, and migration rules before adding a new button, menu, card, hero, icon, or section pattern.
The system reads like an engineering catalog. Borders carry layout, red carries action, and typography separates operator labels from body prose.
Page sections are full-width bands with capped inner content. Cards are reserved for repeated items and framed tools.
The red button is the dominant choice. Secondary actions use beige or ghost treatment based on weight.
Arrows, checks, carets, and utility symbols render as icons so scale, stroke, and placement are controllable.
Shared primitives are documented once, styled once, and reused through aliases while old templates migrate. App CSS can place a primitive, but cannot redefine it.
packages/chrome/src/_includes/macros/button.njk
.btn plus variant, size, loading, and icon-only classes.packages/chrome/src/assets/css/chrome.css
.system-cta-*, .system-menu*, .system-meta-row*, and migration aliases.apps/web-lab/src/assets/css/components.cssapps/web-neo/src/assets/css/components.css
Primary, secondary, ghost, menu, loading, and icon-only actions must be visually distinct before a visitor reads the label, with accessible states built in.
.btn--primary
Main command in a tool, form, or compact UI surface.
.btn--secondary
Neutral peer action with lower color weight.
.btn--outline
Utility control, icon-only button, or low-risk action.
.system-cta-primary
One dominant conversion action per hero or action group.
.system-cta-secondary
Second human choice with the same footprint as primary.
.system-cta-ghost
Tertiary command, low-weight menu trigger, or inline CTA.
Hover and focus must use tokenized color, border, shadow, and outline values. Disabled buttons set aria-disabled or disabled, loading buttons use aria-busy, and icon-only buttons require an accessible name.
Peer to primary in layout, lower emphasis through neutral surface.
Menu trigger or low-emphasis command. Text treatment, no box.
Compact chrome action. It can be red because it sits outside content hierarchy.
Use for tool controls when the icon is already familiar.
Loading actions set aria-busy, show the spinner, and block repeat activation.
Icons can stand alone when they describe a concept, metric, or section. Keep them unboxed unless the element is an actual button or tool control.
Quote treatments use the established web-lab pattern: decorative glyph, serif italic copy, and mono attribution. Rules and audit notes use compact callouts instead of masquerading as quotes.
Your agent's relationship with ERP.AI is a bearer token and an HTTP call.
The BYOA principle
Use inside editorial sections when a sentence deserves a deliberate dwell point.
Use when the content is operational guidance rather than an editorial sentence.
Eyebrows are structure, not decoration. ERP and CRM feature pages use a boxy bracket for page identity, while section and card labels stay lighter.
Box plus domain chip plus plain label. Used on ERP and CRM feature subpage heroes.
Dark numeric chip with text label. Used above section headings inside feature pages.
Baseline-aligned monogram and mono label. Kept quieter than the card title.
Small signal mark plus label. Good for page state or compact metadata rows.
Accent colors are named by function. Each visible sample below uses the token directly, so drift is obvious during review.
--background
--foreground
--border
--red
--grn
--ylw
--pur
--surface-dim
The system has no freehand tiny copy. Use the text tokens by role: 12px is the preferred small-text floor, 9px is the absolute communication minimum, and 8px is decorative only.
--fs-micro
8px
Decorative-only ticks, counters, or nonverbal marks. Not communicative text.
--fs-caption
9px
Absolute minimum for communicative text: badges, footnotes, and very short notes.
MINIMUM TEXT
--fs-label
10px
Short labels and compact operator cues.
SHORT LABEL
--fs-chip
11px
Chip labels, compact tags, and dense card metadata.
COMPACT TAG
--fs-xs
12px
Preferred floor for small readable UI text and metadata.
Small readable UI text
--fs-body
16px
Default body copy, documentation prose, and page communication.
Default body text
Code examples use semantic <pre><code> wrappers so the shared
scrollbar primitive applies automatically. Inline code stays compact and tokenized.
# Register your agent
curl -X POST https://api.erpai.studio/v1/agents \
-H "Authorization: Bearer $KEY" \
-d '{"name":"collections-agent","scope":"ar:write"}'
Use for commands, API examples, config fragments, and export snippets. Keep the frame one pixel and let <pre> own horizontal scrolling.
Inline commands such as pnpm --filter web-lab build,
file references such as components.css, and class names
such as .system-cta-primary use mono text without becoming chips.
# muted comment
"quoted value"
--token-name
Use color sparingly. Comments mute, strings take caution yellow, and token names can use the red signal.
A framed element should communicate a repeated object, a tool, or a selectable unit. Page sections themselves stay unframed.
Bordered surface for simple repeated objects. Hover can lift, but the shape stays sharp.
ERP/CRM agent listing treatment with quiet eyebrow, headline, summary, and dashed metadata row.
Long-form skill documentation card. Heavier frame and hard shadow for prose stages, with enough inset for reading rhythm.
Tool surfaces can be boxed because they contain direct manipulation or selectable rows.
Dense catalog cards carry product identity, pricing metadata, and status at scanning speed.
Allowed only inside .live-dashboard: softer app-preview vocabulary, scoped and contained so it does not leak into marketing pages.
Hero variants should be chosen by page job. The system has enough range without inventing a new hero shape for every page.
Homepage only. Two audience halves, hoverable panels, catalog entry point.
Standard hero-atsh with panel, stats, CTA, and supporting prose.
Used by pricing, proto, BYOA, startups, contact, and focused marketing pages.
Single-column, high whitespace, cinematic reveal. Used when the page needs a strong thesis.
Centered product subpage hero with bracket eyebrow, highlighted title segment, and microcopy ticks.