@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,368 +1,368 @@
1
- # Components — pt.squarespace.com
2
-
3
- ## Button
4
-
5
- ### Variants
6
-
7
- | Variant | Description | Token Usage |
8
- |---------|-------------|-------------|
9
- | `primary` | Solid white bg, dark text | `bg: white`, `color: black` |
10
- | `secondary` | Ghost/outline style | `border: 1px solid var(--border)` |
11
- | `inline` | Text with arrow suffix | `color: var(--text-primary)` |
12
- | `cta--light` | For dark backgrounds | `bg: white`, `color: black` |
13
- | `cta--dark` | For light backgrounds | `bg: black`, `color: white` |
14
-
15
- ### States
16
-
17
- - **default:** Base colors per variant
18
- - **hover (primary/secondary):** `mix-blend-mode: difference` pseudo-element scales in — NOT a color transition. The white pseudo-element with blend mode creates a color inversion effect.
19
- - **active:** Slight scale (0.98) if any
20
- - **disabled:** `opacity: 0.5`, `pointer-events: none`
21
- - **loading:** Spinner or text change
22
-
23
- ### CTA Hover Mechanic — mix-blend-mode: difference
24
-
25
- **This is Squarespace's real CTA effect.** Do NOT implement as a simple `background-color` transition:
26
-
27
- ```css
28
- .cta--primary,
29
- .cta--secondary {
30
- position: relative;
31
- overflow: hidden;
32
- }
33
-
34
- .cta--primary::after,
35
- .cta--secondary::after {
36
- content: '';
37
- mix-blend-mode: difference;
38
- background-color: white;
39
- transform-origin: 0;
40
- width: 100%;
41
- height: 100%;
42
- position: absolute;
43
- top: 0;
44
- left: 0;
45
- transform: scaleX(0);
46
- transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
47
- }
48
-
49
- .cta--primary:hover::after,
50
- .cta--secondary:hover::after {
51
- transform: scaleX(1);
52
- }
53
- ```
54
-
55
- **Effect:** The white fill + `difference` blend mode inverts the button colors — a black button with white text becomes white with black text without any `color:` change.
56
-
57
- ### DOM Structure
58
- ```html
59
- <a class="cta cta--primary cta--light">Button Text</a>
60
- <!-- or -->
61
- <button class="cta cta--primary">Button Text</button>
62
- ```
63
-
64
- ### Tokens Applied
65
- - `font-family: var(--font-display)`
66
- - `font-size: var(--text-sm)`
67
- - `font-weight: var(--font-medium)`
68
- - `padding: var(--space-3) var(--space-4)`
69
- - `border-radius: var(--radius-none)` (0px)
70
- - `transition: var(--transition-all)`
71
- - `cursor: pointer`
72
-
73
- ### Tertiary CTA — Sliding Underline (.cta--tertiary)
74
-
75
- Text links with an animated dual-gradient underline. The underline slides in from left on hover and out to right on mouse-leave:
76
-
77
- ```css
78
- .cta--tertiary {
79
- background-image:
80
- linear-gradient(currentColor, currentColor),
81
- linear-gradient(currentColor, currentColor);
82
- background-size: 100% 1px, 0% 1px;
83
- background-repeat: no-repeat;
84
- background-position: -200% 100%, -100% 100%;
85
- animation: 0.5s cubic-bezier(0.645, 0.045, 0.355, 1) forwards ctaUnderlineSlideOut;
86
- }
87
-
88
- .cta--tertiary:hover {
89
- animation: 0.5s cubic-bezier(0.645, 0.045, 0.355, 1) forwards ctaUnderlineSlideIn;
90
- }
91
- ```
92
-
93
- Requires `@keyframes ctaUnderlineSlideIn / ctaUnderlineSlideOut` from `motion.md`.
94
-
95
- ---
96
-
97
- ## Navigation
98
-
99
- ### Variants
100
-
101
- | Variant | Description |
102
- |---------|-------------|
103
- | `desktop` | Horizontal links, logo left, CTAs right |
104
- | `mobile` | Hamburger + slide-out drawer |
105
-
106
- ### States
107
-
108
- - **default:** Transparent background initially
109
- - **scrolled:** Solid background (e.g. `bg: white`) kicks in after ~50px scroll
110
- - **mobile-open:** Hamburger becomes X, drawer wipes in from right via `clip-path` animation (NOT `translateX`)
111
-
112
- ### Mobile Menu — clip-path Swipe
113
-
114
- The mobile drawer does NOT use `transform: translateX`. It uses `clip-path: polygon()` animation:
115
-
116
- ```css
117
- /* Open */
118
- .global-navigation__mobile-menu--open {
119
- animation: 0.6s cubic-bezier(0.165, 0.84, 0.44, 1) forwards swipeIn;
120
- }
121
-
122
- /* Close */
123
- .global-navigation__mobile-menu--close {
124
- animation: 0.6s cubic-bezier(0.165, 0.84, 0.44, 1) forwards swipeOut;
125
- }
126
- ```
127
-
128
- Requires `@keyframes swipeIn / swipeOut` from `motion.md`. The menu covers full viewport, background `rgb(0, 0, 0)` with white links.
129
-
130
- ### Accordion (Mobile Nav)
131
-
132
- Sub-menus use CSS grid transition — no JS height calculation:
133
-
134
- ```css
135
- .global-navigation__accordion-content {
136
- display: grid;
137
- grid-template-rows: 0fr;
138
- transition: grid-template-rows 0.7s cubic-bezier(0.165, 0.84, 0.44, 1),
139
- padding 0.7s cubic-bezier(0.165, 0.84, 0.44, 1);
140
- }
141
- .global-navigation__accordion-content--open {
142
- grid-template-rows: 1fr;
143
- }
144
- ```
145
-
146
- ### DOM Structure
147
- ```html
148
- <header class="global-navigation">
149
- <a class="global-navigation__logo-link">Logo</a>
150
- <nav class="global-navigation__links">
151
- <a class="cta cta--inline">Products</a>
152
- <a class="cta cta--inline">Solutions</a>
153
- <button class="cta cta--inline">Resources</button>
154
- </nav>
155
- <div class="global-navigation__cta">
156
- <a class="cta cta--inline">Login</a>
157
- <a class="cta cta--primary cta--light">Get Started</a>
158
- </div>
159
- <button class="global-navigation__hamb">☰</button>
160
- </header>
161
- ```
162
-
163
- ### Tokens Applied
164
- - `font-family: var(--font-body)`
165
- - `font-size: var(--text-base)`
166
- - `font-weight: var(--font-normal)`
167
- - `padding: var(--space-4) var(--space-4)`
168
- - `gap: var(--space-4)`
169
- - `transition: top var(--transition-medium) var(--ease-sqsp-cta)`
170
-
171
- ---
172
-
173
- ## Link
174
-
175
- ### Variants
176
-
177
- | Variant | Description | Context |
178
- |---------|-------------|---------|
179
- | `nav-link` | Navigation links | Header |
180
- | `footer-link` | Footer links | Footer |
181
- | `cta--inline` | Inline CTA with arrow | Various |
182
-
183
- ### States
184
-
185
- - **default:** `color: var(--text-primary)` or `var(--text-inverse)`
186
- - **hover:** `color: var(--text-muted)`, optional underline
187
-
188
- ### Tokens Applied
189
- - `font-family: var(--font-body)`
190
- - `font-size: var(--text-base)`
191
- - `font-weight: var(--font-normal)`
192
- - `transition: var(--transition-colors)`
193
-
194
- ---
195
-
196
- ## Input
197
-
198
- ### Variants
199
-
200
- | Variant | Description |
201
- |---------|-------------|
202
- | `text` | Standard text input |
203
- | `domain` | Domain search input with search button |
204
-
205
- ### States
206
-
207
- - **default:** `border: 1px solid var(--border)`
208
- - **focus:** Border color changes to accent
209
- - **error:** Border color `var(--error)`
210
- - **disabled:** `opacity: 0.5`
211
-
212
- ### DOM Structure
213
- ```html
214
- <div class="input-wrapper">
1
+ # Components — pt.squarespace.com
2
+
3
+ ## Button
4
+
5
+ ### Variants
6
+
7
+ | Variant | Description | Token Usage |
8
+ |---------|-------------|-------------|
9
+ | `primary` | Solid white bg, dark text | `bg: white`, `color: black` |
10
+ | `secondary` | Ghost/outline style | `border: 1px solid var(--border)` |
11
+ | `inline` | Text with arrow suffix | `color: var(--text-primary)` |
12
+ | `cta--light` | For dark backgrounds | `bg: white`, `color: black` |
13
+ | `cta--dark` | For light backgrounds | `bg: black`, `color: white` |
14
+
15
+ ### States
16
+
17
+ - **default:** Base colors per variant
18
+ - **hover (primary/secondary):** `mix-blend-mode: difference` pseudo-element scales in — NOT a color transition. The white pseudo-element with blend mode creates a color inversion effect.
19
+ - **active:** Slight scale (0.98) if any
20
+ - **disabled:** `opacity: 0.5`, `pointer-events: none`
21
+ - **loading:** Spinner or text change
22
+
23
+ ### CTA Hover Mechanic — mix-blend-mode: difference
24
+
25
+ **This is Squarespace's real CTA effect.** Do NOT implement as a simple `background-color` transition:
26
+
27
+ ```css
28
+ .cta--primary,
29
+ .cta--secondary {
30
+ position: relative;
31
+ overflow: hidden;
32
+ }
33
+
34
+ .cta--primary::after,
35
+ .cta--secondary::after {
36
+ content: '';
37
+ mix-blend-mode: difference;
38
+ background-color: white;
39
+ transform-origin: 0;
40
+ width: 100%;
41
+ height: 100%;
42
+ position: absolute;
43
+ top: 0;
44
+ left: 0;
45
+ transform: scaleX(0);
46
+ transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
47
+ }
48
+
49
+ .cta--primary:hover::after,
50
+ .cta--secondary:hover::after {
51
+ transform: scaleX(1);
52
+ }
53
+ ```
54
+
55
+ **Effect:** The white fill + `difference` blend mode inverts the button colors — a black button with white text becomes white with black text without any `color:` change.
56
+
57
+ ### DOM Structure
58
+ ```html
59
+ <a class="cta cta--primary cta--light">Button Text</a>
60
+ <!-- or -->
61
+ <button class="cta cta--primary">Button Text</button>
62
+ ```
63
+
64
+ ### Tokens Applied
65
+ - `font-family: var(--font-display)`
66
+ - `font-size: var(--text-sm)`
67
+ - `font-weight: var(--font-medium)`
68
+ - `padding: var(--space-3) var(--space-4)`
69
+ - `border-radius: var(--radius-none)` (0px)
70
+ - `transition: var(--transition-all)`
71
+ - `cursor: pointer`
72
+
73
+ ### Tertiary CTA — Sliding Underline (.cta--tertiary)
74
+
75
+ Text links with an animated dual-gradient underline. The underline slides in from left on hover and out to right on mouse-leave:
76
+
77
+ ```css
78
+ .cta--tertiary {
79
+ background-image:
80
+ linear-gradient(currentColor, currentColor),
81
+ linear-gradient(currentColor, currentColor);
82
+ background-size: 100% 1px, 0% 1px;
83
+ background-repeat: no-repeat;
84
+ background-position: -200% 100%, -100% 100%;
85
+ animation: 0.5s cubic-bezier(0.645, 0.045, 0.355, 1) forwards ctaUnderlineSlideOut;
86
+ }
87
+
88
+ .cta--tertiary:hover {
89
+ animation: 0.5s cubic-bezier(0.645, 0.045, 0.355, 1) forwards ctaUnderlineSlideIn;
90
+ }
91
+ ```
92
+
93
+ Requires `@keyframes ctaUnderlineSlideIn / ctaUnderlineSlideOut` from `motion.md`.
94
+
95
+ ---
96
+
97
+ ## Navigation
98
+
99
+ ### Variants
100
+
101
+ | Variant | Description |
102
+ |---------|-------------|
103
+ | `desktop` | Horizontal links, logo left, CTAs right |
104
+ | `mobile` | Hamburger + slide-out drawer |
105
+
106
+ ### States
107
+
108
+ - **default:** Transparent background initially
109
+ - **scrolled:** Solid background (e.g. `bg: white`) kicks in after ~50px scroll
110
+ - **mobile-open:** Hamburger becomes X, drawer wipes in from right via `clip-path` animation (NOT `translateX`)
111
+
112
+ ### Mobile Menu — clip-path Swipe
113
+
114
+ The mobile drawer does NOT use `transform: translateX`. It uses `clip-path: polygon()` animation:
115
+
116
+ ```css
117
+ /* Open */
118
+ .global-navigation__mobile-menu--open {
119
+ animation: 0.6s cubic-bezier(0.165, 0.84, 0.44, 1) forwards swipeIn;
120
+ }
121
+
122
+ /* Close */
123
+ .global-navigation__mobile-menu--close {
124
+ animation: 0.6s cubic-bezier(0.165, 0.84, 0.44, 1) forwards swipeOut;
125
+ }
126
+ ```
127
+
128
+ Requires `@keyframes swipeIn / swipeOut` from `motion.md`. The menu covers full viewport, background `rgb(0, 0, 0)` with white links.
129
+
130
+ ### Accordion (Mobile Nav)
131
+
132
+ Sub-menus use CSS grid transition — no JS height calculation:
133
+
134
+ ```css
135
+ .global-navigation__accordion-content {
136
+ display: grid;
137
+ grid-template-rows: 0fr;
138
+ transition: grid-template-rows 0.7s cubic-bezier(0.165, 0.84, 0.44, 1),
139
+ padding 0.7s cubic-bezier(0.165, 0.84, 0.44, 1);
140
+ }
141
+ .global-navigation__accordion-content--open {
142
+ grid-template-rows: 1fr;
143
+ }
144
+ ```
145
+
146
+ ### DOM Structure
147
+ ```html
148
+ <header class="global-navigation">
149
+ <a class="global-navigation__logo-link">Logo</a>
150
+ <nav class="global-navigation__links">
151
+ <a class="cta cta--inline">Products</a>
152
+ <a class="cta cta--inline">Solutions</a>
153
+ <button class="cta cta--inline">Resources</button>
154
+ </nav>
155
+ <div class="global-navigation__cta">
156
+ <a class="cta cta--inline">Login</a>
157
+ <a class="cta cta--primary cta--light">Get Started</a>
158
+ </div>
159
+ <button class="global-navigation__hamb">☰</button>
160
+ </header>
161
+ ```
162
+
163
+ ### Tokens Applied
164
+ - `font-family: var(--font-body)`
165
+ - `font-size: var(--text-base)`
166
+ - `font-weight: var(--font-normal)`
167
+ - `padding: var(--space-4) var(--space-4)`
168
+ - `gap: var(--space-4)`
169
+ - `transition: top var(--transition-medium) var(--ease-sqsp-cta)`
170
+
171
+ ---
172
+
173
+ ## Link
174
+
175
+ ### Variants
176
+
177
+ | Variant | Description | Context |
178
+ |---------|-------------|---------|
179
+ | `nav-link` | Navigation links | Header |
180
+ | `footer-link` | Footer links | Footer |
181
+ | `cta--inline` | Inline CTA with arrow | Various |
182
+
183
+ ### States
184
+
185
+ - **default:** `color: var(--text-primary)` or `var(--text-inverse)`
186
+ - **hover:** `color: var(--text-muted)`, optional underline
187
+
188
+ ### Tokens Applied
189
+ - `font-family: var(--font-body)`
190
+ - `font-size: var(--text-base)`
191
+ - `font-weight: var(--font-normal)`
192
+ - `transition: var(--transition-colors)`
193
+
194
+ ---
195
+
196
+ ## Input
197
+
198
+ ### Variants
199
+
200
+ | Variant | Description |
201
+ |---------|-------------|
202
+ | `text` | Standard text input |
203
+ | `domain` | Domain search input with search button |
204
+
205
+ ### States
206
+
207
+ - **default:** `border: 1px solid var(--border)`
208
+ - **focus:** Border color changes to accent
209
+ - **error:** Border color `var(--error)`
210
+ - **disabled:** `opacity: 0.5`
211
+
212
+ ### DOM Structure
213
+ ```html
214
+ <div class="input-wrapper">
215
215
  <input type="text" class="input input--domain" placeholder="Enter your domain">
216
- </div>
217
- ```
218
-
219
- ### Tokens Applied
220
- - `background: var(--bg-base)`
221
- - `border: 1px solid var(--border)`
222
- - `border-radius: var(--radius-none)`
223
- - `padding: var(--space-3)`
224
- - `font-family: var(--font-body)`
225
- - `font-size: var(--text-base)`
226
-
227
- ---
228
-
229
- ## Card
230
-
231
- ### Variants
232
-
233
- | Variant | Description |
234
- |---------|-------------|
235
- | `feature-card` | Icon + title + description |
236
- | `stat-card` | Large number + label |
237
- | `pricing-card` | Price + features + CTA |
238
-
239
- ### States
240
-
241
- - **default:** No shadow, flat design
242
- - **hover:** May have subtle color shift
243
-
244
- ### Tokens Applied
245
- - `background: var(--bg-surface)` or transparent
246
- - `border-radius: var(--radius-none)`
247
- - `box-shadow: var(--shadow-sm)` (none typically)
248
- - `padding: var(--space-5)`
249
-
250
- ---
251
-
252
- ## Card Carousel (Platform / One Platform section)
253
-
254
- A horizontally scrollable row of cards that loop. Each card holds a `<video>` or `<img>` with an absolute text label.
255
-
256
- ### DOM Structure
257
- ```html
258
- <div class="card-carousel">
259
- <div class="card-carousel__track">
260
- <div class="card-carousel__card">
261
- <video autoplay muted loop playsinline preload="none">
262
- <source src="/videos/website-editing.webm" type="video/webm">
263
- </video>
216
+ </div>
217
+ ```
218
+
219
+ ### Tokens Applied
220
+ - `background: var(--bg-base)`
221
+ - `border: 1px solid var(--border)`
222
+ - `border-radius: var(--radius-none)`
223
+ - `padding: var(--space-3)`
224
+ - `font-family: var(--font-body)`
225
+ - `font-size: var(--text-base)`
226
+
227
+ ---
228
+
229
+ ## Card
230
+
231
+ ### Variants
232
+
233
+ | Variant | Description |
234
+ |---------|-------------|
235
+ | `feature-card` | Icon + title + description |
236
+ | `stat-card` | Large number + label |
237
+ | `pricing-card` | Price + features + CTA |
238
+
239
+ ### States
240
+
241
+ - **default:** No shadow, flat design
242
+ - **hover:** May have subtle color shift
243
+
244
+ ### Tokens Applied
245
+ - `background: var(--bg-surface)` or transparent
246
+ - `border-radius: var(--radius-none)`
247
+ - `box-shadow: var(--shadow-sm)` (none typically)
248
+ - `padding: var(--space-5)`
249
+
250
+ ---
251
+
252
+ ## Card Carousel (Platform / One Platform section)
253
+
254
+ A horizontally scrollable row of cards that loop. Each card holds a `<video>` or `<img>` with an absolute text label.
255
+
256
+ ### DOM Structure
257
+ ```html
258
+ <div class="card-carousel">
259
+ <div class="card-carousel__track">
260
+ <div class="card-carousel__card">
261
+ <video autoplay muted loop playsinline preload="none">
262
+ <source src="/videos/website-editing.webm" type="video/webm">
263
+ </video>
264
264
  <span class="card-carousel__label">Website editing</span>
265
- </div>
266
- <!-- repeat cards -->
267
- </div>
268
- </div>
269
- ```
270
-
271
- ### Key CSS
272
- ```css
273
- .card-carousel__card {
274
- position: relative;
275
- flex-shrink: 0;
276
- border-radius: var(--radius-none);
277
- overflow: hidden;
278
- }
279
-
280
- .card-carousel__label {
281
- position: absolute;
282
- bottom: var(--space-4);
283
- left: var(--space-4);
284
- font-family: var(--font-display);
285
- font-size: var(--text-sm);
286
- color: var(--text-inverse);
287
- background: rgba(0, 0, 0, 0.55);
288
- padding: var(--space-2) var(--space-3);
289
- }
290
- ```
291
-
292
- Cards use `preload="none"` — only hero video is eager-loaded.
293
-
294
- ---
295
-
296
- ## Section
297
-
298
- ### Hero Section
299
- - Full viewport dark background (`background: var(--bg-inverse)`)
300
- - Video background: `<video autoPlay muted loop playsInline preload="auto">` with WebM + MP4 sources
301
- - Dark overlay: `rgba(0, 0, 0, 0.52)` absolute layer over video
302
- - Centered content
303
- - Large headline: `font-family: var(--font-display)`, `font-size: var(--text-3xl)`, `font-weight: var(--font-light)`
304
- - Single CTA button (`.cta--primary.cta--light`)
305
-
306
- ### Content Section
307
- - Max-width container
308
- - Light background
309
- - H2 headline
310
- - Grid or flex content layout
311
-
312
- ### CTA Section
313
- - Colored background (teal or dark)
314
- - Centered headline + CTA
315
- - White text
316
-
317
- ### Footer
318
- - Dark background (`bg: var(--bg-inverse)`)
319
- - 4-column grid of links
320
- - Bottom row with legal text
321
- - `padding: var(--space-16) var(--space-8)`
322
-
323
- ---
324
-
325
- ## Typography Components
326
-
327
- ### Display Heading (H1)
328
- ```css
329
- font-family: var(--font-display);
330
- font-size: var(--text-3xl);
331
- font-weight: var(--font-light);
332
- color: var(--text-inverse);
333
- line-height: var(--leading-tight);
334
- ```
335
-
336
- ### Section Heading (H2)
337
- ```css
338
- font-family: var(--font-display);
339
- font-size: var(--text-xl);
340
- font-weight: var(--font-normal);
341
- color: var(--text-primary);
342
- line-height: var(--leading-normal);
343
- ```
344
-
345
- ### Serif Heading (H3)
346
- ```css
347
- font-family: var(--font-serif);
348
- font-size: var(--text-lg);
349
- font-weight: var(--font-normal);
350
- color: var(--text-inverse);
351
- ```
352
-
353
- ### Body Text
354
- ```css
355
- font-family: var(--font-body);
356
- font-size: var(--text-base);
357
- font-weight: var(--font-normal);
358
- color: var(--text-primary);
359
- line-height: var(--leading-relaxed);
360
- ```
361
-
362
- ### Caption/Muted
363
- ```css
364
- font-family: var(--font-body);
365
- font-size: var(--text-sm);
366
- font-weight: var(--font-normal);
367
- color: var(--text-muted);
368
- ```
265
+ </div>
266
+ <!-- repeat cards -->
267
+ </div>
268
+ </div>
269
+ ```
270
+
271
+ ### Key CSS
272
+ ```css
273
+ .card-carousel__card {
274
+ position: relative;
275
+ flex-shrink: 0;
276
+ border-radius: var(--radius-none);
277
+ overflow: hidden;
278
+ }
279
+
280
+ .card-carousel__label {
281
+ position: absolute;
282
+ bottom: var(--space-4);
283
+ left: var(--space-4);
284
+ font-family: var(--font-display);
285
+ font-size: var(--text-sm);
286
+ color: var(--text-inverse);
287
+ background: rgba(0, 0, 0, 0.55);
288
+ padding: var(--space-2) var(--space-3);
289
+ }
290
+ ```
291
+
292
+ Cards use `preload="none"` — only hero video is eager-loaded.
293
+
294
+ ---
295
+
296
+ ## Section
297
+
298
+ ### Hero Section
299
+ - Full viewport dark background (`background: var(--bg-inverse)`)
300
+ - Video background: `<video autoPlay muted loop playsInline preload="auto">` with WebM + MP4 sources
301
+ - Dark overlay: `rgba(0, 0, 0, 0.52)` absolute layer over video
302
+ - Centered content
303
+ - Large headline: `font-family: var(--font-display)`, `font-size: var(--text-3xl)`, `font-weight: var(--font-light)`
304
+ - Single CTA button (`.cta--primary.cta--light`)
305
+
306
+ ### Content Section
307
+ - Max-width container
308
+ - Light background
309
+ - H2 headline
310
+ - Grid or flex content layout
311
+
312
+ ### CTA Section
313
+ - Colored background (teal or dark)
314
+ - Centered headline + CTA
315
+ - White text
316
+
317
+ ### Footer
318
+ - Dark background (`bg: var(--bg-inverse)`)
319
+ - 4-column grid of links
320
+ - Bottom row with legal text
321
+ - `padding: var(--space-16) var(--space-8)`
322
+
323
+ ---
324
+
325
+ ## Typography Components
326
+
327
+ ### Display Heading (H1)
328
+ ```css
329
+ font-family: var(--font-display);
330
+ font-size: var(--text-3xl);
331
+ font-weight: var(--font-light);
332
+ color: var(--text-inverse);
333
+ line-height: var(--leading-tight);
334
+ ```
335
+
336
+ ### Section Heading (H2)
337
+ ```css
338
+ font-family: var(--font-display);
339
+ font-size: var(--text-xl);
340
+ font-weight: var(--font-normal);
341
+ color: var(--text-primary);
342
+ line-height: var(--leading-normal);
343
+ ```
344
+
345
+ ### Serif Heading (H3)
346
+ ```css
347
+ font-family: var(--font-serif);
348
+ font-size: var(--text-lg);
349
+ font-weight: var(--font-normal);
350
+ color: var(--text-inverse);
351
+ ```
352
+
353
+ ### Body Text
354
+ ```css
355
+ font-family: var(--font-body);
356
+ font-size: var(--text-base);
357
+ font-weight: var(--font-normal);
358
+ color: var(--text-primary);
359
+ line-height: var(--leading-relaxed);
360
+ ```
361
+
362
+ ### Caption/Muted
363
+ ```css
364
+ font-family: var(--font-body);
365
+ font-size: var(--text-sm);
366
+ font-weight: var(--font-normal);
367
+ color: var(--text-muted);
368
+ ```