High Water
Hampton Court
- Concept. A fictional 22-seat coffee counter; nothing here can be bought or booked.
- Name and positioning, mark and wordmark, art direction, generated stills and film, menu and copy, a one-page website with a shop and a booking flow.
- 7 November 2026, research to QA, in one session.
- Higgsfield (GPT Image 2.6, Kling 3.0), a Python script for the mark and the HarfBuzz-shaped wordmark, GSAP, Lenis, Chrome for QA.
A twenty-two-seat coffee counter in a brick store on the Barge Walk, between the palace wall and the river, outside the ticket line. Four origins, one grinder each, cardamom espresso as the house cup, a kitchen that bakes twice a day. Open seven days from half past seven.
A coffee shop at the palace that doesn't exist, built as if it did.
The brief asked for a coffee-shop website at Hampton Court at award standard, and nothing else: no name, no shop, no menu, no pictures. So the work started with the shop. Where it would sit, what it would serve, what it would be called, and only then what the site would do.
Two short searches confirmed what the field rewards in coffee right now. One strong idea per site. Interaction that explains the product (origin, roast, brewing) rather than decorates it. Narrow palettes: one dark, one light, one accent. The decisions that followed were as much about what to leave out: no loader counting to 100, no scroll-jacking beyond one pinned section, and no royal devices at all. No crowns, no gold, no heraldry. The palace is present through brick, water, the clock and the maze.
High Water. The time the barge could leave.
The astronomical clock on Anne Boleyn's Gate was installed in 1540, designed by Nicholas Kratzer and made by Nicholas Oursian. Among its dials it shows the hour the moon crosses the meridian, and from that the time of high water at London Bridge, which the court used to time the barge to London. A coffee counter that runs on its own smaller clocks (28 seconds on a shot, 3:40 on a filter, 93 °C in the kettle) borrows the idea without borrowing a crown. The name also reads plainly: it is next to the river, and coffee is mostly water. Secondary line: Coffee · Hampton Court.
Rejected on the way: Clock Court, a real place inside the palace that reads as official; Tiltyard, because the Tiltyard Café exists; Privy, unfortunate in British English; Wilderness, generic.
The shop: twenty-two seats in a brick store on the Barge Walk, the towpath along the river boundary of Home Park, between the palace wall and the water and outside the ticket line, so it serves people who are not visiting the palace at all. Four origins on the counter (Colombia Huila, Ethiopia Guji, Kenya Nyeri AA, Guatemala Huehuetenango), single-dosed, weighed, rested, one grinder per coffee. Open seven days: Monday to Friday 07.30 to 17.00, weekends 08.00 to 17.30.
Five beans as a Tudor rose.
The mark is five coffee beans arranged as a Tudor rose, five smaller beans between them for the inner rose, and a dot at the centre. Monoline, stroke only, so it embosses and survives at 16px. It is drawn from geometry in a Python script rather than in a drawing app: each bean is four cubic segments and an S-curve crease, the outer ring at 0.29 of the box and the inner at 0.155, so the file can be regenerated at any weight. Clear space is half the mark's width; below 20px the favicon cut drops the dot and thickens the stroke.
The wordmark is HIGH WATER in Cormorant Garamond at weight 500, tracked +0.06em, shaped with HarfBuzz and outlined with fontTools so the SVG carries real kerning and needs no font installed. COFFEE · HAMPTON COURT sits beneath in Space Grotesk under a hairline. A second cut at weight 620 is used at navigation size so the thin strokes survive at 14px. Lockups horizontal and stacked, on transparent and on parchment.
Obsidian, parchment, Thames, brick.
Proportion: obsidian 70, parchment 18, Thames 8, brick 4. Brick is a material, not a decoration. It appears as photographed Tudor brickwork, as the bag for coffee No. 1 and as the pin on the map, and in type only at large sizes. Contrast was measured against obsidian rather than assumed: parchment 14.6:1, parchment dim 8.6:1, brick light 5.3:1, brick 3.6:1, which is why brick is kept for large text and rules. Parchment on the Thames field is 9.1:1.
- Obsidian#0F0E0D
- Soot#171615
- Mortar#2B2825
- Brick#A9502F
- Brick deep#6E3421
- Brick light#D0693F
- Parchment#E9DFCB
- Parchment dim#B6AC98
- Thames#1E3A47
- Thames light#5A8CA3
Cormorant Garamond and Space Grotesk.
Cormorant Garamond for display, headings and numbers, at weight 500 with the italic at 400 for emphasis. It was chosen over GT Sectra because the licence is SIL OFL and the italic is better than most Garamond revivals at this size. Space Grotesk for body, interface and metadata, 400 for text and 500 for labels, chosen over Neue Haas Grotesk for the same licence reason; its slightly odd shapes keep the sans from reading as a template.
Both are variable fonts subset to Latin-1 plus typographic punctuation and self-hosted as WOFF2: 60, 45 and 25 KB. Display runs clamp(3.6rem, 9.5vw, 11.5rem), headings clamp(2.3rem, 4.4vw, 4.8rem), body 1 to 1.125rem, metadata 11px in caps tracked 0.12 to 0.18em.
High Water
Space Grotesk 500, 11px, caps, +0.18em
Space Grotesk 400, 17px / 1.6
Cormorant Garamond 500, display
Twelve stills and one loop, generated and checked.
There is no shop to photograph. Twelve stills were generated through Higgsfield with GPT Image 2.6 at 2K, prompted as 35mm film: Kodak Portra 400 rated at 200, Cinestill 800T for the dusk exterior, natural light only, muted colour, shallow focus, no faces and no signage. They were submitted in three waves of four, every result reviewed at 1000px with hands and food checked at crops, and nothing re-rolled. The maze still was generated and held back: one hedge was enough.
The hero is a five-second Kling 3.0 clip grown from the counter still with a locked-off camera, only the steam and the river moving, encoded as H.264 and VP9 with a 960px cut for phones. The first cut was a palindrome, so the steam ran back into the machine. It was replaced on 8 November with a ten-second clip: the steam from its first four seconds is isolated and laid twice, half a cycle apart, over the steam-free background, giving a four-second loop in which the steam only ever rises. Prompts and job ids are logged in the project; prompts and job ids are logged in the project.
Generated imagery is not photography and is labelled as such on the site and on this page. If High Water ever opened, a real shoot would replace all of it.
One page, nine sections, no build step.
Vanilla HTML, CSS and ES modules with GSAP, ScrollTrigger and Lenis vendored; no build step. The first build put the film under a WebGL ripple that followed the cursor, with a custom cursor, magnetic buttons and 3D tilt on the menu. On review on 8 November all the pointer effects were removed: the film now loads after the page and plays as it is, and phones get the 960px cut.
Reduced motion removes Lenis, the curtain, the reveals, the parallax and the film, and stacks the process section vertically. With JavaScript off the menu, the copy, the hours and the map still read; the bag and the booking say they need it. Dialogs are native <dialog> elements, so focus is trapped and Escape works without code.
End-to-end checks in headless Chrome cover the filter combinations and the empty state, cart maths with the £3.50 delivery charge and the £30 threshold, checkout validation, the reservation form, the lightbox, anchors and the mobile menu. On this site it loads with no console errors, no failed requests, no broken images and no horizontal overflow at 1440, 834, 390 and 320.
- 01Curtain: the mark draws itself, the wordmark fades, the curtain lifts. Skipped on return visits.
- 02Header with the London time and a bag count; hides on scroll down.
- 03Hero film, the name oversized, hours and address small.
- 04The clock: brick-texture parallax, split-line reveal, the numbers (18 g → 36 g, 28 s, 93 °C, 80 ppm).
- 05Process: pinned horizontal scroll, six panels from green to extract, a progress rule and counter.
- 06Menu: fifteen items, filters by method, origin and dietary.
- 07Beans: four bags drawn in SVG with live type, a cart drawer, a concept checkout.
- 08The room: five stills in an editorial grid, image-in-frame parallax, lightbox.
- 09Visit: a schematic map on the Thames-blue field, hours, a seats-free readout labelled as an estimate, reserve a table.
A bag you can fill and a table you can reserve. Neither is real.
The four retail bags are not photographs. They are SVG drawn in the page with live type, coloured per origin, the roast date set to the most recent Tuesday, so there is no generated lettering anywhere on the site. Choose a grind, add to the bag, and a drawer opens with quantities, a subtotal and delivery (£3.50 under £30, free above). Checkout validates four fields and returns an HW-#### reference; the cart persists in local storage and clears on completion.
Reserve a table opens a modal with populated slots, rejects a bad email and returns an HW-T### reference. The seats-free readout in the Visit section is a simulated feed and is labelled as an estimate on the page. The footer says the shop is a concept, that it is not affiliated with Historic Royal Palaces, that the imagery is generated and that nothing charges or holds anything.
Type, tools, honesty.
Cormorant Garamond by Christian Thalmann and Space Grotesk by Florian Karsten, both SIL OFL 1.1. GSAP (Webflow) and Lenis (darkroom.engineering). Stills and film generated with GPT Image 2.6 and Kling 3.0 through Higgsfield. The clock facts are from Historic Royal Palaces and Simon Thurley's Hampton Court Palace (1996). Research notes, prompts and job ids are in the project's docs.
Everything about High Water is fictional: the shop, the address, the telephone number (an Ofcom drama-range number that cannot connect), the prices and the seat counts. It is not affiliated with Historic Royal Palaces. The site says so in its footer.