@draig/lexis-two 1.0.2 → 1.0.4

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 (115) hide show
  1. package/package.json +7 -1
  2. package/.agents/plugins/marketplace.json +0 -21
  3. package/.claude-plugin/marketplace.json +0 -29
  4. package/.claude-plugin/plugin.json +0 -9
  5. package/.clinerules/lexis-two.md +0 -163
  6. package/.codex-plugin/plugin.json +0 -31
  7. package/.cursor/rules/lexis-two.mdc +0 -169
  8. package/.env.example +0 -8
  9. package/.github/FUNDING.yml +0 -1
  10. package/.github/copilot-instructions.md +0 -47
  11. package/.github/plugin/marketplace.json +0 -20
  12. package/.github/plugin/plugin.json +0 -16
  13. package/.github/workflows/deploy-site.yml +0 -53
  14. package/.github/workflows/test.yml +0 -29
  15. package/.kiro/steering/lexis-two.md +0 -167
  16. package/.nojekyll +0 -0
  17. package/.windsurf/rules/lexis-two.md +0 -163
  18. package/AGENTS.md +0 -163
  19. package/AUDIT.md +0 -74
  20. package/CNAME +0 -1
  21. package/SPECXIS.md +0 -576
  22. package/assets/benchmark-3model.svg +0 -21
  23. package/assets/lexis-two-complete.webp +0 -0
  24. package/assets/lexis-two-nobg.png +0 -0
  25. package/assets/logo.png +0 -0
  26. package/assets/social-preview.png +0 -0
  27. package/benchmarks/README.md +0 -114
  28. package/benchmarks/arms/baseline.js +0 -2
  29. package/benchmarks/arms/caveman-SKILL.md +0 -67
  30. package/benchmarks/arms/caveman.js +0 -8
  31. package/benchmarks/arms/lexis-two.js +0 -10
  32. package/benchmarks/arms/ponytail.js +0 -6
  33. package/benchmarks/behavior.js +0 -58
  34. package/benchmarks/behavior.yaml +0 -40
  35. package/benchmarks/benchmark-local.py +0 -156
  36. package/benchmarks/benchmark-opencode-go.js +0 -294
  37. package/benchmarks/correctness.js +0 -294
  38. package/benchmarks/lib/aggregate-opencode-go.js +0 -103
  39. package/benchmarks/lib/load-env.js +0 -31
  40. package/benchmarks/lib/opencode-go-client.js +0 -151
  41. package/benchmarks/loc.js +0 -13
  42. package/benchmarks/opencode-go-models.json +0 -31
  43. package/benchmarks/promptfooconfig.yaml +0 -41
  44. package/benchmarks/prompts.json +0 -15
  45. package/benchmarks/render-opencode-go-report.js +0 -28
  46. package/benchmarks/results/2026-06-15-llama3.2-local.md +0 -76
  47. package/benchmarks/results/2026-06-16-opencode-go.md +0 -56
  48. package/benchmarks/results/opencode-go-2026-06-16-report.html +0 -226
  49. package/benchmarks/results/opencode-go-2026-06-16.json +0 -1339
  50. package/commands/lexis-two-audit.toml +0 -3
  51. package/commands/lexis-two-debt.toml +0 -3
  52. package/commands/lexis-two-help.toml +0 -3
  53. package/commands/lexis-two-plan.toml +0 -3
  54. package/commands/lexis-two-review.toml +0 -3
  55. package/commands/lexis-two-security.toml +0 -3
  56. package/commands/lexis-two.toml +0 -3
  57. package/docs/assets/lexis-two-nobg.png +0 -0
  58. package/docs/assets/logo.png +0 -0
  59. package/docs/assets/logo.svg +0 -4
  60. package/docs/portability.md +0 -147
  61. package/docs/site.md +0 -52
  62. package/examples/api-endpoint.md +0 -68
  63. package/examples/caching.md +0 -74
  64. package/examples/date-picker.md +0 -48
  65. package/examples/email-validation.md +0 -51
  66. package/examples/sorting.md +0 -42
  67. package/gemini-extension.json +0 -7
  68. package/opencode.json +0 -4
  69. package/pi-extension/index.js +0 -161
  70. package/pi-extension/package.json +0 -8
  71. package/pi-extension/test/extension.test.js +0 -89
  72. package/pi-extension/test/helpers.test.js +0 -35
  73. package/scripts/check-rule-copies.js +0 -82
  74. package/site/astro.config.mjs +0 -18
  75. package/site/package-lock.json +0 -4913
  76. package/site/package.json +0 -14
  77. package/site/public/CNAME +0 -1
  78. package/site/public/assets/lexis-two-nobg.png +0 -0
  79. package/site/public/assets/logo.png +0 -0
  80. package/site/public/assets/logo.svg +0 -4
  81. package/site/public/robots.txt +0 -4
  82. package/site/src/components/Adapt.astro +0 -33
  83. package/site/src/components/Benchmarks.astro +0 -232
  84. package/site/src/components/Commands.astro +0 -33
  85. package/site/src/components/Ecosystem.astro +0 -30
  86. package/site/src/components/Example.astro +0 -77
  87. package/site/src/components/Footer.astro +0 -28
  88. package/site/src/components/Header.astro +0 -87
  89. package/site/src/components/Hero.astro +0 -58
  90. package/site/src/components/Home.astro +0 -46
  91. package/site/src/components/Hosts.astro +0 -62
  92. package/site/src/components/Install.astro +0 -139
  93. package/site/src/components/LanguageSwitcher.astro +0 -82
  94. package/site/src/components/Philosophy.astro +0 -23
  95. package/site/src/components/Stacks.astro +0 -33
  96. package/site/src/components/Suggested.astro +0 -39
  97. package/site/src/data/opencode-go-benchmark.json +0 -230
  98. package/site/src/i18n/en.ts +0 -155
  99. package/site/src/i18n/es.ts +0 -158
  100. package/site/src/i18n/index.ts +0 -14
  101. package/site/src/layouts/Layout.astro +0 -114
  102. package/site/src/pages/benchmarks.astro +0 -4
  103. package/site/src/pages/es/benchmarks.astro +0 -4
  104. package/site/src/pages/es/index.astro +0 -10
  105. package/site/src/pages/index.astro +0 -10
  106. package/site/src/styles/global.css +0 -780
  107. package/site/tsconfig.json +0 -3
  108. package/tests/behavior.test.js +0 -80
  109. package/tests/commands.test.js +0 -40
  110. package/tests/copilot-plugin.test.js +0 -33
  111. package/tests/correctness.test.js +0 -191
  112. package/tests/gemini-extension.test.js +0 -78
  113. package/tests/hooks-windows.test.js +0 -48
  114. package/tests/hooks.test.js +0 -177
  115. package/tests/opencode-plugin.test.js +0 -64
@@ -1,780 +0,0 @@
1
- :root {
2
- --bg: #0b0d0c;
3
- --bg-elevated: #121614;
4
- --bg-code: #0f1210;
5
- --border: #1e2420;
6
- --border-bright: #2a332c;
7
- --text: #e8ece9;
8
- --text-muted: #a0aa9e;
9
- --accent: #7cba8a;
10
- --accent-dim: #4a7356;
11
- --accent-glow: rgba(124, 186, 138, 0.12);
12
- --danger: #c97a7a;
13
- --font-sans: "Syne", system-ui, sans-serif;
14
- --font-mono: "IBM Plex Mono", ui-monospace, monospace;
15
- --max: 72rem;
16
- --radius: 0.5rem;
17
- }
18
-
19
- *,
20
- *::before,
21
- *::after {
22
- box-sizing: border-box;
23
- }
24
-
25
- html {
26
- scroll-behavior: smooth;
27
- }
28
- :focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
29
- a:focus-visible, button:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: var(--radius); }
30
-
31
-
32
- body {
33
- margin: 0;
34
- font-family: var(--font-sans);
35
- font-size: 1.05rem;
36
- line-height: 1.6;
37
- color: var(--text);
38
- background: var(--bg);
39
- background-image:
40
- radial-gradient(
41
- ellipse 80% 50% at 50% -20%,
42
- var(--accent-glow),
43
- transparent
44
- ),
45
- linear-gradient(var(--border) 1px, transparent 1px),
46
- linear-gradient(90deg, var(--border) 1px, transparent 1px);
47
- background-size:
48
- 100% 100%,
49
- 3rem 3rem,
50
- 3rem 3rem;
51
- background-position: center top;
52
- }
53
-
54
- a {
55
- color: var(--accent);
56
- text-decoration-thickness: 1px;
57
- text-underline-offset: 0.2em;
58
- }
59
-
60
- a:hover {
61
- color: #9fd4a8;
62
- }
63
-
64
- img {
65
- max-width: 100%;
66
- height: auto;
67
- }
68
-
69
- .skip-link {
70
- position: absolute;
71
- left: -9999px;
72
- top: 0;
73
- padding: 0.75rem 1rem;
74
- background: var(--accent);
75
- color: var(--bg);
76
- z-index: 100;
77
- }
78
-
79
- .skip-link:focus {
80
- left: 1rem;
81
- top: 1rem;
82
- }
83
-
84
- .wrap {
85
- width: min(var(--max), calc(100% - 2rem));
86
- margin-inline: auto;
87
- }
88
-
89
- .site-header {
90
- position: sticky;
91
- top: 0;
92
- z-index: 50;
93
- border-bottom: 1px solid var(--border);
94
- background: color-mix(in srgb, var(--bg) 88%, transparent);
95
- backdrop-filter: blur(10px);
96
- }
97
-
98
- .hero-content {
99
- display: flex;
100
- flex-direction: column;
101
- align-items: center;
102
- gap: 1rem;
103
- }
104
-
105
- .site-header .wrap,
106
- .site-header .header-inner {
107
- display: flex;
108
- flex-wrap: wrap;
109
- align-items: center;
110
- gap: 0.75rem 1rem;
111
- padding: 0.85rem 0;
112
- }
113
-
114
- .brand {
115
- display: flex;
116
- align-items: center;
117
- gap: 0.65rem;
118
- color: var(--text);
119
- text-decoration: none;
120
- font-weight: 700;
121
- letter-spacing: 0.04em;
122
- min-width: 0;
123
- flex: 1 1 auto;
124
- }
125
-
126
- .brand img {
127
- height: 2rem;
128
- width: auto;
129
- max-width: min(11rem, 55vw);
130
- }
131
-
132
- .nav-toggle {
133
- display: flex;
134
- flex-direction: column;
135
- justify-content: center;
136
- gap: 0.3rem;
137
- width: 2.75rem;
138
- height: 2.75rem;
139
- padding: 0;
140
- margin-left: auto;
141
- border: 1px solid var(--border-bright);
142
- border-radius: var(--radius);
143
- background: var(--bg-elevated);
144
- color: var(--text);
145
- cursor: pointer;
146
- flex-shrink: 0;
147
- }
148
-
149
- .nav-toggle:hover {
150
- border-color: var(--accent-dim);
151
- }
152
-
153
- .nav-toggle-bar {
154
- display: block;
155
- width: 1.15rem;
156
- height: 2px;
157
- margin-inline: auto;
158
- background: var(--accent);
159
- border-radius: 1px;
160
- transition:
161
- transform 0.2s ease,
162
- opacity 0.2s ease;
163
- }
164
-
165
- .site-header.is-nav-open .nav-toggle-bar:nth-child(1) {
166
- transform: translateY(0.45rem) rotate(45deg);
167
- }
168
-
169
- .site-header.is-nav-open .nav-toggle-bar:nth-child(2) {
170
- opacity: 0;
171
- }
172
-
173
- .site-header.is-nav-open .nav-toggle-bar:nth-child(3) {
174
- transform: translateY(-0.45rem) rotate(-45deg);
175
- }
176
-
177
- .nav {
178
- display: none;
179
- flex-direction: column;
180
- width: 100%;
181
- flex-basis: 100%;
182
- gap: 0;
183
- font-size: 0.875rem;
184
- padding-top: 0.5rem;
185
- border-top: 1px solid var(--border);
186
- }
187
-
188
- .site-header.is-nav-open .nav {
189
- display: flex;
190
- }
191
-
192
- .nav a {
193
- color: var(--text-muted);
194
- text-decoration: none;
195
- padding: 0.75rem 0;
196
- border-bottom: 1px solid var(--border);
197
- }
198
-
199
- .nav a:last-child {
200
- border-bottom: none;
201
- padding-bottom: 0.25rem;
202
- }
203
-
204
- .nav a:hover {
205
- color: var(--accent);
206
- }
207
-
208
- @media (min-width: 768px) {
209
- .site-header .header-inner {
210
- flex-wrap: nowrap;
211
- }
212
-
213
- .brand {
214
- flex: 0 1 auto;
215
- }
216
-
217
- .brand img {
218
- max-width: 11rem;
219
- }
220
-
221
- .nav-toggle {
222
- display: none;
223
- }
224
-
225
- .nav {
226
- display: flex;
227
- flex-direction: row;
228
- flex-wrap: wrap;
229
- justify-content: flex-end;
230
- width: auto;
231
- flex-basis: auto;
232
- gap: 0.35rem 1.25rem;
233
- padding-top: 0;
234
- border-top: none;
235
- }
236
-
237
- .nav a {
238
- padding: 0;
239
- border-bottom: none;
240
- }
241
-
242
- .nav a:last-child {
243
- padding-bottom: 0;
244
- }
245
- }
246
-
247
- @media (max-width: 420px) {
248
- .brand-text {
249
- display: none;
250
- }
251
- }
252
-
253
- .hero {
254
- padding: 4.5rem 0 3rem;
255
- text-align: center;
256
- }
257
-
258
- .hero-badge {
259
- display: inline-block;
260
- font-family: var(--font-mono);
261
- font-size: 0.75rem;
262
- letter-spacing: 0.08em;
263
- color: var(--accent);
264
- border: 1px solid var(--accent-dim);
265
- background: var(--accent-glow);
266
- padding: 0.35rem 0.75rem;
267
- border-radius: 999px;
268
- margin-bottom: 1.5rem;
269
- }
270
-
271
- .hero h1 {
272
- font-size: clamp(2.25rem, 6vw, 3.75rem);
273
- line-height: 1.05;
274
- margin: 0 0 1rem;
275
- font-weight: 800;
276
- letter-spacing: -0.03em;
277
- }
278
-
279
- .hero .tagline {
280
- font-size: clamp(1.05rem, 2.5vw, 1.35rem);
281
- color: var(--text-muted);
282
- max-width: 38rem;
283
- margin: 0 auto 1.25rem;
284
- }
285
-
286
- .cta-row {
287
- display: flex;
288
- flex-wrap: wrap;
289
- justify-content: center;
290
- gap: 0.75rem;
291
- }
292
-
293
- .btn {
294
- display: inline-flex;
295
- align-items: center;
296
- justify-content: center;
297
- gap: 0.4rem;
298
- padding: 0.75rem 1.35rem;
299
- border-radius: var(--radius);
300
- font-weight: 600;
301
- font-size: 0.95rem;
302
- text-decoration: none;
303
- border: 1px solid transparent;
304
- cursor: pointer;
305
- font-family: inherit;
306
- transition:
307
- transform 0.15s ease,
308
- border-color 0.15s ease,
309
- background 0.15s ease;
310
- }
311
-
312
- .btn:hover {
313
- transform: translateY(-1px);
314
- }
315
-
316
- .btn-primary {
317
- background: var(--accent);
318
- color: var(--bg);
319
- }
320
-
321
- .btn-primary:hover {
322
- background: #9fd4a8;
323
- color: var(--bg);
324
- }
325
-
326
- .btn-ghost {
327
- background: transparent;
328
- color: var(--text);
329
- border-color: var(--border-bright);
330
- }
331
-
332
- .btn-ghost:hover {
333
- border-color: var(--accent-dim);
334
- color: var(--accent);
335
- }
336
-
337
- section {
338
- padding: 3.5rem 0;
339
- }
340
-
341
- section:nth-of-type(even) {
342
- background: color-mix(in srgb, var(--bg-elevated) 70%, transparent);
343
- border-block: 1px solid var(--border);
344
- }
345
-
346
- .section-head {
347
- margin-bottom: 2rem;
348
- }
349
-
350
- .section-head h2 {
351
- font-size: clamp(1.5rem, 3vw, 2rem);
352
- margin: 0 0 0.5rem;
353
- letter-spacing: -0.02em;
354
- }
355
-
356
- .section-head p {
357
- margin: 0;
358
- color: var(--text-muted);
359
- max-width: 40rem;
360
- }
361
-
362
- .ladder {
363
- list-style: none;
364
- padding: 0;
365
- margin: 0;
366
- counter-reset: rung;
367
- display: grid;
368
- gap: 0.75rem;
369
- }
370
-
371
- .ladder li {
372
- counter-increment: rung;
373
- display: grid;
374
- grid-template-columns: auto 1fr;
375
- gap: 1rem;
376
- align-items: start;
377
- padding: 1rem 1.15rem;
378
- background: var(--bg-elevated);
379
- border: 1px solid var(--border);
380
- border-radius: var(--radius);
381
- }
382
-
383
- .ladder li::before {
384
- content: counter(rung);
385
- font-family: var(--font-mono);
386
- font-size: 0.85rem;
387
- font-weight: 600;
388
- color: var(--accent);
389
- background: var(--accent-glow);
390
- border: 1px solid var(--accent-dim);
391
- width: 2rem;
392
- height: 2rem;
393
- display: grid;
394
- place-items: center;
395
- border-radius: 0.35rem;
396
- flex-shrink: 0;
397
- }
398
-
399
- .compare {
400
- display: grid;
401
- gap: 1rem;
402
- }
403
-
404
- @media (min-width: 768px) {
405
- .compare {
406
- grid-template-columns: 1fr 1fr;
407
- }
408
- }
409
-
410
- .panel {
411
- border: 1px solid var(--border);
412
- border-radius: var(--radius);
413
- overflow: hidden;
414
- background: var(--bg-elevated);
415
- }
416
-
417
- .panel-head {
418
- padding: 0.65rem 1rem;
419
- font-family: var(--font-mono);
420
- font-size: 0.75rem;
421
- letter-spacing: 0.06em;
422
- text-transform: uppercase;
423
- border-bottom: 1px solid var(--border);
424
- }
425
-
426
- .panel-head.bad {
427
- color: var(--danger);
428
- }
429
-
430
- .panel-head.good {
431
- color: var(--accent);
432
- }
433
-
434
- .panel-body {
435
- position: relative;
436
- }
437
-
438
- .panel-body pre {
439
- margin: 0;
440
- padding: 1rem;
441
- overflow-x: auto;
442
- font-family: var(--font-mono);
443
- font-size: 0.8rem;
444
- line-height: 1.55;
445
- background: var(--bg-code);
446
- }
447
-
448
- .panel-foot {
449
- padding: 0.75rem 1rem;
450
- font-size: 0.875rem;
451
- color: var(--text-muted);
452
- border-top: 1px solid var(--border);
453
- }
454
-
455
- .copy-btn {
456
- position: absolute;
457
- top: 0.5rem;
458
- right: 0.5rem;
459
- font-family: var(--font-mono);
460
- font-size: 0.7rem;
461
- padding: 0.3rem 0.55rem;
462
- border: 1px solid var(--border-bright);
463
- border-radius: 0.25rem;
464
- background: var(--bg-elevated);
465
- color: var(--text-muted);
466
- cursor: pointer;
467
- }
468
-
469
- .copy-btn:hover {
470
- color: var(--accent);
471
- border-color: var(--accent-dim);
472
- }
473
-
474
- .table-wrap {
475
- overflow-x: auto;
476
- border: 1px solid var(--border);
477
- border-radius: var(--radius);
478
- }
479
-
480
- table {
481
- width: 100%;
482
- border-collapse: collapse;
483
- font-size: 0.9rem;
484
- }
485
-
486
- th,
487
- td {
488
- padding: 0.75rem 1rem;
489
- text-align: left;
490
- border-bottom: 1px solid var(--border);
491
- vertical-align: top;
492
- }
493
-
494
- th {
495
- font-family: var(--font-mono);
496
- font-size: 0.72rem;
497
- letter-spacing: 0.06em;
498
- text-transform: uppercase;
499
- color: var(--text-muted);
500
- background: var(--bg-elevated);
501
- }
502
-
503
- tr:last-child td {
504
- border-bottom: none;
505
- }
506
-
507
- td code {
508
- font-family: var(--font-mono);
509
- font-size: 0.82em;
510
- color: var(--accent);
511
- }
512
-
513
- .pill {
514
- display: inline-block;
515
- font-family: var(--font-mono);
516
- font-size: 0.68rem;
517
- padding: 0.15rem 0.45rem;
518
- border-radius: 999px;
519
- border: 1px solid var(--border-bright);
520
- color: var(--text-muted);
521
- white-space: nowrap;
522
- }
523
-
524
- .pill.full {
525
- border-color: var(--accent-dim);
526
- color: var(--accent);
527
- }
528
-
529
- .pill.soon {
530
- border-color: #5a4a2a;
531
- color: #c9a86a;
532
- }
533
-
534
- .benchmark-note {
535
- max-width: 32rem;
536
- margin: 0 auto 2rem;
537
- padding: 0.85rem 1rem;
538
- font-size: 0.875rem;
539
- color: var(--text-muted);
540
- text-align: center;
541
- background: var(--bg-elevated);
542
- border: 1px solid var(--border);
543
- border-radius: var(--radius);
544
- }
545
-
546
- .benchmark-note a {
547
- white-space: nowrap;
548
- }
549
-
550
- .cmd-grid {
551
- display: grid;
552
- gap: 0.75rem;
553
- grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
554
- }
555
-
556
- .cmd-card {
557
- padding: 1rem;
558
- background: var(--bg-elevated);
559
- border: 1px solid var(--border);
560
- border-radius: var(--radius);
561
- }
562
-
563
- .cmd-card code {
564
- font-family: var(--font-mono);
565
- font-size: 0.85rem;
566
- color: var(--accent);
567
- }
568
-
569
- .cmd-card p {
570
- margin: 0.5rem 0 0;
571
- font-size: 0.875rem;
572
- color: var(--text-muted);
573
- }
574
-
575
- .install-tabs {
576
- display: flex;
577
- flex-wrap: wrap;
578
- gap: 0.5rem;
579
- margin-bottom: 1rem;
580
- }
581
-
582
- .tab-btn {
583
- font-family: var(--font-mono);
584
- font-size: 0.8rem;
585
- padding: 0.45rem 0.85rem;
586
- border: 1px solid var(--border);
587
- border-radius: var(--radius);
588
- background: var(--bg-elevated);
589
- color: var(--text-muted);
590
- cursor: pointer;
591
- }
592
-
593
- .tab-btn[aria-selected="true"] {
594
- border-color: var(--accent-dim);
595
- color: var(--accent);
596
- background: var(--accent-glow);
597
- }
598
-
599
- .tab-panel {
600
- display: none;
601
- }
602
-
603
- .tab-panel.active {
604
- display: block;
605
- }
606
-
607
- .tab-panel pre {
608
- margin: 0;
609
- padding: 1rem;
610
- overflow-x: auto;
611
- font-family: var(--font-mono);
612
- font-size: 0.82rem;
613
- line-height: 1.55;
614
- background: var(--bg-code);
615
- border: 1px solid var(--border);
616
- border-radius: var(--radius);
617
- }
618
-
619
- .adapt-list {
620
- display: grid;
621
- gap: 1rem;
622
- }
623
-
624
- @media (min-width: 768px) {
625
- .adapt-list {
626
- grid-template-columns: repeat(3, 1fr);
627
- }
628
- }
629
-
630
- .adapt-card {
631
- padding: 1.15rem;
632
- background: var(--bg-elevated);
633
- border: 1px solid var(--border);
634
- border-radius: var(--radius);
635
- }
636
-
637
- .adapt-card h3 {
638
- margin: 0 0 0.5rem;
639
- font-size: 1rem;
640
- }
641
-
642
- .adapt-card p {
643
- margin: 0;
644
- font-size: 0.875rem;
645
- color: var(--text-muted);
646
- }
647
-
648
- .ecosystem {
649
- font-family: var(--font-mono);
650
- font-size: clamp(0.65rem, 1.8vw, 0.78rem);
651
- line-height: 1.45;
652
- padding: 1.25rem;
653
- overflow-x: auto;
654
- background: var(--bg-code);
655
- border: 1px solid var(--border);
656
- border-radius: var(--radius);
657
- color: var(--text-muted);
658
- }
659
-
660
- .site-footer {
661
- padding: 2.5rem 0 3rem;
662
- border-top: 1px solid var(--border);
663
- text-align: center;
664
- font-size: 0.875rem;
665
- color: var(--text-muted);
666
- }
667
-
668
- .site-footer p {
669
- margin: 0.35rem 0;
670
- }
671
-
672
- /* Benchmark page */
673
- .benchmark-page {
674
- padding: 2.5rem 0 3rem;
675
- }
676
-
677
- .benchmark-head {
678
- margin-bottom: 2rem;
679
- }
680
-
681
- .benchmark-meta {
682
- font-size: 0.9rem;
683
- color: var(--text-muted);
684
- }
685
-
686
- .benchmark-grid {
687
- display: grid;
688
- gap: 1.25rem;
689
- grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
690
- }
691
-
692
- .benchmark-card {
693
- padding: 1rem 1rem 0.5rem;
694
- background: var(--bg-elevated);
695
- border: 1px solid var(--border);
696
- border-radius: var(--radius);
697
- }
698
-
699
- .benchmark-card h2 {
700
- margin: 0 0 0.75rem;
701
- font-size: 0.85rem;
702
- text-transform: uppercase;
703
- letter-spacing: 0.06em;
704
- color: var(--text-muted);
705
- }
706
-
707
- .benchmark-card.wide {
708
- grid-column: 1 / -1;
709
- }
710
-
711
- .benchmark-card canvas {
712
- max-height: 280px;
713
- }
714
-
715
- .benchmark-card .good {
716
- color: var(--accent);
717
- }
718
-
719
- .benchmark-foot {
720
- margin-top: 2rem;
721
- font-size: 0.85rem;
722
- color: var(--text-muted);
723
- }
724
-
725
- .stacks-grid {
726
- display: grid;
727
- gap: 0.75rem;
728
- grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr));
729
- }
730
-
731
- .stack-card {
732
- padding: 1rem;
733
- background: var(--bg-elevated);
734
- border: 1px solid var(--border);
735
- border-radius: var(--radius);
736
- }
737
-
738
- .stack-card h3 {
739
- margin: 0 0 0.4rem;
740
- font-size: 0.95rem;
741
- color: var(--accent);
742
- }
743
-
744
- .stack-card p {
745
- margin: 0;
746
- font-size: 0.85rem;
747
- color: var(--text-muted);
748
- }
749
-
750
- .suggested-list {
751
- display: grid;
752
- gap: 1rem;
753
- grid-template-columns: repeat(auto-fill, minmax(20rem, 1fr));
754
- }
755
-
756
- .suggested-card {
757
- display: block;
758
- padding: 1.15rem;
759
- background: var(--bg-elevated);
760
- border: 1px solid var(--border);
761
- border-radius: var(--radius);
762
- text-decoration: none;
763
- transition: border-color 0.15s ease;
764
- }
765
-
766
- .suggested-card:hover {
767
- border-color: var(--accent-dim);
768
- }
769
-
770
- .suggested-card h3 {
771
- margin: 0 0 0.4rem;
772
- font-size: 1rem;
773
- color: var(--accent);
774
- }
775
-
776
- .suggested-card p {
777
- margin: 0;
778
- font-size: 0.875rem;
779
- color: var(--text-muted);
780
- }