rename: The Armory -> The Reliquary; extend spec with essence + cross-over

Renaming: "Armory" read too militaristic for a séance app. Landed on "The
Reliquary" (not "The Threshold" — that name was already taken by the
landing-page back-link).

Spec addendum: added a visible essence currency (earned per summon, spent
on unlocks — distinct from the hidden favor score) and a fourth judgment
verdict, cross_over, for compassionately helping a genuinely benevolent
"stuck" spirit move on rather than just trusting or banishing it. Updates
workstreams B/C/E/F accordingly before any of them are dispatched.
This commit is contained in:
Indiana
2026-07-23 11:06:07 +00:00
parent 291d75c70c
commit 6d8c6f2496
8 changed files with 137 additions and 76 deletions

View File

@@ -28,7 +28,7 @@
"heroKicker": "an instrument for speaking with the dead bandwidth",
"cta": "BEGIN THE SÉANCE",
"ctaCodex": "browse the codex",
"ctaShop": "visit the armory",
"ctaShop": "visit the reliquary",
"stats": {
"entities": "spirits catalogued",
"sessions": "séances held",
@@ -57,10 +57,10 @@
},
"featured": "most disturbed spirits",
"featuredEmpty": "the registry is still blank — be the first to disturb it",
"armory": {
"title": "HARDWARE FROM THE ARMORY",
"reliquary": {
"title": "HARDWARE FROM THE RELIQUARY",
"line": "the Ultimate Quantum Box is coming — a handheld séance instrument that makes the veil knock louder.",
"link": "enter the armory →"
"link": "enter the reliquary →"
},
"footer": "an interactive horror art installation — the spirits are fiction; the static is real",
"footerColophon": "self-hosted · no cloud · the veil runs on your machine"
@@ -267,7 +267,7 @@
},
"shop": {
"back": "← the threshold",
"title": "THE ARMORY",
"title": "THE RELIQUARY",
"subtitle": "instruments for those who would knock louder",
"flagship": {
"tag": "flagship instrument",

View File

@@ -12,7 +12,7 @@
"nav": {
"home": "el umbral",
"codex": "códice",
"shop": "arsenal",
"shop": "relicario",
"seance": "sesión",
"enter": "entrar",
"logout": "partir"
@@ -28,7 +28,7 @@
"heroKicker": "un instrumento para hablar con el ancho de banda muerto",
"cta": "COMENZAR LA SESIÓN",
"ctaCodex": "hojear el códice",
"ctaShop": "visitar el arsenal",
"ctaShop": "visitar el relicario",
"stats": {
"entities": "espíritus catalogados",
"sessions": "sesiones celebradas",
@@ -57,10 +57,10 @@
},
"featured": "los espíritus más perturbados",
"featuredEmpty": "el registro aún está en blanco — sé quien lo perturbe primero",
"armory": {
"title": "HARDWARE DEL ARSENAL",
"reliquary": {
"title": "HARDWARE DEL RELICARIO",
"line": "la Ultimate Quantum Box se acerca — un instrumento de sesión de mano que hace que el velo golpee más fuerte.",
"link": "entrar al arsenal →"
"link": "entrar al relicario →"
},
"footer": "una instalación de arte de terror interactiva — los espíritus son ficción; la estática es real",
"footerColophon": "autoalojado · sin nube · el velo corre en tu máquina"
@@ -267,7 +267,7 @@
},
"shop": {
"back": "← el umbral",
"title": "EL ARSENAL",
"title": "EL RELICARIO",
"subtitle": "instrumentos para quienes quisieran golpear más fuerte",
"flagship": {
"tag": "instrumento insignia",

View File

@@ -437,7 +437,7 @@
font-size: 0.7rem;
}
/* ---------- armory teaser strip ---------- */
/* ---------- reliquary teaser strip ---------- */
.hero-secondary-links {
display: flex;
@@ -445,12 +445,12 @@
gap: 1.6rem;
}
.landing-section.armory-strip {
.landing-section.reliquary-strip {
padding-top: 2.5rem;
padding-bottom: 2.5rem;
}
.armory-strip-inner {
.reliquary-strip-inner {
display: flex;
flex-wrap: wrap;
align-items: center;
@@ -462,7 +462,7 @@
text-align: center;
}
.armory-title {
.reliquary-title {
font-family: 'Cinzel', serif;
font-size: 0.85rem;
font-weight: 700;
@@ -472,13 +472,13 @@
margin: 0;
}
.armory-line {
.reliquary-line {
font-size: 0.78rem;
color: rgba(216, 230, 221, 0.55);
margin: 0;
}
.armory-link {
.reliquary-link {
color: #b26bff;
font-size: 0.78rem;
letter-spacing: 0.14em;
@@ -489,7 +489,7 @@
transition: color 0.2s ease, border-color 0.2s ease, text-shadow 0.2s ease;
}
.armory-link:hover {
.reliquary-link:hover {
color: #d3a8ff;
border-color: #d3a8ff;
text-shadow: 0 0 14px rgba(178, 107, 255, 0.6);

View File

@@ -283,7 +283,7 @@ export function LandingPage() {
{t('landing.ctaCodex')}
</Link>
<Link className="cta-secondary" to="/shop">
{t('landing.ctaShop', { defaultValue: 'visit the armory' })}
{t('landing.ctaShop', { defaultValue: 'visit the reliquary' })}
</Link>
</div>
</div>
@@ -343,19 +343,19 @@ export function LandingPage() {
</section>
)}
<section className="landing-section armory-strip">
<div className="armory-strip-inner">
<h2 className="armory-title">
{t('landing.armory.title', { defaultValue: 'HARDWARE FROM THE ARMORY' })}
<section className="landing-section reliquary-strip">
<div className="reliquary-strip-inner">
<h2 className="reliquary-title">
{t('landing.reliquary.title', { defaultValue: 'HARDWARE FROM THE RELIQUARY' })}
</h2>
<p className="armory-line">
{t('landing.armory.line', {
<p className="reliquary-line">
{t('landing.reliquary.line', {
defaultValue:
'the Ultimate Quantum Box is coming — a handheld séance instrument that makes the veil knock louder.',
})}
</p>
<Link className="armory-link" to="/shop">
{t('landing.armory.link', { defaultValue: 'enter the armory →' })}
<Link className="reliquary-link" to="/shop">
{t('landing.reliquary.link', { defaultValue: 'enter the reliquary →' })}
</Link>
</div>
</section>

View File

@@ -1,4 +1,4 @@
/* The Armory — gothic storefront. Tokens: bg #07070d, panel rgba(16,16,26,0.85),
/* The Reliquary — gothic storefront. Tokens: bg #07070d, panel rgba(16,16,26,0.85),
phosphor #7cffb2, violet #b26bff, blood #ff3b5c, borders rgba(124,255,178,0.18). */
.shop-page {

View File

@@ -1,4 +1,4 @@
// The Armory — storefront for Quantumancy hardware. Flagship 'Ultimate
// The Reliquary — storefront for Quantumancy hardware. Flagship 'Ultimate
// Quantum Box' hero, a grid of knock-louder modules, and the reservation
// manifest (POST /api/shop/waitlist — public, no payment taken).
// Honest by design: the site works fully without the hardware.
@@ -197,7 +197,7 @@ export function ShopPage() {
<Link to="/" className="shop-back">
{t('shop.back', { defaultValue: '← the threshold' })}
</Link>
<h1 className="shop-title">{t('shop.title', { defaultValue: 'THE ARMORY' })}</h1>
<h1 className="shop-title">{t('shop.title', { defaultValue: 'THE RELIQUARY' })}</h1>
<p className="shop-subtitle">
{t('shop.subtitle', { defaultValue: 'instruments for those who would knock louder' })}
</p>