Blur effects can transform a simple design into a visually captivating masterpiece. They add depth, focus, and a touch of elegance to any user interface.
In this article, we will explore 10 stunning examples of blur effects that can elevate your design projects. Each example showcases the versatility and impact of this powerful design tool.
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 effortless to design pixel-perfect UI, including stunning blur effects. Loved by designers and developers alike, Subframe ensures your creations are both beautiful and functional.
Start for free and elevate your design projects 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
backdrop-filter
and optimize images to ensure smooth performance across all devices.Ready to elevate your design projects? With Subframe, you can create pixel-perfect UIs, including stunning blur effects, in minutes. Our drag-and-drop interface 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"> <title>Pulse Entertainment</title> <style> :root { --primary-dark: #0d111c; --secondary-dark: #151c2c; --accent-dark: #1f2942; --text-primary: #f0f2f8; --text-secondary: #a8b0c5; --accent-color: #8764ff; --accent-color-secondary: #ff4d8d; --gradient-primary: linear-gradient(135deg, #8764ff 0%, #ff4d8d 100%); } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; } body { background-color: var(--primary-dark); color: var(--text-primary); display: flex; flex-direction: column; align-items: center; justify-content: flex-start; min-height: 100vh; overflow-x: hidden; overflow-y: auto; padding: 20px; max-width: 700px; margin: 0 auto; } .header { width: 100%; padding: 15px 0; display: flex; justify-content: space-between; align-items: center; position: relative; z-index: 5; } .logo { font-size: 24px; font-weight: 700; background: var(--gradient-primary); -webkit-background-clip: text; background-clip: text; color: transparent; letter-spacing: -0.5px; } .nav-button { background: transparent; border: none; color: var(--text-secondary); cursor: pointer; font-size: 16px; padding: 8px 12px; border-radius: 6px; transition: all 0.3s ease; } .nav-button:hover { color: var(--text-primary); background-color: rgba(255, 255, 255, 0.05); } .banner { width: 100%; height: 200px; border-radius: 16px; margin: 15px 0; overflow: hidden; position: relative; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2); } .banner-img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s ease; } .banner:hover .banner-img { transform: scale(1.05); } .banner-content { position: absolute; bottom: 0; left: 0; width: 100%; padding: 20px; background: linear-gradient(0deg, rgba(13, 17, 28, 0.9) 0%, rgba(13, 17, 28, 0) 100%); } .banner-title { font-size: 22px; font-weight: 700; margin-bottom: 8px; } .banner-desc { font-size: 14px; color: var(--text-secondary); max-width: 80%; } .category-title { width: 100%; font-size: 18px; font-weight: 600; margin: 25px 0 15px 0; display: flex; align-items: center; justify-content: space-between; } .see-all { font-size: 14px; color: var(--accent-color); font-weight: 500; cursor: pointer; opacity: 0.8; transition: opacity 0.3s ease; } .see-all:hover { opacity: 1; } .media-row { display: flex; overflow-x: auto; gap: 15px; padding: 5px 0; scroll-behavior: smooth; width: 100%; scrollbar-width: none; /* Hide scrollbar for Firefox */ } .media-row::-webkit-scrollbar { display: none; /* Hide scrollbar for Chrome, Safari, and Opera */ } .media-card { min-width: 140px; border-radius: 12px; overflow: hidden; position: relative; cursor: pointer; transition: transform 0.3s ease, box-shadow 0.3s ease; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); height: 200px; } .media-card:hover { transform: translateY(-5px); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2); } .media-img { width: 100%; height: 100%; object-fit: cover; } .media-overlay { position: absolute; bottom: 0; left: 0; width: 100%; padding: 12px; background: linear-gradient(0deg, rgba(13, 17, 28, 0.9) 0%, rgba(13, 17, 28, 0) 100%); opacity: 0; transition: opacity 0.3s ease; } .media-card:hover .media-overlay { opacity: 1; } .media-title { font-size: 14px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .media-info { font-size: 12px; color: var(--text-secondary); display: flex; align-items: center; gap: 6px; margin-top: 3px; } .rating { display: flex; align-items: center; gap: 3px; } .rating-icon { color: #ffd700; font-size: 10px; } .categories { display: flex; flex-wrap: wrap; gap: 10px; width: 100%; margin: 25px 0 15px 0; } .category-pill { background-color: var(--accent-dark); color: var(--text-secondary); padding: 8px 16px; border-radius: 20px; font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.3s ease; } .category-pill.active { background: var(--gradient-primary); color: #fff; } .category-pill:hover:not(.active) { background-color: rgba(31, 41, 66, 0.9); color: var(--text-primary); } .modal-container { position: fixed; top: 0; left: 0; width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; z-index: 100; opacity: 0; pointer-events: none; transition: opacity 0.3s ease; } .modal-container.active { opacity: 1; pointer-events: all; } .modal-backdrop { position: absolute; top: 0; left: 0; width: 100%; height: 100%; backdrop-filter: blur(0px); background-color: rgba(13, 17, 28, 0.4); transition: backdrop-filter 0.5s cubic-bezier(0.16, 1, 0.3, 1), background-color 0.5s cubic-bezier(0.16, 1, 0.3, 1); z-index: 101; } .modal-container.active .modal-backdrop { backdrop-filter: blur(15px); background-color: rgba(13, 17, 28, 0.7); } .modal-content { position: relative; width: 85%; max-width: 650px; max-height: 85vh; background-color: var(--secondary-dark); border-radius: 20px; overflow: hidden; z-index: 102; transform: scale(0.9); opacity: 0; transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1); box-shadow: 0 20px 80px rgba(0, 0, 0, 0.3); } .modal-container.active .modal-content { transform: scale(1); opacity: 1; } .modal-header { width: 100%; height: 250px; position: relative; } .modal-img { width: 100%; height: 100%; object-fit: cover; } .modal-close { position: absolute; top: 15px; right: 15px; width: 36px; height: 36px; background-color: rgba(13, 17, 28, 0.6); border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; z-index: 103; transition: background-color 0.3s ease; } .modal-close:hover { background-color: rgba(13, 17, 28, 0.9); } .modal-body { padding: 25px; } .modal-title { font-size: 24px; font-weight: 700; margin-bottom: 10px; } .modal-details { display: flex; align-items: center; gap: 15px; margin-bottom: 20px; } .modal-detail { font-size: 14px; color: var(--text-secondary); display: flex; align-items: center; gap: 5px; } .modal-rating { display: flex; align-items: center; gap: 4px; padding: 4px 8px; background-color: rgba(255, 215, 0, 0.1); border-radius: 4px; } .modal-rating-icon { color: #ffd700; } .modal-desc { font-size: 15px; line-height: 1.6; color: var(--text-secondary); margin-bottom: 25px; } .modal-genres { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 25px; } .modal-genre { font-size: 12px; padding: 5px 12px; background-color: var(--accent-dark); border-radius: 15px; color: var(--text-secondary); } .modal-actions { display: flex; gap: 15px; } .modal-btn { padding: 12px 24px; border-radius: 8px; font-size: 15px; font-weight: 600; border: none; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; gap: 8px; } .modal-btn-primary { background: var(--gradient-primary); color: #fff; flex: 1; } .modal-btn-primary:hover { box-shadow: 0 5px 15px rgba(135, 100, 255, 0.3); } .modal-btn-secondary { background-color: rgba(255, 255, 255, 0.08); color: var(--text-primary); } .modal-btn-secondary:hover { background-color: rgba(255, 255, 255, 0.12); } @media (max-width: 500px) { .modal-content { width: 95%; } .modal-header { height: 200px; } .modal-actions { flex-direction: column; } .banner { height: 160px; } .media-card { min-width: 120px; height: 170px; } } /* Pulse animation for play button */ @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(135, 100, 255, 0.5); } 70% { box-shadow: 0 0 0 15px rgba(135, 100, 255, 0); } 100% { box-shadow: 0 0 0 0 rgba(135, 100, 255, 0); } } .play-btn { width: 60px; height: 60px; background: var(--gradient-primary); border-radius: 50%; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); display: flex; align-items: center; justify-content: center; cursor: pointer; animation: pulse 2s infinite; } .play-icon { font-size: 24px; margin-left: 4px; /* Offset for play triangle */ } /* Shimmer effect for cards */ .media-card::after { content: ''; position: absolute; top: 0; left: -100%; width: 50%; height: 100%; background: linear-gradient( 90deg, transparent, rgba(255, 255, 255, 0.1), transparent ); transition: 0.5s; } .media-card:hover::after { left: 150%; } /* Custom scrollbar for the modal */ .modal-body { max-height: calc(85vh - 250px); overflow-y: auto; scrollbar-width: thin; scrollbar-color: var(--accent-color) var(--accent-dark); } .modal-body::-webkit-scrollbar { width: 6px; } .modal-body::-webkit-scrollbar-track { background: var(--accent-dark); border-radius: 3px; } .modal-body::-webkit-scrollbar-thumb { background-color: var(--accent-color); border-radius: 3px; } </style> </head> <body> <div class="header"> <div class="logo">PULSE</div> <button class="nav-button">EXPLORE</button> </div> <div class="banner"> <img src="https://source.unsplash.com/random/700x300/?movie,dark" class="banner-img" alt="Featured Film"> <div class="banner-content"> <h2 class="banner-title">Echoes of Eternity</h2> <p class="banner-desc">Follow a team of time-traveling archaeologists as they unravel cosmic mysteries.</p> </div> <div class="play-btn"> <div class="play-icon">▶</div> </div> </div> <div class="categories"> <div class="category-pill active">All</div> <div class="category-pill">Sci-Fi</div> <div class="category-pill">Thriller</div> <div class="category-pill">Drama</div> <div class="category-pill">Animation</div> </div> <div class="category-title"> <span>New Releases</span> <span class="see-all">See All</span> </div> <div class="media-row"> <div class="media-card" data-id="1"> <img src="https://source.unsplash.com/random/300x450/?sci-fi,movie,poster,dark" class="media-img" alt="Movie Poster"> <div class="media-overlay"> <div class="media-title">Quantum Dreams</div> <div class="media-info"> <span>2023</span> <span class="rating"> <span class="rating-icon">★</span> <span>8.7</span> </span> </div> </div> </div> <div class="media-card" data-id="2"> <img src="https://source.unsplash.com/random/300x450/?dystopia,movie,poster,dark" class="media-img" alt="Movie Poster"> <div class="media-overlay"> <div class="media-title">Neon Shadows</div> <div class="media-info"> <span>2023</span> <span class="rating"> <span class="rating-icon">★</span> <span>9.2</span> </span> </div> </div> </div> <div class="media-card" data-id="3"> <img src="https://source.unsplash.com/random/300x450/?cyberpunk,movie,poster,dark" class="media-img" alt="Movie Poster"> <div class="media-overlay"> <div class="media-title">Neural Cascade</div> <div class="media-info"> <span>2023</span> <span class="rating"> <span class="rating-icon">★</span> <span>7.8</span> </span> </div> </div> </div> <div class="media-card" data-id="4"> <img src="https://source.unsplash.com/random/300x450/?thriller,movie,poster,dark" class="media-img" alt="Movie Poster"> <div class="media-overlay"> <div class="media-title">Midnight Protocol</div> <div class="media-info"> <span>2023</span> <span class="rating"> <span class="rating-icon">★</span> <span>8.1</span> </span> </div> </div> </div> <div class="media-card" data-id="5"> <img src="https://source.unsplash.com/random/300x450/?space,movie,poster,dark" class="media-img" alt="Movie Poster"> <div class="media-overlay"> <div class="media-title">Void Echoes</div> <div class="media-info"> <span>2023</span> <span class="rating"> <span class="rating-icon">★</span> <span>8.5</span> </span> </div> </div> </div> </div> <div class="category-title"> <span>Trending Now</span> <span class="see-all">See All</span> </div> <div class="media-row"> <div class="media-card" data-id="6"> <img src="https://source.unsplash.com/random/300x450/?fantasy,movie,poster,dark" class="media-img" alt="Movie Poster"> <div class="media-overlay"> <div class="media-title">Crystal Kingdoms</div> <div class="media-info"> <span>2023</span> <span class="rating"> <span class="rating-icon">★</span> <span>9.3</span> </span> </div> </div> </div> <div class="media-card" data-id="7"> <img src="https://source.unsplash.com/random/300x450/?action,movie,poster,dark" class="media-img" alt="Movie Poster"> <div class="media-overlay"> <div class="media-title">Apex Hunters</div> <div class="media-info"> <span>2022</span> <span class="rating"> <span class="rating-icon">★</span> <span>7.9</span> </span> </div> </div> </div> <div class="media-card" data-id="8"> <img src="https://source.unsplash.com/random/300x450/?horror,movie,poster,dark" class="media-img" alt="Movie Poster"> <div class="media-overlay"> <div class="media-title">Whispers in Darkness</div> <div class="media-info"> <span>2023</span> <span class="rating"> <span class="rating-icon">★</span> <span>8.6</span> </span> </div> </div> </div> <div class="media-card" data-id="9"> <img src="https://source.unsplash.com/random/300x450/?drama,movie,poster,dark" class="media-img" alt="Movie Poster"> <div class="media-overlay"> <div class="media-title">Silent Resonance</div> <div class="media-info"> <span>2022</span> <span class="rating"> <span class="rating-icon">★</span> <span>8.9</span> </span> </div> </div> </div> <div class="media-card" data-id="10"> <img src="https://source.unsplash.com/random/300x450/?animation,movie,poster,dark" class="media-img" alt="Movie Poster"> <div class="media-overlay"> <div class="media-title">Phantom Realms</div> <div class="media-info"> <span>2023</span> <span class="rating"> <span class="rating-icon">★</span> <span>9.1</span> </span> </div> </div> </div> </div> <!-- Modal Container --> <div class="modal-container"> <div class="modal-backdrop"></div> <div class="modal-content"> <div class="modal-header"> <img src="https://source.unsplash.com/random/700x350/?sci-fi,movie,dark" class="modal-img" alt="Movie Banner"> <div class="modal-close">✕</div> </div> <div class="modal-body"> <h2 class="modal-title">Quantum Dreams</h2> <div class="modal-details"> <div class="modal-detail"> <span>2023</span> </div> <div class="modal-detail"> <span>128 min</span> </div> <div class="modal-rating"> <span class="modal-rating-icon">★</span> <span>8.7</span> </div> </div> <p class="modal-desc"> In a world where dreams are quantifiable data, Dr. Eliza Chen discovers a way to enter the dreamscape of others. When she encounters a recurring pattern across multiple subjects, she uncovers a conspiracy that blurs the line between reality and simulation. As corporate giants race to control this technology, Eliza must navigate a labyrinth of deception while questioning her own perception of reality. </p> <div class="modal-genres"> <span class="modal-genre">Sci-Fi</span> <span class="modal-genre">Thriller</span> <span class="modal-genre">Mystery</span> </div> <div class="modal-actions"> <button class="modal-btn modal-btn-primary"> <span>Watch Now</span> </button> <button class="modal-btn modal-btn-secondary"> <span>+ Watchlist</span> </button> </div> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { const modal = document.querySelector('.modal-container'); const modalClose = document.querySelector('.modal-close'); const mediaCards = document.querySelectorAll('.media-card'); const playBtn = document.querySelector('.play-btn'); const modalContent = { 1: { title: "Quantum Dreams", year: "2023", duration: "128 min", rating: "8.7", desc: "In a world where dreams are quantifiable data, Dr. Eliza Chen discovers a way to enter the dreamscape of others. When she encounters a recurring pattern across multiple subjects, she uncovers a conspiracy that blurs the line between reality and simulation. As corporate giants race to control this technology, Eliza must navigate a labyrinth of deception while questioning her own perception of reality.", genres: ["Sci-Fi", "Thriller", "Mystery"], image: "https://source.unsplash.com/random/700x350/?sci-fi,movie,dark" }, 2: { title: "Neon Shadows", year: "2023", duration: "145 min", rating: "9.2", desc: "In 2089 Neo-Tokyo, detective Maya Kato hunts a digital ghost—an AI entity that's killed several high-profile tech moguls by manipulating the city's vast augmented reality network. As Maya dives deeper into the investigation, she discovers her own consciousness was partially uploaded to the network during an accident years ago, making her uniquely qualified to track the entity, but also its potential next victim.", genres: ["Cyberpunk", "Neo-Noir", "Action"], image: "https://source.unsplash.com/random/700x350/?cyberpunk,neon,city" }, 3: { title: "Neural Cascade", year: "2023", duration: "132 min", rating: "7.8", desc: "When a cutting-edge neural implant malfunctions during beta testing, developer Soren Park finds himself experiencing the memories of its other test subjects. As the boundaries between his identity and those of others collapse, Soren races to reverse the cascade effect before his consciousness fragments completely. His journey leads him to uncover that the implant's true purpose was never about enhancing human connection, but controlling it.", genres: ["Sci-Fi", "Psychological Thriller", "Drama"], image: "https://source.unsplash.com/random/700x350/?technology,thriller,dark" }, 4: { title: "Midnight Protocol", year: "2023", duration: "117 min", rating: "8.1", desc: "Former intelligence operative Zara Lin is called back into service when an off-grid AI security system she designed goes rogue during a worldwide communications blackout. With digital systems failing globally, she must assemble a team to infiltrate a remote data center in the Arctic Circle, relying on analog methods to override a system designed specifically to counter her own tactics.", genres: ["Techno-Thriller", "Espionage", "Action"], image: "https://source.unsplash.com/random/700x350/?hacker,dark,computer" }, 5: { title: "Void Echoes", year: "2023", duration: "158 min", rating: "8.5", desc: "After humanity establishes its first deep space colony near a previously uncharted star system, communication with Earth mysteriously stops. When researcher Kyra Donovan detects anomalous signals emanating from a nearby asteroid belt, she leads an expedition that discovers an ancient alien archive that seems to be responding to human presence. As the archive begins transmitting into colony systems, residents start experiencing visions of Earth's destruction.", genres: ["Hard Sci-Fi", "Space Opera", "Mystery"], image: "https://source.unsplash.com/random/700x350/?space,stars,galaxy" }, 6: { title: "Crystal Kingdoms", year: "2023", duration: "162 min", rating: "9.3", desc: "In a realm where gemstones contain elemental magic, young cartographer Lyra discovers she can create new territories by drawing maps with enchanted ink. When power-hungry nobility learn of her ability to literally reshape the world, Lyra is forced to flee across the fractured kingdoms, each with distinct crystalline ecosystems. With the help of a disgraced knight, she attempts to unite the divided domains before they shatter into magical oblivion.", genres: ["Fantasy", "Adventure", "Epic"], image: "https://source.unsplash.com/random/700x350/?crystal,fantasy,magic" }, 7: { title: "Apex Hunters", year: "2022", duration: "125 min", rating: "7.9", desc: "When genetically enhanced apex predators escape a research facility and begin adapting to urban environments, elite combat zoologist Marcus Wade is tasked with leading a specialized team to contain the threat. As the creatures demonstrate unexpected intelligence and pack behavior, Wade realizes they're evolving faster than predicted, forcing him to question whether they're truly escaped experiments or the result of something more deliberate.", genres: ["Action", "Creature Feature", "Thriller"], image: "https://source.unsplash.com/random/700x350/?predator,jungle,dark" }, 8: { title: "Whispers in Darkness", year: "2023", duration: "115 min", rating: "8.6", desc: "Acoustic engineer Hannah Gray is hired to investigate anomalous sound patterns in a recently renovated historic theater. Using specialized equipment, she discovers that the building's unique architecture is amplifying frequencies that induce hallucinations and alter perception in subtle ways. As she decodes layers of sonic phenomena, Hannah uncovers evidence that the theater's original architect designed it as a portal to communicate with entities from beyond perceived reality.", genres: ["Cosmic Horror", "Supernatural", "Mystery"], image: "https://source.unsplash.com/random/700x350/?spooky,theater,architecture" }, 9: { title: "Silent Resonance", year: "2022", duration: "138 min", rating: "8.9", desc: "Concert pianist Thomas Ritter returns to his childhood home after losing his hearing in an accident, convinced his career is over. When he discovers his father's unfinished research on synesthesia—the neurological phenomenon of experiencing one sense through another—Thomas begins to "see" sound as shifting landscapes of color and texture. As he relearns music through visual composition, his father's old research partners show increasing interest in his evolving abilities.", genres: ["Drama", "Psychological", "Musical"], image: "https://source.unsplash.com/random/700x350/?piano,music,dramatic" }, 10: { title: "Phantom Realms", year: "2023", duration: "110 min", rating: "9.1", desc: "In this groundbreaking animated feature, a teenage girl discovers a sketchbook that brings her drawings to life in a parallel dimension. When her younger brother becomes trapped in this world after the sketchbook is damaged, she must team up with her incomplete creations to navigate through evolving landscapes that shift between different animation styles—from hand-drawn to stop-motion to CGI—each with their own physics and logic.", genres: ["Animation", "Fantasy", "Coming-of-Age"], image: "https://source.unsplash.com/random/700x350/?animation,fantasy,colorful" } }; // Open modal when a media card is clicked mediaCards.forEach(card => { card.addEventListener('click', function() { const id = this.getAttribute('data-id'); const content = modalContent[id]; // Update modal content document.querySelector('.modal-title').textContent = content.title; document.querySelector('.modal-img').src = content.image; document.querySelector('.modal-detail:nth-child(1)').innerHTML = `<span>${content.year}</span>`; document.querySelector('.modal-detail:nth-child(2)').innerHTML = `<span>${content.duration}</span>`; document.querySelector('.modal-rating span:nth-child(2)').textContent = content.rating; document.querySelector('.modal-desc').textContent = content.desc; // Update genres const genresContainer = document.querySelector('.modal-genres'); genresContainer.innerHTML = ''; content.genres.forEach(genre => { const genreSpan = document.createElement('span'); genreSpan.className = 'modal-genre'; genreSpan.textContent = genre; genresContainer.appendChild(genreSpan); }); // Show modal with animation modal.classList.add('active'); document.body.style.overflow = 'hidden'; }); }); // Open modal when play button is clicked playBtn.addEventListener('click', function() { // Set content to the featured banner film document.querySelector('.modal-title').textContent = "Echoes of Eternity"; document.querySelector('.modal-img').src = "https://source.unsplash.com/random/700x350/?movie,sci-fi,dark"; document.querySelector('.modal-detail:nth-child(1)').innerHTML = "<span>2023</span>"; document.querySelector('.modal-detail:nth-child(2)').innerHTML = "<span>155 min</span>"; document.querySelector('.modal-rating span:nth-child(2)').textContent = "9.4"; document.querySelector('.modal-desc').textContent = "In a world where time is no longer linear, a team of specialized archaeologists called Chronologists excavate memories instead of artifacts. Dr. Amara Rey leads an expedition to investigate recurring temporal anomalies appearing worldwide, discovering they're echoes of a civilization that exists at the end of the universe. As the team decodes these messages from the future, they realize they must prevent a present-day technological breakthrough that eventually leads to cosmic collapse."; // Update genres const genresContainer = document.querySelector('.modal-genres'); genresContainer.innerHTML = ''; ["Epic Sci-Fi", "Time Travel", "Adventure"].forEach(genre => { const genreSpan = document.createElement('span'); genreSpan.className = 'modal-genre'; genreSpan.textContent = genre; genresContainer.appendChild(genreSpan); }); // Show modal with animation modal.classList.add('active'); document.body.style.overflow = 'hidden'; }); // Close modal when close button is clicked modalClose.addEventListener('click', function() { modal.classList.remove('active'); document.body.style.overflow = 'auto'; }); // Close modal when clicking on backdrop modal.querySelector('.modal-backdrop').addEventListener('click', function() { modal.classList.remove('active'); document.body.style.overflow = 'auto'; }); // Category pill selection const categoryPills = document.querySelectorAll('.category-pill'); categoryPills.forEach(pill => { pill.addEventListener('click', function() { categoryPills.forEach(p => p.classList.remove('active')); this.classList.add('active'); }); }); // Smooth scrolling for media rows const mediaRows = document.querySelectorAll('.media-row'); mediaRows.forEach(row => { let isDown = false; let startX; let scrollLeft; row.addEventListener('mousedown', (e) => { isDown = true; row.style.cursor = 'grabbing'; startX = e.pageX - row.offsetLeft; scrollLeft = row.scrollLeft; e.preventDefault(); }); row.addEventListener('mouseleave', () => { isDown = false; row.style.cursor = 'grab'; }); row.addEventListener('mouseup', () => { isDown = false; row.style.cursor = 'grab'; }); row.addEventListener('mousemove', (e) => { if (!isDown) return; e.preventDefault(); const x = e.pageX - row.offsetLeft; const walk = (x - startX) * 2; row.scrollLeft = scrollLeft - walk; }); }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>HAUTEUR - Luxury Fashion</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Cormorant Garamond', serif; } body { background-color: #f8f5f2; color: #333; overflow-x: hidden; height: 100vh; width: 100%; display: flex; flex-direction: column; } .container { width: 100%; max-width: 700px; margin: 0 auto; padding: 20px; height: 100%; display: flex; flex-direction: column; } header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 30px; border-bottom: 1px solid #d1c6b9; padding-bottom: 10px; } .logo { font-size: 24px; font-weight: 300; letter-spacing: 4px; color: #1a1a1a; text-transform: uppercase; } .nav-icon { font-size: 20px; cursor: pointer; } .collection-title { font-size: 28px; font-weight: 300; letter-spacing: 1px; margin-bottom: 20px; text-align: center; font-style: italic; color: #1a1a1a; } .collection-subtitle { text-align: center; font-size: 14px; letter-spacing: 2px; margin-bottom: 30px; color: #8a7e72; text-transform: uppercase; } .products { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 20px; } .product { position: relative; overflow: hidden; border-radius: 2px; cursor: pointer; height: 0; padding-bottom: 120%; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.08); transition: transform 0.5s ease; } .product:hover { transform: translateY(-5px); } .product-image-container { position: absolute; width: 100%; height: 100%; overflow: hidden; } .product-image { width: 100%; height: 100%; object-fit: cover; transition: all 0.8s cubic-bezier(0.2, 1, 0.3, 1); filter: blur(0); } .product:hover .product-image { filter: blur(5px); transform: scale(1.05); } .product-info { position: absolute; bottom: 0; left: 0; right: 0; padding: 20px; background: linear-gradient(0deg, rgba(26,26,26,0.8) 0%, rgba(26,26,26,0) 100%); color: white; transform: translateY(20px); opacity: 0; transition: all 0.6s cubic-bezier(0.2, 1, 0.3, 1); } .product:hover .product-info { transform: translateY(0); opacity: 1; } .product-name { font-size: 18px; font-weight: 400; margin-bottom: 5px; letter-spacing: 1px; } .product-price { font-size: 16px; font-weight: 300; margin-bottom: 10px; } .product-details { font-size: 12px; margin-bottom: 15px; line-height: 1.4; opacity: 0.9; } .view-button { display: inline-block; padding: 5px 15px; background-color: transparent; border: 1px solid white; color: white; font-size: 12px; letter-spacing: 1px; text-transform: uppercase; cursor: pointer; transition: all 0.3s ease; } .view-button:hover { background-color: white; color: #1a1a1a; } .quick-view { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(248, 245, 242, 0.95); display: flex; justify-content: center; align-items: center; z-index: 1000; opacity: 0; pointer-events: none; transition: opacity 0.5s ease; } .quick-view.active { opacity: 1; pointer-events: all; } .quick-view-content { display: flex; max-width: 90%; width: 650px; height: 80%; background-color: white; box-shadow: 0 5px 30px rgba(0, 0, 0, 0.1); position: relative; transform: translateY(50px); opacity: 0; transition: all 0.5s ease 0.1s; } .quick-view.active .quick-view-content { transform: translateY(0); opacity: 1; } .quick-view-image { flex: 1; background-size: cover; background-position: center; } .quick-view-details { flex: 1; padding: 40px; overflow-y: auto; } .quick-view-close { position: absolute; top: 15px; right: 15px; font-size: 24px; cursor: pointer; color: #1a1a1a; z-index: 1001; } .quick-view-name { font-size: 24px; font-weight: 400; margin-bottom: 10px; letter-spacing: 1px; } .quick-view-price { font-size: 18px; font-weight: 300; margin-bottom: 20px; color: #8a7e72; } .quick-view-description { font-size: 14px; line-height: 1.6; margin-bottom: 30px; } .color-options { margin-bottom: 20px; } .color-options h4 { font-size: 14px; font-weight: 400; margin-bottom: 10px; text-transform: uppercase; letter-spacing: 1px; } .colors { display: flex; gap: 10px; } .color { width: 24px; height: 24px; border-radius: 50%; cursor: pointer; position: relative; } .color.active::after { content: ''; position: absolute; width: 30px; height: 30px; border: 1px solid #1a1a1a; border-radius: 50%; top: 50%; left: 50%; transform: translate(-50%, -50%); } .size-options { margin-bottom: 30px; } .size-options h4 { font-size: 14px; font-weight: 400; margin-bottom: 10px; text-transform: uppercase; letter-spacing: 1px; } .sizes { display: flex; gap: 10px; } .size { width: 35px; height: 35px; display: flex; justify-content: center; align-items: center; border: 1px solid #d1c6b9; cursor: pointer; font-size: 12px; transition: all 0.3s ease; } .size.active, .size:hover { background-color: #1a1a1a; color: white; border-color: #1a1a1a; } .add-to-cart { width: 100%; padding: 12px 0; background-color: #1a1a1a; color: white; border: none; font-size: 14px; letter-spacing: 2px; text-transform: uppercase; cursor: pointer; transition: all 0.3s ease; } .add-to-cart:hover { background-color: #333; } footer { margin-top: auto; text-align: center; padding: 20px 0; font-size: 12px; color: #8a7e72; letter-spacing: 1px; } @media (max-width: 600px) { .products { grid-template-columns: 1fr; } .quick-view-content { flex-direction: column; overflow-y: auto; } .quick-view-image { height: 300px; } .quick-view-details { padding: 20px; } } @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .collection-title, .collection-subtitle, .product { animation: fadeInUp 0.6s ease forwards; } .collection-subtitle { animation-delay: 0.2s; } .product:nth-child(1) { animation-delay: 0.3s; } .product:nth-child(2) { animation-delay: 0.4s; } .product:nth-child(3) { animation-delay: 0.5s; } .product:nth-child(4) { animation-delay: 0.6s; } /* Cursor effect */ .cursor { position: fixed; width: 40px; height: 40px; border: 1px solid #1a1a1a; border-radius: 50%; pointer-events: none; mix-blend-mode: difference; transform: translate(-50%, -50%); z-index: 9999; transition: transform 0.2s ease; opacity: 0; } .cursor.active { transform: translate(-50%, -50%) scale(1.5); } @keyframes pulse { 0% { transform: scale(1); opacity: 1; } 100% { transform: scale(1.5); opacity: 0; } } </style> </head> <body> <div class="container"> <header> <div class="nav-icon">☰</div> <div class="logo">HAUTEUR</div> <div class="nav-icon">🛒</div> </header> <h1 class="collection-title">Autumn Atelier</h1> <p class="collection-subtitle">Limited Edition Pieces for the Discerning Eye</p> <div class="products"> <div class="product" data-id="1"> <div class="product-image-container"> <img src="https://images.unsplash.com/photo-1525507119028-ed4c629a60a3?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=735&q=80" alt="Silk Tailored Blazer" class="product-image"> </div> <div class="product-info"> <h3 class="product-name">Silk Tailored Blazer</h3> <p class="product-price">€895</p> <p class="product-details">Crafted from Italian silk with hand-finished details and mother-of-pearl buttons.</p> <div class="view-button">Quick View</div> </div> </div> <div class="product" data-id="2"> <div class="product-image-container"> <img src="https://images.unsplash.com/photo-1551232864-3f0890e580d9?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=687&q=80" alt="Cashmere Palazzo Pants" class="product-image"> </div> <div class="product-info"> <h3 class="product-name">Cashmere Palazzo Pants</h3> <p class="product-price">€745</p> <p class="product-details">Ultra-soft Mongolian cashmere with a fluid drape and invisible side zip.</p> <div class="view-button">Quick View</div> </div> </div> <div class="product" data-id="3"> <div class="product-image-container"> <img src="https://images.unsplash.com/photo-1548624313-0396c75e4b1d?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=687&q=80" alt="Merino Sculpture Dress" class="product-image"> </div> <div class="product-info"> <h3 class="product-name">Merino Sculpture Dress</h3> <p class="product-price">€1,250</p> <p class="product-details">Architectural silhouette in lightweight merino wool with asymmetric draping.</p> <div class="view-button">Quick View</div> </div> </div> <div class="product" data-id="4"> <div class="product-image-container"> <img src="https://images.unsplash.com/photo-1539533113208-f6df8cc8b543?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=687&q=80" alt="Calfskin Leather Trench" class="product-image"> </div> <div class="product-info"> <h3 class="product-name">Calfskin Leather Trench</h3> <p class="product-price">€2,795</p> <p class="product-details">Butter-soft calfskin leather in an elongated silhouette with hand-stitched details.</p> <div class="view-button">Quick View</div> </div> </div> </div> <footer> HAUTEUR © 2023 — PARISIAN CRAFTSMANSHIP </footer> </div> <div class="quick-view"> <div class="quick-view-content"> <div class="quick-view-close">×</div> <div class="quick-view-image"></div> <div class="quick-view-details"> <h2 class="quick-view-name"></h2> <p class="quick-view-price"></p> <p class="quick-view-description"></p> <div class="color-options"> <h4>Color</h4> <div class="colors"> <div class="color active" style="background-color: #1a1a1a;" data-color="Black"></div> <div class="color" style="background-color: #786659;" data-color="Taupe"></div> <div class="color" style="background-color: #d8c9b6;" data-color="Sand"></div> </div> </div> <div class="size-options"> <h4>Size</h4> <div class="sizes"> <div class="size" data-size="XS">XS</div> <div class="size active" data-size="S">S</div> <div class="size" data-size="M">M</div> <div class="size" data-size="L">L</div> <div class="size" data-size="XL">XL</div> </div> </div> <button class="add-to-cart">Add to Cart</button> </div> </div> </div> <div class="cursor"></div> <script> document.addEventListener('DOMContentLoaded', function() { // Product data const products = { 1: { name: "Silk Tailored Blazer", price: "€895", description: "Embrace architectural luxury with our silk tailored blazer. The structural yet fluid silhouette features subtle darting, handcrafted mother-of-pearl buttons, and a smooth Italian silk blend that catches light with every movement. The slightly extended shoulder creates a modern power silhouette while maintaining feminine proportions.\n\nEach blazer undergoes 18 hours of hand-finishing in our Parisian atelier." }, 2: { name: "Cashmere Palazzo Pants", price: "€745", description: "Our palazzo pants redefine everyday luxury in ultra-soft Mongolian cashmere. The wide-leg silhouette creates graceful movement while the high waist elongates your frame. The invisible side zip maintains the clean lines, while the weight of the cashmere ensures a perfect drape without clinging.\n\nPaired with our silk blazer or worn with a simple tee, these pants transition effortlessly from boardroom to evening." }, 3: { name: "Merino Sculpture Dress", price: "€1,250", description: "A statement in architectural elegance, our merino wool dress features asymmetric draping inspired by modernist sculpture. The lightweight Italian merino creates structure while maintaining comfort and breathability.\n\nThe innovative construction requires no hardware closures—the dress wraps and folds to create a silhouette unique to each wearer, with subtle hand-stitched details marking the collaboration between designer and artisan." }, 4: { name: "Calfskin Leather Trench", price: "€2,795", description: "Our reinterpretation of the classic trench in butter-soft calfskin leather merges timeless design with sensual luxury. The elongated silhouette features hand-stitched details and a subtle A-line cut that flatters the figure without overwhelming it.\n\nThe leather develops a rich patina over time, making each coat a living document of its wearer's journey. A true heirloom piece that improves with age and wear." } }; // Quick view functionality const quickView = document.querySelector('.quick-view'); const quickViewContent = document.querySelector('.quick-view-content'); const quickViewClose = document.querySelector('.quick-view-close'); const quickViewImage = document.querySelector('.quick-view-image'); const quickViewName = document.querySelector('.quick-view-name'); const quickViewPrice = document.querySelector('.quick-view-price'); const quickViewDescription = document.querySelector('.quick-view-description'); // Open quick view document.querySelectorAll('.view-button').forEach(button => { button.addEventListener('click', function(e) { e.stopPropagation(); const product = this.closest('.product'); const productId = product.dataset.id; const productData = products[productId]; const productImage = product.querySelector('.product-image').src; quickViewName.textContent = productData.name; quickViewPrice.textContent = productData.price; quickViewDescription.textContent = productData.description; quickViewImage.style.backgroundImage = `url(${productImage})`; quickView.classList.add('active'); document.body.style.overflow = 'hidden'; }); }); // Close quick view quickViewClose.addEventListener('click', function() { quickView.classList.remove('active'); document.body.style.overflow = ''; }); quickView.addEventListener('click', function(e) { if (e.target === quickView) { quickView.classList.remove('active'); document.body.style.overflow = ''; } }); // Select color document.querySelectorAll('.color').forEach(color => { color.addEventListener('click', function() { document.querySelector('.color.active').classList.remove('active'); this.classList.add('active'); }); }); // Select size document.querySelectorAll('.size').forEach(size => { size.addEventListener('click', function() { document.querySelector('.size.active').classList.remove('active'); this.classList.add('active'); }); }); // Add to cart button document.querySelector('.add-to-cart').addEventListener('click', function() { const selectedColor = document.querySelector('.color.active').dataset.color; const selectedSize = document.querySelector('.size.active').dataset.size; const productName = document.querySelector('.quick-view-name').textContent; // Here we'd normally do an API call to add to cart // Instead, we'll provide visual feedback const originalText = this.textContent; this.textContent = 'Added to Cart'; this.style.backgroundColor = '#4CAF50'; setTimeout(() => { this.textContent = originalText; this.style.backgroundColor = '#1a1a1a'; }, 1500); }); // Custom cursor effect const cursor = document.querySelector('.cursor'); document.addEventListener('mousemove', function(e) { cursor.style.opacity = '1'; cursor.style.left = e.clientX + 'px'; cursor.style.top = e.clientY + 'px'; }); document.querySelectorAll('.product, .view-button, .add-to-cart, .size, .color, .quick-view-close').forEach(element => { element.addEventListener('mouseenter', function() { cursor.classList.add('active'); }); element.addEventListener('mouseleave', function() { cursor.classList.remove('active'); }); }); document.addEventListener('mouseleave', function() { cursor.style.opacity = '0'; }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Liminal Spaces - Art Portfolio</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Helvetica Neue', Arial, sans-serif; } body { background-color: #000; color: #fff; overflow-x: hidden; line-height: 1.6; min-height: 100vh; width: 100%; max-width: 700px; margin: 0 auto; } .portfolio-container { display: flex; flex-direction: column; height: 100vh; max-height: 700px; overflow-y: auto; scroll-behavior: smooth; scrollbar-width: thin; scrollbar-color: #444 #000; } .portfolio-container::-webkit-scrollbar { width: 5px; } .portfolio-container::-webkit-scrollbar-track { background: #000; } .portfolio-container::-webkit-scrollbar-thumb { background-color: #444; border-radius: 10px; } header { padding: 20px; position: sticky; top: 0; background-color: rgba(0, 0, 0, 0.9); z-index: 10; border-bottom: 1px solid #333; } .logo { font-size: 18px; font-weight: 300; letter-spacing: 3px; text-transform: uppercase; margin-bottom: 10px; display: flex; align-items: center; justify-content: space-between; } .color-splash { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-left: 10px; background-color: #FF304F; animation: pulse 4s infinite ease-in-out; } @keyframes pulse { 0% { transform: scale(1); opacity: 0.8; } 50% { transform: scale(1.2); opacity: 1; } 100% { transform: scale(1); opacity: 0.8; } } nav { display: flex; justify-content: space-between; opacity: 0.7; transition: opacity 0.3s ease; } nav:hover { opacity: 1; } nav a { color: #fff; text-decoration: none; font-size: 12px; text-transform: uppercase; letter-spacing: 1px; transition: all 0.3s ease; } nav a:hover { color: #FF304F; transform: translateY(-2px); } .art-piece { position: relative; height: 70vh; margin: 15px 0; overflow: hidden; border-radius: 2px; transition: all 0.5s ease; } .art-piece:hover { transform: scale(0.98); } .art-image { width: 100%; height: 100%; object-fit: cover; filter: grayscale(100%); transition: all 0.8s ease; } .art-piece:hover .art-image { filter: grayscale(0%); } .art-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(to bottom, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0.8) 100%); display: flex; flex-direction: column; justify-content: flex-end; padding: 30px; opacity: 0; transition: all 0.6s ease; } .art-piece:hover .art-overlay { opacity: 1; } .art-blur { position: absolute; bottom: 0; left: 0; width: 100%; height: 60%; backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); background-color: rgba(0, 0, 0, 0.3); transform: translateY(100%); transition: transform 0.6s cubic-bezier(0.19, 1, 0.22, 1); } .art-piece:hover .art-blur { transform: translateY(0); } .art-title { font-size: 24px; font-weight: 500; margin-bottom: 10px; position: relative; z-index: 2; transform: translateY(20px); opacity: 0; transition: all 0.6s ease 0.1s; } .art-piece:hover .art-title { transform: translateY(0); opacity: 1; } .art-description { font-size: 14px; max-width: 90%; line-height: 1.7; position: relative; z-index: 2; transform: translateY(20px); opacity: 0; transition: all 0.6s ease 0.2s; } .art-piece:hover .art-description { transform: translateY(0); opacity: 1; } .splash-text { color: #FF304F; font-style: italic; } footer { padding: 20px; text-align: center; font-size: 12px; color: #777; border-top: 1px solid #333; margin-top: 20px; } .cursor { width: 20px; height: 20px; border: 1px solid #fff; border-radius: 50%; position: fixed; transform: translate(-50%, -50%); pointer-events: none; transition: all 0.1s ease; z-index: 9999; mix-blend-mode: difference; } .cursor-dot { width: 4px; height: 4px; background-color: #FF304F; border-radius: 50%; position: fixed; transform: translate(-50%, -50%); pointer-events: none; z-index: 9999; } .expand { transform: translate(-50%, -50%) scale(2); border-color: #FF304F; } .art-year { position: absolute; top: 20px; right: 20px; font-size: 12px; font-weight: 300; z-index: 3; letter-spacing: 2px; color: rgba(255, 255, 255, 0.7); } @media (max-width: 600px) { .art-piece { height: 50vh; } .art-title { font-size: 20px; } .art-description { font-size: 12px; } .cursor, .cursor-dot { display: none; } } </style> </head> <body> <div class="cursor"></div> <div class="cursor-dot"></div> <div class="portfolio-container"> <header> <div class="logo"> LIMINAL<span class="color-splash"></span> </div> <nav> <a href="#photography">Photography</a> <a href="#mixed-media">Mixed Media</a> <a href="#digital">Digital Art</a> <a href="#about">About</a> </nav> </header> <div id="photography" class="art-piece"> <img src="https://images.unsplash.com/photo-1520209759809-a9bcb6cb3241?ixlib=rb-1.2.1&auto=format&fit=crop&w=1000&q=80" alt="Threshold" class="art-image"> <div class="art-year">2021</div> <div class="art-overlay"> <div class="art-blur"></div> <h2 class="art-title">Threshold</h2> <p class="art-description">A study of <span class="splash-text">transitional spaces</span>, capturing the moment between presence and absence. Shot using long exposure techniques to blur the boundaries between the subject and environment.</p> </div> </div> <div id="mixed-media" class="art-piece"> <img src="https://images.unsplash.com/photo-1533122250115-6bb28e9a48c3?ixlib=rb-1.2.1&auto=format&fit=crop&w=1000&q=80" alt="Fragments" class="art-image"> <div class="art-year">2022</div> <div class="art-overlay"> <div class="art-blur"></div> <h2 class="art-title">Fragments</h2> <p class="art-description">Mixed media exploration combining <span class="splash-text">analog photography and digital manipulation</span>. The fractured surfaces represent memory's incomplete nature, with areas of focus emerging from deliberate blur.</p> </div> </div> <div id="digital" class="art-piece"> <img src="https://images.unsplash.com/photo-1543857778-c4a1a9e52b87?ixlib=rb-1.2.1&auto=format&fit=crop&w=1000&q=80" alt="Emergence" class="art-image"> <div class="art-year">2023</div> <div class="art-overlay"> <div class="art-blur"></div> <h2 class="art-title">Emergence</h2> <p class="art-description">Digital artwork exploring the <span class="splash-text">boundary between abstraction and representation</span>. Created using generative algorithms that respond to sound input, resulting in dynamic forms that exist in perpetual transition.</p> </div> </div> <div id="about" class="art-piece"> <img src="https://images.unsplash.com/photo-1470092306007-055b6797ca72?ixlib=rb-1.2.1&auto=format&fit=crop&w=1000&q=80" alt="About" class="art-image"> <div class="art-year">ABOUT</div> <div class="art-overlay"> <div class="art-blur"></div> <h2 class="art-title">The Space Between</h2> <p class="art-description">My work examines the liminal—the <span class="splash-text">threshold spaces</span> that exist between defined states. Through careful application of blur, contrast, and selective focus, I create visual experiences that challenge perception and invite contemplation of transitions, boundaries, and the ephemeral nature of reality.</p> </div> </div> <footer> © LIMINAL SPACES 2023 — All work is protected under creative commons </footer> </div> <script> // Custom cursor effect const cursor = document.querySelector('.cursor'); const cursorDot = document.querySelector('.cursor-dot'); document.addEventListener('mousemove', (e) => { cursor.style.left = e.clientX + 'px'; cursor.style.top = e.clientY + 'px'; cursorDot.style.left = e.clientX + 'px'; cursorDot.style.top = e.clientY + 'px'; }); document.addEventListener('mousedown', () => { cursor.classList.add('expand'); }); document.addEventListener('mouseup', () => { cursor.classList.remove('expand'); }); // Add hover effect for links and art pieces const links = document.querySelectorAll('a'); links.forEach(link => { link.addEventListener('mouseenter', () => { cursor.classList.add('expand'); }); link.addEventListener('mouseleave', () => { cursor.classList.remove('expand'); }); }); const artPieces = document.querySelectorAll('.art-piece'); artPieces.forEach(piece => { piece.addEventListener('mouseenter', () => { cursor.style.mixBlendMode = 'normal'; cursorDot.style.backgroundColor = '#fff'; }); piece.addEventListener('mouseleave', () => { cursor.style.mixBlendMode = 'difference'; cursorDot.style.backgroundColor = '#FF304F'; }); }); // Smooth scrolling for navigation document.querySelectorAll('nav a').forEach(anchor => { anchor.addEventListener('click', function(e) { e.preventDefault(); const targetId = this.getAttribute('href'); const targetElement = document.querySelector(targetId); if (targetElement) { targetElement.scrollIntoView({ behavior: 'smooth' }); } }); }); // Intersection Observer for revealing art pieces const observerOptions = { threshold: 0.2 }; const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.style.opacity = 1; entry.target.style.transform = 'translateY(0)'; } else { entry.target.style.opacity = 0.7; entry.target.style.transform = 'translateY(20px)'; } }); }, observerOptions); artPieces.forEach(piece => { piece.style.opacity = 0.7; piece.style.transform = 'translateY(20px)'; observer.observe(piece); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Social Media Profile Header</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Poppins', sans-serif; } body { height: 100vh; display: flex; justify-content: center; align-items: center; background-color: #f7f9fc; overflow-x: hidden; } .profile-container { width: 100%; max-width: 700px; height: 700px; overflow-y: auto; overflow-x: hidden; border-radius: 12px; box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08); background: white; position: relative; scrollbar-width: thin; scrollbar-color: #c8d6e5 #f7f9fc; } .profile-container::-webkit-scrollbar { width: 6px; } .profile-container::-webkit-scrollbar-track { background: #f7f9fc; } .profile-container::-webkit-scrollbar-thumb { background-color: #c8d6e5; border-radius: 20px; } .header { position: relative; height: 260px; overflow: hidden; transition: height 0.3s ease; } .header-bg { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: url('https://images.unsplash.com/photo-1579548122080-c35fd6820ecb?q=80&w=2070'); background-size: cover; background-position: center; transition: all 0.5s ease; filter: blur(0px); } .header-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(135deg, rgba(255, 182, 193, 0.7), rgba(173, 216, 230, 0.7), rgba(152, 251, 152, 0.7)); opacity: 0.9; } .profile-info { position: relative; display: flex; flex-direction: column; align-items: center; padding-top: 50px; z-index: 10; } .profile-photo { width: 120px; height: 120px; border-radius: 50%; border: 4px solid white; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); background-image: url('https://images.unsplash.com/photo-1580489944761-15a19d654956?q=80&w=1961'); background-size: cover; background-position: center; position: relative; transform: translateY(50%); transition: transform 0.3s ease; } .profile-photo::after { content: ''; position: absolute; top: -8px; right: -8px; bottom: -8px; left: -8px; border-radius: 50%; background: linear-gradient(45deg, #f9d4ff, #b4e0fd, #c5f8c6); z-index: -1; opacity: 0; transform: scale(0.8); transition: all 0.3s ease; } .profile-photo:hover::after { opacity: 1; transform: scale(1); } .stats-bar { width: 100%; display: flex; justify-content: space-evenly; margin-top: 75px; padding: 20px 10px; background-color: white; border-radius: 10px 10px 0 0; box-shadow: 0 -5px 15px rgba(0, 0, 0, 0.05); transition: all 0.3s ease; } .stat { display: flex; flex-direction: column; align-items: center; position: relative; padding: 0 15px; } .stat::after { content: ''; position: absolute; bottom: -5px; width: 0%; height: 3px; background: linear-gradient(90deg, #ffb6c1, #add8e6, #98fb98); transition: width 0.3s ease; border-radius: 10px; } .stat:hover::after { width: 100%; } .stat-value { font-size: 22px; font-weight: 700; color: #3a4c5c; margin-bottom: 5px; } .stat-label { font-size: 12px; color: #8395a7; text-transform: uppercase; letter-spacing: 1px; } .content { padding: 30px 20px; background-color: white; } .user-info { text-align: center; margin-bottom: 30px; } .username { font-size: 28px; font-weight: 700; color: #2d3436; margin-bottom: 8px; } .user-bio { font-size: 16px; color: #636e72; line-height: 1.6; max-width: 500px; margin: 0 auto; } .section-title { font-size: 18px; font-weight: 600; color: #3a4c5c; margin-bottom: 15px; position: relative; display: inline-block; } .section-title::after { content: ''; position: absolute; bottom: -5px; left: 0; width: 40px; height: 3px; background: linear-gradient(90deg, #ffb6c1, #add8e6); border-radius: 10px; } .activity-feed { margin-top: 20px; } .activity-item { padding: 15px; margin-bottom: 15px; background-color: #f7f9fc; border-radius: 10px; transition: transform 0.2s ease, box-shadow 0.2s ease; cursor: pointer; position: relative; overflow: hidden; } .activity-item::before { content: ''; position: absolute; top: 0; left: 0; width: 4px; height: 0%; background: linear-gradient(to bottom, #ffb6c1, #add8e6, #98fb98); transition: height 0.3s ease; } .activity-item:hover { transform: translateY(-3px); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.08); } .activity-item:hover::before { height: 100%; } .activity-header { display: flex; align-items: center; margin-bottom: 10px; } .activity-type { font-size: 14px; font-weight: 600; color: #3a4c5c; margin-right: 8px; padding: 4px 10px; background-color: rgba(173, 216, 230, 0.2); border-radius: 15px; } .activity-time { font-size: 12px; color: #8395a7; } .activity-content { font-size: 14px; color: #636e72; line-height: 1.5; } .cta-button { display: inline-block; margin-top: 5px; padding: 8px 16px; background: linear-gradient(135deg, #add8e6, #98fb98); color: #2d3436; border: none; border-radius: 20px; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 4px 10px rgba(173, 216, 230, 0.3); } .cta-button:hover { background: linear-gradient(135deg, #98fb98, #add8e6); transform: translateY(-2px); box-shadow: 0 6px 15px rgba(173, 216, 230, 0.4); } .footer { width: 100%; padding: 20px; text-align: center; color: #8395a7; font-size: 14px; background-color: #f7f9fc; border-top: 1px solid #eef2f7; } .subtle-pattern { 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='%23bdc3c7' fill-opacity='0.1' fill-rule='evenodd'/%3E%3C/svg%3E"); opacity: 0.2; pointer-events: none; } /* Responsive design */ @media (max-width: 600px) { .header { height: 220px; } .profile-photo { width: 100px; height: 100px; } .stats-bar { padding: 15px 5px; margin-top: 60px; } .stat { padding: 0 10px; } .stat-value { font-size: 18px; } .stat-label { font-size: 10px; } .username { font-size: 24px; } .user-bio { font-size: 14px; } } @media (max-width: 400px) { .stat-value { font-size: 16px; } .stat-label { font-size: 9px; } } </style> </head> <body> <div class="profile-container"> <div class="header"> <div class="header-bg"></div> <div class="header-overlay"></div> <div class="subtle-pattern"></div> <div class="profile-info"> <div class="profile-photo"></div> </div> </div> <div class="stats-bar"> <div class="stat"> <div class="stat-value">1,342</div> <div class="stat-label">Followers</div> </div> <div class="stat"> <div class="stat-value">891</div> <div class="stat-label">Following</div> </div> <div class="stat"> <div class="stat-value">276</div> <div class="stat-label">Posts</div> </div> <div class="stat"> <div class="stat-value">4.8k</div> <div class="stat-label">Likes</div> </div> </div> <div class="content"> <div class="user-info"> <h1 class="username">Alex Morgan</h1> <p class="user-bio">Digital photographer capturing life's subtle moments. Exploring the intersection of urban architecture and natural light. Workshop host & minimalist design advocate.</p> </div> <h2 class="section-title">Recent Activity</h2> <div class="activity-feed"> <div class="activity-item"> <div class="activity-header"> <span class="activity-type">New Post</span> <span class="activity-time">2 hours ago</span> </div> <p class="activity-content">Shared a new photo series "Morning Light in Copenhagen" featuring architectural studies at dawn. The pastel sky complemented the modern lines perfectly.</p> </div> <div class="activity-item"> <div class="activity-header"> <span class="activity-type">Event</span> <span class="activity-time">Yesterday</span> </div> <p class="activity-content">Hosting a virtual photography workshop next Friday: "Composing with Natural Light". Learn techniques to enhance your portraits with gentle illumination.</p> <button class="cta-button">RSVP Now</button> </div> <div class="activity-item"> <div class="activity-header"> <span class="activity-type">Featured</span> <span class="activity-time">3 days ago</span> </div> <p class="activity-content">My urban minimalism series was featured in DesignSpot magazine's spring collection. Thank you for all the support and thoughtful comments!</p> </div> <div class="activity-item"> <div class="activity-header"> <span class="activity-type">Milestone</span> <span class="activity-time">1 week ago</span> </div> <p class="activity-content">Just reached 1,000+ followers! To celebrate, I'm sharing my editing presets collection that enhances soft tones while preserving natural textures.</p> <button class="cta-button">Download Presets</button> </div> </div> </div> <div class="footer"> <p>© 2023 Alex Morgan Photography • All rights reserved</p> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { const profileContainer = document.querySelector('.profile-container'); const headerBg = document.querySelector('.header-bg'); const profilePhoto = document.querySelector('.profile-photo'); const statsBar = document.querySelector('.stats-bar'); // Initial blur state headerBg.style.filter = 'blur(3px)'; // Function to handle scroll event function handleScroll() { const scrollPosition = profileContainer.scrollTop; const maxBlur = 10; // Maximum blur in pixels const minBlur = 3; // Minimum blur in pixels const scrollThreshold = 150; // When to reach max blur // Calculate blur based on scroll position let blurAmount; if (scrollPosition <= scrollThreshold) { // Gradually increase blur as user scrolls down blurAmount = minBlur + ((scrollPosition / scrollThreshold) * (maxBlur - minBlur)); } else { blurAmount = maxBlur; } // Apply the calculated blur headerBg.style.filter = `blur(${blurAmount}px)`; // Add parallax effect to the background headerBg.style.transform = `translateY(${scrollPosition * 0.2}px)`; // Adjust profile photo position based on scroll if (scrollPosition > 0) { profilePhoto.style.transform = `translateY(${Math.max(0, 50 - scrollPosition * 0.3)}%)`; } else { profilePhoto.style.transform = 'translateY(50%)'; } // Add shadow to stats bar when scrolling if (scrollPosition > 50) { statsBar.style.boxShadow = '0 -8px 20px rgba(0, 0, 0, 0.1)'; } else { statsBar.style.boxShadow = '0 -5px 15px rgba(0, 0, 0, 0.05)'; } } // Add scroll event listener profileContainer.addEventListener('scroll', handleScroll); // Interactive buttons with ripple effect const buttons = document.querySelectorAll('.cta-button'); buttons.forEach(button => { button.addEventListener('click', function(e) { // Create ripple effect const ripple = document.createElement('span'); this.appendChild(ripple); const x = e.clientX - e.target.getBoundingClientRect().left; const y = e.clientY - e.target.getBoundingClientRect().top; ripple.style.cssText = ` position: absolute; background: rgba(255, 255, 255, 0.7); border-radius: 50%; pointer-events: none; width: 100px; height: 100px; left: ${x}px; top: ${y}px; transform: translate(-50%, -50%) scale(0); animation: ripple 0.6s linear; `; setTimeout(() => { ripple.remove(); }, 600); }); }); // Add animation for ripple effect const style = document.createElement('style'); style.textContent = ` @keyframes ripple { to { transform: translate(-50%, -50%) scale(4); opacity: 0; } } `; document.head.appendChild(style); // Create hover effect for activity items const activityItems = document.querySelectorAll('.activity-item'); activityItems.forEach(item => { item.addEventListener('mouseenter', function() { this.style.backgroundColor = '#f0f7ff'; }); item.addEventListener('mouseleave', function() { this.style.backgroundColor = '#f7f9fc'; }); }); }); </script> </body> </html>
<html> <head> <style> :root { --primary-color: #5955e8; --accent-color: #6c63ff; --sidebar-width: 250px; --sidebar-collapsed-width: 70px; --text-primary: #333; --text-secondary: #6c757d; --bg-main: #f9fafe; --card-bg: #fff; --shadow: 0 4px 20px rgba(0, 0, 0, 0.05); --animation-speed: 0.3s; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; } body { background-color: var(--bg-main); color: var(--text-primary); overflow-x: hidden; height: 100vh; width: 100%; display: flex; } .dashboard { display: flex; width: 100%; height: 100%; position: relative; } .sidebar { width: var(--sidebar-width); height: 100%; position: relative; transition: width var(--animation-speed) ease; z-index: 10; } .sidebar.collapsed { width: var(--sidebar-collapsed-width); } .sidebar-background { position: absolute; width: 100%; height: 100%; overflow: hidden; background-color: rgba(255, 255, 255, 0.3); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); box-shadow: var(--shadow); border-right: 1px solid rgba(255, 255, 255, 0.18); transition: all var(--animation-speed) ease; } .sidebar-background::before { content: ''; position: absolute; width: 100%; height: 100%; background: linear-gradient(135deg, rgba(89, 85, 232, 0.05) 0%, rgba(108, 99, 255, 0.1) 100%); opacity: 0.7; z-index: -1; } .sidebar-content { position: relative; z-index: 1; padding: 25px 15px; height: 100%; display: flex; flex-direction: column; overflow-y: auto; scrollbar-width: thin; } .sidebar-content::-webkit-scrollbar { width: 4px; } .sidebar-content::-webkit-scrollbar-thumb { background-color: rgba(0, 0, 0, 0.1); border-radius: 10px; } .logo { display: flex; align-items: center; margin-bottom: 30px; padding: 0 10px; } .logo-icon { font-size: 24px; font-weight: bold; color: var(--primary-color); display: flex; align-items: center; justify-content: center; background: rgba(89, 85, 232, 0.1); width: 40px; height: 40px; border-radius: 10px; } .logo-text { margin-left: 15px; font-weight: 600; font-size: 18px; white-space: nowrap; overflow: hidden; opacity: 1; transition: opacity var(--animation-speed) ease; } .sidebar.collapsed .logo-text { opacity: 0; width: 0; } .toggle-btn { position: absolute; top: 25px; right: -12px; width: 24px; height: 24px; background-color: var(--primary-color); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; cursor: pointer; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15); transition: transform var(--animation-speed) ease; z-index: 10; } .sidebar.collapsed .toggle-btn { transform: rotate(180deg); } .nav-section { margin-bottom: 25px; } .nav-title { font-size: 12px; text-transform: uppercase; letter-spacing: 1px; color: var(--text-secondary); padding: 0 10px; margin-bottom: 10px; white-space: nowrap; overflow: hidden; opacity: 1; transition: opacity var(--animation-speed) ease; } .sidebar.collapsed .nav-title { opacity: 0; } .nav-item { padding: 10px; border-radius: 8px; margin-bottom: 5px; cursor: pointer; display: flex; align-items: center; color: var(--text-secondary); transition: all 0.2s ease; position: relative; overflow: hidden; } .nav-item:hover { background-color: rgba(89, 85, 232, 0.08); color: var(--primary-color); } .nav-item.active { background-color: rgba(89, 85, 232, 0.1); color: var(--primary-color); } .nav-item.active::before { content: ''; position: absolute; left: 0; top: 0; width: 4px; height: 100%; background-color: var(--primary-color); border-radius: 0 4px 4px 0; } .nav-item-icon { min-width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; font-size: 18px; } .nav-item-text { margin-left: 15px; white-space: nowrap; overflow: hidden; opacity: 1; transition: opacity var(--animation-speed) ease; } .sidebar.collapsed .nav-item-text { opacity: 0; width: 0; } .user-section { margin-top: auto; padding: 15px 10px; display: flex; align-items: center; border-top: 1px solid rgba(0, 0, 0, 0.05); } .user-avatar { width: 40px; height: 40px; border-radius: 50%; background-color: #e9ecef; display: flex; align-items: center; justify-content: center; font-weight: bold; color: var(--primary-color); background-image: linear-gradient(135deg, rgba(89, 85, 232, 0.2), rgba(108, 99, 255, 0.2)); flex-shrink: 0; } .user-info { margin-left: 10px; overflow: hidden; opacity: 1; transition: opacity var(--animation-speed) ease; } .sidebar.collapsed .user-info { opacity: 0; width: 0; } .user-name { font-weight: 600; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .user-role { font-size: 12px; color: var(--text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .main-content { flex-grow: 1; padding: 25px; overflow-y: auto; transition: margin-left var(--animation-speed) ease; } .page-header { margin-bottom: 25px; } .page-title { font-size: 24px; font-weight: 600; margin-bottom: 10px; } .page-subtitle { color: var(--text-secondary); font-size: 14px; } .stats-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 20px; margin-bottom: 25px; } .stat-card { background-color: var(--card-bg); border-radius: 12px; padding: 20px; box-shadow: var(--shadow); transition: transform 0.2s ease, box-shadow 0.2s ease; } .stat-card:hover { transform: translateY(-5px); box-shadow: 0 10px 25px rgba(0, 0, 0, 0.07); } .stat-title { color: var(--text-secondary); font-size: 14px; margin-bottom: 10px; } .stat-value { font-size: 24px; font-weight: 600; margin-bottom: 5px; } .stat-trend { display: flex; align-items: center; font-size: 12px; } .trend-up { color: #28a745; } .trend-down { color: #dc3545; } .chart-container { background-color: var(--card-bg); border-radius: 12px; padding: 20px; box-shadow: var(--shadow); margin-bottom: 25px; } .chart-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; } .chart-title { font-weight: 600; } .chart-filters { display: flex; gap: 10px; } .filter-btn { background: none; border: 1px solid #e9ecef; padding: 5px 10px; border-radius: 5px; font-size: 12px; cursor: pointer; transition: all 0.2s ease; } .filter-btn.active { background-color: var(--primary-color); color: white; border-color: var(--primary-color); } .activity-list { background-color: var(--card-bg); border-radius: 12px; padding: 20px; box-shadow: var(--shadow); } .activity-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; } .activity-title { font-weight: 600; } .view-all { color: var(--primary-color); font-size: 14px; cursor: pointer; text-decoration: none; } .activity-item { display: flex; align-items: flex-start; padding: 12px 0; border-bottom: 1px solid rgba(0, 0, 0, 0.05); } .activity-item:last-child { border-bottom: none; } .activity-icon { width: 36px; height: 36px; border-radius: 10px; display: flex; align-items: center; justify-content: center; margin-right: 15px; flex-shrink: 0; } .ai-icon { background-color: rgba(89, 85, 232, 0.1); color: var(--primary-color); } .update-icon { background-color: rgba(52, 191, 163, 0.1); color: #34BFA3; } .alert-icon { background-color: rgba(255, 184, 0, 0.1); color: #FFB800; } .activity-content { flex-grow: 1; } .activity-text { margin-bottom: 5px; font-size: 14px; } .activity-meta { display: flex; font-size: 12px; color: var(--text-secondary); } .activity-time { margin-right: 15px; } .chart-placeholder { width: 100%; height: 200px; background-image: linear-gradient(135deg, #f5f7fa 25%, #f9fafe 25%, #f9fafe 50%, #f5f7fa 50%, #f5f7fa 75%, #f9fafe 75%, #f9fafe 100%); background-size: 20px 20px; border-radius: 8px; position: relative; overflow: hidden; } .chart-placeholder::after { content: ""; position: absolute; top: 0; left: -100%; width: 50%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); animation: shine 1.5s infinite; } @keyframes shine { 100% { left: 150%; } } .pill { display: inline-block; padding: 4px 10px; border-radius: 20px; font-size: 12px; font-weight: 500; } .pill-primary { background-color: rgba(89, 85, 232, 0.1); color: var(--primary-color); } .pill-success { background-color: rgba(52, 191, 163, 0.1); color: #34BFA3; } .pill-warning { background-color: rgba(255, 184, 0, 0.1); color: #FFB800; } .notification-badge { background-color: var(--accent-color); color: white; border-radius: 50%; min-width: 18px; height: 18px; display: flex; align-items: center; justify-content: center; font-size: 10px; position: absolute; top: -5px; right: -5px; } /* Tooltip */ .tooltip { position: absolute; left: 100%; top: 50%; transform: translateY(-50%); background-color: rgba(0, 0, 0, 0.8); color: white; padding: 5px 10px; border-radius: 4px; font-size: 12px; white-space: nowrap; opacity: 0; pointer-events: none; transition: opacity 0.2s ease, transform 0.2s ease; margin-left: 10px; z-index: 100; } .tooltip::before { content: ''; position: absolute; left: -4px; top: 50%; transform: translateY(-50%); width: 0; height: 0; border-top: 4px solid transparent; border-bottom: 4px solid transparent; border-right: 4px solid rgba(0, 0, 0, 0.8); } .sidebar.collapsed .nav-item:hover .tooltip { opacity: 1; transform: translateY(-50%); } /* Media Queries */ @media (max-width: 768px) { .sidebar { position: fixed; left: 0; top: 0; z-index: 1000; transform: translateX(-100%); } .sidebar.active { transform: translateX(0); } .main-content { margin-left: 0 !important; } .stats-grid { grid-template-columns: 1fr; } .toggle-btn { display: none; } .mobile-toggle { display: block; position: fixed; bottom: 20px; right: 20px; width: 50px; height: 50px; background-color: var(--primary-color); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2); z-index: 1001; cursor: pointer; } } </style> </head> <body> <div class="dashboard"> <div class="sidebar" id="sidebar"> <div class="sidebar-background"></div> <div class="sidebar-content"> <div class="logo"> <div class="logo-icon"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <polyline points="22 12 16 12 14 15 10 15 8 12 2 12"></polyline> <path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"></path> </svg> </div> <div class="logo-text">Blurview</div> </div> <div class="toggle-btn" id="toggleSidebar"> <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="15 18 9 12 15 6"></polyline> </svg> </div> <div class="nav-section"> <div class="nav-title">Main</div> <div class="nav-item active"> <div class="nav-item-icon"> <svg width="18" height="18" 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 class="nav-item-text">Dashboard</div> <div class="tooltip">Dashboard</div> </div> <div class="nav-item"> <div class="nav-item-icon"> <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path> <circle cx="9" cy="7" r="4"></circle> <path d="M23 21v-2a4 4 0 0 0-3-3.87"></path> <path d="M16 3.13a4 4 0 0 1 0 7.75"></path> </svg> </div> <div class="nav-item-text">Users</div> <div class="tooltip">Users</div> </div> <div class="nav-item"> <div class="nav-item-icon" style="position: relative;"> <svg width="18" height="18" 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-badge">3</div> </div> <div class="nav-item-text">Notifications</div> <div class="tooltip">Notifications</div> </div> <div class="nav-item"> <div class="nav-item-icon"> <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="12" cy="12" r="10"></circle> <line x1="12" y1="8" x2="12" y2="12"></line> <line x1="12" y1="16" x2="12.01" y2="16"></line> </svg> </div> <div class="nav-item-text">Activity</div> <div class="tooltip">Activity</div> </div> </div> <div class="nav-section"> <div class="nav-title">Workspace</div> <div class="nav-item"> <div class="nav-item-icon"> <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path> <polyline points="14 2 14 8 20 8"></polyline> <line x1="16" y1="13" x2="8" y2="13"></line> <line x1="16" y1="17" x2="8" y2="17"></line> <polyline points="10 9 9 9 8 9"></polyline> </svg> </div> <div class="nav-item-text">Documents</div> <div class="tooltip">Documents</div> </div> <div class="nav-item"> <div class="nav-item-icon"> <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect> <line x1="16" y1="2" x2="16" y2="6"></line> <line x1="8" y1="2" x2="8" y2="6"></line> <line x1="3" y1="10" x2="21" y2="10"></line> </svg> </div> <div class="nav-item-text">Calendar</div> <div class="tooltip">Calendar</div> </div> <div class="nav-item"> <div class="nav-item-icon"> <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <polyline points="9 11 12 14 22 4"></polyline> <path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"></path> </svg> </div> <div class="nav-item-text">Tasks</div> <div class="tooltip">Tasks</div> </div> </div> <div class="nav-section"> <div class="nav-title">Preferences</div> <div class="nav-item"> <div class="nav-item-icon"> <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="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> </div> <div class="nav-item-text">Settings</div> <div class="tooltip">Settings</div> </div> <div class="nav-item"> <div class="nav-item-icon"> <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"></path> <polyline points="16 17 21 12 16 7"></polyline> <line x1="21" y1="12" x2="9" y2="12"></line> </svg> </div> <div class="nav-item-text">Log out</div> <div class="tooltip">Log out</div> </div> </div> <div class="user-section"> <div class="user-avatar">AS</div> <div class="user-info"> <div class="user-name">Alex Shaw</div> <div class="user-role">Product Designer</div> </div> </div> </div> </div> <div class="main-content" id="mainContent"> <div class="page-header"> <h1 class="page-title">Dashboard Overview</h1> <p class="page-subtitle">Welcome back, Alex! Here's your activity summary for today.</p> </div> <div class="stats-grid"> <div class="stat-card"> <div class="stat-title">Total Users</div> <div class="stat-value">8,249</div> <div class="stat-trend trend-up"> <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 5px;"> <polyline points="18 15 12 9 6 15"></polyline> </svg> 12.5% vs last week </div> </div> <div class="stat-card"> <div class="stat-title">Active Sessions</div> <div class="stat-value">1,432</div> <div class="stat-trend trend-up"> <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 5px;"> <polyline points="18 15 12 9 6 15"></polyline> </svg> 8.2% vs last week </div> </div> <div class="stat-card"> <div class="stat-title">Bounce Rate</div> <div class="stat-value">24.8%</div> <div class="stat-trend trend-down"> <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 5px;"> <polyline points="6 9 12 15 18 9"></polyline> </svg> 3.1% vs last week </div> </div> <div class="stat-card"> <div class="stat-title">Avg. Session</div> <div class="stat-value">4m 38s</div> <div class="stat-trend trend-up"> <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 5px;"> <polyline points="18 15 12 9 6 15"></polyline> </svg> 0.8% vs last week </div> </div> </div> <div class="chart-container"> <div class="chart-header"> <div class="chart-title">User Activity Overview</div> <div class="chart-filters"> <button class="filter-btn">Day</button> <button class="filter-btn active">Week</button> <button class="filter-btn">Month</button> </div> </div> <div class="chart-placeholder"></div> </div> <div class="activity-list"> <div class="activity-header"> <div class="activity-title">Recent Activity</div> <a href="#" class="view-all">View all</a> </div> <div class="activity-item"> <div class="activity-icon ai-icon"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <rect x="2" y="2" width="20" height="8" rx="2" ry="2"></rect> <rect x="2" y="14" width="20" height="8" rx="2" ry="2"></rect> <line x1="6" y1="6" x2="6.01" y2="6"></line> <line x1="6" y1="18" x2="6.01" y2="18"></line> </svg> </div> <div class="activity-content"> <div class="activity-text">New user interface deployed to production environment</div> <div class="activity-meta"> <div class="activity-time">12 minutes ago</div> <div class="pill pill-primary">UI Update</div> </div> </div> </div> <div class="activity-item"> <div class="activity-icon update-icon"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path> <path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path> </svg> </div> <div class="activity-content"> <div class="activity-text">Sidebar blur effect updated to improve navigation visibility</div> <div class="activity-meta"> <div class="activity-time">2 hours ago</div> <div class="pill pill-success">Feature Update</div> </div> </div> </div> <div class="activity-item"> <div class="activity-icon alert-icon"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path> <line x1="12" y1="9" x2="12" y2="13"></line> <line x1="12" y1="17" x2="12.01" y2="17"></line> </svg> </div> <div class="activity-content"> <div class="activity-text">System detected potential performance issues in the analytics module</div> <div class="activity-meta"> <div class="activity-time">Yesterday</div> <div class="pill pill-warning">Performance Alert</div> </div> </div> </div> <div class="activity-item"> <div class="activity-icon ai-icon"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path> <circle cx="9" cy="7" r="4"></circle> <path d="M23 21v-2a4 4 0 0 0-3-3.87"></path> <path d="M16 3.13
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>NEON WAVE | Music Streaming</title> <style> /* Reset and Base Styles */ * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Space Grotesk', sans-serif; } @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Syncopate:wght@400;700&display=swap'); body { background-color: #0a0a0f; color: #ffffff; height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; overflow: hidden; position: relative; } .container { width: 100%; max-width: 700px; height: 700px; display: flex; flex-direction: column; position: relative; overflow: hidden; } /* Navigation */ .nav { display: flex; justify-content: space-between; align-items: center; padding: 1.5rem; position: relative; z-index: 10; } .logo { font-family: 'Syncopate', sans-serif; font-weight: 700; font-size: 1.5rem; background: linear-gradient(to right, #f72585, #7209b7); -webkit-background-clip: text; -webkit-text-fill-color: transparent; text-transform: uppercase; letter-spacing: 1px; } .nav-icons { display: flex; gap: 1.2rem; } .nav-icon { color: rgba(255, 255, 255, 0.7); font-size: 1.2rem; cursor: pointer; transition: all 0.3s ease; } .nav-icon:hover { color: #f72585; transform: scale(1.1); } /* Player Section */ .player { flex: 1; position: relative; display: flex; flex-direction: column; justify-content: flex-end; padding: 1.5rem; overflow: hidden; } .track-backdrop { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-size: cover; background-position: center; filter: blur(30px); opacity: 0.5; transition: all 0.7s cubic-bezier(0.16, 1, 0.3, 1); } .album-art { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -60%); width: 280px; height: 280px; border-radius: 10px; background-size: cover; background-position: center; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.6); transition: all 0.5s cubic-bezier(0.16, 1, 0.3, 1); z-index: 2; } .album-art:hover { transform: translate(-50%, -62%) scale(1.03); box-shadow: 0 25px 70px rgba(0, 0, 0, 0.7); } .album-art::after { content: ''; position: absolute; inset: 0; border-radius: 10px; background: linear-gradient(to bottom, rgba(10, 10, 15, 0) 70%, rgba(10, 10, 15, 0.7) 100%); } .track-info { position: relative; z-index: 3; margin-bottom: 4rem; opacity: 0; transform: translateY(20px); transition: all 0.5s ease; } .track-title { font-size: 2.2rem; font-weight: 700; margin-bottom: 0.3rem; text-shadow: 0 2px 10px rgba(0, 0, 0, 0.5); letter-spacing: 0.5px; max-width: 90%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .track-artist { font-size: 1rem; font-weight: 400; color: rgba(255, 255, 255, 0.8); margin-bottom: 0.8rem; text-shadow: 0 2px 8px rgba(0, 0, 0, 0.6); } .track-badges { display: flex; gap: 0.8rem; margin-top: 1.2rem; } .badge { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); padding: 0.4rem 0.9rem; border-radius: 20px; font-size: 0.7rem; font-weight: 500; letter-spacing: 0.5px; text-transform: uppercase; border: 1px solid rgba(255, 255, 255, 0.1); transition: all 0.3s ease; cursor: pointer; } .badge:hover { background: rgba(247, 37, 133, 0.3); border-color: rgba(247, 37, 133, 0.5); transform: translateY(-2px); } /* Progress Bar */ .progress-container { position: relative; z-index: 3; width: 100%; margin-bottom: 1.2rem; } .progress-bar { height: 4px; width: 100%; background: rgba(255, 255, 255, 0.1); border-radius: 2px; overflow: hidden; position: relative; cursor: pointer; } .progress { height: 100%; width: 30%; background: linear-gradient(to right, #f72585, #7209b7); border-radius: 2px; position: absolute; transition: width 0.1s linear; } .progress::after { content: ''; display: block; height: 12px; width: 12px; background: white; border-radius: 50%; position: absolute; right: -6px; top: 50%; transform: translateY(-50%) scale(0); box-shadow: 0 0 10px rgba(247, 37, 133, 0.8); transition: transform 0.2s ease; } .progress-bar:hover .progress::after { transform: translateY(-50%) scale(1); } .time-info { display: flex; justify-content: space-between; font-size: 0.8rem; color: rgba(255, 255, 255, 0.7); margin-top: 0.5rem; } /* Controls */ .controls { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1.5rem; position: relative; z-index: 3; } .control-buttons { display: flex; align-items: center; gap: 1.5rem; } .control-btn { background: none; border: none; color: white; font-size: 1.8rem; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; justify-content: center; } .control-btn:hover { color: #f72585; transform: scale(1.1); } .play-btn { background: white; color: #0a0a0f; width: 60px; height: 60px; border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 0 20px rgba(247, 37, 133, 0.4); transition: all 0.3s ease; } .play-btn:hover { transform: scale(1.1); box-shadow: 0 0 30px rgba(247, 37, 133, 0.7); background: #f72585; color: white; } .secondary-controls { display: flex; gap: 1.2rem; } .secondary-btn { color: rgba(255, 255, 255, 0.7); font-size: 1.2rem; cursor: pointer; transition: all 0.3s ease; } .secondary-btn:hover { color: #f72585; transform: scale(1.1); } /* Playlist Drawer */ .playlist-drawer { position: absolute; bottom: 0; left: 0; width: 100%; height: 250px; background: rgba(20, 20, 30, 0.8); backdrop-filter: blur(20px); transform: translateY(100%); transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1); z-index: 5; padding: 1.5rem; border-top: 1px solid rgba(255, 255, 255, 0.1); border-top-left-radius: 20px; border-top-right-radius: 20px; } .drawer-visible { transform: translateY(0); } .drawer-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.2rem; } .drawer-title { font-size: 1.2rem; font-weight: 600; } .drawer-close { background: none; border: none; color: white; font-size: 1.5rem; cursor: pointer; transition: all 0.3s ease; } .drawer-close:hover { color: #f72585; transform: scale(1.1); } .playlist-tracks { display: flex; flex-direction: column; gap: 0.8rem; overflow-y: auto; max-height: calc(250px - 4rem); } .playlist-track { display: flex; align-items: center; gap: 1rem; padding: 0.7rem; border-radius: 8px; cursor: pointer; transition: all 0.3s ease; } .playlist-track:hover { background: rgba(255, 255, 255, 0.1); } .playlist-track.active { background: rgba(247, 37, 133, 0.2); border: 1px solid rgba(247, 37, 133, 0.3); } .track-thumb { width: 40px; height: 40px; border-radius: 5px; background-size: cover; } .track-details { flex: 1; } .playlist-track-title { font-size: 0.9rem; font-weight: 500; margin-bottom: 0.2rem; } .playlist-track-artist { font-size: 0.8rem; color: rgba(255, 255, 255, 0.7); } .track-duration { font-size: 0.8rem; color: rgba(255, 255, 255, 0.6); } /* Visualizer */ .visualizer { position: absolute; bottom: 0; left: 0; width: 100%; height: 50px; display: flex; align-items: flex-end; justify-content: center; gap: 3px; z-index: 2; padding-bottom: 10px; } .visualizer-bar { width: 3px; background: rgba(247, 37, 133, 0.7); border-radius: 3px; transition: height 0.1s ease; } /* Wave animation */ .wave-container { position: absolute; bottom: 0; left: 0; width: 100%; height: 100px; overflow: hidden; opacity: 0.4; pointer-events: none; z-index: 1; } .wave { position: absolute; bottom: 0; left: 0; width: 200%; height: 100%; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 120' preserveAspectRatio='none'%3E%3Cpath fill='%23f72585' fill-opacity='0.5' d='M0,0V46.29c47.79,22.2,103.59,32.17,158,28,70.36-5.37,136.33-33.31,206.8-37.5C438.64,32.43,512.34,53.67,583,72.05c69.27,18,138.3,24.88,209.4,13.08,36.15-6,69.85-17.84,104.45-29.34C989.49,25,1113-14.29,1200,52.47V0Z' opacity='.25'%3E%3C/path%3E%3Cpath fill='%237209b7' fill-opacity='0.3' d='M0,0V15.81C13,36.92,27.64,56.86,47.69,72.05,99.41,111.27,165,111,224.58,91.58c31.15-10.15,60.09-26.07,89.67-39.8,40.92-19,84.73-46,130.83-49.67,36.26-2.85,70.9,9.42,98.6,31.56,31.77,25.39,62.32,62,103.63,73,40.44,10.79,81.35-6.69,119.13-24.28s75.16-39,116.92-43.05c59.73-5.85,113.28,22.88,168.9,38.84,30.2,8.66,59,6.17,87.09-7.5,22.43-10.89,48-26.93,60.65-49.24V0Z' opacity='.5'%3E%3C/path%3E%3Cpath fill='%2380ffdb' fill-opacity='0.2' d='M0,0V5.63C149.93,59,314.09,71.32,475.83,42.57c43-7.64,84.23-20.12,127.61-26.46,59-8.63,112.48,12.24,165.56,35.4C827.93,77.22,886,95.24,951.2,90c86.53-7,172.46-45.71,248.8-84.81V0Z' opacity='.5'%3E%3C/path%3E%3C/svg%3E"); background-size: 1200px 100px; animation: wave 10s linear infinite; } @keyframes wave { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } } .glow { position: absolute; bottom: 80px; left: 50%; transform: translateX(-50%); width: 300px; height: 10px; background: radial-gradient(ellipse at center, rgba(247, 37, 133, 0.6) 0%, rgba(10, 10, 15, 0) 70%); filter: blur(10px); border-radius: 50%; opacity: 0.5; z-index: 1; } /* Responsive Adjustments */ @media (max-width: 640px) { .album-art { width: 220px; height: 220px; transform: translate(-50%, -55%); } .album-art:hover { transform: translate(-50%, -57%) scale(1.03); } .track-title { font-size: 1.8rem; } .control-buttons { gap: 1rem; } .play-btn { width: 50px; height: 50px; } .secondary-controls { gap: 0.8rem; } .playlist-drawer { height: 220px; } } @media (max-width: 480px) { .album-art { width: 180px; height: 180px; transform: translate(-50%, -50%); } .album-art:hover { transform: translate(-50%, -52%) scale(1.03); } .track-title { font-size: 1.5rem; } .track-badges { gap: 0.6rem; } .badge { padding: 0.3rem 0.7rem; font-size: 0.65rem; } .control-btn { font-size: 1.5rem; } .play-btn { width: 45px; height: 45px; } } /* Animation classes */ @keyframes fadeIn { 0% { opacity: 0; transform: translateY(20px); } 100% { opacity: 1; transform: translateY(0); } } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } } .animate-in { animation: fadeIn 0.6s ease forwards; } .pulse { animation: pulse 2s infinite; } </style> </head> <body> <div class="container"> <div class="nav"> <div class="logo">NEON WAVE</div> <div class="nav-icons"> <div class="nav-icon"> <i class="fa-solid fa-magnifying-glass"></i> </div> <div class="nav-icon"> <i class="fa-solid fa-gear"></i> </div> <div class="nav-icon" id="playlist-toggle"> <i class="fa-solid fa-list"></i> </div> </div> </div> <div class="player"> <div class="track-backdrop"></div> <div class="album-art"></div> <div class="track-info"> <h1 class="track-title">Midnight Synthwave</h1> <p class="track-artist">Neon Memories</p> <div class="track-badges"> <div class="badge">Retrowave</div> <div class="badge">Exclusive</div> <div class="badge">Top 10</div> </div> </div> <div class="progress-container"> <div class="progress-bar"> <div class="progress"></div> </div> <div class="time-info"> <span>1:45</span> <span>4:32</span> </div> </div> <div class="controls"> <div class="secondary-controls"> <div class="secondary-btn"> <i class="fa-solid fa-shuffle"></i> </div> <div class="secondary-btn"> <i class="fa-solid fa-repeat"></i> </div> </div> <div class="control-buttons"> <button class="control-btn" id="prev-btn"> <i class="fa-solid fa-backward-step"></i> </button> <button class="control-btn play-btn" id="play-btn"> <i class="fa-solid fa-play" id="play-icon"></i> </button> <button class="control-btn" id="next-btn"> <i class="fa-solid fa-forward-step"></i> </button> </div> <div class="secondary-controls"> <div class="secondary-btn"> <i class="fa-solid fa-volume-high"></i> </div> <div class="secondary-btn"> <i class="fa-solid fa-heart"></i> </div> </div> </div> <div class="visualizer" id="visualizer"></div> <div class="wave-container"> <div class="wave"></div> </div> <div class="glow"></div> </div> <div class="playlist-drawer" id="playlist-drawer"> <div class="drawer-header"> <div class="drawer-title">Your Playlist</div> <button class="drawer-close" id="drawer-close"> <i class="fa-solid fa-xmark"></i> </button> </div> <div class="playlist-tracks" id="playlist-tracks"> <!-- Tracks will be added dynamically --> </div> </div> </div> <script src="https://kit.fontawesome.com/a076d05399.js" crossorigin="anonymous"></script> <script> document.addEventListener('DOMContentLoaded', function() { // Replace FontAwesome with custom SVG since the CDN might not work in some environments replaceFontAwesomeIcons(); const tracks = [ { title: "Midnight Synthwave", artist: "Neon Memories", album: "Retrograde", duration: "4:32", cover: "https://images.unsplash.com/photo-1614149162883-504ce4d13909?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxzZWFyY2h8Mnx8bmVvbiUyMGNpdHl8ZW58MHx8MHx8&w=1000&q=80", color: "#f72585" }, { title: "Digital Dreams", artist: "Cyber Protocol", album: "Future State", duration: "3:47", cover: "https://images.unsplash.com/photo-1563089145-599997674d42?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=2340&q=80", color: "#4361ee" }, { title: "Neon Tokyo Streets", artist: "Violet Afterglow", album: "Cyberpunk Daydreams", duration: "5:03", cover: "https://images.unsplash.com/photo-1579033385971-a7bc8c5f4b25?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxzZWFyY2h8M3x8Y3liZXJwdW5rfGVufDB8fDB8fA%3D%3D&w=1000&q=80", color: "#7209b7" }, { title: "Quantum Resonance", artist: "Binary Horizon", album: "Parallel Algorithms", duration: "4:18", cover: "https://images.unsplash.com/photo-1542831371-29b0f74f9713?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxzZWFyY2h8M3x8Y29kaW5nfGVufDB8fDB8fA%3D%3D&w=1000&q=80", color: "#3a0ca3" }, { title: "Electric Youth", artist: "Retrowave Collective", album: "Neon Nights", duration: "3:56", cover: "https://images.unsplash.com/photo-1530982011887-3cc11cc85693?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxzZWFyY2h8NXx8cmV0cm93YXZlfGVufDB8fDB8fA%3D%3D&auto=format&fit=crop&w=500&q=60", color: "#f94144" } ]; let currentTrackIndex = 0; let isPlaying = false; let progressInterval; const trackBackdrop = document.querySelector('.track-backdrop'); const albumArt = document.querySelector('.album-art'); const trackTitle = document.querySelector('.track-title'); const trackArtist = document.querySelector('.track-artist'); const progress = document.querySelector('.progress'); const playBtn = document.getElementById('play-btn'); const playIcon = document.getElementById('play-icon'); const prevBtn = document.getElementById('prev-btn'); const nextBtn = document.getElementById('next-btn'); const trackInfo = document.querySelector('.track-info'); const playlistDrawer = document.getElementById('playlist-drawer'); const playlistToggle = document.getElementById('playlist-toggle'); const drawerClose = document.getElementById('drawer-close'); const playlistTracks = document.getElementById('playlist-tracks'); const visualizerContainer = document.getElementById('visualizer'); // Create visualizer bars for (let i = 0; i < 20; i++) { const bar = document.createElement('div'); bar.className = 'visualizer-bar'; bar.style.height = '0px'; visualizerContainer.appendChild(bar); } // Initialize the player with the first track function loadTrack(index) { const track = tracks[index]; // Animate out trackInfo.style.opacity = "0"; trackInfo.style.transform = "translateY(20px)"; // Update track content setTimeout(() => { trackTitle.textContent = track.title; trackArtist.textContent = track.artist; albumArt.style.backgroundImage = `url(${track.cover})`; trackBackdrop.style.backgroundImage = `url(${track.cover})`; trackBackdrop.style.opacity = "0.5"; // Apply dynamic color to elements document.documentElement.style.setProperty('--track-color', track.color); // Animate in trackInfo.style.opacity = "1"; trackInfo.style.transform = "translateY(0)"; // Reset progress progress.style.width = "0%"; // Update active track in playlist updatePlaylistActiveTrack(); }, 300); } // Play/Pause functionality function togglePlay() { if (!isPlaying) { // Start playing isPlaying = true; playIcon.classList.remove('fa-play'); playIcon.classList.add('fa-pause'); playBtn.classList.add('pulse'); // Simulate progress let progressVal = parseInt(progress.style.width) || 0; progressInterval = setInterval(() => { progressVal = (progressVal + 0.5) % 100; progress.style.width = progressVal + '%'; }, 1000); // Start visualizer animateVisualizer(true); } else { // Stop playing isPlaying = false; playIcon.classList.remove('fa-pause'); playIcon.classList.add('fa-play'); playBtn.classList.remove('pulse'); // Stop progress and visualizer clearInterval(progressInterval); animateVisualizer(false); } } // Animate visualizer bars function animateVisualizer(active) { const bars = document.querySelectorAll('.visualizer-bar'); if (active) { function updateBars() { bars.forEach(bar => { const height = Math.floor(Math.random() * 40) + 5; bar.style.height = `${height}px`; }); if (isPlaying) { requestAnimationFrame(updateBars); } } updateBars(); } else { bars.forEach(bar => { bar.style.height = '0px'; }); } } // Change track functionality function changeTrack(direction) { // Reset visualizer and progress if (isPlaying) { clearInterval(progressInterval); animateVisualizer(false); } if (direction === 'next') { currentTrackIndex = (currentTrackIndex + 1) % tracks.length; } else { currentTrackIndex = (currentTrackIndex - 1 + tracks.length) % tracks.length; } loadTrack(currentTrackIndex); // Resume playing if was playing if (isPlaying) { let progressVal = 0; progress.style.width = progressVal + '%'; progressInterval = setInterval(() => { progressVal = (progressVal + 0.5) % 100; progress.style.width = progressVal + '%'; }, 1000); animateVisualizer(true); } } // Populate playlist function populatePlaylist() { tracks.forEach((track, index) => { const trackElement = document.createElement('div'); trackElement.className = 'playlist-track'; trackElement.dataset.index = index; if (index === currentTrackIndex) { trackElement.classList.add('active'); } trackElement.innerHTML = ` <div class="track-thumb" style="background-image: url(${track.cover})"></div> <div class="track-details"> <div class="playlist-track-title">${track.title}</div> <div class="playlist-track-artist">${track.artist}</div> </div> <div class="track-duration">${track.duration}</div> `; trackElement.addEventListener('click', function() { const trackIndex = parseInt(this.dataset.index); currentTrackIndex = trackIndex; loadTrack(currentTrackIndex); if (isPlaying) { clearInterval(progressInterval); let progressVal = 0; progress.style.width = progressVal + '%'; progressInterval = setInterval(() => { progressVal = (progressVal + 0.5) % 100; progress.style.width = progressVal + '%'; }, 1000); animateVisualizer(true); } // Close drawer on mobile if (window.innerWidth < 768) { playlistDrawer.classList.remove('drawer-visible'); } }); playlistTracks.appendChild(trackElement); }); } // Update active track in playlist function updatePlaylistActiveTrack() { const tracks = document.querySelectorAll('.playlist-track'); tracks.forEach((track, index) => { if (index === currentTrackIndex) { track.classList.add('active'); } else { track.classList.remove('active'); } }); } // Event listeners playBtn.addEventListener('click', togglePlay); nextBtn.addEventListener('click', () => changeTrack('next')); prevBtn.addEventListener('click', () => changeTrack('prev')); // Playlist drawer toggle playlistToggle.addEventListener('click', () => { playlistDrawer.classList.toggle('drawer-visible'); }); drawerClose.addEventListener('click', () => { playlistDrawer.classList.remove('drawer-visible'); }); // Progress bar interaction const progressBar = document.querySelector('.progress-bar'); progressBar.addEventListener('click', function(e) { const clickPosition = e.offsetX; const width = this.clientWidth; const percent = (clickPosition / width) * 100; progress.style.width = percent + '%'; // If playing, reset the interval to continue from new position if (isPlaying) { clearInterval(progressInterval); let progressVal = percent; progressInterval = setInterval(() => { progressVal = (progressVal + 0.5) % 100; progress.style.width = progressVal + '%'; }, 1000); } }); // Initialize player and playlist loadTrack(currentTrackIndex); populatePlaylist(); // Add initial animation setTimeout(() => { trackInfo.style.opacity = "1"; trackInfo.style.transform = "translateY(0)"; }, 300); // Function to replace FontAwesome icons with inline SVG function replaceFontAwesomeIcons() { // Replace play/pause icon const playIconElement = document.getElementById('play-icon'); playIconElement.outerHTML = '<svg id="play-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512" width="1em" height="1em"><path fill="currentColor" d="M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80V432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z"/></svg>'; // Replace other icons document.querySelector('.fa-backward-step').outerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512" width="1em" height="1em"><path fill="currentColor" d="M267.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4L144 172.8V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4L7 164.4c-9.7 8-15 19.9-15 32.5v118c0 12.6 5.3 24.6 15 32.5l84.5 72c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V318.2l123.5 101.2z"/></svg>'; document.querySelector('.fa-forward-step').outerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512" width="1em" height="1em"><path fill="currentColor" d="M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4L176 172.8V96c0-12.4 7.2-23.7 18.4-29s24.5-3.6 34.1 4.4l84.5 72c9.7 8 15 19.9 15 32.5v118c0 12.6-5.3 24.6-15 32.5l-84.5 72c-
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Nomadic Whispers - Travel Inspirations</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Playfair Display', Georgia, serif; } :root { --primary: #f8c67e; --secondary: #e25a45; --dark: #363636; --light: #f9f3e9; --overlay: rgba(0, 0, 0, 0.45); } body { background-color: var(--light); color: var(--dark); overflow-x: hidden; height: 100%; width: 100%; } .container { max-width: 700px; height: 700px; margin: 0 auto; overflow: hidden; position: relative; } header { padding: 1.5rem; display: flex; justify-content: space-between; align-items: center; position: fixed; width: 100%; max-width: 700px; z-index: 100; transition: all 0.3s ease; } header.scrolled { background-color: rgba(249, 243, 233, 0.95); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); } .logo { font-size: 1.5rem; font-weight: bold; color: var(--secondary); position: relative; text-decoration: none; } .logo::after { content: ''; position: absolute; bottom: -3px; left: 0; width: 0; height: 2px; background-color: var(--secondary); transition: width 0.3s ease; } .logo:hover::after { width: 100%; } nav ul { display: flex; list-style: none; gap: 1.5rem; } nav a { text-decoration: none; color: var(--dark); position: relative; font-size: 0.95rem; transition: color 0.3s ease; } nav a:hover { color: var(--secondary); } nav a::after { content: ''; position: absolute; bottom: -3px; left: 0; width: 0; height: 2px; background-color: var(--secondary); transition: width 0.3s ease; } nav a:hover::after { width: 100%; } .hero-section { height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; position: relative; overflow: hidden; max-height: 700px; } .hero-section::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: var(--overlay); z-index: 1; } .hero-bg { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; filter: blur(5px) sepia(0.2) brightness(0.8); transform: scale(1.1); transition: all 1.5s ease; } .hero-content { position: relative; z-index: 2; max-width: 85%; padding: 2rem; color: white; opacity: 0; transform: translateY(30px); animation: fadeUp 1.2s forwards 0.5s; } @keyframes fadeUp { to { opacity: 1; transform: translateY(0); } } .hero-title { font-size: 3rem; margin-bottom: 1rem; line-height: 1.1; color: var(--light); text-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3); } .hero-subtitle { font-size: 1.2rem; margin-bottom: 2rem; font-weight: 300; color: var(--light); opacity: 0.9; } .cta-button { background-color: var(--secondary); color: white; border: none; padding: 12px 24px; font-size: 1rem; border-radius: 30px; cursor: pointer; transition: all 0.3s ease; text-transform: uppercase; letter-spacing: 1px; box-shadow: 0 4px 12px rgba(226, 90, 69, 0.3); } .cta-button:hover { background-color: #d14836; transform: translateY(-3px); box-shadow: 0 6px 16px rgba(226, 90, 69, 0.4); } .destinations { padding: 4rem 2rem; background-color: var(--light); } .section-title { text-align: center; font-size: 2.2rem; margin-bottom: 3rem; color: var(--dark); position: relative; padding-bottom: 1rem; } .section-title::after { content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 80px; height: 3px; background-color: var(--secondary); } .destinations-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; } .destination-card { position: relative; border-radius: 12px; overflow: hidden; height: 250px; box-shadow: 0 6px 15px rgba(0, 0, 0, 0.1); cursor: pointer; transition: all 0.4s ease; } .destination-card:hover { transform: translateY(-5px); box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15); } .destination-card:hover .card-img { filter: blur(3px) sepia(0.15) brightness(0.85); transform: scale(1.05); } .destination-card:hover .card-content h3 { transform: translateY(-5px); } .destination-card:hover .hidden-content { opacity: 1; transform: translateY(0); } .card-img { position: absolute; width: 100%; height: 100%; object-fit: cover; transition: all 0.6s ease; filter: blur(0) sepia(0.1) brightness(0.9); } .card-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(to top, rgba(0, 0, 0, 0.7) 30%, rgba(0, 0, 0, 0.2)); } .card-content { position: absolute; bottom: 0; width: 100%; padding: 1.5rem; color: white; z-index: 2; } .card-content h3 { font-size: 1.5rem; margin-bottom: 0.5rem; transition: transform 0.4s ease; } .hidden-content { opacity: 0; transform: translateY(20px); transition: all 0.5s ease; font-size: 0.9rem; margin-top: 0.5rem; } .travel-tip { background-color: var(--primary); border-radius: 8px; padding: 2rem; margin: 4rem 2rem; position: relative; overflow: hidden; box-shadow: 0 8px 20px rgba(248, 198, 126, 0.3); } .tip-pattern { position: absolute; top: 0; right: 0; width: 100%; height: 100%; opacity: 0.1; pointer-events: none; background-image: radial-gradient(circle, var(--secondary) 2px, transparent 2px); background-size: 20px 20px; } .tip-content { position: relative; z-index: 2; } .tip-title { font-size: 1.8rem; margin-bottom: 1rem; color: var(--dark); } .tip-text { font-size: 1.1rem; line-height: 1.6; color: var(--dark); } footer { background-color: var(--dark); color: white; padding: 2rem; text-align: center; } .footer-text { opacity: 0.7; font-size: 0.9rem; margin-bottom: 1rem; } .social-links { display: flex; justify-content: center; gap: 1rem; margin-top: 1.5rem; } .social-link { width: 36px; height: 36px; border-radius: 50%; background-color: rgba(255, 255, 255, 0.1); display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; } .social-link:hover { background-color: var(--secondary); transform: translateY(-3px); } .social-icon { font-size: 1rem; color: white; } /* Mobile Responsiveness */ @media (max-width: 700px) { .hero-title { font-size: 2.2rem; } .hero-subtitle { font-size: 1rem; } .destinations-grid { grid-template-columns: 1fr; } .destination-card { height: 200px; } nav ul { gap: 1rem; } nav a { font-size: 0.85rem; } } @media (max-width: 500px) { .hero-title { font-size: 1.8rem; } .section-title { font-size: 1.8rem; } .tip-title { font-size: 1.5rem; } .tip-text { font-size: 1rem; } } /* Mouse trail effect */ .cursor-trail { position: fixed; width: 10px; height: 10px; border-radius: 50%; background-color: var(--secondary); pointer-events: none; opacity: 0; mix-blend-mode: lighten; transition: opacity 0.2s ease; z-index: 1000; } </style> </head> <body> <div class="container"> <header id="header"> <a href="#" class="logo">Nomadic Whispers</a> <nav> <ul> <li><a href="#">Home</a></li> <li><a href="#">Destinations</a></li> <li><a href="#">Stories</a></li> <li><a href="#">About</a></li> </ul> </nav> </header> <section class="hero-section"> <img src="https://images.unsplash.com/photo-1602940659805-770d1b3b9911?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1332&q=80" alt="Dreamy coastline" class="hero-bg"> <div class="hero-content"> <h1 class="hero-title">Where Dreams Take Flight</h1> <p class="hero-subtitle">Discover hidden pathways to extraordinary experiences in carefully curated destinations</p> <button class="cta-button">Begin Your Journey</button> </div> </section> <section class="destinations"> <h2 class="section-title">Lost in Wanderlust</h2> <div class="destinations-grid"> <div class="destination-card"> <img src="https://images.unsplash.com/photo-1496442226666-8d4d0e62e6e9?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1170&q=80" alt="Amalfi Coast" class="card-img"> <div class="card-overlay"></div> <div class="card-content"> <h3>Amalfi Coast, Italy</h3> <div class="hidden-content"> <p>Best visited April-June when the lemon groves bloom and before summer crowds arrive</p> </div> </div> </div> <div class="destination-card"> <img src="https://images.unsplash.com/photo-1591880908807-37b8f8583fe7?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1171&q=80" alt="Kyoto Japan" class="card-img"> <div class="card-overlay"></div> <div class="card-content"> <h3>Kyoto, Japan</h3> <div class="hidden-content"> <p>Visit during November for stunning autumn foliage or late March for cherry blossoms</p> </div> </div> </div> <div class="destination-card"> <img src="https://images.unsplash.com/photo-1517402575927-32d1a5fe3f89?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1173&q=80" alt="Santorini Greece" class="card-img"> <div class="card-overlay"></div> <div class="card-content"> <h3>Santorini, Greece</h3> <div class="hidden-content"> <p>Explore hidden beaches on the eastern coast away from the cruise ship crowds</p> </div> </div> </div> <div class="destination-card"> <img src="https://images.unsplash.com/photo-1589308078059-be1415eab4c3?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1170&q=80" alt="Marrakech Morocco" class="card-img"> <div class="card-overlay"></div> <div class="card-content"> <h3>Marrakech, Morocco</h3> <div class="hidden-content"> <p>Wander the souks early morning before 10am for a peaceful shopping experience</p> </div> </div> </div> </div> </section> <div class="travel-tip"> <div class="tip-pattern"></div> <div class="tip-content"> <h3 class="tip-title">Seasoned Nomad's Secret</h3> <p class="tip-text">Pack a small notebook and collect one pressed flower or leaf from each destination. Label with location and date – it becomes a beautiful, sensory travel journal that brings memories flooding back years later.</p> </div> </div> <footer> <p class="footer-text">Crafting unforgettable journeys since 2023</p> <p class="footer-text">© Nomadic Whispers. All wanderlust preserved.</p> <div class="social-links"> <a href="#" class="social-link"> <i class="social-icon">♥</i> </a> <a href="#" class="social-link"> <i class="social-icon">✈</i> </a> <a href="#" class="social-link"> <i class="social-icon">☀</i> </a> </div> </footer> </div> <script> // Create cursor trail effect const numTrails = 5; const trails = []; for (let i = 0; i < numTrails; i++) { const trail = document.createElement('div'); trail.className = 'cursor-trail'; document.body.appendChild(trail); trails.push({ element: trail, x: 0, y: 0, size: Math.max(5, 12 - i * 2), active: false }); } // Mouse move handler for cursor trail document.addEventListener('mousemove', (e) => { const { clientX, clientY } = e; trails.forEach((trail, index) => { setTimeout(() => { trail.x = clientX; trail.y = clientY; trail.element.style.transform = `translate(${clientX}px, ${clientY}px)`; trail.element.style.width = `${trail.size}px`; trail.element.style.height = `${trail.size}px`; trail.element.style.opacity = '0.7'; trail.active = true; setTimeout(() => { trail.element.style.opacity = '0'; }, 300); }, index * 50); }); }); document.addEventListener('mouseleave', () => { trails.forEach(trail => { trail.element.style.opacity = '0'; trail.active = false; }); }); // Parallax effect for hero background const heroSection = document.querySelector('.hero-section'); const heroBg = document.querySelector('.hero-bg'); heroSection.addEventListener('mousemove', (e) => { const { clientX, clientY } = e; const xPercent = clientX / window.innerWidth - 0.5; const yPercent = clientY / window.innerHeight - 0.5; heroBg.style.transform = `scale(1.1) translate(${xPercent * 20}px, ${yPercent * 20}px)`; }); // Header scroll effect const header = document.getElementById('header'); window.addEventListener('scroll', () => { if (window.scrollY > 50) { header.classList.add('scrolled'); } else { header.classList.remove('scrolled'); } }); // CTA button effect const ctaButton = document.querySelector('.cta-button'); ctaButton.addEventListener('click', () => { ctaButton.style.transform = 'scale(0.95)'; setTimeout(() => { ctaButton.style.transform = ''; // Scroll to destinations section const destinations = document.querySelector('.destinations'); destinations.scrollIntoView({ behavior: 'smooth' }); }, 200); }); // Destination cards hover animation const destinationCards = document.querySelectorAll('.destination-card'); destinationCards.forEach(card => { card.addEventListener('mouseenter', () => { const cardImg = card.querySelector('.card-img'); const cardTitle = card.querySelector('h3'); cardImg.style.filter = 'blur(3px) sepia(0.15) brightness(0.85)'; cardTitle.style.transform = 'translateY(-5px)'; }); card.addEventListener('mouseleave', () => { const cardImg = card.querySelector('.card-img'); const cardTitle = card.querySelector('h3'); cardImg.style.filter = 'blur(0) sepia(0.1) brightness(0.9)'; cardTitle.style.transform = 'translateY(0)'; }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>NeonStrike: Gaming Interface</title> <style> :root { --primary: #ff003c; --secondary: #00eeff; --dark: #141414; --light: #f0f0f0; --accent: #9000ff; --blur-radius: 5px; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Rajdhani', sans-serif; } @font-face { font-family: 'Rajdhani'; src: url('https://fonts.googleapis.com/css2?family=Rajdhani:wght@500;600;700&display=swap'); } body { background: var(--dark); color: var(--light); overflow: hidden; height: 100vh; width: 100%; display: flex; justify-content: center; align-items: center; } .container { width: 700px; height: 700px; position: relative; overflow: hidden; display: flex; flex-direction: column; justify-content: center; align-items: center; } /* Background animation */ .bg-animation { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; background: linear-gradient(45deg, var(--dark), #1a1a1a); overflow: hidden; } .bg-line { position: absolute; background: var(--primary); opacity: 0.1; box-shadow: 0 0 20px var(--primary); border-radius: 10px; } /* Game title */ .game-title { font-size: 3.5rem; font-weight: 700; text-transform: uppercase; letter-spacing: 2px; margin-bottom: 2rem; position: relative; text-shadow: 0 0 10px var(--primary), 0 0 20px var(--primary); animation: pulse 2s infinite alternate; } .game-title::before { content: "NEONSTRIKE"; position: absolute; top: 0; left: 0; width: 100%; height: 100%; color: var(--secondary); filter: blur(4px); opacity: 0.8; animation: title-glitch 5s infinite; } /* Menu container */ .menu-container { background: rgba(0, 0, 0, 0.5); backdrop-filter: blur(var(--blur-radius)); border-radius: 20px; border: 1px solid rgba(255, 255, 255, 0.1); padding: 2rem; width: 80%; max-width: 500px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); transition: all 0.3s ease; } /* Menu items */ .menu-item { margin: 1rem 0; position: relative; transition: all 0.3s ease; overflow: hidden; border-radius: 5px; cursor: pointer; } .menu-link { display: block; padding: 1rem 1.5rem; text-decoration: none; color: var(--light); font-size: 1.2rem; font-weight: 600; text-transform: uppercase; letter-spacing: 1px; background: rgba(0, 0, 0, 0.3); transition: all 0.3s ease; position: relative; z-index: 1; border-left: 3px solid transparent; } .menu-link:hover, .menu-link.active { background: rgba(0, 0, 0, 0.5); color: var(--secondary); border-left: 3px solid var(--primary); transform: translateX(5px); } .menu-link::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(90deg, var(--primary), var(--secondary)); opacity: 0; z-index: -1; transition: all 0.3s ease; transform: translateX(-100%); filter: blur(30px); } .menu-link:hover::before, .menu-link.active::before { opacity: 0.3; transform: translateX(0); } /* Game modes */ .game-modes { display: none; flex-wrap: wrap; justify-content: space-between; gap: 1rem; margin-top: 1rem; } .game-mode { flex: 1 0 45%; min-width: 120px; background: rgba(0, 0, 0, 0.5); border-radius: 10px; padding: 1rem; text-align: center; cursor: pointer; transition: all 0.3s ease; border: 1px solid rgba(255, 255, 255, 0.1); position: relative; overflow: hidden; } .game-mode:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.3); border-color: var(--secondary); } .game-mode h3 { font-size: 1rem; margin-bottom: 0.5rem; color: var(--secondary); } .game-mode p { font-size: 0.8rem; opacity: 0.7; } .game-mode::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(45deg, var(--primary), var(--secondary)); opacity: 0; z-index: -1; transition: all 0.3s ease; filter: blur(20px); } .game-mode:hover::before { opacity: 0.2; } /* Settings panel */ .settings-panel { display: none; flex-direction: column; gap: 1rem; margin-top: 1rem; } .setting-item { display: flex; justify-content: space-between; align-items: center; padding: 0.5rem 0; border-bottom: 1px solid rgba(255, 255, 255, 0.1); } .setting-label { font-size: 1rem; font-weight: 600; } .setting-control { display: flex; align-items: center; } /* Slider */ .slider { -webkit-appearance: none; width: 120px; height: 4px; background: rgba(255, 255, 255, 0.2); border-radius: 2px; outline: none; } .slider::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 15px; height: 15px; border-radius: 50%; background: var(--secondary); cursor: pointer; box-shadow: 0 0 10px var(--secondary); } /* Toggle switch */ .toggle { position: relative; display: inline-block; width: 50px; height: 24px; } .toggle input { opacity: 0; width: 0; height: 0; } .toggle-slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(255, 255, 255, 0.2); transition: .4s; border-radius: 24px; } .toggle-slider:before { position: absolute; content: ""; height: 18px; width: 18px; left: 3px; bottom: 3px; background-color: var(--light); transition: .4s; border-radius: 50%; } input:checked + .toggle-slider { background-color: var(--primary); } input:checked + .toggle-slider:before { transform: translateX(26px); background-color: var(--dark); } /* Profile panel */ .profile-panel { display: none; flex-direction: column; align-items: center; gap: 1rem; margin-top: 1rem; } .profile-avatar { width: 100px; height: 100px; border-radius: 50%; background: linear-gradient(45deg, var(--primary), var(--accent)); display: flex; justify-content: center; align-items: center; overflow: hidden; border: 3px solid var(--dark); box-shadow: 0 0 20px rgba(255, 0, 60, 0.5); position: relative; } .profile-avatar::after { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.3); backdrop-filter: blur(1px); } .avatar-text { font-size: 2.5rem; font-weight: 700; color: var(--dark); z-index: 1; } .profile-stats { display: flex; width: 100%; justify-content: space-around; margin-top: 1rem; } .stat-item { display: flex; flex-direction: column; align-items: center; } .stat-value { font-size: 1.5rem; font-weight: 700; color: var(--secondary); } .stat-label { font-size: 0.8rem; opacity: 0.7; } /* Back button */ .back-button { display: none; position: absolute; top: 20px; left: 20px; background: none; border: none; color: var(--light); font-size: 1rem; cursor: pointer; transition: all 0.3s ease; opacity: 0.7; } .back-button:hover { opacity: 1; transform: translateX(-5px); color: var(--secondary); } /* Bottom HUD */ .bottom-hud { position: absolute; bottom: 20px; display: flex; gap: 2rem; font-size: 0.8rem; } .hud-item { display: flex; align-items: center; gap: 0.5rem; opacity: 0.7; transition: all 0.3s ease; } .hud-item:hover { opacity: 1; transform: scale(1.1); } /* Animations */ @keyframes pulse { 0% { text-shadow: 0 0 10px var(--primary), 0 0 20px var(--primary); } 100% { text-shadow: 0 0 15px var(--primary), 0 0 30px var(--primary), 0 0 40px var(--primary); } } @keyframes title-glitch { 0% { opacity: 0.8; transform: translate(0); } 20% { opacity: 0.8; transform: translate(0); } 21% { opacity: 0.2; transform: translate(-5px, 5px); } 23% { opacity: 0.8; transform: translate(0); } 50% { opacity: 0.8; transform: translate(0); } 52% { opacity: 0.2; transform: translate(5px, -5px); } 53% { opacity: 0.8; transform: translate(0); } 90% { opacity: 0.8; transform: translate(0); } 92% { opacity: 0.2; transform: translate(-3px, 3px); } 93% { opacity: 0.8; transform: translate(0); } } @keyframes float { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-10px) rotate(5deg); } 100% { transform: translateY(0) rotate(0deg); } } /* Responsive styles */ @media (max-width: 600px) { .game-title { font-size: 2.5rem; } .menu-container { width: 90%; padding: 1.5rem; } .menu-link { font-size: 1rem; padding: 0.8rem 1rem; } .game-mode { flex: 1 0 100%; } } </style> </head> <body> <div class="container"> <div class="bg-animation" id="bg-animation"></div> <button class="back-button" id="back-button">⬅ BACK</button> <h1 class="game-title">NEONSTRIKE</h1> <div class="menu-container" id="menu-container"> <div class="menu-item"> <a href="#" class="menu-link" data-panel="play">PLAY NOW</a> </div> <div class="menu-item"> <a href="#" class="menu-link" data-panel="settings">SETTINGS</a> </div> <div class="menu-item"> <a href="#" class="menu-link" data-panel="profile">PROFILE</a> </div> <div class="menu-item"> <a href="#" class="menu-link">STORE</a> </div> <div class="menu-item"> <a href="#" class="menu-link">EXIT</a> </div> <!-- Game Modes Panel --> <div class="game-modes" id="play-panel"> <div class="game-mode"> <h3>CYBERBATTLE</h3> <p>5v5 team-based combat in a neon-filled arena</p> </div> <div class="game-mode"> <h3>SURVIVAL NEXUS</h3> <p>Last player standing in 100-player battle royale</p> </div> <div class="game-mode"> <h3>SPEED RUSH</h3> <p>Race through digital landscapes against time</p> </div> <div class="game-mode"> <h3>STORY MODE</h3> <p>Uncover the secrets of the NeonStrike universe</p> </div> </div> <!-- Settings Panel --> <div class="settings-panel" id="settings-panel"> <div class="setting-item"> <span class="setting-label">Blur Intensity</span> <div class="setting-control"> <input type="range" min="0" max="20" value="5" class="slider" id="blur-slider"> </div> </div> <div class="setting-item"> <span class="setting-label">Motion Effects</span> <div class="setting-control"> <label class="toggle"> <input type="checkbox" checked> <span class="toggle-slider"></span> </label> </div> </div> <div class="setting-item"> <span class="setting-label">Graphics Quality</span> <div class="setting-control"> <input type="range" min="0" max="10" value="8" class="slider"> </div> </div> <div class="setting-item"> <span class="setting-label">Music Volume</span> <div class="setting-control"> <input type="range" min="0" max="10" value="7" class="slider"> </div> </div> <div class="setting-item"> <span class="setting-label">Sound FX</span> <div class="setting-control"> <input type="range" min="0" max="10" value="10" class="slider"> </div> </div> </div> <!-- Profile Panel --> <div class="profile-panel" id="profile-panel"> <div class="profile-avatar"> <span class="avatar-text">NS</span> </div> <h3>NEONSTRIKE_PLAYER</h3> <div class="profile-stats"> <div class="stat-item"> <span class="stat-value">147</span> <span class="stat-label">MATCHES</span> </div> <div class="stat-item"> <span class="stat-value">71%</span> <span class="stat-label">WIN RATE</span> </div> <div class="stat-item"> <span class="stat-value">3.2</span> <span class="stat-label">K/D RATIO</span> </div> </div> </div> </div> <div class="bottom-hud"> <div class="hud-item"> <span>PING: 28ms</span> </div> <div class="hud-item"> <span>ONLINE PLAYERS: 125,841</span> </div> <div class="hud-item"> <span>V3.8.2</span> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { // Background animation const bgAnimation = document.getElementById('bg-animation'); const colors = ['var(--primary)', 'var(--secondary)', 'var(--accent)']; for (let i = 0; i < 15; i++) { const line = document.createElement('div'); line.classList.add('bg-line'); // Random properties const width = Math.random() * 3 + 1; const height = Math.random() * 200 + 100; const left = Math.random() * 100; const animationDuration = Math.random() * 5 + 2; const color = colors[Math.floor(Math.random() * colors.length)]; line.style.width = `${width}px`; line.style.height = `${height}px`; line.style.left = `${left}%`; line.style.top = `${Math.random() * 100}%`; line.style.background = color; line.style.boxShadow = `0 0 10px ${color}`; line.style.animation = `float ${animationDuration}s infinite ease-in-out`; line.style.animationDelay = `${Math.random() * 5}s`; bgAnimation.appendChild(line); } // Menu navigation const menuLinks = document.querySelectorAll('.menu-link'); const backButton = document.getElementById('back-button'); const menuContainer = document.getElementById('menu-container'); const playPanel = document.getElementById('play-panel'); const settingsPanel = document.getElementById('settings-panel'); const profilePanel = document.getElementById('profile-panel'); menuLinks.forEach(link => { link.addEventListener('click', function(e) { e.preventDefault(); const panel = this.getAttribute('data-panel'); // Reset all links menuLinks.forEach(l => l.classList.remove('active')); this.classList.add('active'); // Hide all panels playPanel.style.display = 'none'; settingsPanel.style.display = 'none'; profilePanel.style.display = 'none'; // Show selected panel if (panel === 'play') { playPanel.style.display = 'flex'; backButton.style.display = 'block'; } else if (panel === 'settings') { settingsPanel.style.display = 'flex'; backButton.style.display = 'block'; } else if (panel === 'profile') { profilePanel.style.display = 'flex'; backButton.style.display = 'block'; } // Blur effect on selection const blurRadius = getComputedStyle(document.documentElement).getPropertyValue('--blur-radius'); document.documentElement.style.setProperty('--blur-radius', `${parseInt(blurRadius) + 5}px`); setTimeout(() => { document.documentElement.style.setProperty('--blur-radius', blurRadius); }, 300); }); }); // Back button functionality backButton.addEventListener('click', function() { // Hide all panels playPanel.style.display = 'none'; settingsPanel.style.display = 'none'; profilePanel.style.display = 'none'; backButton.style.display = 'none'; // Reset all links menuLinks.forEach(l => l.classList.remove('active')); }); // Blur slider functionality const blurSlider = document.getElementById('blur-slider'); blurSlider.addEventListener('input', function() { document.documentElement.style.setProperty('--blur-radius', `${this.value}px`); }); // Game mode hover effect const gameModes = document.querySelectorAll('.game-mode'); gameModes.forEach(mode => { mode.addEventListener('mouseenter', function() { const blurRadius = getComputedStyle(document.documentElement).getPropertyValue('--blur-radius'); document.documentElement.style.setProperty('--blur-radius', `${parseInt(blurRadius) + 3}px`); }); mode.addEventListener('mouseleave', function() { const blurRadius = getComputedStyle(document.documentElement).getPropertyValue('--blur-radius'); document.documentElement.style.setProperty('--blur-radius', `${Math.max(parseInt(blurRadius) - 3, 5)}px`); }); }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Serene - Wellness Journey</title> <style> @import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@300;400;500;600&family=Montserrat:wght@300;400;500&display=swap'); :root { --sage: #C2C5AA; --moss: #7D8471; --clay: #A68A7B; --cream: #F4F1DE; --earth: #5E503F; --dusk: #3A506B; } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Montserrat', sans-serif; color: var(--earth); background-color: var(--cream); overflow-x: hidden; overflow-y: auto; height: 100vh; width: 100%; position: relative; } .app-container { max-width: 700px; height: 100%; margin: 0 auto; position: relative; overflow: hidden; } .background-image { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-image: url('https://images.unsplash.com/photo-1511688878353-3a2f5be94cd7?q=80&w=1374&auto=format&fit=crop'); background-size: cover; background-position: center; filter: blur(8px) brightness(0.9); z-index: -1; transform: scale(1.1); } header { padding: 20px; backdrop-filter: blur(10px); background-color: rgba(244, 241, 222, 0.4); border-bottom: 1px solid rgba(244, 241, 222, 0.2); position: sticky; top: 0; z-index: 10; display: flex; justify-content: space-between; align-items: center; } .logo { font-family: 'Cormorant Garamond', serif; font-size: 28px; font-weight: 500; color: var(--earth); letter-spacing: 1px; } .logo span { color: var(--dusk); } nav { display: flex; gap: 20px; } nav a { color: var(--earth); text-decoration: none; font-size: 15px; transition: color 0.3s ease; position: relative; padding-bottom: 3px; } nav a::after { content: ''; position: absolute; width: 0; height: 1px; bottom: 0; left: 0; background-color: var(--clay); transition: width 0.3s ease; } nav a:hover { color: var(--clay); } nav a:hover::after { width: 100%; } .main-container { padding: 30px 20px; height: calc(100% - 80px); overflow-y: auto; } .intro-section { text-align: center; margin-bottom: 40px; } h1 { font-family: 'Cormorant Garamond', serif; font-size: 40px; font-weight: 500; margin-bottom: 15px; color: var(--earth); } .subtitle { font-size: 16px; line-height: 1.6; max-width: 550px; margin: 0 auto; color: var(--moss); } .wellness-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 25px; margin-top: 30px; } .card { background-color: rgba(255, 255, 255, 0.8); backdrop-filter: blur(10px); border-radius: 12px; overflow: hidden; transition: transform 0.4s ease, box-shadow 0.4s ease; position: relative; box-shadow: 0 5px 15px rgba(94, 80, 63, 0.1); } .card:hover { transform: translateY(-5px); box-shadow: 0 12px 20px rgba(94, 80, 63, 0.15); } .card-blur-bg { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-size: cover; background-position: center; filter: blur(5px) brightness(0.9); z-index: 0; transform: scale(1.1); opacity: 0.5; transition: opacity 0.3s ease; } .card:hover .card-blur-bg { opacity: 0.7; } .card-content { position: relative; z-index: 1; padding: 20px; background: linear-gradient(to bottom, rgba(255, 255, 255, 0.9), rgba(244, 241, 222, 0.8)); height: 100%; display: flex; flex-direction: column; } .card-icon { width: 60px; height: 60px; margin-bottom: 15px; background-color: var(--sage); border-radius: 50%; display: flex; align-items: center; justify-content: center; } .card-icon svg { width: 30px; height: 30px; fill: var(--cream); } h2 { font-family: 'Cormorant Garamond', serif; font-size: 24px; font-weight: 600; margin-bottom: 10px; color: var(--earth); } .card p { font-size: 14px; line-height: 1.6; color: var(--earth); margin-bottom: 15px; flex-grow: 1; } .card-button { background-color: var(--clay); color: var(--cream); border: none; padding: 8px 15px; border-radius: 6px; font-size: 14px; cursor: pointer; transition: background-color 0.3s ease, transform 0.2s ease; font-family: 'Montserrat', sans-serif; font-weight: 500; align-self: flex-start; } .card-button:hover { background-color: var(--earth); transform: scale(1.05); } .daily-tip { margin-top: 40px; background: linear-gradient(135deg, rgba(194, 197, 170, 0.5), rgba(166, 138, 123, 0.5)); backdrop-filter: blur(10px); padding: 25px; border-radius: 12px; position: relative; overflow: hidden; } .daily-tip::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: url('https://images.unsplash.com/photo-1497032628192-86f99bcd76bc?q=80&w=1470&auto=format&fit=crop') center/cover; opacity: 0.2; filter: blur(5px); z-index: -1; } .daily-tip h3 { font-family: 'Cormorant Garamond', serif; color: var(--earth); font-size: 22px; margin-bottom: 15px; position: relative; } .daily-tip h3::after { content: ''; position: absolute; bottom: -5px; left: 0; width: 60px; height: 2px; background-color: var(--clay); } .daily-tip p { color: var(--earth); font-size: 15px; line-height: 1.6; } .breathing-exercise { margin-top: 40px; text-align: center; } .breathing-circle { width: 150px; height: 150px; background: rgba(166, 138, 123, 0.2); border: 2px solid var(--clay); border-radius: 50%; margin: 20px auto; display: flex; align-items: center; justify-content: center; position: relative; transition: transform 0.3s ease; } .breathing-circle-inner { width: 70%; height: 70%; background: rgba(194, 197, 170, 0.4); border-radius: 50%; transition: all 4s ease-in-out; } .breathing-text { position: absolute; font-family: 'Cormorant Garamond', serif; font-size: 18px; color: var(--earth); width: 100%; text-align: center; margin-top: 180px; } .start-breathing { background-color: var(--clay); color: var(--cream); border: none; padding: 10px 20px; border-radius: 6px; font-size: 15px; cursor: pointer; transition: background-color 0.3s ease, transform 0.2s ease; font-family: 'Montserrat', sans-serif; font-weight: 500; margin-top: 15px; } .start-breathing:hover { background-color: var(--earth); transform: scale(1.05); } @media (max-width: 600px) { .logo { font-size: 24px; } nav { gap: 15px; } nav a { font-size: 13px; } h1 { font-size: 32px; } .subtitle { font-size: 14px; } .wellness-cards { grid-template-columns: 1fr; } .daily-tip h3 { font-size: 20px; } .breathing-circle { width: 120px; height: 120px; } .breathing-text { margin-top: 150px; font-size: 16px; } } /* Interactive menu animation */ .menu-button { display: none; background: none; border: none; cursor: pointer; } .menu-icon { width: 24px; height: 18px; position: relative; } .menu-icon span { display: block; position: absolute; height: 2px; width: 100%; background: var(--earth); border-radius: 2px; opacity: 1; left: 0; transform: rotate(0deg); transition: .25s ease-in-out; } .menu-icon span:nth-child(1) { top: 0px; } .menu-icon span:nth-child(2), .menu-icon span:nth-child(3) { top: 8px; } .menu-icon span:nth-child(4) { top: 16px; } .menu-open .menu-icon span:nth-child(1) { top: 8px; width: 0%; left: 50%; } .menu-open .menu-icon span:nth-child(2) { transform: rotate(45deg); } .menu-open .menu-icon span:nth-child(3) { transform: rotate(-45deg); } .menu-open .menu-icon span:nth-child(4) { top: 8px; width: 0%; left: 50%; } @media (max-width: 480px) { .menu-button { display: block; z-index: 20; } nav { position: fixed; top: 0; right: -70%; width: 70%; height: 100vh; background-color: rgba(244, 241, 222, 0.95); backdrop-filter: blur(10px); flex-direction: column; align-items: center; justify-content: center; gap: 30px; transition: right 0.4s cubic-bezier(0.77, 0.2, 0.05, 1.0); z-index: 15; } nav a { font-size: 18px; } .menu-open nav { right: 0; } } /* Progress tracker */ .progress-tracker { margin-top: 40px; padding: 20px; background: linear-gradient(to right, rgba(125, 132, 113, 0.2), rgba(166, 138, 123, 0.2)); backdrop-filter: blur(5px); border-radius: 12px; } .progress-tracker h3 { font-family: 'Cormorant Garamond', serif; color: var(--earth); font-size: 22px; margin-bottom: 20px; } .habit-entries { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 15px; } .habit-entry { background-color: rgba(255, 255, 255, 0.6); padding: 15px; border-radius: 8px; text-align: center; transition: transform 0.3s ease, background-color 0.3s ease; cursor: pointer; } .habit-entry:hover { transform: translateY(-3px); background-color: rgba(255, 255, 255, 0.8); } .habit-icon { display: block; font-size: 24px; margin-bottom: 8px; } .habit-name { font-size: 14px; color: var(--earth); margin-bottom: 8px; } .habit-status { width: 20px; height: 20px; border-radius: 50%; margin: 0 auto; background-color: rgba(255, 255, 255, 0.5); border: 2px solid var(--moss); transition: background-color 0.3s ease, transform 0.3s ease; } .habit-completed .habit-status { background-color: var(--sage); transform: scale(1.1); } /* Particle effect */ .particles { position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; z-index: -1; } .particle { position: absolute; width: 6px; height: 6px; background-color: rgba(255, 255, 255, 0.4); border-radius: 50%; opacity: 0; animation: float 15s infinite ease-in-out; } @keyframes float { 0% { opacity: 0; transform: translateY(0) rotate(0deg); } 20% { opacity: 0.5; } 50% { opacity: 0.8; } 80% { opacity: 0.5; } 100% { opacity: 0; transform: translateY(-100px) rotate(360deg); } } /* Breathe animation */ @keyframes breatheIn { from { transform: scale(1); } to { transform: scale(1.3); } } @keyframes breatheOut { from { transform: scale(1.3); } to { transform: scale(1); } } @keyframes breatheHold { from { transform: scale(1.3); } to { transform: scale(1.3); } } .breathing-active .breathing-circle-inner { animation: breatheIn 4s forwards, breatheHold 2s 4s forwards, breatheOut 4s 6s forwards; } </style> </head> <body> <div class="app-container"> <div class="background-image"></div> <div class="particles"></div> <header> <div class="logo">Serene<span>.</span></div> <nav> <a href="#home">Home</a> <a href="#practices">Practices</a> <a href="#journal">Journal</a> <a href="#profile">Profile</a> </nav> <button class="menu-button"> <div class="menu-icon"> <span></span> <span></span> <span></span> <span></span> </div> </button> </header> <div class="main-container"> <section class="intro-section"> <h1>Your Mindful Journey</h1> <p class="subtitle">Embrace balance through intentional habits. Our approach combines ancient wisdom with modern science to create sustainable wellness practices.</p> </section> <div class="wellness-cards"> <div class="card"> <div class="card-blur-bg" style="background-image: url('https://images.unsplash.com/photo-1544367567-0f2fcb009e0b?q=80&w=1520&auto=format&fit=crop')"></div> <div class="card-content"> <div class="card-icon"> <svg viewBox="0 0 24 24"> <path d="M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36c-0.98,1.37-2.58,2.26-4.4,2.26 c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"/> </svg> </div> <h2>Evening Wind Down</h2> <p>A 15-minute routine designed to release tension from your day. Practice gentle neck stretches, shoulder rolls, and diaphragmatic breathing to prepare your body for restful sleep.</p> <button class="card-button">Begin Practice</button> </div> </div> <div class="card"> <div class="card-blur-bg" style="background-image: url('https://images.unsplash.com/photo-1507525428034-b723cf961d3e?q=80&w=1473&auto=format&fit=crop')"></div> <div class="card-content"> <div class="card-icon"> <svg viewBox="0 0 24 24"> <path d="M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z"/> </svg> </div> <h2>Nature Sound Bath</h2> <p>Immerse yourself in binaural audio recordings from pristine natural environments. These 20-minute sessions realign brainwave patterns and reduce cortisol levels naturally.</p> <button class="card-button">Listen Now</button> </div> </div> </div> <div class="daily-tip"> <h3>Mindful Moment</h3> <p>Notice the physical sensations of your feet touching the ground as you walk today. This simple practice, called "grounding," has been shown to reduce anxiety by activating the parasympathetic nervous system and drawing attention away from cyclical thoughts.</p> </div> <div class="breathing-exercise"> <h2>4-2-4 Breathing</h2> <p class="subtitle">A calming breathing pattern to reset your nervous system</p> <div class="breathing-circle"> <div class="breathing-circle-inner"></div> </div> <div class="breathing-text">Inhale 4s • Hold 2s • Exhale 4s</div> <button class="start-breathing">Start Breathing</button> </div> <div class="progress-tracker"> <h3>Today's Wellness Habits</h3> <div class="habit-entries"> <div class="habit-entry"> <span class="habit-icon">💧</span> <div class="habit-name">Water Intake</div> <div class="habit-status"></div> </div> <div class="habit-entry"> <span class="habit-icon">🧘</span> <div class="habit-name">Meditation</div> <div class="habit-status"></div> </div> <div class="habit-entry"> <span class="habit-icon">🌱</span> <div class="habit-name">Nature Time</div> <div class="habit-status"></div> </div> <div class="habit-entry"> <span class="habit-icon">🛌</span> <div class="habit-name">8hr Sleep</div> <div class="habit-status"></div> </div> </div> </div> </div> </div> <script> // Mobile menu functionality const menuButton = document.querySelector('.menu-button'); const body = document.body; menuButton.addEventListener('click', function() { body.classList.toggle('menu-open'); }); // Breathing exercise const startBreathingBtn = document.querySelector('.start-breathing'); const breathingCircle = document.querySelector('.breathing-circle'); const breathingText = document.querySelector('.breathing-text'); startBreathingBtn.addEventListener('click', function() { if (breathingCircle.classList.contains('breathing-active')) { breathingCircle.classList.remove('breathing-active'); startBreathingBtn.textContent = 'Start Breathing'; breathingText.textContent = 'Inhale 4s • Hold 2s • Exhale 4s'; } else { startBreathingExercise(); } }); function startBreathingExercise() { breathingCircle.classList.add('breathing-active'); startBreathingBtn.textContent = 'Stop'; let counter = 0; const breathingInterval = setInterval(function() { counter++; if (counter <= 4) { breathingText.textContent = `Inhale... ${4-counter+1}`; } else if (counter <= 6) { breathingText.textContent = `Hold... ${6-counter+1}`; } else if (counter <= 10) { breathingText.textContent = `Exhale... ${10-counter+1}`; } else { counter = 0; if (!breathingCircle.classList.contains('breathing-active')) { clearInterval(breathingInterval); } else { breathingCircle.classList.remove('breathing-active'); // Need to trigger reflow void breathingCircle.offsetWidth; breathingCircle.classList.add('breathing-active'); } } }, 1000); // Stop the exercise after 3 cycles (about 30 seconds) setTimeout(function() { if (breathingCircle.classList.contains('breathing-active')) { breathingCircle.classList.remove('breathing-active'); startBreathingBtn.textContent = 'Start Breathing'; breathingText.textContent = 'Inhale 4s • Hold 2s • Exhale 4s'; clearInterval(breathingInterval); } }, 33000); } // Habit tracker functionality const habitEntries = document.querySelectorAll('.habit-entry'); habitEntries.forEach(entry => { entry.addEventListener('click', function() { this.classList.toggle('habit-completed'); }); }); // Create floating particles const particles = document.querySelector('.particles'); for (let i = 0; i < 15; i++) { createParticle(); } function createParticle() { const particle = document.createElement('div'); particle.classList.add('particle'); // Random position const posX = Math.random() * 100; const posY = Math.random() * 100; particle.style.left = `${posX}%`; particle.style.bottom = `${posY}%`; // Random size const size = Math.random() * 6 + 3; particle.style.width = `${size}px`; particle.style.height = `${size}px`; // Random opacity particle.style.opacity = Math.random() * 0.5; // Random animation delay particle.style.animationDelay = `${Math.random() * 15}s`; particles.appendChild(particle); // Remove and recreate particle after animation setTimeout(() => { particle.remove(); createParticle(); }, 15000); } // Blur effect on scroll const header = document.querySelector('header'); const mainContainer = document.querySelector('.main-container'); mainContainer.addEventListener('scroll', function() { if (this.scrollTop > 50) { header.style.backdropFilter = 'blur(15px)'; header.style.backgroundColor = 'rgba(244, 241, 222, 0.7)'; } else { header.style.backdropFilter = 'blur(10px)'; header.style.backgroundColor = 'rgba(244, 241, 222, 0.4)'; } }); // Card hover effect enhancement const cards = document.querySelectorAll('.card'); cards.forEach(card => { card.addEventListener('mouseenter', function() { const blurBg = this.querySelector('.card-blur-bg'); blurBg.style.filter = 'blur(3px) brightness(0.95)'; }); card.addEventListener('mouseleave', function() { const blurBg = this.querySelector('.card-blur-bg'); blurBg.style.filter = 'blur(5px) brightness(0.9)'; }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Chiaroscuro - Online Literary Magazine</title> <style> @import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,600;1,400&family=Libre+Franklin:wght@300;400;500&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; } :root { --primary: #3d3a39; --accent: #d5a892; --light: #f8f5f2; --mid: #e4ded8; --dark: #292523; --overlay: rgba(41, 37, 35, 0.6); } body { font-family: 'Libre Franklin', sans-serif; background-color: var(--light); color: var(--dark); line-height: 1.6; font-weight: 300; overflow-x: hidden; max-width: 700px; margin: 0 auto; height: 100vh; scrollbar-width: thin; } header { position: relative; height: 280px; overflow: hidden; margin-bottom: 2rem; } .header-image { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: url('https://images.unsplash.com/photo-1543002588-bfa74002ed7e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&q=80&w=1200'); background-size: cover; background-position: center; transition: transform 0.8s ease-out; } .header-content { position: absolute; bottom: 0; width: 100%; padding: 2rem; z-index: 2; transform: translateY(0); transition: transform 0.4s ease-out; } .header-blur { position: absolute; bottom: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(to top, var(--overlay) 20%, transparent 100%); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); z-index: 1; } h1 { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: 2.8rem; color: var(--light); margin-bottom: 0.5rem; line-height: 1.1; position: relative; } header p { color: var(--mid); font-size: 1rem; max-width: 85%; } .issue-tag { position: absolute; top: 1.5rem; right: 1.5rem; background-color: var(--accent); color: var(--dark); padding: 0.4rem 0.8rem; font-size: 0.8rem; font-weight: 500; border-radius: 2px; letter-spacing: 1px; transform: rotate(3deg); z-index: 3; transition: transform 0.3s ease; } .issue-tag:hover { transform: rotate(0) scale(1.05); } main { padding: 0 1.5rem 2rem; } .article-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; margin-bottom: 2rem; } .article-card { position: relative; overflow: hidden; border-radius: 4px; background-color: white; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04); transition: transform 0.3s ease, box-shadow 0.3s ease; } .article-card:hover { transform: translateY(-5px); box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08); } .article-image { height: 160px; overflow: hidden; position: relative; } .article-image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.4s ease; } .article-card:hover .article-image img { transform: scale(1.05); } .category-tag { position: absolute; top: 0.8rem; left: 0.8rem; background-color: var(--accent); color: var(--dark); padding: 0.3rem 0.6rem; font-size: 0.7rem; font-weight: 500; border-radius: 2px; z-index: 1; } .article-content { padding: 1.2rem; } .article-card h3 { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: 1.4rem; line-height: 1.2; margin-bottom: 0.5rem; color: var(--dark); } .article-card p { font-size: 0.9rem; color: #666; margin-bottom: 1rem; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } .article-card .read-more { color: var(--accent); font-size: 0.85rem; font-weight: 500; text-decoration: none; display: inline-block; position: relative; } .article-card .read-more::after { content: ''; position: absolute; bottom: -2px; left: 0; width: 0; height: 1px; background-color: var(--accent); transition: width 0.3s ease; } .article-card .read-more:hover::after { width: 100%; } .teaser-section { position: relative; margin: 2rem 0; border-radius: 4px; overflow: hidden; height: 200px; } .teaser-image { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: url('https://images.unsplash.com/photo-1506880018603-83d5b814b5a6?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&q=80&w=1200'); background-size: cover; background-position: center; transition: transform 0.6s ease; } .teaser-section:hover .teaser-image { transform: scale(1.05); } .teaser-content { position: absolute; width: 100%; height: 100%; display: flex; flex-direction: column; justify-content: center; padding: 2rem; z-index: 2; } .teaser-blur { position: absolute; width: 100%; height: 100%; background-color: rgba(41, 37, 35, 0.4); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); z-index: 1; } .teaser-section h2 { font-family: 'Cormorant Garamond', serif; color: white; font-size: 1.8rem; margin-bottom: 0.8rem; line-height: 1.2; } .teaser-section p { color: var(--mid); font-size: 0.95rem; max-width: 90%; margin-bottom: 1rem; } .teaser-button { align-self: flex-start; background-color: var(--accent); color: var(--dark); border: none; padding: 0.6rem 1.2rem; font-size: 0.85rem; font-weight: 500; border-radius: 3px; cursor: pointer; transition: background-color 0.3s, transform 0.2s; } .teaser-button:hover { background-color: #e0b8a6; transform: translateY(-2px); } .newsletter { background-color: white; padding: 2rem; border-radius: 4px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04); } .newsletter h3 { font-family: 'Cormorant Garamond', serif; font-size: 1.6rem; margin-bottom: 1rem; color: var(--dark); } .newsletter p { margin-bottom: 1.5rem; font-size: 0.95rem; color: #555; } .newsletter-form { display: flex; gap: 0.8rem; } .newsletter-form input { flex: 1; padding: 0.8rem 1rem; border: 1px solid var(--mid); border-radius: 3px; font-family: 'Libre Franklin', sans-serif; font-size: 0.9rem; transition: border-color 0.3s; } .newsletter-form input:focus { outline: none; border-color: var(--accent); } .newsletter-form button { background-color: var(--dark); color: white; border: none; padding: 0 1.2rem; border-radius: 3px; font-weight: 500; cursor: pointer; transition: background-color 0.3s; } .newsletter-form button:hover { background-color: #3d3a39; } .success-message { display: none; color: #3d8168; font-size: 0.9rem; margin-top: 1rem; padding: 0.5rem; background-color: rgba(61, 129, 104, 0.1); border-radius: 3px; text-align: center; } @media (max-width: 640px) { header { height: 250px; } h1 { font-size: 2.2rem; } .header-content { padding: 1.5rem; } .article-grid { grid-template-columns: 1fr; } .newsletter-form { flex-direction: column; } .teaser-section h2 { font-size: 1.5rem; } } /* Custom scrollbar */ ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: var(--light); } ::-webkit-scrollbar-thumb { background: var(--mid); border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: var(--accent); } </style> </head> <body> <header> <div class="header-image"></div> <div class="header-blur"></div> <div class="header-content"> <h1>The Liminal Space Between Silence and Sound</h1> <p>Exploring the nuanced boundaries where art, literature, and collective consciousness meet in today's fragmented soundscape.</p> </div> <div class="issue-tag">AUTUMN 2023</div> </header> <main> <div class="article-grid"> <article class="article-card"> <div class="article-image"> <img src="https://images.unsplash.com/photo-1528459099681-984dbb214131?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&q=80&w=600" alt="Person writing in journal"> <span class="category-tag">LITERARY ESSAY</span> </div> <div class="article-content"> <h3>The Eloquence of Empty Space</h3> <p>How negative space in prose creates cognitive breathing room for readers, inviting deeper engagement with complex narratives.</p> <a href="#" class="read-more">Continue reading</a> </div> </article> <article class="article-card"> <div class="article-image"> <img src="https://images.unsplash.com/photo-1508030756281-9d53656b6913?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&q=80&w=600" alt="Abstract painting"> <span class="category-tag">VISUAL ARTS</span> </div> <div class="article-content"> <h3>Brushstrokes of Ambiguity</h3> <p>When artists deliberately embrace uncertainty in their work, they mirror our contemporary experience of living between defined states.</p> <a href="#" class="read-more">Continue reading</a> </div> </article> <article class="article-card"> <div class="article-image"> <img src="https://images.unsplash.com/photo-1551818255-e6e10975bc17?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&q=80&w=600" alt="Vinyl records"> <span class="category-tag">MUSIC CRITIQUE</span> </div> <div class="article-content"> <h3>Vinyl's Resonant Revival</h3> <p>The enduring tactile charm of vinyl in a streaming world speaks to our hunger for physical connection in an increasingly digital existence.</p> <a href="#" class="read-more">Continue reading</a> </div> </article> <article class="article-card"> <div class="article-image"> <img src="https://images.unsplash.com/photo-1571771019784-3ff35f4f4277?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&q=80&w=600" alt="Person with coffee"> <span class="category-tag">INTERVIEW</span> </div> <div class="article-content"> <h3>Conversations with Ada Limón</h3> <p>The U.S. Poet Laureate discusses the interstitial moments that define her work and how poetry serves as sanctuary in chaotic times.</p> <a href="#" class="read-more">Continue reading</a> </div> </article> </div> <section class="teaser-section"> <div class="teaser-image"></div> <div class="teaser-blur"></div> <div class="teaser-content"> <h2>The Architecture of Memory</h2> <p>Our special fall edition examines how built environments shape our collective memories and cultural narratives.</p> <button class="teaser-button">Explore the series</button> </div> </section> <div class="newsletter"> <h3>Join the Conversation</h3> <p>Subscribe to receive our monthly curated selection of essays, interviews, and artistic explorations delivered directly to your inbox.</p> <form class="newsletter-form" id="newsletter-form"> <input type="email" placeholder="Your email address" required> <button type="submit">Subscribe</button> </form> <div class="success-message" id="success-message">Thank you for subscribing to Chiaroscuro Magazine.</div> </div> </main> <script> document.addEventListener('DOMContentLoaded', function() { // Header parallax effect const header = document.querySelector('header'); const headerImage = document.querySelector('.header-image'); window.addEventListener('scroll', function() { const scrollPos = window.scrollY; if (scrollPos < header.offsetHeight) { headerImage.style.transform = `translateY(${scrollPos * 0.4}px)`; } }); // Handle newsletter form submission const newsletterForm = document.getElementById('newsletter-form'); const successMessage = document.getElementById('success-message'); newsletterForm.addEventListener('submit', function(e) { e.preventDefault(); // Simulate form submission newsletterForm.style.opacity = '0.5'; newsletterForm.style.pointerEvents = 'none'; setTimeout(function() { successMessage.style.display = 'block'; newsletterForm.reset(); // Reset form after showing success message setTimeout(function() { newsletterForm.style.opacity = '1'; newsletterForm.style.pointerEvents = 'auto'; }, 1500); }, 800); }); // Article cards hover effect enhancement const articleCards = document.querySelectorAll('.article-card'); articleCards.forEach(card => { card.addEventListener('mouseenter', function() { this.querySelector('h3').style.color = '#d5a892'; }); card.addEventListener('mouseleave', function() { this.querySelector('h3').style.color = '#292523'; }); }); // Teaser section interactive elements const teaserButton = document.querySelector('.teaser-button'); teaserButton.addEventListener('click', function() { this.innerHTML = 'Coming October 15'; this.style.width = '160px'; setTimeout(() => { this.innerHTML = 'Explore the series'; this.style.width = 'auto'; }, 2000); }); }); </script> </body> </html>