@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,233 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: Tesla
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # Tesla — radical-subtraction minimalism, translated for operators
9
+
10
+ Tesla's web design is radical subtraction: a white canvas, a single Electric Blue accent, a rich
11
+ grayscale ink ramp, near-zero decoration, and a categorical geometry — **barely-rounded 4px corners**.
12
+ This operator reading keeps the white-dominant palette, the one blue accent, the 4px radius character,
13
+ the flat/shadowless depth, the two-weight (400 / 500) type discipline, the signature **zero
14
+ letter-spacing**, and the color-only interaction feel. Left behind: full-viewport hero photography, 40px
15
+ display type, whitespace-as-luxury rhythm, the frosted-glass nav, the carousel, the chatbot bar. Both
16
+ machine blocks are fully valued; each judgment away from the brand is annotated `# derived:` where silent.
17
+
18
+ ## 1 Visual Theme
19
+
20
+ Light by default; dark is opt-in. White-dominant and categorically shadowless: hierarchy rides a
21
+ grayscale surface ladder (`background` white → `muted` Light Ash → hairline `border`) and type weight,
22
+ never shadow. The single accent — Electric Blue `primary` (`#3e6ae1`) — is the only chromatic hue,
23
+ reserved for the one action that matters. Ink is Carbon Dark `foreground` (`#171a20`), a warm
24
+ blue-undertoned near-black, stepping down a documented ramp (Carbon → Graphite → Pewter → Silver Fog).
25
+ The geometry is the identity: `radius` 4, barely rounded. The anchor surface is a white canvas beside a
26
+ Light Ash `sidebar`; density is `standard` — engineered-uniform, the marketing whitespace left behind.
27
+
28
+ ## 2 Color Roles
29
+
30
+ Light values (hex — the corpus's native format). One accent — `primary` Electric Blue is the only
31
+ chromatic hue that carries meaning; status hues speak only status. The rich grayscale ramp is Tesla's
32
+ signature alongside the single blue.
33
+
34
+ | Role | Value | Allowed where |
35
+ | --- | --- | --- |
36
+ | `background` / `card` / `popover` | Pure White `#ffffff` | page, cards, and overlays — the dominant canvas that lets content breathe |
37
+ | `foreground` | Carbon Dark `#171a20` | primary ink, headings, nav — the darkest text, a warm blue-undertoned near-black |
38
+ | `muted` / `secondary` | Light Ash `#f4f4f4` | hover rows, subtle fills, secondary-button surfaces, section differentiation |
39
+ | `muted-foreground` | Pewter `#5c5e62` | labels, captions, tertiary links, placeholders' firmer sibling |
40
+ | `border` | Cloud Gray `#eeeeee` | separators and divider lines — the light hairline |
41
+ | `input` | Pale Silver `#d0d1d2` | field edges — the firmer border tone Tesla uses for delineation |
42
+ | `primary` | Electric Blue `#3e6ae1` | the one primary action; active nav; promotional emphasis text |
43
+ | `accent` | faint blue wash `#edf1fc` | selected / hovered rows and nav, on-accent surfaces only |
44
+ | `ring` | `primary` | the focus outline — an unmistakable blue border, because keyboard-first |
45
+ | `destructive` | red `#dc2626` | destructive actions and error state only |
46
+ | `success` / `warning` | green `#16a34a` / amber `#d97706` | status signalling only, never chrome |
47
+
48
+ Graphite `#393c41` is the `secondary-foreground` (body / secondary-CTA text); Silver Fog `#8e8e8e` is the
49
+ placeholder / disabled tone. Tesla avoids semantic status color (browser defaults); the derived
50
+ `destructive` / `success` / `warning` give the operator tool a status vocabulary, kept off the chrome (§7).
51
+
52
+ ## 3 Typography
53
+
54
+ One sans, one mono. `font-sans` leads with Universal Sans Text — Tesla's custom geometric family with
55
+ humanist terminals, unifying web, app, and in-car software — falling back to Inter, the open-source
56
+ stand-in. The hero-scale Universal Sans Display (40px / 500) stays behind; the operator ramp keeps the
57
+ voice at working sizes. `font-mono` is derived (Tesla ships none) — JetBrains Mono for IDs, codes,
58
+ timestamps; numeric columns render `tabular-nums`.
59
+
60
+ | Step | Role | Size · line | Weight · tracking |
61
+ | --- | --- | --- | --- |
62
+ | h1 | page title | 24px / 1.25 | `font-weight-strong` (500) · `heading-tracking` (0) |
63
+ | h2 | section head | 18px / 1.3 | `font-weight-strong` · 0 |
64
+ | h3 | card / group head | 16px / 1.35 | `font-weight-strong` · 0 |
65
+ | body | UI + prose | 14px / 1.45 | `font-weight-normal` (400) |
66
+ | small | labels, meta, dense table | 13px / 1.4 | `font-weight-normal` |
67
+ | caption | eyebrow / meta | 12px / 1.3 | `font-weight-strong` · 0 · sentence case |
68
+
69
+ Two weights only — 500 for heads and UI, 400 for body; **no bold, no light**. **Zero letter-spacing at
70
+ every level** is the Tesla signature (unlike most tech brands it takes no negative tracking); **no
71
+ uppercase transforms** — captions and labels stay sentence-case. Emphasize by weight, never size.
72
+
73
+ ## 4 Component Stylings
74
+
75
+ Every recurring operator component composes from the primitives — no literal values, `radius` 4 on
76
+ controls throughout.
77
+
78
+ - **Button** — `primary`: filled Electric Blue on `primary-foreground`, `radius` (4px), no pill; the
79
+ border reserves space for the focus animation. Hover is color-only — a subtle darkening, never a
80
+ transform. Secondary: `secondary` Light Ash fill, 1px `border`, `secondary-foreground` Graphite.
81
+ - **Input** — `background` fill, 1px `input` (Pale Silver) edge, `radius`; placeholder in Silver Fog
82
+ (`muted-foreground`); focus draws the blue `ring` at 2px, no glow.
83
+ - **Card** — white `card`, optional 1px `border`, `radius` (4px controls; the scale offers 12px for a
84
+ large image-forward tile); no shadow at rest, inset by `density-inset`.
85
+ - **Table row** — `table-row-height`; Cloud Gray `border` grid lines; Light Ash `muted` on hover;
86
+ `tabular-nums` on numeric columns; row selection tints `accent`.
87
+ - **Side panel** — detail and edit open beside the work (`side-panel-width` / `side-panel-width-rich`),
88
+ never over it.
89
+ - **Badge / chip** — `radius`, hairline `border`, `muted` / status fill, sentence-case caption (no
90
+ uppercase); status badges take `success` / `warning` / `destructive`, never `primary`.
91
+
92
+ ## 5 Layout
93
+
94
+ Base spacing unit 8px (Tesla's grid); the on-scale ramp is `4 · 8 · 12 · 16 · 24 · 32 · 48 · 64` (the
95
+ 4px step is the button padding). Shell dimensions map one-to-one to the layout primitives — sidebar
96
+ `sidebar-width-expanded` / `sidebar-width-collapsed`, topbar `topbar-height`, side panel
97
+ `side-panel-width` / `side-panel-width-rich`, modal cap `modal-width-max`, forms `form-max-width`, tables
98
+ full-width capped at ~1383px (Tesla's container). Density is governed globally by `density-tier` and
99
+ stepped per archetype; the viewport-height rhythm and whitespace-as-luxury stay behind.
100
+
101
+ ## 6 Depth
102
+
103
+ Flat, and essentially shadowless — Tesla's elevation approach is "none." Hierarchy comes from the surface
104
+ ladder, hairlines, and z-position, never a drop shadow:
105
+
106
+ - **0 — flat** `background` white, no shadow, no border — the default at rest for cards, panels, controls.
107
+ - **1 — frost** sticky chrome floats over content by a frosted-glass backdrop (`rgba(255,255,255,0.75)`)
108
+ and z-position, not shadow.
109
+ - **2 — overlay** `popover` / side panel / modal — a region-scrim (`rgba(128,128,128,0.65)`) dims the
110
+ canvas beneath; `shadow-intensity` earns only a whisper `sm` shadow, a hairline still carrying the edge.
111
+
112
+ Focus is a 2px `ring` outline in Electric Blue (never a glow), visible everywhere. Three z-levels:
113
+ content, sticky chrome, overlay.
114
+
115
+ ## 7 Do's & Don'ts
116
+
117
+ - **Do** reserve Electric Blue (`primary`) for the single most important action — never decoration;
118
+ carry hierarchy with the grayscale surface ladder, hairlines, and weight.
119
+ - **Do** keep every corner barely rounded — `radius` 4 on buttons, inputs, and chips is the signature.
120
+ - **Do** hold typography at 400 / 500 only, zero letter-spacing, and sentence case — no bold, no light,
121
+ no negative tracking, no uppercase; apply `tabular-nums` to numbers, `font-mono` to IDs / codes / times.
122
+ - **Don't** promote a second chromatic accent — the palette is monochrome-plus-one; status uses
123
+ `success` / `warning` / `destructive`, never the blue.
124
+ - **Don't** pill or over-round a control (radius stays inside `radius-scale`), or signal elevation with a
125
+ drop shadow — the aesthetic is flat.
126
+ - **Don't** animate with scale or translate — Tesla's interactions are color-only (background and border
127
+ transitions).
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 | content caps at ~1383px; forms hold `form-max-width`; tables and dashboards use the full width |
139
+
140
+ ## 9 Agent Prompt Guide
141
+
142
+ Directives the emitting agent follows verbatim:
143
+
144
+ - Carries over: the white-dominant palette (Carbon → Graphite → Pewter → Silver Fog ink ramp, Electric
145
+ Blue `#3e6ae1`), the single-accent discipline, the 4px technical radius, the flat/shadowless depth, the
146
+ two-weight 500 / 400 type voice with zero tracking and no uppercase.
147
+ - Stays behind: full-viewport hero photography, 40px display type, whitespace-as-luxury rhythm, the
148
+ frosted-glass nav, the carousel, the chatbot bar — none belong in operator chrome.
149
+ - Accent only the primary action in Electric Blue — if two things want it, one is not primary.
150
+ - Keep motion color-only — background and border transitions, never a scale or translate; the hot path
151
+ tempers Tesla's languid 0.33s to a still-smooth normal, parking 330ms for large surface changes.
152
+ - Numeric columns `tabular-nums`, IDs / codes / timestamps `font-mono`; every workflow keyboard-complete
153
+ with the blue `ring` focus outline always visible; stay flat, a whisper `sm` shadow only for a true overlay.
154
+
155
+ ```yaml design-primitives
156
+ radius: 4px # Tesla signature: barely-rounded 4px on all controls; scale still offers 12px for a large image-forward tile
157
+ shadow-intensity: 0.1 # derived: Tesla is essentially shadowless (Level-3 hint rgba(0,0,0,0.05)); a whisper only lifts a true overlay
158
+ border-weight: 1px
159
+ density-gap: 1 # derived: standard tier; marketing whitespace-as-luxury stays behind, base multiplier held at 1
160
+ density-inset: 1 # derived: standard operator inset; the generous gallery air stays behind
161
+ font-sans: Universal Sans Text, Inter, system-ui, -apple-system, sans-serif # Universal Sans is Tesla's proprietary family; Inter is the closest open stand-in (geometric with humanist terminals)
162
+ font-mono: JetBrains Mono, ui-monospace, SFMono-Regular, monospace # derived: Tesla ships no mono; operator-standard mono for IDs/codes/logs
163
+ font-weight-normal: 400 # Tesla body weight (regular)
164
+ font-weight-strong: 500 # Tesla heading/UI weight (medium) — the 500/400 pair is the whole type system; no bold, no light
165
+ heading-tracking: 0 # Tesla signature: zero letter-spacing at every level; unlike most tech brands it takes no negative tracking
166
+ duration-unit: 50ms # derived: corpus documents transition durations, not a base unit; functional operator base
167
+ duration-fast: 100ms # derived: snappy color-only state change
168
+ duration-normal: 200ms # derived: Tesla's smooth 0.33s marketing pace tempered to a still-relaxed operator normal; the color-only character is the carry
169
+ duration-slow: 330ms # Tesla's documented universal 0.33s timing, kept as the slow tier for larger surface changes
170
+ ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus's main transition curve is an unspecified "cubic-bezier"; standard functional ease (the documented text-link curve is preserved in the manifest)
171
+ contrast-boost: 1 # derived: Tesla's clean minimal surfaces read as a grid without a boost; the light hairline is intentional
172
+ icon-stroke: 1.5 # derived: Tesla's precise, understated aesthetic wants a refined thin stroke, one step under lucide's 2
173
+ icon-size-base: 16px # derived: corpus silent; operator standard
174
+ sidebar-width-expanded: 256px # derived: Tesla is a top-nav marketing site with no sidebar; 8px-rhythm operator shell
175
+ sidebar-width-collapsed: 56px # derived: standard icon-rail width, on the 8px grid
176
+ topbar-height: 56px # derived: Tesla's minimal floating nav → a thin recessive operator topbar
177
+ side-panel-width: 440px # derived: no operator shell in corpus; 8px-rhythm detail panel
178
+ side-panel-width-rich: 640px # derived: content-heavy detail panel on the 8px rhythm
179
+ modal-width-max: 480px # derived: Tesla's minimal, confirmation-scale read (its only modal idiom is the region/cookie popup)
180
+ form-max-width: 640px # derived: corpus silent; single-column form measure
181
+ table-row-height: 40px # derived: corpus has no tables; Tesla's calm engineered chrome sits at the operator-standard 40px, on the 8px rhythm
182
+ verbosity: compact # derived: Tesla's radical subtraction — minimal chrome, terse labels, UI that gets out of the way
183
+ feedback: minimal # derived: Tesla's interactions are strictly color-only (no scale/translate); minimal zeroes the press-scale to honor that, ring stays visible
184
+ density-tier: standard # derived: marketing whitespace-as-luxury stays behind; the engineered-uniform chrome carries as standard, neither cramped nor spacious
185
+ product-traits: [inventory, configurator, orders, dashboard, automotive]
186
+ ```
187
+
188
+ ```yaml lever-manifest
189
+ version: 1
190
+ fonts: { sans: "Universal Sans Text, Inter, system-ui, -apple-system, sans-serif", mono: "JetBrains Mono, ui-monospace, SFMono-Regular, monospace" }
191
+ color-tokens:
192
+ light:
193
+ background: "#ffffff"
194
+ foreground: "#171a20"
195
+ card: "#ffffff"
196
+ card-foreground: "#171a20"
197
+ muted: "#f4f4f4"
198
+ muted-foreground: "#5c5e62"
199
+ border: "#eeeeee"
200
+ input: "#d0d1d2"
201
+ ring: "#3e6ae1"
202
+ primary: "#3e6ae1"
203
+ primary-foreground: "#ffffff"
204
+ accent: "#edf1fc" # derived: faint wash of Electric Blue for selection/hover; brand has no blue-tint surface token
205
+ accent-foreground: "#3e6ae1"
206
+ destructive: "#dc2626" # derived: Tesla's marketing site uses browser defaults for status; operator needs a real destructive red
207
+ destructive-foreground: "#ffffff"
208
+ success: "#16a34a" # derived: Tesla avoids semantic color; an engineered green for operator status only
209
+ warning: "#d97706" # derived: Tesla avoids semantic color; an amber for operator status only
210
+ popover: "#ffffff"
211
+ popover-foreground: "#171a20"
212
+ secondary: "#f4f4f4" # Light Ash — the subtle alternate surface as secondary-button fill
213
+ secondary-foreground: "#393c41" # Graphite — Tesla's secondary-CTA text tone
214
+ chart-1: "#3e6ae1" # Electric Blue — the anchor
215
+ chart-2: "#171a20" # derived: Carbon Dark — monochrome-plus-one, so charts run blue + the grayscale ink ramp
216
+ chart-3: "#393c41" # derived: Graphite
217
+ chart-4: "#5c5e62" # derived: Pewter
218
+ chart-5: "#8e8e8e" # derived: Silver Fog
219
+ sidebar: "#f4f4f4" # derived: Tesla has no dark chrome; the Light Ash subtle surface serves as the recessive rail
220
+ sidebar-foreground: "#171a20"
221
+ sidebar-primary: "#3e6ae1"
222
+ sidebar-primary-foreground: "#ffffff"
223
+ sidebar-accent: "#edf1fc" # derived: faint Electric Blue wash for the active/hovered nav item
224
+ sidebar-accent-foreground: "#3e6ae1"
225
+ sidebar-border: "#eeeeee"
226
+ sidebar-ring: "#3e6ae1"
227
+ spacing-scale: [4, 8, 12, 16, 24, 32, 48, 64]
228
+ radius-scale: [0, 4, 12, 9999]
229
+ shadow-levels: [none, sm]
230
+ motion: { durations: [100, 200, 330], easings: ["cubic-bezier(0.4,0,0.2,1)", "cubic-bezier(0.5,0,0,0.75)"] }
231
+ icons: { family: lucide, stroke: 1.5 }
232
+ accent-count: 1
233
+ ```
@@ -0,0 +1,248 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: The Verge
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # The Verge — the operator reading
9
+
10
+ The operator reading of The Verge's 2024 editorial system. The Verge is categorically dark — "there is
11
+ no light mode; the dark canvas is the product" — so this entry earns the doctrine's dark exception: the
12
+ near-black canvas fills the default-emitted theme, recorded plainly because the brand demands it. What
13
+ carries onto internal tools (a content queue, a moderation dashboard, an activity log): the near-black
14
+ canvas, the single acid-mint accent, the mono-uppercase label voice, the flat color-as-elevation depth,
15
+ and the rounded-never-square character. What stays behind: the marketing shout — 60–107px Manuka hero
16
+ display, the saturated rave-flyer story tiles, the FK Roman serif pulls, the 40px pill CTAs, the
17
+ thin-weight "fashion whisper" eyebrows. The result is unmistakably The Verge — a developer-console feel
18
+ with club-night color — but it reserves its one accent and earns its density; judgments away from the
19
+ editorial surfaces are annotated `# derived:` where the corpus is silent.
20
+
21
+ ## 1 Visual Theme
22
+
23
+ Dark by default, deliberately — the categorically-dark exception, not the light-default norm. The canvas
24
+ is Canvas Black `#131313`, almost-but-not-pure black with just enough warmth to read as a printed-newsprint
25
+ negative rather than an OLED void. Flat: hierarchy comes from 1px hairline `border`, the near-black surface
26
+ ladder, and saturated color — never heavy shadow, color is elevation here. A single accent, Jelly Mint
27
+ `primary` (`#3cffd0`), is reserved for the one action that matters, treated like neon safety paint; ink is
28
+ Hazard White `foreground` (`#ffffff`). The type voice pairs a grotesque sans body with a mono-uppercase
29
+ label register — the second-most-identifiable Verge detail after the display face. Density is `standard`;
30
+ the anchor surface is the black canvas beside a fractionally darker `sidebar`.
31
+
32
+ ## 2 Color Roles
33
+
34
+ The manifest carries hex (the corpus's native format) in the default-emitted theme, valued with the
35
+ brand's dark palette. One accent: `primary` (mint) is the only chromatic hue that carries brand meaning;
36
+ ultraviolet, yellow, pink, and electric blue live only in charts, and status hues speak status.
37
+
38
+ | Role | Value | Allowed where |
39
+ | --- | --- | --- |
40
+ | `background` | Canvas Black `#131313` | the page — the dominant near-black surface, no light mode |
41
+ | `foreground` | Hazard White `#ffffff` | primary text and headlines on the canvas |
42
+ | `card` / `popover` | `#1a1a1a` | panels and overlays — a faint step off canvas, border still carries |
43
+ | `muted` | `#242424` | subtle fills and hover rows |
44
+ | `muted-foreground` | Secondary Text `#949494` | bylines, timestamps, captions, column headers |
45
+ | `border` / `input` | Image Frame `#313131` | every quiet hairline, grid line, field edge; white/mint reserved for emphasis |
46
+ | `primary` | Jelly Mint `#3cffd0` | the one primary action, active nav underline — as fill with black text, never small text |
47
+ | `primary-foreground` | Absolute Black `#000000` | text/icon on the mint fill — the only place black appears |
48
+ | `accent` | Surface Slate `#2d2d2d` | selected/hovered rows and nav — a neutral step, never a mint wash |
49
+ | `ring` | Focus Cyan `#1eaedb` | the keyboard-focus outline — the brand's dedicated focus hue, shown nowhere else |
50
+ | `secondary` | Surface Slate `#2d2d2d` | secondary button fill |
51
+ | `destructive` | hazard red-pink `#ff3b5c` | destructive actions and error state only |
52
+ | `success` / `warning` | green `#22c55e` / hazard yellow `#ffd23c` | status signalling only, never chrome |
53
+
54
+ Verge Ultraviolet `#5200ff` is a brand hazard, not an operator accent — it survives here as a chart hue
55
+ (the corpus's error-purple role is handed to a readable red so destructive reads as danger). Deep Link
56
+ Blue `#3860be` is the text-link hover color; Console Mint Border `#309875` outlines mint elements where
57
+ pure mint over-saturates. White as a large fill is a "spotlight" moment, not the canvas.
58
+
59
+ ## 3 Typography
60
+
61
+ Two families carry the voice. `font-sans` is PolySans (Space Grotesk the corpus-named substitute) — the
62
+ UI, body, table, and headline workhorse. `font-mono` is PolySans Mono (Space Mono substitute) — used
63
+ exclusively for ALL-CAPS labels: kickers, timestamps, category tags, IDs, log lines. Lowercase mono does
64
+ not exist in this system; every all-caps label carries positive letter-spacing, the Verge signature.
65
+ Numeric columns render `tabular-nums`. Line heights run tight for a telegraph-ticker rhythm.
66
+
67
+ | Step | Role | Family | Size · line | Weight · tracking |
68
+ | --- | --- | --- | --- | --- |
69
+ | h1 | page title | sans | 26px / 1.1 | `font-weight-strong` · `heading-tracking` |
70
+ | h2 | section head | sans | 20px / 1.2 | `font-weight-strong` · 0 |
71
+ | h3 | card / group head | sans | 16px / 1.3 | `font-weight-strong` · 0 |
72
+ | body | UI + prose | sans | 14px / 1.5 | `font-weight-normal` |
73
+ | small | labels, dense table | sans | 13px / 1.4 | `font-weight-normal` |
74
+ | label | all-caps kicker / tag / timestamp | mono | 12px / 1.2 | `font-weight-strong`, +0.12em, uppercase |
75
+ | code | IDs, logs, amounts | mono | 13px / 1.5 | `font-weight-normal` |
76
+
77
+ Emphasis is the jump from 400 to 700 — the brand is punchy, not calm. The Manuka display, the 300-weight
78
+ whisper eyebrows, and the FK Roman serif pulls stay behind; the mono-uppercase label register is the
79
+ irreducible type signature and carries.
80
+
81
+ ## 4 Component Stylings
82
+
83
+ Every recurring operator component composes from the primitives — no literal values.
84
+
85
+ - **Button** — `primary`: filled mint on `primary-foreground` (black on mint), `radius`, no pill; hover
86
+ inverts to a translucent-white surface, active dims. Secondary: `secondary` slate fill, `foreground`.
87
+ Ghost: transparent, `accent` on hover.
88
+ - **Input** — `background` fill, 1px `border` (`border-weight`), `radius`; focus draws the Focus Cyan
89
+ `ring` at 2px, no glow.
90
+ - **Card** — `card` surface on a 1px `border`; a focused or active card firms its hairline to mint or
91
+ white (the depth ladder), never a shadow lift; inset by `density-inset`.
92
+ - **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `tabular-nums` on
93
+ numeric columns; row selection tints `accent`; timestamps and IDs ride `font-mono` uppercase.
94
+ - **Side panel** — detail and edit open in the side panel (`side-panel-width`, `side-panel-width-rich`
95
+ for content-heavy), beside the work, not over it.
96
+ - **Badge / tag** — pill radius, `muted` / status fill, `font-mono` uppercase caption with positive
97
+ tracking; status badges take `success` / `warning` / `destructive`, never `primary`.
98
+
99
+ ## 5 Layout
100
+
101
+ Base spacing unit 4px (the corpus's editorial 8px base loosens for the operator grid); the on-scale ramp
102
+ is `2 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64`. Shell dimensions map one-to-one to the layout primitives:
103
+ sidebar `sidebar-width-expanded` (248px) / `sidebar-width-collapsed` (56px), topbar `topbar-height`
104
+ (56px), side panel `side-panel-width` (420px) / `side-panel-width-rich` (640px), modal cap
105
+ `modal-width-max`, forms `form-max-width`, tables full-width. The corpus caps content at ~1280px with
106
+ 24/48px outer padding — operator forms cap tighter at `form-max-width`. Density is governed globally by
107
+ `density-tier` and stepped per archetype by the surface catalog — never by absolute overrides.
108
+
109
+ ## 6 Depth
110
+
111
+ Flat, color-as-elevation. Hierarchy comes from the near-black surface ladder and hairlines, never a
112
+ traditional shadow:
113
+
114
+ - **0 — canvas** `background` (`#131313`), no border.
115
+ - **1 — panel / card** `card` on a 1px `border`; a focused card firms its hairline to mint `#3cffd0` or
116
+ white — the border escalates, the surface does not lift.
117
+ - **2 — overlay** `popover` / side panel / modal — on a dark canvas a drop shadow barely registers, so
118
+ `shadow-intensity` earns only the faintest `sm` ring; separation is carried by border and position.
119
+
120
+ Focus is a Focus Cyan `ring` outline (never a glow), visible on every interactive element. The active-nav
121
+ underline is a 1px inset mint rule — a signature Verge move that carries. Three z-levels: content, sticky
122
+ chrome, overlay. No gradients, no glows, no atmospheric blurs — the hazard-tape aesthetic breaks if
123
+ anything fades.
124
+
125
+ ## 7 Do's & Don'ts
126
+
127
+ - **Do** anchor every view on the near-black `#131313` canvas — the dark canvas is the product, the
128
+ categorically-dark exception, not a theme toggle.
129
+ - **Do** reserve mint `primary` for the single most important action and the active-nav underline (black
130
+ text on the mint fill); everything else is neutral or status.
131
+ - **Do** carry every all-caps label, tag, timestamp, and ID in `font-mono` uppercase with positive
132
+ tracking — missing tracking is missing voice; apply `tabular-nums` to every numeric column.
133
+ - **Don't** use mint as small text (it vibrates under 16px) or as a background wash — mint is a fill and a
134
+ hairline, never a canvas tint.
135
+ - **Don't** promote a second chromatic accent — ultraviolet, yellow, and pink are chart/status hues.
136
+ - **Don't** pill the primary CTA (the 40px pill is a marketing shout) or square a corner — controls stay
137
+ softly rounded at `radius`.
138
+ - **Don't** signal elevation with a drop shadow; escalate the hairline (white, then mint) or step the
139
+ surface instead.
140
+
141
+ ## 8 Responsive
142
+
143
+ The operator sweep is 375 / 768 / 1024 / 1440.
144
+
145
+ | Breakpoint | What changes |
146
+ | --- | --- |
147
+ | 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; mono labels stay pinned at 11–12px; density holds |
148
+ | 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
149
+ | 1024 | sidebar expands; two-pane queue+detail holds side by side |
150
+ | 1440 | forms cap at `form-max-width`; tables and dashboards use the full width; margins breathe |
151
+
152
+ Saturated status and chart hues never lose saturation on any viewport — they reflow, they do not fade.
153
+
154
+ ## 9 Agent Prompt Guide
155
+
156
+ Directives the emitting agent follows verbatim:
157
+
158
+ - Reach for the near-black `#131313` canvas first — there is no light mode; the dark canvas is the brand.
159
+ - Accent only the primary action in mint, as a fill with black text or the active-nav underline. If two
160
+ things want the accent, one of them is not primary.
161
+ - Carry the mono-uppercase label voice everywhere labels, tags, timestamps, and IDs appear — positive
162
+ tracking on every all-caps run; every numeric column is `tabular-nums`, every ID / log line `font-mono`.
163
+ - Every workflow completes from the keyboard; the Focus Cyan `ring` outline is always visible.
164
+ - Stay flat — hairline and the near-black surface ladder before any shadow; escalate a border to white or
165
+ mint before reaching for elevation.
166
+ - Leave the marketing shout behind: the 60–107px Manuka hero, the saturated story tiles, the FK Roman
167
+ serif pulls, the 40px pill CTAs, the 300-weight whisper eyebrows. What carries: the near-black palette,
168
+ the single mint accent, the mono-uppercase voice, the rounded-never-square character, and flat depth.
169
+
170
+ ```yaml design-primitives
171
+ radius: 8px # derived: the Verge is emphatically never-square; controls stay softly rounded (scale offers 12/20px cards), the 24-40px marketing pill stays behind
172
+ shadow-intensity: 0.2 # derived: militantly flat color-as-elevation brand; on a dark canvas a shadow barely registers, so overlays get only the faintest ring
173
+ border-weight: 1px # corpus: 1px hairlines do the work shadows do elsewhere
174
+ density-gap: 1
175
+ density-inset: 1
176
+ font-sans: PolySans, Space Grotesk, system-ui, sans-serif # PolySans is the UI workhorse; Space Grotesk is the corpus-named substitute
177
+ font-mono: PolySans Mono, Space Mono, ui-monospace, monospace # PolySans Mono is the all-caps label voice; Space Mono substitute
178
+ font-weight-normal: 400 # derived: brand body runs 500 for editorial reading; dense operator body reads cleaner at 400
179
+ font-weight-strong: 700 # corpus: PolySans headlines run 700; the brand is punchy, not calm
180
+ heading-tracking: 0 # derived: PolySans operator headings track ~0; the signature positive tracking lives on the all-caps mono labels, applied by hand
181
+ duration-unit: 50ms # derived: operator base; corpus documents "ease" transitions but not a unit
182
+ duration-fast: 100ms # derived
183
+ duration-normal: 150ms # corpus: cards, tiles, and inputs transition at 150ms ease
184
+ duration-slow: 250ms # derived
185
+ ease-default: cubic-bezier(0.4,0,0.2,1) # corpus: transitions are "ease"; standard functional curve
186
+ contrast-boost: 1 # derived: liberal hairlines plus the near-black surface ladder already carry the grid
187
+ icon-stroke: 2 # derived: the Verge's bold, industrial character carries a full-weight 2px stroke, not the refined 1.75 default
188
+ icon-size-base: 16px # derived: corpus silent on UI icons; operator standard
189
+ sidebar-width-expanded: 248px # derived: corpus is an editorial homepage with no app shell; operator standard
190
+ sidebar-width-collapsed: 56px # derived: no shell in corpus; operator standard icon rail
191
+ topbar-height: 56px # derived: corpus top nav is "thin"; operator standard with room for the bold wordmark
192
+ side-panel-width: 420px # derived: no shell in corpus; operator standard
193
+ side-panel-width-rich: 640px # derived: content-heavy detail width
194
+ modal-width-max: 560px # derived: confirmations only
195
+ form-max-width: 640px # derived: corpus caps content at ~1280px; operator forms cap tighter
196
+ table-row-height: 44px # derived: the brand's paced whitespace → rows breathe a touch over the dense 40px default
197
+ verbosity: default # derived: the mono-label voice likes visible labels, kickers, and tags
198
+ feedback: subtle
199
+ density-tier: standard # derived: an editorial-paced brand read to an honest operator tier; the console density is available per-archetype
200
+ product-traits: [log-stream, dashboard, cms, content-queue, admin]
201
+ ```
202
+
203
+ ```yaml lever-manifest
204
+ version: 1
205
+ fonts: { sans: "PolySans, Space Grotesk, system-ui, sans-serif", mono: "PolySans Mono, Space Mono, ui-monospace, monospace" }
206
+ color-tokens:
207
+ light:
208
+ background: "#131313" # Canvas Black — the categorically-dark canvas fills the default-emitted theme slot
209
+ foreground: "#ffffff" # Hazard White
210
+ card: "#1a1a1a" # derived: a faint step off canvas so multi-card surfaces read; border still carries
211
+ card-foreground: "#ffffff"
212
+ muted: "#242424" # derived: subtle fill / hover, between card and slate
213
+ muted-foreground: "#949494" # Secondary Text
214
+ border: "#313131" # Image Frame hairline — white/mint reserved for emphasis
215
+ input: "#313131"
216
+ ring: "#1eaedb" # Focus Cyan — the brand's dedicated keyboard-focus hue
217
+ primary: "#3cffd0" # Jelly Mint — the one accent
218
+ primary-foreground: "#000000" # Absolute Black — the only place black appears
219
+ accent: "#2d2d2d" # Surface Slate — neutral selection tint, never a mint wash
220
+ accent-foreground: "#ffffff"
221
+ destructive: "#ff3b5c" # derived: brand has no red; a hazard-register red-pink so destructive reads as danger (corpus error-purple handed to charts)
222
+ destructive-foreground: "#ffffff"
223
+ success: "#22c55e" # derived: brand has no green; a clear green distinct from the mint-cyan primary
224
+ warning: "#ffd23c" # derived: echoes the brand's yellow story tile
225
+ popover: "#1a1a1a"
226
+ popover-foreground: "#ffffff"
227
+ secondary: "#2d2d2d" # Surface Slate — secondary button fill
228
+ secondary-foreground: "#e9e9e9" # Muted Text
229
+ chart-1: "#3cffd0" # mint
230
+ chart-2: "#5200ff" # Verge Ultraviolet — a brand hazard, chart-only here
231
+ chart-3: "#ffd23c" # yellow tile hue
232
+ chart-4: "#ff4da6" # derived: pink tile hue
233
+ chart-5: "#1eaedb" # electric blue / focus cyan doubling as a chart hue
234
+ sidebar: "#0f0f0f" # derived: a hair darker than canvas so the nav reads as chrome
235
+ sidebar-foreground: "#ffffff"
236
+ sidebar-primary: "#3cffd0" # mint active nav
237
+ sidebar-primary-foreground: "#000000"
238
+ sidebar-accent: "#2d2d2d"
239
+ sidebar-accent-foreground: "#ffffff"
240
+ sidebar-border: "#313131"
241
+ sidebar-ring: "#1eaedb"
242
+ spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
243
+ radius-scale: [2, 4, 8, 12, 20, 9999]
244
+ shadow-levels: [none, sm]
245
+ motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
246
+ icons: { family: lucide, stroke: 2 }
247
+ accent-count: 1
248
+ ```