# Spécifications : Carte du Zoo

## Définition
La carte du zoo est l'espace principal de gestion du joueur où il place ses bâtiments et ses animaux.

## Structure
- **Vue** : Isométrique (2.5D).
- **Affichage** : Plein écran sous la barre du haut, dézoom possible.
- **Grille** : Composée de cases individuelles.
- **Biomes** : Divisée en tiers de largeur :
  - Gauche : Prairie
  - Milieu : Océan
  - Droite : Montagne
- **Dégradés** : Couleurs et températures varient doucement au sein des biomes.

## Contenu Initial (Lancement)
- 1 Case Agrandissement du zoo (+1 case, payant)
- 1 Case Recherche (Coin haut gauche)
- 1 Case Billeterie (Coin haut gauche)
- 1 Case Nurserie (Coin haut gauche)
- 1 Case Accueil nouveaux animaux (Coin haut gauche)
- 1 Case Nourriture générale (Coin haut gauche)
- 1 Case Camion (Coin haut gauche)
- 24 Cases de terrain (3 couleurs différentes réparties selon les biomes)

## Mécaniques
- **Placement** : Le joueur peut placer des œufs, des animaux et des bâtiments sur les cases vides.
- **Déplacement** : Glisser-déposer pour réorganiser.
- **Visiteurs** : Les visiteurs se déplacent sur la grille.
- **Feedbacks** : L'état du terrain (herbe jaunie, givre) reflète l'adéquation avec les animaux.

# Annexes Techniques

## 1. Données et États
### Modèle de Données (JSON)
```json
{
  "id": "uuid",
  "owner_id": "uuid",
  "width": "integer (init 5)",
  "height": "integer (init 6)",
  "cases": [
    {
      "id": "uuid",
      "grid": { "x": "integer", "y": "integer" },
      "iso": { "iso_x": "integer", "iso_y": "integer" },
      "z_index": "integer",
      "biome": "enum('prairie','ocean','montagne')",
      "terrain": {
        "ground_type": "enum('herbe','terre','sable','roche','eau')",
        "path_type": "enum('none','terre','gravier','paves','bois_pont')",
        "decoration_ids": "uuid[]"
      },
      "occupancy": {
        "type": "enum('empty','animal','building','service','enclosure_fence','water_obstacle')",
        "entity_id": "uuid | null"
      },
      "render": {
        "tile_variant": "string (auto-tiling key)",
        "occluder": "boolean",
        "click_hitbox": "enum('tile','base_sprite','custom_polygon')"
      },
      "timestamps": {
        "created_at": "timestamp",
        "updated_at": "timestamp"
      }
    }
  ]
}
```

### Caractéristiques Initiales
| Caractéristique | Valeur Initiale |
| :--- | :--- |
| Taille | 30 cases (5x6 approx) |
| Biomes | 3 (Tiers) |

### Scores Initiaux
**Score Aménagement** : 0/100 (Utilisation de l'espace).

## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Création du compte joueur.

### Conditions de Disparition
**Reset Joueur** : Suppression du compte ou Faillite totale.

### Hérédité
**Fondations** : Les extensions de terrain achetées sont conservées en cas de "Soft Reset" (Prestige).

## 3. Impacts Environnementaux
### Impact Température
**Micro-climats** : Les cases adjacentes à l'Océan sont plus fraîches (-2°C). Celles en Montagne sont plus froides (-5°C).

### Impact Milieu (Biome)
**Bonus Synergie** : Placer 4 cases de même biome en carré crée un "Super Biome" (+10% efficacité).

### Impact Saisons
**Décor** : Les arbres (décoration) changent de couleur (Vert -> Orange -> Blanc -> Bourgeons).

### Impact Heure / Jour-Nuit
**Lumières** : Les lampadaires et bâtiments s'allument la nuit (Ambiance).

## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Intimité** : Les buissons (décoration) placés autour d'un enclos augmentent la fertilité (+5%).

### Impact Mort
**Compost** : Un animal mort fertilise le sol. L'herbe devient plus verte sur cette case après disparition du corps.

### Impact Nourriture
**Pousse** : L'herbe (nourriture gratuite) repousse lentement sur les cases Prairie vides.

### Impact Attractivité (Visiteurs/Animaux)
**Beauté** : +1 Attractivité par élément de décoration (Arbre, Banc, Fontaine).

### Impact Valeur
**Foncier** : Chaque case achetée augmente la valeur théorique du zoo.

## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Chemins** : Augmentent la vitesse de déplacement des visiteurs (+50%).

### Dépenses (Boutiques/Visiteurs)
**Entretien Espaces Verts** : Coût hebdomadaire pour garder le zoo propre (1 pièce/case).

### Trajet Visiteurs
Support du pathfinding (A* sur la grille). Les visiteurs évitent les obstacles (Rochers, Eau profonde).

## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
*   **Agrandissement** : Ajout d'une colonne/ligne ou case adjacente.
*   **Catastrophe** : Inondation (Océan déborde) ou Éboulement (Montagne).

## 7. Progression
### Tableau des Upgrades
Voir `achat_upgrade_case_zoo.md`.

## 8. Logique et Interfaces
### Pseudo-code Impacts
```javascript
function initZooMap():
  width = 6
  height = 5
  for x in 0..width:
    for y in 0..height:
      biome = getBiomeByColumn(x, width)
      createCase(x, y, biome)
```

### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `MAP_EXPAND` | Succès | "Le zoo s'agrandit ! Nouvelles terres disponibles." |

# Annexes UX/UI

## 0. Direction Artistique & Vue
*   **Vue** : Isométrique (2.5D).
*   **Grille** : Les déplacements se font sur une grille losange.
*   **Sprites** : 4 directions (Nord-Est, Sud-Est, Sud-Ouest, Nord-Ouest).
*   **Profondeur** : Gestion du Z-index (les éléments "en bas" cachent ceux "en haut").
*   **Style Visuel** : Inspiré de `IMG_20260303_170253.jpg`.
    *   Coloré, vivant, détails foisonnants.
    *   Aspect "dessiné à la main" ou "cartoon soigné".
    *   Couleurs vives et contours nets.

## 1. Expérience Utilisateur (UX)
### Interaction Grille (Action)
**Description UX** : Le joueur clique sur une case pour voir son contenu ou construire.
**Description UI** : Surbrillance de la case au survol. Clic ouvre un **Panneau Latéral (Bottom Sheet)** non bloquant (Info/Construire).
**Emplacement** : Grille.
**Intégration** : Curseur.
**Navigation** : Clic -> Menu.
**Événements** : `CLICK_CASE`.

#### Assets
- **Musiques** : Son "Pop" discret.
- **Sons** : `click_tile.mp3`.
- **Graphiques** : Cadre de sélection blanc/brillant.
- **Vidéos** : Effet de "Pop" au clic.
- **Animations** : Pulsation du cadre.
- **Couleurs** : Blanc.
- **Textes** : Nom de l'objet sélectionné.
- **Formes** : Carré.

### Mode Construction (Action)
**Description UX** : Le joueur place un bâtiment ou modifie le terrain.
**Description UI** : Grille visible. Cases valides en vert, invalides en rouge.
**Mode Peinture** : Le joueur peut glisser son doigt (Drag) pour construire/modifier plusieurs cases d'affilée (ex: peindre un biome ou poser une route).
**Alternative Accessibilité** : Tap to Select (Bâtiment) -> Tap to Place (Case) pour éviter le Drag & Drop.
**Emplacement** : Grille.
**Intégration** : Overlay.
**Navigation** : Drag -> Drop.
**Événements** : `ENTER_BUILD_MODE`.

#### Assets
- **Musiques** : Musique "Mode Édition" (calme, boucle).
- **Sons** : `grid_snap.mp3`.
- **Graphiques** : Grille semi-transparente.
- **Vidéos** : Effet de grille holographique.
- **Animations** : Snap to grid.
- **Couleurs** : Vert/Rouge (Alpha 0.5).
- **Textes** : "Placer ici".
- **Formes** : Carrés.

## Définition

| Champ | Valeur |
|---|---|
| Concept | “Carte du zoo” : grille isométrique principale de gestion (construction, placement animaux/bâtiments, chemins, déplacements visiteurs). |
| Rôle | Centraliser l’édition (build/paint), le rendu isométrique (tri z-index, occlusion), et la simulation locale (pathfinding, signaux terrain). |
| Portée | Une map par zoo (`owner_id`), composée de `cases[]` et d’entités rendues (bâtiments, animaux, visiteurs, décorations). |
| Contrainte | Pas de cache/mémorisation : états dérivés (z_index, variants auto-tiling, heatmap) calculés à la volée ; aucune interaction silencieuse (placement invalide => erreur + message). |

## Fonctions (tableau détaillé)

| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|---|---|---|---|---|---|
| Rendre grille iso | frame render | cases visibles | draw list | tri par `z_index` + occlusion | Event `ZOO_MAP_RENDERED` |
| Sélectionner une case | clic/tap | coord | panneau contexte | contenu dépend occupancy | Event `CLICK_CASE` |
| Entrer mode build | bouton UI | type item | overlay | indique cases valides | Event `ENTER_BUILD_MODE` |
| Placer entité | drop/tap place | entity, coord | occupancy update | invariants case/biome/enclos | Event `PLACE_ENTITY` |
| Paint multi-case | drag | brush, path | batch placements | pas de “continue” silencieux : stop sur case invalide + message | Event `PAINT_APPLIED` |
| Auto-tiling terrain/chemins | placement | voisins | variant keys | recalcul local voisinage | Event `AUTOTILE_UPDATED` |
| Calculer pathfinding visiteurs | besoin/objectif | graph | route | A* à la volée, coûts par tuile | Event `VISITOR_ROUTE_COMPUTED` |
| Mettre à jour signaux terrain | tick lazy | env | flags | givre/jaunissement selon compatibilité | Event `TERRAIN_SIGNAL_UPDATED` |
| Gérer zoom | input | zoom level | camera scale | clamp + snap | Event `ZOO_MAP_ZOOM` |

## Icone de base

| Élément | Spécification |
|---|---|
| Représentation | Icône carte pliée / grille losange |
| Couleur dominante | Vert (prairie), bleu (océan), gris (montagne) |
| Variantes | `icon_zoo_map.png`, `icon_grid_iso.png` |
| États | normal, build_mode, placement_invalid |

## Interactions (tableau détaillé)

| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|---|---|---|---|---|---|
| Clic case | Consultation | - | clic | panneau | - |
| Construire bâtiment | Action | item choisi | build → place | entité posée | `CELL_OCCUPIED`, `PLACEMENT_INVALID` |
| Placer animal | Action | animal prêt | drag → drop | animal enclos | `BIOME_INCOMPATIBLE` |
| Déplacer (réaménager) | Action | feature active | drag entité | relocalisation | `MOVE_BLOCKED` |
| Zoom | Navigation | - | pinch/wheel | vue ajustée | - |

## Personnages contextuels (événements & interaction)
La carte du zoo est un module transversal : plusieurs personnages peuvent servir de contexte selon l’événement.

### Personnage principal
- **Joueur actif (avatar)** : voir `avatar_joueur.md`. Visible en HUD et utilisé comme personnage contextuel des actions de construction/gestion.

### Personnages secondaires (selon événement)
- **Visiteurs homme/femme** : voir `visiteur.md` (flux, pathfinding, congestion).
- **Staff** : `nourisseur.md`, `soigneur.md`, `agent_securite.md`, `personnel_accueil.md`, `nurse.md` (déplacements et actions visibles sur la carte).

### Déclencheurs (exemples)
| Event / Action | Condition | Personnage | Effet UI |
|---|---|---|---|
| `CLICK_CASE` | clic case | avatar | panneau contexte + action principale |
| `ENTER_BUILD_MODE` | build activé | avatar | rappel des invariants (cases valides) |
| `PLACEMENT_INVALID` / `CELL_OCCUPIED` | placement refusé | avatar | message explicite + surbrillance cause |
| `VISITOR_ROUTE_COMPUTED` | recalcul route | visiteur | bulle info si congestion/obstacle |
| `DELIVERY_COMPLETE` | arrivée camion | accueil/nurse | bulle livraison + deep-link module |

### Skins & thèmes
Rendu des personnages : `theme.md` + équipements `inventaire_skins.md` (avatar + uniformes + variantes visiteurs si activées).

## Annexes Techniques

### 1. Données et États (tableau détaillé)

| Donnée / État | Type | Exemple | Source | Contraintes |
|---|---|---|---|---|
| `id` | uuid_v4 | `uuid_v4` | DB | - |
| `owner_id` | uuid_v4 | `uuid_v4` | DB | - |
| `width` | int | 5 | DB | init |
| `height` | int | 6 | DB | init |
| `cases[].id` | uuid_v4 | `uuid_v4` | DB | unique |
| `cases[].grid.x` | int | 2 | DB | 0..width-1 |
| `cases[].grid.y` | int | 4 | DB | 0..height-1 |
| `cases[].iso.iso_x` | int | 120 | calcul | rendu |
| `cases[].iso.iso_y` | int | 88 | calcul | rendu |
| `cases[].z_index` | int | 12088 | calcul | tri |
| `cases[].biome` | enum | `prairie` | DB | tiers |
| `cases[].terrain.ground_type` | enum | `herbe` | DB | - |
| `cases[].terrain.path_type` | enum | `gravier` | DB | auto-tiling |
| `cases[].occupancy.type` | enum | `building` | DB | un principal |
| `cases[].occupancy.entity_id` | uuid_v4 \| null | `uuid_v4` | DB | null si vide |
| `cases[].render.tile_variant` | string | `path_gravel_T` | calcul | key |
| `cases[].render.occluder` | boolean | true | config | - |
| `cases[].render.click_hitbox` | enum | `base_sprite` | config | accessibilité clic |
| `timestamps.updated_at` | timestamp | - | DB | UTC |

#### Caractéristiques Initiales (tableau détaillé)

| Caractéristique | Valeur initiale | Unité | Notes |
|---|---:|---|---|
| Taille | 30 | cases | ~5x6 |
| Biomes | 3 | count | tiers |
| Zoom min/max | 0.7 / 1.6 | scale | clamp |
| Coût marche herbe | 1.2 | coef | pathfinding |

#### Scores Initiaux (tableau détaillé)

| Score | Valeur initiale | Plage | Impact |
|---|---:|---|---|
| Score aménagement | 0 | 0..100 | utilisation espace |
| Propreté globale | 100 | 0..100 | satisfaction |

### 2. Cycles de Vie et Apparition (tableau détaillé)

| Phase | Déclencheur | Entrées | Sorties | Invariants |
|---|---|---|---|---|
| Création | compte | seed | cases init | contenu initial |
| Expansion | achat case | coord | width/height | adjacency |
| Réaménagement | action | entité | nouvelle position | pas de collision |
| Catastrophes | event | saison | flags case | observable |

#### Conditions d'Apparition (tableau détaillé)

| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Compte joueur | true | est | map créée |

#### Conditions de Disparition (tableau détaillé)

| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Suppression compte | true | est | map supprimée |

#### Hérédité (tableau détaillé)

| Élément | Hérité | Règle |
|---|---|---|
| Extensions achetées | Oui | conservées en prestige (soft reset) |
| Variants render | Non | recalcul à la volée |

### 3. Impacts Environnementaux

#### Impact Température (tableau détaillé)

| Condition | Effet | Notes |
|---|---|---|
| Proche océan | -2°C | micro-climat |
| Montagne | -5°C | micro-climat |

#### Impact Milieu (Biome) (tableau détaillé)

| Biome | Effet | Notes |
|---|---|---|
| Prairie | herbe repousse | nourriture passive |
| Océan | humidité + | froid adjacent |
| Montagne | givre + | froid |

#### Impact Saisons (tableau détaillé)

| Saison | Effet | Notes |
|---|---|---|
| Hiver | neige/givre | décor + path cost |
| Automne | teintes orange | visuel |

#### Impact Heure / Jour-Nuit (tableau détaillé)

| Période | Effet | Notes |
|---|---|---|
| Nuit | lumières | lampadaires/bâtiments |

### 4. Impacts Biologiques et Sociaux

#### Impact Reproduction (tableau détaillé)

| Facteur | Effet sur taux | Condition |
|---|---|---|
| Buissons “intimité” | +5% | autour enclos |

#### Impact Mort (tableau détaillé)

| Cas | Effet | Condition |
|---|---|---|
| Animal mort sur case | fertilité sol + | case verdit après TTL |

#### Impact Nourriture (tableau détaillé)

| Ressource | Effet | Condition |
|---|---|---|
| Herbe prairie vide | repousse | tick lent |

#### Impact Attractivité(Visiteurs (tableau détaillé)

| Action/État | Gain | Rayon | Notes |
|---|---:|---:|---|
| Décoration | +1 | 3 cases | beauté |

#### Impact Attractivité Animaux) (tableau détaillé)

| Action/État | Effet animaux | Condition |
|---|---|---|
| Foule proche | stress + | densité élevée |

#### Impact Valeur (tableau détaillé)

| Facteur | Variation | Condition |
|---|---:|---|
| Case achetée | + | foncier | valeur zoo |

### 5. Impacts Logistiques et Économiques

#### Vitesse (Camion) (tableau détaillé)

| Paramètre | Effet | Condition |
|---|---|---|
| Accès camion | chemin connecté | case camion |

#### Vitesse (Nurserie) (tableau détaillé)

| Paramètre | Effet | Condition |
|---|---|---|
| Overlay placement | valid/invalid | mode sortie |

#### Vitesse (Accueil) (tableau détaillé)

| Paramètre | Effet | Condition |
|---|---|---|
| Mode placement | overlay | READY |

#### Vitesse (Recherche) (tableau détaillé)

| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |

#### Vitesse (Labo) (tableau détaillé)

| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |

#### Vitesse (Visite) (tableau détaillé)

| Paramètre | Effet | Condition |
|---|---|---|
| Chemins | +50% vitesse | path tiles |

#### Dépenses (Billeterie) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Entretien espaces verts | 1 | coins/case/semaine | propreté |

#### Dépenses (Boutiques) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Maintenance routes | 1 | coins/tuile/semaine | option |

#### Dépenses (Visiteurs) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Saleté | temps staff | min | déchets |

#### Dépenses (Employés) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Soigneur déplacement | temps | min | chemins |

#### Dépenses (Boutiques) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Section dupliquée | 1 | coins | conservée |

#### Dépenses (Nurseries) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 1 | coins | visuel couplé |

#### Dépenses (Nourriture) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Stock global | variable | coins | achats |

#### Dépenses (Acceuil des animaux) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Quarantaine | variable | coins | incidents |

#### Dépenses (Camion) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Carburant | variable | coins | distance |

#### Trajet Visiteurs

##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)

| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Billeterie | Ville | sortie | despawn |

##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)

| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Billeterie | Enclos | plan visite | route |

##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)

| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Enclos | Boutique | besoin | détour |

##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)

| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Enclos | Billeterie | fin visite | sortie |

### 6. Événements

#### Événements du Jeu  (tableau détaillé)

| Event | Déclencheur | Payload | Effet |
|---|---|---|---|
| `MAP_EXPAND` | achat | coord | size + |
| `AUTOTILE_UPDATED` | terrain | coord | variants |

#### Événements du Carte (tableau détaillé)

| Event | Déclencheur | Effet |
|---|---|---|
| `ZOO_MAP_ZOOM` | input | camera |

#### Événements du Zoo (tableau détaillé)

| Event | Déclencheur | Effet |
|---|---|---|
| `PLACE_ENTITY` | placement | occupancy |

#### Événements du Ville / Visiteur (tableau détaillé)

| Event | Déclencheur | Effet |
|---|---|---|
| `VISITOR_ROUTE_COMPUTED` | besoin | route |

#### Événements du Visiteur (tableau détaillé)

| Event | Déclencheur | Effet |
|---|---|---|
| `VISITOR_REROUTE` | obstacle | route |

#### Événements du Joueur (tableau détaillé)

| Event | Déclencheur | Effet |
|---|---|---|
| `ENTER_BUILD_MODE` | UI | overlay |

### 7. Progression

#### Tableau des Upgrades (tableau détaillé)

| Niveau | Coût | Effet | Débloque |
|---|---:|---|---|
| 1 | 100 | +1 case | extension |

### 8. Logique et Interfaces 

#### Pseudo-code Impacts (tableau détaillé)

| Fonction | Entrées | Sorties | Notes |
|---|---|---|---|
| `getBiomeByColumn` | x, width | biome | tiers |
| `computeZIndex` | x,y | int | tri iso |
| `isPlacementValid` | entity, coord | bool | invariants |

#### Messages d'Infos / Alerte (tableau détaillé)

| ID | Niveau | Message | Condition |
|---|---|---|---|
| `MAP_EXPAND` | Info | "Le zoo s'agrandit." | achat |
| `PLACEMENT_INVALID` | Warning | "Placement invalide." | validation |
| `CELL_OCCUPIED` | Warning | "Case occupée." | collision |

## Annexes UX/UI 

### 1. Expérience Utilisateur (UX)

#### Description UX (tableau détaillé)

| Parcours | But | Friction | Réduction clics |
|---|---|---|---|
| Construire | façonner zoo | erreurs placement | overlay OK/KO |
| Inspecter case | comprendre contenu | navigation | panneau contextuel |

#### Description UI (tableau détaillé)

| Composant | Contenu | États |
|---|---|---|
| Highlight case | outline | hover/selected |
| Bottom sheet | infos/actions | open/closed |
| Overlay build | vert/rouge | valid/invalid |

#### Emplacement (tableau détaillé)

| Zone UI | Position | Notes |
|---|---|---|
| Canvas monde | plein écran | caméra |
| HUD build | barre | outils |

#### Intégration (tableau détaillé)

| Intégration | Contrat | Notes |
|---|---|---|
| `case_zoo.md` | unité case | occupancy |
| `chemin.md` | auto-tiling | path |

#### Navigation (tableau détaillé)

| Action | Chemin | Résultat |
|---|---|---|
| Sélection | clic case | panneau |
| Build | bouton build | overlay |

#### Événements (tableau détaillé)

| Event UI | Déclencheur | Effet |
|---|---|---|
| `CLICK_CASE` | clic | panneau |
| `ENTER_BUILD_MODE` | clic | overlay |

#### Assets Skinables

##### Musiques (tableau détaillé)

| Asset | Usage | Durée | Notes |
|---|---|---:|---|
| `zoo_map_ambience_loop.mp3` | carte zoo | loop | discret |

##### Sons (tableau détaillé)

| Asset | Usage | Volume |
|---|---|---|
| `click_tile.mp3` | sélection | bas |
| `grid_snap.mp3` | placement | bas |

##### Graphiques (tableau détaillé)

| Asset | Usage | Contraintes |
|---|---|---|
| `tile_highlight.png` | hover | overlay |
| `build_overlay.png` | build | alpha |

##### Images (tableau détaillé)

| Asset | Usage |
|---|---|
| `biome_prairie_tiles.png` | sol |
| `biome_mountain_tiles.png` | sol |

##### Vidéos (tableau détaillé)

| Asset | Usage | Durée |
|---|---|---:|
| `grid_holo.webm` | build | 1.0s |

##### Animations (tableau détaillé)

| Animation | Déclencheur | Notes |
|---|---|---|
| pulsation highlight | hover | 0.4s |
| snap | placement | 0.2s |

##### Couleurs (tableau détaillé)

| Token | Valeur | Usage |
|---|---|---|
| `build_ok_green` | #00FF00 | valid |
| `build_ko_red` | #FF0000 | invalid |

##### Textes (tableau détaillé)

| Clé | FR | EN |
|---|---|---|
| `zoo_map.place_here` | Placer ici | Place here |
| `zoo_map.invalid` | Placement invalide | Invalid placement |

##### Formes (tableau détaillé)

| Élément | Forme | Notes |
|---|---|---|
| Case | losange | iso |
| Panneau | rectangle arrondi | lisible |
