function loadProgress() { var container = document.getElementById('progress-container'); // ----- existing stats ----- var items = getSavedItems(); var total = items.length; var tagCounts = {}; for (var i = 0; i < items.length; i++) { var tag = items[i].tag || 'General'; tagCounts[tag] = (tagCounts[tag] || 0) + 1; } var sortedTags = Object.keys(tagCounts).map(function(k) { return [k, tagCounts[k]]; }); sortedTags.sort(function(a, b) { return b[1] - a[1]; }); var maxCount = sortedTags.length > 0 ? sortedTags[0][1] : 1; var mostTag = 'None'; if (sortedTags.length > 0) mostTag = sortedTags[0][0] + ' (' + sortedTags[0][1] + ')'; // ---- Daily Learning Streak ---- var streak = computeStreak(); var today = getToday(); var day = getDayData(today); var completed = isDayCompleted(today); // Build last 7 days var daysHtml = ''; var d = new Date(); for (var k = 6; k >= 0; k--) { var dateObj = new Date(d); dateObj.setDate(dateObj.getDate() - k); var ds = dateObj.toISOString().slice(0, 10); var isToday = ds === today; var done = isDayCompleted(ds); var label = isToday ? 'Today' : dateObj.getDate() + '/' + (dateObj.getMonth()+1); var cls = 'lc-day' + (done ? ' done' : '') + (isToday ? ' today' : ''); daysHtml += '
' + (isToday ? '๐Ÿ“Œ' : label) + '
'; } // ---- Build bars ---- var barsHtml = ''; var colors = ['var(--teal)', 'var(--gold)', 'var(--coral)', 'var(--amber)', 'var(--purple)']; var colorIndex = 0; for (var t = 0; t < sortedTags.length; t++) { var tagName = sortedTags[t][0]; var count = sortedTags[t][1]; var pct = maxCount > 0 ? Math.round((count / maxCount) * 100) : 0; var color = colors[colorIndex % colors.length]; colorIndex++; barsHtml += '
' + '
' + escapeHtml(tagName) + '
' + '
' + '
' + count + '
' + '
'; } // ---- Render all (no old streak card) ---- container.innerHTML = '' + // Stats grid '
' + '
' + total + '
Total Saved
' + '
' + sortedTags.length + '
Topics
' + '
' + // Daily Learning Checklist (with streak) '
' + '
' + '
๐Ÿ“š Daily Learning
' + '
๐Ÿ”ฅ ' + streak + ' day' + (streak !== 1 ? 's' : '') + '
' + '
' + '
' + '' + '' + '
' + '
' + '' + '' + '
' + '
' + '' + '' + '
' + '
' + (completed ? 'โœ… All done today! Keep it up!' : 'โš ๏ธ Complete all three to keep your streak!') + '
' + '
' + daysHtml + '
' + '
' + // Daily Practice (no streak here) '
' + '
๐Ÿ“… Daily Practice
' + '
Review 3 random saved answers to reinforce your learning.
' + '' + '
' + // Tag breakdown '
' + '
๐Ÿ“Š Topic Breakdown
' + (barsHtml || '
No tags yet.
') + (sortedTags.length > 0 ? '
Most saved: ' + mostTag + '
' : '') + '
'; }