oh-my-design-cli 1.8.2 → 1.8.6

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 (53) hide show
  1. package/README.ja.md +5 -5
  2. package/README.ko.md +7 -7
  3. package/README.md +7 -7
  4. package/README.zh-TW.md +5 -5
  5. package/agents/omd-master.md +1 -1
  6. package/data/reference-fingerprints.json +964 -4
  7. package/package.json +3 -1
  8. package/skills/omd-feel/SKILL.md +152 -0
  9. package/skills/omd-feel/provenance.md +233 -0
  10. package/skills/omd-feel/reference.md +254 -0
  11. package/skills/omd-harness/SKILL.md +1 -1
  12. package/skills/omd-init/SKILL.md +1 -1
  13. package/skills/omd-reference-capture/SKILL.md +1 -1
  14. package/web/references/591/DESIGN.md +460 -0
  15. package/web/references/asana/DESIGN.md +485 -0
  16. package/web/references/asos/DESIGN.md +475 -0
  17. package/web/references/bahamut/DESIGN.md +416 -0
  18. package/web/references/bbc/DESIGN.md +439 -0
  19. package/web/references/chunghwa/DESIGN.md +419 -0
  20. package/web/references/databricks/DESIGN.md +467 -0
  21. package/web/references/deliveroo/DESIGN.md +458 -0
  22. package/web/references/doordash/DESIGN.md +429 -0
  23. package/web/references/easywallet/DESIGN.md +449 -0
  24. package/web/references/esunbank/DESIGN.md +445 -0
  25. package/web/references/farfetch/DESIGN.md +436 -0
  26. package/web/references/fubon/DESIGN.md +438 -0
  27. package/web/references/govuk/DESIGN.md +450 -0
  28. package/web/references/hana/DESIGN.md +439 -0
  29. package/web/references/hubspot/DESIGN.md +485 -0
  30. package/web/references/hyundai/DESIGN.md +468 -0
  31. package/web/references/icook/DESIGN.md +432 -0
  32. package/web/references/instacart/DESIGN.md +439 -0
  33. package/web/references/ipassmoney/DESIGN.md +407 -0
  34. package/web/references/kakaopage/DESIGN.md +439 -0
  35. package/web/references/kbpay/DESIGN.md +442 -0
  36. package/web/references/kia/DESIGN.md +411 -0
  37. package/web/references/liner/DESIGN.md +465 -0
  38. package/web/references/monzo/DESIGN.md +461 -0
  39. package/web/references/naverpay/DESIGN.md +478 -0
  40. package/web/references/octopusenergy/DESIGN.md +436 -0
  41. package/web/references/openpoint/DESIGN.md +431 -0
  42. package/web/references/paypal/DESIGN.md +459 -0
  43. package/web/references/reddit/DESIGN.md +537 -0
  44. package/web/references/samsung/DESIGN.md +465 -0
  45. package/web/references/shinhanbank/DESIGN.md +429 -0
  46. package/web/references/skyscanner/DESIGN.md +563 -0
  47. package/web/references/snapchat/DESIGN.md +460 -0
  48. package/web/references/squarespace/DESIGN.md +454 -0
  49. package/web/references/ssg/DESIGN.md +439 -0
  50. package/web/references/starling/DESIGN.md +404 -0
  51. package/web/references/taiwanmobile/DESIGN.md +445 -0
  52. package/web/references/trainline/DESIGN.md +454 -0
  53. package/web/references/zoom/DESIGN.md +457 -0
@@ -0,0 +1,537 @@
1
+ ---
2
+ id: reddit
3
+ name: Reddit
4
+ country: US
5
+ category: consumer-tech
6
+ homepage: "https://www.reddit.com"
7
+ primary_color: "#FF4500"
8
+ logo:
9
+ type: simpleicons
10
+ slug: reddit
11
+ verified: "2026-06-22"
12
+ omd: "0.1"
13
+ tokens:
14
+ source: live-extract
15
+ extracted: "2026-06-22"
16
+ note: "primary = brand OrangeRed #FF4500 (wordmark, logo); CTA/upvote active = #D93900 (darker live interactive). Downvote = alien blue-purple #6A5CFF. Link blue #115BCA. Body text #333D42. All from live CSS custom properties via playwright inspect."
17
+ colors:
18
+ primary: "#FF4500"
19
+ primary-interactive: "#D93900"
20
+ primary-hover: "#AE2C00"
21
+ brand-orangered: "#FF4500"
22
+ alien-blue: "#1870F4"
23
+ action-primary: "#0A449B"
24
+ action-secondary: "#0A2F6C"
25
+ downvote: "#6A5CFF"
26
+ downvote-hover: "#523DFF"
27
+ canvas: "#FFFFFF"
28
+ canvas-weak: "#F6F8F9"
29
+ canvas-container: "#EEF1F3"
30
+ surface: "#E5EBEE"
31
+ foreground-strong: "#181C1F"
32
+ foreground: "#333D42"
33
+ foreground-weak: "#5C6C74"
34
+ on-primary: "#FFFFFF"
35
+ link: "#115BCA"
36
+ link-hover: "#0A449B"
37
+ link-visited: "#9B00D4"
38
+ divider: "#E5EBEE"
39
+ success: "#008A10"
40
+ error: "#BC0117"
41
+ warning: "#B78800"
42
+ dark-bg: "#2A3236"
43
+ typography:
44
+ family: { sans: "-apple-system, system-ui, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif", mono: "Noto Mono, monospace" }
45
+ display-lg: { size: 24, weight: 700, lineHeight: 1.33, use: "Page/subreddit headings" }
46
+ body-lg: { size: 18, weight: 600, lineHeight: 1.33, use: "Post titles (prominent)" }
47
+ body: { size: 14, weight: 400, lineHeight: 1.50, use: "Body text, comments, descriptions" }
48
+ body-sm: { size: 12, weight: 400, lineHeight: 1.50, use: "Metadata, upvote counts, timestamps" }
49
+ label: { size: 14, weight: 600, lineHeight: 1.00, use: "Button labels, nav items" }
50
+ label-sm: { size: 12, weight: 600, lineHeight: 1.00, use: "Badge labels, flair text" }
51
+ spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 20, xl: 24, xxl: 32, section: 48 }
52
+ rounded: { sm: 4, md: 8, lg: 16, full: 9999 }
53
+ shadow:
54
+ sm: "0 0.0625rem 0.25rem 0 rgba(0,0,0,0.149), 0 0.25rem 0.25rem 0 rgba(0,0,0,0.149)"
55
+ md: "0 0.25rem 0.5rem 0 rgba(0,0,0,0.102), 0 0.375rem 0.75rem 0 rgba(0,0,0,0.251)"
56
+ modal: "0px 2px 15px rgba(26, 26, 27, 0.3)"
57
+ nav: "0px 4px 14px rgba(0, 0, 0, 0.1)"
58
+ components:
59
+ button-primary: { type: button, bg: "#D93900", fg: "#ffffff", radius: "999px", height: "40px", padding: "0px 12px", font: "14px / 600", hover: "#AE2C00", use: "Log In / primary CTA — OrangeRed pill" }
60
+ button-secondary: { type: button, bg: "#E5EBEE", fg: "#000000", radius: "999px", height: "40px", padding: "0px 12px", font: "14px / 600", hover: "#DBE4E9", use: "Sign Up / secondary action" }
61
+ button-outlined: { type: button, bg: "transparent", fg: "#181C1F", border: "1px solid rgba(0,0,0,0.498)", radius: "999px", height: "38px", padding: "0px 11px", font: "14px / 600", use: "Create Post / ghost outlined action" }
62
+ input-search: { type: input, bg: "#F8F8F8", border: "1px solid transparent", radius: "999px", font: "14px / 400", focus: "#0A449B border", use: "Global search bar" }
63
+ post-card: { type: card, bg: "#FFFFFF", border: "1px solid rgba(0,0,0,0.2)", radius: "16px", shadow: "0 0.0625rem 0.25rem 0 rgba(0,0,0,0.149)", use: "Post card in feed" }
64
+ badge-flair: { type: badge, bg: "#E5EBEE", fg: "#333D42", radius: "9999px", padding: "2px 8px", font: "12px / 600", use: "Post flair / subreddit flair" }
65
+ upvote-tab: { type: tab, active: "text #FF4500 + icon fill", fg: "#5C6C74", use: "Upvote/downvote indicator (active = OrangeRed)" }
66
+ nav-item: { type: tab, fg: "#333D42", active: "#181C1F font-weight 600", font: "14px / 400", use: "Top navigation tabs (Best/Hot/New/Top)" }
67
+ toggle-switch: { type: toggle, bg: "#0A449B", radius: "9999px", use: "Settings toggle — alien blue when checked" }
68
+ dialog-modal: { type: dialog, bg: "#FFFFFF", radius: "16px", shadow: "0px 2px 15px rgba(26, 26, 27, 0.3)", use: "Login/signup modal dialog" }
69
+ components_harvested: true
70
+ ---
71
+
72
+ # Design System Inspiration of Reddit
73
+
74
+ ## 1. Visual Theme & Atmosphere
75
+
76
+ Reddit is the internet's self-described "front page" — and its design system, the Reddit Product Language (RPL), reflects exactly that: a platform built for content discovery at massive scale, where the design recedes so community-generated content can lead. The visual language is clean, functional, and deliberately neutral, punctuated by one unmistakable brand signature: **OrangeRed** (`#FF4500`), the color of the Snoo mascot's body and the wordmark, which appears on upvote arrows, CTA buttons, and the iconic logo.
77
+
78
+ The 2023–2024 rebrand introduced **Reddit Sans** (a custom typeface family also released publicly), moved the system toward a rounded, friendly geometry, and shifted the primary interactive color from the raw logo orange to a slightly deeper burnt-orange (`#D93900`) that works better at interactive scale without washing out. The feed itself is radically content-forward: no gradients, no decorative shadows, minimal chrome. Post cards sit on a white canvas (`#FFFFFF`) with soft neutral borders, and every decorative element serves a functional purpose — the downvote blue-purple (`#6A5CFF`) is the only other saturated hue in the system, creating an intuitive upvote-orange / downvote-purple polarity that users internalize within seconds.
79
+
80
+ The RPL is built on semantic design tokens defined as CSS custom properties (e.g. `--color-global-brand-orangered: #FF4500`, `--color-action-upvote: #D93900`, `--shreddit-color-wordmark: #FF4500`). The web frontend ships via custom elements (`shreddit-*` web components), and the token system follows a role-based naming convention that clearly separates global palette constants from contextual semantic roles.
81
+
82
+ **Key Characteristics:**
83
+ - OrangeRed (`#FF4500`) as the singular brand anchor — wordmark, logo, upvote icon active state, earned flair
84
+ - Deeper burnt-orange (`#D93900`) as the interactive/CTA color — Log In button, upvote button fill, admin identity
85
+ - Downvote blue-purple (`#6A5CFF`) as the semantic opposite — upvote polarity at a glance
86
+ - Alien Blue (`#1870F4`) as the second brand accent — focus rings, switches, primary actions
87
+ - System font stack — no custom web font for body; Reddit Sans available but body defaults to system
88
+ - Full-pill geometry (`999px` / `9999px` radius) dominates interactive elements — buttons, badges, inputs
89
+ - Flat, near-shadowless feed — content cards use only subtle hairline borders and minimal drop shadows
90
+ - Semantic token naming (`--color-action-upvote`, `--color-action-downvote`) — intentional polarity system
91
+
92
+ ## 2. Color Palette & Roles
93
+
94
+ ### Brand / Identity
95
+ - **OrangeRed** (`#FF4500`): Signature brand color — Snoo mascot body color, logotype wordmark, upvote arrow active text/icon state. The single most recognizable hue in the system. CSS: `--color-global-brand-orangered`, `--shreddit-color-wordmark`.
96
+ - **Interactive OrangeRed** (`#D93900`): The live CTA and upvote-fill color — slightly darker than the logo orange to improve contrast on white. CSS: `--color-brand-background`, `--color-action-upvote`, `--color-upvote-background`. Used for: Log In button background, upvote button active fill, admin identity badge.
97
+ - **OrangeRed Hover** (`#AE2C00`): Darkened hover state for primary CTA and upvote elements. CSS: `--color-brand-background-hover`, `--color-upvote-background-hover`.
98
+
99
+ ### Interactive / Secondary Brand
100
+ - **Alien Blue** (`#1870F4`): The secondary brand accent — focus rings, elevation-button-focus. CSS: `--color-global-alienblue`.
101
+ - **Action Primary** (`#0A449B`): Primary action blue — switch checked state, primary button, link hover. CSS: `--color-action-primary`, `--color-switch-input-background-checked`, `--color-primary-background`.
102
+ - **Action Secondary** (`#0A2F6C`): Deep navy — secondary action dark mode, button pressed state. CSS: `--color-action-secondary`.
103
+ - **Link Blue** (`#115BCA`): Default hyperlink color. CSS: `--color-primary`, `--color-a-default`.
104
+ - **Link Hover** (`#0A449B`): Link hover darkening. CSS: `--color-a-hover`, `--color-primary-hover`.
105
+ - **Link Visited** (`#9B00D4`): Visited link purple. CSS: `--color-a-visited`.
106
+
107
+ ### Downvote
108
+ - **Downvote Purple** (`#6A5CFF`): Downvote button active fill, semantic opposite of upvote orange. CSS: `--color-action-downvote`, `--color-downvote-background`.
109
+ - **Downvote Hover** (`#523DFF`): Deeper purple on hover. CSS: `--color-downvote-background-hover`.
110
+
111
+ ### Neutral Surface
112
+ - **Canvas White** (`#FFFFFF`): Page background, post cards, modal backgrounds. CSS: `--color-neutral-background`, `--color-neutral-background-strong`.
113
+ - **Surface Grey** (`#E5EBEE`): Secondary surface — secondary buttons, switch track, selected states. CSS: `--color-secondary-background`, `--color-neutral-background-canvas`.
114
+ - **Faint Container** (`#F6F8F9`): Hover backgrounds, input fields. CSS: `--color-neutral-background-weak`, `--color-neutral-background-hover`.
115
+ - **Container Strong** (`#EEF1F3`): Card container backgrounds. CSS: `--color-neutral-background-container-strong`.
116
+ - **UI Canvas** (`#F2F2F2`): App-level canvas behind content. CSS: `--color-ui-canvas`.
117
+ - **Dark Surface** (`#2A3236`): Dark mode backgrounds, dark tooltip. CSS: `--color-global-darkblue`.
118
+
119
+ ### Text Hierarchy
120
+ - **Text Strong** (`#181C1F`): Nav labels, strong headings, button labels. CSS: `--color-neutral-content-strong`.
121
+ - **Text Default** (`#333D42`): Body copy, most UI text. CSS: `--color-neutral-content`.
122
+ - **Text Weak** (`#5C6C74`): Metadata, timestamps, secondary labels, placeholder text. CSS: `--color-neutral-content-weak`, `--color-label-default`.
123
+ - **Divider** (`rgba(0,0,0,0.20)`): Default borders and hairlines between posts. CSS: `--color-neutral-border`.
124
+
125
+ ### Status
126
+ - **Success** (`#008A10`): Moderator badge, success banner. CSS: `--color-success-background`, `--color-global-moderator`.
127
+ - **Error** (`#BC0117`): Error states, mods-filtered indicator text. CSS: `--color-danger-content`.
128
+ - **Warning** (`#B78800`): Caution states, award gold color, stars. CSS: `--color-global-gold`, `--color-global-stars`.
129
+
130
+ ## 3. Typography Rules
131
+
132
+ ### Font Family
133
+ - **Primary / UI**: System font stack — `-apple-system, "system-ui", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif`. Reddit deployed a custom **Reddit Sans** typeface in 2023 (also open-sourced as `applied-b*` font-face variants in production CSS), but the body default remains the system stack for performance. Button-specific font uses an encoded font-face (`applied-button-font-0`).
134
+ - **Monospace**: `Noto Mono`, monospace — used in code blocks and technical contexts.
135
+
136
+ ### Hierarchy
137
+
138
+ | Role | Size | Weight | Line Height | Notes |
139
+ |------|------|--------|-------------|-------|
140
+ | Section heading | 24px | 700 | 1.33 | Subreddit names, page titles |
141
+ | Post title (prominent) | 18px | 600 | 1.33 | Featured/large card titles |
142
+ | Post title (standard) | 16px | 600 | 1.25 | Standard feed post titles |
143
+ | Body / comments | 14px | 400 | 1.50 | Default reading text |
144
+ | Metadata / timestamps | 12px | 400 | 1.50 | Upvote counts, usernames, time |
145
+ | Button label | 14px | 600 | 1.00 | Nav CTAs — Log In, Sign Up |
146
+ | Badge / flair | 12px | 600 | 1.00 | Post flair, award labels |
147
+
148
+ ### Principles
149
+ - **System stack first**: Reddit prioritizes performance and native feel — no blocking web font for body text.
150
+ - **Weight 600 dominates interactive**: Buttons, nav labels, and post titles all use weight 600 — creating clear interactive differentiation from body weight 400.
151
+ - **Pill-shaped font metrics**: The 999px border-radius on buttons and inputs reinforces the "friendly pill" geometry; larger paddings on pill elements compensate for the reduced visual weight of the rounded edge.
152
+ - **12px metadata density**: The 12px / weight 400 tier handles the platform's dense metadata layer (vote counts, comment counts, usernames, timestamps) without competing with post content.
153
+
154
+ ## 4. Component Stylings
155
+
156
+ ### Buttons
157
+
158
+ **Primary CTA (Log In)**
159
+ - Background: `#D93900`
160
+ - Text: `#ffffff`
161
+ - Radius: 999px
162
+ - Height: 40px
163
+ - Padding: 0px 12px
164
+ - Font: 14px / 600
165
+ - Hover: `#AE2C00` background
166
+ - Use: Primary auth CTA — "Log In" in nav
167
+
168
+ **Secondary (Sign Up)**
169
+ - Background: `#E5EBEE`
170
+ - Text: `#000000`
171
+ - Radius: 999px
172
+ - Height: 40px
173
+ - Padding: 0px 12px
174
+ - Font: 14px / 600
175
+ - Hover: `#DBE4E9` background
176
+ - Use: Secondary auth CTA — "Sign Up" in nav
177
+
178
+ **Outlined Ghost (Create Post)**
179
+ - Background: transparent
180
+ - Text: `#181C1F`
181
+ - Border: 1px solid rgba(0, 0, 0, 0.498)
182
+ - Radius: 999px
183
+ - Height: 38px
184
+ - Padding: 0px 11px
185
+ - Font: 14px / 600
186
+ - Use: "Create Post" and other secondary ghost actions
187
+
188
+ **Small Action Pill**
189
+ - Background: rgba(0, 0, 0, 0) (transparent)
190
+ - Text: `#181C1F`
191
+ - Radius: 999px
192
+ - Height: 32px
193
+ - Padding: 0px 9px
194
+ - Font: 12px / 600
195
+ - Use: Post action buttons (Share, Save, More)
196
+
197
+ ### Inputs
198
+
199
+ **Search Bar**
200
+ - Background: `#F8F8F8`
201
+ - Border: 1px solid transparent
202
+ - Radius: 999px
203
+ - Font: 14px / 400
204
+ - Focus: `#0A449B` border
205
+ - Text: `#131313`
206
+ - Placeholder: `#5C6C74`
207
+ - Use: Global site search in nav
208
+
209
+ **Form Input (Bordered)**
210
+ - Background: `#F6F8F9`
211
+ - Border: 1px solid transparent (default); `#0A449B` on focus
212
+ - Radius: 8px
213
+ - Font: 14px / 400
214
+ - Text: `#181C1F`
215
+ - Use: Login/signup form fields
216
+
217
+ ### Cards & Containers
218
+
219
+ **Post Card (Feed)**
220
+ - Background: `#FFFFFF`
221
+ - Border: 1px solid rgba(0, 0, 0, 0.20)
222
+ - Radius: 16px
223
+ - Shadow: `0 0.0625rem 0.25rem 0 rgba(0,0,0,0.149), 0 0.25rem 0.25rem 0 rgba(0,0,0,0.149)`
224
+ - Use: Individual post card in main feed
225
+
226
+ **Container Card**
227
+ - Background: `#EEF1F3`
228
+ - Radius: 8px
229
+ - Use: Sidebar widgets, grouped content containers
230
+
231
+ ### Badges & Tags (Flair)
232
+
233
+ **Default Flair**
234
+ - Background: `#E5EBEE`
235
+ - Text: `#333D42`
236
+ - Radius: 9999px
237
+ - Padding: 2px 8px
238
+ - Font: 12px / 600
239
+ - Use: Post flair, subreddit flair, category tags
240
+
241
+ **NSFW Badge**
242
+ - Background: `rgba(222, 1, 159, 0.15)`
243
+ - Text: `#DE019F`
244
+ - Radius: 9999px
245
+ - Font: 12px / 600
246
+ - Use: NSFW content label (`--color-global-nsfw: #DE019F`)
247
+
248
+ **Spoiler Badge**
249
+ - Background: `rgba(19, 19, 19, 0.15)`
250
+ - Text: `#131313`
251
+ - Radius: 9999px
252
+ - Font: 12px / 600
253
+ - Use: Spoiler content label
254
+
255
+ ### Tabs
256
+
257
+ **Sort Tab (Best / Hot / New / Top)**
258
+ - Text (inactive): `#333D42`
259
+ - Text (active): `#181C1F` weight 600
260
+ - Font: 14px / 400 (inactive), 14px / 600 (active)
261
+ - Use: Feed sorting tabs below post composer
262
+
263
+ **Upvote Indicator**
264
+ - Active (upvoted): OrangeRed text `#FF4500` on upvote arrow; `#D93900` on count
265
+ - Active (downvoted): Purple `#6A5CFF` on downvote arrow
266
+ - Inactive: Muted `#5C6C74`
267
+ - Use: Upvote/downvote controls on each post — the polarity signal system
268
+
269
+ ### Toggles
270
+
271
+ **Settings Toggle**
272
+ - Background (checked): `#0A449B`
273
+ - Background (unchecked): `#E5EBEE`
274
+ - Radius: 9999px
275
+ - Handle: `#FFFFFF`
276
+ - Use: Preferences and settings toggles
277
+
278
+ ### Dialogs
279
+
280
+ **Login/Signup Modal**
281
+ - Background: `#FFFFFF`
282
+ - Radius: 16px
283
+ - Shadow: `0px 2px 15px rgba(26, 26, 27, 0.3)`
284
+ - Scrim: `rgba(0, 0, 0, 0.60)`
285
+ - Use: Auth modal, post modals
286
+
287
+ ---
288
+
289
+ **Verified:** 2026-06-22 (omd:add-reference CREATE — Tier 1 live inspect)
290
+ **Tier 1 sources:** https://www.reddit.com/ (homepage live inspect, headed Chrome playwright, CSS custom properties via getComputedStyle); https://www.reddit.com/r/technology/ (subreddit page second surface — full CSS custom properties scan, 360+ tokens)
291
+ **Tier 2 sources:** getdesign.md/reddit — not found (404); styles.refero.design/?q=reddit — no Reddit match in search results
292
+ **Conflicts unresolved:** none — full CSS token set extracted from Tier 1 live surfaces only
293
+
294
+ ## 5. Layout Principles
295
+
296
+ ### Spacing System
297
+ - Base unit: 4px
298
+ - Scale: 4px, 8px, 12px, 16px, 20px, 24px, 32px, 48px
299
+ - Notable: Post card internal padding 16px; subreddit/community sidebar 24px gaps; feed gutter varies by viewport
300
+
301
+ ### Grid & Container
302
+ - Max content width: ~1200px; three-column layout (feed + sidebar + context panel on desktop)
303
+ - Feed column: dominant (~60–65% width), sidebar ~30%
304
+ - Full-bleed hero for subreddit headers (banner image)
305
+ - Mobile: single-column, sidebar collapses into bottom sheet
306
+
307
+ ### Whitespace Philosophy
308
+ - **Content-forward minimalism**: the design system stands back so community content takes center stage. Tight vertical rhythm between post cards (8–12px gap) maximizes information density.
309
+ - **Breathing room within cards**: post card internals use generous 16px padding, but card-to-card spacing is compact.
310
+ - **Flat and fast**: minimal decorative whitespace; every spacing decision serves information hierarchy.
311
+
312
+ ### Border Radius Scale
313
+ - Sharp (4px): Inner chips, tooltips
314
+ - Standard (8px): Form inputs, container cards
315
+ - Relaxed (16px): Post cards, modal dialogs
316
+ - Pill (999px): Buttons, search bar, flair badges
317
+ - Full (9999px): Vote count pills, small badges
318
+
319
+ ## 6. Depth & Elevation
320
+
321
+ | Level | Treatment | Use |
322
+ |-------|-----------|-----|
323
+ | Flat (Level 0) | No shadow, transparent background | Feed backgrounds, nav links |
324
+ | Hairline (Level 1) | `1px solid rgba(0,0,0,0.20)` border | Post card borders, dividers |
325
+ | Raised (Level 2) | `elevation-sm`: `0 0.0625rem 0.25rem rgba(0,0,0,0.149), 0 0.25rem 0.25rem rgba(0,0,0,0.149)` | Post cards |
326
+ | Floating (Level 3) | `elevation-md`: `0 0.25rem 0.5rem rgba(0,0,0,0.102), 0 0.375rem 0.75rem rgba(0,0,0,0.251)` | Dropdowns, menus |
327
+ | Overlay (Level 4) | `boxshadow-modal: 0px 2px 15px rgba(26,26,27,0.3)` + `rgba(0,0,0,0.60)` scrim | Modal dialogs |
328
+ | Navigation | `boxshadow-navigation: 0px 4px 14px rgba(0,0,0,0.10)` | Sticky nav bar |
329
+
330
+ **Shadow Philosophy**: Reddit uses neutral, dark-gray shadows throughout — no chromatic tinting. The shadow system is subtle and functional, emphasizing content lift rather than brand atmosphere. The scrim for modals is a deep `rgba(0,0,0,0.60)`, communicating content lock without decorative effect.
331
+
332
+ ## 7. Do's and Don'ts
333
+
334
+ ### Do
335
+ - Use `#FF4500` OrangeRed for the wordmark and logo — it is the brand's single identity color
336
+ - Use `#D93900` for interactive CTAs and upvote fills — slightly darker for better contrast
337
+ - Use full-pill geometry (`999px` radius) for all buttons, search inputs, and flair badges
338
+ - Use `#6A5CFF` exclusively for downvote states — the orange/purple polarity is a core UX signal
339
+ - Use `#0A449B` Alien Blue for focus rings, checkboxes, and switch toggles
340
+ - Use semantic token names from the RPL — role-based naming (`--color-action-upvote`) over raw hex
341
+ - Keep card backgrounds `#FFFFFF` with subtle hairline borders — no heavy shadows on content cards
342
+ - Use weight 600 for button labels, nav items, and post titles to establish interaction hierarchy
343
+
344
+ ### Don't
345
+ - Use `#FF4500` as a button fill for interactive states — it lacks contrast on white; use `#D93900`
346
+ - Spread the OrangeRed to decorative elements — it means "upvote" and "action" in this system
347
+ - Use the downvote purple (`#6A5CFF`) for non-voting contexts — it carries specific semantic meaning
348
+ - Apply heavy box shadows to post cards — Reddit's elevation is intentionally minimal
349
+ - Use rectangular corners on buttons — the pill shape is a core identity element
350
+ - Mix the orange and blue-purple as decorative gradients — they function as opposing signals
351
+ - Use custom serif or display fonts — Reddit's voice is system-native, not editorial
352
+ - Apply high-saturation backgrounds to large surfaces — neutrals dominate; color is reserved for action
353
+
354
+ ## 8. Responsive Behavior
355
+
356
+ ### Breakpoints
357
+ | Name | Width | Key Changes |
358
+ |------|-------|-------------|
359
+ | Mobile | <640px | Single column, sidebar hidden, compact nav |
360
+ | Tablet | 640-1024px | Two-column layout (feed + compact sidebar) |
361
+ | Desktop | 1024-1280px | Full three-column layout |
362
+ | Large Desktop | >1280px | Centered content with max-width ~1200px |
363
+
364
+ ### Touch Targets
365
+ - All primary buttons at 40px height — comfortably tappable
366
+ - Small action pill buttons at 32px height (8px padding) — borderline on mobile, but aligns with platform density expectations
367
+ - Upvote/downvote buttons: 32px × 32px minimum tap zone
368
+
369
+ ### Collapsing Strategy
370
+ - Sidebar: three columns → two columns → hidden (accessed via bottom drawer on mobile)
371
+ - Post title typography: scales from 18px on desktop to 16px on mobile
372
+ - Navigation: horizontal full nav → condensed with overflow menu
373
+
374
+ ## 9. Agent Prompt Guide
375
+
376
+ ### Quick Color Reference
377
+ - Brand / Logo: OrangeRed (`#FF4500`)
378
+ - Primary CTA / Upvote active: Burnt Orange (`#D93900`)
379
+ - CTA Hover: Dark Orange (`#AE2C00`)
380
+ - Downvote active: Purple (`#6A5CFF`)
381
+ - Link Blue: (`#115BCA`)
382
+ - Focus ring / Switch: Alien Blue (`#0A449B`)
383
+ - Background: White (`#FFFFFF`)
384
+ - Card border: `rgba(0,0,0,0.20)`
385
+ - Body text: Dark Teal (`#333D42`)
386
+ - Metadata text: Slate (`#5C6C74`)
387
+ - Surface: Light Blue-Grey (`#E5EBEE`)
388
+ - Container: (`#EEF1F3`)
389
+
390
+ ### Example Component Prompts
391
+ - "Create a Reddit-style Log In button: `#D93900` background, white text, 999px radius, 40px height, 0px 12px padding, 14px / weight 600 system-ui. Hover: `#AE2C00`."
392
+ - "Design a Reddit post card: white `#FFFFFF` background, 16px radius, 1px solid rgba(0,0,0,0.20) border, minimal box-shadow `0 1px 4px rgba(0,0,0,0.15)`. Post title 18px / 600 / `#181C1F`. Metadata 12px / 400 / `#5C6C74`."
393
+ - "Build a flair badge: `#E5EBEE` background, `#333D42` text, 9999px radius, 2px 8px padding, 12px / 600. For NSFW: `#DE019F` text with `rgba(222,1,159,0.15)` background."
394
+ - "Create upvote/downvote controls: upvote arrow icon in `#D93900` when active / `#5C6C74` inactive; vote count text `#D93900` when upvoted; downvote arrow `#6A5CFF` when active."
395
+ - "Design a Reddit modal: white `#FFFFFF` background, 16px radius, `0px 2px 15px rgba(26,26,27,0.3)` shadow, `rgba(0,0,0,0.60)` backdrop scrim."
396
+
397
+ ### Iteration Guide
398
+ 1. The OrangeRed (`#FF4500`) is brand identity; the burnt orange (`#D93900`) is interactive/action
399
+ 2. Pill geometry (999px+) is non-negotiable for buttons and inputs — Reddit's rounded language
400
+ 3. The orange/purple vote polarity (`#D93900` upvote / `#6A5CFF` downvote) is a product UX primitive, not decorative
401
+ 4. Keep card borders thin and dark (`rgba(0,0,0,0.20)`) — no colored borders
402
+ 5. System font stack for body — no display fonts; weight 600 does the heavy lifting
403
+ 6. `#333D42` is the default text color (not black) — warm, slightly blue-shifted
404
+ 7. Alien Blue `#1870F4` / `#0A449B` is for focus accessibility and system state, not branding
405
+ 8. Post titles at 18px / 600 create enough hierarchy over 14px / 400 body without display sizes
406
+
407
+ ---
408
+
409
+ ## 10. Voice & Tone
410
+
411
+ Reddit's voice is **irreverent, direct, community-owned, and proudly unpolished.** The company tagline — "The heart of the internet" — captures the paradox: a platform with immense cultural influence that still feels like it belongs to the people who use it, not the corporation that runs it. Reddit's product copy is sparse and functional; the real "voice" of Reddit is 100,000 communities (subreddits) each expressing their own personality. Reddit-as-platform stays out of the way and lets the community speak.
412
+
413
+ | Context | Tone |
414
+ |---|---|
415
+ | Nav/CTA labels | Terse and direct: "Log In", "Sign Up", "Create Post". No explanation. |
416
+ | Error messages | Plain-English, often self-deprecating ("Hmm, that page doesn't exist"). |
417
+ | Empty states | Communal framing: "Be the first to comment." Not "No content found." |
418
+ | Onboarding | Casual, interest-led: "What are you into?" — not "Complete your profile". |
419
+ | Community rules | Varies by subreddit; platform defaults to firm-but-clear. |
420
+ | Admin / mod messages | Authoritative. Badge color `#008A10` signals official status. |
421
+ | Marketing / ads | Bold, internet-native, subversive — frequently riffs on Reddit culture itself. |
422
+
423
+ **Voice samples (characteristic Reddit product UI):**
424
+ - "The front page of the internet" — original tagline (brand heritage). *(historically verified)*
425
+ - "Log In" / "Sign Up" — nav CTAs: shortest possible labels. *(verified live 2026-06-22)*
426
+ - "Reddit - The heart of the internet" — current page title on homepage. *(verified live 2026-06-22)*
427
+
428
+ **Forbidden register**: corporate enthusiasm ("We're excited to announce"), patronizing explanations, over-designed onboarding friction, buzzword marketing copy. Reddit's community is sophisticated and allergic to inauthentic brand speak.
429
+
430
+ ## 11. Brand Narrative
431
+
432
+ Reddit was founded in **2005** by **Steve Huffman (Ohanian's college roommate and current CEO)** and **Alexis Ohanian**, two 22-year-old University of Virginia graduates who pitched Y Combinator the idea of a "front page of the internet" — a link aggregator where users, not editors, decided what mattered. The original idea (proposed to Paul Graham as an "online ordering for food" concept) was redirected toward social news aggregation. Reddit was acquired by **Condé Nast** in 2006 for a reported $10–20M, operated under Condé Nast's Advance Publications umbrella for years, and went public on the **NYSE (ticker: RDDT)** in March 2024 at a $6.4B valuation.
433
+
434
+ Reddit's cultural influence vastly outweighs its revenue. The **WallStreetBets subreddit** orchestrated the 2021 GameStop short squeeze, demonstrating that coordinated community action on Reddit could move global financial markets. Reddit's **Ask Me Anything (AMA)** format became a mainstream media genre — presidents, scientists, and celebrities treated a Reddit AMA as a cultural currency. The platform's community-moderated structure (volunteer moderators "mods" control individual subreddits) is both its greatest strength and most persistent management challenge.
435
+
436
+ The 2023 API pricing controversy — which drove a mass subreddit blackout protest — illustrated the tension between Reddit's community-ownership culture and its corporate imperatives as a public company. The eventual IPO in 2024 formalized that tension, with Reddit positioning user karma and contribution as a foundational differentiator against algorithmically-driven competitors.
437
+
438
+ What Reddit refuses: editorial curation replacing community voice, clean corporate aesthetics that feel out of place in a community context, and losing the nerd-internet authenticity that made it the "front page" in the first place. What it embraces: Snoo the mascot, OrangeRed as an icon-level color, the upvote/downvote mechanic as a democratic signal, and a design language that says "the content is what matters."
439
+
440
+ ## 12. Principles
441
+
442
+ 1. **Community over curation.** Algorithms assist; communities decide. *UI implication:* the design must never visually overshadow user-generated content — neutral colors, thin borders, and minimal chrome keep the post front and center.
443
+ 2. **Vote polarity is a first-class UX primitive.** The orange upvote / purple downvote is not decoration — it is the platform's core engagement mechanic rendered in color. *UI implication:* `#D93900` and `#6A5CFF` are reserved exclusively for vote states; using them elsewhere creates signal confusion.
444
+ 3. **Identity is the subreddit, not the surface.** Reddit's product chrome is deliberately generic so each community can express its own personality through flair, banners, and custom themes. *UI implication:* platform-level UI components are neutral and modular; community theming sits on top.
445
+ 4. **Density serves discovery.** Reddit is a platform where users scan hundreds of titles in minutes. *UI implication:* compact card height, tight metadata, 12px timestamps — density is a feature, not a bug.
446
+ 5. **Earn the orange.** OrangeRed appears when something is earned (upvotes, awards) or acted upon (CTAs). It doesn't decorate. *UI implication:* `#FF4500` / `#D93900` are state/action colors, not background colors for sections or illustrations.
447
+
448
+ ## 13. Personas
449
+
450
+ *Personas below are fictional archetypes informed by publicly observable Reddit user segments, not individual people.*
451
+
452
+ **Marcus Webb, 26, Chicago.** /r/nba lurker and frequent commenter on sports threads. Opens Reddit before Twitter after any major game. Values the thread format — ten levels of nested debate in a way no other platform enables. Uses the app daily, votes obsessively, has strong opinions about which subreddits have "good mods." Would notice immediately if Reddit changed the upvote button color.
453
+
454
+ **Priya Nair, 32, Bengaluru.** Senior software engineer who uses /r/cscareerquestions and /r/ExperiencedDevs for career signal and /r/LocalLLaMA for ML research tracking. Treats Reddit as a curated RSS that happens to have real humans attached. Uses old.reddit.com in a separate browser tab because she prefers information density over polish. Allergic to product redesigns.
455
+
456
+ **Dani Kowalczyk, 19, Warsaw.** Uses Reddit in English because the niche communities she's interested in (vintage synthesizers, obscure film) are richer there than on any Polish-language platform. Has multiple accounts — one for gaming, one for music. Participates in AMA threads. Has bought products purely because /r/BuyItForLife recommended them.
457
+
458
+ **Greg Thornton, 48, Nashville.** Found Reddit during the pandemic through /r/DIY and /r/woodworking. Uses it almost exclusively through search ("reddit woodworking dovetail jig") because direct navigation to the site feels chaotic. Has never posted, only comments. Has been lurking for four years. A classic "dark matter" Redditor.
459
+
460
+ ## 14. States
461
+
462
+ | State | Treatment |
463
+ |---|---|
464
+ | **Empty (new subreddit, no posts)** | Neutral canvas. Single-sentence prompt in `#5C6C74` metadata tone: "Be the first to post here." One orange CTA: "Create Post". No illustration required. |
465
+ | **Empty (search, no results)** | Direct explanation: "Hmm, your search returned no results. Try a different term." No decorative empty state. |
466
+ | **Loading (feed first paint)** | Skeleton cards at post-card dimensions — white `#FFFFFF` background, 16px radius, placeholder bars in `#EEF1F3` at title/metadata positions. Shimmer at `#00000008` opacity. |
467
+ | **Loading (vote processing)** | Upvote count updates optimistically — count changes immediately, reverts on error. No blocking spinner. |
468
+ | **Error (post failed to load)** | Inline error in the card position with a grey background: "Something went wrong. Try refreshing." Retry CTA in default outlined style. |
469
+ | **Error (form validation — login)** | Field-level. Red border (`#BC0117` tone) on the input + 12px error text below: specific message ("Incorrect password"). |
470
+ | **Error (rate limit / banned)** | Full-page error: direct, no-nonsense explanation. "You've been temporarily banned from /r/X." Links to appeals process. |
471
+ | **Success (post submitted)** | Brief confirmation: redirected to the new post. No celebratory toast — the post existing IS the confirmation. |
472
+ | **Success (vote registered)** | Instant color change on the upvote/downvote arrow and count. No toast, no animation beyond the state flip. |
473
+ | **Skeleton** | `#EEF1F3` placeholder blocks at exact card dimensions, 8px radius on inner blocks, 16px on card wrapper. Subtle horizontal shimmer. |
474
+ | **Disabled** | Button opacity reduced; OrangeRed interactive becomes `rgba(217,57,0,0.3)` (`--color-upvote-background-disabled`). Downvote disabled: `rgba(106,92,255,0.3)`. |
475
+ | **NSFW blur** | Post thumbnail blurred with `rgba(0,0,0,0.6)` overlay until user confirms age. Badge `#DE019F` visible above blur. |
476
+
477
+ ## 15. Motion & Easing
478
+
479
+ **Durations**:
480
+
481
+ | Token | Value | Use |
482
+ |---|---|---|
483
+ | `motion-instant` | 0ms | Vote state commits, focus ring appearance |
484
+ | `motion-fast` | 100–150ms | Button hover/active, icon state change |
485
+ | `motion-standard` | 200ms | Dropdown open, sheet slide-in, modal appear |
486
+ | `motion-slow` | 300ms | Page transitions, sidebar collapse |
487
+
488
+ **Easings**:
489
+
490
+ | Token | Curve | Use |
491
+ |---|---|---|
492
+ | `ease-enter` | `cubic-bezier(0.2, 0.6, 0.25, 1)` | Arriving — modals, dropdowns, drawers |
493
+ | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals |
494
+ | `ease-standard` | `cubic-bezier(0.25, 0.1, 0.25, 1)` | Two-way transitions |
495
+
496
+ **Signature motions**:
497
+ 1. **Vote state flip.** The upvote/downvote count and icon color transition is effectively instantaneous (≤100ms) — optimistic update is the mechanic, motion is barely perceptible. The semantic color change IS the feedback; animation would delay it.
498
+ 2. **Feed post card hover.** Subtle `box-shadow` intensification on hover (`elevation-sm` → `elevation-md`) with `motion-fast` ease. The shadow lift signals interactivity without moving the card.
499
+ 3. **Sidebar drawer (mobile).** Full-height drawer from the left edge at `motion-standard / ease-enter`. Communities list appears as a coherent panel, not individual items animating.
500
+ 4. **Reduce motion.** Under `prefers-reduced-motion: reduce`, all transitions collapse to instant state changes. Skeleton shimmer is replaced with a static `#EEF1F3` fill. Vote counts update without transition. The product remains fully functional.
501
+
502
+ <!--
503
+ OmD v0.1 Sources — Philosophy Layer (sections 10–15)
504
+
505
+ Tier 1 live inspect (2026-06-22) via playwright getComputedStyle on:
506
+ - https://www.reddit.com/ — headed Chrome, networkidle, full CSS custom properties scan (360+ color tokens)
507
+ - https://www.reddit.com/r/technology/ — second subreddit surface, domcontentloaded, component inspection
508
+
509
+ Key token extractions (verified live):
510
+ - --color-global-brand-orangered: #FF4500 (brand OrangeRed)
511
+ - --shreddit-color-wordmark: #FF4500 (logo color confirmed)
512
+ - --color-brand-background: #D93900 (interactive CTA fill)
513
+ - --color-action-upvote: #D93900 (upvote active fill)
514
+ - --color-action-downvote: #6A5CFF (downvote fill)
515
+ - --color-global-alienblue: #1870F4 (focus ring / secondary accent)
516
+ - --color-action-primary: #0A449B (primary interactive)
517
+ - --color-a-default: #115BCA (link color)
518
+ - --color-neutral-content: #333D42 (body text)
519
+ - Log In button: rgb(217,57,0) = #D93900 (live computed style)
520
+ - Sign Up button: rgb(229,235,238) = #E5EBEE (live computed style)
521
+ - Body font stack: -apple-system, system-ui, Segoe UI, Roboto, Helvetica Neue, Arial
522
+ - document.title: "Reddit - The heart of the internet"
523
+
524
+ RPL (Reddit Product Language) is Reddit's internal design system. Not publicly documented
525
+ at a URL — token names inferred from CSS custom property naming conventions in the live
526
+ production CSS bundle.
527
+
528
+ Brand narrative: Reddit founding (2005), Steve Huffman + Alexis Ohanian, Y Combinator,
529
+ Condé Nast acquisition (~2006), NYSE IPO March 2024 (RDDT), WallStreetBets/GameStop 2021 —
530
+ widely documented public facts.
531
+
532
+ Personas are fictional archetypes informed by publicly observable Reddit user segments.
533
+ Names are illustrative; they do not refer to real people.
534
+
535
+ Tier 2: getdesign.md/reddit returned "No designs found"; refero search returned no Reddit match.
536
+ All design values sourced from Tier 1 live inspection only.
537
+ -->