cdragon 0.1.0
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.
- package/README.md +110 -0
- package/bin/cdragon.js +170 -0
- package/package.json +31 -0
- package/skills/agent-browser/SKILL.md +50 -0
- package/skills/grill-me/SKILL.md +7 -0
- package/skills/herdr-agent/SKILL.md +142 -0
- package/skills/herdr-cli/SKILL.md +388 -0
- package/skills/herdr-cli/scripts/herdr-agent-run-and-wait +203 -0
- package/skills/herdr-cli/scripts/herdr-agent-wait-complete +168 -0
- package/skills/notion-presentation/SKILL.md +170 -0
- package/skills/notion-presentation/references/example-redis-deck.md +97 -0
- package/skills/setup-matt-pocock-skills/SKILL.md +127 -0
- package/skills/setup-matt-pocock-skills/domain.md +51 -0
- package/skills/setup-matt-pocock-skills/issue-tracker-github.md +34 -0
- package/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +35 -0
- package/skills/setup-matt-pocock-skills/issue-tracker-local.md +19 -0
- package/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
- package/skills/tdd/SKILL.md +108 -0
- package/skills/tdd/mocking.md +59 -0
- package/skills/tdd/refactoring.md +10 -0
- package/skills/tdd/tests.md +61 -0
- package/skills/to-html/SKILL.md +83 -0
- package/skills/to-html/designs/INDEX.md +74 -0
- package/skills/to-html/designs/airbnb.DESIGN.md +581 -0
- package/skills/to-html/designs/airtable.DESIGN.md +275 -0
- package/skills/to-html/designs/alipay.DESIGN.md +456 -0
- package/skills/to-html/designs/apple.DESIGN.md +566 -0
- package/skills/to-html/designs/banksalad.DESIGN.md +621 -0
- package/skills/to-html/designs/channeltalk.DESIGN.md +374 -0
- package/skills/to-html/designs/clay.DESIGN.md +398 -0
- package/skills/to-html/designs/clickhouse.DESIGN.md +374 -0
- package/skills/to-html/designs/cohere.DESIGN.md +361 -0
- package/skills/to-html/designs/coinone.DESIGN.md +218 -0
- package/skills/to-html/designs/coupang.DESIGN.md +502 -0
- package/skills/to-html/designs/cursor.DESIGN.md +416 -0
- package/skills/to-html/designs/elevenlabs.DESIGN.md +376 -0
- package/skills/to-html/designs/expo.DESIGN.md +373 -0
- package/skills/to-html/designs/figma.DESIGN.md +490 -0
- package/skills/to-html/designs/framer.DESIGN.md +393 -0
- package/skills/to-html/designs/freee.DESIGN.md +572 -0
- package/skills/to-html/designs/gangnamunni.DESIGN.md +621 -0
- package/skills/to-html/designs/gmarket.DESIGN.md +483 -0
- package/skills/to-html/designs/gogolook.DESIGN.md +131 -0
- package/skills/to-html/designs/hahow.DESIGN.md +158 -0
- package/skills/to-html/designs/hashicorp.DESIGN.md +369 -0
- package/skills/to-html/designs/hyundaicard.DESIGN.md +177 -0
- package/skills/to-html/designs/ibm.DESIGN.md +420 -0
- package/skills/to-html/designs/kakaobank.DESIGN.md +548 -0
- package/skills/to-html/designs/kakaopay.DESIGN.md +544 -0
- package/skills/to-html/designs/karrot.DESIGN.md +445 -0
- package/skills/to-html/designs/kdan.DESIGN.md +160 -0
- package/skills/to-html/designs/krds.DESIGN.md +997 -0
- package/skills/to-html/designs/line.DESIGN.md +431 -0
- package/skills/to-html/designs/linear.app.DESIGN.md +548 -0
- package/skills/to-html/designs/miro.DESIGN.md +272 -0
- package/skills/to-html/designs/mistral.ai.DESIGN.md +353 -0
- package/skills/to-html/designs/money-forward.DESIGN.md +401 -0
- package/skills/to-html/designs/mongodb.DESIGN.md +357 -0
- package/skills/to-html/designs/naver.DESIGN.md +533 -0
- package/skills/to-html/designs/nhncloud.DESIGN.md +174 -0
- package/skills/to-html/designs/opencode.ai.DESIGN.md +388 -0
- package/skills/to-html/designs/pinterest.DESIGN.md +322 -0
- package/skills/to-html/designs/posthog.DESIGN.md +430 -0
- package/skills/to-html/designs/raycast.DESIGN.md +422 -0
- package/skills/to-html/designs/remember.DESIGN.md +460 -0
- package/skills/to-html/designs/resend.DESIGN.md +396 -0
- package/skills/to-html/designs/sanity.DESIGN.md +449 -0
- package/skills/to-html/designs/sendbird.DESIGN.md +285 -0
- package/skills/to-html/designs/smarthr.DESIGN.md +404 -0
- package/skills/to-html/designs/socar.DESIGN.md +403 -0
- package/skills/to-html/designs/spotify.DESIGN.md +265 -0
- package/skills/to-html/designs/supabase.DESIGN.md +348 -0
- package/skills/to-html/designs/superhuman.DESIGN.md +414 -0
- package/skills/to-html/designs/together.ai.DESIGN.md +356 -0
- package/skills/to-html/designs/toss.DESIGN.md +655 -0
- package/skills/to-html/designs/uber.DESIGN.md +387 -0
- package/skills/to-html/designs/upstage.DESIGN.md +232 -0
- package/skills/to-html/designs/velog.DESIGN.md +168 -0
- package/skills/to-html/designs/vercel.DESIGN.md +479 -0
- package/skills/to-html/designs/wanted.DESIGN.md +529 -0
- package/skills/to-html/designs/wise.DESIGN.md +276 -0
- package/skills/to-html/designs/yanolja.DESIGN.md +463 -0
- package/skills/to-html/designs/yeogiotte.DESIGN.md +459 -0
- package/skills/to-html/designs/zapier.DESIGN.md +433 -0
- package/skills/to-html/designs/zigzag.DESIGN.md +633 -0
- package/skills/to-issues/SKILL.md +84 -0
- package/skills/to-prd/SKILL.md +75 -0
- package/src/colors.js +15 -0
- package/src/link.js +47 -0
- package/src/prompt.js +137 -0
- package/src/skills.js +75 -0
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: uber
|
|
3
|
+
name: Uber
|
|
4
|
+
country: US
|
|
5
|
+
category: consumer-tech
|
|
6
|
+
homepage: "https://www.uber.com"
|
|
7
|
+
primary_color: "#000000"
|
|
8
|
+
logo:
|
|
9
|
+
type: simpleicons
|
|
10
|
+
slug: uber
|
|
11
|
+
verified: "2026-05-15"
|
|
12
|
+
omd: "0.1"
|
|
13
|
+
ds:
|
|
14
|
+
name: Base Web
|
|
15
|
+
url: "https://baseweb.design"
|
|
16
|
+
type: system
|
|
17
|
+
description: Uber's React implementation of Base — a living component system.
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Design System Inspiration of Uber
|
|
21
|
+
|
|
22
|
+
## 1. Visual Theme & Atmosphere
|
|
23
|
+
|
|
24
|
+
Uber's design language is a masterclass in confident minimalism -- a black-and-white universe where every pixel serves a purpose and nothing decorates without earning its place. The entire experience is built on a stark duality: jet black (`#000000`) and pure white (`#ffffff`), with virtually no mid-tone grays diluting the message. This isn't the sterile minimalism of a startup that hasn't finished designing -- it's the deliberate restraint of a brand so established it can afford to whisper.
|
|
25
|
+
|
|
26
|
+
The signature typeface, UberMove, is a proprietary geometric sans-serif with a distinctly square, engineered quality. Headlines in UberMove Bold at 52px carry the weight of a billboard -- authoritative, direct, unapologetic. The companion face UberMoveText handles body copy and buttons with a slightly softer, more readable character at medium weight (500). Together, they create a typographic system that feels like a transit map: clear, efficient, built for scanning at speed.
|
|
27
|
+
|
|
28
|
+
What makes Uber's design truly distinctive is its use of full-bleed photography and illustration paired with pill-shaped interactive elements (999px border-radius). Navigation chips, CTA buttons, and category selectors all share this capsule shape, creating a tactile, thumb-friendly interface language that's unmistakably Uber. The illustrations -- warm, slightly stylized scenes of drivers, riders, and cityscapes -- inject humanity into what could otherwise be a cold, monochrome system. The site alternates between white content sections and a full-black footer, with card-based layouts using the gentlest possible shadows (rgba(0,0,0,0.12-0.16)) to create subtle lift without breaking the flat aesthetic.
|
|
29
|
+
|
|
30
|
+
**Key Characteristics:**
|
|
31
|
+
- Pure black-and-white foundation with virtually no mid-tone grays in the UI chrome
|
|
32
|
+
- UberMove (headlines) + UberMoveText (body/UI) -- proprietary geometric sans-serif family
|
|
33
|
+
- Pill-shaped everything: buttons, chips, nav items all use 999px border-radius
|
|
34
|
+
- Warm, human illustrations contrasting the stark monochrome interface
|
|
35
|
+
- Card-based layout with whisper-soft shadows (0.12-0.16 opacity)
|
|
36
|
+
- 8px spacing grid with compact, information-dense layouts
|
|
37
|
+
- Bold photography integrated as full-bleed hero backgrounds
|
|
38
|
+
- Black footer anchoring the page with a dark, high-contrast environment
|
|
39
|
+
|
|
40
|
+
## 2. Color Palette & Roles
|
|
41
|
+
|
|
42
|
+
### Primary
|
|
43
|
+
- **Uber Black** (`#000000`): The defining brand color -- used for primary buttons, headlines, navigation text, and the footer. Not "near-black" or "off-black," but true, uncompromising black.
|
|
44
|
+
- **Pure White** (`#ffffff`): The primary surface color and inverse text. Used for page backgrounds, card surfaces, and text on black elements.
|
|
45
|
+
|
|
46
|
+
### Interactive & Button States
|
|
47
|
+
- **Hover Gray** (`#e2e2e2`): White button hover state -- a clean, cool light gray that provides clear feedback without warmth.
|
|
48
|
+
- **Hover Light** (`#f3f3f3`): Subtle hover for elevated white buttons -- barely-there gray for gentle interaction feedback.
|
|
49
|
+
- **Chip Gray** (`#efefef`): Background for secondary/filter buttons and navigation chips -- a neutral, ultra-light gray.
|
|
50
|
+
|
|
51
|
+
### Text & Content
|
|
52
|
+
- **Body Gray** (`#4b4b4b`): Secondary text and footer links -- a true mid-gray with no warm or cool bias.
|
|
53
|
+
- **Muted Gray** (`#afafaf`): Tertiary text, de-emphasized footer links, and placeholder content.
|
|
54
|
+
|
|
55
|
+
### Borders & Separation
|
|
56
|
+
- **Border Black** (`#000000`): Thin 1px borders for structural containment -- used sparingly on dividers and form containers.
|
|
57
|
+
|
|
58
|
+
### Shadows & Depth
|
|
59
|
+
- **Shadow Light** (`rgba(0, 0, 0, 0.12)`): Standard card elevation -- a featherweight lift for content cards.
|
|
60
|
+
- **Shadow Medium** (`rgba(0, 0, 0, 0.16)`): Slightly stronger elevation for floating action buttons and overlays.
|
|
61
|
+
- **Button Press** (`rgba(0, 0, 0, 0.08)`): Inset shadow for active/pressed states on secondary buttons.
|
|
62
|
+
|
|
63
|
+
### Link States
|
|
64
|
+
- **Default Link Blue** (`#0000ee`): Standard browser blue for text links with underline -- used in body content.
|
|
65
|
+
- **Link White** (`#ffffff`): Links on dark surfaces -- used in footer and dark sections.
|
|
66
|
+
- **Link Black** (`#000000`): Links on light surfaces with underline decoration.
|
|
67
|
+
|
|
68
|
+
### Gradient System
|
|
69
|
+
- Uber's design is **entirely gradient-free**. The black/white duality and flat color blocks create all visual hierarchy. No gradients appear anywhere in the system -- every surface is a solid color, every transition is a hard edge or a shadow.
|
|
70
|
+
|
|
71
|
+
## 3. Typography Rules
|
|
72
|
+
|
|
73
|
+
### Font Family
|
|
74
|
+
- **Headline / Display**: `UberMove`, with fallbacks: `UberMoveText, system-ui, Helvetica Neue, Helvetica, Arial, sans-serif`
|
|
75
|
+
- **Body / UI**: `UberMoveText`, with fallbacks: `system-ui, Helvetica Neue, Helvetica, Arial, sans-serif`
|
|
76
|
+
|
|
77
|
+
*Note: UberMove and UberMoveText are proprietary typefaces. For external implementations, use `system-ui` or Inter as the closest available substitute. The geometric, square-proportioned character of UberMove can be approximated with Inter or DM Sans.*
|
|
78
|
+
|
|
79
|
+
### Hierarchy
|
|
80
|
+
|
|
81
|
+
| Role | Font | Size | Weight | Line Height | Notes |
|
|
82
|
+
|------|------|------|--------|-------------|-------|
|
|
83
|
+
| Display / Hero | UberMove | 52px (3.25rem) | 700 | 1.23 (tight) | Maximum impact, billboard presence |
|
|
84
|
+
| Section Heading | UberMove | 36px (2.25rem) | 700 | 1.22 (tight) | Major section anchors |
|
|
85
|
+
| Card Title | UberMove | 32px (2rem) | 700 | 1.25 (tight) | Card and feature headings |
|
|
86
|
+
| Sub-heading | UberMove | 24px (1.5rem) | 700 | 1.33 | Secondary section headers |
|
|
87
|
+
| Small Heading | UberMove | 20px (1.25rem) | 700 | 1.40 | Compact headings, list titles |
|
|
88
|
+
| Nav / UI Large | UberMoveText | 18px (1.13rem) | 500 | 1.33 | Navigation links, prominent UI text |
|
|
89
|
+
| Body / Button | UberMoveText | 16px (1rem) | 400-500 | 1.25-1.50 | Standard body text, button labels |
|
|
90
|
+
| Caption | UberMoveText | 14px (0.88rem) | 400-500 | 1.14-1.43 | Metadata, descriptions, small links |
|
|
91
|
+
| Micro | UberMoveText | 12px (0.75rem) | 400 | 1.67 (relaxed) | Fine print, legal text |
|
|
92
|
+
|
|
93
|
+
### Principles
|
|
94
|
+
- **Bold headlines, medium body**: UberMove headings are exclusively weight 700 (bold) -- every headline hits with billboard force. UberMoveText body and UI text uses 400-500, creating a clear visual hierarchy through weight contrast.
|
|
95
|
+
- **Tight heading line-heights**: All headlines use line-heights between 1.22-1.40 -- compact and punchy, designed for scanning rather than reading.
|
|
96
|
+
- **Functional typography**: There is no decorative type treatment anywhere. No letter-spacing, no text-transform, no ornamental sizing. Every text element serves a direct communication purpose.
|
|
97
|
+
- **Two fonts, strict roles**: UberMove is exclusively for headings. UberMoveText is exclusively for body, buttons, links, and UI. The boundary is never crossed.
|
|
98
|
+
|
|
99
|
+
## 4. Component Stylings
|
|
100
|
+
|
|
101
|
+
### Buttons
|
|
102
|
+
|
|
103
|
+
**Primary Black (CTA)**
|
|
104
|
+
- Background: Uber Black (`#000000`)
|
|
105
|
+
- Text: Pure White (`#ffffff`)
|
|
106
|
+
- Padding: 10px 12px
|
|
107
|
+
- Radius: 999px (full pill)
|
|
108
|
+
- Outline: none
|
|
109
|
+
- Focus: inset ring `rgb(255,255,255) 0px 0px 0px 2px`
|
|
110
|
+
- The primary action button -- bold, high-contrast, unmissable
|
|
111
|
+
|
|
112
|
+
**Secondary White**
|
|
113
|
+
- Background: Pure White (`#ffffff`)
|
|
114
|
+
- Text: Uber Black (`#000000`)
|
|
115
|
+
- Padding: 10px 12px
|
|
116
|
+
- Radius: 999px (full pill)
|
|
117
|
+
- Hover: background shifts to Hover Gray (`#e2e2e2`)
|
|
118
|
+
- Focus: background shifts to Hover Gray, inset ring appears
|
|
119
|
+
- Used on dark surfaces or as a secondary action alongside Primary Black
|
|
120
|
+
|
|
121
|
+
**Chip / Filter**
|
|
122
|
+
- Background: Chip Gray (`#efefef`)
|
|
123
|
+
- Text: Uber Black (`#000000`)
|
|
124
|
+
- Padding: 14px 16px
|
|
125
|
+
- Radius: 999px (full pill)
|
|
126
|
+
- Active: inset shadow `rgba(0,0,0,0.08)`
|
|
127
|
+
- Navigation chips, category selectors, filter toggles
|
|
128
|
+
|
|
129
|
+
**Floating Action**
|
|
130
|
+
- Background: Pure White (`#ffffff`)
|
|
131
|
+
- Text: Uber Black (`#000000`)
|
|
132
|
+
- Padding: 14px
|
|
133
|
+
- Radius: 999px (full pill)
|
|
134
|
+
- Shadow: `rgba(0,0,0,0.16) 0px 2px 8px 0px`
|
|
135
|
+
- Transform: `translateY(2px)` slight offset
|
|
136
|
+
- Hover: background shifts to `#f3f3f3`
|
|
137
|
+
- Map controls, scroll-to-top, floating CTAs
|
|
138
|
+
|
|
139
|
+
### Cards & Containers
|
|
140
|
+
- Background: Pure White (`#ffffff`) on white pages; no distinct card background differentiation
|
|
141
|
+
- Border: none by default -- cards are defined by shadow, not stroke
|
|
142
|
+
- Radius: 8px for standard content cards; 12px for featured/promoted cards
|
|
143
|
+
- Shadow: `rgba(0,0,0,0.12) 0px 4px 16px 0px` for standard lift
|
|
144
|
+
- Cards are content-dense with minimal internal padding
|
|
145
|
+
- Image-led cards use full-bleed imagery with text overlay or below
|
|
146
|
+
|
|
147
|
+
### Inputs & Forms
|
|
148
|
+
- Text: Uber Black (`#000000`)
|
|
149
|
+
- Background: Pure White (`#ffffff`)
|
|
150
|
+
- Border: 1px solid Black (`#000000`) -- the only place visible borders appear prominently
|
|
151
|
+
- Radius: 8px
|
|
152
|
+
- Padding: standard comfortable spacing
|
|
153
|
+
- Focus: no extracted custom focus state -- relies on standard browser focus ring
|
|
154
|
+
|
|
155
|
+
### Navigation
|
|
156
|
+
- Sticky top navigation with white background
|
|
157
|
+
- Logo: Uber wordmark/icon at 24x24px in black
|
|
158
|
+
- Links: UberMoveText at 14-18px, weight 500, in Uber Black
|
|
159
|
+
- Pill-shaped nav chips with Chip Gray (`#efefef`) background for category navigation ("Ride", "Drive", "Business", "Uber Eats")
|
|
160
|
+
- Menu toggle: circular button with 50% border-radius
|
|
161
|
+
- Mobile: hamburger menu pattern
|
|
162
|
+
|
|
163
|
+
### Image Treatment
|
|
164
|
+
- Warm, hand-illustrated scenes (not photographs for feature sections)
|
|
165
|
+
- Illustration style: slightly stylized people, warm color palette within illustrations, contemporary vibe
|
|
166
|
+
- Hero sections use bold photography or illustration as full-width backgrounds
|
|
167
|
+
- QR codes for app download CTAs
|
|
168
|
+
- All imagery uses standard 8px or 12px border-radius when contained in cards
|
|
169
|
+
|
|
170
|
+
### Distinctive Components
|
|
171
|
+
|
|
172
|
+
**Category Pill Navigation**
|
|
173
|
+
- Horizontal row of pill-shaped buttons for top-level navigation ("Ride", "Drive", "Business", "Uber Eats", "About")
|
|
174
|
+
- Each pill: Chip Gray background, black text, 999px radius
|
|
175
|
+
- Active state indicated by black background with white text (inversion)
|
|
176
|
+
|
|
177
|
+
**Hero with Dual Action**
|
|
178
|
+
- Split hero: text/CTA on left, map/illustration on right
|
|
179
|
+
- Two input fields side by side for pickup/destination
|
|
180
|
+
- "See prices" CTA button in black pill
|
|
181
|
+
|
|
182
|
+
**Plan-Ahead Cards**
|
|
183
|
+
- Cards promoting features like "Uber Reserve" and trip planning
|
|
184
|
+
- Illustration-heavy with warm, human-centric imagery
|
|
185
|
+
- Black CTA buttons with white text at bottom
|
|
186
|
+
|
|
187
|
+
## 5. Layout Principles
|
|
188
|
+
|
|
189
|
+
### Spacing System
|
|
190
|
+
- Base unit: 8px
|
|
191
|
+
- Scale: 4px, 6px, 8px, 10px, 12px, 14px, 16px, 18px, 20px, 24px, 32px
|
|
192
|
+
- Button padding: 10px 12px (compact) or 14px 16px (comfortable)
|
|
193
|
+
- Card internal padding: approximately 24-32px
|
|
194
|
+
- Section vertical spacing: generous but efficient -- approximately 64-96px between major sections
|
|
195
|
+
|
|
196
|
+
### Grid & Container
|
|
197
|
+
- Max container width: approximately 1136px, centered
|
|
198
|
+
- Hero: split layout with text left, visual right
|
|
199
|
+
- Feature sections: 2-column card grids or full-width single-column
|
|
200
|
+
- Footer: multi-column link grid on black background
|
|
201
|
+
- Full-width sections extending to viewport edges
|
|
202
|
+
|
|
203
|
+
### Whitespace Philosophy
|
|
204
|
+
- **Efficient, not airy**: Uber's whitespace is functional -- enough to separate, never enough to feel empty. This is transit-system spacing: compact, clear, purpose-driven.
|
|
205
|
+
- **Content-dense cards**: Cards pack information tightly with minimal internal spacing, relying on shadow and radius to define boundaries.
|
|
206
|
+
- **Section breathing room**: Major sections get generous vertical spacing, but within sections, elements are closely grouped.
|
|
207
|
+
|
|
208
|
+
### Border Radius Scale
|
|
209
|
+
- Sharp (0px): No square corners used in interactive elements
|
|
210
|
+
- Standard (8px): Content cards, input fields, listboxes
|
|
211
|
+
- Comfortable (12px): Featured cards, larger containers, link cards
|
|
212
|
+
- Full Pill (999px): All buttons, chips, navigation items, pills
|
|
213
|
+
- Circle (50%): Avatar images, icon containers, circular controls
|
|
214
|
+
|
|
215
|
+
## 6. Depth & Elevation
|
|
216
|
+
|
|
217
|
+
| Level | Treatment | Use |
|
|
218
|
+
|-------|-----------|-----|
|
|
219
|
+
| Flat (Level 0) | No shadow, solid background | Page background, inline content, text sections |
|
|
220
|
+
| Subtle (Level 1) | `rgba(0,0,0,0.12) 0px 4px 16px` | Standard content cards, feature blocks |
|
|
221
|
+
| Medium (Level 2) | `rgba(0,0,0,0.16) 0px 4px 16px` | Elevated cards, overlay elements |
|
|
222
|
+
| Floating (Level 3) | `rgba(0,0,0,0.16) 0px 2px 8px` + translateY(2px) | Floating action buttons, map controls |
|
|
223
|
+
| Pressed (Level 4) | `rgba(0,0,0,0.08) inset` (999px spread) | Active/pressed button states |
|
|
224
|
+
| Focus Ring | `rgb(255,255,255) 0px 0px 0px 2px inset` | Keyboard focus indicators |
|
|
225
|
+
|
|
226
|
+
**Shadow Philosophy**: Uber uses shadow purely as a structural tool, never decoratively. Shadows are always black at very low opacity (0.08-0.16), creating the bare minimum lift needed to separate content layers. The blur radii are moderate (8-16px) -- enough to feel natural but never dramatic. There are no colored shadows, no layered shadow stacks, and no ambient glow effects. Depth is communicated more through the black/white section contrast than through shadow elevation.
|
|
227
|
+
|
|
228
|
+
## 7. Do's and Don'ts
|
|
229
|
+
|
|
230
|
+
### Do
|
|
231
|
+
- Use true black (`#000000`) and pure white (`#ffffff`) as the primary palette -- the stark contrast IS Uber
|
|
232
|
+
- Use 999px border-radius for all buttons, chips, and pill-shaped navigation elements
|
|
233
|
+
- Keep all headings in UberMove Bold (700) for billboard-level impact
|
|
234
|
+
- Use whisper-soft shadows (0.12-0.16 opacity) for card elevation -- barely visible
|
|
235
|
+
- Maintain the compact, information-dense layout style -- Uber prioritizes efficiency over airiness
|
|
236
|
+
- Use warm, human-centric illustrations to soften the monochrome interface
|
|
237
|
+
- Apply 8px radius for content cards and 12px for featured containers
|
|
238
|
+
- Use UberMoveText at weight 500 for navigation and prominent UI text
|
|
239
|
+
- Pair black primary buttons with white secondary buttons for dual-action layouts
|
|
240
|
+
|
|
241
|
+
### Don't
|
|
242
|
+
- Don't introduce color into the UI chrome -- Uber's interface is strictly black, white, and gray
|
|
243
|
+
- Don't use rounded corners less than 999px on buttons -- the full-pill shape is a core identity element
|
|
244
|
+
- Don't apply heavy shadows or drop shadows with high opacity -- depth is whisper-subtle
|
|
245
|
+
- Don't use serif fonts anywhere -- Uber's typography is exclusively geometric sans-serif
|
|
246
|
+
- Don't create airy, spacious layouts with excessive whitespace -- Uber's density is intentional
|
|
247
|
+
- Don't use gradients or color overlays -- every surface is a flat, solid color
|
|
248
|
+
- Don't mix UberMove into body text or UberMoveText into headlines -- the hierarchy is strict
|
|
249
|
+
- Don't use decorative borders -- borders are functional (inputs, dividers) or absent entirely
|
|
250
|
+
- Don't soften the black/white contrast with off-whites or near-blacks -- the duality is deliberate
|
|
251
|
+
|
|
252
|
+
## 8. Responsive Behavior
|
|
253
|
+
|
|
254
|
+
### Breakpoints
|
|
255
|
+
| Name | Width | Key Changes |
|
|
256
|
+
|------|-------|-------------|
|
|
257
|
+
| Mobile Small | 320px | Minimum layout, single column, stacked inputs, compact typography |
|
|
258
|
+
| Mobile | 600px | Standard mobile, stacked layout, hamburger nav |
|
|
259
|
+
| Tablet Small | 768px | Two-column grids begin, expanded card layouts |
|
|
260
|
+
| Tablet | 1119px | Full tablet layout, side-by-side hero content |
|
|
261
|
+
| Desktop Small | 1120px | Desktop grid activates, horizontal nav pills |
|
|
262
|
+
| Desktop | 1136px | Full desktop layout, maximum container width, split hero |
|
|
263
|
+
|
|
264
|
+
### Touch Targets
|
|
265
|
+
- All pill buttons: minimum 44px height (10-14px vertical padding + line-height)
|
|
266
|
+
- Navigation chips: generous 14px 16px padding for comfortable thumb tapping
|
|
267
|
+
- Circular controls (menu, close): 50% radius ensures large, easy-to-hit targets
|
|
268
|
+
- Card surfaces serve as full-area touch targets on mobile
|
|
269
|
+
|
|
270
|
+
### Collapsing Strategy
|
|
271
|
+
- **Navigation**: Horizontal pill nav collapses to hamburger menu with circular toggle
|
|
272
|
+
- **Hero**: Split layout (text + map/visual) stacks to single column -- text above, visual below
|
|
273
|
+
- **Input fields**: Side-by-side pickup/destination inputs stack vertically
|
|
274
|
+
- **Feature cards**: 2-column grid collapses to full-width stacked cards
|
|
275
|
+
- **Headings**: 52px display scales down through 36px, 32px, 24px, 20px
|
|
276
|
+
- **Footer**: Multi-column link grid collapses to accordion or stacked single column
|
|
277
|
+
- **Category pills**: Horizontal scroll with overflow on smaller screens
|
|
278
|
+
|
|
279
|
+
### Image Behavior
|
|
280
|
+
- Illustrations scale proportionally within their containers
|
|
281
|
+
- Hero imagery maintains aspect ratio, may crop on smaller screens
|
|
282
|
+
- QR code sections hide on mobile (app download shifts to direct store links)
|
|
283
|
+
- Card imagery maintains 8-12px border radius at all sizes
|
|
284
|
+
|
|
285
|
+
## 9. Agent Prompt Guide
|
|
286
|
+
|
|
287
|
+
### Quick Color Reference
|
|
288
|
+
- Primary Button: "Uber Black (#000000)"
|
|
289
|
+
- Page Background: "Pure White (#ffffff)"
|
|
290
|
+
- Button Text (on black): "Pure White (#ffffff)"
|
|
291
|
+
- Button Text (on white): "Uber Black (#000000)"
|
|
292
|
+
- Secondary Text: "Body Gray (#4b4b4b)"
|
|
293
|
+
- Tertiary Text: "Muted Gray (#afafaf)"
|
|
294
|
+
- Chip Background: "Chip Gray (#efefef)"
|
|
295
|
+
- Hover State: "Hover Gray (#e2e2e2)"
|
|
296
|
+
- Card Shadow: "rgba(0,0,0,0.12) 0px 4px 16px"
|
|
297
|
+
- Footer Background: "Uber Black (#000000)"
|
|
298
|
+
|
|
299
|
+
### Example Component Prompts
|
|
300
|
+
- "Create a hero section on Pure White (#ffffff) with a headline at 52px UberMove Bold (700), line-height 1.23. Use Uber Black (#000000) text. Add a subtitle in Body Gray (#4b4b4b) at 16px UberMoveText weight 400 with 1.50 line-height. Place an Uber Black (#000000) pill CTA button with Pure White text, 999px radius, padding 10px 12px."
|
|
301
|
+
- "Design a category navigation bar with horizontal pill buttons. Each pill: Chip Gray (#efefef) background, Uber Black (#000000) text, 14px 16px padding, 999px border-radius. Active pill inverts to Uber Black background with Pure White text. Use UberMoveText at 14px weight 500."
|
|
302
|
+
- "Build a feature card on Pure White (#ffffff) with 8px border-radius and shadow rgba(0,0,0,0.12) 0px 4px 16px. Title in UberMove at 24px weight 700, description in Body Gray (#4b4b4b) at 16px UberMoveText. Add a black pill CTA button at the bottom."
|
|
303
|
+
- "Create a dark footer on Uber Black (#000000) with Pure White (#ffffff) heading text in UberMove at 20px weight 700. Footer links in Muted Gray (#afafaf) at 14px UberMoveText. Links hover to Pure White. Multi-column grid layout."
|
|
304
|
+
- "Design a floating action button with Pure White (#ffffff) background, 999px radius, 14px padding, and shadow rgba(0,0,0,0.16) 0px 2px 8px. Hover shifts background to #f3f3f3. Use for scroll-to-top or map controls."
|
|
305
|
+
|
|
306
|
+
### Iteration Guide
|
|
307
|
+
1. Focus on ONE component at a time
|
|
308
|
+
2. Reference the strict black/white palette -- "use Uber Black (#000000)" not "make it dark"
|
|
309
|
+
3. Always specify 999px radius for buttons and pills -- this is non-negotiable for the Uber identity
|
|
310
|
+
4. Describe the font family explicitly -- "UberMove Bold for the heading, UberMoveText Medium for the label"
|
|
311
|
+
5. For shadows, use "whisper shadow (rgba(0,0,0,0.12) 0px 4px 16px)" -- never heavy drop shadows
|
|
312
|
+
6. Keep layouts compact and information-dense -- Uber is efficient, not airy
|
|
313
|
+
7. Illustrations should be warm and human -- describe "stylized people in warm tones" not abstract shapes
|
|
314
|
+
8. Pair black CTAs with white secondaries for balanced dual-action layouts
|
|
315
|
+
|
|
316
|
+
## 10. Voice & Tone
|
|
317
|
+
|
|
318
|
+
Uber's voice is **mobility-platform-direct and dual-audience-aware.** Two parallel audiences — riders ("차량 서비스") and drivers ("운전") — with distinct CTAs. Pure black `#000` primary CTA + 999px pill nav signals "modern mobility company."
|
|
319
|
+
|
|
320
|
+
| Context | Tone |
|
|
321
|
+
|---|---|
|
|
322
|
+
| CTA | Verb. "Sign up to ride", "Sign up to drive", "Get started" |
|
|
323
|
+
| Marketing | Dual-audience. Rider page ≠ Driver page |
|
|
324
|
+
| Documentation | Sparse — consumer product |
|
|
325
|
+
| Error | Polite. "Pickup location unavailable. Try a different address." |
|
|
326
|
+
|
|
327
|
+
**Voice samples**
|
|
328
|
+
- Marketing nav (KR): *"차량 서비스"* / *"운전"* <!-- verified: uber.com/kr/ko 2026-05 -->
|
|
329
|
+
|
|
330
|
+
**Forbidden phrases.** "Revolutionary mobility". Aggressive Lyft-comparison framing.
|
|
331
|
+
|
|
332
|
+
## 11. Brand Narrative
|
|
333
|
+
|
|
334
|
+
Uber was founded **2009** in San Francisco — originally as **UberCab** — by **Garrett Camp** (Canadian entrepreneur, **co-founder of StumbleUpon**) and **Travis Kalanick** ([Travis Kalanick — Wikipedia](https://en.wikipedia.org/wiki/Travis_Kalanick), [Garrett Camp — Wikipedia](https://en.wikipedia.org/wiki/Garrett_Camp)). **Camp had become frustrated with SF taxis and expensive black-car services**, conceived a smartphone-app to hail luxury vehicles directly; discussed with Kalanick who joined as "mega advisor." Neither founder wanted to run the company directly; **Ryan Graves brought on as launch CEO** for **10 months** before being replaced by **Kalanick** (Camp + Graves transferred a large portion of shares to Kalanick on transition). Pioneered ride-hailing → expanded to **Eats / Freight / Delivery**. **2018 rebrand by Wolff Olins** + Uber in-house team — 10 months development, introduced bespoke **Uber Move** typeface + monochrome black-on-white identity + bespoke **Safety Blue** accent ([Design Week — Uber rebrand 2018](https://www.designweek.co.uk/issues/17-23-september-2018/uber-rebrand-looks-to-reflect-how-the-taxi-app-is-changing/), [Dezeen — Uber brings back the U](https://www.dezeen.com/2018/09/14/uber-rebrand-wolff-olins-black-white-wordmark-logo-typography/), [Wolff Olins — Views](https://www.wolffolins.com/views/the-medias-take-on-ubers-new-brand)). **NYSE IPO May 10 2019** under ticker **UBER** at **$45/share** raising **$8.1B** at **~$75B valuation** — biggest IPO of 2019, top-10 ever; closed first day at **$41.57 = biggest first-day dollar loss in U.S. IPO history** ([Uber IR — IPO pricing](https://investor.uber.com/news-events/news/press-release-details/2019/Uber-Announces-Pricing-of-Initial-Public-Offering/default.aspx), [Bloomberg — Uber drops after $8.1B IPO](https://www.bloomberg.com/news/articles/2019-05-10/uber-drops-after-raising-8-1-billion-in-biggest-ipo-of-2019)). The brand evolution post-2017 shifted from aggressive growth-at-all-costs to "platform for mobility" with operational + safety focus — **Dara Khosrowshahi** (current CEO, ex-Expedia) succeeded Kalanick **August 2017**.
|
|
335
|
+
|
|
336
|
+
## 12. Principles
|
|
337
|
+
|
|
338
|
+
1. **Dual-audience.** Riders and drivers are first-class. *UI implication:* segment nav clearly separated.
|
|
339
|
+
2. **Pure black `#000` primary.** *UI implication:* preserve achromatic primary; don't introduce brand color.
|
|
340
|
+
3. **999px pill nav.** *UI implication:* nav buttons fully pill on white.
|
|
341
|
+
4. **Black + white dual-action.** *UI implication:* paired CTAs use black/white for balance.
|
|
342
|
+
5. **Warm illustrations.** *UI implication:* never abstract shapes; warm humans.
|
|
343
|
+
|
|
344
|
+
## 13. Personas
|
|
345
|
+
|
|
346
|
+
*Personas are fictional archetypes informed by Uber user segments (urban riders, drivers, business travelers), not individual people.*
|
|
347
|
+
|
|
348
|
+
**Sofia Park, 31, Seoul.** Daily Uber rider. Cares about ETA accuracy + driver rating.
|
|
349
|
+
|
|
350
|
+
**Marcus Webb, 38, San Francisco.** Business traveler. Uber for client meetings + airport transfers.
|
|
351
|
+
|
|
352
|
+
**Henrik Nielsen, 45, Copenhagen.** Part-time Uber driver. Cares about earnings transparency + cancellation fees.
|
|
353
|
+
|
|
354
|
+
## 14. States
|
|
355
|
+
|
|
356
|
+
| State | Treatment |
|
|
357
|
+
|---|---|
|
|
358
|
+
| **Empty (no rides)** | "Request your first ride" CTA |
|
|
359
|
+
| **Empty (no driver activity)** | "Go online" CTA for drivers |
|
|
360
|
+
| **Loading (matching)** | Real-time map with car icon |
|
|
361
|
+
| **Loading (price)** | Surge indicator if active |
|
|
362
|
+
| **Error (no drivers)** | "No drivers nearby. Try Uber Comfort instead." |
|
|
363
|
+
| **Error (payment)** | "Payment failed. Try a different method." |
|
|
364
|
+
| **Success (booked)** | Driver info + ETA + map |
|
|
365
|
+
| **Success (rated)** | Subtle confirmation |
|
|
366
|
+
| **Skeleton (ride history)** | Black/white placeholders |
|
|
367
|
+
| **Disabled (account verification)** | Verify link |
|
|
368
|
+
| **Loading (long match)** | Persistent progress with cancel option |
|
|
369
|
+
|
|
370
|
+
## 15. Motion & Easing
|
|
371
|
+
|
|
372
|
+
| Token | Value | Use |
|
|
373
|
+
|---|---|---|
|
|
374
|
+
| `motion-instant` | 0ms | Selection |
|
|
375
|
+
| `motion-fast` | 150ms | Hover |
|
|
376
|
+
| `motion-standard` | 250ms | Modal, panel |
|
|
377
|
+
| `motion-map-tracking` | continuous | Real-time map updates |
|
|
378
|
+
|
|
379
|
+
Standard cubic-bezier; no bounce — operational register. `prefers-reduced-motion: reduce` removes map auto-pan.
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
**Verified:** 2026-05-08 (omd:migrate run 60 — Apple-tier)
|
|
384
|
+
**Tier 1 sources:** uber.com/kr/ko home + /about (live DOM via playwright — **all-pill 999px chrome with three-fill canvas-awareness**: Header `#000` Black + `#fff` text 999px / 36-38px / 10×12 / 14px·500; Header Inverse `#fff` + `#000` text (Sign-up); Hero `#addec9` **Uber Mint Green** + `#000` text 999px / 48px / 14×16 / 16px·500 soft-pastel signature).
|
|
385
|
+
**Tier 2 sources:** styles.refero.design / getdesign.md — no record.
|
|
386
|
+
**Tier 2 (Philosophy/founders/rebrand/IPO):** Wikipedia (Travis Kalanick, Garrett Camp), Britannica, Design Week / Dezeen / Wolff Olins Views (2018 rebrand), Uber IR (IPO pricing), Bloomberg (2019-05-10 first-day loss), CNBC.
|
|
387
|
+
**Style ref:** `apple` (luxury minimal). **Conflicts unresolved:** none. **Earlier addition:** Inverse White Sign-up + Mint Green `#addec9` hero accent + 48px hero tier missed by prior pass.
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: upstage
|
|
3
|
+
name: Upstage
|
|
4
|
+
display_name_kr: 업스테이지
|
|
5
|
+
country: KR
|
|
6
|
+
category: ai
|
|
7
|
+
homepage: "https://www.upstage.ai"
|
|
8
|
+
primary_color: "#d2ff95"
|
|
9
|
+
logo:
|
|
10
|
+
type: favicon
|
|
11
|
+
slug: "https://www.google.com/s2/favicons?domain=upstage.ai&sz=256"
|
|
12
|
+
verified: "2026-05-15"
|
|
13
|
+
omd: "0.1"
|
|
14
|
+
ds:
|
|
15
|
+
name: Upstage Brand Resource Center
|
|
16
|
+
url: "https://www.upstage.ai/resources/brand-resource-center"
|
|
17
|
+
type: brand
|
|
18
|
+
description: "Upstage's brand resource hub — logo / symbol assets + IP rights statement. Token spec lives only in production CSS (Geist + Espeak proprietary face + violet #5B52FF × plum #3C043B + Solar accent #D2FF95)."
|
|
19
|
+
og_image: "https://cdn.prod.website-files.com/6743d5190bb2b52f38e99e37/680a25ee07a17eed6deeff74_OG.avif"
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Upstage — DESIGN.md
|
|
23
|
+
|
|
24
|
+
> Reference research only. Brand assets, logo, and the proprietary Espeak display face are property of Upstage Co., Ltd. (주식회사 업스테이지). No verbatim taglines, marketing copy, or asset binaries are reproduced. Token values quoted below are factual CSS custom property values observed via live runtime inspection of the public `www.upstage.ai` surface, under analytical fair-use.
|
|
25
|
+
|
|
26
|
+
## 1. Visual Theme & Atmosphere
|
|
27
|
+
|
|
28
|
+
Upstage looks like an enterprise AI company that decided to spend its visual budget on **one purple, one display face, and one rotating word** — and then on absolutely nothing else. The home surface ships in a deep plum hero canvas (`#3C043B`, exposed as `--colors--grey-background`), pairs it with a near-mint Solar accent (`#D2FF95`, a vivid mid-step of the `--colors--green-yellow-*` ladder), and reserves a single interactive violet (`#5B52FF`, observed 55 times across CTAs and links) as the only chromatic gesture that ever does work. The page is built on Webflow, layers Untitled UI and Spark Library tokens underneath an Upstage-namespaced override layer (74 `--*` custom properties on `:root`), and exposes the seams honestly — `_sub---untitled-ui--*`, `_sub---spark-library--*`, and `_sub---elements-webflow-library--*` all coexist on the document root, with the `--colors--*` and `--style--*` prefixes representing the brand's actual decisions. Type is even more disciplined: **Geist** runs 869 of ~930 sampled text elements (~93%), a single custom display face called **Espeak** lights up the hero H1 at 57.6px / weight 600, and the variable industry word inside the hero (`Insurance`, `Healthcare`, `Manufacturing`, `Financial Services`) shifts to a humble **monospace** mid-sentence — a typographic gesture that says *this slot is configurable* without spending a single color or weight to mark it. Radius is binary (797 elements at 0px, 134 at 8px, nothing meaningful between), elevation is effectively zero (the underlying Webflow library exposes one 10%-alpha shadow token, almost never applied), and rhythm comes from surface-color shifts band to band — plum hero → white product band → dark industry grid → white customer band → dark deployment matrix → near-black footer (`#191722`, slightly violet-tinted, not pure black). The atmosphere reads *competent, technical, restrained* — the visual equivalent of an enterprise pitch deck that knows it doesn't need to shout.
|
|
29
|
+
|
|
30
|
+
**Atmospheric anchors**:
|
|
31
|
+
- **Plum-violet axis, not blue.** Where most enterprise AI brands default to a corporate blue, Upstage commits to violet primary (`#5B52FF`) on a plum canvas (`#3C043B`) — distinguishable in a sea of cobalt competitors.
|
|
32
|
+
- **Solar yellow-green as scarcity asset.** `#D2FF95` appears only adjacent to the Solar product narrative — never as a default button surface or section background.
|
|
33
|
+
- **One body family, one display face, one swap.** 93% Geist coverage + Espeak-only hero + monospace industry word = three families, three jobs, no overlap.
|
|
34
|
+
- **Type-as-imagery on industry cards.** Each high-stakes industry (Insurance / Healthcare / Manufacturing / Financial Services) presents as a giant industry word on a dark surface — no stock photography, no industry icons.
|
|
35
|
+
- **Binary geometry.** Sharp (0px) for sections, cards, hero, footer; soft (8px) only for pressable controls and a few content chips. Nothing in between.
|
|
36
|
+
|
|
37
|
+
## 2. Color System
|
|
38
|
+
|
|
39
|
+
### Brand
|
|
40
|
+
| Token | Hex | Live source | Role |
|
|
41
|
+
|---|---|---|---|
|
|
42
|
+
| Upstage Violet (primary) | `#5B52FF` | live computed `rgb(91,82,255)` on `.button.is-secondary` × 2 sampled CTAs; 55 element occurrences | Interactive foreground; link; secondary-button text; filled-primary button background variant |
|
|
43
|
+
| Violet pressed | `#1E116E` | `--_sub---spark-library--foreground-interactive-hover` | Hover / pressed state of primary |
|
|
44
|
+
| Violet deep | `#281CA5` | `--elements-webflow-library--secondary--color-1` | Emphasis / filled-button alt |
|
|
45
|
+
| Solar yellow-green | `#D2FF95` | mid-step of `--colors--green-yellow-*` (50 = `#f6ffe5`); live-observed as decorative accent | **Single-use chromatic accent** tied to the Solar product narrative |
|
|
46
|
+
|
|
47
|
+
### Ink (text)
|
|
48
|
+
| Token | Hex | Frequency in DOM | Role |
|
|
49
|
+
|---|---|---|---|
|
|
50
|
+
| Body gray | `#70757F` | **428 elements (dominant text color)** | Default body, paragraph, muted subhead |
|
|
51
|
+
| Near-black | `#0A0D14` | 58 elements | Headings on light surfaces |
|
|
52
|
+
| Muted purple-gray | `#6E7191` | 20 elements | Secondary muted / footnote |
|
|
53
|
+
| White | `#FFFFFF` | 213 elements | Text & UI on dark surfaces |
|
|
54
|
+
| White @50% | `rgba(255,255,255,0.5)` | 14 elements | Muted secondary copy on dark hero |
|
|
55
|
+
|
|
56
|
+
### Surface
|
|
57
|
+
| Token | Hex | Role |
|
|
58
|
+
|---|---|---|
|
|
59
|
+
| Page white | `#FFFFFF` | Default page background |
|
|
60
|
+
| Subtle band | `#F9FAFB` | `--colors--base--subtle` — light section break |
|
|
61
|
+
| Footer near-black | `#191722` | Footer band — *intentionally violet-tinted, not pure `#000`* |
|
|
62
|
+
| Plum decorative | `#3C043B` | `--colors--grey-background` — hero canvas. **Non-obvious choice**: a deep plum named as "grey" in the token system. |
|
|
63
|
+
| Lavender interactive | `#F0ECFD` | `--_sub---spark-library--background--interactive` — active/hover surface |
|
|
64
|
+
| Purple-100 | `#DDE3FF` | `--colors--purple-100` — cool tint for chips / info |
|
|
65
|
+
|
|
66
|
+
### Border
|
|
67
|
+
| Token | Hex | Role |
|
|
68
|
+
|---|---|---|
|
|
69
|
+
| Default hairline | `#EEEEEE` | `--border-color--border-primary` |
|
|
70
|
+
| Neutral subtle | `#F7F7FC` | `--_sub---elements-webflow-library--neutral--200` |
|
|
71
|
+
|
|
72
|
+
### Ladders observed (under-layer)
|
|
73
|
+
Untitled UI primary scale (`#fcfaff 25 / #f9f5ff 50 / #f4ebff 100 / #d6bbfb 300 / #6941c6 700`) and Untitled UI gray scale (`#eaecf0 200 / #475467 600 / #101828 900`) sit underneath the Upstage-namespaced surface tokens. Treat them as inherited primitives, not Upstage decisions.
|
|
74
|
+
|
|
75
|
+
## 3. Typography
|
|
76
|
+
|
|
77
|
+
| Slot | Family | Size / Weight | Live evidence |
|
|
78
|
+
|---|---|---|---|
|
|
79
|
+
| Hero H1 | **Espeak**, Arial, sans-serif | 57.6px / 600 | 3 sampled hero phrases |
|
|
80
|
+
| Hero H1 industry swap word | **monospace** (browser default) | 48px / 600 | 4 industry-word swaps |
|
|
81
|
+
| Section H2 | Geist | ~36-48px / 600 | "High-performance AI built by experts" et al. |
|
|
82
|
+
| Body large | Geist | 18px / 400 | **603 elements (dominant body size)** |
|
|
83
|
+
| Body | Geist | 16px / 400 | 115 elements |
|
|
84
|
+
| Button | Geist | 16-18px / 500 | `.button.is-secondary` + inline arrow CTA |
|
|
85
|
+
| Caption / small | Geist | 14px / 400 | 30 elements |
|
|
86
|
+
| Micro / legal | Geist | 12px / 400 | 23 elements |
|
|
87
|
+
|
|
88
|
+
**Weight discipline** (observed): 400 = 786 elements, 500 = 129 (buttons + nav + emphasised body), 600 = 15 (all headings), 700 = 8 (stat/proof labels). **Six weights are not the system — four are.**
|
|
89
|
+
|
|
90
|
+
**Critical voice rule on type**: the hero rotates `Insurance / Finance / Healthcare / Manufacturing` by changing the *font family* mid-sentence (Espeak → monospace), not the color or weight. Any port that wants to reproduce this rotating-vertical hero must keep the typographic shift as the variable-slot signal.
|
|
91
|
+
|
|
92
|
+
## 4. Radius & Geometry
|
|
93
|
+
|
|
94
|
+
| Value | Frequency | Role |
|
|
95
|
+
|---|---|---|
|
|
96
|
+
| `0px` | 797 elements | Sections, cards, hero, footer, images |
|
|
97
|
+
| `8px` | 134 elements | Buttons, content chips, hero secondary surfaces |
|
|
98
|
+
| `100%` | 5 elements | Avatar / icon circles |
|
|
99
|
+
| `100px` | 1 element | Single pill |
|
|
100
|
+
| `50%` | 1 element | One round element |
|
|
101
|
+
|
|
102
|
+
**Binary rule**: Upstage's geometry encodes pressability. Sharp = layout. 8px = "you can click this." Nothing in between, no `4px / 12px / 16px` middle terms. Token: `--style--radius-8px: 8px`.
|
|
103
|
+
|
|
104
|
+
## 5. Elevation
|
|
105
|
+
|
|
106
|
+
Effectively **zero box-shadow** on observed elements. The underlying Webflow library exposes `--_sub---elements-webflow-library--general--shadow-03: #14142b1a` (violet-black 10%), but production almost never invokes it. Depth = surface-color contrast (plum → white → dark → near-black) + hairline borders. *Do not import drop-shadow card patterns from neighbour systems if porting this brand — Upstage doesn't ship them.*
|
|
107
|
+
|
|
108
|
+
## 6. Spacing & Layout
|
|
109
|
+
|
|
110
|
+
- **Canvas**: 1280px desktop sweet spot; `--style--max-full-width: 100vw`.
|
|
111
|
+
- **No `--space-*` ladder** exposed on `:root`. Section vertical rhythm appears to use ~64-96px band gaps with 16/24/32 internal step (Webflow class-driven, not token-driven).
|
|
112
|
+
- **Hero alignment**: left-aligned starting ~10% from canvas edge, not centered.
|
|
113
|
+
- **Vertical rhythm = surface flips**: each H2 section change is also a background-color change. The rhythm is *chromatic*, not numerical.
|
|
114
|
+
|
|
115
|
+
## 7. Interactive Components
|
|
116
|
+
|
|
117
|
+
### Primary CTA — multiple variants, one violet
|
|
118
|
+
1. **`Try now`** — persistent top-right of nav. Filled violet `#5B52FF` background, white text, 8px radius, weight 500.
|
|
119
|
+
2. **`Try demo`** — hero inline arrow. Transparent background, white text, `→` arrow glyph, 18px / 500.
|
|
120
|
+
3. **`Learn more →`** — repeated inline across every product / solution card. Text-color inherits section surface (white on dark, violet on light), 18px / 500, no chrome.
|
|
121
|
+
4. **`.button.is-secondary`** (e.g. *Developer Console*, *Learn more* on solution cards) — white pill surface, violet text `#5B52FF`, 8px radius, weight 500. 16px.
|
|
122
|
+
|
|
123
|
+
### Nav (top)
|
|
124
|
+
Transparent over hero, white below. Five primary categories (Products / Solutions / Resources / Company / Pricing) + persistent `Try now` filled CTA on the right.
|
|
125
|
+
|
|
126
|
+
### Card
|
|
127
|
+
Product / solution / customer cards: 8px radius, transparent background, `#70757F` body paragraph, no drop shadow, inline `Learn more →` link as the only interactive affordance.
|
|
128
|
+
|
|
129
|
+
### Industry card (signature)
|
|
130
|
+
Giant industry word (`Insurance` / `Healthcare` / `Manufacturing` / `Financial Services`) at 48px+ as the entire card front. **Typography is the imagery.**
|
|
131
|
+
|
|
132
|
+
## 8. Motion (partially captured)
|
|
133
|
+
|
|
134
|
+
CDP single-pass did not extract transition durations or cubic-bezier curves. Inferred from observed `--_sub---spark-library--background--interactive: #F0ECFD` hover surface: standard Webflow ~150-200ms ease for interactive state changes. **Flagged for UPDATE pass** — exact motion tokens not authoritative here.
|
|
135
|
+
|
|
136
|
+
## 9. Accessibility (observed)
|
|
137
|
+
|
|
138
|
+
- **Body gray `#70757F` on white** ≈ 4.6:1 — passes WCAG AA for normal text (≥4.5:1).
|
|
139
|
+
- **Violet `#5B52FF` on white** (secondary-button text) ≈ 5.2:1 — passes AA comfortably.
|
|
140
|
+
- **White on plum `#3C043B`** = ≥10:1 — strong pass for hero copy.
|
|
141
|
+
- **White @ 50% on plum hero** = ≈5:1 — at AA edge; acceptable for ≥18px text but borderline for finer hero subhead at smaller weights. Flagged as observed-as-shipped trade-off, not a guideline.
|
|
142
|
+
- **No landmark / role inventory verified** in this CDP pass — `<header>`, `<footer>`, `<nav>` are used semantically (positive), but a deeper axe-style audit is out of scope.
|
|
143
|
+
|
|
144
|
+
## 10. Voice & Microcopy (analyst characterisation, no verbatim copy)
|
|
145
|
+
|
|
146
|
+
Upstage's marketing voice is **declarative, enterprise-confident, lightly punchy**. Sentences are short. Heroes state a verb-object intent rather than a feature list. Industry callouts are single nouns (`Insurance`, `Healthcare`) — the brand trusts the reader to fill in the relevance. Section H2s read as engineering-credible category claims ("High-performance AI built by experts", "Flexible deployment, enterprise-ready anywhere") — proof-of-capability framing, not benefit framing.
|
|
147
|
+
|
|
148
|
+
**Tone vector**: technically grounded · enterprise-formal · zero-hype · pragmatic-bilingual (Korean root, English-first marketing).
|
|
149
|
+
|
|
150
|
+
**Fresh OmD-derivation alternatives** (not Upstage copy — illustrative shape-only):
|
|
151
|
+
- *Build the AI. Ship the workflow. We bring the model.*
|
|
152
|
+
- *Enterprise-grade Solar. Deploy where your data lives.*
|
|
153
|
+
- *One model. Four industries. Production-ready.*
|
|
154
|
+
|
|
155
|
+
**Do NOT reproduce** any verbatim Upstage hero, button label, or proof statement in derivative work — voice is the shape only.
|
|
156
|
+
|
|
157
|
+
## 11. Brand Narrative (factual)
|
|
158
|
+
|
|
159
|
+
Upstage Co., Ltd. (주식회사 업스테이지) is a Korean LLM and enterprise AI company headquartered in Gangnam, Seoul, with offices at the Korea Science and Technology Center (한국과학기술회관 2관, 스파크플러스 강남5호점 812-817호, 22 Teheran-ro 7-gil, Gangnam-gu). CEO is **Sunghun Kim (김성훈)**. Business Registration No. 830-88-01918. The company's flagship is the **Solar** family of LLMs (Solar Pro 3 / Pro 2 / Mini) and the **Syn Pro** Japanese-locally-trained LLM. Product surface includes **Document Parse** (PDF/scan → structured), **Information Extract** (key-value structuring), **Studio** (build/deploy agents), **AI Space**, and the **Upstage Marketplace**. Deployment matrix spans API, on-premise, and marketplace channels. Stated industry focus: insurance, healthcare, manufacturing, financial services. Source: live capture of the home + footer + brand-resource-center surfaces on 2026-05-15.
|
|
160
|
+
|
|
161
|
+
Founding-year, total-funding, headcount, and investor list **not verified in this pass** — public profiles (Crunchbase / TheVC) were not consulted to keep scope tight. Flagged for UPDATE.
|
|
162
|
+
|
|
163
|
+
## 12. Personas (inferred — verify before reuse)
|
|
164
|
+
|
|
165
|
+
These are reasoned inferences from the surface IA and proof bands, not user research:
|
|
166
|
+
|
|
167
|
+
- **Enterprise IT decision-maker** — insurance/healthcare/manufacturing CIO or VP of Engineering. Comes in via the Solutions tab, leaves via *Contact us* or *Try demo*. Cares about: deployment options (on-prem vs API), customer logos, compliance posture.
|
|
168
|
+
- **AI/ML engineer** — practitioner evaluating Solar models for production. Comes in via Products → Solar Pro 3 → Developer Console, leaves via Documentation. Cares about: benchmark numbers, pricing per token, latency, fine-tuning paths.
|
|
169
|
+
- **Procurement / partnership lead** — coming in via Partners / Public tenders. Cares about: business credentials (KR business-info disclosure), Newsroom signals, certifications.
|
|
170
|
+
|
|
171
|
+
`[FILL IN]` named personas, demographics, and motivations require Upstage-internal data — left as placeholders.
|
|
172
|
+
|
|
173
|
+
## 13. Anti-Patterns (what NOT to import)
|
|
174
|
+
|
|
175
|
+
1. **Do not introduce a third type family**. Geist + Espeak + monospace-swap is the entire system. A fourth face breaks the rotating-word gesture.
|
|
176
|
+
2. **Do not import drop-shadow card chrome.** Upstage achieves depth via surface-color contrast and hairline borders. Adding `box-shadow: 0 8px 24px rgba(0,0,0,0.08)` will read as a different system entirely.
|
|
177
|
+
3. **Do not soften the binary radius.** Adding `4px` / `12px` / `16px` middle terms erases the layout-vs-pressable distinction.
|
|
178
|
+
4. **Do not over-saturate the Solar yellow-green.** `#D2FF95` works *because* it appears once, near the Solar narrative. Repeating it as a default highlight color cheapens it.
|
|
179
|
+
5. **Do not default to blue.** Cobalt primary is the enterprise-AI cliche Upstage is consciously avoiding. If porting, stay on the violet-plum axis or pick a different non-blue.
|
|
180
|
+
6. **Do not center-align the hero.** Left-aligned hero with the typographic-swap industry word is the brand-defining composition.
|
|
181
|
+
|
|
182
|
+
## 14. References & Citations
|
|
183
|
+
|
|
184
|
+
- **Live capture, home**: `https://www.upstage.ai/` — 44 curated DOM samples, 930+ element frequency sweep, 74 `:root` CSS custom properties, viewport 1280×713 dpr=1, captured 2026-05-15. Method: Chrome DevTools Protocol :9222 / `Runtime.evaluate getComputedStyle`. Browser: Chrome/148.0.7778.97. Raw artifacts in `references/upstage/assets/_reference/_root-vars.json`, `_raw-capture.json`, `_curated-samples.json`, `_structure-raw.json`.
|
|
185
|
+
- **Live capture, Tier-1 brand surface**: `https://www.upstage.ai/resources/brand-resource-center` — HTTP 200, H1 "Brand Resource Center", categories Brand Identity / Product Identity / Media kit / Our leadership, asset distribution only (no token specs). Captured 2026-05-15. Artifact: `_brand-resource-center.json`.
|
|
186
|
+
- **Tier-1 negative**: `design.upstage.ai`, `brand.upstage.ai`, `www.upstage.ai/brand`, `www.upstage.ai/brand-resources` — all 000/404 (verified 2026-05-15 via curl).
|
|
187
|
+
- **Tier-1 codebase negative**: `github.com/UpstageAI` — 12 public repos, all AI/research/cookbook (`UpstageAI/cookbook`, `UpstageAI/Gym`, `UpstageAI/mcp-upstage`, `UpstageAI/opencode`, `UpstageAI/solar-prompt-cookbook`, `UpstageAI/vllm`, …). **Zero design-system / Storybook / token-library repo** as of 2026-05-15.
|
|
188
|
+
- **Tier-2 indexes**: `getdesign.md/upstage` → 200 but no curated entry; `styles.refero.design/?q=upstage` → 200 search shell, no result cards. Both verified 2026-05-15.
|
|
189
|
+
- **Business factual**: `https://www.upstage.ai/resources/brand-resource-center` footer block — KR-mandated business-information disclosure (CEO, registration number, address) reproduced as factual reference, not promotional.
|
|
190
|
+
|
|
191
|
+
## 15. Verification Footer
|
|
192
|
+
|
|
193
|
+
**Verification date**: 2026-05-15
|
|
194
|
+
**Verification method**: live CDP :9222 + Tier 1/2 URL probes + GitHub org enumeration
|
|
195
|
+
**Live-inspect proof**: `references/upstage/assets/_reference/.live-inspect-proof.json` (8 raw_samples, ≥5 required floor)
|
|
196
|
+
**Confidence per section**:
|
|
197
|
+
- §1 Visual theme & §2 Color & §3 Typography & §4 Radius & §5 Elevation & §7 Interactive: **High** (live computed-style evidence)
|
|
198
|
+
- §6 Spacing: **Medium** (no `--space-*` ladder exposed; observations are visual not token-derived)
|
|
199
|
+
- §8 Motion: **Low** — single-pass CDP did not capture transition tokens; flagged UPDATE
|
|
200
|
+
- §9 A11y: **Medium** — contrast computed, but no landmark/role audit run
|
|
201
|
+
- §10 Voice: **High** (analyst characterisation only — no verbatim reproduction)
|
|
202
|
+
- §11 Brand narrative: **High** for HQ / CEO / registration / product names (sourced from public footer); **Low** for funding/headcount/founding-year (not verified this pass)
|
|
203
|
+
- §12 Personas: **Low** (inferred — `[FILL IN]` required before product reuse)
|
|
204
|
+
- §13 Anti-patterns: **High** (derived from live evidence)
|
|
205
|
+
|
|
206
|
+
**Flags (carry into audit row)**:
|
|
207
|
+
1. Tier-1 official DS = **partial-positive** (asset distribution surface exists; token specification does not).
|
|
208
|
+
2. Tier-2 indexes both empty for `upstage` — consistent with the systemic KR-coverage gap.
|
|
209
|
+
3. Espeak display face is a proprietary commissioned typeface — reference-only; substitute with a tonally similar open display in any derivative work.
|
|
210
|
+
4. Solar yellow-green `#D2FF95` is a single-use chromatic accent — repeating it broadly will read as a different brand.
|
|
211
|
+
5. The rotating-industry hero word ships as a **typographic shift (monospace mid-sentence)**, not a color or weight shift — preserve that gesture or the hero composition breaks.
|
|
212
|
+
6. Motion tokens and component-state coverage incomplete — UPDATE pass recommended on a product detail page (e.g. `/products/solar-pro-3`) and Documentation surface.
|
|
213
|
+
|
|
214
|
+
**IP guardrails confirmed**: brand assets reference-only (logos / Espeak face not redistributed); no verbatim Upstage marketing copy quoted; §10 voice samples are fresh OmD-derived shape-only alternatives; KR business-information block reproduced as factual disclosure, not promotion.
|
|
215
|
+
|
|
216
|
+
## 16. Do's and Don'ts
|
|
217
|
+
|
|
218
|
+
### Do
|
|
219
|
+
- Reserve interactive violet #5B52FF as the only chromatic gesture that does work — links, CTAs, and secondary-button text, the way it appears across its 55 sampled occurrences
|
|
220
|
+
- Anchor the brand on the plum canvas #3C043B (the '--colors--grey-background' hero) paired with violet primary, staying on the violet-plum axis instead of any cobalt default
|
|
221
|
+
- Build vertical rhythm from surface-color flips band to band (plum hero to white product band to dark industry grid to near-black footer #191722), not from drop shadows or a numeric spacing ladder
|
|
222
|
+
- Keep type to the three-family, three-job system: Geist for ~93% of body and headings, Espeak only on the hero H1 at 57.6px/600, and a monospace mid-sentence swap for the rotating industry word
|
|
223
|
+
- Encode the binary radius literally — 0px for sections, cards, hero, and footer; 8px ('--style--radius-8px') only for pressable controls and content chips
|
|
224
|
+
- Set body copy in Geist gray #70757F (the dominant 428-element text color) at 18px/400, the way most paragraph text ships
|
|
225
|
+
|
|
226
|
+
### Don't
|
|
227
|
+
- Spread the Solar yellow-green #D2FF95 broadly — keep it as a single-use accent adjacent to the Solar product narrative, never a default button surface or section background
|
|
228
|
+
- Introduce a fourth type family beyond Geist, Espeak, and the monospace swap, which would break the rotating-word gesture
|
|
229
|
+
- Soften the binary geometry with 4px, 12px, or 16px middle radii, which erases the layout-versus-pressable distinction
|
|
230
|
+
- Import drop-shadow card chrome like 'box-shadow: 0 8px 24px rgba(0,0,0,0.08)' — Upstage ships effectively zero elevation and builds depth from surface contrast and #EEEEEE hairlines
|
|
231
|
+
- Default to a corporate blue primary, the enterprise-AI cliche Upstage consciously avoids in favor of the violet-plum axis
|
|
232
|
+
- Center-align the hero or signal the rotating industry word with color or weight — keep it left-aligned with the typographic monospace shift as the variable-slot cue
|