From 74389a021c9d6ac9402e46885a7d0a1142360458 Mon Sep 17 00:00:00 2001 From: Shery Date: Sun, 31 Aug 2025 14:13:37 +0530 Subject: [PATCH] Added HabitLoopVisualizer project --- HabitLoopVisualizer/README.md | 41 +++ HabitLoopVisualizer/image.png | Bin 0 -> 78254 bytes HabitLoopVisualizer/index.html | 119 +++++++++ HabitLoopVisualizer/script.js | 447 +++++++++++++++++++++++++++++++++ HabitLoopVisualizer/style.css | 421 +++++++++++++++++++++++++++++++ 5 files changed, 1028 insertions(+) create mode 100644 HabitLoopVisualizer/README.md create mode 100644 HabitLoopVisualizer/image.png create mode 100644 HabitLoopVisualizer/index.html create mode 100644 HabitLoopVisualizer/script.js create mode 100644 HabitLoopVisualizer/style.css diff --git a/HabitLoopVisualizer/README.md b/HabitLoopVisualizer/README.md new file mode 100644 index 000000000..489053046 --- /dev/null +++ b/HabitLoopVisualizer/README.md @@ -0,0 +1,41 @@ +# Habit Loop Visualizer + +A simple JavaScript mini project that visualizes the **Habit Loop** cycle: +**Cue β†’ Routine β†’ Reward** + +This project demonstrates how habits are formed and maintained using an interactive visualization. + +--- + +## πŸš€ Features +- Interactive UI to show the habit loop stages +- Visual transitions between **Cue β†’ Routine β†’ Reward** +- Clean design using HTML, CSS, and JavaScript +- Easy to extend for additional customization + +--- + +## πŸ“‚ Project Structure +HabitLoopVisualizer/ +│── index.html # Main HTML file +│── style.css # Styling for the visualizer +│── script.js # JavaScript logic +│── README.md # Project documentation + + + +## πŸ› οΈ How to Run +1. Clone or download this repository. +2. Navigate to the `HabitLoopVisualizer` folder. +3. Open `index.html` in your browser. + +That’s it β€” no additional setup required! πŸŽ‰ + +--- + +## 🎯 Preview +Here’s how the Habit Loop Visualizer looks in action: +![preview](image.png) + +## 🀝 Contribution +Feel free to fork this project and enhance it β€” add animations, more loops, or a dashboard for tracking multiple habits. \ No newline at end of file diff --git a/HabitLoopVisualizer/image.png b/HabitLoopVisualizer/image.png new file mode 100644 index 0000000000000000000000000000000000000000..fb7ca8d243455c45e197481d4d7856541372a74d GIT binary patch literal 78254 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

MI5V;uj z#L50jroh_uz;^64(XyHmNyrH8?c4Nz2d&{f(!1q2oaJN~c=2<%y}v7WL|!rGorGO~ zQqx|Y80{D1@McUf#di6Kge5*nBG>1I{nG-xylX#8NGMc$%njvN>XKR**m! z^YHY0pV*rPO^#%BEP=Ck*n|o`MwIvmE5{?3x>GS;iEZ`=Hv<%o(&|&JjHtAL^E^*i=aK^ckqcCiutR-1k44UKw!`!I9doex)W~?%*^Y zAhQY(U=j2tA0td!xnlZ$mXIBMG2lT~>?rrEHPU?Mcu>>+ddY{I!Z;B-8o{3r84ibgM7 zJrv?CFJUbPOD}GWe}xfcmwjzcDRVQ|ZbI4!oOPhu^2*^jKTf}piVq78 z`kE!r)XRdCM#41JO~y&-%P&T%w*+L`^aaMAvolQu14h-Myb|tsglSUrPscRfypL*n z`nAY<)>HAm>b}0zeK45P_ngy~ zGvsmgOF#VAf>gK8PrG+>VuCxroE_aM@SHQj{$AEETHd~JHA|XHQvQgsne2?E;H|^y zb8G-Si-A5H^!xg(tdEIrNDXlrs1|+{L6OrQ^$$2xpoGeph*}L zWBbTR; z8oi10P2;k6=BXRlWdWjWX61MR^AF{-Fti+Q;x!r)?wA=r!`^yUP+vd4V*@lTx0zaD zxv$-J^zFDQ_*q(o2)nmD7NWelZwmT;U2*Ji`eu2@EZj$E8wG|eKF&%#mMnhj0OM`4 z+%_qnE}z~wVfBEv!Y(Xi7+7?)8GG&3iV%XB>>9N`m9AOD`UL-VEFib|%ilmWFv zwhl#e+32=_DtT(R^al_Ks?$5bBx`2|328=_bU-1r5Zb@CG|96|w;E0S_X`Z$u{RI+ z`5t>ZhJK>v)vDSLEB6y=C|$`bps6s5??b~chDRh@OlGh0MfZ7sj7m5Z`~bzWdbQ{W{k)ufpZOf=F2AF}V9PGcy`I_J2&@CG#f3o4~j>#lvjL zA0{|z=)LT}vq#6o+89n6c^5C-*}%qqe@7!|J-~!mwt29NnOQ&dKri1K8W%HzmlIxV>*?V+ zuMECEE9JUlfAH6et>(Zb2rj@y6~Debj1P0g1dA^pMC)|qoX zUg)gfxl_{8(h{;#fkV-n-&XJH*x zU(j~DSCxGA`gLXCjlVY=emxSqCp8Uh{1PGCdsiL97*?Vs~-5zesI2{`R=Q2S`0wo>FVdQ&MBb@0HT*Ad;kCd literal 0 HcmV?d00001 diff --git a/HabitLoopVisualizer/index.html b/HabitLoopVisualizer/index.html new file mode 100644 index 000000000..987260360 --- /dev/null +++ b/HabitLoopVisualizer/index.html @@ -0,0 +1,119 @@ + + + + + + Cue β†’ Routine β†’ Reward App + + + +
+

✨ Cue β†’ Routine β†’ Reward ✨

+ + +
+ + + +
+ + +
+ +
+ + +
+ + +
+ + + + + +
+ + +
+ + +
+ + +
+

+

πŸ”₯ Streak: 0 days

+
+
+ + +
+

Consistency Calendar

+
+ +

January 2023

+ +
+
+
+
+ + Completed +
+
+ + Partial +
+
+ + Missed +
+
+
+ + +
+

Your Habit Statistics

+ +
+
+

Most Common Cues

+
+
+ +
+

Most Completed Routines

+
+
+ +
+

Average Routine Time

+
0 min
+
+ +
+

Completion Rate

+
0%
+
+
+ +
+

Recent Activities

+
+
+
+
+ + + + \ No newline at end of file diff --git a/HabitLoopVisualizer/script.js b/HabitLoopVisualizer/script.js new file mode 100644 index 000000000..1a7d01cb4 --- /dev/null +++ b/HabitLoopVisualizer/script.js @@ -0,0 +1,447 @@ +// Routine options for each cue +const routines = { + sad: ["Go for a gym workout", "Take a walk in the park", "Do a 10-min meditation"], + stressed: ["Try deep breathing", "Write down thoughts", "Listen to relaxing music"], + excited: ["Dance to your favorite song", "Plan something creative", "Share joy with a friend"], + default: ["Take a deep breath", "Smile and stretch", "Drink water"] +}; + +// Motivational lines +const motivationLines = [ + "🌟 You're stronger than you think!", + "πŸ’ͺ Keep going, amazing things await!", + "πŸ”₯ One small step today builds a better tomorrow.", + "🌈 You're creating a better version of yourself!" +]; + +// Rewards (with emojis) +const rewards = [ + "🍫 Enjoy a sweet treat!", + "🍽️ Have a delicious meal!", + "β˜• Relax with your favorite drink!", + "🎢 Play your favorite song!", + "πŸ›‹οΈ Take a cozy rest!" +]; + +// Quotes +const quotes = [ + "Every day is a second chance.", + "Push yourself, no one else will do it for you.", + "Small progress is still progress.", + "Believe you can and you're halfway there." +]; + +// Initialize variables +let streak = 0; +let timerInterval = null; +let timerSeconds = 0; +let currentRoutine = null; +let userData = { + activities: [], + completionStats: {}, + cueStats: {}, + routineTimes: [] +}; + +// Initialize the app +document.addEventListener('DOMContentLoaded', function() { + loadUserData(); + initializeTabs(); + initializeCalendar(); + updateStats(); + + // Handle cue input + document.getElementById("cueBtn").addEventListener("click", handleCueInput); + + // Timer controls + document.getElementById("startTimer").addEventListener("click", startTimer); + document.getElementById("pauseTimer").addEventListener("click", pauseTimer); + document.getElementById("resetTimer").addEventListener("click", resetTimer); + document.getElementById("completeRoutine").addEventListener("click", completeRoutine); + + // Calendar navigation + document.getElementById("prevMonth").addEventListener("click", showPreviousMonth); + document.getElementById("nextMonth").addEventListener("click", showNextMonth); +}); + +// Tab functionality +function initializeTabs() { + const tabBtns = document.querySelectorAll('.tab-btn'); + const tabContents = document.querySelectorAll('.tab-content'); + + tabBtns.forEach(btn => { + btn.addEventListener('click', () => { + // Remove active class from all buttons and contents + tabBtns.forEach(b => b.classList.remove('active')); + tabContents.forEach(c => c.classList.remove('active')); + + // Add active class to clicked button and corresponding content + btn.classList.add('active'); + const tabId = btn.getAttribute('data-tab'); + document.getElementById(`${tabId}-tab`).classList.add('active'); + + // Update stats and calendar when switching to those tabs + if (tabId === 'stats') updateStats(); + if (tabId === 'calendar') renderCalendar(currentMonth, currentYear); + }); + }); +} + +// Handle cue input +function handleCueInput() { + const cue = document.getElementById("cueInput").value.toLowerCase(); + const routineSection = document.getElementById("routineSection"); + routineSection.innerHTML = ""; + + const availableRoutines = routines[cue] || routines.default; + + availableRoutines.forEach(routine => { + const btn = document.createElement("button"); + btn.textContent = routine; + btn.classList.add("routine-option"); + btn.addEventListener("click", () => selectRoutine(routine, cue)); + routineSection.appendChild(btn); + }); + + document.getElementById("motivation").textContent = ""; + document.getElementById("reward").style.display = "none"; + document.getElementById("checklist").innerHTML = ""; + document.getElementById("timerSection").style.display = "none"; +} + +// When user selects a routine +function selectRoutine(routine, cue) { + currentRoutine = routine; + const routineSection = document.getElementById("routineSection"); + routineSection.innerHTML = `

${routine}

`; + + // Show timer section + document.getElementById("timerSection").style.display = "block"; + resetTimer(); + + // Motivation + const motivation = motivationLines[Math.floor(Math.random() * motivationLines.length)]; + document.getElementById("motivation").textContent = motivation; + + // Checklist + document.getElementById("checklist").innerHTML = ` +

βœ… To-Do Checklist

+
+
+
+ `; + + // Track cue usage + if (userData.cueStats[cue]) { + userData.cueStats[cue]++; + } else { + userData.cueStats[cue] = 1; + } + + saveUserData(); +} + +// Timer functions +function startTimer() { + if (timerInterval) return; + + document.getElementById("startTimer").disabled = true; + document.getElementById("pauseTimer").disabled = false; + document.getElementById("resetTimer").disabled = false; + + timerInterval = setInterval(() => { + timerSeconds++; + updateTimerDisplay(); + }, 1000); +} + +function pauseTimer() { + clearInterval(timerInterval); + timerInterval = null; + + document.getElementById("startTimer").disabled = false; + document.getElementById("pauseTimer").disabled = true; +} + +function resetTimer() { + pauseTimer(); + timerSeconds = 0; + updateTimerDisplay(); + + document.getElementById("startTimer").disabled = false; + document.getElementById("pauseTimer").disabled = true; + document.getElementById("resetTimer").disabled = true; +} + +function updateTimerDisplay() { + const minutes = Math.floor(timerSeconds / 60); + const seconds = timerSeconds % 60; + document.getElementById("timerDisplay").textContent = + `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`; +} + +function completeRoutine() { + pauseTimer(); + + // Record activity + const activity = { + routine: currentRoutine, + date: new Date(), + duration: timerSeconds + }; + + userData.activities.push(activity); + + // Track routine completion + if (userData.completionStats[currentRoutine]) { + userData.completionStats[currentRoutine]++; + } else { + userData.completionStats[currentRoutine] = 1; + } + + // Track routine time + userData.routineTimes.push(timerSeconds); + + // Update streak + updateStreak(); + + // Reward with emojis + animation + const reward = rewards[Math.floor(Math.random() * rewards.length)]; + const rewardDiv = document.getElementById("reward"); + rewardDiv.textContent = reward; + rewardDiv.style.display = "block"; + + // Update quote + document.getElementById("quote").textContent = quotes[Math.floor(Math.random() * quotes.length)]; + + saveUserData(); +} + +function updateStreak() { + // Simple streak implementation - in a real app, you'd check consecutive days + streak++; + document.getElementById("streak").textContent = streak; +} + +// Calendar functionality +let currentDate = new Date(); +let currentMonth = currentDate.getMonth(); +let currentYear = currentDate.getFullYear(); + +function initializeCalendar() { + renderCalendar(currentMonth, currentYear); +} + +function renderCalendar(month, year) { + const calendarEl = document.getElementById("calendar"); + const monthNames = ["January", "February", "March", "April", "May", "June", + "July", "August", "September", "October", "November", "December"]; + + document.getElementById("currentMonth").textContent = `${monthNames[month]} ${year}`; + + // Clear previous calendar + calendarEl.innerHTML = ''; + + // Create day headers + const dayHeaders = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; + dayHeaders.forEach(day => { + const dayEl = document.createElement("div"); + dayEl.textContent = day; + dayEl.style.fontWeight = "bold"; + dayEl.style.textAlign = "center"; + calendarEl.appendChild(dayEl); + }); + + // Get first day of month and number of days + const firstDay = new Date(year, month, 1).getDay(); + const daysInMonth = new Date(year, month + 1, 0).getDate(); + + // Add empty days before first day of month + for (let i = 0; i < firstDay; i++) { + const emptyDay = document.createElement("div"); + emptyDay.classList.add("calendar-day", "empty"); + calendarEl.appendChild(emptyDay); + } + + // Add days of the month + for (let day = 1; day <= daysInMonth; day++) { + const dayEl = document.createElement("div"); + dayEl.classList.add("calendar-day"); + dayEl.textContent = day; + + // Check if this day has any activities (simplified for demo) + const hasActivity = Math.random() > 0.7; // Random for demo + if (hasActivity) { + const completion = Math.random(); // Random for demo + if (completion > 0.7) { + dayEl.classList.add("completed"); + } else if (completion > 0.4) { + dayEl.classList.add("partial"); + } else { + dayEl.classList.add("missed"); + } + } + + calendarEl.appendChild(dayEl); + } +} + +function showPreviousMonth() { + currentMonth--; + if (currentMonth < 0) { + currentMonth = 11; + currentYear--; + } + renderCalendar(currentMonth, currentYear); +} + +function showNextMonth() { + currentMonth++; + if (currentMonth > 11) { + currentMonth = 0; + currentYear++; + } + renderCalendar(currentMonth, currentYear); +} + +// Statistics functionality +function updateStats() { + updateCuesChart(); + updateRoutinesChart(); + updateAverageTime(); + updateCompletionRate(); + updateRecentActivities(); +} + +function updateCuesChart() { + const chartContainer = document.getElementById("cuesChart"); + chartContainer.innerHTML = ''; + + // Get top cues + const topCues = Object.entries(userData.cueStats) + .sort((a, b) => b[1] - a[1]) + .slice(0, 5); + + if (topCues.length === 0) { + chartContainer.innerHTML = '

No data yet

'; + return; + } + + const maxValue = Math.max(...topCues.map(item => item[1])); + + topCues.forEach(([cue, count]) => { + const barHeight = (count / maxValue) * 100; + const bar = document.createElement("div"); + bar.classList.add("bar"); + bar.style.height = `${barHeight}%`; + bar.title = `${cue}: ${count} times`; + + const label = document.createElement("div"); + label.classList.add("bar-label"); + label.textContent = cue.substring(0, 3); + + chartContainer.appendChild(bar); + chartContainer.appendChild(label); + }); +} + +function updateRoutinesChart() { + const chartContainer = document.getElementById("routinesChart"); + chartContainer.innerHTML = ''; + + // Get top routines + const topRoutines = Object.entries(userData.completionStats) + .sort((a, b) => b[1] - a[1]) + .slice(0, 5); + + if (topRoutines.length === 0) { + chartContainer.innerHTML = '

No data yet

'; + return; + } + + const maxValue = Math.max(...topRoutines.map(item => item[1])); + + topRoutines.forEach(([routine, count]) => { + const barHeight = (count / maxValue) * 100; + const bar = document.createElement("div"); + bar.classList.add("bar"); + bar.style.height = `${barHeight}%`; + bar.title = `${routine}: ${count} times`; + + const label = document.createElement("div"); + label.classList.add("bar-label"); + label.textContent = routine.split(' ')[0].substring(0, 3); + + chartContainer.appendChild(bar); + chartContainer.appendChild(label); + }); +} + +function updateAverageTime() { + if (userData.routineTimes.length === 0) { + document.getElementById("avgTime").textContent = "0 min"; + return; + } + + const totalSeconds = userData.routineTimes.reduce((sum, time) => sum + time, 0); + const avgSeconds = totalSeconds / userData.routineTimes.length; + const avgMinutes = Math.round(avgSeconds / 60); + + document.getElementById("avgTime").textContent = `${avgMinutes} min`; +} + +function updateCompletionRate() { + // Simplified calculation for demo + const totalActivities = userData.activities.length; + const completed = userData.activities.filter(a => a.duration > 60).length; + const rate = totalActivities > 0 ? Math.round((completed / totalActivities) * 100) : 0; + + document.getElementById("completionRate").textContent = `${rate}%`; +} + +function updateRecentActivities() { + const activitiesList = document.getElementById("recentActivities"); + activitiesList.innerHTML = ''; + + const recentActivities = userData.activities.slice(-5).reverse(); + + if (recentActivities.length === 0) { + activitiesList.innerHTML = '

No recent activities

'; + return; + } + + recentActivities.forEach(activity => { + const activityItem = document.createElement("div"); + activityItem.classList.add("activity-item"); + + const minutes = Math.floor(activity.duration / 60); + const seconds = activity.duration % 60; + + activityItem.innerHTML = ` + ${activity.routine} + ${minutes}m ${seconds}s + `; + + activitiesList.appendChild(activityItem); + }); +} + +// Data persistence +function saveUserData() { + localStorage.setItem('habitLoopUserData', JSON.stringify(userData)); + localStorage.setItem('habitLoopStreak', streak.toString()); +} + +function loadUserData() { + const savedData = localStorage.getItem('habitLoopUserData'); + const savedStreak = localStorage.getItem('habitLoopStreak'); + + if (savedData) { + userData = JSON.parse(savedData); + } + + if (savedStreak) { + streak = parseInt(savedStreak); + document.getElementById("streak").textContent = streak; + } +} \ No newline at end of file diff --git a/HabitLoopVisualizer/style.css b/HabitLoopVisualizer/style.css new file mode 100644 index 000000000..d94446a6a --- /dev/null +++ b/HabitLoopVisualizer/style.css @@ -0,0 +1,421 @@ +:root { + --bg-primary: #121212; + --bg-secondary: #1e1e1e; + --accent: #bb86fc; + --accent-secondary: #03dac6; + --text-primary: #e0e0e0; + --text-secondary: #a0a0a0; + --card-shadow: 0 4px 20px rgba(0, 0, 0, 0.5); + --completed: #4caf50; + --partial: #ff9800; + --missed: #f44336; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + transition: all 0.3s ease; +} + +body { + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + background: var(--bg-primary); + color: var(--text-primary); + min-height: 100vh; + display: flex; + justify-content: center; + align-items: center; + padding: 20px; +} + +.app-container { + max-width: 600px; + width: 100%; + background: var(--bg-secondary); + border-radius: 15px; + padding: 25px; + box-shadow: var(--card-shadow); + border: 1px solid #333; +} + +h1 { + text-align: center; + margin-bottom: 25px; + color: var(--accent); + font-size: 1.8rem; + text-shadow: 0 0 10px rgba(187, 134, 252, 0.3); +} + +/* Tabs */ +.tabs { + display: flex; + margin-bottom: 20px; + border-bottom: 1px solid #333; +} + +.tab-btn { + padding: 10px 20px; + background: none; + border: none; + color: var(--text-secondary); + cursor: pointer; + font-weight: bold; +} + +.tab-btn.active { + color: var(--accent); + border-bottom: 2px solid var(--accent); +} + +.tab-content { + display: none; +} + +.tab-content.active { + display: block; +} + +/* Cue Section */ +.cue-section { + display: flex; + margin-bottom: 20px; +} + +#cueInput { + flex: 1; + padding: 12px 15px; + border-radius: 8px 0 0 8px; + border: 1px solid #333; + background: #2a2a2a; + color: var(--text-primary); + outline: none; +} + +#cueInput:focus { + border-color: var(--accent); + box-shadow: 0 0 0 2px rgba(187, 134, 252, 0.2); +} + +#cueBtn { + padding: 12px 20px; + border-radius: 0 8px 8px 0; + border: none; + background: var(--accent); + color: #000; + font-weight: bold; + cursor: pointer; + outline: none; +} + +#cueBtn:hover { + background: #c5a2ff; +} + +/* Routine Section */ +.routine-section { + margin-bottom: 20px; + min-height: 60px; +} + +.routine-option { + display: block; + width: 100%; + padding: 12px; + margin: 8px 0; + background: #2a2a2a; + color: var(--text-primary); + border: 1px solid #333; + border-radius: 8px; + cursor: pointer; + text-align: left; +} + +.routine-option:hover { + background: #333; + border-color: var(--accent-secondary); + transform: translateX(5px); +} + +/* Timer Section */ +.timer-section { + background: #2a2a2a; + padding: 15px; + border-radius: 8px; + margin-bottom: 20px; + border: 1px solid #333; + text-align: center; +} + +.timer-display { + font-size: 2.5rem; + font-weight: bold; + margin: 15px 0; + color: var(--accent); +} + +.timer-controls { + display: flex; + justify-content: center; + gap: 10px; +} + +.timer-controls button { + padding: 8px 15px; + border: none; + border-radius: 5px; + background: #333; + color: var(--text-primary); + cursor: pointer; +} + +.timer-controls button:hover:not(:disabled) { + background: var(--accent); + color: #000; +} + +.timer-controls button:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +/* Motivation */ +.motivation { + padding: 15px; + background: linear-gradient(45deg, #2a2a2a, #1e1e1e); + border-left: 4px solid var(--accent); + border-radius: 8px; + margin-bottom: 20px; + font-style: italic; + color: var(--accent-secondary); +} + +/* Reward */ +.reward { + font-size: 1.4rem; + text-align: center; + padding: 20px; + background: #2a2a2a; + border-radius: 8px; + margin-bottom: 20px; + display: none; + animation: pop 0.6s ease; + color: var(--accent); + border: 1px solid #333; +} + +@keyframes pop { + 0% { transform: scale(0.5); opacity: 0; } + 100% { transform: scale(1); opacity: 1; } +} + +/* Checklist */ +.checklist { + background: #2a2a2a; + padding: 15px; + border-radius: 8px; + margin-bottom: 20px; + border: 1px solid #333; +} + +.checklist h4 { + margin-bottom: 10px; + color: var(--accent-secondary); +} + +.checklist label { + display: block; + padding: 8px 0; + cursor: pointer; +} + +.checklist input[type="checkbox"] { + margin-right: 10px; + accent-color: var(--accent); +} + +/* Extras */ +.extras { + text-align: center; + padding: 15px; + background: #2a2a2a; + border-radius: 8px; + border: 1px solid #333; +} + +#quote { + font-style: italic; + margin-bottom: 15px; + color: var(--text-secondary); +} + +#streak { + color: var(--accent); + font-weight: bold; +} + +/* Calendar */ +.calendar-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 15px; +} + +.calendar-header button { + background: var(--accent); + color: #000; + border: none; + border-radius: 5px; + padding: 5px 10px; + cursor: pointer; +} + +.calendar { + display: grid; + grid-template-columns: repeat(7, 1fr); + gap: 5px; + margin-bottom: 20px; +} + +.calendar-day { + aspect-ratio: 1; + display: flex; + align-items: center; + justify-content: center; + border-radius: 5px; + background: #2a2a2a; + font-size: 0.9rem; +} + +.calendar-day.empty { + background: transparent; +} + +.calendar-day.completed { + background: var(--completed); + color: #000; +} + +.calendar-day.partial { + background: var(--partial); + color: #000; +} + +.calendar-day.missed { + background: var(--missed); + color: #000; +} + +.calendar-legend { + display: flex; + justify-content: center; + gap: 15px; +} + +.legend-item { + display: flex; + align-items: center; + gap: 5px; +} + +.legend-color { + width: 15px; + height: 15px; + border-radius: 3px; +} + +.legend-color.completed { + background: var(--completed); +} + +.legend-color.partial { + background: var(--partial); +} + +.legend-color.missed { + background: var(--missed); +} + +/* Statistics */ +.stats-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 15px; + margin-bottom: 20px; +} + +.stat-card { + background: #2a2a2a; + padding: 15px; + border-radius: 8px; + border: 1px solid #333; +} + +.stat-card h3 { + margin-bottom: 10px; + color: var(--accent-secondary); +} + +.chart-container { + height: 150px; + display: flex; + align-items: flex-end; + gap: 5px; + padding: 10px 0; +} + +.bar { + background: var(--accent); + border-radius: 3px 3px 0 0; + position: relative; + flex: 1; + min-width: 20px; +} + +.bar-label { + position: absolute; + bottom: -20px; + left: 0; + right: 0; + text-align: center; + font-size: 0.7rem; + color: var(--text-secondary); +} + +.big-number { + font-size: 2.5rem; + text-align: center; + color: var(--accent); + font-weight: bold; +} + +.activities-list { + background: #2a2a2a; + border-radius: 8px; + border: 1px solid #333; + padding: 10px; + max-height: 200px; + overflow-y: auto; +} + +.activity-item { + padding: 8px; + border-bottom: 1px solid #333; + display: flex; + justify-content: space-between; +} + +.activity-item:last-child { + border-bottom: none; +} + +.activity-routine { + font-weight: bold; + color: var(--accent); +} + +.activity-time { + color: var(--text-secondary); + font-size: 0.9rem; +} \ No newline at end of file