Haute Lumière · Édition Nº 11 · The Interface Specification
The Reel
Every surface, every state, every measurement. The document a person builds from, and the one they are held to afterwards.
Édition Nº 11 · the companion to Nº 10
What this document is for
Édition Nº 10 argued why The Reel should exist and sketched what it would feel like. This is the other half: the interface, specified to the pixel — every surface, every component, every state, every number, and the refusals that matter more than the features.
A brief describes an intention. A specification removes the need to guess. The difference shows up on the fourth day of a build, when the person writing the code hits a case the brief did not name and has to invent something. Whatever they invent will be reasonable and will not match the rest of the program, and by the time anyone notices there will be nine of them. This document exists so that nobody has to invent.
So it is written in numbers wherever numbers are possible. Not generous padding but 19px. Not a slow fade but 700ms, cubic-bezier(.165,.84,.44,1). Where a value is a judgement rather than a constant, the judgement is stated and the reason given, because a rule without a reason is the first thing a tired engineer overrides.
Every specimen below is live. It is not a picture of the interface; it is the interface, rendered from the same tokens the program will use, in the register the program ships in. If a specimen looks wrong on this page it will look wrong in the product, which is the point of building it this way.
- Governs
- The Reel · all surfaces
- Companion to
- Édition Nº 10 · The Build Brief
- Design system
- Haute Lumière · Midnight & Nocturne
- Type
- Cormorant Garamond · Manrope · SF Mono
- Target
- Apple silicon · 13″ to 32″
- Status
- Fixed at this date. Not amendable.
Part I
Foundations
Before a single screen
Nothing in this program names a colour. Every value in every rule resolves through a token, and the tokens are set once by the register. This is not tidiness for its own sake — it is the mechanism by which one interface becomes a night interface and a late-night interface without a second stylesheet, and the reason a person can work at eleven and at three without their eyes being asked to renegotiate.
Haute Lumière carries seven registers. The Reel ships two. The other five are correct for reading and wrong for looking at moving picture, because a bright ground beside a video frame biases every judgement you make about that frame's exposure. Editors work on grey for the same reason painters do not hang work on a white wall.
A bright interface beside a dark frame is not a preference. It is a measurement error.
The two registers it ships in
Midnight is the default and the one to design in — a blue-black that sits neutral against most footage. Nocturne is the green-black alternate, for people who find blue-black cold after four hours. They are the same interface. Only the tokens move.
Specimen 01 · Midnight, the shipping tokens
--register: midnight
Three colours exist outside the token set, used only in the Seam Inspector where a judgement must be legible at a glance: #9FD3A8 for a clean joint, signal gold for a marginal one, #E2926E for a bad one. That last is clay, not red. There is no red anywhere in this program, for the reason the design system gives and one more: a red interface teaches your body that a slow render is an emergency, and you will be doing slow renders every night for years.
The type scale
Two families, two jobs, never crossed. Cormorant Garamond is everything a person reads and everything they write — prompts, sentences, captions, the Ledger's one honest line. Manrope, all-caps, tracked, is the trellis: labels, figures, section marks, anything structural. A third appears only where characters must be counted: SF Mono for seeds, hashes, timecodes and parameter values.
Specimen 02 · The scale, as shipped
Space, and the one number
One number generates the whole layout: 19px. It is the sentence's font size, and every measure in the program is a multiple or a clean fraction of it. This is not numerology; it means that when the sentence changes size — and it will, because a 32-inch display should not use a 13-inch measure — the entire interface rescales in proportion without a single breakpoint being written.
Seven values. A layout that needs an eighth has a structural problem, not a spacing problem, and the correct response is to look at the structure.
Elevation and the living surface
Three elevations, and they are semantic rather than decorative. Flat is the window itself. Raised — one hairline plus 0 2px 5px rgba(0,0,0,.24), 0 12px 26px -12px rgba(0,0,0,.4) — is anything that could be dragged: a Spool entry, a Strip shard. Lifted — 0 30px 70px -26px rgba(0,0,0,.8) — is reserved for exactly one thing at a time, whatever the Hush has brought forward. If two things are lifted, the Hush is broken.
Behind the window sits the living surface, inherited unchanged from the design system: one sunburst in the upper right, breathing on a 12-second cycle between 12% and 20% opacity, and paper grain at 3.5%, multiplied. Both are behind the window and never on top of a frame — a grain overlay on footage you are judging is a lie about the footage. The sunburst exists for one reason, and it is a physiological one: a slow, silent, non-demanding movement in the periphery gives a person something to breathe with while they wait, and they will be waiting a great deal.
Motion
One curve — cubic-bezier(.165,.84,.44,1) — and four durations. Nothing in this program bounces, springs, snaps or pops, and nothing signals urgency through speed.
prefers-reduced-motion removes the sunburst's animation and the Ledger's pip entirely, and collapses all four durations to 0ms except the 700ms fade, which becomes 120ms. It never removes the fade outright: an instant cut between two dark surfaces reads as a flicker, which is worse than the motion it replaced.
Part II
The Window
One surface, four zones
The Reel is one window. Not a workspace with dockable panels, not a document model with several open at once, not a browser with tabs. One window, and everything in the program happens inside it. This is a constraint accepted deliberately, because the alternative — a layout the user arranges — means the program has no opinion about where anything belongs, and a program with no opinion cannot make the next action obvious.
Anatomy — four zones
Top to bottom, always in this order, and no zone ever moves.
Zone one
The head
44px. The door you are in, named once in Manrope. Nothing else — no toolbar, no menu bar of its own, no search. Draggable.
Zone two
The surface
Everything that flexes. The doors, the sentence, the particulars, the Spool, whatever the current door needs.
Zone three
The Strip
Collapsible. 96px open, 12px closed as a hairline you can grab. The clip being built.
Zone four
The Ledger
44px. Always visible. What the machine is doing, in one line, plus four figures. Never collapses.
Specimen 03 · The window, whole
1280 × 800 · midnight




01
02
03
04The Ledger
The Ledger is the program's honesty. It is a 44px band on Raised, always present, and it carries exactly two things: one sentence of serif saying what is happening in plain English, and four figures in Manrope. It is never louder than the work.
Specimen 04 · The Ledger, four states
Three rules govern the Ledger absolutely, restated from the brief because they are the kind of rule that gets quietly broken in month four:
- i
- It never uses red. A slow render is not an emergency.
- ii
- It never shows a progress bar that is lying. If the remaining time is not known, it says so in words rather than drawing a bar that moves at an invented rate.
- iii
- It never blocks. Anything the Ledger reports can be ignored indefinitely without the program stopping.
Three widths
No breakpoints in the CSS sense. The sentence size is set from the viewport once, and everything follows from it. But three widths are worth naming because the arrangement genuinely changes at two of them.
| Width | Sentence | Doors | What changes |
|---|---|---|---|
| Narrow 1024–1279 | 17px | 2 × 2 | Strip starts collapsed. Ledger figures drop to two — queued and elapsed. |
| Working 1280–1919 | 19px | 4 × 1 | The reference layout. Everything specified above. |
| Wide 1920 + | 22px | 4 × 1 | Doors cap at 420px each and centre; the Spool gains a fifth column. Nothing stretches to fill. |
Below 1024 the program says so and declines, in one line of serif on the desk: The Reel wants a wider window than this. It will wait. It does not attempt a phone layout. A continuity instrument on a phone would be a lie about what the work requires.
Part III
The Four Doors
Give it something · say what you want · watch it arrive
The rhythm never varies, and that invariance is the single most important design decision in the program. Four doors, four different pieces of machinery underneath, one shape of gesture on top. A person who learns door one has learned door three, and they learn it without being taught, which is the only kind of learning that survives a six-week gap between sessions.
The home surface
Four full-bleed plates, each with one line of serif over it and a Manrope kicker above that. No icons. No grid of tools, no dashboard, no recent-files list, no tips, no what's-new. The doors fill the surface zone entirely and the plate behind each is a still from your own Spool — the most recent output of that door, dimmed to brightness .62 so the type stays legible over it. A door you have never used shows a neutral plate.
Specimen 05 · Home, and the same surface hovered




The sentence
Behind every door, the second step. A serif field at 19px, on Surface, with no visible box — just the caret and, once typed, the words. The cursor falls into a serif in this system and always has; a sans input here would make the prompt feel like a form field, and a prompt is not data entry. It is the only place in the program where a person is writing rather than choosing.
Specimen 06 · The sentence, empty and answered
Say how it should move
She turns toward the light, slowly, and the linen lifts once behind her. The room stays still.
Three rules for the field. It never validates — every string is a legal prompt and the program has no opinion about your English. It never clears — after a render the sentence stays, because the second attempt is a small edit of the first and retyping it is an insult. And Return renders; Shift-Return makes a line, because the reverse trains a person to fear the Return key.
The particulars
One hairline under the sentence, labelled the particulars. Closed it is a line of text. Opened — 400ms, height only, no slide — it is every parameter in the graph, each with its current value, its native default, and one plain-English sentence about what moving it does.
Specimen 07 · The particulars, opened
door one · wan 2.2 t2v-a14b
She turns toward the light, slowly, and the linen lifts once behind her.
Frames · native
How many frames the model makes in one pass. Eighty-one is what this model was trained on, and moving off it is the single most common cause of soft or smeared output. Longer clips come from more shards, not from more frames.
Door one · a picture
The door that works first, and the one to build in phase one. Drop a still anywhere on the surface — the whole window is the target, with a 1px gold inset and nothing else as the drop affordance. No dashed rectangle, no cloud icon, no drag files here.
The image lands and the surface splits: the still on the left at its own aspect ratio, the sentence on the right. Under the still, four motion presets as words rather than a dropdown — a breath · a drift · a turn · a wind — each of which writes a starting sentence you then edit. This is the beginner's ramp and the expert's shortcut simultaneously, and it costs one row.
Door two · a voice
The door nobody else builds properly. Drop audio and the program listens before it renders. What comes back is not a waveform — a waveform is decoration here — but a schedule: a row of proposed shots with durations that land on real musical or breath boundaries.
Specimen 08 · The schedule, after listening
4:12 · 112 bpm · 8 shots
Four minutes twelve. A hundred and twelve to the minute, steady. Eight phrases, and the long one sits at two twenty.
Door three · the shards
Point at a folder. The program reads every fragment in it — duration, dominant motion, colour signature, whether a face is present and whose — and proposes an order. It does not ask you to sort them. It sorts them, shows its reasoning in one line, and lets you disagree by dragging.
The proposal appears directly in the Strip, already assembled, with the seam scores already computed. This is the joinery door, and its whole argument is that you arrive at a first assembly without having done any assembly. What you then do is judge seams, which is the only part a person is better at than the machine.
Part IV
The Instruments
Four things that make it worth using twice
A generator is worth using once. What makes a program worth returning to is whether it remembered what you did, and whether it lets you judge the result properly. These four instruments are the difference, and they are where most of the engineering attention should go once the first frame is correct.
The Spool
The program's memory. Every render is an entry, and an entry is not a file — it is the output, the input that produced it, the full parameter set, the seed, the model hash, the wall-clock duration, and a lineage pointer to whatever it was derived from. It presents as a film of stills rather than a table, because a table of renders is unreadable by the fortieth row and a film is scannable at four hundred.
Specimen 09 · The Spool
411 entries · 3 shown
3.4s- 411 · door one
seed 8842119
480×832 · 81f
wan2.2 a9f4c1
took 2:38
from —
3.4s- 410 · door one
seed 8842118
480×832 · 81f
wan2.2 a9f4c1
took 2:41
from 404
11.2s- 409 · door two
seed 8842117
480×832 · 81f
wan2.2 a9f4c1
took 7:52
from 398
Two gestures matter and no others. Again re-runs the entry exactly — same seed, same everything — which is how you verify the machine is still the machine after a system update. Again, but opens the sentence and the particulars pre-filled from that entry, which is how ninety per cent of real work actually starts.
The Spool is never a file browser. It does not show you the filesystem, it does not have folders, and it does not let you rename anything. It is a record, and a record you can edit was never a record.
The Strip
The clip being built, at the bottom of the window. 96px open. This is the entire editing model and it is deliberately thin: order, trim, and the seam between two shards. Nothing else. No tracks, no layers, no keyframes, no transitions, no titles, no effects, no audio mixing beyond the one track the schedule came from.
Specimen 10 · The Strip, with seams scored
9 shards · 8 joints · 1 flagged
01
02
03
04
05
06
07The Seam Inspector
The instrument that separates a tool from a craft instrument. Click any joint and the Inspector opens inside the Hush — because judging a seam is exactly the task that requires the rest of the screen to stop existing.
Specimen 11 · The Inspector
composite score · 4 terms
The Hush
The signature state, inherited from the design system and non-negotiable. When something wants full attention, the rest of the surface takes blur(4–12px) and an ink veil at 15–25% — never pure black, never fully occluded, and tap-outside always returns.
Specimen 12 · The Hush




Queue and hold
Long renders are the normal case, so the program is built around absence rather than attendance. You queue as much as you like, in any mix of doors, and close the laptop.
The engine runs under a persistent agent and survives the window being shut, the app being quit, and — with the power adapter attached — the lid being closed. When you come back, the Ledger tells you what happened while you were gone in one sentence, and the Spool has the entries. There is no notification, no badge, no sound, and no welcome back.
And one deliberate omission that took discipline: there is no percentage on the render itself. A percentage invites you to watch, watching is worthless, and worthless watching is how an evening disappears. The Ledger says which shard of how many, and that is the correct granularity — it tells you whether to make tea or go to bed.
Part V
States, Keys, Sound
The parts nobody specifies, and everybody then invents badly
A program is mostly its edge states. The happy path gets designed carefully because it is the one in the mockup; the eleven other conditions get invented at two in the morning by whoever hits them first, and that is why most software feels coherent for ten seconds and improvised thereafter. So the states are enumerated here, all of them, with their exact copy.
The eleven states
Every surface in the program is in exactly one of these. The copy is literal — write it as printed, because the tone is the product as much as the layout is.
| State | What the Ledger says | Pip |
|---|---|---|
| First run | Nothing here yet. Drop a picture on the window and see what happens. | Dim |
| Idle, empty | Nothing running, nothing queued. | Dim |
| Idle, queued | Nothing running. Five in the queue, waiting for you to say go. | Dim |
| Listening | Listening to four minutes twelve. About twenty seconds. | Gold, breathing |
| Rendering | Rendering shard four of nine, at native geometry. | Gold, breathing |
| Assembling | Bridging the joints. Nine shards, eight seams. | Gold, breathing |
| Scoring | Reading the seams. | Gold, breathing |
| Arrived, clean | All nine arrived. Every joint clean. | Sage |
| Arrived, flagged | All nine arrived. The seam pass found one joint worth a look. | Sage |
| Recovered | Shard six ran out of memory. It is back in the queue at lower geometry. | Clay |
| Stopped | The engine is not answering. Nothing has been lost; the queue is intact. | Clay |
Four properties hold across all eleven. Every line is one sentence. Every line is in the past or present tense, never the future — the program does not promise. No line contains a number the program is guessing at. And no line asks a question, because the Ledger is a report, not a dialogue; questions live in the Hush where they can be answered properly.
The keyboard map
Complete, and deliberately short. A person who never touches the trackpad can do everything except drag a shard.
| Key | Does | Note |
|---|---|---|
1 2 3 4 | The four doors | From anywhere, including mid-sentence if the field is empty |
Return | Render | Only when the sentence has focus and an input exists |
⇧ Return | New line in the sentence | Never renders |
Space | Play or pause whatever is lifted | Never renders. Never scrolls. |
Esc | Leave the Hush | Never cancels a render |
⌘ Return | Queue it and stay | The one for a long night |
⌘ ⇧ A | Again — re-run the selected entry exactly | Same seed, same everything |
⌘ ⇧ B | Again, but — pre-fill from the entry | How most work starts |
⌥ ↑ ↓ | Move the selected shard in the Strip | Re-scores the two affected joints |
⌘ . | Stop the current render | Asks once, in the Hush. The queue survives. |
Nothing is bound to a bare letter except the four door numbers, because a bare letter fires while you are typing and the sentence field is the most important field in the program.
What it sounds like
Almost nothing, and the almost is load-bearing. The program makes two sounds in total, both off by default, both settable to silent permanently in one place.
Sound one
Arrival
A single soft tone when a queue empties. Not per render — per queue. 220 Hz, 400ms, −24 dB, no attack transient.
Sound two
Stopped
The same tone, a fifth below, when the engine stops answering. The only sound that plays when off-by-default is honoured, because losing an evening silently is worse.
No click on press. No whoosh on transition. No sound when a render starts, when a shard finishes, when a seam scores badly, or when a file drops. The reason is specific: this program runs for hours beside a person who is often listening to the audio they are cutting to, and any interface sound is a contamination of that.
Reach and legibility
The dark register makes contrast a real risk rather than a checkbox, so the numbers are fixed here. Ink on Surface is 13.9:1. Text on Surface is 11.2:1. Muted on Surface is 4.8:1, which clears AA for its size and is the floor — nothing in the program is dimmer than Muted, including placeholder text, which is Muted rather than something fainter.
Signal gold on Surface is 8.1:1, and gold is never used for body text regardless — it marks and it labels. The one place gold carries a lot of characters is the native-geometry values in the particulars, at 11px mono, which measures 8.1:1 and is a deliberate exception because those two numbers need to be the most findable text on that panel.
Every hit target is 32px minimum on the pointer, which is the desktop figure rather than the 44px touch figure, since the program declines below 1024px and there is no touch surface. The seam joints in the Strip are the exception and get special handling: they are 1px rules with a 12px invisible hit column, because a 1px click target would be a cruelty and widening the rule to 12px would make the Strip look like a fence.
Focus is a 1px gold ring at 2px offset, on everything, always visible, never removed for aesthetics. Tab order follows the four zones top to bottom, and within the surface follows reading order. The Hush traps focus while open — the one place in the program where focus is trapped, and it is correct there because the Hush exists precisely to exclude everything else.
Part VI
The Inventory
Thirty-one components, and the things that will never be built
A component inventory is a promise about scope. Thirty-one is the whole program — if a thirty-second is needed, something in the design was wrong rather than incomplete, and the correct response is to find which of the thirty-one should have covered it. Every measurement below is in the token scale from Part I, so a change to the sentence size moves all of them together.
Every component, measured
| Component | Size | Where |
|---|---|---|
| Head band | 44px · Raised | Zone one, always |
| Door plate | 4:5, cap 420px | Home, four across |
| Door kicker | 5.6pt Manrope · .26em | On the plate |
| Door line | 11pt serif | On the plate |
| Drop target | Whole window · 1px gold inset | Doors one and two |
| The sentence | 19px serif · no box | Behind every door |
| Motion verb mark | 1px dashed gold underline | In the sentence |
| Render button | Pill · .75em 1.5em · gold | Under the sentence |
| Particulars hairline | 7pt Manrope + 5px chevron | Under the sentence |
| Particulars panel | Auto-fit 8.2em cells · Raised | Opens to 400ms |
| Parameter cell | 6.2pt label / 9pt mono value | In the panel |
| Native badge | Value in gold | Geometry parameters only |
| Parameter sentence | 14px serif · max 44em | Below the panel, on select |
| Motion preset | Four words in a row | Door one, under the still |
| Phrase bars | 34px tall · 2px gap | Door two, after listening |
| Schedule row | Auto-fit 6.4em cells | Door two |
| Spool entry | 16:9 frame + 6.4pt mono facts | Door four; 4 or 5 columns |
| Entry duration | 6pt mono on 72% ink | Frame, bottom right |
| Again / Again but | Two pills | On a selected entry |
| Strip band | 96px open · 12px closed | Zone three |
| Shard cell | 16:9 · 1px gap · Raised | In the Strip |
| Shard number | 6pt mono, top left | On the shard |
| Seam rule | 1px · 12px hit column | Between shards |
| Inspector row | .72em pad · 2px score bar | Inside the Hush |
| Score bar | 2px · sage / gold / clay | Inspector |
| Term cell | Four, auto-fit 7.6em | Inspector |
| Action pill row | Three · one filled | Inspector foot |
| The Hush veil | blur 4–12px · ink 15–25% | Over everything |
| The Hush panel | Inset 12% 14% · Lifted · 1px gold | One at a time only |
| Ledger band | 44px · Raised · never collapses | Zone four |
| Ledger pip | 7px · gold / sage / clay | Ledger, leftmost |
The refusals
The design is defined as much by these as by anything above, so they are enumerated rather than left to taste. Each is a decision that will be argued against during the build, and each argument has the same correct answer, which is no.
The eighteen-point test
Run against any build before the interface is called finished. Any single failure is a blocker — not a note, not a follow-up.
- Does the whole program resolve through the eight tokens, with no literal colour anywhere in the stylesheet?
- Do both registers render every surface correctly, including the three Inspector judgement colours?
- Is there any red, at any opacity, in any state?
- Does the cursor fall into a serif when a person types a prompt?
- Does the sentence survive a render — same text, still there, cursor where it was?
- Does
Returnrender and⇧ Returnmake a line, never the reverse? - Are all four zones present, in order, at every width above 1024px?
- Below 1024px, does the program decline in one line rather than attempting a layout?
- Does the Ledger state every one of the eleven conditions in one sentence, in the specified tense?
- Is there a percentage on any render anywhere?
- Does the Hush blur rather than black, and does tap-outside always return?
- Is exactly one thing Lifted at a time?
- Does a Spool entry carry seed, model hash, duration and lineage — all four?
- Does Again reproduce a six-week-old render byte-for-byte after a system update?
- Does every seam score decompose into its four named terms?
- Is Accept it available on every flagged seam?
- Does the queue survive quitting the app and closing the lid?
- With
prefers-reduced-motion, is the sunburst still and the 700ms fade reduced to 120ms rather than removed?
Eighteen questions, all answerable in an afternoon, and a program that answers yes to all of them is the program this document describes. A program that answers yes to fifteen is a different program that resembles it, and the three it failed will be the three a person notices on the second night.
Haute Lumière · Édition Nº 11 · MMXXVI
Set in Cormorant Garamond & Manrope · Midnight
Companion to Édition Nº 10 · The Build Brief
Luminous Prosperity Inc.