# Compass Shift — Art Bible v0.1

**Status:** provisional reference direction; production lock requires product evidence and a later greenlight  
**Reference set:** one GPT Image 2 gameplay master

## North star

Compass Shift looks like a pocket charting instrument whose shared bearing changes the meaning of
an otherwise still board. Its identity is the relationship between a pale sea-glass puzzle well,
bold coral/brass/teal arrow plates, and a large chart-blue compass bezel that visibly turns after
one arrow leaves. It must remain recognizable if the color palette is removed: one shared compass
mutates every remaining direction.

The generated master is a visual reference. The written GDD, UX flow, and visual brief define the
game. Generated pixels cannot add rules, text, currencies, rewards, characters, or screens.

## Camera, dimension, and topology

- Fixed portrait, orthographic front view, flat 2D grid.
- No camera rotation, parallax room, isometric staging, hidden back face, or 3D cube depth.
- Layer order: deep chart field -> chart-blue shell -> compass bezel -> sea-glass board well ->
  topology/walls/ports -> arrow tiles -> release/blocked feedback -> code-native UI -> modal UI.
- The board remains stationary while the shared bezel and the effective arrowheads turn.

## Component language

| Component | Resting state | Active/open state | Blocked/closed state |
|---|---|---|---|
| Arrow tile | flat coral, brass, or teal lozenge; ink head | active tile gains sail outline and slides on its ray | berry outline and short inward nudge |
| Shared compass | broad chart-blue ring, four tick clusters | brass index and one 90-degree bearing sweep | never moves on a blocked tap |
| Static wall | solid ink chart bar | unchanged | physically interrupts the arrow ray |
| Plain exit | open notch in board rim | teal inner edge when a clear ray reaches it | no glow when ray is blocked |
| Phase window | shutter aperture with one tick cluster | brass/teal open outline in matching phase | opaque chart-blue shutter otherwise |
| Patterned port | aperture with a two-phase dot/dash ring | matching pattern thickens | nonmatching marks remain subdued |
| Board cell | pale sea glass with faint chart rhythm | clear ray may receive a subtle wash | never turns into a 3D socket |

Arrow color is never a mechanic. Every arrow follows the same release and shared-quarter-turn rule.
All aperture eligibility is encoded on the board edge and evaluated against the same compass phase.

## Signature compass

The compass bezel is visually larger than a status badge and spatially integrated with the board.
Use four unequal cardinal tick clusters, a brass index notch, and a restrained inner bearing line.
Production may add live accessible N/E/S/W labels in code, but the generated art contains no
letters. A successful release turns the bezel exactly one quarter-turn; a blocked tap leaves it
perfectly still.

## Palette and contrast

Use the tokens locked in `visual-brief.md`: `#071E2F`, `#0E3550`, `#CFE3D9`, `#173849`,
`#EF6B5B`, `#C8A45D`, `#2B9B91`, `#F5F0E5`, and `#A84656`. The board well must remain the quietest
large surface. Coral, brass, and teal are limited to arrow families and state accents. Avoid
high-saturation neon bloom.

Direction is encoded by silhouette; port phase by ticks/pattern; state by outline/weight/motion.
Every mechanic must remain legible in grayscale and high-contrast modes.

## UI system

- Home: compass-and-arrow mark, Play/Continue, level map, How to Play, settings.
- Playing: small level label, shared compass integrated with board, Undo, Restart, Help, and pause.
- Level map: 50 code-native level buttons grouped into four tiers; no scenic reward path.
- Completion: Next, Replay, Map, and a compact technical-result affordance when tools are open.
- Modal panels: opaque chart-blue field, sail text, one teal primary action, one outlined secondary.
- No lives, timer in normal mode, coins, stars, streaks, reward chest, ad banner, or hint autoplay.

All controls, labels, numerals, patterns, focus states, and accessibility names are rebuilt in code.
Generated raster UI is not shippable UI.

## Motion, VFX, audio pairing

Animation follows the deterministic transaction: resolve ray -> release one arrow -> remove it ->
turn shared compass 90 degrees -> settle all remaining arrowheads -> test win. Use clean translation,
ring rotation, and line-weight changes; never particle clutter or physics bounce. Blocked feedback
must communicate a no-op.

Pair a soft chart-paper tick with selection, a short airy slide with release, a single geared click
with the quarter-turn, a muted knock with blocking, and a restrained four-note completion bearing.
Audio/haptics are independently disableable.

## Technical export rules

- Gameplay master: opaque portrait PNG, sRGB, nearest supported GPT Image 2 portrait resolution.
- Production arrows, walls, ports, and bezel are vectors/CSS/Canvas or Unity components, not crops
  from the reference image.
- Keep all UI text and numbers live; never rasterize generated lettering.
- Use palette tokens and state-driven transforms rather than per-level baked variants.
- Optimize later dossier/store images separately; this reference is not a release asset.

## Forbidden drift

No cyberpunk neon, 3D cubes, isometric block field, rotatable board camera, picture reveal, generic
wood or plastic toy blocks, coins, stars, lives, treasure, characters, boats, ocean scenery,
photoreal compass, ornate steampunk, fake app-store chrome, baked UI text, or multiple mechanic
panels on one sheet.

## Reference QA

`art-bible/gameplay-master.png`, generated with `gpt-image-2` from
`image-prompts/gameplay-master.txt`, is accepted only when visual inspection confirms: portrait
orthographic flat-2D composition; deep chart-blue shell; pale sea-glass well; signal-coral, brass,
and teal flat arrow tiles; one and only one visibly releasing arrow; a large rotating compass bezel
with four cardinal tick groups; readable wall/window/port topology; no 3D cube, picture reveal,
character, currency/reward symbol, cyberpunk neon, or baked text. The asset manifest records this QA.
