const NIVELES = [
    {
        id: 1,
        nombre: 'El barrio tranquilo',
        descripcion: 'Salir del barrio. La calle tuerce y se abre en una placita.',
        ambiente: 'dia',
        velocidadMultiplicador: 1.05,
        spawn: { x: 0, z: 6 },
        home: { x: 16, z: -100 },
        path: [
            { id:'m1',  type:'recta',    rect:{minX:-4,  minZ:-26,  maxX:4,   maxZ:6   }, dir:[0,-1], milestone:0.18 },
            { id:'m2',  type:'recta',    rect:{minX:-4,  minZ:-34,  maxX:22,  maxZ:-26 }, dir:[1,0],  milestone:0.32 },
            { id:'a1',  type:'callejon', rect:{minX:22,  minZ:-32,  maxX:32,  maxZ:-28 }, dir:[1,0],  milestone:0.32, powerup:'cafe' },
            { id:'m3',  type:'recta',    rect:{minX:14,  minZ:-60,  maxX:22,  maxZ:-34 }, dir:[0,-1], milestone:0.50 },
            { id:'p1',  type:'plaza',    rect:{minX:6,   minZ:-78,  maxX:28,  maxZ:-60 }, dir:[0,-1], milestone:0.68 },
            { id:'ba',  type:'recta',    rect:{minX:6,   minZ:-94,  maxX:14,  maxZ:-78 }, dir:[0,-1], milestone:0.84, branch:'A' },
            { id:'bb',  type:'recta',    rect:{minX:20,  minZ:-94,  maxX:28,  maxZ:-78 }, dir:[0,-1], milestone:0.84, branch:'B' },
            { id:'mh',  type:'recta',    rect:{minX:6,   minZ:-104, maxX:28,  maxZ:-94 }, dir:[0,-1], milestone:1.00, isHome:true }
        ],
        numNPCs: 14,
        arquetipos: ['trilero', 'flyers', 'ong', 'rosas', 'turistas']
    },
    {
        id: 2,
        nombre: 'Las Ramblas',
        descripcion: 'Densidad alta, dos plazas y una bifurcación. Empiezan a saber quién eres.',
        ambiente: 'tarde',
        velocidadMultiplicador: 1.15,
        spawn: { x: 0, z: 6 },
        home: { x: -22, z: -150 },
        path: [
            { id:'m1',  type:'recta',    rect:{minX:-4,  minZ:-30,  maxX:4,   maxZ:6    }, dir:[0,-1], milestone:0.10 },
            { id:'p1',  type:'plaza',    rect:{minX:-12, minZ:-46,  maxX:12,  maxZ:-30  }, dir:[0,-1], milestone:0.22 },
            { id:'m2',  type:'recta',    rect:{minX:-4,  minZ:-66,  maxX:4,   maxZ:-46  }, dir:[0,-1], milestone:0.34 },
            { id:'m3',  type:'recta',    rect:{minX:-26, minZ:-74,  maxX:4,   maxZ:-66  }, dir:[-1,0], milestone:0.46 },
            { id:'a1',  type:'callejon', rect:{minX:-36, minZ:-72,  maxX:-26, maxZ:-68  }, dir:[-1,0], milestone:0.46, powerup:'auriculares' },
            { id:'m4',  type:'recta',    rect:{minX:-26, minZ:-104, maxX:-18, maxZ:-74  }, dir:[0,-1], milestone:0.58 },
            { id:'p2',  type:'plaza',    rect:{minX:-34, minZ:-122, maxX:-10, maxZ:-104 }, dir:[0,-1], milestone:0.74 },
            { id:'ba',  type:'recta',    rect:{minX:-32, minZ:-138, maxX:-24, maxZ:-122 }, dir:[0,-1], milestone:0.88, branch:'A' },
            { id:'bb',  type:'recta',    rect:{minX:-20, minZ:-138, maxX:-12, maxZ:-122 }, dir:[0,-1], milestone:0.88, branch:'B' },
            { id:'mh',  type:'recta',    rect:{minX:-32, minZ:-154, maxX:-12, maxZ:-138 }, dir:[0,-1], milestone:1.00, isHome:true }
        ],
        numNPCs: 26,
        arquetipos: ['trilero', 'flyers', 'ong', 'selfies', 'carterista', 'predicador', 'mantero', 'cuponero', 'rosas', 'turistas', 'amego', 'amego']
    },
    {
        id: 3,
        nombre: 'Centro de noche',
        descripcion: 'Tres giros, dos callejones, una bifurcación. La fauna está suelta.',
        ambiente: 'noche',
        velocidadMultiplicador: 1.25,
        spawn: { x: 0, z: 6 },
        home: { x: 30, z: -180 },
        path: [
            { id:'m1',  type:'recta',    rect:{minX:-4,  minZ:-40,  maxX:4,   maxZ:6    }, dir:[0,-1], milestone:0.10 },
            { id:'m2',  type:'recta',    rect:{minX:-4,  minZ:-48,  maxX:26,  maxZ:-40  }, dir:[1,0],  milestone:0.20 },
            { id:'a1',  type:'callejon', rect:{minX:26,  minZ:-46,  maxX:36,  maxZ:-42  }, dir:[1,0],  milestone:0.20, powerup:'cafe' },
            { id:'m3',  type:'recta',    rect:{minX:18,  minZ:-78,  maxX:26,  maxZ:-48  }, dir:[0,-1], milestone:0.34 },
            { id:'p1',  type:'plaza',    rect:{minX:8,   minZ:-98,  maxX:32,  maxZ:-78  }, dir:[0,-1], milestone:0.48 },
            { id:'m4',  type:'recta',    rect:{minX:8,   minZ:-106, maxX:38,  maxZ:-98  }, dir:[1,0],  milestone:0.60 },
            { id:'a2',  type:'callejon', rect:{minX:38,  minZ:-104, maxX:48,  maxZ:-100 }, dir:[1,0],  milestone:0.60, powerup:'auriculares' },
            { id:'m5',  type:'recta',    rect:{minX:18,  minZ:-134, maxX:38,  maxZ:-106 }, dir:[0,-1], milestone:0.74 },
            { id:'ba',  type:'recta',    rect:{minX:18,  minZ:-154, maxX:26,  maxZ:-134 }, dir:[0,-1], milestone:0.88, branch:'A' },
            { id:'bb',  type:'recta',    rect:{minX:30,  minZ:-154, maxX:38,  maxZ:-134 }, dir:[0,-1], milestone:0.88, branch:'B' },
            { id:'mh',  type:'recta',    rect:{minX:18,  minZ:-184, maxX:38,  maxZ:-154 }, dir:[0,-1], milestone:1.00, isHome:true }
        ],
        numNPCs: 34,
        arquetipos: ['trilero', 'ong', 'selfies', 'carterista', 'predicador', 'borracho', 'scooter', 'charlatan', 'mendigo', 'amego', 'amego', 'amego', 'amego', 'mantero', 'discoteca', 'cantante', 'cuponero']
    }
];

function getNivel(idx) {
    if (idx < 0) return null;
    if (idx < NIVELES.length) return NIVELES[idx];
    if (typeof generarNivel === 'function') return generarNivel(idx);
    return null;
}
