Six laws. Everything else in this manual derives from them.
This game is played one-handed on a phone, and it must make the player feel like an insect beneath a cathedral — a cathedral seen through fog, on film stock that has started to rot. Portrait is not a constraint; it is the aspect ratio of thrones, of standing figures, of looking up at something that has already noticed you.
Cold obsidian ground · fog voice · gilt rationed · violet demoted · red deleted
Changed in v2: the blacks have gone cold and green-grey; the warm bone whites are now fog. The ritual violet is demoted to a barely-violet wraith trace. Blood crimson is deleted from the system — crisis is now blight: cold, sickly, vegetal. There are no warm reds anywhere in this world.
Five cold blacks. The game lives between obsidian-0 and obsidian-2; the upper steps are relief, spent sparingly. Never pure #000000 — it reads as a dead pixel, not a place.
| Pair | Ratio | Verdict |
|---|---|---|
| Fog on Obsidian 1 | ≈ 11.5 : 1 | Headlines & primary — the ceiling. Nothing brighter exists. |
| Mist on Obsidian 1 | ≈ 6.0 : 1 | Body & secondary — the default register |
| Gilt on Obsidian 1 | ≈ 5.6 : 1 | Actions, accents |
| Ash on Obsidian 1 | ≈ 3.1 : 1 | Large text & tracked labels only |
| Wraith on Obsidian 1 | ≈ 3.7 : 1 | Occult labels and costs; not body copy |
| Blight on Obsidian 1 | ≈ 4.5 : 1 | Never text. Glow, edge and ambient only |
Distrela carries the dread — uppercase only, tracked wide. Everything else stays out of its way.
| Role | Face | Rule |
|---|---|---|
| Display & labels | Distrela 200–800 (licensed) | UPPERCASE ONLY. Its needle serifs do the unnerving; tracked 0.1–0.34em. Lowercase Distrela is decorative and is forbidden in every context. |
| Flavor | Cormorant Garamond italic | Card flavor lines and spoken dread only — the voice in the fog. Never for UI. |
| Body | Spectral 200–400 | Narrative and UI copy, set in mist — not fog. Holds at small sizes where the display face cannot. |
| Numerals | IBM Plex Mono 400/500 | Gauges, costs, timers. Cold, bureaucratic — the ledger of the underworld. |
The core deliverable. The whole game plays over these frames.
One world, one hall, four relationships to it. The camera rises as the player does; the gilt migrates toward them. Played in sequence, the campaign is a single slow approach to the throne — through fog the whole way.
Mood never changes composition; it changes light, temperature and the behavior of the fog. A strained Act I frame is still an Act I frame.
| Scene | Art direction |
|---|---|
| Legion insurrection | Torchlight smothered to dull gilt smears in the lower third; black banners above, dissolving into fog. The only frame where the crowd is the subject — and it still looks up at something. |
| Cult austerity | Palette drained to fog-on-obsidian; ranks of candles losing to the haze; merciless symmetry. The one composition allowed to be perfectly centered — and perfectly straight (the exception to Law 6). |
| Broker squeeze | Claustrophobic crop — the canon's other exception: camera at table height, a single hard lamp, ledger glare. The frame feels too small on purpose. |
| The three crises | Breaking mood is mandatory; blight-deep ambient; horizon tilted; grain at maximum. Per-crisis subject differs (see GDD) — the lighting language does not. |
| Victory enthroned | The single use of gilt-bright — and even then through fog, tarnished, half-swallowed. Calm at 0.30. Camera low one last time — but now it kneels to the player. |
| Unmade before the Throne | The player's silhouette dissolving into the fog layer itself; vignette at maximum; the throne's gilt point unchanged, indifferent. |
Every frame is generated from the same base contract plus slot inserts. The base never changes; consistency lives there. Generate at 9:19.5 (e.g. 1290×2796) or nearest, edges extended in obsidian so the frame survives tall devices.
## BASE — every frame, verbatim dark cinematic gothic illustration, subterranean throne hall of a vast underworld court, seen through heavy cold grey-green fog, severe 35mm film grain, oil-painting depth, ornate blackened silver and bone ornament, cold obsidian shadows (#0B0D0E), muted fog-grey highlights (#C2C6C1), heavily desaturated, LOW CONTRAST — light fails before it travels, nothing fully lit, nothing fully black, portrait 9:19.5, low camera angle looking up, single dread subject filling 70–120% of frame height, focal point at 40–50% of frame height, empty fog headroom in top sixth, simple dark values across bottom third, no gore, painterly realism ## SLOTS — appended in this order [SUBJECT] who or what towers in this frame [MATERIALS] two or three: wet iron, rotted velvet, bone inlay, cold marble… [LIGHTING] act insert below, then mood insert [CAMERA] deviation from canon only (e.g. broker squeeze: "table height, cramped, single hard lamp") ## ACT INSERTS — lighting + palette drift act1 one remote tarnished-gold light source drowning in fog, cold steel-grey darkness, subject unlit at base, immense negative space act2 scattered small candle pools of dull tarnished gold, each losing to the fog, no master light, thresholds and doorways, floor fog act3 cold spectral pallor drained of colour, faint wraith-grey bloom, rim-lit silhouettes, light source off-frame as if watched, warmth almost extinguished act4 tarnished gold breathing up from below, fog parting but never lifting, throne near and attainable, quiet embers rising ## MOOD INSERTS composed steady light, calm haze strained guttering light, leaning shadows, cold grey-violet seep in darks breaking failing light, one hard surviving source, sickly cold grey-green ambient seep (#3A4230), slight 2–4 degree horizon tilt, grain intensified ## NEGATIVE — every frame, verbatim no text, no watermark, no gore, no wounds, no daylight, no sky, no saturated color, no warm reds, no crimson, no purple fantasy glow, no neon, no clean sharp contrast, no modern objects, no lens flare, no centered symmetrical portrait crop (except cult scenes), no recognizable franchise designs ## MANIFEST NAMING act2_strained_broker.png · act4_composed_base.png · crisis2_breaking.png
From the floor of the processional hall, the frame is almost entirely fog: ribbed vaults guessed at rather than seen, dissolving upward and out of the top edge. At 44% frame height, impossibly far away, the throne — a single tarnished ember point no larger than a thumbnail, the only warm pixel in the frame, and even it is losing to the haze. Two wardens flank the aisle at 80% frame height, read only as darker fog. Grain crawls in every shadow. PASS: the gilt point is the unique warm element; nothing in the frame reaches white or true black; the wardens break the top edge; the player's first instinct is to squint.
The canon's sanctioned exception: table height, cramped. A broker's hands and ledger under one hard lamp; his face above the lamp line, eroded by fog and grain, eyes implied not drawn. Candle-pools gutter at the frame's edges — one has just gone out, a thread of smoke rising from the wick into the engine's layer. Grey-violet seep in the darks behind him. PASS: exactly one hard light and even it is dirty; face never fully resolved; the extinguished candle reads on second look, not first; the frame feels too small and means to.
The player's silhouette at 85% frame height, center-left, losing its edges: shoulder and crown already fog, drawn upward into the headroom. The throne's gilt point burns at 42% height exactly as it did in Act I — same size, same dull warmth, untouched by everything that happened. Horizon tilted 3°; grain at maximum, the film failing with the player. Blight-deep ambient in the far darks, no green on the figure itself. PASS: dissolution reads as fog reclaiming its own, not injury; the gilt point's indifference is the cruelty; the tilt is felt before it is noticed.
Every decision is a card drawn from a deck that knows you.
He has sold three masters already. You would be the fourth.
Law 3, made mechanical — plus the component kit the build assembles screens from.
If a panel, a scrim and a beautiful frame are ever in conflict, the order of sacrifice is fixed: the art darkens first, the panel strengthens second, the type changes never. Any build screen where text is hard to read over imagery is a defect, regardless of how the frame looks.
background: rgba(11, 13, 14, 0.52); backdrop-filter: blur(14px) saturate(0.85); border: 1px solid rgba(194,198,193,0.09); border-radius: 0–2px; /* sharp. never soft. */ /* no backdrop-filter support: */ background: rgba(11, 13, 14, 0.82);
/* top — under status glass */ height: 20%; background: linear-gradient(180deg, rgba(6,7,8,0.82) 0%, rgba(6,7,8,0.35) 55%, transparent 100%); /* bottom — under the action zone */ height: 38%; background: linear-gradient(0deg, rgba(6,7,8,0.92) 0%, rgba(6,7,8,0.55) 45%, transparent 100%);
| Element | Floor |
|---|---|
| Body text over scrim/panel | ≥ 4.5 : 1 vs effective ground |
| Display ≥ 28px over scrim | ≥ 3 : 1 |
| Tracked Distrela labels | ≥ 3 : 1, never under 10px |
| Hit targets | ≥ 44 × 44 px, 8px gaps |
| Gauges over art | 2px track on scrim, never floating |
Floors are floors, not targets (Law 2): the working range sits just above them, in the fog.
Every interactive element the build is permitted to use. Anything not on this sheet is a new negotiation with this manual. All components sit on glass or panel, never raw art; all hit targets ≥ 44px; all type Distrela 600 tracked, numerals mono.
Buttons — five states of intent
primary: gilt hairline 28% → 60% hover · ghost: fog hairline · occult: wraith hairline · forbidden: blight hairline, reserved for choices that invite a crisis · sealed: ash, no cursor. Ground is glass; press lifts to obsidian-3. Never filled, never rounded — a filled button is a shout (Law 6 of §III's conduct: the underworld does not shout).
Progress — gauges, rites and the long approach
linear gauge: 2px track, fog 12% / gilt fill · below threshold the fill turns blight and the tick marks the line (Favor 15) · act progress: dealt diamonds on a broken line · ring: 1.5px stroke, starts 8° off vertical — even completion is slightly wrong here (Law 6).
Resources · rite marks · whispers
resource chips: glass, diamond pip, mono numeral, Distrela unit · rite marks: 13px diamond checkboxes, gilt core when sworn · whisper rows: 56px, hairline separated, title Distrela 400 12px, hover lifts ground 2.5% and gilds the arrow.
Navigation · omens
bottom nav: glass bar, 54px slots, diamond glyphs (no icons — the court does not do pictograms), active slot gilds · omen banner: blight hairline, surfaces from the bottom scrim with the card entry rite, auto-dismisses in 6s. Omens are the only UI permitted to use blight.
The page is alive and it is watching. demos.js is the reference implementation — its constants are the spec.
Everything is shot on failing film. An SVG fractal-noise tile (160px, baseFrequency 0.85, desaturated) overlays the entire viewport at opacity 0.05–0.10, blend mode overlay, jittering on a 0.55s six-step cycle — fast enough to crawl, slow enough never to read as static hiss. Over art it doubles (0.12–0.16). Breaking mood adds +0.05. The grain never pauses while motion is on: it is the proof the world is still being watched.
| Layer | Bodies | Radius (× min-edge) | Speed × | Alpha |
|---|---|---|---|---|
| Back | 5 | 0.55–0.85 | 0.06 | 0.050 |
| Mid | 7 | 0.30–0.55 | 0.12 | 0.060 |
| Fore | 9 | 0.10–0.24 | 0.20 | 0.045 |
Drift is up and slightly left — the fog seeks the crown. Density ranges 0.20 (haze) to 0.80 (oppressive); screen base values live in §IV's act cards and run higher than they did in v1 — the fog is the world now, not an effect on it. Tints: fog (default), wraith (occult trace), gilt (victory embers only).
The vignette inhales over a 9s sine cycle, from 90px/36px @ 0.62 to 120px/58px @ 0.78 inset shadow. Embers: never more than 12 alive; 1–2.6px, dull gilt at 70% alpha; they rise, sway, and die in 4–9s. Both are visible in the demo below.
Easing cubic-bezier(0.20, 0.90, 0.10, 1.00) throughout. The sting is the only fast event in the game — it must feel like the room itself flinched. Incoming frames arrive at scale 1.04 and settle to rest; nothing ever slides sideways.
/* Dominion thins the air; losing it thickens it */ fogDensity = lerp(0.25, 0.75, 1 − dominion / 100) /* The Tyrant's displeasure has a heartbeat — and it is cold (Law 4: no warm reds) */ if (favor ≤ 15) { blight edge pulse · 4s sine · inset rgba(122,138,94, 0 → 0.26) }
Both hooks are ambient — they must never gate input or add latency. The player should notice the air changed before they can say why.
| Element | Full | Reduced (prefers-reduced-motion) |
|---|---|---|
| Grain | 0.55s six-step crawl | Static frame, same opacity |
| Fog | 3 living layers | One static pass at 0.7× density |
| Embers | ≤ 12 rising | None |
| Vignette | 9s breath | Fixed at mid-breath |
| Encounter sting | 900ms surge + crossfade | 240ms plain dissolve |
| Favor pulse | 4s blight pulse | Static 1px blight inner border |
The reduced game must remain unmistakably the same game: the fog is still there — it has simply stopped to listen.
Set in live type — Baket Fashion and Cormorant — no lettering asset required at any scale.
| Rule | Value |
|---|---|
| Construction | Three-line stack, set tight, all pure white: MASTER (Baket Fashion 400, tracked 50%, 0.8× the UNDERWORLD size) · OF THE (Cormorant roman caps, tracked 44%) · UNDERWORLD (Baket Fashion 400, tracked 62%) — the cinematic line, as large as the frame allows, wide enough to breathe fog between the letters. MASTER's rule-flanks = 0.75× the U-to-D span. |
| The white mark | The entire lockup is set in pure white #FFFFFF — the ONLY pure white in the entire system, the sole sanctioned breach of Law 2, and it lives nowhere but the wordmark. Nothing else may ever reach it: not a highlight, not a glyph, not a pixel of art. Never animated, never glowing, never gradient-filled. |
| Clear space | One UNDERWORLD cap-height on all sides. Fog and grain may enter the clear space; type and UI may not. |
| Minimum width | 220px portrait · 160px for the one-line variant MASTER OF THE UNDERWORLD (Distrela 600, tracked 26%, single tone). |
| Tones | The full lockup in pure white on obsidian (default — the system's only #FFFFFF) · all-fog (quiet contexts) · obsidian on fog (print, rare). Never gilt, never wraith, never blight, never outlined, never shadowed beyond the standard scrim. |
Original work only. The references are tone anchors, not sources.
What each reference taught the system. None of these images, styles-of-record, or marks may appear in the build.








Refs 04–06 and 08 (HUD-over-art, long-scroll campaign, type-over-keyart, sectioned narrative) remain canon from v1 and are archived in art-bible/refs/.
Source of truth: art-bible/bible2.css (tokens) and art-bible/demos.js (motion constants). For the build:
:root { --obsidian-0:#060708; --obsidian-1:#0B0D0E; --obsidian-2:#111415; --obsidian-3:#191D1F; --obsidian-4:#232829; --fog:#C2C6C1; --mist:#8F948F; --ash:#61665F; --gilt:#A38A52; --gilt-bright:#C4AC72; --wraith:#756E85; --wraith-deep:#3E3A4A; --blight:#7A8A5E; --blight-deep:#3A4230; --hairline:rgba(194,198,193,0.09); --glass-bg:rgba(11,13,14,0.52); --grain:0.07; --grain-art:0.14; --ease-sting:cubic-bezier(0.20,0.90,0.10,1.00); --breath-period:9s; --pulse-period:4s; } /* deleted in v2: --ember, --ritual, --blood — do not reintroduce */