Phase 0 — Art direction Styleguide plate A · 1 of 2 2026 · 09 · 04
CodenameDirection A

Brass &Basalt

Hues
4 + bone
Corner radius
0 · 30° chamfer
Scale
1.333 from 15
Visual thesis

A tabletop wargame carved from basalt and brass, lit by one warm lamp on a dark table.

01

References

What is stolen · what is refused
Reference 01 · Game

Kingdom Rush

Steal
Its instant readability of threat at a glance.
Refuse
Its cartoon outlines and bouncy proportions.
Reference 02 · Film production design

Dune (2021)

Steal
Monolithic, matte, sand-and-metal, nothing shiny.
Refuse
Its monochrome; we keep brass warmth.
Reference 03 · Central-European print

Letterpress poster

Steal
Heavy condensed grotesk, limited ink, visible paper grain, hard offset shadows.
Refuse
Its flatness; the board has depth.
02

Live feel demo

Seed 20260904 · fixed 60 Hz · same seed, same run

The shared deterministic sim, skinned in Direction A. Ground is basalt with a dotted register grid; the lane is a channel cut into the slab with a hard offset shadow, never a blur. Towers recoil, release and follow through on every shot. Sparks are struck chips, not soft dots. The readout below is diegetic — it is a machined plate bolted to the board, and its numbers are the sim's own.

Wave 01
Hull 20 / 20
Gold 0000 Kills 0
Entities 00 Tick 16.67 ms Running
Recoil → release → follow-through, 166 ms Hit-stop 30–70 ms on a kill Range rings are hexagons Damage pips are hard-edged, never a bar with a glow
01

Repeater

Brass · player agency
Silhouette
Hexagon, twin chamfered barrels, brass over basalt.
Damage09
Cycle0.50s
Range112
Muzzle300
Requisition120 Place
Legend
Brass — player agency Steel — control, slow Verdigris — sustain Vermilion — threat
03

Palette

Four hues + bone + a basalt ramp · OKLCH is normative

Every hue carries one job and is never used for another. No state is encoded by hue alone: threat also carries an eroded silhouette, sustain also carries a hex pip, control also carries an aperture. Click a chip to copy its value.

Bone on basalt-900
Body copy, HUD, everything
14.8:1
Brass on basalt-900
Gold, build, selection
9.9:1
Vermilion on basalt-900
Threat — large text only
5.4:1
Never body copy. Damage numerals are ≥ 17px or set in bone.
04

Type

Big Shoulders Display 700/800 · Archivo 400/500/700 · scale 1.333 from 15

Condensed industrial signage over a workhorse grotesk. Display tracking is -0.01em; labels are uppercase at 0.08em. Every numeral that can change is tabular — a gold counter that jitters is a bug, not a style.

Brass & Basalt
ABCDEFGHIJKLMNOPQRSTUVWXYZ & 0123456789 — ‘quote’ / % ×
85 Display 800 · -0.01em
Basalt
64 Display 800 · -0.01em
Hold the lane
48 Display 800 · run titles
Arbiter Mk II
36 Display 700 · thesis, banner
Breach at the gate
27 Display 700 · section head
Requisition · 120 gold
20 Archivo 700 · HUD value, lead
Twin chamfered barrels. Recoil, release, follow through.
15 Archivo 400 · body, base of the scale
The lane is a channel cut into the slab; the shadow it throws is hard, offset four pixels, and never blurred.
12 Archivo 700 · label, 0.08em caps
Wave · Hull · Gold · Requisition · Muzzle velocity
Archivo 700 · tabular-numsShipping
000000
Digits sit in fixed cells. The gold counter can tick every frame and the column rules never move.
Display face · proportionalRejected for live numbers
000000
The same count in the display face. Watch the digits drift off the cell rules — that is why no live number on this page is set in it.
05

Shape language

Authored SVG · final art quality
Everything is cut from a hexagon with a 30° chamfer. The player's things are machined — hard facets, exact angles. The enemy's things are eroded — pitted, asymmetric, softened by wear.

01 · Repeater

Brass. Player agency — the first tower every run opens with.
Hex base · twin chamfered barrels · hex range

02 · Arbiter

Steel. Control — slows what crosses its aperture.
Upright hex prism · hex iris · hatched vents

03 · Censer

Verdigris. Sustain — brass left out in the weather, still working.
Tapered column · six prongs · hex emitter

04 · Slag crawler

Vermilion. Threat — no two edges parallel, nothing machined.
Eroded · pitted · asymmetric · hard damage pip
06

Motion ladder

Hover or click a row to play it · nothing is linear

Four names, four jobs. A duration is never chosen by feel at the call site — it is picked off this ladder. The dotted diagonal in each plot is linear, for comparison; the brass curve is what ships.

Every tower fires with anticipation: recoil back two frames, release, follow-through. Nothing snaps to its end state. Watch it live in section 02 — the barrel kicks back along its own axis and returns over 166 ms while the slug is already gone.

07

Texture study

Matte stone · feTurbulence 0.9 at 0.05 · shadows are hard

The same basalt surface, four treatments. The first one is what the direction refuses: a flat fill reads as a vector illustration. Everything else on this page — including the page you are reading — carries the grain layer at opacity 0.05.

Unlit — rejected
Flat --basalt-700. No surface, no lamp, no material. Reads as a swatch, not stone.
Grain overlay
feTurbulence, baseFrequency 0.9, 3 octaves, opacity 0.05, overlay. Inset is the same noise at 6×.
7 px pitch5 px pitch
45° hatching
Shadow fill, vents and disabled states. Two pitches only. A shadow is a texture here, never a blur.
Hard offset + chamfer light
Shadow 4px 4px 0, no blur. One 1px --basalt-600 highlight on the top-left chamfer. This is the whole depth model.