@ibgib/space-gib 0.0.9 → 0.0.13

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 (82) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +1 -0
  3. package/dist/client/bootstrap.mjs +33 -33
  4. package/dist/client/bootstrap.mjs.map +3 -3
  5. package/dist/client/chunk-ROJZUPPE.mjs +19 -0
  6. package/dist/client/chunk-ROJZUPPE.mjs.map +7 -0
  7. package/dist/client/chunk-WJHRARK6.mjs +2329 -0
  8. package/dist/client/chunk-WJHRARK6.mjs.map +7 -0
  9. package/dist/client/index.mjs +22 -1
  10. package/dist/client/index.mjs.map +4 -4
  11. package/dist/client/script.mjs +1 -1
  12. package/dist/server/server.mjs +19147 -18210
  13. package/dist/server/server.mjs.map +4 -4
  14. package/package.json +4 -4
  15. package/space-gib.localhost-1785337158142.log +75 -0
  16. package/src/client/AUTO-GENERATED-version.mts +1 -1
  17. package/src/client/README.md +1 -1
  18. package/src/client/api/space-gib-api-bridge.mts +8 -224
  19. package/src/client/ui/shell/space-gib-shell-service.mts +68 -18
  20. package/src/common/keystone-policies.mts +1 -1
  21. package/src/server/README.md +3 -2
  22. package/src/server/server.mts +13 -32
  23. package/src/server/test.json +0 -0
  24. package/dist/client/chunk-ACIGPCQW.mjs +0 -2407
  25. package/dist/client/chunk-ACIGPCQW.mjs.map +0 -7
  26. package/dist/client/chunk-QRMTJE6M.mjs +0 -42
  27. package/dist/client/chunk-QRMTJE6M.mjs.map +0 -7
  28. package/space-gib.localhost-1783713259760.log +0 -45
  29. package/src/client/components/identity-header/IMPLEMENTATION.md +0 -45
  30. package/src/client/components/identity-header/identity-header.css +0 -112
  31. package/src/client/components/identity-header/identity-header.html +0 -11
  32. package/src/client/components/identity-header/identity-header.mts +0 -439
  33. package/src/client/components/identity-manager/IMPLEMENTATION.md +0 -100
  34. package/src/client/components/identity-manager/identity-manager.css +0 -171
  35. package/src/client/components/identity-manager/identity-manager.html +0 -19
  36. package/src/client/components/identity-manager/identity-manager.mts +0 -639
  37. package/src/client/components/keystone-creator/keystone-creator.css +0 -65
  38. package/src/client/components/keystone-creator/keystone-creator.html +0 -41
  39. package/src/client/components/keystone-creator/keystone-creator.mts +0 -443
  40. package/src/client/components/keystone-details/keystone-details.css +0 -611
  41. package/src/client/components/keystone-details/keystone-details.html +0 -151
  42. package/src/client/components/keystone-details/keystone-details.mts +0 -1213
  43. package/src/client/components/keystone-scrubber/SCRUBBER_IMPLEMENTATION.md +0 -33
  44. package/src/client/components/keystone-scrubber/keystone-scrubber.css +0 -46
  45. package/src/client/components/keystone-scrubber/keystone-scrubber.html +0 -15
  46. package/src/client/components/keystone-scrubber/keystone-scrubber.mts +0 -356
  47. package/src/server/bootstrap-helper.mts +0 -141
  48. package/src/server/bootstrap-helper.respec.mts +0 -100
  49. package/src/server/metaspace-nodeindexedspace/metaspace-nodeindexedspace.mts +0 -85
  50. package/src/server/path-constants.mts +0 -101
  51. package/src/server/path-helper.mts +0 -101
  52. package/src/server/path-helper.respec.mts +0 -99
  53. package/src/server/serve-gib/CHANGELOG.md +0 -29
  54. package/src/server/serve-gib/README.md +0 -43
  55. package/src/server/serve-gib/constants.mts +0 -1
  56. package/src/server/serve-gib/handlers/api/debug/ws-echo.handler.mts +0 -105
  57. package/src/server/serve-gib/handlers/api/health.handler.mts +0 -23
  58. package/src/server/serve-gib/handlers/api/health.respec.mts +0 -51
  59. package/src/server/serve-gib/handlers/api/ibgib/ibgib-handler-types.mts +0 -49
  60. package/src/server/serve-gib/handlers/api/ibgib/ibgib.handler.mts +0 -176
  61. package/src/server/serve-gib/handlers/api/keystone/keystone-evolve.handler.mts +0 -150
  62. package/src/server/serve-gib/handlers/api/keystone/keystone-genesis.handler.mts +0 -146
  63. package/src/server/serve-gib/handlers/api/keystone/keystone-get.handler.mts +0 -198
  64. package/src/server/serve-gib/handlers/api/keystone/keystone-get.respec.mts +0 -107
  65. package/src/server/serve-gib/handlers/api/keystone/keystone-handler-types.mts +0 -29
  66. package/src/server/serve-gib/handlers/api/keystone/keystone-post.handler.mts +0 -55
  67. package/src/server/serve-gib/handlers/api/keystone/keystone-post.respec.mts +0 -130
  68. package/src/server/serve-gib/handlers/api/keystone/sso-config.handler.mts +0 -66
  69. package/src/server/serve-gib/handlers/api/keystone/sso-link.handler.mts +0 -140
  70. package/src/server/serve-gib/handlers/api/keystone/sso-login.handler.mts +0 -190
  71. package/src/server/serve-gib/handlers/error-handler.mts +0 -36
  72. package/src/server/serve-gib/handlers/handler-base.mts +0 -383
  73. package/src/server/serve-gib/handlers/static-handler.mts +0 -82
  74. package/src/server/serve-gib/handlers/ws/sync-upgrade-handler-base.mts +0 -233
  75. package/src/server/serve-gib/handlers/ws/sync-upgrade.handler.mts +0 -24
  76. package/src/server/serve-gib/handlers/ws/ws-helper.mts +0 -216
  77. package/src/server/serve-gib/handlers/ws/ws-types.mts +0 -53
  78. package/src/server/serve-gib/serve-gib-helpers.mts +0 -32
  79. package/src/server/serve-gib/serve-gib-v1.mts +0 -172
  80. package/src/server/serve-gib/serve-gib.respec.mts +0 -90
  81. package/src/server/serve-gib/types.mts +0 -102
  82. package/src/server/server-constants.mts +0 -2
@@ -1,611 +0,0 @@
1
- :host {
2
- display: block;
3
- width: 100%;
4
- max-width: 100%;
5
- font-family: var(--font-family-base, inherit);
6
- font-size: var(--font-size-base, 1rem);
7
- color: var(--text-color-base, var(--clr-text-primary, #ffffff));
8
- box-sizing: border-box;
9
- }
10
-
11
- .details-view {
12
- display: flex;
13
- flex-direction: column;
14
- gap: 1.5rem;
15
- }
16
-
17
- .card {
18
- padding: 1.5rem;
19
- background: rgba(255, 255, 255, 0.02);
20
- border: 1px solid var(--border-color-base, rgba(255, 255, 255, 0.05));
21
- border-radius: var(--radius-md, 8px);
22
- display: flex;
23
- flex-direction: column;
24
- gap: 1rem;
25
- }
26
-
27
- .card h3 {
28
- margin: 0;
29
- font-size: var(--h3-font-size, 1.15rem);
30
- font-weight: var(--h3-font-weight, 500);
31
- color: var(--clr-accent, #50fa7b);
32
- }
33
-
34
- /* Key-Value Details Grid Layout */
35
- .kv-grid {
36
- display: grid;
37
- grid-template-columns: minmax(140px, 180px) 1fr;
38
- gap: 0.75rem 1.5rem;
39
- align-items: baseline;
40
- margin-top: 1rem;
41
- margin-bottom: 1.5rem;
42
- }
43
-
44
- .kv-label {
45
- font-family: var(--font-sans);
46
- font-size: 0.75rem;
47
- font-weight: 600;
48
- text-transform: uppercase;
49
- letter-spacing: 0.05em;
50
- color: var(--clr-text-secondary, #8fa08f);
51
- user-select: none;
52
- }
53
-
54
- .kv-value {
55
- font-size: 0.9375rem;
56
- color: var(--clr-text-primary, #ffffff);
57
- word-break: break-all;
58
- }
59
-
60
- .kv-pre {
61
- margin: 0;
62
- padding: 0.6rem 0.8rem;
63
- background: rgba(0, 0, 0, 0.3);
64
- border: 1px solid var(--border-color-base, rgba(255, 255, 255, 0.05));
65
- border-radius: var(--radius-sm, 6px);
66
- font-family: var(--font-mono, monospace);
67
- font-size: 0.8rem;
68
- color: var(--clr-accent, #50fa7b);
69
- max-height: 150px;
70
- overflow: auto;
71
- white-space: pre;
72
- word-break: normal;
73
- }
74
-
75
- /* Accordion raw styles */
76
- .accordion {
77
- padding: 0;
78
- overflow: hidden;
79
- }
80
-
81
- .accordion-header {
82
- padding: 1.25rem 1.5rem;
83
- display: flex;
84
- justify-content: space-between;
85
- align-items: center;
86
- cursor: pointer;
87
- background: rgba(255, 255, 255, 0.01);
88
- transition: background 0.2s ease-in-out;
89
- }
90
-
91
- .accordion-header:hover {
92
- background: rgba(255, 255, 255, 0.03);
93
- }
94
-
95
- .accordion-header .chevron {
96
- transition: transform 0.2s ease-in-out;
97
- font-size: 0.8rem;
98
- color: var(--clr-text-secondary, #b3b3b3);
99
- }
100
-
101
- .accordion-header.expanded .chevron {
102
- transform: rotate(180deg);
103
- }
104
-
105
- .accordion-content {
106
- max-height: 0;
107
- transition: max-height 0.3s cubic-bezier(0, 1, 0, 1);
108
- background: rgba(0, 0, 0, 0.15);
109
- border-top: 1px solid var(--border-color-base, rgba(255, 255, 255, 0.03));
110
- }
111
-
112
- .accordion-content.expanded {
113
- max-height: 5000px;
114
- overflow-y: visible;
115
- transition: max-height 0.3s cubic-bezier(1, 0, 1, 0);
116
- }
117
-
118
- .json-code {
119
- margin: 0;
120
- padding: 1.25rem;
121
- font-family: var(--font-mono, monospace);
122
- font-size: 0.8rem;
123
- color: var(--clr-accent, #50fa7b);
124
- background: transparent;
125
- overflow: auto;
126
- max-height: 70dvh;
127
- white-space: pre-wrap;
128
- word-break: break-all;
129
- }
130
-
131
- .description {
132
- font-size: 0.85rem;
133
- color: var(--clr-text-secondary, #b3b3b3);
134
- margin: 0;
135
- }
136
-
137
- .hidden {
138
- display: none !important;
139
- }
140
-
141
- .pools-container {
142
- display: flex;
143
- flex-direction: column;
144
- gap: 1rem;
145
- }
146
-
147
- .pool-card {
148
- padding: 1rem;
149
- background: rgba(0, 0, 0, 0.25);
150
- border: 1px solid var(--border-color-base, rgba(255, 255, 255, 0.05));
151
- border-radius: 6px;
152
- display: flex;
153
- flex-direction: column;
154
- gap: 0.75rem;
155
- }
156
-
157
- .pool-header {
158
- display: flex;
159
- justify-content: space-between;
160
- align-items: center;
161
- border-bottom: 1px solid rgba(255, 255, 255, 0.05);
162
- padding-bottom: 0.5rem;
163
- }
164
-
165
- .pool-title {
166
- font-size: 0.95rem;
167
- font-weight: 600;
168
- color: var(--clr-accent, #50fa7b);
169
- }
170
-
171
- .pool-tag {
172
- font-size: 0.7rem;
173
- padding: 0.15rem 0.4rem;
174
- border-radius: 4px;
175
- font-weight: bold;
176
- text-transform: uppercase;
177
- }
178
-
179
- .pool-tag.foreign {
180
- background: rgba(255, 184, 108, 0.15);
181
- border: 1px solid rgba(255, 184, 108, 0.3);
182
- color: #ffb86c;
183
- }
184
-
185
- .pool-tag.native {
186
- background: rgba(80, 250, 123, 0.1);
187
- border: 1px solid rgba(80, 250, 123, 0.2);
188
- color: #50fa7b;
189
- }
190
-
191
- .pool-grid {
192
- display: grid;
193
- grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
194
- gap: 0.75rem;
195
- font-size: 0.85rem;
196
- }
197
-
198
- .pool-field {
199
- display: flex;
200
- flex-direction: column;
201
- gap: 0.2rem;
202
- }
203
-
204
- .pool-field label {
205
- font-size: 0.7rem;
206
- color: var(--clr-text-secondary, #b3b3b3);
207
- text-transform: uppercase;
208
- letter-spacing: 0.03em;
209
- }
210
-
211
- .pool-field span {
212
- color: #ffffff;
213
- font-weight: 500;
214
- word-break: break-all;
215
- }
216
-
217
- /* Pool Details & Challenges/Binding Map styling */
218
- .pool-details {
219
- margin-top: 0.75rem;
220
- border-top: 1px solid rgba(255, 255, 255, 0.05);
221
- padding-top: 0.5rem;
222
- }
223
-
224
- .pool-details-summary {
225
- font-size: 0.8rem;
226
- font-weight: 600;
227
- color: var(--clr-text-secondary, #8fa08f);
228
- cursor: pointer;
229
- user-select: none;
230
- outline: none;
231
- padding: 0.25rem 0;
232
- display: flex;
233
- align-items: center;
234
- gap: 0.25rem;
235
- transition: color var(--t-fast, 120ms ease);
236
- }
237
-
238
- .pool-details-summary:hover {
239
- color: var(--clr-accent, #78f87e);
240
- }
241
-
242
- .pool-challenges-list {
243
- margin-top: 0.5rem;
244
- display: flex;
245
- flex-direction: column;
246
- gap: 0.4rem;
247
- max-height: 180px;
248
- overflow-y: auto;
249
- padding-right: 0.25rem;
250
- border: 1px solid rgba(255, 255, 255, 0.05);
251
- background: rgba(0, 0, 0, 0.15);
252
- border-radius: 4px;
253
- padding: 0.5rem;
254
- }
255
-
256
- .pool-challenge-item {
257
- display: flex;
258
- justify-content: space-between;
259
- align-items: center;
260
- background: rgba(255, 255, 255, 0.02);
261
- border: 1px solid rgba(255, 255, 255, 0.03);
262
- border-radius: 4px;
263
- padding: 0.35rem 0.5rem;
264
- font-size: 0.75rem;
265
- font-family: var(--font-mono, monospace);
266
- }
267
-
268
- .challenge-id {
269
- color: var(--clr-text-secondary, #8fa08f);
270
- font-weight: 500;
271
- }
272
-
273
- .challenge-hash {
274
- color: var(--clr-accent, #78f87e);
275
- word-break: break-all;
276
- margin-left: 1rem;
277
- text-align: right;
278
- }
279
-
280
- /* Delegates Table styling */
281
- .delegates-table {
282
- width: 100%;
283
- border-collapse: collapse;
284
- margin-top: 1rem;
285
- font-size: 0.9rem;
286
- background: rgba(0, 0, 0, 0.2);
287
- border-radius: var(--radius-sm, 6px);
288
- overflow: hidden;
289
- }
290
-
291
- .delegates-table th,
292
- .delegates-table td {
293
- padding: 0.75rem 1rem;
294
- text-align: left;
295
- border-bottom: 1px solid rgba(255, 255, 255, 0.05);
296
- }
297
-
298
- .delegates-table th {
299
- font-family: var(--font-sans);
300
- font-size: 0.75rem;
301
- font-weight: 600;
302
- text-transform: uppercase;
303
- letter-spacing: 0.05em;
304
- color: var(--clr-text-secondary, #8fa08f);
305
- background: rgba(255, 255, 255, 0.02);
306
- }
307
-
308
- .delegates-table td {
309
- font-family: var(--font-mono, monospace);
310
- font-size: 0.8rem;
311
- color: var(--clr-text-primary, #ffffff);
312
- word-break: break-all;
313
- }
314
-
315
- .delegates-table tbody tr:hover {
316
- background: rgba(255, 255, 255, 0.02);
317
- }
318
-
319
- .action-row {
320
- display: flex;
321
- gap: 1rem;
322
- margin-top: 1rem;
323
- }
324
-
325
- .action-btn {
326
- padding: 0.6rem 1.2rem;
327
- background: var(--clr-accent, #50fa7b);
328
- border: none;
329
- border-radius: var(--radius-sm, 4px);
330
- color: #1a1a24;
331
- font-weight: 600;
332
- cursor: pointer;
333
- transition: all 0.2s ease-in-out;
334
- }
335
-
336
- .action-btn:hover {
337
- background: #40c767;
338
- }
339
-
340
- .action-btn.secondary {
341
- background: transparent;
342
- border: 1px solid var(--border-color-base, rgba(255, 255, 255, 0.1));
343
- color: #ffffff;
344
- }
345
-
346
- .action-btn.secondary:hover {
347
- background: rgba(255, 255, 255, 0.05);
348
- }
349
-
350
- .action-btn.small {
351
- padding: 0.2rem 0.5rem;
352
- font-size: var(--font-size-xs, 0.75rem);
353
- border-radius: 3px;
354
- }
355
-
356
- .action-btn.active-primary {
357
- background: rgba(80, 250, 123, 0.2);
358
- border: 1px solid rgba(80, 250, 123, 0.4);
359
- color: var(--clr-accent, #50fa7b);
360
- cursor: default;
361
- }
362
-
363
- .address-code {
364
- display: inline-block;
365
- padding: 0.2rem 0.4rem;
366
- background: rgba(0, 0, 0, 0.3);
367
- border: 1px solid var(--border-color-base, rgba(255, 255, 255, 0.05));
368
- border-radius: var(--radius-sm, 4px);
369
- font-family: var(--font-mono, monospace);
370
- font-size: 0.8rem;
371
- color: var(--clr-accent, #50fa7b);
372
- word-break: break-all;
373
- }
374
-
375
- .status-msg {
376
- margin-top: 1rem;
377
- padding: 0.75rem 1rem;
378
- border-radius: var(--radius-sm, 4px);
379
- font-size: 0.9rem;
380
- }
381
-
382
- .status-msg.info {
383
- background: rgba(139, 233, 253, 0.1);
384
- border: 1px solid rgba(139, 233, 253, 0.3);
385
- color: #8be9fd;
386
- }
387
-
388
- .status-msg.success {
389
- background: rgba(80, 250, 123, 0.1);
390
- border: 1px solid rgba(80, 250, 123, 0.3);
391
- color: #50fa7b;
392
- }
393
-
394
- .status-msg.error {
395
- background: rgba(255, 85, 85, 0.1);
396
- border: 1px solid rgba(255, 85, 85, 0.3);
397
- color: #ff5555;
398
- }
399
-
400
- /* Warning styles for viewing historical frames */
401
- #container.is-historical {
402
- border: 3px dashed var(--clr-warning, #ffb86c);
403
- border-radius: var(--radius-md, 8px);
404
- padding: 1.5rem;
405
- position: relative;
406
- background: rgba(255, 184, 108, 0.01);
407
- }
408
-
409
- .warning-banner {
410
- background: rgba(255, 184, 108, 0.1);
411
- border: 1.5px solid rgba(255, 184, 108, 0.35);
412
- color: var(--clr-warning, #ffb86c);
413
- padding: 0.8rem 1.2rem;
414
- border-radius: var(--radius-md, 8px);
415
- font-weight: 600;
416
- font-size: 1rem;
417
- margin-bottom: 1.5rem;
418
- display: flex;
419
- align-items: center;
420
- gap: 0.5rem;
421
- box-shadow: 0 4px 12px rgba(255, 184, 108, 0.05);
422
- animation: pulse-border 2s infinite alternate;
423
- }
424
-
425
- @keyframes pulse-border {
426
- 0% {
427
- border-color: rgba(255, 184, 108, 0.2);
428
- box-shadow: 0 4px 12px rgba(255, 184, 108, 0.02);
429
- }
430
- 100% {
431
- border-color: rgba(255, 184, 108, 0.5);
432
- box-shadow: 0 4px 16px rgba(255, 184, 108, 0.08);
433
- }
434
- }
435
-
436
- /* Grouped Toggle Switch for Identity Providers */
437
- .sso-toggle-group {
438
- display: flex;
439
- gap: 1.5rem;
440
- margin-top: 1rem;
441
- flex-wrap: wrap;
442
- }
443
-
444
- .sso-toggle-card {
445
- flex: 1;
446
- min-width: 180px;
447
- max-width: 240px;
448
- height: 180px;
449
- background: rgba(255, 255, 255, 0.02);
450
- border: 1px solid rgba(255, 255, 255, 0.06);
451
- border-radius: var(--radius-md, 8px);
452
- display: flex;
453
- flex-direction: column;
454
- justify-content: space-between;
455
- align-items: center;
456
- cursor: pointer;
457
- overflow: hidden;
458
- position: relative;
459
- user-select: none;
460
- transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
461
- }
462
-
463
- .sso-toggle-card:hover {
464
- background: rgba(255, 255, 255, 0.04);
465
- border-color: rgba(255, 255, 255, 0.12);
466
- transform: translateY(-2px);
467
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
468
- }
469
-
470
- .sso-toggle-card:focus-visible {
471
- outline: 2px solid var(--clr-accent, #50fa7b);
472
- outline-offset: 2px;
473
- }
474
-
475
- /* Status Indicator bars: Top (Green/Active) and Bottom (Red/Faded) */
476
- .toggle-status-indicator {
477
- width: 100%;
478
- height: 6px;
479
- transition: all 0.25s ease-in-out;
480
- }
481
-
482
- .toggle-status-indicator.top {
483
- background: transparent;
484
- }
485
-
486
- .toggle-status-indicator.bottom {
487
- background: transparent;
488
- }
489
-
490
- /* Middle Content Wrapper */
491
- .toggle-content {
492
- display: flex;
493
- flex-direction: column;
494
- align-items: center;
495
- justify-content: center;
496
- gap: 0.6rem;
497
- padding: 1rem;
498
- text-align: center;
499
- }
500
-
501
- .sso-icon {
502
- width: 2.25rem;
503
- height: 2.25rem;
504
- transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
505
- }
506
-
507
- .sso-toggle-card:hover .sso-icon {
508
- transform: scale(1.1);
509
- }
510
-
511
- .provider-label {
512
- font-size: 0.95rem;
513
- font-weight: 600;
514
- color: var(--clr-text-primary, #ffffff);
515
- }
516
-
517
- .toggle-state-text {
518
- font-size: 0.75rem;
519
- font-weight: 500;
520
- text-transform: uppercase;
521
- letter-spacing: 0.05em;
522
- color: var(--clr-text-secondary, #8fa08f);
523
- transition: color 0.25s ease-in-out;
524
- }
525
-
526
- /* Linked (Active State) styles */
527
- .sso-toggle-card.linked {
528
- background: rgba(80, 250, 123, 0.02);
529
- border-color: rgba(80, 250, 123, 0.2);
530
- box-shadow: 0 4px 16px rgba(80, 250, 123, 0.04);
531
- }
532
-
533
- .sso-toggle-card.linked:hover {
534
- background: rgba(80, 250, 123, 0.04);
535
- border-color: rgba(80, 250, 123, 0.35);
536
- }
537
-
538
- .sso-toggle-card.linked .toggle-status-indicator.top {
539
- background: var(--clr-accent, #50fa7b);
540
- box-shadow: 0 2px 10px rgba(80, 250, 123, 0.5);
541
- }
542
-
543
- .sso-toggle-card.linked .toggle-state-text {
544
- color: var(--clr-accent, #50fa7b);
545
- font-weight: bold;
546
- }
547
-
548
- /* Unlinked (Inactive/Faded State) styles */
549
- .sso-toggle-card.unlinked {
550
- opacity: 0.75;
551
- }
552
-
553
- .sso-toggle-card.unlinked:hover {
554
- opacity: 1.0;
555
- }
556
-
557
- .sso-toggle-card.unlinked .toggle-status-indicator.bottom {
558
- background: rgba(255, 85, 85, 0.4);
559
- }
560
-
561
- .sso-toggle-card.unlinked .toggle-state-text {
562
- color: var(--clr-text-secondary, #8fa08f);
563
- }
564
-
565
- /* Historical/Disabled state */
566
- .sso-toggle-card.disabled {
567
- pointer-events: none;
568
- opacity: 0.4;
569
- }
570
-
571
- /* Form Layout for Passphrase Rotation */
572
- .form-row {
573
- display: flex;
574
- gap: 1rem;
575
- flex-wrap: wrap;
576
- margin-top: 0.5rem;
577
- }
578
-
579
- .form-group {
580
- flex: 1;
581
- min-width: 200px;
582
- display: flex;
583
- flex-direction: column;
584
- gap: 0.4rem;
585
- }
586
-
587
- .form-group label {
588
- font-size: 0.75rem;
589
- font-weight: 600;
590
- text-transform: uppercase;
591
- letter-spacing: 0.03em;
592
- color: var(--clr-text-secondary, #8fa08f);
593
- }
594
-
595
- .form-input {
596
- padding: 0.65rem 0.8rem;
597
- background: rgba(0, 0, 0, 0.35);
598
- border: 1px solid var(--border-color-base, rgba(255, 255, 255, 0.08));
599
- border-radius: var(--radius-sm, 6px);
600
- color: #ffffff;
601
- font-family: var(--font-family-base, inherit);
602
- font-size: 0.9rem;
603
- transition: all 0.2s ease-in-out;
604
- }
605
-
606
- .form-input:focus {
607
- outline: none;
608
- border-color: var(--clr-accent, #50fa7b);
609
- background: rgba(0, 0, 0, 0.5);
610
- box-shadow: 0 0 8px rgba(80, 250, 123, 0.15);
611
- }