Apollo replica · design system

Tokens, components, patterns

A real, editable DS extracted from Apollo's static snapshot. Every screen built on top should consume var(--*) tokens and .ap-* classes from this folder, never the bundled Tailwind output.

01 — Tokens

Color

Semantic accents in HSL-triplet form. Compose alpha at the call site (hsl(var(--primary) / 0.15)).

--primary
238 70% 60%
--accent
210 100% 60%
--success
142 71% 45%
--warning
38 92% 50%
--destructive
0 72% 51%
--primary-glow
238 80% 70%
TokenPairNotes
--primary--primary-foregroundIndigo. Active nav, send button, primary CTAs.
--accent--accent-foregroundBright blue. Reserved highlight; rarely standalone.
--success--success-foregroundGreen. Live indicator, Apply Changes CTA, success states.
--warning--warning-foregroundAmber. "Waiting" status pill.
--destructive--destructive-foregroundRed. Failed status, destructive actions.
02 — Tokens

Surface

App chrome — backgrounds, text, borders. Each surface has a foreground pair so text is always legible.

--background
240 20% 99%
--foreground
240 10% 10%
--card
0 0% 100%
--secondary
240 5% 96%
--muted
240 5% 96%
--muted-foreground
240 4% 46%
--border / --input
240 6% 90%
--ring
238 70% 60%
03 — Tokens

Typography

System font stack. No webfont. Type scale below shows the sizes that the snapshot actually uses; --text-xl is reserved for future headings.

--text-xs · 12pxMeta, labels, status pills
--text-sm · 14pxDefault UI body text
--text-base · 16pxChat body, prose
--text-lg · 18pxSection headings
--text-xl · 20pxReserved
--text-2xl · 24pxCreate Task heading
--text-3xl · 30pxWeekly Goals
TokenValueNotes
--font-sansui-sans-serif, system-ui, …Default body / UI font.
--font-monoui-monospace, SFMono-Regular, …Code, IDs, numerics, eyebrows.
--weight-normal / medium / semibold / bold400 / 500 / 600 / 700All four observed in the snapshot.
04 — Tokens

Spacing

Tailwind default 4px scale. The snapshot's class strings (e.g. gap-2, p-6) map onto these tokens; new screens authored in pure CSS should reach for the same values.

1
1·5
2
3
4
5
6
8
10
05 — Tokens

Radius

Apollo sets --radius: .75rem as its base; md and sm are derived via calc(), mirroring shadcn's convention.

xs · 4
sm · 8
md · 10
base · 12
full
06 — Tokens

Shadow

Subtle ink-tinted shadows. Hue matches --foreground so elevation feels native to the cool-tinted background.

sm
md
lg
xl
07 — Tokens

Motion

Two transition durations and two easings cover everything in the snapshot.

TokenValueNotes
--duration-fast150msHover tints, focus rings.
--duration-base200msTab activation, nav-tab fill.
--ease-outcubic-bezier(.16, 1, .3, 1)Default for entrances.
--ease-in-outcubic-bezier(.4, 0, .2, 1)Default for state changes.
08 — Components

Buttons · .ap-btn

Variants: .primary, .secondary, .ghost, .icon. Sizes: default + .sm.

ClassVisual
.ap-btnBase: 40px tall, transparent background, 10px radius.
.ap-btn.primaryFilled indigo, white text. Send / Submit / Search.
.ap-btn.secondaryWhite surface with input border, foreground text.
.ap-btn.ghostTransparent until hover (then secondary fill).
.ap-btn.iconSquare 40×40; combines with any variant.
.ap-btn.sm28px tall, 12px font; for toolbars and inline actions.
10 — Components

Card · .ap-card

White surface with 1px border, 12px radius, soft shadow. Header / body slots provided as separate classes.

Create Task

Create a new task version or concept task

Body content goes here.

ClassVisual
.ap-cardOuter wrapper.
.ap-card-headerPadded title block, 24px gap above body.
.ap-card-title24px semibold, tight tracking.
.ap-card-subtitle14px muted-foreground.
.ap-card-bodyPadded body slot.
11 — Components

Form fields · .ap-input · .ap-select · .ap-textarea

All three share height (40px), border, and radius. Pair with .ap-label above and .ap-help below.

Describe what you want to modify or add to this version.

ClassVisual
.ap-label14px medium, sits above the field.
.ap-inputSingle-line text input. 40px tall.
.ap-selectCombobox-style trigger button. Add .placeholder for unset state.
.ap-textareaMulti-line input. min-height: 80px; vertical-resize allowed.
.ap-help12px muted-foreground; sits below the field.
12 — Components

Status pill · .ap-status-pill

Tiny rounded-full label on task cards. Variants map to semantic colors.

Waiting Pending TL Done Failed Archived
ClassVisual
.ap-status-pillBase. Defaults to muted.
.warningAmber — Waiting.
.pending-tlPurple — Pending TL.
.successGreen — Done / Succeeded.
.destructiveRed — Failed.
.mutedGray — Archived / inactive.
13 — Components

Chat bubble · .ap-chat-bubble

Agent (Developer) bubbles use a light indigo wash; auditor bubbles use the neutral secondary fill. Up to 70ch wide.

Developer · May 2, 22:46

✅ FIXED

Context: Beginning of the game — first 5 shapes are now simple.

  1. Horizontal line 3×1
  2. Square 2×2
  3. Vertical line 1×3

Tweakable: scripted shape ids in src/world/index.ts.

Antontrus · May 2, 22:14

Revert the zigzag back to how it was.

ClassVisual
.ap-chat-bubbleBase bubble — padding, radius, max-width.
.ap-chat-bubble.agentLight indigo wash — Developer messages.
.ap-chat-bubble.userSecondary gray — auditor messages.
14 — Components

Task card · .ap-task-card

Single card in the right-rail task list. Selected task gets .is-active for the indigo border + shadow.

4916 / 1
Waiting 20m ago

Add bomb blocks to pre-filled rows triggering cascade chain reactions

Give simpler shapes in early moves
woodoku-blast / woodoku blast 7 tetris scroller
4797 / 1
Pending TL 1d ago

Replace Sort Eggs with monster discovery viewfinder

monster-legends
ClassVisual
.ap-task-cardOuter card. Hover lifts to --shadow-md.
.ap-task-card.is-activeIndigo border + tinted indigo shadow + 4% indigo wash. Marks the currently-loaded task.
.ap-task-card-headPin + id + version + status dot, single row.
.ap-task-card-metaStatus pill + relative timestamp.
.ap-task-card-title14px semibold, normal line-height.
.ap-task-card-summaryLatest message preview (icon + truncated paragraph).
.ap-task-card-footSlug breadcrumb + More toggle.
15 — Components

Tabstrip · .ap-tabstrip + .ap-tab

Center-pane sub-tabs (Scene Editor / Chat / Pins / Files / Workspace), Create-Task mode toggle, status filter row.

ClassVisual
.ap-tabstripContainer — muted gray strip, 4px inset.
.ap-tabInactive tab — muted text, transparent.
.ap-tab.activeActive tab — white surface, foreground text, soft shadow.

Apollo DS · derived from screens/apollo/auditor.html · long-tail patterns in patterns.md.