🛠 Free Tools & AI Utilities ↗

Get in touch

Tell us a little about your project and we'll follow up by email with licensing and download details.

LANTHORN

The page is a dark stage and the content is the printed matter lying on it — playbill, ticket stubs, call sheet, receipt roll. It also publishes the sightline of all 412 seats, including the rows that lose the top of the set.

lanthorn.kilnwp.com LIVE
LANTHORN Open live preview ↗

Overview

The page is a stage, not a sheet of paper

Almost every theme puts ink on paper: a pale ground, text on top. This one inverts it. The ground is a dark bottle-green stage, and the content is the printed matter a theatre actually produces, lying on it — the pasted playbill, a strip of torn ticket stubs, a typed call sheet, the roll off the box office printer. Four stocks, each with its own tooth, edge and shadow.

That inversion does the work a stylesheet usually does. There are no dividing rules in the layout, because an object separates itself from the ground by having an edge; there is no grid of equal cards, because paper does not stack in equal rectangles; and there is no single accent colour, because a playbill is printed in four inks. The perforations, the torn bottom edge and the paper tooth are CSS masks and gradients, not images.

LANTHORN is for a producing repertory company — a theatre that carries three or four plays at once and turns them over between a Wednesday matinée and a Thursday evening. Almost every theatre theme on the market assumes the opposite: one production, one run, one set of dates. This one is built the other way round, and it takes the seating plan seriously enough to compute it.

The house, computed

One table of dimensions — stage size and height, upstage wall, gallery leading edge and soffit, row pitch, first-row elevation and rake per bank — produces every figure the site states about every one of its seats. Pick a seat and it tells you how far you are from the stage edge, how steeply you look down, how far off the centre line you sit, how many millimetres of clearance you have over the head in front, and how much of a tall set the gallery takes off the top.

The clearance figure is the C value theatre consultants use, from the constant-C rake construction z(n) = z(n-1) · y(n) / y(n-1) + C. The overhang figure comes from extending the sightline ray over the gallery soffit to the upstage wall. Change one dimension in the Customizer and all 412 seats recompute — including the sentences the page writes about them.

It publishes the bad seats

The demo house has two faults it cannot design out, and the theme states both. Rows B and C sit on the flat: their clearance is negative — −179 mm and −118 mm — so the front edge of the stage floor sits behind the head in front of you. Rows K, L and M sit under the gallery and lose 0.9, 2.1 and 3.0 metres off the top of a tall set. Both are consequences of the geometry, not opinions, and the plan marks each affected seat individually.

One consequence the site prints in as many words: for a tall set, the cheapest seats in the gallery see more of it than the dearest seats in the rear stalls. That sentence only appears when the geometry still supports it. Change the house and it disappears rather than becoming a lie.

Sightlines that know which play they are describing

Tick “tall set” on a production and the seating plan on that production’s page warns the seats under the gallery, with the metres each one loses. On a play with a low set it stays quiet, because for that play the overhang genuinely does not matter.

A rotation, not a run

A performance is a record. The run dates, the performance count, the previews, the access performances and the overlap bars on the front page are all read from those records. No production carries an opening date or a closing date as a field — a field is a number somebody has to remember to change, and one day they will not. Three bars sharing the same nine weeks is what the word repertory means, and the front page draws it.

Captioned, BSL-interpreted, audio-described and relaxed performances live in the same calendar as everything else, marked. Access provided, rather than access advertised on a separate page.

The ghost light

A ghost light is the bare bulb a theatre leaves burning on an empty stage overnight. Here it stands on the boards beside the playbill, rendered live in WebGL2: real inverse-square falloff, a 24-step single-scattering integral through a haze volume, a Lambertian floor, and an 8×8 ordered dither so the gradient does not band on an 8-bit display.

The drawn lamp and the rendered light are the same object. The light’s position is read from the drawing’s own bounding box every frame it could have moved — including after the display face swaps in and pushes the lamp down the page, which is exactly when a hard-coded coordinate comes apart. The composite ceiling is derived rather than guessed: it keeps chalk text at 4.83:1 at the centre of the brightest pool.

Built to a contrast budget, not fixed after

The poster orange measured 2.96:1 and would have failed at every size, so it was split into three tokens before anything was built on it: a glow value used only as light, a display value at 3.96:1 for type at 24 px and above, and an ink value at 5.36:1 for body text and links.

Also included

  • 412-seat plan built from real buttons, arrow-key navigable across and between rows, with the readout rendered by the same function on the server and over AJAX so the two cannot drift apart.
  • Company pages, journal, diary, pages, search, 404, comments, RTL stylesheet, editor and admin styles, 263-string translation template.
  • TheaterEvent structured data per performance — not one Event for a whole run, which is what makes a repertory calendar unusable in search results.
  • Idempotent demo importer that regenerates its schedule relative to the day you run it, so the calendar is never full of last year’s dates.
  • Zero third-party JavaScript. No tracker, no external font host, no analytics. Nothing about a visit leaves the server.
Classic PHP theme, no build step. Paper is CSS: stock tooth from repeating gradients, perforations and torn edges from masks, no dividing rules anywhere. Hand-written WebGL2 ghost light (inverse-square falloff, 24-step single-scattering integral, Lambertian floor, ordered dither) whose position is read from the drawn lamp's own bounding box. Constant-C sightline engine in PHP. Self-hosted Bevan / Newsreader / Courier Prime (OFL 1.1). Zero third-party JavaScript.

What's included

  • Full theme source — every template, style sheet & script
  • One-click demo importer (idempotent, no page builder)
  • Live Customizer controls for copy, colours & content
  • Translation-ready .pot file + RTL stylesheet
  • HTML documentation + a CHANGELOG file
  • Lifetime updates + 6 months support (renewable)

Specifications

WordPress5.6 – 7.0
PHP8.0 – 8.3
BrowsersChrome, Firefox, Safari, Edge (latest)
LayoutFully responsive, mobile → desktop
LocalizationTranslation-ready · RTL included
AccessibilityKeyboard-navigable · prefers-reduced-motion
Page builderNot required — native Customizer
LicenseGNU GPL v2 · single-site commercial

Release

v1.1.1 The page is a dark stage and the content is the printed matter lying on it — playbill, ticket stubs, call sheet, receipt roll. It also publishes the sightline of all 412 seats, including the rows that lose the top of the set.

The complete, dated version history ships in the theme’s CHANGELOG file. Every purchase includes lifetime access to future updates.

Apiary

Apiary

79

Two real calculations carry the site: a WebGL2 hexagon-packing comb field, and a waggle-dance bearing calculator built on the actual relationship a forager's dance encodes. The comb field runs genuine flat-top axial and pixel conversion with cube-coordinate rounding and an exact hexagon SDF, while the waggle calculator combines a NOAA simplified solar-position formula with von Frisch's real sun-relative bearing relationship. Colonies, honey, sites, services, testimonials, and markets run as custom post types behind a working AJAX inquiry endpoint, for apiaries and small honey producers.

Craft Light
View →
NOVA ROSE

A WooCommerce storefront in rose whose bundle savings are summed from the products at render time, and which prints no rating it cannot back with a review. The background is a hand-written WebGL2 field — domain-warped fBm across 5 octaves and 3 colour stops, DPR-aware and context-loss safe — running on a classic PHP theme with no build step. Built on WooCommerce 8.0+ with self-hosted Bricolage Grotesque, Manrope, and Space Mono type and zero third-party JavaScript, for shop owners who want honest numbers over inflated social proof.

E-commerce Immersive
View →
Étoile Morph

A dark editorial theme for a couture research journal — a persistent WebGL silk ground, a look book, a materials lab, a polar trend radar and a synthesised runway soundscape, all driven by content you edit in WordPress.

Craft Dark
View →