@jaimevalasek/aioson 1.30.1 → 1.30.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 (90) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/docs/design-previews/cognitive-core-ui-auth.html +95 -0
  3. package/docs/design-previews/cognitive-core-ui-kanban.html +231 -0
  4. package/docs/design-previews/cognitive-core-ui-list-detail.html +174 -0
  5. package/docs/design-previews/cognitive-core-ui-preview.css +1315 -0
  6. package/docs/design-previews/cognitive-core-ui-settings.html +142 -0
  7. package/docs/design-previews/cognitive-core-ui-website.html +190 -1009
  8. package/docs/design-previews/cognitive-core-ui.html +281 -463
  9. package/docs/design-previews/index.html +83 -31
  10. package/package.json +1 -1
  11. package/src/constants.js +567 -511
  12. package/template/.aioson/docs/play/README.md +2 -0
  13. package/template/.aioson/docs/play/agent-usage-guide.md +7 -1
  14. package/template/.aioson/docs/play/app-compatibility-guide.md +6 -1
  15. package/template/.aioson/docs/play/auth-services-and-testing.md +16 -1
  16. package/template/.aioson/docs/play/manifest-and-runtime.md +23 -0
  17. package/template/.aioson/skills/design/aurora-command-ui/SKILL.md +266 -243
  18. package/template/.aioson/skills/design/aurora-command-ui/references/art-direction.md +293 -293
  19. package/template/.aioson/skills/design/aurora-command-ui/references/components.md +827 -827
  20. package/template/.aioson/skills/design/aurora-command-ui/references/dashboards.md +250 -250
  21. package/template/.aioson/skills/design/aurora-command-ui/references/design-tokens.md +585 -585
  22. package/template/.aioson/skills/design/aurora-command-ui/references/motion.md +365 -365
  23. package/template/.aioson/skills/design/aurora-command-ui/references/patterns.md +485 -482
  24. package/template/.aioson/skills/design/aurora-command-ui/references/websites.md +386 -387
  25. package/template/.aioson/skills/design/bold-editorial-ui/SKILL.md +228 -205
  26. package/template/.aioson/skills/design/bold-editorial-ui/references/art-direction.md +338 -338
  27. package/template/.aioson/skills/design/bold-editorial-ui/references/components.md +977 -977
  28. package/template/.aioson/skills/design/bold-editorial-ui/references/dashboards.md +218 -218
  29. package/template/.aioson/skills/design/bold-editorial-ui/references/design-tokens.md +326 -326
  30. package/template/.aioson/skills/design/bold-editorial-ui/references/motion.md +461 -461
  31. package/template/.aioson/skills/design/bold-editorial-ui/references/patterns.md +293 -293
  32. package/template/.aioson/skills/design/bold-editorial-ui/references/websites.md +352 -352
  33. package/template/.aioson/skills/design/clean-saas-ui/SKILL.md +233 -210
  34. package/template/.aioson/skills/design/clean-saas-ui/references/art-direction.md +319 -319
  35. package/template/.aioson/skills/design/clean-saas-ui/references/components.md +365 -365
  36. package/template/.aioson/skills/design/clean-saas-ui/references/dashboards.md +196 -196
  37. package/template/.aioson/skills/design/clean-saas-ui/references/design-tokens.md +244 -244
  38. package/template/.aioson/skills/design/clean-saas-ui/references/motion.md +235 -235
  39. package/template/.aioson/skills/design/clean-saas-ui/references/patterns.md +215 -215
  40. package/template/.aioson/skills/design/clean-saas-ui/references/websites.md +295 -295
  41. package/template/.aioson/skills/design/cognitive-core-ui/SKILL.md +239 -203
  42. package/template/.aioson/skills/design/cognitive-core-ui/references/art-direction.md +339 -339
  43. package/template/.aioson/skills/design/cognitive-core-ui/references/components.md +417 -407
  44. package/template/.aioson/skills/design/cognitive-core-ui/references/dashboards.md +289 -272
  45. package/template/.aioson/skills/design/cognitive-core-ui/references/design-tokens.md +525 -524
  46. package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +279 -279
  47. package/template/.aioson/skills/design/cognitive-core-ui/references/patterns.md +355 -289
  48. package/template/.aioson/skills/design/cognitive-core-ui/references/websites.md +443 -437
  49. package/template/.aioson/skills/design/glassmorphism-ui/SKILL.md +245 -222
  50. package/template/.aioson/skills/design/glassmorphism-ui/references/art-direction.md +159 -159
  51. package/template/.aioson/skills/design/glassmorphism-ui/references/components.md +498 -498
  52. package/template/.aioson/skills/design/glassmorphism-ui/references/dashboards.md +236 -236
  53. package/template/.aioson/skills/design/glassmorphism-ui/references/design-tokens.md +274 -274
  54. package/template/.aioson/skills/design/glassmorphism-ui/references/motion.md +355 -355
  55. package/template/.aioson/skills/design/glassmorphism-ui/references/patterns.md +198 -198
  56. package/template/.aioson/skills/design/glassmorphism-ui/references/websites.md +307 -307
  57. package/template/.aioson/skills/design/interface-design/SKILL.md +68 -47
  58. package/template/.aioson/skills/design/interface-design/references/components-and-states.md +105 -105
  59. package/template/.aioson/skills/design/interface-design/references/design-directions.md +101 -101
  60. package/template/.aioson/skills/design/interface-design/references/handoff-and-quality.md +92 -71
  61. package/template/.aioson/skills/design/interface-design/references/intent-and-domain.md +74 -74
  62. package/template/.aioson/skills/design/interface-design/references/tokens-and-depth.md +173 -173
  63. package/template/.aioson/skills/design/neo-brutalist-ui/SKILL.md +236 -213
  64. package/template/.aioson/skills/design/neo-brutalist-ui/references/art-direction.md +228 -228
  65. package/template/.aioson/skills/design/neo-brutalist-ui/references/components.md +855 -855
  66. package/template/.aioson/skills/design/neo-brutalist-ui/references/dashboards.md +334 -334
  67. package/template/.aioson/skills/design/neo-brutalist-ui/references/design-tokens.md +342 -342
  68. package/template/.aioson/skills/design/neo-brutalist-ui/references/motion.md +286 -286
  69. package/template/.aioson/skills/design/neo-brutalist-ui/references/patterns.md +458 -458
  70. package/template/.aioson/skills/design/neo-brutalist-ui/references/websites.md +723 -723
  71. package/template/.aioson/skills/design/premium-command-center-ui/SKILL.md +83 -62
  72. package/template/.aioson/skills/design/premium-command-center-ui/references/operations.md +74 -74
  73. package/template/.aioson/skills/design/premium-command-center-ui/references/patterns.md +116 -116
  74. package/template/.aioson/skills/design/premium-command-center-ui/references/validation.md +47 -47
  75. package/template/.aioson/skills/design/premium-command-center-ui/references/visual-system.md +215 -215
  76. package/template/.aioson/skills/design/pt.squarespace.com/.skill-meta.json +31 -31
  77. package/template/.aioson/skills/design/pt.squarespace.com/SKILL.md +94 -66
  78. package/template/.aioson/skills/design/pt.squarespace.com/references/components.md +366 -366
  79. package/template/.aioson/skills/design/pt.squarespace.com/references/design-tokens.md +150 -150
  80. package/template/.aioson/skills/design/pt.squarespace.com/references/motion.md +270 -270
  81. package/template/.aioson/skills/design/pt.squarespace.com/references/patterns.md +189 -189
  82. package/template/.aioson/skills/design/pt.squarespace.com/references/websites.md +161 -161
  83. package/template/.aioson/skills/design/warm-craft-ui/SKILL.md +232 -209
  84. package/template/.aioson/skills/design/warm-craft-ui/references/art-direction.md +324 -324
  85. package/template/.aioson/skills/design/warm-craft-ui/references/components.md +508 -508
  86. package/template/.aioson/skills/design/warm-craft-ui/references/dashboards.md +223 -223
  87. package/template/.aioson/skills/design/warm-craft-ui/references/design-tokens.md +374 -374
  88. package/template/.aioson/skills/design/warm-craft-ui/references/motion.md +356 -356
  89. package/template/.aioson/skills/design/warm-craft-ui/references/patterns.md +288 -288
  90. package/template/.aioson/skills/design/warm-craft-ui/references/websites.md +289 -289
@@ -1,437 +1,443 @@
1
- # Websites & Landing Pages — Cognitive Core UI
2
-
3
- Read after `design-tokens.md` and `components.md`. When building websites, leave `dashboards.md` out of context.
4
-
5
- The Cognitive Core visual identity scales from dashboards to websites. Same typography, token system, and component vocabulary — but with more whitespace, hero typography, and narrative hierarchy.
6
-
7
- A commercial page using this skill should feel **premium and technical, but still behave like a website.** It cannot look like an admin dashboard with the word "site" pasted on top.
8
-
9
- ## Website Stance
10
-
11
- **Use these traits:**
12
- - Stronger narrative hierarchy — one message per section
13
- - More whitespace between sections (`--space-16` to `--space-24`)
14
- - Fewer panels above the fold — never five cards competing with the main message
15
- - Larger display headings (`--text-5xl` for hero)
16
- - Mono labels only as supporting spice, not the main reading experience
17
- - One strong accent family carried through the whole page
18
-
19
- **Avoid these traits:**
20
- - Persistent sidebars on marketing pages
21
- - Operational rails and dense status grids above the fold
22
- - Dashboard feeds unless the brand explicitly needs that look
23
- - Five equal-weight cards before the value proposition
24
- - Cyan glow overuse — websites need calm areas
25
- - Uppercase mono for entire paragraphs, nav groups, or section copy
26
- - Every section bordered like a dashboard card
27
-
28
- ## Website Anti-Patterns
29
-
30
- 1. Do not use a dashboard shell for a landing page — no persistent sidebar, no live-feed panel.
31
- 2. Do not place stat cards before the main value proposition unless the proof IS the product.
32
- 3. Do not overuse cyan/teal glow. Websites need breathing room.
33
- 4. Do not make every section a bordered card — alternate backgrounds instead.
34
- 5. Do not use a hero that is just a grid of equal-weight feature cards. The hero must have ONE dominant message.
35
-
36
- ---
37
-
38
- ## Website Composition Library
39
-
40
- Choose one primary composition before building sections. Do not default to the same centered hero every time.
41
-
42
- ### 1. Split Narrative
43
-
44
- Use when:
45
- - the product needs both message and visual proof above the fold
46
-
47
- Composition:
48
- - headline and CTA on one side
49
- - product frame, screenshot, or visual artifact on the other
50
- - secondary proof rail below
51
-
52
- ### 2. Editorial Stack
53
-
54
- Use when:
55
- - the brand needs intelligence, depth, or cultural weight
56
-
57
- Composition:
58
- - offset headline
59
- - side notes, quote blocks, or pull metrics
60
- - more asymmetry, more narrative rhythm
61
-
62
- ### 3. Proof-First
63
-
64
- Use when:
65
- - credibility matters more than storytelling flourish
66
-
67
- Composition:
68
- - immediate outcomes, metrics, logos, or customer proof near the hero
69
- - product explanation follows
70
-
71
- ### 4. Product Theater
72
-
73
- Use when:
74
- - the interface itself is the main differentiator
75
-
76
- Composition:
77
- - immersive product frame
78
- - layered caption rails
79
- - supporting sections explain workflows and advantages
80
-
81
- ### 5. Institutional Precision
82
-
83
- Use when:
84
- - the site must feel trustworthy, executive, and polished
85
-
86
- Composition:
87
- - concise hero
88
- - structured value blocks
89
- - case study or trust strip
90
- - elegant CTA instead of hype-heavy spectacle
91
-
92
- Rule:
93
- - pick one composition and one signature move from `references/art-direction.md`, then propagate them intentionally
94
-
95
- ---
96
-
97
- ## Default theme for websites
98
-
99
- - **Light theme**: Institutional sites, corporate, marketing pages, client-facing products
100
- - **Dark theme**: Tech products, SaaS, developer tools, agencies
101
- - **Both with toggle**: When the user asks, or when the site needs broad appeal
102
-
103
- If the user does not specify, use **dark with a light option toggle** for tech/SaaS, or **light with a dark option toggle** for institutional/corporate.
104
-
105
- ---
106
-
107
- ## 1. Landing Page
108
-
109
- ```
110
- ┌────────────────────────────────────────────────────────┐
111
- │ TOP BAR (sticky, bg-void on scroll, transparent hero) │
112
- ├────────────────────────────────────────────────────────┤
113
- │ │
114
- │ HERO SECTION (padding: space-24 top, space-20 bottom) │
115
- │ ┌──────────────────────────────────────────────────┐ │
116
- │ │ MONO LABEL: tagline (centered) │ │
117
- │ │ DISPLAY HEADING text-5xl, weight-bold (centered) │ │
118
- │ │ Subtitle: text-lg, text-secondary (centered) │ │
119
- │ │ [CTA Primary Button] [Secondary Button] │ │
120
- │ └──────────────────────────────────────────────────┘ │
121
- │ │
122
- ├────────────────────────────────────────────────────────┤
123
- │ FEATURES (bg-surface, padding: space-20) │
124
- │ Section Header (centered: mono label + display title) │
125
- │ Card Grid: [InfoCard] [InfoCard] [InfoCard] 3-col │
126
- │ │
127
- ├────────────────────────────────────────────────────────┤
128
- │ STATS (bg-base, padding: space-16) │
129
- │ [StatCard] [StatCard] [StatCard] [StatCard] │
130
- │ │
131
- ├────────────────────────────────────────────────────────┤
132
- │ SOCIAL PROOF (bg-surface, padding: space-16) │
133
- │ Quote cards in 2-col grid or testimonial strip │
134
- │ │
135
- ├────────────────────────────────────────────────────────┤
136
- │ CTA SECTION (bg-void, accent radial glow, space-20) │
137
- │ Display heading + mono label + CTA Button (centered) │
138
- │ │
139
- ├────────────────────────────────────────────────────────┤
140
- │ FOOTER (bg-void, border-top: border-subtle) │
141
- │ [Brand | Links | Links | Newsletter or Social] │
142
- └────────────────────────────────────────────────────────┘
143
- ```
144
-
145
- ### Hero section (required elements)
146
-
147
- 1. **Mono label** above heading — category / tagline in monospace uppercase, used sparingly
148
- 2. **Display heading** — `text-5xl`, `weight-bold` or `weight-black` only when the hero truly needs extra emphasis, `tracking-tight`, `line-height: 1.1`
149
- 3. **Subtitle** — 1–2 sentences, `text-lg`, `text-secondary`
150
- 4. **Two CTAs** — primary (solid accent) + secondary (outline or ghost)
151
- 5. **Optional**: hero visual (screenshot, illustration, or abstract mesh)
152
-
153
- Hero rule:
154
- - If the page would benefit from split, editorial, or proof-first composition, do not force all five elements into a centered stack.
155
-
156
- ```css
157
- .hero {
158
- min-height: 90vh; display: flex; align-items: center; justify-content: center;
159
- padding: var(--space-24) var(--space-6) var(--space-20);
160
- text-align: center;
161
- background: var(--bg-base);
162
- position: relative; overflow: hidden;
163
- }
164
- .hero-content { max-width: 760px; position: relative; z-index: 1; }
165
- .hero-mono-label {
166
- font-family: var(--font-mono); font-size: var(--text-xs);
167
- color: var(--accent); letter-spacing: var(--tracking-widest);
168
- text-transform: uppercase; margin-bottom: var(--space-4);
169
- display: inline-flex; align-items: center; gap: var(--space-2);
170
- }
171
- .hero-heading {
172
- font-family: var(--font-display); font-size: var(--text-5xl);
173
- font-weight: var(--weight-bold); color: var(--text-heading);
174
- letter-spacing: var(--tracking-tight); line-height: 1.05;
175
- margin-bottom: var(--space-5);
176
- }
177
- .hero-subtitle {
178
- font-size: var(--text-lg); color: var(--text-secondary);
179
- line-height: var(--leading-relaxed); margin-bottom: var(--space-8);
180
- max-width: 560px; margin-left: auto; margin-right: auto;
181
- }
182
- .hero-actions { display: flex; gap: var(--space-3); justify-content: center; flex-wrap: wrap; }
183
- ```
184
-
185
- **Optional hero glow (dark theme):**
186
- ```css
187
- .hero::before {
188
- content: ''; position: absolute; inset: 0;
189
- background: radial-gradient(ellipse 800px 600px at 50% 30%, var(--accent-glow), transparent 70%);
190
- pointer-events: none;
191
- }
192
- ```
193
-
194
- ### Section max-width container
195
-
196
- ```css
197
- .container { max-width: 1200px; margin: 0 auto; padding: 0 var(--space-6); }
198
- .section { padding: var(--space-20) var(--space-6); }
199
- .section-header { text-align: center; margin-bottom: var(--space-10); }
200
- .section-mono-label {
201
- font-family: var(--font-mono); font-size: var(--text-xs);
202
- color: var(--accent); letter-spacing: var(--tracking-widest);
203
- text-transform: uppercase; margin-bottom: var(--space-3);
204
- }
205
- .section-heading {
206
- font-family: var(--font-display); font-size: var(--text-3xl);
207
- font-weight: var(--weight-bold); color: var(--text-heading);
208
- letter-spacing: var(--tracking-tight); line-height: var(--leading-tight);
209
- }
210
- ```
211
-
212
- ### Features / Benefits section
213
-
214
- Use Info Cards (from `components.md`) in a 3-column grid:
215
-
216
- ```css
217
- .features-grid {
218
- display: grid; gap: var(--space-5);
219
- grid-template-columns: repeat(3, 1fr);
220
- }
221
- @media (max-width: 900px) { .features-grid { grid-template-columns: 1fr; } }
222
- ```
223
-
224
- Each card: icon + mono label + heading + description paragraph. Use `var(--bg-elevated)` as card background for contrast against the section.
225
-
226
- ### Stats section
227
-
228
- Row of 4 stat cards. Use light background (`bg-surface`) for the stat numbers section:
229
-
230
- ```css
231
- .stats-section { background: var(--bg-surface); }
232
- .stats-row { display: flex; gap: var(--space-5); flex-wrap: wrap; justify-content: center; }
233
- .stats-row .stat-card { flex: 1; min-width: 180px; text-align: center; }
234
- ```
235
-
236
- Stat card center-aligned variant:
237
- - Mono label centered
238
- - Large number centered, accent color optional
239
- - Short subtitle below
240
-
241
- ### Social proof / Testimonials
242
-
243
- ```css
244
- .testimonials-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-5); }
245
- @media (max-width: 768px) { .testimonials-grid { grid-template-columns: 1fr; } }
246
- ```
247
-
248
- Testimonial card:
249
- ```css
250
- .testimonial-card {
251
- background: var(--bg-surface); border: 1px solid var(--border-subtle);
252
- border-radius: var(--radius-lg); padding: var(--space-6);
253
- }
254
- .testimonial-quote {
255
- font-size: var(--text-base); color: var(--text-primary);
256
- line-height: var(--leading-relaxed); font-style: italic;
257
- margin-bottom: var(--space-4);
258
- }
259
- .testimonial-author {
260
- font-family: var(--font-mono); font-size: var(--text-xs);
261
- color: var(--text-muted); letter-spacing: var(--tracking-wider); text-transform: uppercase;
262
- }
263
- ```
264
-
265
- ### CTA section
266
-
267
- ```css
268
- .cta-section {
269
- background: var(--bg-void); text-align: center;
270
- position: relative; overflow: hidden;
271
- }
272
- .cta-section::before {
273
- content: ''; position: absolute; inset: 0;
274
- background: radial-gradient(ellipse 600px 400px at 50% 50%, var(--accent-glow), transparent);
275
- pointer-events: none;
276
- }
277
- .cta-content { position: relative; z-index: 1; max-width: 640px; margin: 0 auto; }
278
- ```
279
-
280
- ### Top navigation (landing pages)
281
-
282
- Same structure as dashboard top bar, with these differences:
283
- - Initially transparent background, transitions to `bg-void` on scroll
284
- - Links are page anchor links (`#features`, `#pricing`, `#about`)
285
- - Add `data-scrolled` attribute via JS to trigger background fill
286
-
287
- ```css
288
- .topbar { transition: background var(--transition-slow), border-color var(--transition-slow); }
289
- .topbar[data-scrolled="true"] {
290
- background: var(--bg-void);
291
- border-bottom: 1px solid var(--border-subtle);
292
- backdrop-filter: blur(12px);
293
- }
294
- ```
295
-
296
- ---
297
-
298
- ## 2. Institutional / Corporate Site
299
-
300
- Same as landing page with these additions:
301
-
302
- ### About page
303
- ```
304
- Hero (short, 50vh) Text block + values card grid → Team card grid → CTA
305
- ```
306
-
307
- ### Team card
308
- ```css
309
- .team-card { text-align: center; background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: var(--space-6); }
310
- .team-avatar { width: 80px; height: 80px; border-radius: 50%; border: 2px solid var(--border-subtle); margin: 0 auto var(--space-4); object-fit: cover; }
311
- .team-name { font-weight: var(--weight-bold); color: var(--text-heading); }
312
- .team-role { color: var(--accent); font-style: italic; font-size: var(--text-sm); }
313
- .team-bio { font-size: var(--text-sm); color: var(--text-secondary); margin-top: var(--space-2); line-height: var(--leading-relaxed); }
314
- ```
315
-
316
- ### Services page
317
- ```
318
- Hero Service cards grid (3-col) Why Us stats row → CTA
319
- ```
320
-
321
- ### Contact page
322
- ```
323
- Two columns: [Left: contact info cards] [Right: form card]
324
- ```
325
-
326
- ---
327
-
328
- ## 3. Footer
329
-
330
- ```css
331
- .footer {
332
- background: var(--bg-void); border-top: 1px solid var(--border-subtle);
333
- padding: var(--space-10) var(--space-6) var(--space-6);
334
- }
335
- .footer-grid {
336
- display: grid; grid-template-columns: 2fr 1fr 1fr 1fr;
337
- gap: var(--space-8); margin-bottom: var(--space-8);
338
- }
339
- .footer-brand { /* brand column */ }
340
- .footer-col-label {
341
- font-family: var(--font-mono); font-size: var(--text-xs);
342
- color: var(--text-muted); letter-spacing: var(--tracking-widest);
343
- text-transform: uppercase; margin-bottom: var(--space-4);
344
- }
345
- .footer-link {
346
- display: block; color: var(--text-secondary); text-decoration: none;
347
- font-size: var(--text-sm); margin-bottom: var(--space-2);
348
- transition: color var(--transition-fast);
349
- }
350
- .footer-link:hover { color: var(--accent); }
351
- .footer-bottom {
352
- border-top: 1px solid var(--border-subtle); padding-top: var(--space-4);
353
- display: flex; justify-content: space-between; align-items: center;
354
- font-size: var(--text-sm); color: var(--text-muted);
355
- }
356
- @media (max-width: 768px) {
357
- .footer-grid { grid-template-columns: 1fr 1fr; gap: var(--space-6); }
358
- }
359
- ```
360
-
361
- ---
362
-
363
- ## 4. Buttons (website variants)
364
-
365
- Primary CTA button:
366
- ```css
367
- .btn-primary {
368
- background: var(--accent); color: var(--accent-contrast);
369
- font-family: var(--font-body); font-size: var(--text-sm);
370
- font-weight: var(--weight-semibold); letter-spacing: var(--tracking-wide);
371
- text-transform: none; padding: var(--space-3) var(--space-6);
372
- min-height: var(--control-md);
373
- border-radius: var(--radius-md); border: none; cursor: pointer;
374
- transition: var(--transition-base), transform 150ms ease, box-shadow 150ms ease;
375
- box-shadow: 0 0 20px var(--accent-glow);
376
- }
377
- .btn-primary:hover {
378
- background: var(--accent-hover);
379
- box-shadow: 0 0 32px var(--accent-glow), 0 4px 12px rgba(0,0,0,0.2);
380
- transform: translateY(-1px);
381
- }
382
- .btn-primary:focus-visible {
383
- outline: var(--focus-ring-width) solid var(--accent);
384
- outline-offset: var(--focus-ring-offset);
385
- }
386
- ```
387
-
388
- Secondary button:
389
- ```css
390
- .btn-secondary {
391
- background: transparent; color: var(--text-primary);
392
- border: 1px solid var(--border-medium);
393
- font-family: var(--font-body); font-size: var(--text-sm);
394
- font-weight: var(--weight-semibold); letter-spacing: var(--tracking-wide);
395
- text-transform: none; padding: var(--space-3) var(--space-6);
396
- min-height: var(--control-md);
397
- border-radius: var(--radius-md); cursor: pointer;
398
- transition: var(--transition-base), transform 150ms ease;
399
- }
400
- .btn-secondary:hover {
401
- background: var(--accent-subtle);
402
- border-color: var(--border-accent);
403
- color: var(--accent);
404
- }
405
- .btn-secondary:focus-visible {
406
- outline: var(--focus-ring-width) solid var(--accent);
407
- outline-offset: var(--focus-ring-offset);
408
- }
409
- ```
410
-
411
- Guardrails:
412
- - Do not use `color: var(--bg-base)` for accent buttons in light theme.
413
- - Default website CTAs should read like polished product buttons, not terminal labels.
414
- - If uppercase mono is desired for branding reasons, keep the label very short and re-check contrast in hover/focus states.
415
-
416
- ---
417
-
418
- ## Key differences: dashboard vs website
419
-
420
- | Aspect | Dashboard | Website |
421
- |---|---|---|
422
- | Default theme | Dark | Light (or dark for tech) |
423
- | Section padding | `space-4 to space-5` | `space-16 to space-24` |
424
- | Content max-width | Full layout with sidebar | `1200px` centered |
425
- | Heading size | `text-2xl` max | `text-5xl` for hero |
426
- | Cards | Dense, compact | Spacious, feature-oriented |
427
- | Navigation | Tab-heavy, sidebar | Linear anchors, single bar |
428
- | Background alternation | Same bg-base | Alternates `bg-base` / `bg-surface` |
429
-
430
- ---
431
-
432
- ## Anti-Generic Website Rules
433
-
434
- - Do not repeat the same section rhythm from top to bottom.
435
- - Do not rely on centered text alone to create impact.
436
- - Use at least one memorable section transition, composition break, or proof rail.
437
- - If the page looks like "SaaS template with nicer colors", it is not finished.
1
+ # Websites & Landing Pages — Cognitive Core UI
2
+
3
+ Read after `design-tokens.md` and `components.md`. When building websites, leave `dashboards.md` out of context.
4
+
5
+ The Cognitive Core visual identity scales from dashboards to websites. Same typography, token system, and component vocabulary — but with more whitespace, hero typography, and narrative hierarchy.
6
+
7
+ A commercial page using this skill should feel **premium and technical, but still behave like a website.** It cannot look like an admin dashboard with the word "site" pasted on top.
8
+
9
+ ## Website Stance
10
+
11
+ **Use these traits:**
12
+ - Stronger narrative hierarchy — one message per section
13
+ - More whitespace between sections (`--space-16` to `--space-24`)
14
+ - Fewer panels above the fold — never five cards competing with the main message
15
+ - Larger display headings (`--text-5xl` for hero)
16
+ - Mono labels only as supporting spice, not the main reading experience
17
+ - One strong accent family carried through the whole page
18
+
19
+ **Avoid these traits:**
20
+ - Persistent sidebars on marketing pages
21
+ - Operational rails and dense status grids above the fold
22
+ - Dashboard feeds unless the brand explicitly needs that look
23
+ - Five equal-weight cards before the value proposition
24
+ - Cyan glow overuse — websites need calm areas
25
+ - Uppercase mono for entire paragraphs, nav groups, or section copy
26
+ - Every section bordered like a dashboard card
27
+
28
+ ## Website Anti-Patterns
29
+
30
+ 1. Do not use a dashboard shell for a landing page — no persistent sidebar, no live-feed panel.
31
+ 2. Do not place stat cards before the main value proposition unless the proof IS the product.
32
+ 3. Do not overuse cyan/teal glow. Websites need breathing room.
33
+ 4. Do not make every section a bordered card — alternate backgrounds instead.
34
+ 5. Do not use a hero that is just a grid of equal-weight feature cards. The hero must have ONE dominant message.
35
+
36
+ ---
37
+
38
+ ## Website Composition Library
39
+
40
+ Choose one primary composition before building sections. Do not default to the same centered hero every time.
41
+
42
+ ### 1. Split Narrative
43
+
44
+ Use when:
45
+ - the product needs both message and visual proof above the fold
46
+
47
+ Composition:
48
+ - headline and CTA on one side
49
+ - product frame, screenshot, or visual artifact on the other
50
+ - secondary proof rail below
51
+
52
+ ### 2. Editorial Stack
53
+
54
+ Use when:
55
+ - the brand needs intelligence, depth, or cultural weight
56
+
57
+ Composition:
58
+ - offset headline
59
+ - side notes, quote blocks, or pull metrics
60
+ - more asymmetry, more narrative rhythm
61
+
62
+ ### 3. Proof-First
63
+
64
+ Use when:
65
+ - credibility matters more than storytelling flourish
66
+
67
+ Composition:
68
+ - immediate outcomes, metrics, logos, or customer proof near the hero
69
+ - product explanation follows
70
+
71
+ ### 4. Product Theater
72
+
73
+ Use when:
74
+ - the interface itself is the main differentiator
75
+
76
+ Composition:
77
+ - immersive product frame
78
+ - layered caption rails
79
+ - supporting sections explain workflows and advantages
80
+
81
+ ### 5. Institutional Precision
82
+
83
+ Use when:
84
+ - the site must feel trustworthy, executive, and polished
85
+
86
+ Composition:
87
+ - concise hero
88
+ - structured value blocks
89
+ - case study or trust strip
90
+ - elegant CTA instead of hype-heavy spectacle
91
+
92
+ Rule:
93
+ - pick one composition and one signature move from `references/art-direction.md`, then propagate them intentionally
94
+
95
+ ---
96
+
97
+ ## Default theme for websites
98
+
99
+ - **Light theme**: Institutional sites, corporate, marketing pages, client-facing products
100
+ - **Dark theme**: Tech products, SaaS, developer tools, agencies
101
+ - **Both with toggle**: When the user asks, or when the site needs broad appeal
102
+
103
+ If the user does not specify, use **dark with a light option toggle** for tech/SaaS, or **light with a dark option toggle** for institutional/corporate.
104
+
105
+ ---
106
+
107
+ ## 1. Landing Page
108
+
109
+ ```
110
+ ┌────────────────────────────────────────────────────────┐
111
+ │ TOP BAR (sticky, bg-void on scroll, transparent hero) │
112
+ ├────────────────────────────────────────────────────────┤
113
+ │ │
114
+ │ HERO SECTION (padding: space-24 top, space-20 bottom) │
115
+ │ ┌──────────────────────────────────────────────────┐ │
116
+ │ │ MONO LABEL: tagline (centered) │ │
117
+ │ │ DISPLAY HEADING text-5xl, weight-bold (centered) │ │
118
+ │ │ Subtitle: text-lg, text-secondary (centered) │ │
119
+ │ │ [CTA Primary Button] [Secondary Button] │ │
120
+ │ └──────────────────────────────────────────────────┘ │
121
+ │ │
122
+ ├────────────────────────────────────────────────────────┤
123
+ │ FEATURES (bg-surface, padding: space-20) │
124
+ │ Section Header (centered: mono label + display title) │
125
+ │ Card Grid: [InfoCard] [InfoCard] [InfoCard] 3-col │
126
+ │ │
127
+ ├────────────────────────────────────────────────────────┤
128
+ │ STATS (bg-base, padding: space-16) │
129
+ │ [StatCard] [StatCard] [StatCard] [StatCard] │
130
+ │ │
131
+ ├────────────────────────────────────────────────────────┤
132
+ │ SOCIAL PROOF (bg-surface, padding: space-16) │
133
+ │ Quote cards in 2-col grid or testimonial strip │
134
+ │ │
135
+ ├────────────────────────────────────────────────────────┤
136
+ │ CTA SECTION (bg-void, accent radial glow, space-20) │
137
+ │ Display heading + mono label + CTA Button (centered) │
138
+ │ │
139
+ ├────────────────────────────────────────────────────────┤
140
+ │ FOOTER (bg-void, border-top: border-subtle) │
141
+ │ [Brand | Links | Links | Newsletter or Social] │
142
+ └────────────────────────────────────────────────────────┘
143
+ ```
144
+
145
+ ### Hero section (required elements)
146
+
147
+ 1. **Mono label** above heading — category / tagline in monospace uppercase, used sparingly
148
+ 2. **Display heading** — `text-5xl`, `weight-bold` or `weight-black` only when the hero truly needs extra emphasis, `tracking-normal`, `line-height: 1.1`
149
+ 3. **Subtitle** — 1–2 sentences, `text-lg`, `text-secondary`
150
+ 4. **Two CTAs** — primary (solid accent) + secondary (outline or ghost)
151
+ 5. **Optional**: hero visual (screenshot, illustration, or abstract mesh)
152
+
153
+ Hero rule:
154
+ - If the page would benefit from split, editorial, or proof-first composition, do not force all five elements into a centered stack.
155
+
156
+ ```css
157
+ .hero {
158
+ min-height: min(760px, 90svh); display: flex; align-items: center; justify-content: center;
159
+ padding: var(--space-24) var(--space-6) var(--space-20);
160
+ text-align: center;
161
+ background: var(--bg-base);
162
+ position: relative; overflow: hidden;
163
+ }
164
+ .hero-content { max-width: 760px; position: relative; z-index: 1; }
165
+ .hero-mono-label {
166
+ font-family: var(--font-mono); font-size: var(--text-xs);
167
+ color: var(--accent); letter-spacing: 0;
168
+ text-transform: uppercase; margin-bottom: var(--space-4);
169
+ display: inline-flex; align-items: center; gap: var(--space-2);
170
+ }
171
+ .hero-heading {
172
+ font-family: var(--font-display); font-size: var(--text-5xl);
173
+ font-weight: var(--weight-bold); color: var(--text-heading);
174
+ letter-spacing: 0; line-height: 1.05;
175
+ margin-bottom: var(--space-5);
176
+ overflow-wrap: anywhere;
177
+ }
178
+ .hero-subtitle {
179
+ font-size: var(--text-lg); color: var(--text-secondary);
180
+ line-height: var(--leading-relaxed); margin-bottom: var(--space-8);
181
+ max-width: 560px; margin-left: auto; margin-right: auto;
182
+ }
183
+ .hero-actions { display: flex; gap: var(--space-3); justify-content: center; flex-wrap: wrap; }
184
+ ```
185
+
186
+ **Optional hero glow (dark theme):**
187
+ ```css
188
+ .hero::before {
189
+ content: ''; position: absolute; inset: 0;
190
+ background: radial-gradient(ellipse 800px 600px at 50% 30%, var(--accent-glow), transparent 70%);
191
+ pointer-events: none;
192
+ }
193
+ ```
194
+
195
+ ### Section max-width container
196
+
197
+ ```css
198
+ .container { max-width: 1200px; margin: 0 auto; padding: 0 var(--space-6); }
199
+ .section { padding: var(--space-20) var(--space-6); }
200
+ .section-header { text-align: center; margin-bottom: var(--space-10); }
201
+ .section-mono-label {
202
+ font-family: var(--font-mono); font-size: var(--text-xs);
203
+ color: var(--accent); letter-spacing: 0;
204
+ text-transform: uppercase; margin-bottom: var(--space-3);
205
+ }
206
+ .section-heading {
207
+ font-family: var(--font-display); font-size: var(--text-3xl);
208
+ font-weight: var(--weight-bold); color: var(--text-heading);
209
+ letter-spacing: 0; line-height: var(--leading-tight);
210
+ overflow-wrap: anywhere;
211
+ }
212
+ ```
213
+
214
+ ### Features / Benefits section
215
+
216
+ Use Info Cards (from `components.md`) in a 3-column grid:
217
+
218
+ ```css
219
+ .features-grid {
220
+ display: grid; gap: var(--space-5);
221
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
222
+ }
223
+ @media (max-width: 900px) { .features-grid { grid-template-columns: 1fr; } }
224
+ ```
225
+
226
+ Each card: icon + mono label + heading + description paragraph. Use `var(--bg-elevated)` as card background for contrast against the section.
227
+
228
+ ### Stats section
229
+
230
+ Row of 4 stat cards. Use light background (`bg-surface`) for the stat numbers section:
231
+
232
+ ```css
233
+ .stats-section { background: var(--bg-surface); }
234
+ .stats-row {
235
+ display: grid;
236
+ gap: var(--space-5);
237
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr));
238
+ }
239
+ .stats-row .stat-card { text-align: center; }
240
+ ```
241
+
242
+ Stat card center-aligned variant:
243
+ - Mono label centered
244
+ - Large number centered, accent color optional
245
+ - Short subtitle below
246
+
247
+ ### Social proof / Testimonials
248
+
249
+ ```css
250
+ .testimonials-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: var(--space-5); }
251
+ @media (max-width: 768px) { .testimonials-grid { grid-template-columns: 1fr; } }
252
+ ```
253
+
254
+ Testimonial card:
255
+ ```css
256
+ .testimonial-card {
257
+ background: var(--bg-surface); border: 1px solid var(--border-subtle);
258
+ border-radius: var(--radius-lg); padding: var(--space-6);
259
+ }
260
+ .testimonial-quote {
261
+ font-size: var(--text-base); color: var(--text-primary);
262
+ line-height: var(--leading-relaxed); font-style: italic;
263
+ margin-bottom: var(--space-4);
264
+ }
265
+ .testimonial-author {
266
+ font-family: var(--font-mono); font-size: var(--text-xs);
267
+ color: var(--text-muted); letter-spacing: 0; text-transform: uppercase;
268
+ }
269
+ ```
270
+
271
+ ### CTA section
272
+
273
+ ```css
274
+ .cta-section {
275
+ background: var(--bg-void); text-align: center;
276
+ position: relative; overflow: hidden;
277
+ }
278
+ .cta-section::before {
279
+ content: ''; position: absolute; inset: 0;
280
+ background: radial-gradient(ellipse 600px 400px at 50% 50%, var(--accent-glow), transparent);
281
+ pointer-events: none;
282
+ }
283
+ .cta-content { position: relative; z-index: 1; max-width: 640px; margin: 0 auto; }
284
+ ```
285
+
286
+ ### Top navigation (landing pages)
287
+
288
+ Same structure as dashboard top bar, with these differences:
289
+ - Initially transparent background, transitions to `bg-void` on scroll
290
+ - Links are page anchor links (`#features`, `#pricing`, `#about`)
291
+ - Add `data-scrolled` attribute via JS to trigger background fill
292
+
293
+ ```css
294
+ .topbar { transition: background var(--transition-slow), border-color var(--transition-slow); }
295
+ .topbar[data-scrolled="true"] {
296
+ background: var(--bg-void);
297
+ border-bottom: 1px solid var(--border-subtle);
298
+ backdrop-filter: blur(12px);
299
+ }
300
+ ```
301
+
302
+ ---
303
+
304
+ ## 2. Institutional / Corporate Site
305
+
306
+ Same as landing page with these additions:
307
+
308
+ ### About page
309
+ ```
310
+ Hero (short, 50vh) Text block + values card grid Team card grid CTA
311
+ ```
312
+
313
+ ### Team card
314
+ ```css
315
+ .team-card { text-align: center; background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: var(--space-6); }
316
+ .team-avatar { width: 80px; height: 80px; border-radius: 50%; border: 2px solid var(--border-subtle); margin: 0 auto var(--space-4); object-fit: cover; }
317
+ .team-name { font-weight: var(--weight-bold); color: var(--text-heading); }
318
+ .team-role { color: var(--accent); font-style: italic; font-size: var(--text-sm); }
319
+ .team-bio { font-size: var(--text-sm); color: var(--text-secondary); margin-top: var(--space-2); line-height: var(--leading-relaxed); }
320
+ ```
321
+
322
+ ### Services page
323
+ ```
324
+ Hero → Service cards grid (3-col) → Why Us stats row → CTA
325
+ ```
326
+
327
+ ### Contact page
328
+ ```
329
+ Two columns: [Left: contact info cards] [Right: form card]
330
+ ```
331
+
332
+ ---
333
+
334
+ ## 3. Footer
335
+
336
+ ```css
337
+ .footer {
338
+ background: var(--bg-void); border-top: 1px solid var(--border-subtle);
339
+ padding: var(--space-10) var(--space-6) var(--space-6);
340
+ }
341
+ .footer-grid {
342
+ display: grid; grid-template-columns: minmax(0, 2fr) repeat(3, minmax(140px, 1fr));
343
+ gap: var(--space-8); margin-bottom: var(--space-8);
344
+ }
345
+ .footer-brand { /* brand column */ }
346
+ .footer-col-label {
347
+ font-family: var(--font-mono); font-size: var(--text-xs);
348
+ color: var(--text-muted); letter-spacing: 0;
349
+ text-transform: uppercase; margin-bottom: var(--space-4);
350
+ }
351
+ .footer-link {
352
+ display: block; color: var(--text-secondary); text-decoration: none;
353
+ font-size: var(--text-sm); margin-bottom: var(--space-2);
354
+ transition: color var(--transition-fast);
355
+ }
356
+ .footer-link:hover { color: var(--accent); }
357
+ .footer-bottom {
358
+ border-top: 1px solid var(--border-subtle); padding-top: var(--space-4);
359
+ display: flex; justify-content: space-between; align-items: center; gap: var(--space-3); flex-wrap: wrap;
360
+ font-size: var(--text-sm); color: var(--text-muted);
361
+ }
362
+ @media (max-width: 768px) {
363
+ .footer-grid { grid-template-columns: 1fr 1fr; gap: var(--space-6); }
364
+ }
365
+ ```
366
+
367
+ ---
368
+
369
+ ## 4. Buttons (website variants)
370
+
371
+ Primary CTA button:
372
+ ```css
373
+ .btn-primary {
374
+ background: var(--accent); color: var(--accent-contrast);
375
+ font-family: var(--font-body); font-size: var(--text-sm);
376
+ font-weight: var(--weight-semibold); letter-spacing: 0;
377
+ text-transform: none; padding: var(--space-3) var(--space-6);
378
+ min-height: var(--control-md);
379
+ border-radius: var(--radius-md); border: none; cursor: pointer;
380
+ transition: var(--transition-base), transform 150ms ease, box-shadow 150ms ease;
381
+ box-shadow: 0 0 20px var(--accent-glow);
382
+ }
383
+ .btn-primary:hover {
384
+ background: var(--accent-hover);
385
+ box-shadow: 0 0 32px var(--accent-glow), 0 4px 12px rgba(0,0,0,0.2);
386
+ transform: translateY(-1px);
387
+ }
388
+ .btn-primary:focus-visible {
389
+ outline: var(--focus-ring-width) solid var(--accent);
390
+ outline-offset: var(--focus-ring-offset);
391
+ }
392
+ ```
393
+
394
+ Secondary button:
395
+ ```css
396
+ .btn-secondary {
397
+ background: transparent; color: var(--text-primary);
398
+ border: 1px solid var(--border-medium);
399
+ font-family: var(--font-body); font-size: var(--text-sm);
400
+ font-weight: var(--weight-semibold); letter-spacing: 0;
401
+ text-transform: none; padding: var(--space-3) var(--space-6);
402
+ min-height: var(--control-md);
403
+ border-radius: var(--radius-md); cursor: pointer;
404
+ transition: var(--transition-base), transform 150ms ease;
405
+ }
406
+ .btn-secondary:hover {
407
+ background: var(--accent-subtle);
408
+ border-color: var(--border-accent);
409
+ color: var(--accent);
410
+ }
411
+ .btn-secondary:focus-visible {
412
+ outline: var(--focus-ring-width) solid var(--accent);
413
+ outline-offset: var(--focus-ring-offset);
414
+ }
415
+ ```
416
+
417
+ Guardrails:
418
+ - Do not use `color: var(--bg-base)` for accent buttons in light theme.
419
+ - Default website CTAs should read like polished product buttons, not terminal labels.
420
+ - If uppercase mono is desired for branding reasons, keep the label very short and re-check contrast in hover/focus states.
421
+
422
+ ---
423
+
424
+ ## Key differences: dashboard vs website
425
+
426
+ | Aspect | Dashboard | Website |
427
+ |---|---|---|
428
+ | Default theme | Dark | Light (or dark for tech) |
429
+ | Section padding | `space-4 to space-5` | `space-16 to space-24` |
430
+ | Content max-width | Full layout with sidebar | `1200px` centered |
431
+ | Heading size | `text-2xl` max | `text-5xl` for hero |
432
+ | Cards | Dense, compact | Spacious, feature-oriented |
433
+ | Navigation | Tab-heavy, sidebar | Linear anchors, single bar |
434
+ | Background alternation | Same bg-base | Alternates `bg-base` / `bg-surface` |
435
+
436
+ ---
437
+
438
+ ## Anti-Generic Website Rules
439
+
440
+ - Do not repeat the same section rhythm from top to bottom.
441
+ - Do not rely on centered text alone to create impact.
442
+ - Use at least one memorable section transition, composition break, or proof rail.
443
+ - If the page looks like "SaaS template with nicer colors", it is not finished.