@anlyx/ui 0.1.2 → 0.1.5

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 (62) hide show
  1. package/README.md +3 -2
  2. package/dist/capture/capture-runtime.d.ts +14 -0
  3. package/dist/capture/capture-runtime.js +300 -0
  4. package/dist/components/AnalysisEvidenceList.d.ts +5 -0
  5. package/dist/components/AnalysisEvidenceList.js +61 -0
  6. package/dist/components/AnlyxAppShell.d.ts +1 -1
  7. package/dist/components/AnlyxAppShell.js +16 -7
  8. package/dist/components/ApiCallList.d.ts +3 -2
  9. package/dist/components/ApiCallList.js +12 -2
  10. package/dist/components/CaptureStatusEmptyState.js +2 -2
  11. package/dist/components/EndpointMapCanvas.js +1 -1
  12. package/dist/components/FlowStoryView.d.ts +22 -0
  13. package/dist/components/FlowStoryView.js +117 -0
  14. package/dist/components/InspectorPanel.d.ts +1 -1
  15. package/dist/components/InspectorPanel.js +46 -1
  16. package/dist/components/PageStoryboardView.js +9 -1
  17. package/dist/components/ProcessFlowView.js +8 -1
  18. package/dist/components/ReplayControls.d.ts +2 -1
  19. package/dist/components/ReplayControls.js +29 -2
  20. package/dist/components/Sidebar.d.ts +2 -2
  21. package/dist/components/Sidebar.js +15 -3
  22. package/dist/components/StatusBadge.d.ts +2 -2
  23. package/dist/index.d.ts +2 -0
  24. package/dist/index.js +1 -0
  25. package/dist/mock-data.js +50 -4
  26. package/dist/overlay/AnlyxFlowEdge.d.ts +2 -0
  27. package/dist/overlay/AnlyxFlowEdge.js +15 -0
  28. package/dist/overlay/AnlyxFlowNode.d.ts +13 -0
  29. package/dist/overlay/AnlyxFlowNode.js +28 -0
  30. package/dist/overlay/FlowDrawer.d.ts +2 -0
  31. package/dist/overlay/FlowDrawer.js +59 -0
  32. package/dist/overlay/MainFlowCanvas.d.ts +20 -0
  33. package/dist/overlay/MainFlowCanvas.js +285 -0
  34. package/dist/overlay/RecentApiEventsTable.d.ts +5 -0
  35. package/dist/overlay/RecentApiEventsTable.js +19 -0
  36. package/dist/overlay/overlay-entry.d.ts +8 -0
  37. package/dist/overlay/overlay-entry.js +14 -0
  38. package/dist/overlay/overlay-ui.css +2 -0
  39. package/dist/overlay/overlay-ui.js +14 -0
  40. package/dist/overlay/types.d.ts +38 -0
  41. package/dist/overlay/types.js +1 -0
  42. package/dist/overlay/ui.d.ts +18 -0
  43. package/dist/overlay/ui.js +13 -0
  44. package/dist/readme-demo/ReadmeDemoApp.d.ts +15 -0
  45. package/dist/readme-demo/ReadmeDemoApp.js +184 -0
  46. package/dist/readme-demo/readme-demo-entry.d.ts +1 -0
  47. package/dist/readme-demo/readme-demo-entry.js +8 -0
  48. package/dist/styles.css +1165 -38
  49. package/dist/viewer/ViewerApp.js +26 -16
  50. package/dist/viewer/styles.css +2639 -0
  51. package/dist/viewer/viewer-entry.d.ts +1 -0
  52. package/dist/viewer/viewer-entry.js +1 -0
  53. package/dist/viewer/workspace/anlyx-logo-transparent.png +0 -0
  54. package/dist/viewer/workspace/workspace.css +6354 -0
  55. package/dist/workspace/ScanTreeMap.d.ts +6 -0
  56. package/dist/workspace/ScanTreeMap.js +838 -0
  57. package/dist/workspace/WorkspaceApp.d.ts +8 -0
  58. package/dist/workspace/WorkspaceApp.js +2293 -0
  59. package/dist/workspace/project-view-model.d.ts +63 -0
  60. package/dist/workspace/project-view-model.js +170 -0
  61. package/dist/workspace/workspace.css +6354 -0
  62. package/package.json +10 -3
@@ -0,0 +1,2639 @@
1
+ :root {
2
+ --anlyx-color-background: #f5f7fb;
3
+ --anlyx-color-panel: #ffffff;
4
+ --anlyx-color-canvas: #fbfcff;
5
+ --anlyx-color-border: #dfe6f1;
6
+ --anlyx-color-border-strong: #c9d5e6;
7
+ --anlyx-color-text-primary: #0f172a;
8
+ --anlyx-color-text-secondary: #62708a;
9
+ --anlyx-color-text-muted: #8a97ad;
10
+ --anlyx-color-grid: #e8edf5;
11
+ --anlyx-color-method-get: #10b981;
12
+ --anlyx-color-method-post: #3b82f6;
13
+ --anlyx-color-method-update: #f59e0b;
14
+ --anlyx-color-method-delete: #ef4444;
15
+ --anlyx-color-request: #2563eb;
16
+ --anlyx-color-response: #8b5cf6;
17
+ --anlyx-color-branch: #f97316;
18
+ --anlyx-color-database: #0f766e;
19
+ --anlyx-color-confidence-high: #16a34a;
20
+ --anlyx-color-confidence-medium: #d97706;
21
+ --anlyx-color-confidence-low: #ea580c;
22
+ --anlyx-color-confidence-unknown: #6b7280;
23
+ --anlyx-radius: 10px;
24
+ --anlyx-radius-sm: 7px;
25
+ --anlyx-shadow-panel: 0 1px 2px rgb(15 23 42 / 6%);
26
+ --anlyx-shadow-card: 0 10px 28px rgb(15 23 42 / 7%);
27
+ --anlyx-shadow-float: 0 18px 46px rgb(15 23 42 / 12%);
28
+ color: var(--anlyx-color-text-primary);
29
+ background: var(--anlyx-color-background);
30
+ font-family:
31
+ Inter,
32
+ ui-sans-serif,
33
+ system-ui,
34
+ -apple-system,
35
+ BlinkMacSystemFont,
36
+ "Segoe UI",
37
+ sans-serif;
38
+ }
39
+
40
+ body {
41
+ overflow: hidden;
42
+ margin: 0;
43
+ background: var(--anlyx-color-background);
44
+ }
45
+
46
+ #root {
47
+ height: 100dvh;
48
+ min-height: 0;
49
+ }
50
+
51
+ .anlyx-viewer-state {
52
+ display: grid;
53
+ min-height: 100vh;
54
+ place-items: center;
55
+ padding: 24px;
56
+ color: var(--anlyx-color-text-secondary);
57
+ background: var(--anlyx-color-background);
58
+ font-size: 14px;
59
+ }
60
+
61
+ .anlyx-viewer-state__card {
62
+ width: min(520px, 100%);
63
+ padding: 26px;
64
+ border: 1px solid var(--anlyx-color-border);
65
+ border-radius: 12px;
66
+ background:
67
+ linear-gradient(180deg, rgb(255 255 255 / 96%), rgb(248 251 255 / 96%)),
68
+ radial-gradient(circle at 0% 0%, rgb(37 99 235 / 10%), transparent 34%);
69
+ box-shadow: var(--anlyx-shadow-panel);
70
+ }
71
+
72
+ .anlyx-viewer-state__eyebrow {
73
+ color: #2563eb;
74
+ font-size: 11px;
75
+ font-weight: 850;
76
+ letter-spacing: 0;
77
+ text-transform: uppercase;
78
+ }
79
+
80
+ .anlyx-viewer-state__card h1 {
81
+ margin: 8px 0 10px;
82
+ color: var(--anlyx-color-text-primary);
83
+ font-size: 22px;
84
+ line-height: 1.2;
85
+ }
86
+
87
+ .anlyx-viewer-state__card p {
88
+ margin: 8px 0 0;
89
+ color: var(--anlyx-color-text-secondary);
90
+ font-size: 13px;
91
+ line-height: 1.55;
92
+ }
93
+
94
+ .anlyx-viewer-state--error .anlyx-viewer-state__card {
95
+ border-color: #fecaca;
96
+ background:
97
+ linear-gradient(180deg, rgb(255 255 255 / 96%), rgb(255 247 247 / 96%)),
98
+ radial-gradient(circle at 0% 0%, rgb(239 68 68 / 9%), transparent 32%);
99
+ }
100
+
101
+ .anlyx-viewer-state--error .anlyx-viewer-state__eyebrow {
102
+ color: #dc2626;
103
+ }
104
+
105
+ .anlyx-shell {
106
+ box-sizing: border-box;
107
+ display: flex;
108
+ height: 100dvh;
109
+ min-height: 0;
110
+ overflow: hidden;
111
+ background:
112
+ radial-gradient(circle at 12% -10%, rgb(37 99 235 / 7%), transparent 28%),
113
+ radial-gradient(circle at 84% 0%, rgb(20 184 166 / 5%), transparent 30%),
114
+ var(--anlyx-color-background);
115
+ }
116
+
117
+ .anlyx-shell *,
118
+ .anlyx-shell *::before,
119
+ .anlyx-shell *::after {
120
+ box-sizing: border-box;
121
+ }
122
+
123
+ .anlyx-sr-only {
124
+ position: absolute;
125
+ width: 1px;
126
+ height: 1px;
127
+ padding: 0;
128
+ margin: -1px;
129
+ overflow: hidden;
130
+ clip: rect(0, 0, 0, 0);
131
+ white-space: nowrap;
132
+ border: 0;
133
+ }
134
+
135
+ .anlyx-panel-group {
136
+ width: 100%;
137
+ height: 100%;
138
+ min-width: 0;
139
+ min-height: 0;
140
+ }
141
+
142
+ .anlyx-panel {
143
+ display: grid;
144
+ overflow: hidden;
145
+ min-width: 0;
146
+ min-height: 0;
147
+ }
148
+
149
+ .anlyx-sidebar,
150
+ .anlyx-inspector,
151
+ .anlyx-workspace,
152
+ .anlyx-replay {
153
+ background: var(--anlyx-color-panel);
154
+ border-color: var(--anlyx-color-border);
155
+ }
156
+
157
+ .anlyx-sidebar {
158
+ display: flex;
159
+ overflow: hidden;
160
+ min-width: 0;
161
+ min-height: 0;
162
+ flex-direction: column;
163
+ gap: 18px;
164
+ padding: 18px 16px 12px;
165
+ border-right: 1px solid var(--anlyx-color-border);
166
+ box-shadow: 12px 0 34px rgb(15 23 42 / 3%);
167
+ }
168
+
169
+ .anlyx-resize-handle {
170
+ position: relative;
171
+ z-index: 6;
172
+ display: grid;
173
+ width: 8px;
174
+ min-width: 8px;
175
+ place-items: center;
176
+ background: transparent;
177
+ cursor: col-resize;
178
+ }
179
+
180
+ .anlyx-resize-handle span {
181
+ width: 3px;
182
+ height: 54px;
183
+ border-radius: 999px;
184
+ background: linear-gradient(#d7e2f0, #b9c8dd);
185
+ box-shadow: 0 1px 8px rgb(37 99 235 / 14%);
186
+ opacity: 0.9;
187
+ }
188
+
189
+ .anlyx-resize-handle:hover span {
190
+ background: var(--anlyx-color-request);
191
+ box-shadow: 0 0 0 4px rgb(37 99 235 / 12%);
192
+ }
193
+
194
+ .anlyx-sidebar--collapsed,
195
+ .anlyx-inspector--collapsed {
196
+ align-items: center;
197
+ padding: 12px 8px;
198
+ }
199
+
200
+ .anlyx-collapsed-label {
201
+ writing-mode: vertical-rl;
202
+ color: var(--anlyx-color-text-secondary);
203
+ font-size: 11px;
204
+ font-weight: 800;
205
+ letter-spacing: 0;
206
+ text-transform: uppercase;
207
+ }
208
+
209
+ .anlyx-brand {
210
+ display: flex;
211
+ align-items: center;
212
+ gap: 12px;
213
+ }
214
+
215
+ .anlyx-brand__mark {
216
+ display: grid;
217
+ width: 36px;
218
+ height: 36px;
219
+ place-items: center;
220
+ border: 1px solid rgb(59 130 246 / 22%);
221
+ border-radius: 9px;
222
+ background: linear-gradient(145deg, #1261f1, #3b82f6);
223
+ color: #ffffff;
224
+ font-weight: 700;
225
+ box-shadow: 0 10px 22px rgb(37 99 235 / 25%);
226
+ }
227
+
228
+ .anlyx-brand__name,
229
+ .anlyx-list-item__primary,
230
+ .anlyx-field__value {
231
+ color: var(--anlyx-color-text-primary);
232
+ font-weight: 650;
233
+ }
234
+
235
+ .anlyx-brand__project,
236
+ .anlyx-list-item__meta,
237
+ .anlyx-field__label,
238
+ .anlyx-eyebrow,
239
+ .anlyx-generated-at {
240
+ color: var(--anlyx-color-text-secondary);
241
+ }
242
+
243
+ .anlyx-tabs {
244
+ display: grid;
245
+ grid-template-columns: repeat(4, minmax(0, 1fr));
246
+ gap: 3px;
247
+ padding: 4px;
248
+ border: 1px solid #edf1f7;
249
+ border-radius: var(--anlyx-radius);
250
+ background: #f7f9fd;
251
+ box-shadow: inset 0 1px 0 rgb(255 255 255 / 82%);
252
+ }
253
+
254
+ .anlyx-tab,
255
+ .anlyx-replay button,
256
+ .anlyx-toolbar-button,
257
+ .anlyx-panel-toggle {
258
+ min-height: 32px;
259
+ border: 1px solid transparent;
260
+ border-radius: var(--anlyx-radius-sm);
261
+ background: transparent;
262
+ color: var(--anlyx-color-text-secondary);
263
+ font: inherit;
264
+ }
265
+
266
+ .anlyx-tab--active,
267
+ .anlyx-replay button,
268
+ .anlyx-toolbar-button,
269
+ .anlyx-panel-toggle {
270
+ border-color: #dbe6f5;
271
+ background: var(--anlyx-color-panel);
272
+ color: var(--anlyx-color-text-primary);
273
+ box-shadow:
274
+ 0 1px 2px rgb(15 23 42 / 7%),
275
+ 0 8px 20px rgb(15 23 42 / 4%);
276
+ }
277
+
278
+ .anlyx-tab {
279
+ padding: 0 6px;
280
+ font-size: 12px;
281
+ font-weight: 650;
282
+ white-space: normal;
283
+ }
284
+
285
+ .anlyx-tab--active {
286
+ color: var(--anlyx-color-request);
287
+ }
288
+
289
+ .anlyx-search {
290
+ display: grid;
291
+ gap: 6px;
292
+ }
293
+
294
+ .anlyx-project-select {
295
+ display: grid;
296
+ grid-template-columns: auto minmax(0, 1fr);
297
+ align-items: center;
298
+ gap: 9px;
299
+ min-height: 42px;
300
+ padding: 0 12px;
301
+ border: 1px solid var(--anlyx-color-border);
302
+ border-radius: var(--anlyx-radius);
303
+ background: #ffffff;
304
+ color: var(--anlyx-color-text-primary);
305
+ font: inherit;
306
+ font-weight: 700;
307
+ text-align: left;
308
+ box-shadow: var(--anlyx-shadow-panel);
309
+ }
310
+
311
+ .anlyx-project-select span {
312
+ overflow: hidden;
313
+ text-overflow: ellipsis;
314
+ white-space: nowrap;
315
+ }
316
+
317
+ .anlyx-search__label,
318
+ .anlyx-section-heading,
319
+ .anlyx-eyebrow {
320
+ font-size: 12px;
321
+ font-weight: 700;
322
+ text-transform: uppercase;
323
+ }
324
+
325
+ .anlyx-search__control {
326
+ display: grid;
327
+ grid-template-columns: auto minmax(0, 1fr);
328
+ align-items: center;
329
+ gap: 8px;
330
+ width: 100%;
331
+ min-height: 40px;
332
+ padding: 0 12px;
333
+ border: 1px solid var(--anlyx-color-border);
334
+ border-radius: var(--anlyx-radius);
335
+ background: #fbfcff;
336
+ color: var(--anlyx-color-text-muted);
337
+ box-shadow: inset 0 1px 0 rgb(255 255 255 / 90%);
338
+ }
339
+
340
+ .anlyx-search input {
341
+ width: 100%;
342
+ min-width: 0;
343
+ padding: 0;
344
+ border: 0;
345
+ outline: 0;
346
+ background: transparent;
347
+ color: var(--anlyx-color-text-primary);
348
+ font: inherit;
349
+ }
350
+
351
+ .anlyx-sidebar-section {
352
+ display: grid;
353
+ gap: 8px;
354
+ min-height: 0;
355
+ }
356
+
357
+ .anlyx-sidebar__list-region {
358
+ display: grid;
359
+ gap: 16px;
360
+ min-height: 0;
361
+ overflow: auto;
362
+ padding-right: 2px;
363
+ }
364
+
365
+ .anlyx-list {
366
+ display: grid;
367
+ gap: 9px;
368
+ padding: 0;
369
+ margin: 0;
370
+ list-style: none;
371
+ }
372
+
373
+ .anlyx-list--compact {
374
+ gap: 4px;
375
+ }
376
+
377
+ .anlyx-list-item {
378
+ display: grid;
379
+ gap: 7px;
380
+ padding: 12px;
381
+ border: 1px solid var(--anlyx-color-border);
382
+ border-radius: var(--anlyx-radius);
383
+ background: linear-gradient(180deg, #ffffff, #fbfcff);
384
+ box-shadow: 0 1px 2px rgb(15 23 42 / 4%);
385
+ transition:
386
+ border-color 160ms ease,
387
+ box-shadow 160ms ease,
388
+ background 160ms ease,
389
+ transform 160ms ease;
390
+ }
391
+
392
+ .anlyx-list-item:has([aria-current="true"]) {
393
+ border-color: #4f8df8;
394
+ background: linear-gradient(180deg, #ffffff, #f3f7ff);
395
+ box-shadow:
396
+ inset 3px 0 0 #2563eb,
397
+ 0 10px 24px rgb(37 99 235 / 10%);
398
+ }
399
+
400
+ .anlyx-list-item:hover {
401
+ border-color: #b9c8dd;
402
+ box-shadow: 0 10px 24px rgb(15 23 42 / 7%);
403
+ transform: translateY(-1px);
404
+ }
405
+
406
+ .anlyx-endpoint-button,
407
+ .anlyx-page-button {
408
+ display: grid;
409
+ width: 100%;
410
+ gap: 6px;
411
+ padding: 0;
412
+ border: 0;
413
+ background: transparent;
414
+ color: inherit;
415
+ font: inherit;
416
+ text-align: left;
417
+ cursor: pointer;
418
+ }
419
+
420
+ .anlyx-endpoint-button[aria-current="true"] .anlyx-list-item__primary,
421
+ .anlyx-page-button[aria-current="true"] .anlyx-list-item__primary {
422
+ color: #1d4ed8;
423
+ }
424
+
425
+ .anlyx-list-item__line,
426
+ .anlyx-list-item__meta,
427
+ .anlyx-replay__state {
428
+ display: flex;
429
+ align-items: center;
430
+ gap: 8px;
431
+ min-width: 0;
432
+ }
433
+
434
+ .anlyx-list-item__primary,
435
+ .anlyx-list-item__meta span {
436
+ overflow-wrap: anywhere;
437
+ }
438
+
439
+ .anlyx-list-item__primary {
440
+ display: -webkit-box;
441
+ overflow: hidden;
442
+ -webkit-box-orient: vertical;
443
+ -webkit-line-clamp: 2;
444
+ line-height: 1.25;
445
+ }
446
+
447
+ .anlyx-list-item__meta {
448
+ color: var(--anlyx-color-text-secondary);
449
+ font-size: 12px;
450
+ line-height: 1.35;
451
+ }
452
+
453
+ .anlyx-service-row {
454
+ display: grid;
455
+ grid-template-columns: auto minmax(0, 1fr);
456
+ align-items: center;
457
+ gap: 8px;
458
+ min-height: 30px;
459
+ padding: 0 8px;
460
+ color: var(--anlyx-color-text-secondary);
461
+ font-size: 12px;
462
+ }
463
+
464
+ .anlyx-service-row span {
465
+ overflow: hidden;
466
+ text-overflow: ellipsis;
467
+ white-space: nowrap;
468
+ }
469
+
470
+ .anlyx-main {
471
+ display: grid;
472
+ overflow: hidden;
473
+ min-width: 0;
474
+ min-height: 0;
475
+ }
476
+
477
+ .anlyx-main--process {
478
+ grid-template-rows: minmax(0, 1fr);
479
+ }
480
+
481
+ .anlyx-workspace {
482
+ display: grid;
483
+ min-width: 0;
484
+ min-height: 0;
485
+ overflow: hidden;
486
+ grid-template-rows: auto minmax(0, 1fr);
487
+ }
488
+
489
+ .anlyx-workspace-header,
490
+ .anlyx-panel-heading {
491
+ display: flex;
492
+ align-items: flex-start;
493
+ justify-content: space-between;
494
+ gap: 16px;
495
+ padding: 20px 22px;
496
+ border-bottom: 1px solid var(--anlyx-color-border);
497
+ background: rgb(255 255 255 / 82%);
498
+ backdrop-filter: blur(14px);
499
+ }
500
+
501
+ .anlyx-workspace-actions,
502
+ .anlyx-toolbar {
503
+ display: flex;
504
+ flex-wrap: wrap;
505
+ align-items: center;
506
+ justify-content: flex-end;
507
+ gap: 8px;
508
+ }
509
+
510
+ .anlyx-toolbar-button {
511
+ min-height: 34px;
512
+ padding: 0 12px;
513
+ cursor: pointer;
514
+ font-weight: 650;
515
+ }
516
+
517
+ .anlyx-toolbar-button:disabled {
518
+ cursor: not-allowed;
519
+ opacity: 0.48;
520
+ }
521
+
522
+ .anlyx-toolbar-select,
523
+ .anlyx-replay select {
524
+ min-height: 30px;
525
+ border: 1px solid var(--anlyx-color-border);
526
+ border-radius: 6px;
527
+ background: var(--anlyx-color-panel);
528
+ color: var(--anlyx-color-text-primary);
529
+ font: inherit;
530
+ }
531
+
532
+ .anlyx-workspace-header h1,
533
+ .anlyx-panel-heading h2,
534
+ .anlyx-canvas-placeholder h2 {
535
+ margin: 0;
536
+ color: #111827;
537
+ font-size: 22px;
538
+ line-height: 1.2;
539
+ letter-spacing: 0;
540
+ }
541
+
542
+ .anlyx-eyebrow {
543
+ margin: 0 0 6px;
544
+ }
545
+
546
+ .anlyx-flow-story {
547
+ display: grid;
548
+ overflow: hidden;
549
+ min-width: 0;
550
+ min-height: 0;
551
+ grid-template-rows: auto auto minmax(0, 1fr) auto;
552
+ background:
553
+ linear-gradient(90deg, rgb(37 99 235 / 4%) 1px, transparent 1px),
554
+ linear-gradient(rgb(37 99 235 / 4%) 1px, transparent 1px), #fbfcff;
555
+ background-size: 28px 28px;
556
+ }
557
+
558
+ .anlyx-flow-story__header {
559
+ display: flex;
560
+ align-items: center;
561
+ justify-content: space-between;
562
+ gap: 16px;
563
+ padding: 18px 22px;
564
+ border-bottom: 1px solid var(--anlyx-color-border);
565
+ background: rgb(255 255 255 / 88%);
566
+ backdrop-filter: blur(14px);
567
+ }
568
+
569
+ .anlyx-flow-story__header h1 {
570
+ margin: 0;
571
+ color: #111827;
572
+ font-size: 23px;
573
+ line-height: 1.18;
574
+ letter-spacing: 0;
575
+ }
576
+
577
+ .anlyx-flow-story__summary {
578
+ display: flex;
579
+ flex-wrap: wrap;
580
+ gap: 7px;
581
+ margin-top: 9px;
582
+ }
583
+
584
+ .anlyx-flow-story__summary span {
585
+ display: inline-flex;
586
+ align-items: center;
587
+ min-height: 24px;
588
+ padding: 0 9px;
589
+ border: 1px solid #dbe7fb;
590
+ border-radius: 999px;
591
+ background: #f8fbff;
592
+ color: #475569;
593
+ font-size: 12px;
594
+ font-weight: 750;
595
+ }
596
+
597
+ .anlyx-flow-story__actions {
598
+ display: flex;
599
+ flex-wrap: wrap;
600
+ align-items: center;
601
+ justify-content: flex-end;
602
+ gap: 8px;
603
+ }
604
+
605
+ .anlyx-interaction-chain {
606
+ display: grid;
607
+ min-width: 0;
608
+ grid-template-columns: repeat(4, minmax(0, 1fr));
609
+ gap: 10px;
610
+ padding: 12px 22px;
611
+ border-bottom: 1px solid var(--anlyx-color-border);
612
+ background: rgb(248 251 255 / 88%);
613
+ }
614
+
615
+ .anlyx-interaction-chain__item {
616
+ display: grid;
617
+ align-items: center;
618
+ min-width: 0;
619
+ grid-template-columns: auto minmax(0, 1fr);
620
+ gap: 9px;
621
+ padding: 10px;
622
+ border: 1px solid #dde8f7;
623
+ border-radius: 8px;
624
+ background: #ffffff;
625
+ box-shadow: 0 8px 18px rgb(15 23 42 / 5%);
626
+ }
627
+
628
+ .anlyx-interaction-chain__icon {
629
+ display: inline-flex;
630
+ align-items: center;
631
+ justify-content: center;
632
+ width: 30px;
633
+ height: 30px;
634
+ border-radius: 8px;
635
+ background: #eff6ff;
636
+ color: #2563eb;
637
+ }
638
+
639
+ .anlyx-interaction-chain__item span:not(.anlyx-interaction-chain__icon) {
640
+ display: block;
641
+ overflow: hidden;
642
+ color: #64748b;
643
+ font-size: 11px;
644
+ font-weight: 800;
645
+ line-height: 1.2;
646
+ text-overflow: ellipsis;
647
+ text-transform: uppercase;
648
+ white-space: nowrap;
649
+ }
650
+
651
+ .anlyx-interaction-chain__item strong {
652
+ display: block;
653
+ overflow: hidden;
654
+ margin-top: 3px;
655
+ color: #111827;
656
+ font-size: 12px;
657
+ line-height: 1.25;
658
+ text-overflow: ellipsis;
659
+ white-space: nowrap;
660
+ }
661
+
662
+ .anlyx-interaction-chain__item--page .anlyx-interaction-chain__icon {
663
+ background: #eff6ff;
664
+ color: #2563eb;
665
+ }
666
+
667
+ .anlyx-interaction-chain__item--api .anlyx-interaction-chain__icon {
668
+ background: #ecfeff;
669
+ color: #0891b2;
670
+ }
671
+
672
+ .anlyx-interaction-chain__item--backend .anlyx-interaction-chain__icon {
673
+ background: #fff7ed;
674
+ color: #ea580c;
675
+ }
676
+
677
+ .anlyx-interaction-chain__item--guard .anlyx-interaction-chain__icon {
678
+ background: #f0fdf4;
679
+ color: #16a34a;
680
+ }
681
+
682
+ .anlyx-flow-story__stage {
683
+ position: relative;
684
+ display: grid;
685
+ overflow: hidden;
686
+ min-width: 0;
687
+ min-height: 0;
688
+ grid-template-columns: minmax(280px, 360px) minmax(0, 1fr);
689
+ align-items: center;
690
+ gap: 28px;
691
+ padding: 30px 26px 26px;
692
+ }
693
+
694
+ .anlyx-page-preview {
695
+ align-self: center;
696
+ overflow: hidden;
697
+ min-width: 0;
698
+ border: 1px solid #dbe5f2;
699
+ border-radius: 12px;
700
+ background: #ffffff;
701
+ box-shadow:
702
+ 0 20px 50px rgb(15 23 42 / 12%),
703
+ var(--anlyx-shadow-panel);
704
+ }
705
+
706
+ .anlyx-page-preview__chrome {
707
+ display: flex;
708
+ align-items: center;
709
+ gap: 8px;
710
+ padding: 12px 14px;
711
+ border-bottom: 1px solid var(--anlyx-color-border);
712
+ background: #fbfcff;
713
+ font-size: 12px;
714
+ }
715
+
716
+ .anlyx-page-preview__chrome span {
717
+ overflow: hidden;
718
+ color: var(--anlyx-color-text-secondary);
719
+ text-overflow: ellipsis;
720
+ white-space: nowrap;
721
+ }
722
+
723
+ .anlyx-page-preview__screen {
724
+ display: grid;
725
+ gap: 13px;
726
+ min-height: 330px;
727
+ padding: 14px;
728
+ background:
729
+ linear-gradient(180deg, rgb(6 78 59 / 4%), transparent 42%),
730
+ linear-gradient(135deg, #f8fafc, #ffffff);
731
+ }
732
+
733
+ .anlyx-page-preview__topbar {
734
+ display: grid;
735
+ align-items: center;
736
+ grid-template-columns: repeat(3, 7px) 1fr;
737
+ gap: 6px;
738
+ min-height: 30px;
739
+ padding: 0 10px;
740
+ border-radius: 8px;
741
+ background: #064e3b;
742
+ color: #ffffff;
743
+ font-size: 10px;
744
+ letter-spacing: 0.08em;
745
+ }
746
+
747
+ .anlyx-page-preview__topbar span {
748
+ width: 7px;
749
+ height: 7px;
750
+ border-radius: 999px;
751
+ background: rgb(255 255 255 / 42%);
752
+ }
753
+
754
+ .anlyx-page-preview__topbar strong {
755
+ justify-self: center;
756
+ font-weight: 900;
757
+ }
758
+
759
+ .anlyx-page-preview__hero {
760
+ display: grid;
761
+ grid-template-columns: 1fr 92px;
762
+ gap: 12px;
763
+ min-height: 126px;
764
+ padding: 16px;
765
+ border-radius: 10px;
766
+ background:
767
+ linear-gradient(135deg, rgb(5 46 22 / 92%), rgb(6 78 59 / 78%)),
768
+ linear-gradient(90deg, #064e3b, #14532d);
769
+ color: #ffffff;
770
+ }
771
+
772
+ .anlyx-page-preview__hero span {
773
+ color: #bbf7d0;
774
+ font-size: 12px;
775
+ font-weight: 800;
776
+ }
777
+
778
+ .anlyx-page-preview__hero strong {
779
+ display: block;
780
+ margin-top: 8px;
781
+ font-size: 22px;
782
+ line-height: 1.05;
783
+ }
784
+
785
+ .anlyx-page-preview__hero p {
786
+ margin: 0;
787
+ margin-top: 8px;
788
+ color: rgb(255 255 255 / 82%);
789
+ font-size: 12px;
790
+ }
791
+
792
+ .anlyx-page-preview__reward {
793
+ display: grid;
794
+ place-items: center;
795
+ align-self: center;
796
+ justify-self: end;
797
+ width: 82px;
798
+ height: 82px;
799
+ border-radius: 18px;
800
+ background: linear-gradient(180deg, #ffffff, #f8fafc);
801
+ color: #064e3b;
802
+ box-shadow: 0 14px 28px rgb(0 0 0 / 18%);
803
+ }
804
+
805
+ .anlyx-page-preview__reward span {
806
+ width: 42px;
807
+ height: 32px;
808
+ border-radius: 999px 999px 8px 8px;
809
+ background: linear-gradient(180deg, #16a34a, #166534);
810
+ }
811
+
812
+ .anlyx-page-preview__reward strong {
813
+ margin-top: -10px;
814
+ font-size: 18px;
815
+ }
816
+
817
+ .anlyx-page-preview__facts,
818
+ .anlyx-page-preview__steps,
819
+ .anlyx-page-preview__api {
820
+ display: grid;
821
+ gap: 8px;
822
+ padding: 12px;
823
+ border: 1px solid #e2e8f0;
824
+ border-radius: 9px;
825
+ background: #ffffff;
826
+ color: #475569;
827
+ font-size: 12px;
828
+ }
829
+
830
+ .anlyx-page-preview__facts {
831
+ grid-template-columns: 1fr 1fr;
832
+ }
833
+
834
+ .anlyx-page-preview__steps span {
835
+ position: relative;
836
+ padding-left: 22px;
837
+ }
838
+
839
+ .anlyx-page-preview__steps span::before {
840
+ position: absolute;
841
+ top: 1px;
842
+ left: 0;
843
+ display: grid;
844
+ width: 15px;
845
+ height: 15px;
846
+ place-items: center;
847
+ border-radius: 999px;
848
+ background: #dcfce7;
849
+ color: #166534;
850
+ content: "";
851
+ }
852
+
853
+ .anlyx-page-preview__api {
854
+ grid-template-columns: auto minmax(0, 1fr);
855
+ align-items: center;
856
+ }
857
+
858
+ .anlyx-page-preview__api strong {
859
+ padding: 3px 7px;
860
+ border-radius: 999px;
861
+ background: #dbeafe;
862
+ color: #1d4ed8;
863
+ font-size: 11px;
864
+ }
865
+
866
+ .anlyx-page-preview__api span {
867
+ overflow: hidden;
868
+ text-overflow: ellipsis;
869
+ white-space: nowrap;
870
+ }
871
+
872
+ .anlyx-page-preview__meta {
873
+ display: flex;
874
+ flex-wrap: wrap;
875
+ align-items: center;
876
+ gap: 8px;
877
+ padding: 10px 14px;
878
+ border-top: 1px solid var(--anlyx-color-border);
879
+ color: var(--anlyx-color-text-secondary);
880
+ font-size: 12px;
881
+ font-weight: 650;
882
+ }
883
+
884
+ .anlyx-flow-story__request {
885
+ position: absolute;
886
+ top: 48%;
887
+ left: min(365px, 32%);
888
+ z-index: 5;
889
+ display: flex;
890
+ align-items: center;
891
+ gap: 7px;
892
+ color: var(--anlyx-color-request);
893
+ font-size: 12px;
894
+ font-weight: 800;
895
+ pointer-events: none;
896
+ }
897
+
898
+ .anlyx-flow-story__request i {
899
+ width: 72px;
900
+ height: 2px;
901
+ background: var(--anlyx-color-request);
902
+ box-shadow: 0 0 14px rgb(37 99 235 / 42%);
903
+ }
904
+
905
+ .anlyx-flow-story__diagram {
906
+ position: relative;
907
+ display: grid;
908
+ align-self: stretch;
909
+ min-width: 0;
910
+ min-height: 480px;
911
+ align-content: center;
912
+ gap: 22px;
913
+ padding: 34px 26px 54px;
914
+ border: 1px solid rgb(223 230 241 / 72%);
915
+ border-radius: 14px;
916
+ background:
917
+ linear-gradient(90deg, rgb(37 99 235 / 3%) 1px, transparent 1px),
918
+ linear-gradient(rgb(37 99 235 / 3%) 1px, transparent 1px), rgb(255 255 255 / 66%);
919
+ background-size: 20px 20px;
920
+ box-shadow: inset 0 1px 0 rgb(255 255 255 / 90%);
921
+ }
922
+
923
+ .anlyx-flow-story__diagram-head {
924
+ display: flex;
925
+ align-items: center;
926
+ justify-content: space-between;
927
+ gap: 12px;
928
+ }
929
+
930
+ .anlyx-flow-story__diagram-head div {
931
+ display: inline-grid;
932
+ gap: 2px;
933
+ padding: 8px 11px;
934
+ border: 1px solid #dbe7fb;
935
+ border-radius: 10px;
936
+ background: rgb(255 255 255 / 82%);
937
+ box-shadow: 0 10px 22px rgb(15 23 42 / 4%);
938
+ }
939
+
940
+ .anlyx-flow-story__diagram-head span {
941
+ color: #64748b;
942
+ font-size: 10px;
943
+ font-weight: 900;
944
+ text-transform: uppercase;
945
+ }
946
+
947
+ .anlyx-flow-story__diagram-head strong {
948
+ color: #0f172a;
949
+ font-size: 13px;
950
+ }
951
+
952
+ .anlyx-flow-story__diagram--empty {
953
+ place-items: center;
954
+ color: var(--anlyx-color-text-secondary);
955
+ }
956
+
957
+ .anlyx-flow-story__lane {
958
+ display: flex;
959
+ align-items: stretch;
960
+ min-width: 0;
961
+ overflow-x: auto;
962
+ padding: 4px 2px 12px;
963
+ }
964
+
965
+ .anlyx-flow-story__step-wrap {
966
+ display: contents;
967
+ }
968
+
969
+ .anlyx-flow-story__step,
970
+ .anlyx-flow-story__support-node {
971
+ position: relative;
972
+ display: grid;
973
+ min-width: 0;
974
+ border: 1px solid #cbd5e1;
975
+ background: rgb(255 255 255 / 96%);
976
+ color: var(--anlyx-color-text-primary);
977
+ font: inherit;
978
+ text-align: left;
979
+ cursor: pointer;
980
+ }
981
+
982
+ .anlyx-flow-story__step {
983
+ width: clamp(138px, 13vw, 186px);
984
+ min-height: 140px;
985
+ gap: 8px;
986
+ padding: 14px;
987
+ border-top: 3px solid var(--anlyx-color-request);
988
+ border-radius: 11px;
989
+ box-shadow: 0 16px 34px rgb(15 23 42 / 8%);
990
+ }
991
+
992
+ .anlyx-flow-story__step-number {
993
+ position: absolute;
994
+ top: 11px;
995
+ right: 12px;
996
+ color: #94a3b8;
997
+ font-size: 11px;
998
+ font-weight: 950;
999
+ }
1000
+
1001
+ .anlyx-flow-story__step--service {
1002
+ border-top-color: #6366f1;
1003
+ }
1004
+
1005
+ .anlyx-flow-story__step--repository {
1006
+ border-top-color: #7c3aed;
1007
+ }
1008
+
1009
+ .anlyx-flow-story__step--database {
1010
+ border-top-color: var(--anlyx-color-database);
1011
+ background: linear-gradient(180deg, #ffffff, #f0fdfa);
1012
+ }
1013
+
1014
+ .anlyx-flow-story__step--active,
1015
+ .anlyx-flow-story__support-node--active {
1016
+ box-shadow:
1017
+ 0 0 0 4px rgb(37 99 235 / 12%),
1018
+ 0 18px 38px rgb(37 99 235 / 16%);
1019
+ }
1020
+
1021
+ .anlyx-flow-story__step--selected,
1022
+ .anlyx-flow-story__support-node--selected {
1023
+ outline: 2px solid var(--anlyx-color-request);
1024
+ outline-offset: 2px;
1025
+ }
1026
+
1027
+ .anlyx-flow-story__step-icon {
1028
+ display: grid;
1029
+ width: 26px;
1030
+ height: 26px;
1031
+ place-items: center;
1032
+ border-radius: 8px;
1033
+ background: #eff6ff;
1034
+ color: var(--anlyx-color-request);
1035
+ }
1036
+
1037
+ .anlyx-flow-story__step--service .anlyx-flow-story__step-icon {
1038
+ background: #eef2ff;
1039
+ color: #4f46e5;
1040
+ }
1041
+
1042
+ .anlyx-flow-story__step--repository .anlyx-flow-story__step-icon {
1043
+ background: #f5f3ff;
1044
+ color: #7c3aed;
1045
+ }
1046
+
1047
+ .anlyx-flow-story__step--database .anlyx-flow-story__step-icon {
1048
+ background: #ccfbf1;
1049
+ color: #0f766e;
1050
+ }
1051
+
1052
+ .anlyx-flow-story__step-type,
1053
+ .anlyx-flow-story__support-node span {
1054
+ color: var(--anlyx-color-text-secondary);
1055
+ font-size: 10px;
1056
+ font-weight: 900;
1057
+ text-transform: uppercase;
1058
+ }
1059
+
1060
+ .anlyx-flow-story__step strong,
1061
+ .anlyx-flow-story__support-node strong {
1062
+ overflow: hidden;
1063
+ color: #0f172a;
1064
+ font-size: 12px;
1065
+ line-height: 1.28;
1066
+ overflow-wrap: anywhere;
1067
+ }
1068
+
1069
+ .anlyx-flow-story__step .anlyx-status-badge,
1070
+ .anlyx-flow-story__support-node .anlyx-status-badge {
1071
+ align-self: end;
1072
+ justify-self: start;
1073
+ }
1074
+
1075
+ .anlyx-flow-story__arrow {
1076
+ position: relative;
1077
+ flex: 1 1 28px;
1078
+ min-width: 24px;
1079
+ align-self: center;
1080
+ height: 2px;
1081
+ background: var(--anlyx-color-request);
1082
+ box-shadow: 0 0 12px rgb(37 99 235 / 36%);
1083
+ }
1084
+
1085
+ .anlyx-flow-story__arrow::after {
1086
+ position: absolute;
1087
+ top: -4px;
1088
+ right: -1px;
1089
+ width: 9px;
1090
+ height: 9px;
1091
+ border-top: 2px solid var(--anlyx-color-request);
1092
+ border-right: 2px solid var(--anlyx-color-request);
1093
+ content: "";
1094
+ transform: rotate(45deg);
1095
+ }
1096
+
1097
+ .anlyx-flow-story__support {
1098
+ position: relative;
1099
+ display: grid;
1100
+ max-width: 520px;
1101
+ gap: 10px;
1102
+ margin-left: min(260px, 22vw);
1103
+ padding: 14px;
1104
+ border: 1px dashed rgb(249 115 22 / 58%);
1105
+ border-radius: 14px;
1106
+ background: rgb(255 247 237 / 72%);
1107
+ }
1108
+
1109
+ .anlyx-flow-story__support::before {
1110
+ position: absolute;
1111
+ top: -54px;
1112
+ left: 28px;
1113
+ width: 2px;
1114
+ height: 54px;
1115
+ border-left: 2px dashed var(--anlyx-color-branch);
1116
+ content: "";
1117
+ }
1118
+
1119
+ .anlyx-flow-story__support-heading {
1120
+ display: flex;
1121
+ align-items: center;
1122
+ gap: 7px;
1123
+ color: #c2410c;
1124
+ font-size: 11px;
1125
+ font-weight: 900;
1126
+ text-transform: uppercase;
1127
+ }
1128
+
1129
+ .anlyx-flow-story__support-grid {
1130
+ display: grid;
1131
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1132
+ gap: 10px;
1133
+ }
1134
+
1135
+ .anlyx-flow-story__support-node {
1136
+ gap: 6px;
1137
+ min-height: 100px;
1138
+ padding: 11px;
1139
+ border-color: #fed7aa;
1140
+ border-radius: 10px;
1141
+ background: #ffffff;
1142
+ box-shadow: 0 10px 24px rgb(249 115 22 / 8%);
1143
+ }
1144
+
1145
+ .anlyx-flow-story__support-node svg {
1146
+ color: var(--anlyx-color-branch);
1147
+ }
1148
+
1149
+ .anlyx-flow-story__map {
1150
+ overflow: hidden;
1151
+ min-width: 0;
1152
+ min-height: 0;
1153
+ border: 1px solid rgb(223 230 241 / 74%);
1154
+ border-radius: 10px;
1155
+ background: rgb(255 255 255 / 72%);
1156
+ }
1157
+
1158
+ .anlyx-flow-story__map .anlyx-workspace {
1159
+ height: 100%;
1160
+ background: transparent;
1161
+ }
1162
+
1163
+ .anlyx-flow-story__map .anlyx-workspace-header,
1164
+ .anlyx-flow-story__map .anlyx-flow-legend {
1165
+ display: none;
1166
+ }
1167
+
1168
+ .anlyx-flow-story__map .anlyx-endpoint-map {
1169
+ margin: 0;
1170
+ border: 0;
1171
+ border-radius: 0;
1172
+ background: transparent;
1173
+ box-shadow: none;
1174
+ }
1175
+
1176
+ .anlyx-flow-story__response {
1177
+ position: absolute;
1178
+ right: 52px;
1179
+ bottom: 40px;
1180
+ left: 45%;
1181
+ height: 26px;
1182
+ border-bottom: 2px dashed var(--anlyx-color-response);
1183
+ border-left: 2px dashed var(--anlyx-color-response);
1184
+ border-radius: 0 0 0 14px;
1185
+ color: var(--anlyx-color-response);
1186
+ pointer-events: none;
1187
+ }
1188
+
1189
+ .anlyx-flow-story__response span {
1190
+ position: absolute;
1191
+ right: 45%;
1192
+ bottom: -11px;
1193
+ padding: 2px 8px;
1194
+ border: 1px solid rgb(139 92 246 / 22%);
1195
+ border-radius: 999px;
1196
+ background: #f5f3ff;
1197
+ font-size: 11px;
1198
+ font-weight: 800;
1199
+ }
1200
+
1201
+ @media (max-width: 1320px) {
1202
+ .anlyx-interaction-chain {
1203
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1204
+ }
1205
+
1206
+ .anlyx-flow-story__stage {
1207
+ grid-template-columns: minmax(240px, 320px) minmax(0, 1fr);
1208
+ gap: 20px;
1209
+ padding: 24px 20px 22px;
1210
+ }
1211
+
1212
+ .anlyx-flow-story__step {
1213
+ width: 148px;
1214
+ }
1215
+
1216
+ .anlyx-flow-story__support {
1217
+ margin-left: 180px;
1218
+ }
1219
+ }
1220
+
1221
+ @media (max-width: 1080px) {
1222
+ .anlyx-flow-story {
1223
+ overflow: auto;
1224
+ }
1225
+
1226
+ .anlyx-interaction-chain {
1227
+ grid-template-columns: 1fr;
1228
+ }
1229
+
1230
+ .anlyx-flow-story__stage {
1231
+ grid-template-columns: 1fr;
1232
+ overflow: visible;
1233
+ }
1234
+
1235
+ .anlyx-flow-story__request,
1236
+ .anlyx-flow-story__response {
1237
+ display: none;
1238
+ }
1239
+
1240
+ .anlyx-page-preview {
1241
+ max-width: 420px;
1242
+ }
1243
+
1244
+ .anlyx-flow-story__support {
1245
+ margin-left: 0;
1246
+ }
1247
+
1248
+ .anlyx-flow-story__support::before {
1249
+ display: none;
1250
+ }
1251
+ }
1252
+
1253
+ .anlyx-canvas-placeholder {
1254
+ display: grid;
1255
+ min-height: 360px;
1256
+ place-items: center;
1257
+ margin: 20px;
1258
+ border: 1px solid var(--anlyx-color-border);
1259
+ border-radius: var(--anlyx-radius);
1260
+ background:
1261
+ linear-gradient(var(--anlyx-color-grid) 1px, transparent 1px),
1262
+ linear-gradient(90deg, var(--anlyx-color-grid) 1px, transparent 1px), var(--anlyx-color-canvas);
1263
+ background-size: 24px 24px;
1264
+ }
1265
+
1266
+ .anlyx-canvas-placeholder__content {
1267
+ padding: 24px;
1268
+ border: 1px solid var(--anlyx-color-border);
1269
+ border-radius: var(--anlyx-radius);
1270
+ background: rgb(255 255 255 / 86%);
1271
+ text-align: center;
1272
+ box-shadow: var(--anlyx-shadow-panel);
1273
+ }
1274
+
1275
+ .anlyx-endpoint-map {
1276
+ position: relative;
1277
+ height: calc(100% - 32px);
1278
+ min-width: 0;
1279
+ min-height: 0;
1280
+ margin: 16px;
1281
+ overflow: hidden;
1282
+ border: 1px solid var(--anlyx-color-border);
1283
+ border-radius: 12px;
1284
+ background:
1285
+ radial-gradient(circle at 50% 42%, rgb(37 99 235 / 4%), transparent 33%),
1286
+ linear-gradient(var(--anlyx-color-grid) 1px, transparent 1px),
1287
+ linear-gradient(90deg, var(--anlyx-color-grid) 1px, transparent 1px), var(--anlyx-color-canvas);
1288
+ background-size:
1289
+ auto,
1290
+ 24px 24px,
1291
+ 24px 24px;
1292
+ box-shadow: inset 0 1px 0 rgb(255 255 255 / 80%);
1293
+ }
1294
+
1295
+ .anlyx-endpoint-map--process {
1296
+ margin-bottom: 12px;
1297
+ border-color: #c7d2fe;
1298
+ background:
1299
+ radial-gradient(circle at 24% 42%, rgb(37 99 235 / 13%), transparent 20%),
1300
+ radial-gradient(circle at 52% 42%, rgb(249 115 22 / 8%), transparent 23%),
1301
+ radial-gradient(circle at 76% 42%, rgb(20 184 166 / 9%), transparent 24%),
1302
+ radial-gradient(circle at 86% 72%, rgb(139 92 246 / 11%), transparent 27%),
1303
+ linear-gradient(var(--anlyx-color-grid) 1px, transparent 1px),
1304
+ linear-gradient(90deg, var(--anlyx-color-grid) 1px, transparent 1px), #fbfdff;
1305
+ background-size:
1306
+ auto,
1307
+ auto,
1308
+ auto,
1309
+ auto,
1310
+ 24px 24px,
1311
+ 24px 24px;
1312
+ }
1313
+
1314
+ .anlyx-react-flow {
1315
+ width: 100%;
1316
+ height: 100%;
1317
+ min-height: 420px;
1318
+ }
1319
+
1320
+ .anlyx-flow-legend {
1321
+ position: absolute;
1322
+ z-index: 4;
1323
+ top: 18px;
1324
+ left: 18px;
1325
+ display: flex;
1326
+ flex-wrap: wrap;
1327
+ gap: 8px;
1328
+ padding: 9px 11px;
1329
+ border: 1px solid var(--anlyx-color-border);
1330
+ border-radius: 9px;
1331
+ background: rgb(255 255 255 / 94%);
1332
+ color: var(--anlyx-color-text-secondary);
1333
+ font-size: 12px;
1334
+ box-shadow: var(--anlyx-shadow-card);
1335
+ backdrop-filter: blur(12px);
1336
+ }
1337
+
1338
+ .anlyx-flow-legend span {
1339
+ display: inline-flex;
1340
+ align-items: center;
1341
+ gap: 6px;
1342
+ }
1343
+
1344
+ .anlyx-flow-legend__mark {
1345
+ width: 18px;
1346
+ height: 2px;
1347
+ background: #2563eb;
1348
+ }
1349
+
1350
+ .anlyx-flow-legend__mark--sub {
1351
+ background: var(--anlyx-color-branch);
1352
+ }
1353
+
1354
+ .anlyx-flow-legend__mark--response {
1355
+ background: var(--anlyx-color-response);
1356
+ }
1357
+
1358
+ .anlyx-flow-legend__mark--unknown {
1359
+ background: var(--anlyx-color-confidence-unknown);
1360
+ }
1361
+
1362
+ .anlyx-flow-node {
1363
+ position: relative;
1364
+ display: grid;
1365
+ width: 206px;
1366
+ min-height: 112px;
1367
+ gap: 9px;
1368
+ padding: 14px;
1369
+ border: 1px solid #cfd9e8;
1370
+ border-top: 3px solid var(--anlyx-color-request);
1371
+ border-left: 1px solid #cfd9e8;
1372
+ border-radius: 10px;
1373
+ background: rgb(255 255 255 / 96%);
1374
+ color: var(--anlyx-color-text-primary);
1375
+ font: inherit;
1376
+ text-align: left;
1377
+ box-shadow:
1378
+ 0 15px 34px rgb(15 23 42 / 8%),
1379
+ var(--anlyx-shadow-panel);
1380
+ cursor: pointer;
1381
+ isolation: isolate;
1382
+ }
1383
+
1384
+ .anlyx-flow-node::before {
1385
+ position: absolute;
1386
+ top: 14px;
1387
+ bottom: 14px;
1388
+ left: 0;
1389
+ width: 4px;
1390
+ border-radius: 0 999px 999px 0;
1391
+ background: var(--anlyx-color-request);
1392
+ content: "";
1393
+ }
1394
+
1395
+ .anlyx-flow-node--sub {
1396
+ width: 182px;
1397
+ min-height: 86px;
1398
+ border-color: #ead8ff;
1399
+ border-top-color: var(--anlyx-color-branch);
1400
+ background: linear-gradient(180deg, #ffffff, #fff8f1);
1401
+ box-shadow: 0 8px 24px rgb(249 115 22 / 8%);
1402
+ }
1403
+
1404
+ .anlyx-flow-node--service {
1405
+ border-top-color: #6366f1;
1406
+ background: linear-gradient(180deg, #ffffff, #f7f7ff);
1407
+ }
1408
+
1409
+ .anlyx-flow-node--repository {
1410
+ border-top-color: #7c3aed;
1411
+ background: linear-gradient(180deg, #ffffff, #fbf7ff);
1412
+ }
1413
+
1414
+ .anlyx-flow-node--sub::before {
1415
+ background: var(--anlyx-color-branch);
1416
+ }
1417
+
1418
+ .anlyx-flow-node--service::before {
1419
+ background: #6366f1;
1420
+ }
1421
+
1422
+ .anlyx-flow-node--repository::before {
1423
+ background: #7c3aed;
1424
+ }
1425
+
1426
+ .anlyx-flow-node--database::before {
1427
+ background: var(--anlyx-color-database);
1428
+ }
1429
+
1430
+ .anlyx-flow-node--secondary {
1431
+ border-top-color: var(--anlyx-color-text-secondary);
1432
+ }
1433
+
1434
+ .anlyx-flow-node--database {
1435
+ border-color: #b8e7dc;
1436
+ border-top-color: var(--anlyx-color-database);
1437
+ background: linear-gradient(180deg, #ffffff, #f3fffb);
1438
+ box-shadow: 0 14px 34px rgb(15 118 110 / 11%);
1439
+ }
1440
+
1441
+ .anlyx-flow-node--selected {
1442
+ outline: 2px solid #4f8df8;
1443
+ outline-offset: 2px;
1444
+ box-shadow:
1445
+ 0 0 0 7px rgb(37 99 235 / 11%),
1446
+ 0 18px 44px rgb(37 99 235 / 16%);
1447
+ }
1448
+
1449
+ .anlyx-flow-node--replay-active {
1450
+ border-color: var(--anlyx-color-request);
1451
+ outline: 2px solid rgb(37 99 235 / 55%);
1452
+ outline-offset: 3px;
1453
+ box-shadow:
1454
+ 0 0 0 6px rgb(37 99 235 / 14%),
1455
+ 0 18px 42px rgb(37 99 235 / 18%),
1456
+ var(--anlyx-shadow-panel);
1457
+ animation: anlyx-node-pulse 1.1s ease-in-out infinite;
1458
+ }
1459
+
1460
+ .anlyx-flow-node--replay-active::after {
1461
+ position: absolute;
1462
+ z-index: -1;
1463
+ inset: -14px;
1464
+ border-radius: 18px;
1465
+ background: radial-gradient(circle, rgb(37 99 235 / 24%), transparent 62%);
1466
+ content: "";
1467
+ animation: anlyx-ripple 1.35s ease-out infinite;
1468
+ }
1469
+
1470
+ .anlyx-flow-node__pulse {
1471
+ position: absolute;
1472
+ z-index: -1;
1473
+ inset: -8px;
1474
+ border: 1px solid rgb(37 99 235 / 24%);
1475
+ border-radius: 16px;
1476
+ pointer-events: none;
1477
+ }
1478
+
1479
+ .anlyx-flow-node--database.anlyx-flow-node--replay-active::after {
1480
+ background: radial-gradient(circle, rgb(20 184 166 / 26%), transparent 62%);
1481
+ }
1482
+
1483
+ .anlyx-flow-handle {
1484
+ width: 1px;
1485
+ height: 1px;
1486
+ border: 0;
1487
+ background: transparent;
1488
+ opacity: 0;
1489
+ pointer-events: none;
1490
+ }
1491
+
1492
+ .anlyx-flow-node__header {
1493
+ display: flex;
1494
+ align-items: center;
1495
+ gap: 8px;
1496
+ }
1497
+
1498
+ .anlyx-flow-node__icon {
1499
+ display: inline-grid;
1500
+ min-width: 30px;
1501
+ height: 28px;
1502
+ place-items: center;
1503
+ border: 1px solid #dbeafe;
1504
+ border-radius: 8px;
1505
+ background: #eff6ff;
1506
+ color: var(--anlyx-color-request);
1507
+ font-size: 10px;
1508
+ font-weight: 800;
1509
+ }
1510
+
1511
+ .anlyx-flow-node__icon svg {
1512
+ display: block;
1513
+ }
1514
+
1515
+ .anlyx-flow-node--service .anlyx-flow-node__icon {
1516
+ border-color: #e0e7ff;
1517
+ background: #eef2ff;
1518
+ color: #4f46e5;
1519
+ }
1520
+
1521
+ .anlyx-flow-node--repository .anlyx-flow-node__icon {
1522
+ border-color: #ede9fe;
1523
+ background: #f5f3ff;
1524
+ color: #7c3aed;
1525
+ }
1526
+
1527
+ .anlyx-flow-node--database .anlyx-flow-node__icon {
1528
+ border-color: #ccfbf1;
1529
+ background: #ecfdf5;
1530
+ color: var(--anlyx-color-database);
1531
+ }
1532
+
1533
+ .anlyx-flow-node--sub .anlyx-flow-node__icon {
1534
+ border-color: #fed7aa;
1535
+ background: #fff7ed;
1536
+ color: var(--anlyx-color-branch);
1537
+ }
1538
+
1539
+ .anlyx-flow-node__type {
1540
+ color: var(--anlyx-color-text-secondary);
1541
+ font-size: 10px;
1542
+ font-weight: 700;
1543
+ text-transform: uppercase;
1544
+ }
1545
+
1546
+ .anlyx-flow-node__label {
1547
+ overflow-wrap: anywhere;
1548
+ font-size: 13px;
1549
+ font-weight: 650;
1550
+ line-height: 1.3;
1551
+ }
1552
+
1553
+ .anlyx-flow-edge--sub .react-flow__edge-path {
1554
+ stroke-dasharray: 6 5;
1555
+ stroke: var(--anlyx-color-branch);
1556
+ stroke-width: 2px;
1557
+ }
1558
+
1559
+ .anlyx-workspace--process .anlyx-flow-edge--sub .react-flow__edge-path {
1560
+ stroke: var(--anlyx-color-branch);
1561
+ stroke-dasharray: 7 5;
1562
+ }
1563
+
1564
+ .anlyx-flow-edge--replay-active .react-flow__edge-path {
1565
+ stroke-width: 4.5px;
1566
+ stroke-dasharray: 14 9;
1567
+ animation: anlyx-flow-travel 0.8s linear infinite;
1568
+ }
1569
+
1570
+ .anlyx-flow-edge--replay-request .react-flow__edge-path {
1571
+ stroke: var(--anlyx-color-request);
1572
+ filter: drop-shadow(0 0 8px rgb(37 99 235 / 58%));
1573
+ }
1574
+
1575
+ .anlyx-flow-edge--replay-response .react-flow__edge-path {
1576
+ stroke: var(--anlyx-color-response);
1577
+ filter: drop-shadow(0 0 8px rgb(139 92 246 / 58%));
1578
+ }
1579
+
1580
+ .anlyx-flow-particle {
1581
+ fill: var(--anlyx-color-request);
1582
+ filter: drop-shadow(0 0 8px rgb(37 99 235 / 75%));
1583
+ pointer-events: none;
1584
+ }
1585
+
1586
+ .anlyx-flow-particle--sub {
1587
+ fill: var(--anlyx-color-branch);
1588
+ filter: drop-shadow(0 0 8px rgb(249 115 22 / 72%));
1589
+ }
1590
+
1591
+ .anlyx-flow-particle--response,
1592
+ .anlyx-flow-particle--secondary {
1593
+ fill: var(--anlyx-color-response);
1594
+ filter: drop-shadow(0 0 8px rgb(139 92 246 / 72%));
1595
+ }
1596
+
1597
+ .anlyx-endpoint-map-empty {
1598
+ display: grid;
1599
+ min-height: 420px;
1600
+ align-content: center;
1601
+ justify-items: center;
1602
+ gap: 8px;
1603
+ padding: 24px;
1604
+ color: var(--anlyx-color-text-secondary);
1605
+ text-align: center;
1606
+ }
1607
+
1608
+ .anlyx-endpoint-map-empty span {
1609
+ display: inline-flex;
1610
+ align-items: center;
1611
+ min-height: 24px;
1612
+ padding: 0 9px;
1613
+ border: 1px solid #fed7aa;
1614
+ border-radius: 999px;
1615
+ background: #fff7ed;
1616
+ color: #c2410c;
1617
+ font-size: 11px;
1618
+ font-weight: 850;
1619
+ text-transform: uppercase;
1620
+ }
1621
+
1622
+ .anlyx-endpoint-map-empty h2 {
1623
+ margin: 4px 0 0;
1624
+ color: var(--anlyx-color-text-primary);
1625
+ font-size: 18px;
1626
+ line-height: 1.25;
1627
+ }
1628
+
1629
+ .anlyx-endpoint-map-empty p {
1630
+ max-width: 520px;
1631
+ margin: 0;
1632
+ font-size: 13px;
1633
+ line-height: 1.5;
1634
+ }
1635
+
1636
+ .anlyx-page-storyboard {
1637
+ display: grid;
1638
+ gap: 18px;
1639
+ overflow: auto;
1640
+ min-width: 0;
1641
+ min-height: 0;
1642
+ margin: 16px;
1643
+ padding-bottom: 24px;
1644
+ }
1645
+
1646
+ .anlyx-page-summary,
1647
+ .anlyx-storyboard-panel,
1648
+ .anlyx-capture-state,
1649
+ .anlyx-storyboard-empty {
1650
+ border: 1px solid var(--anlyx-color-border);
1651
+ border-radius: var(--anlyx-radius);
1652
+ background: var(--anlyx-color-panel);
1653
+ box-shadow: var(--anlyx-shadow-panel);
1654
+ }
1655
+
1656
+ .anlyx-page-summary {
1657
+ display: grid;
1658
+ grid-template-columns: minmax(0, 1.1fr) minmax(0, 1.5fr) auto auto;
1659
+ gap: 16px;
1660
+ padding: 18px;
1661
+ background:
1662
+ linear-gradient(180deg, rgb(255 255 255 / 96%), rgb(251 253 255 / 96%)),
1663
+ radial-gradient(circle at 8% 0%, rgb(37 99 235 / 8%), transparent 28%);
1664
+ }
1665
+
1666
+ .anlyx-page-summary h2,
1667
+ .anlyx-page-summary p {
1668
+ margin: 4px 0 0;
1669
+ overflow-wrap: anywhere;
1670
+ }
1671
+
1672
+ .anlyx-page-summary h2 {
1673
+ font-size: 18px;
1674
+ line-height: 1.25;
1675
+ }
1676
+
1677
+ .anlyx-storyboard-grid {
1678
+ display: grid;
1679
+ grid-template-columns: minmax(0, 1.58fr) minmax(300px, 0.82fr);
1680
+ gap: 16px;
1681
+ min-width: 0;
1682
+ }
1683
+
1684
+ .anlyx-page-evidence-board {
1685
+ display: grid;
1686
+ grid-template-columns: minmax(210px, 1.2fr) repeat(3, minmax(150px, 1fr));
1687
+ gap: 10px;
1688
+ align-items: stretch;
1689
+ min-width: 0;
1690
+ padding: 12px;
1691
+ border: 1px solid #cfe0f8;
1692
+ border-radius: var(--anlyx-radius);
1693
+ background:
1694
+ linear-gradient(180deg, rgb(255 255 255 / 94%), rgb(248 251 255 / 92%)),
1695
+ radial-gradient(circle at 0% 0%, rgb(37 99 235 / 12%), transparent 34%);
1696
+ box-shadow: var(--anlyx-shadow-panel);
1697
+ }
1698
+
1699
+ .anlyx-page-evidence-board__intro,
1700
+ .anlyx-page-evidence-metric {
1701
+ display: grid;
1702
+ gap: 5px;
1703
+ min-width: 0;
1704
+ padding: 12px;
1705
+ border: 1px solid rgb(219 231 251 / 88%);
1706
+ border-radius: 9px;
1707
+ background: rgb(255 255 255 / 78%);
1708
+ }
1709
+
1710
+ .anlyx-page-evidence-board__intro {
1711
+ border-left: 4px solid var(--anlyx-color-request);
1712
+ }
1713
+
1714
+ .anlyx-page-evidence-board__intro span,
1715
+ .anlyx-page-evidence-metric span {
1716
+ color: var(--anlyx-color-text-secondary);
1717
+ font-size: 11px;
1718
+ font-weight: 900;
1719
+ text-transform: uppercase;
1720
+ }
1721
+
1722
+ .anlyx-page-evidence-board__intro strong,
1723
+ .anlyx-page-evidence-metric strong {
1724
+ overflow-wrap: anywhere;
1725
+ color: var(--anlyx-color-text-primary);
1726
+ font-size: 18px;
1727
+ line-height: 1.15;
1728
+ }
1729
+
1730
+ .anlyx-page-evidence-metric em {
1731
+ overflow-wrap: anywhere;
1732
+ color: var(--anlyx-color-text-secondary);
1733
+ font-size: 12px;
1734
+ font-style: normal;
1735
+ font-weight: 650;
1736
+ }
1737
+
1738
+ .anlyx-storyboard-side {
1739
+ display: grid;
1740
+ gap: 16px;
1741
+ min-width: 0;
1742
+ }
1743
+
1744
+ .anlyx-relationship-list {
1745
+ display: grid;
1746
+ gap: 9px;
1747
+ padding: 0;
1748
+ margin: 0;
1749
+ list-style: none;
1750
+ }
1751
+
1752
+ .anlyx-relationship-list li {
1753
+ position: relative;
1754
+ display: flex;
1755
+ min-width: 0;
1756
+ align-items: center;
1757
+ gap: 8px;
1758
+ padding: 9px 10px;
1759
+ border: 1px solid var(--anlyx-color-border);
1760
+ border-radius: 8px;
1761
+ background: #ffffff;
1762
+ }
1763
+
1764
+ .anlyx-relationship-diagram {
1765
+ display: grid;
1766
+ grid-template-columns: minmax(130px, 0.75fr) minmax(0, 1.3fr);
1767
+ gap: 22px;
1768
+ align-items: center;
1769
+ }
1770
+
1771
+ .anlyx-relationship-source {
1772
+ display: grid;
1773
+ gap: 4px;
1774
+ padding: 14px;
1775
+ border: 1px solid var(--anlyx-color-border);
1776
+ border-radius: var(--anlyx-radius);
1777
+ background: linear-gradient(180deg, #ffffff, #f8fbff);
1778
+ text-align: center;
1779
+ box-shadow: var(--anlyx-shadow-panel);
1780
+ }
1781
+
1782
+ .anlyx-relationship-source span {
1783
+ color: var(--anlyx-color-text-secondary);
1784
+ font-size: 12px;
1785
+ }
1786
+
1787
+ .anlyx-relationship-line {
1788
+ width: 22px;
1789
+ height: 1px;
1790
+ margin-left: -31px;
1791
+ border-top: 1px solid #94a3b8;
1792
+ }
1793
+
1794
+ .anlyx-relationship-line::after {
1795
+ display: block;
1796
+ width: 5px;
1797
+ height: 5px;
1798
+ margin-top: -3px;
1799
+ margin-left: 18px;
1800
+ border-top: 1px solid #94a3b8;
1801
+ border-right: 1px solid #94a3b8;
1802
+ content: "";
1803
+ transform: rotate(45deg);
1804
+ }
1805
+
1806
+ .anlyx-relationship-list span:last-child {
1807
+ overflow-wrap: anywhere;
1808
+ font-weight: 650;
1809
+ }
1810
+
1811
+ .anlyx-storyboard-panel {
1812
+ display: grid;
1813
+ min-width: 0;
1814
+ gap: 12px;
1815
+ padding: 18px;
1816
+ box-shadow: var(--anlyx-shadow-card);
1817
+ }
1818
+
1819
+ .anlyx-storyboard-section-heading {
1820
+ display: flex;
1821
+ align-items: center;
1822
+ justify-content: space-between;
1823
+ gap: 12px;
1824
+ }
1825
+
1826
+ .anlyx-storyboard-section-heading h2,
1827
+ .anlyx-capture-state h2 {
1828
+ margin: 0;
1829
+ font-size: 16px;
1830
+ line-height: 1.25;
1831
+ }
1832
+
1833
+ .anlyx-storyboard-section-heading span {
1834
+ color: var(--anlyx-color-text-secondary);
1835
+ font-size: 12px;
1836
+ font-weight: 700;
1837
+ }
1838
+
1839
+ .anlyx-segment-grid {
1840
+ display: grid;
1841
+ grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
1842
+ gap: 12px;
1843
+ }
1844
+
1845
+ .anlyx-segment-card {
1846
+ display: grid;
1847
+ overflow: hidden;
1848
+ border: 1px solid var(--anlyx-color-border);
1849
+ border-left: 4px solid #3b82f6;
1850
+ border-radius: var(--anlyx-radius);
1851
+ background: var(--anlyx-color-panel);
1852
+ box-shadow: 0 10px 24px rgb(15 23 42 / 6%);
1853
+ }
1854
+
1855
+ .anlyx-segment-card--placeholder {
1856
+ border-left-color: var(--anlyx-color-method-update);
1857
+ background: linear-gradient(180deg, #ffffff, #fffaf2);
1858
+ }
1859
+
1860
+ .anlyx-segment-card__image {
1861
+ display: grid;
1862
+ min-height: 128px;
1863
+ place-items: center;
1864
+ overflow: hidden;
1865
+ border-bottom: 1px solid var(--anlyx-color-border);
1866
+ background:
1867
+ linear-gradient(135deg, rgb(37 99 235 / 8%) 25%, transparent 25%) 0 0 / 18px 18px,
1868
+ linear-gradient(135deg, transparent 75%, rgb(37 99 235 / 8%) 75%) 0 0 / 18px 18px,
1869
+ #f8fafc;
1870
+ color: var(--anlyx-color-text-secondary);
1871
+ }
1872
+
1873
+ .anlyx-segment-card--placeholder .anlyx-segment-card__image span {
1874
+ display: grid;
1875
+ width: 34px;
1876
+ height: 34px;
1877
+ place-items: center;
1878
+ border-radius: 999px;
1879
+ background: #fff7ed;
1880
+ color: #c2410c;
1881
+ font-weight: 800;
1882
+ box-shadow: 0 0 0 7px rgb(249 115 22 / 10%);
1883
+ }
1884
+
1885
+ .anlyx-segment-card__image img {
1886
+ width: 100%;
1887
+ min-height: 120px;
1888
+ object-fit: cover;
1889
+ }
1890
+
1891
+ .anlyx-segment-card__body {
1892
+ display: grid;
1893
+ gap: 8px;
1894
+ padding: 12px;
1895
+ }
1896
+
1897
+ .anlyx-segment-card__body h3,
1898
+ .anlyx-segment-card__body p {
1899
+ margin: 0;
1900
+ }
1901
+
1902
+ .anlyx-segment-card__body code {
1903
+ overflow-wrap: anywhere;
1904
+ color: var(--anlyx-color-text-secondary);
1905
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
1906
+ font-size: 12px;
1907
+ }
1908
+
1909
+ .anlyx-api-call__endpoint {
1910
+ display: grid;
1911
+ gap: 4px;
1912
+ min-width: 0;
1913
+ padding: 9px;
1914
+ border: 1px dashed #cbd5e1;
1915
+ border-radius: 8px;
1916
+ background: #f8fafc;
1917
+ }
1918
+
1919
+ .anlyx-api-call__endpoint span {
1920
+ color: var(--anlyx-color-text-secondary);
1921
+ font-size: 10px;
1922
+ font-weight: 900;
1923
+ text-transform: uppercase;
1924
+ }
1925
+
1926
+ .anlyx-api-call__endpoint strong,
1927
+ .anlyx-api-call__endpoint em {
1928
+ overflow-wrap: anywhere;
1929
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
1930
+ font-size: 12px;
1931
+ line-height: 1.35;
1932
+ }
1933
+
1934
+ .anlyx-api-call__endpoint strong {
1935
+ color: var(--anlyx-color-text-primary);
1936
+ }
1937
+
1938
+ .anlyx-api-call__endpoint em {
1939
+ color: var(--anlyx-color-text-secondary);
1940
+ font-style: normal;
1941
+ }
1942
+
1943
+ .anlyx-segment-card__meta,
1944
+ .anlyx-api-call__meta {
1945
+ display: flex;
1946
+ flex-wrap: wrap;
1947
+ gap: 8px;
1948
+ }
1949
+
1950
+ .anlyx-segment-card__meta span {
1951
+ color: var(--anlyx-color-text-secondary);
1952
+ font-size: 12px;
1953
+ font-weight: 650;
1954
+ }
1955
+
1956
+ .anlyx-api-call-list {
1957
+ display: grid;
1958
+ gap: 10px;
1959
+ padding: 0;
1960
+ margin: 0;
1961
+ list-style: none;
1962
+ }
1963
+
1964
+ .anlyx-api-call {
1965
+ display: grid;
1966
+ gap: 8px;
1967
+ padding: 11px 12px;
1968
+ border: 1px solid var(--anlyx-color-border);
1969
+ border-radius: var(--anlyx-radius);
1970
+ background: linear-gradient(180deg, #ffffff, #fbfcff);
1971
+ }
1972
+
1973
+ .anlyx-api-call__line {
1974
+ display: flex;
1975
+ align-items: center;
1976
+ gap: 8px;
1977
+ min-width: 0;
1978
+ }
1979
+
1980
+ .anlyx-api-call__path {
1981
+ overflow-wrap: anywhere;
1982
+ font-weight: 650;
1983
+ }
1984
+
1985
+ .anlyx-capture-state {
1986
+ display: grid;
1987
+ gap: 8px;
1988
+ padding: 16px 18px;
1989
+ border-left: 4px solid var(--anlyx-color-method-update);
1990
+ background:
1991
+ linear-gradient(180deg, rgb(255 255 255 / 96%), rgb(255 250 242 / 88%)),
1992
+ radial-gradient(circle at 0% 0%, rgb(245 158 11 / 12%), transparent 34%);
1993
+ }
1994
+
1995
+ .anlyx-capture-state--failed {
1996
+ border-left-color: var(--anlyx-color-method-delete);
1997
+ }
1998
+
1999
+ .anlyx-capture-state p {
2000
+ margin: 0;
2001
+ color: var(--anlyx-color-text-secondary);
2002
+ }
2003
+
2004
+ .anlyx-storyboard-empty {
2005
+ display: grid;
2006
+ min-height: 360px;
2007
+ place-items: center;
2008
+ color: var(--anlyx-color-text-secondary);
2009
+ }
2010
+
2011
+ .anlyx-empty-inline {
2012
+ margin: 0;
2013
+ color: var(--anlyx-color-text-secondary);
2014
+ }
2015
+
2016
+ .anlyx-inspector {
2017
+ grid-column: 5;
2018
+ grid-row: 1;
2019
+ overflow: auto;
2020
+ min-width: 0;
2021
+ min-height: 0;
2022
+ border-left: 1px solid var(--anlyx-color-border);
2023
+ background: #fbfcff;
2024
+ box-shadow: -12px 0 34px rgb(15 23 42 / 3%);
2025
+ }
2026
+
2027
+ .anlyx-inspector-stack {
2028
+ display: grid;
2029
+ gap: 12px;
2030
+ padding: 14px;
2031
+ }
2032
+
2033
+ .anlyx-field,
2034
+ .anlyx-inspector-group {
2035
+ display: grid;
2036
+ gap: 8px;
2037
+ }
2038
+
2039
+ .anlyx-inspector-group {
2040
+ padding: 14px;
2041
+ border: 1px solid var(--anlyx-color-border);
2042
+ border-radius: var(--anlyx-radius);
2043
+ background: #ffffff;
2044
+ box-shadow: var(--anlyx-shadow-panel);
2045
+ }
2046
+
2047
+ .anlyx-inspector-group h3,
2048
+ .anlyx-inspector-group p,
2049
+ .anlyx-inspector-group ul {
2050
+ margin: 0;
2051
+ }
2052
+
2053
+ .anlyx-inspector-group h3 {
2054
+ color: #334155;
2055
+ font-size: 13px;
2056
+ font-weight: 800;
2057
+ }
2058
+
2059
+ .anlyx-inspector-group__heading {
2060
+ display: flex;
2061
+ align-items: center;
2062
+ justify-content: space-between;
2063
+ gap: 12px;
2064
+ }
2065
+
2066
+ .anlyx-copy-button {
2067
+ min-height: 26px;
2068
+ padding: 0 9px;
2069
+ border: 1px solid var(--anlyx-color-border);
2070
+ border-radius: 999px;
2071
+ background: #f8fafc;
2072
+ color: var(--anlyx-color-text-secondary);
2073
+ font: inherit;
2074
+ font-size: 12px;
2075
+ font-weight: 700;
2076
+ cursor: pointer;
2077
+ }
2078
+
2079
+ .anlyx-inspector-note {
2080
+ color: var(--anlyx-color-text-secondary);
2081
+ font-size: 12px;
2082
+ }
2083
+
2084
+ .anlyx-field__value {
2085
+ overflow: hidden;
2086
+ text-overflow: ellipsis;
2087
+ }
2088
+
2089
+ .anlyx-inspector-group ul {
2090
+ padding-left: 18px;
2091
+ }
2092
+
2093
+ .anlyx-evidence-list,
2094
+ .anlyx-call-list {
2095
+ display: grid;
2096
+ gap: 8px;
2097
+ padding: 0;
2098
+ list-style: none;
2099
+ }
2100
+
2101
+ .anlyx-evidence-list li,
2102
+ .anlyx-call-list li {
2103
+ display: grid;
2104
+ grid-template-columns: auto minmax(0, 1fr) auto;
2105
+ align-items: center;
2106
+ gap: 9px;
2107
+ min-width: 0;
2108
+ padding: 9px;
2109
+ border: 1px solid #e7edf6;
2110
+ border-radius: 8px;
2111
+ background: #fbfcff;
2112
+ }
2113
+
2114
+ .anlyx-evidence-list svg {
2115
+ color: var(--anlyx-color-confidence-high);
2116
+ }
2117
+
2118
+ .anlyx-evidence-list span,
2119
+ .anlyx-call-list span {
2120
+ display: grid;
2121
+ min-width: 0;
2122
+ gap: 2px;
2123
+ }
2124
+
2125
+ .anlyx-evidence-list strong {
2126
+ overflow: hidden;
2127
+ color: var(--anlyx-color-text-primary);
2128
+ font-size: 12px;
2129
+ text-overflow: ellipsis;
2130
+ white-space: nowrap;
2131
+ }
2132
+
2133
+ .anlyx-evidence-list em {
2134
+ overflow-wrap: anywhere;
2135
+ color: var(--anlyx-color-text-secondary);
2136
+ font-size: 11px;
2137
+ font-style: normal;
2138
+ line-height: 1.35;
2139
+ }
2140
+
2141
+ .anlyx-call-list li {
2142
+ grid-template-columns: minmax(0, 1fr) auto;
2143
+ }
2144
+
2145
+ .anlyx-call-list span {
2146
+ overflow: hidden;
2147
+ color: var(--anlyx-color-text-primary);
2148
+ font-size: 12px;
2149
+ font-weight: 650;
2150
+ text-overflow: ellipsis;
2151
+ white-space: nowrap;
2152
+ }
2153
+
2154
+ .anlyx-metadata {
2155
+ overflow: auto;
2156
+ max-width: 100%;
2157
+ margin: 0;
2158
+ padding: 12px;
2159
+ border: 1px solid var(--anlyx-color-border);
2160
+ border-radius: 8px;
2161
+ background: #f7f9fd;
2162
+ color: var(--anlyx-color-text-secondary);
2163
+ font-size: 12px;
2164
+ }
2165
+
2166
+ .anlyx-shape-json {
2167
+ max-height: 220px;
2168
+ overflow-wrap: normal;
2169
+ white-space: pre;
2170
+ }
2171
+
2172
+ .anlyx-empty {
2173
+ padding: 20px;
2174
+ color: var(--anlyx-color-text-secondary);
2175
+ }
2176
+
2177
+ .anlyx-replay {
2178
+ display: grid;
2179
+ gap: 16px;
2180
+ padding: 14px 20px;
2181
+ border-bottom: 1px solid var(--anlyx-color-border);
2182
+ background: rgb(255 255 255 / 86%);
2183
+ backdrop-filter: blur(14px);
2184
+ }
2185
+
2186
+ .anlyx-replay__top {
2187
+ display: flex;
2188
+ align-items: center;
2189
+ justify-content: space-between;
2190
+ gap: 16px;
2191
+ }
2192
+
2193
+ .anlyx-process-view {
2194
+ display: grid;
2195
+ overflow: hidden;
2196
+ min-width: 0;
2197
+ min-height: 0;
2198
+ grid-template-rows: auto minmax(0, 1fr) auto;
2199
+ }
2200
+
2201
+ .anlyx-replay__buttons {
2202
+ display: flex;
2203
+ flex-wrap: wrap;
2204
+ gap: 8px;
2205
+ }
2206
+
2207
+ .anlyx-replay button {
2208
+ display: inline-flex;
2209
+ align-items: center;
2210
+ justify-content: center;
2211
+ gap: 7px;
2212
+ min-height: 38px;
2213
+ padding: 0 14px;
2214
+ font-weight: 700;
2215
+ }
2216
+
2217
+ .anlyx-replay button svg {
2218
+ flex: 0 0 auto;
2219
+ }
2220
+
2221
+ .anlyx-replay .anlyx-replay__button--primary {
2222
+ border-color: #1d4ed8;
2223
+ background: linear-gradient(180deg, #2f7df4, #125de0);
2224
+ color: #ffffff;
2225
+ box-shadow:
2226
+ 0 12px 24px rgb(37 99 235 / 22%),
2227
+ inset 0 1px 0 rgb(255 255 255 / 22%);
2228
+ }
2229
+
2230
+ .anlyx-replay button[aria-pressed="true"] {
2231
+ border-color: #0891b2;
2232
+ color: #0e7490;
2233
+ }
2234
+
2235
+ .anlyx-replay button:disabled {
2236
+ cursor: not-allowed;
2237
+ opacity: 0.48;
2238
+ }
2239
+
2240
+ .anlyx-replay__state {
2241
+ flex-wrap: wrap;
2242
+ justify-content: flex-end;
2243
+ color: var(--anlyx-color-text-secondary);
2244
+ font-size: 12px;
2245
+ font-weight: 700;
2246
+ }
2247
+
2248
+ .anlyx-replay__state label {
2249
+ display: inline-flex;
2250
+ align-items: center;
2251
+ gap: 6px;
2252
+ padding: 4px 8px;
2253
+ border: 1px solid var(--anlyx-color-border);
2254
+ border-radius: 999px;
2255
+ background: #f8fbff;
2256
+ }
2257
+
2258
+ .anlyx-replay__state span {
2259
+ padding: 4px 8px;
2260
+ border: 1px solid var(--anlyx-color-border);
2261
+ border-radius: 999px;
2262
+ background: #eef5ff;
2263
+ color: #1d4ed8;
2264
+ }
2265
+
2266
+ .anlyx-replay__empty {
2267
+ max-width: 300px;
2268
+ margin: 0;
2269
+ color: var(--anlyx-color-text-secondary);
2270
+ font-size: 12px;
2271
+ }
2272
+
2273
+ .anlyx-replay__focus {
2274
+ display: grid;
2275
+ align-items: center;
2276
+ min-width: 0;
2277
+ grid-template-columns: minmax(220px, 0.75fr) minmax(280px, 1fr);
2278
+ gap: 16px;
2279
+ padding: 12px;
2280
+ border: 1px solid #d9e6ff;
2281
+ border-radius: 8px;
2282
+ background:
2283
+ linear-gradient(90deg, rgb(37 99 235 / 8%), rgb(124 58 237 / 5%) 52%, rgb(20 184 166 / 7%)),
2284
+ #ffffff;
2285
+ box-shadow: inset 0 1px 0 rgb(255 255 255 / 70%);
2286
+ }
2287
+
2288
+ .anlyx-replay__focus strong {
2289
+ display: block;
2290
+ overflow: hidden;
2291
+ margin-top: 4px;
2292
+ color: var(--anlyx-color-text-primary);
2293
+ font-size: 13px;
2294
+ text-overflow: ellipsis;
2295
+ white-space: nowrap;
2296
+ }
2297
+
2298
+ .anlyx-replay__focus p {
2299
+ overflow: hidden;
2300
+ margin: 4px 0 0;
2301
+ color: var(--anlyx-color-text-secondary);
2302
+ font-size: 12px;
2303
+ font-weight: 650;
2304
+ line-height: 1.35;
2305
+ text-overflow: ellipsis;
2306
+ white-space: nowrap;
2307
+ }
2308
+
2309
+ .anlyx-replay__phase {
2310
+ color: #1d4ed8;
2311
+ font-size: 11px;
2312
+ font-weight: 800;
2313
+ letter-spacing: 0;
2314
+ text-transform: uppercase;
2315
+ }
2316
+
2317
+ .anlyx-replay__rail {
2318
+ display: grid;
2319
+ align-items: center;
2320
+ min-width: 0;
2321
+ grid-auto-columns: minmax(28px, 1fr);
2322
+ grid-auto-flow: column;
2323
+ gap: 6px;
2324
+ margin: 0;
2325
+ padding: 0;
2326
+ list-style: none;
2327
+ }
2328
+
2329
+ .anlyx-replay__rail li {
2330
+ position: relative;
2331
+ z-index: 0;
2332
+ display: flex;
2333
+ align-items: center;
2334
+ justify-content: center;
2335
+ min-width: 0;
2336
+ height: 24px;
2337
+ border: 1px solid #cbdcf8;
2338
+ border-radius: 999px;
2339
+ background: #f8fbff;
2340
+ color: #64748b;
2341
+ font-size: 10px;
2342
+ font-weight: 800;
2343
+ }
2344
+
2345
+ .anlyx-replay__rail li::before {
2346
+ position: absolute;
2347
+ z-index: 0;
2348
+ right: calc(50% + 12px);
2349
+ left: -10px;
2350
+ height: 2px;
2351
+ background: #dbeafe;
2352
+ content: "";
2353
+ }
2354
+
2355
+ .anlyx-replay__rail li span {
2356
+ position: relative;
2357
+ z-index: 1;
2358
+ }
2359
+
2360
+ .anlyx-replay__rail li:first-child::before {
2361
+ content: none;
2362
+ }
2363
+
2364
+ .anlyx-replay__rail-step--active {
2365
+ border-color: #2563eb !important;
2366
+ background: #2563eb !important;
2367
+ color: #ffffff !important;
2368
+ box-shadow:
2369
+ 0 0 0 4px rgb(37 99 235 / 12%),
2370
+ 0 10px 18px rgb(37 99 235 / 20%);
2371
+ }
2372
+
2373
+ .anlyx-process-timeline {
2374
+ display: grid;
2375
+ gap: 12px;
2376
+ padding: 14px 20px 18px;
2377
+ border-top: 1px solid var(--anlyx-color-border);
2378
+ background: rgb(255 255 255 / 92%);
2379
+ box-shadow: 0 -10px 28px rgb(15 23 42 / 4%);
2380
+ }
2381
+
2382
+ .anlyx-process-timeline__header {
2383
+ display: flex;
2384
+ justify-content: space-between;
2385
+ gap: 16px;
2386
+ color: var(--anlyx-color-text-secondary);
2387
+ font-size: 12px;
2388
+ font-weight: 700;
2389
+ text-transform: uppercase;
2390
+ }
2391
+
2392
+ .anlyx-process-timeline__rail {
2393
+ display: flex;
2394
+ gap: 10px;
2395
+ overflow-x: auto;
2396
+ padding: 0 0 4px;
2397
+ margin: 0;
2398
+ list-style: none;
2399
+ }
2400
+
2401
+ .anlyx-process-step {
2402
+ position: relative;
2403
+ display: grid;
2404
+ min-width: 152px;
2405
+ gap: 4px;
2406
+ padding: 11px 12px;
2407
+ border: 1px solid var(--anlyx-color-border);
2408
+ border-radius: var(--anlyx-radius);
2409
+ background: var(--anlyx-color-panel);
2410
+ color: var(--anlyx-color-text-secondary);
2411
+ }
2412
+
2413
+ .anlyx-process-step--request {
2414
+ border-top: 3px solid var(--anlyx-color-request);
2415
+ }
2416
+
2417
+ .anlyx-process-step--response {
2418
+ border-top: 3px solid var(--anlyx-color-response);
2419
+ }
2420
+
2421
+ .anlyx-process-step--complete-stop {
2422
+ border-top: 3px solid var(--anlyx-color-database);
2423
+ background: linear-gradient(180deg, #ffffff, #f3fffb);
2424
+ }
2425
+
2426
+ .anlyx-process-step--complete {
2427
+ opacity: 0.72;
2428
+ }
2429
+
2430
+ .anlyx-process-step--active {
2431
+ color: var(--anlyx-color-text-primary);
2432
+ border-color: #82aefc;
2433
+ box-shadow:
2434
+ 0 0 0 5px rgb(37 99 235 / 9%),
2435
+ 0 14px 30px rgb(37 99 235 / 14%);
2436
+ transform: translateY(-1px);
2437
+ }
2438
+
2439
+ .anlyx-process-step__dot {
2440
+ position: absolute;
2441
+ top: -8px;
2442
+ left: 12px;
2443
+ display: grid;
2444
+ width: 10px;
2445
+ height: 10px;
2446
+ place-items: center;
2447
+ border-radius: 999px;
2448
+ background: var(--anlyx-color-request);
2449
+ color: #ffffff;
2450
+ box-shadow: 0 0 0 4px rgb(37 99 235 / 14%);
2451
+ }
2452
+
2453
+ .anlyx-process-step--response .anlyx-process-step__dot {
2454
+ background: var(--anlyx-color-response);
2455
+ box-shadow: 0 0 0 4px rgb(139 92 246 / 14%);
2456
+ }
2457
+
2458
+ .anlyx-process-step--active .anlyx-process-step__dot {
2459
+ animation: anlyx-node-pulse 1s ease-in-out infinite;
2460
+ }
2461
+
2462
+ .anlyx-process-step__phase,
2463
+ .anlyx-process-step__label {
2464
+ font-size: 11px;
2465
+ font-weight: 800;
2466
+ text-transform: uppercase;
2467
+ }
2468
+
2469
+ .anlyx-process-step__node {
2470
+ overflow: hidden;
2471
+ color: var(--anlyx-color-text-primary);
2472
+ font-size: 12px;
2473
+ font-weight: 650;
2474
+ text-overflow: ellipsis;
2475
+ white-space: nowrap;
2476
+ }
2477
+
2478
+ .anlyx-generated-at {
2479
+ position: fixed;
2480
+ right: 20px;
2481
+ bottom: 12px;
2482
+ font-size: 12px;
2483
+ pointer-events: none;
2484
+ }
2485
+
2486
+ .anlyx-status-badge {
2487
+ display: inline-flex;
2488
+ align-items: center;
2489
+ width: fit-content;
2490
+ min-height: 22px;
2491
+ gap: 4px;
2492
+ padding: 2px 7px;
2493
+ border: 1px solid var(--anlyx-color-border);
2494
+ border-radius: 999px;
2495
+ background: var(--anlyx-color-panel);
2496
+ color: var(--anlyx-color-text-secondary);
2497
+ font-size: 12px;
2498
+ font-weight: 700;
2499
+ line-height: 1;
2500
+ }
2501
+
2502
+ .anlyx-status-badge__label {
2503
+ color: var(--anlyx-color-text-secondary);
2504
+ font-weight: 600;
2505
+ }
2506
+
2507
+ .anlyx-status-badge--get,
2508
+ .anlyx-status-badge--success,
2509
+ .anlyx-status-badge--high,
2510
+ .anlyx-status-badge--observed,
2511
+ .anlyx-status-badge--measured,
2512
+ .anlyx-status-badge--source-matched {
2513
+ border-color: #b7ead8;
2514
+ background: #eefdf7;
2515
+ color: var(--anlyx-color-method-get);
2516
+ }
2517
+
2518
+ .anlyx-status-badge--post {
2519
+ border-color: #bfdbfe;
2520
+ background: #eff6ff;
2521
+ color: var(--anlyx-color-method-post);
2522
+ }
2523
+
2524
+ .anlyx-status-badge--put,
2525
+ .anlyx-status-badge--patch,
2526
+ .anlyx-status-badge--pending,
2527
+ .anlyx-status-badge--medium,
2528
+ .anlyx-status-badge--manual {
2529
+ border-color: #fed7aa;
2530
+ background: #fff7ed;
2531
+ color: var(--anlyx-color-method-update);
2532
+ }
2533
+
2534
+ .anlyx-status-badge--delete,
2535
+ .anlyx-status-badge--failed,
2536
+ .anlyx-status-badge--low,
2537
+ .anlyx-status-badge--agent-inferred,
2538
+ .anlyx-status-badge--not-proven {
2539
+ border-color: #fecaca;
2540
+ background: #fff1f2;
2541
+ color: var(--anlyx-color-method-delete);
2542
+ }
2543
+
2544
+ .anlyx-status-badge--unknown,
2545
+ .anlyx-status-badge--neutral {
2546
+ border-color: #d9e1ee;
2547
+ background: #f8fafc;
2548
+ color: var(--anlyx-color-confidence-unknown);
2549
+ }
2550
+
2551
+ @media (max-width: 960px) {
2552
+ .anlyx-shell {
2553
+ grid-template-columns: 1fr !important;
2554
+ grid-template-rows: auto minmax(520px, 1fr) auto;
2555
+ overflow: auto;
2556
+ }
2557
+
2558
+ .anlyx-sidebar,
2559
+ .anlyx-inspector {
2560
+ grid-column: auto;
2561
+ grid-row: auto;
2562
+ overflow: visible;
2563
+ border-right: 0;
2564
+ border-left: 0;
2565
+ }
2566
+
2567
+ .anlyx-resize-handle {
2568
+ display: none;
2569
+ }
2570
+
2571
+ .anlyx-sidebar__list-region,
2572
+ .anlyx-page-storyboard,
2573
+ .anlyx-inspector {
2574
+ overflow: visible;
2575
+ }
2576
+
2577
+ .anlyx-generated-at {
2578
+ position: static;
2579
+ padding: 12px 20px;
2580
+ }
2581
+
2582
+ .anlyx-page-summary,
2583
+ .anlyx-storyboard-grid {
2584
+ grid-template-columns: 1fr;
2585
+ }
2586
+
2587
+ .anlyx-page-evidence-board {
2588
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2589
+ }
2590
+
2591
+ .anlyx-replay__top {
2592
+ align-items: flex-start;
2593
+ flex-direction: column;
2594
+ }
2595
+
2596
+ .anlyx-replay__state {
2597
+ justify-content: flex-start;
2598
+ }
2599
+
2600
+ .anlyx-replay__focus {
2601
+ grid-template-columns: 1fr;
2602
+ }
2603
+
2604
+ .anlyx-replay__rail {
2605
+ grid-auto-flow: row;
2606
+ grid-template-columns: repeat(6, minmax(28px, 1fr));
2607
+ }
2608
+ }
2609
+
2610
+ @media (max-width: 760px) {
2611
+ .anlyx-page-evidence-board {
2612
+ grid-template-columns: 1fr;
2613
+ }
2614
+
2615
+ .anlyx-replay__rail {
2616
+ grid-template-columns: repeat(3, minmax(28px, 1fr));
2617
+ }
2618
+ }
2619
+
2620
+ @keyframes anlyx-flow-travel {
2621
+ from {
2622
+ stroke-dashoffset: 18;
2623
+ }
2624
+
2625
+ to {
2626
+ stroke-dashoffset: 0;
2627
+ }
2628
+ }
2629
+
2630
+ @keyframes anlyx-node-pulse {
2631
+ 0%,
2632
+ 100% {
2633
+ transform: scale(1);
2634
+ }
2635
+
2636
+ 50% {
2637
+ transform: scale(1.015);
2638
+ }
2639
+ }