Witches Brew Coffee Co. sells coffee, tea, and a little bit of ritual. So we taught their homepage to keep a calendar of its own. On an ordinary day a true-phase moon rises over the everyday hero. On a sabbat, a full moon, or a New Orleans holiday, the whole hero re-skins itself for the occasion — its own night-sky color, its own weather. When the shop has an event on the books, a dedicated event hero takes over, then switches itself off the moment the event ends. And every visitor is dealt a three-card tarot spread paired to drinks on the menu. It's all computed in the visitor's own browser, and Google sees a normal, fast page.
This is the real thing, not a video — the same treatments running live in your browser. It's cycling on its own; tap any chip to jump to a night. The gold chips are New Orleans holidays — bats over Krewe of Boo, bulls at San Fermin, red dresses on the run, billowing linen for White Linen Night, a rainy afternoon, and Carnival beads for king-cake season. Every skin sets its own sky color, its own moon phase, and its own weather.
Most days there's no sabbat and no holiday, so the shop's normal hero stays exactly as it is — we didn't want to lose the identity Paul already built. We just hung a moon in its sky. And we rebuilt that moon properly: instead of sliding a dark disc across a bright circle, it draws only the lit shape — the real curved terminator, an ellipse whose width is the illuminated fraction — and leaves the rest as open sky. The glow is a soft blurred copy of that same lit shape, so it reads like light coming off a surface, not a ring around a coin.
The phase is computed from the lunar cycle at page load, in the right orientation for the Northern Hemisphere: waxing lit on the right, waning on the left. Because the unlit part is simply not drawn, the moon looks correct on every sky color — the orange of Samhain, the blue of Yule, the plum of Beltane — without a single per-theme tweak. The precedence never surprises anyone: an event wins over a holiday, a holiday over a sabbat, a sabbat over the everyday moon. One day shows one thing, and always the most special thing true right now.
The shop runs a lot of gatherings — psychic nights, a table-read collective, a book club, dream circles. Rather than build a banner for each, we built one event hero and taught it to read the shop's own event calendar. On a day with something on the books, it takes over the top of the homepage, names the event, and points a single button at the details.
The important part is the off switch. Each event carries an end time, and the hero checks the clock: the instant the event is over, the calendar rolls to the next one, and if nothing's coming up, the page quietly falls back to the moon-and-hero. Nobody has to remember to take the banner down. We watched it happen for real — a table-read night expired at 8 PM, and by 8:01 the homepage had already moved on.
Down under the shop's tarot section, the deck fans out face-down — each card wearing Witches Brew's own folk-art crest in gold. Tap Consult the Cards and it gathers, riffle-shuffles, and deals three: Past, Present, Path, each flipping to a hand-drawn Major Arcana with a one-line reading. The center card names a drink and links to its exact row on the menu — here, the real spread, running the same code as the homepage. Draw again for a fresh three.
The sabbat dates, the holidays, the moon phase, and the day's cards are all worked out in the visitor's browser from the calendar and the clock. There is no CMS entry to make, no banner to publish, no date to forget. It runs itself, forever.
The magic layers on after the real content loads, so search engines index the same clean, fast homepage they always did. The theatre is for people; the substance is for the crawler.
No image sliders, no animation library, no video. It's a small script and some CSS — a couple of kilobytes of real logic — so the page stays as quick as it was before we touched it.
Every ember, petal, bat, raindrop and shooting star respects the visitor's reduce-motion setting. Turn animations off in your OS and the sky goes still and calm, no exceptions.
Started small: hang a real-phase moon over the existing hero. Once it was up there, the obvious next question was — what if the whole sky knew what day it was?
Built a skin for each of the eight sabbats plus the full and dark moons: its own palette, its own weather, its own words. A test switch (?wbhm=beltane) previews any night on demand.
Then the city's own calendar: bats for Krewe of Boo, running bulls at San Fermin, red dresses on the run, billowing linen for White Linen Night, a proper rainy afternoon, and purple-green-gold beads for Carnival. Each its own color world and effect.
Threw out the sliding-disc moon and redrew it as a single lit shape with a true terminator ellipse, glow blurred off the lit surface. It now reads correct on every sky color at once — no per-theme patching.
Replaced the single daily card with a fanning deck that shuffles and deals Past, Present, Path, gold crest on every card back, the center card linking to its exact drink on the menu. Fresh draw on every tap.
Open the shop's homepage on any given night and the sky will tell you what kind of night it is. That's the demo — it's just outside, waiting for the right moon.