A whiteboard, a text editor that supports bulleted lists, and my legs.
If I have a general idea of what components are needed, I write them in the list, drilling down with nested lists on details of each until I have thought through what I need to code.
If I don't have it thought out enough to know what the larger building blocks are, I sketch on the whiteboard to help figure them out.
If it is such a new idea that I just need to let it percolate in my head, I go for a walk and just let my mind wander around the topic.
P.s. i am a big fan of concept and mind maps but the narrative mode outperformed them in my experience.