Mana-Loop/ ├── .gitea/ │ └── workflows/ │ └── docker-build.yaml ├── .husky/ │ ├── scripts/ │ │ ├── check-file-size.js │ │ ├── generate-dependency-graph.js │ │ ├── generate-project-tree.js │ │ └── run-tests.sh │ ├── post-merge │ └── pre-commit ├── docs/ │ ├── specs/ │ │ ├── attunements/ │ │ │ ├── enchanter/ │ │ │ │ ├── systems/ │ │ │ │ │ └── enchanting-spec.md │ │ │ │ └── enchanter-spec.md │ │ │ ├── fabricator/ │ │ │ │ ├── systems/ │ │ │ │ │ ├── golemancy-spec.md │ │ │ │ │ └── item-fabrication-spec.md │ │ │ │ └── fabricator-spec.md │ │ │ ├── invoker/ │ │ │ │ ├── systems/ │ │ │ │ │ └── pact-system-spec.md │ │ │ │ └── invoker-spec.md │ │ │ └── attunement-system-spec.md │ │ ├── spire-climbing-spec.md │ │ └── spire-combat-spec.md │ ├── GAME_BRIEFING.md │ ├── circular-deps.txt │ ├── dependency-graph.json │ └── project-structure.txt ├── e2e/ │ ├── combat-happy-path.spec.ts │ ├── enchanter-happy-path.spec.ts │ ├── fabricator-happy-path.spec.ts │ └── playtest.spec.ts ├── public/ │ ├── fonts/ │ │ ├── GeistMonoVF.woff │ │ └── GeistVF.woff │ ├── logo.svg │ └── robots.txt ├── src/ │ ├── app/ │ │ ├── components/ │ │ │ ├── GameOverScreen.tsx │ │ │ ├── GrimoireTab.tsx │ │ │ └── LeftPanel.tsx │ │ ├── globals.css │ │ ├── layout.tsx │ │ └── page.tsx │ ├── components/ │ │ ├── game/ │ │ │ ├── LootInventory/ │ │ │ │ ├── BlueprintsSection.tsx │ │ │ │ ├── EquipmentItem.tsx │ │ │ │ ├── EssenceItem.tsx │ │ │ │ ├── MaterialItem.tsx │ │ │ │ ├── icons.ts │ │ │ │ └── types.ts │ │ │ ├── crafting/ │ │ │ │ ├── EnchantmentDesigner/ │ │ │ │ │ ├── DesignForm.tsx │ │ │ │ │ ├── EffectSelector.tsx │ │ │ │ │ ├── EquipmentTypeSelector.tsx │ │ │ │ │ ├── SavedDesigns.tsx │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── EnchantmentApplier.tsx │ │ │ │ ├── EnchantmentDesigner.tsx │ │ │ │ ├── EnchantmentPreparer.tsx │ │ │ │ ├── EquipmentCrafter.tsx │ │ │ │ └── index.tsx │ │ │ ├── debug/ │ │ │ │ ├── AttunementDebug.tsx │ │ │ │ ├── ElementDebug.tsx │ │ │ │ ├── GameStateDebug.tsx │ │ │ │ ├── GolemDebug.tsx │ │ │ │ ├── PactDebug.tsx │ │ │ │ ├── debug-context.tsx │ │ │ │ └── index.tsx │ │ │ ├── tabs/ │ │ │ │ ├── CraftingTab/ │ │ │ │ │ ├── EnchanterSubTab.tsx │ │ │ │ │ ├── FabricatorSubTab.tsx │ │ │ │ │ └── MaterialRecipeCard.tsx │ │ │ │ ├── DebugTab/ │ │ │ │ │ ├── AchievementDebugSection.tsx │ │ │ │ │ ├── AttunementDebugSection.tsx │ │ │ │ │ ├── DisciplineDebugSection.tsx │ │ │ │ │ ├── ElementDebugSection.tsx │ │ │ │ │ ├── GameStateDebugSection.tsx │ │ │ │ │ ├── GolemDebugSection.tsx │ │ │ │ │ ├── PactDebugSection.tsx │ │ │ │ │ └── SpireDebugSection.tsx │ │ │ │ ├── EquipmentTab/ │ │ │ │ │ ├── EquipmentEffectsSummary.tsx │ │ │ │ │ ├── EquipmentSlotGrid.tsx │ │ │ │ │ └── InventoryList.tsx │ │ │ │ ├── SpireCombatPage/ │ │ │ │ │ ├── RoomDisplay.tsx │ │ │ │ │ ├── SpireActivityLog.tsx │ │ │ │ │ ├── SpireCombatControls.tsx │ │ │ │ │ ├── SpireCombatPage.tsx │ │ │ │ │ ├── SpireHeader.tsx │ │ │ │ │ ├── SpireManaDisplay.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── StatsTab/ │ │ │ │ │ ├── CombatStatsSection.tsx │ │ │ │ │ ├── DisciplineStatsSection.tsx │ │ │ │ │ ├── ElementStatsSection.tsx │ │ │ │ │ ├── LoopStatsSection.tsx │ │ │ │ │ ├── ManaStatsSection.tsx │ │ │ │ │ ├── PactStatusSection.tsx │ │ │ │ │ └── StudyStatsSection.tsx │ │ │ │ ├── AchievementsTab.tsx │ │ │ │ ├── ActivityLog.tsx │ │ │ │ ├── AttunementsTab.test.ts │ │ │ │ ├── AttunementsTab.tsx │ │ │ │ ├── CraftingTab.test.ts │ │ │ │ ├── CraftingTab.tsx │ │ │ │ ├── DebugTab.test.ts │ │ │ │ ├── DebugTab.tsx │ │ │ │ ├── DisciplineCard.tsx │ │ │ │ ├── DisciplinesTab.tsx │ │ │ │ ├── ElementalSubtab.tsx │ │ │ │ ├── EquipmentTab.test.ts │ │ │ │ ├── EquipmentTab.tsx │ │ │ │ ├── GolemancyTab.test.ts │ │ │ │ ├── GolemancyTab.tsx │ │ │ │ ├── GuardianPactsTab.test.ts │ │ │ │ ├── GuardianPactsTab.tsx │ │ │ │ ├── PrestigeTab.test.ts │ │ │ │ ├── PrestigeTab.tsx │ │ │ │ ├── SpellsTab.tsx │ │ │ │ ├── SpireSummaryTab.helpers.tsx │ │ │ │ ├── SpireSummaryTab.test.ts │ │ │ │ ├── SpireSummaryTab.tsx │ │ │ │ ├── StatsTab.tsx │ │ │ │ ├── disciplines-utils.ts │ │ │ │ ├── guardian-pacts-components.tsx │ │ │ │ └── index.ts │ │ │ ├── ActionButtons.tsx │ │ │ ├── ActivityLogPanel.tsx │ │ │ ├── AttunementStatus.tsx │ │ │ ├── GameToast.tsx │ │ │ ├── ManaDisplay.tsx │ │ │ ├── TimeDisplay.tsx │ │ │ ├── UpgradeDialog.tsx │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── ui/ │ │ │ ├── action-button.tsx │ │ │ ├── alert-dialog.tsx │ │ │ ├── badge.tsx │ │ │ ├── button.tsx │ │ │ ├── card.tsx │ │ │ ├── dialog.tsx │ │ │ ├── element-badge.tsx │ │ │ ├── game-card.tsx │ │ │ ├── index.ts │ │ │ ├── input.tsx │ │ │ ├── label.tsx │ │ │ ├── mana-bar.tsx │ │ │ ├── progress.tsx │ │ │ ├── scroll-area.tsx │ │ │ ├── section-header.tsx │ │ │ ├── select.tsx │ │ │ ├── separator.tsx │ │ │ ├── sheet.tsx │ │ │ ├── skeleton.tsx │ │ │ ├── stat-row.tsx │ │ │ ├── stepper.tsx │ │ │ ├── switch.tsx │ │ │ ├── tabs.tsx │ │ │ ├── toast.tsx │ │ │ ├── toaster.tsx │ │ │ ├── toggle.tsx │ │ │ ├── tooltip-info.tsx │ │ │ ├── tooltip.tsx │ │ │ ├── ui-components.test.tsx │ │ │ └── value-display.tsx │ │ └── ErrorBoundary.tsx │ ├── hooks/ │ │ ├── use-mobile.ts │ │ └── use-toast.ts │ ├── lib/ │ │ ├── game/ │ │ │ ├── __tests__/ │ │ │ │ ├── achievements.test.ts │ │ │ │ ├── activity-log.test.ts │ │ │ │ ├── bug-fixes.test.ts │ │ │ │ ├── combat-actions.test.ts │ │ │ │ ├── combat-utils.test.ts │ │ │ │ ├── computed-stats.test.ts │ │ │ │ ├── crafting-utils-basic.test.ts │ │ │ │ ├── crafting-utils-equipment.test.ts │ │ │ │ ├── crafting-utils-recipe.test.ts │ │ │ │ ├── crafting-utils-time.test.ts │ │ │ │ ├── cross-module-combat-meditation.test.ts │ │ │ │ ├── cross-module-helpers.ts │ │ │ │ ├── cross-module-lifecycle-consistency.test.ts │ │ │ │ ├── cross-module-prestige-discipline.test.ts │ │ │ │ ├── discipline-math.test.ts │ │ │ │ ├── discipline-prerequisites.test.ts │ │ │ │ ├── discipline-reactivate-bug.test.ts │ │ │ │ ├── enemy-barrier-utils.test.ts │ │ │ │ ├── enemy-defenses.test.ts │ │ │ │ ├── enemy-generator.test.ts │ │ │ │ ├── enemy-utils.test.ts │ │ │ │ ├── floor-utils.test.ts │ │ │ │ ├── floor-utils.upgraded.test.ts │ │ │ │ ├── formatting.test.ts │ │ │ │ ├── guardian-names.test.ts │ │ │ │ ├── mana-utils.test.ts │ │ │ │ ├── pact-utils.test.ts │ │ │ │ ├── persistence.test.ts │ │ │ │ ├── regression-fixes.test.ts │ │ │ │ ├── room-utils-floor-state.test.ts │ │ │ │ ├── room-utils.test.ts │ │ │ │ ├── spire-utils.test.ts │ │ │ │ ├── store-actions-combat-prestige.test.ts │ │ │ │ ├── store-actions-discipline.test.ts │ │ │ │ ├── store-actions-mana.test.ts │ │ │ │ ├── store-actions.test.ts │ │ │ │ └── tick-integration.test.ts │ │ │ ├── constants/ │ │ │ │ ├── spells-modules/ │ │ │ │ │ ├── advanced-spells.ts │ │ │ │ │ ├── aoe-spells.ts │ │ │ │ │ ├── basic-elemental-spells.ts │ │ │ │ │ ├── blackflame-spells.ts │ │ │ │ │ ├── compound-spells.ts │ │ │ │ │ ├── enchantment-spells.ts │ │ │ │ │ ├── frost-spells.ts │ │ │ │ │ ├── legendary-spells.ts │ │ │ │ │ ├── lightning-spells.ts │ │ │ │ │ ├── master-spells.ts │ │ │ │ │ ├── miasma-spells.ts │ │ │ │ │ ├── plasma-spells.ts │ │ │ │ │ ├── radiantflames-spells.ts │ │ │ │ │ ├── raw-spells.ts │ │ │ │ │ ├── shadowglass-spells.ts │ │ │ │ │ ├── soul-spells.ts │ │ │ │ │ ├── time-spells.ts │ │ │ │ │ └── utility-spells.ts │ │ │ │ ├── core.ts │ │ │ │ ├── elements.ts │ │ │ │ ├── index.ts │ │ │ │ ├── prestige.ts │ │ │ │ ├── rooms.ts │ │ │ │ └── spells.ts │ │ │ ├── crafting-actions/ │ │ │ │ ├── application-actions.ts │ │ │ │ ├── computed-getters.ts │ │ │ │ ├── crafting-equipment-actions.ts │ │ │ │ ├── crafting-material-actions.ts │ │ │ │ ├── design-actions.ts │ │ │ │ ├── disenchant-actions.ts │ │ │ │ ├── equipment-actions.ts │ │ │ │ ├── index.ts │ │ │ │ └── preparation-actions.ts │ │ │ ├── data/ │ │ │ │ ├── disciplines/ │ │ │ │ │ ├── base.ts │ │ │ │ │ ├── elemental-regen-advanced.ts │ │ │ │ │ ├── elemental-regen.ts │ │ │ │ │ ├── elemental.ts │ │ │ │ │ ├── enchanter-special.ts │ │ │ │ │ ├── enchanter-spells.ts │ │ │ │ │ ├── enchanter-utility.ts │ │ │ │ │ ├── enchanter.ts │ │ │ │ │ ├── fabricator.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── invoker.ts │ │ │ │ ├── enchantments/ │ │ │ │ │ ├── spell-effects/ │ │ │ │ │ │ ├── basic-spells.ts │ │ │ │ │ │ ├── blackflame-spells.ts │ │ │ │ │ │ ├── exotic-new-spells.ts │ │ │ │ │ │ ├── frost-spells.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── legendary-spells.ts │ │ │ │ │ │ ├── lightning-spells.ts │ │ │ │ │ │ ├── metal-spells.ts │ │ │ │ │ │ ├── miasma-spells.ts │ │ │ │ │ │ ├── radiantflames-spells.ts │ │ │ │ │ │ ├── sand-spells.ts │ │ │ │ │ │ ├── shadowglass-spells.ts │ │ │ │ │ │ ├── tier2-spells.ts │ │ │ │ │ │ ├── tier3-spells.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── combat-effects.ts │ │ │ │ │ ├── defense-effects.ts │ │ │ │ │ ├── elemental-effects.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── mana-effects.ts │ │ │ │ │ ├── special-effects.ts │ │ │ │ │ └── utility-effects.ts │ │ │ │ ├── equipment/ │ │ │ │ │ ├── accessories.ts │ │ │ │ │ ├── body.ts │ │ │ │ │ ├── casters.ts │ │ │ │ │ ├── catalysts.ts │ │ │ │ │ ├── equipment-types-data.ts │ │ │ │ │ ├── feet.ts │ │ │ │ │ ├── hands.ts │ │ │ │ │ ├── head.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shields.ts │ │ │ │ │ ├── swords.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── golems/ │ │ │ │ │ ├── base-golems.ts │ │ │ │ │ ├── elemental-golems.ts │ │ │ │ │ ├── golems-data.ts │ │ │ │ │ ├── hybrid-golems.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── achievements.ts │ │ │ │ ├── attunements.ts │ │ │ │ ├── crafting-recipes.ts │ │ │ │ ├── enchantment-effects.ts │ │ │ │ ├── enchantment-types.ts │ │ │ │ ├── fabricator-material-recipes.ts │ │ │ │ ├── fabricator-physical-recipes.ts │ │ │ │ ├── fabricator-recipe-types.ts │ │ │ │ ├── fabricator-recipes.ts │ │ │ │ ├── fabricator-wizard-recipes.ts │ │ │ │ ├── guardian-data.ts │ │ │ │ ├── guardian-encounters.ts │ │ │ │ └── loot-drops.ts │ │ │ ├── effects/ │ │ │ │ ├── discipline-effects.ts │ │ │ │ ├── dynamic-compute.ts │ │ │ │ ├── special-effects.ts │ │ │ │ ├── upgrade-effects.ts │ │ │ │ └── upgrade-effects.types.ts │ │ │ ├── hooks/ │ │ │ │ └── useGameDerived.ts │ │ │ ├── stores/ │ │ │ │ ├── pipelines/ │ │ │ │ │ ├── combat-tick.ts │ │ │ │ │ ├── enchanting-tick.ts │ │ │ │ │ ├── equipment-crafting.ts │ │ │ │ │ ├── golem-combat.ts │ │ │ │ │ └── pact-ritual.ts │ │ │ │ ├── attunementStore.ts │ │ │ │ ├── combat-actions.ts │ │ │ │ ├── combat-descent-actions.ts │ │ │ │ ├── combat-state.types.ts │ │ │ │ ├── combatStore.ts │ │ │ │ ├── crafting-equipment-tick.ts │ │ │ │ ├── crafting-initial-state.ts │ │ │ │ ├── craftingStore.ts │ │ │ │ ├── craftingStore.types.ts │ │ │ │ ├── debugBridge.ts │ │ │ │ ├── discipline-slice.ts │ │ │ │ ├── dot-runtime.ts │ │ │ │ ├── gameActions.ts │ │ │ │ ├── gameHooks.ts │ │ │ │ ├── gameLoopActions.ts │ │ │ │ ├── gameStore.ts │ │ │ │ ├── gameStore.types.ts │ │ │ │ ├── golem-combat-actions.ts │ │ │ │ ├── index.ts │ │ │ │ ├── manaStore.ts │ │ │ │ ├── prestigeStore.ts │ │ │ │ ├── tick-pipeline.ts │ │ │ │ └── uiStore.ts │ │ │ ├── types/ │ │ │ │ ├── attunements.ts │ │ │ │ ├── disciplines.ts │ │ │ │ ├── elements.ts │ │ │ │ ├── equipment.ts │ │ │ │ ├── equipmentSlot.ts │ │ │ │ ├── game.ts │ │ │ │ ├── index.ts │ │ │ │ └── spells.ts │ │ │ ├── utils/ │ │ │ │ ├── activity-log.ts │ │ │ │ ├── combat-utils.ts │ │ │ │ ├── discipline-math.ts │ │ │ │ ├── element-cap-bonus.ts │ │ │ │ ├── enemy-generator.ts │ │ │ │ ├── enemy-utils.ts │ │ │ │ ├── floor-utils.ts │ │ │ │ ├── formatting.ts │ │ │ │ ├── guardian-utils.ts │ │ │ │ ├── index.ts │ │ │ │ ├── mana-utils.ts │ │ │ │ ├── pact-utils.ts │ │ │ │ ├── result.ts │ │ │ │ ├── room-utils.ts │ │ │ │ ├── safe-persist.ts │ │ │ │ └── spire-utils.ts │ │ │ ├── constants.ts │ │ │ ├── crafting-apply.ts │ │ │ ├── crafting-attunements.ts │ │ │ ├── crafting-design.ts │ │ │ ├── crafting-equipment.ts │ │ │ ├── crafting-fabricator.ts │ │ │ ├── crafting-loot.ts │ │ │ ├── crafting-prep.ts │ │ │ ├── crafting-utils.ts │ │ │ ├── effects.ts │ │ │ └── types.ts │ │ └── utils.ts │ └── test/ │ └── setup.ts ├── .dockerignore ├── .gitignore ├── AGENTS.md ├── Caddyfile ├── Dockerfile ├── README.md ├── bun.lock ├── bunfig.toml ├── components.json ├── docker-compose.yml ├── eslint.config.mjs ├── next.config.ts ├── package-lock.json ├── package.json ├── playwright.config.ts ├── postcss.config.mjs ├── scorecard.png ├── tailwind.config.ts ├── tsconfig.json └── vitest.config.ts