Brand system · v1

You tell it, it ships.

That is the product: you tell Jomoq what you want, and it becomes the thing. The Q's tail breaking out of its box is the whole idea in one stroke — the conversation that escapes the chat window and ships as something real.

02 — Color

Monochrome, honest status colors

A single monochrome accent — white on dark, near-black on light — over a neutral graphite (dark) or paper (light) ramp. Green means success, amber means warning, red means danger — always. Values below are computed live from the current theme; flip the toggle to see both.

03 — Typography

Noto Sans, everywhere.

One family carries everything you read and everything you use — prose, docs, headlines, buttons, sidebars, menus, settings, the builder. Weight does the work: 600–700 for headings, 500 for labels, 400 for body. KaTeX renders formulae in its own faces, and Noto Sans Mono is the technical thread for code, data, and the eyebrow label.

Display — Noto Sans 700

Chat for everything. Build when you want.

Interface — Noto Sans 400 / 500 / 600

Buttons, labels, sidebars, menus, settings, model pills and the whole builder. The same Noto Sans as prose — weight and size carry the hierarchy, staying legible at the 12–13px of dense chrome. 600 for headings, 500 for labels.

Reading — Noto Sans 400 / 600 / italic

Jomoq keeps the whole job in one thread: questions, files, research with sources, and the moment a reply is not enough, a live page. 16px body, 1.5–1.65 line height, muted color for supporting text, italic for emphasis and 600 for weight.

Math — KaTeX Math

∫₀^∞ e−x² dx = √π ⁄ 2  ·  ∑ aₙ xⁿ  ·  α β γ δ ∂ ∇ ≤ ≥ ≈ ∈ ℝ

Technical — Noto Sans Mono 400–600

> diff_apply --op replace_text · 200 OK · 8,192 tokens
THE EYEBROW LABEL: 11PX · UPPERCASE · +0.08EM

Scale
32–68pxHero display
22–36pxSection title
16pxBody text
14pxUI labels, buttons
13pxDense UI, messages
11pxEyebrow / micro
04 — Space, radius, depth, motion

The scales

Everything sits on a 4px grid. Nested corners are concentric (outer = inner + padding). Depth is flat — hairline lines, never shadows. Motion is 120–260ms on a sharp ease-out — and none at all for high-frequency actions.

Spacing — 4px grid
--space-1
--space-2
--space-3
--space-4
--space-5
--space-6
--space-7
--space-8
Radius
4
8
12
16
20
pill
Elevation — flat, every shadow token is none
shadow-1
shadow-2
shadow-3
Motion — hover & press me
05 — Voice

Plain, confident, technical

Short sentences. No hype. We say what the product does, and microcopy stays calm.

We say

"Start a thread." · "Copied." · "Reply finished." · "When a reply is not enough, build it."

We never say

"Supercharge your workflow! 🚀" · "Unleash the power of AI" · "Oops! Something went wrong 😢"

06 — Components

The component library

Rendered live from the production stylesheet — these are the real classes, not mockups. Flip the theme toggle and everything below follows.

Buttons

.btn .btn-primary / .btn-secondary / .btn-danger / .btn-sm / .btn-pill

Primary is tactile: a 2px "lip" that compresses on press. Every button scales feedback within 120ms and shows a visible focus ring.

Select

.custom-select
  • Llama 3.3 70B · Groq
  • Deepseek V3
  • Gemini 2.5 Flash

Inputs & checks

.settings-field · .custom-check

Messages

.message-row .message .user / .assistant
Make the hero headline bigger and switch the CTA to "Start free".
Done — the hero now uses the display scale and the primary CTA reads Start free. Want the same treatment on the pricing cards?
.landing-hero h1 {
  font-size: clamp(2.5rem, 6.4vw, 4.25rem);
}

Agent activity

.live-agent-bubble · .streaming-preview
Editing index.html
read_file
diff_apply · hero section
write_file
Updating the live preview…

Status

.sync-pill · .status-pill · .provider-tag · .token-meter
Synced Syncing… Sync failed GROQ
42%

Menus

.mode-menu · .vscode-context-menu

Eyebrow & kbd

.eyebrow · kbd
The signature label — mono, uppercase, tracked
Press K to switch models, Enter to send.
AI workspace

Dialog

.storage-modal-card

Clear local data?

This removes chats, playgrounds, and version history stored in this browser. Synced data stays in your account.

Dialogs open at 260ms from center with focus trapped inside; exits are faster than entries. Destructive confirms always pair a quiet cancel with an explicit danger action.

07 — Assets

Files

jomoq-logo.svgWordmark — currentColor SVG
favicon.svgThe mark — accent tile
DESIGN.mdWritten spec for this system
css/index.cssDesign tokens — the :root theme blocks