diff --git a/assets/css/custom.css b/assets/css/custom.css
new file mode 100644
index 0000000..95c1c87
--- /dev/null
+++ b/assets/css/custom.css
@@ -0,0 +1,113 @@
+/* TeamSync Custom Styles */
+
+:root {
+ --primary-color: #4F46E5;
+ --secondary-color: #10B981;
+ --background-color: #F3F4F6;
+ --surface-color: #FFFFFF;
+ --text-color: #111827;
+ --muted-text-color: #6B7280;
+ --warning-color: #F59E0B;
+ --danger-color: #EF4444;
+ --ooo-color: #3B82F6;
+ --border-radius: 0.5rem;
+}
+
+body {
+ font-family: 'Inter', sans-serif;
+ background-color: var(--background-color);
+ color: var(--text-color);
+}
+
+.app-header {
+ background: linear-gradient(90deg, rgba(79, 70, 229, 0.95) 0%, rgba(79, 70, 229, 1) 100%);
+ padding: 1rem 0;
+ color: white;
+}
+
+.logo {
+ font-weight: 700;
+ font-size: 1.5rem;
+}
+
+.avatar {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ border: 2px solid rgba(255, 255, 255, 0.8);
+}
+
+.team-name {
+ font-weight: 700;
+}
+
+.record-btn {
+ background-color: var(--primary-color);
+ border-color: var(--primary-color);
+ font-weight: 500;
+ display: inline-flex;
+ align-items: center;
+ gap: 0.5rem;
+}
+
+.record-btn svg {
+ width: 20px;
+ height: 20px;
+}
+
+.status-board-card {
+ border: none;
+ border-radius: var(--border-radius);
+ box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
+}
+
+.status-board-card .card-header {
+ background-color: var(--surface-color);
+ border-bottom: 1px solid #E5E7EB;
+ font-weight: 500;
+ border-top-left-radius: var(--border-radius);
+ border-top-right-radius: var(--border-radius);
+}
+
+.list-group-item {
+ padding: 1rem 1.5rem;
+}
+
+.list-group-item:hover {
+ background-color: #F9FAFB;
+}
+
+.member-name {
+ font-weight: 500;
+}
+
+.status-icon {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: 24px;
+ height: 24px;
+ border-radius: 50%;
+}
+
+.status-icon svg {
+ width: 16px;
+ height: 16px;
+ color: white;
+}
+
+.status-icon.submitted {
+ background-color: var(--secondary-color);
+}
+
+.status-icon.pending {
+ background-color: var(--warning-color);
+}
+
+.status-icon.missed {
+ background-color: var(--danger-color);
+}
+
+.status-icon.ooo {
+ background-color: var(--ooo-color);
+}
diff --git a/assets/icons/check.svg b/assets/icons/check.svg
new file mode 100644
index 0000000..fe50233
--- /dev/null
+++ b/assets/icons/check.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons/clock.svg b/assets/icons/clock.svg
new file mode 100644
index 0000000..2580096
--- /dev/null
+++ b/assets/icons/clock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons/palm.svg b/assets/icons/palm.svg
new file mode 100644
index 0000000..55355db
--- /dev/null
+++ b/assets/icons/palm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons/video.svg b/assets/icons/video.svg
new file mode 100644
index 0000000..7128e37
--- /dev/null
+++ b/assets/icons/video.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons/x.svg b/assets/icons/x.svg
new file mode 100644
index 0000000..4e068e4
--- /dev/null
+++ b/assets/icons/x.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/js/main.js b/assets/js/main.js
new file mode 100644
index 0000000..2e926a2
--- /dev/null
+++ b/assets/js/main.js
@@ -0,0 +1,9 @@
+// Main JavaScript for TeamSync
+
+document.addEventListener('DOMContentLoaded', function () {
+ console.log('TeamSync dashboard loaded.');
+
+ // Future interactivity can be added here.
+ // For example, handling the click on the 'Record Update' button
+ // when it's no longer disabled.
+});
diff --git a/index.php b/index.php
index 7205f3d..d30616e 100644
--- a/index.php
+++ b/index.php
@@ -1,150 +1,90 @@
-
-
+
-
-
- New Style
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ TeamSync Dashboard
+
+
+
+
+
-
-
-
Analyzing your requirements and generating your website…
-
- Loading…
-
-
= ($_SERVER['HTTP_HOST'] ?? '') === 'appwizzy.com' ? 'AppWizzy' : '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) ?>
-
-
-
+
+ 'Alex Doe',
+ 'avatar_url' => 'https://i.pravatar.cc/40?u=alex'
+ ];
+ $team_members = [
+ ['full_name' => 'Samantha Bright', 'avatar_url' => 'https://i.pravatar.cc/40?u=samantha', 'status' => 'submitted'],
+ ['full_name' => 'Leo Valdez', 'avatar_url' => 'https://i.pravatar.cc/40?u=leo', 'status' => 'pending', 'detail' => '2h 15m remaining'],
+ ['full_name' => 'Mei Lin', 'avatar_url' => 'https://i.pravatar.cc/40?u=mei', 'status' => 'missed'],
+ ['full_name' => 'Kenji Tanaka', 'avatar_url' => 'https://i.pravatar.cc/40?u=kenji', 'status' => 'ooo'],
+ ['full_name' => 'Fatima Ahmed', 'avatar_url' => 'https://i.pravatar.cc/40?u=fatima', 'status' => 'submitted'],
+ ];
+
+ function getStatusIndicator($status) {
+ switch ($status) {
+ case 'submitted':
+ return '' . file_get_contents("assets/icons/check.svg") . '';
+ case 'pending':
+ return '' . file_get_contents("assets/icons/clock.svg") . '';
+ case 'missed':
+ return '' . file_get_contents("assets/icons/x.svg") . '';
+ case 'ooo':
+ return '' . file_get_contents("assets/icons/palm.svg") . '';
+ default:
+ return '';
+ }
+ }
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
![<?php echo htmlspecialchars($member['full_name']); ?>](<?php echo htmlspecialchars($member['avatar_url']); ?>)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+