All doc apps in the marketplace must produce pages that are visually consistent with the the knowledge-base design system. This guide defines the required visual standards.
Use only the canonical brand palette. Do not introduce custom brand colors.
| Token | Hex | Usage |
|---|---|---|
--color-kb-500 |
#af144b |
Primary brand, links, active states, focus rings |
--color-kb-600 |
#93103f |
Hover state for primary elements |
--color-kb-400 |
#d4547a |
Accents, secondary highlights |
--color-kb-100 |
#f0d0da |
Subtle tint backgrounds (light mode) |
--color-kb-50 |
#f8eaee |
Very light tint |
--color-kb-25 |
#fdf8f9 |
Page background (light mode) |
--color-kb-950 |
#1b0e12 |
Heading text (light mode) |
Do not use raw hex values for brand colors in your styles — always reference the tokens.
| Role | Font | Token |
|---|---|---|
| Body / UI | Inter, Noto Sans | --font-sans |
| Code / mono | SF Mono, Fira Code | --font-mono |
Ensure Inter is loaded from Google Fonts or bundled:
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">| Token | Value | Usage |
|---|---|---|
--radius-sm |
6px |
Buttons, code badges |
--radius-md |
12px |
Cards, inputs |
--radius-lg |
16px |
Panels, modals |
--radius-xl |
20px |
Large feature cards |
Dark mode is class-based: add class="dark" to <html> (default in standalone builds).
The marketplace propagates the user's theme preference to all embedded apps.
Required dark-mode variable overrides (copy from src/input.css):
.dark {
--bg-page: #0a0d14;
--bg-card: #111827;
--bg-strong: #1f2937;
--bg-subtle: #1a2236;
--border: #1f2937;
--text-heading: #ffffff;
--text-body: #d1d5db;
--text-muted: #9ca3af;
}- Fixed left sidebar, 64px wide (
w-64) - Background:
var(--bg-card) - Border right:
1px solid var(--border) id="sidebar"required for marketplace chrome injection- In headless mode:
top: 0(marketplace chrome handles the offset) - In standalone mode:
top: 56px(offset by site header)
- Left margin:
ml-64(desktop), full-width on mobile - Max prose width:
max-w-3xlinside content - Use
@tailwindcss/typographyprose classes for markdown-rendered content
color: var(--color-kb-500);
text-decoration: none;
/* hover */
text-decoration: underline;
color: var(--color-kb-600);background: #0f172a;
border: 1px solid var(--border);
border-radius: var(--radius-md);background: var(--bg-strong);
border: 1px solid var(--border);
border-radius: 4px;
padding: 1px 5px;
font-size: 0.85em;border: 1px solid var(--border);
border-radius: var(--radius-md);
/* thead */
background: var(--bg-strong);
/* tr:hover */
background: var(--bg-strong);border-left: 4px solid var(--color-kb-500);
background: var(--bg-subtle);
border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
padding: 0.75rem 1rem;- All interactive elements must have accessible names (
aria-labelor visible text) - Focus rings must use
--color-kb-500with sufficient contrast - Images must have
altattributes - Sidebar navigation must use
<nav>witharia-label="Documentation"
- Only brand color tokens used (no raw hex brand colors)
- Inter font loaded
- Both light and dark CSS variable sets defined
-
id="sidebar"present on the left navigation -
id="content"or<main>wraps the prose area - No inline styles that override design tokens with hardcoded values