{"name":"Pixel Art Notation Language","version":"0.1","canonicalPath":"/docs","machineReadablePath":"/docs/panl.json","markdownPath":"/docs/panl.md","schema":{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://pane.dev/schemas/panl-0.1.schema.json","title":"PANL Asset Spec","description":"Pixel Art Notation Language (PANL) v0.1 asset document schema.","type":"object","properties":{"version":{"type":"string","minLength":1},"canvas":{"type":"object","properties":{"width":{"type":"integer","minimum":16,"maximum":1024},"height":{"type":"integer","minimum":16,"maximum":1024}},"required":["width","height"],"additionalProperties":false},"palette":{"type":"object","properties":{"colors":{"type":"object","patternProperties":{"^[A-Za-z_][A-Za-z0-9_]*$":{"type":"string","pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"}},"additionalProperties":false}},"required":["colors"],"nullable":true,"additionalProperties":false},"seed":{"type":"integer","nullable":true},"definitions":{"type":"object","nullable":true,"additionalProperties":{"oneOf":[{"type":"object","properties":{"type":{"const":"iso_tile"},"x":{"type":"integer"},"y":{"type":"integer"},"w":{"type":"integer","minimum":2,"multipleOf":2},"h":{"type":"integer","minimum":2,"multipleOf":2},"fill":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"outline":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"transform":{"type":"object","properties":{"translateX":{"type":"integer"},"translateY":{"type":"integer"},"flipX":{"type":"boolean"},"flipY":{"type":"boolean"}},"additionalProperties":false},"dither":{"type":"object","properties":{"pattern":{"type":"string","enum":["checker"]},"color":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"offsetX":{"type":"integer"},"offsetY":{"type":"integer"}},"required":["pattern","color"],"additionalProperties":false}},"required":["type","x","y","w","h","fill"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"iso_prism"},"x":{"type":"integer"},"y":{"type":"integer"},"w":{"type":"integer","minimum":2,"multipleOf":2},"h":{"type":"integer","minimum":2,"multipleOf":2},"depth":{"type":"integer","minimum":1},"topFill":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"leftFill":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"rightFill":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"outline":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"transform":{"type":"object","properties":{"translateX":{"type":"integer"},"translateY":{"type":"integer"},"flipX":{"type":"boolean"},"flipY":{"type":"boolean"}},"additionalProperties":false},"dither":{"type":"object","properties":{"pattern":{"type":"string","enum":["checker"]},"color":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"offsetX":{"type":"integer"},"offsetY":{"type":"integer"}},"required":["pattern","color"],"additionalProperties":false}},"required":["type","x","y","w","h","depth","topFill","leftFill","rightFill"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"rect"},"x":{"type":"integer"},"y":{"type":"integer"},"w":{"type":"integer","minimum":1},"h":{"type":"integer","minimum":1},"fill":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"stroke":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"strokeWidth":{"type":"integer","minimum":1},"transform":{"type":"object","properties":{"translateX":{"type":"integer"},"translateY":{"type":"integer"},"flipX":{"type":"boolean"},"flipY":{"type":"boolean"}},"additionalProperties":false},"dither":{"type":"object","properties":{"pattern":{"type":"string","enum":["checker"]},"color":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"offsetX":{"type":"integer"},"offsetY":{"type":"integer"}},"required":["pattern","color"],"additionalProperties":false}},"required":["type","x","y","w","h"],"anyOf":[{"required":["fill"]},{"required":["stroke"]}],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"line"},"x1":{"type":"integer"},"y1":{"type":"integer"},"x2":{"type":"integer"},"y2":{"type":"integer"},"color":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"width":{"type":"integer","minimum":1},"transform":{"type":"object","properties":{"translateX":{"type":"integer"},"translateY":{"type":"integer"},"flipX":{"type":"boolean"},"flipY":{"type":"boolean"}},"additionalProperties":false},"dither":{"type":"object","properties":{"pattern":{"type":"string","enum":["checker"]},"color":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"offsetX":{"type":"integer"},"offsetY":{"type":"integer"}},"required":["pattern","color"],"additionalProperties":false}},"required":["type","x1","y1","x2","y2","color"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"polygon"},"points":{"type":"array","minItems":3,"items":{"type":"object","properties":{"x":{"type":"integer"},"y":{"type":"integer"}},"required":["x","y"],"additionalProperties":false}},"fill":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"stroke":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"strokeWidth":{"type":"integer","minimum":1},"transform":{"type":"object","properties":{"translateX":{"type":"integer"},"translateY":{"type":"integer"},"flipX":{"type":"boolean"},"flipY":{"type":"boolean"}},"additionalProperties":false},"dither":{"type":"object","properties":{"pattern":{"type":"string","enum":["checker"]},"color":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"offsetX":{"type":"integer"},"offsetY":{"type":"integer"}},"required":["pattern","color"],"additionalProperties":false}},"required":["type","points"],"anyOf":[{"required":["fill"]},{"required":["stroke"]}],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"use"},"ref":{"type":"string","minLength":1},"transform":{"type":"object","properties":{"translateX":{"type":"integer"},"translateY":{"type":"integer"},"flipX":{"type":"boolean"},"flipY":{"type":"boolean"}},"additionalProperties":false},"overrides":{"type":"object","properties":{"colors":{"type":"object","patternProperties":{"^[A-Za-z_][A-Za-z0-9_]*$":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]}},"additionalProperties":false},"transform":{"type":"object","properties":{"translateX":{"type":"integer"},"translateY":{"type":"integer"},"flipX":{"type":"boolean"},"flipY":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false}},"required":["type","ref"],"additionalProperties":false}]}},"asset":{"type":"object","properties":{"id":{"type":"string","minLength":1},"commands":{"type":"array","minItems":1,"maxItems":2000,"items":{"oneOf":[{"type":"object","properties":{"type":{"const":"iso_tile"},"x":{"type":"integer"},"y":{"type":"integer"},"w":{"type":"integer","minimum":2,"multipleOf":2},"h":{"type":"integer","minimum":2,"multipleOf":2},"fill":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"outline":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"transform":{"type":"object","properties":{"translateX":{"type":"integer"},"translateY":{"type":"integer"},"flipX":{"type":"boolean"},"flipY":{"type":"boolean"}},"additionalProperties":false},"dither":{"type":"object","properties":{"pattern":{"type":"string","enum":["checker"]},"color":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"offsetX":{"type":"integer"},"offsetY":{"type":"integer"}},"required":["pattern","color"],"additionalProperties":false}},"required":["type","x","y","w","h","fill"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"iso_prism"},"x":{"type":"integer"},"y":{"type":"integer"},"w":{"type":"integer","minimum":2,"multipleOf":2},"h":{"type":"integer","minimum":2,"multipleOf":2},"depth":{"type":"integer","minimum":1},"topFill":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"leftFill":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"rightFill":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"outline":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"transform":{"type":"object","properties":{"translateX":{"type":"integer"},"translateY":{"type":"integer"},"flipX":{"type":"boolean"},"flipY":{"type":"boolean"}},"additionalProperties":false},"dither":{"type":"object","properties":{"pattern":{"type":"string","enum":["checker"]},"color":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"offsetX":{"type":"integer"},"offsetY":{"type":"integer"}},"required":["pattern","color"],"additionalProperties":false}},"required":["type","x","y","w","h","depth","topFill","leftFill","rightFill"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"rect"},"x":{"type":"integer"},"y":{"type":"integer"},"w":{"type":"integer","minimum":1},"h":{"type":"integer","minimum":1},"fill":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"stroke":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"strokeWidth":{"type":"integer","minimum":1},"transform":{"type":"object","properties":{"translateX":{"type":"integer"},"translateY":{"type":"integer"},"flipX":{"type":"boolean"},"flipY":{"type":"boolean"}},"additionalProperties":false},"dither":{"type":"object","properties":{"pattern":{"type":"string","enum":["checker"]},"color":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"offsetX":{"type":"integer"},"offsetY":{"type":"integer"}},"required":["pattern","color"],"additionalProperties":false}},"required":["type","x","y","w","h"],"anyOf":[{"required":["fill"]},{"required":["stroke"]}],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"line"},"x1":{"type":"integer"},"y1":{"type":"integer"},"x2":{"type":"integer"},"y2":{"type":"integer"},"color":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"width":{"type":"integer","minimum":1},"transform":{"type":"object","properties":{"translateX":{"type":"integer"},"translateY":{"type":"integer"},"flipX":{"type":"boolean"},"flipY":{"type":"boolean"}},"additionalProperties":false},"dither":{"type":"object","properties":{"pattern":{"type":"string","enum":["checker"]},"color":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"offsetX":{"type":"integer"},"offsetY":{"type":"integer"}},"required":["pattern","color"],"additionalProperties":false}},"required":["type","x1","y1","x2","y2","color"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"polygon"},"points":{"type":"array","minItems":3,"items":{"type":"object","properties":{"x":{"type":"integer"},"y":{"type":"integer"}},"required":["x","y"],"additionalProperties":false}},"fill":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"stroke":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"strokeWidth":{"type":"integer","minimum":1},"transform":{"type":"object","properties":{"translateX":{"type":"integer"},"translateY":{"type":"integer"},"flipX":{"type":"boolean"},"flipY":{"type":"boolean"}},"additionalProperties":false},"dither":{"type":"object","properties":{"pattern":{"type":"string","enum":["checker"]},"color":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]},"offsetX":{"type":"integer"},"offsetY":{"type":"integer"}},"required":["pattern","color"],"additionalProperties":false}},"required":["type","points"],"anyOf":[{"required":["fill"]},{"required":["stroke"]}],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"use"},"ref":{"type":"string","minLength":1},"transform":{"type":"object","properties":{"translateX":{"type":"integer"},"translateY":{"type":"integer"},"flipX":{"type":"boolean"},"flipY":{"type":"boolean"}},"additionalProperties":false},"overrides":{"type":"object","properties":{"colors":{"type":"object","patternProperties":{"^[A-Za-z_][A-Za-z0-9_]*$":{"type":"string","anyOf":[{"pattern":"^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$"},{"pattern":"^@[A-Za-z_][A-Za-z0-9_]*$"}]}},"additionalProperties":false},"transform":{"type":"object","properties":{"translateX":{"type":"integer"},"translateY":{"type":"integer"},"flipX":{"type":"boolean"},"flipY":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false}},"required":["type","ref"],"additionalProperties":false}]}}},"required":["id","commands"],"additionalProperties":false}},"required":["version","canvas","asset"],"additionalProperties":false},"entries":[{"id":"root","title":"Root Spec","kind":"root","signature":"{ version, canvas, palette?, seed?, definitions?, asset }","summary":"Top-level document for a single asset render.","fields":[{"name":"version","type":"string","required":true,"description":"Notation version tag, currently \"0.1\"."},{"name":"canvas","type":"{ width: int, height: int }","required":true,"description":"Fixed output canvas size."},{"name":"palette","type":"{ colors: Record<string, hex> }","required":false,"description":"Named colors referenced via @token."},{"name":"seed","type":"int","required":false,"description":"Required when dither is used."},{"name":"definitions","type":"Record<string, command>","required":false,"description":"Reusable named command definitions."},{"name":"asset","type":"{ id: string, commands: command[] }","required":true,"description":"Asset identifier and render command list."}],"notes":["Commands are rendered in array order.","Warnings do not block PNG export."]},{"id":"iso_prism","title":"iso_prism","kind":"primitive","signature":"iso_prism(x, y, w, h, depth, topFill, leftFill, rightFill, outline?)","summary":"Isometric block primitive with top, left, and right faces.","fields":[{"name":"x","type":"int","required":true,"description":"Top-face center X coordinate."},{"name":"y","type":"int","required":true,"description":"Top-face center Y coordinate."},{"name":"w","type":"int (even)","required":true,"description":"Top-face width."},{"name":"h","type":"int (even)","required":true,"description":"Top-face height."},{"name":"depth","type":"int >= 1","required":true,"description":"Prism vertical depth."},{"name":"topFill/leftFill/rightFill","type":"color","required":true,"description":"Face fill colors."},{"name":"outline","type":"color","required":false,"description":"Optional outline color."},{"name":"transform","type":"transform","required":false,"description":"translate / flip transforms."},{"name":"dither","type":"dither","required":false,"description":"Checker overlay on top face."}]},{"id":"iso_tile","title":"iso_tile","kind":"primitive","signature":"iso_tile(x, y, w, h, fill, outline?)","summary":"Flat isometric diamond (top-face only).","fields":[{"name":"x","type":"int","required":true,"description":"Diamond center X."},{"name":"y","type":"int","required":true,"description":"Diamond top Y."},{"name":"w","type":"int (even)","required":true,"description":"Diamond width."},{"name":"h","type":"int (even)","required":true,"description":"Diamond height."},{"name":"fill","type":"color","required":true,"description":"Fill color."},{"name":"outline","type":"color","required":false,"description":"Optional edge color."},{"name":"transform","type":"transform","required":false,"description":"translate / flip transforms."},{"name":"dither","type":"dither","required":false,"description":"Checker overlay."}]},{"id":"rect","title":"rect","kind":"primitive","signature":"rect(x, y, w, h, fill? | stroke?)","summary":"Axis-aligned rectangle primitive.","fields":[{"name":"x,y","type":"int","required":true,"description":"Top-left corner."},{"name":"w,h","type":"int >= 1","required":true,"description":"Dimensions."},{"name":"fill","type":"color","required":false,"description":"Fill color (required if stroke missing)."},{"name":"stroke","type":"color","required":false,"description":"Stroke color (required if fill missing)."},{"name":"strokeWidth","type":"int >= 1","required":false,"description":"Stroke width."},{"name":"transform","type":"transform","required":false,"description":"translate / flip transforms."}]},{"id":"line","title":"line","kind":"primitive","signature":"line(x1, y1, x2, y2, color, width?)","summary":"Integer-based raster line primitive.","fields":[{"name":"x1,y1,x2,y2","type":"int","required":true,"description":"Line endpoints."},{"name":"color","type":"color","required":true,"description":"Line color."},{"name":"width","type":"int >= 1","required":false,"description":"Line width."},{"name":"transform","type":"transform","required":false,"description":"translate / flip transforms."}]},{"id":"polygon","title":"polygon","kind":"primitive","signature":"polygon(points, fill? | stroke?)","summary":"Custom polygon primitive with integer points.","fields":[{"name":"points","type":"Array<{x:int,y:int}>","required":true,"description":"At least 3 points."},{"name":"fill","type":"color","required":false,"description":"Fill color (required if stroke missing)."},{"name":"stroke","type":"color","required":false,"description":"Stroke color (required if fill missing)."},{"name":"strokeWidth","type":"int >= 1","required":false,"description":"Stroke width."},{"name":"transform","type":"transform","required":false,"description":"translate / flip transforms."}]},{"id":"use","title":"use","kind":"primitive","signature":"use(ref, transform?, overrides?)","summary":"Reference a named definition and apply allowed overrides.","fields":[{"name":"ref","type":"string","required":true,"description":"Definition name to reuse."},{"name":"transform","type":"transform","required":false,"description":"Per-instance transform."},{"name":"overrides.colors","type":"Record<string, color>","required":false,"description":"Allowed color key overrides only."},{"name":"overrides.transform","type":"transform","required":false,"description":"Additional transform override."}],"notes":["Geometry overrides are blocked in v1 by parser rules."]},{"id":"color","title":"color","kind":"helper","signature":"hex | @paletteToken","summary":"Color input accepted by draw commands.","fields":[{"name":"hex","type":"#RRGGBB | #RRGGBBAA","required":true,"description":"Direct color literal."},{"name":"@name","type":"palette reference","required":false,"description":"Lookup in palette.colors."}]},{"id":"transform","title":"transform","kind":"helper","signature":"{ translateX?, translateY?, flipX?, flipY? }","summary":"Integer transform properties applied in local coordinates.","fields":[{"name":"translateX","type":"int","required":false,"description":"Horizontal translation."},{"name":"translateY","type":"int","required":false,"description":"Vertical translation."},{"name":"flipX","type":"boolean","required":false,"description":"Mirror around local origin on X."},{"name":"flipY","type":"boolean","required":false,"description":"Mirror around local origin on Y."}]},{"id":"dither","title":"dither","kind":"helper","signature":"{ pattern: \"checker\", color, offsetX?, offsetY? }","summary":"Optional checker overlay for selected primitives.","fields":[{"name":"pattern","type":"\"checker\"","required":true,"description":"Current v1 supported pattern."},{"name":"color","type":"color","required":true,"description":"Overlay color."},{"name":"offsetX/offsetY","type":"int","required":false,"description":"Pattern phase offsets."}]}],"examples":[{"id":"grass_block","label":"Grass Block","spec":{"version":"0.1","canvas":{"width":256,"height":256},"palette":{"colors":{"grassTop":"#7EC850","grassLeft":"#5A9E34","grassRight":"#3D6622","outline":"#20252E"}},"asset":{"id":"grass_block","commands":[{"type":"iso_prism","x":128,"y":72,"w":32,"h":16,"depth":16,"topFill":"@grassTop","leftFill":"@grassLeft","rightFill":"@grassRight","outline":"@outline"}]}}},{"id":"road_tile","label":"Road Tile","spec":{"version":"0.1","canvas":{"width":256,"height":256},"palette":{"colors":{"road":"#555F6E","edge":"#2A3240","lane":"#CFD6E5"}},"seed":42,"asset":{"id":"road_tile","commands":[{"type":"iso_tile","x":128,"y":100,"w":64,"h":32,"fill":"@road","outline":"@edge"},{"type":"line","x1":128,"y1":112,"x2":128,"y2":120,"color":"@lane","width":1}]}}},{"id":"office_massing","label":"Office Massing (use + overrides)","spec":{"version":"0.1","canvas":{"width":256,"height":256},"palette":{"colors":{"baseTop":"#B7C1CC","baseLeft":"#93A1B0","baseRight":"#7E8D9E","glass":"#9CC7F5","outline":"#253040"}},"seed":15,"definitions":{"block":{"type":"iso_prism","x":128,"y":72,"w":48,"h":24,"depth":20,"topFill":"@baseTop","leftFill":"@baseLeft","rightFill":"@baseRight","outline":"@outline"}},"asset":{"id":"office_massing","commands":[{"type":"use","ref":"block"},{"type":"use","ref":"block","transform":{"translateX":0,"translateY":-20},"overrides":{"colors":{"topFill":"@glass","leftFill":"#6E89A8","rightFill":"#5F7997"}}}]}}}]}