@invisibleloop/pulse 0.20.6 → 0.20.8

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 (94) hide show
  1. package/AGENTS.md +697 -0
  2. package/docs/public/docs.css +6 -6
  3. package/docs/public/home-brut.css +175 -191
  4. package/docs/public/theme.css +51 -7
  5. package/docs/src/lib/component-page.js +2 -1
  6. package/docs/src/pages/accessibility.js +2 -1
  7. package/docs/src/pages/actions.js +2 -1
  8. package/docs/src/pages/auth.js +2 -1
  9. package/docs/src/pages/caching.js +2 -1
  10. package/docs/src/pages/components/accordion.js +2 -1
  11. package/docs/src/pages/components/alert.js +2 -1
  12. package/docs/src/pages/components/app-badge.js +2 -1
  13. package/docs/src/pages/components/avatar.js +2 -1
  14. package/docs/src/pages/components/badge.js +2 -1
  15. package/docs/src/pages/components/breadcrumbs.js +2 -1
  16. package/docs/src/pages/components/button.js +2 -1
  17. package/docs/src/pages/components/card.js +2 -1
  18. package/docs/src/pages/components/charts.js +2 -1
  19. package/docs/src/pages/components/checkbox.js +2 -1
  20. package/docs/src/pages/components/cluster.js +2 -1
  21. package/docs/src/pages/components/container.js +2 -1
  22. package/docs/src/pages/components/cta.js +2 -1
  23. package/docs/src/pages/components/divider.js +2 -1
  24. package/docs/src/pages/components/empty.js +2 -1
  25. package/docs/src/pages/components/feature.js +2 -1
  26. package/docs/src/pages/components/fieldset.js +2 -1
  27. package/docs/src/pages/components/fileupload.js +2 -1
  28. package/docs/src/pages/components/footer.js +2 -1
  29. package/docs/src/pages/components/grid.js +2 -1
  30. package/docs/src/pages/components/heading.js +2 -1
  31. package/docs/src/pages/components/hero.js +2 -1
  32. package/docs/src/pages/components/icons.js +2 -1
  33. package/docs/src/pages/components/image.js +2 -1
  34. package/docs/src/pages/components/input.js +2 -1
  35. package/docs/src/pages/components/media.js +2 -1
  36. package/docs/src/pages/components/modal.js +2 -1
  37. package/docs/src/pages/components/nav.js +2 -1
  38. package/docs/src/pages/components/phone-frame.js +2 -1
  39. package/docs/src/pages/components/progress.js +2 -1
  40. package/docs/src/pages/components/prose.js +2 -1
  41. package/docs/src/pages/components/pullquote.js +2 -1
  42. package/docs/src/pages/components/radio.js +2 -1
  43. package/docs/src/pages/components/rating.js +2 -1
  44. package/docs/src/pages/components/search.js +2 -1
  45. package/docs/src/pages/components/section.js +2 -1
  46. package/docs/src/pages/components/segmented.js +2 -1
  47. package/docs/src/pages/components/select.js +2 -1
  48. package/docs/src/pages/components/slider.js +2 -1
  49. package/docs/src/pages/components/spinner.js +2 -1
  50. package/docs/src/pages/components/stack.js +2 -1
  51. package/docs/src/pages/components/stat.js +2 -1
  52. package/docs/src/pages/components/stepper.js +2 -1
  53. package/docs/src/pages/components/table.js +2 -1
  54. package/docs/src/pages/components/textarea.js +2 -1
  55. package/docs/src/pages/components/toggle.js +2 -1
  56. package/docs/src/pages/components/tooltip.js +2 -1
  57. package/docs/src/pages/components.js +2 -1
  58. package/docs/src/pages/config.js +2 -1
  59. package/docs/src/pages/constraints.js +2 -1
  60. package/docs/src/pages/deploy.js +2 -1
  61. package/docs/src/pages/error-pages.js +2 -1
  62. package/docs/src/pages/extending.js +2 -1
  63. package/docs/src/pages/faq.js +2 -1
  64. package/docs/src/pages/forms.js +2 -1
  65. package/docs/src/pages/getting-started.js +2 -1
  66. package/docs/src/pages/guard.js +2 -1
  67. package/docs/src/pages/home.js +8 -14
  68. package/docs/src/pages/how-it-works.js +2 -1
  69. package/docs/src/pages/hydration.js +2 -1
  70. package/docs/src/pages/images.js +2 -1
  71. package/docs/src/pages/markdown.js +2 -1
  72. package/docs/src/pages/meta.js +2 -1
  73. package/docs/src/pages/mutations.js +2 -1
  74. package/docs/src/pages/navigation.js +2 -1
  75. package/docs/src/pages/performance.js +2 -1
  76. package/docs/src/pages/persist.js +2 -1
  77. package/docs/src/pages/project-structure.js +2 -1
  78. package/docs/src/pages/prompt-examples.js +2 -1
  79. package/docs/src/pages/raw-responses.js +2 -1
  80. package/docs/src/pages/routing.js +2 -1
  81. package/docs/src/pages/server-api.js +2 -1
  82. package/docs/src/pages/server-data.js +2 -1
  83. package/docs/src/pages/slash-commands.js +2 -1
  84. package/docs/src/pages/spec.js +2 -1
  85. package/docs/src/pages/state.js +2 -1
  86. package/docs/src/pages/store.js +2 -1
  87. package/docs/src/pages/streaming.js +2 -1
  88. package/docs/src/pages/stripe.js +2 -1
  89. package/docs/src/pages/supabase.js +2 -1
  90. package/docs/src/pages/templates.js +2 -2
  91. package/docs/src/pages/testing.js +2 -1
  92. package/docs/src/pages/validation.js +2 -1
  93. package/package.json +1 -1
  94. package/public/.pulse-ui-version +1 -1
@@ -1,13 +1,12 @@
1
- /* home-brut.css — brutalist home page layout */
2
- /* No hex values here — all colour values are in docs.css tokens */
1
+ /* home-brut.css — light-theme home page layout */
2
+ /* No hex values here — all colour values are in theme.css tokens, scoped to [data-theme="light"] */
3
3
 
4
4
  /* ─── Layout root ─────────────────────────────────────────────────────────── */
5
5
  .brut {
6
6
  min-height: 100vh;
7
- background: var(--brut-yellow);
7
+ background: var(--brut-surface);
8
8
  color: var(--brut-ink);
9
9
  font-family: "Inter", var(--font);
10
- --brut-muted: var(--brut-ink);
11
10
  }
12
11
 
13
12
  /* ─── Nav ─────────────────────────────────────────────────────────────────── */
@@ -17,8 +16,8 @@
17
16
  justify-content: space-between;
18
17
  padding: 0 2rem;
19
18
  height: 52px;
20
- background: var(--brut-ink);
21
- border-bottom: 3px solid var(--brut-yellow);
19
+ background: var(--brut-surface);
20
+ border-bottom: 2px solid var(--brut-ink);
22
21
  position: sticky;
23
22
  top: 0;
24
23
  z-index: 100;
@@ -28,14 +27,14 @@
28
27
  display: flex;
29
28
  align-items: center;
30
29
  gap: 0.5rem;
31
- color: var(--brut-yellow);
30
+ color: var(--brut-ink);
32
31
  font-weight: 900;
33
32
  font-size: 1rem;
34
33
  letter-spacing: 0.12em;
35
34
  text-decoration: none;
36
35
  }
37
36
  .brut-nav-logo:hover {
38
- color: var(--brut-surface);
37
+ color: var(--brut-muted);
39
38
  }
40
39
 
41
40
  .brut-nav-links {
@@ -45,7 +44,7 @@
45
44
  }
46
45
 
47
46
  .brut-nav-links a {
48
- color: rgba(255, 255, 255, 0.7);
47
+ color: var(--brut-muted);
49
48
  font-size: 0.875rem;
50
49
  font-weight: 600;
51
50
  text-decoration: none;
@@ -53,109 +52,97 @@
53
52
  height: 52px;
54
53
  display: flex;
55
54
  align-items: center;
56
- border-left: 1px solid rgba(255, 255, 255, 0.1);
55
+ border-left: 1px solid var(--brut-surface-2);
57
56
  transition:
58
57
  color 0.1s,
59
58
  background 0.1s;
60
59
  }
61
60
  .brut-nav-links a:hover {
62
- color: var(--brut-surface);
63
- background: rgba(255, 255, 255, 0.06);
61
+ color: var(--brut-ink);
62
+ background: var(--brut-surface-2);
64
63
  }
65
64
 
66
65
  .brut-nav-cta {
67
- background: var(--brut-yellow) !important;
68
- color: var(--brut-ink) !important;
66
+ background: var(--brut-ink) !important;
67
+ color: var(--brut-surface) !important;
69
68
  font-weight: 800 !important;
70
69
  letter-spacing: 0.04em;
71
70
  }
72
71
  .brut-nav-cta:hover {
73
- background: var(--brut-surface) !important;
72
+ background: var(--brut-gold) !important;
74
73
  color: var(--brut-ink) !important;
75
74
  }
76
75
 
77
76
  /* ─── Hero ────────────────────────────────────────────────────────────────── */
78
77
  .brut-hero {
79
- display: grid;
80
- grid-template-columns: 1fr 50%;
81
- grid-template-rows: auto 1fr;
82
- gap: 0;
83
- border-bottom: 3px solid var(--brut-ink);
84
- min-height: 60vh;
78
+ display: flex;
79
+ flex-direction: column;
80
+ align-items: center;
81
+ text-align: center;
82
+ border-bottom: 2px solid var(--brut-ink);
85
83
  position: relative;
84
+ background-image: radial-gradient(var(--brut-surface-dot) 1.5px, transparent 1.5px);
85
+ background-size: 22px 22px;
86
86
  }
87
87
 
88
88
  .brut-hero-tag {
89
- grid-column: 1 / -1;
89
+ width: 100%;
90
90
  background: var(--brut-ink);
91
- color: var(--brut-yellow);
91
+ color: var(--brut-gold);
92
92
  font-size: 0.72rem;
93
93
  font-weight: 800;
94
94
  letter-spacing: 0.15em;
95
95
  text-transform: uppercase;
96
96
  padding: 0.55rem 2.5rem;
97
- border-bottom: 3px solid var(--brut-yellow);
97
+ text-align: center;
98
98
  }
99
99
 
100
100
  .brut-hero-h1 {
101
- grid-column: 1;
102
- grid-row: 2;
103
- padding: 3rem 2.5rem 3rem;
101
+ padding: 4rem 2.5rem 1.5rem;
104
102
  display: flex;
105
103
  flex-direction: column;
104
+ align-items: center;
106
105
  gap: 0;
107
- line-height: 0.88;
106
+ line-height: 0.95;
108
107
  font-weight: 900;
109
108
  letter-spacing: -0.04em;
110
- border-right: 3px solid var(--brut-ink);
111
- align-self: stretch;
109
+ max-width: 56rem;
112
110
  }
113
111
 
114
112
  .brut-hero-kicker {
115
113
  display: block;
116
- font-size: 1.5rem;
117
- font-weight: 600;
118
- letter-spacing: 0.08em;
119
- text-transform: lowercase;
114
+ font-size: 1rem;
115
+ font-weight: 700;
116
+ letter-spacing: 0.1em;
117
+ text-transform: uppercase;
120
118
  color: var(--brut-muted);
121
- margin-bottom: 1rem;
119
+ margin-bottom: 1.25rem;
122
120
  }
123
121
 
124
122
  .brut-hero-line1 {
125
- font-size: clamp(4rem, 11vw, 10rem);
123
+ font-size: clamp(3rem, 6vw, 5.5rem);
126
124
  display: block;
125
+ color: var(--brut-ink);
127
126
  }
127
+
128
128
  .brut-hero-line2 {
129
+ font-size: clamp(3rem, 6vw, 5.5rem);
129
130
  display: block;
130
- font-size: clamp(4rem, 11vw, 10rem);
131
- line-height: 0.88;
132
- }
133
- .brut-hero-svg {
134
- display: block;
135
- width: auto;
136
- height: 0.88em;
137
- font-size: inherit;
138
- overflow: visible;
139
- }
140
- .brut-hero-svg-text {
141
- font-size: clamp(4rem, 11vw, 10rem);
142
- letter-spacing: 0.01em;
131
+ line-height: 1.05;
132
+ margin-top: 0.1em;
143
133
  }
144
- .brut-hero-line3 {
145
- font-size: clamp(2rem, 5.5vw, 5rem);
146
- display: block;
147
- line-height: 1;
148
- margin-top: 0.5rem;
134
+
135
+ .brut-hero-mark {
136
+ color: inherit;
149
137
  }
150
138
 
151
139
  .brut-hero-aside {
152
- grid-column: 2;
153
- grid-row: 2;
154
- padding: 3rem 2.5rem 3rem;
140
+ padding: 0.5rem 2.5rem 4rem;
155
141
  display: flex;
156
142
  flex-direction: column;
143
+ align-items: center;
157
144
  gap: 1.5rem;
158
- justify-content: flex-end;
145
+ max-width: 42rem;
159
146
  }
160
147
 
161
148
  .brut-hero-tag-inline {
@@ -175,14 +162,16 @@
175
162
  .brut-hero-sub {
176
163
  font-size: 0.95rem;
177
164
  color: var(--brut-ink);
178
- border-left: 4px solid var(--brut-ink);
179
- padding-left: 1rem;
165
+ border-top: 2px solid var(--brut-gold);
166
+ padding-top: 1rem;
167
+ text-align: center;
180
168
  }
181
169
 
182
170
  .brut-hero-ctas {
183
171
  display: flex;
184
172
  gap: 0;
185
173
  margin-top: 0.5rem;
174
+ justify-content: center;
186
175
  }
187
176
 
188
177
  /* ─── Buttons ─────────────────────────────────────────────────────────────── */
@@ -192,30 +181,31 @@
192
181
  justify-content: center;
193
182
  padding: 0.85rem 1.75rem;
194
183
  background: var(--brut-ink);
195
- color: var(--brut-yellow);
184
+ color: var(--brut-surface);
196
185
  font-size: 0.9rem;
197
186
  font-weight: 800;
198
187
  letter-spacing: 0.08em;
199
188
  text-transform: uppercase;
200
189
  text-decoration: none;
201
- border: 3px solid var(--brut-ink);
190
+ border: 2px solid var(--brut-ink);
202
191
  transition:
203
192
  background 0.1s,
204
193
  color 0.1s;
205
194
  }
206
195
  .brut-btn-primary:hover {
207
- background: var(--brut-yellow);
196
+ background: var(--brut-gold);
208
197
  color: var(--brut-ink);
198
+ border-color: var(--brut-gold);
209
199
  }
210
200
  .brut-btn-primary--inv {
211
- background: var(--brut-yellow);
201
+ background: var(--brut-gold);
212
202
  color: var(--brut-ink);
213
- border-color: var(--brut-yellow);
203
+ border-color: var(--brut-gold);
214
204
  }
215
205
  .brut-btn-primary--inv:hover {
216
- background: var(--brut-ink);
217
- color: var(--brut-yellow);
218
- border-color: var(--brut-ink);
206
+ background: var(--brut-surface);
207
+ color: var(--brut-ink);
208
+ border-color: var(--brut-surface);
219
209
  }
220
210
 
221
211
  .brut-btn-ghost {
@@ -230,23 +220,24 @@
230
220
  letter-spacing: 0.08em;
231
221
  text-transform: uppercase;
232
222
  text-decoration: none;
233
- border: 3px solid var(--brut-ink);
223
+ border: 2px solid var(--brut-ink);
234
224
  border-left: none;
235
225
  transition: background 0.1s;
236
226
  }
237
227
  .brut-btn-ghost:hover {
238
- background: rgba(10, 10, 10, 0.08);
228
+ background: var(--brut-surface-2);
239
229
  color: var(--brut-ink);
240
230
  }
241
231
 
242
232
  .brut-btn-ghost--light {
243
- color: var(--brut-yellow);
244
- border-color: var(--brut-yellow);
233
+ color: var(--brut-surface);
234
+ border-color: var(--brut-surface);
245
235
  border-left: none;
246
236
  }
247
237
  .brut-btn-ghost--light:hover {
248
- background: rgba(240, 230, 66, 0.12);
249
- color: var(--brut-yellow);
238
+ background: var(--brut-darker);
239
+ color: var(--brut-gold);
240
+ border-color: var(--brut-gold);
250
241
  }
251
242
 
252
243
  /* ─── Stats bar ───────────────────────────────────────────────────────────── */
@@ -254,15 +245,16 @@
254
245
  display: grid;
255
246
  grid-template-columns: repeat(4, 1fr);
256
247
  background: var(--brut-ink);
257
- border-bottom: 3px solid var(--brut-yellow);
258
248
  }
259
249
 
260
250
  .brut-stat {
261
251
  display: flex;
262
252
  flex-direction: column;
253
+ align-items: center;
254
+ text-align: center;
263
255
  gap: 0.3rem;
264
256
  padding: 1.75rem 2rem;
265
- border-right: 1px solid rgba(255, 255, 255, 0.1);
257
+ border-right: 1px solid rgba(250, 248, 242, 0.12);
266
258
  }
267
259
  .brut-stat:last-child {
268
260
  border-right: none;
@@ -271,22 +263,22 @@
271
263
  .brut-stat-val {
272
264
  font-size: 2.25rem;
273
265
  font-weight: 900;
274
- color: var(--brut-yellow);
266
+ color: var(--brut-gold);
275
267
  letter-spacing: -0.03em;
276
268
  line-height: 1;
277
269
  }
278
270
 
279
271
  .brut-stat-lbl {
280
272
  font-size: 0.78rem;
281
- color: rgba(255, 255, 255, 0.55);
273
+ color: rgba(250, 248, 242, 0.6);
282
274
  font-weight: 500;
283
275
  line-height: 1.4;
284
276
  }
285
277
 
286
278
  /* ─── The idea ────────────────────────────────────────────────────────────── */
287
279
  .brut-idea {
288
- border-bottom: 3px solid var(--brut-ink);
289
- padding: 4rem 2.5rem;
280
+ border-bottom: 2px solid var(--brut-ink);
281
+ padding: 4.5rem 2.5rem;
290
282
  }
291
283
 
292
284
  .brut-idea-label {
@@ -294,6 +286,7 @@
294
286
  font-weight: 900;
295
287
  letter-spacing: 0.18em;
296
288
  text-transform: uppercase;
289
+ color: var(--brut-muted);
297
290
  margin-bottom: 2.5rem;
298
291
  padding-bottom: 1rem;
299
292
  border-bottom: 1px solid var(--brut-ink);
@@ -306,9 +299,8 @@
306
299
  }
307
300
 
308
301
  .brut-idea-step {
309
- padding: 2rem 2.5rem 2rem 0;
310
- border-right: 3px solid var(--brut-ink);
311
- padding-right: 2.5rem;
302
+ padding: 0 2.5rem 0 0;
303
+ border-right: 2px solid var(--brut-ink);
312
304
  }
313
305
  .brut-idea-step:first-child {
314
306
  padding-left: 0;
@@ -323,17 +315,19 @@
323
315
  }
324
316
 
325
317
  .brut-idea-num {
326
- font-size: 3.5rem;
318
+ display: inline-block;
319
+ font-size: 1rem;
327
320
  font-weight: 900;
328
321
  line-height: 1;
329
- letter-spacing: -0.04em;
330
- color: transparent;
331
- -webkit-text-stroke: 2px var(--brut-ink);
332
- margin-bottom: 1rem;
322
+ letter-spacing: 0.02em;
323
+ color: var(--brut-ink);
324
+ background: var(--brut-gold);
325
+ padding: 0.4em 0.6em;
326
+ margin-bottom: 1.5rem;
333
327
  }
334
328
 
335
329
  .brut-idea-step h2 {
336
- font-size: 1.1rem;
330
+ font-size: 1.2rem;
337
331
  font-weight: 800;
338
332
  letter-spacing: -0.01em;
339
333
  margin-bottom: 0.75rem;
@@ -348,13 +342,18 @@
348
342
  /* ─── Code section ────────────────────────────────────────────────────────── */
349
343
  .brut-code-section {
350
344
  background: var(--brut-dark);
351
- border-bottom: 3px solid var(--brut-yellow);
345
+ border-bottom: 2px solid var(--brut-ink);
352
346
  padding: 5rem 2.5rem 6rem;
347
+ display: grid;
348
+ grid-template-columns: 1fr 1.4fr;
349
+ gap: 3rem;
350
+ align-items: start;
353
351
  }
354
352
 
355
353
  .brut-code-header {
356
- margin-bottom: 3rem;
357
- max-width: 600px;
354
+ max-width: 360px;
355
+ position: sticky;
356
+ top: 6rem;
358
357
  }
359
358
 
360
359
  .brut-code-header h2 {
@@ -368,17 +367,23 @@
368
367
 
369
368
  .brut-code-header p {
370
369
  font-size: 1.05rem;
371
- color: rgba(255, 255, 255, 0.5);
370
+ color: rgba(250, 248, 242, 0.6);
372
371
  line-height: 1.7;
373
372
  }
374
373
 
375
374
  .brut-code-block {
376
375
  max-width: 900px;
376
+ min-width: 0;
377
+ }
378
+
379
+ /* Code window on dark bg within an otherwise light page — keep it legible */
380
+ .brut-code-block .ui-code-window {
381
+ border: 1px solid rgba(250, 248, 242, 0.14);
377
382
  }
378
383
 
379
384
  /* ─── Constraint / AI section ─────────────────────────────────────────────── */
380
385
  .brut-constraint {
381
- border-bottom: 3px solid var(--brut-ink);
386
+ border-bottom: 2px solid var(--brut-ink);
382
387
  }
383
388
 
384
389
  .brut-constraint-inner {
@@ -390,13 +395,14 @@
390
395
  font-weight: 900;
391
396
  letter-spacing: 0.18em;
392
397
  text-transform: uppercase;
398
+ color: var(--brut-muted);
393
399
  margin-bottom: 1.5rem;
394
400
  }
395
401
 
396
402
  .brut-constraint-h2 {
397
- font-size: clamp(2.5rem, 6vw, 5rem);
403
+ font-size: clamp(2.25rem, 5vw, 4rem);
398
404
  font-weight: 900;
399
- line-height: 0.95;
405
+ line-height: 1;
400
406
  letter-spacing: -0.04em;
401
407
  margin-bottom: 2rem;
402
408
  }
@@ -413,16 +419,15 @@
413
419
  display: grid;
414
420
  grid-template-columns: 1fr 1fr;
415
421
  gap: 0;
416
- border-top: 3px solid var(--brut-ink);
422
+ border-top: 2px solid var(--brut-ink);
417
423
  }
418
424
 
419
425
  .brut-col {
420
426
  padding: 2rem 2.5rem 2rem 0;
421
- border-right: 3px solid var(--brut-ink);
427
+ border-right: 2px solid var(--brut-ink);
422
428
  }
423
429
 
424
430
  .brut-col--hi {
425
- padding: 2rem 0 2rem 2.5rem;
426
431
  border-right: none;
427
432
  background: var(--brut-ink);
428
433
  color: var(--brut-surface);
@@ -440,7 +445,7 @@
440
445
  }
441
446
 
442
447
  .brut-col-head--hi {
443
- color: var(--brut-yellow);
448
+ color: var(--brut-gold);
444
449
  }
445
450
 
446
451
  .brut-col-list {
@@ -455,7 +460,7 @@
455
460
  line-height: 1.6;
456
461
  padding-left: 1.25rem;
457
462
  position: relative;
458
- color: rgba(10, 10, 10, 0.7);
463
+ color: var(--brut-ink);
459
464
  }
460
465
 
461
466
  .brut-col-list li::before {
@@ -463,25 +468,32 @@
463
468
  position: absolute;
464
469
  left: 0;
465
470
  font-weight: 700;
471
+ color: var(--brut-muted);
466
472
  }
467
473
 
468
474
  .brut-col--hi .brut-col-list li {
469
- color: rgba(255, 255, 255, 0.75);
475
+ color: rgba(250, 248, 242, 0.85);
470
476
  }
471
477
 
472
478
  .brut-col--hi .brut-col-list li::before {
473
- color: var(--brut-yellow);
479
+ color: var(--brut-gold);
474
480
  }
475
481
 
476
482
  /* ─── Versus ──────────────────────────────────────────────────────────────── */
477
483
  .brut-versus {
478
484
  background: var(--brut-ink);
479
- border-bottom: 3px solid var(--brut-yellow);
485
+ border-bottom: 2px solid var(--brut-ink);
480
486
  padding: 5rem 2.5rem;
487
+ display: grid;
488
+ grid-template-columns: 1fr 1.4fr;
489
+ gap: 3rem;
490
+ align-items: start;
481
491
  }
482
492
 
483
493
  .brut-versus-header {
484
- margin-bottom: 3rem;
494
+ max-width: 360px;
495
+ position: sticky;
496
+ top: 6rem;
485
497
  }
486
498
 
487
499
  .brut-versus-label {
@@ -489,7 +501,7 @@
489
501
  font-weight: 900;
490
502
  letter-spacing: 0.18em;
491
503
  text-transform: uppercase;
492
- color: var(--brut-yellow);
504
+ color: var(--brut-gold);
493
505
  margin-bottom: 1rem;
494
506
  }
495
507
 
@@ -507,25 +519,25 @@
507
519
  border-collapse: collapse;
508
520
  font-size: 0.9rem;
509
521
  text-align: left;
510
- border: 2px solid rgba(255, 255, 255, 0.15);
522
+ border: 2px solid rgba(250, 248, 242, 0.15);
511
523
  }
512
524
 
513
525
  .brut-table thead {
514
- background: rgba(240, 230, 66, 0.08);
526
+ background: rgba(232, 182, 19, 0.1);
515
527
  }
516
528
 
517
529
  .brut-table thead th {
518
530
  padding: 0.85rem 1.1rem;
519
- color: rgba(255, 255, 255, 0.6);
531
+ color: rgba(250, 248, 242, 0.6);
520
532
  font-size: 0.72rem;
521
533
  font-weight: 800;
522
534
  text-transform: uppercase;
523
535
  letter-spacing: 0.12em;
524
- border-bottom: 2px solid rgba(255, 255, 255, 0.12);
536
+ border-bottom: 2px solid rgba(250, 248, 242, 0.12);
525
537
  }
526
538
 
527
539
  .brut-th-pulse {
528
- color: var(--brut-yellow) !important;
540
+ color: var(--brut-gold) !important;
529
541
  }
530
542
 
531
543
  .brut-table thead th:first-child,
@@ -534,7 +546,7 @@
534
546
  }
535
547
 
536
548
  .brut-table tbody tr:nth-child(odd) {
537
- background: rgba(255, 255, 255, 0.03);
549
+ background: rgba(250, 248, 242, 0.03);
538
550
  }
539
551
 
540
552
  .brut-table tbody tr:nth-child(odd) th[scope="row"] {
@@ -543,46 +555,46 @@
543
555
 
544
556
  .brut-table td {
545
557
  padding: 0.9rem 1.1rem;
546
- border-bottom: 1px solid rgba(255, 255, 255, 0.06);
547
- color: rgba(255, 255, 255, 0.4);
558
+ border-bottom: 1px solid rgba(250, 248, 242, 0.08);
559
+ color: rgba(250, 248, 242, 0.55);
548
560
  vertical-align: top;
549
561
  line-height: 1.55;
550
562
  }
551
563
 
552
564
  .brut-table th[scope="row"] {
553
565
  padding: 0.9rem 1.1rem;
554
- border-bottom: 1px solid rgba(255, 255, 255, 0.06);
555
- color: rgba(255, 255, 255, 0.75);
566
+ border-bottom: 1px solid rgba(250, 248, 242, 0.08);
567
+ color: rgba(250, 248, 242, 0.85);
556
568
  font-weight: 600;
557
569
  font-size: 0.87rem;
558
570
  text-align: left;
559
571
  }
560
572
 
561
573
  .brut-table tr:hover td {
562
- background: rgba(255, 255, 255, 0.06);
574
+ background: rgba(250, 248, 242, 0.06);
563
575
  }
564
576
 
565
577
  .brut-table .v-yes {
566
- color: var(--brut-yellow);
578
+ color: var(--brut-gold);
567
579
  }
568
580
 
569
581
  .brut-table .v-partial,
570
582
  .brut-table .v-no {
571
- color: rgba(255, 255, 255, 0.65);
583
+ color: rgba(250, 248, 242, 0.7);
572
584
  }
573
585
 
574
586
  .brut-table code {
575
587
  font-family: var(--mono);
576
588
  font-size: 0.8em;
577
- background: rgba(255, 255, 255, 0.12);
589
+ background: rgba(250, 248, 242, 0.12);
578
590
  border-radius: 3px;
579
591
  padding: 0.1em 0.35em;
580
- color: rgba(255, 255, 255, 0.85);
592
+ color: rgba(250, 248, 242, 0.9);
581
593
  }
582
594
 
583
595
  /* ─── Pillars ─────────────────────────────────────────────────────────────── */
584
596
  .brut-pillars {
585
- border-bottom: 3px solid var(--brut-ink);
597
+ border-bottom: 2px solid var(--brut-ink);
586
598
  display: flex;
587
599
  flex-direction: column;
588
600
  gap: 0;
@@ -592,21 +604,21 @@
592
604
  display: grid;
593
605
  grid-template-columns: 100px 1fr;
594
606
  gap: 0;
595
- border-bottom: 2px solid var(--brut-ink);
607
+ border-bottom: 1px solid var(--brut-surface-2);
596
608
  }
597
609
  .brut-pillar:last-child {
598
610
  border-bottom: none;
599
611
  }
600
612
 
601
613
  .brut-pillar--alt {
602
- background: rgba(10, 10, 10, 0.04);
614
+ background: var(--brut-surface-2);
603
615
  }
604
616
 
605
617
  .brut-pillar-icon {
606
618
  display: flex;
607
619
  align-items: center;
608
620
  justify-content: center;
609
- border-right: 3px solid var(--brut-ink);
621
+ border-right: 2px solid var(--brut-ink);
610
622
  padding: 2.5rem 0;
611
623
  }
612
624
  .brut-pillar-icon svg {
@@ -638,14 +650,14 @@
638
650
  .brut-pillar-body code {
639
651
  font-family: var(--mono);
640
652
  font-size: 0.85em;
641
- background: rgba(10, 10, 10, 0.08);
653
+ background: var(--brut-surface-2);
642
654
  border-radius: 3px;
643
655
  padding: 0.1em 0.35em;
644
656
  }
645
657
 
646
658
  /* ─── Metrics ─────────────────────────────────────────────────────────────── */
647
659
  .brut-metrics {
648
- border-bottom: 3px solid var(--brut-ink);
660
+ border-bottom: 2px solid var(--brut-ink);
649
661
  padding: 5rem 2.5rem;
650
662
  }
651
663
 
@@ -654,6 +666,7 @@
654
666
  font-weight: 900;
655
667
  letter-spacing: 0.18em;
656
668
  text-transform: uppercase;
669
+ color: var(--brut-muted);
657
670
  margin-bottom: 1rem;
658
671
  }
659
672
 
@@ -675,12 +688,12 @@
675
688
  display: grid;
676
689
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
677
690
  gap: 0;
678
- border: 3px solid var(--brut-ink);
691
+ border: 2px solid var(--brut-ink);
679
692
  }
680
693
 
681
694
  .brut-metrics-group {
682
695
  padding: 1.5rem 1.75rem;
683
- border-right: 2px solid var(--brut-ink);
696
+ border-right: 1px solid var(--brut-surface-2);
684
697
  display: flex;
685
698
  flex-direction: column;
686
699
  gap: 1rem;
@@ -717,7 +730,7 @@
717
730
  }
718
731
 
719
732
  .brut-metric-val--accent {
720
- color: var(--brut-ink);
733
+ color: var(--brut-muted);
721
734
  }
722
735
 
723
736
  .brut-metric-lbl {
@@ -730,47 +743,20 @@
730
743
  .brut-cta {
731
744
  background: var(--brut-ink);
732
745
  padding: 6rem 2.5rem;
733
- border-bottom: 3px solid var(--brut-yellow);
734
746
  }
735
747
 
736
748
  .brut-cta-h2 {
737
- font-size: clamp(2.5rem, 7vw, 6rem);
749
+ font-size: clamp(2.25rem, 6vw, 5rem);
738
750
  font-weight: 900;
739
- line-height: 0.95;
751
+ line-height: 1;
740
752
  letter-spacing: -0.04em;
741
753
  color: var(--brut-surface);
742
754
  margin-bottom: 3rem;
743
755
  }
744
756
 
745
- .brut-cta-list {
746
- list-style: none;
747
- display: flex;
748
- flex-direction: column;
749
- gap: 0;
750
- margin-bottom: 2.5rem;
751
- border-top: 1px solid rgba(255, 255, 255, 0.12);
752
- }
753
-
754
- .brut-cta-list li {
755
- font-size: 1rem;
756
- color: rgba(255, 255, 255, 0.7);
757
- padding: 0.85rem 0;
758
- border-bottom: 1px solid rgba(255, 255, 255, 0.08);
759
- padding-left: 1.5rem;
760
- position: relative;
761
- }
762
-
763
- .brut-cta-list li::before {
764
- content: "→";
765
- position: absolute;
766
- left: 0;
767
- color: var(--brut-yellow);
768
- font-weight: 700;
769
- }
770
-
771
757
  .brut-cta-lead {
772
758
  font-size: 1.1rem;
773
- color: rgba(255, 255, 255, 0.7);
759
+ color: rgba(250, 248, 242, 0.75);
774
760
  line-height: 1.75;
775
761
  max-width: 60ch;
776
762
  margin-bottom: 2rem;
@@ -778,7 +764,7 @@
778
764
 
779
765
  .brut-cta-note {
780
766
  font-size: 0.95rem;
781
- color: rgba(255, 255, 255, 0.6);
767
+ color: rgba(250, 248, 242, 0.6);
782
768
  line-height: 1.7;
783
769
  max-width: 60ch;
784
770
  margin-bottom: 2.5rem;
@@ -791,57 +777,42 @@
791
777
 
792
778
  /* ─── Footer ──────────────────────────────────────────────────────────────── */
793
779
  .brut-footer {
794
- background: var(--brut-ink);
795
- border-top: 1px solid rgba(255, 255, 255, 0.08);
780
+ background: var(--brut-surface);
781
+ border-top: 2px solid var(--brut-ink);
796
782
  padding: 1.5rem 2.5rem;
797
783
  display: flex;
798
784
  align-items: center;
799
785
  gap: 0;
800
786
  font-size: 0.82rem;
801
- color: rgba(255, 255, 255, 0.65);
787
+ color: var(--brut-muted);
802
788
  }
803
789
 
804
790
  .brut-footer a {
805
- color: rgba(255, 255, 255, 0.6);
791
+ color: var(--brut-muted);
806
792
  text-decoration: none;
807
793
  }
808
794
  .brut-footer a:hover {
809
- color: var(--brut-yellow);
795
+ color: var(--brut-muted);
810
796
  }
811
797
 
812
798
  .brut-footer-sep {
813
799
  margin: 0 0.75rem;
814
- color: rgba(255, 255, 255, 0.2);
800
+ color: var(--brut-surface-2);
815
801
  }
816
802
 
817
803
  /* ─── Mobile ──────────────────────────────────────────────────────────────── */
818
804
  @media (max-width: 900px) {
819
- .brut-hero {
820
- grid-template-columns: 1fr;
821
- min-height: auto;
822
- }
823
-
824
805
  .brut-hero-h1 {
825
- border-right: none;
826
- border-bottom: 3px solid var(--brut-ink);
827
- padding: 2.5rem 1.5rem;
828
- grid-column: 1;
829
- grid-row: 2;
806
+ padding: 2.5rem 1.5rem 1rem;
830
807
  }
831
808
 
832
809
  .brut-hero-aside {
833
- grid-column: 1;
834
- grid-row: 3;
835
- padding: 2rem 1.5rem 2.5rem;
810
+ padding: 0.5rem 1.5rem 2.5rem;
836
811
  }
837
812
 
838
813
  .brut-hero-line1,
839
814
  .brut-hero-line2 {
840
- font-size: clamp(3rem, 14vw, 6rem);
841
- }
842
-
843
- .brut-hero-line3 {
844
- font-size: clamp(3rem, 14vw, 6rem);
815
+ font-size: clamp(2.75rem, 12vw, 4.5rem);
845
816
  }
846
817
 
847
818
  .brut-stats-bar {
@@ -853,10 +824,10 @@
853
824
  }
854
825
 
855
826
  .brut-stat:nth-child(3) {
856
- border-top: 1px solid rgba(255, 255, 255, 0.1);
827
+ border-top: 1px solid rgba(250, 248, 242, 0.12);
857
828
  }
858
829
  .brut-stat:nth-child(4) {
859
- border-top: 1px solid rgba(255, 255, 255, 0.1);
830
+ border-top: 1px solid rgba(250, 248, 242, 0.12);
860
831
  border-right: none;
861
832
  }
862
833
 
@@ -867,12 +838,13 @@
867
838
 
868
839
  .brut-idea-step {
869
840
  border-right: none;
870
- border-bottom: 2px solid var(--brut-ink);
841
+ border-bottom: 1px solid var(--brut-surface-2);
871
842
  padding: 2rem 0;
872
843
  }
873
844
  .brut-idea-step:first-child {
874
845
  padding-left: 0;
875
846
  padding-right: 0;
847
+ padding-top: 0;
876
848
  }
877
849
  .brut-idea-step:last-child {
878
850
  border-bottom: none;
@@ -893,7 +865,7 @@
893
865
 
894
866
  .brut-col {
895
867
  border-right: none;
896
- border-bottom: 3px solid var(--brut-ink);
868
+ border-bottom: 2px solid var(--brut-ink);
897
869
  padding: 2rem 0;
898
870
  }
899
871
 
@@ -907,6 +879,12 @@
907
879
  }
908
880
  .brut-versus {
909
881
  padding: 3rem 1.5rem;
882
+ grid-template-columns: 1fr;
883
+ gap: 2rem;
884
+ }
885
+ .brut-versus-header {
886
+ max-width: none;
887
+ position: static;
910
888
  }
911
889
  .brut-metrics {
912
890
  padding: 3rem 1.5rem;
@@ -916,6 +894,12 @@
916
894
  }
917
895
  .brut-code-section {
918
896
  padding: 3.5rem 1.5rem 4rem;
897
+ grid-template-columns: 1fr;
898
+ gap: 2rem;
899
+ }
900
+ .brut-code-header {
901
+ max-width: none;
902
+ position: static;
919
903
  }
920
904
 
921
905
  .brut-pillar {
@@ -940,7 +924,7 @@
940
924
  }
941
925
 
942
926
  .brut-metrics-group {
943
- border-bottom: 2px solid var(--brut-ink);
927
+ border-bottom: 1px solid var(--brut-surface-2);
944
928
  }
945
929
 
946
930
  .brut-metrics-group:last-child,
@@ -969,7 +953,7 @@
969
953
  }
970
954
 
971
955
  .brut-stat {
972
- border-top: 1px solid rgba(255, 255, 255, 0.1);
956
+ border-top: 1px solid rgba(250, 248, 242, 0.12);
973
957
  }
974
958
 
975
959
  .brut-stat:nth-child(-n + 2) {