Create a [SIZE]x[SIZE] pixel art tileset in pixelsrc JSONL format.

Tileset description:
- [DESCRIBE TERRAIN: grass, water, stone, sand, etc.]
- [DESCRIBE STYLE: top-down RPG, platformer, isometric]
- [DESCRIBE VARIATION: how many tile variants needed]

Requirements:
- All tiles must use the SAME shared palette
- Tiles must be seamlessly tileable (edges match)
- Use 3-4 shades per base color for natural variation
- Include transition tiles if creating edge pieces
- Token names should describe the color purpose: {grass_light}, {grass_mid}, {grass_dark}

Output format:
1. First line: shared palette definition
2. Following lines: individual tile sprites referencing the palette
3. Ensure each grid row has exactly [SIZE] tokens

Example structure:
{"type":"palette","name":"[TERRAIN]_tiles","colors":{"{g1}":"#228B22","{g2}":"#32CD32","{g3}":"#1E5F1E"}}
{"type":"sprite","name":"[TERRAIN]_1","palette":"[TERRAIN]_tiles","grid":["...",...]}
{"type":"sprite","name":"[TERRAIN]_2","palette":"[TERRAIN]_tiles","grid":["...",...]}

Tiling guidelines:
- Distribute color variations randomly but evenly
- Avoid obvious repeating patterns
- Edge pixels should transition smoothly to adjacent tiles
- Test by mentally placing 4 tiles in a 2x2 grid
