Very impressive. As a crusty old desktop programmer I am amazed how smoothly it runs in the browser. A few questions (didn't see them answered below):
1. What Javascript frameworks/libraries did you use (if any)? 2. Do the 2 sides always have to be symmetric?
It would be great if you could add some brief notes explaining what is going on (even if you just copy and paste some of the below).