sketchmark 2.0.0 → 2.1.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 (132) hide show
  1. package/ANIMATABLE_MATRIX.md +177 -0
  2. package/KERNEL_SPEC.md +412 -0
  3. package/PACKS.md +81 -0
  4. package/PRESETS.md +182 -0
  5. package/README.md +274 -188
  6. package/bin/editor-ui.cjs +2285 -0
  7. package/bin/preview-ui.cjs +74 -0
  8. package/bin/sketchmark.cjs +648 -2008
  9. package/dist/src/animatable.d.ts +21 -0
  10. package/dist/src/animatable.js +439 -0
  11. package/dist/src/builders/index.d.ts +1 -11
  12. package/dist/src/builders/index.js +1 -19
  13. package/dist/src/diagnostics.js +1 -64
  14. package/dist/src/edit.d.ts +27 -0
  15. package/dist/src/edit.js +162 -0
  16. package/dist/src/index.d.ts +4 -13
  17. package/dist/src/index.js +4 -13
  18. package/dist/src/keyframes.d.ts +48 -0
  19. package/dist/src/keyframes.js +182 -0
  20. package/dist/src/motion.d.ts +4 -0
  21. package/dist/src/motion.js +262 -0
  22. package/dist/src/normalize.js +120 -151
  23. package/dist/src/presets/characters.d.ts +15 -0
  24. package/dist/src/presets/characters.js +113 -0
  25. package/dist/src/presets/compose.d.ts +5 -0
  26. package/dist/src/presets/compose.js +80 -0
  27. package/dist/src/presets/effects.d.ts +40 -0
  28. package/dist/src/presets/effects.js +79 -0
  29. package/dist/src/presets/helpers.d.ts +33 -0
  30. package/dist/src/presets/helpers.js +165 -0
  31. package/dist/src/presets/index.d.ts +9 -0
  32. package/dist/src/presets/index.js +48 -0
  33. package/dist/src/presets/motions.d.ts +33 -0
  34. package/dist/src/presets/motions.js +75 -0
  35. package/dist/src/presets/scenes.d.ts +35 -0
  36. package/dist/src/presets/scenes.js +134 -0
  37. package/dist/src/presets/shapes.d.ts +71 -0
  38. package/dist/src/presets/shapes.js +96 -0
  39. package/dist/src/presets/transitions.d.ts +29 -0
  40. package/dist/src/presets/transitions.js +113 -0
  41. package/dist/src/presets/types.d.ts +34 -0
  42. package/dist/src/presets/types.js +2 -0
  43. package/dist/src/render/html.js +1 -4
  44. package/dist/src/render/svg.d.ts +2 -2
  45. package/dist/src/render/svg.js +86 -82
  46. package/dist/src/render/three-html.js +67 -113
  47. package/dist/src/scenes.js +1 -0
  48. package/dist/src/schema.js +218 -280
  49. package/dist/src/shapes/builtins.js +11 -47
  50. package/dist/src/shapes/common.js +12 -11
  51. package/dist/src/shapes/registry.d.ts +0 -1
  52. package/dist/src/shapes/registry.js +0 -4
  53. package/dist/src/shapes/types.d.ts +1 -3
  54. package/dist/src/types.d.ts +57 -288
  55. package/dist/src/utils.d.ts +2 -11
  56. package/dist/src/utils.js +13 -70
  57. package/dist/src/validate.js +321 -275
  58. package/dist/tests/run.js +576 -510
  59. package/examples/1730642890464.jpg +0 -0
  60. package/examples/app-screen.svg +1 -0
  61. package/examples/app-screen.visual.json +503 -0
  62. package/examples/dashboard-table.svg +1 -0
  63. package/examples/dashboard-table.visual.json +708 -0
  64. package/examples/dev-docs.svg +1 -0
  65. package/examples/dev-docs.visual.json +248 -0
  66. package/examples/explainer.mp4 +0 -0
  67. package/examples/explainer.visual.json +1713 -0
  68. package/examples/group-origin-effects-lab-check.svg +1 -0
  69. package/examples/group-origin-effects-lab.visual.json +1880 -0
  70. package/examples/image-clip-radius.visual.json +271 -0
  71. package/examples/make-app-screen.cjs +368 -0
  72. package/examples/make-dashboard-table.cjs +277 -0
  73. package/examples/make-dev-docs.cjs +233 -0
  74. package/examples/make-explainer.cjs +438 -0
  75. package/examples/make-group-origin-effects-lab.cjs +370 -0
  76. package/examples/make-image-clip-radius.cjs +169 -0
  77. package/examples/make-modal-dialog.cjs +355 -0
  78. package/examples/make-origin-effects-lab.cjs +311 -0
  79. package/examples/make-preset-character-motion.cjs +32 -0
  80. package/examples/make-presets-demo.cjs +30 -0
  81. package/examples/make-pricing.cjs +286 -0
  82. package/examples/make-product-demo.cjs +468 -0
  83. package/examples/make-product-hero.cjs +223 -0
  84. package/examples/make-release-notes.cjs +333 -0
  85. package/examples/make-settings-panel.cjs +435 -0
  86. package/examples/make-split-preview.cjs +248 -0
  87. package/examples/make-storyboard.cjs +215 -0
  88. package/examples/make-transcript.cjs +234 -0
  89. package/examples/make-typography-test.cjs +397 -0
  90. package/examples/make-ui-demo-explainer.cjs +1094 -0
  91. package/examples/make-ui-flow.cjs +762 -0
  92. package/examples/make-walkthrough.cjs +815 -0
  93. package/examples/modal-dialog.svg +1 -0
  94. package/examples/modal-dialog.visual.json +239 -0
  95. package/examples/origin-effects-lab-check.svg +1 -0
  96. package/examples/origin-effects-lab.visual.json +1412 -0
  97. package/examples/preset-character-motion.visual.json +949 -0
  98. package/examples/presets-demo.visual.json +787 -0
  99. package/examples/pricing.svg +1 -0
  100. package/examples/pricing.visual.json +652 -0
  101. package/examples/product-demo.mp4 +0 -0
  102. package/examples/product-demo.visual.json +866 -0
  103. package/examples/product-hero.svg +1 -0
  104. package/examples/product-hero.visual.json +242 -0
  105. package/examples/release-notes.svg +1 -0
  106. package/examples/release-notes.visual.json +467 -0
  107. package/examples/settings-panel.svg +1 -0
  108. package/examples/settings-panel.visual.json +501 -0
  109. package/examples/split-preview.svg +1 -0
  110. package/examples/split-preview.visual.json +124 -0
  111. package/examples/storyboard.svg +1 -0
  112. package/examples/storyboard.visual.json +312 -0
  113. package/examples/transcript.svg +1 -0
  114. package/examples/transcript.visual.json +407 -0
  115. package/examples/typography-indent-check.svg +1 -0
  116. package/examples/typography-lineheight-0.svg +1 -0
  117. package/examples/typography-lineheight-2.svg +1 -0
  118. package/examples/typography-test-check.svg +1 -0
  119. package/examples/typography-test.svg +1 -0
  120. package/examples/typography-test.visual.json +757 -0
  121. package/examples/ui-demo-explainer-billing.svg +1 -0
  122. package/examples/ui-demo-explainer-check.svg +1 -0
  123. package/examples/ui-demo-explainer-save.svg +1 -0
  124. package/examples/ui-demo-explainer-toggle.svg +1 -0
  125. package/examples/ui-demo-explainer.mp4 +0 -0
  126. package/examples/ui-demo-explainer.visual.json +2597 -0
  127. package/examples/ui-flow.mp4 +0 -0
  128. package/examples/ui-flow.visual.json +1211 -0
  129. package/examples/walkthrough.mp4 +0 -0
  130. package/examples/walkthrough.visual.json +1372 -0
  131. package/package.json +52 -52
  132. package/schema/visual.schema.json +1086 -930
@@ -0,0 +1,1880 @@
1
+ {
2
+ "version": 1,
3
+ "canvas": {
4
+ "width": 1280,
5
+ "height": 760,
6
+ "background": "#07111f",
7
+ "duration": 6,
8
+ "fps": 30
9
+ },
10
+ "elements": [
11
+ {
12
+ "id": "lab_title",
13
+ "type": "text",
14
+ "x": 70,
15
+ "y": 52,
16
+ "text": "Group Origin Transform Lab",
17
+ "fontSize": 38,
18
+ "fontFamily": "Roboto, Arial, sans-serif",
19
+ "weight": 700,
20
+ "fill": "#f8fafc"
21
+ },
22
+ {
23
+ "id": "lab_body",
24
+ "type": "text",
25
+ "x": 70,
26
+ "y": 96,
27
+ "text": "Same multi-child group, same motion, different origins.",
28
+ "fontSize": 16,
29
+ "fontFamily": "Roboto, Arial, sans-serif",
30
+ "weight": 400,
31
+ "fill": "#94a3b8"
32
+ },
33
+ {
34
+ "id": "scale_row_label",
35
+ "type": "text",
36
+ "x": 70,
37
+ "y": 112,
38
+ "text": "Scale tests",
39
+ "fontSize": 18,
40
+ "fontFamily": "Roboto, Arial, sans-serif",
41
+ "weight": 700,
42
+ "fill": "#7dd3fc"
43
+ },
44
+ {
45
+ "id": "rotate_row_label",
46
+ "type": "text",
47
+ "x": 70,
48
+ "y": 397,
49
+ "text": "Rotation tests",
50
+ "fontSize": 18,
51
+ "fontFamily": "Roboto, Arial, sans-serif",
52
+ "weight": 700,
53
+ "fill": "#7dd3fc"
54
+ },
55
+ {
56
+ "id": "scale_top_left_panel",
57
+ "type": "path",
58
+ "d": "M 92 150 L 318 150 Q 340 150 340 172 L 340 368 Q 340 390 318 390 L 92 390 Q 70 390 70 368 L 70 172 Q 70 150 92 150 Z",
59
+ "fill": "#0d1a2e",
60
+ "stroke": "#193252",
61
+ "strokeWidth": 1.5
62
+ },
63
+ {
64
+ "id": "scale_top_left_title",
65
+ "type": "text",
66
+ "x": 90,
67
+ "y": 168,
68
+ "text": "Top-left origin",
69
+ "fontSize": 16,
70
+ "fontFamily": "Roboto, Arial, sans-serif",
71
+ "weight": 700,
72
+ "fill": "#f8fafc"
73
+ },
74
+ {
75
+ "id": "scale_top_left_note",
76
+ "type": "text",
77
+ "x": 90,
78
+ "y": 192,
79
+ "text": "[0, 0]",
80
+ "fontSize": 12,
81
+ "fontFamily": "Roboto, Arial, sans-serif",
82
+ "weight": 500,
83
+ "fill": "#94a3b8"
84
+ },
85
+ {
86
+ "id": "scale_top_left_guide_h",
87
+ "type": "path",
88
+ "d": "M 90 302 L 320 302",
89
+ "fill": "none",
90
+ "stroke": "#173054",
91
+ "strokeWidth": 1,
92
+ "dashArray": [
93
+ 6,
94
+ 6
95
+ ]
96
+ },
97
+ {
98
+ "id": "scale_top_left_guide_v",
99
+ "type": "path",
100
+ "d": "M 210 218 L 210 370",
101
+ "fill": "none",
102
+ "stroke": "#173054",
103
+ "strokeWidth": 1,
104
+ "dashArray": [
105
+ 6,
106
+ 6
107
+ ]
108
+ },
109
+ {
110
+ "id": "scale_top_left_frame",
111
+ "type": "path",
112
+ "d": "M 138 242 L 282 242 Q 300 242 300 260 L 300 344 Q 300 362 282 362 L 138 362 Q 120 362 120 344 L 120 260 Q 120 242 138 242 Z",
113
+ "fill": "none",
114
+ "stroke": "#31537f",
115
+ "strokeWidth": 1,
116
+ "dashArray": [
117
+ 8,
118
+ 6
119
+ ]
120
+ },
121
+ {
122
+ "id": "scale_top_left_origin",
123
+ "type": "group",
124
+ "x": 104,
125
+ "y": 226,
126
+ "children": [
127
+ {
128
+ "id": "scale_top_left_origin_cross_h",
129
+ "type": "path",
130
+ "d": "M 0 16 L 32 16",
131
+ "fill": "none",
132
+ "stroke": "#fde047",
133
+ "strokeWidth": 2,
134
+ "strokeCap": "round"
135
+ },
136
+ {
137
+ "id": "scale_top_left_origin_cross_v",
138
+ "type": "path",
139
+ "d": "M 16 0 L 16 32",
140
+ "fill": "none",
141
+ "stroke": "#fde047",
142
+ "strokeWidth": 2,
143
+ "strokeCap": "round"
144
+ },
145
+ {
146
+ "id": "scale_top_left_origin_dot",
147
+ "type": "path",
148
+ "d": "M 10 16 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0",
149
+ "fill": "#fde047",
150
+ "stroke": "#0f172a",
151
+ "strokeWidth": 1.5
152
+ }
153
+ ]
154
+ },
155
+ {
156
+ "id": "scale_top_left_group",
157
+ "type": "group",
158
+ "x": 120,
159
+ "y": 242,
160
+ "width": 180,
161
+ "height": 120,
162
+ "origin": [
163
+ 120,
164
+ 242
165
+ ],
166
+ "children": [
167
+ {
168
+ "id": "scale_top_left_main",
169
+ "type": "path",
170
+ "d": "M 18 18 L 162 18 Q 180 18 180 36 L 180 102 Q 180 120 162 120 L 18 120 Q 0 120 0 102 L 0 36 Q 0 18 18 18 Z",
171
+ "fill": "#818cf8",
172
+ "stroke": "#dbeafe",
173
+ "strokeWidth": 2
174
+ },
175
+ {
176
+ "id": "scale_top_left_tag",
177
+ "type": "path",
178
+ "d": "M 22 0 L 68 0 Q 78 0 78 10 L 78 10 Q 78 20 68 20 L 22 20 Q 12 20 12 10 L 12 10 Q 12 0 22 0 Z",
179
+ "fill": "#0f172a",
180
+ "stroke": "#7dd3fc",
181
+ "strokeWidth": 1.5
182
+ },
183
+ {
184
+ "id": "scale_top_left_tag_text",
185
+ "type": "text",
186
+ "x": 45,
187
+ "y": 10,
188
+ "text": "GROUP",
189
+ "align": "center",
190
+ "valign": "middle",
191
+ "fontSize": 10,
192
+ "fontFamily": "Roboto, Arial, sans-serif",
193
+ "weight": 700,
194
+ "fill": "#7dd3fc"
195
+ },
196
+ {
197
+ "id": "scale_top_left_accent",
198
+ "type": "path",
199
+ "d": "M 138 38 L 152 38 Q 162 38 162 48 L 162 62 Q 162 72 152 72 L 138 72 Q 128 72 128 62 L 128 48 Q 128 38 138 38 Z",
200
+ "fill": "#0f172a",
201
+ "stroke": "#ffffff",
202
+ "strokeWidth": 1.5
203
+ },
204
+ {
205
+ "id": "scale_top_left_bar_1",
206
+ "type": "path",
207
+ "d": "M 21 50 L 89 50 Q 94 50 94 55 L 94 55 Q 94 60 89 60 L 21 60 Q 16 60 16 55 L 16 55 Q 16 50 21 50 Z",
208
+ "fill": "rgba(255,255,255,0.9)",
209
+ "stroke": "none"
210
+ },
211
+ {
212
+ "id": "scale_top_left_bar_2",
213
+ "type": "path",
214
+ "d": "M 21 70 L 123 70 Q 128 70 128 75 L 128 75 Q 128 80 123 80 L 21 80 Q 16 80 16 75 L 16 75 Q 16 70 21 70 Z",
215
+ "fill": "rgba(255,255,255,0.65)",
216
+ "stroke": "none"
217
+ },
218
+ {
219
+ "id": "scale_top_left_footer",
220
+ "type": "path",
221
+ "d": "M 22 92 L 102 92 Q 108 92 108 98 L 108 98 Q 108 104 102 104 L 22 104 Q 16 104 16 98 L 16 98 Q 16 92 22 92 Z",
222
+ "fill": "rgba(255,255,255,0.35)",
223
+ "stroke": "none"
224
+ }
225
+ ],
226
+ "timeline": {
227
+ "tracks": {
228
+ "scale": {
229
+ "keyframes": [
230
+ {
231
+ "time": 0,
232
+ "value": 1,
233
+ "out": {
234
+ "type": "cubicBezier",
235
+ "x1": 0,
236
+ "y1": 0,
237
+ "x2": 0.2,
238
+ "y2": 1
239
+ }
240
+ },
241
+ {
242
+ "time": 1.3,
243
+ "value": 1.45,
244
+ "out": {
245
+ "type": "cubicBezier",
246
+ "x1": 0.25,
247
+ "y1": 0.1,
248
+ "x2": 0.25,
249
+ "y2": 1
250
+ }
251
+ },
252
+ {
253
+ "time": 2.6,
254
+ "value": 0.72,
255
+ "out": {
256
+ "type": "cubicBezier",
257
+ "x1": 0.25,
258
+ "y1": 0.1,
259
+ "x2": 0.25,
260
+ "y2": 1
261
+ }
262
+ },
263
+ {
264
+ "time": 4,
265
+ "value": 1.18,
266
+ "out": {
267
+ "type": "cubicBezier",
268
+ "x1": 0.25,
269
+ "y1": 0.1,
270
+ "x2": 0.25,
271
+ "y2": 1
272
+ }
273
+ },
274
+ {
275
+ "time": 5.4,
276
+ "value": 1
277
+ }
278
+ ]
279
+ }
280
+ }
281
+ }
282
+ },
283
+ {
284
+ "id": "rotate_top_left_panel",
285
+ "type": "path",
286
+ "d": "M 92 435 L 318 435 Q 340 435 340 457 L 340 653 Q 340 675 318 675 L 92 675 Q 70 675 70 653 L 70 457 Q 70 435 92 435 Z",
287
+ "fill": "#0d1a2e",
288
+ "stroke": "#193252",
289
+ "strokeWidth": 1.5
290
+ },
291
+ {
292
+ "id": "rotate_top_left_title",
293
+ "type": "text",
294
+ "x": 90,
295
+ "y": 453,
296
+ "text": "Top-left origin",
297
+ "fontSize": 16,
298
+ "fontFamily": "Roboto, Arial, sans-serif",
299
+ "weight": 700,
300
+ "fill": "#f8fafc"
301
+ },
302
+ {
303
+ "id": "rotate_top_left_note",
304
+ "type": "text",
305
+ "x": 90,
306
+ "y": 477,
307
+ "text": "[0, 0]",
308
+ "fontSize": 12,
309
+ "fontFamily": "Roboto, Arial, sans-serif",
310
+ "weight": 500,
311
+ "fill": "#94a3b8"
312
+ },
313
+ {
314
+ "id": "rotate_top_left_guide_h",
315
+ "type": "path",
316
+ "d": "M 90 587 L 320 587",
317
+ "fill": "none",
318
+ "stroke": "#173054",
319
+ "strokeWidth": 1,
320
+ "dashArray": [
321
+ 6,
322
+ 6
323
+ ]
324
+ },
325
+ {
326
+ "id": "rotate_top_left_guide_v",
327
+ "type": "path",
328
+ "d": "M 210 503 L 210 655",
329
+ "fill": "none",
330
+ "stroke": "#173054",
331
+ "strokeWidth": 1,
332
+ "dashArray": [
333
+ 6,
334
+ 6
335
+ ]
336
+ },
337
+ {
338
+ "id": "rotate_top_left_frame",
339
+ "type": "path",
340
+ "d": "M 138 527 L 282 527 Q 300 527 300 545 L 300 629 Q 300 647 282 647 L 138 647 Q 120 647 120 629 L 120 545 Q 120 527 138 527 Z",
341
+ "fill": "none",
342
+ "stroke": "#31537f",
343
+ "strokeWidth": 1,
344
+ "dashArray": [
345
+ 8,
346
+ 6
347
+ ]
348
+ },
349
+ {
350
+ "id": "rotate_top_left_origin",
351
+ "type": "group",
352
+ "x": 104,
353
+ "y": 511,
354
+ "children": [
355
+ {
356
+ "id": "rotate_top_left_origin_cross_h",
357
+ "type": "path",
358
+ "d": "M 0 16 L 32 16",
359
+ "fill": "none",
360
+ "stroke": "#fde047",
361
+ "strokeWidth": 2,
362
+ "strokeCap": "round"
363
+ },
364
+ {
365
+ "id": "rotate_top_left_origin_cross_v",
366
+ "type": "path",
367
+ "d": "M 16 0 L 16 32",
368
+ "fill": "none",
369
+ "stroke": "#fde047",
370
+ "strokeWidth": 2,
371
+ "strokeCap": "round"
372
+ },
373
+ {
374
+ "id": "rotate_top_left_origin_dot",
375
+ "type": "path",
376
+ "d": "M 10 16 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0",
377
+ "fill": "#fde047",
378
+ "stroke": "#0f172a",
379
+ "strokeWidth": 1.5
380
+ }
381
+ ]
382
+ },
383
+ {
384
+ "id": "rotate_top_left_group",
385
+ "type": "group",
386
+ "x": 120,
387
+ "y": 527,
388
+ "width": 180,
389
+ "height": 120,
390
+ "origin": [
391
+ 120,
392
+ 527
393
+ ],
394
+ "children": [
395
+ {
396
+ "id": "rotate_top_left_main",
397
+ "type": "path",
398
+ "d": "M 18 18 L 162 18 Q 180 18 180 36 L 180 102 Q 180 120 162 120 L 18 120 Q 0 120 0 102 L 0 36 Q 0 18 18 18 Z",
399
+ "fill": "#818cf8",
400
+ "stroke": "#dbeafe",
401
+ "strokeWidth": 2
402
+ },
403
+ {
404
+ "id": "rotate_top_left_tag",
405
+ "type": "path",
406
+ "d": "M 22 0 L 68 0 Q 78 0 78 10 L 78 10 Q 78 20 68 20 L 22 20 Q 12 20 12 10 L 12 10 Q 12 0 22 0 Z",
407
+ "fill": "#0f172a",
408
+ "stroke": "#7dd3fc",
409
+ "strokeWidth": 1.5
410
+ },
411
+ {
412
+ "id": "rotate_top_left_tag_text",
413
+ "type": "text",
414
+ "x": 45,
415
+ "y": 10,
416
+ "text": "GROUP",
417
+ "align": "center",
418
+ "valign": "middle",
419
+ "fontSize": 10,
420
+ "fontFamily": "Roboto, Arial, sans-serif",
421
+ "weight": 700,
422
+ "fill": "#7dd3fc"
423
+ },
424
+ {
425
+ "id": "rotate_top_left_accent",
426
+ "type": "path",
427
+ "d": "M 138 38 L 152 38 Q 162 38 162 48 L 162 62 Q 162 72 152 72 L 138 72 Q 128 72 128 62 L 128 48 Q 128 38 138 38 Z",
428
+ "fill": "#0f172a",
429
+ "stroke": "#ffffff",
430
+ "strokeWidth": 1.5
431
+ },
432
+ {
433
+ "id": "rotate_top_left_bar_1",
434
+ "type": "path",
435
+ "d": "M 21 50 L 89 50 Q 94 50 94 55 L 94 55 Q 94 60 89 60 L 21 60 Q 16 60 16 55 L 16 55 Q 16 50 21 50 Z",
436
+ "fill": "rgba(255,255,255,0.9)",
437
+ "stroke": "none"
438
+ },
439
+ {
440
+ "id": "rotate_top_left_bar_2",
441
+ "type": "path",
442
+ "d": "M 21 70 L 123 70 Q 128 70 128 75 L 128 75 Q 128 80 123 80 L 21 80 Q 16 80 16 75 L 16 75 Q 16 70 21 70 Z",
443
+ "fill": "rgba(255,255,255,0.65)",
444
+ "stroke": "none"
445
+ },
446
+ {
447
+ "id": "rotate_top_left_footer",
448
+ "type": "path",
449
+ "d": "M 22 92 L 102 92 Q 108 92 108 98 L 108 98 Q 108 104 102 104 L 22 104 Q 16 104 16 98 L 16 98 Q 16 92 22 92 Z",
450
+ "fill": "rgba(255,255,255,0.35)",
451
+ "stroke": "none"
452
+ }
453
+ ],
454
+ "timeline": {
455
+ "tracks": {
456
+ "rotation": {
457
+ "keyframes": [
458
+ {
459
+ "time": 0,
460
+ "value": 0,
461
+ "out": {
462
+ "type": "cubicBezier",
463
+ "x1": 0,
464
+ "y1": 0,
465
+ "x2": 0.2,
466
+ "y2": 1
467
+ }
468
+ },
469
+ {
470
+ "time": 1.5,
471
+ "value": 42,
472
+ "out": {
473
+ "type": "cubicBezier",
474
+ "x1": 0.25,
475
+ "y1": 0.1,
476
+ "x2": 0.25,
477
+ "y2": 1
478
+ }
479
+ },
480
+ {
481
+ "time": 3,
482
+ "value": -28,
483
+ "out": {
484
+ "type": "cubicBezier",
485
+ "x1": 0.25,
486
+ "y1": 0.1,
487
+ "x2": 0.25,
488
+ "y2": 1
489
+ }
490
+ },
491
+ {
492
+ "time": 4.5,
493
+ "value": 18,
494
+ "out": {
495
+ "type": "cubicBezier",
496
+ "x1": 0.25,
497
+ "y1": 0.1,
498
+ "x2": 0.25,
499
+ "y2": 1
500
+ }
501
+ },
502
+ {
503
+ "time": 5.8,
504
+ "value": 0
505
+ }
506
+ ]
507
+ }
508
+ }
509
+ }
510
+ },
511
+ {
512
+ "id": "scale_center_panel",
513
+ "type": "path",
514
+ "d": "M 387 150 L 613 150 Q 635 150 635 172 L 635 368 Q 635 390 613 390 L 387 390 Q 365 390 365 368 L 365 172 Q 365 150 387 150 Z",
515
+ "fill": "#0d1a2e",
516
+ "stroke": "#193252",
517
+ "strokeWidth": 1.5
518
+ },
519
+ {
520
+ "id": "scale_center_title",
521
+ "type": "text",
522
+ "x": 385,
523
+ "y": 168,
524
+ "text": "Center origin",
525
+ "fontSize": 16,
526
+ "fontFamily": "Roboto, Arial, sans-serif",
527
+ "weight": 700,
528
+ "fill": "#f8fafc"
529
+ },
530
+ {
531
+ "id": "scale_center_note",
532
+ "type": "text",
533
+ "x": 385,
534
+ "y": 192,
535
+ "text": "[90, 60]",
536
+ "fontSize": 12,
537
+ "fontFamily": "Roboto, Arial, sans-serif",
538
+ "weight": 500,
539
+ "fill": "#94a3b8"
540
+ },
541
+ {
542
+ "id": "scale_center_guide_h",
543
+ "type": "path",
544
+ "d": "M 385 302 L 615 302",
545
+ "fill": "none",
546
+ "stroke": "#173054",
547
+ "strokeWidth": 1,
548
+ "dashArray": [
549
+ 6,
550
+ 6
551
+ ]
552
+ },
553
+ {
554
+ "id": "scale_center_guide_v",
555
+ "type": "path",
556
+ "d": "M 505 218 L 505 370",
557
+ "fill": "none",
558
+ "stroke": "#173054",
559
+ "strokeWidth": 1,
560
+ "dashArray": [
561
+ 6,
562
+ 6
563
+ ]
564
+ },
565
+ {
566
+ "id": "scale_center_frame",
567
+ "type": "path",
568
+ "d": "M 433 242 L 577 242 Q 595 242 595 260 L 595 344 Q 595 362 577 362 L 433 362 Q 415 362 415 344 L 415 260 Q 415 242 433 242 Z",
569
+ "fill": "none",
570
+ "stroke": "#31537f",
571
+ "strokeWidth": 1,
572
+ "dashArray": [
573
+ 8,
574
+ 6
575
+ ]
576
+ },
577
+ {
578
+ "id": "scale_center_origin",
579
+ "type": "group",
580
+ "x": 489,
581
+ "y": 286,
582
+ "children": [
583
+ {
584
+ "id": "scale_center_origin_cross_h",
585
+ "type": "path",
586
+ "d": "M 0 16 L 32 16",
587
+ "fill": "none",
588
+ "stroke": "#fde047",
589
+ "strokeWidth": 2,
590
+ "strokeCap": "round"
591
+ },
592
+ {
593
+ "id": "scale_center_origin_cross_v",
594
+ "type": "path",
595
+ "d": "M 16 0 L 16 32",
596
+ "fill": "none",
597
+ "stroke": "#fde047",
598
+ "strokeWidth": 2,
599
+ "strokeCap": "round"
600
+ },
601
+ {
602
+ "id": "scale_center_origin_dot",
603
+ "type": "path",
604
+ "d": "M 10 16 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0",
605
+ "fill": "#fde047",
606
+ "stroke": "#0f172a",
607
+ "strokeWidth": 1.5
608
+ }
609
+ ]
610
+ },
611
+ {
612
+ "id": "scale_center_group",
613
+ "type": "group",
614
+ "x": 415,
615
+ "y": 242,
616
+ "width": 180,
617
+ "height": 120,
618
+ "origin": [
619
+ 505,
620
+ 302
621
+ ],
622
+ "children": [
623
+ {
624
+ "id": "scale_center_main",
625
+ "type": "path",
626
+ "d": "M 18 18 L 162 18 Q 180 18 180 36 L 180 102 Q 180 120 162 120 L 18 120 Q 0 120 0 102 L 0 36 Q 0 18 18 18 Z",
627
+ "fill": "#38bdf8",
628
+ "stroke": "#dbeafe",
629
+ "strokeWidth": 2
630
+ },
631
+ {
632
+ "id": "scale_center_tag",
633
+ "type": "path",
634
+ "d": "M 22 0 L 68 0 Q 78 0 78 10 L 78 10 Q 78 20 68 20 L 22 20 Q 12 20 12 10 L 12 10 Q 12 0 22 0 Z",
635
+ "fill": "#0f172a",
636
+ "stroke": "#7dd3fc",
637
+ "strokeWidth": 1.5
638
+ },
639
+ {
640
+ "id": "scale_center_tag_text",
641
+ "type": "text",
642
+ "x": 45,
643
+ "y": 10,
644
+ "text": "GROUP",
645
+ "align": "center",
646
+ "valign": "middle",
647
+ "fontSize": 10,
648
+ "fontFamily": "Roboto, Arial, sans-serif",
649
+ "weight": 700,
650
+ "fill": "#7dd3fc"
651
+ },
652
+ {
653
+ "id": "scale_center_accent",
654
+ "type": "path",
655
+ "d": "M 138 38 L 152 38 Q 162 38 162 48 L 162 62 Q 162 72 152 72 L 138 72 Q 128 72 128 62 L 128 48 Q 128 38 138 38 Z",
656
+ "fill": "#0f172a",
657
+ "stroke": "#ffffff",
658
+ "strokeWidth": 1.5
659
+ },
660
+ {
661
+ "id": "scale_center_bar_1",
662
+ "type": "path",
663
+ "d": "M 21 50 L 89 50 Q 94 50 94 55 L 94 55 Q 94 60 89 60 L 21 60 Q 16 60 16 55 L 16 55 Q 16 50 21 50 Z",
664
+ "fill": "rgba(255,255,255,0.9)",
665
+ "stroke": "none"
666
+ },
667
+ {
668
+ "id": "scale_center_bar_2",
669
+ "type": "path",
670
+ "d": "M 21 70 L 123 70 Q 128 70 128 75 L 128 75 Q 128 80 123 80 L 21 80 Q 16 80 16 75 L 16 75 Q 16 70 21 70 Z",
671
+ "fill": "rgba(255,255,255,0.65)",
672
+ "stroke": "none"
673
+ },
674
+ {
675
+ "id": "scale_center_footer",
676
+ "type": "path",
677
+ "d": "M 22 92 L 102 92 Q 108 92 108 98 L 108 98 Q 108 104 102 104 L 22 104 Q 16 104 16 98 L 16 98 Q 16 92 22 92 Z",
678
+ "fill": "rgba(255,255,255,0.35)",
679
+ "stroke": "none"
680
+ }
681
+ ],
682
+ "timeline": {
683
+ "tracks": {
684
+ "scale": {
685
+ "keyframes": [
686
+ {
687
+ "time": 0,
688
+ "value": 1,
689
+ "out": {
690
+ "type": "cubicBezier",
691
+ "x1": 0,
692
+ "y1": 0,
693
+ "x2": 0.2,
694
+ "y2": 1
695
+ }
696
+ },
697
+ {
698
+ "time": 1.3,
699
+ "value": 1.45,
700
+ "out": {
701
+ "type": "cubicBezier",
702
+ "x1": 0.25,
703
+ "y1": 0.1,
704
+ "x2": 0.25,
705
+ "y2": 1
706
+ }
707
+ },
708
+ {
709
+ "time": 2.6,
710
+ "value": 0.72,
711
+ "out": {
712
+ "type": "cubicBezier",
713
+ "x1": 0.25,
714
+ "y1": 0.1,
715
+ "x2": 0.25,
716
+ "y2": 1
717
+ }
718
+ },
719
+ {
720
+ "time": 4,
721
+ "value": 1.18,
722
+ "out": {
723
+ "type": "cubicBezier",
724
+ "x1": 0.25,
725
+ "y1": 0.1,
726
+ "x2": 0.25,
727
+ "y2": 1
728
+ }
729
+ },
730
+ {
731
+ "time": 5.4,
732
+ "value": 1
733
+ }
734
+ ]
735
+ }
736
+ }
737
+ }
738
+ },
739
+ {
740
+ "id": "rotate_center_panel",
741
+ "type": "path",
742
+ "d": "M 387 435 L 613 435 Q 635 435 635 457 L 635 653 Q 635 675 613 675 L 387 675 Q 365 675 365 653 L 365 457 Q 365 435 387 435 Z",
743
+ "fill": "#0d1a2e",
744
+ "stroke": "#193252",
745
+ "strokeWidth": 1.5
746
+ },
747
+ {
748
+ "id": "rotate_center_title",
749
+ "type": "text",
750
+ "x": 385,
751
+ "y": 453,
752
+ "text": "Center origin",
753
+ "fontSize": 16,
754
+ "fontFamily": "Roboto, Arial, sans-serif",
755
+ "weight": 700,
756
+ "fill": "#f8fafc"
757
+ },
758
+ {
759
+ "id": "rotate_center_note",
760
+ "type": "text",
761
+ "x": 385,
762
+ "y": 477,
763
+ "text": "[90, 60]",
764
+ "fontSize": 12,
765
+ "fontFamily": "Roboto, Arial, sans-serif",
766
+ "weight": 500,
767
+ "fill": "#94a3b8"
768
+ },
769
+ {
770
+ "id": "rotate_center_guide_h",
771
+ "type": "path",
772
+ "d": "M 385 587 L 615 587",
773
+ "fill": "none",
774
+ "stroke": "#173054",
775
+ "strokeWidth": 1,
776
+ "dashArray": [
777
+ 6,
778
+ 6
779
+ ]
780
+ },
781
+ {
782
+ "id": "rotate_center_guide_v",
783
+ "type": "path",
784
+ "d": "M 505 503 L 505 655",
785
+ "fill": "none",
786
+ "stroke": "#173054",
787
+ "strokeWidth": 1,
788
+ "dashArray": [
789
+ 6,
790
+ 6
791
+ ]
792
+ },
793
+ {
794
+ "id": "rotate_center_frame",
795
+ "type": "path",
796
+ "d": "M 433 527 L 577 527 Q 595 527 595 545 L 595 629 Q 595 647 577 647 L 433 647 Q 415 647 415 629 L 415 545 Q 415 527 433 527 Z",
797
+ "fill": "none",
798
+ "stroke": "#31537f",
799
+ "strokeWidth": 1,
800
+ "dashArray": [
801
+ 8,
802
+ 6
803
+ ]
804
+ },
805
+ {
806
+ "id": "rotate_center_origin",
807
+ "type": "group",
808
+ "x": 489,
809
+ "y": 571,
810
+ "children": [
811
+ {
812
+ "id": "rotate_center_origin_cross_h",
813
+ "type": "path",
814
+ "d": "M 0 16 L 32 16",
815
+ "fill": "none",
816
+ "stroke": "#fde047",
817
+ "strokeWidth": 2,
818
+ "strokeCap": "round"
819
+ },
820
+ {
821
+ "id": "rotate_center_origin_cross_v",
822
+ "type": "path",
823
+ "d": "M 16 0 L 16 32",
824
+ "fill": "none",
825
+ "stroke": "#fde047",
826
+ "strokeWidth": 2,
827
+ "strokeCap": "round"
828
+ },
829
+ {
830
+ "id": "rotate_center_origin_dot",
831
+ "type": "path",
832
+ "d": "M 10 16 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0",
833
+ "fill": "#fde047",
834
+ "stroke": "#0f172a",
835
+ "strokeWidth": 1.5
836
+ }
837
+ ]
838
+ },
839
+ {
840
+ "id": "rotate_center_group",
841
+ "type": "group",
842
+ "x": 415,
843
+ "y": 527,
844
+ "width": 180,
845
+ "height": 120,
846
+ "origin": [
847
+ 505,
848
+ 587
849
+ ],
850
+ "children": [
851
+ {
852
+ "id": "rotate_center_main",
853
+ "type": "path",
854
+ "d": "M 18 18 L 162 18 Q 180 18 180 36 L 180 102 Q 180 120 162 120 L 18 120 Q 0 120 0 102 L 0 36 Q 0 18 18 18 Z",
855
+ "fill": "#38bdf8",
856
+ "stroke": "#dbeafe",
857
+ "strokeWidth": 2
858
+ },
859
+ {
860
+ "id": "rotate_center_tag",
861
+ "type": "path",
862
+ "d": "M 22 0 L 68 0 Q 78 0 78 10 L 78 10 Q 78 20 68 20 L 22 20 Q 12 20 12 10 L 12 10 Q 12 0 22 0 Z",
863
+ "fill": "#0f172a",
864
+ "stroke": "#7dd3fc",
865
+ "strokeWidth": 1.5
866
+ },
867
+ {
868
+ "id": "rotate_center_tag_text",
869
+ "type": "text",
870
+ "x": 45,
871
+ "y": 10,
872
+ "text": "GROUP",
873
+ "align": "center",
874
+ "valign": "middle",
875
+ "fontSize": 10,
876
+ "fontFamily": "Roboto, Arial, sans-serif",
877
+ "weight": 700,
878
+ "fill": "#7dd3fc"
879
+ },
880
+ {
881
+ "id": "rotate_center_accent",
882
+ "type": "path",
883
+ "d": "M 138 38 L 152 38 Q 162 38 162 48 L 162 62 Q 162 72 152 72 L 138 72 Q 128 72 128 62 L 128 48 Q 128 38 138 38 Z",
884
+ "fill": "#0f172a",
885
+ "stroke": "#ffffff",
886
+ "strokeWidth": 1.5
887
+ },
888
+ {
889
+ "id": "rotate_center_bar_1",
890
+ "type": "path",
891
+ "d": "M 21 50 L 89 50 Q 94 50 94 55 L 94 55 Q 94 60 89 60 L 21 60 Q 16 60 16 55 L 16 55 Q 16 50 21 50 Z",
892
+ "fill": "rgba(255,255,255,0.9)",
893
+ "stroke": "none"
894
+ },
895
+ {
896
+ "id": "rotate_center_bar_2",
897
+ "type": "path",
898
+ "d": "M 21 70 L 123 70 Q 128 70 128 75 L 128 75 Q 128 80 123 80 L 21 80 Q 16 80 16 75 L 16 75 Q 16 70 21 70 Z",
899
+ "fill": "rgba(255,255,255,0.65)",
900
+ "stroke": "none"
901
+ },
902
+ {
903
+ "id": "rotate_center_footer",
904
+ "type": "path",
905
+ "d": "M 22 92 L 102 92 Q 108 92 108 98 L 108 98 Q 108 104 102 104 L 22 104 Q 16 104 16 98 L 16 98 Q 16 92 22 92 Z",
906
+ "fill": "rgba(255,255,255,0.35)",
907
+ "stroke": "none"
908
+ }
909
+ ],
910
+ "timeline": {
911
+ "tracks": {
912
+ "rotation": {
913
+ "keyframes": [
914
+ {
915
+ "time": 0,
916
+ "value": 0,
917
+ "out": {
918
+ "type": "cubicBezier",
919
+ "x1": 0,
920
+ "y1": 0,
921
+ "x2": 0.2,
922
+ "y2": 1
923
+ }
924
+ },
925
+ {
926
+ "time": 1.5,
927
+ "value": 42,
928
+ "out": {
929
+ "type": "cubicBezier",
930
+ "x1": 0.25,
931
+ "y1": 0.1,
932
+ "x2": 0.25,
933
+ "y2": 1
934
+ }
935
+ },
936
+ {
937
+ "time": 3,
938
+ "value": -28,
939
+ "out": {
940
+ "type": "cubicBezier",
941
+ "x1": 0.25,
942
+ "y1": 0.1,
943
+ "x2": 0.25,
944
+ "y2": 1
945
+ }
946
+ },
947
+ {
948
+ "time": 4.5,
949
+ "value": 18,
950
+ "out": {
951
+ "type": "cubicBezier",
952
+ "x1": 0.25,
953
+ "y1": 0.1,
954
+ "x2": 0.25,
955
+ "y2": 1
956
+ }
957
+ },
958
+ {
959
+ "time": 5.8,
960
+ "value": 0
961
+ }
962
+ ]
963
+ }
964
+ }
965
+ }
966
+ },
967
+ {
968
+ "id": "scale_bottom_right_panel",
969
+ "type": "path",
970
+ "d": "M 682 150 L 908 150 Q 930 150 930 172 L 930 368 Q 930 390 908 390 L 682 390 Q 660 390 660 368 L 660 172 Q 660 150 682 150 Z",
971
+ "fill": "#0d1a2e",
972
+ "stroke": "#193252",
973
+ "strokeWidth": 1.5
974
+ },
975
+ {
976
+ "id": "scale_bottom_right_title",
977
+ "type": "text",
978
+ "x": 680,
979
+ "y": 168,
980
+ "text": "Bottom-right origin",
981
+ "fontSize": 16,
982
+ "fontFamily": "Roboto, Arial, sans-serif",
983
+ "weight": 700,
984
+ "fill": "#f8fafc"
985
+ },
986
+ {
987
+ "id": "scale_bottom_right_note",
988
+ "type": "text",
989
+ "x": 680,
990
+ "y": 192,
991
+ "text": "[180, 120]",
992
+ "fontSize": 12,
993
+ "fontFamily": "Roboto, Arial, sans-serif",
994
+ "weight": 500,
995
+ "fill": "#94a3b8"
996
+ },
997
+ {
998
+ "id": "scale_bottom_right_guide_h",
999
+ "type": "path",
1000
+ "d": "M 680 302 L 910 302",
1001
+ "fill": "none",
1002
+ "stroke": "#173054",
1003
+ "strokeWidth": 1,
1004
+ "dashArray": [
1005
+ 6,
1006
+ 6
1007
+ ]
1008
+ },
1009
+ {
1010
+ "id": "scale_bottom_right_guide_v",
1011
+ "type": "path",
1012
+ "d": "M 800 218 L 800 370",
1013
+ "fill": "none",
1014
+ "stroke": "#173054",
1015
+ "strokeWidth": 1,
1016
+ "dashArray": [
1017
+ 6,
1018
+ 6
1019
+ ]
1020
+ },
1021
+ {
1022
+ "id": "scale_bottom_right_frame",
1023
+ "type": "path",
1024
+ "d": "M 728 242 L 872 242 Q 890 242 890 260 L 890 344 Q 890 362 872 362 L 728 362 Q 710 362 710 344 L 710 260 Q 710 242 728 242 Z",
1025
+ "fill": "none",
1026
+ "stroke": "#31537f",
1027
+ "strokeWidth": 1,
1028
+ "dashArray": [
1029
+ 8,
1030
+ 6
1031
+ ]
1032
+ },
1033
+ {
1034
+ "id": "scale_bottom_right_origin",
1035
+ "type": "group",
1036
+ "x": 874,
1037
+ "y": 346,
1038
+ "children": [
1039
+ {
1040
+ "id": "scale_bottom_right_origin_cross_h",
1041
+ "type": "path",
1042
+ "d": "M 0 16 L 32 16",
1043
+ "fill": "none",
1044
+ "stroke": "#fde047",
1045
+ "strokeWidth": 2,
1046
+ "strokeCap": "round"
1047
+ },
1048
+ {
1049
+ "id": "scale_bottom_right_origin_cross_v",
1050
+ "type": "path",
1051
+ "d": "M 16 0 L 16 32",
1052
+ "fill": "none",
1053
+ "stroke": "#fde047",
1054
+ "strokeWidth": 2,
1055
+ "strokeCap": "round"
1056
+ },
1057
+ {
1058
+ "id": "scale_bottom_right_origin_dot",
1059
+ "type": "path",
1060
+ "d": "M 10 16 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0",
1061
+ "fill": "#fde047",
1062
+ "stroke": "#0f172a",
1063
+ "strokeWidth": 1.5
1064
+ }
1065
+ ]
1066
+ },
1067
+ {
1068
+ "id": "scale_bottom_right_group",
1069
+ "type": "group",
1070
+ "x": 710,
1071
+ "y": 242,
1072
+ "width": 180,
1073
+ "height": 120,
1074
+ "origin": [
1075
+ 890,
1076
+ 362
1077
+ ],
1078
+ "children": [
1079
+ {
1080
+ "id": "scale_bottom_right_main",
1081
+ "type": "path",
1082
+ "d": "M 18 18 L 162 18 Q 180 18 180 36 L 180 102 Q 180 120 162 120 L 18 120 Q 0 120 0 102 L 0 36 Q 0 18 18 18 Z",
1083
+ "fill": "#22c55e",
1084
+ "stroke": "#dbeafe",
1085
+ "strokeWidth": 2
1086
+ },
1087
+ {
1088
+ "id": "scale_bottom_right_tag",
1089
+ "type": "path",
1090
+ "d": "M 22 0 L 68 0 Q 78 0 78 10 L 78 10 Q 78 20 68 20 L 22 20 Q 12 20 12 10 L 12 10 Q 12 0 22 0 Z",
1091
+ "fill": "#0f172a",
1092
+ "stroke": "#7dd3fc",
1093
+ "strokeWidth": 1.5
1094
+ },
1095
+ {
1096
+ "id": "scale_bottom_right_tag_text",
1097
+ "type": "text",
1098
+ "x": 45,
1099
+ "y": 10,
1100
+ "text": "GROUP",
1101
+ "align": "center",
1102
+ "valign": "middle",
1103
+ "fontSize": 10,
1104
+ "fontFamily": "Roboto, Arial, sans-serif",
1105
+ "weight": 700,
1106
+ "fill": "#7dd3fc"
1107
+ },
1108
+ {
1109
+ "id": "scale_bottom_right_accent",
1110
+ "type": "path",
1111
+ "d": "M 138 38 L 152 38 Q 162 38 162 48 L 162 62 Q 162 72 152 72 L 138 72 Q 128 72 128 62 L 128 48 Q 128 38 138 38 Z",
1112
+ "fill": "#0f172a",
1113
+ "stroke": "#ffffff",
1114
+ "strokeWidth": 1.5
1115
+ },
1116
+ {
1117
+ "id": "scale_bottom_right_bar_1",
1118
+ "type": "path",
1119
+ "d": "M 21 50 L 89 50 Q 94 50 94 55 L 94 55 Q 94 60 89 60 L 21 60 Q 16 60 16 55 L 16 55 Q 16 50 21 50 Z",
1120
+ "fill": "rgba(255,255,255,0.9)",
1121
+ "stroke": "none"
1122
+ },
1123
+ {
1124
+ "id": "scale_bottom_right_bar_2",
1125
+ "type": "path",
1126
+ "d": "M 21 70 L 123 70 Q 128 70 128 75 L 128 75 Q 128 80 123 80 L 21 80 Q 16 80 16 75 L 16 75 Q 16 70 21 70 Z",
1127
+ "fill": "rgba(255,255,255,0.65)",
1128
+ "stroke": "none"
1129
+ },
1130
+ {
1131
+ "id": "scale_bottom_right_footer",
1132
+ "type": "path",
1133
+ "d": "M 22 92 L 102 92 Q 108 92 108 98 L 108 98 Q 108 104 102 104 L 22 104 Q 16 104 16 98 L 16 98 Q 16 92 22 92 Z",
1134
+ "fill": "rgba(255,255,255,0.35)",
1135
+ "stroke": "none"
1136
+ }
1137
+ ],
1138
+ "timeline": {
1139
+ "tracks": {
1140
+ "scale": {
1141
+ "keyframes": [
1142
+ {
1143
+ "time": 0,
1144
+ "value": 1,
1145
+ "out": {
1146
+ "type": "cubicBezier",
1147
+ "x1": 0,
1148
+ "y1": 0,
1149
+ "x2": 0.2,
1150
+ "y2": 1
1151
+ }
1152
+ },
1153
+ {
1154
+ "time": 1.3,
1155
+ "value": 1.45,
1156
+ "out": {
1157
+ "type": "cubicBezier",
1158
+ "x1": 0.25,
1159
+ "y1": 0.1,
1160
+ "x2": 0.25,
1161
+ "y2": 1
1162
+ }
1163
+ },
1164
+ {
1165
+ "time": 2.6,
1166
+ "value": 0.72,
1167
+ "out": {
1168
+ "type": "cubicBezier",
1169
+ "x1": 0.25,
1170
+ "y1": 0.1,
1171
+ "x2": 0.25,
1172
+ "y2": 1
1173
+ }
1174
+ },
1175
+ {
1176
+ "time": 4,
1177
+ "value": 1.18,
1178
+ "out": {
1179
+ "type": "cubicBezier",
1180
+ "x1": 0.25,
1181
+ "y1": 0.1,
1182
+ "x2": 0.25,
1183
+ "y2": 1
1184
+ }
1185
+ },
1186
+ {
1187
+ "time": 5.4,
1188
+ "value": 1
1189
+ }
1190
+ ]
1191
+ }
1192
+ }
1193
+ }
1194
+ },
1195
+ {
1196
+ "id": "rotate_bottom_right_panel",
1197
+ "type": "path",
1198
+ "d": "M 682 435 L 908 435 Q 930 435 930 457 L 930 653 Q 930 675 908 675 L 682 675 Q 660 675 660 653 L 660 457 Q 660 435 682 435 Z",
1199
+ "fill": "#0d1a2e",
1200
+ "stroke": "#193252",
1201
+ "strokeWidth": 1.5
1202
+ },
1203
+ {
1204
+ "id": "rotate_bottom_right_title",
1205
+ "type": "text",
1206
+ "x": 680,
1207
+ "y": 453,
1208
+ "text": "Bottom-right origin",
1209
+ "fontSize": 16,
1210
+ "fontFamily": "Roboto, Arial, sans-serif",
1211
+ "weight": 700,
1212
+ "fill": "#f8fafc"
1213
+ },
1214
+ {
1215
+ "id": "rotate_bottom_right_note",
1216
+ "type": "text",
1217
+ "x": 680,
1218
+ "y": 477,
1219
+ "text": "[180, 120]",
1220
+ "fontSize": 12,
1221
+ "fontFamily": "Roboto, Arial, sans-serif",
1222
+ "weight": 500,
1223
+ "fill": "#94a3b8"
1224
+ },
1225
+ {
1226
+ "id": "rotate_bottom_right_guide_h",
1227
+ "type": "path",
1228
+ "d": "M 680 587 L 910 587",
1229
+ "fill": "none",
1230
+ "stroke": "#173054",
1231
+ "strokeWidth": 1,
1232
+ "dashArray": [
1233
+ 6,
1234
+ 6
1235
+ ]
1236
+ },
1237
+ {
1238
+ "id": "rotate_bottom_right_guide_v",
1239
+ "type": "path",
1240
+ "d": "M 800 503 L 800 655",
1241
+ "fill": "none",
1242
+ "stroke": "#173054",
1243
+ "strokeWidth": 1,
1244
+ "dashArray": [
1245
+ 6,
1246
+ 6
1247
+ ]
1248
+ },
1249
+ {
1250
+ "id": "rotate_bottom_right_frame",
1251
+ "type": "path",
1252
+ "d": "M 728 527 L 872 527 Q 890 527 890 545 L 890 629 Q 890 647 872 647 L 728 647 Q 710 647 710 629 L 710 545 Q 710 527 728 527 Z",
1253
+ "fill": "none",
1254
+ "stroke": "#31537f",
1255
+ "strokeWidth": 1,
1256
+ "dashArray": [
1257
+ 8,
1258
+ 6
1259
+ ]
1260
+ },
1261
+ {
1262
+ "id": "rotate_bottom_right_origin",
1263
+ "type": "group",
1264
+ "x": 874,
1265
+ "y": 631,
1266
+ "children": [
1267
+ {
1268
+ "id": "rotate_bottom_right_origin_cross_h",
1269
+ "type": "path",
1270
+ "d": "M 0 16 L 32 16",
1271
+ "fill": "none",
1272
+ "stroke": "#fde047",
1273
+ "strokeWidth": 2,
1274
+ "strokeCap": "round"
1275
+ },
1276
+ {
1277
+ "id": "rotate_bottom_right_origin_cross_v",
1278
+ "type": "path",
1279
+ "d": "M 16 0 L 16 32",
1280
+ "fill": "none",
1281
+ "stroke": "#fde047",
1282
+ "strokeWidth": 2,
1283
+ "strokeCap": "round"
1284
+ },
1285
+ {
1286
+ "id": "rotate_bottom_right_origin_dot",
1287
+ "type": "path",
1288
+ "d": "M 10 16 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0",
1289
+ "fill": "#fde047",
1290
+ "stroke": "#0f172a",
1291
+ "strokeWidth": 1.5
1292
+ }
1293
+ ]
1294
+ },
1295
+ {
1296
+ "id": "rotate_bottom_right_group",
1297
+ "type": "group",
1298
+ "x": 710,
1299
+ "y": 527,
1300
+ "width": 180,
1301
+ "height": 120,
1302
+ "origin": [
1303
+ 890,
1304
+ 647
1305
+ ],
1306
+ "children": [
1307
+ {
1308
+ "id": "rotate_bottom_right_main",
1309
+ "type": "path",
1310
+ "d": "M 18 18 L 162 18 Q 180 18 180 36 L 180 102 Q 180 120 162 120 L 18 120 Q 0 120 0 102 L 0 36 Q 0 18 18 18 Z",
1311
+ "fill": "#22c55e",
1312
+ "stroke": "#dbeafe",
1313
+ "strokeWidth": 2
1314
+ },
1315
+ {
1316
+ "id": "rotate_bottom_right_tag",
1317
+ "type": "path",
1318
+ "d": "M 22 0 L 68 0 Q 78 0 78 10 L 78 10 Q 78 20 68 20 L 22 20 Q 12 20 12 10 L 12 10 Q 12 0 22 0 Z",
1319
+ "fill": "#0f172a",
1320
+ "stroke": "#7dd3fc",
1321
+ "strokeWidth": 1.5
1322
+ },
1323
+ {
1324
+ "id": "rotate_bottom_right_tag_text",
1325
+ "type": "text",
1326
+ "x": 45,
1327
+ "y": 10,
1328
+ "text": "GROUP",
1329
+ "align": "center",
1330
+ "valign": "middle",
1331
+ "fontSize": 10,
1332
+ "fontFamily": "Roboto, Arial, sans-serif",
1333
+ "weight": 700,
1334
+ "fill": "#7dd3fc"
1335
+ },
1336
+ {
1337
+ "id": "rotate_bottom_right_accent",
1338
+ "type": "path",
1339
+ "d": "M 138 38 L 152 38 Q 162 38 162 48 L 162 62 Q 162 72 152 72 L 138 72 Q 128 72 128 62 L 128 48 Q 128 38 138 38 Z",
1340
+ "fill": "#0f172a",
1341
+ "stroke": "#ffffff",
1342
+ "strokeWidth": 1.5
1343
+ },
1344
+ {
1345
+ "id": "rotate_bottom_right_bar_1",
1346
+ "type": "path",
1347
+ "d": "M 21 50 L 89 50 Q 94 50 94 55 L 94 55 Q 94 60 89 60 L 21 60 Q 16 60 16 55 L 16 55 Q 16 50 21 50 Z",
1348
+ "fill": "rgba(255,255,255,0.9)",
1349
+ "stroke": "none"
1350
+ },
1351
+ {
1352
+ "id": "rotate_bottom_right_bar_2",
1353
+ "type": "path",
1354
+ "d": "M 21 70 L 123 70 Q 128 70 128 75 L 128 75 Q 128 80 123 80 L 21 80 Q 16 80 16 75 L 16 75 Q 16 70 21 70 Z",
1355
+ "fill": "rgba(255,255,255,0.65)",
1356
+ "stroke": "none"
1357
+ },
1358
+ {
1359
+ "id": "rotate_bottom_right_footer",
1360
+ "type": "path",
1361
+ "d": "M 22 92 L 102 92 Q 108 92 108 98 L 108 98 Q 108 104 102 104 L 22 104 Q 16 104 16 98 L 16 98 Q 16 92 22 92 Z",
1362
+ "fill": "rgba(255,255,255,0.35)",
1363
+ "stroke": "none"
1364
+ }
1365
+ ],
1366
+ "timeline": {
1367
+ "tracks": {
1368
+ "rotation": {
1369
+ "keyframes": [
1370
+ {
1371
+ "time": 0,
1372
+ "value": 0,
1373
+ "out": {
1374
+ "type": "cubicBezier",
1375
+ "x1": 0,
1376
+ "y1": 0,
1377
+ "x2": 0.2,
1378
+ "y2": 1
1379
+ }
1380
+ },
1381
+ {
1382
+ "time": 1.5,
1383
+ "value": 42,
1384
+ "out": {
1385
+ "type": "cubicBezier",
1386
+ "x1": 0.25,
1387
+ "y1": 0.1,
1388
+ "x2": 0.25,
1389
+ "y2": 1
1390
+ }
1391
+ },
1392
+ {
1393
+ "time": 3,
1394
+ "value": -28,
1395
+ "out": {
1396
+ "type": "cubicBezier",
1397
+ "x1": 0.25,
1398
+ "y1": 0.1,
1399
+ "x2": 0.25,
1400
+ "y2": 1
1401
+ }
1402
+ },
1403
+ {
1404
+ "time": 4.5,
1405
+ "value": 18,
1406
+ "out": {
1407
+ "type": "cubicBezier",
1408
+ "x1": 0.25,
1409
+ "y1": 0.1,
1410
+ "x2": 0.25,
1411
+ "y2": 1
1412
+ }
1413
+ },
1414
+ {
1415
+ "time": 5.8,
1416
+ "value": 0
1417
+ }
1418
+ ]
1419
+ }
1420
+ }
1421
+ }
1422
+ },
1423
+ {
1424
+ "id": "scale_outside_right_panel",
1425
+ "type": "path",
1426
+ "d": "M 977 150 L 1203 150 Q 1225 150 1225 172 L 1225 368 Q 1225 390 1203 390 L 977 390 Q 955 390 955 368 L 955 172 Q 955 150 977 150 Z",
1427
+ "fill": "#0d1a2e",
1428
+ "stroke": "#193252",
1429
+ "strokeWidth": 1.5
1430
+ },
1431
+ {
1432
+ "id": "scale_outside_right_title",
1433
+ "type": "text",
1434
+ "x": 975,
1435
+ "y": 168,
1436
+ "text": "Outside-right origin",
1437
+ "fontSize": 16,
1438
+ "fontFamily": "Roboto, Arial, sans-serif",
1439
+ "weight": 700,
1440
+ "fill": "#f8fafc"
1441
+ },
1442
+ {
1443
+ "id": "scale_outside_right_note",
1444
+ "type": "text",
1445
+ "x": 975,
1446
+ "y": 192,
1447
+ "text": "[220, 60]",
1448
+ "fontSize": 12,
1449
+ "fontFamily": "Roboto, Arial, sans-serif",
1450
+ "weight": 500,
1451
+ "fill": "#94a3b8"
1452
+ },
1453
+ {
1454
+ "id": "scale_outside_right_guide_h",
1455
+ "type": "path",
1456
+ "d": "M 975 302 L 1205 302",
1457
+ "fill": "none",
1458
+ "stroke": "#173054",
1459
+ "strokeWidth": 1,
1460
+ "dashArray": [
1461
+ 6,
1462
+ 6
1463
+ ]
1464
+ },
1465
+ {
1466
+ "id": "scale_outside_right_guide_v",
1467
+ "type": "path",
1468
+ "d": "M 1095 218 L 1095 370",
1469
+ "fill": "none",
1470
+ "stroke": "#173054",
1471
+ "strokeWidth": 1,
1472
+ "dashArray": [
1473
+ 6,
1474
+ 6
1475
+ ]
1476
+ },
1477
+ {
1478
+ "id": "scale_outside_right_frame",
1479
+ "type": "path",
1480
+ "d": "M 1023 242 L 1167 242 Q 1185 242 1185 260 L 1185 344 Q 1185 362 1167 362 L 1023 362 Q 1005 362 1005 344 L 1005 260 Q 1005 242 1023 242 Z",
1481
+ "fill": "none",
1482
+ "stroke": "#31537f",
1483
+ "strokeWidth": 1,
1484
+ "dashArray": [
1485
+ 8,
1486
+ 6
1487
+ ]
1488
+ },
1489
+ {
1490
+ "id": "scale_outside_right_origin",
1491
+ "type": "group",
1492
+ "x": 1209,
1493
+ "y": 286,
1494
+ "children": [
1495
+ {
1496
+ "id": "scale_outside_right_origin_cross_h",
1497
+ "type": "path",
1498
+ "d": "M 0 16 L 32 16",
1499
+ "fill": "none",
1500
+ "stroke": "#fde047",
1501
+ "strokeWidth": 2,
1502
+ "strokeCap": "round"
1503
+ },
1504
+ {
1505
+ "id": "scale_outside_right_origin_cross_v",
1506
+ "type": "path",
1507
+ "d": "M 16 0 L 16 32",
1508
+ "fill": "none",
1509
+ "stroke": "#fde047",
1510
+ "strokeWidth": 2,
1511
+ "strokeCap": "round"
1512
+ },
1513
+ {
1514
+ "id": "scale_outside_right_origin_dot",
1515
+ "type": "path",
1516
+ "d": "M 10 16 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0",
1517
+ "fill": "#fde047",
1518
+ "stroke": "#0f172a",
1519
+ "strokeWidth": 1.5
1520
+ }
1521
+ ]
1522
+ },
1523
+ {
1524
+ "id": "scale_outside_right_group",
1525
+ "type": "group",
1526
+ "x": 1005,
1527
+ "y": 242,
1528
+ "width": 180,
1529
+ "height": 120,
1530
+ "origin": [
1531
+ 1225,
1532
+ 302
1533
+ ],
1534
+ "children": [
1535
+ {
1536
+ "id": "scale_outside_right_main",
1537
+ "type": "path",
1538
+ "d": "M 18 18 L 162 18 Q 180 18 180 36 L 180 102 Q 180 120 162 120 L 18 120 Q 0 120 0 102 L 0 36 Q 0 18 18 18 Z",
1539
+ "fill": "#f59e0b",
1540
+ "stroke": "#dbeafe",
1541
+ "strokeWidth": 2
1542
+ },
1543
+ {
1544
+ "id": "scale_outside_right_tag",
1545
+ "type": "path",
1546
+ "d": "M 22 0 L 68 0 Q 78 0 78 10 L 78 10 Q 78 20 68 20 L 22 20 Q 12 20 12 10 L 12 10 Q 12 0 22 0 Z",
1547
+ "fill": "#0f172a",
1548
+ "stroke": "#7dd3fc",
1549
+ "strokeWidth": 1.5
1550
+ },
1551
+ {
1552
+ "id": "scale_outside_right_tag_text",
1553
+ "type": "text",
1554
+ "x": 45,
1555
+ "y": 10,
1556
+ "text": "GROUP",
1557
+ "align": "center",
1558
+ "valign": "middle",
1559
+ "fontSize": 10,
1560
+ "fontFamily": "Roboto, Arial, sans-serif",
1561
+ "weight": 700,
1562
+ "fill": "#7dd3fc"
1563
+ },
1564
+ {
1565
+ "id": "scale_outside_right_accent",
1566
+ "type": "path",
1567
+ "d": "M 138 38 L 152 38 Q 162 38 162 48 L 162 62 Q 162 72 152 72 L 138 72 Q 128 72 128 62 L 128 48 Q 128 38 138 38 Z",
1568
+ "fill": "#0f172a",
1569
+ "stroke": "#ffffff",
1570
+ "strokeWidth": 1.5
1571
+ },
1572
+ {
1573
+ "id": "scale_outside_right_bar_1",
1574
+ "type": "path",
1575
+ "d": "M 21 50 L 89 50 Q 94 50 94 55 L 94 55 Q 94 60 89 60 L 21 60 Q 16 60 16 55 L 16 55 Q 16 50 21 50 Z",
1576
+ "fill": "rgba(255,255,255,0.9)",
1577
+ "stroke": "none"
1578
+ },
1579
+ {
1580
+ "id": "scale_outside_right_bar_2",
1581
+ "type": "path",
1582
+ "d": "M 21 70 L 123 70 Q 128 70 128 75 L 128 75 Q 128 80 123 80 L 21 80 Q 16 80 16 75 L 16 75 Q 16 70 21 70 Z",
1583
+ "fill": "rgba(255,255,255,0.65)",
1584
+ "stroke": "none"
1585
+ },
1586
+ {
1587
+ "id": "scale_outside_right_footer",
1588
+ "type": "path",
1589
+ "d": "M 22 92 L 102 92 Q 108 92 108 98 L 108 98 Q 108 104 102 104 L 22 104 Q 16 104 16 98 L 16 98 Q 16 92 22 92 Z",
1590
+ "fill": "rgba(255,255,255,0.35)",
1591
+ "stroke": "none"
1592
+ }
1593
+ ],
1594
+ "timeline": {
1595
+ "tracks": {
1596
+ "scale": {
1597
+ "keyframes": [
1598
+ {
1599
+ "time": 0,
1600
+ "value": 1,
1601
+ "out": {
1602
+ "type": "cubicBezier",
1603
+ "x1": 0,
1604
+ "y1": 0,
1605
+ "x2": 0.2,
1606
+ "y2": 1
1607
+ }
1608
+ },
1609
+ {
1610
+ "time": 1.3,
1611
+ "value": 1.45,
1612
+ "out": {
1613
+ "type": "cubicBezier",
1614
+ "x1": 0.25,
1615
+ "y1": 0.1,
1616
+ "x2": 0.25,
1617
+ "y2": 1
1618
+ }
1619
+ },
1620
+ {
1621
+ "time": 2.6,
1622
+ "value": 0.72,
1623
+ "out": {
1624
+ "type": "cubicBezier",
1625
+ "x1": 0.25,
1626
+ "y1": 0.1,
1627
+ "x2": 0.25,
1628
+ "y2": 1
1629
+ }
1630
+ },
1631
+ {
1632
+ "time": 4,
1633
+ "value": 1.18,
1634
+ "out": {
1635
+ "type": "cubicBezier",
1636
+ "x1": 0.25,
1637
+ "y1": 0.1,
1638
+ "x2": 0.25,
1639
+ "y2": 1
1640
+ }
1641
+ },
1642
+ {
1643
+ "time": 5.4,
1644
+ "value": 1
1645
+ }
1646
+ ]
1647
+ }
1648
+ }
1649
+ }
1650
+ },
1651
+ {
1652
+ "id": "rotate_outside_right_panel",
1653
+ "type": "path",
1654
+ "d": "M 977 435 L 1203 435 Q 1225 435 1225 457 L 1225 653 Q 1225 675 1203 675 L 977 675 Q 955 675 955 653 L 955 457 Q 955 435 977 435 Z",
1655
+ "fill": "#0d1a2e",
1656
+ "stroke": "#193252",
1657
+ "strokeWidth": 1.5
1658
+ },
1659
+ {
1660
+ "id": "rotate_outside_right_title",
1661
+ "type": "text",
1662
+ "x": 975,
1663
+ "y": 453,
1664
+ "text": "Outside-right origin",
1665
+ "fontSize": 16,
1666
+ "fontFamily": "Roboto, Arial, sans-serif",
1667
+ "weight": 700,
1668
+ "fill": "#f8fafc"
1669
+ },
1670
+ {
1671
+ "id": "rotate_outside_right_note",
1672
+ "type": "text",
1673
+ "x": 975,
1674
+ "y": 477,
1675
+ "text": "[220, 60]",
1676
+ "fontSize": 12,
1677
+ "fontFamily": "Roboto, Arial, sans-serif",
1678
+ "weight": 500,
1679
+ "fill": "#94a3b8"
1680
+ },
1681
+ {
1682
+ "id": "rotate_outside_right_guide_h",
1683
+ "type": "path",
1684
+ "d": "M 975 587 L 1205 587",
1685
+ "fill": "none",
1686
+ "stroke": "#173054",
1687
+ "strokeWidth": 1,
1688
+ "dashArray": [
1689
+ 6,
1690
+ 6
1691
+ ]
1692
+ },
1693
+ {
1694
+ "id": "rotate_outside_right_guide_v",
1695
+ "type": "path",
1696
+ "d": "M 1095 503 L 1095 655",
1697
+ "fill": "none",
1698
+ "stroke": "#173054",
1699
+ "strokeWidth": 1,
1700
+ "dashArray": [
1701
+ 6,
1702
+ 6
1703
+ ]
1704
+ },
1705
+ {
1706
+ "id": "rotate_outside_right_frame",
1707
+ "type": "path",
1708
+ "d": "M 1023 527 L 1167 527 Q 1185 527 1185 545 L 1185 629 Q 1185 647 1167 647 L 1023 647 Q 1005 647 1005 629 L 1005 545 Q 1005 527 1023 527 Z",
1709
+ "fill": "none",
1710
+ "stroke": "#31537f",
1711
+ "strokeWidth": 1,
1712
+ "dashArray": [
1713
+ 8,
1714
+ 6
1715
+ ]
1716
+ },
1717
+ {
1718
+ "id": "rotate_outside_right_origin",
1719
+ "type": "group",
1720
+ "x": 1209,
1721
+ "y": 571,
1722
+ "children": [
1723
+ {
1724
+ "id": "rotate_outside_right_origin_cross_h",
1725
+ "type": "path",
1726
+ "d": "M 0 16 L 32 16",
1727
+ "fill": "none",
1728
+ "stroke": "#fde047",
1729
+ "strokeWidth": 2,
1730
+ "strokeCap": "round"
1731
+ },
1732
+ {
1733
+ "id": "rotate_outside_right_origin_cross_v",
1734
+ "type": "path",
1735
+ "d": "M 16 0 L 16 32",
1736
+ "fill": "none",
1737
+ "stroke": "#fde047",
1738
+ "strokeWidth": 2,
1739
+ "strokeCap": "round"
1740
+ },
1741
+ {
1742
+ "id": "rotate_outside_right_origin_dot",
1743
+ "type": "path",
1744
+ "d": "M 10 16 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0",
1745
+ "fill": "#fde047",
1746
+ "stroke": "#0f172a",
1747
+ "strokeWidth": 1.5
1748
+ }
1749
+ ]
1750
+ },
1751
+ {
1752
+ "id": "rotate_outside_right_group",
1753
+ "type": "group",
1754
+ "x": 1005,
1755
+ "y": 527,
1756
+ "width": 180,
1757
+ "height": 120,
1758
+ "origin": [
1759
+ 1225,
1760
+ 587
1761
+ ],
1762
+ "children": [
1763
+ {
1764
+ "id": "rotate_outside_right_main",
1765
+ "type": "path",
1766
+ "d": "M 18 18 L 162 18 Q 180 18 180 36 L 180 102 Q 180 120 162 120 L 18 120 Q 0 120 0 102 L 0 36 Q 0 18 18 18 Z",
1767
+ "fill": "#f59e0b",
1768
+ "stroke": "#dbeafe",
1769
+ "strokeWidth": 2
1770
+ },
1771
+ {
1772
+ "id": "rotate_outside_right_tag",
1773
+ "type": "path",
1774
+ "d": "M 22 0 L 68 0 Q 78 0 78 10 L 78 10 Q 78 20 68 20 L 22 20 Q 12 20 12 10 L 12 10 Q 12 0 22 0 Z",
1775
+ "fill": "#0f172a",
1776
+ "stroke": "#7dd3fc",
1777
+ "strokeWidth": 1.5
1778
+ },
1779
+ {
1780
+ "id": "rotate_outside_right_tag_text",
1781
+ "type": "text",
1782
+ "x": 45,
1783
+ "y": 10,
1784
+ "text": "GROUP",
1785
+ "align": "center",
1786
+ "valign": "middle",
1787
+ "fontSize": 10,
1788
+ "fontFamily": "Roboto, Arial, sans-serif",
1789
+ "weight": 700,
1790
+ "fill": "#7dd3fc"
1791
+ },
1792
+ {
1793
+ "id": "rotate_outside_right_accent",
1794
+ "type": "path",
1795
+ "d": "M 138 38 L 152 38 Q 162 38 162 48 L 162 62 Q 162 72 152 72 L 138 72 Q 128 72 128 62 L 128 48 Q 128 38 138 38 Z",
1796
+ "fill": "#0f172a",
1797
+ "stroke": "#ffffff",
1798
+ "strokeWidth": 1.5
1799
+ },
1800
+ {
1801
+ "id": "rotate_outside_right_bar_1",
1802
+ "type": "path",
1803
+ "d": "M 21 50 L 89 50 Q 94 50 94 55 L 94 55 Q 94 60 89 60 L 21 60 Q 16 60 16 55 L 16 55 Q 16 50 21 50 Z",
1804
+ "fill": "rgba(255,255,255,0.9)",
1805
+ "stroke": "none"
1806
+ },
1807
+ {
1808
+ "id": "rotate_outside_right_bar_2",
1809
+ "type": "path",
1810
+ "d": "M 21 70 L 123 70 Q 128 70 128 75 L 128 75 Q 128 80 123 80 L 21 80 Q 16 80 16 75 L 16 75 Q 16 70 21 70 Z",
1811
+ "fill": "rgba(255,255,255,0.65)",
1812
+ "stroke": "none"
1813
+ },
1814
+ {
1815
+ "id": "rotate_outside_right_footer",
1816
+ "type": "path",
1817
+ "d": "M 22 92 L 102 92 Q 108 92 108 98 L 108 98 Q 108 104 102 104 L 22 104 Q 16 104 16 98 L 16 98 Q 16 92 22 92 Z",
1818
+ "fill": "rgba(255,255,255,0.35)",
1819
+ "stroke": "none"
1820
+ }
1821
+ ],
1822
+ "timeline": {
1823
+ "tracks": {
1824
+ "rotation": {
1825
+ "keyframes": [
1826
+ {
1827
+ "time": 0,
1828
+ "value": 0,
1829
+ "out": {
1830
+ "type": "cubicBezier",
1831
+ "x1": 0,
1832
+ "y1": 0,
1833
+ "x2": 0.2,
1834
+ "y2": 1
1835
+ }
1836
+ },
1837
+ {
1838
+ "time": 1.5,
1839
+ "value": 42,
1840
+ "out": {
1841
+ "type": "cubicBezier",
1842
+ "x1": 0.25,
1843
+ "y1": 0.1,
1844
+ "x2": 0.25,
1845
+ "y2": 1
1846
+ }
1847
+ },
1848
+ {
1849
+ "time": 3,
1850
+ "value": -28,
1851
+ "out": {
1852
+ "type": "cubicBezier",
1853
+ "x1": 0.25,
1854
+ "y1": 0.1,
1855
+ "x2": 0.25,
1856
+ "y2": 1
1857
+ }
1858
+ },
1859
+ {
1860
+ "time": 4.5,
1861
+ "value": 18,
1862
+ "out": {
1863
+ "type": "cubicBezier",
1864
+ "x1": 0.25,
1865
+ "y1": 0.1,
1866
+ "x2": 0.25,
1867
+ "y2": 1
1868
+ }
1869
+ },
1870
+ {
1871
+ "time": 5.8,
1872
+ "value": 0
1873
+ }
1874
+ ]
1875
+ }
1876
+ }
1877
+ }
1878
+ }
1879
+ ]
1880
+ }