oh-my-design-cli 1.8.0 → 1.8.2

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 (71) hide show
  1. package/README.ja.md +4 -4
  2. package/README.ko.md +6 -6
  3. package/README.md +6 -6
  4. package/README.zh-TW.md +4 -4
  5. package/data/reference-fingerprints.json +7100 -5534
  6. package/package.json +1 -1
  7. package/web/references/3o3/DESIGN.md +454 -0
  8. package/web/references/abema/DESIGN.md +535 -0
  9. package/web/references/accupass/DESIGN.md +494 -0
  10. package/web/references/adobe/DESIGN.md +458 -0
  11. package/web/references/bito/DESIGN.md +394 -0
  12. package/web/references/cashapp/DESIGN.md +449 -0
  13. package/web/references/cuboai/DESIGN.md +435 -0
  14. package/web/references/cybozu/DESIGN.md +453 -0
  15. package/web/references/danawa/DESIGN.md +477 -0
  16. package/web/references/datadog/DESIGN.md +441 -0
  17. package/web/references/digital-agency-jp/DESIGN.md +439 -0
  18. package/web/references/dmm/DESIGN.md +455 -0
  19. package/web/references/dropbox/DESIGN.md +445 -0
  20. package/web/references/firstory/DESIGN.md +487 -0
  21. package/web/references/funnow/DESIGN.md +431 -0
  22. package/web/references/gaudiy/DESIGN.md +387 -0
  23. package/web/references/gitlab/DESIGN.md +546 -0
  24. package/web/references/goodpatch/DESIGN.md +429 -0
  25. package/web/references/google/DESIGN.md +499 -0
  26. package/web/references/greenvines/DESIGN.md +454 -0
  27. package/web/references/greeting/DESIGN.md +462 -0
  28. package/web/references/headspace/DESIGN.md +505 -0
  29. package/web/references/heptabase/DESIGN.md +448 -0
  30. package/web/references/iicombined/DESIGN.md +421 -0
  31. package/web/references/imweb/DESIGN.md +460 -0
  32. package/web/references/laundrygo/DESIGN.md +434 -0
  33. package/web/references/maicoin/DESIGN.md +484 -0
  34. package/web/references/mailchimp/DESIGN.md +450 -0
  35. package/web/references/microsoft/DESIGN.md +508 -0
  36. package/web/references/mikan/DESIGN.md +450 -0
  37. package/web/references/miricanvas/DESIGN.md +464 -0
  38. package/web/references/modusign/DESIGN.md +524 -0
  39. package/web/references/moze/DESIGN.md +423 -0
  40. package/web/references/ncsoft/DESIGN.md +488 -0
  41. package/web/references/nhn/DESIGN.md +441 -0
  42. package/web/references/nintendo/DESIGN.md +445 -0
  43. package/web/references/omnichat/DESIGN.md +499 -0
  44. package/web/references/patreon/DESIGN.md +439 -0
  45. package/web/references/pepabo/DESIGN.md +486 -0
  46. package/web/references/pinkfong/DESIGN.md +450 -0
  47. package/web/references/plaid/DESIGN.md +472 -0
  48. package/web/references/portaly/DESIGN.md +441 -0
  49. package/web/references/postype/DESIGN.md +431 -0
  50. package/web/references/rakuten/DESIGN.md +440 -0
  51. package/web/references/readmoo/DESIGN.md +492 -0
  52. package/web/references/ringle/DESIGN.md +444 -0
  53. package/web/references/salesforce/DESIGN.md +473 -0
  54. package/web/references/shiftup/DESIGN.md +433 -0
  55. package/web/references/sparkful/DESIGN.md +434 -0
  56. package/web/references/speeda/DESIGN.md +422 -0
  57. package/web/references/spindle/DESIGN.md +470 -0
  58. package/web/references/spoqa/DESIGN.md +422 -0
  59. package/web/references/stibee/DESIGN.md +424 -0
  60. package/web/references/stores/DESIGN.md +447 -0
  61. package/web/references/teamblind/DESIGN.md +497 -0
  62. package/web/references/timee/DESIGN.md +444 -0
  63. package/web/references/tmap/DESIGN.md +423 -0
  64. package/web/references/twilio/DESIGN.md +515 -0
  65. package/web/references/twitch/DESIGN.md +431 -0
  66. package/web/references/vocus/DESIGN.md +450 -0
  67. package/web/references/wantedly/DESIGN.md +437 -0
  68. package/web/references/workday/DESIGN.md +452 -0
  69. package/web/references/wrtn/DESIGN.md +454 -0
  70. package/web/references/xrex/DESIGN.md +475 -0
  71. package/web/references/zepeto/DESIGN.md +463 -0
@@ -0,0 +1,448 @@
1
+ ---
2
+ id: heptabase
3
+ name: Heptabase
4
+ country: TW
5
+ category: productivity
6
+ homepage: "https://heptabase.com"
7
+ primary_color: "#2e2e2e"
8
+ logo:
9
+ type: favicon
10
+ slug: "https://www.google.com/s2/favicons?domain=heptabase.com&sz=128"
11
+ verified: "2026-06-17"
12
+ added: "2026-06-17"
13
+ omd: "0.1"
14
+ tokens:
15
+ source: live-extract
16
+ extracted: "2026-06-17"
17
+ note: "primary = live near-black ink (#2e2e2e) used for both heading text and the dark pill/CTA; canvas is a warm off-white (#f7f7f7). Single saturated accent is a clear blue (#207dff) reserved for AI-feature highlight text; green (#75c33a) only marks pricing checkmarks. Translucent fills (rgba(252,252,252,0.5) card, rgba(0,0,0,0.08) hairline) live in prose/components, not in solid colors."
18
+ colors:
19
+ ink: "#2e2e2e"
20
+ ink-pure: "#000000"
21
+ canvas: "#f7f7f7"
22
+ surface: "#ffffff"
23
+ surface-tint: "#fcfcfc"
24
+ surface-warm: "#f0f0ea"
25
+ accent-blue: "#207dff"
26
+ accent-green: "#75c33a"
27
+ muted: "#6a6972"
28
+ muted-warm: "#777169"
29
+ hairline: "#e5e7eb"
30
+ on-primary: "#ffffff"
31
+ typography:
32
+ family: { display: "Instrument Sans", body: "Inter", cjk: "system CJK (PingFang TC / Noto Sans TC)" }
33
+ display-hero: { size: 48, weight: 500, lineHeight: 1.30, tracking: -1.584, use: "Hero headline, Instrument Sans Medium" }
34
+ section: { size: 36, weight: 500, lineHeight: 1.30, tracking: -0.54, use: "Section titles, Instrument Sans" }
35
+ card-title: { size: 24, weight: 600, lineHeight: 1.50, use: "Pricing tier / card titles, Inter SemiBold" }
36
+ nav: { size: 16, weight: 400, lineHeight: 1.50, use: "Nav links, Inter" }
37
+ body: { size: 16, weight: 400, lineHeight: 1.50, use: "Standard reading text, Inter" }
38
+ button: { size: 16, weight: 500, lineHeight: 1.00, use: "Header CTA label, Inter Medium" }
39
+ pill: { size: 13, weight: 500, lineHeight: 1.00, use: "Segmented sub-nav pill, Inter" }
40
+ spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 48, section: 64 }
41
+ rounded: { sm: 6, md: 8, lg: 12, pill: 9999 }
42
+ shadow:
43
+ none: "none"
44
+ components:
45
+ button-primary: { type: button, bg: "#2e2e2e", fg: "#ffffff", radius: "9999px", padding: "8px 16px", height: "36px", font: "16px / 500 Inter", use: "Header 'Get started' CTA — solid near-black pill" }
46
+ button-cta-lg: { type: button, bg: "#2e2e2e", fg: "#ffffff", radius: "10px", padding: "14px 24px", height: "48px", font: "16px / 600 Inter", use: "Hero / pricing primary CTA — rounded-rect" }
47
+ button-ghost: { type: button, bg: "#fcfcfc", fg: "#2e2e2e", border: "1px solid rgba(0,0,0,0.08)", radius: "10px", padding: "13px 23px", height: "48px", font: "18px / 500 Inter", use: "Secondary pricing CTA on translucent fill" }
48
+ nav-link: { type: tab, fg: "#2e2e2e", radius: "8px", padding: "8px 12px", font: "16px / 400 Inter", active: "text #2e2e2e on hover tint", use: "Top nav item" }
49
+ subnav-pill: { type: tab, fg: "#777169", radius: "9999px", padding: "7px 22px", font: "13px / 500 Inter", active: "text #000000 + filled pill", use: "Product sub-nav segmented pills (Home / AI Tutor)" }
50
+ pricing-card: { type: card, bg: "#fcfcfc", border: "1px solid rgba(0,0,0,0.08)", radius: "12px", use: "Pricing tier column on translucent fill, no shadow" }
51
+ canvas-card: { type: card, bg: "#ffffff", border: "1px solid rgba(0,0,0,0.14)", radius: "8px", use: "White product mock card" }
52
+ feature-card: { type: card, bg: "#f0f0ea", border: "1px solid rgba(0,0,0,0.04)", radius: "8px", use: "Warm feature tile on canvas" }
53
+ toggle-segment: { type: toggle, bg: "#ffffff", fg: "#2e2e2e", radius: "8px", padding: "6px 10px", use: "Monthly / Yearly billing switch" }
54
+ components_harvested: true
55
+ ---
56
+
57
+ # Design System Inspiration of Heptabase
58
+
59
+ ## 1. Visual Theme & Atmosphere
60
+
61
+ Heptabase is a visual note-taking and knowledge-management app built around an infinite whiteboard of cards, and its marketing site mirrors that product ethos: calm, paper-like, and almost editorial. The canvas is a warm off-white (`#f7f7f7`) rather than pure white, and content sits on it as a quiet field of cards. There is essentially no chroma in the chrome — text and the primary call-to-action both live in the same near-black ink (`#2e2e2e`), never a hard `#000000` for display, which gives the page a soft, printed-on-paper weight instead of a screen glare. The whole surface reads like a tidy desk: lots of whitespace, restrained neutrals, and a tight visual hierarchy where the eye is guided by type weight and spacing, not color.
62
+
63
+ The typographic personality is the system's defining move. Display headlines run in **Instrument Sans Medium (weight 500)** at large sizes — 48px on the hero with an unusually tight `-1.584px` tracking — which compresses the line into a confident, designerly block ("Master anything you learn. Do your best research and thinking."). Everything functional — nav, body, buttons, pricing copy — drops to **Inter** at weight 400–500, the workhorse UI face. This split of a characterful display sans over a neutral text sans is the same discipline you see in well-made knowledge tools: expressive where it sets the thesis, invisible where it serves reading. As a Taipei-built product that ships in English first but serves a Traditional-Chinese-reading team and audience, CJK glyphs fall through Inter to the platform stack (PingFang TC / Noto Sans TC), so 繁體中文 renders in the OS's native hanzi face rather than a bundled webfont.
64
+
65
+ What distinguishes Heptabase from louder SaaS sites is its refusal of elevation. Live inspection found `box-shadow: none` across the hero, nav, cards, and pricing columns — depth is built entirely from flat translucent fills and hairlines: a faint `rgba(252,252,252,0.5)` card tint over `#fcfcfc`, warm `#f0f0ea` feature tiles, and 1px `rgba(0,0,0,0.08)` borders. Geometry is gently rounded — 6px / 8px / 12px on cards, and a full `9999px` pill for the dark CTA. Color appears in exactly two reserved roles: a clear interactive blue (`#207dff`) that highlights AI-feature phrases, and a single green (`#75c33a`) that marks pricing checkmarks. The result is a spatial-canvas product whose website feels like the inside of the app — a quiet board on which a few deliberate things have been placed.
66
+
67
+ **Key Characteristics:**
68
+ - Warm off-white canvas (`#f7f7f7`) instead of stark white — paper-like, low-glare
69
+ - Near-black ink (`#2e2e2e`) for both display text and the primary CTA — monochrome chrome
70
+ - Instrument Sans Medium (500) display with extreme tight tracking (-1.584px at 48px)
71
+ - Inter 400–500 for all functional/UI text; CJK falls through to system PingFang TC / Noto Sans TC
72
+ - Shadow-free: depth from translucent fills (`#fcfcfc`, `#f0f0ea`) + `rgba(0,0,0,0.08)` hairlines
73
+ - Single saturated blue (`#207dff`) reserved for AI-feature highlight text
74
+ - Green (`#75c33a`) used only for pricing checkmarks — never as a brand color
75
+ - Gentle radius ladder — 6px/8px/12px cards, full `9999px` pill for the dark CTA
76
+
77
+ ## 2. Color Palette & Roles
78
+
79
+ ### Primary
80
+ - **Ink** (`#2e2e2e`): The system's primary color — display headings, body emphasis, and the fill of the dark CTA pill. A soft near-black that reads as ink on paper, never the harsh `#000000`.
81
+ - **Pure Black** (`#000000`): Reserved for maximum-contrast moments — the active state of a sub-nav pill, the logotype link. Used sparingly.
82
+ - **Pure White** (`#ffffff`): White product-mock cards and text on the dark ink CTA.
83
+
84
+ ### Canvas & Surface
85
+ - **Canvas** (`#f7f7f7`): The page background — a warm off-white that frames every card.
86
+ - **Surface Tint** (`#fcfcfc`): Near-white card fill, frequently rendered at 0.5 alpha (`rgba(252,252,252,0.5)`) so the warm canvas reads faintly through it.
87
+ - **Surface Warm** (`#f0f0ea`): A warmer beige-grey for feature tiles and section panels — adds the "paper" warmth.
88
+ - **Hairline** (`#e5e7eb`): The default border token in the stylesheet; card and divider outlines more often use the translucent `rgba(0,0,0,0.08)` / `rgba(0,0,0,0.14)` variants over it.
89
+
90
+ ### Accent
91
+ - **Accent Blue** (`#207dff`): The single saturated interactive hue — highlights AI-feature phrases ("AI chat", "AI tutor", "Save 25%") and active/interactive emphasis. The product's only "this is special" color.
92
+ - **Accent Green** (`#75c33a`): Pricing checkmark color only — signals "included" in feature lists. Not a brand color and never used for chrome.
93
+
94
+ ### Text Hierarchy
95
+ - **Ink** (`#2e2e2e`): Primary text, headings, nav, strong labels.
96
+ - **Muted** (`#6a6972`): Secondary body copy, descriptions, captions.
97
+ - **Muted Warm** (`#777169`): Warm-grey alternate for inactive sub-nav pills and fine print.
98
+ - **On Primary** (`#ffffff`): Text on the dark ink CTA and on dark surfaces.
99
+
100
+ ## 3. Typography Rules
101
+
102
+ ### Font Family
103
+ - **Display**: `Instrument Sans` (loaded as `__instrumentSans`) — all hero and section headlines, weight 500.
104
+ - **Body / UI**: `Inter` (loaded as `__Inter`) — nav, body, buttons, pricing, the document default at weight 400–600.
105
+ - **CJK**: no bundled hanzi webfont; Traditional-Chinese text falls through the Inter stack to the platform CJK face (PingFang TC on Apple, Noto Sans TC / Microsoft JhengHei on others).
106
+
107
+ ### Hierarchy
108
+
109
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
110
+ |------|------|------|--------|-------------|----------------|-------|
111
+ | Display Hero | Instrument Sans | 48px (3.00rem) | 500 | 1.30 (62.4px) | -1.584px | Hero headline, very tight tracking |
112
+ | Section Heading | Instrument Sans | 36px (2.25rem) | 500 | 1.30 (46.8px) | -0.54px | Section titles |
113
+ | Card / Tier Title | Inter | 24px (1.50rem) | 600 | 1.50 | normal | Pricing tier + card heads |
114
+ | Logotype | Inter | 18px (1.13rem) | 600 | — | -0.36px | "Heptabase" wordmark |
115
+ | Nav Link | Inter | 16px (1.00rem) | 400 | 1.50 | normal | Top navigation items |
116
+ | Body | Inter | 16px (1.00rem) | 400 | 1.50 | normal | Standard reading text |
117
+ | Button | Inter | 16px (1.00rem) | 500 | 1.00 | normal | Header CTA label |
118
+ | Sub-nav Pill | Inter | 13px (0.81rem) | 500 | 1.00 | normal | Product segmented pills |
119
+
120
+ ### Principles
121
+ - **Two faces, two jobs**: Instrument Sans is the expressive display voice; Inter is the functional reading/UI voice. They never swap roles.
122
+ - **Tight display tracking**: headlines compress hard (-1.584px at 48px, -0.54px at 36px); body and UI stay at normal tracking. The compression is the brand's typographic signature.
123
+ - **Soft-black ink, not pure black**: display and body text use `#2e2e2e`, reserving `#000000` for rare maximum-contrast accents.
124
+ - **Medium weight as display weight**: the hero runs at weight 500, not 700 — confidence through tracking and size, not heaviness.
125
+
126
+ ## 4. Component Stylings
127
+
128
+ ### Buttons
129
+
130
+ **Header CTA (Primary Pill)**
131
+ - Background: `#2e2e2e`
132
+ - Text: `#ffffff`
133
+ - Radius: 9999px
134
+ - Padding: 8px 16px
135
+ - Height: 36px
136
+ - Font: 16px Inter weight 500
137
+ - Use: Header "Get started" call-to-action — the system's single solid pill
138
+
139
+ **Hero / Pricing CTA (Rounded Rect)**
140
+ - Background: `#2e2e2e`
141
+ - Text: `#ffffff`
142
+ - Radius: 10px
143
+ - Padding: 14px 24px
144
+ - Height: 48px
145
+ - Font: 16px Inter weight 600
146
+ - Use: Hero "Get started on mobile" and the featured pricing tier CTA
147
+
148
+ **Ghost CTA**
149
+ - Background: `#fcfcfc`
150
+ - Text: `#2e2e2e`
151
+ - Border: 1px solid `rgba(0,0,0,0.08)`
152
+ - Radius: 10px
153
+ - Padding: 13px 23px
154
+ - Height: 48px
155
+ - Font: 18px Inter weight 500
156
+ - Use: Secondary pricing-tier CTA on translucent fill
157
+
158
+ ### Inputs & Forms
159
+
160
+ **Billing Toggle Segment**
161
+ - Background: `#ffffff`
162
+ - Text: `#2e2e2e`
163
+ - Radius: 8px
164
+ - Padding: 6px 10px
165
+ - Height: 32px
166
+ - Font: 16px Inter weight 500
167
+ - Use: Monthly / Yearly (Save 25%) billing switch — active segment fills white, inactive text drops to `rgba(0,0,0,0.32)`
168
+
169
+ ### Cards & Containers
170
+
171
+ **Pricing Card**
172
+ - Background: `#fcfcfc` (rendered at `rgba(252,252,252,0.5)`)
173
+ - Border: 1px solid `rgba(0,0,0,0.08)`
174
+ - Radius: 12px
175
+ - Use: Pricing tier column — translucent fill over warm canvas, no shadow
176
+
177
+ **White Product Card**
178
+ - Background: `#ffffff`
179
+ - Border: 1px solid `rgba(0,0,0,0.14)`
180
+ - Radius: 8px
181
+ - Use: White product-mock card in feature sections
182
+
183
+ **Warm Feature Tile**
184
+ - Background: `#f0f0ea`
185
+ - Border: 1px solid `rgba(0,0,0,0.04)`
186
+ - Radius: 8px
187
+ - Use: Warm beige feature tile on the canvas
188
+
189
+ ### Tabs / Sub-Navigation
190
+
191
+ **Top Nav Item**
192
+ - Text: `#2e2e2e`
193
+ - Radius: 8px
194
+ - Padding: 8px 12px
195
+ - Font: 16px Inter weight 400
196
+ - Use: Top navigation links (AI Tutor, Wiki, Download, Gallery, Pricing)
197
+
198
+ **Sub-nav Segmented Pill**
199
+ - Text: `#777169` (inactive)
200
+ - Radius: 9999px
201
+ - Padding: 7px 22px
202
+ - Font: 13px Inter weight 500
203
+ - Active: text `#000000` in a filled pill
204
+ - Use: Product sub-navigation segmented pills (Home / AI Tutor)
205
+
206
+ ### Accent Treatment
207
+ - Feature-highlight text: `#207dff` (blue) for AI-feature phrases
208
+ - Pricing checkmarks: `#75c33a` (green) for included-feature ticks
209
+ - Neither accent appears on buttons, borders, or chrome — color is information, not decoration
210
+
211
+ ---
212
+
213
+ **Verified:** 2026-06-17 (omd:add-reference CREATE — Tier 1 live inspect, 2 brand-owned surfaces)
214
+ **Tier 1 sources:** https://heptabase.com (homepage, live computed-style inspect), https://heptabase.com/pricing (pricing page, live computed-style inspect), https://wiki.heptabase.com (Heptabase official Wiki — brand-owned, mission/manifesto source)
215
+ **Tier 2 sources:** getdesign.md/heptabase — 404 "No designs found"; styles.refero.design/?q=heptabase — no matching results
216
+ **Conflicts unresolved:** none
217
+
218
+ ## 5. Layout Principles
219
+
220
+ ### Spacing System
221
+ - Base unit: 8px
222
+ - Scale: 4px, 8px, 12px, 16px, 24px, 32px, 48px, 64px
223
+ - Notable: nav items use a tight 8px 12px hit area; the dark CTA pill uses 8px 16px; large CTAs jump to 14px 24px for a comfortable touch target
224
+
225
+ ### Grid & Container
226
+ - Centered single-column hero anchored by the 48px Instrument Sans headline
227
+ - Feature sections present product mocks inside `#fcfcfc` / `#ffffff` cards on the warm canvas
228
+ - Pricing is a 3-column grid of equal `#fcfcfc` tier cards at 12px radius
229
+ - Warm `#f0f0ea` tiles arrange supporting features in a quiet sub-grid
230
+
231
+ ### Whitespace Philosophy
232
+ - **Canvas as breathing room**: the warm off-white `#f7f7f7` field is generous; cards float on it with wide margins, echoing the app's infinite whiteboard.
233
+ - **Flat segmentation**: sections separate by surface tint (`#fcfcfc` vs `#f0f0ea` vs canvas) and hairlines, never by shadow.
234
+ - **Hierarchy by type, not color**: weight and size carry the structure so the palette can stay almost monochrome.
235
+
236
+ ### Border Radius Scale
237
+ - Small (6px): inner card elements, dense containers
238
+ - Medium (8px): nav items, white/warm cards, toggle segments
239
+ - Large (12px): pricing cards, large panels
240
+ - Pill (9999px): header CTA, sub-nav segmented pills
241
+
242
+ ## 6. Depth & Elevation
243
+
244
+ | Level | Treatment | Use |
245
+ |-------|-----------|-----|
246
+ | Flat (Level 0) | No shadow | Page canvas, inline text, most surfaces |
247
+ | Tint (Level 1) | `#fcfcfc` / `#f0f0ea` fill shift | Card and section separation without elevation |
248
+ | Hairline (Level 2) | `1px solid rgba(0,0,0,0.08)` border | Card outlines, dividers |
249
+
250
+ **Shadow Philosophy**: Heptabase is a deliberately shadowless system. Live inspection found `box-shadow: none` across the hero, nav, feature cards, and pricing columns. Depth and grouping come entirely from flat translucent fills — a `rgba(252,252,252,0.5)` tint over `#fcfcfc`, warm `#f0f0ea` panels — and thin `rgba(0,0,0,0.08)` hairlines over the `#e5e7eb` base border. This keeps the marketing surface feeling like the product: a calm, paper-like board where cards sit flat and the user's attention is never pulled by artificial elevation. When emphasis is needed the system reaches for the dark ink (`#2e2e2e`) fill or the blue accent (`#207dff`), never a drop shadow.
251
+
252
+ ## 7. Do's and Don'ts
253
+
254
+ ### Do
255
+ - Use a warm off-white canvas (`#f7f7f7`) instead of pure white — paper-like calm
256
+ - Use near-black ink (`#2e2e2e`) for display text and the primary CTA — keep chrome monochrome
257
+ - Set headlines in Instrument Sans Medium (500) with tight negative tracking (-1.584px at 48px)
258
+ - Use Inter weight 400–500 for all nav, body, and UI text
259
+ - Keep the system shadow-free — separate with `#fcfcfc` / `#f0f0ea` fills and `rgba(0,0,0,0.08)` hairlines
260
+ - Reserve blue (`#207dff`) for AI-feature highlight text only
261
+ - Use green (`#75c33a`) only for pricing checkmarks
262
+ - Fall CJK text through to the system stack (PingFang TC / Noto Sans TC) for 繁體中文
263
+
264
+ ### Don't
265
+ - Use pure black (`#000000`) for display or body text — reserve it for rare maximum-contrast accents
266
+ - Add drop shadows for elevation — Heptabase is flat and paper-like
267
+ - Spread the blue or green accents across chrome — they carry meaning, not decoration
268
+ - Set headlines in a heavy 700 weight — Medium 500 plus tight tracking is the voice
269
+ - Use Inter for big display headlines — Instrument Sans owns display
270
+ - Use a stark white page background — the warmth of `#f7f7f7` is intentional
271
+ - Bundle a CJK webfont — let 繁體中文 render in the native OS hanzi face
272
+ - Use loud SaaS gradients or glassmorphism — the surface stays quiet and printed
273
+
274
+ ## 8. Responsive Behavior
275
+
276
+ ### Breakpoints
277
+ | Name | Width | Key Changes |
278
+ |------|-------|-------------|
279
+ | Mobile | <640px | Single column, hero headline compresses, pricing cards stack |
280
+ | Tablet | 640-1024px | Moderate padding, 2-up feature cards |
281
+ | Desktop | 1024-1440px | Full layout, centered hero, 3-column pricing grid |
282
+
283
+ ### Touch Targets
284
+ - Large CTAs at 48px height with 14px 24px padding — comfortably tappable
285
+ - Header pill CTA at 36px height, full radius for an unmistakable target
286
+ - Nav items at 36px height with 8px 12px hit area
287
+
288
+ ### Collapsing Strategy
289
+ - Hero: 48px Instrument Sans headline scales down on mobile, weight 500 maintained
290
+ - Pricing: 3-column tier grid collapses to a single stacked column
291
+ - Feature cards: multi-column → stacked single column
292
+ - Warm/white card surfaces maintain their fills and hairlines across breakpoints
293
+
294
+ ### Image Behavior
295
+ - Product-mock cards carry no shadow at any size, consistent with the flat system
296
+ - Cards maintain their 8px/12px radius across breakpoints
297
+ - Whiteboard/canvas screenshots sit inside `#fcfcfc` / `#ffffff` framed cards
298
+
299
+ ## 9. Agent Prompt Guide
300
+
301
+ ### Quick Color Reference
302
+ - Primary text + CTA: Ink (`#2e2e2e`)
303
+ - Page background: Canvas (`#f7f7f7`)
304
+ - Card fill: Surface Tint (`#fcfcfc`)
305
+ - Warm panel: Surface Warm (`#f0f0ea`)
306
+ - White card: (`#ffffff`)
307
+ - Feature highlight: Accent Blue (`#207dff`)
308
+ - Pricing checkmark: Accent Green (`#75c33a`)
309
+ - Secondary text: Muted (`#6a6972`)
310
+ - Inactive pill text: Muted Warm (`#777169`)
311
+ - Border base: Hairline (`#e5e7eb`)
312
+
313
+ ### Example Component Prompts
314
+ - "Create a hero on a warm off-white background (#f7f7f7). Headline at 48px Instrument Sans weight 500, line-height 1.30, letter-spacing -1.584px, color #2e2e2e. Below it a dark CTA pill: #2e2e2e background, white text, 9999px radius, 8px 16px padding, 16px Inter weight 500."
315
+ - "Design a pricing card: #fcfcfc fill at 0.5 alpha, 1px solid rgba(0,0,0,0.08) border, 12px radius, no shadow. Tier title 24px Inter weight 600 #2e2e2e. Feature list 16px Inter #6a6972 with #75c33a checkmarks. Featured tier CTA: #2e2e2e background, white text, 10px radius, 14px 24px padding."
316
+ - "Build a warm feature tile: #f0f0ea background, 1px solid rgba(0,0,0,0.04) border, 8px radius. Title 36px Instrument Sans weight 500, letter-spacing -0.54px, #2e2e2e. Body 16px Inter #6a6972. Highlight 'AI chat' in #207dff."
317
+ - "Create a top nav on #f7f7f7. Inter 16px weight 400 links, #2e2e2e text, 8px radius hover tint. Dark pill 'Get started' CTA right-aligned: #2e2e2e, white text, 9999px radius."
318
+
319
+ ### Iteration Guide
320
+ 1. Instrument Sans Medium (500) for headlines with tight tracking; Inter 400–500 for everything functional
321
+ 2. Ink (`#2e2e2e`) is both the text and the action color — keep chrome monochrome
322
+ 3. No shadows — separate with `#fcfcfc` / `#f0f0ea` fills and `rgba(0,0,0,0.08)` hairlines
323
+ 4. Warm canvas `#f7f7f7`, never stark white
324
+ 5. Blue (`#207dff`) only on AI-feature text; green (`#75c33a`) only on checkmarks
325
+ 6. Gentle radius — 6px/8px/12px cards, full pill for the CTA
326
+ 7. Let 繁體中文 render in the native system CJK face
327
+
328
+ ---
329
+
330
+ ## 10. Voice & Tone
331
+
332
+ Heptabase's voice is **calm, intellectual, and earnest** — a tool for thinkers that speaks the way a good study partner does, plainly and with quiet conviction. The hero line "Master anything you learn. Do your best research and thinking." sets the register: aspirational about understanding, never gimmicky about productivity. Copy treats the user as a serious learner building something lasting, not a metrics target. The vision statement — "create a world where anyone can effectively establish a deep understanding of anything" — is the spine of every surface.
333
+
334
+ | Context | Tone |
335
+ |---|---|
336
+ | Hero headlines | Aspirational, learning-framed. "Master anything you learn." Confident, not hype. |
337
+ | Feature copy | Concrete and capability-first. "Ask AI to explain any sources you bring." |
338
+ | Pricing taglines | Plain, audience-named. "For anyone building a lifelong knowledge base." |
339
+ | CTAs | Direct, low-pressure. "Get started", "Get started on mobile". |
340
+ | Trust / social proof | Understated. "Trusted by customers from the world's leading universities." |
341
+
342
+ **Voice samples (verbatim from live site, 2026-06-17):**
343
+ - "Master anything you learn. Do your best research and thinking." — hero headline (learning-framed mission). *(verified live homepage)*
344
+ - "For anyone building a lifelong knowledge base." — Pro tier tagline (audience-named, plain). *(verified live pricing)*
345
+ - "Trusted by customers from the world's leading universities." — pricing social proof (understated). *(verified live pricing)*
346
+
347
+ **Forbidden register**: hustle-productivity hype, exclamation-heavy urgency, undefined buzzwords, "10x your output"-style claims, and anything that frames learning as a competition rather than a personal pursuit of understanding.
348
+
349
+ ## 11. Brand Narrative
350
+
351
+ Heptabase was created by founder **Alan Chan**, who built the product around a single conviction: that genuine understanding is spatial and visual, not linear. The product is a visual note-taking and knowledge-management app whose core interaction is an infinite whiteboard of cards — you bring sources in, lay them out on a canvas, and make sense of them by arranging, connecting, and synthesizing rather than by stacking notes in a list. Its stated vision is to "create a world where anyone can effectively establish a deep understanding of anything."
352
+
353
+ Organizationally, Heptabase is a **Taipei-based team** — the founder and core team operate out of Taiwan, which is why this reference is classified `country: TW` by operating base. The company is incorporated in Delaware and went through **Y Combinator's W22 batch**, so the legal entity is US-registered; but the design culture, the team, and the day-to-day product work are Taiwanese, and the design-led founder's hand is visible in the restraint of every surface. (Classification follows operating base, not place of incorporation.)
354
+
355
+ What Heptabase refuses, visible in its design: the loud, gradient-heavy chrome of growth-stage SaaS and the dopamine-loop urgency of consumer productivity apps. What it embraces: a warm, paper-like canvas; a near-monochrome palette where color is reserved for meaning; expressive display type over a quiet text face; and a flat, shadowless surface that feels like the inside of the product — a calm board on which serious thinking can happen. The website is, deliberately, a demonstration of the product's thesis: that a well-arranged space helps you understand.
356
+
357
+ ## 12. Principles
358
+
359
+ 1. **Understanding is spatial.** The product's whole premise is that arranging knowledge on a canvas beats stacking it in a list. *UI implication:* lay content out as cards on a generous canvas; let space and adjacency carry relationships, not nesting depth.
360
+ 2. **Color is information, not decoration.** The palette is near-monochrome so that the two accents mean something. *UI implication:* reserve blue (`#207dff`) for feature emphasis and green (`#75c33a`) for "included"; keep all chrome in ink and neutrals.
361
+ 3. **Calm over stimulation.** A thinking tool should not compete for attention. *UI implication:* no shadows, no gradients, no urgency — a warm `#f7f7f7` canvas and flat fills keep the surface quiet.
362
+ 4. **Type sets the thesis.** Expressive display type states the idea; neutral text type serves the reading. *UI implication:* Instrument Sans Medium with tight tracking for headlines; Inter for everything that must simply be read.
363
+ 5. **Built to live with.** Copy frames a "lifelong knowledge base," not a quick win. *UI implication:* design for durability and density of use, not for first-session delight; nothing should feel like a trend that ages in a year.
364
+
365
+ ## 13. Personas
366
+
367
+ *Personas below are fictional archetypes informed by publicly observable Heptabase user segments (university researchers, lifelong learners, knowledge workers building personal knowledge bases), not individual people.*
368
+
369
+ **Chen Yi-Hsuan, 27, Taipei.** A graduate researcher synthesizing papers for a literature review. Lays each source as a card on a whiteboard and draws the connections between arguments. Chose Heptabase because the spatial canvas matches how she actually thinks, and because the interface stays out of the way.
370
+
371
+ **Daniel Okafor, 34, London.** A product strategist building a lifelong knowledge base from books, talks, and meeting notes. Values that the tool is calm and shadow-free — it feels like a desk, not a dashboard. Uses the AI chat to interrogate sources he has brought in rather than to generate filler.
372
+
373
+ **Mizuki Tanaka, 22, Kyoto.** An undergraduate using Heptabase as an AI tutor to master hard courses. Appreciates the plain, non-gamified tone and that the blue highlight reliably means "this is an AI feature." Reads 繁體中文 and Japanese content side by side and relies on the native system CJK rendering.
374
+
375
+ ## 14. States
376
+
377
+ | State | Treatment |
378
+ |---|---|
379
+ | **Empty (new whiteboard)** | Warm canvas (`#f7f7f7`) with a single Ink (`#2e2e2e`) prompt at body size inviting the first card. No illustration clutter — the empty canvas is the invitation. |
380
+ | **Empty (no search results)** | Muted (`#6a6972`) single line explaining nothing matched, with a path to adjust the query. Calm, honest. |
381
+ | **Loading (board / card fetch)** | Flat skeleton blocks on `#fcfcfc` fill at final dimensions, 8px/12px radius. No shadow shimmer — a quiet pulse consistent with the shadowless system. |
382
+ | **Loading (AI compute)** | Inline progress within the AI panel; the blue accent (`#207dff`) marks the active AI action; previous content stays visible. |
383
+ | **Error (sync / load failed)** | Inline message in Ink (`#2e2e2e`) with a plain-language explanation and a retry. No generic "Something went wrong" alone — states what to do next. |
384
+ | **Error (form / field)** | Field-level message below the input describing what is valid, not just "Required". |
385
+ | **Success (saved / synced)** | Brief, quiet inline confirmation; no celebratory emoji, no toast spam — the card itself reflects the saved state. |
386
+ | **Skeleton** | `#fcfcfc` blocks at final dimensions, 8px/12px radius, flat pulse. |
387
+ | **Disabled** | Muted Warm (`#777169`) text on reduced-opacity surface; the dark ink action fades rather than switching to a different hue, preserving the monochrome read. |
388
+
389
+ ## 15. Motion & Easing
390
+
391
+ **Durations**:
392
+
393
+ | Token | Value | Use |
394
+ |---|---|---|
395
+ | `motion-fast` | 120ms | Hover, pill press, focus |
396
+ | `motion-standard` | 200ms | Card/section reveal, panel open, sheet |
397
+ | `motion-slow` | 320ms | Page-level transitions, hero reveal |
398
+
399
+ **Easings**:
400
+
401
+ | Token | Curve | Use |
402
+ |---|---|---|
403
+ | `ease-enter` | `cubic-bezier(0.2, 0.6, 0.25, 1)` | Arriving — cards, panels, sheets |
404
+ | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals |
405
+ | `ease-standard` | `cubic-bezier(0.25, 0.1, 0.25, 1)` | Two-way transitions |
406
+
407
+ **Motion rules**: Motion is functional and quiet, consistent with the calm, paper-like aesthetic. Cards and panels fade-in from below at `motion-standard / ease-enter`; pills respond to press with a subtle scale/opacity shift. There is no bounce or spring — a thinking tool signals steadiness, not playfulness. On an infinite-canvas product, panning and zooming are direct and immediate rather than animated for show. Under `prefers-reduced-motion: reduce`, all transitions collapse to instant; the product remains fully functional.
408
+
409
+ <!--
410
+ OmD v0.1 Sources — Philosophy Layer (sections 10–15)
411
+
412
+ Tier 1 live inspect (2026-06-17) via global playwright getComputedStyle on
413
+ https://heptabase.com and https://heptabase.com/pricing:
414
+ - Hero H1 "Master anything you learn. Do your best research and thinking." —
415
+ Instrument Sans 48px / weight 500 / -1.584px / line-height 62.4px / color rgb(46,46,46)
416
+ - Section H2 — Instrument Sans 36px / 500 / -0.54px / rgb(46,46,46)
417
+ - Header CTA "Get started" — bg rgb(46,46,46) #2e2e2e / radius 9999px / 8px 16px / Inter 16px / 500 / white text
418
+ - Hero/pricing CTA — bg rgb(46,46,46) / radius 10px / 14px 24px / Inter 16px / 600 / white
419
+ - Nav items — Inter 16px / 400 / rgb(46,46,46) / 8px radius / 8px 12px padding
420
+ - Sub-nav pills — Inter 13px / 500 / inactive rgb(119,113,105) #777169 / active rgb(0,0,0) / 9999px
421
+ - Pricing cards — bg rgba(252,252,252,0.5) over #fcfcfc / 1px solid rgba(0,0,0,0.08) / radius 12px
422
+ - Warm feature tiles — bg rgb(240,240,234) #f0f0ea / 1px solid rgba(0,0,0,0.04) / radius 8px
423
+ - Accent blue rgb(32,125,255) #207dff on AI-feature spans ("AI chat","AI tutor","Save 25%")
424
+ - Accent green rgb(117,195,58) #75c33a on pricing checkmarks
425
+ - box-shadow: none across hero/nav/cards/pricing (shadowless system confirmed)
426
+ - Canvas bg rgb(247,247,247) #f7f7f7; body font Inter; display font Instrument Sans
427
+
428
+ Mission/voice (§10-11) verified via brand-owned surfaces:
429
+ - https://wiki.heptabase.com — vision "create a world where anyone can effectively
430
+ establish a deep understanding of anything"; founder Alan Chan; visual whiteboard
431
+ knowledge-management philosophy.
432
+ - https://heptabase.com/pricing — tier taglines ("For anyone building a lifelong
433
+ knowledge base.") and social proof ("Trusted by customers from the world's leading
434
+ universities."), verbatim.
435
+
436
+ Country classification: TW by OPERATING BASE — founder and core team are Taipei-based.
437
+ The company is Delaware-incorporated and a Y Combinator W22 alum (US legal entity), noted
438
+ in §11; per project rule, country follows operating base, not place of incorporation.
439
+ This is widely documented public information, not a directly quoted Heptabase statement.
440
+
441
+ Personas (§13) are fictional archetypes informed by publicly observable Heptabase user
442
+ segments (researchers, lifelong learners, students using the AI tutor). Names are
443
+ illustrative; they do not refer to real people.
444
+
445
+ Interpretive claims (e.g., "the website is a demonstration of the product's thesis",
446
+ "color is information, not decoration") are editorial readings connecting Heptabase's
447
+ observed design to its stated mission, not directly sourced Heptabase statements.
448
+ -->