diff options
Diffstat (limited to 'static')
-rw-r--r-- | static/index.html | 283 | ||||
-rw-r--r-- | static/script.js | 164 | ||||
-rw-r--r-- | static/styles.css | 452 |
3 files changed, 590 insertions, 309 deletions
diff --git a/static/index.html b/static/index.html index d5b5cd4..ac88379 100644 --- a/static/index.html +++ b/static/index.html @@ -3,20 +3,28 @@ <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>Alex Chen - Creative Developer</title> + <title>TaskFlow - Project Management Dashboard</title> <link rel="stylesheet" href="styles.css"> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet"> </head> <body> <nav class="navbar"> <div class="nav-container"> - <div class="nav-logo">AC</div> + <div class="nav-logo">TaskFlow</div> <ul class="nav-menu"> - <li><a href="#home" class="nav-link">Home</a></li> - <li><a href="#about" class="nav-link">About</a></li> + <li><a href="#dashboard" class="nav-link">Dashboard</a></li> <li><a href="#projects" class="nav-link">Projects</a></li> - <li><a href="#contact" class="nav-link">Contact</a></li> + <li><a href="#team" class="nav-link">Team</a></li> + <li><a href="#reports" class="nav-link">Reports</a></li> </ul> + <div class="nav-actions"> + <div class="notification-icon">š</div> + <div class="user-profile"> + <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='16' fill='%236366f1'/%3E%3Ctext x='16' y='20' text-anchor='middle' fill='white' font-family='Arial' font-size='12' font-weight='bold'%3EJD%3C/text%3E%3C/svg%3E" alt="User" class="profile-img"> + <span class="username">John Doe</span> + <div class="dropdown-arrow">ā¼</div> + </div> + </div> <div class="hamburger"> <span></span> <span></span> @@ -26,52 +34,48 @@ </nav> <main> - <section id="home" class="hero"> + <section id="dashboard" class="hero"> <div class="hero-content"> - <h1 class="hero-title"> - <span class="gradient-text">Creative Developer</span> - <br>& Digital Designer - </h1> - <p class="hero-subtitle">Crafting beautiful digital experiences with modern web technologies</p> - <div class="hero-buttons"> - <button class="btn btn-primary">View My Work</button> - <button class="btn btn-secondary">Get In Touch</button> - </div> - </div> - <div class="hero-visual"> - <div class="floating-card card-1"></div> - <div class="floating-card card-2"></div> - <div class="floating-card card-3"></div> - </div> - </section> - - <section id="about" class="about"> - <div class="container"> - <h2 class="section-title">About Me</h2> - <div class="about-grid"> - <div class="about-text"> - <p>I'm a passionate full-stack developer with 5+ years of experience creating digital solutions that combine beautiful design with robust functionality.</p> - <div class="skills"> - <div class="skill-item">React</div> - <div class="skill-item">TypeScript</div> - <div class="skill-item">Node.js</div> - <div class="skill-item">Python</div> - <div class="skill-item">AWS</div> - <div class="skill-item">Design Systems</div> + <div class="welcome-section"> + <h1 class="hero-title"> + Welcome back, <span class="gradient-text">John</span> + </h1> + <p class="hero-subtitle">Here's what's happening with your projects today</p> + <div class="quick-stats"> + <div class="stat-card"> + <div class="stat-number">12</div> + <div class="stat-label">Active Projects</div> </div> - </div> - <div class="about-stats"> - <div class="stat"> - <div class="stat-number">50+</div> - <div class="stat-label">Projects Completed</div> + <div class="stat-card"> + <div class="stat-number">47</div> + <div class="stat-label">Tasks Due</div> </div> - <div class="stat"> - <div class="stat-number">5+</div> - <div class="stat-label">Years Experience</div> + <div class="stat-card"> + <div class="stat-number">8</div> + <div class="stat-label">Team Members</div> </div> - <div class="stat"> - <div class="stat-number">25+</div> - <div class="stat-label">Happy Clients</div> + </div> + <div class="hero-buttons"> + <button class="btn btn-primary">Create New Project</button> + <button class="btn btn-secondary">View All Tasks</button> + </div> + </div> + <div class="dashboard-preview"> + <div class="preview-card card-1"> + <div class="card-header">Recent Activity</div> + <div class="activity-item">Sarah completed "UI Design"</div> + <div class="activity-item">Mike updated project timeline</div> + <div class="activity-item">New comment on "Backend API"</div> + </div> + <div class="preview-card card-2"> + <div class="card-header">Upcoming Deadlines</div> + <div class="deadline-item"> + <span class="deadline-date">Today</span> + <span class="deadline-task">Mobile App Testing</span> + </div> + <div class="deadline-item"> + <span class="deadline-date">Tomorrow</span> + <span class="deadline-task">Client Presentation</span> </div> </div> </div> @@ -80,41 +84,75 @@ <section id="projects" class="projects"> <div class="container"> - <h2 class="section-title">Featured Projects</h2> + <div class="section-header"> + <h2 class="section-title">Active Projects</h2> + <button class="btn btn-primary">+ New Project</button> + </div> <div class="projects-grid"> <div class="project-card"> - <div class="project-image"></div> + <div class="project-status status-active">Active</div> <div class="project-content"> <h3>E-Commerce Platform</h3> - <p>Modern React-based shopping platform with real-time inventory management</p> - <div class="project-tags"> - <span>React</span> - <span>Node.js</span> - <span>MongoDB</span> + <p>Building a modern React-based shopping platform with real-time inventory management</p> + <div class="project-progress"> + <div class="progress-bar"> + <div class="progress-fill" style="width: 75%"></div> + </div> + <span class="progress-text">75% Complete</span> + </div> + <div class="project-meta"> + <div class="project-team"> + <div class="team-avatars"> + <div class="avatar">JS</div> + <div class="avatar">MK</div> + <div class="avatar">+2</div> + </div> + </div> + <div class="project-due">Due: Dec 15</div> </div> </div> </div> <div class="project-card"> - <div class="project-image"></div> + <div class="project-status status-review">In Review</div> <div class="project-content"> <h3>Analytics Dashboard</h3> <p>Data visualization dashboard with interactive charts and real-time updates</p> - <div class="project-tags"> - <span>Vue.js</span> - <span>D3.js</span> - <span>Python</span> + <div class="project-progress"> + <div class="progress-bar"> + <div class="progress-fill" style="width: 90%"></div> + </div> + <span class="progress-text">90% Complete</span> + </div> + <div class="project-meta"> + <div class="project-team"> + <div class="team-avatars"> + <div class="avatar">AL</div> + <div class="avatar">RH</div> + </div> + </div> + <div class="project-due">Due: Nov 28</div> </div> </div> </div> <div class="project-card"> - <div class="project-image"></div> + <div class="project-status status-planning">Planning</div> <div class="project-content"> - <h3>Mobile App</h3> - <p>Cross-platform mobile application for task management and productivity</p> - <div class="project-tags"> - <span>React Native</span> - <span>Firebase</span> - <span>Redux</span> + <h3>Mobile App Redesign</h3> + <p>Complete UI/UX overhaul for the mobile application with new design system</p> + <div class="project-progress"> + <div class="progress-bar"> + <div class="progress-fill" style="width: 25%"></div> + </div> + <span class="progress-text">25% Complete</span> + </div> + <div class="project-meta"> + <div class="project-team"> + <div class="team-avatars"> + <div class="avatar">SM</div> + <div class="avatar">+3</div> + </div> + </div> + <div class="project-due">Due: Jan 20</div> </div> </div> </div> @@ -122,32 +160,98 @@ </div> </section> - <section id="contact" class="contact"> + <section id="team" class="team"> <div class="container"> - <h2 class="section-title">Let's Work Together</h2> - <div class="contact-content"> - <div class="contact-info"> - <h3>Get in touch</h3> - <p>Ready to start your next project? Let's discuss how we can bring your ideas to life.</p> - <div class="contact-item"> - <strong>Email:</strong> alex@example.com + <h2 class="section-title">Team Overview</h2> + <div class="team-grid"> + <div class="team-member"> + <div class="member-avatar large-avatar">JS</div> + <div class="member-info"> + <h3>Jessica Smith</h3> + <p>Frontend Developer</p> + <div class="member-status online">Online</div> </div> - <div class="contact-item"> - <strong>Phone:</strong> +1 (555) 123-4567 + <div class="member-stats"> + <div class="stat"> + <span class="stat-number">8</span> + <span class="stat-label">Active Tasks</span> + </div> </div> </div> - <form class="contact-form"> - <div class="form-group"> - <input type="text" placeholder="Your Name" required> + <div class="team-member"> + <div class="member-avatar large-avatar">MK</div> + <div class="member-info"> + <h3>Mike Kim</h3> + <p>Backend Developer</p> + <div class="member-status away">Away</div> </div> - <div class="form-group"> - <input type="email" placeholder="Your Email" required> + <div class="member-stats"> + <div class="stat"> + <span class="stat-number">5</span> + <span class="stat-label">Active Tasks</span> + </div> </div> - <div class="form-group"> - <textarea placeholder="Your Message" rows="5" required></textarea> + </div> + <div class="team-member"> + <div class="member-avatar large-avatar">AL</div> + <div class="member-info"> + <h3>Alex Lee</h3> + <p>UI/UX Designer</p> + <div class="member-status online">Online</div> </div> - <button type="submit" class="btn btn-primary">Send Message</button> - </form> + <div class="member-stats"> + <div class="stat"> + <span class="stat-number">12</span> + <span class="stat-label">Active Tasks</span> + </div> + </div> + </div> + <div class="team-member"> + <div class="member-avatar large-avatar">RH</div> + <div class="member-info"> + <h3>Rachel Harris</h3> + <p>Project Manager</p> + <div class="member-status offline">Offline</div> + </div> + <div class="member-stats"> + <div class="stat"> + <span class="stat-number">3</span> + <span class="stat-label">Active Tasks</span> + </div> + </div> + </div> + </div> + </div> + </section> + + <section id="reports" class="reports"> + <div class="container"> + <h2 class="section-title">Project Reports</h2> + <div class="reports-grid"> + <div class="report-card"> + <h3>Weekly Summary</h3> + <div class="report-chart"> + <div class="chart-placeholder">š</div> + </div> + <p>Tasks completed this week: <strong>23</strong></p> + <button class="btn btn-secondary">View Details</button> + </div> + <div class="report-card"> + <h3>Team Performance</h3> + <div class="report-chart"> + <div class="chart-placeholder">š</div> + </div> + <p>Average completion rate: <strong>87%</strong></p> + <button class="btn btn-secondary">View Details</button> + </div> + <div class="report-card"> + <h3>Project Timeline</h3> + <div class="report-chart"> + <div class="chart-placeholder">š
</div> + </div> + <p>On-time delivery rate: <strong>92%</strong></p> + <button class="btn btn-secondary">View Details</button> + </div> </div> </div> </section> @@ -155,7 +259,14 @@ <footer class="footer"> <div class="container"> - <p>© 2025 Alex Chen. All rights reserved.</p> + <div class="footer-content"> + <p>© 2025 TaskFlow. All rights reserved.</p> + <div class="footer-links"> + <a href="#privacy">Privacy Policy</a> + <a href="#terms">Terms of Service</a> + <a href="#support">Support</a> + </div> + </div> </div> </footer> diff --git a/static/script.js b/static/script.js index 6a833fe..9219098 100644 --- a/static/script.js +++ b/static/script.js @@ -16,16 +16,18 @@ document.querySelectorAll('a[href^="#"]').forEach(anchor => { const hamburger = document.querySelector('.hamburger'); const navMenu = document.querySelector('.nav-menu'); -hamburger.addEventListener('click', () => { - hamburger.classList.toggle('active'); - navMenu.classList.toggle('active'); -}); +if (hamburger && navMenu) { + hamburger.addEventListener('click', () => { + hamburger.classList.toggle('active'); + navMenu.classList.toggle('active'); + }); -// Close mobile menu when clicking on a link -document.querySelectorAll('.nav-link').forEach(n => n.addEventListener('click', () => { - hamburger.classList.remove('active'); - navMenu.classList.remove('active'); -})); + // Close mobile menu when clicking on a link + document.querySelectorAll('.nav-link').forEach(n => n.addEventListener('click', () => { + hamburger.classList.remove('active'); + navMenu.classList.remove('active'); + })); +} // Navbar background on scroll window.addEventListener('scroll', () => { @@ -37,6 +39,53 @@ window.addEventListener('scroll', () => { } }); +// User profile dropdown simulation +const userProfile = document.querySelector('.user-profile'); +if (userProfile) { + userProfile.addEventListener('click', () => { + alert('User menu would open here with options like:\n⢠Profile Settings\n⢠Account Preferences\n⢠Logout'); + }); +} + +// Notification icon click +const notificationIcon = document.querySelector('.notification-icon'); +if (notificationIcon) { + notificationIcon.addEventListener('click', () => { + alert('Notifications:\n⢠Sarah completed "UI Design"\n⢠New comment on "Backend API"\n⢠Project deadline approaching'); + }); +} + +// Project card interactions +document.querySelectorAll('.project-card').forEach(card => { + card.addEventListener('click', () => { + const projectName = card.querySelector('h3').textContent; + alert(`Opening project: ${projectName}\n\nThis would navigate to the detailed project view.`); + }); +}); + +// Team member interactions +document.querySelectorAll('.team-member').forEach(member => { + member.addEventListener('click', () => { + const memberName = member.querySelector('h3').textContent; + alert(`Opening profile for: ${memberName}\n\nThis would show detailed team member information.`); + }); +}); + +// Button click handlers +document.querySelectorAll('.btn').forEach(btn => { + btn.addEventListener('click', (e) => { + const buttonText = btn.textContent; + + if (buttonText.includes('Create') || buttonText.includes('New')) { + e.stopPropagation(); + alert(`${buttonText} functionality would open here.\n\nThis would typically open a modal or navigate to a creation form.`); + } else if (buttonText.includes('View')) { + e.stopPropagation(); + alert(`${buttonText} functionality would open here.\n\nThis would navigate to a detailed view or listing page.`); + } + }); +}); + // Intersection Observer for animations const observerOptions = { threshold: 0.1, @@ -53,94 +102,45 @@ const observer = new IntersectionObserver((entries) => { }, observerOptions); // Observe elements for animation -document.querySelectorAll('.project-card, .stat, .about-text').forEach(el => { +document.querySelectorAll('.project-card, .team-member, .report-card, .stat-card').forEach(el => { el.style.opacity = '0'; el.style.transform = 'translateY(30px)'; el.style.transition = 'opacity 0.6s ease, transform 0.6s ease'; observer.observe(el); }); -// Form submission -document.querySelector('.contact-form').addEventListener('submit', function(e) { - e.preventDefault(); - - // Get form data - const name = this.querySelector('input[type="text"]').value; - const email = this.querySelector('input[type="email"]').value; - const message = this.querySelector('textarea').value; - - // Simple validation - if (!name || !email || !message) { - alert('Please fill in all fields'); - return; - } - - // Simulate form submission - const submitBtn = this.querySelector('button[type="submit"]'); - const originalText = submitBtn.textContent; - - submitBtn.textContent = 'Sending...'; - submitBtn.disabled = true; - - setTimeout(() => { - alert('Thank you for your message! I\'ll get back to you soon.'); - this.reset(); - submitBtn.textContent = originalText; - submitBtn.disabled = false; - }, 2000); -}); - -// Parallax effect for floating cards -window.addEventListener('scroll', () => { - const scrolled = window.pageYOffset; - const parallaxElements = document.querySelectorAll('.floating-card'); - - parallaxElements.forEach((element, index) => { - const speed = 0.5 + (index * 0.1); - const yPos = -(scrolled * speed); - element.style.transform = `translateY(${yPos}px)`; - }); -}); - -// Hero title fade-in animation +// Hero section fade-in animation window.addEventListener('load', () => { const heroTitle = document.querySelector('.hero-title'); const heroSubtitle = document.querySelector('.hero-subtitle'); + const quickStats = document.querySelector('.quick-stats'); const heroButtons = document.querySelector('.hero-buttons'); - if (heroTitle) { - heroTitle.style.opacity = '0'; - heroTitle.style.transform = 'translateY(30px)'; - heroTitle.style.transition = 'opacity 0.8s ease, transform 0.8s ease'; - - setTimeout(() => { - heroTitle.style.opacity = '1'; - heroTitle.style.transform = 'translateY(0)'; - }, 300); - } - - if (heroSubtitle) { - heroSubtitle.style.opacity = '0'; - heroSubtitle.style.transform = 'translateY(30px)'; - heroSubtitle.style.transition = 'opacity 0.8s ease, transform 0.8s ease'; - - setTimeout(() => { - heroSubtitle.style.opacity = '1'; - heroSubtitle.style.transform = 'translateY(0)'; - }, 500); - } + [heroTitle, heroSubtitle, quickStats, heroButtons].forEach((element, index) => { + if (element) { + element.style.opacity = '0'; + element.style.transform = 'translateY(30px)'; + element.style.transition = 'opacity 0.8s ease, transform 0.8s ease'; - if (heroButtons) { - heroButtons.style.opacity = '0'; - heroButtons.style.transform = 'translateY(30px)'; - heroButtons.style.transition = 'opacity 0.8s ease, transform 0.8s ease'; + setTimeout(() => { + element.style.opacity = '1'; + element.style.transform = 'translateY(0)'; + }, 300 + (index * 200)); + } + }); +}); +// Simulate real-time updates +setInterval(() => { + const activityItems = document.querySelectorAll('.activity-item'); + if (activityItems.length > 0) { + const randomItem = activityItems[Math.floor(Math.random() * activityItems.length)]; + randomItem.style.background = '#f0f9ff'; setTimeout(() => { - heroButtons.style.opacity = '1'; - heroButtons.style.transform = 'translateY(0)'; - }, 700); + randomItem.style.background = 'transparent'; + }, 2000); } -}); +}, 10000); // Add mobile menu styles dynamically const style = document.createElement('style'); diff --git a/static/styles.css b/static/styles.css index 98ce52e..7bfb5dd 100644 --- a/static/styles.css +++ b/static/styles.css @@ -13,6 +13,9 @@ --background: #ffffff; --surface: #f8fafc; --border: #e2e8f0; + --success: #10b981; + --warning: #f59e0b; + --danger: #ef4444; --shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); --shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, 0.1); --gradient: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%); @@ -22,7 +25,7 @@ body { font-family: 'Inter', sans-serif; line-height: 1.6; color: var(--text-primary); - background: var(--background); + background: var(--surface); } .container { @@ -77,6 +80,53 @@ body { color: var(--primary-color); } +.nav-actions { + display: flex; + align-items: center; + gap: 1rem; +} + +.notification-icon { + font-size: 1.2rem; + cursor: pointer; + padding: 0.5rem; + border-radius: 0.5rem; + transition: background 0.3s ease; +} + +.notification-icon:hover { + background: var(--surface); +} + +.user-profile { + display: flex; + align-items: center; + gap: 0.5rem; + cursor: pointer; + padding: 0.5rem; + border-radius: 0.5rem; + transition: background 0.3s ease; +} + +.user-profile:hover { + background: var(--surface); +} + +.profile-img { + width: 32px; + height: 32px; + border-radius: 50%; +} + +.username { + font-weight: 500; +} + +.dropdown-arrow { + font-size: 0.8rem; + color: var(--text-secondary); +} + .hamburger { display: none; flex-direction: column; @@ -97,9 +147,7 @@ body { display: flex; align-items: center; padding: 0 2rem; - background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%); - position: relative; - overflow: hidden; + background: var(--background); } .hero-content { @@ -112,10 +160,10 @@ body { } .hero-title { - font-size: 3.5rem; + font-size: 3rem; font-weight: 700; line-height: 1.1; - margin-bottom: 1.5rem; + margin-bottom: 1rem; } .gradient-text { @@ -126,11 +174,38 @@ body { } .hero-subtitle { - font-size: 1.25rem; + font-size: 1.125rem; color: var(--text-secondary); margin-bottom: 2rem; } +.quick-stats { + display: flex; + gap: 1rem; + margin-bottom: 2rem; +} + +.stat-card { + background: white; + padding: 1rem; + border-radius: 0.75rem; + box-shadow: var(--shadow); + text-align: center; + min-width: 100px; +} + +.stat-number { + font-size: 1.5rem; + font-weight: 700; + color: var(--primary-color); +} + +.stat-label { + font-size: 0.75rem; + color: var(--text-secondary); + margin-top: 0.25rem; +} + .hero-buttons { display: flex; gap: 1rem; @@ -169,118 +244,68 @@ body { color: var(--primary-color); } -.hero-visual { - position: relative; - height: 400px; +.dashboard-preview { + display: flex; + flex-direction: column; + gap: 1rem; } -.floating-card { - position: absolute; +.preview-card { + background: white; + padding: 1.5rem; border-radius: 1rem; - box-shadow: var(--shadow-lg); - animation: float 6s ease-in-out infinite; -} - -.card-1 { - width: 200px; - height: 120px; - background: var(--gradient); - top: 20%; - left: 10%; - animation-delay: 0s; -} - -.card-2 { - width: 160px; - height: 100px; - background: linear-gradient(135deg, #f59e0b 0%, #f97316 100%); - top: 50%; - right: 20%; - animation-delay: 2s; -} - -.card-3 { - width: 180px; - height: 110px; - background: linear-gradient(135deg, #10b981 0%, #059669 100%); - bottom: 20%; - left: 30%; - animation-delay: 4s; -} - -@keyframes float { - 0%, 100% { transform: translateY(0px); } - 50% { transform: translateY(-20px); } -} - -/* Sections */ -.section-title { - font-size: 2.5rem; - font-weight: 700; - text-align: center; - margin-bottom: 3rem; -} - -.about { - padding: 6rem 0; - background: var(--background); + box-shadow: var(--shadow); } -.about-grid { - display: grid; - grid-template-columns: 2fr 1fr; - gap: 4rem; - align-items: center; +.card-header { + font-weight: 600; + margin-bottom: 1rem; + color: var(--text-primary); } -.about-text p { - font-size: 1.125rem; +.activity-item { + padding: 0.5rem 0; color: var(--text-secondary); - margin-bottom: 2rem; + font-size: 0.875rem; + border-bottom: 1px solid var(--border); } -.skills { - display: flex; - flex-wrap: wrap; - gap: 1rem; +.activity-item:last-child { + border-bottom: none; } -.skill-item { - background: var(--surface); - padding: 0.5rem 1rem; - border-radius: 2rem; +.deadline-item { + display: flex; + justify-content: space-between; + padding: 0.5rem 0; font-size: 0.875rem; - font-weight: 500; - border: 1px solid var(--border); } -.about-stats { - display: flex; - flex-direction: column; - gap: 2rem; +.deadline-date { + color: var(--primary-color); + font-weight: 500; } -.stat { - text-align: center; - padding: 1.5rem; - background: white; - border-radius: 1rem; - box-shadow: var(--shadow); +.deadline-task { + color: var(--text-secondary); } -.stat-number { +/* Sections */ +.section-title { font-size: 2rem; font-weight: 700; - color: var(--primary-color); + margin-bottom: 2rem; } -.stat-label { - color: var(--text-secondary); - font-size: 0.875rem; +.section-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 2rem; } .projects { - padding: 6rem 0; + padding: 4rem 0; background: var(--surface); } @@ -293,110 +318,242 @@ body { .project-card { background: white; border-radius: 1rem; - overflow: hidden; + padding: 1.5rem; box-shadow: var(--shadow); transition: transform 0.3s ease; + position: relative; } .project-card:hover { transform: translateY(-5px); } -.project-image { - height: 200px; - background: var(--gradient); +.project-status { + position: absolute; + top: 1rem; + right: 1rem; + padding: 0.25rem 0.75rem; + border-radius: 1rem; + font-size: 0.75rem; + font-weight: 500; } -.project-content { - padding: 1.5rem; +.status-active { + background: #dcfce7; + color: #166534; +} + +.status-review { + background: #fef3c7; + color: #92400e; +} + +.status-planning { + background: #dbeafe; + color: #1e40af; } .project-content h3 { font-size: 1.25rem; font-weight: 600; margin-bottom: 0.5rem; + margin-top: 1rem; } .project-content p { color: var(--text-secondary); + margin-bottom: 1.5rem; + font-size: 0.875rem; +} + +.project-progress { margin-bottom: 1rem; } -.project-tags { +.progress-bar { + width: 100%; + height: 8px; + background: var(--border); + border-radius: 4px; + overflow: hidden; + margin-bottom: 0.5rem; +} + +.progress-fill { + height: 100%; + background: var(--gradient); + transition: width 0.3s ease; +} + +.progress-text { + font-size: 0.75rem; + color: var(--text-secondary); +} + +.project-meta { display: flex; - gap: 0.5rem; - flex-wrap: wrap; + justify-content: space-between; + align-items: center; } -.project-tags span { - background: var(--surface); - padding: 0.25rem 0.75rem; - border-radius: 1rem; +.team-avatars { + display: flex; + gap: 0.25rem; +} + +.avatar { + width: 28px; + height: 28px; + border-radius: 50%; + background: var(--gradient); + color: white; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.75rem; + font-weight: 600; +} + +.project-due { font-size: 0.75rem; color: var(--text-secondary); } -.contact { - padding: 6rem 0; +.team { + padding: 4rem 0; background: var(--background); } -.contact-content { +.team-grid { display: grid; - grid-template-columns: 1fr 1fr; - gap: 4rem; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; } -.contact-info h3 { - font-size: 1.5rem; - margin-bottom: 1rem; +.team-member { + background: white; + padding: 1.5rem; + border-radius: 1rem; + box-shadow: var(--shadow); + display: flex; + align-items: center; + gap: 1rem; +} + +.large-avatar { + width: 48px; + height: 48px; + font-size: 1rem; } -.contact-info p { +.member-info h3 { + font-size: 1rem; + font-weight: 600; + margin-bottom: 0.25rem; +} + +.member-info p { color: var(--text-secondary); - margin-bottom: 2rem; + font-size: 0.875rem; + margin-bottom: 0.5rem; } -.contact-item { - margin-bottom: 1rem; +.member-status { + font-size: 0.75rem; + padding: 0.25rem 0.5rem; + border-radius: 1rem; + font-weight: 500; +} + +.online { + background: #dcfce7; + color: #166534; +} + +.away { + background: #fef3c7; + color: #92400e; +} + +.offline { + background: #f1f5f9; + color: #64748b; +} + +.member-stats { + margin-left: auto; + text-align: center; +} + +.reports { + padding: 4rem 0; + background: var(--surface); +} + +.reports-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; } -.contact-form { +.report-card { background: white; padding: 2rem; border-radius: 1rem; box-shadow: var(--shadow); + text-align: center; } -.form-group { - margin-bottom: 1.5rem; +.report-card h3 { + font-size: 1.25rem; + font-weight: 600; + margin-bottom: 1rem; } -.form-group input, -.form-group textarea { - width: 100%; - padding: 0.75rem; - border: 1px solid var(--border); - border-radius: 0.5rem; - font-family: inherit; - transition: border-color 0.3s ease; +.chart-placeholder { + font-size: 3rem; + margin: 2rem 0; } -.form-group input:focus, -.form-group textarea:focus { - outline: none; - border-color: var(--primary-color); +.report-card p { + color: var(--text-secondary); + margin-bottom: 1.5rem; } .footer { background: var(--text-primary); color: white; - text-align: center; padding: 2rem 0; } +.footer-content { + display: flex; + justify-content: space-between; + align-items: center; +} + +.footer-links { + display: flex; + gap: 2rem; +} + +.footer-links a { + color: white; + text-decoration: none; + opacity: 0.8; + transition: opacity 0.3s ease; +} + +.footer-links a:hover { + opacity: 1; +} + /* Responsive Design */ @media (max-width: 768px) { + .nav-actions { + display: none; + } + .hamburger { display: flex; } @@ -411,12 +568,11 @@ body { } .hero-title { - font-size: 2.5rem; + font-size: 2rem; } - .about-grid, - .contact-content { - grid-template-columns: 1fr; + .quick-stats { + justify-content: center; } .hero-buttons { @@ -427,6 +583,18 @@ body { .btn { width: 200px; } + + .section-header { + flex-direction: column; + gap: 1rem; + align-items: flex-start; + } + + .footer-content { + flex-direction: column; + gap: 1rem; + text-align: center; + } } @media (max-width: 480px) { @@ -438,11 +606,13 @@ body { padding: 0 1rem; } - .hero-title { - font-size: 2rem; + .quick-stats { + flex-direction: column; } - .projects-grid { + .projects-grid, + .team-grid, + .reports-grid { grid-template-columns: 1fr; } } |