Linear design is a fundamental concept in user interface development, offering simplicity and clarity. By focusing on straightforward, sequential layouts, designers can create intuitive and efficient user experiences.
In this article, we will explore ten exemplary linear designs that demonstrate the power of this approach. These examples will highlight how linear design can enhance usability and streamline interactions.
CODE1
Here's the code:
CODETEXT1
CODE2
Here's the code:
CODETEXT2
CODE3
Here's the code:
CODETEXT3
CODE4
Here's the code:
CODETEXT4
CODE5
Here's the code:
CODETEXT5
Subframe's drag-and-drop interface and intuitive, responsive canvas make it easy to create pixel-perfect UI every time. Loved by designers and developers alike, Subframe ensures your linear designs are both stunning and functional.
Start for free and experience the difference today!
CODE6
Here's the code:
CODETEXT6
CODE7
Here's the code:
CODETEXT7
CODE8
Here's the code:
CODETEXT8
CODE9
Here's the code:
CODETEXT9
CODE10
Here's the code:
CODETEXT10
Ready to elevate your UI design game? With Subframe, you can create pixel-perfect interfaces, including stunning linear designs, in no time. Our drag-and-drop editor ensures efficiency and precision.
Don't wait! Start for free and begin designing immediately. Experience the power of Subframe today!
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Inter', sans-serif; } :root { --navy: #0a1a35; --magenta: #dd0890; --accent: #4FC3F7; --white: #ffffff; --gray: #f5f5f7; } @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap'); body { width: 100%; height: 100vh; overflow-x: hidden; background-color: var(--white); } .hero-container { position: relative; width: 100%; height: 100%; overflow: hidden; } .diagonal-gradient { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(135deg, var(--navy) 0%, var(--magenta) 100%); clip-path: polygon(0 0, 100% 0, 100% 85%, 0 100%); z-index: 1; } .grid-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: radial-gradient(rgba(255, 255, 255, 0.1) 1px, transparent 1px); background-size: 30px 30px; z-index: 2; opacity: 0.5; } .content { position: relative; z-index: 3; padding: 2rem; height: 100%; display: flex; flex-direction: column; justify-content: center; } .nav { position: absolute; top: 0; left: 0; width: 100%; padding: 1.5rem 2rem; display: flex; justify-content: space-between; align-items: center; } .logo { font-size: 1.8rem; font-weight: 800; color: var(--white); letter-spacing: -1px; display: flex; align-items: center; } .logo span { display: inline-block; width: 12px; height: 12px; background-color: var(--accent); border-radius: 50%; margin-left: 8px; animation: pulse 2s infinite; } @keyframes pulse { 0% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.5); opacity: 0.7; } 100% { transform: scale(1); opacity: 1; } } .nav-links { display: flex; gap: 2rem; } .nav-link { color: var(--white); text-decoration: none; font-weight: 500; position: relative; padding: 0.5rem 0; font-size: 0.95rem; transition: color 0.3s ease; } .nav-link:after { content: ''; position: absolute; bottom: 0; left: 0; width: 0; height: 2px; background-color: var(--accent); transition: width 0.3s ease; } .nav-link:hover { color: var(--accent); } .nav-link:hover:after { width: 100%; } .hero-content { max-width: 650px; margin-top: 3rem; } .headline { font-size: 3.5rem; font-weight: 800; line-height: 1.1; margin-bottom: 1.5rem; color: var(--white); letter-spacing: -1px; opacity: 0; transform: translateY(30px); animation: fadeInUp 0.8s forwards 0.2s; } .headline span { color: var(--accent); position: relative; display: inline-block; } .headline span:after { content: ''; position: absolute; bottom: 5px; left: 0; width: 100%; height: 8px; background-color: rgba(221, 8, 144, 0.3); z-index: -1; border-radius: 4px; } .subheadline { font-size: 1.2rem; line-height: 1.6; color: rgba(255, 255, 255, 0.9); margin-bottom: 2.5rem; max-width: 90%; opacity: 0; transform: translateY(30px); animation: fadeInUp 0.8s forwards 0.4s; } @keyframes fadeInUp { to { opacity: 1; transform: translateY(0); } } .cta-container { display: flex; gap: 1.5rem; opacity: 0; transform: translateY(30px); animation: fadeInUp 0.8s forwards 0.6s; } .primary-btn { padding: 0.9rem 2rem; background-color: var(--accent); color: var(--navy); border: none; border-radius: 50px; font-weight: 600; font-size: 1rem; cursor: pointer; transition: transform 0.3s ease, box-shadow 0.3s ease; position: relative; overflow: hidden; z-index: 1; } .primary-btn:before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); transition: left 0.7s ease; z-index: -1; } .primary-btn:hover { transform: translateY(-3px); box-shadow: 0 10px 20px rgba(10, 26, 53, 0.1); } .primary-btn:hover:before { left: 100%; } .secondary-btn { padding: 0.9rem 2rem; background-color: transparent; color: var(--white); border: 1px solid var(--white); border-radius: 50px; font-weight: 600; font-size: 1rem; cursor: pointer; transition: all 0.3s ease; } .secondary-btn:hover { background-color: rgba(255, 255, 255, 0.1); transform: translateY(-3px); } .floating-shapes { position: absolute; top: 0; right: 0; width: 100%; height: 100%; z-index: 2; pointer-events: none; } .shape { position: absolute; background-color: rgba(255, 255, 255, 0.1); border-radius: 50%; } .shape-1 { width: 80px; height: 80px; top: 15%; right: 15%; animation: float 10s infinite ease-in-out; } .shape-2 { width: 120px; height: 120px; top: 60%; right: 30%; animation: float 15s infinite ease-in-out reverse; } .shape-3 { width: 50px; height: 50px; top: 30%; right: 40%; animation: float 12s infinite ease-in-out 1s; } @keyframes float { 0% { transform: translate(0, 0) rotate(0deg); } 25% { transform: translate(-20px, 20px) rotate(5deg); } 50% { transform: translate(20px, 40px) rotate(0deg); } 75% { transform: translate(30px, 10px) rotate(-5deg); } 100% { transform: translate(0, 0) rotate(0deg); } } .mouse-follower { position: absolute; width: 300px; height: 300px; background: radial-gradient(circle, rgba(221, 8, 144, 0.4) 0%, rgba(221, 8, 144, 0) 70%); border-radius: 50%; transform: translate(-50%, -50%); pointer-events: none; z-index: 1; opacity: 0; transition: opacity 0.3s ease; } .card-grid { position: absolute; bottom: 2rem; left: 2rem; display: flex; gap: 1.5rem; z-index: 3; opacity: 0; transform: translateY(30px); animation: fadeInUp 0.8s forwards 0.8s; } .stat-card { background-color: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); padding: 1.2rem 1.5rem; border-radius: 12px; border: 1px solid rgba(255, 255, 255, 0.2); transition: transform 0.3s ease, background-color 0.3s ease; } .stat-card:hover { transform: translateY(-5px); background-color: rgba(255, 255, 255, 0.2); } .stat-number { font-size: 1.8rem; font-weight: 700; color: var(--white); margin-bottom: 0.3rem; } .stat-label { font-size: 0.9rem; color: rgba(255, 255, 255, 0.8); } @media (max-width: 768px) { .nav-links { display: none; } .headline { font-size: 2.5rem; } .subheadline { font-size: 1rem; max-width: 100%; } .cta-container { flex-direction: column; gap: 1rem; } .card-grid { flex-direction: column; left: 50%; transform: translateX(-50%) translateY(30px); width: 80%; } .card-grid.animated { animation: fadeInUp 0.8s forwards 0.8s; transform: translateX(-50%) translateY(0); } .stat-card { width: 100%; text-align: center; } } @media (max-width: 480px) { .content { padding: 1.5rem; } .hero-content { margin-top: 4rem; } .headline { font-size: 2rem; } } </style> </head> <body> <div class="hero-container"> <div class="diagonal-gradient"></div> <div class="grid-overlay"></div> <div class="mouse-follower"></div> <div class="floating-shapes"> <div class="shape shape-1"></div> <div class="shape shape-2"></div> <div class="shape shape-3"></div> </div> <div class="content"> <nav class="nav"> <div class="logo"> NOVA<span></span> </div> <div class="nav-links"> <a href="#" class="nav-link">Services</a> <a href="#" class="nav-link">Work</a> <a href="#" class="nav-link">Process</a> <a href="#" class="nav-link">About</a> <a href="#" class="nav-link">Contact</a> </div> </nav> <div class="hero-content"> <h1 class="headline">We craft <span>digital experiences</span> that move the needle</h1> <p class="subheadline">Combining bold strategy with cutting-edge tech to build branded digital solutions that transform businesses and drive measurable results.</p> <div class="cta-container"> <button class="primary-btn">See our work</button> <button class="secondary-btn">Let's talk</button> </div> </div> <div class="card-grid"> <div class="stat-card"> <div class="stat-number">98%</div> <div class="stat-label">Client retention rate</div> </div> <div class="stat-card"> <div class="stat-number">145+</div> <div class="stat-label">Award-winning projects</div> </div> <div class="stat-card"> <div class="stat-number">12 yrs</div> <div class="stat-label">Industry experience</div> </div> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { const mouseFollower = document.querySelector('.mouse-follower'); const heroContainer = document.querySelector('.hero-container'); // Mouse follower effect heroContainer.addEventListener('mousemove', function(e) { const rect = heroContainer.getBoundingClientRect(); const x = e.clientX - rect.left; const y = e.clientY - rect.top; mouseFollower.style.left = x + 'px'; mouseFollower.style.top = y + 'px'; mouseFollower.style.opacity = '1'; }); heroContainer.addEventListener('mouseleave', function() { mouseFollower.style.opacity = '0'; }); // Button ripple effect const buttons = document.querySelectorAll('button'); buttons.forEach(button => { button.addEventListener('click', function(e) { const x = e.clientX - e.target.offsetLeft; const y = e.clientY - e.target.offsetTop; const ripple = document.createElement('span'); ripple.style.left = x + 'px'; ripple.style.top = y + 'px'; // Prevent actual form submission or navigation e.preventDefault(); // Optional: Add a visual feedback for the button click button.classList.add('clicked'); setTimeout(() => { button.classList.remove('clicked'); }, 300); }); }); // Responsive adjustments function handleResize() { const cardGrid = document.querySelector('.card-grid'); if (window.innerWidth <= 768) { cardGrid.classList.add('animated'); } else { cardGrid.classList.remove('animated'); } } window.addEventListener('resize', handleResize); handleResize(); // Call once on load }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Inter', sans-serif; } body { display: flex; justify-content: center; align-items: center; min-height: 700px; width: 100%; max-width: 700px; margin: 0 auto; padding: 20px; background-color: #f8f9fa; } .cta-container { width: 100%; max-width: 600px; height: auto; border-radius: 20px; overflow: hidden; box-shadow: 0 25px 50px -12px rgba(0, 77, 64, 0.25); position: relative; transition: transform 0.3s ease, box-shadow 0.3s ease; } .cta-container:hover { transform: translateY(-5px); box-shadow: 0 30px 60px -15px rgba(0, 77, 64, 0.3); } .gradient-bg { background: linear-gradient(to bottom, #00714b, #8de3c6); padding: 40px 30px; position: relative; z-index: 1; overflow: hidden; } .pattern-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 18c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm48 25c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm-43-7c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm63 31c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM34 90c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm56-76c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM12 86c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm28-65c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm23-11c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-6 60c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm29 22c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zM32 63c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm57-13c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-9-21c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM60 91c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM35 41c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM12 60c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2z' fill='%23ffffff' fill-opacity='0.1' fill-rule='evenodd'/%3E%3C/svg%3E"); opacity: 0.4; z-index: -1; } .content { color: white; text-align: left; position: relative; z-index: 2; } .badge { display: inline-block; background-color: rgba(255, 255, 255, 0.2); padding: 6px 12px; border-radius: 30px; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 1px; margin-bottom: 18px; backdrop-filter: blur(5px); border: 1px solid rgba(255, 255, 255, 0.3); } h1 { font-size: 32px; font-weight: 800; margin-bottom: 16px; line-height: 1.2; text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } p { font-size: 16px; line-height: 1.6; margin-bottom: 30px; opacity: 0.9; max-width: 90%; } .features { display: flex; gap: 15px; margin-bottom: 30px; flex-wrap: wrap; } .feature-item { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 500; } .feature-icon { width: 20px; height: 20px; background-color: rgba(255, 255, 255, 0.2); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 12px; } .timer-container { display: flex; gap: 10px; margin-bottom: 25px; } .timer-box { background-color: rgba(0, 0, 0, 0.2); padding: 10px; border-radius: 8px; text-align: center; min-width: 50px; backdrop-filter: blur(5px); } .timer-value { font-size: 20px; font-weight: 700; } .timer-label { font-size: 10px; text-transform: uppercase; opacity: 0.7; } .btn-primary { background-color: white; color: #00714b; border: none; padding: 14px 28px; font-size: 16px; font-weight: 600; border-radius: 50px; cursor: pointer; transition: all 0.3s ease; display: inline-flex; align-items: center; gap: 10px; position: relative; overflow: hidden; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); } .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.15); } .btn-primary:active { transform: translateY(0); } .btn-primary::after { content: ""; position: absolute; width: 30px; height: 100%; top: 0; left: -40px; background: linear-gradient(to right, transparent, rgba(255, 255, 255, 0.7), transparent); transform: skewX(-20deg); transition: all 0.7s ease; opacity: 0; } .btn-primary:hover::after { left: 110%; opacity: 1; } .btn-secondary { background-color: transparent; color: white; border: 1px solid rgba(255, 255, 255, 0.5); padding: 14px 28px; font-size: 16px; font-weight: 600; border-radius: 50px; cursor: pointer; transition: all 0.3s ease; margin-left: 15px; backdrop-filter: blur(5px); } .btn-secondary:hover { background-color: rgba(255, 255, 255, 0.1); border-color: white; } .arrow-icon { transform: translateX(0); transition: transform 0.3s ease; } .btn-primary:hover .arrow-icon { transform: translateX(5px); } .trust-badges { display: flex; align-items: center; gap: 15px; margin-top: 30px; } .trust-badge { display: flex; align-items: center; gap: 8px; font-size: 12px; opacity: 0.9; } .floating-element { position: absolute; width: 120px; height: 120px; background-color: rgba(255, 255, 255, 0.1); border-radius: 50%; filter: blur(30px); z-index: 0; animation: float 10s infinite ease-in-out; } .floating-element:nth-child(1) { top: -30px; right: -30px; background-color: rgba(255, 255, 255, 0.08); } .floating-element:nth-child(2) { bottom: 40px; left: -60px; width: 150px; height: 150px; background-color: rgba(0, 0, 0, 0.05); animation-delay: 2s; } @keyframes float { 0%, 100% { transform: translateY(0) scale(1); } 50% { transform: translateY(-20px) scale(1.1); } } .pulse { animation: pulse 2s infinite; } @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.4); } 70% { box-shadow: 0 0 0 10px rgba(255, 255, 255, 0); } 100% { box-shadow: 0 0 0 0 rgba(255, 255, 255, 0); } } @media (max-width: 600px) { .gradient-bg { padding: 30px 20px; } h1 { font-size: 26px; } p { font-size: 14px; max-width: 100%; } .btn-primary, .btn-secondary { padding: 12px 20px; font-size: 14px; } .btn-secondary { margin-left: 0; margin-top: 15px; } .timer-container { flex-wrap: wrap; } .features { flex-direction: column; gap: 10px; } .cta-actions { flex-direction: column; width: 100%; } } </style> </head> <body> <div class="cta-container"> <div class="gradient-bg"> <div class="pattern-overlay"></div> <div class="floating-element"></div> <div class="floating-element"></div> <div class="content"> <div class="badge pulse">Limited Time Offer</div> <h1>Elevate Your Skincare Routine with Eco-Essentials</h1> <p>Transform your daily ritual with our organic, plant-powered formulas that nourish your skin while protecting the planet.</p> <div class="features"> <div class="feature-item"> <div class="feature-icon">✓</div> <span>100% Organic</span> </div> <div class="feature-item"> <div class="feature-icon">✓</div> <span>Sustainable Packaging</span> </div> <div class="feature-item"> <div class="feature-icon">✓</div> <span>Cruelty-Free</span> </div> </div> <div class="timer-container"> <div class="timer-box"> <div class="timer-value" id="hours">24</div> <div class="timer-label">Hours</div> </div> <div class="timer-box"> <div class="timer-value" id="minutes">00</div> <div class="timer-label">Minutes</div> </div> <div class="timer-box"> <div class="timer-value" id="seconds">00</div> <div class="timer-label">Seconds</div> </div> </div> <div class="cta-actions"> <button class="btn-primary" id="shop-now"> Shop Collection <span class="arrow-icon">→</span> </button> <button class="btn-secondary" id="learn-more">Learn More</button> </div> <div class="trust-badges"> <div class="trust-badge"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M20.2739 12.0643C20.2739 17.0633 16.3348 21.1288 11.5 21.1288C6.66516 21.1288 2.72607 17.0633 2.72607 12.0643C2.72607 7.06538 6.66516 2.99997 11.5 2.99997C16.3348 2.99997 20.2739 7.06538 20.2739 12.0643Z" stroke="white" stroke-width="1.5"/> <path d="M8 11.4516L10.8267 14L15 9" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> </svg> <span>Free Shipping</span> </div> <div class="trust-badge"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M20.2739 12.0643C20.2739 17.0633 16.3348 21.1288 11.5 21.1288C6.66516 21.1288 2.72607 17.0633 2.72607 12.0643C2.72607 7.06538 6.66516 2.99997 11.5 2.99997C16.3348 2.99997 20.2739 7.06538 20.2739 12.0643Z" stroke="white" stroke-width="1.5"/> <path d="M8 11.4516L10.8267 14L15 9" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> </svg> <span>30-Day Returns</span> </div> </div> </div> </div> </div> <script> // Countdown Timer function updateTimer() { const now = new Date(); const midnight = new Date(); midnight.setHours(24, 0, 0, 0); const diff = midnight - now; const hours = Math.floor(diff / (1000 * 60 * 60)); const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60)); const seconds = Math.floor((diff % (1000 * 60)) / 1000); document.getElementById('hours').textContent = hours.toString().padStart(2, '0'); document.getElementById('minutes').textContent = minutes.toString().padStart(2, '0'); document.getElementById('seconds').textContent = seconds.toString().padStart(2, '0'); } updateTimer(); setInterval(updateTimer, 1000); // Button hover effects const shopNowBtn = document.getElementById('shop-now'); shopNowBtn.addEventListener('click', function(e) { e.preventDefault(); // Add a ripple effect const ripple = document.createElement('span'); ripple.classList.add('ripple'); this.appendChild(ripple); // Show success message const originalText = this.innerHTML; this.innerHTML = 'Added to Cart ✓'; setTimeout(() => { this.innerHTML = originalText; }, 2000); }); const learnMoreBtn = document.getElementById('learn-more'); learnMoreBtn.addEventListener('click', function(e) { e.preventDefault(); // Toggle an info panel would go here shopNowBtn.classList.toggle('pulse'); setTimeout(() => { shopNowBtn.classList.remove('pulse'); }, 3000); }); // Add some random subtle movements to the floating elements document.querySelectorAll('.floating-element').forEach(elem => { let randomX = Math.random() * 20 - 10; let randomY = Math.random() * 20 - 10; elem.style.transform = `translate(${randomX}px, ${randomY}px)`; }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Mobile Banking Application</title> <style> :root { --slate-gray: #708090; --light-silver: #D3D3D3; --accent-blue: #4682B4; --success-green: #5cb85c; --warning-orange: #f0ad4e; --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: var(--font-sans); background: linear-gradient(135deg, var(--slate-gray), var(--light-silver)); min-height: 700px; color: #333; display: flex; flex-direction: column; align-items: center; justify-content: flex-start; padding: 20px; overflow-x: hidden; } .app-container { width: 100%; max-width: 640px; background-color: rgba(255, 255, 255, 0.9); border-radius: 18px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12); backdrop-filter: blur(10px); padding: 25px; margin-bottom: 20px; transition: transform 0.3s ease, box-shadow 0.3s ease; } .app-container:hover { transform: translateY(-5px); box-shadow: 0 15px 35px rgba(0, 0, 0, 0.15); } .app-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 25px; position: relative; } .logo { font-weight: 700; font-size: 1.5rem; color: var(--slate-gray); position: relative; display: flex; align-items: center; } .logo::before { content: ""; width: 8px; height: 8px; background-color: var(--accent-blue); border-radius: 50%; display: inline-block; margin-right: 10px; animation: pulse 2s infinite; } @keyframes pulse { 0% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.3); opacity: 0.7; } 100% { transform: scale(1); opacity: 1; } } .notification-icon { position: relative; cursor: pointer; } .notification-icon i { font-size: 1.2rem; color: var(--slate-gray); } .notification-badge { position: absolute; top: -5px; right: -5px; width: 12px; height: 12px; background-color: var(--warning-orange); border-radius: 50%; border: 2px solid white; } .greeting { font-size: 1.2rem; font-weight: 600; margin-bottom: 5px; } .subtitle { color: #666; font-size: 0.9rem; margin-bottom: 25px; } .balance-card { background: linear-gradient(120deg, #445468, #617487); border-radius: 14px; padding: 20px; color: white; margin-bottom: 25px; position: relative; overflow: hidden; } .balance-card::after { content: ""; position: absolute; width: 150px; height: 150px; background: rgba(255, 255, 255, 0.1); border-radius: 50%; top: -75px; right: -75px; } .balance-label { font-size: 0.9rem; opacity: 0.8; margin-bottom: 8px; } .balance-amount { font-size: 1.8rem; font-weight: 700; margin-bottom: 15px; display: flex; align-items: center; } .balance-amount .currency { font-size: 1rem; margin-right: 5px; opacity: 0.9; } .card-details { display: flex; justify-content: space-between; font-size: 0.85rem; opacity: 0.8; } .quick-actions { display: grid; grid-template-columns: repeat(4, 1fr); gap: 15px; margin-bottom: 25px; } .action-button { display: flex; flex-direction: column; align-items: center; background: none; border: none; cursor: pointer; transition: transform 0.2s ease; } .action-button:hover { transform: translateY(-5px); } .action-button:active { transform: scale(0.95); } .action-icon { width: 50px; height: 50px; border-radius: 12px; background-color: rgba(70, 130, 180, 0.1); display: flex; align-items: center; justify-content: center; margin-bottom: 8px; transition: background-color 0.3s ease; } .action-button:hover .action-icon { background-color: rgba(70, 130, 180, 0.2); } .action-icon i { font-size: 1.2rem; color: var(--accent-blue); } .action-label { font-size: 0.8rem; color: #555; text-align: center; } .section-title { font-size: 1.1rem; font-weight: 600; margin-bottom: 15px; display: flex; justify-content: space-between; align-items: center; } .see-all { font-size: 0.8rem; color: var(--accent-blue); text-decoration: none; cursor: pointer; } .transaction-list { margin-bottom: 20px; } .transaction-item { display: flex; align-items: center; padding: 12px 0; border-bottom: 1px solid rgba(0, 0, 0, 0.05); transition: background-color 0.2s ease; cursor: pointer; } .transaction-item:hover { background-color: rgba(0, 0, 0, 0.02); } .transaction-icon { width: 40px; height: 40px; border-radius: 10px; background-color: rgba(92, 184, 92, 0.1); display: flex; align-items: center; justify-content: center; margin-right: 15px; flex-shrink: 0; } .transaction-icon.outgoing { background-color: rgba(240, 173, 78, 0.1); } .transaction-icon i { font-size: 1rem; color: var(--success-green); } .transaction-icon.outgoing i { color: var(--warning-orange); } .transaction-details { flex-grow: 1; } .transaction-name { font-weight: 500; margin-bottom: 3px; } .transaction-date { font-size: 0.8rem; color: #777; } .transaction-amount { font-weight: 600; } .transaction-amount.positive { color: var(--success-green); } .transaction-amount.negative { color: #dc3545; } .budget-progress { background-color: #f5f5f5; border-radius: 12px; padding: 15px; margin-bottom: 20px; } .budget-title { display: flex; justify-content: space-between; margin-bottom: 10px; font-weight: 500; } .budget-title span:last-child { color: #777; font-size: 0.9rem; } .progress-bar-container { width: 100%; height: 8px; background-color: #e0e0e0; border-radius: 4px; overflow: hidden; } .progress-bar { height: 100%; background-color: var(--accent-blue); width: 65%; transition: width 1s ease-in-out; } .bottom-nav { position: fixed; bottom: 0; left: 0; width: 100%; background-color: white; display: flex; justify-content: space-around; padding: 15px 0; box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); z-index: 100; } .nav-item { display: flex; flex-direction: column; align-items: center; color: #999; text-decoration: none; transition: color 0.2s ease; cursor: pointer; } .nav-item.active { color: var(--accent-blue); } .nav-icon { font-size: 1.2rem; margin-bottom: 5px; } .nav-label { font-size: 0.7rem; } /* Smart tips section */ .smart-tip { background: linear-gradient(120deg, rgba(70, 130, 180, 0.1), rgba(70, 130, 180, 0.2)); border-radius: 12px; padding: 15px; margin-bottom: 20px; position: relative; overflow: hidden; cursor: pointer; transition: transform 0.3s ease; } .smart-tip:hover { transform: scale(1.02); } .tip-header { display: flex; align-items: center; margin-bottom: 10px; } .tip-icon { background-color: rgba(70, 130, 180, 0.2); width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin-right: 10px; } .tip-icon i { color: var(--accent-blue); font-size: 0.9rem; } .tip-title { font-weight: 600; font-size: 0.95rem; } .tip-content { font-size: 0.85rem; color: #555; margin-bottom: 5px; } .tip-action { font-size: 0.8rem; color: var(--accent-blue); font-weight: 500; } /* Custom Modal */ .modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); display: flex; align-items: center; justify-content: center; z-index: 1000; opacity: 0; visibility: hidden; transition: opacity 0.3s, visibility 0.3s; } .modal.active { opacity: 1; visibility: visible; } .modal-content { background-color: white; border-radius: 18px; width: 90%; max-width: 350px; transform: translateY(20px); transition: transform 0.3s ease; padding: 25px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); } .modal.active .modal-content { transform: translateY(0); } .modal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; } .modal-title { font-weight: 600; font-size: 1.2rem; } .close-modal { background: none; border: none; font-size: 1.2rem; cursor: pointer; color: #777; } .transfer-form { display: flex; flex-direction: column; } .input-group { margin-bottom: 15px; } .input-label { display: block; margin-bottom: 5px; font-size: 0.9rem; color: #555; } .text-input, .select-input { width: 100%; padding: 12px; border: 1px solid #ddd; border-radius: 8px; font-family: var(--font-sans); font-size: 0.95rem; transition: border-color 0.3s; } .text-input:focus, .select-input:focus { border-color: var(--accent-blue); outline: none; } .btn { padding: 12px; border: none; border-radius: 8px; font-weight: 600; cursor: pointer; transition: background-color 0.3s; } .btn-primary { background-color: var(--accent-blue); color: white; } .btn-primary:hover { background-color: #3a6d93; } /* Confirmation dialog */ .confirmation-modal { text-align: center; } .confirmation-icon { width: 60px; height: 60px; background-color: rgba(92, 184, 92, 0.1); border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 20px; } .confirmation-icon i { color: var(--success-green); font-size: 1.5rem; } .confirmation-title { font-size: 1.2rem; font-weight: 600; margin-bottom: 10px; } .confirmation-message { color: #666; margin-bottom: 20px; font-size: 0.9rem; } .btn-group { display: flex; gap: 10px; } .btn-secondary { background-color: #f0f0f0; color: #333; } .btn-secondary:hover { background-color: #e0e0e0; } /* Animations */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes slideUp { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .fade-in { animation: fadeIn 0.5s ease forwards; } .slide-up { animation: slideUp 0.5s ease forwards; } /* Loading spinner */ .spinner { width: 20px; height: 20px; border: 2px solid rgba(255, 255, 255, 0.3); border-radius: 50%; border-top-color: white; animation: spin 0.8s linear infinite; margin: 0 auto; display: none; } @keyframes spin { to { transform: rotate(360deg); } } .loading .spinner { display: block; } .loading .btn-text { display: none; } /* Responsive adjustments */ @media (max-width: 480px) { .app-container { padding: 15px; } .quick-actions { grid-template-columns: repeat(4, 1fr); gap: 10px; } .action-icon { width: 40px; height: 40px; } .action-label { font-size: 0.7rem; } .balance-amount { font-size: 1.5rem; } .greeting { font-size: 1.1rem; } .nav-icon { font-size: 1rem; } .nav-label { font-size: 0.6rem; } } /* Icon fonts */ @font-face { font-family: 'Material Icons'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/materialicons/v139/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2'); } .material-icons { font-family: 'Material Icons'; font-weight: normal; font-style: normal; font-size: 24px; line-height: 1; letter-spacing: normal; text-transform: none; display: inline-block; white-space: nowrap; word-wrap: normal; direction: ltr; -webkit-font-smoothing: antialiased; } </style> </head> <body> <div class="app-container"> <div class="app-header"> <div class="logo">NexusBank</div> <div class="notification-icon"> <i class="material-icons">notifications_none</i> <div class="notification-badge"></div> </div> </div> <div class="user-welcome"> <h2 class="greeting">Hello, Alex</h2> <p class="subtitle">Your financial wellness score has increased by 12 points this month.</p> </div> <div class="balance-card"> <div class="balance-label">Available Balance</div> <div class="balance-amount"> <span class="currency">$</span> <span class="amount">5,847.35</span> </div> <div class="card-details"> <span>•••• •••• •••• 4589</span> <span>Exp: 09/24</span> </div> </div> <div class="quick-actions"> <button class="action-button" id="transfer-btn"> <div class="action-icon"> <i class="material-icons">swap_horiz</i> </div> <div class="action-label">Transfer</div> </button> <button class="action-button" id="pay-btn"> <div class="action-icon"> <i class="material-icons">payment</i> </div> <div class="action-label">Pay</div> </button> <button class="action-button" id="deposit-btn"> <div class="action-icon"> <i class="material-icons">file_download</i> </div> <div class="action-label">Deposit</div> </button> <button class="action-button" id="more-btn"> <div class="action-icon"> <i class="material-icons">apps</i> </div> <div class="action-label">More</div> </button> </div> <div class="smart-tip"> <div class="tip-header"> <div class="tip-icon"> <i class="material-icons">lightbulb</i> </div> <div class="tip-title">Smart Saving Tip</div> </div> <div class="tip-content"> Based on your spending patterns, you could save $325 monthly by optimizing subscriptions and dining expenses. </div> <div class="tip-action">View Insights →</div> </div> <div class="section-title"> <span>Recent Transactions</span> <span class="see-all">See All</span> </div> <div class="transaction-list"> <div class="transaction-item"> <div class="transaction-icon incoming"> <i class="material-icons">arrow_downward</i> </div> <div class="transaction-details"> <div class="transaction-name">Salary Deposit</div> <div class="transaction-date">Today, 9:42 AM</div> </div> <div class="transaction-amount positive">+$3,240.00</div> </div> <div class="transaction-item"> <div class="transaction-icon outgoing"> <i class="material-icons">arrow_upward</i> </div> <div class="transaction-details"> <div class="transaction-name">Whole Foods Market</div> <div class="transaction-date">Yesterday, 6:12 PM</div> </div> <div class="transaction-amount negative">-$84.25</div> </div> <div class="transaction-item"> <div class="transaction-icon outgoing"> <i class="material-icons">arrow_upward</i> </div> <div class="transaction-details"> <div class="transaction-name">Monthly Rent</div> <div class="transaction-date">May 1, 10:00 AM</div> </div> <div class="transaction-amount negative">-$1,450.00</div> </div> </div> <div class="section-title"> <span>Monthly Budget</span> <span class="see-all">Manage</span> </div> <div class="budget-progress"> <div class="budget-title"> <span>Overall Spending</span> <span>$2,190 / $3,500</span> </div> <div class="progress-bar-container"> <div class="progress-bar"></div> </div> </div> </div> <!-- Transfer Modal --> <div class="modal" id="transfer-modal"> <div class="modal-content"> <div class="modal-header"> <h3 class="modal-title">Make a Transfer</h3> <button class="close-modal" id="close-transfer-modal">×</button> </div> <form class="transfer-form" id="transfer-form"> <div class="input-group"> <label class="input-label" for="recipient">Recipient</label> <select class="select-input" id="recipient" required> <option value="" disabled selected>Select recipient</option> <option value="sarah">Sarah Johnson</option> <option value="mark">Mark Williams</option> <option value="john">John Smith</option> <option value="other">Add new recipient</option> </select> </div> <div class="input-group"> <label class="input-label" for="amount">Amount</label> <input type="number" class="text-input" id="amount" placeholder="Enter amount" required min="1"> </div> <div class="input-group"> <label class="input-label" for="note">Note (optional)</label> <input type="text" class="text-input" id="note" placeholder="What's this for?"> </div> <button type="submit" class="btn btn-primary" id="submit-transfer"> <span class="spinner"></span> <span class="btn-text">Transfer Now</span> </button> </form> </div> </div> <!-- Confirmation Modal --> <div class="modal" id="confirmation-modal"> <div class="modal-content confirmation-modal"> <div class="confirmation-icon"> <i class="material-icons">check_circle</i> </div> <h3 class="confirmation-title">Transfer Successful</h3> <p class="confirmation-message">Your transfer of <span id="transfer-amount">$0.00</span> to <span id="transfer-recipient">Recipient</span> has been initiated.</p> <div class="btn-group"> <button class="btn btn-secondary" id="close-confirmation">Close</button> <button class="btn btn-primary" id="view-details">View Details</button> </div> </div> </div> <nav class="bottom-nav"> <a class="nav-item active"> <i class="material-icons nav-icon">home</i> <span class="nav-label">Home</span> </a> <a class="nav-item"> <i class="material-icons nav-icon">account_balance_wallet</i> <span class="nav-label">Accounts</span> </a> <a class="nav-item"> <i class="material-icons nav-icon">insights</i> <span class="nav-label">Insights</span> </a> <a class="nav-item"> <i class="material-icons nav-icon">person</i> <span class="nav-label">Profile</span> </a> </nav> <script> document.addEventListener('DOMContentLoaded', function() { // Animation for elements const elements = document.querySelectorAll('.app-container > *'); elements.forEach((element, index) => { setTimeout(() => { element.classList.add('fade-in'); }, index * 100); }); // Progress bar animation setTimeout(() => { document.querySelector('.progress-bar').style.width = '65%'; }, 500); // Transfer modal functionality const transferBtn = document.getElementById('transfer-btn'); const transferModal = document.getElementById('transfer-modal'); const closeTransferModal = document.getElementById('close-transfer-modal'); const transferForm = document.getElementById('transfer-form'); const confirmationModal = document.getElementById('confirmation-modal'); const closeConfirmation = document.getElementById('close-confirmation'); const viewDetails = document.getElementById('view-details'); const transferAmount = document.getElementById('transfer-amount'); const transferRecipient = document.getElementById('transfer-recipient'); transferBtn.addEventListener('click', () => { transferModal.classList.add('active'); }); closeTransferModal.addEventListener('click', () => { transferModal.classList.remove('active'); }); transferForm.addEventListener('submit', (e) => { e.preventDefault(); const submitBtn = document.getElementById('submit-transfer'); submitBtn.classList.add('loading'); // Simulate processing time setTimeout(() => { submitBtn.classList.remove('loading'); transferModal.classList.remove('active'); // Update confirmation details const amount = document.getElementById('amount').value; const recipient = document.getElementById('recipient'); const selectedRecipient = recipient.options[recipient.selectedIndex].text; transferAmount.textContent = `$${parseFloat(amount).toFixed(2)}`; transferRecipient.textContent = selectedRecipient; // Show confirmation confirmationModal.classList.add('active'); // Reset form transferForm.reset(); }, 1500); }); closeConfirmation.addEventListener('click', () => { confirmationModal.classList.remove('active'); }); viewDetails.addEventListener('click', () => { confirmationModal.classList.remove('active'); // This would typically navigate to transaction details // But for this embed, we'll just close it }); // Close modals when clicking outside window.addEventListener('click', (e) => { if (e.target === transferModal) { transferModal.classList.remove('active'); } if (e.target === confirmationModal) { confirmationModal.classList.remove('active'); } }); // Function to set up other action buttons const setupActionButton = (id) => { const btn = document.getElementById(id); if (btn) { btn.addEventListener('click', () => { // We would typically open a specific modal for each action // For this demo, we'll just use the transfer modal for all actions transferModal.classList.add('active'); }); } }; setupActionButton('pay-btn'); setupActionButton('deposit-btn'); setupActionButton('more-btn'); // Handle navigation item clicks const navItems = document.querySelectorAll('.nav-item'); navItems.forEach(item => { item.addEventListener('click', () => { navItems.forEach(i => i.classList.remove('active')); item.classList.add('active'); }); }); // Handle smart tip click const smartTip = document.querySelector('.smart-tip'); smartTip.addEventListener('click', () => { alert("This would open a detailed insights view in a real app!"); }); // Handle see all transactions click const seeAll = document.querySelector('.see-all'); seeAll.addEventListener('click', () => { alert("This would open all transactions in a real app!"); }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>NexusGaming Portal</title> <style> :root { --neon-blue: #00f3ff; --electric-purple: #bf00ff; --dark-blue: #0a0a2a; --black: #0a0a12; --white: #ffffff; --highlight: #ff00aa; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Rajdhani', 'Orbitron', sans-serif; } body { background: linear-gradient(135deg, var(--dark-blue), var(--black)); color: var(--white); height: 100vh; width: 100%; overflow: hidden; position: relative; } .container { width: 100%; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 20px; position: relative; z-index: 2; } .gradient-background { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(60deg, var(--neon-blue), var(--electric-purple)); opacity: 0.15; z-index: 1; } .grid-lines { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: linear-gradient(to right, rgba(0, 243, 255, 0.1) 1px, transparent 1px), linear-gradient(to bottom, rgba(0, 243, 255, 0.1) 1px, transparent 1px); background-size: 50px 50px; z-index: 1; transform: perspective(500px) rotateX(60deg); transform-origin: center top; animation: gridMove 15s linear infinite; } @keyframes gridMove { 0% { background-position: 0 0; } 100% { background-position: 0 50px; } } .portal-container { position: relative; width: 100%; max-width: 600px; background: rgba(10, 10, 42, 0.7); border-radius: 15px; box-shadow: 0 0 20px rgba(0, 243, 255, 0.3), 0 0 40px rgba(191, 0, 255, 0.2); padding: 30px; backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.1); overflow: hidden; z-index: 3; } .portal-border { position: absolute; inset: 0; border: 2px solid transparent; border-radius: 15px; background: linear-gradient(90deg, var(--neon-blue), var(--electric-purple), var(--neon-blue)) border-box; -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); -webkit-mask-composite: xor; mask-composite: exclude; pointer-events: none; } .portal-header { text-align: center; margin-bottom: 25px; position: relative; } .logo { font-size: 2.5rem; font-weight: bold; letter-spacing: 2px; background: linear-gradient(90deg, var(--neon-blue), var(--electric-purple)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; text-shadow: 0 0 10px rgba(0, 243, 255, 0.7); margin-bottom: 10px; } .tagline { font-size: 1rem; color: rgba(255, 255, 255, 0.8); margin-bottom: 20px; } .menu { display: flex; justify-content: space-between; margin-bottom: 30px; gap: 10px; flex-wrap: wrap; } .menu-item { flex: 1; padding: 12px 0; text-align: center; cursor: pointer; position: relative; border-bottom: 2px solid rgba(255, 255, 255, 0.1); transition: all 0.3s ease; min-width: 80px; } .menu-item:hover, .menu-item.active { border-bottom: 2px solid var(--neon-blue); } .menu-item.active::after { content: ''; position: absolute; bottom: -2px; left: 0; width: 100%; height: 2px; background: linear-gradient(90deg, var(--neon-blue), var(--electric-purple)); animation: pulse 1.5s infinite; } @keyframes pulse { 0% { opacity: 0.6; } 50% { opacity: 1; } 100% { opacity: 0.6; } } .featured-games { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 15px; margin-bottom: 25px; } .game-card { background: rgba(10, 10, 42, 0.5); border-radius: 10px; overflow: hidden; transition: all 0.3s ease; position: relative; cursor: pointer; box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); } .game-card:hover { transform: translateY(-5px); box-shadow: 0 0 15px var(--neon-blue), 0 0 30px var(--electric-purple); } .game-card:hover .game-overlay { opacity: 1; } .game-img { width: 100%; height: 100px; object-fit: cover; object-position: center; border-radius: 10px 10px 0 0; } .game-info { padding: 10px; } .game-title { font-size: 0.9rem; font-weight: bold; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .game-genre { font-size: 0.7rem; color: rgba(255, 255, 255, 0.6); margin-top: 3px; } .game-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(to top, rgba(0, 0, 0, 0.8), transparent); display: flex; align-items: flex-end; justify-content: center; padding: 10px; opacity: 0; transition: opacity 0.3s ease; } .play-btn { background: linear-gradient(90deg, var(--neon-blue), var(--electric-purple)); border: none; border-radius: 5px; color: white; padding: 5px 15px; font-size: 0.8rem; cursor: pointer; transition: all 0.3s ease; text-transform: uppercase; letter-spacing: 1px; font-weight: bold; } .play-btn:hover { transform: scale(1.05); box-shadow: 0 0 10px rgba(0, 243, 255, 0.7); } .news-section { margin-top: 20px; } .section-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; } .section-title { font-size: 1.2rem; position: relative; padding-left: 15px; } .section-title::before { content: ''; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 5px; height: 20px; background: linear-gradient(to bottom, var(--neon-blue), var(--electric-purple)); border-radius: 5px; } .view-all { font-size: 0.8rem; color: var(--neon-blue); cursor: pointer; transition: color 0.3s ease; } .view-all:hover { color: var(--electric-purple); text-decoration: underline; } .news-item { display: flex; align-items: center; gap: 10px; padding: 10px; border-radius: 8px; background: rgba(10, 10, 42, 0.3); margin-bottom: 10px; transition: all 0.3s ease; cursor: pointer; } .news-item:hover { background: rgba(10, 10, 42, 0.5); transform: translateX(5px); } .news-thumbnail { width: 50px; height: 50px; border-radius: 8px; object-fit: cover; } .news-content { flex: 1; } .news-title { font-size: 0.9rem; font-weight: bold; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .news-meta { font-size: 0.7rem; color: rgba(255, 255, 255, 0.6); margin-top: 3px; } .login-bar { display: flex; justify-content: space-between; align-items: center; margin-top: 20px; padding: 10px 15px; background: rgba(10, 10, 42, 0.5); border-radius: 10px; border: 1px solid rgba(255, 255, 255, 0.1); } .user-status { font-size: 0.9rem; } .login-btn { background: linear-gradient(90deg, var(--neon-blue), var(--electric-purple)); border: none; border-radius: 5px; color: white; padding: 8px 20px; font-size: 0.9rem; cursor: pointer; transition: all 0.3s ease; text-transform: uppercase; letter-spacing: 1px; font-weight: bold; } .login-btn:hover { transform: scale(1.05); box-shadow: 0 0 10px rgba(0, 243, 255, 0.7); } .particles { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 0; pointer-events: none; } .particle { position: absolute; border-radius: 50%; opacity: 0.5; animation: float 15s infinite linear; } @keyframes float { 0% { transform: translateY(0) translateX(0) rotate(0deg); opacity: 0; } 10% { opacity: 0.5; } 90% { opacity: 0.5; } 100% { transform: translateY(-500px) translateX(100px) rotate(360deg); opacity: 0; } } @media (max-width: 600px) { .container { padding: 10px; } .portal-container { padding: 20px; } .logo { font-size: 2rem; } .featured-games { grid-template-columns: repeat(2, 1fr); } .menu { gap: 5px; } .menu-item { padding: 8px 0; font-size: 0.9rem; } } @media (max-width: 400px) { .featured-games { grid-template-columns: 1fr; } } </style> </head> <body> <div class="container"> <div class="gradient-background"></div> <div class="grid-lines"></div> <div class="particles" id="particles"></div> <div class="portal-container"> <div class="portal-border"></div> <div class="portal-header"> <div class="logo">NEXUS</div> <div class="tagline">Where World-Class Gamers Converge</div> </div> <div class="menu"> <div class="menu-item active">Featured</div> <div class="menu-item">New Releases</div> <div class="menu-item">Tournaments</div> <div class="menu-item">Community</div> </div> <div class="featured-games"> <div class="game-card"> <img src="https://images.unsplash.com/photo-1542751371-adc38448a05e?ixlib=rb-1.2.1&auto=format&fit=crop&w=300&q=80" alt="Neon Drift" class="game-img"> <div class="game-info"> <div class="game-title">Neon Drift</div> <div class="game-genre">Racing | Cyberpunk</div> </div> <div class="game-overlay"> <button class="play-btn">Play Now</button> </div> </div> <div class="game-card"> <img src="https://images.unsplash.com/photo-1552058544-f2b08422138a?ixlib=rb-1.2.1&auto=format&fit=crop&w=300&q=80" alt="Quantum Break" class="game-img"> <div class="game-info"> <div class="game-title">Quantum Break</div> <div class="game-genre">Shooter | Sci-Fi</div> </div> <div class="game-overlay"> <button class="play-btn">Play Now</button> </div> </div> <div class="game-card"> <img src="https://images.unsplash.com/photo-1550745165-9bc0b252726f?ixlib=rb-1.2.1&auto=format&fit=crop&w=300&q=80" alt="Astral Legends" class="game-img"> <div class="game-info"> <div class="game-title">Astral Legends</div> <div class="game-genre">MMORPG | Fantasy</div> </div> <div class="game-overlay"> <button class="play-btn">Play Now</button> </div> </div> </div> <div class="news-section"> <div class="section-header"> <div class="section-title">Latest Updates</div> <div class="view-all">View All</div> </div> <div class="news-item"> <img src="https://images.unsplash.com/photo-1560419015-7c427e8ae5ba?ixlib=rb-1.2.1&auto=format&fit=crop&w=100&q=80" alt="Tournament" class="news-thumbnail"> <div class="news-content"> <div class="news-title">Quantum Break Pro Tournament - $100K Prize Pool</div> <div class="news-meta">2 hours ago • Tournaments</div> </div> </div> <div class="news-item"> <img src="https://images.unsplash.com/photo-1511512578047-dfb367046420?ixlib=rb-1.2.1&auto=format&fit=crop&w=100&q=80" alt="Update" class="news-thumbnail"> <div class="news-content"> <div class="news-title">Neon Drift v2.5 Update: New Tracks & Vehicles</div> <div class="news-meta">Yesterday • Game Updates</div> </div> </div> </div> <div class="login-bar"> <div class="user-status">Sign in to track your progress</div> <button class="login-btn">Login</button> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { // Menu item selection const menuItems = document.querySelectorAll('.menu-item'); menuItems.forEach(item => { item.addEventListener('click', function() { menuItems.forEach(i => i.classList.remove('active')); this.classList.add('active'); }); }); // Create particles const particlesContainer = document.getElementById('particles'); const colors = ['#00f3ff', '#bf00ff', '#ff00aa']; for (let i = 0; i < 30; i++) { createParticle(); } function createParticle() { const particle = document.createElement('div'); particle.classList.add('particle'); // Random properties const size = Math.random() * 8 + 2; const color = colors[Math.floor(Math.random() * colors.length)]; const left = Math.random() * 100; const delay = Math.random() * 15; const duration = Math.random() * 10 + 10; // Apply styles particle.style.width = `${size}px`; particle.style.height = `${size}px`; particle.style.backgroundColor = color; particle.style.boxShadow = `0 0 ${size * 2}px ${color}`; particle.style.left = `${left}%`; particle.style.bottom = '-20px'; particle.style.animationDelay = `${delay}s`; particle.style.animationDuration = `${duration}s`; particlesContainer.appendChild(particle); // Remove and recreate particles setTimeout(() => { particle.remove(); createParticle(); }, duration * 1000); } // Game card hover effect const gameCards = document.querySelectorAll('.game-card'); gameCards.forEach(card => { card.addEventListener('mouseenter', function() { this.style.transform = 'translateY(-5px)'; this.style.boxShadow = '0 0 15px var(--neon-blue), 0 0 30px var(--electric-purple)'; }); card.addEventListener('mouseleave', function() { this.style.transform = ''; this.style.boxShadow = ''; }); card.addEventListener('click', function() { // Add a little click animation this.style.transform = 'scale(0.98)'; setTimeout(() => { this.style.transform = 'translateY(-5px)'; }, 150); }); }); // Login button pulse effect const loginBtn = document.querySelector('.login-btn'); loginBtn.addEventListener('mouseenter', function() { this.style.animation = 'pulse 1s infinite'; }); loginBtn.addEventListener('mouseleave', function() { this.style.animation = ''; }); // Make news items interactive const newsItems = document.querySelectorAll('.news-item'); newsItems.forEach(item => { item.addEventListener('click', function() { this.style.transform = 'scale(0.98)'; setTimeout(() => { this.style.transform = ''; }, 150); }); }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> :root { --crimson: #dc143c; --navy: #000080; --light-gray: #f4f4f4; --white: #ffffff; --dark-gray: #333333; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Roboto', 'Segoe UI', Arial, sans-serif; } body { background-color: var(--light-gray); width: 100%; height: 100%; overflow-x: hidden; } .container { max-width: 700px; margin: 0 auto; padding: 20px; height: 100%; } header { position: relative; background: linear-gradient(to right, var(--crimson), var(--navy)); padding: 20px; border-radius: 8px; overflow: hidden; box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15); margin-bottom: 30px; transform-style: preserve-3d; perspective: 1000px; } .logo { display: flex; align-items: center; margin-bottom: 15px; } .logo-icon { font-size: 28px; font-weight: bold; color: var(--white); margin-right: 10px; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3); } .logo-text { font-size: 24px; font-weight: 800; color: var(--white); text-transform: uppercase; letter-spacing: 1.5px; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3); } .header-content { position: relative; z-index: 2; } .headline { font-size: 32px; font-weight: 900; color: var(--white); margin-bottom: 15px; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3); transform: translateZ(20px); transition: transform 0.3s ease; } .subheadline { font-size: 16px; color: var(--white); margin-bottom: 25px; line-height: 1.6; max-width: 90%; opacity: 0.9; transform: translateZ(10px); } .action-buttons { display: flex; gap: 15px; margin-bottom: 15px; } .btn { padding: 10px 20px; border: none; border-radius: 5px; cursor: pointer; font-weight: 600; font-size: 14px; transition: all 0.3s ease; outline: none; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); text-transform: uppercase; letter-spacing: 0.5px; } .btn-latest { background-color: var(--white); color: var(--navy); } .btn-latest:hover { background-color: rgba(255, 255, 255, 0.9); transform: translateY(-3px); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3); } .btn-subscribe { background-color: transparent; color: var(--white); border: 2px solid var(--white); } .btn-subscribe:hover { background-color: rgba(255, 255, 255, 0.1); transform: translateY(-3px); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3); } .nav-tabs { display: flex; background-color: rgba(255, 255, 255, 0.1); border-radius: 6px; padding: 5px; margin-top: 15px; } .nav-tab { padding: 10px 15px; color: var(--white); border-radius: 4px; cursor: pointer; transition: all 0.3s ease; font-weight: 500; text-align: center; flex: 1; } .nav-tab.active { background-color: rgba(255, 255, 255, 0.2); font-weight: 700; } .nav-tab:hover:not(.active) { background-color: rgba(255, 255, 255, 0.1); } .header-particles { position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; z-index: 1; } .particle { position: absolute; border-radius: 50%; background-color: rgba(255, 255, 255, 0.5); animation: float 5s infinite ease-in-out; } .breaking-news { position: absolute; bottom: 0; left: 0; width: 100%; background-color: rgba(0, 0, 0, 0.7); padding: 10px 20px; display: flex; align-items: center; } .breaking-label { background-color: var(--crimson); color: white; padding: 4px 8px; border-radius: 4px; font-weight: 700; font-size: 12px; margin-right: 15px; text-transform: uppercase; letter-spacing: 1px; animation: pulse 2s infinite; } .news-scroll { white-space: nowrap; overflow: hidden; color: var(--white); font-size: 14px; animation: scrollNews 20s linear infinite; } .news-ticker { margin-top: 20px; padding: 15px; border-radius: 8px; background: var(--white); box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); } .ticker-header { font-size: 18px; font-weight: 700; margin-bottom: 10px; border-bottom: 2px solid var(--navy); padding-bottom: 5px; color: var(--navy); } .ticker-item { display: flex; padding: 12px 0; border-bottom: 1px solid rgba(0, 0, 0, 0.08); opacity: 0; transform: translateY(20px); transition: opacity 0.5s ease, transform 0.5s ease; } .ticker-item.visible { opacity: 1; transform: translateY(0); } .ticker-category { padding: 4px 8px; border-radius: 4px; margin-right: 10px; font-size: 12px; font-weight: 700; color: white; align-self: flex-start; text-transform: uppercase; } .category-basketball { background-color: #ff7700; } .category-football { background-color: #00a67e; } .category-soccer { background-color: #3498db; } .ticker-text { flex: 1; font-size: 14px; line-height: 1.5; color: var(--dark-gray); } .ticker-time { font-size: 12px; color: #777; padding-left: 10px; white-space: nowrap; } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } } @keyframes scrollNews { 0% { transform: translateX(100%); } 100% { transform: translateX(-100%); } } @keyframes float { 0%, 100% { transform: translateY(0) translateX(0); } 50% { transform: translateY(20px) translateX(10px); } } @media (max-width: 600px) { .headline { font-size: 24px; } .subheadline { font-size: 14px; max-width: 100%; } .action-buttons { flex-direction: column; gap: 10px; } .btn { width: 100%; } .nav-tabs { overflow-x: auto; padding: 3px; } .nav-tab { padding: 8px 12px; font-size: 13px; white-space: nowrap; } .ticker-item { flex-direction: column; } .ticker-category { margin-bottom: 8px; } .ticker-time { padding-left: 0; margin-top: 5px; } } </style> </head> <body> <div class="container"> <header id="sportsHeader"> <div class="header-particles" id="particles"></div> <div class="header-content"> <div class="logo"> <div class="logo-icon">⚡</div> <div class="logo-text">SportsZone</div> </div> <h1 class="headline">Lakers Surge Past Celtics in Epic Finals Rematch</h1> <p class="subheadline">LeBron James drops 35 points with clutch performance in the final quarter, reigniting championship hopes for the Lakers franchise.</p> <div class="action-buttons"> <button class="btn btn-latest">Latest Stories</button> <button class="btn btn-subscribe">Subscribe</button> </div> <div class="nav-tabs"> <div class="nav-tab active">NBA</div> <div class="nav-tab">NFL</div> <div class="nav-tab">MLB</div> <div class="nav-tab">Soccer</div> <div class="nav-tab">Tennis</div> </div> </div> <div class="breaking-news"> <div class="breaking-label">Breaking</div> <div class="news-scroll"> Mahomes signs record $500M extension with Chiefs • Tiger Woods announces return at Masters • Messi scores hat-trick in Champions League • US Women's team advances to Olympic finals • Yankees acquire All-Star pitcher before trade deadline </div> </div> </header> <div class="news-ticker"> <div class="ticker-header">Today's Highlights</div> <div class="ticker-items"> <div class="ticker-item"> <span class="ticker-category category-basketball">NBA</span> <span class="ticker-text">Curry breaks own record with 15 three-pointers in single game as Warriors dominate Rockets</span> <span class="ticker-time">2 hours ago</span> </div> <div class="ticker-item"> <span class="ticker-category category-football">NFL</span> <span class="ticker-text">Bills edge out Chiefs in thriller: Allen throws 4 TDs in statement victory against defending champs</span> <span class="ticker-time">4 hours ago</span> </div> <div class="ticker-item"> <span class="ticker-category category-soccer">UEFA</span> <span class="ticker-text">Real Madrid advances to Champions League semifinal after dramatic extra-time winner from Vinicius Jr.</span> <span class="ticker-time">6 hours ago</span> </div> <div class="ticker-item"> <span class="ticker-category category-basketball">WNBA</span> <span class="ticker-text">Stewart's triple-double leads Liberty to fourth straight win, setting franchise record</span> <span class="ticker-time">12 hours ago</span> </div> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { // 3D tilt effect for header const header = document.getElementById('sportsHeader'); header.addEventListener('mousemove', function(e) { const xAxis = (window.innerWidth / 2 - e.pageX) / 25; const yAxis = (window.innerHeight / 2 - e.pageY) / 25; header.style.transform = `rotateY(${xAxis}deg) rotateX(${yAxis}deg)`; }); header.addEventListener('mouseenter', function() { header.style.transition = 'none'; // Pop out effect for headline document.querySelector('.headline').style.transform = 'translateZ(50px)'; document.querySelector('.subheadline').style.transform = 'translateZ(30px)'; }); header.addEventListener('mouseleave', function() { header.style.transition = 'all 0.5s ease'; header.style.transform = 'rotateY(0deg) rotateX(0deg)'; // Reset pop out document.querySelector('.headline').style.transform = 'translateZ(20px)'; document.querySelector('.subheadline').style.transform = 'translateZ(10px)'; }); // Generate particles const particlesContainer = document.getElementById('particles'); const particleCount = 20; for (let i = 0; i < particleCount; i++) { const particle = document.createElement('div'); particle.classList.add('particle'); // Random size const size = Math.random() * 8 + 3; particle.style.width = `${size}px`; particle.style.height = `${size}px`; // Random position const posX = Math.random() * 100; const posY = Math.random() * 100; particle.style.left = `${posX}%`; particle.style.top = `${posY}%`; // Random opacity particle.style.opacity = Math.random() * 0.5 + 0.1; // Random animation delay particle.style.animationDelay = `${Math.random() * 5}s`; particlesContainer.appendChild(particle); } // Tab interaction const tabs = document.querySelectorAll('.nav-tab'); tabs.forEach(tab => { tab.addEventListener('click', function() { tabs.forEach(t => t.classList.remove('active')); this.classList.add('active'); }); }); // Animate ticker items const tickerItems = document.querySelectorAll('.ticker-item'); function animateTickerItems() { tickerItems.forEach((item, index) => { setTimeout(() => { item.classList.add('visible'); }, index * 200); }); } animateTickerItems(); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>EduJourney | Learning Platform</title> <style> :root { --primary-gradient: linear-gradient(135deg, #E0F7FF 0%, #FFF8EA 100%); --text-primary: #2A3747; --text-secondary: #5A7184; --accent-blue: #4A90E2; --accent-teal: #57C7B6; --accent-purple: #7E57C2; --shadow-soft: 0 8px 30px rgba(0, 0, 0, 0.06); --shadow-hover: 0 12px 40px rgba(74, 144, 226, 0.12); --border-radius: 12px; --transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; } body { background: var(--primary-gradient); color: var(--text-primary); height: 100vh; overflow-x: hidden; display: flex; flex-direction: column; align-items: center; justify-content: flex-start; padding: 2rem 1.5rem; } .container { max-width: 700px; width: 100%; height: 100%; display: flex; flex-direction: column; position: relative; } header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 2rem; } .logo { display: flex; align-items: center; gap: 0.5rem; font-weight: 700; font-size: 1.4rem; color: var(--accent-blue); } .logo-icon { background: var(--accent-blue); color: white; width: 32px; height: 32px; border-radius: 8px; display: flex; align-items: center; justify-content: center; } .user-menu { display: flex; align-items: center; gap: 1rem; } .avatar { width: 38px; height: 38px; border-radius: 50%; background: linear-gradient(45deg, var(--accent-teal), var(--accent-blue)); display: flex; align-items: center; justify-content: center; color: white; font-weight: 600; font-size: 0.9rem; cursor: pointer; transition: transform 0.3s ease; } .avatar:hover { transform: scale(1.05); } .notification { position: relative; cursor: pointer; } .notification-dot { position: absolute; top: -2px; right: -2px; width: 8px; height: 8px; background: #FF5757; border-radius: 50%; } h1 { font-size: 1.8rem; margin-bottom: 1rem; line-height: 1.3; } p.subtitle { color: var(--text-secondary); margin-bottom: 2rem; line-height: 1.6; font-size: 1rem; } .search-container { position: relative; margin-bottom: 2rem; } .search-input { width: 100%; padding: 1rem 1rem 1rem 3rem; border-radius: var(--border-radius); border: 1px solid rgba(0, 0, 0, 0.08); background-color: rgba(255, 255, 255, 0.9); box-shadow: var(--shadow-soft); font-size: 1rem; transition: var(--transition); } .search-input:focus { outline: none; box-shadow: var(--shadow-hover); border-color: var(--accent-blue); } .search-icon { position: absolute; left: 1rem; top: 50%; transform: translateY(-50%); color: var(--text-secondary); } .course-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1.5rem; margin-bottom: 2rem; } .course-card { background: rgba(255, 255, 255, 0.8); border-radius: var(--border-radius); overflow: hidden; box-shadow: var(--shadow-soft); transition: var(--transition); cursor: pointer; position: relative; height: 100%; display: flex; flex-direction: column; } .course-card:hover { transform: translateY(-5px); box-shadow: var(--shadow-hover); } .course-card:hover .course-progress-bar { background: linear-gradient(90deg, var(--accent-blue) 0%, var(--accent-purple) 100%); } .course-img { height: 100px; width: 100%; background-size: cover; background-position: center; position: relative; } .course-category { position: absolute; top: 10px; left: 10px; background: rgba(255, 255, 255, 0.9); padding: 0.3rem 0.6rem; border-radius: 20px; font-size: 0.7rem; font-weight: 600; } .course-content { padding: 1rem; flex-grow: 1; display: flex; flex-direction: column; } .course-title { font-weight: 600; margin-bottom: 0.5rem; line-height: 1.4; font-size: 0.95rem; } .course-info { color: var(--text-secondary); font-size: 0.8rem; margin-bottom: 0.7rem; } .course-progress { margin-top: auto; } .progress-text { display: flex; justify-content: space-between; font-size: 0.75rem; margin-bottom: 0.3rem; } .progress-bar { height: 5px; background: rgba(0, 0, 0, 0.05); border-radius: 10px; overflow: hidden; } .course-progress-bar { height: 100%; background: var(--accent-blue); border-radius: 10px; transition: width 1s ease, background 0.5s ease; } .continue-learning { margin-top: 1rem; } .continue-card { background: linear-gradient(135deg, #FFFFFF 0%, #F5F9FF 100%); border-radius: var(--border-radius); padding: 1.2rem; box-shadow: var(--shadow-soft); margin-bottom: 1rem; display: flex; gap: 1rem; transition: var(--transition); cursor: pointer; border-left: 4px solid var(--accent-teal); } .continue-card:hover { box-shadow: var(--shadow-hover); } .continue-icon { width: 45px; height: 45px; border-radius: 10px; background: var(--accent-teal); display: flex; align-items: center; justify-content: center; color: white; font-size: 1.2rem; } .continue-info { flex: 1; } .continue-title { font-weight: 600; margin-bottom: 0.3rem; font-size: 1rem; } .continue-details { color: var(--text-secondary); font-size: 0.85rem; margin-bottom: 0.5rem; } .continue-progress { display: flex; align-items: center; gap: 0.5rem; } .mini-progress { flex: 1; height: 4px; background: rgba(0, 0, 0, 0.05); border-radius: 10px; overflow: hidden; } .mini-progress-bar { height: 100%; background: var(--accent-teal); border-radius: 10px; transition: width 1s ease; } .continue-time { font-size: 0.75rem; color: var(--text-secondary); } .play-button { width: 40px; height: 40px; background: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: var(--shadow-soft); cursor: pointer; transition: var(--transition); } .play-button:hover { transform: scale(1.1); box-shadow: var(--shadow-hover); } .play-icon { color: var(--accent-teal); margin-left: 2px; } .navigation { position: fixed; bottom: 0; left: 0; right: 0; background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(10px); padding: 1rem; display: flex; justify-content: space-around; box-shadow: 0 -5px 20px rgba(0, 0, 0, 0.05); } .nav-item { display: flex; flex-direction: column; align-items: center; color: var(--text-secondary); font-size: 0.7rem; cursor: pointer; transition: var(--transition); } .nav-item.active { color: var(--accent-blue); } .nav-icon { margin-bottom: 0.3rem; font-size: 1.3rem; } .floating-button { position: fixed; bottom: 5rem; right: 1.5rem; width: 50px; height: 50px; border-radius: 50%; background: linear-gradient(135deg, var(--accent-blue) 0%, var(--accent-purple) 100%); color: white; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 20px rgba(126, 87, 194, 0.3); cursor: pointer; transition: var(--transition); font-size: 1.5rem; z-index: 100; } .floating-button:hover { transform: scale(1.1) rotate(90deg); } @media (max-width: 600px) { h1 { font-size: 1.5rem; } .course-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 1rem; } .course-img { height: 80px; } .search-input { padding: 0.8rem 0.8rem 0.8rem 2.5rem; } .search-icon { left: 0.8rem; } } /* Loading Animation */ .loader { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); display: flex; align-items: center; gap: 0.5rem; opacity: 0; visibility: hidden; transition: opacity 0.3s ease; } .loader.active { opacity: 1; visibility: visible; } .loader-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--accent-blue); animation: bounce 1.4s infinite ease-in-out both; } .loader-dot:nth-child(1) { animation-delay: -0.32s; } .loader-dot:nth-child(2) { animation-delay: -0.16s; } @keyframes bounce { 0%, 80%, 100% { transform: scale(0); } 40% { transform: scale(1); } } /* Ambient Background Animation */ .ambient-bg { position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: -1; } .floating-shape { position: absolute; border-radius: 50%; opacity: 0.3; filter: blur(40px); } .shape-1 { width: 300px; height: 300px; background: var(--accent-blue); top: -150px; right: -100px; animation: float1 25s ease-in-out infinite; } .shape-2 { width: 200px; height: 200px; background: var(--accent-teal); bottom: -100px; left: -100px; animation: float2 20s ease-in-out infinite; } .shape-3 { width: 150px; height: 150px; background: var(--accent-purple); top: 40%; left: 60%; animation: float3 15s ease-in-out infinite; } @keyframes float1 { 0%, 100% { transform: translate(0, 0) rotate(0deg); } 50% { transform: translate(30px, 50px) rotate(10deg); } } @keyframes float2 { 0%, 100% { transform: translate(0, 0) rotate(0deg); } 50% { transform: translate(20px, -30px) rotate(-5deg); } } @keyframes float3 { 0%, 100% { transform: translate(0, 0) rotate(0deg); } 50% { transform: translate(-40px, 20px) rotate(8deg); } } /* Input Focus Animation */ .focus-border { position: absolute; bottom: 0; left: 50%; width: 0; height: 2px; background: linear-gradient(90deg, var(--accent-blue) 0%, var(--accent-purple) 100%); transition: width 0.3s ease, left 0.3s ease; } .search-input:focus + .focus-border { width: 100%; left: 0; } /* Tool Tip */ .tooltip { position: absolute; background: rgba(0, 0, 0, 0.8); color: white; padding: 0.4rem 0.8rem; border-radius: 4px; font-size: 0.75rem; pointer-events: none; opacity: 0; transition: opacity 0.2s ease, transform 0.2s ease; transform: translateY(10px); z-index: 1000; white-space: nowrap; } .tooltip.active { opacity: 1; transform: translateY(0); } </style> </head> <body> <div class="ambient-bg"> <div class="floating-shape shape-1"></div> <div class="floating-shape shape-2"></div> <div class="floating-shape shape-3"></div> </div> <div class="container"> <header> <div class="logo"> <div class="logo-icon">E</div> EduJourney </div> <div class="user-menu"> <div class="notification tooltip-trigger" data-tooltip="Notifications"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"></path> <path d="M13.73 21a2 2 0 0 1-3.46 0"></path> </svg> <div class="notification-dot"></div> </div> <div class="avatar tooltip-trigger" data-tooltip="Your Profile">JD</div> </div> </header> <h1>Welcome back to your learning journey</h1> <p class="subtitle">Your personalized study space designed for focused, distraction-free learning. Continue where you left off or explore new courses.</p> <div class="search-container tooltip-trigger" data-tooltip="Search courses, topics, or instructors"> <svg class="search-icon" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <circle cx="11" cy="11" r="8"></circle> <line x1="21" y1="21" x2="16.65" y2="16.65"></line> </svg> <input type="text" class="search-input" placeholder="Search for courses or topics..."> <div class="focus-border"></div> </div> <h2>My Learning</h2> <div class="course-grid"> <div class="course-card" data-progress="68"> <div class="course-img" style="background-image: url('https://images.unsplash.com/photo-1516259762381-22954d7d3ad2?ixlib=rb-1.2.1&auto=format&fit=crop&w=400&q=80')"> <div class="course-category" style="color: var(--accent-blue);">Programming</div> </div> <div class="course-content"> <div class="course-title">Advanced JavaScript - From Fundamentals to Function</div> <div class="course-info">12 modules • 4.5 hours</div> <div class="course-progress"> <div class="progress-text"> <span>Progress</span> <span class="progress-percentage">68%</span> </div> <div class="progress-bar"> <div class="course-progress-bar" style="width: 68%"></div> </div> </div> </div> </div> <div class="course-card" data-progress="42"> <div class="course-img" style="background-image: url('https://images.unsplash.com/photo-1454165804606-c3d57bc86b40?ixlib=rb-1.2.1&auto=format&fit=crop&w=400&q=80')"> <div class="course-category" style="color: var(--accent-teal);">Business</div> </div> <div class="course-content"> <div class="course-title">Product Management Essentials</div> <div class="course-info">8 modules • 3 hours</div> <div class="course-progress"> <div class="progress-text"> <span>Progress</span> <span class="progress-percentage">42%</span> </div> <div class="progress-bar"> <div class="course-progress-bar" style="width: 42%"></div> </div> </div> </div> </div> <div class="course-card" data-progress="15"> <div class="course-img" style="background-image: url('https://images.unsplash.com/photo-1499750310107-5fef28a66643?ixlib=rb-1.2.1&auto=format&fit=crop&w=400&q=80')"> <div class="course-category" style="color: var(--accent-purple);">Design</div> </div> <div class="course-content"> <div class="course-title">UI/UX Design Principles & Practice</div> <div class="course-info">10 modules • 5 hours</div> <div class="course-progress"> <div class="progress-text"> <span>Progress</span> <span class="progress-percentage">15%</span> </div> <div class="progress-bar"> <div class="course-progress-bar" style="width: 15%"></div> </div> </div> </div> </div> </div> <div class="continue-learning"> <h2>Continue Learning</h2> <div class="continue-card"> <div class="continue-icon"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path> <polyline points="13 2 13 9 20 9"></polyline> </svg> </div> <div class="continue-info"> <div class="continue-title">JavaScript Closures & Scope Management</div> <div class="continue-details">Module 7 • Advanced JavaScript</div> <div class="continue-progress"> <div class="mini-progress"> <div class="mini-progress-bar" style="width: 35%"></div> </div> <div class="continue-time">15 min left</div> </div> </div> <div class="play-button"> <svg class="play-icon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <polygon points="5 3 19 12 5 21 5 3"></polygon> </svg> </div> </div> </div> <div class="loader"> <div class="loader-dot"></div> <div class="loader-dot"></div> <div class="loader-dot"></div> </div> <div class="tooltip"></div> </div> <div class="floating-button tooltip-trigger" data-tooltip="Discover new courses"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <line x1="12" y1="5" x2="12" y2="19"></line> <line x1="5" y1="12" x2="19" y2="12"></line> </svg> </div> <div class="navigation"> <div class="nav-item active"> <svg class="nav-icon" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path> <polyline points="9 22 9 12 15 12 15 22"></polyline> </svg> Home </div> <div class="nav-item"> <svg class="nav-icon" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path> </svg> Courses </div> <div class="nav-item"> <svg class="nav-icon" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"></path> <path d="M13.73 21a2 2 0 0 1-3.46 0"></path> </svg> Updates </div> <div class="nav-item"> <svg class="nav-icon" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <circle cx="12" cy="12" r="3"></circle> <path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path> </svg> Settings </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { // Simulate loading const loader = document.querySelector('.loader'); loader.classList.add('active'); setTimeout(function() { loader.classList.remove('active'); }, 1000); // Progress animation on scroll const courseCards = document.querySelectorAll('.course-card'); animateProgress(); function animateProgress() { courseCards.forEach(card => { const progressBar = card.querySelector('.course-progress-bar'); const progressPercentage = card.getAttribute('data-progress'); progressBar.style.width = '0%'; setTimeout(() => { progressBar.style.width = progressPercentage + '%'; }, 300); }); } // Course card hover effect courseCards.forEach(card => { card.addEventListener('mouseenter', function() { this.style.transform = 'translateY(-8px)'; }); card.addEventListener('mouseleave', function() { this.style.transform = ''; }); card.addEventListener('click', function() { showLoader(); setTimeout(() => { hideLoader(); }, 800); }); }); // Continue card interaction const continueCard = document.querySelector('.continue-card'); const playButton = document.querySelector('.play-button'); continueCard.addEventListener('mouseenter', function() { playButton.style.transform = 'scale(1.1)'; }); continueCard.addEventListener('mouseleave', function() { playButton.style.transform = ''; }); playButton.addEventListener('click', function(e) { e.stopPropagation(); this.style.transform = 'scale(0.9)'; setTimeout(() => { this.style.transform = 'scale(1.1)'; showLoader(); setTimeout(() => { hideLoader(); }, 800); }, 100); }); continueCard.addEventListener('click', function() { showLoader(); setTimeout(() => { hideLoader(); }, 800); }); // Navigation item interaction const navItems = document.querySelectorAll('.nav-item'); navItems.forEach(item => { item.addEventListener('click', function() { navItems.forEach(navItem => { navItem.classList.remove('active'); }); this.classList.add('active'); showLoader(); setTimeout(() => { hideLoader(); }, 800); }); }); // Floating button interaction const floatingButton = document.querySelector('.floating-button'); floatingButton.addEventListener('click', function() { this.style.transform = 'scale(0.9) rotate(45deg)'; setTimeout(() => { this.style.transform = 'scale(1.1) rotate(90deg)'; showLoader(); setTimeout(() => { hideLoader(); }, 800); }, 100); }); // Search interaction const searchInput = document.querySelector('.search-input'); searchInput.addEventListener('focus', function() { this.parentNode.style.boxShadow = 'var(--shadow-hover)'; }); searchInput.addEventListener('blur', function() { this.parentNode.style.boxShadow = ''; }); // Tooltip functionality const tooltipTriggers = document.querySelectorAll('.tooltip-trigger'); const tooltip = document.querySelector('.tooltip'); tooltipTriggers.forEach(trigger => { trigger.addEventListener('mouseenter', function(e) { const tooltipText = this.getAttribute('data-tooltip'); tooltip.textContent = tooltipText; const rect = this.getBoundingClientRect(); tooltip.style.top = rect.bottom + 10 + 'px'; tooltip.style.left = rect.left + (rect.width / 2) - (tooltip.offsetWidth / 2) + 'px'; tooltip.classList.add('active'); }); trigger.addEventListener('mouseleave', function() { tooltip.classList.remove('active'); }); }); function showLoader() { loader.classList.add('active'); } function hideLoader() { loader.classList.remove('active'); } }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Executive Dashboard</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', 'Roboto', 'Helvetica Neue', sans-serif; } body { background: linear-gradient(135deg, #1a1a1a 0%, #363636 100%); color: #f0f0f0; display: flex; flex-direction: column; min-height: 700px; max-height: 700px; width: 100%; max-width: 700px; overflow: hidden; padding: 20px; transition: all 0.3s ease; } .dashboard-container { display: flex; flex-direction: column; height: 100%; width: 100%; } header { display: flex; justify-content: space-between; align-items: center; padding-bottom: 20px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); } .logo { display: flex; align-items: center; } .logo-icon { width: 36px; height: 36px; background-color: #4a88ff; border-radius: 8px; margin-right: 10px; position: relative; overflow: hidden; } .logo-icon::before { content: ""; position: absolute; width: 65%; height: 65%; background: rgba(255, 255, 255, 0.9); top: 50%; left: 50%; transform: translate(-50%, -50%); clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); } .logo-text { font-weight: 700; font-size: 1.2rem; letter-spacing: 0.5px; } .profile { display: flex; align-items: center; gap: 12px; } .profile-avatar { width: 40px; height: 40px; border-radius: 50%; background: #4a88ff; display: flex; align-items: center; justify-content: center; font-weight: bold; color: white; position: relative; cursor: pointer; } .profile-avatar::after { content: ""; position: absolute; width: 8px; height: 8px; background: #34d399; border-radius: 50%; bottom: 0; right: 0; border: 2px solid #1a1a1a; } .notification-bell { position: relative; cursor: pointer; margin-right: 15px; } .notification-count { position: absolute; top: -5px; right: -5px; background: #f43f5e; color: white; font-size: 0.65rem; font-weight: bold; height: 16px; width: 16px; display: flex; align-items: center; justify-content: center; border-radius: 50%; } .dashboard-grid { display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: auto 1fr 1fr; gap: 20px; flex-grow: 1; margin-top: 20px; overflow-y: auto; } .widget { background: rgba(255, 255, 255, 0.05); border-radius: 8px; padding: 15px; backdrop-filter: blur(10px); transition: transform 0.3s ease, box-shadow 0.3s ease; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); overflow: hidden; position: relative; } .widget:hover { transform: translateY(-5px); box-shadow: 0 10px 15px rgba(0, 0, 0, 0.15); } .widget::after { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 3px; background: linear-gradient(90deg, #4a88ff, #34d399); transform: scaleX(0); transform-origin: left; transition: transform 0.3s ease; } .widget:hover::after { transform: scaleX(1); } .widget-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; } .widget-title { font-size: 0.9rem; font-weight: 600; color: rgba(255, 255, 255, 0.9); } .widget-actions { display: flex; gap: 5px; } .widget-action { width: 24px; height: 24px; border-radius: 4px; background: rgba(255, 255, 255, 0.1); display: flex; align-items: center; justify-content: center; cursor: pointer; transition: background 0.2s ease; } .widget-action:hover { background: rgba(255, 255, 255, 0.2); } .widget-content { height: calc(100% - 30px); } /* Specific widget styling */ .kpi-grid { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 10px; height: 100%; } .kpi-item { display: flex; flex-direction: column; align-items: flex-start; padding: 10px; background: rgba(0, 0, 0, 0.1); border-radius: 6px; transition: transform 0.2s ease; } .kpi-item:hover { transform: scale(1.05); background: rgba(0, 0, 0, 0.2); } .kpi-label { font-size: 0.7rem; color: rgba(255, 255, 255, 0.7); margin-bottom: 5px; } .kpi-value { font-size: 1.2rem; font-weight: 700; } .kpi-change { font-size: 0.7rem; margin-top: 3px; display: flex; align-items: center; gap: 3px; } .positive { color: #34d399; } .negative { color: #f43f5e; } .chart-container { width: 100%; height: 85%; } .revenue-chart { width: 100%; height: 100%; position: relative; } .chart-bars { display: flex; justify-content: space-between; align-items: flex-end; height: 80%; padding-top: 10px; } .chart-bar { width: 12%; background: #4a88ff; border-radius: 3px 3px 0 0; position: relative; transition: height 1s cubic-bezier(0.34, 1.56, 0.64, 1); height: 10%; } .chart-bar:hover { background: #5e9aff; } .chart-bar::after { content: attr(data-value); position: absolute; top: -20px; left: 50%; transform: translateX(-50%); font-size: 0.65rem; color: rgba(255, 255, 255, 0.8); opacity: 0; transition: opacity 0.3s ease; } .chart-bar:hover::after { opacity: 1; } .chart-labels { display: flex; justify-content: space-between; margin-top: 5px; } .chart-label { font-size: 0.6rem; color: rgba(255, 255, 255, 0.6); width: 12%; text-align: center; } .project-status { grid-column: span 3; } .project-list { height: calc(100% - 10px); overflow-y: auto; } .project-item { display: flex; justify-content: space-between; align-items: center; padding: 10px; border-radius: 6px; margin-bottom: 8px; background: rgba(0, 0, 0, 0.1); transition: transform 0.2s ease, background 0.2s ease; } .project-item:hover { transform: translateX(5px); background: rgba(0, 0, 0, 0.2); } .project-info { display: flex; flex-direction: column; } .project-name { font-size: 0.85rem; font-weight: 600; margin-bottom: 5px; } .project-details { display: flex; gap: 10px; font-size: 0.7rem; color: rgba(255, 255, 255, 0.7); } .project-progress { display: flex; align-items: center; gap: 10px; } .progress-bar { width: 100px; height: 6px; background: rgba(255, 255, 255, 0.1); border-radius: 3px; overflow: hidden; } .progress-fill { height: 100%; border-radius: 3px; transition: width 0.5s ease; } .on-track { background: #34d399; } .delayed { background: #fb923c; } .at-risk { background: #f43f5e; } .progress-text { font-size: 0.7rem; font-weight: 600; } .tasks-widget { grid-column: span 2; } .tasks-list { height: calc(100% - 10px); overflow-y: auto; } .task-item { display: flex; align-items: center; padding: 10px; background: rgba(0, 0, 0, 0.1); border-radius: 6px; margin-bottom: 8px; transition: transform 0.2s ease, background 0.2s ease; } .task-item:hover { transform: translateX(5px); background: rgba(0, 0, 0, 0.2); } .task-checkbox { appearance: none; -webkit-appearance: none; width: 18px; height: 18px; border-radius: 4px; margin-right: 10px; border: 2px solid rgba(255, 255, 255, 0.3); position: relative; cursor: pointer; transition: background 0.2s ease, border 0.2s ease; } .task-checkbox:checked { background: #4a88ff; border-color: #4a88ff; } .task-checkbox:checked::after { content: "✓"; position: absolute; color: white; font-size: 0.7rem; font-weight: bold; top: 50%; left: 50%; transform: translate(-50%, -50%); } .task-content { display: flex; flex-direction: column; flex-grow: 1; } .task-name { font-size: 0.85rem; transition: text-decoration 0.2s ease, opacity 0.2s ease; } .task-checkbox:checked + .task-content .task-name { text-decoration: line-through; opacity: 0.6; } .task-meta { display: flex; gap: 10px; font-size: 0.7rem; color: rgba(255, 255, 255, 0.6); margin-top: 3px; } .task-priority { padding: 2px 6px; border-radius: 4px; font-size: 0.65rem; font-weight: 500; } .priority-high { background: rgba(244, 63, 94, 0.2); color: #f43f5e; } .priority-medium { background: rgba(251, 146, 60, 0.2); color: #fb923c; } .priority-low { background: rgba(52, 211, 153, 0.2); color: #34d399; } .meetings-widget { position: relative; } .meetings-list { height: calc(100% - 10px); overflow-y: auto; } .meeting-item { padding: 10px; background: rgba(0, 0, 0, 0.1); border-radius: 6px; margin-bottom: 8px; transition: transform 0.2s ease, background 0.2s ease; border-left: 3px solid #4a88ff; } .meeting-item:hover { transform: translateX(5px); background: rgba(0, 0, 0, 0.2); } .meeting-time { font-size: 0.75rem; color: rgba(255, 255, 255, 0.7); margin-bottom: 5px; display: flex; align-items: center; gap: 5px; } .meeting-title { font-size: 0.85rem; font-weight: 600; margin-bottom: 5px; } .meeting-participants { display: flex; margin-top: 8px; } .participant { width: 24px; height: 24px; border-radius: 50%; background: #4a88ff; display: flex; align-items: center; justify-content: center; font-size: 0.7rem; font-weight: 600; color: white; margin-right: -8px; border: 2px solid rgba(26, 26, 26, 0.8); } .participant:nth-child(2) { background: #f43f5e; } .participant:nth-child(3) { background: #34d399; } .participant:nth-child(4) { background: #fb923c; } .more-participants { background: rgba(255, 255, 255, 0.2); } /* Custom scrollbar */ ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: rgba(255, 255, 255, 0.05); border-radius: 3px; } ::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.2); border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.3); } /* Responsive layouts */ @media (max-width: 700px) { .dashboard-grid { grid-template-columns: 1fr; } .kpi-widget, .revenue-chart-widget, .project-status, .tasks-widget, .meetings-widget { grid-column: span 1; } .chart-bars { height: 70%; } .widget { min-height: 150px; } } @media (max-width: 500px) { body { padding: 15px; } .logo-text { font-size: 1rem; } .dashboard-grid { gap: 15px; } .widget { padding: 10px; } .kpi-value { font-size: 1rem; } } /* Shine effect on widgets */ .widget::before { content: ""; position: absolute; top: 0; left: -100%; width: 50%; height: 100%; background: linear-gradient( to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0) ); transform: skewX(-25deg); transition: all 0.75s; } .widget:hover::before { left: 150%; } /* Pulse animation for notification */ @keyframes pulse { 0% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.1); opacity: 0.8; } 100% { transform: scale(1); opacity: 1; } } .notification-count { animation: pulse 2s infinite; } /* Loading animation for charts */ @keyframes loadBars { 0% { height: 0%; } 100% { height: var(--target-height); } } .chart-bar { animation: loadBars 1.5s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; } /* Date display */ .date-display { font-size: 0.85rem; color: rgba(255, 255, 255, 0.7); margin-top: 4px; } </style> </head> <body> <div class="dashboard-container"> <header> <div class="logo"> <div class="logo-icon"></div> <div class="logo-text">ExecDash</div> </div> <div class="profile"> <div class="notification-bell"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"></path> <path d="M13.73 21a2 2 0 0 1-3.46 0"></path> </svg> <div class="notification-count">3</div> </div> <div class="profile-avatar">KJ</div> </div> </header> <div class="dashboard-grid"> <div class="widget kpi-widget"> <div class="widget-header"> <div class="widget-title">Key Performance Indicators</div> <div class="widget-actions"> <div class="widget-action"> <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <circle cx="12" cy="12" r="1"></circle> <circle cx="19" cy="12" r="1"></circle> <circle cx="5" cy="12" r="1"></circle> </svg> </div> </div> </div> <div class="widget-content"> <div class="kpi-grid"> <div class="kpi-item"> <div class="kpi-label">REVENUE</div> <div class="kpi-value">$3.2M</div> <div class="kpi-change positive"> <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <polyline points="18 15 12 9 6 15"></polyline> </svg> 8.7% </div> </div> <div class="kpi-item"> <div class="kpi-label">PROFIT MARGIN</div> <div class="kpi-value">23.4%</div> <div class="kpi-change positive"> <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <polyline points="18 15 12 9 6 15"></polyline> </svg> 2.1% </div> </div> <div class="kpi-item"> <div class="kpi-label">CUSTOMER ACQUISITION</div> <div class="kpi-value">134</div> <div class="kpi-change negative"> <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <polyline points="6 9 12 15 18 9"></polyline> </svg> 4.3% </div> </div> <div class="kpi-item"> <div class="kpi-label">EMPLOYEE RETENTION</div> <div class="kpi-value">94.8%</div> <div class="kpi-change positive"> <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <polyline points="18 15 12 9 6 15"></polyline> </svg> 1.2% </div> </div> </div> </div> </div> <div class="widget revenue-chart-widget"> <div class="widget-header"> <div class="widget-title">Quarterly Revenue</div> <div class="widget-actions"> <div class="widget-action"> <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect> <line x1="3" y1="9" x2="21" y2="9"></line> <line x1="9" y1="21" x2="9" y2="9"></line> </svg> </div> </div> </div> <div class="widget-content"> <div class="chart-container"> <div class="revenue-chart"> <div class="chart-bars"> <div class="chart-bar" style="--target-height: 45%" data-value="$1.9M"></div> <div class="chart-bar" style="--target-height: 60%" data-value="$2.5M"></div> <div class="chart-bar" style="--target-height: 75%" data-value="$3.1M"></div> <div class="chart-bar" style="--target-height: 65%" data-value="$2.7M"></div> <div class="chart-bar" style="--target-height: 85%" data-value="$3.5M"></div> <div class="chart-bar" style="--target-height: 95%" data-value="$3.9M"></div> </div> <div class="chart-labels"> <div class="chart-label">Q1 21</div> <div class="chart-label">Q2 21</div> <div class="chart-label">Q3 21</div> <div class="chart-label">Q4 21</div> <div class="chart-label">Q1 22</div> <div class="chart-label">Q2 22</div> </div> </div> </div> </div> </div> <div class="widget"> <div class="widget-header"> <div class="widget-title">Sales Pipeline</div> <div class="widget-actions"> <div class="widget-action"> <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <polyline points="3 6 5 6 21 6"></polyline> <path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path> </svg> </div> </div> </div> <div class="widget-content"> <div class="kpi-grid"> <div class="kpi-item"> <div class="kpi-label">LEADS</div> <div class="kpi-value">487</div> <div class="kpi-change positive"> <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <polyline points="18 15 12 9 6 15"></polyline> </svg> 12.4% </div> </div> <div class="kpi-item"> <div class="kpi-label">QUALIFIED</div> <div class="kpi-value">215</div> <div class="kpi-change positive"> <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <polyline points="18 15 12 9 6 15"></polyline> </svg> 7.5% </div> </div> <div class="kpi-item"> <div class="kpi-label">PROPOSALS</div> <div class="kpi-value">98</div> <div class="kpi-change negative"> <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <polyline points="6 9 12 15 18 9"></polyline> </svg> 3.8% </div> </div> <div class="kpi-item"> <div class="kpi-label">CLOSED</div> <div class="kpi-value">42</div> <div class="kpi-change positive"> <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <polyline points="18 15 12 9 6 15"></polyline> </svg> 5.0% </div> </div> </div> </div> </div> <div class="widget project-status"> <div class="widget-header"> <div class="widget-title">Strategic Initiatives</div> <div class="widget-actions"> <div class="widget-action"> <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon> </svg> </div> </div> </div> <div class="widget-content"> <div class="project-list"> <div class="project-item"> <div class="project-info"> <div class="project-name">Market Expansion - APAC Region</div> <div class="project-details"> <span>Lead: J. Wong</span> <span>Budget: $1.2M</span> <span>Due: Q4 2022</span> </div> </div> <div class="project-progress"> <div class="progress-bar"> <div class="progress-fill on-track" style="width: 72%"></div> </div> <div class="progress-text">72%</div> </div> </div> <div class="project-item"> <div class="project-info"> <div class="project-name">Supply Chain Optimization</div> <div class="project-details"> <span>Lead: M. Patel</span> <span>Budget: $850K</span> <span>Due: Q3 2022</span> </div> </div> <div class="project-progress"> <div class="progress-bar"> <div class="progress-fill delayed" style="width: 58%"></div> </div> <div class="progress-text">58%</div> </div> </div> <div class="project-item"> <div class="project-info"> <div class="project-name">Digital Transformation Initiative</div> <div class="project-details"> <span>Lead: A. Garcia</span> <span>Budget: $3.5M</span> <span>Due: Q1 2023</span> </div> </div> <div class="project-progress"> <div class="progress-bar"> <div class="progress-fill at-risk" style="width: 34%"></div> </div> <div class="progress-text">34%</div> </div> </div> <div class="project-item"> <div class="project-info"> <div class="project-name">Product Line Expansion</div> <div class="project-details"> <span>Lead: S. Johnson</span> <span>Budget: $1.7M</span> <span>Due: Q2 2022</span> </div> </div> <div class="project-progress"> <div class="progress-bar"> <div class="progress-fill on-track" style="width: 89%"></div> </div> <div class="progress-text">89%</div> </div> </div> </div> </div> </div> <div class="widget tasks-widget"> <div class="widget-header"> <div class="widget-title">Executive Action Items</div> <div class="widget-actions"> <div class="widget-action"> <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <line x1="12" y1="5" x2="12" y2="19"></line> <line x1="5" y1="12" x2="19" y2="12"></line> </svg> </div> </div> </div> <div class="widget-content"> <div class="tasks-list"> <div class="task-item"> <input type="checkbox" class="task-checkbox"> <div class="task-content"> <div class="task-name">Review Q2 financial forecast with CFO</div> <div class="task-meta"> <span>Due: Today</span> <span class="task-priority priority-high">High Priority</span> </div> </div> </div> <div class="task-item"> <input type="checkbox" class="task-checkbox" checked> <div class="task-content"> <div class="task-name">Approve marketing budget for Q3 campaigns</div> <div class="task-meta"> <span>Due: Yesterday</span> <span class="task-priority priority-medium">Medium Priority</span> </div> </div> </div> <div class="task-item"> <input type="checkbox" class="task-checkbox"> <div class="task-content"> <div class="task-name">Finalize acquisition strategy for TechSolutions Inc.</div> <div class="task-meta"> <span>Due: Jul 15</span> <span class="task-priority priority-high">High Priority</span> </div> </div> </div> <div class="task-item"> <input type="checkbox" class="task-checkbox"> <div class="task-content"> <div class="task-name">Review HR report on employee satisfaction</div> <div class="task-meta"> <span>Due: Jul 18</span> <span class="task-priority priority-low">Low Priority</span> </div> </div> </div> </div> </div> </div> <div class="widget meetings-widget"> <div class="widget-header"> <div class="widget-title">Today's Schedule</div> <div class="date-display" id="current-date">Jul 12, 2022</div> </div> <div class="widget-content"> <div class="meetings-list"> <div class="meeting-item"> <div class="meeting-time"> <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <circle cx="12" cy="12" r="10"></circle> <polyline points="12 6 12 12 16 14"></polyline> </svg> 9:00 - 10:30 AM </div> <div class="meeting-title">Board Strategy Review</div> <div class="meeting-participants"> <div class="participant">JD</div> <div class="participant">RK</div> <div class="participant">LM</div> <div class="participant">TS</div> <div class="participant more-participants">+3</div> </div> </div> <div class="meeting-item"> <div class="meeting-time"> <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <circle cx="12" cy="12" r="10"></circle> <polyline points="12 6 12 12 16 14"></polyline> </svg> 11:00 - 12:00 PM </div> <div class="meeting-title">Quarterly Business Review</div> <div class="meeting-participants"> <div class="participant">KJ</div> <div class="participant">MP</div> <div class="participant more-participants">+5</div> </div> </div> <div class="meeting-item"> <div class="meeting-time"> <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <circle cx="12" cy="12" r="10"></circle> <polyline points="12 6 12 12 16 14"></polyline> </svg> 2:30 - 3:30 PM </div> <div class="meeting-title">Investor Relations Call</div> <div class="meeting-participants"> <div class="participant">KJ
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>QuantaLeap | AI-Powered Cloud Solutions</title> <style> :root { --gradient-start: #0b1c5e; --gradient-end: #8123d9; --accent-color: #03f4fc; --text-color: #e2e6f8; --card-bg: rgba(255, 255, 255, 0.08); --card-border: rgba(255, 255, 255, 0.1); } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; } @keyframes gradientShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } @keyframes floatUp { 0% { transform: translateY(20px); opacity: 0; } 100% { transform: translateY(0); opacity: 1; } } @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(3, 244, 252, 0.6); } 70% { box-shadow: 0 0 0 10px rgba(3, 244, 252, 0); } 100% { box-shadow: 0 0 0 0 rgba(3, 244, 252, 0); } } @keyframes glowBorder { 0% { border-color: rgba(3, 244, 252, 0.3); } 50% { border-color: rgba(3, 244, 252, 0.8); } 100% { border-color: rgba(3, 244, 252, 0.3); } } body { background: linear-gradient(135deg, var(--gradient-start), var(--gradient-end)); background-size: 200% 200%; animation: gradientShift 15s ease infinite; color: var(--text-color); overflow-x: hidden; min-height: 700px; } .container { max-width: 700px; height: 700px; margin: 0 auto; padding: 20px; overflow-y: auto; scrollbar-width: thin; scrollbar-color: var(--accent-color) transparent; } .container::-webkit-scrollbar { width: 5px; } .container::-webkit-scrollbar-track { background: transparent; } .container::-webkit-scrollbar-thumb { background-color: var(--accent-color); border-radius: 10px; } header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 30px; animation: floatUp 0.8s ease-out; } .logo { display: flex; align-items: center; gap: 8px; } .logo-icon { width: 40px; height: 40px; background: var(--accent-color); border-radius: 10px; display: grid; place-items: center; position: relative; } .logo-icon::before, .logo-icon::after { content: ''; position: absolute; background-color: var(--gradient-start); border-radius: 50%; } .logo-icon::before { width: 18px; height: 18px; } .logo-icon::after { width: 8px; height: 8px; background-color: var(--accent-color); transform: translate(8px, -8px); } .logo-text { font-weight: 800; font-size: 1.5rem; letter-spacing: -0.5px; } nav ul { display: flex; list-style: none; gap: 20px; } nav a { color: var(--text-color); text-decoration: none; font-size: 0.9rem; font-weight: 500; opacity: 0.8; transition: opacity 0.3s, transform 0.3s; padding: 5px 0; position: relative; } nav a:hover { opacity: 1; transform: translateY(-2px); } nav a::after { content: ''; position: absolute; bottom: 0; left: 0; width: 0; height: 2px; background-color: var(--accent-color); transition: width 0.3s; } nav a:hover::after { width: 100%; } .hero { display: flex; flex-direction: column; gap: 30px; margin-bottom: 40px; animation: floatUp 1s ease-out 0.2s backwards; } h1 { font-size: 2.8rem; font-weight: 800; line-height: 1.2; letter-spacing: -1px; margin-bottom: 15px; } h1 span { background: linear-gradient(90deg, #fff, var(--accent-color)); -webkit-background-clip: text; background-clip: text; color: transparent; } .hero p { font-size: 1.1rem; line-height: 1.6; opacity: 0.9; max-width: 650px; } .cta-buttons { display: flex; gap: 15px; margin-top: 10px; } .btn { padding: 12px 24px; border-radius: 8px; font-weight: 600; font-size: 1rem; cursor: pointer; transition: all 0.3s; border: none; display: flex; align-items: center; gap: 8px; } .btn-primary { background-color: var(--accent-color); color: var(--gradient-start); animation: pulse 2s infinite; } .btn-primary:hover { transform: scale(1.05); box-shadow: 0 5px 15px rgba(3, 244, 252, 0.4); } .btn-secondary { background-color: transparent; border: 1px solid var(--accent-color); color: var(--text-color); animation: glowBorder 3s infinite; } .btn-secondary:hover { background-color: rgba(3, 244, 252, 0.1); transform: scale(1.05); } .features { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 20px; margin-bottom: 40px; } .feature-card { background-color: var(--card-bg); border: 1px solid var(--card-border); border-radius: 12px; padding: 20px; transition: all 0.3s; backdrop-filter: blur(10px); animation: floatUp 1.2s ease-out 0.4s backwards; } .feature-card:nth-child(2) { animation-delay: 0.6s; } .feature-card:nth-child(3) { animation-delay: 0.8s; } .feature-card:hover { transform: translateY(-5px); background-color: rgba(255, 255, 255, 0.12); box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2); border-color: var(--accent-color); } .feature-icon { background-color: rgba(3, 244, 252, 0.2); width: 50px; height: 50px; border-radius: 10px; display: grid; place-items: center; margin-bottom: 15px; color: var(--accent-color); font-size: 1.5rem; } .feature-card h3 { font-size: 1.2rem; margin-bottom: 10px; font-weight: 700; } .feature-card p { font-size: 0.9rem; opacity: 0.8; line-height: 1.5; } .get-started { background-color: var(--card-bg); border: 1px solid var(--card-border); border-radius: 12px; padding: 30px; position: relative; overflow: hidden; margin-top: 30px; animation: floatUp 1.4s ease-out 1s backwards; } .get-started::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(135deg, rgba(3, 244, 252, 0.1), rgba(129, 35, 217, 0.1)); z-index: -1; } .get-started h2 { font-size: 1.8rem; margin-bottom: 15px; font-weight: 700; } .get-started p { font-size: 1rem; margin-bottom: 20px; line-height: 1.6; } .email-capture { display: flex; gap: 10px; margin-top: 20px; } .email-input { flex: 1; background-color: rgba(255, 255, 255, 0.08); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 8px; padding: 12px 15px; color: var(--text-color); font-size: 1rem; transition: all 0.3s; } .email-input:focus { outline: none; border-color: var(--accent-color); background-color: rgba(255, 255, 255, 0.12); } .email-input::placeholder { color: rgba(255, 255, 255, 0.5); } .client-logos { display: flex; justify-content: space-between; align-items: center; margin-top: 30px; opacity: 0.6; } .client-logos div { font-size: 0.9rem; font-weight: 600; letter-spacing: 1px; filter: grayscale(100%); transition: all 0.3s; } .client-logos div:hover { filter: grayscale(0%); opacity: 1; } .floating-shapes { position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; pointer-events: none; z-index: -1; } .shape { position: absolute; background-color: rgba(3, 244, 252, 0.1); border-radius: 50%; opacity: 0.5; filter: blur(5px); } .particles-container { position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: -1; } .particle { position: absolute; background-color: rgba(255, 255, 255, 0.3); border-radius: 50%; } footer { margin-top: 40px; opacity: 0.7; font-size: 0.8rem; text-align: center; animation: floatUp 1.6s ease-out 1.2s backwards; } /* Mobile optimizations */ @media (max-width: 600px) { header { flex-direction: column; align-items: flex-start; gap: 15px; } nav ul { gap: 12px; padding-top: 5px; } h1 { font-size: 2.2rem; } .hero p { font-size: 1rem; } .cta-buttons { flex-direction: column; width: 100%; } .btn { width: 100%; justify-content: center; } .features { grid-template-columns: 1fr; } .email-capture { flex-direction: column; } } /* Cursor effect */ .cursor-follow { position: fixed; width: 30px; height: 30px; border-radius: 50%; background-color: rgba(3, 244, 252, 0.4); pointer-events: none; mix-blend-mode: lighten; transform: translate(-50%, -50%) scale(0); z-index: 9999; transition: transform 0.15s ease-out; } </style> </head> <body> <div class="cursor-follow"></div> <div class="particles-container"></div> <div class="container"> <header> <div class="logo"> <div class="logo-icon"></div> <div class="logo-text">QuantaLeap</div> </div> <nav> <ul> <li><a href="#" class="nav-link">Solutions</a></li> <li><a href="#" class="nav-link">Pricing</a></li> <li><a href="#" class="nav-link">About</a></li> </ul> </nav> </header> <section class="hero"> <div> <h1>Supercharge your business with our <span>AI-powered cloud</span> platform</h1> <p>QuantaLeap orchestrates breakthrough ML models, quantum algorithms, and decentralized infrastructure in one seamless, deploy-ready platform for organizations pushing the boundaries of what's possible.</p> <div class="cta-buttons"> <button class="btn btn-primary">Get a demo <span>→</span></button> <button class="btn btn-secondary">View solutions</button> </div> </div> </section> <section class="features"> <div class="feature-card"> <div class="feature-icon">⚡</div> <h3>Quantum-Ready APIs</h3> <p>Future-proof infrastructure with our scalable quantum computing APIs that seamlessly bridge classic and quantum processing.</p> </div> <div class="feature-card"> <div class="feature-icon">🔮</div> <h3>Predictive Analytics</h3> <p>Process billions of data points in real-time with ML models that continuously evolve with your operational needs.</p> </div> <div class="feature-card"> <div class="feature-icon">🛡️</div> <h3>Zero-Trust Security</h3> <p>Enterprise-grade encryption with distributed ledger verification for tamper-proof data integrity across all processes.</p> </div> </section> <section class="get-started"> <h2>Ready to transform your tech stack?</h2> <p>Join 1,500+ tech-forward companies using QuantaLeap to power their next-gen applications. Book a personalized walkthrough with our solutions engineers.</p> <div class="email-capture"> <input type="email" class="email-input" placeholder="Your work email"> <button class="btn btn-primary">Schedule demo</button> </div> <div class="client-logos"> <div>NVIDIA</div> <div>ORACLE</div> <div>TESLA</div> <div>STRIPE</div> <div>AIRBNB</div> </div> </section> <footer> <p>© 2023 QuantaLeap Technologies, Inc. — Pioneering the next frontier of cloud computing.</p> </footer> </div> <script> // Cursor follow effect const cursorFollow = document.createElement('div'); cursorFollow.classList.add('cursor-follow'); document.body.appendChild(cursorFollow); document.addEventListener('mousemove', (e) => { const { clientX, clientY } = e; // Delay the cursor position update slightly for a trailing effect setTimeout(() => { cursorFollow.style.transform = `translate(${clientX}px, ${clientY}px) scale(1)`; }, 10); }); document.addEventListener('mouseout', () => { cursorFollow.style.transform = 'translate(-50%, -50%) scale(0)'; }); // Interactive elements glow effect const interactiveElements = document.querySelectorAll('button, a, .feature-card'); interactiveElements.forEach(element => { element.addEventListener('mouseenter', () => { cursorFollow.style.transform = 'translate(-50%, -50%) scale(2.5)'; cursorFollow.style.backgroundColor = 'rgba(3, 244, 252, 0.2)'; }); element.addEventListener('mouseleave', () => { cursorFollow.style.transform = 'translate(-50%, -50%) scale(1)'; cursorFollow.style.backgroundColor = 'rgba(3, 244, 252, 0.4)'; }); }); // Create floating particles function createParticles() { const particlesContainer = document.querySelector('.particles-container'); const particleCount = 25; for (let i = 0; i < particleCount; i++) { const particle = document.createElement('div'); particle.classList.add('particle'); // Random properties const size = Math.random() * 4 + 1; const posX = Math.random() * 100; const posY = Math.random() * 100; const opacity = Math.random() * 0.5 + 0.1; const animDuration = Math.random() * 40 + 20; const delay = Math.random() * 10; // Apply styles particle.style.width = `${size}px`; particle.style.height = `${size}px`; particle.style.left = `${posX}%`; particle.style.top = `${posY}%`; particle.style.opacity = opacity; // Create keyframe animation for each particle const animName = `float-${i}`; const keyframes = ` @keyframes ${animName} { 0% { transform: translate(0, 0); } 25% { transform: translate(${Math.random() * 100 - 50}px, ${Math.random() * 100 - 50}px); } 50% { transform: translate(${Math.random() * 100 - 50}px, ${Math.random() * 100 - 50}px); } 75% { transform: translate(${Math.random() * 100 - 50}px, ${Math.random() * 100 - 50}px); } 100% { transform: translate(0, 0); } } `; // Add animation style const styleSheet = document.createElement('style'); styleSheet.innerText = keyframes; document.head.appendChild(styleSheet); // Apply animation particle.style.animation = `${animName} ${animDuration}s ease-in-out ${delay}s infinite`; particlesContainer.appendChild(particle); } } createParticles(); // Form submission prevention document.addEventListener('submit', (e) => { e.preventDefault(); const emailInput = document.querySelector('.email-input'); if (emailInput.value) { emailInput.value = ''; emailInput.placeholder = 'Thanks! We'll be in touch soon'; } }); // Add click handler to all buttons to prevent page refresh document.querySelectorAll('button').forEach(button => { button.addEventListener('click', (e) => { e.preventDefault(); // Add a satisfying click feedback button.style.transform = 'scale(0.95)'; setTimeout(() => { button.style.transform = ''; }, 150); // For the email button specifically if (button.parentNode.classList.contains('email-capture')) { const emailInput = document.querySelector('.email-input'); if (emailInput.value) { emailInput.value = ''; emailInput.placeholder = 'Thanks! We'll be in touch soon'; } } }); }); // Make sure links don't navigate away document.querySelectorAll('a').forEach(link => { link.addEventListener('click', (e) => { e.preventDefault(); }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Serenity Lifestyle Magazine</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Montserrat', sans-serif; } @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&family=Playfair+Display:wght@400;500;600;700&display=swap'); body { background: linear-gradient(90deg, #ffd1dc 0%, #e6e6fa 100%); display: flex; justify-content: center; align-items: center; height: 100vh; overflow: hidden; } .magazine-container { width: 100%; max-width: 400px; height: 550px; position: relative; background: white; border-radius: 8px; box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15); overflow: hidden; transition: transform 0.5s ease, box-shadow 0.5s ease; } .magazine-container:hover { transform: translateY(-10px) scale(1.02); box-shadow: 0 30px 60px rgba(0, 0, 0, 0.2); } .magazine-header { height: 70%; overflow: hidden; position: relative; } .magazine-image { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s ease; } .magazine-container:hover .magazine-image { transform: scale(1.05); } .magazine-title { position: absolute; top: 15px; width: 100%; text-align: center; z-index: 2; } .title-text { font-family: 'Playfair Display', serif; font-size: 40px; font-weight: 700; color: #fff; text-shadow: 0 2px 10px rgba(0, 0, 0, 0.3); letter-spacing: 1px; transform: translateY(-50px); opacity: 0; animation: slideDown 0.8s ease forwards 0.2s; } .issue-info { font-size: 12px; color: #fff; text-transform: uppercase; letter-spacing: 3px; margin-top: 5px; text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); transform: translateY(30px); opacity: 0; animation: slideUp 0.8s ease forwards 0.5s; } .headline { position: absolute; bottom: 0; left: 0; width: 100%; background: linear-gradient(0deg, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0) 100%); padding: 60px 20px 20px; color: white; } .headline h2 { font-size: 22px; font-weight: 600; margin-bottom: 10px; line-height: 1.3; transform: translateY(20px); opacity: 0; animation: slideUp 0.8s ease forwards 0.8s; } .tagline { font-size: 12px; font-weight: 400; line-height: 1.4; opacity: 0.9; transform: translateY(20px); opacity: 0; animation: slideUp 0.8s ease forwards 1s; } .magazine-content { height: 30%; padding: 20px; background: white; position: relative; } .topics { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 15px; } .topic { background: linear-gradient(90deg, #ffd1dc 0%, #e6e6fa 100%); padding: 5px 12px; border-radius: 20px; font-size: 11px; font-weight: 500; color: #444; cursor: pointer; transition: transform 0.3s ease, box-shadow 0.3s ease; transform: translateY(15px); opacity: 0; animation: topicAppear 0.4s ease forwards; } .topic:hover { transform: translateY(-3px); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.08); } .topic:nth-child(1) { animation-delay: 1.2s; } .topic:nth-child(2) { animation-delay: 1.3s; } .topic:nth-child(3) { animation-delay: 1.4s; } .topic:nth-child(4) { animation-delay: 1.5s; } .features { list-style: none; } .feature-item { margin-bottom: 6px; font-size: 13px; color: #555; display: flex; align-items: center; transform: translateX(-20px); opacity: 0; animation: slideRight 0.6s ease forwards; } .feature-item:nth-child(1) { animation-delay: 1.6s; } .feature-item:nth-child(2) { animation-delay: 1.7s; } .feature-item:nth-child(3) { animation-delay: 1.8s; } .feature-item:before { content: '•'; color: #e6a5c3; font-size: 18px; margin-right: 8px; } .magazine-footer { position: absolute; bottom: 15px; right: 20px; display: flex; align-items: center; gap: 10px; transform: translateY(20px); opacity: 0; animation: slideUp 0.8s ease forwards 2s; } .qr-code { width: 40px; height: 40px; background: #f8f8f8; border-radius: 6px; display: flex; justify-content: center; align-items: center; font-size: 8px; color: #888; text-align: center; border: 1px solid #eee; } .scan-text { font-size: 10px; color: #888; } .gradient-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(135deg, rgba(255, 209, 220, 0.3) 0%, rgba(230, 230, 250, 0.3) 100%); mix-blend-mode: overlay; pointer-events: none; } .price-tag { position: absolute; top: 20px; right: -5px; background: white; color: #444; padding: 6px 12px; font-weight: 600; font-size: 14px; transform: rotate(3deg); box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1); z-index: 10; transform: translateX(50px); opacity: 0; animation: slideLeft 0.6s ease forwards 1.2s; } .price-tag:after { content: ''; position: absolute; bottom: -10px; right: 0; width: 0; height: 0; border-top: 10px solid #e6e6e6; border-right: 10px solid transparent; } @keyframes slideDown { to { transform: translateY(0); opacity: 1; } } @keyframes slideUp { to { transform: translateY(0); opacity: 1; } } @keyframes slideRight { to { transform: translateX(0); opacity: 1; } } @keyframes slideLeft { to { transform: translateX(0); opacity: 1; } } @keyframes topicAppear { to { transform: translateY(0); opacity: 1; } } .reflection { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(135deg, rgba(255, 255, 255, 0.3) 0%, rgba(255, 255, 255, 0) 50%); pointer-events: none; opacity: 0; animation: reflectionMove 3s ease-in-out infinite alternate; } @keyframes reflectionMove { 0% { opacity: 0; transform: translateX(-100%) translateY(-100%) rotate(30deg); } 100% { opacity: 0.4; transform: translateX(100%) translateY(100%) rotate(30deg); } } @media (max-width: 450px) { .magazine-container { max-width: 320px; height: 500px; } .title-text { font-size: 32px; } .headline h2 { font-size: 18px; } .tagline { font-size: 11px; } } </style> </head> <body> <div class="magazine-container"> <div class="magazine-header"> <img src="https://images.unsplash.com/photo-1600618528240-fb9fc964b853?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1935&q=80" alt="Woman in pastel outfit" class="magazine-image"> <div class="gradient-overlay"></div> <div class="reflection"></div> <div class="magazine-title"> <h1 class="title-text">SERENITY</h1> <p class="issue-info">JUNE 2023 • ISSUE 42</p> </div> <div class="headline"> <h2>The Pastel Renaissance: How Soft Colors Transform Your Space & Mindset</h2> <p class="tagline">Explore the psychological benefits of living in a pastel-infused environment</p> </div> <div class="price-tag">$8.95</div> </div> <div class="magazine-content"> <div class="topics"> <div class="topic">Mindful Living</div> <div class="topic">Color Psychology</div> <div class="topic">Pastel Trends</div> <div class="topic">Summer 2023</div> </div> <ul class="features"> <li class="feature-item">Curated pastel palettes for every room in your home</li> <li class="feature-item">Celebrity designer reveals their gentle approach to spaces</li> <li class="feature-item">The science of color: Why pastels bring comfort & clarity</li> </ul> <div class="magazine-footer"> <div class="qr-code">SCAN<br>FOR<br>BONUS</div> <p class="scan-text">Scan for exclusive<br>digital content</p> </div> </div> </div> <script> document.addEventListener('mousemove', function(e) { const container = document.querySelector('.magazine-container'); const rect = container.getBoundingClientRect(); // Calculate mouse position relative to the center of the container const x = e.clientX - rect.left - rect.width / 2; const y = e.clientY - rect.top - rect.height / 2; // Calculate rotation angles based on mouse position // Reduce the effect by dividing by higher values const rotateX = y / 30; const rotateY = -x / 30; // Apply the 3D rotation transform container.style.transform = `perspective(1000px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) translateY(-10px) scale(1.02)`; // Reset when mouse is far from the container if (Math.abs(x) > rect.width || Math.abs(y) > rect.height) { container.style.transform = 'translateY(-10px) scale(1.02)'; } }); document.addEventListener('mouseleave', function() { const container = document.querySelector('.magazine-container'); container.style.transform = 'translateY(-10px) scale(1.02)'; }); // Ensure the container resets to normal state when mouse leaves const container = document.querySelector('.magazine-container'); container.addEventListener('mouseleave', function() { this.style.transform = 'translateY(-10px) scale(1.02)'; }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Wellspring Health Portal</title> <style> :root { --primary-color: #40E0D0; --secondary-color: #8AFFE5; --text-color: #333; --light-text: #666; --white: #ffffff; --success-color: #4CAF50; --warning-color: #FF9800; --shadow: 0 4px 12px rgba(0, 0, 0, 0.08); --transition: all 0.3s ease; --radius: 12px; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } body { background: linear-gradient(135deg, var(--secondary-color) 0%, var(--white) 100%); color: var(--text-color); min-height: 700px; overflow-x: hidden; display: flex; flex-direction: column; line-height: 1.6; } .container { width: 100%; max-width: 700px; margin: 0 auto; padding: 20px; overflow-y: auto; height: 100%; } header { margin-bottom: 20px; padding: 15px 0; text-align: center; position: relative; } .logo { display: flex; align-items: center; justify-content: center; margin-bottom: 15px; } .logo-img { width: 40px; height: 40px; background: var(--white); border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: var(--shadow); margin-right: 10px; } .logo-text { font-size: 1.6rem; font-weight: 600; color: var(--text-color); } h1 { font-size: 1.8rem; font-weight: 600; color: var(--text-color); margin-bottom: 10px; } p { color: var(--light-text); margin-bottom: 20px; } .welcome-bar { background: rgba(255, 255, 255, 0.8); backdrop-filter: blur(10px); border-radius: var(--radius); padding: 15px 25px; margin-bottom: 30px; box-shadow: var(--shadow); display: flex; align-items: center; justify-content: space-between; transition: var(--transition); } .welcome-bar:hover { box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12); transform: translateY(-2px); } .welcome-text h2 { font-size: 1.2rem; margin-bottom: 5px; } .welcome-text p { font-size: 0.9rem; margin-bottom: 0; } .notification-bell { position: relative; background: var(--white); width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); transition: var(--transition); } .notification-bell:hover { transform: scale(1.05); } .notification-dot { position: absolute; top: 10px; right: 10px; width: 8px; height: 8px; background-color: #FF5252; border-radius: 50%; } .card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; margin-bottom: 30px; } .card { background: rgba(255, 255, 255, 0.9); border-radius: var(--radius); padding: 20px; box-shadow: var(--shadow); cursor: pointer; transition: var(--transition); position: relative; overflow: hidden; } .card:hover { box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12); transform: translateY(-5px); } .card::before { content: ''; position: absolute; top: 0; left: 0; width: 4px; height: 100%; background: var(--primary-color); opacity: 0.5; } .card:hover::before { opacity: 1; } .card-icon { background: rgba(64, 224, 208, 0.1); width: 50px; height: 50px; border-radius: 12px; display: flex; align-items: center; justify-content: center; margin-bottom: 15px; } .card h3 { font-size: 1.1rem; margin-bottom: 10px; } .card p { font-size: 0.9rem; color: var(--light-text); margin-bottom: 15px; } .card-link { display: inline-flex; align-items: center; font-size: 0.9rem; color: var(--primary-color); font-weight: 500; transition: var(--transition); } .card-link:hover { opacity: 0.8; } .card-link span { margin-left: 5px; transition: var(--transition); } .card:hover .card-link span { transform: translateX(3px); } .upcoming-appointments { background: rgba(255, 255, 255, 0.9); border-radius: var(--radius); padding: 25px; box-shadow: var(--shadow); margin-bottom: 30px; } .section-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; } .section-header h2 { font-size: 1.2rem; } .view-all { font-size: 0.9rem; color: var(--primary-color); font-weight: 500; cursor: pointer; transition: var(--transition); } .view-all:hover { opacity: 0.8; } .appointment-item { display: flex; align-items: center; padding: 15px; border-radius: var(--radius); background: var(--white); margin-bottom: 15px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); transition: var(--transition); } .appointment-item:hover { box-shadow: 0 5px 15px rgba(0, 0, 0, 0.08); } .appointment-item:last-child { margin-bottom: 0; } .appointment-date { min-width: 80px; height: 80px; background: rgba(64, 224, 208, 0.1); border-radius: 12px; display: flex; flex-direction: column; align-items: center; justify-content: center; margin-right: 15px; } .appointment-day { font-size: 1.2rem; font-weight: 700; color: var(--primary-color); } .appointment-month { font-size: 0.9rem; color: var(--light-text); } .appointment-time { font-size: 0.9rem; color: var(--light-text); } .appointment-info { flex: 1; } .appointment-title { font-weight: 600; margin-bottom: 5px; } .appointment-doctor { font-size: 0.9rem; color: var(--light-text); margin-bottom: 5px; } .appointment-type { display: inline-block; font-size: 0.75rem; padding: 2px 10px; background: rgba(64, 224, 208, 0.1); color: var(--primary-color); border-radius: 20px; } .appointment-actions { display: flex; gap: 10px; } .appointment-action { width: 36px; height: 36px; background: var(--white); border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); transition: var(--transition); } .appointment-action:hover { transform: scale(1.1); } .quick-actions { display: flex; flex-wrap: wrap; gap: 15px; margin-bottom: 30px; } .quick-action { flex: 1; min-width: 130px; background: rgba(255, 255, 255, 0.9); border-radius: var(--radius); padding: 15px; display: flex; flex-direction: column; align-items: center; justify-content: center; box-shadow: var(--shadow); cursor: pointer; transition: var(--transition); } .quick-action:hover { box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12); transform: translateY(-3px); } .quick-action-icon { width: 50px; height: 50px; background: rgba(64, 224, 208, 0.1); border-radius: 50%; display: flex; align-items: center; justify-content: center; margin-bottom: 10px; } .quick-action-label { font-size: 0.9rem; font-weight: 500; text-align: center; } footer { margin-top: auto; padding: 20px; font-size: 0.9rem; color: var(--light-text); text-align: center; } @media (max-width: 600px) { .card-grid { grid-template-columns: 1fr; } .quick-actions { flex-direction: column; } .appointment-item { flex-direction: column; align-items: flex-start; } .appointment-date { margin-right: 0; margin-bottom: 15px; width: 100%; height: 60px; flex-direction: row; justify-content: space-around; } } /* Animations */ @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .pulse { animation: pulse 2s infinite; } .fade-in { opacity: 0; transform: translateY(20px); animation: fadeIn 0.5s forwards; } #health-tip { background: rgba(255, 255, 255, 0.9); border-radius: var(--radius); padding: 20px; box-shadow: var(--shadow); margin-bottom: 20px; position: relative; overflow: hidden; transition: var(--transition); } #health-tip:hover { box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12); } #health-tip::before { content: ''; position: absolute; width: 80px; height: 80px; background: rgba(64, 224, 208, 0.1); border-radius: 50%; top: -30px; right: -30px; z-index: 0; } #health-tip::after { content: ''; position: absolute; width: 40px; height: 40px; background: rgba(64, 224, 208, 0.1); border-radius: 50%; bottom: -15px; left: 30px; z-index: 0; } #health-tip-content { position: relative; z-index: 1; } #health-tip h3 { margin-bottom: 10px; display: flex; align-items: center; } #health-tip h3 svg { margin-right: 10px; } </style> </head> <body> <div class="container"> <header> <div class="logo"> <div class="logo-img"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M19 14C20.49 12.54 22 10.79 22 8C22 4.69 19.31 2 16 2C13.76 2 11.8 3.39 11 5.5C10.2 3.39 8.24 2 6 2C2.69 2 0 4.69 0 8C0 10.79 1.5 12.54 3 14" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> <path d="M12 22V14M12 22H7M12 22H17" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> </svg> </div> <div class="logo-text">Wellspring</div> </div> <h1>Your Health Portal</h1> <p>Accessible healthcare services, personalized for you</p> </header> <div class="welcome-bar fade-in" style="animation-delay: 0.1s;"> <div class="welcome-text"> <h2>Good afternoon, Emily</h2> <p>Your next appointment is in 2 days</p> </div> <div class="notification-bell" id="notificationBell"> <div class="notification-dot"></div> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12 22C13.1 22 14 21.1 14 20H10C10 21.1 10.9 22 12 22ZM18 16V11C18 7.93 16.36 5.36 13.5 4.68V4C13.5 3.17 12.83 2.5 12 2.5C11.17 2.5 10.5 3.17 10.5 4V4.68C7.63 5.36 6 7.92 6 11V16L4 18V19H20V18L18 16Z" fill="#666"/> </svg> </div> </div> <div id="health-tip" class="fade-in" style="animation-delay: 0.2s;"> <div id="health-tip-content"> <h3> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M12 16V12" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M12 8H12.01" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> Daily Health Tip </h3> <p>Regular hydration can improve sleep quality, cognitive function, and mood. Aim for 8 glasses of water daily.</p> </div> </div> <div class="quick-actions fade-in" style="animation-delay: 0.3s;"> <div class="quick-action" id="appointmentAction"> <div class="quick-action-icon"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M19 4H5C3.89543 4 3 4.89543 3 6V20C3 21.1046 3.89543 22 5 22H19C20.1046 22 21 21.1046 21 20V6C21 4.89543 20.1046 4 19 4Z" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M16 2V6" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M8 2V6" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M3 10H21" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="quick-action-label">Schedule Appointment</div> </div> <div class="quick-action" id="medicationAction"> <div class="quick-action-icon"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M19 13H13V19H11V13H5V11H11V5H13V11H19V13Z" fill="#40E0D0"/> </svg> </div> <div class="quick-action-label">Medication Refill</div> </div> <div class="quick-action" id="messageAction"> <div class="quick-action-icon"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M21 11.5C21.0034 12.8199 20.6951 14.1219 20.1 15.3C19.3944 16.7118 18.3098 17.8992 16.9674 18.7293C15.6251 19.5594 14.0782 19.9994 12.5 20C11.1801 20.0035 9.87812 19.6951 8.7 19.1L3 21L4.9 15.3C4.30493 14.1219 3.99656 12.8199 4 11.5C4.00061 9.92179 4.44061 8.37488 5.27072 7.03258C6.10083 5.69028 7.28825 4.6056 8.7 3.90003C9.87812 3.30496 11.1801 2.99659 12.5 3.00003H13C15.0843 3.11502 17.053 3.99479 18.5291 5.47089C20.0052 6.94699 20.885 8.91568 21 11V11.5Z" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="quick-action-label">Message Provider</div> </div> <div class="quick-action" id="resultsAction"> <div class="quick-action-icon"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M14 2H6C5.46957 2 4.96086 2.21071 4.58579 2.58579C4.21071 2.96086 4 3.46957 4 4V20C4 20.5304 4.21071 21.0391 4.58579 21.4142C4.96086 21.7893 5.46957 22 6 22H18C18.5304 22 19.0391 21.7893 19.4142 21.4142C19.7893 21.0391 20 20.5304 20 20V8L14 2Z" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M14 2V8H20" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M16 13H8" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M16 17H8" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M10 9H9H8" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="quick-action-label">View Test Results</div> </div> </div> <div class="upcoming-appointments fade-in" style="animation-delay: 0.4s;"> <div class="section-header"> <h2>Upcoming Appointments</h2> <span class="view-all">View All</span> </div> <div class="appointment-item"> <div class="appointment-date"> <div class="appointment-day">15</div> <div class="appointment-month">Nov</div> <div class="appointment-time">10:30 AM</div> </div> <div class="appointment-info"> <div class="appointment-title">Annual Physical Exam</div> <div class="appointment-doctor">Dr. Sarah Johnson</div> <div class="appointment-type">In-Person</div> </div> <div class="appointment-actions"> <div class="appointment-action" title="Reschedule"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M23 4V10H17" stroke="#666" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M1 20V14H7" stroke="#666" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M3.51 9.00001C4.01717 7.56619 4.87913 6.27098 5.99993 5.20999C7.12073 4.14901 8.4673 3.35588 9.93853 2.89391C11.4098 2.43194 12.9643 2.31455 14.4723 2.55262C15.9803 2.79069 17.3968 3.37618 18.61 4.26001L23 8.00001M1 16L5.39 19.74C6.60324 20.6238 8.01971 21.2093 9.52769 21.4474C11.0357 21.6855 12.5902 21.5681 14.0615 21.1061C15.5327 20.6441 16.8792 19.851 18.0001 18.79C19.1209 17.729 19.9829 16.4338 20.49 15" stroke="#666" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="appointment-action" title="Cancel"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M18 6L6 18" stroke="#666" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M6 6L18 18" stroke="#666" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> </div> </div> <div class="appointment-item"> <div class="appointment-date"> <div class="appointment-day">22</div> <div class="appointment-month">Nov</div> <div class="appointment-time">2:15 PM</div> </div> <div class="appointment-info"> <div class="appointment-title">Therapy Session</div> <div class="appointment-doctor">Dr. Michael Chen</div> <div class="appointment-type">Virtual</div> </div> <div class="appointment-actions"> <div class="appointment-action" title="Reschedule"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M23 4V10H17" stroke="#666" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M1 20V14H7" stroke="#666" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M3.51 9.00001C4.01717 7.56619 4.87913 6.27098 5.99993 5.20999C7.12073 4.14901 8.4673 3.35588 9.93853 2.89391C11.4098 2.43194 12.9643 2.31455 14.4723 2.55262C15.9803 2.79069 17.3968 3.37618 18.61 4.26001L23 8.00001M1 16L5.39 19.74C6.60324 20.6238 8.01971 21.2093 9.52769 21.4474C11.0357 21.6855 12.5902 21.5681 14.0615 21.1061C15.5327 20.6441 16.8792 19.851 18.0001 18.79C19.1209 17.729 19.9829 16.4338 20.49 15" stroke="#666" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="appointment-action" title="Cancel"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M18 6L6 18" stroke="#666" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M6 6L18 18" stroke="#666" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> </div> </div> </div> <div class="card-grid fade-in" style="animation-delay: 0.5s;"> <div class="card" id="prenatalCard"> <div class="card-icon"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M12 8V16" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M8 12H16" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <h3>Prenatal Care</h3> <p>Comprehensive care throughout your pregnancy journey.</p> <div class="card-link"> Learn more <span>→</span> </div> </div> <div class="card" id="teleHealthCard"> <div class="card-icon"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M23 7L16 12L23 17V7Z" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M14 5H3C1.89543 5 1 5.89543 1 7V17C1 18.1046 1.89543 19 3 19H14C15.1046 19 16 18.1046 16 17V7C16 5.89543 15.1046 5 14 5Z" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <h3>Telehealth Services</h3> <p>Connect with healthcare providers from the comfort of home.</p> <div class="card-link"> Schedule visit <span>→</span> </div> </div> <div class="card" id="mentalHealthCard"> <div class="card-icon"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12 15C15.866 15 19 11.866 19 8C19 4.13401 15.866 1 12 1C8.13401 1 5 4.13401 5 8C5 11.866 8.13401 15 12 15Z" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M8.21 13.89L7 23L12 20L17 23L15.79 13.88" stroke="#40E0D0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <h3>Mental Health</h3> <p>Support for anxiety, depression, and stress management.</p> <div class="card-link"> Explore resources <span>→</span> </div> </div> </div> <footer class="fade-in" style="animation-delay: 0.6s;"> <p>© 2023 Wellspring Health Portal. Privacy Policy | Terms of Service</p> </footer> </div> <script> document.addEventListener('DOMContentLoaded', function() { // Health tip rotation const healthTips = [ "Regular hydration can improve sleep quality, cognitive function, and mood. Aim for 8 glasses of water daily.", "Taking short breaks to stretch every hour can reduce eye strain and improve circulation when working at a desk.", "Daily meditation for just 10 minutes can significantly reduce stress levels and improve focus.", "Adults need 7-9 hours of quality sleep each night for optimal cognitive and physical health." ]; let currentTipIndex = 0; const tipElement = document.getElementById('health-tip-content').querySelector('p'); function rotateTip() { currentTipIndex = (currentTipIndex + 1) % healthTips.length; tipElement.style.opacity = 0; setTimeout(() => { tipElement.textContent = healthTips[currentTipIndex]; tipElement.style.opacity = 1; }, 500); } setInterval(rotateTip, 10000); // Notification bell interaction const notificationBell = document.getElementById('notificationBell'); notificationBell.addEventListener('click', function() { if (this.querySelector('.notification-dot')) { this.querySelector('.notification-dot').remove(); // Show notification toast const toast = document.createElement('div'); toast.style.position = 'fixed'; toast.style.top = '20px'; toast.style.left = '50%'; toast.style.transform = 'translateX(-50%)'; toast.style.backgroundColor = 'rgba(255, 255, 255, 0.95)'; toast.style.padding = '15px 20px'; toast.style.borderRadius = '10px'; toast.style.boxShadow = '0 4px 12px rgba(0, 0, 0, 0.15)'; toast.style.zIndex = '1000'; toast.style.maxWidth = '300px'; toast.innerHTML = ` <div style="font-weight: 600; margin-bottom: 5px;">New lab results available</div> <div style="font-size: 0.9rem; color: #666;">Your recent blood work results are ready to view.</div> `; document.body.appendChild(toast); setTimeout(() => { toast.style.opacity = 0; toast.style.transition = 'opacity 0.5s ease'; setTimeout(() => { document.body.removeChild(toast); }, 500); }, 3000); } }); // Quick action buttons const quickActions = document.querySelectorAll('.quick-action'); quickActions.forEach(action => { action.addEventListener('click', function() { // Add pulse animation this.classList.add('pulse'); setTimeout(() => { this.classList.remove('pulse'); }, 2000); // Show appropriate feedback const actionName = this.querySelector('.quick-action-label').textContent; const toast = document.createElement('div'); toast.style.position = 'fixed'; toast.style.bottom = '20px'; toast.style.left = '50%'; toast.style.transform = 'translateX(-50%)'; toast.style.backgroundColor = 'rgba(64, 224, 208, 0.9)'; toast.style.color = 'white'; toast.style.padding = '15px 20px'; toast.style.borderRadius = '10px'; toast.style.boxShadow = '0 4px 12px rgba(0, 0, 0, 0.15)'; toast.style.zIndex = '1000'; toast.textContent = `${actionName} section is opening...`; document.body.appendChild(toast); setTimeout(() => { toast.style.opacity = 0; toast.style.transition =