Website & creative code
Wildcraft Group.
A website that
opens like a show.
Wildcraft Group is a separate company I founded. I built its website around Ghostlight, its product for rehearsing attractions before they are built. The site is drawn in code: a theatre, a character and a small coaster, with no framework underneath.
Visit wildcraftgroup.com
The idea
A ghost light,
taken literally.
A ghost light is the single lamp a theatre leaves burning on an empty stage. The site opens on one. The camera flies over the seats to the bulb, a small ghost wakes up inside it, and every light he passes comes on. Then the stage opens out into the page, and the theatre’s floor becomes the site’s floor line. Any key, click or scroll skips it, and reduced motion never plays it.
The character
He is the
page’s light.
Nothing about him is an image. His outline is recomputed every frame, he floats on a spring, leans into his own movement, blinks and looks at the pointer. He follows the visitor down the page, and the type brightens where his light reaches. On a phone he keeps to the margin.
The explanation
Shown,
not told.
How the product works is one pinned stage with four scenes, driven by scroll. He gathers the documents into a box, builds the ride piece by piece, watches it run with a clipboard and presents the findings. The coaster is generated, and everything that moves on it is a function of the console’s clock, so the ride and the timeline beside it can never disagree.
Before the launch
A mark
that breathes.
Until the site launched, wildcraftgroup.com carried the company’s mark on a moving ultraviolet field. The field is a fragment shader running at device resolution, and the W is animated from the geometry of the brand kit’s own artwork, never redrawn. The same living mark now sits in the site’s footer.

Build & infrastructure
Drawn,
then proven.
A site that moves this much has to be checkable. I built the means to check it into the site itself.
- No framework. No build step.
- Plain HTML, CSS and JavaScript on Cloudflare Pages. The preview deploys to a project of its own, which cannot reach production.
- Nothing inline.
- The content security policy allows first-party scripts and styles only, so every animated value is set from script rather than from a style attribute.
- Frames that hold still.
- Add a time to the address and every animation freezes at that second. Checks and stills run against the same frame every time, and an evidence battery sweeps the routes, the bundles and the console before anything is called live.
Back to the system





