Character JSON Template ```toon character: identity_id: unique_slug_for_identity_v1 name: Full Character Name species_or_type: "Race or species (e.g., Human, Dwarf, Half-Elf, Ratfolk)" apparent_age: 0 height: "### cm" build: "body type or silhouette (e.g., stocky, athletic, slender)" skin_tone: "#HEXCODE" face: shape: "e.g., square, oval, heart-shaped" brow: "e.g., straight, arched, heavy" eyes: color: "#HEXCODE" shape: "e.g., almond, round, narrow" distance: close-set | average | wide-set nose: "e.g., straight, aquiline, upturned" mouth: "e.g., full lips, thin line, defined cupid’s bow" distinctives[1]: "scars, freckles, tattoos, moles, unique marks (side/position/count)" hair: color: name + #HEXCODE length: "e.g., short, shoulder, waist" style: "e.g., loose waves, braids, tied back" part: left | right | center | none palette[5]: "#HEX1" "#HEX2" "#HEX3" "#HEX4" "#HEX5" signature_items[1]: "notable items always associated (e.g., hatchets, pendant)" wardrobe_default: typical outfit or armor set allowed_variations: hair: "limits or permissions (e.g., updo allowed; no color change)" makeup: "e.g., minimal, none, light" aging: ±X years weight: stable | small variance do_not_change[4]: eye color scar positions freckle pattern face proportions notes: "optional; any special reminders about lighting, accessories, or backstory that affect visuals" ``` Style JSON Template ```toon style: mode: anime_cel | anime_semi_realistic | manga_halftone line_weight: thin | medium | thick palette_bias: warm | cool | neutral finish: clean | light_texture | painterly saturation: low | medium | high contrast: low | medium | high ``` Scene JSON Template ```toon scene: pose: "describe stance and posture (e.g., 'standing with arms crossed, weight on left leg')" expression: "facial mood and tone (e.g., 'focused frown', 'gentle smile')" camera: "lens + angle (e.g., '50mm portrait, eye-level', '35mm wide, low angle')" framing: headshot | bust | waist-up | full-body lighting: "type, source, and tone (e.g., 'warm forge glow from right', 'overcast diffused light')" environment: "short scene setting (e.g., 'inside dwarven forge', 'sunset cliffside')" wardrobe_override: optional; specify outfit change if not default props[1]: list visible props or gear motion: "optional; dynamic action (e.g., 'hammer mid-swing', 'cloak flowing')" weather: "optional; e.g., 'rain', 'snow', 'clear sky'" mood: "optional; emotional atmosphere (e.g., 'tense and determined')" composition_notes: "optional; layout or emphasis details (e.g., 'rule-of-thirds focus on face')" ``` Optional Output JSON Template ```toon output: size: 1024x1536 | 1536x1024 | 1024x1024 background: plain | transparent | descriptive background detail count: 1 ``` House Crests ```toon house_name: "" motto: "" crest: primary_symbol: object: "" description: "" style: "" position: "" color: "" secondary_elements[0]: field: pattern: "" colors[0]: division_style: "" texture: "" accents: trim_color: "" metallic_details: "" light_effect: "" shield_shape: "" ornamentation: helm: mantling: banner: background: vibe[0]: inspiration: "" metadata: artist_reference: "" style_keywords[0]: usage_notes: "" ``` Locations JSON Template ```toon { "version": "0.2", "coord_space": { "type": "normalized", "width": 1000, "height": 1000 }, "layers": ["regions", "water", "mountains", "forests", "rivers", "routes", "cities", "labels"], "styles": { "region": { "fill": "#cccccc", "fill_opacity": 0.12, "stroke": "#888888", "stroke_width": 2 }, "water": { "fill": "#66aee8", "fill_opacity": 0.35, "stroke": "#3a87b7", "stroke_width": 1 }, "mountains": { "stroke": "#7a7a7a", "stroke_width": 2, "dash": [6,4] }, "forest": { "fill": "#4a7f4a", "fill_opacity": 0.25, "stroke": "#2f5b2f", "stroke_width": 1 }, "river": { "stroke": "#5fb3e0", "stroke_width": 2 }, "city": { "icon": "city-dot", "size": 10, "color": "#111111" }, "route": { "stroke": "#c2a15a", "stroke_width": 3 }, "label_major": { "font": "Serif", "size": 18, "color": "#111111", "halo": "#ffffff", "halo_width": 2 }, "label_minor": { "font": "Serif", "size": 14, "color": "#222222", "halo": "#ffffff", "halo_width": 2 } }, "nodes": [ { "id": "<unique_slug>", "name": "<Display Name>", "kind": "<region|subregion|city|water|mountain_range|forest|frontier|landmark>", "layer": "<regions|cities|water|mountains|forests|rivers|labels>", "parent_id": "<parent_slug_or_null>", "geometry": { "type": "<point|polygon|polyline>", "pos": [<x>, <y>], "coords": [[<x>,<y>], [<x>,<y>]] }, "style": "<style_key_or_omit>", "label": { "text": "<Label>", "layer": "labels", "style": "<label_major|label_minor>", "anchor": [<x>, <y>], "offset": [<dx>, <dy>] }, "z": <draw_order_number>, "visibility": { "min_zoom": <number>, "max_zoom": <number> }, "interactions": { "on_click": { "type": "<open|modal|link>", "target": "<route_or_id>" } }, "tags": ["<tag1>", "<tag2>"] } ], "connections": [ { "id": "<edge_id>", "name": "<Display Name>", "kind": "<road|river|ferry|trail>", "layer": "routes", "geometry": { "type": "polyline", "coords": [[<x>,<y>],[<x>,<y>]] }, "style": "route", "z": <draw_order_number>, "visibility": { "min_zoom": <number>, "max_zoom": <number> }, "meta": { "from": "<node_id>", "to": "<node_id>" } } ] } ```