oc 0.50.50 → 0.50.51

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 (35) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +47 -36
  3. package/CHANGELOG.md +6 -0
  4. package/dist/cli/facade/dev.d.ts +12 -12
  5. package/dist/components/oc-client/_package/package.json +2 -2
  6. package/dist/components/oc-client/_package/src/oc-client.js +54 -56
  7. package/dist/components/oc-client/_package/src/oc-client.min.js +1 -1
  8. package/dist/components/oc-client/_package/src/oc-client.min.map +1 -1
  9. package/dist/components/oc-client/package-lock.json +2635 -10333
  10. package/dist/components/oc-client/package.json +1 -1
  11. package/dist/components/oc-client/src/oc-client.js +54 -56
  12. package/dist/components/oc-client/src/oc-client.min.js +1 -1
  13. package/dist/components/oc-client/src/oc-client.min.map +1 -1
  14. package/dist/registry/domain/extract-package.d.ts +2 -0
  15. package/dist/registry/domain/extract-package.js +3 -1
  16. package/dist/registry/routes/components.js +2 -2
  17. package/dist/registry/routes/publish.js +7 -0
  18. package/dist/registry/views/index.js +2 -1
  19. package/dist/registry/views/info.js +4 -3
  20. package/dist/registry/views/partials/component-parameters.js +6 -2
  21. package/dist/registry/views/partials/components-dependencies.js +1 -1
  22. package/dist/registry/views/partials/components-list.js +1 -1
  23. package/dist/registry/views/partials/components-plugins.js +1 -1
  24. package/dist/registry/views/partials/components-templates.js +3 -3
  25. package/dist/registry/views/partials/icon.d.ts +6 -0
  26. package/dist/registry/views/partials/icon.js +22 -0
  27. package/dist/registry/views/partials/layout.js +8 -4
  28. package/dist/registry/views/static/index.d.ts +1 -1
  29. package/dist/registry/views/static/index.js +22 -4
  30. package/dist/registry/views/static/info.d.ts +1 -1
  31. package/dist/registry/views/static/info.js +29 -0
  32. package/dist/registry/views/static/style.d.ts +1 -1
  33. package/dist/registry/views/static/style.js +799 -962
  34. package/package.json +24 -23
  35. package/tsconfig.json +1 -0
@@ -1,78 +1,82 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = `
4
- @import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap");
4
+ @import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;450;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap");
5
5
 
6
6
  :root {
7
- /* Primary brand colors (consistent across themes) */
7
+ /* Brand accent (consistent across themes) */
8
8
  --color-primary: #6366f1;
9
9
  --color-primary-dark: #4f46e5;
10
10
  --color-primary-light: #818cf8;
11
- --color-secondary: #06b6d4;
12
- --color-accent: #f59e0b;
11
+ --color-secondary: #0891b2;
12
+ --color-accent: #d97706;
13
13
 
14
14
  --gradient-primary: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);
15
- --gradient-secondary: linear-gradient(135deg, #06b6d4 0%, #0891b2 100%);
16
- --gradient-accent: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
17
15
 
18
- /* Legacy color mappings for backward compatibility */
19
- --color-warning: #ffe066;
20
- --color-warning-text: #7c3aed;
21
- --color-danger: #ffd6d6;
22
- --color-danger-text: #c92a2a;
23
- --color-state-border: #e9ecef;
16
+ /* Spacing / radius scale */
17
+ --radius-sm: 6px;
18
+ --radius-md: 10px;
19
+ --radius-lg: 14px;
20
+ --radius-full: 999px;
21
+
22
+ --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
23
+ --font-mono: 'JetBrains Mono', 'SFMono-Regular', Menlo, Monaco, Consolas, monospace;
24
24
  }
25
25
 
26
26
  /* Dark theme (default) */
27
27
  :root, [data-theme="dark"] {
28
- --color-bg-primary: #0f0f23;
29
- --color-bg-secondary: #1a1a2e;
30
- --color-bg-card: #16213e;
31
- --color-bg-glass: rgba(255, 255, 255, 0.05);
32
-
33
- --color-text-primary: #ffffff;
34
- --color-text-secondary: #b4b4b8;
35
- --color-text-muted: #acacb9;
28
+ --color-bg-primary: #0b0e14;
29
+ --color-bg-secondary: #11151d;
30
+ --color-bg-card: #11151d;
31
+ --color-bg-elevated: #161c26;
32
+ --color-bg-glass: rgba(255, 255, 255, 0.04);
33
+ --color-bg-hover: rgba(255, 255, 255, 0.035);
36
34
 
37
- --color-border: rgba(255, 255, 255, 0.1);
38
- --color-border-hover: rgba(255, 255, 255, 0.2);
35
+ --color-text-primary: #e6edf3;
36
+ --color-text-secondary: #aeb6c2;
37
+ --color-text-muted: #7d8693;
39
38
 
40
- --gradient-card: rgba(255,255,255,0.03); /* Simplified from gradient */
39
+ --color-border: #222a37;
40
+ --color-border-hover: #323c4d;
41
41
 
42
- --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
43
- --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
44
- --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
45
- --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
46
- --shadow-glow: 0 0 20px rgba(99, 102, 241, 0.3);
42
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
43
+ --shadow-md: 0 4px 12px -2px rgba(0, 0, 0, 0.4);
44
+ --shadow-lg: 0 12px 28px -6px rgba(0, 0, 0, 0.5);
45
+ --shadow-glow: 0 4px 16px -2px rgba(99, 102, 241, 0.4);
47
46
 
48
- /* Dark theme text inverse (for buttons, etc) */
49
47
  --color-text-inverse: #ffffff;
48
+
49
+ --tint-strength: 0.16;
50
+ --tint-border: 0.32;
51
+ --badge-text-lightness: 78%;
50
52
  }
51
53
 
52
54
  /* Light theme */
53
55
  [data-theme="light"] {
54
- --color-bg-primary: #ffffff;
55
- --color-bg-secondary: #f8fafc;
56
+ --color-bg-primary: #fbfcfd;
57
+ --color-bg-secondary: #f4f6f8;
56
58
  --color-bg-card: #ffffff;
57
- --color-bg-glass: rgba(255, 255, 255, 0.8);
58
-
59
- --color-text-primary: #1e293b;
60
- --color-text-secondary: #475569; /* Improved contrast from #64748b */
61
- --color-text-muted: #64748b; /* Improved contrast from #94a3b8 */
59
+ --color-bg-elevated: #ffffff;
60
+ --color-bg-glass: rgba(255, 255, 255, 0.7);
61
+ --color-bg-hover: rgba(15, 23, 42, 0.025);
62
62
 
63
- --color-border: rgba(0, 0, 0, 0.1);
64
- --color-border-hover: rgba(0, 0, 0, 0.15);
63
+ --color-text-primary: #1f2328;
64
+ --color-text-secondary: #4a535e;
65
+ --color-text-muted: #6a737d;
65
66
 
66
- --gradient-card: rgba(0,0,0,0.02); /* Simplified from gradient */
67
+ --color-border: #e2e6ea;
68
+ --color-border-hover: #cdd3da;
67
69
 
68
- --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
69
- --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
70
- --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
71
- --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
72
- --shadow-glow: 0 0 20px rgba(99, 102, 241, 0.2);
70
+ --shadow-sm: 0 1px 2px 0 rgba(15, 23, 42, 0.05);
71
+ --shadow-md: 0 4px 12px -2px rgba(15, 23, 42, 0.08);
72
+ --shadow-lg: 0 12px 28px -6px rgba(15, 23, 42, 0.12);
73
+ --shadow-glow: 0 4px 16px -2px rgba(99, 102, 241, 0.25);
73
74
 
74
- /* Light theme text inverse (for buttons, etc) */
75
75
  --color-text-inverse: #ffffff;
76
+
77
+ --tint-strength: 0.1;
78
+ --tint-border: 0.28;
79
+ --badge-text-lightness: 38%;
76
80
  }
77
81
 
78
82
  * {
@@ -88,48 +92,27 @@ exports.default = `
88
92
  }
89
93
 
90
94
  body {
91
- font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
95
+ font-family: var(--font-sans);
92
96
  background: var(--color-bg-primary);
93
97
  color: var(--color-text-primary);
94
98
  line-height: 1.6;
95
99
  min-height: 100vh;
96
100
  overflow-x: hidden;
97
- }
98
-
99
- /* Animated background - Dark theme */
100
- body::before {
101
- content: '';
102
- position: fixed;
103
- top: 0;
104
- left: 0;
105
- width: 100%;
106
- height: 100%;
107
- background:
108
- radial-gradient(circle at 20% 80%, rgba(99, 102, 241, 0.1) 0%, transparent 50%),
109
- radial-gradient(circle at 80% 20%, rgba(139, 92, 246, 0.1) 0%, transparent 50%),
110
- radial-gradient(circle at 40% 40%, rgba(6, 182, 212, 0.05) 0%, transparent 50%);
111
- z-index: -1;
112
- transition: opacity 0.3s ease;
113
- }
114
-
115
- /* Animated background - Light theme */
116
- [data-theme="light"] body::before {
117
- background:
118
- radial-gradient(circle at 20% 80%, rgba(99, 102, 241, 0.03) 0%, transparent 50%),
119
- radial-gradient(circle at 80% 20%, rgba(139, 92, 246, 0.03) 0%, transparent 50%),
120
- radial-gradient(circle at 40% 40%, rgba(6, 182, 212, 0.02) 0%, transparent 50%);
101
+ -webkit-font-smoothing: antialiased;
102
+ text-rendering: optimizeLegibility;
103
+ font-size: 15px;
121
104
  }
122
105
 
123
106
  .container {
124
- max-width: 1400px;
107
+ max-width: 1240px;
125
108
  margin: 0 auto;
126
- padding: 0 2rem;
109
+ padding: 0 1.5rem;
127
110
  }
128
111
 
129
- /* Header */
112
+ /* ── Header ─────────────────────────────────────────── */
130
113
  .header {
131
- background: var(--color-bg-glass);
132
- backdrop-filter: blur(20px);
114
+ background: color-mix(in srgb, var(--color-bg-primary) 80%, transparent);
115
+ backdrop-filter: blur(12px);
133
116
  border-bottom: 1px solid var(--color-border);
134
117
  position: sticky;
135
118
  top: 0;
@@ -140,102 +123,105 @@ body::before {
140
123
  display: flex;
141
124
  align-items: center;
142
125
  justify-content: space-between;
143
- padding: 1rem 0;
126
+ padding: 0.85rem 0;
144
127
  }
145
128
 
146
129
  .logo {
147
- display: flex;
130
+ display: inline-flex;
148
131
  align-items: center;
149
- gap: 0.75rem;
132
+ gap: 0.65rem;
150
133
  text-decoration: none;
151
134
  color: var(--color-text-primary);
152
- font-weight: 700;
153
- font-size: 1.25rem;
154
- transition: all 0.3s ease;
135
+ font-weight: 600;
136
+ font-size: 1.0rem;
137
+ letter-spacing: -0.01em;
138
+ transition: color 0.15s ease;
139
+ margin-top: 0;
155
140
  }
156
141
 
157
142
  .logo:hover {
158
- color: var(--color-primary-light);
159
- transform: translateY(-1px);
143
+ color: var(--color-text-primary);
144
+ text-decoration: none;
160
145
  }
161
146
 
162
147
  .logo-icon {
163
148
  color: #fff;
164
- width: 32px;
165
- height: 32px;
149
+ width: 30px;
150
+ height: 30px;
166
151
  background: var(--gradient-primary);
167
152
  border-radius: 8px;
168
153
  display: flex;
169
154
  align-items: center;
170
155
  justify-content: center;
171
- font-weight: bold;
172
- font-size: 1.1rem;
156
+ font-weight: 700;
157
+ font-size: 0.8rem;
158
+ letter-spacing: 0.02em;
159
+ box-shadow: var(--shadow-sm);
173
160
  }
174
161
 
175
162
  .logo img {
176
- width: 32px;
177
- height: 32px;
163
+ width: 30px;
164
+ height: 30px;
178
165
  border-radius: 8px;
179
166
  }
180
167
 
181
168
  /* Theme Toggle Button */
182
169
  .theme-toggle {
183
- display: flex;
170
+ display: inline-flex;
184
171
  align-items: center;
185
172
  gap: 0.5rem;
186
- padding: 0.5rem 1rem;
187
- background: var(--color-bg-glass);
173
+ padding: 0.45rem 0.85rem;
174
+ background: var(--color-bg-card);
188
175
  border: 1px solid var(--color-border);
189
- border-radius: 8px;
190
- color: var(--color-text-primary);
191
- font-size: 0.875rem;
176
+ border-radius: var(--radius-md);
177
+ color: var(--color-text-secondary);
178
+ font-size: 0.8rem;
192
179
  font-weight: 500;
193
- transition: all 0.3s ease;
180
+ font-family: inherit;
181
+ transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
194
182
  cursor: pointer;
195
- backdrop-filter: blur(10px);
196
183
  }
197
184
 
198
185
  .theme-toggle:hover {
199
186
  border-color: var(--color-border-hover);
200
- background: var(--color-bg-card);
201
- transform: translateY(-1px);
187
+ color: var(--color-text-primary);
188
+ background: var(--color-bg-elevated);
202
189
  }
203
190
 
204
191
  .theme-toggle-icon {
205
- font-size: 1.1rem;
206
- transition: transform 0.3s ease;
192
+ font-size: 1rem;
193
+ line-height: 0;
194
+ display: inline-flex;
195
+ align-items: center;
196
+ justify-content: center;
197
+ color: var(--color-text-secondary);
207
198
  }
208
199
 
209
- .theme-toggle:hover .theme-toggle-icon {
210
- transform: rotate(15deg);
211
- }
200
+ .theme-toggle:hover .theme-toggle-icon { color: var(--color-text-primary); }
201
+ .theme-toggle-icon svg { display: block; }
212
202
 
203
+ /* ── Typography ─────────────────────────────────────── */
213
204
  h1, h2, h3 {
214
205
  color: var(--color-text-primary);
215
206
  font-weight: 600;
216
- margin-bottom: 0.5em;
207
+ letter-spacing: -0.02em;
208
+ margin-bottom: 0.4em;
217
209
  }
218
210
 
219
211
  h1 {
220
- font-size: 3.5rem;
221
- font-weight: 700;
222
- background: var(--gradient-primary);
223
- -webkit-background-clip: text;
224
- -webkit-text-fill-color: transparent;
225
- background-clip: text;
226
- margin-bottom: 1rem;
227
- text-align: center;
212
+ font-size: 2rem;
213
+ font-weight: 680;
214
+ margin-bottom: 0.5rem;
215
+ line-height: 1.2;
228
216
  }
229
217
 
230
218
  h2 {
231
- font-size: 1.5rem; /* Increased from 1.25rem */
219
+ font-size: 1.2rem;
232
220
  font-weight: 600;
233
- color: var(--color-text-primary);
234
- margin-bottom: 0.75em;
235
221
  }
236
222
 
237
223
  h3 {
238
- font-size: 1.25rem; /* Increased from 1.1rem */
224
+ font-size: 1.05rem;
239
225
  font-weight: 600;
240
226
  }
241
227
 
@@ -244,374 +230,592 @@ h3 {
244
230
  outline: 2px solid var(--color-primary);
245
231
  outline-offset: 2px;
246
232
  }
247
-
248
- *:focus:not(:focus-visible) {
249
- outline: none;
250
- }
251
-
233
+ *:focus:not(:focus-visible) { outline: none; }
252
234
  *:focus-visible {
253
235
  outline: 2px solid var(--color-primary);
254
236
  outline-offset: 2px;
255
237
  }
256
238
 
257
239
  a {
258
- color: var(--color-text-primary);
240
+ color: var(--color-primary-light);
259
241
  text-decoration: none;
260
- transition: color 0.3s ease;
261
- border-radius: 4px; /* For better focus outline */
242
+ transition: color 0.15s ease;
243
+ border-radius: 4px;
262
244
  }
263
- a:hover {
264
- color: var(--color-primary);
265
- text-decoration: underline;
245
+ a:hover { color: var(--color-primary); text-decoration: underline; }
246
+ a:focus { color: var(--color-primary); }
247
+
248
+ [data-theme="light"] a { color: var(--color-primary-dark); }
249
+
250
+ #components-list a:hover { text-decoration: none; }
251
+
252
+ p { margin-top: 0; }
253
+
254
+ .back {
255
+ width: 100%;
256
+ margin-bottom: 1.5em;
257
+ display: block;
258
+ color: var(--color-text-muted);
259
+ font-size: 0.9em;
266
260
  }
267
- a:focus {
268
- color: var(--color-primary);
261
+
262
+ /* ── Hero ───────────────────────────────────────────── */
263
+ .hero {
264
+ padding: 2.5rem 0 1.5rem;
265
+ position: relative;
269
266
  }
270
267
 
271
- #components-list a:hover {
272
- text-decoration: none;
268
+ .hero h1 { text-align: left; }
269
+
270
+ .component-title {
271
+ font-family: var(--font-mono);
272
+ font-weight: 600;
273
+ font-size: 1.85rem;
274
+ letter-spacing: -0.01em;
273
275
  }
274
276
 
275
- p {
276
- margin-top: 0;
277
+ .component-description {
278
+ color: var(--color-text-secondary);
279
+ max-width: 70ch;
280
+ margin-bottom: 0.5rem;
281
+ font-size: 1rem;
277
282
  }
278
283
 
279
- .logo {
280
- margin-top: 10px;
284
+ .version-selector {
285
+ display: inline-flex;
286
+ align-items: center;
287
+ gap: 0.6rem;
288
+ margin: 0.75rem 0;
281
289
  }
282
290
 
283
- .back {
284
- width: 100%;
285
- margin-top: -20px;
286
- margin-bottom: 1.5em;
287
- display: block;
291
+ .version-label {
288
292
  color: var(--color-text-muted);
289
- font-size: 0.95em;
293
+ font-size: 0.85rem;
294
+ font-weight: 500;
290
295
  }
291
296
 
292
- /* Content Sections */
293
- .content-section {
297
+ /* ── Stats badge ────────────────────────────────────── */
298
+ .stats-badge {
299
+ display: inline-flex;
300
+ align-items: center;
301
+ gap: 0.6rem;
294
302
  background: var(--color-bg-card);
295
- border-radius: 16px;
296
303
  border: 1px solid var(--color-border);
297
- overflow: hidden;
298
- transition: all 0.3s ease;
299
- margin-bottom: 2rem;
304
+ border-radius: var(--radius-md);
305
+ padding: 0.5rem 0.9rem;
306
+ margin: 1rem 0 0;
307
+ color: var(--color-text-secondary);
308
+ font-size: 0.85rem;
309
+ font-weight: 500;
310
+ max-width: fit-content;
300
311
  }
301
312
 
302
- .content-section:hover {
303
- border-color: var(--color-border-hover);
304
- box-shadow: var(--shadow-lg);
313
+ .stats-badge .chart-icon {
314
+ display: flex;
315
+ align-items: flex-end;
316
+ gap: 2px;
317
+ height: 16px;
318
+ }
319
+
320
+ .stats-badge .chart-bar { width: 3px; border-radius: 2px; }
321
+ .stats-badge .chart-bar:nth-child(1) { height: 8px; background: var(--color-primary-light); }
322
+ .stats-badge .chart-bar:nth-child(2) { height: 12px; background: var(--color-primary); }
323
+ .stats-badge .chart-bar:nth-child(3) { height: 16px; background: var(--color-primary-dark); }
324
+
325
+ .stats-badge .badge-text {
326
+ color: var(--color-text-secondary);
327
+ font-size: 0.85rem;
328
+ font-weight: 500;
329
+ white-space: nowrap;
330
+ display: inline-flex;
331
+ align-items: center;
332
+ }
333
+
334
+ /* ── Main layout ────────────────────────────────────── */
335
+ .main-content {
336
+ display: grid;
337
+ grid-template-columns: minmax(0, 1fr) 320px;
338
+ gap: 1.75rem;
339
+ padding: 1rem 0 3rem;
340
+ align-items: start;
341
+ }
342
+
343
+ .sidebar {
344
+ display: grid;
345
+ gap: 1.25rem;
346
+ align-content: start;
347
+ position: sticky;
348
+ top: 5rem;
349
+ }
350
+
351
+ /* ── Tabs ───────────────────────────────────────────── */
352
+ #menuList {
353
+ display: flex;
354
+ gap: 0.25rem;
355
+ border-bottom: 1px solid var(--color-border);
356
+ margin-bottom: 1.5rem !important;
357
+ overflow-x: auto;
358
+ scrollbar-width: none;
359
+ -ms-overflow-style: none;
360
+ }
361
+
362
+ #menuList::-webkit-scrollbar { display: none; height: 0; }
363
+
364
+ a.tab-link {
365
+ color: var(--color-text-secondary);
366
+ font-weight: 500;
367
+ padding: 0.6rem 0.9rem;
368
+ border-radius: 0;
369
+ transition: color 0.15s ease, border-color 0.15s ease;
370
+ font-size: 0.9rem;
371
+ line-height: 1.2;
372
+ display: inline-block;
373
+ border: none;
374
+ border-bottom: 2px solid transparent;
375
+ margin-bottom: -1px;
376
+ white-space: nowrap;
377
+ }
378
+
379
+ a.tab-link:hover {
380
+ color: var(--color-text-primary);
381
+ background: transparent;
382
+ text-decoration: none;
383
+ }
384
+
385
+ a.tab-link.selected {
386
+ color: var(--color-primary-light);
387
+ background: transparent;
388
+ text-decoration: none;
389
+ border-bottom-color: var(--color-primary);
390
+ }
391
+
392
+ [data-theme="light"] a.tab-link.selected { color: var(--color-primary-dark); }
393
+
394
+ /* ── Cards / sections ───────────────────────────────── */
395
+ .content-section {
396
+ background: var(--color-bg-card);
397
+ border-radius: var(--radius-lg);
398
+ border: 1px solid var(--color-border);
399
+ overflow: hidden;
400
+ margin-bottom: 1.5rem;
305
401
  }
306
402
 
307
403
  .section-header {
308
- padding: 1.5rem 2rem;
309
- background: var(--gradient-card);
404
+ padding: 1rem 1.5rem;
405
+ background: var(--color-bg-glass);
310
406
  border-bottom: 1px solid var(--color-border);
311
407
  display: flex;
312
408
  align-items: center;
313
- gap: 0.75rem;
409
+ gap: 0.7rem;
314
410
  }
315
411
 
316
412
  .section-title {
317
- font-size: 1.25rem;
413
+ font-size: 1.05rem;
318
414
  font-weight: 600;
319
415
  color: var(--color-text-primary);
416
+ letter-spacing: -0.01em;
320
417
  }
321
418
 
322
419
  .section-icon {
323
- font-size: 1.25rem;
324
- /* Removed gradient background, border-radius, and container styling */
325
- /* Now just using emoji directly for better accessibility */
420
+ display: inline-flex;
421
+ align-items: center;
422
+ justify-content: center;
423
+ color: var(--color-primary-light);
424
+ flex-shrink: 0;
326
425
  }
327
426
 
328
- .section-content {
329
- padding: 2rem;
330
- }
427
+ .section-icon svg { width: 18px; height: 18px; display: block; }
331
428
 
332
- .code,
333
- .preview {
334
- width: 100%;
429
+ [data-theme="light"] .section-icon { color: var(--color-primary); }
430
+
431
+ .section-content { padding: 1.5rem; }
432
+
433
+ .box {
335
434
  background: var(--color-bg-card);
336
- border-radius: 16px;
337
- box-shadow: var(--shadow-md);
435
+ border-radius: var(--radius-lg);
436
+ border: 1px solid var(--color-border);
437
+ padding: 1.25rem;
338
438
  margin-bottom: 1.5em;
439
+ }
440
+
441
+ /* ── Info cards (sidebar) ───────────────────────────── */
442
+ .info-card {
443
+ background: var(--color-bg-card);
339
444
  border: 1px solid var(--color-border);
445
+ border-radius: var(--radius-lg);
446
+ padding: 1.25rem 1.35rem;
340
447
  }
341
448
 
342
- .preview {
343
- height: 500px;
449
+ .info-card .section-title {
450
+ font-size: 0.8rem;
451
+ text-transform: uppercase;
452
+ letter-spacing: 0.05em;
453
+ color: var(--color-text-muted);
454
+ font-weight: 600;
455
+ margin-bottom: 1rem !important;
456
+ display: flex;
457
+ align-items: center;
458
+ gap: 0.5rem;
344
459
  }
345
460
 
346
- .preview iframe {
347
- width: 100%;
348
- height: 100%;
349
- border: none;
350
- background: white;
351
- border-radius: 0 0 16px 16px;
461
+ .info-card .section-title svg { width: 15px; height: 15px; color: var(--color-text-muted); }
462
+
463
+ .info-item {
464
+ display: flex;
465
+ align-items: baseline;
466
+ justify-content: space-between;
467
+ gap: 1rem;
468
+ padding: 0.6rem 0;
469
+ border-bottom: 1px solid var(--color-border);
470
+ font-size: 0.875rem;
352
471
  }
353
472
 
354
- .table {
355
- width: 100%;
473
+ .info-item:last-child { border-bottom: none; padding-bottom: 0; }
474
+ .info-item:first-of-type { padding-top: 0; }
475
+
476
+ .info-label {
477
+ font-weight: 500;
478
+ color: var(--color-text-muted);
479
+ flex-shrink: 0;
356
480
  }
357
481
 
358
- .w-100 {
359
- width: 100%;
482
+ .info-value {
483
+ color: var(--color-text-primary);
484
+ text-align: right;
485
+ word-break: break-word;
486
+ font-weight: 450;
487
+ }
488
+
489
+ .info-value a { word-break: break-all; }
490
+
491
+ /* ── List / table rows ──────────────────────────────── */
492
+ #components-list.box,
493
+ #components-history.box,
494
+ #components-templates.box,
495
+ #components-dependencies.box,
496
+ #components-plugins.box {
497
+ padding: 0;
498
+ overflow: hidden;
360
499
  }
361
500
 
362
501
  .row {
363
- background: var(--color-bg-card);
364
- border: 1px solid var(--color-border);
365
- border-radius: 12px;
502
+ background: transparent;
503
+ border: none;
504
+ border-bottom: 1px solid var(--color-border);
505
+ border-radius: 0;
366
506
  width: 100%;
367
507
  display: flex;
368
- padding: 14px 0px;
508
+ padding: 0.9rem 1.25rem;
369
509
  box-sizing: border-box;
370
- margin-bottom: 8px;
510
+ margin-bottom: 0;
371
511
  align-items: center;
372
- box-shadow: var(--shadow-md);
373
- transition: all 0.3s ease;
512
+ box-shadow: none;
513
+ transition: background 0.12s ease;
514
+ gap: 0.5rem;
374
515
  }
375
516
 
517
+ .row:last-child { border-bottom: none; }
518
+
376
519
  .row.header {
377
- background: var(--gradient-card);
378
- border: 1px solid var(--color-border) !important;
379
- font-size: 1.1em;
520
+ background: var(--color-bg-glass);
521
+ border: none;
522
+ border-bottom: 1px solid var(--color-border) !important;
523
+ font-size: 0.72rem;
380
524
  font-weight: 600;
381
- border-radius: 12px 12px 0 0;
525
+ text-transform: uppercase;
526
+ letter-spacing: 0.04em;
527
+ border-radius: 0;
382
528
  box-shadow: none;
383
- color: var(--color-text-primary);
529
+ color: var(--color-text-muted);
384
530
  }
385
531
 
386
532
  .row.header div {
387
- font-weight: bold;
533
+ font-weight: 600;
388
534
  margin: 0;
389
- align-self: flex-start;
535
+ align-self: center;
390
536
  }
391
537
 
392
- .row.double {
393
- min-height: 60px;
394
- }
538
+ .row.double { min-height: 56px; }
539
+ .row div { word-wrap: break-word; }
540
+ .row span { padding-right: 10px; }
395
541
 
396
- .row div {
397
- word-wrap: break-word;
542
+ /* clickable component rows (anchors that wrap an entire row) */
543
+ #components-list > a,
544
+ #components-history a,
545
+ #components-dependencies > a {
546
+ display: block;
547
+ color: inherit;
398
548
  }
399
549
 
400
- .row span {
401
- padding-right: 10px;
550
+ .componentRow { transition: background 0.12s ease; }
551
+
552
+ .componentRow:hover {
553
+ background: var(--color-bg-hover);
554
+ box-shadow: none;
555
+ border-color: var(--color-border);
556
+ transform: none;
402
557
  }
403
558
 
404
- .componentRow {
405
- transition:
406
- box-shadow 0.2s,
407
- background 0.2s;
559
+ #components-list > a:focus-visible,
560
+ #components-history a:focus-visible,
561
+ #components-dependencies > a:focus-visible {
562
+ outline: none;
408
563
  }
409
564
 
410
- .componentRow:hover {
411
- background: var(--color-bg-glass);
412
- box-shadow: var(--shadow-lg);
413
- border-color: var(--color-primary);
414
- transform: translateY(-2px);
565
+ #components-list > a:focus-visible .componentRow,
566
+ #components-history a:focus-visible .componentRow,
567
+ #components-dependencies > a:focus-visible .componentRow {
568
+ background: var(--color-bg-hover);
569
+ box-shadow: inset 2px 0 0 var(--color-primary);
415
570
  }
416
571
 
417
572
  .componentRow .title .name {
418
- font-weight: bold;
419
- font-size: 1.15rem;
573
+ font-weight: 600;
574
+ font-size: 0.95rem;
420
575
  margin: 0;
421
576
  width: 100%;
422
577
  color: var(--color-text-primary);
578
+ letter-spacing: -0.005em;
423
579
  }
424
580
 
581
+ .componentRow:hover .title .name { color: var(--color-primary-light); }
582
+ [data-theme="light"] .componentRow:hover .title .name { color: var(--color-primary-dark); }
583
+
425
584
  .componentRow .release {
426
- font-size: 1rem;
585
+ font-size: 0.9rem;
427
586
  margin: 0;
428
587
  width: 100%;
429
- color: var(--color-text-primary);
588
+ color: var(--color-text-secondary);
430
589
  }
431
590
 
591
+ .componentRow .release a { color: var(--color-primary-light); }
592
+ [data-theme="light"] .componentRow .release a { color: var(--color-primary-dark); }
593
+
432
594
  .componentRow .title .description {
433
595
  padding: 0;
434
- font-size: 0.98rem;
596
+ font-size: 0.85rem;
435
597
  color: var(--color-text-muted);
598
+ margin-top: 0.15rem;
599
+ line-height: 1.45;
436
600
  }
437
601
 
438
- .social {
439
- width: 100%;
440
- margin-top: 20px;
441
- text-align: center;
602
+ .row > * {
603
+ flex: 0 1 9%;
604
+ padding: 0 0.35rem;
605
+ align-self: center;
606
+ font-size: 0.875rem;
442
607
  }
443
608
 
444
- .field {
445
- width: 100%;
446
- margin-bottom: 1em;
609
+ .row > *:last-child { padding-right: 0; }
610
+ .row > *:first-child { padding-left: 0; }
611
+
612
+ .release,
613
+ .title,
614
+ .filters > * {
615
+ flex: 1 0;
447
616
  }
448
617
 
449
- .field p,
450
- .field span,
451
- .field a {
452
- margin: 0;
453
- font-weight: 500;
618
+ .title {
619
+ display: flex;
620
+ flex-direction: column;
621
+ gap: 0.1rem;
454
622
  }
455
623
 
456
- .field p {
457
- color: var(--color-primary);
458
- font-weight: bold;
459
- margin-right: 10px;
624
+ .author {
625
+ flex: 0 1 15%;
626
+ word-break: break-word;
627
+ color: var(--color-text-secondary);
628
+ font-size: 0.85rem;
460
629
  }
461
630
 
462
- input[type="text"],
463
- textarea,
464
- select {
465
- background: var(--color-bg-card);
466
- border: 1px solid var(--color-border);
467
- color: var(--color-text-primary);
468
- padding: 0.75rem 1rem;
469
- border-radius: 8px;
470
- font-family: inherit;
471
- font-size: 1rem;
472
- transition: all 0.3s ease;
473
- margin-bottom: 10px;
474
- box-sizing: border-box;
475
- }
631
+ .date { color: var(--color-text-muted); font-size: 0.85rem; }
632
+ .activity { color: var(--color-text-secondary); font-size: 0.85rem; }
476
633
 
477
- input[type="text"]:focus,
478
- textarea:focus,
479
- select:focus {
480
- outline: none;
481
- border-color: var(--color-primary);
482
- box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);
634
+ /* ── Filters ────────────────────────────────────────── */
635
+ .filters {
636
+ width: 100%;
637
+ display: flex;
638
+ justify-content: space-between;
639
+ gap: 0.75rem;
640
+ margin: 0;
641
+ padding: 1.25rem 1.25rem 0.75rem;
483
642
  }
484
643
 
485
- .btn {
486
- display: inline-flex;
487
- align-items: center;
488
- gap: 0.5rem;
489
- padding: 0.5rem 1rem;
490
- border-radius: 8px;
491
- font-size: 0.875rem;
492
- font-weight: 500;
493
- text-decoration: none;
494
- transition: all 0.3s ease;
495
- border: none;
496
- cursor: pointer;
497
- font-family: inherit;
644
+ .filters input {
645
+ color: var(--color-text-primary);
646
+ background-color: var(--color-bg-secondary);
647
+ margin-bottom: 0;
498
648
  }
499
649
 
500
- .btn-primary {
501
- background: var(--gradient-primary);
502
- color: white;
503
- }
650
+ #author-filter { flex: 0 1 30%; }
504
651
 
505
- .btn-primary:hover {
506
- transform: translateY(-1px);
507
- box-shadow: var(--shadow-glow);
652
+ .states {
653
+ width: 100%;
654
+ margin: 0;
655
+ padding: 0 1.25rem 1.25rem;
656
+ display: flex;
657
+ align-items: center;
658
+ gap: 1.25rem;
659
+ flex-wrap: wrap;
660
+ border-bottom: 1px solid var(--color-border);
508
661
  }
509
662
 
510
- .btn-secondary {
511
- background: var(--color-bg-glass);
512
- color: var(--color-text-primary);
513
- border: 1px solid var(--color-border);
663
+ .states > span {
664
+ color: var(--color-text-muted);
665
+ font-weight: 500;
666
+ font-size: 0.8rem;
514
667
  }
515
668
 
516
- .btn-secondary:hover {
517
- border-color: var(--color-border-hover);
518
- background: var(--color-bg-secondary);
519
- }
669
+ .states input { margin-right: 6px; }
520
670
 
521
- .filters {
522
- width: 100%;
671
+ /* ── List results meta bar ──────────────────────────── */
672
+ .list-meta {
523
673
  display: flex;
674
+ align-items: center;
524
675
  justify-content: space-between;
525
- gap: 1em;
526
- margin-bottom: 0.5em;
676
+ padding: 0.7rem 1.25rem;
677
+ font-size: 0.8rem;
678
+ color: var(--color-text-muted);
679
+ font-weight: 500;
527
680
  }
528
681
 
529
- .row > * {
530
- flex: 0 1 8%;
531
- padding: 0px 5px;
532
- align-self: center;
533
- }
682
+ #results-count { color: var(--color-text-secondary); }
534
683
 
535
- .row > *:last-child {
536
- padding-right: 10px;
684
+ /* ── Component URL copy group ───────────────────────── */
685
+ .url-input-group {
686
+ display: flex;
687
+ gap: 0.5rem;
688
+ align-items: stretch;
537
689
  }
538
690
 
539
- .row > *:first-child {
540
- padding-left: 10px;
691
+ .url-input-group #href {
692
+ flex: 1;
693
+ margin-bottom: 0;
694
+ padding: 0.7rem 0.9rem;
541
695
  }
542
696
 
543
- .release,
544
- .title,
545
- .filters > * {
546
- flex: 1 0;
697
+ .url-input-group .copy-href {
698
+ flex-shrink: 0;
699
+ white-space: nowrap;
547
700
  }
548
701
 
549
- .title {
550
- display: flex;
551
- flex-direction: column;
702
+ .copy-href.copied {
703
+ color: color-mix(in srgb, #10b981 70%, var(--color-text-primary));
704
+ border-color: color-mix(in srgb, #10b981 var(--tint-border), transparent);
705
+ background: color-mix(in srgb, #10b981 var(--tint-strength), transparent);
552
706
  }
553
707
 
554
- .filters input {
708
+ /* ── Forms ──────────────────────────────────────────── */
709
+ input[type="text"],
710
+ input[type="number"],
711
+ textarea,
712
+ select {
713
+ background: var(--color-bg-secondary);
714
+ border: 1px solid var(--color-border);
555
715
  color: var(--color-text-primary);
556
- background-color: var(--color-bg-card);
716
+ padding: 0.6rem 0.85rem;
717
+ border-radius: var(--radius-md);
718
+ font-family: inherit;
719
+ font-size: 0.9rem;
720
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
721
+ margin-bottom: 10px;
722
+ box-sizing: border-box;
557
723
  }
558
724
 
559
- #author-filter {
560
- flex: 0 1 30%;
725
+ input[type="text"]:focus,
726
+ input[type="number"]:focus,
727
+ textarea:focus,
728
+ select:focus {
729
+ outline: none;
730
+ border-color: var(--color-primary);
731
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary) 18%, transparent);
561
732
  }
562
733
 
563
- .parameter {
564
- flex: 1 0;
565
- max-width: 25%;
566
- align-self: flex-start;
567
- }
734
+ input::placeholder { color: var(--color-text-muted); }
568
735
 
569
- .parameter-description {
570
- flex: 1 0;
571
- max-width: 70%;
736
+ select {
737
+ cursor: pointer;
738
+ padding-right: 2rem;
739
+ appearance: none;
740
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%237d8693' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
741
+ background-repeat: no-repeat;
742
+ background-position: right 0.7rem center;
572
743
  }
573
744
 
574
- .author {
575
- flex: 0 1 15%;
576
- word-break: break-all;
577
- color: var(--color-text-secondary);
745
+ #versions { margin-left: 0; min-width: 160px; margin-bottom: 0; }
746
+
747
+ .w-100 { width: 100%; }
748
+ .table { width: 100%; }
749
+
750
+ /* ── Buttons ────────────────────────────────────────── */
751
+ .btn {
752
+ display: inline-flex;
753
+ align-items: center;
754
+ gap: 0.4rem;
755
+ padding: 0.5rem 0.9rem;
756
+ border-radius: var(--radius-md);
757
+ font-size: 0.85rem;
758
+ font-weight: 500;
759
+ text-decoration: none;
760
+ transition: all 0.15s ease;
761
+ border: 1px solid transparent;
762
+ cursor: pointer;
763
+ font-family: inherit;
764
+ line-height: 1.2;
578
765
  }
579
766
 
580
- #href {
581
- height: 60px;
767
+ .btn-primary { background: var(--color-primary); color: #fff; }
768
+ .btn-primary:hover {
769
+ background: var(--color-primary-dark);
770
+ color: #fff;
771
+ text-decoration: none;
772
+ box-shadow: var(--shadow-glow);
582
773
  }
583
774
 
584
- .states {
585
- width: 100%;
586
- margin-bottom: 30px;
587
- display: flex;
588
- align-items: center;
589
- gap: 1.5rem;
590
- flex-wrap: wrap;
775
+ .btn-secondary {
776
+ background: var(--color-bg-card);
777
+ color: var(--color-text-primary);
778
+ border: 1px solid var(--color-border);
779
+ }
780
+ .btn-secondary:hover {
781
+ border-color: var(--color-border-hover);
782
+ background: var(--color-bg-elevated);
783
+ color: var(--color-text-primary);
784
+ text-decoration: none;
591
785
  }
592
786
 
593
- .states > span {
594
- color: var(--color-text-secondary);
787
+ /* ── Fields ─────────────────────────────────────────── */
788
+ .field { width: 100%; margin-bottom: 1em; }
789
+
790
+ .field p,
791
+ .field span,
792
+ .field a {
793
+ margin: 0;
595
794
  font-weight: 500;
596
- font-size: 0.875rem;
597
795
  }
598
796
 
599
- .states input {
600
- margin-right: 6px;
797
+ .field p {
798
+ color: var(--color-text-muted);
799
+ font-weight: 600;
800
+ font-size: 0.8rem;
801
+ text-transform: uppercase;
802
+ letter-spacing: 0.04em;
803
+ margin-bottom: 0.4rem;
804
+ }
805
+
806
+ #href {
807
+ height: auto;
808
+ font-family: var(--font-mono) !important;
809
+ font-size: 0.825rem !important;
601
810
  }
602
811
 
603
- /* Custom Checkbox Styling */
812
+ /* ── Checkbox ───────────────────────────────────────── */
604
813
  .checkbox-wrapper {
605
814
  display: inline-flex;
606
815
  align-items: center;
607
- gap: 0.75rem;
816
+ gap: 0.6rem;
608
817
  cursor: pointer;
609
818
  user-select: none;
610
- transition: all 0.3s ease;
611
- }
612
-
613
- .checkbox-wrapper:hover {
614
- transform: translateY(-1px);
615
819
  }
616
820
 
617
821
  .checkbox-input {
@@ -622,12 +826,12 @@ select:focus {
622
826
 
623
827
  .checkbox-custom {
624
828
  position: relative;
625
- width: 20px;
626
- height: 20px;
627
- background: var(--color-bg-card);
628
- border: 2px solid var(--color-border);
629
- border-radius: 6px;
630
- transition: all 0.3s ease;
829
+ width: 18px;
830
+ height: 18px;
831
+ background: var(--color-bg-secondary);
832
+ border: 1.5px solid var(--color-border-hover);
833
+ border-radius: 5px;
834
+ transition: all 0.15s ease;
631
835
  display: flex;
632
836
  align-items: center;
633
837
  justify-content: center;
@@ -635,27 +839,26 @@ select:focus {
635
839
  }
636
840
 
637
841
  .checkbox-input:checked + .checkbox-custom {
638
- background: var(--gradient-primary);
842
+ background: var(--color-primary);
639
843
  border-color: var(--color-primary);
640
- box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);
641
844
  }
642
845
 
643
- .checkbox-input:focus + .checkbox-custom {
846
+ .checkbox-input:focus-visible + .checkbox-custom {
644
847
  outline: 2px solid var(--color-primary);
645
848
  outline-offset: 2px;
646
849
  }
647
850
 
648
851
  .checkbox-icon {
649
- width: 12px;
650
- height: 12px;
651
- stroke: white;
652
- stroke-width: 2;
852
+ width: 11px;
853
+ height: 11px;
854
+ stroke: #fff;
855
+ stroke-width: 2.5;
653
856
  fill: none;
654
857
  stroke-linecap: round;
655
858
  stroke-linejoin: round;
656
859
  opacity: 0;
657
- transform: scale(0.8);
658
- transition: all 0.2s ease;
860
+ transform: scale(0.7);
861
+ transition: all 0.15s ease;
659
862
  }
660
863
 
661
864
  .checkbox-input:checked + .checkbox-custom .checkbox-icon {
@@ -663,753 +866,387 @@ select:focus {
663
866
  transform: scale(1);
664
867
  }
665
868
 
666
- .checkbox-wrapper:hover .checkbox-custom {
667
- border-color: var(--color-border-hover);
668
- box-shadow: 0 2px 8px rgba(99, 102, 241, 0.15);
669
- }
670
-
671
- .checkbox-wrapper:hover .checkbox-input:checked + .checkbox-custom {
672
- box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.2), 0 2px 8px rgba(99, 102, 241, 0.3);
673
- }
674
-
675
- /* Removed old details-state styling - now using state-badge class */
676
-
677
- #versions {
678
- margin-left: 10px;
679
- }
869
+ .checkbox-wrapper:hover .checkbox-custom { border-color: var(--color-primary-light); }
680
870
 
681
- /* Updated state styling to use modern badge design */
682
- .state {
871
+ /* ── State badges ───────────────────────────────────── */
872
+ .state,
873
+ .state-badge {
683
874
  display: inline-flex;
684
875
  align-items: center;
685
- font-size: 0.875rem;
876
+ font-size: 0.72rem;
686
877
  font-weight: 600;
687
- padding: 0.375rem 0.75rem;
688
- border-radius: 12px;
878
+ padding: 0.18rem 0.55rem;
879
+ border-radius: var(--radius-full);
689
880
  white-space: nowrap;
690
- transition: all 0.3s ease;
881
+ transition: none;
691
882
  border: 1px solid transparent;
692
- backdrop-filter: blur(10px);
693
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
694
- margin-right: 10px;
883
+ box-shadow: none;
884
+ text-transform: capitalize;
885
+ letter-spacing: 0.01em;
886
+ line-height: 1.4;
695
887
  }
696
888
 
697
- .table .state {
698
- /* Remove the old background and height - now using component-state classes */
699
- }
889
+ .state-badge { margin-left: 0.6rem; }
890
+ .state { margin-right: 0; }
700
891
 
701
- /* Enhanced State Badge Styling - moved to component state section */
892
+ .state-badge:hover { transform: none; box-shadow: none; }
702
893
 
703
- /* Component State Badge Styling */
704
- .state-badge {
705
- display: inline-flex;
706
- align-items: center;
707
- font-size: 0.875rem;
708
- font-weight: 600;
709
- padding: 0.375rem 0.75rem;
710
- border-radius: 12px;
711
- white-space: nowrap;
712
- transition: all 0.3s ease;
713
- border: 1px solid transparent;
714
- backdrop-filter: blur(10px);
715
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
716
- margin-left: 0.75rem;
717
- }
894
+ .mobile-compact { display: none; }
718
895
 
719
- /* Mobile compact view - hidden on desktop */
720
- .mobile-compact {
721
- display: none;
896
+ /* Tinted, flat state badges (per-state hue) */
897
+ .component-state-experimental {
898
+ background: color-mix(in srgb, #f59e0b var(--tint-strength), transparent);
899
+ color: color-mix(in srgb, #f59e0b var(--badge-text-lightness), var(--color-text-primary));
900
+ border-color: color-mix(in srgb, #f59e0b var(--tint-border), transparent);
722
901
  }
723
-
724
- .state-badge:hover {
725
- transform: translateY(-1px);
726
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
902
+ .component-state-deprecated {
903
+ background: color-mix(in srgb, #ef4444 var(--tint-strength), transparent);
904
+ color: color-mix(in srgb, #ef4444 var(--badge-text-lightness), var(--color-text-primary));
905
+ border-color: color-mix(in srgb, #ef4444 var(--tint-border), transparent);
727
906
  }
728
-
729
- /* Experimental state - warm orange/yellow like in the image */
730
- .component-state-experimental {
731
- background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
732
- color: #92400e;
733
- border: 1px solid rgba(245, 158, 11, 0.3);
734
- box-shadow: 0 2px 8px rgba(245, 158, 11, 0.2);
907
+ .component-state-stable {
908
+ background: color-mix(in srgb, #10b981 var(--tint-strength), transparent);
909
+ color: color-mix(in srgb, #10b981 var(--badge-text-lightness), var(--color-text-primary));
910
+ border-color: color-mix(in srgb, #10b981 var(--tint-border), transparent);
735
911
  }
736
-
737
- .component-state-experimental:hover {
738
- box-shadow: 0 4px 12px rgba(245, 158, 11, 0.3);
912
+ .component-state-beta {
913
+ background: color-mix(in srgb, #3b82f6 var(--tint-strength), transparent);
914
+ color: color-mix(in srgb, #3b82f6 var(--badge-text-lightness), var(--color-text-primary));
915
+ border-color: color-mix(in srgb, #3b82f6 var(--tint-border), transparent);
739
916
  }
740
-
741
- /* Deprecated state - red */
742
- .component-state-deprecated {
743
- background: linear-gradient(135deg, #f87171 0%, #ef4444 100%);
744
- color: #991b1b;
745
- border: 1px solid rgba(239, 68, 68, 0.3);
746
- box-shadow: 0 2px 8px rgba(239, 68, 68, 0.2);
917
+ .component-state-alpha {
918
+ background: color-mix(in srgb, #8b5cf6 var(--tint-strength), transparent);
919
+ color: color-mix(in srgb, #8b5cf6 var(--badge-text-lightness), var(--color-text-primary));
920
+ border-color: color-mix(in srgb, #8b5cf6 var(--tint-border), transparent);
747
921
  }
748
922
 
749
- .component-state-deprecated:hover {
750
- box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3);
751
- }
923
+ .bold { font-weight: 600; }
924
+ .hide { display: none !important; }
752
925
 
753
- /* Stable state - green */
754
- .component-state-stable {
755
- background: linear-gradient(135deg, #10b981 0%, #059669 100%);
756
- color: #064e3b;
757
- border: 1px solid rgba(16, 185, 129, 0.3);
758
- box-shadow: 0 2px 8px rgba(16, 185, 129, 0.2);
926
+ /* ── Breadcrumb ─────────────────────────────────────── */
927
+ .breadcrumb {
928
+ display: flex;
929
+ align-items: center;
930
+ gap: 0.5rem;
931
+ color: var(--color-text-secondary);
932
+ font-size: 0.85rem;
933
+ margin-bottom: 1rem;
759
934
  }
760
935
 
761
- .component-state-stable:hover {
762
- box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3);
763
- }
936
+ .breadcrumb a { color: var(--color-text-muted); font-weight: 500; }
937
+ .breadcrumb a:hover { color: var(--color-primary); text-decoration: none; }
764
938
 
765
- /* Beta state - blue */
766
- .component-state-beta {
767
- background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
768
- color: #1e3a8a;
769
- border: 1px solid rgba(59, 130, 246, 0.3);
770
- box-shadow: 0 2px 8px rgba(59, 130, 246, 0.2);
771
- }
939
+ /* ── Parameters ─────────────────────────────────────── */
940
+ .parameter-grid { display: grid; gap: 1rem; }
772
941
 
773
- .component-state-beta:hover {
774
- box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
942
+ .parameter-item {
943
+ background: var(--color-bg-secondary);
944
+ border: 1px solid var(--color-border);
945
+ border-radius: var(--radius-md);
946
+ padding: 1.1rem 1.25rem;
947
+ transition: border-color 0.15s ease;
775
948
  }
776
949
 
777
- /* Alpha state - purple */
778
- .component-state-alpha {
779
- background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%);
780
- color: #4c1d95;
781
- border: 1px solid rgba(139, 92, 246, 0.3);
782
- box-shadow: 0 2px 8px rgba(139, 92, 246, 0.2);
783
- }
950
+ .parameter-item:hover { border-color: var(--color-border-hover); box-shadow: none; }
784
951
 
785
- .component-state-alpha:hover {
786
- box-shadow: 0 4px 12px rgba(139, 92, 246, 0.3);
952
+ .parameter-header {
953
+ display: flex;
954
+ align-items: center;
955
+ gap: 0.6rem;
956
+ margin-bottom: 0.65rem;
957
+ flex-wrap: wrap;
787
958
  }
788
959
 
789
- a.tab-link {
790
- color: var(--color-primary-light);
791
- font-weight: 500;
792
- padding: 0.5rem 1rem;
793
- border-radius: 8px;
794
- transition: all 0.3s ease;
795
- font-size: 1rem;
796
- line-height: 1.2;
797
- vertical-align: middle;
798
- display: inline-block;
799
- border: 1px solid transparent;
960
+ .parameter-name {
961
+ font-weight: 600;
962
+ color: var(--color-text-primary);
963
+ font-family: var(--font-mono);
964
+ font-size: 0.9rem;
800
965
  }
801
966
 
802
- a.tab-link:hover {
803
- background: var(--color-bg-glass);
804
- border-color: var(--color-border);
967
+ .parameter-type {
968
+ background: var(--color-bg-elevated);
969
+ color: var(--color-text-secondary);
970
+ border: 1px solid var(--color-border);
971
+ padding: 0.12rem 0.5rem;
972
+ border-radius: var(--radius-full);
973
+ font-size: 0.7rem;
974
+ font-weight: 500;
805
975
  }
806
976
 
807
- a.tab-link.selected {
808
- background: var(--gradient-primary);
809
- color: white;
810
- text-decoration: none;
811
- border-color: var(--color-primary);
977
+ .parameter-required {
978
+ background: color-mix(in srgb, var(--color-accent) var(--tint-strength), transparent);
979
+ color: color-mix(in srgb, var(--color-accent) var(--badge-text-lightness), var(--color-text-primary));
980
+ border-color: color-mix(in srgb, var(--color-accent) var(--tint-border), transparent);
812
981
  }
813
982
 
814
- .bold {
815
- font-weight: bold;
983
+ .parameter-description {
984
+ color: var(--color-text-secondary);
985
+ margin-bottom: 0.65rem;
986
+ line-height: 1.5;
987
+ font-size: 0.875rem;
816
988
  }
817
989
 
818
- .hide {
819
- display: none !important;
820
- }
990
+ .parameter-description strong { color: var(--color-text-primary); font-weight: 600; }
821
991
 
822
- .box {
992
+ .parameter-input {
993
+ width: 100%;
823
994
  background: var(--color-bg-card);
824
- border-radius: 12px; /* Reduced from 16px */
825
995
  border: 1px solid var(--color-border);
826
- padding: 1.5em 2em;
827
- margin-bottom: 2em;
828
- transition: all 0.3s ease;
829
- /* Removed default shadow */
830
- }
831
-
832
- .box:hover {
833
- border-color: var(--color-border-hover);
834
- box-shadow: var(--shadow-md); /* Only on hover */
835
- transform: translateY(-1px); /* Reduced from -2px */
996
+ color: var(--color-text-primary);
997
+ padding: 0.55rem 0.8rem;
998
+ border-radius: var(--radius-sm);
999
+ font-family: var(--font-mono);
1000
+ font-size: 0.85rem;
1001
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
1002
+ margin-bottom: 0;
836
1003
  }
837
1004
 
838
- /* Hero Section */
839
- .hero {
840
- padding: 3rem 0;
841
- text-align: center;
842
- position: relative;
1005
+ .parameter-input:focus {
1006
+ outline: none;
1007
+ border-color: var(--color-primary);
1008
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary) 18%, transparent);
843
1009
  }
844
1010
 
845
- /* Info Cards */
846
- .info-card {
1011
+ /* ── Preview ────────────────────────────────────────── */
1012
+ .preview-section {
847
1013
  background: var(--color-bg-card);
1014
+ border-radius: var(--radius-lg);
848
1015
  border: 1px solid var(--color-border);
849
- border-radius: 12px; /* Reduced from 16px */
850
- padding: 1.5rem;
851
- transition: all 0.3s ease;
852
- margin-bottom: 1.5rem;
853
- /* Removed default shadow */
854
- }
855
-
856
- .info-card:hover {
857
- border-color: var(--color-border-hover);
858
- transform: translateY(-1px); /* Reduced from -2px */
859
- box-shadow: var(--shadow-md); /* Reduced from shadow-lg */
1016
+ overflow: hidden;
1017
+ margin-top: 1.5rem;
860
1018
  }
861
1019
 
862
- .info-item {
1020
+ .preview-controls {
863
1021
  display: flex;
864
- align-items: start;
865
- padding: 0.75rem 0;
1022
+ align-items: center;
1023
+ justify-content: space-between;
1024
+ padding: 0.85rem 1.5rem;
1025
+ background: var(--color-bg-glass);
866
1026
  border-bottom: 1px solid var(--color-border);
1027
+ gap: 1rem;
1028
+ flex-wrap: wrap;
867
1029
  }
868
1030
 
869
- .info-item:last-child {
870
- border-bottom: none;
871
- }
1031
+ .preview-buttons { display: flex; gap: 0.6rem; }
872
1032
 
873
- .info-label {
874
- font-weight: 500;
875
- color: var(--color-text-secondary);
876
- min-width: 100px;
877
- }
878
-
879
- .info-value {
880
- color: var(--color-text-primary);
881
- text-align: right;
882
- flex: 1;
883
- margin-left: 1rem;
884
- }
885
-
886
- /* Animations */
887
- @keyframes fadeInUp {
888
- from {
889
- opacity: 0;
890
- transform: translateY(30px);
891
- }
892
- to {
893
- opacity: 1;
894
- transform: translateY(0);
895
- }
896
- }
897
-
898
- @keyframes float {
899
- 0%, 100% { transform: translateY(0px); }
900
- 50% { transform: translateY(-10px); }
901
- }
902
-
903
- /* Custom scrollbar */
904
- ::-webkit-scrollbar {
905
- width: 8px;
906
- }
907
-
908
- ::-webkit-scrollbar-track {
909
- background: var(--color-bg-secondary);
910
- }
911
-
912
- ::-webkit-scrollbar-thumb {
913
- background: var(--color-border-hover);
914
- border-radius: 4px;
915
- }
916
-
917
- ::-webkit-scrollbar-thumb:hover {
918
- background: var(--color-primary);
919
- }
920
-
921
- /* Main Content Layout */
922
- .main-content {
923
- display: grid;
924
- grid-template-columns: 1fr 350px;
925
- gap: 2rem;
926
- padding: 2rem 0;
1033
+ .preview-iframe,
1034
+ .preview iframe {
1035
+ width: 100%;
1036
+ height: 500px;
1037
+ border: none;
1038
+ background: #fff;
1039
+ display: block;
927
1040
  }
928
1041
 
929
- .sidebar {
930
- display: grid;
931
- gap: 1.5rem;
932
- align-content: start;
1042
+ .code,
1043
+ .preview {
1044
+ width: 100%;
1045
+ background: var(--color-bg-card);
1046
+ border-radius: var(--radius-lg);
1047
+ box-shadow: none;
1048
+ margin-bottom: 1.5em;
1049
+ border: 1px solid var(--color-border);
1050
+ overflow: hidden;
933
1051
  }
934
1052
 
935
- /* Collapsible Sections */
936
- .collapsible-section {
937
- transition: all 0.3s ease;
938
- }
1053
+ .preview { height: 500px; }
939
1054
 
1055
+ /* ── Collapsible ────────────────────────────────────── */
940
1056
  .collapsible-header {
941
1057
  cursor: pointer;
942
1058
  user-select: none;
943
1059
  position: relative;
944
- transition: all 0.3s ease;
1060
+ transition: background 0.15s ease;
945
1061
  }
946
1062
 
947
- .collapsible-header:hover {
948
- background: var(--color-bg-glass);
949
- }
1063
+ .collapsible-header:hover { background: var(--color-bg-hover); }
950
1064
 
951
1065
  .collapse-toggle {
952
1066
  position: absolute;
953
- right: 1.5rem;
1067
+ right: 1.25rem;
954
1068
  top: 50%;
955
1069
  transform: translateY(-50%);
956
1070
  background: none;
957
1071
  border: none;
958
- color: var(--color-text-secondary);
959
- font-size: 1rem;
1072
+ color: var(--color-text-muted);
1073
+ font-size: 0.75rem;
960
1074
  cursor: pointer;
961
- padding: 0.5rem;
962
- border-radius: 4px;
963
- transition: all 0.3s ease;
964
- }
965
-
966
- .collapse-toggle:hover {
967
- background: var(--color-bg-glass);
968
- color: var(--color-text-primary);
969
- }
970
-
971
- .collapse-icon {
972
- transition: transform 0.3s ease;
973
- display: inline-block;
974
- }
975
-
976
- .collapsible-content {
977
- overflow: hidden;
978
- transition: all 0.3s ease;
979
- }
980
-
981
- .collapsible-content.collapsed {
982
- max-height: 0;
983
- padding-top: 0;
984
- padding-bottom: 0;
985
- opacity: 0;
986
- }
987
-
988
- .collapsible-content.expanded {
989
- max-height: 2000px;
990
- opacity: 1;
991
- }
992
-
993
- .collapsible-header.collapsed .collapse-icon {
994
- transform: rotate(-90deg);
995
- }
996
-
997
- /* Responsive */
998
- @media (max-width: 1024px) {
999
-
1000
- .info-item {
1001
- display: flex;
1002
- justify-content: space-between;
1003
- }
1004
-
1005
- .container {
1006
- padding: 0 1rem;
1007
- }
1008
-
1009
- h1 {
1010
- font-size: 2.5rem;
1011
- }
1012
-
1013
- .main-content {
1014
- grid-template-columns: 1fr;
1015
- gap: 1.5rem;
1016
- }
1017
-
1018
- .sidebar {
1019
- order: -1;
1020
- }
1021
-
1022
- /* Mobile collapsible sections - collapsed by default */
1023
- .collapsible-content {
1024
- max-height: 0;
1025
- padding-top: 0;
1026
- padding-bottom: 0;
1027
- opacity: 0;
1028
- }
1029
-
1030
- .collapsible-header.collapsed .collapse-icon {
1031
- transform: rotate(-90deg);
1032
- }
1075
+ padding: 0.4rem;
1076
+ border-radius: var(--radius-sm);
1077
+ transition: color 0.15s ease, background 0.15s ease;
1033
1078
  }
1034
1079
 
1035
- @media (max-width: 900px) {
1036
- .container {
1037
- padding: 0 1rem;
1038
- }
1080
+ .collapse-toggle:hover { background: var(--color-bg-hover); color: var(--color-text-primary); }
1039
1081
 
1040
- .main-content {
1041
- padding: 1rem 0;
1042
- gap: 1rem;
1043
- }
1082
+ .collapse-icon { transition: transform 0.2s ease; display: inline-block; }
1044
1083
 
1045
- .filters {
1046
- flex-direction: column;
1047
- gap: 0.5em;
1048
- }
1084
+ .collapsible-content { overflow: hidden; transition: all 0.25s ease; }
1049
1085
 
1050
- /* Mobile responsive components list */
1051
- .row.header {
1052
- display: none; /* Hide desktop table header on mobile */
1053
- }
1086
+ .collapsible-content.collapsed { max-height: 0; padding-top: 0; padding-bottom: 0; opacity: 0; }
1087
+ .collapsible-content.expanded { max-height: 2000px; opacity: 1; }
1054
1088
 
1055
- .componentRow {
1056
- flex-direction: column !important;
1057
- align-items: center !important;
1058
- padding: 1rem !important;
1059
- gap: 0.75rem !important;
1060
- text-align: center !important;
1061
- }
1089
+ .collapsible-header.collapsed .collapse-icon { transform: rotate(-90deg); }
1062
1090
 
1063
- /* Hide desktop table columns on mobile */
1064
- .componentRow > .author,
1065
- .componentRow > .date,
1066
- .componentRow > .activity,
1067
- .componentRow > div:not(.title):not(.state):not(.mobile-compact) {
1068
- display: none !important;
1069
- }
1070
-
1071
- /* Show mobile compact view */
1072
- .mobile-compact {
1073
- display: block !important;
1074
- width: 100%;
1075
- }
1076
-
1077
- .mobile-meta {
1078
- display: flex;
1079
- flex-wrap: wrap;
1080
- gap: 0.75rem;
1081
- align-items: center;
1082
- justify-content: center;
1083
- font-size: 0.875rem;
1084
- color: var(--color-text-secondary);
1085
- width: 100%;
1086
- }
1087
-
1088
- .mobile-meta span {
1089
- background: var(--color-bg-glass);
1090
- padding: 0.25rem 0.5rem;
1091
- border-radius: 6px;
1092
- border: 1px solid var(--color-border);
1093
- font-size: 0.8rem;
1094
- font-weight: 500;
1095
- }
1096
-
1097
- .mobile-author {
1098
- color: var(--color-primary) !important;
1099
- }
1100
-
1101
- .mobile-version {
1102
- color: var(--color-text-primary) !important;
1103
- font-weight: 600;
1104
- }
1105
-
1106
- .mobile-date {
1107
- color: var(--color-text-muted) !important;
1108
- }
1109
-
1110
- .mobile-activity {
1111
- color: var(--color-accent) !important;
1112
- }
1113
-
1114
- .mobile-size {
1115
- color: var(--color-secondary) !important;
1116
- }
1117
-
1118
- /* Center the title section on mobile */
1119
- .componentRow .title {
1120
- text-align: center !important;
1121
- width: 100%;
1122
- }
1123
-
1124
- .componentRow .title .name {
1125
- text-align: center !important;
1126
- }
1127
-
1128
- .componentRow .title .description {
1129
- text-align: center !important;
1130
- }
1131
-
1132
- .box, .info-card, .section-content {
1133
- padding: 1.5rem 1rem;
1134
- }
1135
-
1136
- .sidebar .info-card {
1137
- padding: 1rem;
1138
- }
1139
-
1140
- .sidebar .info-item {
1141
- flex-direction: column;
1142
- align-items: flex-start;
1143
- gap: 0.5rem;
1144
- }
1145
-
1146
- .sidebar .info-label {
1147
- min-width: auto;
1148
- font-weight: 600;
1149
- }
1150
-
1151
- .sidebar .info-value {
1152
- text-align: left;
1153
- margin-left: 0;
1154
- }
1155
-
1156
- h1 {
1157
- font-size: 2rem;
1158
- }
1159
- }
1160
-
1161
- /* Loading states */
1162
- .loader {
1163
- text-align: center;
1164
- padding: 2em;
1165
- color: var(--color-text-muted);
1166
- }
1091
+ /* ── Loading / empty / error ────────────────────────── */
1092
+ .loader { text-align: center; padding: 2em; color: var(--color-text-muted); }
1167
1093
 
1168
1094
  .empty-state {
1169
1095
  text-align: center;
1170
- padding: 2em;
1096
+ padding: 2.5em 2em;
1171
1097
  color: var(--color-text-muted);
1172
- font-style: italic;
1173
1098
  margin: 0;
1174
1099
  }
1175
1100
 
1176
- .loader p {
1177
- margin: 0;
1178
- font-style: italic;
1179
- }
1101
+ .loader p { margin: 0; }
1180
1102
 
1181
1103
  .loader::before {
1182
1104
  content: '';
1183
1105
  display: inline-block;
1184
- width: 20px;
1185
- height: 20px;
1106
+ width: 18px;
1107
+ height: 18px;
1186
1108
  border: 2px solid var(--color-border);
1187
1109
  border-top: 2px solid var(--color-primary);
1188
1110
  border-radius: 50%;
1189
- animation: spin 1s linear infinite;
1190
- margin-right: 0.5em;
1111
+ animation: spin 0.8s linear infinite;
1112
+ margin-right: 0.6em;
1191
1113
  vertical-align: middle;
1192
1114
  }
1193
1115
 
1194
- @keyframes spin {
1195
- 0% { transform: rotate(0deg); }
1196
- 100% { transform: rotate(360deg); }
1197
- }
1116
+ @keyframes spin { to { transform: rotate(360deg); } }
1198
1117
 
1199
1118
  .loading-more {
1200
1119
  text-align: center;
1201
1120
  padding: 1em 2em;
1202
1121
  color: var(--color-text-muted);
1203
- font-style: italic;
1204
- font-size: 0.9em;
1122
+ font-size: 0.85em;
1205
1123
  border-top: 1px solid var(--color-border);
1206
- margin-top: 1em;
1207
1124
  }
1208
1125
 
1209
1126
  .loading-more::before {
1210
1127
  content: '';
1211
1128
  display: inline-block;
1212
- width: 16px;
1213
- height: 16px;
1129
+ width: 14px;
1130
+ height: 14px;
1214
1131
  border: 2px solid var(--color-border);
1215
1132
  border-top: 2px solid var(--color-primary);
1216
1133
  border-radius: 50%;
1217
- animation: spin 1s linear infinite;
1134
+ animation: spin 0.8s linear infinite;
1218
1135
  margin-right: 0.5em;
1219
1136
  vertical-align: middle;
1220
1137
  }
1221
1138
 
1222
1139
  #history-error {
1223
1140
  text-align: center;
1224
- padding: 2em;
1225
- color: var(--color-danger-text);
1226
- background-color: var(--color-danger);
1227
- border: 1px solid var(--color-state-border);
1228
- border-radius: 6px;
1229
- margin: 1em 0;
1230
- }
1231
-
1232
- #history-error p {
1233
- margin: 0;
1234
- }
1235
-
1236
- /* Breadcrumb */
1237
- .breadcrumb {
1238
- display: flex;
1239
- align-items: center;
1240
- gap: 0.5rem;
1241
- color: var(--color-text-secondary);
1242
- font-size: 0.875rem;
1243
- }
1244
-
1245
- .breadcrumb a {
1246
- color: var(--color-primary-light);
1247
- text-decoration: none;
1248
- transition: color 0.3s ease;
1249
- }
1250
-
1251
- .breadcrumb a:hover {
1252
- color: var(--color-primary);
1253
- }
1254
-
1255
- /* Parameters */
1256
- .parameter-grid {
1257
- display: grid;
1258
- gap: 1.5rem;
1259
- }
1260
-
1261
- .parameter-item {
1262
- background: var(--color-bg-glass);
1263
- border: 1px solid var(--color-border);
1264
- border-radius: 12px;
1265
- padding: 1.5rem;
1266
- transition: all 0.3s ease;
1267
- }
1268
-
1269
- .parameter-item:hover {
1270
- border-color: var(--color-primary);
1271
- box-shadow: 0 0 20px rgba(99, 102, 241, 0.1);
1272
- }
1273
-
1274
- .parameter-header {
1275
- display: flex;
1276
- align-items: center;
1277
- gap: 0.75rem;
1278
- margin-bottom: 1rem;
1279
- }
1280
-
1281
- .parameter-name {
1282
- font-weight: 600;
1283
- color: var(--color-text-primary);
1284
- }
1285
-
1286
- .parameter-type {
1287
- background: var(--color-secondary);
1288
- color: white;
1289
- padding: 0.25rem 0.75rem;
1290
- border-radius: 12px; /* Reduced from 20px */
1291
- font-size: 0.75rem;
1292
- font-weight: 500;
1293
- }
1294
-
1295
- .parameter-required {
1296
- background: var(--color-accent);
1141
+ padding: 1.5em 2em;
1142
+ color: color-mix(in srgb, #ef4444 70%, var(--color-text-primary));
1143
+ background-color: color-mix(in srgb, #ef4444 var(--tint-strength), transparent);
1144
+ border: 1px solid color-mix(in srgb, #ef4444 var(--tint-border), transparent);
1145
+ border-radius: var(--radius-md);
1146
+ margin: 1em;
1297
1147
  }
1298
1148
 
1299
- .parameter-description {
1300
- color: var(--color-text-secondary);
1301
- margin-bottom: 1rem;
1302
- line-height: 1.5;
1303
- }
1149
+ #history-error p { margin: 0; }
1304
1150
 
1305
- .parameter-input {
1151
+ /* ── Footer ─────────────────────────────────────────── */
1152
+ .social {
1306
1153
  width: 100%;
1307
- background: var(--color-bg-secondary);
1308
- border: 1px solid var(--color-border);
1309
- color: var(--color-text-primary);
1310
- padding: 0.75rem 1rem;
1311
- border-radius: 8px;
1312
- font-family: inherit;
1313
- transition: all 0.3s ease;
1154
+ margin-top: 0;
1155
+ padding: 2rem 0 2.5rem;
1156
+ text-align: center;
1157
+ border-top: 1px solid var(--color-border);
1158
+ color: var(--color-text-muted);
1159
+ font-size: 0.85rem;
1314
1160
  }
1315
1161
 
1316
- .parameter-input:focus {
1317
- outline: none;
1318
- border-color: var(--color-primary);
1319
- box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);
1320
- }
1162
+ /* ── Scrollbar ──────────────────────────────────────── */
1163
+ ::-webkit-scrollbar { width: 10px; height: 10px; }
1164
+ ::-webkit-scrollbar-track { background: transparent; }
1165
+ ::-webkit-scrollbar-thumb { background: var(--color-border-hover); border-radius: 5px; border: 2px solid var(--color-bg-primary); }
1166
+ ::-webkit-scrollbar-thumb:hover { background: var(--color-text-muted); }
1321
1167
 
1322
- /* Preview Section */
1323
- .preview-section {
1324
- background: var(--color-bg-card);
1325
- border-radius: 16px;
1326
- border: 1px solid var(--color-border);
1327
- overflow: hidden;
1328
- margin-top: 2rem;
1168
+ /* ── Animations ─────────────────────────────────────── */
1169
+ @keyframes fadeInUp {
1170
+ from { opacity: 0; transform: translateY(20px); }
1171
+ to { opacity: 1; transform: translateY(0); }
1329
1172
  }
1330
1173
 
1331
- .preview-controls {
1332
- display: flex;
1333
- align-items: center;
1334
- justify-content: space-between;
1335
- padding: 1rem 2rem;
1336
- background: var(--color-bg-glass);
1337
- border-bottom: 1px solid var(--color-border);
1174
+ /* ── Responsive ─────────────────────────────────────── */
1175
+ @media (max-width: 1024px) {
1176
+ .container { padding: 0 1.25rem; }
1177
+ h1 { font-size: 1.75rem; }
1178
+ .main-content { grid-template-columns: 1fr; gap: 1.25rem; }
1179
+ .sidebar { order: -1; position: static; }
1180
+ .info-item { display: flex; justify-content: space-between; }
1181
+ .collapsible-content { max-height: 0; padding-top: 0; padding-bottom: 0; opacity: 0; }
1182
+ .collapsible-header.collapsed .collapse-icon { transform: rotate(-90deg); }
1338
1183
  }
1339
1184
 
1340
- .preview-buttons {
1341
- display: flex;
1342
- gap: 0.75rem;
1343
- }
1185
+ @media (max-width: 900px) {
1186
+ .container { padding: 0 1rem; }
1187
+ .main-content { padding: 0.5rem 0 2rem; gap: 1rem; }
1188
+ .filters { flex-direction: column; gap: 0.5em; }
1189
+ #author-filter { flex: 1 0; }
1344
1190
 
1345
- .preview-iframe {
1346
- width: 100%;
1347
- height: 500px;
1348
- border: none;
1349
- background: white;
1350
- }
1191
+ .row.header { display: none; }
1351
1192
 
1352
- .back {
1353
- width: 100%;
1354
- margin-top: -20px;
1355
- margin-bottom: 1.5em;
1356
- display: block;
1357
- color: var(--color-text-muted);
1358
- font-size: 0.95em;
1359
- }
1193
+ .componentRow {
1194
+ flex-direction: column !important;
1195
+ align-items: flex-start !important;
1196
+ padding: 1rem 1.25rem !important;
1197
+ gap: 0.6rem !important;
1198
+ text-align: left !important;
1199
+ }
1360
1200
 
1361
- /* Stats Badge */
1362
- .stats-badge {
1363
- display: inline-flex;
1364
- align-items: center;
1365
- gap: 0.75rem;
1366
- background: var(--color-bg-card);
1367
- border: 1px solid var(--color-border);
1368
- border-radius: 12px;
1369
- padding: 0.75rem 1.25rem;
1370
- margin: 1.5rem auto 0;
1371
- box-shadow: var(--shadow-md);
1372
- transition: all 0.3s ease;
1373
- max-width: fit-content;
1374
- }
1201
+ .componentRow > .author,
1202
+ .componentRow > .date,
1203
+ .componentRow > .activity,
1204
+ .componentRow > div:not(.title):not(.state):not(.mobile-compact) {
1205
+ display: none !important;
1206
+ }
1375
1207
 
1376
- .stats-badge:hover {
1377
- border-color: var(--color-border-hover);
1378
- box-shadow: var(--shadow-lg);
1379
- transform: translateY(-1px);
1380
- }
1208
+ .mobile-compact { display: block !important; width: 100%; }
1381
1209
 
1382
- .stats-badge .chart-icon {
1383
- display: flex;
1384
- align-items: center;
1385
- gap: 2px;
1386
- }
1210
+ .mobile-meta {
1211
+ display: flex;
1212
+ flex-wrap: wrap;
1213
+ gap: 0.5rem;
1214
+ align-items: center;
1215
+ font-size: 0.8rem;
1216
+ color: var(--color-text-secondary);
1217
+ width: 100%;
1218
+ }
1387
1219
 
1388
- .stats-badge .chart-bar {
1389
- width: 4px;
1390
- border-radius: 2px;
1391
- background: var(--gradient-primary);
1392
- }
1220
+ .mobile-meta span {
1221
+ background: var(--color-bg-secondary);
1222
+ padding: 0.2rem 0.5rem;
1223
+ border-radius: var(--radius-sm);
1224
+ border: 1px solid var(--color-border);
1225
+ font-size: 0.75rem;
1226
+ font-weight: 500;
1227
+ }
1393
1228
 
1394
- .stats-badge .chart-bar:nth-child(1) {
1395
- height: 12px;
1396
- background: var(--color-primary-light);
1397
- }
1229
+ .mobile-author { color: var(--color-text-secondary) !important; }
1230
+ .mobile-version { color: var(--color-text-primary) !important; font-weight: 600; }
1231
+ .mobile-date { color: var(--color-text-muted) !important; }
1232
+ .mobile-activity { color: var(--color-text-secondary) !important; }
1233
+ .mobile-size { color: var(--color-text-secondary) !important; }
1398
1234
 
1399
- .stats-badge .chart-bar:nth-child(2) {
1400
- height: 16px;
1401
- background: var(--color-primary);
1402
- }
1235
+ .componentRow .title { text-align: left !important; width: 100%; }
1236
+ .componentRow .title .name { text-align: left !important; }
1237
+ .componentRow .title .description { text-align: left !important; }
1403
1238
 
1404
- .stats-badge .chart-bar:nth-child(3) {
1405
- height: 20px;
1406
- background: var(--color-primary-dark);
1407
- }
1239
+ .box, .info-card, .section-content { }
1240
+ .section-content { padding: 1.25rem; }
1408
1241
 
1409
- .stats-badge .badge-text {
1410
- color: var(--color-text-primary);
1411
- font-size: 0.875rem;
1412
- font-weight: 500;
1413
- white-space: nowrap;
1242
+ .sidebar .info-item { flex-direction: column; align-items: flex-start; gap: 0.3rem; }
1243
+ .sidebar .info-label { min-width: auto; font-weight: 600; }
1244
+ .sidebar .info-value { text-align: left; margin-left: 0; }
1245
+
1246
+ h1 { font-size: 1.6rem; }
1247
+ .component-title { font-size: 1.5rem; }
1248
+ .preview-controls { flex-direction: column; align-items: stretch; }
1249
+ .preview-buttons { justify-content: stretch; }
1250
+ .preview-buttons .btn { flex: 1; justify-content: center; }
1414
1251
  }
1415
1252
  `;