Mana-Loop/ ├── .gitea/ │ └── workflows/ │ └── docker-build.yaml ├── .husky/ │ ├── _/ │ ├── scripts/ │ │ ├── check-file-size.js │ │ └── generate-project-tree.js │ ├── post-merge │ └── pre-commit ├── db/ │ └── custom.db ├── docs/ │ ├── task5/ │ │ ├── subtask_12_context.md │ │ └── subtask_13_context.md │ ├── GAME_BRIEFING.md │ ├── project-structure.txt │ ├── skills.md │ └── task5.md ├── download/ │ └── README.md ├── examples/ │ └── websocket/ │ ├── frontend.tsx │ └── server.ts ├── mini-services/ │ └── .gitkeep ├── prisma/ │ └── schema.prisma ├── public/ │ ├── logo.svg │ └── robots.txt ├── src/ │ ├── app/ │ │ ├── api/ │ │ │ └── route.ts │ │ ├── globals.css │ │ ├── layout.tsx │ │ └── page.tsx │ ├── components/ │ │ ├── game/ │ │ │ ├── crafting/ │ │ │ │ ├── EnchantmentApplier.tsx │ │ │ │ ├── EnchantmentDesigner.tsx │ │ │ │ ├── EnchantmentPreparer.tsx │ │ │ │ ├── EquipmentCrafter.tsx │ │ │ │ └── index.tsx │ │ │ ├── debug/ │ │ │ │ ├── AttunementDebug.tsx │ │ │ │ ├── ElementDebug.tsx │ │ │ │ ├── GameStateDebug.tsx │ │ │ │ ├── GolemDebug.tsx │ │ │ │ ├── PactDebug.tsx │ │ │ │ ├── SkillDebug.tsx │ │ │ │ └── index.tsx │ │ │ ├── layout/ │ │ │ │ ├── Header.tsx │ │ │ │ └── TabBar.tsx │ │ │ ├── shared/ │ │ │ │ ├── MemorySlotPicker.tsx │ │ │ │ ├── StudyProgress.tsx │ │ │ │ └── UpgradeDialog.tsx │ │ │ ├── stats/ │ │ │ │ ├── CombatStatsSection.tsx │ │ │ │ ├── ManaStatsSection.tsx │ │ │ │ ├── ManaTypeBreakdown.tsx │ │ │ │ ├── StudyStatsSection.tsx │ │ │ │ ├── UpgradeEffectsSection.tsx │ │ │ │ └── index.tsx │ │ │ ├── tabs/ │ │ │ │ ├── AchievementsTab.tsx │ │ │ │ ├── AttunementsTab.tsx │ │ │ │ ├── AttunementsTab.tsx.backup │ │ │ │ ├── CraftingTab.tsx │ │ │ │ ├── DebugTab.tsx │ │ │ │ ├── EquipmentTab.tsx │ │ │ │ ├── GolemancyTab.tsx │ │ │ │ ├── LabTab.tsx │ │ │ │ ├── LootTab.tsx │ │ │ │ ├── SkillsTab.tsx │ │ │ │ ├── SpellsTab.tsx │ │ │ │ ├── SpireTab.tsx │ │ │ │ ├── StatsTab.tsx │ │ │ │ ├── StudyProgress.tsx │ │ │ │ ├── UpgradeDialog.tsx │ │ │ │ └── index.ts │ │ │ ├── AchievementsDisplay.tsx │ │ │ ├── ActionButtons.tsx │ │ │ ├── ActionButtons.tsx.backup │ │ │ ├── CalendarDisplay.tsx │ │ │ ├── ConfirmDialog.tsx │ │ │ ├── CraftingProgress.tsx │ │ │ ├── GameContext.tsx │ │ │ ├── GameToast.tsx │ │ │ ├── LabTab.tsx │ │ │ ├── LootInventory.tsx │ │ │ ├── ManaDisplay.tsx │ │ │ ├── SkillsTab.tsx │ │ │ ├── SpellsTab.tsx │ │ │ ├── StatsTab.tsx │ │ │ ├── StudyProgress.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 │ │ ├── skill-row.tsx │ │ ├── stat-row.tsx │ │ ├── stepper.tsx │ │ ├── switch.tsx │ │ ├── tabs.tsx │ │ ├── toast.tsx │ │ ├── toaster.tsx │ │ ├── toggle.tsx │ │ ├── tooltip-info.tsx │ │ ├── tooltip.tsx │ │ └── value-display.tsx │ ├── hooks/ │ │ ├── use-mobile.ts │ │ └── use-toast.ts │ └── lib/ │ ├── game/ │ │ ├── __tests__/ │ │ │ ├── bug-fixes.test.ts │ │ │ ├── computed-stats.test.ts │ │ │ ├── skill-system.test.ts │ │ │ └── skills.test.ts │ │ ├── constants/ │ │ │ ├── core.ts │ │ │ ├── elements.ts │ │ │ ├── guardians.ts │ │ │ ├── index.ts │ │ │ ├── prestige.ts │ │ │ ├── rooms.ts │ │ │ ├── skills.ts │ │ │ └── spells.ts │ │ ├── data/ │ │ │ ├── enchantments/ │ │ │ │ ├── combat-effects.ts │ │ │ │ ├── defense-effects.ts │ │ │ │ ├── elemental-effects.ts │ │ │ │ ├── index.ts │ │ │ │ ├── mana-effects.ts │ │ │ │ ├── special-effects.ts │ │ │ │ ├── spell-effects.ts │ │ │ │ └── utility-effects.ts │ │ │ ├── achievements.ts │ │ │ ├── attunements.ts │ │ │ ├── crafting-recipes.ts │ │ │ ├── enchantment-effects.ts │ │ │ ├── enchantment-types.ts │ │ │ ├── equipment.ts │ │ │ ├── golems.ts │ │ │ └── loot-drops.ts │ │ ├── hooks/ │ │ │ └── useGameDerived.ts │ │ ├── store/ │ │ │ ├── combatSlice.ts │ │ │ ├── computed.ts │ │ │ ├── craftingSlice.ts │ │ │ ├── index.ts │ │ │ ├── manaSlice.ts │ │ │ ├── pactSlice.ts │ │ │ ├── prestigeSlice.ts │ │ │ ├── skillSlice.ts │ │ │ └── timeSlice.ts │ │ ├── stores/ │ │ │ ├── __tests__/ │ │ │ │ ├── store-methods.test.ts │ │ │ │ └── stores.test.ts │ │ │ ├── combatStore.ts │ │ │ ├── gameStore.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ ├── manaStore.ts │ │ │ ├── prestigeStore.ts │ │ │ ├── skillStore.ts │ │ │ └── uiStore.ts │ │ ├── types/ │ │ │ ├── attunements.ts │ │ │ ├── elements.ts │ │ │ ├── equipment.ts │ │ │ ├── game.ts │ │ │ ├── index.ts │ │ │ ├── skills.ts │ │ │ └── spells.ts │ │ ├── utils/ │ │ │ ├── combat-utils.ts │ │ │ ├── floor-utils.ts │ │ │ ├── formatting.ts │ │ │ ├── index.ts │ │ │ └── mana-utils.ts │ │ ├── attunements.ts │ │ ├── computed-stats.ts │ │ ├── constants.ts │ │ ├── crafting-slice.ts │ │ ├── debug-context.tsx │ │ ├── effects.ts │ │ ├── formatting.ts │ │ ├── navigation-slice.ts │ │ ├── skill-evolution.ts │ │ ├── skills.test.ts │ │ ├── store.test.ts │ │ ├── store.ts │ │ ├── stores.test.ts │ │ ├── study-slice.ts │ │ ├── types.ts │ │ └── upgrade-effects.ts │ ├── db.ts │ └── utils.ts ├── .accesslog ├── .dockerignore ├── .gitignore ├── 3001 ├── AGENTS.md ├── Caddyfile ├── Dockerfile ├── README.md ├── bun.lock ├── components.json ├── docker-compose.yml ├── eslint.config.mjs ├── next.config.ts ├── package-lock.json ├── package.json ├── postcss.config.mjs ├── tailwind.config.ts ├── tsconfig.json └── vitest.config.ts