Identity / Guidelines

Give every perspective a seat.

The supplied Small Council identity, ready for everyday use.

Brand foundation

Positioning: a personal thinking workspace where people build a council of AI advisors, explore multiple perspectives and maintain context across conversations.

Promise: Give every perspective a seat.

Primary line: Many minds. Clearer thinking.

Product description: Build your own council of AI advisors. Chat individually, bring them together to brainstorm and debate, and organize conversations into spaces with shared memory.

Principles:

  1. Distinct minds: make expertise, personality and perspective legible.
  2. Useful friction: preserve thoughtful disagreement rather than forcing agreement.
  3. Lasting context: make the context carried between conversations easy to inspect.
  4. User agency: recommendations inform the user; the user decides.

Personality: thoughtful, candid, composed, curious. Avoid fantasy courts, royal insignia, gavels, robot mascots and mystical claims about AI intelligence.

Voice

Use short active sentences and concrete verbs: ask, invite, compare, review, save. Keep language natural. Say “AI advisor,” not “expert human.” Name uncertainty and the next useful step.

Context Copy
Marketing heading Many minds. Clearer thinking.
Marketing body Build your own council of AI advisors. Explore different perspectives and keep the context that matters.
Empty space Your next idea starts here. Start a conversation or bring your council together.
First council Who should join this council?
Primary action Start council
Solo conversation Chat with advisor
Meeting composer Ask a follow-up or invite another view…
Synthesis Review the recommendation.
Disagreement Two advisors disagree on the timing.
Memory confirmation Save this to the space memory?
Generation failure This advisor couldn’t respond. Try again.
Memory failure This wasn’t saved. Try again.
Delete confirmation Remove this memory? Future conversations will no longer use it.

Use the memory deletion wording only when the implemented behaviour matches it. Do not promise perfect recall, confidentiality, source verification, or automatic consensus without supporting functionality.

Use the full lockup to introduce the brand, and the mark alone in navigation, app icons and compact contexts. Clear space is at least one-quarter of the mark artboard width on every side. Minimum sizes refer to the complete SVG viewBox.

Asset Minimum screen size Usage
Standard mark 24 px Navigation, brand signature
Micro mark 16 px Favicons and 16–23 px contexts; central dot removed
Wordmark lockup 156 px width Marketing and full product header
Wordmark lockup in print 38 mm width Print applications

Primary lockup: ink on white or canvas. Reversed: white on cobalt or ink. Lime is permitted on ink for brand moments. Black is available for single-colour production. Keep the symbol upright, proportional, and a single solid colour. Do not rebuild the letterforms, change the spacing, stretch, rotate or add shadows. White SVGs are transparent assets; inspect them over a dark background.

Colour

Name Hex Role
Council cobalt #3155D9 Primary actions and signature brand colour
Deep ink #172229 Headings and navigation
Fresh lime #D5F27D Small highlights; use ink text
Canvas #F5F7FA Light application background
White #FFFFFF Cards and reading surfaces
Slate #52616B Secondary text
Divider #DCE2E8 Decorative boundaries; not essential input outlines
Control border #7A8793 Essential control boundaries

Approximate surface allocation: 80% neutrals, 15% ink/cobalt, 5% lime. Do not use lime as a warning colour. Semantic success, warning and error colours are separate from brand colours. Use tokens.json as the authoritative mapping for both themes.

Advisor identity uses initials, a displayed name and role; colour is an additional cue. Illustrative roles: Strategist (cobalt), Critic (amber), Explorer (teal). These are example advisors rather than fixed system personas. Colour does not imply accuracy or rank.

Type and layout

Use bundled DejaVu Sans, then system-ui, sans-serif. Regular 400 for body; bold 700 for headings, labels and controls. Logos contain outlined letterforms.

Role Size / line height Weight
Display 48 / 56 px 700
Page title 32 / 40 px 700
Section title 24 / 32 px 700
Body and chat 16 / 24 px 400
Labels and controls 14 / 20 px 700
Metadata 12 / 16 px 400

At narrow widths, page titles become 28/36 and large marketing headings can become 36/44. Preserve browser zoom and text resizing. Avoid using metadata sizing for substantive advisor responses.

Use a 4 px grid: 4, 8, 12, 16, 24, 32, 48, 64 px. Control radius 8, cards 12, dialogs 16, chips 999 px. Default cards have a 1 px divider and no shadow. Reserve a subtle shadow for floating menus and dialogs.

Desktop at 1024 px and up: 240 px sidebar, 24 px gutters, content capped at 1280 px. Between 768 and 1023 px, the same CSS shell is available but implementations may collapse navigation when content requires it. Below 768 px: a single conversation pane and 16 px gutters; provide a navigation drawer with a clearly labelled menu button. The stylesheet hides the persistent sidebar at this breakpoint; the application must supply drawer behaviour. Keep conversation text at 72ch maximum.

Components and interaction contracts

Buttons

One primary action per task region. Desktop minimum height 40 px; touch minimum 44 px. Use specific labels. A secondary action has a visible border. Destructive confirmations use explicit wording, such as “Remove memory.”

State Behaviour
Default Cobalt fill with white text
Hover Deeper cobalt; secondary uses a subtle surface tint
Pressed Darker fill
Focus 2 px visible ring with 2 px offset
Disabled Native disabled attribute; reduced opacity; no interaction
Loading Keep width and accessible name; show “Starting…”; prevent repeat submission

aria-disabled="true" only communicates state. Application code must also prevent activation. aria-busy announces progress; it does not stop duplicate requests by itself.

Fields

Persistent visible label, optional help text, 44 px minimum height. Use aria-describedby for help and errors. Invalid state uses aria-invalid="true", an error border and a plain-language message. Do not erase input after a failure. Disabled fields retain their label.

Advisor cards

Show initials or avatar, name, expertise and a short personality description. Provide one explicit action: “Add advisor” or “View advisor.” Do not make an entire card clickable if it contains other interactive controls. Include the words “AI advisor” in profile and conversation contexts.

Messages

Persistent speaker label plus AI designation. Do not distinguish speakers through colour alone. Preserve paragraphs, lists and code blocks. Message text must wrap without forcing page-wide horizontal scrolling. Make citations and sources reviewable when available; do not invent them.

Stream within a stable message region. Avoid announcing each streamed token; announce a completed response through a polite live region. Do not move focus or force-scroll if the user is reading earlier messages. Show a “New responses” affordance instead. Include a labelled “Stop generating” control while responses are being generated.

Meeting and synthesis

The user names the question and selects participants before starting. Allow individual advisor chats and group council meetings to share the same visual language. Clearly identify which mode is active.

Meeting state Meaning
Discussion Advisors are contributing views
Proposed synthesis A draft brings the perspectives together
Consensus All participating advisors explicitly agree
Open disagreement Concerns remain unresolved
Partial response At least one selected advisor did not complete a response

Do not infer consensus merely because a summarizer generated an answer. A synthesis panel includes recommendation, supporting rationale, agreements, dissent and next steps. If someone is missing, name them before inviting the user to adopt the result. Agreement is not evidence of factual correctness.

Spaces and memory

Use spaces for related conversations and shared context. Above a meeting, state which space memory is being used. A memory entry includes its content, source conversation, saved date and review controls. Identify inferred notes separately from user-supplied facts. Make additions, corrections and removals visible. Handle failure with “This wasn’t saved. Try again.” rather than showing a success state.

Empty, error and busy states

Empty states explain the object and provide one next action. Error states name the failed action, preserve the user’s work and provide retry when appropriate. A partial meeting should preserve completed responses. Loading states use a short label and stable layout; avoid decorative pulsing across the whole chat.

Dialogs and menus

Prefer native <dialog> where appropriate; otherwise implement the complete accessible dialog pattern. Move focus into dialogs, keep keyboard navigation inside a modal, support Escape, and restore focus to the trigger. Include a visible close or cancel action. Announce the dialog title. Menus must support keyboard navigation and close when focus moves away appropriately.

Dark theme

Set data-theme="dark" on the root. Dedicated canvas #111A20, surface #1C2932, text #F1F5F8, muted #AFC0CF. Action fill #4263E8; links #BDD0FF. White primary action text remains legible. Essential control borders use #748994; decorative dividers use #344650. Keep semantic colour meanings identical in both themes. Respect the user’s chosen theme rather than switching on a timer.

Accessibility and motion

  • Normal text: at least 4.5:1 contrast. Large text and meaningful UI boundaries: at least 3:1. Approved example ratios are in the PDF and contrast-report.json.
  • Decorative borders are intentionally subtle. Use control-border tokens when a boundary is necessary to identify a field or button.
  • Keyboard users must reach every action, see focus, and escape menus and dialogs.
  • Provide 44 px touch targets, visible names and readable error text. Never use colour as the only cue.
  • Verify 200% text resizing and 400% zoom/reflow; adapt complex layouts to one column.
  • Respect prefers-reduced-motion. Default transitions are 120–240 ms with cubic-bezier(.2,0,0,1) easing; do not animate entire conversation histories.
  • Test with a screen reader, keyboard and actual long content. Contrast calculations and CSS alone do not establish whole-product accessibility.

Release checklist

Confirm light/dark contrast, keyboard traversal, modal focus, mobile navigation, streaming announcements, long advisor names, loading/error states, preserved dissent and inspectable memory. The included HTML is a visual reference rather than production conversation logic.

Original reference

Download the supplied PDF from the asset library. See assets for the unchanged SVGs and font license. The live UI guide extends the source kit with DaisyUI components.