@ibgib/space-gib 0.0.33 → 0.0.34

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 (112) hide show
  1. package/dist/client/bootstrap.mjs +24 -51
  2. package/dist/client/chunk-25PXC4HP.mjs +9914 -0
  3. package/dist/client/chunk-RXWLL2AI.mjs +30 -0
  4. package/dist/client/css/activity-bar.css +417 -0
  5. package/dist/client/css/base.css +167 -0
  6. package/dist/client/css/components.css +218 -0
  7. package/dist/client/css/cosmic.css +557 -0
  8. package/dist/client/css/dev-tools.css +163 -0
  9. package/dist/client/css/landing.css +184 -0
  10. package/dist/client/css/layout.css +896 -0
  11. package/dist/client/css/onboarding.css +181 -0
  12. package/dist/client/css/repos.css +740 -0
  13. package/dist/client/css/variables.css +64 -0
  14. package/dist/client/index.html +202 -31
  15. package/dist/client/index.mjs +32 -32
  16. package/dist/client/script.mjs +1 -1
  17. package/dist/client/style.css +11 -1056
  18. package/dist/respec-gib.node.mjs +5 -0
  19. package/dist/server/server.mjs +6879 -3109
  20. package/package.json +6 -6
  21. package/src/client/AUTO-GENERATED-version.mts +1 -1
  22. package/src/client/cosmos/seed-cosmos-workspace.mts +69 -0
  23. package/src/client/css/activity-bar.css +417 -0
  24. package/src/client/css/base.css +167 -0
  25. package/src/client/css/components.css +218 -0
  26. package/src/client/css/cosmic.css +557 -0
  27. package/src/client/css/dev-tools.css +163 -0
  28. package/src/client/css/landing.css +184 -0
  29. package/src/client/css/layout.css +896 -0
  30. package/src/client/css/onboarding.css +181 -0
  31. package/src/client/css/repos.css +740 -0
  32. package/src/client/css/variables.css +64 -0
  33. package/src/client/dev-tools/vcs-workspace.mts +3 -3
  34. package/src/client/index.html +202 -31
  35. package/src/client/style.css +11 -1056
  36. package/src/client/ui/component/chat-view/IMPLEMENTATION.md +48 -0
  37. package/src/client/ui/component/chat-view/chat-view.css +381 -0
  38. package/src/client/ui/component/chat-view/chat-view.html +104 -0
  39. package/src/client/ui/component/chat-view/chat-view.mts +277 -0
  40. package/src/client/ui/component/chat-view/index.mts +9 -0
  41. package/src/client/ui/component/clone/IMPLEMENTATION.md +68 -0
  42. package/src/client/ui/component/clone/clone-constants.mts +16 -0
  43. package/src/client/ui/component/clone/clone-types.mts +60 -0
  44. package/src/client/ui/component/clone/clone.css +383 -0
  45. package/src/client/ui/component/clone/clone.html +89 -0
  46. package/src/client/ui/component/clone/clone.mts +620 -0
  47. package/src/client/ui/component/clone/index.mts +11 -0
  48. package/src/client/ui/component/code-editor/IMPLEMENTATION.md +89 -0
  49. package/src/client/ui/component/code-editor/code-editor.css +275 -0
  50. package/src/client/ui/component/code-editor/code-editor.html +54 -0
  51. package/src/client/ui/component/code-editor/code-editor.mts +427 -0
  52. package/src/client/ui/component/code-editor/index.mts +9 -0
  53. package/src/client/ui/component/cosmos-navigator/IMPLEMENTATION.md +31 -0
  54. package/src/client/ui/component/cosmos-navigator/cosmos-navigator.css +864 -0
  55. package/src/client/ui/component/cosmos-navigator/cosmos-navigator.html +97 -0
  56. package/src/client/ui/component/cosmos-navigator/cosmos-navigator.mts +1084 -0
  57. package/src/client/ui/component/cosmos-navigator/index.mts +18 -0
  58. package/src/client/ui/component/file-explorer/IMPLEMENTATION.md +42 -0
  59. package/src/client/ui/component/file-explorer/file-explorer.css +256 -0
  60. package/src/client/ui/component/file-explorer/file-explorer.html +75 -0
  61. package/src/client/ui/component/file-explorer/file-explorer.mts +346 -0
  62. package/src/client/ui/component/file-explorer/index.mts +9 -0
  63. package/src/client/ui/component/nested-chat/IMPLEMENTATION.md +18 -0
  64. package/src/client/ui/component/nested-chat/chat/IMPLEMENTATION.md +14 -0
  65. package/src/client/ui/component/nested-chat/chat/chat-constants.mts +14 -0
  66. package/src/client/ui/component/nested-chat/chat/chat-helpers.mts +66 -0
  67. package/src/client/ui/component/nested-chat/chat/chat.css +654 -0
  68. package/src/client/ui/component/nested-chat/chat/chat.html +90 -0
  69. package/src/client/ui/component/nested-chat/chat/chat.mts +646 -0
  70. package/src/client/ui/component/nested-chat/chat/index.mts +7 -0
  71. package/src/client/ui/component/nested-chat/index.mts +14 -0
  72. package/src/client/ui/component/nested-chat/nested-chat-constants.mts +12 -0
  73. package/src/client/ui/component/nested-chat/nested-chat-types.mts +53 -0
  74. package/src/client/ui/component/nested-chat/nested-chat.css +142 -0
  75. package/src/client/ui/component/nested-chat/nested-chat.html +11 -0
  76. package/src/client/ui/component/nested-chat/nested-chat.mts +393 -0
  77. package/src/client/ui/component/notes-explorer/index.mts +9 -0
  78. package/src/client/ui/component/notes-explorer/notes-explorer.css +313 -0
  79. package/src/client/ui/component/notes-explorer/notes-explorer.html +136 -0
  80. package/src/client/ui/component/notes-explorer/notes-explorer.mts +240 -0
  81. package/src/client/ui/component/notes-inspector/index.mts +9 -0
  82. package/src/client/ui/component/notes-inspector/notes-inspector.css +244 -0
  83. package/src/client/ui/component/notes-inspector/notes-inspector.html +97 -0
  84. package/src/client/ui/component/notes-inspector/notes-inspector.mts +152 -0
  85. package/src/client/ui/component/pitch/IMPLEMENTATION.md +48 -0
  86. package/src/client/ui/component/pitch/index.mts +9 -0
  87. package/src/client/ui/component/pitch/pitch.css +295 -0
  88. package/src/client/ui/component/pitch/pitch.html +97 -0
  89. package/src/client/ui/component/pitch/pitch.mts +135 -0
  90. package/src/client/ui/component/timeline/IMPLEMENTATION.md +33 -0
  91. package/src/client/ui/component/timeline/index.mts +9 -0
  92. package/src/client/ui/component/timeline/timeline.css +264 -0
  93. package/src/client/ui/component/timeline/timeline.html +23 -0
  94. package/src/client/ui/component/timeline/timeline.mts +317 -0
  95. package/src/client/ui/component/timeline-item-details/IMPLEMENTATION.md +28 -0
  96. package/src/client/ui/component/timeline-item-details/index.mts +9 -0
  97. package/src/client/ui/component/timeline-item-details/timeline-item-details.css +286 -0
  98. package/src/client/ui/component/timeline-item-details/timeline-item-details.html +64 -0
  99. package/src/client/ui/component/timeline-item-details/timeline-item-details.mts +194 -0
  100. package/src/client/ui/router/index.mts +3 -0
  101. package/src/client/ui/router/space-gib-router-helpers.mts +272 -0
  102. package/src/client/ui/router/space-gib-router-helpers.respec.mts +353 -0
  103. package/src/client/ui/router/space-gib-router-service.mts +186 -0
  104. package/src/client/ui/router/space-gib-router-types.mts +93 -0
  105. package/src/client/ui/shell/cosmic-big-bang.mts +844 -0
  106. package/src/client/ui/shell/space-gib-shell-constants.mts +7 -0
  107. package/src/client/ui/shell/space-gib-shell-service.mts +1728 -31
  108. package/src/server/server.mts +20 -1
  109. package/tsconfig.test.json +5 -1
  110. package/dist/client/chunk-CRJV762I.mjs +0 -3102
  111. package/dist/client/chunk-LXRCF5OS.mjs +0 -25
  112. package/dist/client/chunk-UBDQUZZV.mjs +0 -1
@@ -1,1060 +1,15 @@
1
1
  /* =========================================================================
2
2
  space-gib — style.css
3
- Dark-first, glassmorphism, premium design.
3
+ Modular Master Stylesheet
4
4
  ========================================================================= */
5
5
 
6
- /* ── Custom properties ── */
7
- :root {
8
- /* Palette */
9
- --clr-bg-deep: #05080f;
10
- --clr-bg-surface: #0b1120;
11
- --clr-bg-glass: rgba(11, 17, 32, 0.7);
12
- --clr-border: rgba(120, 248, 126, 0.12);
13
- --clr-border-hover: rgba(120, 248, 126, 0.32);
14
-
15
- --clr-accent: #78f87e;
16
- --clr-accent-dim: rgba(120, 248, 126, 0.35);
17
- --clr-accent-glow: rgba(120, 248, 126, 0.15);
18
-
19
- --clr-text-primary: #e8f0e8;
20
- --clr-text-secondary: #8fa08f;
21
- --clr-text-muted: #4a604a;
22
-
23
- --clr-danger: #ff5b5b;
24
- --clr-warn: #ffcc44;
25
- --clr-info: #44aaff;
26
-
27
- /* Typography */
28
- --font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
29
- --font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
30
-
31
- /* Spacing / Layout */
32
- --header-h: 60px;
33
- --footer-h: 48px;
34
- --radius-sm: 6px;
35
- --radius-md: 12px;
36
- --radius-lg: 20px;
37
-
38
- /* Shadows */
39
- --shadow-card: 0 4px 24px rgba(0, 0, 0, 0.5), 0 0 0 1px var(--clr-border);
40
- --shadow-glow: 0 0 32px var(--clr-accent-glow);
41
- --shadow-dialog: 0 8px 48px rgba(0, 0, 0, 0.8), 0 0 0 1px var(--clr-border);
42
-
43
- /* Panel Dimensions */
44
- --left-panel-width: 250px;
45
- --right-panel-width: 250px;
46
- --footer-panel-height: 48px;
47
-
48
- /* Transition */
49
- --t-fast: 120ms ease;
50
- --t-med: 240ms ease;
51
- --t-slow: 400ms cubic-bezier(0.4, 0, 0.2, 1);
52
-
53
- /* Tab Component Properties */
54
- --tab-padding: 0.55rem 1.25rem;
55
- --tab-background-color: rgba(255, 255, 255, 0.03);
56
- --tab-background-color-hover: rgba(255, 255, 255, 0.08);
57
- --tab-background-color-active: rgba(120, 248, 126, 0.1);
58
- --tab-border-radius: var(--radius-sm) var(--radius-sm) 0 0;
59
- --tab-border-width: 1px;
60
- --tab-border-color: rgba(255, 255, 255, 0.05);
61
- --tab-border-color-active: var(--clr-accent-dim);
62
- --tab-text-color: var(--clr-text-secondary);
63
- --tab-text-color-active: var(--clr-accent);
64
- }
65
-
66
- /* ── Reset ── */
67
- *,
68
- *::before,
69
- *::after {
70
- box-sizing: border-box;
71
- margin: 0;
72
- padding: 0;
73
- }
74
-
75
- html {
76
- font-size: 16px;
77
- -webkit-text-size-adjust: 100%;
78
- height: 100%;
79
- overflow: hidden;
80
- }
81
-
82
- body {
83
- font-family: var(--font-sans);
84
- background: var(--clr-bg-deep);
85
- color: var(--clr-text-primary);
86
- height: 100dvh;
87
- overflow: hidden;
88
- line-height: 1.6;
89
- }
90
-
91
- /* ── Global Scrollbar Customization ── */
92
- /* Custom scrollbar properties for Firefox */
93
- * {
94
- scrollbar-width: thin;
95
- scrollbar-color: var(--clr-accent-dim) transparent;
96
- }
97
-
98
- /* Chrome, Safari, Edge, Opera */
99
- ::-webkit-scrollbar {
100
- width: 6px;
101
- height: 6px;
102
- }
103
-
104
- ::-webkit-scrollbar-track {
105
- background: transparent;
106
- }
107
-
108
- ::-webkit-scrollbar-thumb {
109
- background: var(--clr-accent-dim);
110
- border-radius: var(--radius-sm);
111
- background-clip: padding-box;
112
- }
113
-
114
- ::-webkit-scrollbar-thumb:hover {
115
- background: var(--clr-accent);
116
- }
117
-
118
- /* Subtle animated background gradient */
119
- body::before {
120
- content: '';
121
- position: fixed;
122
- inset: 0;
123
- background:
124
- radial-gradient(ellipse 80% 60% at 10% 5%, rgba(120, 248, 126, 0.06) 0%, transparent 60%),
125
- radial-gradient(ellipse 60% 50% at 90% 95%, rgba(68, 170, 255, 0.05) 0%, transparent 55%);
126
- pointer-events: none;
127
- z-index: 0;
128
- }
129
-
130
- /* ── Fullscreen dialog (required by @ibgib/web-gib) ── */
131
- .fullscreen-dialog {
132
- border: 1px solid var(--clr-border);
133
- border-radius: var(--radius-lg);
134
- background: var(--clr-bg-surface);
135
- color: var(--clr-text-primary);
136
- box-shadow: var(--shadow-dialog);
137
- max-width: min(520px, 92vw);
138
- width: 100%;
139
- padding: 0;
140
- outline: none;
141
- margin: auto;
142
- }
143
-
144
- .fullscreen-dialog::backdrop {
145
- background: rgba(0, 0, 0, 0.72);
146
- backdrop-filter: blur(4px);
147
- }
148
-
149
- .fullscreen-dialog-content {
150
- display: flex;
151
- flex-direction: column;
152
- }
153
-
154
- .fullscreen-dialog-header {
155
- padding: 1.5rem 1.5rem 0.5rem;
156
- border-bottom: 1px solid var(--clr-border);
157
- }
158
-
159
- .fullscreen-dialog-header h2 {
160
- font-size: 1.1rem;
161
- font-weight: 600;
162
- color: var(--clr-accent);
163
- }
164
-
165
- .fullscreen-dialog-body {
166
- padding: 1rem 1.5rem;
167
- display: flex;
168
- flex-direction: column;
169
- gap: 0.75rem;
170
- }
171
-
172
- .fullscreen-dialog-message {
173
- font-size: 0.9375rem;
174
- color: var(--clr-text-primary);
175
- white-space: pre-wrap;
176
- }
177
-
178
- #fullscreen-dialog-prompt-input {
179
- background: rgba(255, 255, 255, 0.04);
180
- border: 1px solid var(--clr-border);
181
- border-radius: var(--radius-sm);
182
- padding: 0.6rem 0.75rem;
183
- color: var(--clr-text-primary);
184
- font-family: var(--font-sans);
185
- font-size: 0.9375rem;
186
- outline: none;
187
- transition: border-color var(--t-fast), box-shadow var(--t-fast);
188
- }
189
-
190
- #fullscreen-dialog-prompt-input:focus {
191
- border-color: var(--clr-accent);
192
- box-shadow: 0 0 0 3px var(--clr-accent-glow);
193
- }
194
-
195
- #fullscreen-dialog-prompt-input.collapsed {
196
- display: none;
197
- }
198
-
199
- .fullscreen-dialog-footer {
200
- display: flex;
201
- justify-content: flex-end;
202
- gap: 0.5rem;
203
- padding: 0.75rem 1.5rem 1.25rem;
204
- }
205
-
206
- .dialog-button {
207
- padding: 0.5rem 1.25rem;
208
- border-radius: var(--radius-sm);
209
- border: 1px solid var(--clr-border);
210
- background: transparent;
211
- color: var(--clr-text-primary);
212
- font-family: var(--font-sans);
213
- font-size: 0.875rem;
214
- cursor: pointer;
215
- transition: background var(--t-fast), border-color var(--t-fast), color var(--t-fast);
216
- }
217
-
218
- .dialog-button:first-child {
219
- background: var(--clr-accent);
220
- border-color: var(--clr-accent);
221
- color: var(--clr-bg-deep);
222
- font-weight: 600;
223
- }
224
-
225
- .dialog-button:first-child:hover {
226
- background: #9fffa5;
227
- }
228
-
229
- .dialog-button:last-child:hover {
230
- border-color: var(--clr-border-hover);
231
- background: rgba(255, 255, 255, 0.04);
232
- }
233
-
234
- /* ── App root layout ── */
235
- .app-root {
236
- position: relative;
237
- z-index: 1;
238
- display: flex;
239
- flex-direction: column;
240
- height: 100dvh;
241
- overflow: hidden;
242
- }
243
-
244
- .middle-row {
245
- display: flex;
246
- flex: 1;
247
- overflow: hidden;
248
- position: relative;
249
- }
250
-
251
- /* ── Header ── */
252
- .header-panel {
253
- position: sticky;
254
- top: 0;
255
- z-index: 100;
256
- height: var(--header-h);
257
- background: var(--clr-bg-glass);
258
- border-bottom: 1px solid var(--clr-border);
259
- backdrop-filter: blur(16px);
260
- -webkit-backdrop-filter: blur(16px);
261
- }
262
-
263
- .header-content {
264
- margin: 0 auto;
265
- height: 100%;
266
- display: flex;
267
- align-items: center;
268
- padding: 0 1.5rem;
269
- gap: 1rem;
270
- }
271
-
272
- .brand-link {
273
- text-decoration: none;
274
- display: flex;
275
- align-items: center;
276
- gap: 0.4rem;
277
- font-size: 1.2rem;
278
- font-weight: 700;
279
- color: var(--clr-text-primary);
280
- letter-spacing: -0.02em;
281
- transition: color var(--t-fast);
282
- margin-right: auto;
283
- }
284
-
285
- .brand-link:hover {
286
- color: var(--clr-accent);
287
- }
288
-
289
- .brand-icon {
290
- color: var(--clr-accent);
291
- font-size: 1.4rem;
292
- animation: spin-slow 12s linear infinite;
293
- }
294
-
295
- .brand-accent {
296
- color: var(--clr-accent);
297
- }
298
-
299
- @keyframes spin-slow {
300
- from {
301
- transform: rotate(0deg);
302
- }
303
-
304
- to {
305
- transform: rotate(360deg);
306
- }
307
- }
308
-
309
- .header-nav {
310
- display: flex;
311
- gap: 0.25rem;
312
- }
313
-
314
- .nav-link {
315
- text-decoration: none;
316
- color: var(--clr-text-secondary);
317
- font-size: 0.875rem;
318
- font-weight: 500;
319
- padding: 0.35rem 0.75rem;
320
- border-radius: var(--radius-sm);
321
- transition: color var(--t-fast), background var(--t-fast);
322
- }
323
-
324
- .nav-link:hover {
325
- color: var(--clr-text-primary);
326
- background: rgba(255, 255, 255, 0.04);
327
- }
328
-
329
- .config-btn {
330
- background: none;
331
- border: 1px solid var(--clr-border);
332
- border-radius: var(--radius-sm);
333
- padding: 0.3rem 0.6rem;
334
- color: var(--clr-text-secondary);
335
- cursor: pointer;
336
- font-size: 1rem;
337
- transition: border-color var(--t-fast), color var(--t-fast);
338
- }
339
-
340
- .config-btn:hover {
341
- border-color: var(--clr-border-hover);
342
- color: var(--clr-text-primary);
343
- }
344
-
345
- .config-popover {
346
- position: absolute;
347
- top: var(--header-h);
348
- right: 1rem;
349
- background: var(--clr-bg-surface);
350
- border: 1px solid var(--clr-border);
351
- border-radius: var(--radius-md);
352
- box-shadow: var(--shadow-card);
353
- padding: 0.5rem;
354
- min-width: 200px;
355
- margin: 0;
356
- }
357
-
358
- .config-popover-option {
359
- display: block;
360
- width: 100%;
361
- text-align: left;
362
- padding: 0.6rem 0.9rem;
363
- border: none;
364
- border-radius: var(--radius-sm);
365
- background: transparent;
366
- color: var(--clr-text-primary);
367
- font-family: var(--font-sans);
368
- font-size: 0.875rem;
369
- cursor: pointer;
370
- transition: background var(--t-fast);
371
- }
372
-
373
- .config-popover-option:hover {
374
- background: rgba(120, 248, 126, 0.08);
375
- }
376
-
377
- /* ── Header Toggle Buttons ── */
378
- .panel-toggle-btn {
379
- background: none;
380
- border: none;
381
- color: var(--clr-text-secondary);
382
- font-size: 1.4rem;
383
- cursor: pointer;
384
- padding: 0.2rem 0.5rem;
385
- transition: color var(--t-fast);
386
- }
387
-
388
- .panel-toggle-btn:hover {
389
- color: var(--clr-accent);
390
- }
391
-
392
- /* ── Center panel / main ── */
393
- .center-panel {
394
- flex: 1;
395
- display: flex;
396
- flex-direction: column;
397
- overflow: hidden;
398
- }
399
-
400
- .center-panel-content {
401
- flex: 1;
402
- overflow-y: auto;
403
- }
404
-
405
- /* ── Side Panels ── */
406
- .side-panel {
407
- background: var(--clr-bg-glass);
408
- overflow: hidden;
409
- transition: width var(--t-fast);
410
- z-index: 5;
411
- }
412
-
413
- .left-panel {
414
- width: var(--left-panel-width);
415
- border-right: 1px solid var(--clr-border);
416
- }
417
-
418
- .left-panel.collapsed {
419
- width: 0 !important;
420
- border: none;
421
- }
422
-
423
- .right-panel {
424
- width: var(--right-panel-width);
425
- border-left: 1px solid var(--clr-border);
426
- }
427
-
428
- .right-panel.collapsed {
429
- width: 0 !important;
430
- border: none;
431
- }
432
-
433
- .panel-content-inner {
434
- padding: 1rem;
435
- width: 100%;
436
- min-width: 150px;
437
- height: 100%;
438
- overflow-y: auto;
439
- }
440
-
441
- .placeholder-text {
442
- color: var(--clr-text-muted);
443
- font-size: 0.9rem;
444
- font-style: italic;
445
- }
446
-
447
- /* ── Resizers ── */
448
- .resizer {
449
- background: transparent;
450
- transition: background var(--t-fast);
451
- z-index: 10;
452
- }
453
-
454
- .resizer:hover,
455
- .resizer:active {
456
- background: var(--clr-accent-dim);
457
- }
458
-
459
- .resizer-v {
460
- width: 6px;
461
- cursor: col-resize;
462
- margin-left: -3px;
463
- margin-right: -3px;
464
- }
465
-
466
- .resizer-h {
467
- height: 6px;
468
- cursor: row-resize;
469
- margin-top: -3px;
470
- margin-bottom: -3px;
471
- }
472
-
473
- /* ── Hero section ── */
474
- .hero-section {
475
- max-width: 720px;
476
- margin: 0 auto;
477
- padding: 6rem 1.5rem 4rem;
478
- text-align: center;
479
- display: flex;
480
- flex-direction: column;
481
- align-items: center;
482
- gap: 1.25rem;
483
- }
484
-
485
- .hero-glyph {
486
- font-size: 4rem;
487
- color: var(--clr-accent);
488
- animation: pulse-glyph 3s ease-in-out infinite;
489
- }
490
-
491
- @keyframes pulse-glyph {
492
-
493
- 0%,
494
- 100% {
495
- text-shadow: 0 0 0 transparent;
496
- opacity: 1;
497
- }
498
-
499
- 50% {
500
- text-shadow: 0 0 30px var(--clr-accent-glow);
501
- opacity: 0.85;
502
- }
503
- }
504
-
505
- .hero-title {
506
- font-size: clamp(2.5rem, 6vw, 4rem);
507
- font-weight: 700;
508
- letter-spacing: -0.03em;
509
- background: linear-gradient(135deg, var(--clr-accent) 0%, #44aaff 100%);
510
- -webkit-background-clip: text;
511
- -webkit-text-fill-color: transparent;
512
- background-clip: text;
513
- line-height: 1.1;
514
- }
515
-
516
- .hero-tagline {
517
- font-size: 1.125rem;
518
- color: var(--clr-text-secondary);
519
- max-width: 480px;
520
- line-height: 1.7;
521
- }
522
-
523
- .cta-row {
524
- display: flex;
525
- gap: 0.75rem;
526
- flex-wrap: wrap;
527
- justify-content: center;
528
- margin-top: 0.5rem;
529
- }
530
-
531
- .cta-btn {
532
- padding: 0.75rem 1.75rem;
533
- border-radius: var(--radius-md);
534
- font-family: var(--font-sans);
535
- font-size: 0.9375rem;
536
- font-weight: 600;
537
- cursor: pointer;
538
- text-decoration: none;
539
- transition: all var(--t-med);
540
- display: inline-flex;
541
- align-items: center;
542
- gap: 0.4rem;
543
- }
544
-
545
- .cta-primary {
546
- background: var(--clr-accent);
547
- color: var(--clr-bg-deep);
548
- border: none;
549
- box-shadow: 0 0 20px var(--clr-accent-glow);
550
- }
551
-
552
- .cta-primary:hover {
553
- background: #9fffa5;
554
- box-shadow: 0 0 32px rgba(120, 248, 126, 0.35);
555
- transform: translateY(-1px);
556
- }
557
-
558
- .cta-secondary {
559
- background: transparent;
560
- color: var(--clr-text-primary);
561
- border: 1px solid var(--clr-border);
562
- }
563
-
564
- .cta-secondary:hover {
565
- border-color: var(--clr-border-hover);
566
- background: rgba(255, 255, 255, 0.04);
567
- transform: translateY(-1px);
568
- }
569
-
570
- /* ── Features section ── */
571
- .features-section {
572
- max-width: 1000px;
573
- margin: 0 auto;
574
- padding: 0 1.5rem 5rem;
575
- display: grid;
576
- grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
577
- gap: 1.25rem;
578
- }
579
-
580
- .feature-card {
581
- background: var(--clr-bg-glass);
582
- border: 1px solid var(--clr-border);
583
- border-radius: var(--radius-lg);
584
- padding: 1.75rem;
585
- backdrop-filter: blur(12px);
586
- transition: border-color var(--t-med), box-shadow var(--t-med), transform var(--t-med);
587
- display: flex;
588
- flex-direction: column;
589
- gap: 0.75rem;
590
- }
591
-
592
- .feature-card:hover {
593
- border-color: var(--clr-border-hover);
594
- box-shadow: var(--shadow-glow);
595
- transform: translateY(-3px);
596
- }
597
-
598
- .feature-icon {
599
- font-size: 1.75rem;
600
- }
601
-
602
- .feature-title {
603
- font-size: 1.1rem;
604
- font-weight: 600;
605
- color: var(--clr-text-primary);
606
- }
607
-
608
- .feature-desc {
609
- font-size: 0.9rem;
610
- color: var(--clr-text-secondary);
611
- line-height: 1.65;
612
- }
613
-
614
- .feature-desc code {
615
- font-family: var(--font-mono);
616
- font-size: 0.8rem;
617
- background: rgba(120, 248, 126, 0.1);
618
- color: var(--clr-accent);
619
- padding: 0.1em 0.35em;
620
- border-radius: 3px;
621
- }
622
-
623
- /* ── Status section ── */
624
- .status-section {
625
- max-width: 400px;
626
- margin: 0 auto;
627
- padding: 0 1.5rem 4rem;
628
- display: flex;
629
- justify-content: center;
630
- }
631
-
632
- .status-badge {
633
- display: inline-flex;
634
- align-items: center;
635
- gap: 0.5rem;
636
- padding: 0.5rem 1rem;
637
- border-radius: 999px;
638
- font-size: 0.85rem;
639
- font-weight: 500;
640
- border: 1px solid var(--clr-border);
641
- background: var(--clr-bg-glass);
642
- backdrop-filter: blur(8px);
643
- }
644
-
645
- .status-loading {
646
- color: var(--clr-text-secondary);
647
- }
648
-
649
- .status-ready {
650
- color: var(--clr-accent);
651
- border-color: var(--clr-accent-dim);
652
- }
653
-
654
- .status-error {
655
- color: var(--clr-danger);
656
- }
657
-
658
- /* ── Footer ── */
659
- .footer-panel {
660
- height: var(--footer-panel-height);
661
- display: flex;
662
- align-items: center;
663
- justify-content: center;
664
- border-top: 1px solid var(--clr-border);
665
- background: var(--clr-bg-glass);
666
- }
667
-
668
- .footer-text {
669
- font-size: 0.8rem;
670
- color: var(--clr-text-muted);
671
- display: flex;
672
- gap: 0.5rem;
673
- flex-wrap: wrap;
674
- justify-content: center;
675
- align-items: center;
676
- }
677
-
678
- .footer-link {
679
- color: var(--clr-text-secondary);
680
- text-decoration: none;
681
- transition: color var(--t-fast);
682
- }
683
-
684
- .footer-link:hover {
685
- color: var(--clr-accent);
686
- }
687
-
688
- /* ── Responsive ── */
689
- @media (max-width: 600px) {
690
- .header-nav {
691
- display: none;
692
- }
693
-
694
- .hero-section {
695
- padding: 3rem 1rem 2.5rem;
696
- }
697
-
698
- .features-section {
699
- padding: 0 1rem 3rem;
700
- }
701
- }
702
-
703
- /* ── Dev Tools Panel (diagnostic only — remove when WS sync confirmed) ── */
704
- .dev-panel {
705
- max-width: 100%;
706
- width: 100%;
707
- margin: 0 auto;
708
- padding: 1.5rem;
709
- border: 1px dashed rgba(255, 204, 68, 0.35);
710
- border-radius: var(--radius-md);
711
- background: rgba(255, 204, 68, 0.04);
712
- display: flex;
713
- flex-direction: column;
714
- gap: 1rem;
715
- margin-bottom: 3rem;
716
- max-height: none;
717
- }
718
-
719
- .dev-panel-title {
720
- font-size: 0.8rem;
721
- font-weight: 600;
722
- text-transform: uppercase;
723
- letter-spacing: 0.12em;
724
- color: var(--clr-warn);
725
- opacity: 0.7;
726
- }
727
-
728
- .dev-panel-select-container {
729
- display: flex;
730
- align-items: center;
731
- gap: 0.75rem;
732
- margin-bottom: 0.5rem;
733
- }
734
-
735
- .dev-select {
736
- background: var(--clr-bg-surface);
737
- color: var(--clr-text-primary);
738
- border: 1px solid rgba(255, 204, 68, 0.4);
739
- padding: 0.5rem 1rem;
740
- border-radius: var(--radius-sm);
741
- font-family: var(--font-sans);
742
- outline: none;
743
- cursor: pointer;
744
- font-size: 0.9rem;
745
- transition: border-color var(--t-fast);
746
- }
747
-
748
- .dev-select:hover {
749
- border-color: rgba(255, 204, 68, 0.7);
750
- }
751
-
752
- .dev-panel-row {
753
- display: flex;
754
- gap: 0.75rem;
755
- flex-wrap: wrap;
756
- }
757
-
758
- .dev-btn {
759
- padding: 0.55rem 1.25rem;
760
- border-radius: var(--radius-sm);
761
- background: transparent;
762
- border: 1px solid rgba(255, 204, 68, 0.4);
763
- color: var(--clr-warn);
764
- font-family: var(--font-sans);
765
- font-size: 0.875rem;
766
- font-weight: 500;
767
- cursor: pointer;
768
- transition: background var(--t-fast), border-color var(--t-fast);
769
- }
770
-
771
- .dev-btn:hover:not(:disabled) {
772
- background: rgba(255, 204, 68, 0.08);
773
- border-color: rgba(255, 204, 68, 0.7);
774
- }
775
-
776
- .dev-btn:disabled {
777
- opacity: 0.5;
778
- cursor: not-allowed;
779
- border-color: rgba(255, 204, 68, 0.2);
780
- }
781
-
782
- .dev-panel-log {
783
- font-family: var(--font-mono);
784
- font-size: 0.75rem;
785
- color: var(--clr-text-secondary);
786
- background: rgba(0, 0, 0, 0.35);
787
- border: 1px solid var(--clr-border);
788
- border-radius: var(--radius-sm);
789
- padding: 0.75rem 1rem;
790
- max-height: 800px;
791
- overflow-y: auto;
792
- white-space: pre-wrap;
793
- word-break: break-all;
794
- min-height: 10rem;
795
- }
796
-
797
- /* dev tools row styles */
798
- .dev-panel-row-container {
799
- display: flex;
800
- align-items: center;
801
- gap: 1.25rem;
802
- border-bottom: 1px solid rgba(255, 204, 68, 0.08);
803
- padding-bottom: 0.85rem;
804
- }
805
-
806
- .dev-panel-row-container:last-of-type {
807
- border-bottom: none;
808
- padding-bottom: 0;
809
- }
810
-
811
- .dev-panel-row-label {
812
- font-family: var(--font-mono);
813
- font-size: 0.85rem;
814
- font-weight: 700;
815
- color: var(--clr-warn);
816
- min-width: 2.2rem;
817
- text-align: center;
818
- border: 1px solid rgba(255, 204, 68, 0.25);
819
- border-radius: var(--radius-sm);
820
- padding: 0.25rem 0.45rem;
821
- background: rgba(255, 204, 68, 0.06);
822
- user-select: none;
823
- }
824
-
825
- @keyframes spin-bounce {
826
- 0% {
827
- transform: translate(0, 0) scale(1);
828
- }
829
- 25% {
830
- transform: translate(10px, -6px) scale(1.05);
831
- }
832
- 50% {
833
- transform: translate(0, -12px) scale(1.1);
834
- }
835
- 75% {
836
- transform: translate(-10px, -6px) scale(1.05);
837
- }
838
- 100% {
839
- transform: translate(0, 0) scale(1);
840
- }
841
- }
842
-
843
- /* ── Common Component Tab Styling ── */
844
- .tabs-row {
845
- display: flex;
846
- align-items: center;
847
- gap: 0.5rem;
848
- }
849
-
850
- .tabs-list {
851
- display: flex;
852
- gap: 0.25rem;
853
- overflow-x: auto;
854
- flex-grow: 1;
855
- padding-bottom: 5px; /* Leave space for the thin scrollbar */
856
- margin-bottom: -5px; /* Offset the padding in layout */
857
-
858
- /* Custom scrollbar properties for Firefox */
859
- scrollbar-width: thin;
860
- scrollbar-color: var(--clr-accent-dim) transparent;
861
- }
862
-
863
- /* Chrome, Safari, Edge, Opera */
864
- .tabs-list::-webkit-scrollbar {
865
- height: 5px; /* Thin horizontal scrollbar */
866
- }
867
-
868
- .tabs-list::-webkit-scrollbar-track {
869
- background: transparent;
870
- }
871
-
872
- .tabs-list::-webkit-scrollbar-thumb {
873
- background: var(--clr-accent-dim);
874
- border-radius: var(--radius-sm);
875
- border: 1px solid transparent; /* Avoid thumb touching edges */
876
- background-clip: padding-box;
877
- }
878
-
879
- .tabs-list::-webkit-scrollbar-thumb:hover {
880
- background: var(--clr-accent);
881
- }
882
-
883
- /* Tab button styling (.tab-btn is TS default, .panel-tab-button for backwards compatibility) */
884
- .tab-btn,
885
- .panel-tab-button {
886
- padding: var(--tab-padding);
887
- background: var(--tab-background-color);
888
- border-radius: var(--tab-border-radius);
889
- border: var(--tab-border-width) solid var(--tab-border-color);
890
- border-bottom: none;
891
- color: var(--tab-text-color);
892
- font-family: var(--font-sans);
893
- font-size: 0.85rem;
894
- font-weight: 500;
895
- cursor: pointer;
896
- white-space: nowrap;
897
- transition: background var(--t-fast), border-color var(--t-fast), color var(--t-fast);
898
- outline: none;
899
- }
900
-
901
- .tab-btn:hover,
902
- .panel-tab-button:hover {
903
- background: var(--tab-background-color-hover);
904
- color: var(--clr-text-primary);
905
- border-color: var(--clr-border-hover);
906
- }
907
-
908
- .tab-btn.active,
909
- .panel-tab-button.active {
910
- background: var(--tab-background-color-active);
911
- color: var(--tab-text-color-active);
912
- border-color: var(--tab-border-color-active);
913
- border-bottom: var(--tab-border-width) solid transparent;
914
- font-weight: 600;
915
- box-shadow: inset 0 2px 0 0 var(--clr-accent);
916
- }
917
-
918
- .tab-btn.global-active::after {
919
- content: " •";
920
- color: var(--clr-accent);
921
- font-size: 1.2rem;
922
- line-height: 0;
923
- vertical-align: middle;
924
- }
925
-
926
- .action-btn.active-primary:disabled {
927
- opacity: 0.85;
928
- background: rgba(120, 248, 126, 0.15) !important;
929
- color: var(--clr-accent) !important;
930
- border: 1px solid var(--clr-accent) !important;
931
- }
932
-
933
- /* ── Common Component Layout & Controls ── */
934
-
935
- .component-container {
936
- padding: 2rem;
937
- background: var(--clr-bg-glass);
938
- backdrop-filter: blur(16px);
939
- border-radius: var(--radius-lg);
940
- border: 1px solid var(--clr-border);
941
- box-shadow: var(--shadow-card);
942
- color: var(--clr-text-primary);
943
- }
944
-
945
- .action-row {
946
- display: flex;
947
- gap: 1rem;
948
- margin-top: 0.5rem;
949
- }
950
-
951
- .action-btn {
952
- padding: var(--button-padding-base, 0.75rem 1.5rem);
953
- background: var(--button-background-color-base, var(--clr-accent));
954
- color: var(--button-text-color-base, var(--clr-bg-deep));
955
- border: var(--button-border-width-base, 1px) solid var(--button-border-color-base, transparent);
956
- border-radius: var(--button-border-radius-base, var(--radius-md));
957
- font-weight: 600;
958
- cursor: pointer;
959
- transition: all var(--t-fast);
960
- display: inline-flex;
961
- align-items: center;
962
- justify-content: center;
963
- }
964
-
965
- .action-btn:hover:not(:disabled) {
966
- background: var(--button-hover-background-color, #9fffa5);
967
- color: var(--button-hover-text-color, var(--clr-bg-deep));
968
- border-color: var(--button-hover-border-color, transparent);
969
- transform: translateY(-1px);
970
- box-shadow: 0 4px 12px var(--clr-accent-glow);
971
- }
972
-
973
- .action-btn:active:not(:disabled) {
974
- transform: translateY(0);
975
- }
976
-
977
- .action-btn.secondary {
978
- background: transparent;
979
- border-color: var(--button-border-color-base, rgba(255, 255, 255, 0.2));
980
- color: var(--clr-text-primary);
981
- }
982
-
983
- .action-btn.secondary:hover:not(:disabled) {
984
- background: var(--button-hover-background-color, rgba(255, 255, 255, 0.05));
985
- border-color: var(--button-hover-border-color, rgba(255, 255, 255, 0.4));
986
- color: var(--clr-text-primary);
987
- box-shadow: none;
988
- }
989
-
990
- .action-btn:disabled {
991
- opacity: 0.5;
992
- cursor: not-allowed;
993
- background: var(--clr-border) !important;
994
- color: var(--clr-text-muted) !important;
995
- border-color: transparent !important;
996
- box-shadow: none !important;
997
- transform: none !important;
998
- }
999
-
1000
- .text-input,
1001
- .secret-input {
1002
- flex-grow: 1;
1003
- padding: var(--input-padding, 0.75rem);
1004
- background: var(--input-background-color, rgba(0, 0, 0, 0.25));
1005
- color: var(--input-text-color, var(--clr-text-primary));
1006
- border: var(--input-border-width, 1px) solid var(--input-border-color, var(--clr-border));
1007
- border-radius: var(--input-border-radius, var(--radius-sm));
1008
- font-size: 0.9rem;
1009
- font-family: var(--font-mono);
1010
- transition: border-color var(--t-fast);
1011
- }
1012
-
1013
- .text-input:focus,
1014
- .secret-input:focus {
1015
- outline: none;
1016
- border-color: var(--clr-accent);
1017
- }
1018
-
1019
- .text-input.invalid,
1020
- .secret-input.invalid {
1021
- border-color: var(--clr-danger);
1022
- box-shadow: 0 0 0 2px rgba(255, 91, 91, 0.2);
1023
- }
1024
-
1025
- .status-msg {
1026
- padding: 0.75rem 1rem;
1027
- border-radius: var(--radius-sm);
1028
- font-size: 0.85rem;
1029
- margin: 0;
1030
- }
1031
-
1032
- .status-msg.success {
1033
- background: rgba(120, 248, 126, 0.08);
1034
- border: 1px solid var(--clr-border);
1035
- color: var(--clr-accent);
1036
- }
1037
-
1038
- .status-msg.error {
1039
- background: rgba(255, 91, 91, 0.08);
1040
- border: 1px solid rgba(255, 91, 91, 0.2);
1041
- color: var(--clr-danger);
1042
- }
1043
-
1044
- .status-msg.info {
1045
- background: rgba(255, 255, 255, 0.03);
1046
- border: 1px solid rgba(255, 255, 255, 0.08);
1047
- color: var(--clr-text-secondary);
1048
- }
1049
-
1050
- .address-code,
1051
- .keystone-addr {
1052
- display: block;
1053
- padding: 0.75rem;
1054
- background: rgba(0, 0, 0, 0.3);
1055
- border-radius: var(--radius-sm);
1056
- font-family: var(--font-mono);
1057
- font-size: 0.85rem;
1058
- word-break: break-all;
1059
- color: var(--clr-accent);
1060
- }
6
+ @import './css/variables.css';
7
+ @import './css/base.css';
8
+ @import './css/layout.css';
9
+ @import './css/components.css';
10
+ @import './css/landing.css';
11
+ @import './css/dev-tools.css';
12
+ @import './css/repos.css';
13
+ @import './css/cosmic.css';
14
+ @import './css/activity-bar.css';
15
+ @import './css/onboarding.css';