spirewise 1.7.1 → 1.8.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.
Files changed (210) hide show
  1. package/README.md +0 -15
  2. package/bin/cli.js +65 -37
  3. package/install.sh +3 -3
  4. package/package.json +2 -4
  5. package/skills/README.md +0 -1
  6. package/skills/ai-agent-os-design-system/README.md +105 -0
  7. package/skills/ai-agent-os-design-system/SKILL.md +195 -0
  8. package/skills/ai-agent-os-design-system/accessibility-system.md +67 -0
  9. package/skills/ai-agent-os-design-system/color-system.md +102 -0
  10. package/skills/ai-agent-os-design-system/component-library.md +147 -0
  11. package/skills/ai-agent-os-design-system/design-principles.md +79 -0
  12. package/skills/ai-agent-os-design-system/example-page-structures.md +93 -0
  13. package/skills/ai-agent-os-design-system/layout-system.md +74 -0
  14. package/skills/ai-agent-os-design-system/motion-system.md +85 -0
  15. package/skills/ai-agent-os-design-system/spacing-system.md +87 -0
  16. package/skills/ai-agent-os-design-system/typography-system.md +91 -0
  17. package/skills/ai-agent-os-design-system/website-generation-rules.md +192 -0
  18. package/skills/ai-dark-futuristic-design-system/README.md +91 -0
  19. package/skills/ai-dark-futuristic-design-system/SKILL.md +179 -0
  20. package/skills/ai-dark-futuristic-design-system/accessibility-system.md +61 -0
  21. package/skills/ai-dark-futuristic-design-system/color-system.md +99 -0
  22. package/skills/ai-dark-futuristic-design-system/component-library.md +140 -0
  23. package/skills/ai-dark-futuristic-design-system/design-principles.md +66 -0
  24. package/skills/ai-dark-futuristic-design-system/example-page-structures.md +124 -0
  25. package/skills/ai-dark-futuristic-design-system/layout-system.md +85 -0
  26. package/skills/ai-dark-futuristic-design-system/motion-system.md +76 -0
  27. package/skills/ai-dark-futuristic-design-system/spacing-system.md +73 -0
  28. package/skills/ai-dark-futuristic-design-system/typography-system.md +89 -0
  29. package/skills/ai-dark-futuristic-design-system/website-generation-rules.md +220 -0
  30. package/skills/apple-premium-minimal-design-system/README.md +95 -0
  31. package/skills/apple-premium-minimal-design-system/SKILL.md +166 -0
  32. package/skills/apple-premium-minimal-design-system/accessibility-system.md +60 -0
  33. package/skills/apple-premium-minimal-design-system/color-system.md +100 -0
  34. package/skills/apple-premium-minimal-design-system/component-library.md +136 -0
  35. package/skills/apple-premium-minimal-design-system/design-principles.md +65 -0
  36. package/skills/apple-premium-minimal-design-system/example-page-structures.md +90 -0
  37. package/skills/apple-premium-minimal-design-system/layout-system.md +89 -0
  38. package/skills/apple-premium-minimal-design-system/motion-system.md +75 -0
  39. package/skills/apple-premium-minimal-design-system/spacing-system.md +73 -0
  40. package/skills/apple-premium-minimal-design-system/typography-system.md +86 -0
  41. package/skills/apple-premium-minimal-design-system/website-generation-rules.md +207 -0
  42. package/skills/bento-grid-design-system/README.md +97 -0
  43. package/skills/bento-grid-design-system/SKILL.md +185 -0
  44. package/skills/bento-grid-design-system/accessibility-system.md +54 -0
  45. package/skills/bento-grid-design-system/color-system.md +98 -0
  46. package/skills/bento-grid-design-system/component-library.md +138 -0
  47. package/skills/bento-grid-design-system/design-principles.md +72 -0
  48. package/skills/bento-grid-design-system/example-page-structures.md +91 -0
  49. package/skills/bento-grid-design-system/layout-system.md +93 -0
  50. package/skills/bento-grid-design-system/motion-system.md +81 -0
  51. package/skills/bento-grid-design-system/spacing-system.md +77 -0
  52. package/skills/bento-grid-design-system/typography-system.md +85 -0
  53. package/skills/bento-grid-design-system/website-generation-rules.md +193 -0
  54. package/skills/brutalist-tech-design-system/README.md +100 -0
  55. package/skills/brutalist-tech-design-system/SKILL.md +185 -0
  56. package/skills/brutalist-tech-design-system/accessibility-system.md +61 -0
  57. package/skills/brutalist-tech-design-system/color-system.md +101 -0
  58. package/skills/brutalist-tech-design-system/component-library.md +117 -0
  59. package/skills/brutalist-tech-design-system/design-principles.md +73 -0
  60. package/skills/brutalist-tech-design-system/example-page-structures.md +92 -0
  61. package/skills/brutalist-tech-design-system/layout-system.md +74 -0
  62. package/skills/brutalist-tech-design-system/motion-system.md +80 -0
  63. package/skills/brutalist-tech-design-system/spacing-system.md +86 -0
  64. package/skills/brutalist-tech-design-system/typography-system.md +94 -0
  65. package/skills/brutalist-tech-design-system/website-generation-rules.md +195 -0
  66. package/skills/crunchbase-profile-generator/README.md +64 -0
  67. package/skills/crunchbase-profile-generator/SKILL.md +189 -0
  68. package/skills/editorial-luxury-design-system/README.md +98 -0
  69. package/skills/editorial-luxury-design-system/SKILL.md +187 -0
  70. package/skills/editorial-luxury-design-system/accessibility-system.md +63 -0
  71. package/skills/editorial-luxury-design-system/color-system.md +95 -0
  72. package/skills/editorial-luxury-design-system/component-library.md +131 -0
  73. package/skills/editorial-luxury-design-system/design-principles.md +77 -0
  74. package/skills/editorial-luxury-design-system/example-page-structures.md +94 -0
  75. package/skills/editorial-luxury-design-system/layout-system.md +80 -0
  76. package/skills/editorial-luxury-design-system/motion-system.md +82 -0
  77. package/skills/editorial-luxury-design-system/spacing-system.md +77 -0
  78. package/skills/editorial-luxury-design-system/typography-system.md +107 -0
  79. package/skills/editorial-luxury-design-system/website-generation-rules.md +194 -0
  80. package/skills/enterprise-data-viz-design-system/README.md +98 -0
  81. package/skills/enterprise-data-viz-design-system/SKILL.md +195 -0
  82. package/skills/enterprise-data-viz-design-system/accessibility-system.md +68 -0
  83. package/skills/enterprise-data-viz-design-system/color-system.md +112 -0
  84. package/skills/enterprise-data-viz-design-system/component-library.md +142 -0
  85. package/skills/enterprise-data-viz-design-system/design-principles.md +75 -0
  86. package/skills/enterprise-data-viz-design-system/example-page-structures.md +89 -0
  87. package/skills/enterprise-data-viz-design-system/layout-system.md +75 -0
  88. package/skills/enterprise-data-viz-design-system/motion-system.md +86 -0
  89. package/skills/enterprise-data-viz-design-system/spacing-system.md +85 -0
  90. package/skills/enterprise-data-viz-design-system/typography-system.md +100 -0
  91. package/skills/enterprise-data-viz-design-system/website-generation-rules.md +196 -0
  92. package/skills/f6s-copywriting/README.md +16 -6
  93. package/skills/f6s-copywriting/SKILL.md +162 -46
  94. package/skills/glassmorphism-design-system/README.md +98 -0
  95. package/skills/glassmorphism-design-system/SKILL.md +190 -0
  96. package/skills/glassmorphism-design-system/accessibility-system.md +62 -0
  97. package/skills/glassmorphism-design-system/color-system.md +128 -0
  98. package/skills/glassmorphism-design-system/component-library.md +120 -0
  99. package/skills/glassmorphism-design-system/design-principles.md +77 -0
  100. package/skills/glassmorphism-design-system/example-page-structures.md +92 -0
  101. package/skills/glassmorphism-design-system/layout-system.md +81 -0
  102. package/skills/glassmorphism-design-system/motion-system.md +86 -0
  103. package/skills/glassmorphism-design-system/spacing-system.md +73 -0
  104. package/skills/glassmorphism-design-system/typography-system.md +90 -0
  105. package/skills/glassmorphism-design-system/website-generation-rules.md +195 -0
  106. package/skills/linkedin-copywriting/README.md +15 -8
  107. package/skills/linkedin-copywriting/SKILL.md +129 -51
  108. package/skills/motion-storytelling-design-system/README.md +100 -0
  109. package/skills/motion-storytelling-design-system/SKILL.md +191 -0
  110. package/skills/motion-storytelling-design-system/accessibility-system.md +71 -0
  111. package/skills/motion-storytelling-design-system/color-system.md +101 -0
  112. package/skills/motion-storytelling-design-system/component-library.md +122 -0
  113. package/skills/motion-storytelling-design-system/design-principles.md +81 -0
  114. package/skills/motion-storytelling-design-system/example-page-structures.md +91 -0
  115. package/skills/motion-storytelling-design-system/layout-system.md +79 -0
  116. package/skills/motion-storytelling-design-system/motion-system.md +116 -0
  117. package/skills/motion-storytelling-design-system/spacing-system.md +83 -0
  118. package/skills/motion-storytelling-design-system/typography-system.md +89 -0
  119. package/skills/motion-storytelling-design-system/website-generation-rules.md +200 -0
  120. package/skills/nvidia-inception-idea-booster/README.md +43 -24
  121. package/skills/nvidia-inception-idea-booster/SKILL.md +260 -116
  122. package/skills/nvidia-inception-starter/README.md +6 -5
  123. package/skills/nvidia-inception-starter/SKILL.md +80 -43
  124. package/skills/nvidia-product-inventor/README.md +44 -40
  125. package/skills/nvidia-product-inventor/SKILL.md +265 -247
  126. package/skills/nvidia-startup-idea-founder/README.md +66 -26
  127. package/skills/nvidia-startup-idea-founder/SKILL.md +245 -189
  128. package/skills/product-demo-first-design-system/README.md +96 -0
  129. package/skills/product-demo-first-design-system/SKILL.md +185 -0
  130. package/skills/product-demo-first-design-system/accessibility-system.md +58 -0
  131. package/skills/product-demo-first-design-system/color-system.md +109 -0
  132. package/skills/product-demo-first-design-system/component-library.md +142 -0
  133. package/skills/product-demo-first-design-system/design-principles.md +66 -0
  134. package/skills/product-demo-first-design-system/example-page-structures.md +95 -0
  135. package/skills/product-demo-first-design-system/layout-system.md +76 -0
  136. package/skills/product-demo-first-design-system/motion-system.md +82 -0
  137. package/skills/product-demo-first-design-system/spacing-system.md +74 -0
  138. package/skills/product-demo-first-design-system/typography-system.md +87 -0
  139. package/skills/product-demo-first-design-system/website-generation-rules.md +194 -0
  140. package/skills/website-design-skills/01-proof/README.md +0 -47
  141. package/skills/website-design-skills/01-proof/SKILL.md +0 -303
  142. package/skills/website-design-skills/02-kajabi/README.md +0 -42
  143. package/skills/website-design-skills/02-kajabi/SKILL.md +0 -272
  144. package/skills/website-design-skills/03-lattice/README.md +0 -42
  145. package/skills/website-design-skills/03-lattice/SKILL.md +0 -271
  146. package/skills/website-design-skills/04-petal/README.md +0 -42
  147. package/skills/website-design-skills/04-petal/SKILL.md +0 -271
  148. package/skills/website-design-skills/05-dropbox-sign/README.md +0 -42
  149. package/skills/website-design-skills/05-dropbox-sign/SKILL.md +0 -271
  150. package/skills/website-design-skills/06-distributional/README.md +0 -42
  151. package/skills/website-design-skills/06-distributional/SKILL.md +0 -271
  152. package/skills/website-design-skills/07-appcues/README.md +0 -42
  153. package/skills/website-design-skills/07-appcues/SKILL.md +0 -271
  154. package/skills/website-design-skills/08-memberstack/README.md +0 -42
  155. package/skills/website-design-skills/08-memberstack/SKILL.md +0 -271
  156. package/skills/website-design-skills/09-flank/README.md +0 -42
  157. package/skills/website-design-skills/09-flank/SKILL.md +0 -275
  158. package/skills/website-design-skills/10-slidebean/README.md +0 -42
  159. package/skills/website-design-skills/10-slidebean/SKILL.md +0 -275
  160. package/skills/website-design-skills/11-formstack/README.md +0 -42
  161. package/skills/website-design-skills/11-formstack/SKILL.md +0 -275
  162. package/skills/website-design-skills/12-thalamus/README.md +0 -42
  163. package/skills/website-design-skills/12-thalamus/SKILL.md +0 -275
  164. package/skills/website-design-skills/13-grow/README.md +0 -42
  165. package/skills/website-design-skills/13-grow/SKILL.md +0 -275
  166. package/skills/website-design-skills/14-gemnote/README.md +0 -42
  167. package/skills/website-design-skills/14-gemnote/SKILL.md +0 -275
  168. package/skills/website-design-skills/15-draftbit/README.md +0 -42
  169. package/skills/website-design-skills/15-draftbit/SKILL.md +0 -275
  170. package/skills/website-design-skills/16-payman/README.md +0 -42
  171. package/skills/website-design-skills/16-payman/SKILL.md +0 -273
  172. package/skills/website-design-skills/17-effortel/README.md +0 -42
  173. package/skills/website-design-skills/17-effortel/SKILL.md +0 -272
  174. package/skills/website-design-skills/18-adopt/README.md +0 -42
  175. package/skills/website-design-skills/18-adopt/SKILL.md +0 -273
  176. package/skills/website-design-skills/19-kraftful/README.md +0 -42
  177. package/skills/website-design-skills/19-kraftful/SKILL.md +0 -273
  178. package/skills/website-design-skills/20-greenhouse/README.md +0 -42
  179. package/skills/website-design-skills/20-greenhouse/SKILL.md +0 -273
  180. package/skills/website-design-skills/21-weavy/README.md +0 -42
  181. package/skills/website-design-skills/21-weavy/SKILL.md +0 -273
  182. package/skills/website-design-skills/22-safetykit/README.md +0 -42
  183. package/skills/website-design-skills/22-safetykit/SKILL.md +0 -273
  184. package/skills/website-design-skills/23-modulify/README.md +0 -42
  185. package/skills/website-design-skills/23-modulify/SKILL.md +0 -270
  186. package/skills/website-design-skills/24-realm/README.md +0 -42
  187. package/skills/website-design-skills/24-realm/SKILL.md +0 -270
  188. package/skills/website-design-skills/25-modyfi/README.md +0 -42
  189. package/skills/website-design-skills/25-modyfi/SKILL.md +0 -269
  190. package/skills/website-design-skills/26-altitude/README.md +0 -42
  191. package/skills/website-design-skills/26-altitude/SKILL.md +0 -270
  192. package/skills/website-design-skills/27-way/README.md +0 -42
  193. package/skills/website-design-skills/27-way/SKILL.md +0 -270
  194. package/skills/website-design-skills/28-zentail/README.md +0 -42
  195. package/skills/website-design-skills/28-zentail/SKILL.md +0 -270
  196. package/skills/website-design-skills/29-zams/README.md +0 -42
  197. package/skills/website-design-skills/29-zams/SKILL.md +0 -270
  198. package/skills/website-design-skills/30-user-interviews/README.md +0 -44
  199. package/skills/website-design-skills/30-user-interviews/SKILL.md +0 -273
  200. package/skills/website-design-skills/31-bland/README.md +0 -44
  201. package/skills/website-design-skills/31-bland/SKILL.md +0 -273
  202. package/skills/website-design-skills/32-nauto/README.md +0 -44
  203. package/skills/website-design-skills/32-nauto/SKILL.md +0 -273
  204. package/skills/website-design-skills/33-bill/README.md +0 -44
  205. package/skills/website-design-skills/33-bill/SKILL.md +0 -273
  206. package/skills/website-design-skills/34-localyzer/README.md +0 -44
  207. package/skills/website-design-skills/34-localyzer/SKILL.md +0 -273
  208. package/skills/website-design-skills/35-jasper/README.md +0 -44
  209. package/skills/website-design-skills/35-jasper/SKILL.md +0 -273
  210. package/skills/website-design-skills/README.md +0 -108
@@ -0,0 +1,75 @@
1
+ # Design Principles — Enterprise Data Visualization
2
+
3
+ The philosophy distilled from data-led references (Stripe, Linear, Vercel/Analytics,
4
+ Datadog, Grafana, Retool, Mixpanel, Notion) and modern AI sites (OpenAI, Anthropic,
5
+ Perplexity, Cursor, Scale AI). The guiding standard: **clarity, honesty, and trust** — the
6
+ craft of good information design (Tufte) applied to a polished enterprise product site.
7
+
8
+ ## The one-sentence philosophy
9
+
10
+ **Let the data speak, honestly.** Build a calm, precise canvas where dashboards, charts,
11
+ KPIs, and tables are the heroes — maximizing data-ink, minimizing chart-junk, and never
12
+ distorting the numbers.
13
+
14
+ ## Core principles
15
+
16
+ 1. **Data is the hero.** Lead with real-looking dashboards, charts, KPI tiles, and metrics —
17
+ not abstract illustration. The product's value is its numbers; show them.
18
+ 2. **Clarity over decoration (data-ink).** Every pixel earns its place: thin gridlines,
19
+ direct labels, generous whitespace. Remove anything that isn't data or essential context.
20
+ 3. **Honesty is non-negotiable.** Axes start at a sensible baseline (usually 0 for bars);
21
+ never truncate/invert/cherry-pick scales to exaggerate; label units and time ranges; show
22
+ sample sizes where relevant. Misleading charts destroy enterprise trust.
23
+ 4. **A disciplined data palette.** Use a small **categorical** set for series (distinct,
24
+ color-blind-safe), **sequential** scales for magnitude, **diverging** scales for
25
+ above/below a midpoint, and **semantic deltas** for change — never color alone.
26
+ 5. **Tabular precision.** Numerals are tabular and right-aligned; units consistent; deltas
27
+ show direction + value (▲ +12.4%). Tables are crisp, scannable, sortable.
28
+ 6. **Restrained, neutral UI.** The interface is mostly neutral so the data's color pops.
29
+ One brand accent for actions/links; chart color is reserved for series, not chrome.
30
+ 7. **Choose the right chart for the message.** Trend → line/area; comparison → bar; part-to-
31
+ whole → stacked/donut (sparingly); distribution → histogram/box; relationship → scatter;
32
+ single value → KPI/sparkline. Don't force a pie where a bar is clearer.
33
+ 8. **Density with legibility.** Enterprise users want information density, but it must stay
34
+ readable — consistent spacing, alignment, and grouping make dense layouts calm.
35
+ 9. **Accessible data.** Every chart has a **data-table equivalent** + summary; encodings work
36
+ without color (labels, patterns, direct values); keyboard/screen-reader reachable.
37
+ 10. **Trust signals throughout.** Security, compliance, SLAs, real metrics, and customer
38
+ logos reinforce that this is enterprise-grade.
39
+
40
+ ## Visual-hierarchy laws
41
+
42
+ - **One H1 per page**; in a dashboard, the **primary KPI / chart** is the focal point.
43
+ - **KPI → trend → detail.** Lead a data section with headline KPIs, then the trend chart,
44
+ then supporting tables/breakdowns.
45
+ - **Contrast ladder:** primary metric brightest/biggest, labels muted, gridlines faint.
46
+ - **One primary CTA per viewport** (a clear button), distinct from data color.
47
+ - **Align everything.** Numbers right-aligned, labels left; a strict baseline grid makes
48
+ dense data read as orderly.
49
+ - **Accent ≠ data color.** Keep the brand accent out of the categorical series to avoid
50
+ confusion; reserve it for actions.
51
+
52
+ ## Chart-craft rules (data-ink in practice)
53
+
54
+ - No 3D, no drop shadows on data marks, no heavy gradient fills (a faint area fill is ok).
55
+ - Direct-label series (or a clear legend); avoid legends that force back-and-forth scanning.
56
+ - Gridlines are thin and few; remove chart borders; let whitespace frame the plot.
57
+ - Consistent axis scales when comparing charts side by side; annotate notable points.
58
+ - Format numbers humanely (1.2k, 3.4M, 12.4%), consistent decimals, with units.
59
+
60
+ ## Reference cues (what each does well)
61
+
62
+ - **Datadog / Grafana:** dense, legible dashboards; clear time-series; status colors.
63
+ - **Stripe:** beautiful, honest charts; refined tables; trust + clarity.
64
+ - **Linear / Vercel Analytics:** minimal precise metrics, tasteful sparklines, fast feel.
65
+ - **Mixpanel / Retool:** funnels, breakdowns, builder/dashboard density done cleanly.
66
+
67
+ ## Do / Don't
68
+
69
+ **Do:** lead with real dashboards/KPIs/charts · maximize data-ink · honest axes · categorical/
70
+ sequential/diverging scales used correctly · tabular numerals · crisp tables · neutral UI +
71
+ data color · data-table for every chart · color-blind-safe encodings.
72
+
73
+ **Don't:** chart-junk (3D/shadows/gradients on data) · misleading axes · rainbow scales for
74
+ ordered data · color-only encoding · pie charts for many categories · illegible dense tables ·
75
+ brand accent inside the series · borders between sections · charting libraries.
@@ -0,0 +1,89 @@
1
+ # Example Page Structures — Enterprise Data Visualization
2
+
3
+ Ready-to-assemble, **data-led** page blueprints. Each section names a layout (see
4
+ `layout-system.md`) and components (see `component-library.md`). Lead with dashboards, KPIs, and
5
+ charts; keep the UI neutral so data pops; **every chart has a data-table equivalent**. No
6
+ borders between sections (separate by whitespace + surface elevation + background tone).
7
+
8
+ Legend: `DH-* / KR / CG / TB / FN / BN / F-* / P-* / C-* / Q-* / FT-*` layouts · components by name.
9
+
10
+ ## MANDATORY: 15+ page site map (≈20), 10+ sections/page, clean URLs
11
+
12
+ Always ship a **full multipage website with 15+ pages (≈20)** — never a single landing page.
13
+ Every page carries **at least 10 sections (≈12)**, **no borders/dividers between sections**, pure
14
+ HTML/CSS/vanilla JS (**charts = inline SVG/Canvas, no library**), **extensionless URLs**. Required
15
+ 20-page map:
16
+
17
+ ```
18
+ / Home /customers Customers
19
+ /platform Platform /case-studies Case Studies
20
+ /solutions Solutions /developers Developers
21
+ /products Products /docs Documentation ← + DOC-A subpages
22
+ /features Features /about About
23
+ /ai-agents AI Agents /careers Careers
24
+ /enterprise Enterprise /blog Blog ← + article pages
25
+ /security Security /contact Contact
26
+ /pricing Pricing /partners Partners
27
+ /resources Resources /faq FAQ
28
+ ```
29
+
30
+ Each blueprint below is a **10-section** skeleton — extend toward 12, never fewer than 10. Every
31
+ page must include: **Hero (dashboard/metric) · Feature Sections · Product Highlights · Trust
32
+ Signals · Testimonials · Use Cases · Statistics (KPI row) · Integrations · CTA · Footer.**
33
+
34
+ ---
35
+
36
+ ## 1. Home (default)
37
+ 1. **Navbar** — extensionless links
38
+ 2. **Hero** `DH-A` — copy + CTAs + **Dashboard Preview** (KPI row + primary chart + mini table)
39
+ 3. **Logos Section** — trusted-by row
40
+ 4. **KPI row** `KR` — 4 headline platform metrics (value, delta, sparkline)
41
+ 5. **Chart grid** `CG` — primary trend (`.span-8`) + breakdown (`.span-4`)
42
+ 6. **Feature** `F-C` — feature copy + a live mini chart
43
+ 7. **Table / breakdown** `TB` — a sortable data table (segments, with inline bars)
44
+ 8. **Testimonials** — quote + a customer result KPI/chart
45
+ 9. **Pricing** `P-A` (or teaser) — usage/seat tiers
46
+ 10. **CTA** `C-A` + **Footer** `FT-A`
47
+
48
+ ## 2. Platform / Product
49
+ 1. Navbar · 2. **Hero** `DH-A` (Dashboard Preview) · 3. **KPI row** · 4. **Chart grid** (trend +
50
+ funnel `FN`) · 5. Feature `F-B` (copy↔chart) · 6. **Dashboard Preview** (APP shell, range picker)
51
+ · 7. Table section · 8. Integrations · 9. Statistics/trust · 10. CTA + Footer
52
+
53
+ ## 3. Features / Analytics
54
+ 1. Navbar · 2. **Hero** `DH-C` (single big chart) · 3.–8. feature sections each pairing copy with
55
+ the relevant chart type (trend/line, comparison/bar, distribution/histogram, funnel, scatter,
56
+ heatmap) + a data table · 9. Integrations · 10. CTA + Footer
57
+
58
+ ## 4. Developers / Documentation
59
+ - **Developers:** Navbar · **Hero** with **Code Preview** (analytics SDK/query) + the chart it
60
+ produces · Logos · Code Preview (tabbed) · KPI row (API metrics) · Use Cases · Statistics · CTA
61
+ ("Read docs"/"Get API key") · Footer (≥10).
62
+ - **Docs:** `DOC-A` three-pane; inline charts + data tables; mono code; breadcrumb; sticky nav.
63
+
64
+ ## 5. Enterprise / Security
65
+ 1. Navbar · 2. Hero (outcome-led + SLA chart) · 3. Logos · 4. Feature `F-B` · 5. **Enterprise**
66
+ (SSO/RBAC/SLAs/VPC + usage chart) · 6. **Security** (compliance badges) · 7. **KPI row** (uptime/
67
+ p99/events) · 8. Testimonials (exec) · 9. CTA (contact) · 10. Footer
68
+
69
+ ## 6. Pricing
70
+ 1. Navbar · 2. Hero (short + plan/usage toggle) · 3. **Pricing** `P-A/P-B` (tiers, usage chart) ·
71
+ 4. Feature/usage comparison table · 5. Enterprise band · 6. Logos · 7. **KPI row** (value metrics)
72
+ · 8. Testimonials · 9. **FAQ** `Q-A` · 10. CTA + Footer (keep pricing tables crisp + honest)
73
+
74
+ ## 7. Content pages (About, Customers, Case Studies, Careers, Blog, Partners, Resources, Contact, FAQ)
75
+ Reach **≥10 sections** with data where it helps: Hero → body sections (customer logo grid,
76
+ **case-study with before/after KPIs + a chart**, values, open roles, article list, partner tiers,
77
+ resource cards, contact form) → Trust Signals → **KPI row** → Testimonials → Integrations → CTA →
78
+ Footer. Case studies especially lead with **result metrics + a chart**.
79
+
80
+ ---
81
+
82
+ ## Assembly notes
83
+ - **Scale is mandatory:** 15+ pages, **≥10 sections each**. Never a single/thin page.
84
+ - **Lead with data** (KPI → trend → detail); choose the right chart for each message; keep axes
85
+ honest; maximize data-ink; **every chart has a data-table equivalent**.
86
+ - **Neutral UI, colorful data;** tabular numerals; crisp tables; brand accent for actions only.
87
+ - **No borders/dividers between sections** — whitespace + surface elevation + background tone.
88
+ Gridlines/edges/row rules live inside components.
89
+ - Use **real, plausible data** (not lorem numbers); mark guesses `[PLACEHOLDER]`.
@@ -0,0 +1,75 @@
1
+ # Layout & Grid System — Enterprise Data Visualization
2
+
3
+ A 12-column fluid grid + canonical **dashboard** and **marketing** layouts. Data sections use
4
+ a compact dashboard grid (KPI rows, chart grids); marketing sections use airier layouts.
5
+ **No borders between sections.**
6
+
7
+ ## Grid
8
+
9
+ ```css
10
+ :root { --grid-cols: 12; --grid-gap: var(--dash-gap); }
11
+
12
+ .grid { display: grid; gap: var(--grid-gap);
13
+ grid-template-columns: repeat(var(--grid-cols), 1fr); }
14
+ .cols-2 { grid-template-columns: repeat(2, 1fr); }
15
+ .cols-3 { grid-template-columns: repeat(3, 1fr); }
16
+ .cols-4 { grid-template-columns: repeat(4, 1fr); }
17
+ .cols-6 { grid-template-columns: repeat(6, 1fr); }
18
+ .split { grid-template-columns: 1fr 1.2fr; }
19
+
20
+ /* Dashboard span helpers (on a 12-col grid) */
21
+ .span-3{grid-column:span 3} .span-4{grid-column:span 4} .span-6{grid-column:span 6}
22
+ .span-8{grid-column:span 8} .span-12{grid-column:span 12}
23
+ @media (max-width:1024px){ .span-3,.span-4{grid-column:span 6} .span-8{grid-column:span 12} }
24
+ @media (max-width:680px){ [class*="span-"]{grid-column:1 / -1} .cols-2,.cols-3,.cols-4,.cols-6{grid-template-columns:1fr} }
25
+ ```
26
+
27
+ Breakpoints: `sm 480` · `md 768` · `lg 1024` · `xl 1280` · `2xl 1440`. Mobile-first;
28
+ dashboards reflow many columns → fewer → single; tables scroll or stack.
29
+
30
+ ## Canonical layouts
31
+
32
+ ### Hero
33
+ - **DH-A Dashboard hero (default):** copy + CTAs on one side, a **Dashboard Preview** (KPI row
34
+ + a chart + a mini table) on the other (or full-width below). Lead with real-looking data.
35
+ - **DH-B Metric hero:** a giant headline **KPI** (`--fs-kpi-lg`) + sparkline + supporting
36
+ stats — the "by the numbers" opener.
37
+ - **DH-C Split:** copy left, a single large primary chart right.
38
+
39
+ ### Data sections
40
+ - **KR KPI row:** `.grid.cols-4` (→2→1) of **KPI tiles** (value, label, delta, sparkline).
41
+ - **CG Chart grid:** mixed-span chart cards (`.span-8` primary trend + `.span-4` breakdown;
42
+ `.span-6` × 2). One primary chart anchors; supporting charts around it.
43
+ - **TB Table section:** a full **data table** (sortable, sticky header) with filters above.
44
+ - **FN Funnel / breakdown:** a funnel or stacked-bar breakdown + a segments table.
45
+ - **BN Bento of data:** a bento mixing a chart tile, KPI tiles, and a small table.
46
+
47
+ ### Feature / marketing
48
+ - **F-A 3-up feature cards** · **F-B alternating copy↔chart** · **F-C feature + live chart**.
49
+
50
+ ### Pricing / CTA / FAQ / Footer
51
+ - **P-A 3-tier** (middle highlighted) + usage/seat note; **P-B 2-tier + enterprise**. Tiers may
52
+ show a small usage chart. **C-A CTA band** (distinct from data color). **Q-A Accordion FAQ.**
53
+ **FT-A Mega footer.**
54
+
55
+ ### Dashboard app / Docs
56
+ - **APP Dashboard shell:** left sidebar (nav/filters) + top bar (range picker, search) + a
57
+ responsive dashboard grid — the in-product layout shown in previews.
58
+ - **DOC-A Three-pane docs:** nav · prose (`--container-md`) · TOC; inline charts/tables; mono
59
+ code blocks; breadcrumb.
60
+
61
+ ## Composition rules
62
+
63
+ 1. **Separate sections by surface/tone + space, NEVER borders.** Alternate `--bg-900`/`--bg-800`
64
+ (add `.section--alt`); `.section{border:0}`; no `<hr>`. Chart gridlines/table rules/card
65
+ edges are *inside* components, not section dividers.
66
+ 2. **Lead data sections with KPIs**, then the trend chart, then tables/breakdowns (KPI → trend
67
+ → detail). One primary chart per data section.
68
+ 3. **Right chart for the message** (see design-principles): trend→line/area, comparison→bar,
69
+ composition→stacked/donut, distribution→histogram, relationship→scatter, single→KPI/spark.
70
+ 4. **Align to the grid.** Dashboard cards snap to the 12-col grid; numbers right-aligned.
71
+ 5. **At least 10 sections per page**, **15+ pages.** Never thin.
72
+ 6. **Rhythm:** dashboard hero → logos/trust → KPI row → chart grid → feature (copy↔chart) →
73
+ table/breakdown → metrics/trust → pricing → FAQ → CTA → footer.
74
+ 7. **Reflow:** dashboard grids collapse columns; tables get a horizontal scroll container or
75
+ stack into key/value cards on mobile; charts stay legible (fewer ticks) at small sizes.
@@ -0,0 +1,86 @@
1
+ # Motion System — Enterprise Data Visualization
2
+
3
+ Motion here is **functional and restrained** — it clarifies data (a chart draws in, a value
4
+ transitions, a tooltip appears), never decorates. Precision and calm signal trustworthiness.
5
+ Everything degrades under `prefers-reduced-motion`, and **no motion is required to read data**.
6
+
7
+ Distilled from Stripe/Linear/Vercel (crisp micro-interactions), Datadog/Grafana (clear
8
+ tooltips/transitions), and OpenAI/Anthropic/Perplexity/Cursor (restraint).
9
+
10
+ ## Tokens
11
+
12
+ ```css
13
+ :root {
14
+ --dur-fast: 120ms; --dur-base: 220ms; --dur-slow: 420ms; --dur-chart: 700ms;
15
+ --ease-out: cubic-bezier(0.2, 1, 0.3, 1);
16
+ --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
17
+ }
18
+ ```
19
+
20
+ ## Principles
21
+ 1. **Motion clarifies, never decorates.** Animate to show change (a trend draw-in, a value
22
+ ticking to its number, a series toggling) — not for flourish.
23
+ 2. **Short + eased** for UI (120–420ms); chart draw-ins up to ~700ms, once on reveal.
24
+ 3. **Compositor-friendly + cheap.** Animate `transform`/`opacity`/`stroke-dashoffset`/
25
+ `clip-path`; avoid layout thrash. rAF-throttle scroll; `IntersectionObserver` for reveals.
26
+ 4. **One animation per data section** at a glance — don't animate every chart simultaneously.
27
+ 5. **Final state is the truth.** With motion off, charts/values render fully and correctly.
28
+
29
+ ## Patterns
30
+
31
+ - **Chart draw-in (on reveal):** line/area draws via `stroke-dashoffset` 1→0; bars grow from
32
+ baseline (`transform: scaleY` from 0, origin bottom); donut sweeps. `--dur-chart`, once.
33
+ - **Value count-up:** KPI numbers count from a sensible start to the final value on reveal —
34
+ **final value is in the DOM** so it's correct without JS/motion.
35
+ - **Tooltip / crosshair:** on hover **and keyboard focus** of a data point, show a tooltip
36
+ (value + label) and a crosshair; fade `--dur-fast`. Tooltips are also reachable by keyboard.
37
+ - **Series toggle:** clicking a legend item fades a series in/out (`opacity`) and rescales
38
+ smoothly; `aria-pressed` reflects state.
39
+ - **Table sort:** on sort, rows reorder with a brief fade/translate (`--dur-base`); never
40
+ obscure the data; reduced motion → instant reorder.
41
+ - **Reveal:** sections/cards fade-rise on enter (IO), gentle stagger; calm.
42
+ - **Hover:** card lift (subtle shadow), button bg shift, row hover background.
43
+ - **Range change:** when the date range/filter changes, charts/KPIs transition values smoothly
44
+ (interpolate) rather than snapping — but keep it quick (`--dur-base`).
45
+ - **Nav on scroll:** subtle background/shadow after ~24px.
46
+
47
+ ## Reduced motion (required)
48
+
49
+ ```css
50
+ @media (prefers-reduced-motion: reduce) {
51
+ *, *::before, *::after { animation-duration:.001ms !important;
52
+ animation-iteration-count:1 !important; transition-duration:.001ms !important;
53
+ scroll-behavior:auto !important; }
54
+ }
55
+ ```
56
+ Under reduced motion: charts render in **final drawn state** (full paths/bars), KPI numbers at
57
+ **final value** (no count-up), table sort is instant, no draw-in/parallax. All data is fully
58
+ legible immediately.
59
+
60
+ ## Minimal vanilla helpers
61
+
62
+ ```js
63
+ const RM = matchMedia('(prefers-reduced-motion: reduce)').matches;
64
+ // chart draw-in on reveal (SVG path with stroke-dasharray set to its length)
65
+ const io = new IntersectionObserver((es)=>es.forEach(e=>{ if(e.isIntersecting){
66
+ const el=e.target;
67
+ if(!RM) el.classList.add('draw'); // CSS animates stroke-dashoffset → 0
68
+ else el.classList.add('drawn'); // final state instantly
69
+ io.unobserve(el);
70
+ }}, {threshold:.3});
71
+ document.querySelectorAll('[data-chart]').forEach(el=>io.observe(el));
72
+
73
+ // count-up (final value always present in textContent as data-final)
74
+ function countUp(el){ const end=+el.dataset.final; if(RM){ el.textContent=el.dataset.display; return; }
75
+ const t0=performance.now(), d=700;
76
+ (function f(t){ const p=Math.min(1,(t-t0)/d); el.textContent=fmt(end*p); if(p<1)requestAnimationFrame(f); else el.textContent=el.dataset.display; })(performance.now());
77
+ }
78
+ ```
79
+ ```css
80
+ [data-chart] path.series{ stroke-dasharray: var(--len); stroke-dashoffset: var(--len); }
81
+ [data-chart].draw path.series{ transition: stroke-dashoffset var(--dur-chart) var(--ease-out); stroke-dashoffset:0; }
82
+ [data-chart].drawn path.series{ stroke-dashoffset:0; }
83
+ [data-reveal]{ opacity:0; transform: translateY(14px);
84
+ transition: opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out); }
85
+ [data-reveal].in{ opacity:1; transform:none; }
86
+ ```
@@ -0,0 +1,85 @@
1
+ # Spacing System — Enterprise Data Visualization
2
+
3
+ A strict **4-point base / 8-point rhythm** tuned for **two densities**: spacious **marketing**
4
+ sections and compact **dashboard/product** UI. Whitespace, surface elevation, and tone
5
+ separate content — never borders.
6
+
7
+ ## Scale tokens
8
+
9
+ ```css
10
+ :root {
11
+ /* 4-pt base, 8-pt rhythm */
12
+ --space-0: 0; --space-1: 4px; --space-2: 8px; --space-3: 12px;
13
+ --space-4: 16px; --space-5: 20px; --space-6: 24px; --space-8: 32px;
14
+ --space-10: 40px; --space-12: 48px; --space-16: 64px; --space-20: 80px;
15
+ --space-24: 96px; --space-28: 112px;--space-32: 128px;--space-40: 160px;
16
+
17
+ /* Radii — crisp, enterprise (smaller than playful systems) */
18
+ --radius-sm: 6px; --radius-md: 8px; --radius-lg: 12px;
19
+ --radius-xl: 16px; --radius-pill: 999px;
20
+
21
+ /* Containers */
22
+ --container-sm: 680px; --container-md: 840px; --container-lg: 1080px;
23
+ --container-xl: 1240px; --container-2xl: 1440px; /* wide dashboards */
24
+ --gutter: clamp(20px, 4vw, 40px);
25
+
26
+ /* Section rhythm (marketing) */
27
+ --section-y: clamp(64px, 8vw, 120px);
28
+ --section-y-lg: clamp(88px, 10vw, 160px);
29
+
30
+ /* Dashboard density (compact) */
31
+ --dash-gap: clamp(12px, 1.2vw, 20px); /* gap between dashboard cards/tiles */
32
+ --card-pad: clamp(16px, 1.6vw, 24px); /* padding inside a data card */
33
+ --cell-pad-y: 10px; --cell-pad-x: 12px; /* table cell padding (compact) */
34
+ --kpi-pad: var(--space-5);
35
+ --stack: clamp(12px, 1.4vw, 20px);
36
+ }
37
+ ```
38
+
39
+ ## Two densities
40
+
41
+ - **Marketing density** (hero, features, pricing, CTA): generous — `--section-y` padding,
42
+ larger type, more whitespace. Sells the product.
43
+ - **Dashboard density** (dashboard previews, KPI rows, chart grids, tables): compact —
44
+ `--dash-gap` between tiles, `--card-pad` inside cards, tight `--cell-pad-*` in tables.
45
+ Information-rich but aligned and calm.
46
+
47
+ Use the right density per context; don't make a dashboard preview as airy as a hero, and
48
+ don't cram marketing copy as tightly as a table.
49
+
50
+ ## Usage map
51
+
52
+ - **4-pt** (`--space-1..6`): inside components — KPI label↔value, icon↔text, chart padding,
53
+ table cell padding, badge/button padding.
54
+ - **8-pt** (`--space-8..16`): between components — card gaps (`--dash-gap`), KPI rows, form rows.
55
+ - **Container widths:** marketing `--container-lg/xl`; **wide dashboards** `--container-2xl`;
56
+ prose/docs `--container-md`.
57
+ - **Section spacing:** marketing sections `--section-y` (hero/CTA `--section-y-lg`); a
58
+ dashboard *section* still gets `--section-y`, but the dashboard *grid inside* uses `--dash-gap`.
59
+ - **Grid gaps:** `--dash-gap` for dashboard/chart grids; `--space-6/8` for marketing grids.
60
+ - **Page spacing:** sections stack with no extra margins and **no borders/dividers** —
61
+ `--section-y` + surface elevation + tone separate them.
62
+
63
+ ## Rules
64
+
65
+ 1. **Only use scale values.** No arbitrary `13px`/`27px` (except the deliberate cell-pad/density tokens).
66
+ 2. **Align to a baseline.** Consistent paddings + alignment make dense data read as orderly.
67
+ 3. **Consistent card radius/padding** across all data cards so a dashboard reads as one system.
68
+ 4. **Tables breathe just enough:** `--cell-pad` compact but tappable; row height ≥ 36px;
69
+ zebra/hover via background, not borders between rows where avoidable.
70
+ 5. **Whitespace + elevation > dividers.** Separate sections this way, never lines.
71
+
72
+ ## Helpers
73
+
74
+ ```css
75
+ .container { width:100%; max-width: var(--container-xl);
76
+ margin-inline:auto; padding-inline: var(--gutter); }
77
+ .container--wide { max-width: var(--container-2xl); }
78
+ .section { padding-block: var(--section-y); border: 0; } /* never a section border */
79
+ .section--lg { padding-block: var(--section-y-lg); }
80
+ .section--alt { background: var(--bg-800); } /* alternate tone, not a line */
81
+ .dash { display:grid; gap: var(--dash-gap); }
82
+ .card { background: var(--surface-1); border:1px solid var(--border-default);
83
+ border-radius: var(--radius-lg); padding: var(--card-pad); }
84
+ .stack > * + * { margin-top: var(--stack); }
85
+ ```
@@ -0,0 +1,100 @@
1
+ # Typography System — Enterprise Data Visualization
2
+
3
+ Clean, neutral, highly legible type built for **numbers and density**: a precise sans with a
4
+ true **tabular-numeral** mode for all metrics, tables, and axes, plus mono for code/IDs.
5
+ Restrained and functional — type supports the data, it doesn't perform. Fluid scale.
6
+
7
+ ## Fonts
8
+
9
+ ```css
10
+ :root {
11
+ --font-sans: "Inter", "Geist", "IBM Plex Sans", -apple-system, BlinkMacSystemFont,
12
+ "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
13
+ --font-display: var(--font-sans);
14
+ /* Numeric/mono — for metrics, tables, axes, IDs, code */
15
+ --font-num: "Geist Mono", "IBM Plex Mono", "JetBrains Mono", ui-monospace, Menlo, monospace;
16
+ --font-mono: var(--font-num);
17
+ }
18
+ ```
19
+ Notes:
20
+ - Inter/Geist/IBM Plex have excellent **tabular figures** — use `font-variant-numeric:
21
+ tabular-nums` for all metrics, deltas, table cells, and axis ticks so digits align.
22
+ - A mono (`--font-num`) is great for large KPI numbers, IDs, timestamps, and code/terminal.
23
+
24
+ ## Fluid type scale (clamp)
25
+
26
+ ```css
27
+ :root {
28
+ --fs-display: clamp(2.25rem, 1.5rem + 3.4vw, 3.75rem); /* 36 → 60px hero */
29
+ --fs-h1: clamp(2rem, 1.5rem + 2.4vw, 3rem); /* 32 → 48px */
30
+ --fs-h2: clamp(1.5rem, 1.2rem + 1.6vw, 2.25rem); /* 24 → 36px section */
31
+ --fs-h3: clamp(1.25rem, 1.1rem + 0.8vw, 1.625rem); /* 20 → 26px panel title */
32
+ --fs-h4: clamp(1.0625rem, 1rem + 0.4vw, 1.25rem); /* 17 → 20px */
33
+ --fs-lead: clamp(1.0625rem, 1rem + 0.5vw, 1.3125rem);/* 17 → 21px */
34
+ --fs-body: 0.9375rem; /* 15px base (dense, enterprise) */
35
+ --fs-body-lg: 1.0625rem; /* 17px marketing body */
36
+ --fs-small: 0.8125rem; /* 13px caption / table / axis */
37
+ --fs-micro: 0.6875rem; /* 11px chart tick / dense label */
38
+
39
+ /* KPI numbers */
40
+ --fs-kpi: clamp(1.75rem, 1.3rem + 1.8vw, 2.75rem); /* 28 → 44px headline metric */
41
+ --fs-kpi-lg: clamp(2.5rem, 1.8rem + 2.6vw, 3.75rem); /* 40 → 60px hero metric */
42
+ }
43
+ ```
44
+
45
+ ## Roles (each: family · size · weight · line-height · tracking)
46
+
47
+ | Role | Family | Size | Weight | LH | Tracking |
48
+ |---|---|---|---|---|---|
49
+ | **Display** (hero) | sans | `--fs-display` | 600–700 | 1.06 | -0.02em |
50
+ | **H1** | sans | `--fs-h1` | 600–700 | 1.08 | -0.02em |
51
+ | **H2** (section) | sans | `--fs-h2` | 600 | 1.15 | -0.015em |
52
+ | **H3** (panel title) | sans | `--fs-h3` | 600 | 1.25 | -0.01em |
53
+ | **Eyebrow / label** | sans | `--fs-micro` | 600 | 1.2 | 0.08em, UPPERCASE |
54
+ | **Lead / deck** | sans | `--fs-lead` | 400 | 1.5 | 0 |
55
+ | **Body** | sans | `--fs-body`/`-lg` | 400 | 1.6 | 0 |
56
+ | **KPI number** | num | `--fs-kpi`/`-lg` | 600–700 | 1 | -0.01em · tabular-nums |
57
+ | **KPI label** | sans | `--fs-small` | 500 | 1.3 | 0.02em |
58
+ | **Delta** | num | `--fs-small` | 600 | 1 | 0 · tabular-nums (▲/▼ + value) |
59
+ | **Table header** | sans | `--fs-small` | 600 | 1.3 | 0.02em, UPPERCASE optional |
60
+ | **Table cell (number)** | num | `--fs-small` | 400–500 | 1.4 | 0 · tabular-nums, right-aligned |
61
+ | **Table cell (text)** | sans | `--fs-small` | 400 | 1.4 | 0 |
62
+ | **Axis tick / legend** | num/sans | `--fs-micro` | 400–500 | 1.2 | 0 · tabular-nums |
63
+ | **Button** | sans | `--fs-body` | 600 | 1 | 0 |
64
+ | **Navigation** | sans | `--fs-small`/`--fs-body` | 500 | 1 | 0 |
65
+ | **Pricing amount** | num | `clamp(2.25rem,1.8rem+2vw,3.25rem)` | 700 | 1 | -0.02em · tabular-nums |
66
+ | **Code / ID / timestamp** | num | `--fs-small` | 400–500 | 1.5 | 0 |
67
+
68
+ ## Rules (numbers-first)
69
+
70
+ 1. **Tabular numerals everywhere data appears** — metrics, deltas, tables, axes, pricing:
71
+ `font-variant-numeric: tabular-nums`. Digits must align in columns and not shift on update.
72
+ 2. **Right-align numeric table columns; left-align text.** Headers match their column.
73
+ 3. **Format humanely & consistently:** 1.2k / 3.4M / 12.4% / $4,210; fixed decimals per
74
+ column; units in the header or beside the KPI (not repeated per cell when avoidable).
75
+ 4. **Deltas: direction + sign + color + arrow** (▲ +12.4% in `--good`; ▼ −3.1% in `--bad`).
76
+ 5. **Dense but legible:** body 15px in product/dashboard contexts, 17px for marketing prose;
77
+ table line-height ~1.4; never below ~13px for data you expect users to read.
78
+ 6. **Restraint:** sans only (no decorative faces); weight + size + tabular alignment carry
79
+ hierarchy. Mono for big KPI numbers/IDs/code adds the "instrument" feel.
80
+ 7. **Measure** marketing prose ≤ 68ch; data labels are short and direct.
81
+
82
+ ## Base CSS
83
+
84
+ ```css
85
+ body { font-family: var(--font-sans); font-size: var(--fs-body); line-height: 1.6;
86
+ color: var(--text-secondary); -webkit-font-smoothing: antialiased;
87
+ text-rendering: optimizeLegibility; }
88
+ h1,h2,h3 { color: var(--text-primary); font-family: var(--font-display); font-weight: 600;
89
+ text-wrap: balance; letter-spacing: -0.015em; }
90
+ h1 { font-size: var(--fs-h1); line-height: 1.08; }
91
+ .eyebrow { font-size: var(--fs-micro); font-weight:600; letter-spacing:.08em;
92
+ text-transform:uppercase; color: var(--text-muted); }
93
+ .num, .kpi__value, .delta, td.num, th.num, .axis, .legend, .price__amount {
94
+ font-family: var(--font-num); font-variant-numeric: tabular-nums; }
95
+ td.num, th.num { text-align: right; }
96
+ .delta--up { color: var(--good); } .delta--down { color: var(--bad); }
97
+ .delta--flat { color: var(--neutral); }
98
+ a { color: var(--accent); text-underline-offset: 2px; }
99
+ p { max-width: 68ch; }
100
+ ```