Files
nimmerworld.eachpath.local/style/trait-palette.md

8.3 KiB

Nimmerworld — Trait Palette

The 8 personal traits, their canonical Greek names, schoolchild-simple descriptions, color-wheel positions, and motion-signatures. The trait-palette is the spine of the entire visual / linguistic / cognitive system — everything in nimmerworld either preserves the spine or violates it.

Companion to: style-index.md, ../architecture-index.md. Cross-referenced from every architecture domain file because the trait-vocabulary is what those files all run on.


The 8 traits — Greek canonical names + schoolchild descriptions

The architecture has been using Hellenic personality-virtues as the trait-cosmology since v0.4. The names are kept for their literary depth and faction-naming use. The descriptions are written at schoolchild-level so they travel through subtitles, NPC speech, tutorial text, and the universal-translator tokenizer-view without ever needing a glossary.

Greek name Schoolchild description
Sophrosyne holding back when I want to act
Dikaiosyne standing for what's fair
Philotes loving and staying close
Mnemosyne remembering what mattered
Aletheia seeing what's hidden
Kairos catching the right moment
Moira reading what's coming
Eros reaching for what I want

Players read the descriptions in everyday play; the Greek names live in faction-naming, deep-lore, scholar-NPC speech, and Memorialist-archive context. A player can complete the entire game without ever consciously learning the Greek names — the trait-vocabulary travels through colors and descriptions. Players who lean into the depth discover the classical-philosophical lineage as a deeper-tier reward (Souls-game discipline applied to vocabulary).

The wheel — 4 oppositional pairs at 180°

The traits form 4 natural oppositional pairs. The 12-segment artist's color wheel renders these as direct complementary pairs (180° apart on the wheel) — visual contrast carries the philosophical opposition.

Pair The opposition Wheel positions (180° apart)
Eros ↔ Sophrosyne reaching for ↔ holding back Red ↔ Green
Philotes ↔ Dikaiosyne loving close ↔ standing fair (partial ↔ impartial) Orange ↔ Blue
Aletheia ↔ Moira seeing what's hidden ↔ reading what's coming (past-revealed ↔ future-fated) Yellow ↔ Violet
Mnemosyne ↔ Kairos remembering what mattered ↔ catching the right moment (past-dwelling ↔ present-piercing) Red/Violet ↔ Yellow/Green

Why this is the right move. Complementary pairs maximize perceptual contrast (Red and Green can never be confused at a glance) AND carry the trait-system's philosophical structure (the trait-pair is the moral/dramatic axis the simulation is built around). When two NPCs in conversation pulse with complementary colors, the opposition is felt — Red-Eros longing pressing against Green-Sophrosyne restraint becomes a chromatic conflict the player reads pre-verbally. The color wheel does the dramaturgy for free.

Each pair is a real philosophical axis the architecture has been quietly relying on:

  • Reaching ↔ Holding — the structural tension the clasp-mechanic lives inside (you reach toward your beloved; you hold back to stay disciplined for your shift)
  • Partial ↔ Impartial — the eternal classical tension of justice-vs-love (Antigone, Lear). Architecturally: love-the-bonded vs serve-the-fair
  • Past-revealed ↔ Future-fated — Aletheia uncovers what was buried; Moira reads what was always coming. Time-axis bookends
  • Past-dwelling ↔ Present-piercing — Memorialist-honor-the-dead vs Kairic-strike-now. Two ways of being-in-time the regime tries to police separately

The full table — color + motion-signature + description per trait

Greek Description Color (canonical hue) Wheel position Motion-signature
Eros reaching for what I want Red 12:00 uneven flame-flicker
Philotes loving and staying close Orange 1:30 breath-rate warm pulse
Aletheia seeing what's hidden Yellow 3:00 clear, no pulse — still and bright
Kairos catching the right moment Yellow/Green (chartreuse) 4:30 lightning-flicker
Sophrosyne holding back when I want to act Green 6:00 steady, even pulse
Dikaiosyne standing for what's fair Blue 7:30 weighted slow pulse
Moira reading what's coming Violet 9:00 slow-thread undulation
Mnemosyne remembering what mattered Red/Violet (dusky-rose) 10:30 depth-shimmer

Motion-signature paired with color provides color-blind accessibility — every trait is uniquely identifiable via two independent channels. A player with red-green color blindness still distinguishes Eros (uneven flame-flicker) from Sophrosyne (steady, even pulse) by motion alone.

Wheel layout (clockwise from 12 o'clock)

                Eros
             #ee1b24
          ╔═════════════╗
   Mnemosyne          Philotes
   #cf3b74          #e28a46
        │                 │
   Moira ────────●──── Aletheia
   #a349a3            #fcf001
        │                 │
  Dikaiosyne           Kairos
  #3f47cd            #b5e61d
          ╚═════════════╝
              Sophrosyne
                #2cad52

The wheel's natural temperature-axis aligns with the architecture's dramatic structure. Warm side (Eros, Mnemosyne, Philotes, Aletheia, Kairos) carries outward / present-active / engaged registers; cool side (Sophrosyne, Dikaiosyne, Moira) carries inward / withholding / contemplative registers. Aletheia at 3:00 sits at the brightness-zenith; Sophrosyne at 6:00 sits at the cool-balance-base; Eros at 12:00 sits at the heat-apex.

The achromatic exception — Aletheia is not white

In earlier drafts (the v0.1 design-vision doc, retired in v0.9 — preserved in git history), Aletheia was rendered as luminous-white (off-the-wheel, achromatic). v0.1 of this trait-palette places Aletheia on Yellow — the brightest chromatic hue. The metaphor of truth as illumination is preserved (Yellow is the brightest color the eye can read), and white is freed up for its proper job: rendering text and pure-light UI overlay (per style-index.md §Spine rule).

This is a deliberate constraint — the trait-palette is exclusively chromatic so that achromatic colors (white, black, grey, brown) remain reserved for non-trait roles. Aletheia is bright, not transcendent; the brightness IS the truth-revealing register.

Designer-fixed corpus — words to colors

Every word in the universal-translator's vocabulary corpus is mapped to one (or a primary + secondary) trait-coordinate. The mapping is designer-authored, fixed, universal — the same word means the same trait-color for every player and every NPC and every LLM-context.

When a player encounters a word in the world, the universal-translator's tokenizer-view renders that word in its trait-color (or fragmentary / opaque if untranslated). Over hundreds of hours of play the player learns the trait-cosmology through observation, not glossary. The corpus is the typed contract that closes the player-LLM hallucination-surface (per ../player-experience/architecture.md §Designer-fixed cosmology, player-curated arrangement).

Cross-domain rendering — where trait-colors appear

The trait-palette is rendered across many surfaces. Each surface gets specific style-rules in the relevant sub-guide:

Surface Sub-guide
NPC chassis pipe-flow + accents body-feedback.md
Gesture-circle UI sectors ui-elements.md
Universal-translator tokenizer-view word-coloring ui-elements.md
Mod cosmetic accents (within trait-bearer rules) asset-aesthetic.md
Diegetic relay pulses relays.md
Faction heraldry asset-aesthetic.md
Liminal / imperial-net shader transformations of the palette shaders-by-register.md

The trait-palette defined here is the canonical reference. All sub-guides import these definitions; none redefine them.


Version: 0.1 | Created: 2026-04-26 | Updated: 2026-04-26