# Isometric System

## Projection

Kiduna 2.5D uses a 2:1 isometric ground basis. The canonical runtime tile is 128 × 64 px at 1× reference zoom.

```text
screenX = originX + (worldX - worldY) × 64
screenY = originY + (worldX + worldY) × 32 - worldZ × 64
```

World X runs southeast; world Y runs southwest; world Z is vertical. Authored illustration may visually lift toward a cinematic 35.264° camera, but placement footprints and anchor math must resolve to the same basis.

## Units and scale

One world unit (WU) equals 0.25 m.

| Reference | Canonical size |
|---|---|
| Standing Avatar | 2.5 × 2.5 × 7 WU |
| Gathering chair | 3 × 3 × 5 WU |
| Door clear opening | 5 × 1 × 8.4 WU |
| Floor-to-floor | 12 WU |
| Young tree | 10–18 WU high |
| Mature tree | 28–60 WU high |

Objects may exceed these ranges only with an explicit `scaleVariance` justification in validation.

## Anchor contract

Every spatial Component declares:

- `placement` — transform origin at ground contact;
- `interaction` — point toward which focus, pointer and Action affordance resolve;
- `shadow` — contact-shadow origin and receiving plane;
- `focus` — camera and accessible focus target;
- `light` — emitter origin when applicable;
- typed attachment anchors — e.g. `attachment.left`, `attachment.seat.03`;
- `portal.entry` and `portal.exit` when applicable;
- occlusion volumes for foreground objects.

## Depth

Layer bands provide semantic order; the projected world position provides local order.

```text
depthKey = layerBand × 1,000,000
         + round((worldX + worldY) × 1,000)
         + round(worldZ × 100)
         + localDepthBias
```

Bands are 00 atmosphere far, 10 background plate, 20 rear structure, 30 ground, 40 placed structure, 50 objects, 60 Entities, 70 foreground occluders, 80 Effects, 90 Panels, 100 Overlays and 110 Chrome.

## Occlusion response

1. No response while focus remains readable.
2. Foreground material receives a 72% luminance veil.
3. Occluder fades to 38% material opacity within a feathered mask.
4. A semantic cutaway opens only when the first two responses fail.
5. The focused Entity receives a 1.5 px moon-cream silhouette only as a final legibility aid.

Roofs use authored cut planes. Trees fade by cluster rather than by rectangular sprite. Walls cut at architectural joints.

## Seam hiding

Ground masks require a 12–24 px overlap gutter at 1×. Adjacent repeat cells may not share rotation, wear seed and foliage seed. Edge decals, moss, leaf litter, cracks, shadow pools and small elevation transitions cross technical boundaries. Architecture joins on typed sockets and common datum lines.
