Mana-Loop/ ├── .gitea/ │ └── workflows/ │ └── docker-build.yaml ├── .husky/ │ ├── scripts/ │ │ ├── check-file-size.js │ │ ├── generate-dependency-graph.js │ │ └── generate-project-tree.js │ ├── post-merge │ └── pre-commit ├── docs/ │ ├── GAME_BRIEFING.md │ ├── circular-deps.txt │ ├── dependency-graph.json │ └── project-structure.txt ├── e2e/ ├── playwright-report/ │ ├── data/ │ │ ├── 1513ea5b9ea5985996f67ca36f2bc4d34add51f1.webm │ │ ├── 23eb0c541b68af33d962c3ac20ba74eb9ba477b3.md │ │ ├── 25af666b2659e25b596f1eb58ca5629f38f0fa74.png │ │ ├── 294ed85dfd5fbd79486f5274129a1d8b83cfa676.png │ │ ├── 37c584c77b029af648d58a063f9724538662c6d0.webm │ │ ├── 4d1229974e5326e2351c32921095bff6e989005e.png │ │ ├── 4f22caa1a2b454f813b4c68c510a2ef0b340a248.md │ │ ├── 6408809a17a0a92b06e5cc75fcee95e9778138c4.md │ │ ├── 66a1f85e1e6a655dfb90f10bd1a60887cffa87da.md │ │ ├── 6b97a6c84cfda4c717249f240d0a80e1b195498a.png │ │ ├── 6c1c7d873c0c5262ffca286974649ec3bf1eb3f4.md │ │ ├── 72280c2048aa77a6b58afc7bba8f9db3dfd1c68b.webm │ │ ├── 8035d8abad1bfb2166374e25b55f52324fef1275.png │ │ ├── 8396039272c615989307eaf4113a77b0d77cfbdd.webm │ │ ├── a69b7491fd34ee0580bc0153a90dc146b509aac3.md │ │ ├── bb3c9d51cafcb654c796b093c72c5b702f52faed.webm │ │ ├── bee318a3f485bd3e98088a4735e02181585e431b.png │ │ ├── c0f44af041cac0f5d5efaec8a9a9e5d165c8d26a.png │ │ ├── cf49b56fde3bacf27d842ef4bfeed4887d97f01e.webm │ │ ├── dbea283cbcf6aaed195161609c68ab7de0c6adfa.png │ │ ├── dc2d9fe97c08dd61f42a27ead0829c2d74322ccc.webm │ │ ├── e3d1abb209771785e7247c38fd372d8fd61b7ea4.md │ │ ├── e59720b989841926cc856d6a00be0a6f8365cf49.webm │ │ └── f5ba77f8b20c452bd2c31718b44897276882a465.md │ └── index.html ├── 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 │ │ │ ├── shared/ │ │ │ ├── tabs/ │ │ │ │ ├── CraftingTab/ │ │ │ │ │ ├── EnchanterSubTab.tsx │ │ │ │ │ └── FabricatorSubTab.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 │ │ │ │ │ ├── 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 │ │ │ │ ├── DisciplinesTab.tsx │ │ │ │ ├── EquipmentTab.test.ts │ │ │ │ ├── EquipmentTab.tsx │ │ │ │ ├── GolemancyTab.test.ts │ │ │ │ ├── GolemancyTab.tsx │ │ │ │ ├── GuardianPactsTab.test.ts │ │ │ │ ├── GuardianPactsTab.tsx │ │ │ │ ├── PrestigeTab.test.ts │ │ │ │ ├── PrestigeTab.tsx │ │ │ │ ├── SpellsTab.tsx │ │ │ │ ├── SpireSummaryTab.test.ts │ │ │ │ ├── SpireSummaryTab.tsx │ │ │ │ ├── StatsTab.tsx │ │ │ │ ├── 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 │ │ │ └── value-display.tsx │ │ └── ErrorBoundary.tsx │ ├── hooks/ │ │ ├── use-mobile.ts │ │ └── use-toast.ts │ └── lib/ │ ├── game/ │ │ ├── __tests__/ │ │ │ ├── store-method-tests/ │ │ │ ├── achievements.test.ts │ │ │ ├── bug-fixes.test.ts │ │ │ ├── combat-utils.test.ts │ │ │ ├── computed-stats.test.ts │ │ │ ├── discipline-math.test.ts │ │ │ ├── enemy-generator.test.ts │ │ │ ├── floor-utils.test.ts │ │ │ ├── formatting.test.ts │ │ │ ├── mana-utils.test.ts │ │ │ ├── regression-fixes.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 │ │ │ │ ├── compound-spells.ts │ │ │ │ ├── enchantment-spells.ts │ │ │ │ ├── legendary-spells.ts │ │ │ │ ├── lightning-spells.ts │ │ │ │ ├── master-spells.ts │ │ │ │ ├── raw-spells.ts │ │ │ │ └── utility-spells.ts │ │ │ ├── core.ts │ │ │ ├── elements.ts │ │ │ ├── guardians.ts │ │ │ ├── index.ts │ │ │ ├── prestige.ts │ │ │ ├── rooms.ts │ │ │ └── spells.ts │ │ ├── crafting-actions/ │ │ │ ├── application-actions.ts │ │ │ ├── computed-getters.ts │ │ │ ├── crafting-equipment-actions.ts │ │ │ ├── design-actions.ts │ │ │ ├── disenchant-actions.ts │ │ │ ├── equipment-actions.ts │ │ │ ├── index.ts │ │ │ └── preparation-actions.ts │ │ ├── data/ │ │ │ ├── disciplines/ │ │ │ │ ├── base.ts │ │ │ │ ├── enchanter.ts │ │ │ │ ├── fabricator.ts │ │ │ │ ├── index.ts │ │ │ │ └── invoker.ts │ │ │ ├── enchantments/ │ │ │ │ ├── spell-effects/ │ │ │ │ │ ├── basic-spells.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── legendary-spells.ts │ │ │ │ │ ├── lightning-spells.ts │ │ │ │ │ ├── metal-spells.ts │ │ │ │ │ ├── sand-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-recipes.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/ │ │ │ ├── attunementStore.ts │ │ │ ├── combat-actions.ts │ │ │ ├── combat-state.types.ts │ │ │ ├── combatStore.ts │ │ │ ├── craftingStore.ts │ │ │ ├── craftingStore.types.ts │ │ │ ├── discipline-slice.ts │ │ │ ├── gameActions.ts │ │ │ ├── gameHooks.ts │ │ │ ├── gameLoopActions.ts │ │ │ ├── gameStore.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 │ │ │ ├── enemy-generator.ts │ │ │ ├── enemy-utils.ts │ │ │ ├── floor-utils.ts │ │ │ ├── formatting.ts │ │ │ ├── index.ts │ │ │ ├── mana-utils.ts │ │ │ ├── pact-utils.ts │ │ │ ├── room-utils.ts │ │ │ └── spire-utils.ts │ │ ├── constants.ts │ │ ├── crafting-apply.ts │ │ ├── crafting-attunements.ts │ │ ├── crafting-design.ts │ │ ├── crafting-equipment.ts │ │ ├── crafting-loot.ts │ │ ├── crafting-prep.ts │ │ ├── crafting-utils.ts │ │ ├── effects.ts │ │ └── types.ts │ └── utils.ts ├── test-results/ │ └── .last-run.json ├── .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