@typeonce/effect-machine-devtools 0.24.0 → 0.25.0

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 (80) hide show
  1. package/NOTICE +4 -0
  2. package/README.md +11 -11
  3. package/dist/DevToolsProtocol.d.ts +66 -630
  4. package/dist/DevToolsProtocol.d.ts.map +1 -1
  5. package/dist/DevToolsProtocol.js +0 -190
  6. package/dist/DevToolsProtocol.js.map +1 -1
  7. package/dist/MachineDocument.d.ts +38 -18
  8. package/dist/MachineDocument.d.ts.map +1 -1
  9. package/dist/MachineDocument.js +14 -12
  10. package/dist/MachineDocument.js.map +1 -1
  11. package/dist/MachineRegistry.d.ts +22 -2
  12. package/dist/MachineRegistry.d.ts.map +1 -1
  13. package/dist/MachineWalkthrough.d.ts +171 -0
  14. package/dist/MachineWalkthrough.d.ts.map +1 -0
  15. package/dist/MachineWalkthrough.js +98 -0
  16. package/dist/MachineWalkthrough.js.map +1 -0
  17. package/dist/ProjectInspector.d.ts +0 -2
  18. package/dist/ProjectInspector.d.ts.map +1 -1
  19. package/dist/ProjectInspector.js.map +1 -1
  20. package/dist/client/assets/index-BTOAhezX.js +37 -0
  21. package/dist/client/assets/index-Cg7xzSkz.css +1 -0
  22. package/dist/client/index.html +4 -4
  23. package/dist/index.d.ts +2 -2
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +2 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/internal/devServer.d.ts.map +1 -1
  28. package/dist/internal/devServer.js +4 -64
  29. package/dist/internal/devServer.js.map +1 -1
  30. package/dist/internal/evaluationWorker.d.ts.map +1 -1
  31. package/dist/internal/evaluationWorker.js +7 -263
  32. package/dist/internal/evaluationWorker.js.map +1 -1
  33. package/dist/internal/machineDocument.d.ts.map +1 -1
  34. package/dist/internal/machineDocument.js +3 -1
  35. package/dist/internal/machineDocument.js.map +1 -1
  36. package/dist/internal/machineWalkthrough.d.ts +26 -0
  37. package/dist/internal/machineWalkthrough.d.ts.map +1 -0
  38. package/dist/internal/machineWalkthrough.js +256 -0
  39. package/dist/internal/machineWalkthrough.js.map +1 -0
  40. package/dist/internal/projectInspector.d.ts.map +1 -1
  41. package/dist/internal/projectInspector.js +1 -11
  42. package/dist/internal/projectInspector.js.map +1 -1
  43. package/index.html +2 -2
  44. package/package.json +4 -3
  45. package/src/DevToolsProtocol.ts +0 -285
  46. package/src/MachineDocument.ts +21 -19
  47. package/src/MachineWalkthrough.ts +199 -0
  48. package/src/ProjectInspector.ts +0 -5
  49. package/src/index.ts +2 -2
  50. package/src/internal/browser/chart-layout.ts +433 -0
  51. package/src/internal/browser/chart-model.ts +234 -0
  52. package/src/internal/browser/chart-renderer.ts +661 -0
  53. package/src/internal/browser/example-machine.ts +15 -6
  54. package/src/internal/browser/input-form.ts +1 -418
  55. package/src/internal/browser/invoke-outcomes-example.ts +231 -0
  56. package/src/internal/browser/parallel-completion-example.ts +199 -0
  57. package/src/internal/browser/planner-example.ts +2 -0
  58. package/src/internal/browser/protocol-events-example.ts +200 -0
  59. package/src/internal/browser/styles.css +795 -341
  60. package/src/internal/browser/transition-semantics-example.ts +236 -0
  61. package/src/internal/browser/visualizer-app.ts +781 -713
  62. package/src/internal/browser/visualizer-model.ts +104 -0
  63. package/src/internal/devServer.ts +4 -82
  64. package/src/internal/evaluationWorker.ts +7 -371
  65. package/src/internal/machineDocument.ts +3 -1
  66. package/src/internal/machineWalkthrough.ts +355 -0
  67. package/src/internal/projectInspector.ts +3 -31
  68. package/dist/MachineSimulator.d.ts +0 -169
  69. package/dist/MachineSimulator.d.ts.map +0 -1
  70. package/dist/MachineSimulator.js +0 -98
  71. package/dist/MachineSimulator.js.map +0 -1
  72. package/dist/client/assets/index-B49Tjawc.js +0 -14
  73. package/dist/client/assets/index-BKH0cOG2.css +0 -1
  74. package/dist/internal/machineSimulator.d.ts +0 -5
  75. package/dist/internal/machineSimulator.d.ts.map +0 -1
  76. package/dist/internal/machineSimulator.js +0 -156
  77. package/dist/internal/machineSimulator.js.map +0 -1
  78. package/src/MachineSimulator.ts +0 -154
  79. package/src/internal/browser/simulation-client.ts +0 -20
  80. package/src/internal/machineSimulator.ts +0 -199
@@ -23,7 +23,7 @@ html,
23
23
  body,
24
24
  #app {
25
25
  min-width: 320px;
26
- min-height: 100%;
26
+ height: 100%;
27
27
  margin: 0;
28
28
  }
29
29
 
@@ -32,27 +32,40 @@ body {
32
32
  }
33
33
 
34
34
  .devtools-shell {
35
- display: grid;
36
- min-height: 100vh;
37
- grid-template-columns: 220px minmax(0, 1fr);
35
+ display: flex;
36
+ width: 100vw;
37
+ height: 100vh;
38
+ flex-direction: column;
39
+ overflow: hidden;
38
40
  }
39
41
 
40
42
  .machine-index {
43
+ display: flex;
44
+ width: 100%;
41
45
  min-width: 0;
42
- height: 100vh;
43
- padding: 8px 0;
44
- border-right: 1px solid var(--line);
46
+ min-height: 48px;
47
+ flex: 0 0 auto;
48
+ padding: 0;
49
+ border-bottom: 1px solid var(--line);
45
50
  background: #0d0f12;
46
- overflow: auto;
51
+ overflow-x: auto;
52
+ overflow-y: hidden;
53
+ scrollbar-width: thin;
47
54
  }
48
55
 
49
56
  .machine-row {
50
- display: grid;
51
- width: 100%;
52
- grid-template-columns: 8px minmax(0, 1fr);
53
- gap: 3px 8px;
54
- padding: 10px 12px;
57
+ position: relative;
58
+ display: flex;
59
+ width: auto;
60
+ max-width: 280px;
61
+ min-width: 148px;
62
+ min-height: 48px;
63
+ flex: 0 0 auto;
64
+ align-items: center;
65
+ gap: 8px;
66
+ padding: 0 16px;
55
67
  border: 0;
68
+ border-right: 1px solid var(--line-soft);
56
69
  color: #c9cdd2;
57
70
  background: transparent;
58
71
  text-align: left;
@@ -69,14 +82,23 @@ body {
69
82
 
70
83
  .machine-row.is-selected {
71
84
  color: #fff;
72
- background: rgb(75 125 255 / 18%);
85
+ background: rgb(75 125 255 / 12%);
86
+ }
87
+
88
+ .machine-row.is-selected::after {
89
+ position: absolute;
90
+ right: 0;
91
+ bottom: 0;
92
+ left: 0;
93
+ height: 2px;
94
+ background: var(--accent);
95
+ content: "";
73
96
  }
74
97
 
75
98
  .machine-row-status {
76
99
  width: 6px;
77
100
  height: 6px;
78
- align-self: center;
79
- grid-row: 1;
101
+ flex: 0 0 auto;
80
102
  border-radius: 50%;
81
103
  background: #646b75;
82
104
  }
@@ -102,24 +124,24 @@ body {
102
124
  }
103
125
 
104
126
  .machine-row-label {
105
- grid-column: 2;
106
127
  font: 600 12px/1.3 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
107
128
  }
108
129
 
109
130
  .machine-row-file {
110
- grid-column: 2;
111
- color: #727983;
112
- font: 10px/1.3 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
131
+ display: none;
113
132
  }
114
133
 
115
134
  .machine-index-empty {
116
- padding: 12px;
135
+ padding: 16px;
117
136
  color: #646b75;
118
137
  font: 11px/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
119
138
  }
120
139
 
121
140
  .machine-view {
122
141
  min-width: 0;
142
+ min-height: 0;
143
+ flex: 1;
144
+ overflow: hidden;
123
145
  }
124
146
 
125
147
  .registry-empty,
@@ -148,21 +170,22 @@ button {
148
170
 
149
171
  .app-shell,
150
172
  .workspace {
151
- min-height: 100vh;
173
+ width: 100%;
174
+ height: 100%;
175
+ min-height: 0;
152
176
  }
153
177
 
154
178
  .workspace {
155
- display: grid;
156
- height: 100vh;
157
- grid-template-columns: minmax(420px, 1fr) minmax(380px, 46%);
179
+ position: relative;
158
180
  }
159
181
 
160
- .tree-panel {
182
+ .chart-panel {
183
+ position: relative;
161
184
  display: flex;
185
+ width: 100%;
162
186
  min-width: 0;
163
- height: 100vh;
187
+ height: 100%;
164
188
  flex-direction: column;
165
- border-right: 1px solid var(--line);
166
189
  overflow: hidden;
167
190
  }
168
191
 
@@ -207,6 +230,7 @@ button {
207
230
  }
208
231
 
209
232
  .toolbar-actions,
233
+ .zoom-controls,
210
234
  .runtime-summary {
211
235
  display: flex;
212
236
  align-items: center;
@@ -216,6 +240,35 @@ button {
216
240
  gap: 2px;
217
241
  }
218
242
 
243
+ .zoom-controls {
244
+ position: absolute;
245
+ z-index: 5;
246
+ bottom: 14px;
247
+ left: 14px;
248
+ flex: 0 0 auto;
249
+ gap: 1px;
250
+ padding: 2px;
251
+ border: 1px solid var(--line-soft);
252
+ border-radius: 4px;
253
+ background: rgb(13 15 18 / 94%);
254
+ box-shadow: 0 8px 28px rgb(0 0 0 / 32%);
255
+ }
256
+
257
+ .chart-panel.has-walkthrough .zoom-controls {
258
+ bottom: 88px;
259
+ }
260
+
261
+ .zoom-button {
262
+ min-width: 28px;
263
+ padding-inline: 7px;
264
+ }
265
+
266
+ .zoom-value {
267
+ min-width: 46px;
268
+ color: #aeb4bd;
269
+ font: 10px/1 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
270
+ }
271
+
219
272
  .runtime-summary {
220
273
  gap: 7px;
221
274
  color: #7f8690;
@@ -255,175 +308,483 @@ button {
255
308
  cursor: default;
256
309
  }
257
310
 
258
- .topology-tree {
311
+ .topology-chart {
312
+ display: flex;
259
313
  flex: 1;
260
314
  min-height: 0;
261
- padding: 23px 18px 34px;
262
- overflow: auto;
315
+ flex-direction: column;
263
316
  font: 13px/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
264
317
  }
265
318
 
266
- .machine-id {
267
- margin: 0 8px 16px;
268
- color: #fff;
269
- font-weight: 700;
319
+ .topology-empty {
320
+ display: grid;
321
+ max-width: 420px;
322
+ gap: 7px;
323
+ margin: 26px 8px;
324
+ color: #7f8690;
325
+ font: 12px/1.6 Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
270
326
  }
271
327
 
272
- .enabled-events {
273
- display: flex;
274
- min-height: 32px;
275
- flex-wrap: wrap;
276
- align-items: center;
277
- gap: 6px;
278
- margin: 0 8px 14px;
279
- padding-bottom: 13px;
280
- border-bottom: 1px solid var(--line-soft);
328
+ .topology-empty strong {
329
+ color: #d4d7dc;
330
+ font: 600 13px/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
281
331
  }
282
332
 
283
- .enabled-events-label,
284
- .enabled-events-empty {
285
- color: #6f7680;
286
- font-size: 10px;
333
+ .chart-host,
334
+ .chart-viewport {
335
+ width: 100%;
336
+ height: 100%;
287
337
  }
288
338
 
289
- .enabled-events-label {
290
- margin-right: 3px;
291
- text-transform: uppercase;
339
+ .chart-host {
340
+ flex: 1;
341
+ min-height: 0;
342
+ position: relative;
292
343
  }
293
344
 
294
- .simulation-feedback {
295
- margin: -5px 8px 14px;
296
- color: #7f99c4;
297
- font: 10px/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
345
+ .chart-viewport {
346
+ overflow: auto;
347
+ overscroll-behavior: contain;
348
+ cursor: grab;
349
+ touch-action: pan-x pan-y;
298
350
  }
299
351
 
300
- .simulation-feedback[data-status="pending"] {
301
- color: #d9ae7e;
352
+ .chart-viewport.is-panning,
353
+ .chart-viewport.is-panning .chart-state,
354
+ .chart-viewport.is-panning .chart-edge-hit,
355
+ .chart-viewport.is-panning .chart-edge-label {
356
+ cursor: grabbing;
357
+ user-select: none;
302
358
  }
303
359
 
304
- .simulation-feedback[data-status="error"] {
305
- color: #d58d89;
360
+ .chart-stage {
361
+ position: relative;
362
+ min-width: 100%;
363
+ min-height: 100%;
306
364
  }
307
365
 
308
- .enabled-events[hidden],
309
- .simulation-feedback[hidden] {
310
- display: none;
366
+ .chart-canvas {
367
+ position: absolute;
368
+ top: 0;
369
+ left: 0;
370
+ transform-origin: top left;
311
371
  }
312
372
 
313
- .event-button {
314
- padding: 4px 7px;
315
- border: 0;
316
- border-radius: 3px;
317
- color: #aeb5bf;
318
- background: #1b1f25;
319
- font: 11px/1 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
320
- cursor: pointer;
373
+ .chart-regions,
374
+ .chart-edges,
375
+ .chart-nodes,
376
+ .chart-labels {
377
+ position: absolute;
378
+ inset: 0;
321
379
  }
322
380
 
323
- .event-button:hover,
324
- .event-button:focus-visible,
325
- .event-button.is-selected {
326
- color: #d9e6ff;
327
- background: rgb(75 125 255 / 22%);
328
- outline: none;
381
+ .chart-regions {
382
+ z-index: 0;
383
+ pointer-events: none;
329
384
  }
330
385
 
331
- .event-button:disabled {
332
- color: #666d76;
333
- cursor: wait;
386
+ .chart-edges {
387
+ z-index: 1;
388
+ overflow: visible;
389
+ pointer-events: none;
334
390
  }
335
391
 
336
- .topology-node {
337
- background: transparent;
392
+ .chart-nodes {
393
+ z-index: 2;
394
+ pointer-events: none;
338
395
  }
339
396
 
340
- .topology-empty {
341
- display: grid;
342
- max-width: 420px;
343
- gap: 7px;
344
- margin: 26px 8px;
345
- color: #7f8690;
346
- font: 12px/1.6 Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
397
+ .chart-labels {
398
+ z-index: 3;
399
+ pointer-events: none;
347
400
  }
348
401
 
349
- .topology-empty strong {
350
- color: #d4d7dc;
351
- font: 600 13px/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
402
+ .chart-compound {
403
+ position: absolute;
404
+ border: 1px solid #272c33;
405
+ border-radius: 5px;
406
+ background: rgb(18 21 25 / 72%);
352
407
  }
353
408
 
354
- .topology-node.is-selected {
355
- background: var(--accent-bg);
409
+ .chart-compound-parallel {
410
+ border-color: #303845;
411
+ background: rgb(20 24 30 / 74%);
356
412
  }
357
413
 
358
- .state-row {
359
- display: grid;
360
- width: 100%;
361
- min-height: 38px;
362
- grid-template-columns: 14px 10px minmax(90px, auto) 1fr;
363
- align-items: center;
364
- gap: 8px;
365
- padding: 6px 8px 6px calc(8px + var(--depth) * 22px);
366
- border: 0;
367
- color: #d7d9dc;
368
- background: transparent;
414
+ .chart-state {
415
+ position: absolute;
416
+ display: block;
417
+ padding: 16px;
418
+ border: 1px solid #30363f;
419
+ border-radius: 4px;
420
+ color: #d9dce1;
421
+ background: #14181d;
422
+ box-shadow: 0 4px 14px rgb(0 0 0 / 18%);
423
+ overflow: hidden;
369
424
  text-align: left;
370
425
  cursor: pointer;
426
+ pointer-events: auto;
371
427
  user-select: none;
372
428
  }
373
429
 
374
- .state-row:hover,
375
- .state-row:focus-visible {
376
- color: #fff;
377
- background: #1b1e23;
378
- outline: none;
430
+ .chart-state-compound,
431
+ .chart-state-parallel {
432
+ border-color: #353c47;
433
+ background: #171b21;
379
434
  }
380
435
 
381
- .state-row[aria-selected="true"] {
382
- color: #fff;
436
+ .chart-state-final {
437
+ border-color: #445066;
383
438
  }
384
439
 
385
- .topology-node.is-selected > .state-row {
386
- color: #fff;
440
+ .chart-state-history,
441
+ .chart-state-choice {
442
+ background: #18171d;
387
443
  }
388
444
 
389
- .topology-node.is-related-target > .state-row {
390
- background: rgb(75 125 255 / 15%);
445
+ .chart-state:not(:disabled):hover,
446
+ .chart-state:focus-visible {
447
+ border-color: #596475;
448
+ color: #fff;
449
+ outline: none;
391
450
  }
392
451
 
393
- .topology-node.is-related-source > .state-row {
394
- background: rgb(172 104 224 / 8%);
452
+ .chart-state-heading,
453
+ .chart-state-identity,
454
+ .chart-field-row,
455
+ .chart-activity-row {
456
+ display: flex;
457
+ min-width: 0;
458
+ align-items: center;
395
459
  }
396
460
 
397
- .topology-node.is-related-update > .state-row {
398
- background: rgb(240 163 91 / 8%);
461
+ .chart-state-heading {
462
+ justify-content: space-between;
463
+ gap: 12px;
399
464
  }
400
465
 
401
- .state-disclosure {
402
- color: #737a84;
403
- font-size: 11px;
466
+ .chart-state-identity {
467
+ gap: 8px;
404
468
  }
405
469
 
406
- .state-status {
470
+ .chart-state-status {
407
471
  width: 7px;
408
472
  height: 7px;
473
+ flex: 0 0 auto;
409
474
  border: 1px solid #686f78;
410
475
  border-radius: 50%;
411
476
  }
412
477
 
413
- .state-status.is-active {
478
+ .chart-state-status.is-active {
414
479
  border-color: var(--accent);
415
480
  background: var(--accent);
416
481
  box-shadow: 0 0 0 3px rgb(117 167 255 / 10%);
417
482
  }
418
483
 
419
- .state-label {
484
+ .chart-state-status.is-initial {
485
+ border-color: #d9a441;
486
+ background: #d9a441;
487
+ box-shadow: 0 0 0 3px rgb(217 164 65 / 12%);
488
+ }
489
+
490
+ .chart-state-status.is-active.is-initial {
491
+ box-shadow: 0 0 0 2px #14181d, 0 0 0 4px var(--accent);
492
+ }
493
+
494
+ .chart-state-name,
495
+ .chart-field-name,
496
+ .chart-activity-name {
420
497
  min-width: 0;
421
498
  overflow: hidden;
422
499
  text-overflow: ellipsis;
423
500
  white-space: nowrap;
424
501
  }
425
502
 
426
- .state-markers,
503
+ .chart-state-name {
504
+ font-size: 12px;
505
+ }
506
+
507
+ .chart-section-label,
508
+ .chart-field-type,
509
+ .chart-activity-kind,
510
+ .chart-more {
511
+ color: #7e8792;
512
+ font-size: 9px;
513
+ line-height: 1.3;
514
+ }
515
+
516
+ .chart-section-label,
517
+ .chart-activity-kind {
518
+ text-transform: uppercase;
519
+ }
520
+
521
+ .chart-state-section {
522
+ width: min(300px, 100%);
523
+ margin-top: 11px;
524
+ padding-top: 8px;
525
+ border-top: 1px solid #242a31;
526
+ }
527
+
528
+ .chart-section-label {
529
+ margin-bottom: 4px;
530
+ letter-spacing: 0.06em;
531
+ }
532
+
533
+ .chart-field-row,
534
+ .chart-activity-row {
535
+ display: grid;
536
+ min-height: 22px;
537
+ grid-template-columns: minmax(0, 1fr) auto;
538
+ gap: 10px;
539
+ }
540
+
541
+ .chart-activity-row {
542
+ grid-template-columns: auto minmax(0, 1fr);
543
+ }
544
+
545
+ .chart-field-name,
546
+ .chart-activity-name {
547
+ color: #c4c9d0;
548
+ font-size: 10px;
549
+ }
550
+
551
+ .chart-field-type,
552
+ .chart-activity-kind {
553
+ flex: 0 1 auto;
554
+ overflow: hidden;
555
+ text-overflow: ellipsis;
556
+ white-space: nowrap;
557
+ }
558
+
559
+ .chart-activity-kind {
560
+ min-width: max-content;
561
+ color: #77a990;
562
+ overflow: visible;
563
+ text-overflow: clip;
564
+ }
565
+
566
+ .chart-more {
567
+ min-height: 18px;
568
+ padding-top: 3px;
569
+ }
570
+
571
+ .chart-initial {
572
+ position: absolute;
573
+ border-radius: 50%;
574
+ background: #9ba3ae;
575
+ box-shadow: 0 0 0 3px rgb(155 163 174 / 8%);
576
+ pointer-events: none;
577
+ }
578
+
579
+ .chart-runtime-target {
580
+ position: absolute;
581
+ display: grid;
582
+ place-items: center;
583
+ border: 1px dashed #555d68;
584
+ border-radius: 3px;
585
+ color: #858d98;
586
+ background: #111419;
587
+ font: 9px/1 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
588
+ letter-spacing: 0.04em;
589
+ text-transform: uppercase;
590
+ pointer-events: none;
591
+ user-select: none;
592
+ }
593
+
594
+ .chart-edge-line,
595
+ .chart-edge-hit {
596
+ fill: none;
597
+ }
598
+
599
+ .chart-edge-line {
600
+ stroke: #626b77;
601
+ stroke-width: 1.4;
602
+ vector-effect: non-scaling-stroke;
603
+ }
604
+
605
+ .chart-edge-initial .chart-edge-line {
606
+ stroke: #89929e;
607
+ }
608
+
609
+ .chart-edge-hit {
610
+ stroke: transparent;
611
+ stroke-width: 14;
612
+ cursor: pointer;
613
+ pointer-events: stroke;
614
+ }
615
+
616
+ #chart-arrow path {
617
+ fill: context-stroke;
618
+ }
619
+
620
+ .chart-edge-label {
621
+ position: absolute;
622
+ padding: 4px 7px;
623
+ border: 1px solid #2c333c;
624
+ border-radius: 3px;
625
+ color: #c0c7d0;
626
+ background: #101318;
627
+ font: 10px/1 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
628
+ overflow: hidden;
629
+ text-overflow: ellipsis;
630
+ white-space: nowrap;
631
+ cursor: pointer;
632
+ pointer-events: auto;
633
+ user-select: none;
634
+ }
635
+
636
+ .chart-edge-label:not(:disabled):hover,
637
+ .chart-edge-label:focus-visible,
638
+ .chart-edge-group.is-hovered + .chart-edge-label {
639
+ border-color: #53657e;
640
+ color: #fff;
641
+ outline: none;
642
+ }
643
+
644
+ .chart-edge-label-always,
645
+ .chart-edge-label-choice,
646
+ .chart-edge-label-done {
647
+ color: #d4b4e9;
648
+ }
649
+
650
+ .chart-edge-group.is-hovered .chart-edge-line {
651
+ stroke: #7c9ed2;
652
+ stroke-width: 1.8;
653
+ }
654
+
655
+ .chart-edge-group.is-walkthrough-unavailable .chart-edge-line {
656
+ stroke: #6e675b;
657
+ stroke-dasharray: 5 5;
658
+ }
659
+
660
+ .chart-edge-group.chart-transition-runtime .chart-edge-line {
661
+ stroke-dasharray: 5 5;
662
+ }
663
+
664
+ .chart-edge-group.is-incoming .chart-edge-line {
665
+ stroke: #ed6a70;
666
+ stroke-width: 2;
667
+ }
668
+
669
+ .chart-edge-group.is-outgoing .chart-edge-line {
670
+ stroke: #6eb6dc;
671
+ stroke-width: 2;
672
+ }
673
+
674
+ .chart-edge-group.is-selected .chart-edge-line {
675
+ stroke: #8ab5ff;
676
+ stroke-width: 2.5;
677
+ }
678
+
679
+ .chart-edge-group.is-walkthrough-available .chart-edge-line {
680
+ stroke: #d5aa57;
681
+ stroke-width: 2;
682
+ }
683
+
684
+ .chart-edge-label.is-hovered {
685
+ border-color: #526783;
686
+ color: #dbe8ff;
687
+ }
688
+
689
+ .chart-edge-label.is-walkthrough-unavailable {
690
+ border-color: #4e4a43;
691
+ color: #8d8679;
692
+ background: #151412;
693
+ }
694
+
695
+ .chart-edge-label.is-incoming {
696
+ border-color: #a9484e;
697
+ color: #ffd0d2;
698
+ background: #251416;
699
+ }
700
+
701
+ .chart-edge-label.is-outgoing {
702
+ border-color: #47758d;
703
+ color: #c5e8f7;
704
+ background: #111c22;
705
+ }
706
+
707
+ .chart-edge-label.is-selected {
708
+ border-color: #719ce0;
709
+ color: #fff;
710
+ background: #18253a;
711
+ }
712
+
713
+ .chart-edge-label.is-walkthrough-available {
714
+ border-color: #8d713c;
715
+ color: #f0d39a;
716
+ background: #211b12;
717
+ }
718
+
719
+ .chart-state.is-selected,
720
+ .chart-compound.is-selected {
721
+ border-color: #5f88ca;
722
+ background: rgb(44 75 122 / 42%);
723
+ }
724
+
725
+ .chart-state.is-related-to,
726
+ .chart-compound.is-related-to,
727
+ .chart-state.is-hover-target,
728
+ .chart-compound.is-hover-target {
729
+ border-color: #4f829a;
730
+ background: rgb(48 112 140 / 24%);
731
+ }
732
+
733
+ .chart-state.is-related-from,
734
+ .chart-compound.is-related-from,
735
+ .chart-state.is-hover-source,
736
+ .chart-compound.is-hover-source {
737
+ border-color: #a94b52;
738
+ background: rgb(151 48 57 / 26%);
739
+ }
740
+
741
+ .chart-state.is-related-from.is-related-to,
742
+ .chart-compound.is-related-from.is-related-to {
743
+ border-color: #6e708f;
744
+ background: linear-gradient(135deg, rgb(151 48 57 / 28%) 0 50%, rgb(48 112 140 / 26%) 50% 100%);
745
+ }
746
+
747
+ .chart-viewport.is-simulating .chart-state:disabled,
748
+ .chart-viewport.is-simulating .chart-edge-label:disabled,
749
+ .chart-viewport.is-simulating .chart-edge-hit {
750
+ cursor: default;
751
+ }
752
+
753
+ .chart-viewport.is-simulating .chart-edge-label:disabled,
754
+ .chart-viewport.is-simulating .chart-edge-hit {
755
+ pointer-events: none;
756
+ }
757
+
758
+ .chart-viewport.is-simulating .chart-edge-label.is-walkthrough-available,
759
+ .chart-viewport.is-simulating .chart-edge-label.is-walkthrough-unavailable,
760
+ .chart-viewport.is-simulating .chart-edge-group.is-walkthrough-available .chart-edge-hit,
761
+ .chart-viewport.is-simulating .chart-edge-group.is-walkthrough-unavailable .chart-edge-hit {
762
+ cursor: pointer;
763
+ }
764
+
765
+ .chart-viewport.is-simulating .chart-edge-group.is-walkthrough-available .chart-edge-hit,
766
+ .chart-viewport.is-simulating .chart-edge-group.is-walkthrough-unavailable .chart-edge-hit {
767
+ pointer-events: stroke;
768
+ }
769
+
770
+ .chart-loading,
771
+ .chart-layout-error {
772
+ display: grid;
773
+ max-width: 440px;
774
+ gap: 7px;
775
+ margin: 28px;
776
+ color: #7f8690;
777
+ font: 11px/1.6 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
778
+ }
779
+
780
+ .chart-layout-error {
781
+ color: #d58d89;
782
+ }
783
+
784
+ .chart-layout-error strong {
785
+ color: #efb0ac;
786
+ }
787
+
427
788
  .inspector-eyebrow,
428
789
  .card-title,
429
790
  .card-flags,
@@ -433,10 +794,6 @@ button {
433
794
  gap: 6px;
434
795
  }
435
796
 
436
- .state-markers {
437
- justify-self: end;
438
- }
439
-
440
797
  .badge {
441
798
  display: inline-flex;
442
799
  align-items: center;
@@ -455,11 +812,6 @@ button {
455
812
  background: rgb(75 125 255 / 22%);
456
813
  }
457
814
 
458
- .badge-initial {
459
- color: #e9c89f;
460
- background: rgb(240 163 91 / 13%);
461
- }
462
-
463
815
  .badge-trigger {
464
816
  color: #b9d2ff;
465
817
  background: rgb(75 125 255 / 16%);
@@ -481,11 +833,51 @@ button {
481
833
  }
482
834
 
483
835
  .inspector {
836
+ position: absolute;
837
+ z-index: 10;
838
+ top: 14px;
839
+ right: 14px;
840
+ bottom: 14px;
841
+ width: min(460px, calc(100% - 28px));
484
842
  min-width: 0;
485
- height: 100vh;
486
- padding: 28px;
843
+ padding: 0;
844
+ border: 1px solid #333943;
845
+ border-radius: 6px;
846
+ overflow: hidden;
847
+ background: rgb(15 17 20 / 97%);
848
+ box-shadow: 0 18px 60px rgb(0 0 0 / 48%);
849
+ }
850
+
851
+ .inspector[hidden] {
852
+ display: none;
853
+ }
854
+
855
+ .inspector-close {
856
+ position: absolute;
857
+ z-index: 1;
858
+ top: 11px;
859
+ right: 12px;
860
+ padding: 6px 9px;
861
+ border: 0;
862
+ border-radius: 3px;
863
+ color: #8e949e;
864
+ background: transparent;
865
+ font-size: 11px;
866
+ cursor: pointer;
867
+ }
868
+
869
+ .inspector-content {
870
+ width: 100%;
871
+ height: 100%;
872
+ padding: 48px 24px 24px;
487
873
  overflow: auto;
488
- background: var(--surface);
874
+ }
875
+
876
+ .inspector-close:hover,
877
+ .inspector-close:focus-visible {
878
+ color: #fff;
879
+ background: #20242a;
880
+ outline: none;
489
881
  }
490
882
 
491
883
  .failure-shell {
@@ -548,9 +940,29 @@ button {
548
940
  overflow-wrap: anywhere;
549
941
  }
550
942
 
943
+ .inspector-title-row,
944
+ .inspector-state-title {
945
+ display: flex;
946
+ min-width: 0;
947
+ align-items: center;
948
+ }
949
+
950
+ .inspector-title-row {
951
+ justify-content: space-between;
952
+ gap: 16px;
953
+ }
954
+
955
+ .inspector-state-title {
956
+ gap: 9px;
957
+ }
958
+
959
+ .inspector-title-row h2 {
960
+ min-width: 0;
961
+ margin: 0;
962
+ }
963
+
551
964
  .inspector-empty p,
552
- .section-empty,
553
- .empty-inline {
965
+ .section-empty {
554
966
  color: var(--muted);
555
967
  font-size: 12px;
556
968
  line-height: 1.6;
@@ -612,7 +1024,7 @@ button {
612
1024
 
613
1025
  .metadata {
614
1026
  display: grid;
615
- grid-template-columns: minmax(74px, auto) minmax(0, 1fr);
1027
+ grid-template-columns: minmax(74px, max-content) minmax(0, 1fr);
616
1028
  gap: 8px 16px;
617
1029
  margin: 20px 0 0;
618
1030
  font-size: 11px;
@@ -668,15 +1080,6 @@ button {
668
1080
  padding: 10px 12px;
669
1081
  }
670
1082
 
671
- .transition-source {
672
- display: flex;
673
- align-items: baseline;
674
- gap: 12px;
675
- padding: 0 12px 10px;
676
- color: #727983;
677
- font-size: 11px;
678
- }
679
-
680
1083
  .card-title {
681
1084
  min-width: 0;
682
1085
  }
@@ -714,6 +1117,7 @@ button {
714
1117
  }
715
1118
 
716
1119
  .branch-row .metadata,
1120
+ .transition-card .card-metadata,
717
1121
  .activity-card .metadata,
718
1122
  .incoming-card .metadata {
719
1123
  margin-top: 10px;
@@ -727,9 +1131,13 @@ button {
727
1131
  padding: 0 12px;
728
1132
  }
729
1133
 
1134
+ .transition-card .card-metadata {
1135
+ padding: 0 12px 10px;
1136
+ }
1137
+
730
1138
  .branch-updates {
731
1139
  display: grid;
732
- grid-template-columns: minmax(74px, auto) minmax(0, 1fr);
1140
+ grid-template-columns: minmax(74px, max-content) minmax(0, 1fr);
733
1141
  gap: 8px 16px;
734
1142
  margin-top: 9px;
735
1143
  font-size: 11px;
@@ -751,62 +1159,244 @@ button {
751
1159
  padding: 0 12px;
752
1160
  }
753
1161
 
754
- .simulation-composer {
1162
+ .walkthrough-dock {
755
1163
  display: grid;
1164
+ min-height: 0;
1165
+ max-height: 76px;
1166
+ flex: 0 0 auto;
1167
+ grid-template-rows: auto auto;
1168
+ gap: 6px;
1169
+ padding: 8px 14px 10px;
1170
+ border-top: 1px solid var(--line);
1171
+ background: rgb(13 15 18 / 98%);
1172
+ box-shadow: 0 -12px 32px rgb(0 0 0 / 20%);
1173
+ font: 10px/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
1174
+ }
1175
+
1176
+ .walkthrough-dock[hidden] {
1177
+ display: none;
1178
+ }
1179
+
1180
+ .walkthrough-heading,
1181
+ .walkthrough-identity,
1182
+ .walkthrough-timeline {
1183
+ display: flex;
1184
+ min-width: 0;
1185
+ align-items: center;
1186
+ }
1187
+
1188
+ .walkthrough-heading {
1189
+ justify-content: space-between;
1190
+ gap: 12px;
1191
+ color: #d4d7dc;
1192
+ }
1193
+
1194
+ .walkthrough-identity {
756
1195
  gap: 10px;
757
1196
  }
758
1197
 
759
- .simulation-composer .section-heading {
760
- margin-bottom: 0;
1198
+ .walkthrough-status,
1199
+ .walkthrough-hint {
1200
+ color: #777f8a;
1201
+ }
1202
+
1203
+ .walkthrough-hint {
1204
+ font-size: 9px;
761
1205
  }
762
1206
 
763
- .schema-form,
764
- .input-object,
765
- .input-array,
766
- .input-union,
767
- .input-field,
768
- .input-array-items {
1207
+ .walkthrough-timeline {
1208
+ gap: 5px;
1209
+ overflow-x: auto;
1210
+ scrollbar-width: thin;
1211
+ }
1212
+
1213
+ .walkthrough-step {
1214
+ flex: 0 0 auto;
1215
+ border: 1px solid var(--line-soft);
1216
+ border-radius: 3px;
1217
+ color: #aeb4bd;
1218
+ background: #14171b;
1219
+ cursor: pointer;
1220
+ }
1221
+
1222
+ .walkthrough-step {
1223
+ padding: 5px 8px;
1224
+ white-space: nowrap;
1225
+ }
1226
+
1227
+ .walkthrough-step:hover,
1228
+ .walkthrough-step:focus-visible {
1229
+ border-color: #53657e;
1230
+ color: #fff;
1231
+ outline: none;
1232
+ }
1233
+
1234
+ .walkthrough-step.is-current {
1235
+ border-color: #5f88ca;
1236
+ color: #d8e6ff;
1237
+ background: rgb(44 75 122 / 38%);
1238
+ }
1239
+
1240
+ .transition-picker {
1241
+ position: fixed;
1242
+ z-index: 20;
769
1243
  display: grid;
770
- gap: 10px;
1244
+ width: min(380px, calc(100vw - 20px));
1245
+ max-height: min(420px, calc(100vh - 68px));
1246
+ grid-template-rows: auto minmax(0, 1fr);
1247
+ border: 1px solid #4e4535;
1248
+ border-radius: 5px;
1249
+ background: rgb(15 17 20 / 98%);
1250
+ box-shadow: 0 18px 60px rgb(0 0 0 / 52%);
1251
+ overflow: hidden;
771
1252
  }
772
1253
 
773
- .schema-form {
774
- max-width: 520px;
1254
+ .transition-picker[hidden] {
1255
+ display: none;
775
1256
  }
776
1257
 
777
- .input-object,
778
- .input-array,
779
- .input-union {
1258
+ .transition-picker-header,
1259
+ .transition-picker-choice-main {
1260
+ display: flex;
780
1261
  min-width: 0;
781
- margin: 0;
782
- padding: 0;
783
- border: 0;
1262
+ align-items: center;
784
1263
  }
785
1264
 
786
- .input-object > legend,
787
- .input-array > legend,
788
- .input-union > legend {
789
- margin-bottom: 8px;
790
- padding: 0;
791
- color: #d5d8dd;
1265
+ .transition-picker-header {
1266
+ min-height: 38px;
1267
+ justify-content: space-between;
1268
+ gap: 10px;
1269
+ padding: 8px 10px 8px 12px;
1270
+ border-bottom: 1px solid var(--line-soft);
1271
+ }
1272
+
1273
+ .transition-picker-header strong {
1274
+ color: #d8dadd;
792
1275
  font: 600 11px/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
1276
+ overflow: hidden;
1277
+ text-overflow: ellipsis;
1278
+ white-space: nowrap;
1279
+ }
1280
+
1281
+ .transition-picker-close {
1282
+ padding: 4px 6px;
1283
+ border: 0;
1284
+ border-radius: 3px;
1285
+ color: #7f8690;
1286
+ background: transparent;
1287
+ font-size: 10px;
1288
+ cursor: pointer;
1289
+ }
1290
+
1291
+ .transition-picker-close:hover,
1292
+ .transition-picker-close:focus-visible {
1293
+ color: #fff;
1294
+ background: #20242a;
1295
+ outline: none;
1296
+ }
1297
+
1298
+ .transition-picker-content {
1299
+ display: grid;
1300
+ gap: 5px;
1301
+ padding: 7px;
1302
+ overflow: auto;
793
1303
  }
794
1304
 
795
- .input-object .input-object,
796
- .input-object .input-array,
797
- .input-object .input-union {
798
- padding: 11px;
1305
+ .transition-picker-choice {
1306
+ display: grid;
1307
+ min-width: 0;
1308
+ gap: 4px;
1309
+ padding: 8px 9px;
799
1310
  border: 1px solid var(--line-soft);
800
- background: #101216;
1311
+ border-radius: 3px;
1312
+ color: #aeb4bd;
1313
+ background: #14171b;
1314
+ font: 10px/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
1315
+ text-align: left;
1316
+ cursor: pointer;
801
1317
  }
802
1318
 
803
- .input-field {
804
- gap: 6px;
1319
+ .transition-picker-choice:hover,
1320
+ .transition-picker-choice:focus-visible {
1321
+ border-color: #8d713c;
1322
+ background: #1d1912;
1323
+ outline: none;
1324
+ }
1325
+
1326
+ .transition-picker-choice-main {
1327
+ gap: 7px;
1328
+ }
1329
+
1330
+ .transition-picker-choice-main strong,
1331
+ .transition-picker-choice-title,
1332
+ .transition-picker-choice-route,
1333
+ .transition-picker-choice-contract,
1334
+ .transition-picker-choice-decision,
1335
+ .transition-picker-choice-unavailable {
1336
+ min-width: 0;
1337
+ overflow: hidden;
1338
+ text-overflow: ellipsis;
1339
+ white-space: nowrap;
1340
+ }
1341
+
1342
+ .transition-picker-choice-main strong {
1343
+ color: #efd18f;
1344
+ }
1345
+
1346
+ .transition-picker-choice-title {
1347
+ color: #d9b8ef;
1348
+ }
1349
+
1350
+ .transition-picker-choice-route {
1351
+ color: #777f8a;
1352
+ }
1353
+
1354
+ .transition-picker-choice-contract {
1355
+ color: #9ebce9;
1356
+ }
1357
+
1358
+ .transition-picker-choice-decision {
1359
+ color: #b69ac9;
1360
+ }
1361
+
1362
+ .transition-picker-choice-unavailable {
1363
+ color: #a38c6f;
1364
+ }
1365
+
1366
+ .transition-picker-choice.is-unavailable {
1367
+ opacity: 0.68;
1368
+ cursor: default;
1369
+ }
1370
+
1371
+ .input-contract-fields,
1372
+ .input-contract-field,
1373
+ .input-contract-children,
1374
+ .input-contract-alternatives {
1375
+ display: grid;
1376
+ gap: 9px;
1377
+ }
1378
+
1379
+ .input-contract-fields {
1380
+ padding: 11px 12px;
1381
+ border: 1px solid var(--line-soft);
1382
+ background: var(--surface-raised);
1383
+ }
1384
+
1385
+ .input-contract-field + .input-contract-field {
1386
+ padding-top: 9px;
1387
+ border-top: 1px solid var(--line-soft);
805
1388
  }
806
1389
 
807
- .input-field + .input-field {
808
- padding-top: 10px;
1390
+ .input-contract-children,
1391
+ .input-contract-alternatives {
1392
+ margin-top: 2px;
1393
+ padding: 9px 0 0 12px;
809
1394
  border-top: 1px solid var(--line-soft);
1395
+ border-left: 1px solid var(--line-soft);
1396
+ }
1397
+
1398
+ .input-contract .section-empty {
1399
+ margin: 0;
810
1400
  }
811
1401
 
812
1402
  .input-field-heading {
@@ -827,8 +1417,7 @@ button {
827
1417
 
828
1418
  .input-label,
829
1419
  .input-required,
830
- .input-optional,
831
- .boolean-control {
1420
+ .input-optional {
832
1421
  font-size: 11px;
833
1422
  }
834
1423
 
@@ -863,33 +1452,15 @@ button {
863
1452
  color: #737b86;
864
1453
  }
865
1454
 
866
- .input-optional,
867
- .boolean-control {
1455
+ .input-optional {
868
1456
  display: inline-flex;
869
1457
  align-items: center;
870
1458
  gap: 6px;
871
1459
  color: #9199a4;
872
1460
  }
873
1461
 
874
- .input-control {
875
- width: 100%;
876
- min-height: 34px;
877
- padding: 7px 9px;
878
- border: 1px solid var(--line);
879
- border-radius: 3px;
880
- color: #dfe7f5;
881
- background: #0b0d10;
882
- font: 11px/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
883
- outline: none;
884
- }
885
-
886
- .input-control:focus {
887
- border-color: #557db8;
888
- }
889
-
890
1462
  .input-description,
891
- .input-unsupported,
892
- .input-errors {
1463
+ .input-unsupported {
893
1464
  margin: 0;
894
1465
  font-size: 11px;
895
1466
  line-height: 1.55;
@@ -903,104 +1474,6 @@ button {
903
1474
  color: #d7a5a2;
904
1475
  }
905
1476
 
906
- .input-errors {
907
- color: #efaaa6;
908
- }
909
-
910
- .input-errors-form {
911
- padding: 8px 10px;
912
- border: 1px solid rgb(224 89 84 / 30%);
913
- background: rgb(224 89 84 / 8%);
914
- }
915
-
916
- .literal-control {
917
- color: #aeb6c1;
918
- font: 11px/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
919
- }
920
-
921
- .is-disabled {
922
- opacity: 0.45;
923
- }
924
-
925
- .input-array-item {
926
- display: grid;
927
- grid-template-columns: minmax(0, 1fr) auto;
928
- align-items: start;
929
- gap: 7px;
930
- }
931
-
932
- .input-array-add,
933
- .input-array-remove {
934
- padding: 6px 8px;
935
- border: 0;
936
- border-radius: 3px;
937
- color: #9ebce9;
938
- background: #1b2431;
939
- font-size: 10px;
940
- cursor: pointer;
941
- }
942
-
943
- .input-array-add {
944
- justify-self: start;
945
- }
946
-
947
- .simulation-action {
948
- justify-self: start;
949
- padding: 7px 10px;
950
- border: 0;
951
- border-radius: 3px;
952
- color: #e4edff;
953
- background: #315d9f;
954
- font-size: 11px;
955
- cursor: pointer;
956
- }
957
-
958
- .simulation-action:hover,
959
- .simulation-action:focus-visible {
960
- background: #3b6db8;
961
- outline: none;
962
- }
963
-
964
- .simulation-action:disabled {
965
- color: #7e8796;
966
- background: #252a32;
967
- cursor: wait;
968
- }
969
-
970
- .simulation-note,
971
- .editor-error {
972
- margin: 0;
973
- font-size: 11px;
974
- line-height: 1.55;
975
- }
976
-
977
- .simulation-note {
978
- color: #777f8a;
979
- }
980
-
981
- .editor-error,
982
- .trace-error {
983
- color: #eca6a2;
984
- }
985
-
986
- .trace-header .json-value {
987
- margin-top: 18px;
988
- }
989
-
990
- .json-value,
991
- .trace-error {
992
- max-width: 100%;
993
- margin: 8px 0 0;
994
- padding: 10px 11px;
995
- border: 1px solid var(--line-soft);
996
- color: #bac8dc;
997
- background: #0d0f12;
998
- font: 10px/1.55 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
999
- overflow: auto;
1000
- white-space: pre-wrap;
1001
- overflow-wrap: anywhere;
1002
- }
1003
-
1004
1477
  .trace-topology {
1005
1478
  display: grid;
1006
1479
  gap: 10px;
@@ -1067,40 +1540,16 @@ button {
1067
1540
  }
1068
1541
 
1069
1542
  @media (max-width: 900px) {
1070
- .devtools-shell {
1071
- grid-template-columns: 1fr;
1072
- }
1073
-
1074
- .machine-index {
1075
- display: flex;
1076
- height: auto;
1077
- min-height: 54px;
1078
- padding: 0;
1079
- border-right: 0;
1080
- border-bottom: 1px solid var(--line);
1081
- overflow-x: auto;
1082
- }
1083
-
1084
1543
  .machine-row {
1085
- width: min(220px, 70vw);
1086
- flex: 0 0 auto;
1087
- }
1088
-
1089
- .workspace {
1090
- height: auto;
1091
- grid-template-columns: 1fr;
1092
- }
1093
-
1094
- .tree-panel {
1095
- height: 58vh;
1096
- min-height: 58vh;
1097
- border-right: 0;
1098
- border-bottom: 1px solid var(--line);
1544
+ max-width: 220px;
1545
+ min-width: 132px;
1099
1546
  }
1100
1547
 
1101
1548
  .inspector {
1102
- height: auto;
1103
- min-height: 42vh;
1549
+ top: 8px;
1550
+ right: 8px;
1551
+ bottom: 8px;
1552
+ width: min(440px, calc(100% - 16px));
1104
1553
  }
1105
1554
  }
1106
1555
 
@@ -1119,19 +1568,24 @@ button {
1119
1568
  padding-top: 8px;
1120
1569
  }
1121
1570
 
1122
- .topology-tree,
1123
- .inspector {
1124
- padding-inline: 14px;
1571
+ .inspector-content {
1572
+ padding: 48px 14px 18px;
1573
+ }
1574
+
1575
+ .zoom-controls {
1576
+ bottom: 8px;
1577
+ left: 8px;
1125
1578
  }
1126
1579
 
1127
- .state-markers .badge-count {
1128
- display: none;
1580
+ .chart-panel.has-walkthrough .zoom-controls {
1581
+ bottom: 88px;
1129
1582
  }
1130
1583
  }
1131
1584
 
1132
1585
  @media (prefers-reduced-motion: no-preference) {
1133
- .state-row,
1586
+ .chart-state,
1587
+ .chart-edge-label,
1134
1588
  .toolbar-button {
1135
- transition: color 120ms ease, background-color 120ms ease;
1589
+ transition: color 120ms ease, background-color 120ms ease, border-color 120ms ease;
1136
1590
  }
1137
1591
  }