# Phase 9 – Carte du monde : agrandissement en recherche et compteurs

**Objectif :** Agrandissement de la carte payé en unités de recherche (plus en pièces) ; affichage des compteurs (bébés à vendre, animaux à vendre, laboratoires, zoos, villes).

**Référence :** `docs/plan-implementation-rappel-grandes-regles.md` phase 9.

## Impacts

- L’agrandissement de la carte consomme `state.researchPoints` au lieu de `state.coins`. Le bouton est grisé si `researchPoints` insuffisants.
- Compteurs affichés sous la zone « Agrandir carte » : Bébés à vendre, Animaux à vendre, Laboratoires, Zoos, Villes.

## Modifications

- **config.js** : `WorldMap.MapUpgrade.BaseResearchCost`, `ResearchUpgradeGrowth` (coût en unités de recherche par palier).
- **economy.js** : `getWorldMapUpgradeResearchCost(currentLevel)` ; `getWorldMapUpgradeCost` conservé pour compatibilité.
- **zoo.js** : `tryUpgradeWorldMap` utilise `getWorldMapUpgradeResearchCost`, déduit `state.researchPoints` au lieu de `state.coins` ; retourne `NotEnoughResearch` si pas assez de points.
- **ui.js** : zone agrandissement carte affiche le coût en recherche (`X 🔬`) et le titre avec le coût ; `canUpgradeMap` basé sur `researchPoints >= getWorldMapUpgradeResearchCost(mapLevel)` ; nouvelle zone `world-map-counters` avec cinq compteurs mis à jour au refresh.
- **texts-fr.js** : `errorMessage.NotEnoughResearch`.
- **main.css** : `.world-map-upgrade-zone-cost`, `.world-map-counters`, `.world-map-counter`.

## Modalités de déploiement

- Aucun déploiement serveur. Rechargement client suffit.

## Modalités d’analyse

- Agrandir la carte : coût affiché en unités de recherche ; si pas assez de `researchPoints`, le bouton est grisé et un clic affiche « Pas assez d’unités de recherche ».
- Compteurs : Bébés à vendre = `saleListings` avec `isBaby` ; Animaux à vendre = `saleListings` sans `isBaby` ; Laboratoires = 1 ; Zoos = `worldZoos.length` ; Villes = `WorldMap.Cities.length`.
