@nurix/etna 0.18.18 → 0.18.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/data/harness-index.json +1 -1
  2. package/data/harnesses/code/harness.json +2 -2
  3. package/data/harnesses/code/rules/general.md +2 -1
  4. package/data/harnesses/code/skills/design/SKILL.md +65 -0
  5. package/data/harnesses/code/skills/design/data/catalog/rules.csv +132 -0
  6. package/data/harnesses/code/skills/design/data/design-md/SCHEMA.md +317 -0
  7. package/data/harnesses/code/skills/design/data/design-md/library/airbnb.md +235 -0
  8. package/data/harnesses/code/skills/design/data/design-md/library/airtable.md +232 -0
  9. package/data/harnesses/code/skills/design/data/design-md/library/anthropic-claude.md +220 -0
  10. package/data/harnesses/code/skills/design/data/design-md/library/apple.md +220 -0
  11. package/data/harnesses/code/skills/design/data/design-md/library/binance.md +223 -0
  12. package/data/harnesses/code/skills/design/data/design-md/library/bmw.md +219 -0
  13. package/data/harnesses/code/skills/design/data/design-md/library/cal.md +220 -0
  14. package/data/harnesses/code/skills/design/data/design-md/library/clay.md +220 -0
  15. package/data/harnesses/code/skills/design/data/design-md/library/clickhouse.md +220 -0
  16. package/data/harnesses/code/skills/design/data/design-md/library/cohere.md +227 -0
  17. package/data/harnesses/code/skills/design/data/design-md/library/coinbase.md +237 -0
  18. package/data/harnesses/code/skills/design/data/design-md/library/composio.md +220 -0
  19. package/data/harnesses/code/skills/design/data/design-md/library/cursor.md +220 -0
  20. package/data/harnesses/code/skills/design/data/design-md/library/elevenlabs.md +220 -0
  21. package/data/harnesses/code/skills/design/data/design-md/library/expo.md +228 -0
  22. package/data/harnesses/code/skills/design/data/design-md/library/figma.md +221 -0
  23. package/data/harnesses/code/skills/design/data/design-md/library/framer.md +236 -0
  24. package/data/harnesses/code/skills/design/data/design-md/library/hashicorp.md +220 -0
  25. package/data/harnesses/code/skills/design/data/design-md/library/ibm.md +234 -0
  26. package/data/harnesses/code/skills/design/data/design-md/library/intercom.md +240 -0
  27. package/data/harnesses/code/skills/design/data/design-md/library/kraken.md +236 -0
  28. package/data/harnesses/code/skills/design/data/design-md/library/linear-app.md +237 -0
  29. package/data/harnesses/code/skills/design/data/design-md/library/lovable.md +220 -0
  30. package/data/harnesses/code/skills/design/data/design-md/library/meta.md +220 -0
  31. package/data/harnesses/code/skills/design/data/design-md/library/minimax.md +220 -0
  32. package/data/harnesses/code/skills/design/data/design-md/library/mintlify.md +220 -0
  33. package/data/harnesses/code/skills/design/data/design-md/library/miro.md +233 -0
  34. package/data/harnesses/code/skills/design/data/design-md/library/mistral-ai.md +220 -0
  35. package/data/harnesses/code/skills/design/data/design-md/library/mongodb.md +236 -0
  36. package/data/harnesses/code/skills/design/data/design-md/library/notion.md +220 -0
  37. package/data/harnesses/code/skills/design/data/design-md/library/nvidia.md +222 -0
  38. package/data/harnesses/code/skills/design/data/design-md/library/ollama.md +226 -0
  39. package/data/harnesses/code/skills/design/data/design-md/library/opencode-ai.md +223 -0
  40. package/data/harnesses/code/skills/design/data/design-md/library/posthog.md +234 -0
  41. package/data/harnesses/code/skills/design/data/design-md/library/raycast.md +220 -0
  42. package/data/harnesses/code/skills/design/data/design-md/library/replicate.md +220 -0
  43. package/data/harnesses/code/skills/design/data/design-md/library/resend.md +285 -0
  44. package/data/harnesses/code/skills/design/data/design-md/library/revolut.md +225 -0
  45. package/data/harnesses/code/skills/design/data/design-md/library/runwayml.md +219 -0
  46. package/data/harnesses/code/skills/design/data/design-md/library/sanity.md +251 -0
  47. package/data/harnesses/code/skills/design/data/design-md/library/sentry.md +244 -0
  48. package/data/harnesses/code/skills/design/data/design-md/library/shopify.md +227 -0
  49. package/data/harnesses/code/skills/design/data/design-md/library/slack.md +240 -0
  50. package/data/harnesses/code/skills/design/data/design-md/library/spacex.md +252 -0
  51. package/data/harnesses/code/skills/design/data/design-md/library/spotify.md +248 -0
  52. package/data/harnesses/code/skills/design/data/design-md/library/stripe.md +241 -0
  53. package/data/harnesses/code/skills/design/data/design-md/library/supabase.md +255 -0
  54. package/data/harnesses/code/skills/design/data/design-md/library/superhuman.md +226 -0
  55. package/data/harnesses/code/skills/design/data/design-md/library/tesla.md +233 -0
  56. package/data/harnesses/code/skills/design/data/design-md/library/theverge.md +248 -0
  57. package/data/harnesses/code/skills/design/data/design-md/library/together-ai.md +220 -0
  58. package/data/harnesses/code/skills/design/data/design-md/library/uber.md +220 -0
  59. package/data/harnesses/code/skills/design/data/design-md/library/vercel.md +220 -0
  60. package/data/harnesses/code/skills/design/data/design-md/library/voltagent.md +245 -0
  61. package/data/harnesses/code/skills/design/data/design-md/library/warp.md +220 -0
  62. package/data/harnesses/code/skills/design/data/design-md/library/webflow.md +220 -0
  63. package/data/harnesses/code/skills/design/data/design-md/library/wired.md +220 -0
  64. package/data/harnesses/code/skills/design/data/design-md/library/wise.md +220 -0
  65. package/data/harnesses/code/skills/design/data/design-md/library/x-ai.md +220 -0
  66. package/data/harnesses/code/skills/design/data/design-md/library/zapier.md +238 -0
  67. package/data/harnesses/code/skills/design/data/design-md/nurix.md +217 -0
  68. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/command-center.tsx +249 -0
  69. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/create-edit.tsx +249 -0
  70. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/dashboard.tsx +248 -0
  71. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/entity-detail.tsx +245 -0
  72. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/list-detail.tsx +223 -0
  73. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/log-stream.tsx +249 -0
  74. package/data/harnesses/code/skills/design/data/operator-pack/fixtures.md +88 -0
  75. package/data/harnesses/code/skills/design/data/operator-pack/surface-catalog.md +132 -0
  76. package/data/harnesses/code/skills/design/data/operator-pack/trust-rubric.md +76 -0
  77. package/data/harnesses/code/skills/design/references/create.md +126 -0
  78. package/data/harnesses/code/skills/design/references/diagnosis.md +108 -0
  79. package/data/harnesses/code/skills/design/references/hard-rules.md +155 -0
  80. package/data/harnesses/code/skills/design/references/improve.md +85 -0
  81. package/data/harnesses/code/skills/design/references/interaction.md +77 -0
  82. package/data/harnesses/code/skills/design/references/introspect.md +100 -0
  83. package/data/harnesses/code/skills/design/references/lifecycle.md +73 -0
  84. package/data/harnesses/code/skills/design/references/personality.md +504 -0
  85. package/data/harnesses/code/skills/design/references/structure.md +138 -0
  86. package/data/harnesses/code/skills/design/scripts/derive-personality.mjs +706 -0
  87. package/data/harnesses/code/skills/design/scripts/detector.mjs +898 -0
  88. package/data/harnesses/code/skills/design/scripts/generate-fixtures.mjs +551 -0
  89. package/data/harnesses/code/skills/design/scripts/hook-config.json +11 -0
  90. package/data/harnesses/code/skills/design/scripts/phase-gate.mjs +386 -0
  91. package/data/harnesses/code/skills/design/scripts/preship-sweep.mjs +280 -0
  92. package/data/harnesses/code/skills/design/scripts/render-rung.mjs +690 -0
  93. package/data/harnesses/code/skills/design/scripts/scaffold.mjs +552 -0
  94. package/data/harnesses/code/skills/design/scripts/self-integrity.mjs +432 -0
  95. package/data/harnesses/etna/CLAUDE.md +1 -1
  96. package/data/harnesses/etna/harness.json +2 -2
  97. package/data/harnesses/etna/rules/general.md +2 -1
  98. package/data/harnesses/mobile/harness.json +2 -2
  99. package/data/harnesses/mobile/rules/general.md +2 -1
  100. package/package.json +1 -1
@@ -0,0 +1,220 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: xAI
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # xAI — the engineered-cosmic monochrome operator design
9
+
10
+ xAI's web surface is a near-black cosmic canvas broken only by white outline pills, a proprietary
11
+ geometric sans (Universal Sans) at weight 400 with extreme negative tracking, and uppercase tracked
12
+ GeistMono eyebrows that read like code comments — confidently sparse, unmarketed. This entry is the
13
+ *operator* reading of that brand: an internal tool (model-ops console, agent-run queue, inference
14
+ dashboard, log stream) in xAI's language. What carries: the stark near-monochrome discipline, the
15
+ near-black `#0a0a0a` ink, the single sunset-orange accent held scarce, the pill shape on interactive
16
+ controls, the geometric-sans display voice (weight 400, negative tracking, never bold), the mono-caps
17
+ eyebrow, and hairline-only flat depth. What stays behind: the 96px hero display, the edge-to-edge black
18
+ page, and the sunset/dusk gradient illustration accents.
19
+
20
+ **Light surface, cosmic inlay.** Inverting the whole page to near-black would be dark-mode-as-default,
21
+ which the light floor refuses; instead the operator surface is a cool near-white canvas, and xAI's
22
+ signature near-black is carried as the **cosmic inlay** — the sidebar rail and the terminal / log /
23
+ metric panels. Both machine blocks are fully valued; brand tokens that override a generic ban
24
+ (near-black `#0a0a0a` ink, pill buttons) are recorded plainly, and derivations where the corpus is
25
+ silent are annotated `# derived:`.
26
+
27
+ ## 1 Visual Theme
28
+
29
+ Light by default; dark is opt-in. The content floats on a faint cool near-white `background`
30
+ (`#fbfbfc`); cards step up to pure white `card` (`#ffffff`), so a panel reads by a hair of brightness
31
+ plus its hairline, never by shadow. Emphatically flat — the brand uses no shadows; cool hairline
32
+ `border`, type weight, and the near-white-to-white step carry every elevation cue. A single accent,
33
+ sunset orange `primary` (`#ff7a17`) — xAI's one brand chroma — is held scarce: the primary action, the
34
+ focus `ring`, the active-nav indicator. Ink is xAI's stark near-black `foreground` (`#0a0a0a`), which
35
+ returns as the cosmic inlay — a near-black `sidebar` rail and dark terminal / metric panels. Density is
36
+ `standard`, engineered-tight, stepping denser per archetype.
37
+
38
+ ## 2 Color Roles
39
+
40
+ Light values (the manifest carries hex — the corpus's native format). One accent — `primary` is the
41
+ only chromatic hue that carries UI meaning; the cosmic accent palette lives only in charts (§7), status hues speak only status.
42
+
43
+ | Role | Value | Allowed where |
44
+ | --- | --- | --- |
45
+ | `background` | cool near-white `#fbfbfc` | the page floor and content canvas — the dominant surface |
46
+ | `card` / `popover` | pure white `#ffffff` | cards and overlays — a slight bright lift off the near-white, read by hairline |
47
+ | `foreground` | stark near-black `#0a0a0a` | display and all primary ink — xAI's signature black |
48
+ | `muted` / `secondary` | cool light fill `#f2f3f5` | hover rows, quiet band tints, secondary-button fill |
49
+ | `muted-foreground` | cool gray `#7d8187` | labels, captions, secondary text — the brand's mute gray |
50
+ | `border` / `input` | cool hairline `#e6e7ea` | every separator, grid line, and field edge — one cool step, not an ink line |
51
+ | `primary` | sunset orange `#ff7a17` | the one primary action; the focus `ring`; the active-nav indicator |
52
+ | `primary-foreground` | near-black `#0a0a0a` | text on the sunset action — near-black reads on the bright orange (the brand's on-primary) |
53
+ | `accent` | cool selection lift `#eceef1` | selected / hovered rows and nav — a neutral cool step, never orange |
54
+ | `ring` | `primary` sunset | the focus outline — high-chroma, unmistakable even at 1px |
55
+ | `destructive` | clean red `#e5484d` | destructive actions and error state only |
56
+ | `success` / `warning` | green `#30a46c` / amber-gold `#d99126` | status signalling only, never chrome |
57
+
58
+ ## 3 Typography
59
+
60
+ `font-sans` is Universal Sans (the proprietary geometric brand face), with Inter the corpus's documented
61
+ open substitute — one sans carries body, UI, labels, and headings. `font-mono` is Geist Mono for IDs,
62
+ codes, timestamps, log lines, metric counters, and — the signature move — the uppercase tracked
63
+ **eyebrow** above every section head; numeric columns render `tabular-nums`. The defining trait is xAI's
64
+ restraint: the display sits at weight 400 with aggressive negative tracking (never bold — size and
65
+ gathering do the emphasis). The 96px hero stays behind; an operator surface tops out at a 24px title.
66
+
67
+ | Step | Role | Family | Size · line | Weight · tracking |
68
+ | --- | --- | --- | --- | --- |
69
+ | h1 | page title | sans | 24px / 1.2 | `font-weight-normal` (400) · `heading-tracking` |
70
+ | h2 | section head | sans | 19px / 1.3 | `font-weight-normal` (400) · -0.02em |
71
+ | h3 | card / group head | sans | 15px / 1.4 | `font-weight-strong` (500) · 0 |
72
+ | body | UI + prose | sans | 14px / 1.5 | `font-weight-normal` |
73
+ | small | labels, meta, dense table | sans | 13px / 1.4 | `font-weight-normal` |
74
+ | eyebrow | uppercase mono label | mono | 12px / 1.4 | 400, `+0.12em`, uppercase (GeistMono) |
75
+ | code | IDs, logs, amounts | mono | 13px / 1.5 | `font-weight-normal` |
76
+
77
+ Keep the display at 400 with gathered negative tracking — it is the brand; never bold it, and keep the eyebrow mono, not sans.
78
+
79
+ ## 4 Component Stylings
80
+
81
+ Every recurring operator component composes from the primitives — no literal values.
82
+ - **Button** — primary: filled sunset `primary` on near-black `primary-foreground`, **pill radius** (the pill is xAI). Secondary: white `card`, 1px `border`, `foreground`, pill. Ghost: transparent, `accent` on hover.
83
+ - **Input** — `background` fill, 1px `border` (`border-weight`), `radius` (8px, not pilled); focus draws the sunset `ring` at 1px, no glow.
84
+ - **Card** — white `card` surface on a 1px `border` — the bright step off the near-white carries the lift; `radius` 8px; shadow only when a true overlay must separate; inset by `density-inset`.
85
+ - **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `tabular-nums` on numeric columns; row selection lifts to `accent`; column headers wear the mono-caps eyebrow.
86
+ - **Side panel** — detail and edit open in the side panel (`side-panel-width`, `side-panel-width-rich` for content-heavy), beside the work, not over it.
87
+ - **Badge** — pill radius, `muted`/status fill, uppercase mono caption; status badges take `success` / `warning` / `destructive`, never `primary`.
88
+
89
+ ## 5 Layout
90
+
91
+ Base spacing unit 4px; the on-scale ramp is xAI's exact set — `2 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64`.
92
+ Shell dimensions map one-to-one to the layout primitives: sidebar `sidebar-width-expanded` (240px) /
93
+ `sidebar-width-collapsed` (56px), topbar `topbar-height` (52px, the brand's lean nav), side panel
94
+ `side-panel-width` (420px) / `side-panel-width-rich` (640px), modal cap `modal-width-max`, forms
95
+ `form-max-width`, tables full-width — engineered-tight, not editorial-loose. Density is governed
96
+ globally by `density-tier` and stepped per archetype by the surface catalog, never by absolute overrides.
97
+
98
+ ## 6 Depth
99
+
100
+ Flat and hairline-only — the brand uses no shadows. Depth comes from the surface step, cool hairlines, and the cosmic inlay:
101
+
102
+ - **0 — canvas** `background` (`#fbfbfc`), no border.
103
+ - **1 — panel / card** white `card` (`#ffffff`) on a 1px `border`; the bright step plus the hairline carries the lift. Selected / hover rows lift to `accent` (`#eceef1`).
104
+ - **2 — overlay** `popover` / side panel / modal — the one place `shadow-intensity` earns the faintest lift, enough to float above the near-white. Rank is surface, border, and position.
105
+ - **inlay — cosmic near-black** `#0a0a0a` with `#dadbdf` text and `font-mono` — the sidebar rail and terminal / log / metric panels, xAI's white-on-near-black soul carried into a light UI.
106
+
107
+ Focus is a 1px sunset `ring` outline (never a glow), visible everywhere because the orange is high-chroma; three z-levels: content, sticky chrome, overlay.
108
+
109
+ ## 7 Do's & Don'ts
110
+
111
+ - **Do** stay near-monochrome — near-black ink on cool near-white, hairlines and type weight before any color; the restraint is the brand.
112
+ - **Do** reserve sunset orange `primary` for the single primary action, the focus `ring`, and the active-nav indicator — its scarcity is what reads as voltage.
113
+ - **Do** pill the interactive controls (buttons, chips, badges) — the pill is xAI's shape system; keep cards, inputs, and panels at the 8px `radius`.
114
+ - **Do** keep the display at weight 400 with negative tracking, wear GeistMono uppercase for eyebrows and metric counters, and render every code / log / terminal surface in `font-mono` with `tabular-nums`.
115
+ - **Don't** bold the display — weight 400 is the whole scale; component heads and labels earn 500 at most.
116
+ - **Don't** promote a second chromatic accent — the dusk / twilight / breeze cosmic hues are chart series only, and status stays `success` / `warning` / `destructive`; keep the amber-gold warning distinct from the sunset primary.
117
+ - **Don't** signal elevation with drop shadows, or turn the whole page near-black — the near-black is the sidebar and terminal inlay, not the operator canvas.
118
+
119
+ ## 8 Responsive
120
+
121
+ The operator sweep is 375 / 768 / 1024 / 1440.
122
+
123
+ | Breakpoint | What changes |
124
+ | --- | --- |
125
+ | 375 | sidebar → off-canvas drawer (stays near-black); two-pane list+detail stacks; side panel → full sheet; density holds |
126
+ | 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
127
+ | 1024 | sidebar expands; two-pane queue+detail holds side by side |
128
+ | 1440 | forms cap at `form-max-width`; tables and dashboards use the full width |
129
+
130
+ ## 9 Agent Prompt Guide
131
+
132
+ Directives the emitting agent follows verbatim:
133
+
134
+ - Reach for the cool near-white canvas first, near-black ink on top — the operator page is light; the near-black is the sidebar rail and terminal / metric inlays, never the whole page.
135
+ - Spend sunset orange once per surface: the primary action, the focus `ring`, the active-nav indicator. If two things want the orange, one of them is not primary. Color otherwise belongs to data and status.
136
+ - The display sits at weight 400 with negative tracking — the geometric-sans voice; never bold it. Component heads and labels earn the restrained 500. Emphasise by size and gathering, not weight.
137
+ - The eyebrow above every section head is GeistMono, uppercase, positively tracked — the code-comment label. Every numeric column is `tabular-nums`; every ID / code / timestamp / metric counter is `font-mono`.
138
+ - Pill the buttons, chips, and badges — the pill is xAI's shape system; keep cards, inputs, and panels at the 8px radius. Dress terminal, log, and metric panels in the near-black cosmic inlay (`#0a0a0a`, `font-mono`).
139
+ - Depth is the surface step and cool hairlines, never shadow; the brand uses none. Reach for the faint overlay lift only for a true modal or popover. Detail and edit go in the side panel beside the work.
140
+ - Keyboard-first: the sunset `ring` focus outline is always visible. Leave behind the 96px hero display, the edge-to-edge black page, and the sunset / dusk gradient accents.
141
+
142
+ ```yaml design-primitives
143
+ radius: 8px # corpus: cards/inputs at rounded.sm (8px, the brand's --radius); buttons/chips/badges reach the pill
144
+ shadow-intensity: 0.1 # corpus: the brand uses NO shadows ("hairline borders carry all elevation"); only true overlays earn the faintest lift
145
+ border-weight: 1px # corpus: 1px hairlines carry all depth
146
+ density-gap: 1 # derived: marketing-spacious brand read to an honest, engineered-tight operator standard
147
+ density-inset: 1 # derived: matches density-gap for coherent component insets
148
+ font-sans: Universal Sans, Inter, system-ui, -apple-system, sans-serif # corpus: Universal Sans is the proprietary geometric face; Inter is the documented open substitute
149
+ font-mono: Geist Mono, ui-monospace, SFMono-Regular, Menlo, monospace # corpus: GeistMono for eyebrows, labels, metric counters, and code
150
+ font-weight-normal: 400 # corpus: weight 400 for everything — the brand never bolds; negative tracking + size do the emphasis
151
+ font-weight-strong: 500 # derived: the display holds 400 (never bold); operator legibility earns a restrained 500 for component heads and labels only
152
+ heading-tracking: -0.03em # corpus: the gathered negative tracking is the signature (-2.4px at hero 96px); -0.03em keeps the precise gathered look at operator heading scale
153
+ duration-unit: 50ms # derived: corpus silent on motion (marketing surface); engineered character favors a crisp functional base
154
+ duration-fast: 100ms # derived: corpus silent on motion; crisp functional tempo
155
+ duration-normal: 150ms # derived: corpus silent on motion; standard functional tempo
156
+ duration-slow: 250ms # derived: corpus silent on motion; overlay / panel transition
157
+ ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard functional ease
158
+ contrast-boost: 1 # derived: the cool hairlines are intentional engineered calm; no boost
159
+ icon-stroke: 1.5 # derived: corpus silent on icons; a light refined stroke suits the precise engineered feel
160
+ icon-size-base: 16px # derived: corpus silent on icon size; operator standard
161
+ sidebar-width-expanded: 240px # derived: corpus has no app shell (marketing top-nav only); engineered-tight rail
162
+ sidebar-width-collapsed: 56px # derived: standard operator icon rail
163
+ topbar-height: 52px # corpus: lean nav (md/xl padding, body-sm); operator lands at 52px
164
+ side-panel-width: 420px # derived: corpus has no shell; engineered-standard detail width
165
+ side-panel-width-rich: 640px # derived: content-heavy detail panel
166
+ modal-width-max: 560px # derived: corpus's bands are full-bleed marketing; operator confirmation cap
167
+ form-max-width: 640px # derived: corpus content centres ~1200px (marketing); operator single-column form cap
168
+ table-row-height: 40px # derived: engineered-dense standard; not editorial-loose
169
+ verbosity: default
170
+ feedback: minimal # derived: xAI's austere engineered restraint → crisp minimal feedback (no press-scale, 1px ring); the high-chroma sunset ring keeps focus visible
171
+ density-tier: standard # derived: a marketing-spacious brand read down to an honest engineered operator tier; archetypes step denser
172
+ product-traits: [ai-console, agent-ops, model-ops, dashboard, dev-tools]
173
+ ```
174
+
175
+ ```yaml lever-manifest
176
+ version: 1
177
+ fonts: { sans: "Universal Sans, Inter, system-ui, -apple-system, sans-serif", mono: "Geist Mono, ui-monospace, SFMono-Regular, Menlo, monospace" }
178
+ color-tokens:
179
+ light:
180
+ background: "#fbfbfc" # derived: cool near-white page floor (light inversion of the #0a0a0a canvas; engineered-cool temperature)
181
+ foreground: "#0a0a0a" # corpus: xAI's signature near-black, carried as operator ink (brand override of a near-pure-black ban)
182
+ card: "#ffffff" # derived: pure white bright step off the near-white, inverting the dark canvas→card ladder
183
+ card-foreground: "#0a0a0a"
184
+ muted: "#f2f3f5" # derived: cool light fill (the light-surface analog of canvas-soft's quiet-fill role)
185
+ muted-foreground: "#7d8187" # corpus: the brand's body-mid / mute cool gray
186
+ border: "#e6e7ea" # derived: cool hairline (light inversion of the #212327 dark hairline)
187
+ input: "#e6e7ea"
188
+ ring: "#ff7a17"
189
+ primary: "#ff7a17" # corpus: sunset orange — xAI's one brand chroma, promoted to the single operator accent
190
+ primary-foreground: "#0a0a0a" # corpus: near-black on the bright sunset (the brand's on-primary), legible where white would fail
191
+ accent: "#eceef1" # derived: cool selection lift one step past muted, so selection reads over hover; never orange
192
+ accent-foreground: "#0a0a0a"
193
+ destructive: "#e5484d" # derived: corpus surfaces no semantic palette; a clean red for destructive / error
194
+ destructive-foreground: "#ffffff"
195
+ success: "#30a46c" # derived: corpus has no success hue; a clean green for status
196
+ warning: "#d99126" # derived: corpus has no warning hue; an amber-gold held distinct from the sunset primary
197
+ popover: "#ffffff"
198
+ popover-foreground: "#0a0a0a"
199
+ secondary: "#f2f3f5"
200
+ secondary-foreground: "#0a0a0a"
201
+ chart-1: "#ff7a17" # corpus: sunset — the brand accent palette carries the chart series
202
+ chart-2: "#7c3aed" # corpus: dusk purple
203
+ chart-3: "#a0c3ec" # corpus: breeze blue
204
+ chart-4: "#c4b5fd" # corpus: twilight violet
205
+ chart-5: "#0d1726" # corpus: midnight — the deep cosmic anchor
206
+ sidebar: "#0a0a0a" # corpus: the cosmic near-black canvas, carried as the operator sidebar rail (the white-on-near-black soul as chrome)
207
+ sidebar-foreground: "#dadbdf" # corpus: xAI body text on dark
208
+ sidebar-primary: "#ff7a17" # corpus: sunset accent for the active-nav indicator on the dark rail
209
+ sidebar-primary-foreground: "#0a0a0a"
210
+ sidebar-accent: "#1a1c20" # corpus: canvas-soft — hovered / selected nav on the dark rail
211
+ sidebar-accent-foreground: "#ffffff"
212
+ sidebar-border: "#212327" # corpus: the brand's dark hairline
213
+ sidebar-ring: "#ff7a17"
214
+ spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
215
+ radius-scale: [0, 4, 8, 12, 9999]
216
+ shadow-levels: [none, sm, md]
217
+ motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
218
+ icons: { family: lucide, stroke: 1.5 }
219
+ accent-count: 1
220
+ ```
@@ -0,0 +1,238 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: Zapier
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # Zapier — the operator reading
9
+
10
+ The operator translation of Zapier's workflow-automation brand. Zapier's public surface is confidently
11
+ warm — a cream canvas, deep coffee ink, one saturated orange CTA, and a two-face type system (Degular
12
+ Display for hero moments, Inter for the rest). This entry keeps what survives at operator scale: the
13
+ cream temperature, the single orange accent, the coffee ink, the recessed cream-card elevation, the
14
+ 12px middle-radius signature, and Inter as the workhorse. The 56px Degular hero, the dark coffee-ink
15
+ polarity-flip bands, and the 64px rhythm stay behind — warm where the category runs cool, but earning
16
+ its density and reserving its one accent; judgments away from the brand are annotated `# derived:`.
17
+
18
+ ## 1 Visual Theme
19
+
20
+ Warm by default; dark is opt-in. The canvas is Zapier's warm-cream `background` (`#fffefb`) — a
21
+ deliberate off-white, never the pure white the category defaults to (it reads light, so the
22
+ light-default floor holds — it is simply warm). Flat: hierarchy comes from warm hairline `border`, the
23
+ recessed cream-card surface ladder, and type weight, never heavy shadow. A single accent, Zapier orange
24
+ `primary` (`#ff4f00`), is reserved for the one action that matters; ink is deep coffee `foreground`
25
+ (`#201515`), never pure black. Corners hold the brand's signature 12px middle radius — neither
26
+ friendly-pill nor technical-square. Density is `standard`; the anchor is a bright cream canvas holding
27
+ faintly recessed cream cards.
28
+
29
+ ## 2 Color Roles
30
+
31
+ Light values (the manifest carries the exact hex — the corpus's native format). One accent: `primary`
32
+ is the only chromatic hue that carries meaning; status hues speak only status.
33
+
34
+ | Role | Value | Allowed where |
35
+ | --- | --- | --- |
36
+ | `background` / `popover` | warm cream `#fffefb` (canvas) | page and overlays — the brightest surface |
37
+ | `card` | recessed cream `#f8f4f0` (canvas-soft) | content cards / inset panels — a step below canvas, elevation by surface contrast |
38
+ | `foreground` | deep coffee `#201515` (ink) | all primary ink and headings; never pure black |
39
+ | `muted` / `secondary` | soft cream `#f1ece4` | hover rows, subtle fills, secondary button fill |
40
+ | `muted-foreground` | warm gray `#605d52` (body) | labels, captions, secondary text |
41
+ | `border` | warm hairline `#e9e2d8` | separators, grid lines, card edges |
42
+ | `input` | coffee ink `#201515` | form-field edges — the brand's bold ink-bordered field |
43
+ | `primary` | Zapier orange `#ff4f00` | the one primary action; active nav; the single conversion voltage |
44
+ | `accent` | pale orange `#ffe9e0` | selected/hovered rows and nav — a whisper of brand warmth |
45
+ | `accent-foreground` | burnt orange `#b83900` | ink on the accent tint |
46
+ | `ring` | `primary` orange | the focus outline — unmistakable, because keyboard-first |
47
+ | `destructive` | brick red `#c0362c` | destructive actions and error state only — distinct from the orange |
48
+ | `success` / `warning` | green `#3f8f5a` / gold `#c88a1e` | status signalling only, never chrome |
49
+
50
+ The warm-neutral ladder runs coffee-ink → body `#605d52` → body-mid `#939084` → mute `#c5c0b1`: every
51
+ neutral carries warmth, none is cool gray. The dark coffee polarity-flip (dark hero/feature bands, dark
52
+ footer) is a marketing device and stays behind (see §7).
53
+
54
+ ## 3 Typography
55
+
56
+ `font-sans` is **Inter** — the brand's actual workhorse (sub-display, body, button, label) and, at
57
+ operator scale, the whole ramp; its display steps track slightly negative, which is what carries. The
58
+ proprietary Degular Display carries only hero-scale loud moments (56px, weight 500) and stays behind.
59
+ `font-mono` is derived — the corpus ships none, but zap IDs, run IDs, webhook payloads, and log
60
+ timestamps need one. Numeric columns render `tabular-nums`; headlines stay sentence-case.
61
+
62
+ | Step | Role | Size · line | Weight · tracking |
63
+ | --- | --- | --- | --- |
64
+ | h1 | page title | 24px / 1.25 | `font-weight-strong` · `heading-tracking` |
65
+ | h2 | section head | 20px / 1.3 | `font-weight-strong` · `heading-tracking` |
66
+ | h3 | card / group head | 16px / 1.35 | `font-weight-strong` · -0.01em |
67
+ | body | UI + prose | 14px / 1.45 | `font-weight-normal` |
68
+ | small | labels, meta, dense table | 13px / 1.4 | `font-weight-normal` |
69
+ | caption | uppercase eyebrow | 13px / 1.3 | `font-weight-strong`, +0.06em, uppercase |
70
+
71
+ The eyebrow keeps **positive** tracking — the corpus's signature label style (Degular +1px at 14px),
72
+ carried on Inter uppercase. Emphasize by weight, never size, never past 600 (the corpus 700 is
73
+ display-micro and stays behind).
74
+
75
+ ## 4 Component Stylings
76
+
77
+ Every recurring operator component composes from the primitives — no literal values.
78
+
79
+ - **Button** — filled orange on `primary-foreground` (warm white), `radius` (12px), no pill. Secondary:
80
+ `secondary` cream fill, 1px `border`. Tertiary/outline: transparent, bold ink border. Ghost: `accent`
81
+ on hover.
82
+ - **Input** — `background` fill, 1px `input` (coffee-ink) border (`border-weight`), `radius` at the 6px
83
+ scale step; focus draws the orange `ring` at 2px, no glow.
84
+ - **Card** — recessed `card` cream on the brighter canvas (surface-contrast elevation); 1px `border` for
85
+ a grid edge; shadow only when a card truly floats; inset by `density-inset`.
86
+ - **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `tabular-nums` on
87
+ numeric columns; row selection tints `accent`.
88
+ - **Side panel** — detail and edit open in the side panel (`side-panel-width`, `side-panel-width-rich`
89
+ for content-heavy), beside the work, not over it.
90
+ - **Badge** — pill radius, `muted`/status fill, uppercase caption; status badges take `success` /
91
+ `warning` / `destructive`, never `primary`.
92
+
93
+ ## 5 Layout
94
+
95
+ Base spacing unit 4px; the on-scale ramp is `2 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64` (the corpus
96
+ tokens; the 64px marketing band padding stays behind). Shell dimensions map one-to-one to the layout
97
+ primitives: sidebar `sidebar-width-expanded` (256px) / `sidebar-width-collapsed` (56px), topbar
98
+ `topbar-height` (56px), side panel `side-panel-width` (440px) / `side-panel-width-rich` (640px), modal
99
+ `modal-width-max`, forms `form-max-width`, tables full-width. Density is governed globally by
100
+ `density-tier` and stepped per archetype by the surface catalog — never by absolute overrides.
101
+
102
+ ## 6 Depth
103
+
104
+ Flat, surface-contrast-first. Hierarchy comes from the recessed cream ladder and warm hairlines:
105
+
106
+ - **0 — canvas** `background` (`#fffefb`), no border.
107
+ - **1 — panel / card** recessed `card` cream (`#f8f4f0`) — surface contrast carries the elevation; a 1px
108
+ `border` where a grid edge is wanted. Emphasized outlines take the bold ink border.
109
+ - **2 — overlay** `popover` / side panel / modal — the one place `shadow-intensity` earns a soft `md`
110
+ shadow, over a scrim for modals. Rank is surface, border, and position, never a heavier shadow.
111
+
112
+ Focus is a 2px orange `ring` outline (never a glow) on every interactive element. Three z-levels:
113
+ content, sticky chrome, overlay.
114
+
115
+ ## 7 Do's & Don'ts
116
+
117
+ - **Do** anchor on the warm cream canvas (`#fffefb`) — pure white loses the brand; keep coffee ink
118
+ `#201515`, never pure black. The temperature is the voice.
119
+ - **Do** reserve orange `primary` for the single most important action — orange + cream + coffee is the
120
+ whole conversion story; everything else is neutral or status.
121
+ - **Do** keep corners at the 12px middle radius on buttons and cards; inputs step to 6px, badges pill.
122
+ - **Do** apply `tabular-nums` to numerics with `font-mono` for IDs, run codes, and timestamps.
123
+ - **Don't** render the CTA as a pill or a square — the 12px rounded rectangle is the signature.
124
+ - **Don't** promote a second chromatic accent, and don't let orange become `destructive` (use the brick
125
+ red); status uses `success` / `warning` / `destructive`.
126
+ - **Don't** pull the Degular hero, the dark coffee polarity-flip bands, or the 64px rhythm into an
127
+ operator surface.
128
+
129
+ ## 8 Responsive
130
+
131
+ The operator sweep is 375 / 768 / 1024 / 1440.
132
+
133
+ | Breakpoint | What changes |
134
+ | --- | --- |
135
+ | 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
136
+ | 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
137
+ | 1024 | sidebar expands; two-pane queue+detail holds side by side |
138
+ | 1440 | forms cap at `form-max-width`; tables and dashboards use the full width |
139
+
140
+ ## 9 Agent Prompt Guide
141
+
142
+ Directives the emitting agent follows verbatim. This brand is warm and confident; keep it restrained.
143
+
144
+ **Carries over:** the warm cream temperature (canvas `#fffefb`, never pure white) · deep coffee ink
145
+ `#201515` (never pure black) · orange `primary` (`#ff4f00`) as the single reserved accent · the 12px
146
+ middle-radius character (never pill, never square) · the recessed cream-card surface-contrast elevation
147
+ · the bold ink-bordered field · Inter with the positive-tracked uppercase eyebrow · `tabular-nums`.
148
+
149
+ **Stays behind:** the 56px Degular Display hero · the dark coffee-ink polarity-flip (dark hero/feature/
150
+ pricing bands, dark footer) · the illustrative zap/workflow SVGs · the 64px section-padding rhythm.
151
+
152
+ - Lead every list surface with its table; accent only the primary action in orange — if two things want
153
+ it, one is not primary.
154
+ - Reach for the warm cream canvas first; float recessed cream cards on it, separated by surface contrast
155
+ and warm hairlines before shadow. Detail and edit go in the side panel; a modal is a confirmation.
156
+ - Every numeric column is `tabular-nums`; every ID / run code / timestamp is `font-mono`; every workflow
157
+ completes from the keyboard with the orange `ring` outline always visible.
158
+ - One accent. Type stays on Inter — Degular Display and the marketing bands do not follow into a console.
159
+
160
+ ```yaml design-primitives
161
+ radius: 12px # corpus: buttons and cards at rounded.md (12px) — the brand's explicit middle-radius signature; inputs step to 6px via the scale
162
+ shadow-intensity: 0.4 # derived: flat, surface-contrast-first; shadow only lifts true overlays (toasts/modals)
163
+ border-weight: 1px
164
+ density-gap: 1
165
+ density-inset: 1
166
+ font-sans: Inter, system-ui, -apple-system, sans-serif # derived: Inter is the brand's actual workhorse for everything but the hero; Degular Display (hero-only) stays behind
167
+ font-mono: JetBrains Mono, ui-monospace, SFMono-Regular, monospace # derived: corpus ships no mono; zap/run IDs, webhook payloads, and log timestamps need one — JetBrains Mono pairs with Inter
168
+ font-weight-normal: 400
169
+ font-weight-strong: 600 # corpus: card titles and primary buttons at 600; the 700 micro-label is display-only and stays behind
170
+ heading-tracking: -0.02em # derived: the brand's Inter display steps track ~-0.025em (display-sub-sm -0.6px/24px); softened to -0.02em at operator heading scale
171
+ duration-unit: 50ms
172
+ duration-fast: 150ms # derived: corpus silent on motion; a warm brand runs a touch softer than a dense console
173
+ duration-normal: 200ms # derived: corpus silent on motion
174
+ duration-slow: 300ms # derived: corpus silent on motion
175
+ ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard operator ease
176
+ contrast-boost: 1 # derived: warm hairlines are intentional; no boost at default
177
+ icon-stroke: 1.75 # derived: corpus uses illustrative SVGs; a confident 1.75 stroke suits the bold-warm voice, one step under lucide's 2
178
+ icon-size-base: 16px # derived: corpus has no icon spec; operator standard
179
+ sidebar-width-expanded: 256px # derived: corpus is marketing-only; warm-generous operator nav, a step over the dense rail
180
+ sidebar-width-collapsed: 56px # derived: standard operator icon rail
181
+ topbar-height: 56px # derived: corpus marketing nav is generous; operator tightens to a working 56px
182
+ side-panel-width: 440px # derived: warm-generous detail panel; no corpus shell spec
183
+ side-panel-width-rich: 640px # derived: content-heavy detail width
184
+ modal-width-max: 560px # derived: corpus silent; confirmation dialog cap
185
+ form-max-width: 640px # derived: single-column form cap
186
+ table-row-height: 44px # derived: warm posture → rows breathe a touch over the dense 40px default
187
+ verbosity: default
188
+ feedback: subtle # derived: Zapier's warm-confident voice wants gentle present feedback, not austere silence
189
+ density-tier: standard # derived: a marketing-generous brand read down to an honest operator tier; warmth carried by palette and radius, not whitespace
190
+ product-traits: [workflow-automation, automation, dashboard, saas, b2b]
191
+ ```
192
+
193
+ ```yaml lever-manifest
194
+ version: 1
195
+ fonts: { sans: "Inter, system-ui, -apple-system, sans-serif", mono: "JetBrains Mono, ui-monospace, SFMono-Regular, monospace" }
196
+ color-tokens:
197
+ light:
198
+ background: "#fffefb"
199
+ foreground: "#201515"
200
+ card: "#f8f4f0" # recessed cream card — surface-contrast elevation, a step below the canvas
201
+ card-foreground: "#201515"
202
+ muted: "#f1ece4" # derived: a step below the card cream for hover rows and subtle fills
203
+ muted-foreground: "#605d52"
204
+ border: "#e9e2d8" # derived: warm hairline for grid lines and separators; the corpus carries card separation by surface contrast, so a faint warm line is derived
205
+ input: "#201515" # brand's bold ink-bordered field (corpus text-input borderColor = ink)
206
+ ring: "#ff4f00" # derived: corpus silent on focus; orange is the interactive voltage, unmistakable for keyboard-first
207
+ primary: "#ff4f00"
208
+ primary-foreground: "#fffefb" # warm white (on-primary), never pure white
209
+ accent: "#ffe9e0" # derived: pale orange wash for row/nav selection — a whisper of the brand warmth
210
+ accent-foreground: "#b83900" # derived: burnt orange, readable ink on the pale tint
211
+ destructive: "#c0362c" # derived: brand ships no semantic red; a brick red distinct from the primary orange
212
+ destructive-foreground: "#fffefb"
213
+ success: "#3f8f5a" # derived: brand ships no green; a warm-compatible status green, status only
214
+ warning: "#c88a1e" # derived: brand ships no amber; a warm gold distinct from the primary orange, status only
215
+ popover: "#fffefb"
216
+ popover-foreground: "#201515"
217
+ secondary: "#f1ece4" # cream secondary-button fill (the dark-ink secondary is a marketing polarity-flip, stays behind)
218
+ secondary-foreground: "#201515"
219
+ chart-1: "#ff4f00" # orange primary
220
+ chart-2: "#3f8f5a" # derived: status green as second series
221
+ chart-3: "#c88a1e" # derived: warm gold as third series
222
+ chart-4: "#7a4a3a" # derived: warm coffee-brown mid — series warm to hold temperature
223
+ chart-5: "#b83900" # derived: deep burnt orange as fifth series
224
+ sidebar: "#f8f4f0" # derived: faint cream sidebar beside the brighter canvas
225
+ sidebar-foreground: "#201515"
226
+ sidebar-primary: "#ff4f00" # orange marks the active nav item (corpus app-shell activeIndicator = primary)
227
+ sidebar-primary-foreground: "#fffefb"
228
+ sidebar-accent: "#ffe9e0" # matches accent
229
+ sidebar-accent-foreground: "#b83900"
230
+ sidebar-border: "#e9e2d8"
231
+ sidebar-ring: "#ff4f00"
232
+ spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
233
+ radius-scale: [0, 6, 12, 9999]
234
+ shadow-levels: [none, sm, md]
235
+ motion: { durations: [150, 200, 300], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
236
+ icons: { family: lucide, stroke: 1.75 }
237
+ accent-count: 1
238
+ ```