It was made by hand. I've studied the specifications for writing HTML and CSS, and written the pages accordingly, using a simple, plain text, editor, that does exactly what I tell it to (true WYSIWYG). After that, I use the “HTML tidy” program to neaten up the HTML that I've typed—neat source code makes it easier for checking errors by eye, as well as for future editing. Any pages that use graphics are composed by hand—I've yet to find anything automatic that does a good job of it, and works in the way that I want to.
I run an Apache webserver on one of my own computers for testing purposes, before publishing on an outside WWW server (I don't serve the public version of the site directly from one of my own computers). I use SSI to include common menus, etc., across a multitude of pages. It's easier to produce them, that way. And you don't have to update every page when you add more content.
I double-check pages for HTML and CSS errors using validator programs designed for the job. I check for browser behaviour, as well, but don't use them as error checkers (none of them are suitable for that job). Since MSIE isn't available for my computer operating system, and is really bad anyway, I don't test against it very often. (Yes, I'm aware it can be run through emulators, but I'm not interested in doing so.)
All the above is done using one of the free Linux computer operating systems, with free software running on it. Though it can, also, be done using other systems, this is my preference. I have a primer about website authoring in the computing section, which those considering dabbling with website creation might want to look through, to find out what they're in for.
And what does all that mean? It means that the site should work on any browser, on any computer or other device, be quick and problem-free.