@ibgib/space-gib 0.0.32 → 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 +31 -31
  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-AX6BROMT.mjs +0 -1
  111. package/dist/client/chunk-CIQUGV7U.mjs +0 -25
  112. package/dist/client/chunk-YPCHYDKL.mjs +0 -3102
@@ -0,0 +1,864 @@
1
+ :host {
2
+ display: flex !important;
3
+ flex-direction: column !important;
4
+ flex: 1 !important;
5
+ position: relative !important;
6
+ width: 100% !important;
7
+ height: 100% !important;
8
+ min-height: 0 !important;
9
+ overflow: hidden;
10
+ background: transparent;
11
+ user-select: none;
12
+ font-family: inherit;
13
+ color: var(--text-color, #e0e0e0);
14
+ }
15
+
16
+ .cosmos-navigator-root {
17
+ position: relative;
18
+ width: 100%;
19
+ height: 100%;
20
+ flex: 1;
21
+ min-height: 0;
22
+ display: flex;
23
+ align-items: center;
24
+ justify-content: center;
25
+ overflow: hidden;
26
+ }
27
+
28
+ /* Starfield & Particle Canvas */
29
+ .starfield-canvas {
30
+ position: absolute;
31
+ inset: 0;
32
+ width: 100%;
33
+ height: 100%;
34
+ z-index: 1;
35
+ pointer-events: none;
36
+ display: block;
37
+ }
38
+
39
+ /* =========================================================================
40
+ POLYCOSMOS STAGE (Zoom Level 1 & 2)
41
+ ========================================================================= */
42
+ .polycosmos-stage {
43
+ position: absolute;
44
+ inset: 0;
45
+ display: flex;
46
+ align-items: center;
47
+ justify-content: center;
48
+ z-index: 2;
49
+ transition: opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1), transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
50
+ pointer-events: none;
51
+ }
52
+
53
+ .polycosmos-stage.hidden {
54
+ opacity: 0;
55
+ transform: scale(0.85);
56
+ pointer-events: none;
57
+ visibility: hidden;
58
+ }
59
+
60
+ /* Singularity / Big Bang Button */
61
+ .singularity-container {
62
+ position: relative;
63
+ display: flex;
64
+ flex-direction: column;
65
+ align-items: center;
66
+ justify-content: center;
67
+ z-index: 10;
68
+ pointer-events: auto;
69
+ }
70
+
71
+ .singularity-btn {
72
+ position: relative;
73
+ width: 110px;
74
+ height: 110px;
75
+ border-radius: 50%;
76
+ background: radial-gradient(circle, rgba(255, 255, 255, 1) 0%, rgba(124, 92, 252, 0.8) 35%, rgba(15, 23, 42, 0.95) 70%);
77
+ border: 2px solid rgba(255, 255, 255, 0.8);
78
+ cursor: pointer;
79
+ display: flex;
80
+ align-items: center;
81
+ justify-content: center;
82
+ box-shadow: 0 0 50px rgba(124, 92, 252, 0.8), 0 0 100px rgba(56, 189, 248, 0.4), inset 0 0 30px rgba(255, 255, 255, 0.9);
83
+ transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.3s ease;
84
+ padding: 0;
85
+ outline: none;
86
+ }
87
+
88
+ .singularity-btn:hover {
89
+ transform: scale(1.12);
90
+ box-shadow: 0 0 70px rgba(124, 92, 252, 1), 0 0 130px rgba(56, 189, 248, 0.7), inset 0 0 40px rgba(255, 255, 255, 1);
91
+ }
92
+
93
+ .singularity-btn:active {
94
+ transform: scale(0.96);
95
+ }
96
+
97
+ .singularity-core {
98
+ position: absolute;
99
+ width: 26px;
100
+ height: 26px;
101
+ border-radius: 50%;
102
+ background: #ffffff;
103
+ box-shadow: 0 0 20px #ffffff, 0 0 40px #a78bfa;
104
+ animation: singularity-pulse 2s ease-in-out infinite alternate;
105
+ }
106
+
107
+ .singularity-emoji {
108
+ position: absolute;
109
+ top: 50%;
110
+ left: 50%;
111
+ transform: translate(-50%, -50%);
112
+ font-size: 1.45rem;
113
+ line-height: 1;
114
+ pointer-events: none;
115
+ z-index: 4;
116
+ user-select: none;
117
+ animation: singularity-emoji-fluctuate 2s ease-in-out infinite alternate;
118
+ }
119
+
120
+ /* Compression / Gravitational collapse right before explosion - High velocity spinning firecracker */
121
+ .singularity-btn.compressing {
122
+ pointer-events: none;
123
+ animation: singularity-compress 1.0s cubic-bezier(0.4, 0, 0.2, 1) forwards;
124
+ }
125
+
126
+ .singularity-btn.compressing .singularity-ring,
127
+ .singularity-btn.compressing .singularity-glow {
128
+ transition: transform 0.95s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.85s ease;
129
+ transform: scale(0.05);
130
+ opacity: 0;
131
+ }
132
+
133
+ .singularity-btn.compressing .singularity-core {
134
+ transition: transform 0.95s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.85s ease;
135
+ transform: scale(0.18);
136
+ opacity: 0.1;
137
+ }
138
+
139
+ .singularity-btn.compressing .singularity-emoji {
140
+ animation: singularity-emoji-spin-flare 1.0s cubic-bezier(0.4, 0, 0.2, 1) forwards;
141
+ filter: drop-shadow(0 0 18px rgba(251, 191, 36, 1)) drop-shadow(0 0 36px rgba(245, 158, 11, 0.95));
142
+ }
143
+
144
+ .singularity-btn.exploded {
145
+ animation: singularity-explode-burst 0.5s ease-out forwards;
146
+ }
147
+
148
+ .singularity-glow {
149
+ position: absolute;
150
+ width: 140px;
151
+ height: 140px;
152
+ border-radius: 50%;
153
+ background: radial-gradient(circle, rgba(167, 139, 250, 0.4) 0%, transparent 70%);
154
+ animation: singularity-glow-flare 3s ease-in-out infinite alternate;
155
+ pointer-events: none;
156
+ }
157
+
158
+ .singularity-ring {
159
+ position: absolute;
160
+ border-radius: 50%;
161
+ border: 1px dashed rgba(255, 255, 255, 0.6);
162
+ pointer-events: none;
163
+ }
164
+
165
+ .ring-outer {
166
+ width: 130px;
167
+ height: 130px;
168
+ border-color: rgba(167, 139, 250, 0.5);
169
+ animation: ring-spin 18s linear infinite;
170
+ }
171
+
172
+ .ring-middle {
173
+ width: 115px;
174
+ height: 115px;
175
+ border-color: rgba(56, 189, 248, 0.6);
176
+ border-style: dotted;
177
+ animation: ring-spin-rev 12s linear infinite;
178
+ }
179
+
180
+ .ring-inner {
181
+ width: 100px;
182
+ height: 100px;
183
+ border-color: rgba(255, 255, 255, 0.7);
184
+ animation: ring-spin 8s linear infinite;
185
+ }
186
+
187
+ .singularity-label {
188
+ position: absolute;
189
+ bottom: -36px;
190
+ white-space: nowrap;
191
+ font-size: 0.88rem;
192
+ font-weight: 600;
193
+ letter-spacing: 0.06em;
194
+ color: #f1f5f9;
195
+ text-shadow: 0 0 12px rgba(124, 92, 252, 0.9), 0 2px 4px rgba(0, 0, 0, 0.8);
196
+ pointer-events: none;
197
+ }
198
+
199
+ /* Orbit Track & Orbiting Cosmos Nodes */
200
+ .orbit-track {
201
+ position: absolute;
202
+ width: 480px;
203
+ height: 480px;
204
+ border-radius: 50%;
205
+ pointer-events: none;
206
+ display: flex;
207
+ align-items: center;
208
+ justify-content: center;
209
+ transition: opacity 0.4s ease;
210
+ }
211
+
212
+ .orbit-track.hidden {
213
+ opacity: 0;
214
+ visibility: hidden;
215
+ }
216
+
217
+ .orbit-ring-visual {
218
+ position: absolute;
219
+ inset: 0;
220
+ border-radius: 50%;
221
+ border: 1.5px dashed rgba(124, 92, 252, 0.35);
222
+ animation: orbit-track-spin 140s linear infinite;
223
+ box-shadow: inset 0 0 40px rgba(124, 92, 252, 0.08), 0 0 40px rgba(124, 92, 252, 0.08);
224
+ }
225
+
226
+ .orbiting-cosmoses-container {
227
+ position: absolute;
228
+ inset: 0;
229
+ pointer-events: none;
230
+ }
231
+
232
+ .orbit-cosmos-node {
233
+ position: absolute;
234
+ transform: translate(-50%, -50%);
235
+ pointer-events: auto;
236
+ background: rgba(18, 22, 38, 0.88);
237
+ border: 1.5px solid rgba(124, 92, 252, 0.55);
238
+ border-radius: 9999px;
239
+ padding: 8px 16px;
240
+ display: flex;
241
+ align-items: center;
242
+ gap: 8px;
243
+ color: #f8fafc;
244
+ cursor: pointer;
245
+ transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
246
+ backdrop-filter: blur(10px);
247
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.6), 0 0 16px rgba(124, 92, 252, 0.3);
248
+ white-space: nowrap;
249
+ }
250
+
251
+ .orbit-cosmos-node:hover {
252
+ transform: translate(-50%, -50%) scale(1.1);
253
+ border-color: rgba(167, 139, 250, 0.95);
254
+ box-shadow: 0 0 30px rgba(124, 92, 252, 0.7), 0 6px 24px rgba(0, 0, 0, 0.7);
255
+ }
256
+
257
+ .orbit-cosmos-node.is-active {
258
+ border-color: #38bdf8;
259
+ box-shadow: 0 0 25px rgba(56, 189, 248, 0.6), 0 4px 20px rgba(0, 0, 0, 0.6);
260
+ }
261
+
262
+ .orbit-cosmos-icon {
263
+ font-size: 1.25rem;
264
+ display: inline-block;
265
+ animation: galaxy-spin 25s linear infinite;
266
+ }
267
+
268
+ .orbit-cosmos-name {
269
+ font-size: 0.88rem;
270
+ font-weight: 600;
271
+ color: #f8fafc;
272
+ }
273
+
274
+ .orbit-cosmos-badge {
275
+ background: rgba(124, 92, 252, 0.35);
276
+ border: 1px solid rgba(167, 139, 250, 0.4);
277
+ border-radius: 12px;
278
+ padding: 1px 7px;
279
+ font-size: 0.72rem;
280
+ font-weight: 600;
281
+ color: #c4b5fd;
282
+ }
283
+
284
+ /* =========================================================================
285
+ ACTIVE COSMOS STAGE (Zoom Level 3)
286
+ ========================================================================= */
287
+ .active-cosmos-stage {
288
+ position: absolute;
289
+ inset: 0;
290
+ display: flex;
291
+ align-items: center;
292
+ justify-content: center;
293
+ z-index: 2;
294
+ transition: opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1), transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
295
+ pointer-events: none;
296
+ }
297
+
298
+ .active-cosmos-stage.hidden {
299
+ opacity: 0;
300
+ transform: scale(1.15);
301
+ pointer-events: none;
302
+ visibility: hidden;
303
+ }
304
+
305
+ .cosmos-node-wrapper {
306
+ position: absolute;
307
+ display: flex;
308
+ flex-direction: column;
309
+ align-items: center;
310
+ gap: 8px;
311
+ pointer-events: auto;
312
+ z-index: 5;
313
+ }
314
+
315
+ /* Node layout positions matching refined drift */
316
+ .node-superspace-pos {
317
+ position: absolute;
318
+ top: 50%;
319
+ left: 50%;
320
+ transform: translate(-50%, -50%);
321
+ z-index: 6;
322
+ animation: cosmos-center-emerge 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
323
+ }
324
+
325
+ .node-pitch-pos {
326
+ position: absolute;
327
+ top: 50%;
328
+ left: 50%;
329
+ animation: drift-pitch-to-top 18s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
330
+ z-index: 5;
331
+ }
332
+
333
+ .node-pitch-pos:hover {
334
+ animation-play-state: paused !important;
335
+ }
336
+
337
+ .node-identity-pos {
338
+ position: absolute;
339
+ top: 50%;
340
+ left: 50%;
341
+ animation: drift-identity-to-corner 18s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
342
+ z-index: 5;
343
+ }
344
+
345
+ .node-identity-pos:hover {
346
+ animation-play-state: paused !important;
347
+ }
348
+
349
+ .node-agent-pos {
350
+ position: absolute;
351
+ top: 50%;
352
+ left: 50%;
353
+ animation: drift-agent-to-corner 18s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
354
+ z-index: 5;
355
+ }
356
+
357
+ .node-agent-pos:hover {
358
+ animation-play-state: paused !important;
359
+ }
360
+
361
+ /* Node escaping / launched state (hidden in canvas while flying projectile is in flight) */
362
+ .node-is-escaping {
363
+ opacity: 0 !important;
364
+ pointer-events: none !important;
365
+ visibility: hidden !important;
366
+ }
367
+
368
+ /* Captions: initial nodes hidden until hover */
369
+ .node-identity-pos .node-caption,
370
+ .node-agent-pos .node-caption {
371
+ font-size: 0.75rem;
372
+ font-weight: 600;
373
+ letter-spacing: 0.04em;
374
+ color: var(--clr-text-secondary, #b4c0d3);
375
+ margin-top: 0.35rem;
376
+ pointer-events: none;
377
+ white-space: nowrap;
378
+ opacity: 0;
379
+ transition: opacity 150ms ease;
380
+ }
381
+
382
+ .node-identity-pos:hover .node-caption,
383
+ .node-agent-pos:hover .node-caption {
384
+ opacity: 1;
385
+ }
386
+
387
+ .cosmos-node-btn {
388
+ width: 60px;
389
+ height: 60px;
390
+ border-radius: 50%;
391
+ background: radial-gradient(circle, rgba(30, 41, 59, 0.95) 0%, rgba(15, 23, 42, 0.98) 100%);
392
+ border: 2px solid rgba(124, 92, 252, 0.6);
393
+ color: #fff;
394
+ display: flex;
395
+ align-items: center;
396
+ justify-content: center;
397
+ font-size: 1.6rem;
398
+ cursor: pointer;
399
+ position: relative;
400
+ box-shadow: 0 0 24px rgba(124, 92, 252, 0.4), inset 0 0 15px rgba(124, 92, 252, 0.2);
401
+ transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
402
+ padding: 0;
403
+ outline: none;
404
+ }
405
+
406
+ .cosmos-node-btn:hover {
407
+ transform: scale(1.14);
408
+ border-color: rgba(167, 139, 250, 0.95);
409
+ box-shadow: 0 0 35px rgba(124, 92, 252, 0.8), inset 0 0 20px rgba(167, 139, 250, 0.4);
410
+ }
411
+
412
+ .pitch-node {
413
+ border-color: rgba(251, 191, 36, 0.75) !important;
414
+ box-shadow: 0 0 24px rgba(251, 191, 36, 0.45), inset 0 0 15px rgba(251, 191, 36, 0.25) !important;
415
+ }
416
+
417
+ .pitch-node:hover {
418
+ border-color: #fde047 !important;
419
+ box-shadow: 0 0 35px rgba(251, 191, 36, 0.85), inset 0 0 20px rgba(251, 191, 36, 0.45) !important;
420
+ }
421
+
422
+ .gold-pulse {
423
+ position: absolute;
424
+ inset: -6px;
425
+ border-radius: 50%;
426
+ border: 1.5px solid rgba(251, 191, 36, 0.6);
427
+ animation: gold-pulse-flare 3s ease-in-out infinite;
428
+ pointer-events: none;
429
+ }
430
+
431
+ @keyframes gold-pulse-flare {
432
+
433
+ 0%,
434
+ 100% {
435
+ transform: scale(0.95);
436
+ opacity: 0.3;
437
+ }
438
+
439
+ 50% {
440
+ transform: scale(1.18);
441
+ opacity: 0.85;
442
+ }
443
+ }
444
+
445
+ .galaxy-node {
446
+ width: 76px;
447
+ height: 76px;
448
+ font-size: 2.1rem;
449
+ background: radial-gradient(circle, rgba(124, 92, 252, 0.45) 0%, rgba(15, 23, 42, 0.95) 75%);
450
+ border: 2.5px solid rgba(167, 139, 250, 0.85);
451
+ box-shadow: 0 0 45px rgba(124, 92, 252, 0.65), inset 0 0 25px rgba(167, 139, 250, 0.5);
452
+ }
453
+
454
+ .galaxy-node .node-emoji {
455
+ display: inline-block;
456
+ animation: galaxy-spin 75s linear infinite;
457
+ transition: transform 0.3s ease;
458
+ }
459
+
460
+ .galaxy-orbit-ring {
461
+ position: absolute;
462
+ inset: -12px;
463
+ border-radius: 50%;
464
+ border: 1.5px dashed rgba(167, 139, 250, 0.5);
465
+ animation: galaxy-spin 60s linear infinite;
466
+ pointer-events: none;
467
+ }
468
+
469
+ .node-caption {
470
+ font-size: 0.82rem;
471
+ font-weight: 600;
472
+ color: #cbd5e1;
473
+ text-shadow: 0 0 10px rgba(0, 0, 0, 0.9), 0 0 6px rgba(124, 92, 252, 0.7);
474
+ letter-spacing: 0.04em;
475
+ white-space: nowrap;
476
+ }
477
+
478
+ .cosmos-temp-badge {
479
+ font-size: 0.72rem;
480
+ font-weight: 500;
481
+ color: #c4b5fd;
482
+ background: rgba(124, 92, 252, 0.22);
483
+ border: 1px solid rgba(167, 139, 250, 0.45);
484
+ border-radius: 9999px;
485
+ padding: 2px 8px;
486
+ letter-spacing: 0.03em;
487
+ white-space: nowrap;
488
+ box-shadow: 0 0 10px rgba(124, 92, 252, 0.25);
489
+ margin-top: 4px;
490
+ display: inline-block;
491
+ pointer-events: none;
492
+ transition: opacity 0.3s ease;
493
+ }
494
+
495
+ .cosmos-temp-badge.hidden {
496
+ display: none !important;
497
+ }
498
+
499
+ /* Superspace Satellites (Code Space & Text Space - Revolving in Stable Orbit around Cosmos) */
500
+ .superspace-satellites {
501
+ position: absolute;
502
+ top: 50%;
503
+ left: 50%;
504
+ width: 0;
505
+ height: 0;
506
+ pointer-events: none;
507
+ animation: orbit-satellites-spin 75s linear infinite;
508
+ z-index: 10;
509
+ }
510
+
511
+ .satellite-orbit-guide-ring {
512
+ position: absolute;
513
+ top: 0;
514
+ left: 0;
515
+ width: 270px;
516
+ height: 270px;
517
+ transform: translate(-50%, -50%);
518
+ border-radius: 50%;
519
+ border: 1px dashed rgba(56, 189, 248, 0.25);
520
+ box-shadow: 0 0 20px rgba(56, 189, 248, 0.06);
521
+ pointer-events: none;
522
+ animation: satellite-ring-emerge 0.85s cubic-bezier(0.16, 1, 0.3, 1) forwards;
523
+ }
524
+
525
+ .satellite-wrapper {
526
+ position: absolute;
527
+ display: flex;
528
+ flex-direction: column;
529
+ align-items: center;
530
+ gap: 6px;
531
+ pointer-events: auto;
532
+ animation: orbit-satellites-counter-spin 75s linear infinite;
533
+ transform-origin: center center;
534
+ }
535
+
536
+ /* Hovering Code or Text satellite buttons (sub-menu items):
537
+ pauses the satellites orbital motion, the counter-rotation, AND the cosmos galaxy spin.
538
+ (Escaping drifting buttons are NOT paused. Hovering center cosmos does NOT pause anything.) */
539
+ .active-cosmos-stage:has(.satellite-wrapper:hover) .superspace-satellites,
540
+ .active-cosmos-stage:has(.satellite-wrapper:hover) .satellite-wrapper,
541
+ .active-cosmos-stage:has(.satellite-wrapper:hover) .galaxy-node .node-emoji,
542
+ .active-cosmos-stage:has(.satellite-wrapper:hover) .galaxy-orbit-ring,
543
+ .active-cosmos-stage.satellites-hovered .superspace-satellites,
544
+ .active-cosmos-stage.satellites-hovered .satellite-wrapper,
545
+ .active-cosmos-stage.satellites-hovered .galaxy-node .node-emoji,
546
+ .active-cosmos-stage.satellites-hovered .galaxy-orbit-ring {
547
+ animation-play-state: paused !important;
548
+ }
549
+
550
+ .sat-code-pos {
551
+ top: 0;
552
+ left: -135px;
553
+ }
554
+
555
+ .sat-notes-pos {
556
+ top: 0;
557
+ left: 135px;
558
+ }
559
+
560
+ .satellite-node-btn {
561
+ width: 56px;
562
+ height: 56px;
563
+ border-radius: 50%;
564
+ background: radial-gradient(circle, rgba(30, 41, 59, 0.95) 0%, rgba(15, 23, 42, 0.98) 100%);
565
+ border: 2px solid rgba(56, 189, 248, 0.7);
566
+ color: #fff;
567
+ display: flex;
568
+ align-items: center;
569
+ justify-content: center;
570
+ font-size: 1.4rem;
571
+ cursor: pointer;
572
+ position: relative;
573
+ box-shadow: 0 0 24px rgba(56, 189, 248, 0.45);
574
+ transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
575
+ padding: 0;
576
+ outline: none;
577
+ animation: satellite-btn-emerge 0.85s cubic-bezier(0.16, 1, 0.3, 1) forwards;
578
+ }
579
+
580
+ .satellite-node-btn:hover {
581
+ transform: scale(1.15);
582
+ border-color: rgba(125, 211, 252, 1);
583
+ box-shadow: 0 0 35px rgba(56, 189, 248, 0.85);
584
+ }
585
+
586
+ .satellite-caption {
587
+ font-size: 0.76rem;
588
+ font-weight: 600;
589
+ color: #94a3b8;
590
+ text-shadow: 0 0 8px rgba(0, 0, 0, 0.9);
591
+ white-space: nowrap;
592
+ }
593
+
594
+ /* =========================================================================
595
+ ANIMATION KEYFRAMES
596
+ ========================================================================= */
597
+ @keyframes singularity-pulse {
598
+ 0% {
599
+ transform: scale(0.92);
600
+ opacity: 0.9;
601
+ }
602
+
603
+ 100% {
604
+ transform: scale(1.12);
605
+ opacity: 1;
606
+ }
607
+ }
608
+
609
+ @keyframes singularity-emoji-fluctuate {
610
+ 0% {
611
+ transform: translate(-50%, -50%) scale(0.85);
612
+ opacity: 0.12;
613
+ }
614
+
615
+ 100% {
616
+ transform: translate(-50%, -50%) scale(1.1);
617
+ opacity: 0.38;
618
+ }
619
+ }
620
+
621
+ @keyframes singularity-compress {
622
+ 0% {
623
+ transform: scale(1) rotate(0deg);
624
+ }
625
+
626
+ 20% {
627
+ transform: scale(0.88) rotate(90deg);
628
+ }
629
+
630
+ 45% {
631
+ transform: scale(0.7) rotate(360deg);
632
+ }
633
+
634
+ 70% {
635
+ transform: scale(0.48) rotate(900deg);
636
+ }
637
+
638
+ 100% {
639
+ transform: scale(0.28) rotate(1800deg);
640
+ }
641
+ }
642
+
643
+ @keyframes singularity-emoji-spin-flare {
644
+ 0% {
645
+ transform: translate(-50%, -50%) scale(1) rotate(0deg);
646
+ opacity: 0.8;
647
+ }
648
+
649
+ 20% {
650
+ transform: translate(-50%, -50%) scale(1.1) rotate(90deg);
651
+ opacity: 0.9;
652
+ }
653
+
654
+ 50% {
655
+ transform: translate(-50%, -50%) scale(1.3) rotate(360deg);
656
+ opacity: 1;
657
+ }
658
+
659
+ 80% {
660
+ transform: translate(-50%, -50%) scale(1.55) rotate(900deg);
661
+ opacity: 1;
662
+ }
663
+
664
+ 100% {
665
+ transform: translate(-50%, -50%) scale(1.8) rotate(1800deg);
666
+ opacity: 1;
667
+ }
668
+ }
669
+
670
+ @keyframes singularity-explode-burst {
671
+ 0% {
672
+ transform: scale(0.28) rotate(1800deg);
673
+ opacity: 1;
674
+ }
675
+
676
+ 35% {
677
+ transform: scale(3.5) rotate(2000deg);
678
+ opacity: 0.85;
679
+ }
680
+
681
+ 100% {
682
+ transform: scale(5.5) rotate(2160deg);
683
+ opacity: 0;
684
+ visibility: hidden;
685
+ }
686
+ }
687
+
688
+ @keyframes singularity-glow-flare {
689
+ 0% {
690
+ transform: scale(0.95);
691
+ opacity: 0.4;
692
+ }
693
+
694
+ 100% {
695
+ transform: scale(1.2);
696
+ opacity: 0.8;
697
+ }
698
+ }
699
+
700
+ @keyframes ring-spin {
701
+ 0% {
702
+ transform: rotate(0deg);
703
+ }
704
+
705
+ 100% {
706
+ transform: rotate(360deg);
707
+ }
708
+ }
709
+
710
+ @keyframes ring-spin-rev {
711
+ 0% {
712
+ transform: rotate(0deg);
713
+ }
714
+
715
+ 100% {
716
+ transform: rotate(-360deg);
717
+ }
718
+ }
719
+
720
+ @keyframes galaxy-spin {
721
+ 0% {
722
+ transform: rotate(0deg);
723
+ }
724
+
725
+ 100% {
726
+ transform: rotate(360deg);
727
+ }
728
+ }
729
+
730
+ @keyframes orbit-track-spin {
731
+ 0% {
732
+ transform: rotate(0deg);
733
+ }
734
+
735
+ 100% {
736
+ transform: rotate(360deg);
737
+ }
738
+ }
739
+
740
+ @keyframes orbit-satellites-spin {
741
+ from {
742
+ transform: rotate(0deg);
743
+ }
744
+ to {
745
+ transform: rotate(360deg);
746
+ }
747
+ }
748
+
749
+ @keyframes orbit-satellites-counter-spin {
750
+ from {
751
+ transform: translate(-50%, -50%) rotate(0deg);
752
+ }
753
+ to {
754
+ transform: translate(-50%, -50%) rotate(-360deg);
755
+ }
756
+ }
757
+
758
+ @keyframes cosmos-center-emerge {
759
+ 0% {
760
+ transform: translate(-50%, -50%) scale(0);
761
+ opacity: 0;
762
+ }
763
+ 25% {
764
+ opacity: 1;
765
+ }
766
+ 100% {
767
+ transform: translate(-50%, -50%) scale(1);
768
+ opacity: 1;
769
+ }
770
+ }
771
+
772
+ @keyframes satellite-ring-emerge {
773
+ 0% {
774
+ transform: translate(-50%, -50%) scale(0);
775
+ opacity: 0;
776
+ }
777
+ 30% {
778
+ opacity: 1;
779
+ }
780
+ 100% {
781
+ transform: translate(-50%, -50%) scale(1);
782
+ opacity: 1;
783
+ }
784
+ }
785
+
786
+ @keyframes satellite-btn-emerge {
787
+ 0% {
788
+ transform: scale(0);
789
+ opacity: 0;
790
+ }
791
+ 30% {
792
+ opacity: 1;
793
+ }
794
+ 100% {
795
+ transform: scale(1);
796
+ opacity: 1;
797
+ }
798
+ }
799
+
800
+ @keyframes drift-identity-to-corner {
801
+ 0% {
802
+ transform: translate(-50%, -50%) scale(0);
803
+ opacity: 0;
804
+ }
805
+ 1% {
806
+ opacity: 1;
807
+ }
808
+ 5% {
809
+ transform: translate(calc(-50% + 140px), calc(-50% - 100px)) scale(1);
810
+ }
811
+ 30% {
812
+ transform: translate(calc(-50% + 175px), calc(-50% - 125px)) scale(1);
813
+ }
814
+ 65% {
815
+ transform: translate(calc(-50% + 195px), calc(-50% - 145px)) scale(1);
816
+ }
817
+ 100% {
818
+ transform: translate(calc(-50% + 215px), calc(-50% - 165px)) scale(1);
819
+ }
820
+ }
821
+
822
+ @keyframes drift-agent-to-corner {
823
+ 0% {
824
+ transform: translate(-50%, -50%) scale(0);
825
+ opacity: 0;
826
+ }
827
+ 1% {
828
+ opacity: 1;
829
+ }
830
+ 5% {
831
+ transform: translate(calc(-50% + 140px), calc(-50% + 105px)) scale(1);
832
+ }
833
+ 30% {
834
+ transform: translate(calc(-50% + 175px), calc(-50% + 135px)) scale(1);
835
+ }
836
+ 65% {
837
+ transform: translate(calc(-50% + 195px), calc(-50% + 155px)) scale(1);
838
+ }
839
+ 100% {
840
+ transform: translate(calc(-50% + 215px), calc(-50% + 175px)) scale(1);
841
+ }
842
+ }
843
+
844
+ @keyframes drift-pitch-to-top {
845
+ 0% {
846
+ transform: translate(-50%, -50%) scale(0);
847
+ opacity: 0;
848
+ }
849
+ 1% {
850
+ opacity: 1;
851
+ }
852
+ 5% {
853
+ transform: translate(-50%, calc(-50% - 140px)) scale(1);
854
+ }
855
+ 30% {
856
+ transform: translate(calc(-50% + 35px), calc(-50% - 170px)) scale(1);
857
+ }
858
+ 65% {
859
+ transform: translate(calc(-50% + 15px), calc(-50% - 195px)) scale(1);
860
+ }
861
+ 100% {
862
+ transform: translate(-50%, calc(-50% - 215px)) scale(1);
863
+ }
864
+ }