@oim-media/spec 0.0.0-stage → 1.27.9

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 (131) hide show
  1. package/BINARY_SPEC.md +190 -0
  2. package/CANONICAL_SPEC.md +409 -0
  3. package/LICENSE +55 -0
  4. package/NOTICE +6 -0
  5. package/README.md +445 -2
  6. package/action-cases.json +13 -0
  7. package/artistic-text-cases.json +690 -0
  8. package/canonical-cases.json +6 -0
  9. package/keyframe-cases.json +32 -0
  10. package/keys.json +22 -0
  11. package/marks-cases.json +34 -0
  12. package/package.json +46 -3
  13. package/pattern-cases.json +552 -0
  14. package/schema/oim.schema.json +2920 -0
  15. package/schema/ovm.schema.json +2701 -0
  16. package/text-effect-cases.json +835 -0
  17. package/tools/parity-core.mjs +122 -0
  18. package/tools/parity.mjs +86 -0
  19. package/vectors/README.md +103 -0
  20. package/vectors/accessibility.expected.json +67 -0
  21. package/vectors/accessibility.oim.png +0 -0
  22. package/vectors/artistic-text.expected.json +84 -0
  23. package/vectors/artistic-text.oim.png +0 -0
  24. package/vectors/asymmetric-borders.expected.json +29 -0
  25. package/vectors/asymmetric-borders.oim.png +0 -0
  26. package/vectors/background-pattern-order.expected.json +95 -0
  27. package/vectors/background-pattern-order.oim.png +0 -0
  28. package/vectors/basic-text.expected.json +29 -0
  29. package/vectors/basic-text.oim.png +0 -0
  30. package/vectors/color-blending-opacity.expected.json +47 -0
  31. package/vectors/color-blending-opacity.oim.png +0 -0
  32. package/vectors/crop.expected.json +32 -0
  33. package/vectors/crop.oim.png +0 -0
  34. package/vectors/embedded-font-woff.expected.json +57 -0
  35. package/vectors/embedded-font-woff.oim.png +0 -0
  36. package/vectors/extreme-aspect-ratios.expected.json +29 -0
  37. package/vectors/extreme-aspect-ratios.oim.png +0 -0
  38. package/vectors/filter-effects.expected.json +33 -0
  39. package/vectors/filter-effects.oim.png +0 -0
  40. package/vectors/flip.expected.json +47 -0
  41. package/vectors/flip.oim.png +0 -0
  42. package/vectors/frame-shapes.expected.json +73 -0
  43. package/vectors/frame-shapes.oim.png +0 -0
  44. package/vectors/full-monty-composite.expected.json +96 -0
  45. package/vectors/full-monty-composite.oim.png +0 -0
  46. package/vectors/golden/accessibility.web.png +0 -0
  47. package/vectors/golden/artistic-text.web.png +0 -0
  48. package/vectors/golden/asymmetric-borders.web.png +0 -0
  49. package/vectors/golden/background-pattern-order.web.png +0 -0
  50. package/vectors/golden/basic-text.web.png +0 -0
  51. package/vectors/golden/color-blending-opacity.web.png +0 -0
  52. package/vectors/golden/crop.web.png +0 -0
  53. package/vectors/golden/embedded-font-woff.web.png +0 -0
  54. package/vectors/golden/exceptions.json +3 -0
  55. package/vectors/golden/extreme-aspect-ratios.web.png +0 -0
  56. package/vectors/golden/filter-effects.web.png +0 -0
  57. package/vectors/golden/flip.web.png +0 -0
  58. package/vectors/golden/frame-shapes.web.png +0 -0
  59. package/vectors/golden/full-monty-composite.web.png +0 -0
  60. package/vectors/golden/groups-and-parallax.web.png +0 -0
  61. package/vectors/golden/image-fill.web.png +0 -0
  62. package/vectors/golden/interactive-chained-actions.web.png +0 -0
  63. package/vectors/golden/interactive-hover.web.png +0 -0
  64. package/vectors/golden/interactive.web.png +0 -0
  65. package/vectors/golden/layer-blur.web.png +0 -0
  66. package/vectors/golden/layer-grain.web.png +0 -0
  67. package/vectors/golden/layer-ordering-zindex.web.png +0 -0
  68. package/vectors/golden/legacy-text-chunk.web.png +0 -0
  69. package/vectors/golden/media-filters.web.png +0 -0
  70. package/vectors/golden/multi-container-layout.web.png +0 -0
  71. package/vectors/golden/multilang-cjk-rtl.web.png +0 -0
  72. package/vectors/golden/nested-groups.web.png +0 -0
  73. package/vectors/golden/palettes.web.png +0 -0
  74. package/vectors/golden/parallax-infinite.web.png +0 -0
  75. package/vectors/golden/pattern-color-roles.web.png +0 -0
  76. package/vectors/golden/reedit-english.web.png +0 -0
  77. package/vectors/golden/reveal-and-play.web.png +0 -0
  78. package/vectors/golden/shadow-effects.web.png +0 -0
  79. package/vectors/golden/shape-shadows.web.png +0 -0
  80. package/vectors/golden/strokes-and-borders.web.png +0 -0
  81. package/vectors/golden/text-runs-precalculated.web.png +0 -0
  82. package/vectors/golden/transparent-background.web.png +0 -0
  83. package/vectors/golden/typography-styling.web.png +0 -0
  84. package/vectors/groups-and-parallax.expected.json +90 -0
  85. package/vectors/groups-and-parallax.oim.png +0 -0
  86. package/vectors/image-fill.expected.json +54 -0
  87. package/vectors/image-fill.oim.png +0 -0
  88. package/vectors/interactive-chained-actions.expected.json +77 -0
  89. package/vectors/interactive-chained-actions.oim.png +0 -0
  90. package/vectors/interactive-hover.expected.json +36 -0
  91. package/vectors/interactive-hover.oim.png +0 -0
  92. package/vectors/interactive.expected.json +121 -0
  93. package/vectors/interactive.oim.png +0 -0
  94. package/vectors/layer-blur.expected.json +48 -0
  95. package/vectors/layer-blur.oim.png +0 -0
  96. package/vectors/layer-grain.expected.json +52 -0
  97. package/vectors/layer-grain.oim.png +0 -0
  98. package/vectors/layer-ordering-zindex.expected.json +62 -0
  99. package/vectors/layer-ordering-zindex.oim.png +0 -0
  100. package/vectors/legacy-text-chunk.expected.json +29 -0
  101. package/vectors/legacy-text-chunk.oim.png +0 -0
  102. package/vectors/media-filters.expected.json +50 -0
  103. package/vectors/media-filters.oim.png +0 -0
  104. package/vectors/multi-container-layout.expected.json +45 -0
  105. package/vectors/multi-container-layout.oim.png +0 -0
  106. package/vectors/multilang-cjk-rtl.expected.json +30 -0
  107. package/vectors/multilang-cjk-rtl.oim.png +0 -0
  108. package/vectors/nested-groups.expected.json +68 -0
  109. package/vectors/nested-groups.oim.png +0 -0
  110. package/vectors/palettes.expected.json +57 -0
  111. package/vectors/palettes.oim.png +0 -0
  112. package/vectors/parallax-infinite.expected.json +39 -0
  113. package/vectors/parallax-infinite.oim.png +0 -0
  114. package/vectors/pattern-color-roles.expected.json +68 -0
  115. package/vectors/pattern-color-roles.oim.png +0 -0
  116. package/vectors/reedit-english.expected.json +45 -0
  117. package/vectors/reedit-english.oim.png +0 -0
  118. package/vectors/reveal-and-play.expected.json +107 -0
  119. package/vectors/reveal-and-play.oim.png +0 -0
  120. package/vectors/shadow-effects.expected.json +34 -0
  121. package/vectors/shadow-effects.oim.png +0 -0
  122. package/vectors/shape-shadows.expected.json +62 -0
  123. package/vectors/shape-shadows.oim.png +0 -0
  124. package/vectors/strokes-and-borders.expected.json +31 -0
  125. package/vectors/strokes-and-borders.oim.png +0 -0
  126. package/vectors/text-runs-precalculated.expected.json +46 -0
  127. package/vectors/text-runs-precalculated.oim.png +0 -0
  128. package/vectors/transparent-background.expected.json +30 -0
  129. package/vectors/transparent-background.oim.png +0 -0
  130. package/vectors/typography-styling.expected.json +34 -0
  131. package/vectors/typography-styling.oim.png +0 -0
@@ -0,0 +1,2701 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://oim.media/spec/1.27.9/ovm.schema.json",
4
+ "title": "OVM document metadata",
5
+ "specVersion": "1.27.9",
6
+ "type": "object",
7
+ "properties": {
8
+ "ovm_version": {
9
+ "type": "string"
10
+ },
11
+ "version": {
12
+ "type": "string"
13
+ },
14
+ "ovm_id": {
15
+ "type": "string",
16
+ "maxLength": 128
17
+ },
18
+ "image_hash": {
19
+ "type": "string",
20
+ "maxLength": 64
21
+ },
22
+ "immutable_lock": {
23
+ "type": "boolean"
24
+ },
25
+ "redirect_membership_verified": {
26
+ "type": "boolean",
27
+ "deprecated": true,
28
+ "description": "Retired in 1.1.0 with allow_external_urls. A new reader must not write it."
29
+ },
30
+ "terms_accepted": {
31
+ "type": "boolean",
32
+ "deprecated": true,
33
+ "description": "Retired in 1.1.0 with allow_external_urls. A new reader must not write it."
34
+ },
35
+ "allowed_domains": {
36
+ "type": "array",
37
+ "items": {
38
+ "type": "string",
39
+ "maxLength": 253
40
+ }
41
+ },
42
+ "metadata": {
43
+ "type": "object",
44
+ "properties": {
45
+ "fps": {
46
+ "type": "number",
47
+ "minimum": 1,
48
+ "maximum": 120
49
+ },
50
+ "resolution": {
51
+ "type": "array",
52
+ "prefixItems": [
53
+ {
54
+ "type": "number"
55
+ },
56
+ {
57
+ "type": "number"
58
+ }
59
+ ],
60
+ "items": false,
61
+ "minItems": 2,
62
+ "maxItems": 2
63
+ }
64
+ }
65
+ },
66
+ "zones": {
67
+ "type": "array",
68
+ "items": {
69
+ "$ref": "#/$defs/zone"
70
+ }
71
+ },
72
+ "slots": {
73
+ "maxItems": 150,
74
+ "type": "array",
75
+ "items": {
76
+ "$ref": "#/$defs/slot"
77
+ }
78
+ },
79
+ "elements": {
80
+ "maxItems": 150,
81
+ "type": "array",
82
+ "items": {
83
+ "$ref": "#/$defs/slot"
84
+ },
85
+ "deprecated": true,
86
+ "description": "Retired in 1.12.0 (contract audit, 10 Oct 2026): slots is the one name; readers still accept it."
87
+ },
88
+ "layers": {
89
+ "maxItems": 150,
90
+ "type": "array",
91
+ "items": {
92
+ "$ref": "#/$defs/slot"
93
+ },
94
+ "deprecated": true,
95
+ "description": "Retired in 1.12.0 (contract audit, 10 Oct 2026): slots is the one name; readers still accept it."
96
+ },
97
+ "capabilities": {
98
+ "type": "array",
99
+ "items": {
100
+ "type": "string",
101
+ "enum": [
102
+ "vector_parallax",
103
+ "infinite_parallax",
104
+ "text_marks",
105
+ "image_fill",
106
+ "media_filters",
107
+ "frame_shapes"
108
+ ]
109
+ }
110
+ },
111
+ "capabilities_required": {
112
+ "type": "array",
113
+ "items": {
114
+ "type": "string",
115
+ "enum": [
116
+ "vector_parallax",
117
+ "infinite_parallax",
118
+ "text_marks",
119
+ "image_fill",
120
+ "media_filters",
121
+ "frame_shapes"
122
+ ]
123
+ }
124
+ },
125
+ "signature": {
126
+ "type": "string"
127
+ },
128
+ "key_version": {
129
+ "type": "string"
130
+ },
131
+ "signed_at": {
132
+ "type": "string",
133
+ "format": "date-time",
134
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
135
+ },
136
+ "timestamp": {
137
+ "type": "string",
138
+ "format": "date-time",
139
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
140
+ }
141
+ },
142
+ "required": [
143
+ "slots"
144
+ ],
145
+ "additionalProperties": {},
146
+ "$defs": {
147
+ "zone": {
148
+ "type": "object",
149
+ "properties": {
150
+ "id": {
151
+ "type": "string",
152
+ "minLength": 1,
153
+ "maxLength": 128
154
+ },
155
+ "position": {
156
+ "type": "array",
157
+ "prefixItems": [
158
+ {
159
+ "type": "number",
160
+ "minimum": 0,
161
+ "maximum": 100
162
+ },
163
+ {
164
+ "type": "number",
165
+ "minimum": 0,
166
+ "maximum": 100
167
+ }
168
+ ],
169
+ "items": false,
170
+ "minItems": 2,
171
+ "maxItems": 2
172
+ },
173
+ "size": {
174
+ "type": "array",
175
+ "prefixItems": [
176
+ {
177
+ "type": "number",
178
+ "minimum": 0,
179
+ "maximum": 100
180
+ },
181
+ {
182
+ "type": "number",
183
+ "minimum": 0,
184
+ "maximum": 100
185
+ }
186
+ ],
187
+ "items": false,
188
+ "minItems": 2,
189
+ "maxItems": 2
190
+ },
191
+ "style": {
192
+ "type": "object",
193
+ "propertyNames": {
194
+ "type": "string"
195
+ },
196
+ "additionalProperties": {}
197
+ }
198
+ },
199
+ "required": [
200
+ "id",
201
+ "position",
202
+ "size"
203
+ ]
204
+ },
205
+ "slot": {
206
+ "type": "object",
207
+ "properties": {
208
+ "id": {
209
+ "type": "string",
210
+ "minLength": 1,
211
+ "maxLength": 128
212
+ },
213
+ "type": {
214
+ "type": "string",
215
+ "enum": [
216
+ "text",
217
+ "image",
218
+ "lottie",
219
+ "zone",
220
+ "geo",
221
+ "shape",
222
+ "draw",
223
+ "filter",
224
+ "container",
225
+ "group",
226
+ "component",
227
+ "mask",
228
+ "svg",
229
+ "pattern",
230
+ "artistic-text"
231
+ ]
232
+ },
233
+ "languages": {
234
+ "default": [
235
+ "*"
236
+ ],
237
+ "type": "array",
238
+ "items": {
239
+ "$ref": "#/$defs/__schema0"
240
+ }
241
+ },
242
+ "pendingTranslation": {
243
+ "type": "array",
244
+ "items": {
245
+ "$ref": "#/$defs/__schema0"
246
+ }
247
+ },
248
+ "align": {
249
+ "type": "string",
250
+ "enum": [
251
+ "left",
252
+ "center",
253
+ "right"
254
+ ]
255
+ },
256
+ "content": {
257
+ "$ref": "#/$defs/content"
258
+ },
259
+ "style": {
260
+ "$ref": "#/$defs/style"
261
+ },
262
+ "position": {
263
+ "$ref": "#/$defs/position"
264
+ },
265
+ "parallax": {
266
+ "$ref": "#/$defs/parallax"
267
+ },
268
+ "tracking_data": {
269
+ "type": "array",
270
+ "items": {
271
+ "$ref": "#/$defs/trackingKeyframe"
272
+ }
273
+ },
274
+ "width_px": {
275
+ "type": "number"
276
+ },
277
+ "height_px": {
278
+ "type": "number"
279
+ },
280
+ "zone_id": {
281
+ "type": "string",
282
+ "maxLength": 128
283
+ },
284
+ "name": {
285
+ "type": "string",
286
+ "maxLength": 256
287
+ },
288
+ "interaction": {
289
+ "$ref": "#/$defs/interaction"
290
+ },
291
+ "p": {
292
+ "deprecated": true,
293
+ "description": "Retired in 1.12.0 (contract audit, 10 Oct 2026): use position.",
294
+ "$ref": "#/$defs/position"
295
+ },
296
+ "s": {
297
+ "type": "array",
298
+ "prefixItems": [
299
+ {
300
+ "type": "number"
301
+ },
302
+ {
303
+ "type": "number"
304
+ }
305
+ ],
306
+ "items": false,
307
+ "minItems": 2,
308
+ "maxItems": 2,
309
+ "deprecated": true,
310
+ "description": "Retired in 1.12.0 (contract audit, 10 Oct 2026): no writer emits it."
311
+ },
312
+ "st": {
313
+ "deprecated": true,
314
+ "description": "Retired in 1.12.0 (contract audit, 10 Oct 2026): use style.",
315
+ "$ref": "#/$defs/style"
316
+ },
317
+ "c": {
318
+ "deprecated": true,
319
+ "description": "Retired in 1.12.0 (contract audit, 10 Oct 2026): use content.",
320
+ "$ref": "#/$defs/content"
321
+ },
322
+ "t": {
323
+ "type": "array",
324
+ "items": {
325
+ "$ref": "#/$defs/trackingKeyframe"
326
+ },
327
+ "deprecated": true,
328
+ "description": "Retired in 1.12.0 (contract audit, 10 Oct 2026): use tracking_data."
329
+ }
330
+ },
331
+ "required": [
332
+ "id"
333
+ ]
334
+ },
335
+ "__schema0": {
336
+ "type": "string",
337
+ "maxLength": 10
338
+ },
339
+ "content": {
340
+ "type": "object",
341
+ "propertyNames": {
342
+ "type": "string"
343
+ },
344
+ "additionalProperties": {
345
+ "$ref": "#/$defs/__schema2"
346
+ }
347
+ },
348
+ "__schema2": {
349
+ "type": "string",
350
+ "maxLength": 10000000
351
+ },
352
+ "style": {
353
+ "type": "object",
354
+ "properties": {
355
+ "effects": {
356
+ "$ref": "#/$defs/__schema3"
357
+ },
358
+ "lineHeight": {
359
+ "$ref": "#/$defs/__schema5"
360
+ },
361
+ "fontSize": {
362
+ "$ref": "#/$defs/__schema6"
363
+ },
364
+ "fontWeight": {
365
+ "type": [
366
+ "string",
367
+ "number"
368
+ ]
369
+ },
370
+ "fontStyle": {
371
+ "$ref": "#/$defs/__schema8"
372
+ },
373
+ "textDecoration": {
374
+ "$ref": "#/$defs/__schema9"
375
+ },
376
+ "textTransform": {
377
+ "$ref": "#/$defs/__schema10"
378
+ },
379
+ "fontSizes": {
380
+ "$ref": "#/$defs/__schema11"
381
+ },
382
+ "maxWidths": {
383
+ "$ref": "#/$defs/__schema12"
384
+ },
385
+ "textRuns": {
386
+ "$ref": "#/$defs/__schema13"
387
+ },
388
+ "outline": {
389
+ "$ref": "#/$defs/__schema15"
390
+ },
391
+ "objectFit": {
392
+ "$ref": "#/$defs/__schema16"
393
+ },
394
+ "imageCrop": {
395
+ "$ref": "#/$defs/__schema17"
396
+ },
397
+ "alt": {
398
+ "$ref": "#/$defs/__schema18"
399
+ },
400
+ "decorative": {
401
+ "type": "boolean"
402
+ },
403
+ "verticalAlign": {
404
+ "$ref": "#/$defs/__schema20"
405
+ },
406
+ "animation": {
407
+ "$ref": "#/$defs/__schema21"
408
+ },
409
+ "reveal": {
410
+ "$ref": "#/$defs/__schema23"
411
+ },
412
+ "shader_fx": {
413
+ "$ref": "#/$defs/__schema24"
414
+ },
415
+ "isInteractive": {
416
+ "type": "boolean"
417
+ },
418
+ "states": {
419
+ "$ref": "#/$defs/__schema29"
420
+ },
421
+ "grain": {
422
+ "$ref": "#/$defs/__schema32"
423
+ },
424
+ "grainIntensity": {
425
+ "$ref": "#/$defs/__schema33"
426
+ },
427
+ "grainSize": {
428
+ "$ref": "#/$defs/__schema34"
429
+ },
430
+ "grainBlend": {
431
+ "$ref": "#/$defs/__schema35"
432
+ },
433
+ "effect": {
434
+ "$ref": "#/$defs/__schema36"
435
+ },
436
+ "effectColor": {
437
+ "$ref": "#/$defs/__schema37"
438
+ },
439
+ "effectRadius": {
440
+ "$ref": "#/$defs/__schema38"
441
+ },
442
+ "textAlign": {
443
+ "$ref": "#/$defs/__schema39"
444
+ },
445
+ "fontFamily": {
446
+ "$ref": "#/$defs/__schema40"
447
+ },
448
+ "width": {
449
+ "$ref": "#/$defs/__schema41"
450
+ },
451
+ "height": {
452
+ "$ref": "#/$defs/__schema42"
453
+ },
454
+ "maxWidth": {
455
+ "$ref": "#/$defs/__schema43"
456
+ },
457
+ "borderRadius": {
458
+ "$ref": "#/$defs/__schema44"
459
+ },
460
+ "fillColor": {
461
+ "$ref": "#/$defs/__schema45"
462
+ },
463
+ "strokeStyle": {
464
+ "$ref": "#/$defs/__schema46"
465
+ },
466
+ "textStrokeColor": {
467
+ "$ref": "#/$defs/__schema47"
468
+ },
469
+ "shadowEnabled": {
470
+ "type": "boolean"
471
+ },
472
+ "shadowColor": {
473
+ "$ref": "#/$defs/__schema49"
474
+ },
475
+ "shadowColorRole": {
476
+ "$ref": "#/$defs/__schema50"
477
+ },
478
+ "shadowBlur": {
479
+ "$ref": "#/$defs/__schema51"
480
+ },
481
+ "shadowOffsetX": {
482
+ "$ref": "#/$defs/__schema52"
483
+ },
484
+ "shadowOffsetY": {
485
+ "$ref": "#/$defs/__schema53"
486
+ },
487
+ "shadowOpacity": {
488
+ "$ref": "#/$defs/__schema54"
489
+ },
490
+ "blendMode": {
491
+ "$ref": "#/$defs/__schema55"
492
+ },
493
+ "layerBlur": {
494
+ "$ref": "#/$defs/__schema56"
495
+ },
496
+ "maskCoverage": {
497
+ "$ref": "#/$defs/__schema57"
498
+ },
499
+ "maskInvert": {
500
+ "type": "boolean"
501
+ },
502
+ "strokeColor": {
503
+ "$ref": "#/$defs/__schema59"
504
+ },
505
+ "strokeWidth": {
506
+ "$ref": "#/$defs/__schema60"
507
+ },
508
+ "textStrokeWidth": {
509
+ "$ref": "#/$defs/__schema61"
510
+ },
511
+ "geoShape": {
512
+ "$ref": "#/$defs/__schema62"
513
+ },
514
+ "svgPath": {
515
+ "$ref": "#/$defs/__schema63"
516
+ },
517
+ "svgViewBox": {
518
+ "$ref": "#/$defs/__schema64"
519
+ },
520
+ "svgRawXml": {
521
+ "type": "string"
522
+ },
523
+ "artisticPreset": {
524
+ "$ref": "#/$defs/__schema66"
525
+ },
526
+ "curveAmount": {
527
+ "$ref": "#/$defs/__schema67"
528
+ },
529
+ "curveType": {
530
+ "$ref": "#/$defs/__schema68"
531
+ },
532
+ "extrusionDepth": {
533
+ "$ref": "#/$defs/__schema69"
534
+ },
535
+ "extrusionAngle": {
536
+ "$ref": "#/$defs/__schema70"
537
+ },
538
+ "extrusionColor": {
539
+ "$ref": "#/$defs/__schema71"
540
+ },
541
+ "extrusionShading": {
542
+ "type": "boolean"
543
+ },
544
+ "outerStrokeColor": {
545
+ "$ref": "#/$defs/__schema73"
546
+ },
547
+ "outerStrokeWidth": {
548
+ "$ref": "#/$defs/__schema74"
549
+ },
550
+ "innerStrokeColor": {
551
+ "$ref": "#/$defs/__schema75"
552
+ },
553
+ "innerStrokeWidth": {
554
+ "$ref": "#/$defs/__schema76"
555
+ },
556
+ "maskMode": {
557
+ "$ref": "#/$defs/__schema77"
558
+ },
559
+ "maskShape": {
560
+ "$ref": "#/$defs/__schema78"
561
+ },
562
+ "maskBgColor": {
563
+ "$ref": "#/$defs/__schema79"
564
+ },
565
+ "maskStrokeColor": {
566
+ "$ref": "#/$defs/__schema80"
567
+ },
568
+ "maskStrokeWidth": {
569
+ "$ref": "#/$defs/__schema81"
570
+ },
571
+ "filterPreset": {
572
+ "$ref": "#/$defs/__schema82"
573
+ },
574
+ "cssAnimation": {
575
+ "$ref": "#/$defs/__schema83"
576
+ },
577
+ "filterBlur": {
578
+ "$ref": "#/$defs/__schema84"
579
+ },
580
+ "filterBrightness": {
581
+ "$ref": "#/$defs/__schema85"
582
+ },
583
+ "filterContrast": {
584
+ "$ref": "#/$defs/__schema86"
585
+ },
586
+ "filterSaturate": {
587
+ "$ref": "#/$defs/__schema87"
588
+ },
589
+ "filterHueRotate": {
590
+ "$ref": "#/$defs/__schema88"
591
+ },
592
+ "textAnimationType": {
593
+ "$ref": "#/$defs/__schema89"
594
+ },
595
+ "textAnimationSpeed": {
596
+ "$ref": "#/$defs/__schema90"
597
+ },
598
+ "textAnimationDelay": {
599
+ "$ref": "#/$defs/__schema91"
600
+ },
601
+ "textAnimationIntensity": {
602
+ "$ref": "#/$defs/__schema92"
603
+ },
604
+ "typewriterCursor": {
605
+ "type": "boolean"
606
+ },
607
+ "textHighlight": {
608
+ "$ref": "#/$defs/__schema94"
609
+ },
610
+ "dropCap": {
611
+ "$ref": "#/$defs/__schema95"
612
+ },
613
+ "marks": {
614
+ "$ref": "#/$defs/__schema96"
615
+ },
616
+ "customBlobPath": {
617
+ "type": "string"
618
+ },
619
+ "maskFeather": {
620
+ "$ref": "#/$defs/__schema100"
621
+ },
622
+ "maskSvgPath": {
623
+ "type": "string"
624
+ },
625
+ "cuts": {
626
+ "$ref": "#/$defs/__schema102"
627
+ },
628
+ "trimStart": {
629
+ "$ref": "#/$defs/__schema103"
630
+ },
631
+ "trimEnd": {
632
+ "$ref": "#/$defs/__schema104"
633
+ },
634
+ "trimDuration": {
635
+ "$ref": "#/$defs/__schema105"
636
+ },
637
+ "groupId": {
638
+ "$ref": "#/$defs/__schema106"
639
+ },
640
+ "rotation": {
641
+ "type": "number"
642
+ },
643
+ "flipX": {
644
+ "type": "boolean"
645
+ },
646
+ "flipY": {
647
+ "type": "boolean"
648
+ },
649
+ "opacity": {
650
+ "$ref": "#/$defs/__schema110"
651
+ },
652
+ "isVisible": {
653
+ "type": "boolean"
654
+ },
655
+ "textGradientType": {
656
+ "$ref": "#/$defs/__schema112"
657
+ },
658
+ "fillColorRole": {
659
+ "$ref": "#/$defs/__schema113"
660
+ },
661
+ "strokeColorRole": {
662
+ "$ref": "#/$defs/__schema114"
663
+ },
664
+ "colorRole": {
665
+ "$ref": "#/$defs/__schema115"
666
+ },
667
+ "textStrokeColorRole": {
668
+ "$ref": "#/$defs/__schema116"
669
+ },
670
+ "effectColorRole": {
671
+ "$ref": "#/$defs/__schema117"
672
+ },
673
+ "maskBgColorRole": {
674
+ "$ref": "#/$defs/__schema118"
675
+ },
676
+ "maskStrokeColorRole": {
677
+ "$ref": "#/$defs/__schema119"
678
+ },
679
+ "fillGenerative": {
680
+ "$ref": "#/$defs/__schema120"
681
+ },
682
+ "fillGradient": {
683
+ "$ref": "#/$defs/__schema121"
684
+ },
685
+ "fillPatternType": {
686
+ "$ref": "#/$defs/__schema122"
687
+ },
688
+ "fillPatternColor": {
689
+ "$ref": "#/$defs/__schema123"
690
+ },
691
+ "fillPatternColorRole": {
692
+ "$ref": "#/$defs/__schema124"
693
+ },
694
+ "fillPatternBgColor": {
695
+ "$ref": "#/$defs/__schema125"
696
+ },
697
+ "fillPatternBgColorRole": {
698
+ "$ref": "#/$defs/__schema126"
699
+ },
700
+ "fillPatternSpeed": {
701
+ "type": "number"
702
+ },
703
+ "fillPatternScale": {
704
+ "type": "number"
705
+ },
706
+ "fillPatternDirection": {
707
+ "$ref": "#/$defs/__schema129"
708
+ },
709
+ "fillPatternSvgs": {
710
+ "$ref": "#/$defs/__schema130"
711
+ },
712
+ "fillPatternColors": {
713
+ "$ref": "#/$defs/__schema132"
714
+ },
715
+ "fillPatternSizes": {
716
+ "$ref": "#/$defs/__schema133"
717
+ },
718
+ "fillPatternCounts": {
719
+ "$ref": "#/$defs/__schema135"
720
+ },
721
+ "fillPatternDispersions": {
722
+ "$ref": "#/$defs/__schema137"
723
+ },
724
+ "backgroundType": {
725
+ "$ref": "#/$defs/__schema139"
726
+ },
727
+ "backgroundPatternColor": {
728
+ "$ref": "#/$defs/__schema140"
729
+ },
730
+ "backgroundPatternColorRole": {
731
+ "$ref": "#/$defs/__schema141"
732
+ },
733
+ "backgroundPatternBgColor": {
734
+ "$ref": "#/$defs/__schema142"
735
+ },
736
+ "backgroundPatternBgColorRole": {
737
+ "$ref": "#/$defs/__schema143"
738
+ },
739
+ "backgroundPatternColors": {
740
+ "$ref": "#/$defs/__schema144"
741
+ },
742
+ "fillType": {
743
+ "$ref": "#/$defs/__schema145"
744
+ },
745
+ "fillImage": {
746
+ "$ref": "#/$defs/__schema146"
747
+ },
748
+ "fillImageCrop": {
749
+ "$ref": "#/$defs/__schema147"
750
+ },
751
+ "fillImageFlipX": {
752
+ "type": "boolean"
753
+ },
754
+ "fillImageFlipY": {
755
+ "type": "boolean"
756
+ }
757
+ },
758
+ "additionalProperties": {
759
+ "$ref": "#/$defs/__schema150"
760
+ }
761
+ },
762
+ "__schema3": {
763
+ "maxItems": 8,
764
+ "type": "array",
765
+ "items": {
766
+ "$ref": "#/$defs/__schema4"
767
+ }
768
+ },
769
+ "__schema4": {
770
+ "oneOf": [
771
+ {
772
+ "type": "object",
773
+ "properties": {
774
+ "type": {
775
+ "type": "string",
776
+ "const": "texture"
777
+ },
778
+ "preset": {
779
+ "type": "string",
780
+ "enum": [
781
+ "film-grain-35mm",
782
+ "fine-noise",
783
+ "dust-scratches",
784
+ "vintage-paper",
785
+ "rough-canvas",
786
+ "halftone-dots",
787
+ "scanlines",
788
+ "concentric-rings"
789
+ ]
790
+ },
791
+ "intensity": {
792
+ "default": 30,
793
+ "type": "number",
794
+ "minimum": 0,
795
+ "maximum": 100
796
+ },
797
+ "blend": {
798
+ "default": "overlay",
799
+ "type": "string",
800
+ "enum": [
801
+ "normal",
802
+ "overlay",
803
+ "soft-light",
804
+ "multiply",
805
+ "screen",
806
+ "color-dodge",
807
+ "darken",
808
+ "lighten"
809
+ ]
810
+ },
811
+ "scale": {
812
+ "default": 1,
813
+ "type": "number",
814
+ "minimum": 0.2,
815
+ "maximum": 5
816
+ },
817
+ "color": {
818
+ "$ref": "#/$defs/cssColor"
819
+ },
820
+ "colorRole": {
821
+ "type": "string",
822
+ "enum": [
823
+ "primary",
824
+ "on-primary",
825
+ "secondary",
826
+ "on-secondary",
827
+ "surface",
828
+ "on-surface",
829
+ "outline",
830
+ "accent",
831
+ "text-primary",
832
+ "text-secondary",
833
+ "text-muted",
834
+ "text-on-accent"
835
+ ]
836
+ },
837
+ "enabled": {
838
+ "default": true,
839
+ "type": "boolean"
840
+ }
841
+ },
842
+ "required": [
843
+ "type",
844
+ "preset"
845
+ ]
846
+ },
847
+ {
848
+ "type": "object",
849
+ "properties": {
850
+ "type": {
851
+ "type": "string",
852
+ "const": "drop-shadow"
853
+ },
854
+ "x": {
855
+ "default": 0,
856
+ "type": "number"
857
+ },
858
+ "y": {
859
+ "default": 4,
860
+ "type": "number"
861
+ },
862
+ "blur": {
863
+ "default": 12,
864
+ "type": "number",
865
+ "minimum": 0,
866
+ "maximum": 200
867
+ },
868
+ "spread": {
869
+ "default": 0,
870
+ "type": "number"
871
+ },
872
+ "color": {
873
+ "default": "rgba(0, 0, 0, 0.35)",
874
+ "$ref": "#/$defs/cssColor"
875
+ },
876
+ "colorRole": {
877
+ "type": "string",
878
+ "enum": [
879
+ "primary",
880
+ "on-primary",
881
+ "secondary",
882
+ "on-secondary",
883
+ "surface",
884
+ "on-surface",
885
+ "outline",
886
+ "accent",
887
+ "text-primary",
888
+ "text-secondary",
889
+ "text-muted",
890
+ "text-on-accent"
891
+ ]
892
+ },
893
+ "enabled": {
894
+ "default": true,
895
+ "type": "boolean"
896
+ }
897
+ },
898
+ "required": [
899
+ "type"
900
+ ]
901
+ },
902
+ {
903
+ "type": "object",
904
+ "properties": {
905
+ "type": {
906
+ "type": "string",
907
+ "const": "blur"
908
+ },
909
+ "radius": {
910
+ "default": 8,
911
+ "type": "number",
912
+ "minimum": 0,
913
+ "maximum": 100
914
+ },
915
+ "enabled": {
916
+ "default": true,
917
+ "type": "boolean"
918
+ }
919
+ },
920
+ "required": [
921
+ "type"
922
+ ]
923
+ },
924
+ {
925
+ "type": "object",
926
+ "properties": {
927
+ "type": {
928
+ "type": "string",
929
+ "const": "glow"
930
+ },
931
+ "color": {
932
+ "default": "#f59e0b",
933
+ "$ref": "#/$defs/cssColor"
934
+ },
935
+ "colorRole": {
936
+ "type": "string",
937
+ "enum": [
938
+ "primary",
939
+ "on-primary",
940
+ "secondary",
941
+ "on-secondary",
942
+ "surface",
943
+ "on-surface",
944
+ "outline",
945
+ "accent",
946
+ "text-primary",
947
+ "text-secondary",
948
+ "text-muted",
949
+ "text-on-accent"
950
+ ]
951
+ },
952
+ "radius": {
953
+ "default": 16,
954
+ "type": "number",
955
+ "minimum": 0,
956
+ "maximum": 100
957
+ },
958
+ "intensity": {
959
+ "default": 50,
960
+ "type": "number",
961
+ "minimum": 0,
962
+ "maximum": 100
963
+ },
964
+ "enabled": {
965
+ "default": true,
966
+ "type": "boolean"
967
+ }
968
+ },
969
+ "required": [
970
+ "type"
971
+ ]
972
+ },
973
+ {
974
+ "type": "object",
975
+ "properties": {
976
+ "type": {
977
+ "type": "string",
978
+ "const": "color-grade"
979
+ },
980
+ "preset": {
981
+ "type": "string",
982
+ "enum": [
983
+ "warm-vintage",
984
+ "cool-cinema",
985
+ "cyberpunk",
986
+ "monochrome-contrast"
987
+ ]
988
+ },
989
+ "intensity": {
990
+ "default": 50,
991
+ "type": "number",
992
+ "minimum": 0,
993
+ "maximum": 100
994
+ },
995
+ "enabled": {
996
+ "default": true,
997
+ "type": "boolean"
998
+ }
999
+ },
1000
+ "required": [
1001
+ "type",
1002
+ "preset"
1003
+ ]
1004
+ }
1005
+ ]
1006
+ },
1007
+ "cssColor": {
1008
+ "type": "string",
1009
+ "maxLength": 128,
1010
+ "pattern": "^(?:(?:#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|(?:rgb|rgba|hsl|hsla)\\(\\s*[0-9a-zA-Z.,%/\\s+-]*\\)|(?:transparent|currentColor|currentcolor|none|inherit))|var\\(\\s*--[A-Za-z0-9_-]+\\s*\\)|var\\(\\s*--[A-Za-z0-9_-]+\\s*,\\s*(?:(?:#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|(?:rgb|rgba|hsl|hsla)\\(\\s*[0-9a-zA-Z.,%/\\s+-]*\\)|(?:transparent|currentColor|currentcolor|none|inherit))|var\\(\\s*--[A-Za-z0-9_-]+\\s*\\))\\s*\\)|var\\(\\s*--[A-Za-z0-9_-]+\\s*,\\s*(?:(?:#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|(?:rgb|rgba|hsl|hsla)\\(\\s*[0-9a-zA-Z.,%/\\s+-]*\\)|(?:transparent|currentColor|currentcolor|none|inherit))|var\\(\\s*--[A-Za-z0-9_-]+\\s*\\)|var\\(\\s*--[A-Za-z0-9_-]+\\s*,\\s*(?:(?:#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|(?:rgb|rgba|hsl|hsla)\\(\\s*[0-9a-zA-Z.,%/\\s+-]*\\)|(?:transparent|currentColor|currentcolor|none|inherit))|var\\(\\s*--[A-Za-z0-9_-]+\\s*\\))\\s*\\))\\s*\\))$"
1011
+ },
1012
+ "__schema5": {
1013
+ "anyOf": [
1014
+ {
1015
+ "type": "number"
1016
+ },
1017
+ {
1018
+ "type": "string",
1019
+ "maxLength": 16
1020
+ }
1021
+ ]
1022
+ },
1023
+ "__schema6": {
1024
+ "anyOf": [
1025
+ {
1026
+ "type": "string",
1027
+ "maxLength": 16
1028
+ },
1029
+ {
1030
+ "type": "number",
1031
+ "minimum": 0
1032
+ }
1033
+ ]
1034
+ },
1035
+ "__schema8": {
1036
+ "type": "string",
1037
+ "enum": [
1038
+ "normal",
1039
+ "italic",
1040
+ "oblique"
1041
+ ]
1042
+ },
1043
+ "__schema9": {
1044
+ "type": "string",
1045
+ "maxLength": 64
1046
+ },
1047
+ "__schema10": {
1048
+ "type": "string",
1049
+ "enum": [
1050
+ "none",
1051
+ "uppercase",
1052
+ "lowercase",
1053
+ "capitalize"
1054
+ ],
1055
+ "deprecated": true,
1056
+ "description": "Retired in 1.12.0 (contract audit, 10 Oct 2026): no renderer applied it; the case is written into the text."
1057
+ },
1058
+ "__schema11": {
1059
+ "type": "object",
1060
+ "propertyNames": {
1061
+ "type": "string"
1062
+ },
1063
+ "additionalProperties": {
1064
+ "type": "string"
1065
+ }
1066
+ },
1067
+ "__schema12": {
1068
+ "type": "object",
1069
+ "propertyNames": {
1070
+ "type": "string"
1071
+ },
1072
+ "additionalProperties": {
1073
+ "type": "string"
1074
+ }
1075
+ },
1076
+ "__schema13": {
1077
+ "type": "object",
1078
+ "propertyNames": {
1079
+ "type": "string"
1080
+ },
1081
+ "additionalProperties": {
1082
+ "type": "object",
1083
+ "properties": {
1084
+ "fontSize": {
1085
+ "type": "number",
1086
+ "minimum": 0
1087
+ },
1088
+ "lineHeight": {
1089
+ "type": "number",
1090
+ "minimum": 0
1091
+ },
1092
+ "lines": {
1093
+ "maxItems": 500,
1094
+ "type": "array",
1095
+ "items": {
1096
+ "$ref": "#/$defs/__schema14"
1097
+ }
1098
+ }
1099
+ },
1100
+ "required": [
1101
+ "lines"
1102
+ ],
1103
+ "additionalProperties": {}
1104
+ }
1105
+ },
1106
+ "__schema14": {
1107
+ "type": "object",
1108
+ "properties": {
1109
+ "text": {
1110
+ "type": "string",
1111
+ "maxLength": 10000
1112
+ },
1113
+ "width": {
1114
+ "type": "number",
1115
+ "minimum": 0
1116
+ },
1117
+ "yOffset": {
1118
+ "type": "number"
1119
+ }
1120
+ },
1121
+ "required": [
1122
+ "text",
1123
+ "width",
1124
+ "yOffset"
1125
+ ],
1126
+ "additionalProperties": {}
1127
+ },
1128
+ "__schema15": {
1129
+ "type": "string",
1130
+ "maxLength": 128
1131
+ },
1132
+ "__schema16": {
1133
+ "type": "string",
1134
+ "enum": [
1135
+ "contain",
1136
+ "cover",
1137
+ "fill",
1138
+ "none",
1139
+ "scale-down"
1140
+ ]
1141
+ },
1142
+ "__schema17": {
1143
+ "type": "object",
1144
+ "properties": {
1145
+ "x": {
1146
+ "type": "number",
1147
+ "minimum": 0,
1148
+ "maximum": 100
1149
+ },
1150
+ "y": {
1151
+ "type": "number",
1152
+ "minimum": 0,
1153
+ "maximum": 100
1154
+ },
1155
+ "zoom": {
1156
+ "type": "number",
1157
+ "minimum": 1,
1158
+ "maximum": 10
1159
+ }
1160
+ },
1161
+ "required": [
1162
+ "x",
1163
+ "y",
1164
+ "zoom"
1165
+ ]
1166
+ },
1167
+ "__schema18": {
1168
+ "type": "object",
1169
+ "propertyNames": {
1170
+ "$ref": "#/$defs/__schema0"
1171
+ },
1172
+ "additionalProperties": {
1173
+ "type": "string",
1174
+ "maxLength": 300
1175
+ }
1176
+ },
1177
+ "__schema20": {
1178
+ "type": "string",
1179
+ "enum": [
1180
+ "top",
1181
+ "center",
1182
+ "bottom",
1183
+ "mixed",
1184
+ "justify"
1185
+ ],
1186
+ "deprecated": true,
1187
+ "description": "Retired in 1.12.0 (contract audit, 10 Oct 2026): no writer and no reader."
1188
+ },
1189
+ "__schema21": {
1190
+ "type": "object",
1191
+ "properties": {
1192
+ "loop": {
1193
+ "type": "string",
1194
+ "enum": [
1195
+ "none",
1196
+ "pulse",
1197
+ "float",
1198
+ "bounce",
1199
+ "spin",
1200
+ "glow",
1201
+ "custom"
1202
+ ]
1203
+ },
1204
+ "hover": {
1205
+ "type": "string",
1206
+ "enum": [
1207
+ "none",
1208
+ "grow",
1209
+ "shrink",
1210
+ "lift",
1211
+ "glow",
1212
+ "custom"
1213
+ ]
1214
+ },
1215
+ "custom_loop_css": {
1216
+ "type": "string",
1217
+ "maxLength": 500,
1218
+ "deprecated": true,
1219
+ "description": "Retired in 1.9.0: players do not apply raw CSS. A new writer must not write it."
1220
+ },
1221
+ "custom_keyframes": {
1222
+ "type": "string",
1223
+ "maxLength": 2000,
1224
+ "deprecated": true,
1225
+ "description": "Retired in 1.9.0: players do not apply raw CSS. A new writer must not write it."
1226
+ },
1227
+ "custom_hover_css": {
1228
+ "type": "string",
1229
+ "maxLength": 500,
1230
+ "deprecated": true,
1231
+ "description": "Retired in 1.9.0: players do not apply raw CSS. A new writer must not write it."
1232
+ },
1233
+ "duration": {
1234
+ "type": "number",
1235
+ "minimum": 0.1,
1236
+ "maximum": 20
1237
+ },
1238
+ "delay": {
1239
+ "type": "number",
1240
+ "minimum": 0,
1241
+ "maximum": 10
1242
+ },
1243
+ "keyframes": {
1244
+ "maxItems": 240,
1245
+ "type": "array",
1246
+ "items": {
1247
+ "$ref": "#/$defs/keyframe"
1248
+ }
1249
+ },
1250
+ "trigger": {
1251
+ "type": "string",
1252
+ "enum": [
1253
+ "load",
1254
+ "action"
1255
+ ]
1256
+ }
1257
+ }
1258
+ },
1259
+ "keyframe": {
1260
+ "type": "object",
1261
+ "properties": {
1262
+ "t": {
1263
+ "type": "number",
1264
+ "minimum": 0,
1265
+ "maximum": 60
1266
+ },
1267
+ "o": {
1268
+ "type": "number",
1269
+ "minimum": 0,
1270
+ "maximum": 2
1271
+ },
1272
+ "s": {
1273
+ "type": "number",
1274
+ "minimum": 0,
1275
+ "maximum": 10
1276
+ },
1277
+ "r": {
1278
+ "type": "number",
1279
+ "minimum": -3600,
1280
+ "maximum": 3600
1281
+ },
1282
+ "x": {
1283
+ "type": "number"
1284
+ },
1285
+ "y": {
1286
+ "type": "number"
1287
+ },
1288
+ "b": {
1289
+ "type": "number",
1290
+ "minimum": 0,
1291
+ "maximum": 50
1292
+ },
1293
+ "e": {
1294
+ "$ref": "#/$defs/__schema22"
1295
+ }
1296
+ },
1297
+ "required": [
1298
+ "t"
1299
+ ]
1300
+ },
1301
+ "__schema22": {
1302
+ "anyOf": [
1303
+ {
1304
+ "type": "string",
1305
+ "enum": [
1306
+ "linear",
1307
+ "ease-in",
1308
+ "ease-out",
1309
+ "ease-in-out",
1310
+ "steps(1, end)"
1311
+ ]
1312
+ },
1313
+ {
1314
+ "type": "array",
1315
+ "prefixItems": [
1316
+ {
1317
+ "type": "number"
1318
+ },
1319
+ {
1320
+ "type": "number"
1321
+ },
1322
+ {
1323
+ "type": "number"
1324
+ },
1325
+ {
1326
+ "type": "number"
1327
+ }
1328
+ ],
1329
+ "items": false,
1330
+ "minItems": 4,
1331
+ "maxItems": 4
1332
+ }
1333
+ ]
1334
+ },
1335
+ "__schema23": {
1336
+ "type": "object",
1337
+ "properties": {
1338
+ "effect": {
1339
+ "type": "string",
1340
+ "enum": [
1341
+ "fade",
1342
+ "slide-up",
1343
+ "slide-down",
1344
+ "slide-left",
1345
+ "slide-right",
1346
+ "scale"
1347
+ ]
1348
+ },
1349
+ "duration": {
1350
+ "type": "number",
1351
+ "minimum": 0,
1352
+ "maximum": 2000
1353
+ },
1354
+ "easing": {
1355
+ "$ref": "#/$defs/__schema22"
1356
+ }
1357
+ },
1358
+ "required": [
1359
+ "effect",
1360
+ "duration"
1361
+ ]
1362
+ },
1363
+ "__schema24": {
1364
+ "type": "object",
1365
+ "properties": {
1366
+ "blur": {
1367
+ "$ref": "#/$defs/__schema25"
1368
+ },
1369
+ "grain": {
1370
+ "$ref": "#/$defs/__schema26"
1371
+ },
1372
+ "crt_curve": {
1373
+ "type": "boolean"
1374
+ }
1375
+ },
1376
+ "deprecated": true,
1377
+ "description": "Retired in 1.12.0 (contract audit, 10 Oct 2026): no writer and no reader."
1378
+ },
1379
+ "__schema25": {
1380
+ "type": "number",
1381
+ "minimum": 0,
1382
+ "maximum": 10
1383
+ },
1384
+ "__schema26": {
1385
+ "type": "number",
1386
+ "minimum": 0,
1387
+ "maximum": 1
1388
+ },
1389
+ "__schema29": {
1390
+ "type": "object",
1391
+ "properties": {
1392
+ "hover": {
1393
+ "$ref": "#/$defs/__schema30"
1394
+ },
1395
+ "active": {
1396
+ "$ref": "#/$defs/__schema30"
1397
+ }
1398
+ },
1399
+ "additionalProperties": {}
1400
+ },
1401
+ "__schema30": {
1402
+ "type": "object",
1403
+ "properties": {
1404
+ "scale": {
1405
+ "type": "number",
1406
+ "minimum": 0,
1407
+ "maximum": 1000
1408
+ },
1409
+ "rotation": {
1410
+ "type": "number",
1411
+ "minimum": -360,
1412
+ "maximum": 360
1413
+ },
1414
+ "opacity": {
1415
+ "type": "number",
1416
+ "minimum": 0,
1417
+ "maximum": 100
1418
+ },
1419
+ "transitionDuration": {
1420
+ "type": "number",
1421
+ "minimum": 0,
1422
+ "maximum": 10000
1423
+ },
1424
+ "actions": {
1425
+ "maxItems": 64,
1426
+ "type": "array",
1427
+ "items": {
1428
+ "$ref": "#/$defs/__schema31"
1429
+ }
1430
+ }
1431
+ },
1432
+ "additionalProperties": {}
1433
+ },
1434
+ "__schema31": {
1435
+ "type": "object",
1436
+ "properties": {
1437
+ "target": {
1438
+ "type": "string",
1439
+ "minLength": 1,
1440
+ "maxLength": 128
1441
+ },
1442
+ "type": {
1443
+ "type": "string",
1444
+ "enum": [
1445
+ "show",
1446
+ "hide",
1447
+ "toggle",
1448
+ "setText",
1449
+ "play"
1450
+ ]
1451
+ },
1452
+ "value": {
1453
+ "type": "string",
1454
+ "maxLength": 10000
1455
+ }
1456
+ },
1457
+ "required": [
1458
+ "target",
1459
+ "type"
1460
+ ]
1461
+ },
1462
+ "__schema32": {
1463
+ "type": "boolean",
1464
+ "deprecated": true,
1465
+ "description": "Retired in 1.12.0 (contract audit, 10 Oct 2026): a layer's grain is a texture in style.effects."
1466
+ },
1467
+ "__schema33": {
1468
+ "type": "number",
1469
+ "minimum": 1,
1470
+ "maximum": 100,
1471
+ "deprecated": true,
1472
+ "description": "Retired in 1.12.0 (contract audit, 10 Oct 2026): see grain."
1473
+ },
1474
+ "__schema34": {
1475
+ "type": "number",
1476
+ "minimum": 1,
1477
+ "maximum": 100,
1478
+ "deprecated": true,
1479
+ "description": "Retired in 1.12.0 (contract audit, 10 Oct 2026): see grain."
1480
+ },
1481
+ "__schema35": {
1482
+ "type": "string",
1483
+ "enum": [
1484
+ "overlay",
1485
+ "soft-light",
1486
+ "multiply"
1487
+ ],
1488
+ "deprecated": true,
1489
+ "description": "Retired in 1.12.0 (contract audit, 10 Oct 2026): see grain."
1490
+ },
1491
+ "__schema36": {
1492
+ "type": "string",
1493
+ "enum": [
1494
+ "none",
1495
+ "neon",
1496
+ "shadow"
1497
+ ]
1498
+ },
1499
+ "__schema37": {
1500
+ "$ref": "#/$defs/cssColor"
1501
+ },
1502
+ "__schema38": {
1503
+ "type": "number",
1504
+ "minimum": 0,
1505
+ "maximum": 100
1506
+ },
1507
+ "__schema39": {
1508
+ "type": "string",
1509
+ "enum": [
1510
+ "left",
1511
+ "center",
1512
+ "right",
1513
+ "justify"
1514
+ ]
1515
+ },
1516
+ "__schema40": {
1517
+ "type": "string",
1518
+ "maxLength": 128
1519
+ },
1520
+ "__schema41": {
1521
+ "anyOf": [
1522
+ {
1523
+ "type": "string",
1524
+ "maxLength": 32
1525
+ },
1526
+ {
1527
+ "type": "number",
1528
+ "minimum": 0
1529
+ }
1530
+ ]
1531
+ },
1532
+ "__schema42": {
1533
+ "anyOf": [
1534
+ {
1535
+ "type": "string",
1536
+ "maxLength": 32
1537
+ },
1538
+ {
1539
+ "type": "number",
1540
+ "minimum": 0
1541
+ }
1542
+ ]
1543
+ },
1544
+ "__schema43": {
1545
+ "anyOf": [
1546
+ {
1547
+ "type": "string",
1548
+ "maxLength": 32
1549
+ },
1550
+ {
1551
+ "type": "number",
1552
+ "minimum": 0
1553
+ }
1554
+ ]
1555
+ },
1556
+ "__schema44": {
1557
+ "anyOf": [
1558
+ {
1559
+ "type": "string",
1560
+ "maxLength": 128
1561
+ },
1562
+ {
1563
+ "type": "number",
1564
+ "minimum": 0
1565
+ }
1566
+ ]
1567
+ },
1568
+ "__schema45": {
1569
+ "$ref": "#/$defs/cssColor"
1570
+ },
1571
+ "__schema46": {
1572
+ "type": "string",
1573
+ "enum": [
1574
+ "solid",
1575
+ "dashed",
1576
+ "dotted"
1577
+ ]
1578
+ },
1579
+ "__schema47": {
1580
+ "$ref": "#/$defs/cssColor"
1581
+ },
1582
+ "__schema49": {
1583
+ "$ref": "#/$defs/cssColor"
1584
+ },
1585
+ "__schema50": {
1586
+ "type": "string",
1587
+ "enum": [
1588
+ "primary",
1589
+ "on-primary",
1590
+ "secondary",
1591
+ "on-secondary",
1592
+ "surface",
1593
+ "on-surface",
1594
+ "outline",
1595
+ "accent",
1596
+ "text-primary",
1597
+ "text-secondary",
1598
+ "text-muted",
1599
+ "text-on-accent"
1600
+ ]
1601
+ },
1602
+ "__schema51": {
1603
+ "type": "number",
1604
+ "minimum": 0,
1605
+ "maximum": 200
1606
+ },
1607
+ "__schema52": {
1608
+ "type": "number",
1609
+ "minimum": -500,
1610
+ "maximum": 500
1611
+ },
1612
+ "__schema53": {
1613
+ "type": "number",
1614
+ "minimum": -500,
1615
+ "maximum": 500
1616
+ },
1617
+ "__schema54": {
1618
+ "type": "number",
1619
+ "minimum": 0,
1620
+ "maximum": 100
1621
+ },
1622
+ "__schema55": {
1623
+ "type": "string",
1624
+ "enum": [
1625
+ "normal",
1626
+ "multiply",
1627
+ "screen",
1628
+ "overlay",
1629
+ "darken",
1630
+ "lighten",
1631
+ "color-dodge",
1632
+ "color-burn",
1633
+ "difference"
1634
+ ],
1635
+ "deprecated": true,
1636
+ "description": "Retired in 1.12.0 (contract audit, 10 Oct 2026): layer blend did not show in the editor or the player; readers draw the layer as normal."
1637
+ },
1638
+ "__schema56": {
1639
+ "type": "number",
1640
+ "minimum": 0,
1641
+ "maximum": 100
1642
+ },
1643
+ "__schema57": {
1644
+ "type": "string",
1645
+ "maxLength": 32
1646
+ },
1647
+ "__schema59": {
1648
+ "$ref": "#/$defs/cssColor"
1649
+ },
1650
+ "__schema60": {
1651
+ "type": "number",
1652
+ "minimum": 0
1653
+ },
1654
+ "__schema61": {
1655
+ "type": "number",
1656
+ "minimum": 0,
1657
+ "maximum": 100
1658
+ },
1659
+ "__schema62": {
1660
+ "type": "string",
1661
+ "enum": [
1662
+ "rectangle",
1663
+ "circle",
1664
+ "triangle",
1665
+ "star",
1666
+ "line",
1667
+ "arrow",
1668
+ "diamond",
1669
+ "hexagon",
1670
+ "heart",
1671
+ "blob",
1672
+ "scribble",
1673
+ "custom",
1674
+ "pill",
1675
+ "octagon",
1676
+ "pentagon",
1677
+ "cross",
1678
+ "moon",
1679
+ "cloud",
1680
+ "drop",
1681
+ "bolt",
1682
+ "bubble",
1683
+ "flower",
1684
+ "burst",
1685
+ "arch"
1686
+ ]
1687
+ },
1688
+ "__schema63": {
1689
+ "type": "string",
1690
+ "maxLength": 20000,
1691
+ "pattern": "^[MmLlHhVvCcSsQqTtAaZz0-9eE.,\\s+-]*$"
1692
+ },
1693
+ "__schema64": {
1694
+ "type": "string",
1695
+ "maxLength": 64,
1696
+ "pattern": "^-?\\d+(\\.\\d+)?([\\s,]+-?\\d+(\\.\\d+)?){3}$"
1697
+ },
1698
+ "__schema66": {
1699
+ "type": "string",
1700
+ "enum": [
1701
+ "neon-cyberpunk",
1702
+ "retro-wave-3d",
1703
+ "comic-pop-extrusion",
1704
+ "vintage-emboss",
1705
+ "chrome-metallic",
1706
+ "arcade-80s",
1707
+ "custom"
1708
+ ]
1709
+ },
1710
+ "__schema67": {
1711
+ "type": "number",
1712
+ "minimum": -100,
1713
+ "maximum": 100
1714
+ },
1715
+ "__schema68": {
1716
+ "type": "string",
1717
+ "enum": [
1718
+ "arc",
1719
+ "wave",
1720
+ "arch"
1721
+ ]
1722
+ },
1723
+ "__schema69": {
1724
+ "type": "number",
1725
+ "minimum": 0,
1726
+ "maximum": 100
1727
+ },
1728
+ "__schema70": {
1729
+ "type": "number",
1730
+ "minimum": 0,
1731
+ "maximum": 360
1732
+ },
1733
+ "__schema71": {
1734
+ "$ref": "#/$defs/cssColor"
1735
+ },
1736
+ "__schema73": {
1737
+ "$ref": "#/$defs/cssColor"
1738
+ },
1739
+ "__schema74": {
1740
+ "type": "number",
1741
+ "minimum": 0
1742
+ },
1743
+ "__schema75": {
1744
+ "$ref": "#/$defs/cssColor"
1745
+ },
1746
+ "__schema76": {
1747
+ "type": "number",
1748
+ "minimum": 0
1749
+ },
1750
+ "__schema77": {
1751
+ "type": "string",
1752
+ "enum": [
1753
+ "window",
1754
+ "cutout"
1755
+ ]
1756
+ },
1757
+ "__schema78": {
1758
+ "type": "string",
1759
+ "enum": [
1760
+ "circle",
1761
+ "rectangle",
1762
+ "triangle",
1763
+ "star",
1764
+ "line",
1765
+ "arrow",
1766
+ "diamond",
1767
+ "hexagon",
1768
+ "heart",
1769
+ "blob",
1770
+ "custom"
1771
+ ]
1772
+ },
1773
+ "__schema79": {
1774
+ "$ref": "#/$defs/cssColor"
1775
+ },
1776
+ "__schema80": {
1777
+ "$ref": "#/$defs/cssColor"
1778
+ },
1779
+ "__schema81": {
1780
+ "type": "number",
1781
+ "minimum": 0
1782
+ },
1783
+ "__schema82": {
1784
+ "type": "string",
1785
+ "enum": [
1786
+ "none",
1787
+ "duotone",
1788
+ "grayscale",
1789
+ "sepia",
1790
+ "high-contrast",
1791
+ "vintage",
1792
+ "cool",
1793
+ "warm",
1794
+ "faded",
1795
+ "cinema",
1796
+ "nordic",
1797
+ "sunset",
1798
+ "noir",
1799
+ "dramatic",
1800
+ "cyberpunk",
1801
+ "pastel",
1802
+ "vhs"
1803
+ ]
1804
+ },
1805
+ "__schema83": {
1806
+ "type": "string",
1807
+ "maxLength": 128,
1808
+ "pattern": "^background-animation-(?:right|left|up|down|zoom-in|zoom-out|pulse|none) \\d+(?:\\.\\d+)?s linear infinite$"
1809
+ },
1810
+ "__schema84": {
1811
+ "type": "number",
1812
+ "minimum": 0,
1813
+ "maximum": 100
1814
+ },
1815
+ "__schema85": {
1816
+ "type": "number",
1817
+ "minimum": 0,
1818
+ "maximum": 500
1819
+ },
1820
+ "__schema86": {
1821
+ "type": "number",
1822
+ "minimum": 0,
1823
+ "maximum": 500
1824
+ },
1825
+ "__schema87": {
1826
+ "type": "number",
1827
+ "minimum": 0,
1828
+ "maximum": 500
1829
+ },
1830
+ "__schema88": {
1831
+ "type": "number",
1832
+ "minimum": 0,
1833
+ "maximum": 360
1834
+ },
1835
+ "__schema89": {
1836
+ "type": "string",
1837
+ "enum": [
1838
+ "none",
1839
+ "typewriter",
1840
+ "fade-chars",
1841
+ "slide-up",
1842
+ "blur-chars",
1843
+ "bounce-chars",
1844
+ "wave-chars",
1845
+ "glitch-cyberpunk",
1846
+ "glitch-slice",
1847
+ "reveal-mask",
1848
+ "scale-in",
1849
+ "rise-words"
1850
+ ]
1851
+ },
1852
+ "__schema90": {
1853
+ "type": "number",
1854
+ "minimum": 0,
1855
+ "maximum": 200
1856
+ },
1857
+ "__schema91": {
1858
+ "type": "number",
1859
+ "minimum": 0,
1860
+ "maximum": 100
1861
+ },
1862
+ "__schema92": {
1863
+ "type": "number",
1864
+ "minimum": 0,
1865
+ "maximum": 100
1866
+ },
1867
+ "__schema94": {
1868
+ "type": "object",
1869
+ "properties": {
1870
+ "enabled": {
1871
+ "default": true,
1872
+ "type": "boolean"
1873
+ },
1874
+ "color": {
1875
+ "default": "rgba(245, 158, 11, 0.35)",
1876
+ "$ref": "#/$defs/cssColor"
1877
+ },
1878
+ "style": {
1879
+ "default": "marker",
1880
+ "type": "string",
1881
+ "enum": [
1882
+ "marker",
1883
+ "box",
1884
+ "pill",
1885
+ "underline-thick"
1886
+ ]
1887
+ },
1888
+ "paddingX": {
1889
+ "type": "number",
1890
+ "minimum": 0,
1891
+ "maximum": 64
1892
+ },
1893
+ "paddingY": {
1894
+ "type": "number",
1895
+ "minimum": 0,
1896
+ "maximum": 64
1897
+ },
1898
+ "borderRadius": {
1899
+ "type": "number",
1900
+ "minimum": 0,
1901
+ "maximum": 64
1902
+ }
1903
+ }
1904
+ },
1905
+ "__schema95": {
1906
+ "type": "object",
1907
+ "properties": {
1908
+ "enabled": {
1909
+ "default": true,
1910
+ "type": "boolean"
1911
+ },
1912
+ "lines": {
1913
+ "default": 2,
1914
+ "anyOf": [
1915
+ {
1916
+ "type": "number",
1917
+ "const": 2
1918
+ },
1919
+ {
1920
+ "type": "number",
1921
+ "const": 3
1922
+ }
1923
+ ]
1924
+ },
1925
+ "fontFamily": {
1926
+ "type": "string",
1927
+ "maxLength": 128
1928
+ },
1929
+ "color": {
1930
+ "$ref": "#/$defs/cssColor"
1931
+ },
1932
+ "marginRight": {
1933
+ "type": "number",
1934
+ "minimum": 0,
1935
+ "maximum": 64
1936
+ }
1937
+ }
1938
+ },
1939
+ "__schema96": {
1940
+ "type": "object",
1941
+ "propertyNames": {
1942
+ "$ref": "#/$defs/__schema97"
1943
+ },
1944
+ "additionalProperties": {
1945
+ "$ref": "#/$defs/__schema98"
1946
+ }
1947
+ },
1948
+ "__schema97": {
1949
+ "type": "string",
1950
+ "pattern": "^[a-z][a-z0-9-]{0,23}$"
1951
+ },
1952
+ "__schema98": {
1953
+ "type": "object",
1954
+ "properties": {
1955
+ "color": {
1956
+ "$ref": "#/$defs/cssColor"
1957
+ },
1958
+ "colorRole": {
1959
+ "type": "string",
1960
+ "enum": [
1961
+ "primary",
1962
+ "on-primary",
1963
+ "secondary",
1964
+ "on-secondary",
1965
+ "surface",
1966
+ "on-surface",
1967
+ "outline",
1968
+ "accent",
1969
+ "text-primary",
1970
+ "text-secondary",
1971
+ "text-muted",
1972
+ "text-on-accent"
1973
+ ]
1974
+ },
1975
+ "bold": {
1976
+ "type": "boolean"
1977
+ },
1978
+ "italic": {
1979
+ "type": "boolean"
1980
+ },
1981
+ "underline": {
1982
+ "type": "boolean"
1983
+ },
1984
+ "highlight": {
1985
+ "type": "object",
1986
+ "properties": {
1987
+ "style": {
1988
+ "type": "string",
1989
+ "enum": [
1990
+ "marker",
1991
+ "box",
1992
+ "pill",
1993
+ "underline-thick"
1994
+ ]
1995
+ },
1996
+ "color": {
1997
+ "$ref": "#/$defs/cssColor"
1998
+ },
1999
+ "colorRole": {
2000
+ "type": "string",
2001
+ "enum": [
2002
+ "primary",
2003
+ "on-primary",
2004
+ "secondary",
2005
+ "on-secondary",
2006
+ "surface",
2007
+ "on-surface",
2008
+ "outline",
2009
+ "accent",
2010
+ "text-primary",
2011
+ "text-secondary",
2012
+ "text-muted",
2013
+ "text-on-accent"
2014
+ ]
2015
+ },
2016
+ "paddingX": {
2017
+ "type": "number",
2018
+ "minimum": 0,
2019
+ "maximum": 64
2020
+ },
2021
+ "paddingY": {
2022
+ "type": "number",
2023
+ "minimum": 0,
2024
+ "maximum": 64
2025
+ },
2026
+ "borderRadius": {
2027
+ "type": "number",
2028
+ "minimum": 0,
2029
+ "maximum": 64
2030
+ }
2031
+ }
2032
+ }
2033
+ }
2034
+ },
2035
+ "__schema100": {
2036
+ "type": "number",
2037
+ "minimum": 0,
2038
+ "maximum": 100
2039
+ },
2040
+ "__schema102": {
2041
+ "maxItems": 32,
2042
+ "type": "array",
2043
+ "items": {
2044
+ "$ref": "#/$defs/maskCut"
2045
+ }
2046
+ },
2047
+ "maskCut": {
2048
+ "type": "object",
2049
+ "properties": {
2050
+ "id": {
2051
+ "type": "string",
2052
+ "maxLength": 128
2053
+ },
2054
+ "x": {
2055
+ "type": "number"
2056
+ },
2057
+ "y": {
2058
+ "type": "number"
2059
+ },
2060
+ "width": {
2061
+ "type": "number",
2062
+ "minimum": 0
2063
+ },
2064
+ "height": {
2065
+ "type": "number",
2066
+ "minimum": 0
2067
+ },
2068
+ "shape": {
2069
+ "type": "string",
2070
+ "enum": [
2071
+ "heart",
2072
+ "star",
2073
+ "circle",
2074
+ "rectangle",
2075
+ "hexagon",
2076
+ "blob",
2077
+ "custom"
2078
+ ]
2079
+ },
2080
+ "svgPath": {
2081
+ "type": "string",
2082
+ "maxLength": 20000
2083
+ },
2084
+ "feather": {
2085
+ "type": "number",
2086
+ "minimum": 0,
2087
+ "maximum": 100
2088
+ },
2089
+ "strokeColor": {
2090
+ "$ref": "#/$defs/cssColor"
2091
+ },
2092
+ "strokeWidth": {
2093
+ "type": "number",
2094
+ "minimum": 0,
2095
+ "maximum": 100
2096
+ }
2097
+ },
2098
+ "required": [
2099
+ "id",
2100
+ "x",
2101
+ "y",
2102
+ "width",
2103
+ "height",
2104
+ "shape"
2105
+ ],
2106
+ "additionalProperties": {}
2107
+ },
2108
+ "__schema103": {
2109
+ "type": "number",
2110
+ "minimum": 0,
2111
+ "maximum": 100
2112
+ },
2113
+ "__schema104": {
2114
+ "type": "number",
2115
+ "minimum": 0,
2116
+ "maximum": 100
2117
+ },
2118
+ "__schema105": {
2119
+ "type": "number",
2120
+ "minimum": 0,
2121
+ "maximum": 100
2122
+ },
2123
+ "__schema106": {
2124
+ "type": "string",
2125
+ "maxLength": 128
2126
+ },
2127
+ "__schema110": {
2128
+ "type": "number",
2129
+ "minimum": 0,
2130
+ "maximum": 100
2131
+ },
2132
+ "__schema112": {
2133
+ "type": "string",
2134
+ "enum": [
2135
+ "none",
2136
+ "linear",
2137
+ "metallic-chrome",
2138
+ "sunset-gold",
2139
+ "neon-glow"
2140
+ ]
2141
+ },
2142
+ "__schema113": {
2143
+ "type": "string",
2144
+ "enum": [
2145
+ "primary",
2146
+ "on-primary",
2147
+ "secondary",
2148
+ "on-secondary",
2149
+ "surface",
2150
+ "on-surface",
2151
+ "outline",
2152
+ "accent",
2153
+ "text-primary",
2154
+ "text-secondary",
2155
+ "text-muted",
2156
+ "text-on-accent"
2157
+ ]
2158
+ },
2159
+ "__schema114": {
2160
+ "type": "string",
2161
+ "enum": [
2162
+ "primary",
2163
+ "on-primary",
2164
+ "secondary",
2165
+ "on-secondary",
2166
+ "surface",
2167
+ "on-surface",
2168
+ "outline",
2169
+ "accent",
2170
+ "text-primary",
2171
+ "text-secondary",
2172
+ "text-muted",
2173
+ "text-on-accent"
2174
+ ]
2175
+ },
2176
+ "__schema115": {
2177
+ "type": "string",
2178
+ "enum": [
2179
+ "primary",
2180
+ "on-primary",
2181
+ "secondary",
2182
+ "on-secondary",
2183
+ "surface",
2184
+ "on-surface",
2185
+ "outline",
2186
+ "accent",
2187
+ "text-primary",
2188
+ "text-secondary",
2189
+ "text-muted",
2190
+ "text-on-accent"
2191
+ ]
2192
+ },
2193
+ "__schema116": {
2194
+ "type": "string",
2195
+ "enum": [
2196
+ "primary",
2197
+ "on-primary",
2198
+ "secondary",
2199
+ "on-secondary",
2200
+ "surface",
2201
+ "on-surface",
2202
+ "outline",
2203
+ "accent",
2204
+ "text-primary",
2205
+ "text-secondary",
2206
+ "text-muted",
2207
+ "text-on-accent"
2208
+ ]
2209
+ },
2210
+ "__schema117": {
2211
+ "type": "string",
2212
+ "enum": [
2213
+ "primary",
2214
+ "on-primary",
2215
+ "secondary",
2216
+ "on-secondary",
2217
+ "surface",
2218
+ "on-surface",
2219
+ "outline",
2220
+ "accent",
2221
+ "text-primary",
2222
+ "text-secondary",
2223
+ "text-muted",
2224
+ "text-on-accent"
2225
+ ]
2226
+ },
2227
+ "__schema118": {
2228
+ "type": "string",
2229
+ "enum": [
2230
+ "primary",
2231
+ "on-primary",
2232
+ "secondary",
2233
+ "on-secondary",
2234
+ "surface",
2235
+ "on-surface",
2236
+ "outline",
2237
+ "accent",
2238
+ "text-primary",
2239
+ "text-secondary",
2240
+ "text-muted",
2241
+ "text-on-accent"
2242
+ ]
2243
+ },
2244
+ "__schema119": {
2245
+ "type": "string",
2246
+ "enum": [
2247
+ "primary",
2248
+ "on-primary",
2249
+ "secondary",
2250
+ "on-secondary",
2251
+ "surface",
2252
+ "on-surface",
2253
+ "outline",
2254
+ "accent",
2255
+ "text-primary",
2256
+ "text-secondary",
2257
+ "text-muted",
2258
+ "text-on-accent"
2259
+ ]
2260
+ },
2261
+ "__schema120": {
2262
+ "$ref": "#/$defs/generativeFill"
2263
+ },
2264
+ "generativeFill": {
2265
+ "type": "object",
2266
+ "properties": {
2267
+ "generatorId": {
2268
+ "type": "string",
2269
+ "maxLength": 64,
2270
+ "pattern": "^[a-z0-9-]+$"
2271
+ },
2272
+ "seed": {
2273
+ "type": "number"
2274
+ },
2275
+ "params": {
2276
+ "type": "object",
2277
+ "propertyNames": {
2278
+ "type": "string",
2279
+ "maxLength": 64
2280
+ },
2281
+ "additionalProperties": {
2282
+ "anyOf": [
2283
+ {
2284
+ "type": "number"
2285
+ },
2286
+ {
2287
+ "type": "string",
2288
+ "maxLength": 256
2289
+ },
2290
+ {
2291
+ "type": "boolean"
2292
+ }
2293
+ ]
2294
+ }
2295
+ },
2296
+ "colors": {
2297
+ "type": "object",
2298
+ "properties": {
2299
+ "mode": {
2300
+ "type": "string",
2301
+ "enum": [
2302
+ "monochrome",
2303
+ "palette"
2304
+ ]
2305
+ },
2306
+ "stops": {
2307
+ "maxItems": 16,
2308
+ "type": "array",
2309
+ "items": {
2310
+ "$ref": "#/$defs/cssColor"
2311
+ }
2312
+ },
2313
+ "direction": {
2314
+ "type": "string",
2315
+ "enum": [
2316
+ "forward",
2317
+ "reverse",
2318
+ "radial"
2319
+ ]
2320
+ },
2321
+ "background": {
2322
+ "$ref": "#/$defs/cssColor"
2323
+ },
2324
+ "backgroundVisible": {
2325
+ "type": "boolean"
2326
+ }
2327
+ },
2328
+ "required": [
2329
+ "mode",
2330
+ "stops",
2331
+ "direction",
2332
+ "background",
2333
+ "backgroundVisible"
2334
+ ],
2335
+ "additionalProperties": {}
2336
+ }
2337
+ },
2338
+ "required": [
2339
+ "generatorId",
2340
+ "seed",
2341
+ "params",
2342
+ "colors"
2343
+ ],
2344
+ "additionalProperties": {}
2345
+ },
2346
+ "__schema121": {
2347
+ "type": "string",
2348
+ "maxLength": 2048,
2349
+ "pattern": "^(?:repeating-)?(?:linear|radial|conic)-gradient\\((?:[0-9A-Za-z#.,%/\\s+-]|(?:rgba?|hsla?)\\([0-9A-Za-z.,%/\\s+-]*\\)|var\\(\\s*--[A-Za-z0-9_-]+\\s*(?:,(?:[0-9A-Za-z#.,%/\\s+-]|(?:rgba?|hsla?)\\([0-9A-Za-z.,%/\\s+-]*\\))*)?\\))*\\)$"
2350
+ },
2351
+ "__schema122": {
2352
+ "type": "string",
2353
+ "enum": [
2354
+ "clouds",
2355
+ "bubbles",
2356
+ "grid",
2357
+ "waves",
2358
+ "stars",
2359
+ "stripes",
2360
+ "dots",
2361
+ "zigzags",
2362
+ "bolt",
2363
+ "leaf",
2364
+ "drop",
2365
+ "moon",
2366
+ "crown",
2367
+ "heart"
2368
+ ]
2369
+ },
2370
+ "__schema123": {
2371
+ "$ref": "#/$defs/cssColor"
2372
+ },
2373
+ "__schema124": {
2374
+ "type": "string",
2375
+ "enum": [
2376
+ "primary",
2377
+ "on-primary",
2378
+ "secondary",
2379
+ "on-secondary",
2380
+ "surface",
2381
+ "on-surface",
2382
+ "outline",
2383
+ "accent",
2384
+ "text-primary",
2385
+ "text-secondary",
2386
+ "text-muted",
2387
+ "text-on-accent"
2388
+ ]
2389
+ },
2390
+ "__schema125": {
2391
+ "$ref": "#/$defs/cssColor"
2392
+ },
2393
+ "__schema126": {
2394
+ "type": "string",
2395
+ "enum": [
2396
+ "primary",
2397
+ "on-primary",
2398
+ "secondary",
2399
+ "on-secondary",
2400
+ "surface",
2401
+ "on-surface",
2402
+ "outline",
2403
+ "accent",
2404
+ "text-primary",
2405
+ "text-secondary",
2406
+ "text-muted",
2407
+ "text-on-accent"
2408
+ ]
2409
+ },
2410
+ "__schema129": {
2411
+ "type": "string",
2412
+ "enum": [
2413
+ "right",
2414
+ "left",
2415
+ "up",
2416
+ "down",
2417
+ "zoom-in",
2418
+ "zoom-out",
2419
+ "pulse",
2420
+ "none"
2421
+ ]
2422
+ },
2423
+ "__schema130": {
2424
+ "maxItems": 16,
2425
+ "type": "array",
2426
+ "items": {
2427
+ "$ref": "#/$defs/__schema131"
2428
+ }
2429
+ },
2430
+ "__schema131": {
2431
+ "type": "string",
2432
+ "maxLength": 8000
2433
+ },
2434
+ "__schema132": {
2435
+ "maxItems": 16,
2436
+ "type": "array",
2437
+ "items": {
2438
+ "$ref": "#/$defs/cssColor"
2439
+ }
2440
+ },
2441
+ "__schema133": {
2442
+ "maxItems": 16,
2443
+ "type": "array",
2444
+ "items": {
2445
+ "type": "number"
2446
+ }
2447
+ },
2448
+ "__schema135": {
2449
+ "maxItems": 16,
2450
+ "type": "array",
2451
+ "items": {
2452
+ "type": "number"
2453
+ }
2454
+ },
2455
+ "__schema137": {
2456
+ "maxItems": 16,
2457
+ "type": "array",
2458
+ "items": {
2459
+ "type": "number"
2460
+ }
2461
+ },
2462
+ "__schema139": {
2463
+ "type": "string",
2464
+ "enum": [
2465
+ "color",
2466
+ "gradient",
2467
+ "pattern",
2468
+ "generative",
2469
+ "transparent",
2470
+ "image"
2471
+ ]
2472
+ },
2473
+ "__schema140": {
2474
+ "$ref": "#/$defs/cssColor"
2475
+ },
2476
+ "__schema141": {
2477
+ "type": "string",
2478
+ "enum": [
2479
+ "primary",
2480
+ "on-primary",
2481
+ "secondary",
2482
+ "on-secondary",
2483
+ "surface",
2484
+ "on-surface",
2485
+ "outline",
2486
+ "accent",
2487
+ "text-primary",
2488
+ "text-secondary",
2489
+ "text-muted",
2490
+ "text-on-accent"
2491
+ ]
2492
+ },
2493
+ "__schema142": {
2494
+ "$ref": "#/$defs/cssColor"
2495
+ },
2496
+ "__schema143": {
2497
+ "type": "string",
2498
+ "enum": [
2499
+ "primary",
2500
+ "on-primary",
2501
+ "secondary",
2502
+ "on-secondary",
2503
+ "surface",
2504
+ "on-surface",
2505
+ "outline",
2506
+ "accent",
2507
+ "text-primary",
2508
+ "text-secondary",
2509
+ "text-muted",
2510
+ "text-on-accent"
2511
+ ]
2512
+ },
2513
+ "__schema144": {
2514
+ "maxItems": 16,
2515
+ "type": "array",
2516
+ "items": {
2517
+ "$ref": "#/$defs/cssColor"
2518
+ }
2519
+ },
2520
+ "__schema145": {
2521
+ "type": "string",
2522
+ "enum": [
2523
+ "none",
2524
+ "color",
2525
+ "gradient",
2526
+ "pattern",
2527
+ "generative",
2528
+ "image"
2529
+ ]
2530
+ },
2531
+ "__schema146": {
2532
+ "type": "string",
2533
+ "maxLength": 10000000,
2534
+ "pattern": "^data:image\\/"
2535
+ },
2536
+ "__schema147": {
2537
+ "type": "object",
2538
+ "properties": {
2539
+ "x": {
2540
+ "type": "number",
2541
+ "minimum": 0,
2542
+ "maximum": 100
2543
+ },
2544
+ "y": {
2545
+ "type": "number",
2546
+ "minimum": 0,
2547
+ "maximum": 100
2548
+ },
2549
+ "zoom": {
2550
+ "type": "number",
2551
+ "minimum": 1,
2552
+ "maximum": 10
2553
+ }
2554
+ },
2555
+ "required": [
2556
+ "x",
2557
+ "y",
2558
+ "zoom"
2559
+ ]
2560
+ },
2561
+ "__schema150": {},
2562
+ "position": {
2563
+ "type": "array",
2564
+ "prefixItems": [
2565
+ {
2566
+ "$ref": "#/$defs/__schema151"
2567
+ },
2568
+ {
2569
+ "$ref": "#/$defs/__schema152"
2570
+ }
2571
+ ],
2572
+ "items": false,
2573
+ "minItems": 2,
2574
+ "maxItems": 2
2575
+ },
2576
+ "__schema151": {
2577
+ "type": "number",
2578
+ "minimum": 0,
2579
+ "maximum": 100
2580
+ },
2581
+ "__schema152": {
2582
+ "type": "number",
2583
+ "minimum": 0,
2584
+ "maximum": 100
2585
+ },
2586
+ "parallax": {
2587
+ "type": "object",
2588
+ "properties": {
2589
+ "enabled": {
2590
+ "default": true,
2591
+ "type": "boolean"
2592
+ },
2593
+ "depth": {
2594
+ "default": 0.5,
2595
+ "type": "number",
2596
+ "minimum": -2,
2597
+ "maximum": 2
2598
+ },
2599
+ "mode": {
2600
+ "default": "mouse",
2601
+ "type": "string",
2602
+ "enum": [
2603
+ "mouse",
2604
+ "scroll",
2605
+ "infinite_horizontal"
2606
+ ]
2607
+ },
2608
+ "axis": {
2609
+ "default": "both",
2610
+ "type": "string",
2611
+ "enum": [
2612
+ "both",
2613
+ "x_only",
2614
+ "y_only"
2615
+ ]
2616
+ },
2617
+ "infinite": {
2618
+ "$ref": "#/$defs/parallaxInfinite"
2619
+ }
2620
+ },
2621
+ "additionalProperties": {}
2622
+ },
2623
+ "parallaxInfinite": {
2624
+ "type": "object",
2625
+ "properties": {
2626
+ "enabled": {
2627
+ "default": false,
2628
+ "type": "boolean"
2629
+ },
2630
+ "speed_px_sec": {
2631
+ "default": 20,
2632
+ "type": "number",
2633
+ "minimum": -500,
2634
+ "maximum": 500
2635
+ },
2636
+ "direction": {
2637
+ "default": "right_to_left",
2638
+ "type": "string",
2639
+ "enum": [
2640
+ "left_to_right",
2641
+ "right_to_left"
2642
+ ]
2643
+ },
2644
+ "seamless_tile": {
2645
+ "default": true,
2646
+ "type": "boolean"
2647
+ },
2648
+ "pause_on_hover": {
2649
+ "default": false,
2650
+ "type": "boolean"
2651
+ }
2652
+ },
2653
+ "additionalProperties": {}
2654
+ },
2655
+ "trackingKeyframe": {
2656
+ "minItems": 2,
2657
+ "type": "array",
2658
+ "items": {
2659
+ "type": "number"
2660
+ }
2661
+ },
2662
+ "interaction": {
2663
+ "type": "object",
2664
+ "properties": {
2665
+ "action_type": {
2666
+ "type": "string",
2667
+ "enum": [
2668
+ "toggle_elements",
2669
+ "none"
2670
+ ]
2671
+ },
2672
+ "target": {
2673
+ "type": "object",
2674
+ "properties": {
2675
+ "hide_slots": {
2676
+ "type": "array",
2677
+ "items": {
2678
+ "type": "string",
2679
+ "maxLength": 128
2680
+ }
2681
+ },
2682
+ "show_slots": {
2683
+ "type": "array",
2684
+ "items": {
2685
+ "type": "string",
2686
+ "maxLength": 128
2687
+ }
2688
+ }
2689
+ },
2690
+ "required": [
2691
+ "hide_slots",
2692
+ "show_slots"
2693
+ ]
2694
+ }
2695
+ },
2696
+ "required": [
2697
+ "action_type"
2698
+ ]
2699
+ }
2700
+ }
2701
+ }