You were playing too mechanically through move 18... but then
the tables turned dramatically:
6..c5 is a weakish move since the d4 bind is easy for white to
break and all this does is weaken d5d6 and e7.
The natural move is for him to kick the knight with 12. c3.
You can win a pawn with 13..nxe4. 15. f4 was a clear plan for him.
He should continue 17. g4 exploiting your bad bishop. 18 h6 only helps
his cause... But he completely loses the thread after 19..qc3
allowing you the initiative on the queen side (good strike!)
Also, 23..d5 is nice... after e3 you are clearly winning...
12.c3 allows 12...Nxb3 -+
17.g4 h6! and White can not make progress on the kingside without further weakening his own king position
Nice game and execution, the middle game onwards was pretty much flawless for black I think. White didn't pose too much problems and doesn't really understand the theory in such pawn structures. He should be concentrating on king-side counterplay by preparing a pawnstorm with g4, h4 g5 similar to a king's indian defense structure but with colors reversed, since all black's pieces are on the queenside white's exposed king won't really matter too much.
As for the opening I think 3... d6?! wasn't a very good move for black, white should answer with 4. d4 instead of 4. d3?!, which transposes into a structure similar to a Philidor's defense, where white has better mobility and central control, and forces black into a passive game. Also the reason why you don't see the Philidor's defense in high level tournaments and is considered a weak opening for black.
why after white move ke1 black did'n move bg3