diff --git a/assets/css/custom.css b/assets/css/custom.css
new file mode 100644
index 0000000..39ddf1e
--- /dev/null
+++ b/assets/css/custom.css
@@ -0,0 +1,376 @@
+
+/* --- Base & Typography --- */
+:root {
+ --font-family: 'Nunito', sans-serif;
+ --panel-bg: rgba(255, 255, 255, 0.7);
+ --text-color: #333;
+ --primary-color: #86A8E7;
+ --accent-color: #7FDEB5;
+ --border-radius-lg: 12px;
+ --border-radius-sm: 8px;
+ --shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
+}
+
+body {
+ font-family: var(--font-family);
+ margin: 0;
+ padding: 2rem;
+ box-sizing: border-box;
+ background: #a7d8f0; /* Fallback color */
+ color: var(--text-color);
+ transition: background 0.5s ease;
+}
+
+h1, h2 {
+ font-weight: 700;
+ margin-top: 0;
+}
+
+h1 {
+ font-size: 2rem;
+}
+
+h2 {
+ font-size: 1.5rem;
+ margin-bottom: 1rem;
+ border-bottom: 1px solid rgba(0,0,0,0.1);
+ padding-bottom: 0.5rem;
+}
+
+/* --- Layout --- */
+.app-container {
+ display: flex;
+ gap: 2rem;
+ height: calc(100vh - 4rem);
+}
+
+.panel {
+ padding: 2rem;
+ border-radius: var(--border-radius-lg);
+ box-shadow: var(--shadow);
+ background-color: var(--panel-bg);
+ backdrop-filter: blur(10px);
+ -webkit-backdrop-filter: blur(10px);
+ transition: background-color 0.5s ease;
+ z-index: 10;
+}
+
+.task-panel {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+}
+
+.garden-panel {
+ flex: 2;
+ display: flex;
+ flex-direction: column;
+}
+
+header {
+ margin-bottom: 1.5rem;
+}
+
+/* --- Task Manager --- */
+#task-form {
+ display: flex;
+ margin-bottom: 1.5rem;
+}
+
+#task-input {
+ flex-grow: 1;
+ padding: 0.75rem;
+ border: 1px solid #ccc;
+ border-radius: var(--border-radius-sm);
+ font-size: 1rem;
+}
+
+#task-form button {
+ padding: 0.75rem 1.5rem;
+ border: none;
+ background-color: var(--primary-color);
+ color: white;
+ border-radius: var(--border-radius-sm);
+ cursor: pointer;
+ margin-left: 0.5rem;
+ transition: background-color 0.3s;
+}
+
+#task-form button:hover {
+ background-color: #6c94d8;
+}
+
+#task-list {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ overflow-y: auto;
+ flex-grow: 1;
+}
+
+#task-list li {
+ display: flex;
+ align-items: center;
+ padding: 0.75rem;
+ margin-bottom: 0.5rem;
+ background: rgba(255, 255, 255, 0.5);
+ border-radius: var(--border-radius-sm);
+ transition: all 0.3s;
+}
+
+#task-list li.completed {
+ text-decoration: line-through;
+ opacity: 0.6;
+}
+
+#task-list li input[type="checkbox"] {
+ margin-right: 0.75rem;
+ width: 18px;
+ height: 18px;
+}
+
+#task-list li .delete-btn {
+ margin-left: auto;
+ background: none;
+ border: none;
+ color: #ff6b6b;
+ cursor: pointer;
+ font-size: 1.2rem;
+ opacity: 0.5;
+ transition: opacity 0.3s;
+}
+
+#task-list li:hover .delete-btn {
+ opacity: 1;
+}
+
+
+/* --- Garden --- */
+.garden-panel header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+#garden {
+ flex-grow: 1;
+ position: relative;
+ border-radius: var(--border-radius-sm);
+ overflow: hidden;
+ background: transparent;
+}
+
+/* --- Background Scene --- */
+.sky {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 60%;
+ background: linear-gradient(to bottom, #a7d8f0, #cce7f5);
+ z-index: 1;
+}
+
+.cloud {
+ position: absolute;
+ background: white;
+ border-radius: 50px;
+ opacity: 0.9;
+}
+.cloud-1 {
+ top: 15%;
+ left: 10%;
+ width: 120px;
+ height: 40px;
+}
+.cloud-2 {
+ top: 25%;
+ right: 15%;
+ width: 150px;
+ height: 50px;
+}
+.cloud::before, .cloud::after {
+ content: '';
+ position: absolute;
+ background: white;
+ border-radius: 50%;
+}
+.cloud-1::before { top: -20px; left: 20px; width: 50px; height: 50px; }
+.cloud-1::after { top: -10px; right: 30px; width: 40px; height: 40px; }
+.cloud-2::before { top: -30px; left: 30px; width: 70px; height: 70px; }
+.cloud-2::after { top: -20px; right: 20px; width: 60px; height: 60px; }
+
+
+.hills {
+ position: absolute;
+ bottom: 10%;
+ left: 0;
+ width: 100%;
+ height: 40%;
+ z-index: 2;
+}
+.hill {
+ position: absolute;
+ bottom: 0;
+ border-radius: 50% 50% 0 0;
+}
+.hill-1 {
+ left: -20%;
+ width: 80%;
+ height: 80%;
+ background: #c5dcb7;
+}
+.hill-2 {
+ right: -15%;
+ width: 70%;
+ height: 60%;
+ background: #b3d0a7;
+}
+
+.ground {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 15%;
+ background: #9fcc93;
+ z-index: 3;
+}
+
+
+.garden-controls {
+ margin-top: 1rem;
+ text-align: center;
+}
+
+.garden-controls button, .theme-btn {
+ padding: 0.5rem 1rem;
+ border-radius: var(--border-radius-sm);
+ border: 1px solid var(--primary-color);
+ background-color: transparent;
+ color: var(--primary-color);
+ cursor: pointer;
+ margin: 0 0.25rem;
+ transition: all 0.3s;
+}
+
+.garden-controls button:hover, .theme-btn:hover, .theme-btn.active {
+ background-color: var(--primary-color);
+ color: white;
+}
+
+/* --- New Flower Styles --- */
+.garden-element {
+ position: absolute;
+ bottom: 5%;
+ transform-origin: bottom center;
+ z-index: 4;
+ transition: transform 0.5s ease-out;
+}
+
+.garden-element.grow {
+ animation: grow-animation 1.5s cubic-bezier(0.68, -0.55, 0.27, 1.55);
+}
+
+.garden-element.shrink {
+ transform: scale(0);
+}
+
+@keyframes grow-animation {
+ from { transform: scale(0); }
+ to { transform: scale(1); }
+}
+
+.flower-daisy {
+ width: 80px;
+ height: 120px;
+ position: relative;
+}
+
+.flower-daisy .stem {
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 6px;
+ height: 80px;
+ background: #4a7c4a;
+ border-radius: 3px;
+}
+
+.flower-daisy .leaf {
+ position: absolute;
+ bottom: 20px;
+ width: 30px;
+ height: 25px;
+ background: #6a9a6a;
+ border-radius: 50% 0;
+}
+
+.flower-daisy .leaf.left {
+ left: 0;
+ transform: rotate(20deg);
+}
+
+.flower-daisy .leaf.right {
+ right: 0;
+ transform: rotate(-20deg) scaleX(-1);
+}
+
+.flower-head {
+ position: absolute;
+ top: 0;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 60px;
+ height: 60px;
+}
+
+.flower-center {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ width: 20px;
+ height: 20px;
+ background: #ffdd57;
+ border-radius: 50%;
+ z-index: 2;
+}
+
+.petal {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+}
+
+.petal div {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ margin-top: -10px;
+ margin-left: -5px;
+ width: 10px;
+ height: 20px;
+ border-radius: 5px;
+ transform-origin: 50% 100%;
+}
+
+/* Petal Colors */
+.petal-pink div { background-color: #ffaccb; }
+.petal-yellow div { background-color: #fff38a; }
+.petal-purple div { background-color: #d9abff; }
+.petal-white div { background-color: #ffffff; }
+
+
+.petal .p1 { transform: rotate(0deg) translateY(-15px); }
+.petal .p2 { transform: rotate(45deg) translateY(-15px); }
+.petal .p3 { transform: rotate(90deg) translateY(-15px); }
+.petal .p4 { transform: rotate(135deg) translateY(-15px); }
+.petal .p5 { transform: rotate(180deg) translateY(-15px); }
+.petal .p6 { transform: rotate(225deg) translateY(-15px); }
+.petal .p7 { transform: rotate(270deg) translateY(-15px); }
+.petal .p8 { transform: rotate(315deg) translateY(-15px); }
diff --git a/assets/js/main.js b/assets/js/main.js
new file mode 100644
index 0000000..2613a2a
--- /dev/null
+++ b/assets/js/main.js
@@ -0,0 +1,199 @@
+document.addEventListener('DOMContentLoaded', () => {
+ // DOM Elements
+ const taskForm = document.getElementById('task-form');
+ const taskInput = document.getElementById('task-input');
+ const taskList = document.getElementById('task-list');
+ const garden = document.getElementById('garden');
+ const soundToggle = document.getElementById('sound-toggle');
+ const ambientSound = document.getElementById('ambient-sound');
+ const shareBtn = document.getElementById('share-btn');
+
+ // App State
+ let tasks = JSON.parse(localStorage.getItem('tasks')) || [];
+ let gardenElements = JSON.parse(localStorage.getItem('gardenElements')) || [];
+ const flowerColors = ['pink', 'yellow', 'purple', 'white'];
+
+ // --- Initialization ---
+ function init() {
+ tasks.forEach(renderTask);
+ gardenElements.forEach(renderGardenElement);
+ }
+
+ // --- State Management ---
+ function saveState() {
+ localStorage.setItem('tasks', JSON.stringify(tasks));
+ localStorage.setItem('gardenElements', JSON.stringify(gardenElements));
+ }
+
+ // --- Task Management ---
+ taskForm.addEventListener('submit', e => {
+ e.preventDefault();
+ const title = taskInput.value.trim();
+ if (title) {
+ const newTask = { id: Date.now(), title, completed: false };
+ tasks.push(newTask);
+ renderTask(newTask);
+ saveState();
+ taskInput.value = '';
+ }
+ });
+
+ function renderTask(task) {
+ const li = document.createElement('li');
+ li.dataset.id = task.id;
+ if (task.completed) {
+ li.classList.add('completed');
+ }
+ li.innerHTML = `
+
+ ${escapeHTML(task.title)}
+
+ `;
+ taskList.appendChild(li);
+
+ li.querySelector('input[type="checkbox"]').addEventListener('change', (e) => {
+ toggleTaskCompletion(task.id, e.target.checked);
+ });
+ li.querySelector('.delete-btn').addEventListener('click', () => {
+ deleteTask(task.id);
+ });
+ }
+
+ function toggleTaskCompletion(id, isCompleted) {
+ const taskIndex = tasks.findIndex(t => t.id === id);
+ if (taskIndex > -1) {
+ tasks[taskIndex].completed = isCompleted;
+ const taskElement = taskList.querySelector(`[data-id='${id}']`);
+ if (taskElement) {
+ taskElement.classList.toggle('completed', isCompleted);
+ }
+
+ if (isCompleted) {
+ addGardenElement(id);
+ } else {
+ removeGardenElement(id);
+ }
+ saveState();
+ }
+ }
+
+ function deleteTask(id) {
+ tasks = tasks.filter(t => t.id !== id);
+ const taskElement = taskList.querySelector(`[data-id='${id}']`);
+ if (taskElement) {
+ taskElement.remove();
+ }
+ removeGardenElement(id);
+ saveState();
+ }
+
+ // --- Garden Management ---
+ function addGardenElement(taskId) {
+ if (gardenElements.some(el => el.taskId === taskId)) return;
+
+ const newElement = {
+ id: Date.now(),
+ taskId: taskId,
+ x: Math.random() * 80 + 10, // 10% to 90% to avoid edges
+ color: flowerColors[Math.floor(Math.random() * flowerColors.length)]
+ };
+ gardenElements.push(newElement);
+ renderGardenElement(newElement);
+ saveState();
+ }
+
+ function renderGardenElement(element) {
+ const el = document.createElement('div');
+ el.dataset.id = element.id;
+ el.classList.add('garden-element', 'grow');
+ el.style.left = `${element.x}%`;
+
+ el.innerHTML = `
+
+ `;
+
+ // Find the ground element to append to
+ const ground = garden.querySelector('.ground');
+ if (ground) {
+ ground.appendChild(el);
+ } else {
+ garden.appendChild(el); // Fallback
+ }
+ }
+
+ function removeGardenElement(taskId) {
+ const elementToRemoveIdx = gardenElements.findIndex(el => el.taskId === taskId);
+ if (elementToRemoveIdx > -1) {
+ const elementToRemove = gardenElements[elementToRemoveIdx];
+ const el = garden.querySelector(`[data-id='${elementToRemove.id}']`);
+ if (el) {
+ el.classList.remove('grow');
+ el.classList.add('shrink');
+ setTimeout(() => {
+ el.remove();
+ }, 500);
+ }
+ gardenElements.splice(elementToRemoveIdx, 1);
+ saveState();
+ }
+ }
+
+ // --- Controls ---
+ soundToggle.addEventListener('click', () => {
+ if (ambientSound.paused) {
+ ambientSound.play().catch(e => console.error("Audio play failed: ", e));
+ soundToggle.textContent = 'Pause Sound';
+ } else {
+ ambientSound.pause();
+ soundToggle.textContent = 'Play Sound';
+ }
+ });
+
+ shareBtn.addEventListener('click', () => {
+ const gardenPanel = document.querySelector('.garden-panel');
+ const controls = gardenPanel.querySelector('.garden-controls');
+
+ controls.style.visibility = 'hidden';
+
+ html2canvas(gardenPanel, {
+ useCORS: true,
+ backgroundColor: '#a7d8f0' // Match sky color
+ }).then(canvas => {
+ const link = document.createElement('a');
+ link.download = 'my-mindful-garden.png';
+ link.href = canvas.toDataURL();
+ link.click();
+ controls.style.visibility = 'visible';
+ }).catch(err => {
+ console.error('Could not share garden:', err);
+ controls.style.visibility = 'visible';
+ });
+ });
+
+ // --- Utility ---
+ function escapeHTML(str) {
+ return str.replace(/[&<>"']/g, s => ({
+ '&': '&', '<': '<', '>': '>', '"': '"', "'" : '''
+ }[s]));
+ }
+
+ // --- Run App ---
+ init();
+});
\ No newline at end of file
diff --git a/assets/pasted-20250917-211717-027d3df4.png b/assets/pasted-20250917-211717-027d3df4.png
new file mode 100644
index 0000000..d9dc948
Binary files /dev/null and b/assets/pasted-20250917-211717-027d3df4.png differ
diff --git a/assets/pasted-20250917-212634-e7e164ad.png b/assets/pasted-20250917-212634-e7e164ad.png
new file mode 100644
index 0000000..dd727b9
Binary files /dev/null and b/assets/pasted-20250917-212634-e7e164ad.png differ
diff --git a/db/config.php b/db/config.php
deleted file mode 100644
index 03e0e2f..0000000
--- a/db/config.php
+++ /dev/null
@@ -1,17 +0,0 @@
- PDO::ERRMODE_EXCEPTION,
- PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
- ]);
- }
- return $pdo;
-}
diff --git a/index.php b/index.php
index e13ae95..a57cf84 100644
--- a/index.php
+++ b/index.php
@@ -1,131 +1,70 @@
-
-
+
-
-
- New Style
-
-
-
-
+
+
+ Mindful Garden
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
Analyzing your requirements and generating your website…
-
- Loading…
-
-
Flatlogic AI is collecting your requirements and applying the first changes.
-
This page will update automatically as the plan is implemented.
-
Runtime: PHP = htmlspecialchars($phpVersion) ?> — UTC = htmlspecialchars($now) ?>
+
+
+
+
+
+
+ Mindful Garden
+ Tasks
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
-
+
\ No newline at end of file