Flyers remain a powerful tool for businesses and events, offering a tangible way to capture attention and convey key messages. In this article, we explore ten standout flyer examples that showcase creativity and effectiveness.
From bold designs to minimalist approaches, these flyers demonstrate a range of styles and techniques. Whether you're looking for inspiration or practical tips, these examples will help elevate your next flyer project.
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
Designers and developers love Subframe for its drag-and-drop interface and intuitive, responsive canvas. Create pixel-perfect UIs effortlessly, ensuring your flyer stands out every time.
Ready to elevate your design game? Start for free 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
Unlock the power of Subframe and design stunning UIs, including flyers, with unmatched efficiency. Our drag-and-drop interface ensures you can create pixel-perfect designs immediately.
Ready to transform your design process? Start for free and begin creating right away!
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>SONIC BLOOM | Summer Music Festival</title> <style> /* Reset & Base Styles */ * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Montserrat', sans-serif; } @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600;800&family=Permanent+Marker&display=swap'); :root { --primary: #ff2a6d; --secondary: #05d9e8; --tertiary: #d1f7ff; --dark: #01012b; --accent: #7700ff; } body { background-color: var(--dark); color: white; overflow-x: hidden; max-width: 700px; max-height: 700px; margin: 0 auto; } .container { max-width: 700px; height: 100vh; max-height: 700px; padding: 1.5rem; position: relative; overflow: hidden; display: flex; flex-direction: column; } /* Abstract Pattern Background */ .pattern { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; opacity: 0.2; background-image: radial-gradient(var(--secondary) 2px, transparent 2px), radial-gradient(var(--primary) 2px, transparent 2px); background-size: 30px 30px; background-position: 0 0, 15px 15px; animation: patternMove 40s linear infinite; } @keyframes patternMove { 0% { background-position: 0 0, 15px 15px; } 100% { background-position: 300px 300px, 315px 315px; } } /* Header */ .festival-header { text-align: center; margin-bottom: 1rem; } .festival-title { font-family: 'Permanent Marker', cursive; font-size: 3.5rem; background: linear-gradient(45deg, var(--primary), var(--secondary)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; margin-bottom: 0.5rem; text-shadow: 3px 3px 0px rgba(0,0,0,0.2); transform: rotate(-2deg); transition: transform 0.3s ease; } .festival-title:hover { transform: rotate(0deg) scale(1.05); } .festival-subtitle { font-size: 1.2rem; margin-bottom: 0.5rem; color: var(--tertiary); font-weight: 600; } .festival-date { display: inline-block; font-size: 1.1rem; background-color: var(--accent); padding: 0.5rem 1rem; border-radius: 2rem; transform: translateY(0); animation: pulse 2s infinite; font-weight: bold; } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } } /* Artists Section */ .artists-section { flex-grow: 1; margin: 1.5rem 0; position: relative; } .section-title { font-family: 'Permanent Marker', cursive; font-size: 1.5rem; margin-bottom: 1rem; color: var(--secondary); display: inline-block; border-bottom: 3px solid var(--secondary); padding-bottom: 0.25rem; } .artists-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 1rem; margin-top: 1rem; max-height: 200px; overflow-y: auto; scrollbar-width: thin; scrollbar-color: var(--primary) var(--dark); } .artists-grid::-webkit-scrollbar { width: 8px; } .artists-grid::-webkit-scrollbar-track { background: var(--dark); } .artists-grid::-webkit-scrollbar-thumb { background-color: var(--primary); border-radius: 10px; } .artist-card { background: linear-gradient(145deg, rgba(255,42,109,0.15), rgba(119,0,255,0.15)); border-radius: 0.5rem; padding: 0.75rem; display: flex; flex-direction: column; align-items: center; text-align: center; cursor: pointer; transition: transform 0.3s ease, box-shadow 0.3s ease; border: 1px solid rgba(255,255,255,0.1); } .artist-card:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(5, 217, 232, 0.3); } .artist-image { width: 50px; height: 50px; border-radius: 50%; background: linear-gradient(45deg, var(--primary), var(--accent)); margin-bottom: 0.5rem; position: relative; overflow: hidden; } .artist-image::before { content: "♪"; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 1.5rem; color: white; } .artist-name { font-weight: 600; font-size: 0.85rem; margin-bottom: 0.25rem; } .artist-genre { font-size: 0.7rem; opacity: 0.8; color: var(--tertiary); } /* Info Section */ .info-section { display: flex; margin-top: 1rem; margin-bottom: 1rem; gap: 1rem; } .info-card { flex: 1; background: linear-gradient(145deg, rgba(5,217,232,0.15), rgba(119,0,255,0.15)); padding: 1rem; border-radius: 0.5rem; border: 1px solid rgba(255,255,255,0.1); transition: transform 0.3s ease; } .info-card:hover { transform: scale(1.02); } .info-title { font-size: 1rem; font-weight: 600; margin-bottom: 0.5rem; color: var(--secondary); } .info-content { font-size: 0.85rem; line-height: 1.4; } /* CTA Button */ .cta-section { text-align: center; margin-top: 0.5rem; } .cta-button { background: linear-gradient(45deg, var(--primary), var(--accent)); border: none; padding: 0.75rem 2rem; border-radius: 2rem; font-size: 1.1rem; font-weight: 600; color: white; cursor: pointer; transition: all 0.3s ease; position: relative; z-index: 1; overflow: hidden; box-shadow: 0 5px 15px rgba(255, 42, 109, 0.4); } .cta-button:hover { transform: translateY(-3px); box-shadow: 0 8px 20px rgba(255, 42, 109, 0.6); } .cta-button::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(45deg, var(--secondary), var(--accent)); transition: all 0.5s ease; z-index: -1; } .cta-button:hover::before { left: 0; } /* Sound Wave Animation */ .sound-wave { height: 20px; display: flex; justify-content: center; align-items: center; gap: 3px; margin: 1rem 0; } .sound-bar { width: 4px; background-color: var(--primary); height: 100%; border-radius: 3px; animation: sound-wave-animation 1.5s infinite ease-in-out; } @keyframes sound-wave-animation { 0%, 100% { height: 5px; } 50% { height: 20px; } } .sound-bar:nth-child(2) { animation-delay: 0.2s; background-color: var(--secondary); } .sound-bar:nth-child(3) { animation-delay: 0.4s; background-color: var(--accent); } .sound-bar:nth-child(4) { animation-delay: 0.6s; background-color: var(--primary); } .sound-bar:nth-child(5) { animation-delay: 0.8s; background-color: var(--secondary); } .sound-bar:nth-child(6) { animation-delay: 1.0s; background-color: var(--accent); } .sound-bar:nth-child(7) { animation-delay: 1.2s; background-color: var(--primary); } /* Footer */ .footer { font-size: 0.8rem; text-align: center; margin-top: 1rem; opacity: 0.8; } .social-icons { display: flex; justify-content: center; gap: 1rem; margin-top: 0.5rem; } .social-icon { font-size: 1.2rem; color: white; transition: transform 0.3s ease, color 0.3s ease; } .social-icon:hover { transform: scale(1.2); color: var(--secondary); } /* Modal */ .modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(1, 1, 43, 0.95); display: none; justify-content: center; align-items: center; z-index: 1000; opacity: 0; transition: opacity 0.3s ease; } .modal-content { background: linear-gradient(145deg, #1a1a45, #01012b); border-radius: 1rem; padding: 2rem; width: 90%; max-width: 500px; max-height: 90vh; overflow-y: auto; position: relative; border: 1px solid var(--primary); transform: translateY(20px); transition: transform 0.3s ease; } .modal.active { display: flex; opacity: 1; } .modal.active .modal-content { transform: translateY(0); } .close-modal { position: absolute; top: 1rem; right: 1rem; font-size: 1.5rem; color: white; background: none; border: none; cursor: pointer; transition: color 0.3s ease; } .close-modal:hover { color: var(--primary); } .ticket-form { display: flex; flex-direction: column; gap: 1rem; } .form-group { display: flex; flex-direction: column; gap: 0.5rem; } .form-label { font-size: 0.9rem; color: var(--tertiary); } .form-input { padding: 0.75rem; border-radius: 0.5rem; border: 1px solid rgba(255,255,255,0.2); background-color: rgba(255,255,255,0.1); color: white; font-size: 1rem; transition: border 0.3s ease; } .form-input:focus { outline: none; border-color: var(--secondary); } .form-submit { background: linear-gradient(45deg, var(--primary), var(--accent)); border: none; padding: 0.75rem; border-radius: 0.5rem; color: white; font-weight: 600; cursor: pointer; transition: transform 0.3s ease; margin-top: 1rem; } .form-submit:hover { transform: translateY(-3px); } /* Mobile Optimization */ @media (max-width: 480px) { .festival-title { font-size: 2.5rem; } .festival-subtitle { font-size: 1rem; } .info-section { flex-direction: column; } .artists-grid { grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); } } @media (max-height: 700px) { .container { padding: 1rem; } .festival-title { font-size: 2.5rem; margin-bottom: 0.25rem; } .artists-grid { max-height: 150px; } .info-section { margin-top: 0.5rem; margin-bottom: 0.5rem; } .info-card { padding: 0.75rem; } .sound-wave { margin: 0.5rem 0; } } </style> </head> <body> <div class="container"> <div class="pattern"></div> <header class="festival-header"> <h1 class="festival-title">SONIC BLOOM</h1> <p class="festival-subtitle">3 DAYS OF ELECTRIFYING PERFORMANCES</p> <div class="festival-date">JUNE 24-26, 2023 • ECHO PARK</div> </header> <div class="sound-wave"> <div class="sound-bar"></div> <div class="sound-bar"></div> <div class="sound-bar"></div> <div class="sound-bar"></div> <div class="sound-bar"></div> <div class="sound-bar"></div> <div class="sound-bar"></div> </div> <section class="artists-section"> <h2 class="section-title">Featured Artists</h2> <div class="artists-grid"> <div class="artist-card"> <div class="artist-image"></div> <div class="artist-name">Neon Pulse</div> <div class="artist-genre">Electro-Pop</div> </div> <div class="artist-card"> <div class="artist-image"></div> <div class="artist-name">Quantum Beat</div> <div class="artist-genre">Future Bass</div> </div> <div class="artist-card"> <div class="artist-image"></div> <div class="artist-name">The Resonants</div> <div class="artist-genre">Indie Rock</div> </div> <div class="artist-card"> <div class="artist-image"></div> <div class="artist-name">Synth Collective</div> <div class="artist-genre">Synthwave</div> </div> <div class="artist-card"> <div class="artist-image"></div> <div class="artist-name">Luna Drift</div> <div class="artist-genre">Dream Pop</div> </div> <div class="artist-card"> <div class="artist-image"></div> <div class="artist-name">Astral Echoes</div> <div class="artist-genre">Ambient</div> </div> <div class="artist-card"> <div class="artist-image"></div> <div class="artist-name">Bass Horizon</div> <div class="artist-genre">Dubstep</div> </div> <div class="artist-card"> <div class="artist-image"></div> <div class="artist-name">Rhythm Section</div> <div class="artist-genre">Jazz Fusion</div> </div> </div> </section> <section class="info-section"> <div class="info-card"> <h3 class="info-title">FESTIVAL FEATURES</h3> <p class="info-content">• 3 immersive stages<br>• Gourmet food village<br>• Interactive art installations<br>• Silent disco forest<br>• Relaxation zones</p> </div> <div class="info-card"> <h3 class="info-title">TICKET OPTIONS</h3> <p class="info-content">• Day Pass: $85<br>• Weekend Pass: $199<br>• VIP Experience: $359<br>• Camping Add-on: $50<br>• Group (4+): 15% off</p> </div> </section> <section class="cta-section"> <button class="cta-button" id="ticket-btn">GET YOUR TICKETS</button> </section> <footer class="footer"> <p>Follow us for lineup announcements & updates</p> <div class="social-icons"> <div class="social-icon">♫</div> <div class="social-icon">♪</div> <div class="social-icon">★</div> </div> </footer> </div> <div class="modal" id="ticket-modal"> <div class="modal-content"> <button class="close-modal" id="close-modal">×</button> <h2 style="margin-bottom: 1rem; color: var(--secondary); font-family: 'Permanent Marker', cursive;">Reserve Your Spot</h2> <form class="ticket-form" id="ticket-form"> <div class="form-group"> <label class="form-label">Full Name</label> <input type="text" class="form-input" placeholder="Enter your name"> </div> <div class="form-group"> <label class="form-label">Email</label> <input type="email" class="form-input" placeholder="Enter your email"> </div> <div class="form-group"> <label class="form-label">Ticket Type</label> <select class="form-input"> <option>Day Pass ($85)</option> <option>Weekend Pass ($199)</option> <option>VIP Experience ($359)</option> </select> </div> <div class="form-group"> <label class="form-label">Quantity</label> <select class="form-input"> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5+</option> </select> </div> <button type="button" class="form-submit" id="reserve-btn">Reserve Now</button> </form> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { // Artist cards hover effect with music icon spin const artistCards = document.querySelectorAll('.artist-card'); artistCards.forEach(card => { card.addEventListener('mouseenter', function() { const image = this.querySelector('.artist-image'); image.style.transform = 'rotate(360deg)'; image.style.transition = 'transform 0.6s ease'; }); card.addEventListener('mouseleave', function() { const image = this.querySelector('.artist-image'); image.style.transform = 'rotate(0deg)'; }); }); // Modal functionality const ticketBtn = document.getElementById('ticket-btn'); const modal = document.getElementById('ticket-modal'); const closeModal = document.getElementById('close-modal'); const reserveBtn = document.getElementById('reserve-btn'); ticketBtn.addEventListener('click', function() { modal.classList.add('active'); }); closeModal.addEventListener('click', function() { modal.classList.remove('active'); }); window.addEventListener('click', function(e) { if (e.target === modal) { modal.classList.remove('active'); } }); reserveBtn.addEventListener('click', function() { // Simulate form submission const submitButton = this; submitButton.textContent = 'Processing...'; submitButton.disabled = true; setTimeout(() => { submitButton.textContent = 'Thanks! Check your email'; submitButton.style.background = 'linear-gradient(45deg, #00cc66, #009966)'; setTimeout(() => { modal.classList.remove('active'); // Reset button after modal is closed setTimeout(() => { submitButton.textContent = 'Reserve Now'; submitButton.style.background = ''; submitButton.disabled = false; }, 500); }, 2000); }, 1500); }); // Dynamic sound wave animation const soundBars = document.querySelectorAll('.sound-bar'); function randomizeWaves() { soundBars.forEach(bar => { const randomDelay = Math.random() * 1.5; bar.style.animationDelay = `${randomDelay}s`; }); } setInterval(randomizeWaves, 3000); // Interactive title effect const title = document.querySelector('.festival-title'); title.addEventListener('click', function() { this.style.transform = 'rotate(5deg) scale(1.1)'; setTimeout(() => { this.style.transform = 'rotate(-2deg)'; }, 500); }); // Particle effect on button hover const ctaButton = document.querySelector('.cta-button'); ctaButton.addEventListener('mousemove', function(e) { const x = e.pageX - this.offsetLeft; const y = e.pageY - this.offsetTop; this.style.backgroundImage = ` radial-gradient(circle at ${x}px ${y}px, var(--accent), var(--primary)) `; }); ctaButton.addEventListener('mouseleave', function() { this.style.backgroundImage = 'linear-gradient(45deg, var(--primary), var(--accent))'; }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>NEXUS 2024 - Corporate Innovation Summit</title> <style> :root { --primary-color: #0d2e4c; --secondary-color: #c9a77c; --accent-color: #ff4757; --light-color: #f8f9fa; --dark-color: #1e1e2c; --transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Helvetica Neue', Arial, sans-serif; } body { background-color: var(--light-color); color: var(--dark-color); display: flex; justify-content: center; align-items: center; min-height: 700px; overflow-x: hidden; padding: 20px; } .container { width: 100%; max-width: 700px; height: 660px; background-color: white; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); overflow: hidden; position: relative; display: flex; flex-direction: column; } .header { background-color: var(--primary-color); padding: 30px; position: relative; overflow: hidden; } .geometric-accent { position: absolute; width: 200px; height: 200px; background-color: rgba(255, 255, 255, 0.05); transform: rotate(45deg); top: -100px; right: -100px; transition: var(--transition); } .header:hover .geometric-accent { transform: rotate(45deg) scale(1.2); } .header h1 { font-size: 2.8rem; font-weight: 700; color: white; margin-bottom: 10px; position: relative; z-index: 2; } .header h2 { font-size: 1.3rem; font-weight: 300; color: var(--secondary-color); margin-bottom: 15px; position: relative; z-index: 2; } .header-line { width: 80px; height: 3px; background-color: var(--secondary-color); margin-bottom: 15px; } .tagline { font-size: 1rem; color: rgba(255, 255, 255, 0.8); max-width: 90%; line-height: 1.4; position: relative; z-index: 2; } .content { padding: 30px; flex-grow: 1; display: flex; flex-direction: column; justify-content: space-between; } .details-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 20px; } .detail-item { display: flex; align-items: flex-start; margin-bottom: 15px; } .detail-item i { color: var(--primary-color); font-size: 1.2rem; margin-right: 10px; width: 20px; text-align: center; } .detail-item .detail-text { flex: 1; } .detail-item .detail-text h3 { font-size: 0.85rem; font-weight: 600; margin-bottom: 2px; text-transform: uppercase; letter-spacing: 1px; color: var(--primary-color); } .detail-item .detail-text p { font-size: 1rem; line-height: 1.4; color: var(--dark-color); } .speakers { margin: 25px 0; } .speakers h3 { font-size: 1.1rem; font-weight: 600; margin-bottom: 15px; color: var(--primary-color); text-transform: uppercase; letter-spacing: 1px; } .speaker-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 15px; } .speaker-card { padding: 12px; border-left: 2px solid var(--secondary-color); background-color: rgba(201, 167, 124, 0.05); transition: var(--transition); cursor: pointer; } .speaker-card:hover { transform: translateY(-5px); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); background-color: rgba(201, 167, 124, 0.1); } .speaker-card h4 { font-size: 0.95rem; font-weight: 600; margin-bottom: 5px; color: var(--dark-color); } .speaker-card p { font-size: 0.8rem; color: #666; line-height: 1.3; } .cta-container { display: flex; justify-content: space-between; align-items: center; margin-top: 15px; } .price { display: flex; flex-direction: column; } .price p { font-size: 0.9rem; color: #555; margin-bottom: 4px; } .price .amount { font-size: 1.8rem; font-weight: 700; color: var(--primary-color); } .price .early-bird { font-size: 0.8rem; color: var(--accent-color); font-weight: 600; } .cta-button { background-color: var(--primary-color); color: white; border: none; padding: 12px 28px; font-size: 1rem; font-weight: 500; cursor: pointer; transition: var(--transition); position: relative; overflow: hidden; z-index: 1; } .cta-button:before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background-color: var(--secondary-color); transition: var(--transition); z-index: -1; } .cta-button:hover:before { left: 0; } .cta-button:hover { color: var(--dark-color); } .footer { padding: 15px 30px; border-top: 1px solid #eee; font-size: 0.85rem; color: #777; text-align: center; background-color: #f9f9f9; } .modal { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.8); display: flex; justify-content: center; align-items: center; z-index: 1000; opacity: 0; visibility: hidden; transition: var(--transition); } .modal.active { opacity: 1; visibility: visible; } .modal-content { background-color: white; width: 90%; max-width: 500px; padding: 30px; border-radius: 4px; transform: translateY(20px); transition: var(--transition); position: relative; } .modal.active .modal-content { transform: translateY(0); } .close-modal { position: absolute; top: 15px; right: 15px; background: none; border: none; font-size: 1.5rem; cursor: pointer; color: #aaa; transition: var(--transition); } .close-modal:hover { color: var(--accent-color); } .form-group { margin-bottom: 20px; } .form-group label { display: block; margin-bottom: 5px; font-size: 0.9rem; color: var(--dark-color); } .form-group input, .form-group select { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 1rem; } .register-btn { background-color: var(--primary-color); color: white; border: none; padding: 12px; width: 100%; font-size: 1rem; font-weight: 500; cursor: pointer; transition: var(--transition); } .register-btn:hover { background-color: var(--secondary-color); color: var(--dark-color); } @media (max-width: 600px) { .header h1 { font-size: 2.2rem; } .header h2 { font-size: 1.1rem; } .details-grid, .speaker-grid { grid-template-columns: 1fr; } .cta-container { flex-direction: column; align-items: stretch; gap: 20px; } .price { align-items: center; margin-bottom: 10px; } } /* Animation */ @keyframes pulse { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.7; } } .early-bird { animation: pulse 2s infinite; } .loader { position: absolute; top: 0; left: 0; width: 100%; height: 5px; background: linear-gradient(90deg, var(--primary-color), var(--secondary-color), var(--accent-color)); background-size: 200% 100%; animation: gradientMove 2s infinite; } @keyframes gradientMove { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } </style> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"> </head> <body> <div class="container"> <div class="loader"></div> <div class="header"> <div class="geometric-accent"></div> <h1>NEXUS 2024</h1> <h2>Corporate Innovation Summit</h2> <div class="header-line"></div> <p class="tagline">Where industry leaders converge to redefine the future of business transformation</p> </div> <div class="content"> <div class="details-grid"> <div class="detail-item"> <i class="fas fa-calendar-alt"></i> <div class="detail-text"> <h3>Date & Time</h3> <p>September 15-17, 2024<br>8:30 AM - 6:00 PM</p> </div> </div> <div class="detail-item"> <i class="fas fa-map-marker-alt"></i> <div class="detail-text"> <h3>Location</h3> <p>The Riverside Convention Center<br>200 Financial District, NYC</p> </div> </div> <div class="detail-item"> <i class="fas fa-users"></i> <div class="detail-text"> <h3>Attendees</h3> <p>CEOs, CTOs, Innovation Directors, and Strategic Leaders</p> </div> </div> <div class="detail-item"> <i class="fas fa-lightbulb"></i> <div class="detail-text"> <h3>Focus</h3> <p>AI Integration, Digital Transformation, Strategic Leadership</p> </div> </div> </div> <div class="speakers"> <h3>Featured Speakers</h3> <div class="speaker-grid"> <div class="speaker-card"> <h4>Elena Vistorte</h4> <p>CEO, Quantum Innovations</p> </div> <div class="speaker-card"> <h4>Richard Chen</h4> <p>CTO, DataSphere Technologies</p> </div> <div class="speaker-card"> <h4>Amara Washington</h4> <p>Director of AI Ethics, Forward Institute</p> </div> </div> </div> <div class="cta-container"> <div class="price"> <p>Standard Registration</p> <span class="amount">$1,499</span> <span class="early-bird">Early bird: $1,199 (until July 31)</span> </div> <button class="cta-button" id="register-btn">Reserve Your Seat</button> </div> </div> <div class="footer"> © 2024 NEXUS Summit | For inquiries: [email protected] | #NEXUS2024 </div> </div> <div class="modal" id="register-modal"> <div class="modal-content"> <button class="close-modal" id="close-modal">×</button> <h2 style="margin-bottom: 20px; color: var(--primary-color);">Register for NEXUS 2024</h2> <div class="form-group"> <label for="name">Full Name</label> <input type="text" id="name" placeholder="Your name"> </div> <div class="form-group"> <label for="email">Email Address</label> <input type="email" id="email" placeholder="[email protected]"> </div> <div class="form-group"> <label for="company">Company</label> <input type="text" id="company" placeholder="Your organization"> </div> <div class="form-group"> <label for="position">Position</label> <input type="text" id="position" placeholder="Your job title"> </div> <div class="form-group"> <label for="ticket-type">Ticket Type</label> <select id="ticket-type"> <option value="standard">Standard ($1,499)</option> <option value="early">Early Bird ($1,199)</option> <option value="group">Group (5+) ($1,099/person)</option> </select> </div> <button class="register-btn" id="submit-registration">Complete Registration</button> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { const registerBtn = document.getElementById('register-btn'); const closeModal = document.getElementById('close-modal'); const modal = document.getElementById('register-modal'); const submitRegistration = document.getElementById('submit-registration'); const speakerCards = document.querySelectorAll('.speaker-card'); // Modal open/close functionality registerBtn.addEventListener('click', function() { modal.classList.add('active'); }); closeModal.addEventListener('click', function() { modal.classList.remove('active'); }); modal.addEventListener('click', function(e) { if (e.target === modal) { modal.classList.remove('active'); } }); // Form submission (simulated) submitRegistration.addEventListener('click', function() { const name = document.getElementById('name').value; const email = document.getElementById('email').value; if (name && email) { const successMsg = document.createElement('div'); successMsg.innerHTML = ` <h3 style="color: #4CAF50; margin-bottom: 15px;">Registration Pending</h3> <p>Thank you, ${name}! Your registration request has been received.</p> <p style="margin-top: 10px;">A confirmation email will be sent to ${email} with payment details.</p> `; const modalContent = document.querySelector('.modal-content'); modalContent.innerHTML = ''; modalContent.appendChild(successMsg); modalContent.appendChild(closeModal); // Auto close after 3 seconds setTimeout(function() { modal.classList.remove('active'); }, 3000); } }); // Enhanced speaker card interaction speakerCards.forEach(card => { card.addEventListener('click', function() { speakerCards.forEach(c => c.style.opacity = 0.6); this.style.opacity = 1; this.style.transform = 'translateY(-8px)'; }); card.addEventListener('mouseleave', function() { speakerCards.forEach(c => c.style.opacity = 1); this.style.transform = 'translateY(0)'; }); }); // Geometric accent animation const geometric = document.querySelector('.geometric-accent'); document.addEventListener('mousemove', function(e) { const x = e.clientX / window.innerWidth; const y = e.clientY / window.innerHeight; geometric.style.transform = `rotate(${45 + x * 10}deg) scale(${1 + y * 0.2})`; geometric.style.opacity = 0.05 + (x + y) * 0.05; }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Harvest Table Food Festival</title> <style> @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700&family=Caveat:wght@400;700&family=Montserrat:wght@300;400;500;600&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; } :root { --color-terracotta: #c97164; --color-cream: #f9f4e8; --color-olive: #7a8450; --color-mustard: #e4b04a; --color-brown: #5d4037; --shadow-soft: 0 8px 30px rgba(0, 0, 0, 0.12); } body { font-family: 'Montserrat', sans-serif; background-color: var(--color-cream); color: #333; line-height: 1.6; overflow-x: hidden; max-width: 700px; margin: 0 auto; height: 700px; position: relative; } .festival-flyer { height: 100%; overflow-y: auto; overflow-x: hidden; scroll-behavior: smooth; position: relative; scrollbar-width: none; border-radius: 10px; box-shadow: var(--shadow-soft); } .festival-flyer::-webkit-scrollbar { width: 0px; } header { position: relative; height: 280px; overflow: hidden; padding: 1.5rem; display: flex; flex-direction: column; justify-content: flex-end; } .header-bg { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-image: url('https://images.unsplash.com/photo-1555939594-58d7cb561ad1?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80'); background-size: cover; background-position: center; filter: brightness(0.7); z-index: 0; transform-origin: center; transition: transform 1.5s ease; } .header-content { position: relative; z-index: 1; color: white; } .event-title { font-family: 'Playfair Display', serif; font-size: 2.5rem; font-weight: 700; line-height: 1.1; margin-bottom: 0.5rem; text-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3); } .event-tagline { font-family: 'Caveat', cursive; font-size: 1.5rem; margin-bottom: 1rem; text-shadow: 1px 1px 4px rgba(0, 0, 0, 0.3); } .date-location { display: flex; gap: 1rem; font-size: 0.9rem; margin-bottom: 0.5rem; } .content-wrapper { position: relative; background-color: var(--color-cream); padding: 2rem 1.5rem; border-radius: 25px 25px 0 0; margin-top: -25px; z-index: 2; } .about-section { margin-bottom: 2rem; } .section-title { font-family: 'Playfair Display', serif; font-size: 1.5rem; color: var(--color-terracotta); margin-bottom: 1rem; position: relative; display: inline-block; } .section-title::after { content: ''; position: absolute; bottom: -5px; left: 0; width: 40px; height: 3px; background-color: var(--color-mustard); border-radius: 2px; } .featured-dishes { margin-bottom: 2rem; } .dish-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 1rem; margin-top: 1.5rem; } .dish-card { background-color: white; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); transform: translateY(0); transition: transform 0.3s ease, box-shadow 0.3s ease; cursor: pointer; } .dish-card:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.12); } .dish-img { height: 120px; background-size: cover; background-position: center; position: relative; overflow: hidden; } .dish-img::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(to bottom, transparent 50%, rgba(0, 0, 0, 0.3) 100%); } .dish-info { padding: 0.8rem; } .dish-name { font-weight: 600; font-size: 0.9rem; margin-bottom: 0.3rem; color: var(--color-brown); } .dish-chef { font-size: 0.8rem; color: var(--color-olive); font-style: italic; } .schedule-section { margin-bottom: 2rem; } .schedule-item { display: flex; margin-bottom: 1rem; border-left: 3px solid var(--color-mustard); padding-left: 1rem; transition: transform 0.3s ease; } .schedule-item:hover { transform: translateX(5px); } .time { min-width: 80px; font-weight: 600; color: var(--color-terracotta); } .activity { flex: 1; } .activity-title { font-weight: 600; margin-bottom: 0.2rem; } .activity-desc { font-size: 0.85rem; color: #555; } .tickets-section { margin-bottom: 2rem; position: relative; background-color: white; padding: 1.5rem; border-radius: 12px; box-shadow: var(--shadow-soft); overflow: hidden; } .tickets-section::before { content: ''; position: absolute; top: 0; right: 0; width: 100px; height: 100px; background-color: var(--color-mustard); opacity: 0.1; border-radius: 0 0 0 100%; } .ticket-options { display: flex; flex-direction: column; gap: 1rem; margin-top: 1rem; } .ticket-option { display: flex; justify-content: space-between; align-items: center; padding: 0.8rem 1rem; background-color: var(--color-cream); border-radius: 8px; transition: transform 0.3s ease, background-color 0.3s ease; } .ticket-option:hover { transform: scale(1.02); background-color: #f2ebe0; } .ticket-name { font-weight: 500; } .ticket-price { font-weight: 600; color: var(--color-terracotta); } .buy-btn { background-color: var(--color-terracotta); color: white; border: none; border-radius: 6px; padding: 0.5rem 1.2rem; font-weight: 500; cursor: pointer; transition: background-color 0.3s ease, transform 0.2s ease; } .buy-btn:hover { background-color: #b86458; transform: translateY(-2px); } .sponsors-section { margin-bottom: 1.5rem; } .sponsors-grid { display: flex; flex-wrap: wrap; gap: 1rem; justify-content: center; margin-top: 1rem; } .sponsor { width: 80px; height: 80px; background-color: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.06); transition: transform 0.3s ease; } .sponsor:hover { transform: scale(1.1); } .sponsor span { font-family: 'Playfair Display', serif; font-weight: 700; color: var(--color-terracotta); font-size: 0.8rem; text-align: center; padding: 0 0.5rem; } footer { background-color: var(--color-olive); color: white; text-align: center; padding: 1.5rem; font-size: 0.8rem; } .social-icons { display: flex; justify-content: center; gap: 1rem; margin: 1rem 0; } .social-icon { color: white; background-color: rgba(255, 255, 255, 0.2); width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; transition: transform 0.3s ease, background-color 0.3s ease; } .social-icon:hover { transform: translateY(-5px); background-color: rgba(255, 255, 255, 0.3); } .floating-shape { position: absolute; border-radius: 50%; z-index: 0; opacity: 0.6; filter: blur(30px); } .shape-1 { width: 150px; height: 150px; background-color: var(--color-mustard); top: 50px; right: -50px; } .shape-2 { width: 100px; height: 100px; background-color: var(--color-terracotta); bottom: 150px; left: -30px; } .animated-divider { width: 100%; height: 5px; background: linear-gradient(90deg, var(--color-terracotta), var(--color-mustard), var(--color-olive), var(--color-mustard), var(--color-terracotta)); background-size: 300% 100%; border-radius: 3px; margin: 2rem 0; animation: gradient-shift 8s ease infinite; } .back-to-top { position: fixed; bottom: 20px; right: 20px; width: 40px; height: 40px; background-color: var(--color-terracotta); color: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; text-decoration: none; opacity: 0; transform: translateY(20px); transition: opacity 0.3s, transform 0.3s; z-index: 100; cursor: pointer; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); } .back-to-top.visible { opacity: 1; transform: translateY(0); } .food-illustration { position: absolute; width: 30px; height: 30px; background-size: contain; background-repeat: no-repeat; z-index: 1; opacity: 0.8; animation: float 6s ease-in-out infinite; } .food-1 { top: 10%; left: 10%; background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="%23e4b04a" d="M50,10c22.1,0,40,17.9,40,40S72.1,90,50,90S10,72.1,10,50S27.9,10,50,10z M50,20c-16.6,0-30,13.4-30,30s13.4,30,30,30s30-13.4,30-30S66.6,20,50,20z"/></svg>'); animation-delay: 0s; } .food-2 { top: 5%; right: 15%; background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="%23c97164" d="M30,20c0,0,0,60,40,60S70,20,70,20H30z"/></svg>'); animation-delay: 1s; } .food-3 { bottom: 20%; right: 5%; background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="%237a8450" d="M20,30c0,0,30-10,60,0c0,0-10,30-30,30S20,30,20,30z"/></svg>'); animation-delay: 2s; } @keyframes gradient-shift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } @keyframes float { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-10px) rotate(5deg); } 100% { transform: translateY(0) rotate(0deg); } } @media (max-width: 480px) { .event-title { font-size: 2rem; } .event-tagline { font-size: 1.2rem; } .dish-cards { grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); } .ticket-option { flex-direction: column; align-items: flex-start; gap: 0.5rem; } } /* Festival Badge */ .festival-badge { position: absolute; top: 20px; right: 20px; width: 80px; height: 80px; background-color: var(--color-mustard); border-radius: 50%; display: flex; align-items: center; justify-content: center; z-index: 10; box-shadow: 0 4px 8px rgba(0,0,0,0.2); animation: pulse 2s infinite; } .festival-badge-inner { width: 70px; height: 70px; border-radius: 50%; background-color: white; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 0.5rem; } .badge-text { font-family: 'Caveat', cursive; font-weight: 700; font-size: 0.7rem; color: var(--color-terracotta); line-height: 1; } .badge-year { font-family: 'Playfair Display', serif; font-weight: 700; font-size: 1rem; color: var(--color-olive); } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } } </style> </head> <body> <div class="festival-flyer"> <header> <div class="header-bg" id="headerBg"></div> <div class="header-content"> <h1 class="event-title">Harvest Table</h1> <p class="event-tagline">A Celebration of Seasonal & Artisanal Flavors</p> <div class="date-location"> <div>October 15-17, 2023</div> <div>•</div> <div>Riverfront Park</div> </div> </div> <div class="festival-badge"> <div class="festival-badge-inner"> <div class="badge-text">7th Annual</div> <div class="badge-year">2023</div> </div> </div> </header> <div class="content-wrapper"> <div class="food-illustration food-1"></div> <div class="food-illustration food-2"></div> <div class="food-illustration food-3"></div> <section class="about-section"> <h2 class="section-title">The Festival</h2> <p>Join us for three days of culinary exploration as we bring together 50+ local chefs, artisanal producers, and beverage crafters. Taste your way through seasonal tasting menus, participate in hands-on workshops, and enjoy live cooking demonstrations in our beautiful riverside setting.</p> </section> <div class="animated-divider"></div> <section class="featured-dishes"> <h2 class="section-title">Featured Tastings</h2> <div class="dish-cards"> <div class="dish-card"> <div class="dish-img" style="background-image: url('https://images.unsplash.com/photo-1476224203421-9ac39bcb3327?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80')"></div> <div class="dish-info"> <div class="dish-name">Truffle Risotto</div> <div class="dish-chef">Chef Maria Rossi</div> </div> </div> <div class="dish-card"> <div class="dish-img" style="background-image: url('https://images.unsplash.com/photo-1515443961218-a51367888e4b?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80')"></div> <div class="dish-info"> <div class="dish-name">Wild Herb Salad</div> <div class="dish-chef">Chef James Lee</div> </div> </div> <div class="dish-card"> <div class="dish-img" style="background-image: url('https://images.unsplash.com/photo-1600628421055-4d30de868b8f?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80')"></div> <div class="dish-info"> <div class="dish-name">Crafted Cheeses</div> <div class="dish-chef">Hillside Creamery</div> </div> </div> <div class="dish-card"> <div class="dish-img" style="background-image: url('https://images.unsplash.com/photo-1563805042-7684c019e1cb?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80')"></div> <div class="dish-info"> <div class="dish-name">Spiced Cider</div> <div class="dish-chef">Oak Valley Brewery</div> </div> </div> </div> </section> <section class="schedule-section"> <h2 class="section-title">Daily Highlights</h2> <div class="schedule-items"> <div class="schedule-item"> <div class="time">11:00 AM</div> <div class="activity"> <div class="activity-title">Opening Ceremony & Tasting Tour</div> <div class="activity-desc">Kickoff with local dignitaries and special chef introductions</div> </div> </div> <div class="schedule-item"> <div class="time">1:30 PM</div> <div class="activity"> <div class="activity-title">Farm-to-Table Workshop</div> <div class="activity-desc">Learn sourcing secrets with renowned local chefs</div> </div> </div> <div class="schedule-item"> <div class="time">4:00 PM</div> <div class="activity"> <div class="activity-title">Wine & Cheese Pairing</div> <div class="activity-desc">Guided tasting with regional sommeliers</div> </div> </div> <div class="schedule-item"> <div class="time">7:00 PM</div> <div class="activity"> <div class="activity-title">Evening Concert & Dinner</div> <div class="activity-desc">Live music with prix fixe tasting menus</div> </div> </div> </div> </section> <section class="tickets-section"> <h2 class="section-title">Ticket Options</h2> <div class="ticket-options"> <div class="ticket-option"> <div class="ticket-name">Single Day Pass</div> <div class="ticket-price">$45</div> <button class="buy-btn">Reserve</button> </div> <div class="ticket-option"> <div class="ticket-name">Weekend Pass</div> <div class="ticket-price">$85</div> <button class="buy-btn">Reserve</button> </div> <div class="ticket-option"> <div class="ticket-name">VIP Experience</div> <div class="ticket-price">$150</div> <button class="buy-btn">Reserve</button> </div> </div> </section> <section class="sponsors-section"> <h2 class="section-title">Our Partners</h2> <div class="sponsors-grid"> <div class="sponsor"><span>Green Valley Farms</span></div> <div class="sponsor"><span>Riverstone Wines</span></div> <div class="sponsor"><span>Copper Pot Kitchen</span></div> <div class="sponsor"><span>Heritage Foods</span></div> </div> </section> </div> <footer> <div class="social-icons"> <a href="#" class="social-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="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path> </svg> </a> <a href="#" class="social-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="2" y="2" width="20" height="20" rx="5" ry="5"></rect> <path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path> <line x1="17.5" y1="6.5" x2="17.51" y2="6.5"></line> </svg> </a> <a href="#" class="social-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="M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z"></path> </svg> </a> </div> <p>Contact: [email protected] | (555) 123-4567</p> <p>© 2023 Harvest Table Food Festival. All rights reserved.</p> </footer> <div class="back-to-top" id="backToTop"> <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="18 15 12 9 6 15"></polyline> </svg> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { // Parallax effect for header background const headerBg = document.getElementById('headerBg'); const flyer = document.querySelector('.festival-flyer'); flyer.addEventListener('scroll', function() { const scrollPosition = flyer.scrollTop; headerBg.style.transform = `scale(${1 + scrollPosition * 0.0005}) translateY(${scrollPosition * 0.3}px)`; // Back to top button visibility const backToTop = document.getElementById('backToTop'); if (scrollPosition > 300) { backToTop.classList.add('visible'); } else { backToTop.classList.remove('visible'); } }); // Back to top button functionality document.getElementById('backToTop').addEventListener('click', function() { flyer.scrollTo({ top: 0, behavior: 'smooth' }); }); // Buy button hover effect const buyButtons = document.querySelectorAll('.buy-btn'); buyButtons.forEach(button => { button.addEventListener('click', function(e) { e.preventDefault(); // Create animation element const ripple = document.createElement('span'); ripple.classList.add('ripple'); // Apply styles to make ripple animation ripple.style.position = 'absolute'; ripple.style.borderRadius = '50%'; ripple.style.transform = 'scale(0)'; ripple.style.animation = 'ripple 0.6s linear'; ripple.style.backgroundColor = 'rgba(255, 255, 255, 0.7)'; // Calculate size of the ripple const size = Math.max(button.offsetWidth, button.offsetHeight); ripple.style.width = ripple.style.height = `${size}px`; // Get button position const rect = button.getBoundingClientRect(); // Position the ripple ripple.style.left = `${e.clientX - rect.left - size / 2}px`; ripple.style.top = `${e.clientY - rect.top - size / 2}px`; // Add ripple to button button.appendChild(ripple); // Remove ripple after animation completes setTimeout(() => { ripple.remove(); // Show a reserved message const originalText = button.textContent; button.textContent = "Reserved!"; button.style.backgroundColor = "#7a8450"; // Reset after 2 seconds setTimeout(() => { button.textContent = originalText; button.style.backgroundColor = ""; }, 2000); }, 600); }); }); // Add keyframe animation for ripple const style = document.createElement('style'); style.textContent = ` @keyframes ripple { to { transform: scale(4); opacity: 0; } } `; document.head.appendChild(style); // Interactive dish cards with zoom effect const dishCards = document.querySelectorAll('.dish-card'); dishCards.forEach(card => { card.addEventListener('click', function() { const img = this.querySelector('.dish-img'); const info = this.querySelector('.dish-info'); img.style.transition = 'transform 0.3s ease'; img.style.transform = 'scale(1.1)'; setTimeout(() => { img.style.transform = ''; }, 300); }); }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Garden of Hope Annual Charity Gala</title> <style> @import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600;700&family=Poppins:wght@300;400;500&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Poppins', sans-serif; background-color: #f9f7f5; color: #3a3a3a; display: flex; justify-content: center; align-items: center; min-height: 700px; width: 100%; overflow-x: hidden; padding: 20px; } .flyer-container { max-width: 650px; height: auto; background: linear-gradient(45deg, #f8f4ff, #fff6f6); border-radius: 15px; overflow: hidden; box-shadow: 0 15px 35px rgba(0, 0, 0, 0.08); position: relative; transition: transform 0.5s ease, box-shadow 0.5s ease; } .flyer-container:hover { transform: translateY(-5px); box-shadow: 0 20px 40px rgba(0, 0, 0, 0.12); } .decorative-border { position: absolute; width: calc(100% - 40px); height: calc(100% - 40px); top: 20px; left: 20px; border: 2px solid rgba(216, 180, 212, 0.4); border-radius: 10px; pointer-events: none; z-index: 0; } .corner { position: absolute; width: 35px; height: 35px; z-index: 1; } .top-left { top: 12px; left: 12px; border-top: 3px solid #d8b4d4; border-left: 3px solid #d8b4d4; border-top-left-radius: 8px; } .top-right { top: 12px; right: 12px; border-top: 3px solid #d8b4d4; border-right: 3px solid #d8b4d4; border-top-right-radius: 8px; } .bottom-left { bottom: 12px; left: 12px; border-bottom: 3px solid #d8b4d4; border-left: 3px solid #d8b4d4; border-bottom-left-radius: 8px; } .bottom-right { bottom: 12px; right: 12px; border-bottom: 3px solid #d8b4d4; border-right: 3px solid #d8b4d4; border-bottom-right-radius: 8px; } .content { padding: 35px; z-index: 2; position: relative; } .header { text-align: center; margin-bottom: 25px; position: relative; } .header::after { content: ""; position: absolute; width: 120px; height: 2px; background: linear-gradient(90deg, transparent, #d8b4d4, transparent); bottom: -10px; left: 50%; transform: translateX(-50%); } h1 { font-family: 'Cormorant Garamond', serif; font-size: 2.2rem; font-weight: 700; color: #8a4a84; margin-bottom: 10px; letter-spacing: 0.5px; } .tagline { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 1.1rem; color: #a57fa0; margin-bottom: 5px; } .main-details { margin: 30px 0; text-align: center; position: relative; } .date-time-venue { display: flex; flex-direction: column; gap: 18px; margin-bottom: 25px; } .detail-item { display: flex; align-items: center; gap: 12px; border-radius: 8px; padding: 12px 20px; background-color: rgba(255, 255, 255, 0.75); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.03); transition: transform 0.3s ease, box-shadow 0.3s ease; } .detail-item:hover { transform: translateX(5px); box-shadow: 0 7px 20px rgba(0, 0, 0, 0.08); } .icon { color: #8a4a84; font-size: 1.3rem; width: 30px; text-align: center; } .detail-text { flex: 1; } .detail-label { font-family: 'Cormorant Garamond', serif; font-weight: 600; color: #8a4a84; font-size: 1.15rem; } .detail-info { font-size: 0.9rem; color: #5a5a5a; } .description { text-align: center; margin: 30px 0; line-height: 1.6; font-size: 0.95rem; color: #5a5a5a; } .highlight { color: #8a4a84; font-weight: 500; } .ticket-info { background-color: rgba(216, 180, 212, 0.15); padding: 20px; border-radius: 10px; text-align: center; margin-bottom: 30px; position: relative; overflow: hidden; } .ticket-info::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, #b67aaf, #d8b4d4); border-radius: 4px 4px 0 0; } .ticket-price { font-family: 'Cormorant Garamond', serif; font-size: 1.5rem; font-weight: 600; color: #8a4a84; margin-bottom: 10px; } .ticket-note { font-size: 0.85rem; color: #5a5a5a; font-style: italic; } .button-container { text-align: center; margin-top: 25px; } .rsvp-button { background: linear-gradient(135deg, #8a4a84, #b67aaf); color: white; border: none; border-radius: 30px; padding: 14px 32px; font-family: 'Poppins', sans-serif; font-size: 1rem; font-weight: 500; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 5px 15px rgba(138, 74, 132, 0.2); position: relative; overflow: hidden; } .rsvp-button:hover { box-shadow: 0 8px 25px rgba(138, 74, 132, 0.3); transform: translateY(-2px); } .rsvp-button::after { content: ''; position: absolute; top: -50%; left: -50%; width: 200%; height: 200%; background: rgba(255, 255, 255, 0.1); transform: rotate(45deg); transition: all 0.6s ease; opacity: 0; } .rsvp-button:hover::after { opacity: 1; left: 0; } .floral-decoration { position: absolute; width: 80px; height: 80px; opacity: 0.1; pointer-events: none; z-index: 0; } .floral-top-left { top: 10px; left: 10px; transform: rotate(-15deg); } .floral-bottom-right { bottom: 10px; right: 10px; transform: rotate(15deg); } .contact-info { text-align: center; font-size: 0.85rem; color: #777; margin-top: 20px; } .contact-info a { color: #8a4a84; text-decoration: none; transition: color 0.3s; } .contact-info a:hover { color: #b67aaf; } .footer { margin-top: 20px; text-align: center; font-size: 0.8rem; color: #999; } @media (max-width: 600px) { .flyer-container { width: 100%; } .content { padding: 25px 20px; } h1 { font-size: 1.8rem; } .tagline { font-size: 0.95rem; } .detail-item { padding: 10px 15px; } .description { font-size: 0.9rem; } } /* Custom modal styling */ .modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); justify-content: center; align-items: center; z-index: 1000; opacity: 0; transition: opacity 0.3s ease; } .modal.show { display: flex; opacity: 1; } .modal-content { background: white; padding: 30px; border-radius: 15px; max-width: 500px; width: 90%; position: relative; transform: translateY(20px); transition: transform 0.3s ease; box-shadow: 0 15px 30px rgba(0, 0, 0, 0.2); } .modal.show .modal-content { transform: translateY(0); } .close-modal { position: absolute; top: 15px; right: 15px; font-size: 1.5rem; cursor: pointer; color: #999; transition: color 0.2s; } .close-modal:hover { color: #8a4a84; } .form-group { margin-bottom: 20px; } .form-group label { display: block; margin-bottom: 8px; font-weight: 500; color: #555; } .form-group input, .form-group select { width: 100%; padding: 12px 15px; border: 1px solid #e0e0e0; border-radius: 8px; font-family: 'Poppins', sans-serif; font-size: 0.95rem; transition: border-color 0.3s; } .form-group input:focus, .form-group select:focus { border-color: #b67aaf; outline: none; } .submit-btn { background: linear-gradient(135deg, #8a4a84, #b67aaf); color: white; border: none; border-radius: 30px; padding: 14px 32px; font-family: 'Poppins', sans-serif; font-size: 1rem; font-weight: 500; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 5px 15px rgba(138, 74, 132, 0.2); display: block; width: 100%; margin-top: 10px; } .submit-btn:hover { box-shadow: 0 8px 25px rgba(138, 74, 132, 0.3); transform: translateY(-2px); } .thank-you { text-align: center; display: none; } .thank-you h3 { font-family: 'Cormorant Garamond', serif; font-size: 1.8rem; color: #8a4a84; margin-bottom: 15px; } .thank-you p { color: #555; line-height: 1.6; margin-bottom: 20px; } /* Floral pattern animation */ @keyframes floralFloat { 0% { transform: rotate(-15deg) translateY(0); } 50% { transform: rotate(-10deg) translateY(-10px); } 100% { transform: rotate(-15deg) translateY(0); } } @keyframes floralFloat2 { 0% { transform: rotate(15deg) translateY(0); } 50% { transform: rotate(10deg) translateY(-10px); } 100% { transform: rotate(15deg) translateY(0); } } .floral-top-left { animation: floralFloat 8s ease-in-out infinite; } .floral-bottom-right { animation: floralFloat2 8s ease-in-out infinite; } </style> </head> <body> <div class="flyer-container"> <div class="decorative-border"></div> <div class="corner top-left"></div> <div class="corner top-right"></div> <div class="corner bottom-left"></div> <div class="corner bottom-right"></div> <svg class="floral-decoration floral-top-left" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> <path d="M50,10 C60,25 75,30 90,30 C75,40 70,60 70,75 C60,65 40,60 25,60 C35,50 40,30 50,10" fill="#8a4a84"/> <path d="M50,20 C58,32 68,38 80,38 C68,45 65,60 65,72 C58,65 42,60 30,60 C38,52 42,35 50,20" fill="#8a4a84"/> </svg> <svg class="floral-decoration floral-bottom-right" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> <path d="M50,10 C60,25 75,30 90,30 C75,40 70,60 70,75 C60,65 40,60 25,60 C35,50 40,30 50,10" fill="#8a4a84"/> <path d="M50,20 C58,32 68,38 80,38 C68,45 65,60 65,72 C58,65 42,60 30,60 C38,52 42,35 50,20" fill="#8a4a84"/> </svg> <div class="content"> <div class="header"> <h1>Garden of Hope</h1> <div class="tagline">15th Annual Charity Gala</div> </div> <div class="main-details"> <div class="date-time-venue"> <div class="detail-item"> <div class="icon">📅</div> <div class="detail-text"> <div class="detail-label">Date</div> <div class="detail-info">Saturday, October 22nd, 2023</div> </div> </div> <div class="detail-item"> <div class="icon">⏰</div> <div class="detail-text"> <div class="detail-label">Time</div> <div class="detail-info">6:30 PM - 11:00 PM</div> </div> </div> <div class="detail-item"> <div class="icon">📍</div> <div class="detail-text"> <div class="detail-label">Venue</div> <div class="detail-info">The Grand Willow Ballroom<br>1235 Riverside Avenue</div> </div> </div> </div> </div> <div class="description"> Join us for an elegant evening dedicated to nurturing <span class="highlight">children's education</span> in underserved communities. Your support will help fund our <span class="highlight">literacy programs</span> that reached over 5,000 children last year. </div> <div class="ticket-info"> <div class="ticket-price">$150 per person</div> <div class="ticket-note">Includes gourmet dinner, wine service, and silent auction access</div> </div> <div class="button-container"> <button class="rsvp-button" id="rsvpButton">Reserve Your Seat</button> </div> <div class="contact-info"> For sponsorship opportunities, contact Sarah Ellis<br> <a href="tel:+15553457890">(555) 345-7890</a> or <a href="mailto:[email protected]">[email protected]</a> </div> <div class="footer"> Garden of Hope is a 501(c)(3) non-profit organization. Tax ID: 45-654321 </div> </div> </div> <!-- Modal --> <div id="rsvpModal" class="modal"> <div class="modal-content"> <span class="close-modal" id="closeModal">×</span> <div id="rsvpForm"> <h2 style="text-align: center; font-family: 'Cormorant Garamond', serif; color: #8a4a84; margin-bottom: 20px;">Reserve Your Seat</h2> <div class="form-group"> <label for="name">Full Name</label> <input type="text" id="name" placeholder="Your full name"> </div> <div class="form-group"> <label for="email">Email Address</label> <input type="email" id="email" placeholder="Your email address"> </div> <div class="form-group"> <label for="phone">Phone Number</label> <input type="tel" id="phone" placeholder="Your phone number"> </div> <div class="form-group"> <label for="tickets">Number of Tickets</label> <select id="tickets"> <option value="1">1 Ticket</option> <option value="2">2 Tickets</option> <option value="3">3 Tickets</option> <option value="4">4 Tickets</option> <option value="5">5 Tickets</option> <option value="table">Table of 8 ($1,100)</option> </select> </div> <div class="form-group"> <label for="dietaryRestrictions">Dietary Restrictions</label> <input type="text" id="dietaryRestrictions" placeholder="Any dietary restrictions or preferences"> </div> <button type="button" id="submitRsvp" class="submit-btn">Confirm Reservation</button> </div> <div id="thankYou" class="thank-you"> <h3>Thank You!</h3> <p>Your reservation has been received. We look forward to seeing you at the Garden of Hope Annual Charity Gala.</p> <p>A confirmation email will be sent to your provided email address with additional details.</p> <button id="closeThankYou" class="submit-btn">Close</button> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { const rsvpButton = document.getElementById('rsvpButton'); const rsvpModal = document.getElementById('rsvpModal'); const closeModal = document.getElementById('closeModal'); const submitRsvp = document.getElementById('submitRsvp'); const rsvpForm = document.getElementById('rsvpForm'); const thankYou = document.getElementById('thankYou'); const closeThankYou = document.getElementById('closeThankYou'); // Open modal rsvpButton.addEventListener('click', function() { rsvpModal.classList.add('show'); setTimeout(() => { document.body.style.overflow = 'hidden'; }, 300); }); // Close modal functions function closeModalFunction() { rsvpModal.classList.remove('show'); setTimeout(() => { document.body.style.overflow = 'auto'; // Reset form rsvpForm.style.display = 'block'; thankYou.style.display = 'none'; }, 300); } closeModal.addEventListener('click', closeModalFunction); // Close modal when clicking outside rsvpModal.addEventListener('click', function(e) { if (e.target === rsvpModal) { closeModalFunction(); } }); // Submit form submitRsvp.addEventListener('click', function() { // Get form values const name = document.getElementById('name').value; const email = document.getElementById('email').value; // Basic validation if (name.trim() === '' || email.trim() === '') { alert('Please fill in your name and email'); return; } // Show thank you message rsvpForm.style.display = 'none'; thankYou.style.display = 'block'; // In a real application, you would send the form data to a server here // For this example, we just show the thank you message }); closeThankYou.addEventListener('click', closeModalFunction); // Detail items hover effect const detailItems = document.querySelectorAll('.detail-item'); detailItems.forEach(item => { item.addEventListener('mouseenter', function() { this.style.backgroundColor = 'rgba(255, 255, 255, 0.9)'; }); item.addEventListener('mouseleave', function() { this.style.backgroundColor = 'rgba(255, 255, 255, 0.75)'; }); }); // Add sparkle effect to the RSVP button const rsvpButtonElement = document.querySelector('.rsvp-button'); rsvpButtonElement.addEventListener('mousemove', function(e) { const x = e.pageX - this.offsetLeft; const y = e.pageY - this.offsetTop; this.style.setProperty('--x', `${x}px`); this.style.setProperty('--y', `${y}px`); }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>NEXUS OS Launch Event</title> <style> @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=JetBrains+Mono:wght@400;700&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; } :root { --primary: #070B14; --secondary: #0C1220; --neon: #00FFC2; --accent: #FF3864; --text: #E6E6E6; } body { font-family: 'Space Grotesk', sans-serif; background-color: var(--primary); color: var(--text); height: 700px; width: 700px; margin: 0 auto; overflow: hidden; position: relative; } .grid-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: linear-gradient(var(--secondary) 1px, transparent 1px), linear-gradient(90deg, var(--secondary) 1px, transparent 1px); background-size: 20px 20px; opacity: 0.15; z-index: 1; pointer-events: none; } .flyer { display: flex; flex-direction: column; height: 100%; padding: 2rem; position: relative; z-index: 2; overflow: hidden; } .header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; } .logo { font-weight: 700; font-size: 1.8rem; color: white; letter-spacing: -1px; position: relative; } .logo span { color: var(--neon); } .logo::after { content: ''; position: absolute; bottom: -5px; left: 0; width: 100%; height: 1px; background: linear-gradient(90deg, var(--neon), transparent); } .date { font-family: 'JetBrains Mono', monospace; background-color: rgba(0, 255, 194, 0.1); padding: 0.5rem 1rem; border-radius: 4px; border-left: 2px solid var(--neon); font-size: 0.9rem; } .product-name { font-size: 3.5rem; font-weight: 700; margin: 1rem 0; line-height: 1; position: relative; display: inline-block; } .product-name::before { content: '//'; color: var(--accent); font-size: 1.5rem; position: absolute; top: -1.5rem; left: 0; font-family: 'JetBrains Mono', monospace; } .tagline { font-size: 1.2rem; margin-bottom: 2rem; max-width: 80%; opacity: 0.8; } .features { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; margin-bottom: 2rem; } .feature { background-color: rgba(12, 18, 32, 0.7); border-radius: 8px; padding: 1.2rem; border: 1px solid rgba(255, 255, 255, 0.1); transition: all 0.3s ease; position: relative; overflow: hidden; } .feature:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2); border-color: var(--neon); } .feature:hover::before { opacity: 1; } .feature::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(45deg, rgba(0, 255, 194, 0.1), transparent); opacity: 0; transition: opacity 0.3s ease; } .feature-icon { font-size: 1.5rem; margin-bottom: 0.5rem; color: var(--neon); } .feature h3 { font-size: 1.1rem; margin-bottom: 0.5rem; position: relative; z-index: 2; } .feature p { font-size: 0.9rem; opacity: 0.8; position: relative; z-index: 2; } .cta-section { display: flex; justify-content: space-between; align-items: center; margin-top: auto; } .qr-code { width: 120px; height: 120px; background-color: white; border-radius: 8px; display: flex; justify-content: center; align-items: center; position: relative; overflow: hidden; border: 3px solid var(--primary); } .qr-code img { width: 80%; height: 80%; } .qr-code::after { content: 'Scan to RSVP'; position: absolute; bottom: 0; left: 0; width: 100%; padding: 4px 0; background-color: var(--neon); color: var(--primary); font-size: 0.7rem; font-weight: bold; text-align: center; } .register-btn { background: linear-gradient(45deg, var(--neon), #00D0FF); color: var(--primary); border: none; padding: 1rem 2rem; font-size: 1rem; font-weight: bold; border-radius: 8px; cursor: pointer; font-family: 'Space Grotesk', sans-serif; position: relative; overflow: hidden; transition: all 0.3s ease; z-index: 1; } .register-btn:hover { transform: scale(1.05); } .register-btn:hover::before { transform: translateX(100%); } .register-btn::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: rgba(255, 255, 255, 0.2); transform: skewX(-30deg); transition: transform 0.6s ease; z-index: -1; } .event-details { margin-top: 1rem; font-family: 'JetBrains Mono', monospace; font-size: 0.9rem; opacity: 0.8; } .event-details span { color: var(--neon); } .particle { position: absolute; border-radius: 50%; background: var(--neon); opacity: 0; pointer-events: none; z-index: 0; } .floating-elements { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 0; } .floating-element { position: absolute; border-radius: 50%; background: linear-gradient(45deg, var(--neon), transparent); animation: float 15s infinite linear; opacity: 0.2; } .floating-element:nth-child(1) { width: 150px; height: 150px; top: -50px; right: -50px; animation-duration: 20s; filter: blur(30px); } .floating-element:nth-child(2) { width: 200px; height: 200px; bottom: -100px; left: -50px; animation-duration: 25s; animation-delay: 2s; filter: blur(40px); } .floating-element:nth-child(3) { width: 100px; height: 100px; top: 50%; right: -30px; animation-duration: 18s; animation-delay: 1s; filter: blur(20px); } @keyframes float { 0% { transform: translate(0, 0) rotate(0deg); } 25% { transform: translate(10px, 15px) rotate(90deg); } 50% { transform: translate(5px, 5px) rotate(180deg); } 75% { transform: translate(-10px, 10px) rotate(270deg); } 100% { transform: translate(0, 0) rotate(360deg); } } @media (max-width: 700px) { .flyer { padding: 1.5rem; } .product-name { font-size: 2.5rem; } .tagline { font-size: 1rem; max-width: 100%; } .features { grid-template-columns: 1fr; } .cta-section { flex-direction: column; gap: 1.5rem; align-items: flex-start; } .qr-code { align-self: center; } .register-btn { align-self: center; } } @media (max-width: 400px) { .header { flex-direction: column; align-items: flex-start; gap: 1rem; } .product-name { font-size: 2rem; } } </style> </head> <body> <div class="grid-overlay"></div> <div class="floating-elements"> <div class="floating-element"></div> <div class="floating-element"></div> <div class="floating-element"></div> </div> <div class="flyer"> <div class="header"> <div class="logo">QUANTUM<span>TECH</span></div> <div class="date">NOV 15, 2023 • 19:00 PST</div> </div> <h1 class="product-name">NEXUS OS</h1> <p class="tagline">The adaptive operating system that learns and evolves with your workflow</p> <div class="features"> <div class="feature"> <div class="feature-icon">⚡</div> <h3>Neural Adaptation</h3> <p>Learns your habits and optimizes performance exactly where you need it, reducing system load by 47%</p> </div> <div class="feature"> <div class="feature-icon">🔐</div> <h3>Quantum Encryption</h3> <p>Unbreakable security protocol with real-time threat detection and zero-day vulnerability patching</p> </div> <div class="feature"> <div class="feature-icon">🔄</div> <h3>Seamless Integration</h3> <p>Compatible with 98% of existing software while adding native AI acceleration to legacy applications</p> </div> <div class="feature"> <div class="feature-icon">🔊</div> <h3>Contextual Voice UI</h3> <p>Advanced natural language processing that understands context, intent, and emotional nuance</p> </div> </div> <div class="cta-section"> <div class="event-info"> <div class="event-details"><span>WHERE:</span> Tech Hub SF</div> <div class="event-details"><span>LIMITED:</span> 200 Attendees</div> <div class="event-details"><span>INCLUDES:</span> Early Access + Dev Kit</div> </div> <div class="qr-code"> <svg id="qrcode" width="80%" height="80%" viewBox="0 0 100 100"> <!-- QR code generated with SVG elements --> <rect x="10" y="10" width="10" height="10" fill="black"></rect> <rect x="20" y="10" width="10" height="10" fill="black"></rect> <rect x="30" y="10" width="10" height="10" fill="black"></rect> <rect x="40" y="10" width="10" height="10" fill="black"></rect> <rect x="50" y="10" width="10" height="10" fill="black"></rect> <rect x="60" y="10" width="10" height="10" fill="black"></rect> <rect x="70" y="10" width="10" height="10" fill="black"></rect> <rect x="10" y="20" width="10" height="10" fill="black"></rect> <rect x="70" y="20" width="10" height="10" fill="black"></rect> <rect x="10" y="30" width="10" height="10" fill="black"></rect> <rect x="30" y="30" width="10" height="10" fill="black"></rect> <rect x="40" y="30" width="10" height="10" fill="black"></rect> <rect x="50" y="30" width="10" height="10" fill="black"></rect> <rect x="70" y="30" width="10" height="10" fill="black"></rect> <rect x="10" y="40" width="10" height="10" fill="black"></rect> <rect x="30" y="40" width="10" height="10" fill="black"></rect> <rect x="50" y="40" width="10" height="10" fill="black"></rect> <rect x="70" y="40" width="10" height="10" fill="black"></rect> <rect x="10" y="50" width="10" height="10" fill="black"></rect> <rect x="30" y="50" width="10" height="10" fill="black"></rect> <rect x="50" y="50" width="10" height="10" fill="black"></rect> <rect x="70" y="50" width="10" height="10" fill="black"></rect> <rect x="10" y="60" width="10" height="10" fill="black"></rect> <rect x="70" y="60" width="10" height="10" fill="black"></rect> <rect x="10" y="70" width="10" height="10" fill="black"></rect> <rect x="20" y="70" width="10" height="10" fill="black"></rect> <rect x="30" y="70" width="10" height="10" fill="black"></rect> <rect x="40" y="70" width="10" height="10" fill="black"></rect> <rect x="50" y="70" width="10" height="10" fill="black"></rect> <rect x="60" y="70" width="10" height="10" fill="black"></rect> <rect x="70" y="70" width="10" height="10" fill="black"></rect> <rect x="20" y="20" width="10" height="10" fill="black"></rect> <rect x="30" y="20" width="10" height="10" fill="black"></rect> <rect x="40" y="20" width="10" height="10" fill="black"></rect> <rect x="50" y="20" width="10" height="10" fill="black"></rect> <rect x="60" y="20" width="10" height="10" fill="black"></rect> </svg> </div> </div> <button class="register-btn" id="registerBtn">RESERVE YOUR SPOT</button> </div> <script> document.addEventListener('DOMContentLoaded', function() { // Create particles on button hover const registerBtn = document.getElementById('registerBtn'); registerBtn.addEventListener('mouseover', createParticles); registerBtn.addEventListener('mouseout', stopParticles); let particleInterval; function createParticles() { particleInterval = setInterval(() => { const particle = document.createElement('div'); particle.classList.add('particle'); // Random position around the button const btnRect = registerBtn.getBoundingClientRect(); const x = btnRect.left + Math.random() * btnRect.width; const y = btnRect.top + Math.random() * btnRect.height; // Random size const size = Math.random() * 5 + 2; particle.style.width = `${size}px`; particle.style.height = `${size}px`; particle.style.left = `${x}px`; particle.style.top = `${y}px`; document.body.appendChild(particle); // Animate let dx = (Math.random() - 0.5) * 5; let dy = (Math.random() - 0.5) * 5; let opacity = 1; // Animation frame const animate = () => { if (opacity <= 0) { particle.remove(); return; } // Update position const currentX = parseFloat(particle.style.left); const currentY = parseFloat(particle.style.top); particle.style.left = `${currentX + dx}px`; particle.style.top = `${currentY + dy}px`; // Fade out opacity -= 0.02; particle.style.opacity = opacity; requestAnimationFrame(animate); }; requestAnimationFrame(animate); }, 50); } function stopParticles() { clearInterval(particleInterval); } // Feature hover effect const features = document.querySelectorAll('.feature'); features.forEach(feature => { feature.addEventListener('mouseenter', () => { const icon = feature.querySelector('.feature-icon'); icon.style.transform = 'scale(1.2) rotate(5deg)'; icon.style.transition = 'transform 0.3s ease'; }); feature.addEventListener('mouseleave', () => { const icon = feature.querySelector('.feature-icon'); icon.style.transform = 'scale(1) rotate(0)'; }); }); // QR code pulsing effect const qrCode = document.querySelector('.qr-code'); setInterval(() => { qrCode.style.boxShadow = '0 0 15px rgba(0, 255, 194, 0.7)'; setTimeout(() => { qrCode.style.boxShadow = 'none'; }, 500); }, 3000); // Handle the register button click registerBtn.addEventListener('click', function(e) { e.preventDefault(); // Toggle a confirmation message or animation this.textContent = "SPOT RESERVED!"; this.style.background = "#00FFC2"; // Change back after a delay setTimeout(() => { this.textContent = "RESERVE YOUR SPOT"; this.style.background = "linear-gradient(45deg, var(--neon), #00D0FF)"; }, 2000); }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>FRACTURE: A Visual Narrative</title> <style> @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;600;700;900&family=Bebas+Neue&family=Playfair+Display:ital,wght@0,400;0,700;1,400&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Montserrat', sans-serif; background-color: #000; color: #fff; overflow-x: hidden; width: 100%; height: 100%; position: relative; } .container { max-width: 700px; height: 700px; margin: 0 auto; padding: 20px; overflow: hidden; position: relative; display: grid; grid-template-rows: auto 1fr auto; } header { position: relative; overflow: hidden; margin-bottom: 20px; } .title { font-family: 'Bebas Neue', sans-serif; font-size: 6rem; letter-spacing: 4px; margin: 0; line-height: 0.9; transform: translateX(-100%); animation: slideIn 1s ease-out forwards; position: relative; z-index: 10; mix-blend-mode: difference; } .subtitle { font-family: 'Playfair Display', serif; font-style: italic; font-size: 1.5rem; margin-top: 10px; opacity: 0; animation: fadeIn 1.5s ease-out forwards 0.8s; } .brush-stroke { position: absolute; width: 250px; height: 250px; background: #FF0066; border-radius: 50% 20% 40% 10%; filter: blur(40px); opacity: 0.8; top: -100px; right: -100px; mix-blend-mode: screen; transform: rotate(-15deg); animation: float 15s ease-in-out infinite; z-index: 1; } .brush-stroke2 { position: absolute; width: 150px; height: 150px; background: #00FFCC; border-radius: 30% 70% 50% 30%; filter: blur(20px); opacity: 0.6; bottom: -50px; left: 20%; mix-blend-mode: screen; transform: rotate(25deg); animation: float 10s ease-in-out infinite reverse; z-index: 1; } .main-content { display: grid; grid-template-columns: 1.5fr 1fr; gap: 20px; position: relative; z-index: 2; } .exhibition-info { padding: 20px; background: rgba(0, 0, 0, 0.7); backdrop-filter: blur(5px); border-left: 3px solid #fff; transform: translateY(30px); opacity: 0; animation: slideUp 1s ease-out forwards 0.4s; } .exhibition-title { font-size: 1.8rem; margin-bottom: 20px; font-weight: 700; line-height: 1.1; } .exhibition-date, .exhibition-location { font-size: 1.1rem; margin-bottom: 15px; display: flex; align-items: center; } .exhibition-date::before, .exhibition-location::before { content: ""; display: inline-block; width: 15px; height: 2px; background-color: #FF0066; margin-right: 10px; } .artists { margin-top: 30px; } .artists-title { font-size: 1.2rem; text-transform: uppercase; letter-spacing: 1px; margin-bottom: 15px; font-weight: 600; color: #00FFCC; } .artists-list { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 20px; } .artist { padding: 5px 10px; background: rgba(255, 255, 255, 0.1); border-radius: 3px; transition: all 0.3s ease; cursor: pointer; } .artist:hover { background: #FF0066; transform: translateY(-3px); } .image-column { position: relative; transform: translateY(30px); opacity: 0; animation: slideUp 1s ease-out forwards 0.7s; } .gallery-image { width: 100%; height: auto; filter: grayscale(100%) contrast(1.2); transition: all 0.5s ease; position: relative; clip-path: polygon(0 0, 100% 0, 100% 85%, 85% 100%, 0 100%); } .gallery-image:hover { filter: grayscale(0%) contrast(1); } .image-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(135deg, transparent 50%, rgba(255, 0, 102, 0.3) 100%); mix-blend-mode: overlay; } .cta { margin-top: 40px; text-align: center; opacity: 0; animation: fadeIn 1.5s ease-out forwards 1.2s; } .btn { display: inline-block; padding: 12px 30px; background: transparent; color: white; text-decoration: none; border: 2px solid white; font-size: 1rem; text-transform: uppercase; letter-spacing: 2px; position: relative; overflow: hidden; cursor: pointer; z-index: 1; transition: all 0.3s ease; } .btn:before { content: ''; position: absolute; bottom: 0; left: 0; width: 0%; height: 100%; background-color: #FF0066; transition: all 0.3s; z-index: -1; } .btn:hover { color: #000; border-color: #FF0066; } .btn:hover:before { width: 100%; } .btn-text { position: relative; z-index: 2; } .cursor { width: 40px; height: 40px; border: 2px solid #fff; border-radius: 50%; position: fixed; transform: translate(-50%, -50%); pointer-events: none; transition: all 0.3s ease; z-index: 999; mix-blend-mode: difference; } .cursor-dot { width: 8px; height: 8px; background-color: #fff; border-radius: 50%; position: fixed; transform: translate(-50%, -50%); pointer-events: none; z-index: 999; mix-blend-mode: difference; } footer { margin-top: 40px; font-size: 0.9rem; text-align: center; color: rgba(255, 255, 255, 0.6); position: relative; z-index: 2; } .footer-links { display: flex; justify-content: center; gap: 20px; margin-top: 15px; } .footer-link { color: rgba(255, 255, 255, 0.6); text-decoration: none; transition: color 0.3s ease; } .footer-link:hover { color: #00FFCC; } @keyframes slideIn { 0% { transform: translateX(-100%); } 100% { transform: translateX(0); } } @keyframes fadeIn { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes slideUp { 0% { transform: translateY(30px); opacity: 0; } 100% { transform: translateY(0); opacity: 1; } } @keyframes float { 0% { transform: translate(0, 0) rotate(-15deg); } 50% { transform: translate(15px, 15px) rotate(0deg); } 100% { transform: translate(0, 0) rotate(-15deg); } } @media (max-width: 600px) { .title { font-size: 4rem; } .subtitle { font-size: 1.2rem; } .main-content { grid-template-columns: 1fr; } .exhibition-title { font-size: 1.5rem; } .exhibition-date, .exhibition-location { font-size: 1rem; } } </style> </head> <body> <div class="cursor"></div> <div class="cursor-dot"></div> <div class="container"> <header> <div class="brush-stroke"></div> <div class="brush-stroke2"></div> <h1 class="title">FRACTURE</h1> <p class="subtitle">A Visual Narrative of Fragmented Realities</p> </header> <div class="main-content"> <div class="exhibition-info"> <h2 class="exhibition-title">Contemporary boundaries dissolve as perception shatters.</h2> <p class="exhibition-date">NOVEMBER 17 - DECEMBER 23, 2023</p> <p class="exhibition-location">PRISM GALLERY, EAST WING</p> <div class="artists"> <h3 class="artists-title">FEATURED ARTISTS</h3> <div class="artists-list"> <div class="artist">Olivia Chen</div> <div class="artist">Marcus Weber</div> <div class="artist">Sophia Kowalski</div> <div class="artist">Hiroshi Tanaka</div> <div class="artist">Elena Varga</div> <div class="artist">James Nilsson</div> </div> </div> <div class="cta"> <button class="btn"> <span class="btn-text">RSVP FOR OPENING NIGHT</span> </button> </div> </div> <div class="image-column"> <img src="https://images.unsplash.com/photo-1544665215-e8239d25128b?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80" alt="Abstract art exhibition preview" class="gallery-image"> <div class="image-overlay"></div> </div> </div> <footer> <p>Curated by Prism Contemporary Art Collective</p> <div class="footer-links"> <a href="#" class="footer-link">Gallery Info</a> <a href="#" class="footer-link">Directions</a> <a href="#" class="footer-link">Previous Exhibitions</a> </div> </footer> </div> <script> // Custom cursor functionality 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'; }); // Elements that should change cursor const links = document.querySelectorAll('a, .btn, .artist'); links.forEach(link => { link.addEventListener('mouseenter', () => { cursor.style.transform = 'translate(-50%, -50%) scale(1.5)'; cursor.style.borderColor = '#FF0066'; }); link.addEventListener('mouseleave', () => { cursor.style.transform = 'translate(-50%, -50%) scale(1)'; cursor.style.borderColor = '#fff'; }); }); // Button click animation const btn = document.querySelector('.btn'); btn.addEventListener('click', (e) => { e.preventDefault(); let ripple = document.createElement('span'); ripple.classList.add('ripple'); btn.appendChild(ripple); let x = e.clientX - e.target.getBoundingClientRect().left; let y = e.clientY - e.target.getBoundingClientRect().top; ripple.style.left = `${x}px`; ripple.style.top = `${y}px`; setTimeout(() => { ripple.remove(); }, 600); // Simulate RSVP action without page reload const btnText = btn.querySelector('.btn-text'); const originalText = btnText.textContent; btnText.textContent = "RSVP SENT!"; btn.disabled = true; btn.style.borderColor = "#00FFCC"; setTimeout(() => { btnText.textContent = originalText; btn.disabled = false; btn.style.borderColor = ""; }, 2000); }); // Artist hover effects const artists = document.querySelectorAll('.artist'); artists.forEach(artist => { artist.addEventListener('click', () => { artists.forEach(a => a.classList.remove('active')); artist.classList.add('active'); }); }); // Hide cursor when leaving the window document.addEventListener('mouseout', (e) => { if (e.relatedTarget === null) { cursor.style.opacity = '0'; cursorDot.style.opacity = '0'; } }); document.addEventListener('mouseover', () => { cursor.style.opacity = '1'; cursorDot.style.opacity = '1'; }); // Mobile detection - hide custom cursor on touch devices if ('ontouchstart' in window || navigator.maxTouchPoints) { cursor.style.display = 'none'; cursorDot.style.display = 'none'; } </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Luxury Estate Open House</title> <style> /* Base Reset */ * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Playfair Display', serif; } /* Import Fonts */ @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500;600;700&family=Raleway:wght@300;400;500;600&display=swap'); body { background-color: #f9f7f4; color: #333; font-family: 'Raleway', sans-serif; line-height: 1.6; overflow-x: hidden; } .container { max-width: 700px; max-height: 700px; height: 100vh; margin: 0 auto; background: linear-gradient(to bottom, #fff, #f5f3f0); overflow-y: auto; scrollbar-width: thin; position: relative; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08); } .container::-webkit-scrollbar { width: 4px; } .container::-webkit-scrollbar-track { background: #f5f3f0; } .container::-webkit-scrollbar-thumb { background-color: #c9b39c; border-radius: 20px; } /* Header */ .header { position: relative; height: 260px; overflow: hidden; } .header-image { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s ease; } .header:hover .header-image { transform: scale(1.05); } .header-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(to bottom, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.4)); display: flex; flex-direction: column; justify-content: flex-end; padding: 30px; color: white; opacity: 0; transition: opacity 0.4s ease; } .header:hover .header-overlay { opacity: 1; } .header-title { font-family: 'Playfair Display', serif; font-size: 2rem; font-weight: 600; margin-bottom: 5px; transform: translateY(15px); transition: transform 0.5s ease; } .header:hover .header-title { transform: translateY(0); } .header-address { font-family: 'Raleway', sans-serif; font-size: 1rem; font-weight: 400; transform: translateY(15px); transition: transform 0.6s ease; } .header:hover .header-address { transform: translateY(0); } /* Open House Badge */ .open-house-badge { position: absolute; top: 20px; right: 20px; background-color: #c9b39c; color: white; padding: 10px 20px; border-radius: 3px; font-family: 'Raleway', sans-serif; font-weight: 600; transform: rotate(2deg); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); transition: transform 0.3s ease, box-shadow 0.3s ease; z-index: 10; } .open-house-badge:hover { transform: rotate(0deg) scale(1.05); box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2); } /* Content */ .content { padding: 30px; } .price { font-family: 'Playfair Display', serif; font-size: 1.8rem; font-weight: 700; color: #666; margin-bottom: 15px; display: inline-block; position: relative; } .price::after { content: ''; position: absolute; bottom: -8px; left: 0; width: 80px; height: 2px; background-color: #c9b39c; transition: width 0.3s ease; } .price:hover::after { width: 100%; } .property-features { display: flex; justify-content: space-between; padding: 20px 0; border-bottom: 1px solid #eee; margin-bottom: 20px; } .feature { text-align: center; flex: 1; } .feature-icon { font-size: 1.5rem; margin-bottom: 8px; color: #c9b39c; } .feature-value { font-family: 'Playfair Display', serif; font-size: 1.2rem; font-weight: 600; color: #444; } .feature-label { font-family: 'Raleway', sans-serif; font-size: 0.85rem; color: #888; } .description { margin-bottom: 25px; line-height: 1.7; color: #666; } .description p { margin-bottom: 15px; } /* Gallery */ .gallery { display: grid; grid-template-columns: repeat(3, 1fr); grid-gap: 10px; margin-bottom: 30px; } .gallery-item { position: relative; height: 100px; overflow: hidden; border-radius: 4px; cursor: pointer; } .gallery-item img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.4s ease; } .gallery-item:hover img { transform: scale(1.1); } .gallery-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(201, 179, 156, 0.6); display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity 0.3s ease; } .gallery-item:hover .gallery-overlay { opacity: 1; } .gallery-overlay i { color: white; font-size: 1.5rem; } /* Event Details */ .event-details { background-color: #f2ede8; padding: 20px; border-radius: 6px; margin-bottom: 25px; transition: transform 0.3s ease, box-shadow 0.3s ease; } .event-details:hover { transform: translateY(-5px); box-shadow: 0 10px 25px rgba(0, 0, 0, 0.07); } .event-title { font-family: 'Playfair Display', serif; font-size: 1.3rem; font-weight: 600; margin-bottom: 10px; color: #444; } .event-info { display: grid; grid-template-columns: repeat(2, 1fr); grid-gap: 15px; } .event-item { display: flex; align-items: center; } .event-icon { color: #c9b39c; margin-right: 10px; font-size: 1.1rem; } /* Contact */ .contact { display: flex; align-items: center; margin-bottom: 30px; } .agent-photo { width: 80px; height: 80px; border-radius: 50%; object-fit: cover; margin-right: 20px; border: 3px solid white; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); transition: transform 0.3s ease; } .contact:hover .agent-photo { transform: scale(1.1) rotate(5deg); } .agent-info h3 { font-family: 'Playfair Display', serif; font-size: 1.2rem; margin-bottom: 5px; color: #444; } .agent-info p { font-size: 0.9rem; color: #888; margin-bottom: 5px; } .cta-button { display: inline-block; background-color: #c9b39c; color: white; padding: 12px 25px; border-radius: 5px; font-family: 'Raleway', sans-serif; font-weight: 600; text-decoration: none; margin-top: 10px; transition: background-color 0.3s ease, transform 0.3s ease; cursor: pointer; border: none; outline: none; } .cta-button:hover { background-color: #b8a089; transform: translateY(-3px); } /* Modal */ .modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.8); z-index: 100; justify-content: center; align-items: center; opacity: 0; transition: opacity 0.3s ease; } .modal.active { display: flex; opacity: 1; } .modal-content { position: relative; max-width: 80%; max-height: 80%; } .modal-content img { max-width: 100%; max-height: 80vh; border-radius: 6px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); } .close-modal { position: absolute; top: -40px; right: 0; color: white; font-size: 2rem; cursor: pointer; transition: transform 0.3s ease; } .close-modal:hover { transform: rotate(90deg); } /* Footer */ .footer { padding: 20px 30px; border-top: 1px solid #eee; text-align: center; color: #888; font-size: 0.9rem; } .footer .logo { font-family: 'Playfair Display', serif; font-size: 1.2rem; font-weight: 700; color: #444; margin-bottom: 10px; letter-spacing: 1px; } /* Form */ .interest-form { margin-top: 20px; display: none; opacity: 0; transform: translateY(20px); transition: opacity 0.4s ease, transform 0.4s ease; } .interest-form.active { display: block; opacity: 1; transform: translateY(0); } .form-group { margin-bottom: 15px; } .form-control { width: 100%; padding: 12px; border: 1px solid #ddd; border-radius: 4px; font-family: 'Raleway', sans-serif; transition: border-color 0.3s ease, box-shadow 0.3s ease; } .form-control:focus { outline: none; border-color: #c9b39c; box-shadow: 0 0 0 3px rgba(201, 179, 156, 0.2); } .form-submit { background-color: #c9b39c; color: white; border: none; padding: 12px 20px; border-radius: 4px; cursor: pointer; font-family: 'Raleway', sans-serif; font-weight: 600; width: 100%; transition: background-color 0.3s ease; } .form-submit:hover { background-color: #b8a089; } .form-thanks { display: none; text-align: center; padding: 20px; background-color: #f2ede8; border-radius: 6px; margin-top: 20px; } .form-thanks.active { display: block; animation: fadeIn 0.5s ease forwards; } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } /* Responsive */ @media (max-width: 600px) { .header { height: 200px; } .header-title { font-size: 1.5rem; } .property-features { flex-wrap: wrap; } .feature { flex: 0 0 50%; margin-bottom: 15px; } .gallery { grid-template-columns: repeat(2, 1fr); } .event-info { grid-template-columns: 1fr; } .contact { flex-direction: column; text-align: center; } .agent-photo { margin-right: 0; margin-bottom: 15px; } } /* Animation */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .content > * { animation: fadeInUp 0.6s ease forwards; } .content > *:nth-child(2) { animation-delay: 0.1s; } .content > *:nth-child(3) { animation-delay: 0.2s; } .content > *:nth-child(4) { animation-delay: 0.3s; } .content > *:nth-child(5) { animation-delay: 0.4s; } .content > *:nth-child(6) { animation-delay: 0.5s; } </style> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> </head> <body> <div class="container"> <div class="header"> <img class="header-image" src="https://images.unsplash.com/photo-1600585154340-be6161a56a0c?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80" alt="Luxury Coastal Property"> <div class="header-overlay"> <h1 class="header-title">Coastal Modern Elegance</h1> <p class="header-address">1235 Oceanview Drive, Malibu, CA 90265</p> </div> </div> <div class="open-house-badge"> Open House: Saturday, 1-4 PM </div> <div class="content"> <h2 class="price">$4,850,000</h2> <div class="property-features"> <div class="feature"> <div class="feature-icon"><i class="fas fa-bed"></i></div> <div class="feature-value">5</div> <div class="feature-label">Bedrooms</div> </div> <div class="feature"> <div class="feature-icon"><i class="fas fa-bath"></i></div> <div class="feature-value">4.5</div> <div class="feature-label">Bathrooms</div> </div> <div class="feature"> <div class="feature-icon"><i class="fas fa-ruler-combined"></i></div> <div class="feature-value">4,280</div> <div class="feature-label">Sq. Feet</div> </div> <div class="feature"> <div class="feature-icon"><i class="fas fa-car"></i></div> <div class="feature-value">3</div> <div class="feature-label">Car Garage</div> </div> </div> <div class="description"> <p>Experience coastal luxury living in this meticulously crafted contemporary estate with panoramic ocean views. Completed in 2021, this architectural masterpiece offers an open-concept design where natural light floods through floor-to-ceiling windows, creating a seamless transition between indoor and outdoor living.</p> <p>The gourmet kitchen features custom Italian cabinetry, Calacatta marble countertops, and professional-grade Miele appliances. The primary suite boasts a private terrace, dual walk-in closets, and a spa-inspired bathroom with heated floors.</p> </div> <div class="gallery"> <div class="gallery-item" data-img="https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80"> <img src="https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80" alt="Luxury Kitchen"> <div class="gallery-overlay"> <i class="fas fa-search-plus"></i> </div> </div> <div class="gallery-item" data-img="https://images.unsplash.com/photo-1613545325278-f24b0cae1224?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80"> <img src="https://images.unsplash.com/photo-1613545325278-f24b0cae1224?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80" alt="Master Bedroom"> <div class="gallery-overlay"> <i class="fas fa-search-plus"></i> </div> </div> <div class="gallery-item" data-img="https://images.unsplash.com/photo-1584622650111-993a426fbf0a?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80"> <img src="https://images.unsplash.com/photo-1584622650111-993a426fbf0a?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80" alt="Living Room"> <div class="gallery-overlay"> <i class="fas fa-search-plus"></i> </div> </div> </div> <div class="event-details"> <h3 class="event-title">Open House Details</h3> <div class="event-info"> <div class="event-item"> <div class="event-icon"><i class="fas fa-calendar"></i></div> <div>Saturday, August 19, 2023</div> </div> <div class="event-item"> <div class="event-icon"><i class="fas fa-clock"></i></div> <div>1:00 PM - 4:00 PM</div> </div> <div class="event-item"> <div class="event-icon"><i class="fas fa-wine-glass"></i></div> <div>Refreshments will be served</div> </div> <div class="event-item"> <div class="event-icon"><i class="fas fa-info-circle"></i></div> <div>Private viewings available</div> </div> </div> </div> <div class="contact"> <img src="https://images.unsplash.com/photo-1573496359142-b8d87734a5a2?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2076&q=80" alt="Agent Photo" class="agent-photo"> <div class="agent-info"> <h3>Alexandra Martinez</h3> <p>Luxury Real Estate Specialist</p> <p><i class="fas fa-phone"></i> (310) 555-8912</p> <p><i class="fas fa-envelope"></i> [email protected]</p> <button class="cta-button" id="showForm">Request Information</button> </div> </div> <div class="interest-form" id="interestForm"> <div class="form-group"> <input type="text" class="form-control" placeholder="Full Name" id="name"> </div> <div class="form-group"> <input type="email" class="form-control" placeholder="Email Address" id="email"> </div> <div class="form-group"> <input type="tel" class="form-control" placeholder="Phone Number" id="phone"> </div> <div class="form-group"> <textarea class="form-control" rows="3" placeholder="I'm interested in learning more about this property..." id="message"></textarea> </div> <button class="form-submit" id="submitForm">Submit Request</button> </div> <div class="form-thanks" id="formThanks"> <h3><i class="fas fa-check-circle"></i> Thank you for your interest!</h3> <p>Alexandra will be in touch with you shortly to provide more information about this exclusive property.</p> </div> </div> <div class="footer"> <div class="logo">COASTAL LUXURY REALTY</div> <p>All information deemed reliable but not guaranteed</p> </div> </div> <div class="modal" id="imageModal"> <div class="modal-content"> <span class="close-modal" id="closeModal">×</span> <img id="modalImage" src="" alt="Property Image"> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { // Gallery image modal const galleryItems = document.querySelectorAll('.gallery-item'); const modal = document.getElementById('imageModal'); const modalImage = document.getElementById('modalImage'); const closeModal = document.getElementById('closeModal'); galleryItems.forEach(item => { item.addEventListener('click', function() { const imgSrc = this.getAttribute('data-img'); modalImage.src = imgSrc; modal.classList.add('active'); }); }); closeModal.addEventListener('click', function() { modal.classList.remove('active'); }); // Click outside to close modal.addEventListener('click', function(e) { if (e.target === modal) { modal.classList.remove('active'); } }); // Form handling const showFormBtn = document.getElementById('showForm'); const interestForm = document.getElementById('interestForm'); const submitFormBtn = document.getElementById('submitForm'); const formThanks = document.getElementById('formThanks'); showFormBtn.addEventListener('click', function() { interestForm.classList.add('active'); showFormBtn.style.display = 'none'; }); submitFormBtn.addEventListener('click', function(e) { e.preventDefault(); // Form validation const name = document.getElementById('name').value; const email = document.getElementById('email').value; const phone = document.getElementById('phone').value; const message = document.getElementById('message').value; if (!name || !email || !phone) { alert('Please fill in all required fields.'); return; } // Show thank you message interestForm.style.display = 'none'; formThanks.classList.add('active'); // In a real implementation, you would send the form data to a server here console.log('Form submitted:', { name, email, phone, message }); }); // Prevent actual form submission document.addEventListener('submit', function(e) { e.preventDefault(); }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>BEAST MODE Fitness Bootcamp</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Montserrat', sans-serif; } @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600;800&display=swap'); body { background-color: #f4f4f4; display: flex; justify-content: center; align-items: center; min-height: 700px; overflow-x: hidden; padding: 20px; } .flyer-container { width: 100%; max-width: 650px; height: auto; max-height: 650px; background: linear-gradient(145deg, #ff4d4d, #ff8533); border-radius: 15px; overflow: hidden; position: relative; box-shadow: 0 15px 35px rgba(0, 0, 0, 0.2); transition: transform 0.3s ease; } .flyer-container:hover { transform: scale(1.02); } .diagonal-pattern { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: repeating-linear-gradient( 45deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.1) 10px, transparent 10px, transparent 20px ); z-index: 1; } .content { position: relative; z-index: 2; padding: 30px; color: white; display: flex; flex-direction: column; height: 100%; } header { text-align: center; margin-bottom: 20px; } .title { font-size: 4rem; font-weight: 800; text-transform: uppercase; line-height: 1; letter-spacing: -1px; margin-bottom: 10px; text-shadow: 3px 3px 0px rgba(0, 0, 0, 0.2); animation: pulse 2s infinite; } .subtitle { font-size: 1.5rem; font-weight: 600; margin-bottom: 5px; text-transform: uppercase; letter-spacing: 2px; } .info-container { display: flex; justify-content: space-between; margin-bottom: 25px; } .left-col, .right-col { flex: 1; } .right-col { text-align: right; } .date-time, .location { font-size: 1.2rem; font-weight: 600; margin-bottom: 15px; } .date-time strong, .location strong { display: block; text-transform: uppercase; font-size: 0.9rem; opacity: 0.8; letter-spacing: 1px; } .timeline { background-color: rgba(255, 255, 255, 0.2); border-radius: 10px; padding: 20px; margin-bottom: 20px; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); transition: transform 0.3s ease, box-shadow 0.3s ease; } .timeline:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2); } .timeline h3 { font-size: 1.2rem; margin-bottom: 15px; text-transform: uppercase; letter-spacing: 1px; } .schedule { display: grid; grid-template-columns: auto 1fr; gap: 10px; } .time { font-weight: 600; } .activity { position: relative; } .activity::before { content: "›"; margin-right: 5px; font-weight: bold; font-size: 1.2rem; } .features { display: flex; flex-wrap: wrap; justify-content: space-between; margin-bottom: 25px; } .feature { flex-basis: 48%; background-color: rgba(255, 255, 255, 0.15); border-radius: 8px; padding: 12px; margin-bottom: 10px; display: flex; align-items: center; transition: all 0.3s ease; } .feature:hover { background-color: rgba(255, 255, 255, 0.25); transform: translateY(-3px); } .feature i { font-size: 1.5rem; margin-right: 10px; } .cta { text-align: center; margin-top: auto; } .register-btn { background-color: #fff; color: #ff4d4d; font-size: 1.2rem; font-weight: 600; text-transform: uppercase; letter-spacing: 1px; padding: 12px 25px; border: none; border-radius: 50px; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); position: relative; overflow: hidden; } .register-btn:hover { transform: translateY(-3px); box-shadow: 0 8px 20px rgba(0, 0, 0, 0.3); background-color: #ffffff; color: #ff3333; } .register-btn::after { content: ""; position: absolute; top: 50%; left: 50%; width: 5px; height: 5px; background: rgba(255, 255, 255, 0.5); opacity: 0; border-radius: 100%; transform: scale(1, 1) translate(-50%); transform-origin: 50% 50%; } .register-btn:hover::after { animation: ripple 1s ease-out; } .contact { margin-top: 15px; display: flex; justify-content: center; gap: 15px; } .contact a { color: white; text-decoration: none; font-weight: 600; transition: transform 0.3s ease; display: flex; align-items: center; } .contact a i { margin-right: 5px; } .contact a:hover { transform: scale(1.1); text-decoration: underline; } .price-tag { background-color: #ffcc00; color: #333; padding: 8px 15px; border-radius: 20px; position: absolute; top: 20px; right: 20px; font-weight: 800; font-size: 1.3rem; transform: rotate(5deg); box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2); z-index: 5; animation: wiggle 2.5s infinite; } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } } @keyframes wiggle { 0%, 100% { transform: rotate(5deg); } 50% { transform: rotate(-5deg); } } @keyframes ripple { 0% { transform: scale(0, 0); opacity: 1; } 20% { transform: scale(25, 25); opacity: 1; } 100% { opacity: 0; transform: scale(40, 40); } } @media (max-width: 600px) { .title { font-size: 3rem; } .subtitle { font-size: 1.2rem; } .info-container { flex-direction: column; } .right-col { text-align: left; margin-top: 15px; } .features { flex-direction: column; } .feature { flex-basis: 100%; } .content { padding: 20px; } } /* Animated fitness icons */ .icon-container { position: absolute; width: 100%; height: 100%; top: 0; left: 0; z-index: 0; overflow: hidden; } .fitness-icon { position: absolute; font-size: 2rem; color: rgba(255, 255, 255, 0.2); animation: float 10s infinite linear; } @keyframes float { 0% { transform: translateY(0) rotate(0deg); opacity: 0; } 10% { opacity: 1; } 90% { opacity: 1; } 100% { transform: translateY(-800px) rotate(360deg); opacity: 0; } } </style> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"> </head> <body> <div class="flyer-container"> <div class="diagonal-pattern"></div> <div class="icon-container" id="iconContainer"></div> <div class="price-tag">$99</div> <div class="content"> <header> <h1 class="title">BEAST<br>MODE</h1> <p class="subtitle">6-Week Fitness Bootcamp</p> </header> <div class="info-container"> <div class="left-col"> <div class="date-time"> <strong>When</strong> Starting June 15th<br> Mon-Wed-Fri, 6:00 AM </div> </div> <div class="right-col"> <div class="location"> <strong>Where</strong> Riverfront Park<br> 350 S. Wilson Ave </div> </div> </div> <div class="timeline"> <h3>Session Blueprint</h3> <div class="schedule"> <div class="time">6:00-6:15</div> <div class="activity">Dynamic warm-up & mobility prep</div> <div class="time">6:15-6:45</div> <div class="activity">High-intensity circuit training</div> <div class="time">6:45-7:15</div> <div class="activity">Strength & endurance challenges</div> <div class="time">7:15-7:30</div> <div class="activity">Cool-down & recovery techniques</div> </div> </div> <div class="features"> <div class="feature"> <i class="fas fa-dumbbell"></i> <span>Pro-grade equipment provided</span> </div> <div class="feature"> <i class="fas fa-heart"></i> <span>Personalized fitness tracking</span> </div> <div class="feature"> <i class="fas fa-users"></i> <span>Maximum 12 participants</span> </div> <div class="feature"> <i class="fas fa-apple-alt"></i> <span>Nutrition plan included</span> </div> </div> <div class="cta"> <button class="register-btn" id="registerBtn">RESERVE YOUR SPOT</button> <div class="contact"> <a href="#"><i class="fas fa-phone"></i> (555) 123-4567</a> <a href="#"><i class="fas fa-envelope"></i> [email protected]</a> </div> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { // Create floating fitness icons const iconContainer = document.getElementById('iconContainer'); const icons = [ 'dumbbell', 'running', 'heartbeat', 'biking', 'swimmer', 'apple-alt', 'stopwatch', 'medal' ]; for (let i = 0; i < 15; i++) { const icon = document.createElement('i'); icon.className = `fas fa-${icons[Math.floor(Math.random() * icons.length)]} fitness-icon`; // Random position, size, and animation duration const left = Math.random() * 100; const size = 1 + Math.random() * 1.5; const delay = Math.random() * 10; const duration = 15 + Math.random() * 10; icon.style.left = `${left}%`; icon.style.bottom = '-50px'; icon.style.fontSize = `${size}rem`; icon.style.animationDuration = `${duration}s`; icon.style.animationDelay = `${delay}s`; iconContainer.appendChild(icon); } // Button click effect simulation const registerBtn = document.getElementById('registerBtn'); registerBtn.addEventListener('click', function(e) { // Create ripple effect let ripple = document.createElement('span'); this.appendChild(ripple); // Show confirmation message const confirmationMsg = document.createElement('div'); confirmationMsg.textContent = 'Thanks! We\'ll contact you soon!'; confirmationMsg.style.position = 'absolute'; confirmationMsg.style.top = '-40px'; confirmationMsg.style.left = '50%'; confirmationMsg.style.transform = 'translateX(-50%)'; confirmationMsg.style.backgroundColor = 'rgba(0, 0, 0, 0.7)'; confirmationMsg.style.color = 'white'; confirmationMsg.style.padding = '8px 15px'; confirmationMsg.style.borderRadius = '20px'; confirmationMsg.style.opacity = '0'; confirmationMsg.style.transition = 'all 0.5s ease'; this.parentNode.appendChild(confirmationMsg); // Animate the confirmation message setTimeout(() => { confirmationMsg.style.opacity = '1'; confirmationMsg.style.top = '-60px'; }, 100); setTimeout(() => { confirmationMsg.style.opacity = '0'; confirmationMsg.style.top = '-40px'; setTimeout(() => { confirmationMsg.remove(); }, 500); }, 3000); }); // Make the flyer elements interactive with subtle hover effects const interactiveElements = document.querySelectorAll('.feature, .timeline'); interactiveElements.forEach(element => { element.addEventListener('mouseenter', function() { this.style.backgroundColor = 'rgba(255, 255, 255, 0.3)'; }); element.addEventListener('mouseleave', function() { if (this.classList.contains('feature')) { this.style.backgroundColor = 'rgba(255, 255, 255, 0.15)'; } else { this.style.backgroundColor = 'rgba(255, 255, 255, 0.2)'; } }); }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>AXIS Fashion Show</title> <style> @import url('https://fonts.googleapis.com/css2?family=Bodoni+Moda:wght@400;600;800&family=Montserrat:wght@300;400;600&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Montserrat', sans-serif; background-color: #111; color: #fff; width: 100%; height: 100vh; overflow: hidden; } .container { width: 100%; height: 100%; position: relative; display: flex; flex-direction: column; justify-content: center; align-items: center; overflow: hidden; } .flyer { width: 90%; max-width: 600px; height: 90%; background-color: #0a0a0a; position: relative; display: flex; flex-direction: column; overflow: hidden; border: 1px solid rgba(255, 255, 255, 0.1); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.8); } .image-container { width: 100%; height: 65%; position: relative; overflow: hidden; } .model-image { width: 100%; height: 100%; object-fit: cover; filter: grayscale(100%) contrast(120%); transition: transform 6s ease-in-out; } .image-container:hover .model-image { transform: scale(1.1); } .metallic-accent { position: absolute; width: 100%; height: 100%; top: 0; left: 0; background: linear-gradient(45deg, transparent 30%, rgba(192, 192, 192, 0.2) 50%, transparent 70%); opacity: 0; animation: shimmer 3s infinite; } @keyframes shimmer { 0% { opacity: 0; transform: translateX(-100%); } 50% { opacity: 0.6; } 100% { opacity: 0; transform: translateX(100%); } } .content { padding: 2rem; height: 35%; display: flex; flex-direction: column; justify-content: space-between; position: relative; } .title { font-family: 'Bodoni Moda', serif; font-size: 3.5rem; font-weight: 800; letter-spacing: 2px; margin-bottom: 0.5rem; color: white; line-height: 0.9; position: relative; } .title span { color: rgba(255, 255, 255, 0.9); display: block; } .title::after { content: ""; position: absolute; bottom: -10px; left: 0; height: 1px; width: 0; background: linear-gradient(90deg, #C0C0C0, transparent); transition: width 1s ease; } .flyer:hover .title::after { width: 80%; } .subtitle { font-family: 'Montserrat', sans-serif; font-weight: 300; font-size: 0.9rem; letter-spacing: 3px; text-transform: uppercase; margin-bottom: 1.5rem; color: #C0C0C0; } .details { display: flex; justify-content: space-between; margin-top: 1rem; } .column { flex: 1; } .label { font-family: 'Bodoni Moda', serif; font-size: 0.7rem; letter-spacing: 1px; text-transform: uppercase; color: #888; margin-bottom: 0.3rem; } .info { font-family: 'Montserrat', sans-serif; font-size: 0.9rem; margin-bottom: 1rem; font-weight: 400; } .designer-list { font-style: italic; line-height: 1.4; } .rsvp { margin-top: auto; position: relative; align-self: flex-end; } .rsvp-button { font-family: 'Bodoni Moda', serif; background: transparent; border: 1px solid #C0C0C0; color: #C0C0C0; padding: 0.6rem 2rem; font-size: 0.9rem; letter-spacing: 2px; cursor: pointer; transition: all 0.3s ease; position: relative; overflow: hidden; z-index: 1; } .rsvp-button::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(192, 192, 192, 0.2), transparent); transition: left 0.5s ease; z-index: -1; } .rsvp-button:hover { color: white; border-color: white; } .rsvp-button:hover::before { left: 100%; } .rsvp-form { position: absolute; top: 0; right: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.95); display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 2rem; transform: translateY(100%); transition: transform 0.5s ease-in-out; z-index: 10; } .rsvp-form.active { transform: translateY(0); } .close-form { position: absolute; top: 1rem; right: 1rem; background: none; border: none; color: white; font-size: 1.5rem; cursor: pointer; } .form-field { width: 100%; margin-bottom: 1rem; } .form-field input { width: 100%; padding: 0.5rem; background: transparent; border: none; border-bottom: 1px solid #C0C0C0; color: white; font-family: 'Montserrat', sans-serif; } .form-field input:focus { outline: none; border-bottom-color: white; } .form-field input::placeholder { color: #666; } .submit-rsvp { font-family: 'Bodoni Moda', serif; background: transparent; border: 1px solid #C0C0C0; color: #C0C0C0; padding: 0.6rem 2rem; font-size: 0.9rem; letter-spacing: 2px; margin-top: 1rem; cursor: pointer; transition: all 0.3s ease; } .submit-rsvp:hover { background-color: rgba(192, 192, 192, 0.1); color: white; } .rsvp-confirmation { font-family: 'Montserrat', sans-serif; color: #C0C0C0; text-align: center; display: none; animation: fadeIn 1s; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .hidden { display: none; } @media (max-width: 600px) { .title { font-size: 2.5rem; } .subtitle { font-size: 0.8rem; } .details { flex-direction: column; } .column { margin-bottom: 1rem; } .content { padding: 1.5rem; } } .cursor { position: fixed; width: 40px; height: 40px; border: 1px solid rgba(192, 192, 192, 0.5); border-radius: 50%; transform: translate(-50%, -50%); pointer-events: none; transition: transform 0.1s ease, width 0.3s ease, height 0.3s ease; z-index: 9999; display: none; } @media (min-width: 768px) { .cursor { display: block; } } </style> </head> <body> <div class="cursor"></div> <div class="container"> <div class="flyer"> <div class="image-container"> <img src="https://images.unsplash.com/photo-1578632767115-351597cf2477?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80" alt="Fashion Model" class="model-image"> <div class="metallic-accent"></div> </div> <div class="content"> <div> <h1 class="title">AXIS<span>2023</span></h1> <h2 class="subtitle">Autumn/Winter Collections</h2> <div class="details"> <div class="column"> <div class="label">Featured Designers</div> <div class="info designer-list">Valentina Noir, Wei Zhang, Dominique Laurent, Eclipse Studios</div> </div> <div class="column"> <div class="label">Date & Time</div> <div class="info">October 28, 2023<br>7:00 PM</div> <div class="label">Venue</div> <div class="info">The Glass Pavilion<br>10 Madison Avenue</div> </div> </div> </div> <div class="rsvp"> <button class="rsvp-button">SECURE YOUR SEAT</button> <div class="rsvp-form"> <button class="close-form">×</button> <div class="rsvp-form-fields"> <div class="form-field"> <input type="text" placeholder="Full Name" id="name"> </div> <div class="form-field"> <input type="email" placeholder="Email Address" id="email"> </div> <div class="form-field"> <input type="text" placeholder="Affiliation/Company" id="company"> </div> <button class="submit-rsvp">CONFIRM ATTENDANCE</button> </div> <div class="rsvp-confirmation"> <p>Thank you for your RSVP.<br>A confirmation has been sent to your email.</p> </div> </div> </div> </div> </div> </div> <script> // Custom cursor const cursor = document.querySelector('.cursor'); document.addEventListener('mousemove', (e) => { cursor.style.left = e.clientX + 'px'; cursor.style.top = e.clientY + 'px'; }); document.addEventListener('mousedown', () => { cursor.style.width = '35px'; cursor.style.height = '35px'; }); document.addEventListener('mouseup', () => { cursor.style.width = '40px'; cursor.style.height = '40px'; }); // RSVP form functionality const rsvpButton = document.querySelector('.rsvp-button'); const rsvpForm = document.querySelector('.rsvp-form'); const closeFormButton = document.querySelector('.close-form'); const submitRsvpButton = document.querySelector('.submit-rsvp'); const rsvpFormFields = document.querySelector('.rsvp-form-fields'); const rsvpConfirmation = document.querySelector('.rsvp-confirmation'); rsvpButton.addEventListener('click', () => { rsvpForm.classList.add('active'); }); closeFormButton.addEventListener('click', () => { rsvpForm.classList.remove('active'); // Reset form setTimeout(() => { rsvpFormFields.style.display = 'block'; rsvpConfirmation.style.display = 'none'; }, 500); }); submitRsvpButton.addEventListener('click', (e) => { e.preventDefault(); const nameInput = document.getElementById('name'); const emailInput = document.getElementById('email'); if (nameInput.value.trim() === '' || emailInput.value.trim() === '') { // Simple validation - could be more sophisticated return; } // Show confirmation message rsvpFormFields.style.display = 'none'; rsvpConfirmation.style.display = 'block'; // Clear form fields nameInput.value = ''; emailInput.value = ''; document.getElementById('company').value = ''; }); // Parallax effect for the model image const modelImage = document.querySelector('.model-image'); const imageContainer = document.querySelector('.image-container'); imageContainer.addEventListener('mousemove', (e) => { const xAxis = (window.innerWidth / 2 - e.pageX) / 25; const yAxis = (window.innerHeight / 2 - e.pageY) / 25; modelImage.style.transform = `scale(1.05) translate(${xAxis}px, ${yAxis}px)`; }); imageContainer.addEventListener('mouseleave', () => { modelImage.style.transform = 'scale(1)'; }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Book Launch Flyer</title> <style> @import url('https://fonts.googleapis.com/css2?family=Libre+Baskerville:ital,wght@0,400;0,700;1,400&family=Playfair+Display:ital,wght@0,400;0,700;1,400&family=Lora:ital,wght@0,400;0,700;1,400&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Libre Baskerville', serif; background-color: #f8f5f0; color: #38302e; overflow-x: hidden; display: flex; justify-content: center; align-items: center; min-height: 700px; padding: 20px; } .flyer-container { position: relative; width: 100%; max-width: 650px; height: 660px; margin: 0 auto; background-color: #f2efe6; border-radius: 2px; box-shadow: 0 4px 30px rgba(0, 0, 0, 0.15); overflow: hidden; transform-style: preserve-3d; perspective: 1000px; } .paper-texture { 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='%23d5cfc0' fill-opacity='0.13' fill-rule='evenodd'/%3E%3C/svg%3E"); opacity: 0.6; pointer-events: none; } .ink-splatter { position: absolute; width: 300px; height: 300px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cpath fill='%23614e3d' d='M41.3,-66.2C53.6,-59.6,63.5,-47.8,69.9,-34.4C76.3,-21,79.3,-6,77.3,8.2C75.3,22.3,68.4,35.7,58.6,46.4C48.8,57.1,36.2,65.1,22.7,68.4C9.2,71.8,-5.2,70.4,-18.8,66.4C-32.4,62.4,-45.3,55.7,-55.3,45.3C-65.3,34.9,-72.5,20.8,-73.4,6.2C-74.3,-8.4,-68.8,-23.5,-60.3,-36.6C-51.7,-49.7,-40,-60.8,-27,-66.8C-14,-72.9,0.4,-73.9,13.7,-71.6C27,-69.3,29,-72.7,41.3,-66.2Z' transform='translate(100 100)'/%3E%3C/svg%3E"); background-size: contain; background-repeat: no-repeat; opacity: 0.05; pointer-events: none; } .ink-splatter:nth-child(2) { top: -100px; right: -100px; transform: rotate(120deg); } .ink-splatter:nth-child(3) { bottom: -150px; left: -50px; transform: rotate(45deg) scale(1.5); } .content { position: relative; padding: 35px; height: 100%; display: flex; flex-direction: column; justify-content: space-between; z-index: 1; transition: transform 0.8s ease-in-out; } header { text-align: center; margin-bottom: 20px; } h1 { font-family: 'Playfair Display', serif; font-size: 42px; letter-spacing: -0.5px; margin-bottom: 15px; color: #3a2e2c; text-shadow: 1px 1px 2px rgba(0,0,0,0.05); transition: all 0.5s ease; } h1 span { display: block; font-size: 28px; font-style: italic; color: #9b6e4e; margin-top: 10px; } .author { font-family: 'Lora', serif; font-style: italic; font-size: 18px; color: #6d5c4e; position: relative; display: inline-block; margin-bottom: 10px; } .author::after { content: ""; position: absolute; width: 70%; height: 1px; background: linear-gradient(90deg, transparent, #9b6e4e, transparent); bottom: -5px; left: 15%; } .book-details { display: flex; align-items: center; justify-content: center; margin: 25px 0; } .book-cover { width: 180px; height: 260px; background-color: #614e3d; border-radius: 2px; box-shadow: 5px 5px 15px rgba(0,0,0,0.2), 10px 0 15px -7px rgba(0,0,0,0.25); position: relative; transition: transform 0.5s ease, box-shadow 0.5s ease; overflow: hidden; transform: rotate(-3deg); } .book-cover:hover { transform: rotate(0deg) scale(1.05); box-shadow: 8px 8px 20px rgba(0,0,0,0.25), 15px 0 20px -10px rgba(0,0,0,0.3); } .book-cover::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: linear-gradient(135deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0) 50%); } .book-cover::after { content: ""THE MEMORY KEEPER""; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%) rotate(90deg); color: rgba(255,255,255,0.7); font-family: 'Playfair Display', serif; font-size: 20px; text-align: center; width: 200px; letter-spacing: 2px; } .book-info { padding-left: 25px; max-width: 300px; } .book-description { font-size: 14px; line-height: 1.6; margin-bottom: 15px; color: #4a3c36; position: relative; text-align: justify; } .book-description::first-letter { font-size: 28px; font-family: 'Playfair Display', serif; float: left; line-height: 1; padding-right: 8px; color: #9b6e4e; } .quote { font-style: italic; color: #614e3d; text-align: center; font-size: 16px; margin: 15px auto; max-width: 90%; position: relative; padding: 0 20px; } .quote::before, .quote::after { content: """; font-family: 'Playfair Display', serif; font-size: 42px; position: absolute; color: rgba(155, 110, 78, 0.3); } .quote::before { top: -15px; left: 0; } .quote::after { content: """; bottom: -25px; right: 0; } .event-details { background-color: rgba(155, 110, 78, 0.1); padding: 20px; border-radius: 2px; margin: 20px 0; position: relative; border-left: 3px solid #9b6e4e; } .event-details h2 { font-family: 'Playfair Display', serif; font-size: 22px; margin-bottom: 15px; color: #614e3d; } .event-info { display: flex; flex-wrap: wrap; justify-content: space-between; margin-bottom: 15px; } .event-item { flex-basis: 48%; margin-bottom: 10px; font-size: 15px; } .event-item span { font-weight: bold; display: block; font-size: 14px; margin-bottom: 2px; color: #9b6e4e; } .cta { text-align: center; margin-top: 25px; } .rsvp-btn { background-color: #9b6e4e; color: #fff; border: none; padding: 12px 30px; border-radius: 3px; font-family: 'Libre Baskerville', serif; font-size: 16px; cursor: pointer; transition: all 0.3s ease; position: relative; overflow: hidden; box-shadow: 0 4px 12px rgba(155, 110, 78, 0.3); } .rsvp-btn::before { content: ""; position: absolute; left: -100%; top: 0; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); transition: 0.5s; } .rsvp-btn:hover { background-color: #7d5837; transform: translateY(-2px); box-shadow: 0 7px 15px rgba(155, 110, 78, 0.4); } .rsvp-btn:hover::before { left: 100%; } .rsvp-btn:active { transform: translateY(1px); } .additional-info { text-align: center; font-size: 14px; color: #6d5c4e; margin-top: 15px; } footer { text-align: center; font-size: 12px; color: #947c6a; margin-top: 20px; } .page-separator { display: flex; align-items: center; justify-content: center; margin: 10px 0; } .separator-line { flex-grow: 1; height: 1px; background: linear-gradient(90deg, transparent, #d5cfc0, transparent); } .separator-icon { margin: 0 15px; color: #9b6e4e; font-size: 12px; } .book-icon { width: 20px; height: 20px; } .success-message { position: fixed; top: 0; left: 0; width: 100%; background-color: rgba(155, 110, 78, 0.9); color: white; padding: 15px; text-align: center; transform: translateY(-100%); transition: transform 0.4s ease; } .success-message.show { transform: translateY(0); } .form-popup { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: #f2efe6; display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 40px; transform: translateY(100%); transition: transform 0.6s cubic-bezier(0.23, 1, 0.32, 1); z-index: 10; } .form-popup.show { transform: translateY(0); } .form-close { position: absolute; top: 20px; right: 20px; background: none; border: none; font-size: 20px; color: #614e3d; cursor: pointer; transition: transform 0.3s ease; } .form-close:hover { transform: rotate(90deg); } .form-title { font-family: 'Playfair Display', serif; font-size: 28px; margin-bottom: 25px; color: #3a2e2c; text-align: center; } .rsvp-form { width: 100%; max-width: 400px; } .form-group { margin-bottom: 20px; } .form-label { display: block; margin-bottom: 5px; font-size: 14px; color: #614e3d; } .form-input { width: 100%; padding: 10px; border: 1px solid #d5cfc0; border-radius: 3px; font-family: 'Libre Baskerville', serif; font-size: 14px; background-color: rgba(255, 255, 255, 0.7); transition: border-color 0.3s ease, box-shadow 0.3s ease; } .form-input:focus { outline: none; border-color: #9b6e4e; box-shadow: 0 0 0 2px rgba(155, 110, 78, 0.2); } .submit-btn { background-color: #614e3d; color: white; border: none; width: 100%; padding: 12px; border-radius: 3px; font-family: 'Libre Baskerville', serif; cursor: pointer; transition: background-color 0.3s ease; margin-top: 10px; } .submit-btn:hover { background-color: #4a3c36; } @media (max-width: 600px) { .flyer-container { height: auto; min-height: 660px; } .content { padding: 25px; } h1 { font-size: 32px; } h1 span { font-size: 22px; } .book-details { flex-direction: column; } .book-cover { margin-bottom: 20px; } .book-info { padding-left: 0; text-align: center; } .event-item { flex-basis: 100%; } } /* Page turn effect */ .page-corner { position: absolute; right: 0; bottom: 0; width: 0; height: 0; border-style: solid; border-width: 0 0 50px 50px; border-color: transparent transparent #e5e0d5 transparent; box-shadow: -2px -2px 5px rgba(0,0,0,0.1); cursor: pointer; transition: all 0.3s ease; z-index: 5; } .page-corner:hover { border-width: 0 0 70px 70px; } .page-corner::after { content: ""; position: absolute; left: -15px; bottom: 10px; width: 30px; height: 30px; transform: rotate(45deg); background: linear-gradient(135deg, transparent, transparent 50%, rgba(155, 110, 78, 0.1) 50%, rgba(155, 110, 78, 0.1)); } </style> </head> <body> <div class="flyer-container"> <div class="paper-texture"></div> <div class="ink-splatter"></div> <div class="ink-splatter"></div> <div class="ink-splatter"></div> <div class="content"> <header> <h1>BOOK LAUNCH <span>The Memory Keeper</span></h1> <div class="author">by Eleanor Westbrook</div> </header> <div class="book-details"> <div class="book-cover"></div> <div class="book-info"> <p class="book-description">A haunting tale of family secrets and inherited memories. When archivist Amelia Hayes discovers a mysterious diary in her grandmother's attic, she unravels a forgotten history that will change everything she thought she knew about her origins.</p> </div> </div> <div class="quote"> "Some memories are too dangerous to forget, and others too painful to remember." </div> <div class="page-separator"> <div class="separator-line"></div> <div class="separator-icon"> <svg class="book-icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12 7.75V16.25M8.75 20.25H16.25C17.3546 20.25 18.25 19.3546 18.25 18.25V5.75C18.25 4.64543 17.3546 3.75 16.25 3.75H8.75C7.64543 3.75 6.75 4.64543 6.75 5.75V18.25C6.75 19.3546 7.64543 20.25 8.75 20.25Z" stroke="#9b6e4e" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="separator-line"></div> </div> <div class="event-details"> <h2>Join Us for an Evening of Literary Charm</h2> <div class="event-info"> <div class="event-item"> <span>Date</span> October 17, 2023 </div> <div class="event-item"> <span>Time</span> 7:00 PM - 9:30 PM </div> <div class="event-item"> <span>Location</span> Hawthorne Bookshop </div> <div class="event-item"> <span>Address</span> 421 Maple Avenue, Brookfield </div> </div> <div class="additional-info">Featuring reading, signing, and wine reception</div> </div> <div class="cta"> <button class="rsvp-btn" id="rsvp-button">RESERVE YOUR SPOT</button> <p class="additional-info">Limited seating. First editions available for purchase.</p> </div> <footer> For inquiries: [email protected] | 555-123-4567 </footer> </div> <div class="form-popup" id="form-popup"> <button class="form-close" id="form-close">×</button> <h2 class="form-title">Reserve Your Spot</h2> <form class="rsvp-form" id="rsvp-form"> <div class="form-group"> <label class="form-label" for="name">Full Name</label> <input type="text" id="name" class="form-input" required> </div> <div class="form-group"> <label class="form-label" for="email">Email</label> <input type="email" id="email" class="form-input" required> </div> <div class="form-group"> <label class="form-label" for="guests">Number of Guests</label> <input type="number" id="guests" class="form-input" min="1" max="5" value="1"> </div> <button type="submit" class="submit-btn">Confirm Reservation</button> </form> </div> <div class="page-corner" id="page-corner"></div> <div class="success-message" id="success-message">Thank you! Your spot has been reserved.</div> </div> <script> document.addEventListener('DOMContentLoaded', function() { const rsvpButton = document.getElementById('rsvp-button'); const formPopup = document.getElementById('form-popup'); const formClose = document.getElementById('form-close'); const rsvpForm = document.getElementById('rsvp-form'); const successMessage = document.getElementById('success-message'); const pageCorner = document.getElementById('page-corner'); const content = document.querySelector('.content'); // RSVP button functionality rsvpButton.addEventListener('click', function() { formPopup.classList.add('show'); }); // Close form button formClose.addEventListener('click', function() { formPopup.classList.remove('show'); }); // Form submission rsvpForm.addEventListener('submit', function(e) { e.preventDefault(); formPopup.classList.remove('show'); successMessage.classList.add('show'); setTimeout(function() { successMessage.classList.remove('show'); }, 3000); // Reset form rsvpForm.reset(); }); // Page corner effect let isFlipped = false; pageCorner.addEventListener('click', function() { if (!isFlipped) { content.style.transform = 'rotateY(-15deg)'; isFlipped = true; } else { content.style.transform = 'rotateY(0)'; isFlipped = false; } }); // Animate in elements on load setTimeout(() => { document.querySelector('h1').style.opacity = "1"; }, 300); // Book hover animation const bookCover = document.querySelector('.book-cover'); bookCover.addEventListener('mousemove', function(e) { const bounds = this.getBoundingClientRect(); const mouseX = e.clientX - bounds.left; const mouseY = e.clientY - bounds.top; const rotateY = ((mouseX / bounds.width) - 0.5) * 15; const rotateX = ((mouseY / bounds.height) - 0.5) * -15; this.style.transform = `perspective(800px) rotateY(${rotateY}deg) rotateX(${rotateX}deg) scale(1.05)`; }); bookCover.addEventListener('mouseleave', function() { this.style.transform = 'rotate(-3deg)'; }); }); </script> </body> </html>