Hi and Merry Christmas
The 0300 code refers to intermittent misfire detected by the O2 sensors....
Follow the check list in order.
Faulty spark plugs
Faulty spark plug wires
Faulty coil
Vacuum leak in intake system
Faulty oxygen sensor(s)
Faulty fuel injector(s)
Stuck/blocked/leaking EGR valve / passages
Faulty catalytic converter(s)
Faulty camshaft position sensor
Burned exhaust valve
Defective computer
As you mentioned it only misses at idle I would be looking for a vacuum leak as a priority.