diff --git a/index.html b/index.html
index 07fbd09..538bd5b 100644
--- a/index.html
+++ b/index.html
@@ -106,96 +106,108 @@
-
+ }
+
+ document.getElementById('calculate-btn').addEventListener('click', () => {
+ if (xpThresholds.length === 0) {
+ alert('Level data not loaded yet. Please wait a moment and try again.');
+ return;
+ }
+
+ let xp = document.getElementById('xp-input').value.replace(/,/g, '').trim();
+ if (!xp || isNaN(xp)) {
+ alert('Please enter a valid number for XP.');
+ return;
+ }
+
+ currentXp = parseInt(xp, 10);
+ currentLevel = calculateLevel(currentXp);
+
+ let nextLevelXp = (currentLevel < xpThresholds.length) ? xpThresholds[currentLevel] : currentXp;
+ let currentLevelXp = xpThresholds[currentLevel - 1];
+ let progress = (currentXp - currentLevelXp) / (nextLevelXp - currentLevelXp) * 100;
+
+ document.getElementById('progress-bar').style.width = progress + '%';
+ document.getElementById('level-text').textContent = `Level ${currentLevel}`;
+ document.getElementById('level-left').textContent = currentLevel;
+ document.getElementById('level-right').textContent = (currentLevel < xpThresholds.length) ? currentLevel + 1 : currentLevel;
+
+ document.getElementById('result').classList.remove('hidden');
+ updateExtraInfo();
+ });
+
+ document.getElementById('xp-input').addEventListener('input', (e) => {
+ e.target.value = e.target.value.replace(/[^0-9,]/g, '');
+ });
+
+ const themeToggle = document.getElementById('theme-toggle');
+ themeToggle.addEventListener('click', () => {
+ document.body.classList.toggle('dark-mode');
+ themeToggle.textContent = document.body.classList.contains('dark-mode') ? '🌙' : '☀️';
+ });
+
+ window.addEventListener('DOMContentLoaded', loadXPThresholds);
+