Realms
The
KATFORGE ecosystem is a family of related realms: standalone sites and games that share a common visual grammar while keeping their own identity. This page defines each realm's visual identity.
Typographic logos
Every realm has a typographic lockup that works inline anywhere: sentences, headings, tables, tooltips. Use the :realm component to drop one in.
The :realm{name="spark"} package gives you flash messages out of the box.
That renders as: The @katforge/spark package gives you flash messages out of the box.
The component matches the surrounding font size and line height, so it looks at home in a paragraph, a list item, or an h3.
Parent
#FF8C00#E67E00#FFA033#C95E1F#140C08#1E1410#C2410CThe orange flare is the forge fire. Every other realm palette borrows from its warmth or plays against it.
Games
#8B5CF6#7C3AED#C4B5FD#0C0C14#14142A#7DD3FCStumper.gg carries a brainy violet with a blue .gg tail: trivia and competition.
#0D7FF1#24A6FF#7DD3FC#0340A6#05C0F5#72DFFDLextris is cool cyan, evoking letter blocks lighting up.
#C8A94E#FFD100#FCD34D#2A2018#3A2F24#B18063Gear Goblins is gold leaf on dark stone (treasure, loot, adventure), with carved-letter serifs that nod at the Hearthstone-inspired art direction.
External sites built on
KATFORGE
External realms are standalone sites that use
KATFORGE for authentication and API access. They share the parent's industrial typography so the family resemblance reads at a glance, but carry their own palette identity.
wc3stats#9CA3AF#6B7280#D1D5DB#374151#4B5563#E5E7EB
wc3stats is silvery grey, a companion to Warcraft-III-era ladder stats. Steel and slate anchor the brand, with iron and gunmetal surfaces and a misty silver highlight.
DarkerDB#E60505#000000#3B2A21#80D600#FFCE79#B18063
DarkerDB is blood-red, companion data for Dark and Darker's dungeon crawl. Palette pulled straight from the app's palette.js: blood red for critical status, black and oak dark for backgrounds, uncommon green and tan accents for rarity cues. See the DarkerDB realm page for the architecture and the API reference for endpoints.
Packages
Packages are npm modules, not full realms, so they only get typographic marks (no palette).
| Logo | Name | Slug |
|---|---|---|
| @katforge/api | SDK | sdk |
| @katforge/spark | Spark | spark |
| @katforge/anvil | Anvil | anvil |
| @katforge/forge | Forge | forge |
| @katforge/codex | Codex | codex |
| @katforge/tactician | Tactician | tactician |
| @katforge/katalyst | Katalyst | katalyst |
Packages all render in a monospace face to signal "code you install". Colors give each package a distinct flavor: @katforge/api is data-cyan, @katforge/spark is electric amber, @katforge/anvil is iron-cool slate, @katforge/forge is fire-red, @katforge/codex is indigo-book, @katforge/tactician is strategic violet, @katforge/katalyst is emerald-growth.
Usage in prose
Inline in a sentence
:realm{name="katforge"} ships :realm{name="sdk"}, :realm{name="spark"}, and a growing set of packages.
KATFORGE ships @katforge/api, @katforge/spark, and a growing set of packages.
In headings
## Using :realm{name="spark"} with :realm{name="stumper"}
Using @katforge/spark with Stumper.gg
Writing guidelines
- Use the lockup on first mention in a given page section. Subsequent mentions in the same section can drop the styling and just write the plain name (keeps prose less busy).
- Don't nest realm styling inside code blocks. Inside a fenced code block, plain text is correct: the code is about the literal characters.
- Packages always render with the
@katforge/scope. Don't strip it; it's part of the identity.
Where this lives
The realm registry and its typographic logos live in @katforge/spark, so every project in the
KATFORGE ecosystem can render the same lockups and palettes without duplicating definitions. See @katforge/spark for the component API.
Adding a new realm
- Pick a palette that doesn't collide with an existing realm: primary/hover/light plus a surface trio.
- Add a key to the internal
REALMSrecord inpackages/spark/src/realms.tswithlabel,style,typography(font class, color, glow, and optional weight/tracking/transform), optionalsuffix, and optionalpalette. - If
typography.fontClassreferences a font that isn't already loaded, add it to the@theme { --font-* }block inpackages/spark/src/styles/katforge.css;@nuxt/fontsauto-discovers it and Tailwind generates the matching utility. - Reference the new realm on this page with
::realm-palette{name="..."}for the full card, or inline with:realm{name="..."}. - If the new realm is a package, leave
palette: nulland settypography.fontClasstofont-jetbrains.