Back to tips

10 CSS Banner Examples

Discover 10 stunning CSS banner examples to inspire your next web design project. Perfect for creating eye-catching and responsive designs.

Creating an eye-catching banner is essential for capturing your audience's attention. In this article, we will explore 10 stunning banner examples that showcase effective design principles.

From vibrant colors to compelling typography, these examples will inspire you to elevate your own banner designs. Let's dive in and see what makes these banners stand out.

10 Banner Examples

1) Dynamic Summer Sale Banner

Here's the code:

<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Urban Threads E-commerce Banner</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Poppins', sans-serif;
        }
        
        @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600;800&display=swap');
        
        body {
            overflow: hidden;
            background-color: #f8f9fa;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 700px;
            width: 700px;
        }
        
        .banner-container {
            width: 100%;
            height: 100%;
            position: relative;
            overflow: hidden;
            background: linear-gradient(135deg, #2c3e50 0%, #4a569d 100%);
            border-radius: 12px;
            box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
        }
        
        .pattern-overlay {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-image: radial-gradient(circle at 30% 50%, rgba(255, 255, 255, 0.08) 0%, rgba(255, 255, 255, 0.03) 20%, transparent 60%);
            z-index: 1;
        }
        
        .diagonal-stripes {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: repeating-linear-gradient(
                -45deg,
                rgba(255, 255, 255, 0.03),
                rgba(255, 255, 255, 0.03) 10px,
                transparent 10px,
                transparent 20px
            );
            z-index: 1;
        }
        
        .content-wrapper {
            position: relative;
            z-index: 2;
            padding: 2rem;
            display: flex;
            flex-direction: column;
            height: 100%;
            color: white;
        }
        
        .badge {
            background-color: #ff6b6b;
            color: white;
            font-size: 0.9rem;
            font-weight: 600;
            padding: 0.5rem 1rem;
            border-radius: 50px;
            display: inline-block;
            margin-bottom: 1rem;
            transform: translateY(-20px);
            opacity: 0;
            animation: fadeInUp 0.5s ease-out forwards 0.3s;
            align-self: flex-start;
            box-shadow: 0 5px 15px rgba(255, 107, 107, 0.3);
        }
        
        .headline {
            font-size: 3.2rem;
            font-weight: 800;
            line-height: 1.1;
            margin-bottom: 1rem;
            transform: translateY(-20px);
            opacity: 0;
            animation: fadeInUp 0.5s ease-out forwards 0.5s;
            text-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
        }
        
        .headline span {
            background: linear-gradient(90deg, #ff6b6b, #feca57);
            -webkit-background-clip: text;
            background-clip: text;
            color: transparent;
            display: inline-block;
        }
        
        .description {
            font-size: 1.2rem;
            font-weight: 300;
            margin-bottom: 2rem;
            line-height: 1.5;
            max-width: 85%;
            transform: translateY(-20px);
            opacity: 0;
            animation: fadeInUp 0.5s ease-out forwards 0.7s;
        }
        
        .cta-container {
            display: flex;
            gap: 1rem;
            transform: translateY(-20px);
            opacity: 0;
            animation: fadeInUp 0.5s ease-out forwards 0.9s;
            margin-top: auto;
        }
        
        .cta-primary {
            padding: 1rem 2.2rem;
            background: linear-gradient(90deg, #ff6b6b, #ff8e8e);
            border: none;
            border-radius: 50px;
            color: white;
            font-weight: 600;
            font-size: 1rem;
            cursor: pointer;
            transition: all 0.3s ease;
            box-shadow: 0 10px 20px rgba(255, 107, 107, 0.2);
            position: relative;
            overflow: hidden;
        }
        
        .cta-primary:hover {
            transform: translateY(-2px);
            box-shadow: 0 15px 25px rgba(255, 107, 107, 0.3);
        }
        
        .cta-primary::after {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            width: 0;
            height: 100%;
            background-color: rgba(255, 255, 255, 0.2);
            transition: width 0.3s ease;
        }
        
        .cta-primary:hover::after {
            width: 100%;
        }
        
        .cta-secondary {
            padding: 1rem 2.2rem;
            background: transparent;
            border: 1px solid rgba(255, 255, 255, 0.5);
            border-radius: 50px;
            color: white;
            font-weight: 600;
            font-size: 1rem;
            cursor: pointer;
            transition: all 0.3s ease;
        }
        
        .cta-secondary:hover {
            background-color: rgba(255, 255, 255, 0.1);
            transform: translateY(-2px);
        }
        
        .floating-elements {
            position: absolute;
            top: 0;
            right: 0;
            width: 300px;
            height: 300px;
            z-index: 1;
        }
        
        .floating-circle {
            position: absolute;
            border-radius: 50%;
            opacity: 0.15;
        }
        
        .circle-1 {
            width: 150px;
            height: 150px;
            background-color: #ff6b6b;
            top: 20%;
            right: -30px;
            animation: float 12s ease-in-out infinite;
        }
        
        .circle-2 {
            width: 80px;
            height: 80px;
            background-color: #feca57;
            top: 50%;
            right: 20%;
            animation: float 8s ease-in-out infinite 1s;
        }
        
        .circle-3 {
            width: 120px;
            height: 120px;
            background-color: #48dbfb;
            top: 10%;
            right: 30%;
            animation: float 10s ease-in-out infinite 2s;
        }
        
        .timer-container {
            display: flex;
            gap: 0.8rem;
            margin-top: 1rem;
            margin-bottom: 1.5rem;
            opacity: 0;
            transform: translateY(-20px);
            animation: fadeInUp 0.5s ease-out forwards 0.8s;
        }
        
        .timer-box {
            background-color: rgba(0, 0, 0, 0.2);
            padding: 0.6rem 0.8rem;
            border-radius: 8px;
            text-align: center;
            min-width: 60px;
            backdrop-filter: blur(10px);
            border: 1px solid rgba(255, 255, 255, 0.1);
        }
        
        .timer-number {
            font-size: 1.8rem;
            font-weight: 700;
            color: white;
        }
        
        .timer-label {
            font-size: 0.7rem;
            color: rgba(255, 255, 255, 0.7);
            text-transform: uppercase;
            letter-spacing: 1px;
        }
        
        .timer-separator {
            font-size: 1.8rem;
            font-weight: 700;
            color: white;
            display: flex;
            align-items: center;
            padding-bottom: 1.3rem;
        }
        
        @keyframes fadeInUp {
            from {
                opacity: 0;
                transform: translateY(20px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }
        
        @keyframes float {
            0% {
                transform: translateY(0) rotate(0deg);
            }
            50% {
                transform: translateY(-20px) rotate(5deg);
            }
            100% {
                transform: translateY(0) rotate(0deg);
            }
        }
        
        @keyframes pulse {
            0% {
                transform: scale(1);
            }
            50% {
                transform: scale(1.05);
            }
            100% {
                transform: scale(1);
            }
        }
        
        @media (max-width: 700px) {
            .headline {
                font-size: 2.5rem;
            }
            
            .description {
                font-size: 1rem;
                max-width: 100%;
            }
            
            .cta-container {
                flex-wrap: wrap;
            }
            
            .timer-container {
                transform: scale(0.9);
                transform-origin: left;
            }
            
            .floating-elements {
                width: 200px;
                height: 200px;
            }
            
            .circle-1 {
                width: 100px;
                height: 100px;
            }
            
            .circle-2 {
                width: 60px;
                height: 60px;
            }
            
            .circle-3 {
                width: 80px;
                height: 80px;
            }
        }
        
        @media (max-width: 500px) {
            .content-wrapper {
                padding: 1.5rem;
            }
            
            .headline {
                font-size: 2rem;
            }
            
            .description {
                margin-bottom: 1.5rem;
            }
            
            .cta-primary, .cta-secondary {
                padding: 0.8rem 1.5rem;
                font-size: 0.9rem;
                width: 100%;
            }
            
            .cta-container {
                flex-direction: column;
            }
            
            .timer-container {
                transform: scale(0.8);
                transform-origin: left;
            }
        }
    </style>
</head>
<body>
    <div class="banner-container">
        <div class="pattern-overlay"></div>
        <div class="diagonal-stripes"></div>
        
        <div class="floating-elements">
            <div class="floating-circle circle-1"></div>
            <div class="floating-circle circle-2"></div>
            <div class="floating-circle circle-3"></div>
        </div>
        
        <div class="content-wrapper">
            <div class="badge">SUMMER FLASH SALE</div>
            
            <h1 class="headline">Upgrade Your <span>Summer Style</span> For Less</h1>
            
            <p class="description">Discover curated fashion pieces at 30-70% off. New arrivals daily, free shipping on orders over $50.</p>
            
            <div class="timer-container">
                <div class="timer-box">
                    <div class="timer-number" id="days">02</div>
                    <div class="timer-label">Days</div>
                </div>
                <div class="timer-separator">:</div>
                <div class="timer-box">
                    <div class="timer-number" id="hours">18</div>
                    <div class="timer-label">Hours</div>
                </div>
                <div class="timer-separator">:</div>
                <div class="timer-box">
                    <div class="timer-number" id="minutes">45</div>
                    <div class="timer-label">Mins</div>
                </div>
                <div class="timer-separator">:</div>
                <div class="timer-box">
                    <div class="timer-number" id="seconds">33</div>
                    <div class="timer-label">Secs</div>
                </div>
            </div>
            
            <div class="cta-container">
                <button class="cta-primary" id="shopNowBtn">Shop The Sale</button>
                <button class="cta-secondary" id="exploreBtn">View Lookbook</button>
            </div>
        </div>
    </div>
    
    <script>
        // Countdown Timer
        function updateCountdown() {
            // This is just a demo countdown - no actual end date
            let seconds = parseInt(document.getElementById('seconds').textContent);
            let minutes = parseInt(document.getElementById('minutes').textContent);
            let hours = parseInt(document.getElementById('hours').textContent);
            let days = parseInt(document.getElementById('days').textContent);
            
            seconds--;
            
            if (seconds < 0) {
                seconds = 59;
                minutes--;
                
                if (minutes < 0) {
                    minutes = 59;
                    hours--;
                    
                    if (hours < 0) {
                        hours = 23;
                        days--;
                        
                        if (days < 0) {
                            // Reset the countdown for the demo
                            days = 2;
                            hours = 18;
                            minutes = 45;
                            seconds = 33;
                        }
                    }
                }
            }
            
            document.getElementById('seconds').textContent = seconds.toString().padStart(2, '0');
            document.getElementById('minutes').textContent = minutes.toString().padStart(2, '0');
            document.getElementById('hours').textContent = hours.toString().padStart(2, '0');
            document.getElementById('days').textContent = days.toString().padStart(2, '0');
        }
        
        setInterval(updateCountdown, 1000);
        
        // Hover effects and animations
        document.getElementById('shopNowBtn').addEventListener('mouseenter', function() {
            this.style.animation = 'pulse 0.5s ease-in-out infinite';
        });
        
        document.getElementById('shopNowBtn').addEventListener('mouseleave', function() {
            this.style.animation = '';
        });
        
        // Click handlers that don't redirect (for embed)
        document.getElementById('shopNowBtn').addEventListener('click', function(e) {
            e.preventDefault();
            
            // Visual feedback instead of redirect
            this.textContent = "Added to Cart!";
            
            setTimeout(() => {
                this.textContent = "Shop The Sale";
            }, 1500);
        });
        
        document.getElementById('exploreBtn').addEventListener('click', function(e) {
            e.preventDefault();
            
            // Visual feedback
            this.style.backgroundColor = "rgba(255, 255, 255, 0.2)";
            
            setTimeout(() => {
                this.style.backgroundColor = "transparent";
            }, 300);
        });
        
        // Add some dynamic motion to the background
        document.addEventListener('mousemove', function(e) {
            const xPos = e.clientX / window.innerWidth;
            const yPos = e.clientY / window.innerHeight;
            
            // Subtle parallax effect on circles
            const circles = document.querySelectorAll('.floating-circle');
            circles.forEach((circle, index) => {
                const factor = (index + 1) * 5;
                circle.style.transform = `translate(${xPos * factor}px, ${yPos * factor}px) rotate(${xPos * 5}deg)`;
            });
        });
    </script>
</body>
</html>

2) Vibrant AI Summit Banner

Here's the code:

<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AI Summit 2024 - Event Banner</title>
    <style>
        :root {
            --primary: #3a0ca3;
            --secondary: #4361ee;
            --accent: #f72585;
            --light: #f8f9fa;
            --dark: #1a1b25;
            --success: #4cc9f0;
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Inter', sans-serif;
        }

        body {
            background-color: var(--light);
            height: 100%;
            display: flex;
            justify-content: center;
            align-items: center;
            overflow: hidden;
        }

        .banner-container {
            width: 700px;
            height: 700px;
            position: relative;
            display: flex;
            flex-direction: column;
            justify-content: space-between;
            padding: 2rem;
            background: linear-gradient(135deg, var(--dark), var(--primary));
            border-radius: 20px;
            box-shadow: 0 15px 35px rgba(0, 0, 0, 0.2);
            overflow: hidden;
        }

        .banner-container::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><circle cx="50" cy="50" r="40" fill="none" stroke="rgba(255,255,255,0.05)" stroke-width="1"/></svg>');
            background-size: 150px;
            opacity: 0.6;
            pointer-events: none;
        }

        .particles {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            overflow: hidden;
            z-index: 0;
        }

        .particle {
            position: absolute;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.15);
            animation: float 10s infinite linear;
        }

        @keyframes float {
            0% {
                transform: translateY(0) rotate(0deg);
                opacity: 1;
            }
            100% {
                transform: translateY(-800px) rotate(360deg);
                opacity: 0;
            }
        }

        .header {
            position: relative;
            z-index: 1;
        }

        .tag {
            display: inline-block;
            padding: 0.4rem 1rem;
            background-color: var(--accent);
            color: white;
            font-weight: 600;
            font-size: 0.9rem;
            border-radius: 30px;
            margin-bottom: 1rem;
            box-shadow: 0 5px 15px rgba(247, 37, 133, 0.3);
            transform: translateY(0);
            transition: all 0.3s ease;
        }

        .tag:hover {
            transform: translateY(-3px);
            box-shadow: 0 8px 20px rgba(247, 37, 133, 0.4);
        }

        h1 {
            font-size: 2.8rem;
            color: white;
            margin-bottom: 1rem;
            line-height: 1.2;
            text-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
        }

        .highlight {
            color: var(--success);
            position: relative;
            display: inline-block;
        }

        .highlight::after {
            content: '';
            position: absolute;
            bottom: 0;
            left: 0;
            width: 100%;
            height: 8px;
            background: rgba(76, 201, 240, 0.3);
            z-index: -1;
            border-radius: 4px;
        }

        .description {
            color: rgba(255, 255, 255, 0.85);
            font-size: 1.1rem;
            line-height: 1.6;
            margin-bottom: 2rem;
            max-width: 90%;
        }

        .content {
            position: relative;
            z-index: 1;
            flex: 1;
            display: flex;
            flex-direction: column;
            justify-content: center;
        }

        .features {
            display: flex;
            gap: 1.5rem;
            margin-bottom: 2rem;
        }

        .feature {
            display: flex;
            align-items: center;
            gap: 0.5rem;
            color: white;
            font-size: 1rem;
        }

        .feature i {
            color: var(--success);
            font-size: 1.2rem;
        }

        .countdown {
            display: flex;
            gap: 1rem;
            margin-bottom: 2rem;
        }

        .countdown-item {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            width: 70px;
            height: 70px;
            background: rgba(255, 255, 255, 0.1);
            border-radius: 12px;
            backdrop-filter: blur(10px);
            border: 1px solid rgba(255, 255, 255, 0.2);
            transition: all 0.3s ease;
        }

        .countdown-item:hover {
            transform: translateY(-5px);
            background: rgba(255, 255, 255, 0.15);
            box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
        }

        .countdown-number {
            font-size: 1.8rem;
            font-weight: 700;
            color: white;
        }

        .countdown-label {
            font-size: 0.8rem;
            color: rgba(255, 255, 255, 0.7);
            text-transform: uppercase;
            letter-spacing: 1px;
        }

        .footer {
            position: relative;
            z-index: 1;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }

        .cta {
            position: relative;
            overflow: hidden;
            display: inline-block;
            padding: 1rem 2.5rem;
            background: var(--accent);
            color: white;
            font-weight: 600;
            font-size: 1.1rem;
            border: none;
            border-radius: 50px;
            cursor: pointer;
            transition: all 0.3s ease;
            box-shadow: 0 10px 20px rgba(247, 37, 133, 0.3);
        }

        .cta::before {
            content: '';
            position: absolute;
            top: 0;
            left: -100%;
            width: 100%;
            height: 100%;
            background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
            transition: 0.5s;
        }

        .cta:hover {
            transform: translateY(-5px);
            box-shadow: 0 15px 25px rgba(247, 37, 133, 0.4);
        }

        .cta:hover::before {
            left: 100%;
        }

        .register-info {
            color: rgba(255, 255, 255, 0.7);
            font-size: 0.9rem;
            max-width: 180px;
        }

        .icon-pulse {
            display: inline-block;
            width: 8px;
            height: 8px;
            background-color: var(--success);
            border-radius: 50%;
            margin-right: 8px;
            animation: pulse 2s infinite;
        }

        @keyframes pulse {
            0% {
                transform: scale(0.95);
                box-shadow: 0 0 0 0 rgba(76, 201, 240, 0.7);
            }
            70% {
                transform: scale(1);
                box-shadow: 0 0 0 10px rgba(76, 201, 240, 0);
            }
            100% {
                transform: scale(0.95);
                box-shadow: 0 0 0 0 rgba(76, 201, 240, 0);
            }
        }

        .live-indicator {
            display: flex;
            align-items: center;
            gap: 0.5rem;
            color: white;
            font-weight: 600;
            font-size: 0.9rem;
            margin-bottom: 1rem;
        }

        .speakers {
            display: flex;
            margin-bottom: 1.5rem;
        }

        .speaker {
            width: 45px;
            height: 45px;
            border-radius: 50%;
            border: 2px solid white;
            object-fit: cover;
            margin-right: -15px;
            transition: all 0.3s ease;
        }

        .speaker:hover {
            transform: scale(1.1) translateY(-5px);
            box-shadow: 0 10px 20px rgba(0, 0, 0, 0.15);
            z-index: 2;
        }

        .speaker-count {
            display: flex;
            align-items: center;
            justify-content: center;
            width: 45px;
            height: 45px;
            border-radius: 50%;
            background: var(--secondary);
            color: white;
            font-weight: 600;
            font-size: 0.9rem;
            border: 2px solid white;
        }

        @media (max-width: 600px) {
            .banner-container {
                padding: 1.5rem;
                height: auto;
            }

            h1 {
                font-size: 2.2rem;
            }

            .description {
                font-size: 1rem;
            }

            .countdown {
                gap: 0.5rem;
            }

            .countdown-item {
                width: 60px;
                height: 60px;
            }

            .footer {
                flex-direction: column;
                gap: 1.5rem;
                align-items: flex-start;
            }

            .register-info {
                max-width: 100%;
            }
        }

        .modalDialog {
            position: fixed;
            top: 0;
            right: 0;
            bottom: 0;
            left: 0;
            background: rgba(0, 0, 0, 0.8);
            z-index: 9999;
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.3s;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .modalDialog:target {
            opacity: 1;
            pointer-events: auto;
        }

        .modalDialog > div {
            width: 80%;
            max-width: 500px;
            position: relative;
            padding: 2rem;
            background: linear-gradient(135deg, var(--dark), var(--primary));
            border-radius: 20px;
            box-shadow: 0 15px 35px rgba(0, 0, 0, 0.2);
            color: white;
        }

        .close {
            position: absolute;
            top: 1rem;
            right: 1rem;
            color: white;
            text-decoration: none;
            font-size: 1.5rem;
            transition: all 0.3s ease;
        }

        .close:hover {
            transform: rotate(90deg);
        }

        .form-group {
            margin-bottom: 1.5rem;
        }

        label {
            display: block;
            margin-bottom: 0.5rem;
            font-weight: 600;
        }

        input, select {
            width: 100%;
            padding: 0.8rem;
            border-radius: 8px;
            border: 1px solid rgba(255, 255, 255, 0.2);
            background: rgba(255, 255, 255, 0.1);
            color: white;
            font-size: 1rem;
        }

        input:focus, select:focus {
            outline: none;
            border-color: var(--success);
            background: rgba(255, 255, 255, 0.15);
        }

        .submit-btn {
            width: 100%;
            padding: 1rem;
            background: var(--accent);
            color: white;
            font-weight: 600;
            font-size: 1.1rem;
            border: none;
            border-radius: 8px;
            cursor: pointer;
            transition: all 0.3s ease;
        }

        .submit-btn:hover {
            background: #e4167a;
        }

        ::placeholder {
            color: rgba(255, 255, 255, 0.5);
        }
    </style>
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
</head>
<body>
    <div class="banner-container">
        <div class="particles" id="particles"></div>
        
        <div class="header">
            <div class="tag">Limited Spots Available</div>
            <h1>AI Summit 2024: <span class="highlight">Beyond Boundaries</span></h1>
            <p class="description">Join the world's leading AI innovators for a 3-day virtual conference exploring groundbreaking advancements in machine learning, neural networks, and ethical AI implementation.</p>
        </div>
        
        <div class="content">
            <div class="live-indicator">
                <div class="icon-pulse"></div>
                Registration now open
            </div>
            
            <div class="speakers">
                <img src="https://randomuser.me/api/portraits/women/44.jpg" alt="Speaker" class="speaker">
                <img src="https://randomuser.me/api/portraits/men/32.jpg" alt="Speaker" class="speaker">
                <img src="https://randomuser.me/api/portraits/women/68.jpg" alt="Speaker" class="speaker">
                <img src="https://randomuser.me/api/portraits/men/75.jpg" alt="Speaker" class="speaker">
                <div class="speaker-count">+12</div>
            </div>
            
            <div class="features">
                <div class="feature">
                    <i class="fas fa-video"></i>
                    <span>Live Sessions</span>
                </div>
                <div class="feature">
                    <i class="fas fa-comments"></i>
                    <span>Interactive Q&A</span>
                </div>
                <div class="feature">
                    <i class="fas fa-file-alt"></i>
                    <span>Resources</span>
                </div>
            </div>
            
            <div class="countdown" id="countdown">
                <div class="countdown-item">
                    <div class="countdown-number" id="days">00</div>
                    <div class="countdown-label">Days</div>
                </div>
                <div class="countdown-item">
                    <div class="countdown-number" id="hours">00</div>
                    <div class="countdown-label">Hours</div>
                </div>
                <div class="countdown-item">
                    <div class="countdown-number" id="minutes">00</div>
                    <div class="countdown-label">Minutes</div>
                </div>
                <div class="countdown-item">
                    <div class="countdown-number" id="seconds">00</div>
                    <div class="countdown-label">Seconds</div>
                </div>
            </div>
        </div>
        
        <div class="footer">
            <a href="#openModal" class="cta">Register Now</a>
            <div class="register-info">
                Early bird pricing ends in 7 days. Secure your spot today!
            </div>
        </div>
    </div>
    
    <div id="openModal" class="modalDialog">
        <div>
            <a href="#close" title="Close" class="close">×</a>
            <h2 style="margin-bottom: 1.5rem;">Register for AI Summit 2024</h2>
            <div class="form-group">
                <label for="name">Full Name</label>
                <input type="text" id="name" placeholder="Enter your full name">
            </div>
            <div class="form-group">
                <label for="email">Email Address</label>
                <input type="email" id="email" placeholder="Enter your email">
            </div>
            <div class="form-group">
                <label for="role">Your Role</label>
                <select id="role">
                    <option value="" disabled selected>Select your role</option>
                    <option value="developer">AI Developer</option>
                    <option value="researcher">Researcher</option>
                    <option value="executive">Executive</option>
                    <option value="student">Student</option>
                    <option value="other">Other</option>
                </select>
            </div>
            <button class="submit-btn" id="submitRegistration">Secure My Spot</button>
            <p style="margin-top: 1rem; font-size: 0.9rem; color: rgba(255,255,255,0.7);">By registering, you'll receive exclusive access to pre-event materials and networking opportunities.</p>
        </div>
    </div>

    <script>
        // Generate animated background particles
        const particlesContainer = document.getElementById('particles');
        const particleCount = 15;
        
        for (let i = 0; i < particleCount; i++) {
            const particle = document.createElement('div');
            particle.classList.add('particle');
            
            // Random sizing and positioning
            const size = Math.random() * 50 + 10;
            const posX = Math.random() * 100;
            const posY = Math.random() * 100;
            const delay = Math.random() * 10;
            const duration = Math.random() * 10 + 10;
            
            particle.style.width = `${size}px`;
            particle.style.height = `${size}px`;
            particle.style.left = `${posX}%`;
            particle.style.top = `${posY}%`;
            particle.style.animationDelay = `${delay}s`;
            particle.style.animationDuration = `${duration}s`;
            
            particlesContainer.appendChild(particle);
        }
        
        // Countdown Timer
        const countdownDate = new Date();
        countdownDate.setDate(countdownDate.getDate() + 30); // 30 days from now
        
        function updateCountdown() {
            const now = new Date().getTime();
            const distance = countdownDate - now;
            
            const days = Math.floor(distance / (1000 * 60 * 60 * 24));
            const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
            const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
            const seconds = Math.floor((distance % (1000 * 60)) / 1000);
            
            document.getElementById('days').innerText = days.toString().padStart(2, '0');
            document.getElementById('hours').innerText = hours.toString().padStart(2, '0');
            document.getElementById('minutes').innerText = minutes.toString().padStart(2, '0');
            document.getElementById('seconds').innerText = seconds.toString().padStart(2, '0');
            
            if (distance < 0) {
                clearInterval(countdownInterval);
                document.getElementById('days').innerText = '00';
                document.getElementById('hours').innerText = '00';
                document.getElementById('minutes').innerText = '00';
                document.getElementById('seconds').innerText = '00';
            }
        }
        
        updateCountdown();
        const countdownInterval = setInterval(updateCountdown, 1000);
        
        // Form submission handling (preventing actual submission)
        document.getElementById('submitRegistration').addEventListener('click', function(e) {
            e.preventDefault();
            
            const name = document.getElementById('name').value.trim();
            const email = document.getElementById('email').value.trim();
            const role = document.getElementById('role').value;
            
            // Simple validation
            if (!name || !email || !role) {
                // Highlight empty fields with a subtle animation
                if (!name) shake(document.getElementById('name'));
                if (!email) shake(document.getElementById('email'));
                if (!role) shake(document.getElementById('role'));
                return;
            }
            
            // Show success message instead of submitting
            const modalContent = document.querySelector('.modalDialog > div');
            modalContent.innerHTML = `
                <a href="#close" title="Close" class="close">×</a>
                <div style="text-align: center; padding: 2rem 1rem;">
                    <i class="fas fa-check-circle" style="font-size: 4rem; color: #4cc9f0; margin-bottom: 1.5rem;"></i>
                    <h2 style="margin-bottom: 1rem;">Registration Successful!</h2>
                    <p style="margin-bottom: 2rem;">Thank you, ${name}! We've sent a confirmation email to ${email}. You're officially registered for AI Summit 2024.</p>
                    <a href="#close" class="cta" style="text-decoration: none;">Close</a>
                </div>
            `;
        });
        
        // Shake animation for invalid form fields
        function shake(element) {
            element.style.border = '1px solid #f72585';
            element.animate([
                { transform: 'translateX(0)' },
                { transform: 'translateX(-10px)' },
                { transform: 'translateX(10px)' },
                { transform: 'translateX(-10px)' },
                { transform: 'translateX(10px)' },
                { transform: 'translateX(0)' }
            ], {
                duration: 500,
                easing: 'ease-in-out'
            });
            
            setTimeout(() => {
                if (element.value.trim() === '') {
                    element.style.border = '1px solid #f72585';
                } else {
                    element.style.border = '1px solid rgba(255, 255, 255, 0.2)';
                }
            }, 500);
        }
        
        // Form input validation styling
        const formInputs = document.querySelectorAll('input, select');
        formInputs.forEach(input => {
            input.addEventListener('input', function() {
                if (this.value.trim() !== '') {
                    this.style.border = '1px solid rgba(255, 255, 255, 0.2)';
                }
            });
        });
    </script>
</body>
</html>

3) Parallax Portfolio Showcase

Here's the code:

<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Portfolio Showcase</title>
    <style>
        @import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@300;400;500;600&family=Montserrat:wght@300;400;500&display=swap');

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: 'Montserrat', sans-serif;
            color: #333;
            height: 100%;
            width: 100%;
            overflow: hidden;
        }

        .portfolio-banner {
            position: relative;
            width: 100%;
            height: 100vh;
            max-height: 700px;
            max-width: 700px;
            margin: 0 auto;
            overflow: hidden;
        }

        .parallax-bg {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 120%;
            background-image: url('https://images.unsplash.com/photo-1534531173927-aeb928d54385?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1500&q=80');
            background-size: cover;
            background-position: center;
            transform: translateY(0);
            transition: transform 0.3s ease-out;
            z-index: 0;
        }

        .content-wrapper {
            position: relative;
            height: 100%;
            width: 100%;
            display: flex;
            flex-direction: column;
            justify-content: space-between;
            padding: 2.5rem;
            background: rgba(255, 255, 255, 0.1);
            backdrop-filter: blur(5px);
            z-index: 1;
        }

        .header {
            display: flex;
            justify-content: space-between;
            align-items: center;
        }

        .logo {
            font-family: 'Cormorant Garamond', serif;
            font-weight: 500;
            font-size: 1.5rem;
            letter-spacing: 1px;
            color: #fff;
            text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);
        }

        .nav {
            display: flex;
            gap: 1.5rem;
        }

        .nav-item {
            font-size: 0.85rem;
            color: #fff;
            cursor: pointer;
            text-transform: uppercase;
            letter-spacing: 1px;
            position: relative;
            text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);
        }

        .nav-item::after {
            content: '';
            position: absolute;
            width: 0;
            height: 1px;
            bottom: -4px;
            left: 0;
            background-color: #fff;
            transition: width 0.3s ease;
        }

        .nav-item:hover::after {
            width: 100%;
        }

        .center-content {
            text-align: center;
            max-width: 70%;
            margin: 0 auto;
        }

        .title {
            font-family: 'Cormorant Garamond', serif;
            font-weight: 300;
            font-size: 3.5rem;
            line-height: 1.1;
            margin-bottom: 1rem;
            color: #fff;
            letter-spacing: 2px;
            text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);
            opacity: 0;
            transform: translateY(20px);
            animation: fadeUp 1s ease forwards;
        }

        .subtitle {
            font-weight: 300;
            font-size: 1rem;
            color: rgba(255, 255, 255, 0.9);
            margin-bottom: 1.5rem;
            line-height: 1.6;
            text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);
            opacity: 0;
            transform: translateY(20px);
            animation: fadeUp 1s ease forwards 0.3s;
        }

        .cta-btn {
            display: inline-block;
            padding: 0.8rem 2rem;
            background: transparent;
            border: 1px solid #fff;
            color: #fff;
            font-size: 0.85rem;
            text-transform: uppercase;
            letter-spacing: 2px;
            cursor: pointer;
            transition: all 0.3s ease;
            opacity: 0;
            transform: translateY(20px);
            animation: fadeUp 1s ease forwards 0.6s;
        }

        .cta-btn:hover {
            background: rgba(255, 255, 255, 0.1);
            transform: translateY(-3px);
        }

        .scroll-indicator {
            display: flex;
            justify-content: center;
            align-items: center;
            opacity: 0;
            animation: fadeIn 1s ease forwards 1s;
        }

        .scroll-text {
            font-size: 0.75rem;
            color: rgba(255, 255, 255, 0.8);
            text-transform: uppercase;
            letter-spacing: 2px;
            margin-right: 0.5rem;
            text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);
        }

        .scroll-arrow {
            width: 20px;
            height: 30px;
            border: 1px solid rgba(255, 255, 255, 0.8);
            border-radius: 10px;
            position: relative;
        }

        .scroll-arrow::before {
            content: '';
            position: absolute;
            width: 4px;
            height: 4px;
            background: #fff;
            left: 50%;
            top: 6px;
            transform: translateX(-50%);
            border-radius: 50%;
            animation: scrollDown 1.5s infinite;
        }

        .work-selector {
            position: absolute;
            right: 2.5rem;
            top: 50%;
            transform: translateY(-50%);
            display: flex;
            flex-direction: column;
            gap: 1rem;
            z-index: 2;
        }

        .work-dot {
            width: 10px;
            height: 10px;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.5);
            cursor: pointer;
            transition: all 0.3s ease;
        }

        .work-dot.active {
            background: #fff;
            transform: scale(1.3);
        }

        .work-dot:hover {
            background: #fff;
        }

        .work-preview {
            position: absolute;
            right: 3rem;
            top: 50%;
            width: 120px;
            height: 80px;
            background-size: cover;
            background-position: center;
            opacity: 0;
            transition: all 0.3s ease;
            transform: translateY(-50%) translateX(20px);
            pointer-events: none;
            z-index: 3;
            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
        }

        @keyframes fadeUp {
            0% {
                opacity: 0;
                transform: translateY(20px);
            }
            100% {
                opacity: 1;
                transform: translateY(0);
            }
        }

        @keyframes fadeIn {
            0% {
                opacity: 0;
            }
            100% {
                opacity: 1;
            }
        }

        @keyframes scrollDown {
            0% {
                opacity: 1;
                top: 6px;
            }
            70% {
                opacity: 0;
                top: 18px;
            }
            100% {
                opacity: 0;
                top: 6px;
            }
        }

        @media (max-width: 768px) {
            .content-wrapper {
                padding: 1.5rem;
            }

            .title {
                font-size: 2.5rem;
            }

            .center-content {
                max-width: 90%;
            }

            .work-selector {
                right: 1.5rem;
            }

            .nav {
                gap: 1rem;
            }
        }

        @media (max-width: 480px) {
            .title {
                font-size: 2rem;
            }

            .subtitle {
                font-size: 0.9rem;
            }

            .nav-item {
                font-size: 0.75rem;
            }

            .center-content {
                max-width: 100%;
            }
        }
    </style>
</head>
<body>
    <div class="portfolio-banner">
        <div class="parallax-bg" id="parallax-bg"></div>
        <div class="content-wrapper">
            <div class="header">
                <div class="logo">Aria Serafim</div>
                <div class="nav">
                    <div class="nav-item">Work</div>
                    <div class="nav-item">About</div>
                    <div class="nav-item">Contact</div>
                </div>
            </div>
            
            <div class="center-content">
                <h1 class="title">Crafting Visual Stories</h1>
                <p class="subtitle">Architectural photography that captures the essence of space, light, and form. Each image tells the story of design's relationship with human experience.</p>
                <div class="cta-btn">View Portfolio</div>
            </div>
            
            <div class="scroll-indicator">
                <span class="scroll-text">Scroll</span>
                <div class="scroll-arrow"></div>
            </div>
        </div>
        
        <div class="work-selector">
            <div class="work-dot active" data-preview="https://images.unsplash.com/photo-1534531173927-aeb928d54385?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1500&q=80" data-index="0"></div>
            <div class="work-dot" data-preview="https://images.unsplash.com/photo-1600596542815-ffad4c1539a9?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1500&q=80" data-index="1"></div>
            <div class="work-dot" data-preview="https://images.unsplash.com/photo-1600607687939-ce8a6c25118c?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1500&q=80" data-index="2"></div>
            <div class="work-dot" data-preview="https://images.unsplash.com/photo-1600607687644-4e4d6bb8f83d?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1500&q=80" data-index="3"></div>
        </div>
        
        <div class="work-preview" id="work-preview"></div>
    </div>

    <script>
        document.addEventListener('DOMContentLoaded', function() {
            const backgroundImages = [
                'https://images.unsplash.com/photo-1534531173927-aeb928d54385?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1500&q=80',
                'https://images.unsplash.com/photo-1600596542815-ffad4c1539a9?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1500&q=80',
                'https://images.unsplash.com/photo-1600607687939-ce8a6c25118c?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1500&q=80',
                'https://images.unsplash.com/photo-1600607687644-4e4d6bb8f83d?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1500&q=80'
            ];
            
            const portfolioTitles = [
                'Crafting Visual Stories',
                'Spaces That Inspire',
                'Form Follows Light',
                'Architectural Harmony'
            ];
            
            const portfolioSubtitles = [
                'Architectural photography that captures the essence of space, light, and form. Each image tells the story of design's relationship with human experience.',
                'Dedicated to finding beauty in the built environment. My lens seeks the dialogue between structure and surrounding nature.',
                'Exploring how light transforms architecture throughout the day. A study of shadows, reflections, and illumination.',
                'Documenting the balance between tradition and innovation in contemporary architecture around the world.'
            ];

            // Parallax effect
            const parallaxBg = document.getElementById('parallax-bg');
            const banner = document.querySelector('.portfolio-banner');
            
            banner.addEventListener('mousemove', (e) => {
                const xPos = e.clientX / banner.offsetWidth;
                const yPos = e.clientY / banner.offsetHeight;
                const xOffset = (xPos - 0.5) * 20;
                const yOffset = (yPos - 0.5) * 20;
                
                parallaxBg.style.transform = `translateX(${xOffset}px) translateY(${yOffset}px)`;
            });

            // Work dot hover and click functionality
            const workDots = document.querySelectorAll('.work-dot');
            const workPreview = document.getElementById('work-preview');
            const title = document.querySelector('.title');
            const subtitle = document.querySelector('.subtitle');
            
            workDots.forEach((dot, index) => {
                dot.addEventListener('mouseenter', () => {
                    const previewUrl = dot.getAttribute('data-preview');
                    workPreview.style.backgroundImage = `url(${previewUrl})`;
                    workPreview.style.opacity = '1';
                    workPreview.style.transform = 'translateY(-50%) translateX(0)';
                });
                
                dot.addEventListener('mouseleave', () => {
                    workPreview.style.opacity = '0';
                    workPreview.style.transform = 'translateY(-50%) translateX(20px)';
                });
                
                dot.addEventListener('click', () => {
                    // Update active dot
                    workDots.forEach(d => d.classList.remove('active'));
                    dot.classList.add('active');
                    
                    // Animate content change
                    title.style.opacity = '0';
                    subtitle.style.opacity = '0';
                    
                    setTimeout(() => {
                        // Change background with fade effect
                        parallaxBg.style.opacity = '0';
                        setTimeout(() => {
                            parallaxBg.style.backgroundImage = `url(${backgroundImages[index]})`;
                            parallaxBg.style.opacity = '1';
                        }, 300);
                        
                        // Update content
                        title.textContent = portfolioTitles[index];
                        subtitle.textContent = portfolioSubtitles[index];
                        
                        // Animate content back in
                        title.style.opacity = '1';
                        subtitle.style.opacity = '1';
                    }, 300);
                });
            });

            // CTA button interaction
            const ctaBtn = document.querySelector('.cta-btn');
            
            ctaBtn.addEventListener('mouseenter', () => {
                ctaBtn.style.boxShadow = '0 5px 15px rgba(0, 0, 0, 0.2)';
            });
            
            ctaBtn.addEventListener('mouseleave', () => {
                ctaBtn.style.boxShadow = 'none';
            });
            
            ctaBtn.addEventListener('click', function(e) {
                e.preventDefault();
                
                // Create ripple effect
                const ripple = document.createElement('span');
                const rect = this.getBoundingClientRect();
                const size = Math.max(rect.width, rect.height);
                const x = e.clientX - rect.left - size / 2;
                const y = e.clientY - rect.top - size / 2;
                
                ripple.style.width = ripple.style.height = `${size}px`;
                ripple.style.left = `${x}px`;
                ripple.style.top = `${y}px`;
                ripple.style.position = 'absolute';
                ripple.style.borderRadius = '50%';
                ripple.style.backgroundColor = 'rgba(255, 255, 255, 0.3)';
                ripple.style.transform = 'scale(0)';
                ripple.style.animation = 'ripple 0.6s linear';
                
                this.appendChild(ripple);
                
                setTimeout(() => {
                    ripple.remove();
                }, 600);
            });
            
            // Add ripple animation
            const style = document.createElement('style');
            style.textContent = `
                @keyframes ripple {
                    to {
                        transform: scale(4);
                        opacity: 0;
                    }
                }
            `;
            document.head.appendChild(style);
        });
    </script>
</body>
</html>

4) Mobile App Feature Showcase

Here's the code:

<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Mobile App Feature Banner</title>
    <style>
        :root {
            --primary-color: #6200ee;
            --secondary-color: #03dac6;
            --background-color: #f5f5f5;
            --text-color: #212121;
            --text-light: #757575;
            --accent-color: #ff6b6b;
            --success-color: #4caf50;
            --white: #ffffff;
            --shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
            --transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
        }

        body {
            background-color: var(--background-color);
            color: var(--text-color);
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 700px;
            width: 100%;
            overflow-x: hidden;
            padding: 20px;
        }

        .container {
            width: 100%;
            max-width: 700px;
            height: 700px;
            position: relative;
            display: flex;
            flex-direction: column;
            overflow: hidden;
            border-radius: 16px;
            box-shadow: var(--shadow);
            background-color: var(--white);
        }

        header {
            padding: 20px;
            display: flex;
            justify-content: space-between;
            align-items: center;
            background-color: var(--primary-color);
            color: var(--white);
        }

        header h1 {
            font-size: 1.5rem;
            font-weight: 600;
        }

        .content {
            flex: 1;
            overflow-y: auto;
            overflow-x: hidden;
            scroll-behavior: smooth;
            padding: 0 0 70px 0;
            position: relative;
        }

        .hero {
            position: relative;
            height: 200px;
            background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
            color: var(--white);
            padding: 30px;
            display: flex;
            flex-direction: column;
            justify-content: center;
            overflow: hidden;
        }

        .hero::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100'%3E%3Cpath fill='%23ffffff' fill-opacity='0.1' 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'%3E%3C/path%3E%3C/svg%3E");
            opacity: 0.3;
        }

        .hero h2 {
            font-size: 2rem;
            margin-bottom: 10px;
            position: relative;
            z-index: 1;
            font-weight: 700;
        }

        .hero p {
            font-size: 1rem;
            opacity: 0.9;
            max-width: 420px;
            position: relative;
            z-index: 1;
        }

        .features {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 20px;
            padding: 20px;
        }

        .feature-card {
            background-color: var(--white);
            border-radius: 12px;
            padding: 25px;
            position: relative;
            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
            transition: var(--transition);
            cursor: pointer;
            border: 2px solid transparent;
            display: flex;
            flex-direction: column;
            overflow: hidden;
        }

        .feature-card:hover {
            transform: translateY(-5px);
            box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
            border-color: var(--secondary-color);
        }

        .feature-card::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            width: 5px;
            height: 100%;
            background-color: var(--primary-color);
            transform: scaleY(0);
            transform-origin: bottom;
            transition: transform 0.3s ease;
        }

        .feature-card:hover::before {
            transform: scaleY(1);
        }

        .feature-card .icon {
            width: 50px;
            height: 50px;
            background-color: rgba(98, 0, 238, 0.1);
            border-radius: 12px;
            display: flex;
            align-items: center;
            justify-content: center;
            margin-bottom: 15px;
            color: var(--primary-color);
            font-size: 24px;
            transition: var(--transition);
        }

        .feature-card:hover .icon {
            background-color: var(--primary-color);
            color: var(--white);
            transform: rotate(5deg) scale(1.1);
        }

        .feature-card h3 {
            font-size: 1.2rem;
            margin-bottom: 10px;
            color: var(--text-color);
            position: relative;
            display: inline-block;
        }

        .feature-card h3::after {
            content: '';
            position: absolute;
            bottom: -5px;
            left: 0;
            width: 0;
            height: 2px;
            background-color: var(--secondary-color);
            transition: var(--transition);
        }

        .feature-card:hover h3::after {
            width: 100%;
        }

        .feature-card p {
            color: var(--text-light);
            font-size: 0.9rem;
            line-height: 1.5;
            margin-bottom: 15px;
        }

        .feature-card .badge {
            display: inline-block;
            background-color: rgba(3, 218, 198, 0.1);
            color: var(--secondary-color);
            padding: 4px 10px;
            border-radius: 20px;
            font-size: 0.8rem;
            font-weight: 500;
            margin-top: auto;
        }

        .action-btn {
            position: fixed;
            bottom: 20px;
            left: 50%;
            transform: translateX(-50%);
            background-color: var(--primary-color);
            color: var(--white);
            padding: 15px 30px;
            border-radius: 30px;
            border: none;
            font-weight: 600;
            font-size: 1rem;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            box-shadow: 0 4px 20px rgba(98, 0, 238, 0.3);
            transition: var(--transition);
            z-index: 10;
            width: calc(100% - 40px);
            max-width: 320px;
        }

        .action-btn:hover {
            background-color: #7c4dff;
            box-shadow: 0 8px 25px rgba(98, 0, 238, 0.4);
            transform: translateX(-50%) translateY(-3px);
        }

        .action-btn:active {
            transform: translateX(-50%) translateY(0);
            box-shadow: 0 4px 15px rgba(98, 0, 238, 0.3);
        }

        .action-btn .icon {
            margin-left: 10px;
            font-size: 1.2rem;
            transition: var(--transition);
        }

        .action-btn:hover .icon {
            transform: translateX(5px);
        }

        .progress-tracker {
            display: flex;
            justify-content: center;
            margin: 20px 0;
            gap: 10px;
        }

        .progress-dot {
            width: 10px;
            height: 10px;
            border-radius: 50%;
            background-color: rgba(0, 0, 0, 0.1);
            cursor: pointer;
            transition: var(--transition);
        }

        .progress-dot.active {
            background-color: var(--primary-color);
            transform: scale(1.3);
        }

        /* Animations */
        @keyframes fadeIn {
            from {
                opacity: 0;
                transform: translateY(20px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        @keyframes pulse {
            0% {
                box-shadow: 0 0 0 0 rgba(98, 0, 238, 0.4);
            }
            70% {
                box-shadow: 0 0 0 10px rgba(98, 0, 238, 0);
            }
            100% {
                box-shadow: 0 0 0 0 rgba(98, 0, 238, 0);
            }
        }

        @keyframes wave {
            0% {
                transform: translateY(0);
            }
            50% {
                transform: translateY(-10px);
            }
            100% {
                transform: translateY(0);
            }
        }

        .animated {
            animation: fadeIn 0.6s forwards;
        }

        .pulse {
            animation: pulse 2s infinite;
        }

        .notification-badge {
            position: absolute;
            top: -5px;
            right: -5px;
            background-color: var(--accent-color);
            color: white;
            border-radius: 50%;
            width: 20px;
            height: 20px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 0.7rem;
            font-weight: bold;
            transform: scale(0);
            transition: transform 0.3s cubic-bezier(0.68, -0.55, 0.27, 1.55);
        }

        .notification-active .notification-badge {
            transform: scale(1);
        }

        .feature-card.notification-active {
            border-color: var(--accent-color);
        }

        .feature-preview {
            max-height: 0;
            overflow: hidden;
            transition: max-height 0.4s ease-out;
            margin-top: 10px;
        }

        .feature-card.expanded .feature-preview {
            max-height: 200px;
        }

        .feature-preview img {
            width: 100%;
            border-radius: 8px;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
        }

        /* Custom toggle switch */
        .toggle-wrapper {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-top: 10px;
        }

        .toggle-wrapper span {
            font-size: 0.8rem;
            color: var(--text-light);
        }

        .toggle {
            position: relative;
            display: inline-block;
            width: 48px;
            height: 24px;
        }

        .toggle input {
            opacity: 0;
            width: 0;
            height: 0;
        }

        .slider {
            position: absolute;
            cursor: pointer;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background-color: #ccc;
            transition: .4s;
            border-radius: 24px;
        }

        .slider:before {
            position: absolute;
            content: "";
            height: 18px;
            width: 18px;
            left: 3px;
            bottom: 3px;
            background-color: white;
            transition: .4s;
            border-radius: 50%;
        }

        input:checked + .slider {
            background-color: var(--success-color);
        }

        input:focus + .slider {
            box-shadow: 0 0 1px var(--success-color);
        }

        input:checked + .slider:before {
            transform: translateX(24px);
        }

        /* Toast notification */
        .toast {
            position: fixed;
            bottom: 90px;
            left: 50%;
            transform: translateX(-50%) translateY(100px);
            background-color: rgba(33, 33, 33, 0.9);
            color: white;
            padding: 12px 20px;
            border-radius: 4px;
            display: flex;
            align-items: center;
            gap: 10px;
            box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
            transition: transform 0.3s ease;
            z-index: 100;
            opacity: 0;
        }

        .toast.show {
            transform: translateX(-50%) translateY(0);
            opacity: 1;
        }

        .toast .icon {
            color: var(--success-color);
        }

        /* Responsive adjustments */
        @media (max-width: 576px) {
            .hero h2 {
                font-size: 1.5rem;
            }

            .features {
                grid-template-columns: 1fr;
            }

            .feature-card {
                padding: 20px;
            }

            .action-btn {
                width: calc(100% - 40px);
                padding: 12px 20px;
                font-size: 0.9rem;
            }
        }

        @media (min-width: 577px) and (max-width: 700px) {
            .features {
                grid-template-columns: 1fr;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <header>
            <h1>SoloSync</h1>
            <div class="notification-active">
                <i class="icon">🔔</i>
                <span class="notification-badge">3</span>
            </div>
        </header>

        <div class="content">
            <div class="hero animated">
                <h2>Introducing Smart Tasks 2.0</h2>
                <p>Revolutionize your workflow with AI-powered task organization, adaptive reminders, and cross-device syncing.</p>
            </div>

            <div class="progress-tracker">
                <div class="progress-dot active" data-index="0"></div>
                <div class="progress-dot" data-index="1"></div>
                <div class="progress-dot" data-index="2"></div>
            </div>

            <div class="features">
                <div class="feature-card animated notification-active" style="animation-delay: 0.1s;" data-feature="task-ai">
                    <div class="icon">🧠</div>
                    <div class="notification-badge">1</div>
                    <h3>Task AI Assistant</h3>
                    <p>Our new AI engine analyzes your work patterns and automatically organizes tasks based on your productivity cycles.</p>
                    <div class="feature-preview">
                        <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 150' width='300' height='150'%3E%3Crect width='300' height='150' fill='%23f5f8ff'/%3E%3Crect x='20' y='20' width='260' height='40' rx='8' fill='%23e2e9ff'/%3E%3Ccircle cx='40' cy='40' r='10' fill='%236200ee'/%3E%3Crect x='60' y='35' width='120' height='10' rx='2' fill='%23333'/%3E%3Crect x='60' y='50' width='80' height='5' rx='2' fill='%23999'/%3E%3Crect x='20' y='70' width='260' height='40' rx='8' fill='%23e2e9ff'/%3E%3Ccircle cx='40' cy='90' r='10' fill='%2303dac6'/%3E%3Crect x='60' y='85' width='150' height='10' rx='2' fill='%23333'/%3E%3Crect x='60' y='100' width='100' height='5' rx='2' fill='%23999'/%3E%3C/svg%3E" alt="Task AI Preview">
                    </div>
                    <div class="badge">New</div>
                    <div class="toggle-wrapper">
                        <span>Enable Feature</span>
                        <label class="toggle">
                            <input type="checkbox" class="feature-toggle">
                            <span class="slider"></span>
                        </label>
                    </div>
                </div>

                <div class="feature-card animated" style="animation-delay: 0.2s;" data-feature="cross-sync">
                    <div class="icon">🔄</div>
                    <h3>Cross-Device Sync</h3>
                    <p>Seamlessly transition between mobile, tablet, desktop, and wearables with our new ultra-fast sync engine.</p>
                    <div class="feature-preview">
                        <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 150' width='300' height='150'%3E%3Crect width='300' height='150' fill='%23f5f8ff'/%3E%3Crect x='20' y='30' width='80' height='110' rx='8' fill='%23e2e9ff'/%3E%3Crect x='25' y='40' width='70' height='90' rx='4' fill='%23fff'/%3E%3Crect x='110' y='30' width='170' height='110' rx='8' fill='%23e2e9ff'/%3E%3Crect x='120' y='40' width='150' height='90' rx='4' fill='%23fff'/%3E%3Cpath d='M150 75 L130 95 L170 95 Z' fill='%236200ee'/%3E%3Cpath d='M150 95 L130 75 L170 75 Z' fill='%2303dac6'/%3E%3C/svg%3E" alt="Cross-Device Sync Preview">
                    </div>
                    <div class="badge">Beta</div>
                    <div class="toggle-wrapper">
                        <span>Enable Feature</span>
                        <label class="toggle">
                            <input type="checkbox" class="feature-toggle" checked>
                            <span class="slider"></span>
                        </label>
                    </div>
                </div>

                <div class="feature-card animated notification-active" style="animation-delay: 0.3s;" data-feature="adaptive-reminders">
                    <div class="icon">⏰</div>
                    <div class="notification-badge">2</div>
                    <h3>Adaptive Reminders</h3>
                    <p>Smart notifications that adjust timing based on location, calendar events, and past response patterns.</p>
                    <div class="feature-preview">
                        <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 150' width='300' height='150'%3E%3Crect width='300' height='150' fill='%23f5f8ff'/%3E%3Ccircle cx='150' cy='75' r='60' fill='%23e2e9ff' stroke='%236200ee' stroke-width='5'/%3E%3Cpath d='M150 30 L150 75 L195 75' stroke='%2303dac6' stroke-width='6' stroke-linecap='round'/%3E%3Ccircle cx='150' cy='75' r='5' fill='%236200ee'/%3E%3Crect x='220' y='30' width='50' height='25' rx='12.5' fill='%23ff6b6b'/%3E%3Ctext x='245' y='46' font-family='Arial' font-size='12' fill='white' text-anchor='middle'%3E9:30%3C/text%3E%3C/svg%3E" alt="Adaptive Reminders Preview">
                    </div>
                    <div class="badge">Popular</div>
                    <div class="toggle-wrapper">
                        <span>Enable Feature</span>
                        <label class="toggle">
                            <input type="checkbox" class="feature-toggle">
                            <span class="slider"></span>
                        </label>
                    </div>
                </div>

                <div class="feature-card animated" style="animation-delay: 0.4s;" data-feature="gesture-shortcuts">
                    <div class="icon">👆</div>
                    <h3>Gesture Shortcuts</h3>
                    <p>Create custom gesture patterns for quick access to frequently used features and actions.</p>
                    <div class="feature-preview">
                        <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 150' width='300' height='150'%3E%3Crect width='300' height='150' fill='%23f5f8ff'/%3E%3Cpath d='M50 75 C80 45, 120 105, 150 75 C180 45, 220 105, 250 75' stroke='%236200ee' stroke-width='4' stroke-linecap='round' fill='none'/%3E%3Ccircle cx='50' cy='75' r='8' fill='%2303dac6'/%3E%3Ccircle cx='150' cy='75' r='8' fill='%2303dac6'/%3E%3Ccircle cx='250' cy='75' r='8' fill='%2303dac6'/%3E%3C/svg%3E" alt="Gesture Shortcuts Preview">
                    </div>
                    <div class="badge">Advanced</div>
                    <div class="toggle-wrapper">
                        <span>Enable Feature</span>
                        <label class="toggle">
                            <input type="checkbox" class="feature-toggle">
                            <span class="slider"></span>
                        </label>
                    </div>
                </div>
            </div>
        </div>

        <button class="action-btn pulse">
            <span>Activate Smart Tasks 2.0</span>
            <span class="icon">→</span>
        </button>
    </div>

    <div class="toast">
        <span class="icon">✓</span>
        <span class="message">Feature activated successfully!</span>
    </div>

    <script>
        document.addEventListener('DOMContentLoaded', function() {
            // Initialization with staggered animations
            const animatedElements = document.querySelectorAll('.animated');
            animatedElements.forEach((el, index) => {
                setTimeout(() => {
                    el.style.opacity = '1';
                    el.style.transform = 'translateY(0)';
                }, 100 * index);
            });

            // Progress tracker functionality
            const dots = document.querySelectorAll('.progress-dot');
            let currentFeatureIndex = 0;
            const featureGroups = [
                ['task-ai', 'cross-sync'],
                ['adaptive-reminders', 'gesture-shortcuts'],
                ['voice-commands', 'dark-theme']
            ];

            dots.forEach(dot => {
                dot.addEventListener('click', function() {
                    const dotIndex = parseInt(this.dataset.index);
                    setActiveDot(dotIndex);
                });
            });

            function setActiveDot(index) {
                dots.forEach(dot => dot.classList.remove('active'));
                dots[index].classList.add('active');
                currentFeatureIndex = index;
                
                // Here you would implement the logic to show different feature sets
                // For this example, we'll just toggle classes for demonstration
                animateFeatureCards();
            }

            function animateFeatureCards() {
                const featureCards = document.querySelectorAll('.feature-card');
                featureCards.forEach((card, index) => {
                    card.style.opacity = '0';
                    card.style.transform = 'translateY(20px)';
                    
                    setTimeout(() => {
                        card.style.opacity = '1';
                        card.style.transform = 'translateY(0)';
                    }, 100 * index);
                });
            }

            // Feature card functionality
            const featureCards = document.querySelectorAll('.feature-card');
            featureCards.forEach(card => {
                card.addEventListener('click', function() {
                    this.classList.toggle('expanded');
                });
            });

            // Toggle switches
            const toggles = document.querySelectorAll('.feature-toggle');
            toggles.forEach(toggle => {
                toggle.addEventListener('change', function() {
                    const card = this.closest('.feature-card');
                    const featureName = card.dataset.feature;
                    const isEnabled = this.checked;
                    
                    // Show toast notification
                    const toast = document.querySelector('.toast');
                    const toastMessage = toast.querySelector('.message');
                    toastMessage.textContent = isEnabled 
                        ? `${featureName.replace('-', ' ')} feature enabled!` 
                        : `${featureName.replace('-', ' ')} feature disabled.`;
                    
                    toast.classList.add('show');
                    
                    setTimeout(() => {
                        toast.classList.remove('show');
                    }, 3000);

                    // If enabled, remove notification badge if present
                    if (isEnabled && card.classList.contains('notification-active')) {
                        card.classList.remove('notification-active');
                    }
                });
            });

            // Action button
            const actionBtn = document.querySelector('.action-btn');
            actionBtn.addEventListener('click', function() {
                // Count enabled features
                const enabledFeatures = document.querySelectorAll('.feature-toggle:checked').length;
                
                // Show toast notification
                const toast = document.querySelector('.toast');
                const toastMessage = toast.querySelector('.message');
                
                if (enabledFeatures > 0) {
                    toastMessage.textContent = `Smart Tasks 2.0 activated with ${enabledFeatures} feature${enabledFeatures !== 1 ? 's' : ''}!`;
                    
                    // Remove all notification badges
                    document.querySelectorAll('.notification-active').forEach(el => {
                        el.classList.remove('notification-active');
                    });
                    
                    // Add success animation to button
                    this.classList.remove('pulse');
                    this.innerHTML = '<span>Successfully Activated</span> <span class="icon">✓</span>';
                    this.style.backgroundColor = 'var(--success-color)';
                } else {
                    toastMessage.textContent = "Please enable at least one feature.";
                }
                
                toast.classList.add('show');
                
                setTimeout(() => {
                    toast.classList.remove('show');
                }, 3000);
            });

            // Simulate a notification appearing after some time
            setTimeout(() => {
                const randomCard = document.querySelectorAll('.feature-card:not(.notification-active)')[0];
                if (randomCard) {
                    randomCard.classList.add('notification-active');
                    const badge = document.createElement('div');
                    badge.classList.add('notification-badge');
                    badge.textContent = "!";
                    randomCard.appendChild(badge);
                    
                    // Add a slight animation to draw attention
                    randomCard.style.animation = 'pulse 2s';
                    setTimeout(() => {
                        randomCard.style.animation = '';
                    }, 2000);
                }
            }, 5000);
        });
    </script>
</body>
</html>

5) Carbon Neutral Showcase

Here's the code:

<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Corporate Achievement Banner</title>
    <style>
        :root {
            --primary: #2c3e50;
            --secondary: #34495e;
            --accent: #3498db;
            --light: #ecf0f1;
            --success: #27ae60;
            --text: #2c3e50;
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }

        body {
            background-color: #f5f5f5;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            overflow: hidden;
        }

        .container {
            width: 100%;
            max-width: 700px;
            height: 700px;
            display: flex;
            flex-direction: column;
            position: relative;
            overflow: hidden;
        }

        .banner {
            width: 100%;
            height: 100%;
            background: linear-gradient(135deg, var(--primary), var(--secondary));
            color: var(--light);
            border-radius: 8px;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
            overflow: hidden;
            position: relative;
        }

        .banner-content {
            display: flex;
            height: 100%;
            transition: transform 0.5s ease-in-out;
        }

        .text-section, .image-section {
            flex: 1;
            padding: 2.5rem;
            position: relative;
            overflow: hidden;
            transition: all 0.4s ease;
        }

        .text-section {
            display: flex;
            flex-direction: column;
            justify-content: center;
        }

        .title {
            font-size: 1.8rem;
            font-weight: 600;
            margin-bottom: 1rem;
            transition: transform 0.3s ease;
            position: relative;
        }

        .title::after {
            content: '';
            position: absolute;
            bottom: -10px;
            left: 0;
            width: 60px;
            height: 3px;
            background-color: var(--accent);
            transition: width 0.4s ease;
        }

        .text-section:hover .title::after {
            width: 100px;
        }

        .subtitle {
            font-size: 1rem;
            font-weight: 400;
            margin-bottom: 1.5rem;
            opacity: 0.85;
        }

        .description {
            font-size: 0.95rem;
            line-height: 1.6;
            margin-bottom: 2rem;
            max-width: 90%;
        }

        .stats {
            display: flex;
            gap: 1.5rem;
            margin-bottom: 2rem;
        }

        .stat {
            display: flex;
            flex-direction: column;
            align-items: flex-start;
        }

        .stat-number {
            font-size: 1.5rem;
            font-weight: 700;
            color: var(--accent);
        }

        .stat-label {
            font-size: 0.85rem;
            opacity: 0.7;
        }

        .cta-btn {
            padding: 0.8rem 1.5rem;
            background-color: var(--accent);
            color: white;
            border: none;
            border-radius: 4px;
            font-weight: 500;
            font-size: 0.9rem;
            cursor: pointer;
            transition: all 0.3s ease;
            position: relative;
            overflow: hidden;
            z-index: 1;
            box-shadow: 0 4px 15px rgba(52, 152, 219, 0.3);
            max-width: fit-content;
        }

        .cta-btn::before {
            content: '';
            position: absolute;
            top: 0;
            left: -100%;
            width: 100%;
            height: 100%;
            background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
            transition: all 0.4s ease;
        }

        .cta-btn:hover {
            background-color: #2980b9;
            transform: translateY(-2px);
            box-shadow: 0 6px 20px rgba(52, 152, 219, 0.4);
        }

        .cta-btn:hover::before {
            left: 100%;
        }

        .image-section {
            background-color: rgba(255, 255, 255, 0.1);
            position: relative;
            display: flex;
            justify-content: center;
            align-items: center;
            overflow: hidden;
        }

        .image-wrapper {
            width: 100%;
            height: 100%;
            position: relative;
            overflow: hidden;
            border-radius: 8px;
            transition: transform 0.4s ease;
        }

        .main-image {
            width: 100%;
            height: 100%;
            object-fit: cover;
            transition: all 0.5s ease;
            transform: scale(1.02);
        }

        .image-section:hover .main-image {
            transform: scale(1.1);
        }

        .achievement-overlay {
            position: absolute;
            bottom: 0;
            left: 0;
            width: 100%;
            background: linear-gradient(to top, rgba(0, 0, 0, 0.8), transparent);
            padding: 2rem;
            transform: translateY(100%);
            transition: transform 0.5s ease;
            color: white;
        }

        .image-section:hover .achievement-overlay {
            transform: translateY(0);
        }

        .achievement-title {
            font-size: 1.2rem;
            font-weight: 600;
            margin-bottom: 1rem;
        }

        .achievement-list {
            list-style: none;
        }

        .achievement-item {
            display: flex;
            align-items: center;
            margin-bottom: 0.7rem;
            font-size: 0.85rem;
        }

        .achievement-item::before {
            content: '✓';
            color: var(--success);
            margin-right: 10px;
            font-weight: bold;
        }

        .progress-bar {
            position: absolute;
            bottom: 0;
            left: 0;
            width: 0;
            height: 3px;
            background-color: var(--accent);
            transition: width 0.2s linear;
        }

        .floating-badge {
            position: absolute;
            top: 2rem;
            right: 2rem;
            background-color: rgba(39, 174, 96, 0.9);
            color: white;
            padding: 0.5rem 1rem;
            border-radius: 20px;
            font-size: 0.8rem;
            font-weight: 500;
            display: flex;
            align-items: center;
            transform: translateY(0);
            animation: float 3s ease-in-out infinite;
            box-shadow: 0 4px 10px rgba(39, 174, 96, 0.3);
            z-index: 10;
        }

        .badge-dot {
            width: 8px;
            height: 8px;
            background-color: white;
            border-radius: 50%;
            margin-right: 8px;
            animation: pulse 2s infinite;
        }

        @keyframes float {
            0%, 100% { transform: translateY(0); }
            50% { transform: translateY(-10px); }
        }

        @keyframes pulse {
            0% { opacity: 0.5; }
            50% { opacity: 1; }
            100% { opacity: 0.5; }
        }

        @media (max-width: 768px) {
            .banner-content {
                flex-direction: column;
            }
            
            .text-section, .image-section {
                padding: 1.5rem;
                flex: none;
                height: 50%;
            }
            
            .title {
                font-size: 1.5rem;
            }
            
            .stats {
                gap: 1rem;
            }
            
            .description {
                margin-bottom: 1rem;
            }
            
            .achievement-overlay {
                padding: 1rem;
            }
            
            .achievement-title {
                font-size: 1rem;
            }
        }

        @media (max-width: 480px) {
            .stats {
                flex-direction: column;
                gap: 0.5rem;
            }
            
            .title {
                font-size: 1.3rem;
            }
            
            .subtitle {
                font-size: 0.9rem;
            }
            
            .description {
                font-size: 0.85rem;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="banner">
            <div class="banner-content">
                <div class="text-section">
                    <h1 class="title">Milestone Achieved: Carbon Neutral Operations</h1>
                    <p class="subtitle">A new chapter in our sustainability journey</p>
                    <p class="description">We're proud to announce that Vertex Solutions has achieved carbon neutrality across all global operations, three years ahead of our original target. This milestone represents our unwavering commitment to environmental stewardship while driving business growth.</p>
                    
                    <div class="stats">
                        <div class="stat">
                            <span class="stat-number">43%</span>
                            <span class="stat-label">Emissions Reduced</span>
                        </div>
                        <div class="stat">
                            <span class="stat-number">100%</span>
                            <span class="stat-label">Renewable Energy</span>
                        </div>
                        <div class="stat">
                            <span class="stat-number">$12M</span>
                            <span class="stat-label">Investment</span>
                        </div>
                    </div>
                    
                    <button class="cta-btn">Read Full Report</button>
                </div>
                
                <div class="image-section">
                    <div class="image-wrapper">
                        <img src="https://images.unsplash.com/photo-1611273426858-450d8e3c9fce?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1470&q=80" alt="Sustainable business operations" class="main-image">
                    </div>
                    
                    <div class="achievement-overlay">
                        <h3 class="achievement-title">Key Accomplishments</h3>
                        <ul class="achievement-list">
                            <li class="achievement-item">Reduced carbon emissions by 43% since 2019</li>
                            <li class="achievement-item">Transitioned all facilities to 100% renewable energy</li>
                            <li class="achievement-item">Implemented circular economy principles in product design</li>
                            <li class="achievement-item">Established sustainability training for all employees</li>
                            <li class="achievement-item">Recognized by CDP with A- climate leadership rating</li>
                        </ul>
                    </div>
                    
                    <div class="floating-badge">
                        <span class="badge-dot"></span>
                        <span>Carbon Neutral Certified</span>
                    </div>
                </div>
            </div>
            <div class="progress-bar"></div>
        </div>
    </div>

    <script>
        document.addEventListener('DOMContentLoaded', function() {
            const progressBar = document.querySelector('.progress-bar');
            const banner = document.querySelector('.banner');
            const textSection = document.querySelector('.text-section');
            const imageSection = document.querySelector('.image-section');
            
            // Initialize the progress bar animation
            setTimeout(() => {
                progressBar.style.width = '100%';
            }, 300);
            
            // Mouse movement effect for the text section
            textSection.addEventListener('mousemove', function(e) {
                const rect = this.getBoundingClientRect();
                const x = e.clientX - rect.left;
                const y = e.clientY - rect.top;
                
                const title = this.querySelector('.title');
                
                const moveX = (x - rect.width / 2) / 20;
                const moveY = (y - rect.height / 2) / 20;
                
                title.style.transform = `translate(${moveX}px, ${moveY}px)`;
            });
            
            // Reset the transform when mouse leaves
            textSection.addEventListener('mouseleave', function() {
                const title = this.querySelector('.title');
                title.style.transform = 'translate(0, 0)';
            });
            
            // Handle the CTA button click
            const ctaButton = document.querySelector('.cta-btn');
            ctaButton.addEventListener('click', function(e) {
                e.preventDefault();
                
                // Visual feedback for the button click
                this.style.transform = 'scale(0.95)';
                setTimeout(() => {
                    this.style.transform = '';
                }, 200);
                
                // Show a toast notification instead of redirecting
                const toast = document.createElement('div');
                toast.style.position = 'absolute';
                toast.style.bottom = '20px';
                toast.style.left = '50%';
                toast.style.transform = 'translateX(-50%)';
                toast.style.backgroundColor = 'rgba(39, 174, 96, 0.9)';
                toast.style.color = 'white';
                toast.style.padding = '12px 24px';
                toast.style.borderRadius = '4px';
                toast.style.fontWeight = '500';
                toast.style.boxShadow = '0 4px 12px rgba(0,0,0,0.15)';
                toast.style.zIndex = '100';
                toast.style.opacity = '0';
                toast.style.transition = 'opacity 0.3s ease';
                toast.textContent = 'Full sustainability report will open in a new tab';
                
                document.querySelector('.container').appendChild(toast);
                
                setTimeout(() => {
                    toast.style.opacity = '1';
                }, 100);
                
                setTimeout(() => {
                    toast.style.opacity = '0';
                    setTimeout(() => {
                        toast.remove();
                    }, 300);
                }, 3000);
            });
            
            // Stats counter animation
            const statNumbers = document.querySelectorAll('.stat-number');
            
            statNumbers.forEach(stat => {
                const targetValue = stat.textContent;
                const isCurrency = targetValue.includes('$');
                const isPercentage = targetValue.includes('%');
                let value = 0;
                
                if (isCurrency) {
                    const numericValue = parseInt(targetValue.replace(/\D/g, ''));
                    const increment = Math.ceil(numericValue / 50);
                    
                    const timer = setInterval(() => {
                        value += increment;
                        if (value >= numericValue) {
                            value = numericValue;
                            clearInterval(timer);
                        }
                        stat.textContent = `$${value}M`;
                    }, 30);
                } else if (isPercentage) {
                    const numericValue = parseInt(targetValue);
                    const increment = Math.ceil(numericValue / 50);
                    
                    const timer = setInterval(() => {
                        value += increment;
                        if (value >= numericValue) {
                            value = numericValue;
                            clearInterval(timer);
                        }
                        stat.textContent = `${value}%`;
                    }, 30);
                } else {
                    const timer = setInterval(() => {
                        value += 2;
                        if (value >= parseInt(targetValue)) {
                            value = parseInt(targetValue);
                            clearInterval(timer);
                        }
                        stat.textContent = value;
                    }, 30);
                }
            });
            
            // Make achievement items appear one by one
            const achievementItems = document.querySelectorAll('.achievement-item');
            achievementItems.forEach((item, index) => {
                item.style.opacity = '0';
                item.style.transform = 'translateY(20px)';
                item.style.transition = 'opacity 0.4s ease, transform 0.4s ease';
                
                imageSection.addEventListener('mouseenter', function() {
                    setTimeout(() => {
                        item.style.opacity = '1';
                        item.style.transform = 'translateY(0)';
                    }, 200 + (index * 100));
                });
                
                imageSection.addEventListener('mouseleave', function() {
                    setTimeout(() => {
                        item.style.opacity = '0';
                        item.style.transform = 'translateY(20px)';
                    }, 100);
                });
            });
        });
    </script>
</body>
</html>

Use Subframe to Design Banner (& Any UI!)

Subframe's drag-and-drop interface and intuitive, responsive canvas make it easy to create pixel-perfect UI every time. Loved by designers and developers alike, Subframe ensures your banners are both stunning and functional.

Start for free and elevate your design game today!

6) Interactive Seasonal Banner

Here's the code:

<html>
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Holiday Season Sale</title>
  <style>
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
      font-family: 'Poppins', sans-serif;
    }

    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap');
    @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700;900&display=swap');

    body {
      display: flex;
      justify-content: center;
      align-items: center;
      min-height: 100vh;
      background-color: #f8f9fa;
      overflow: hidden;
    }

    .banner-container {
      position: relative;
      width: 100%;
      max-width: 700px;
      height: 700px;
      background: linear-gradient(135deg, #8e2de2, #4a00e0);
      border-radius: 16px;
      overflow: hidden;
      box-shadow: 0 15px 35px rgba(0, 0, 0, 0.2);
    }

    .season-toggle {
      position: absolute;
      top: 20px;
      right: 20px;
      z-index: 10;
      background: rgba(255, 255, 255, 0.2);
      backdrop-filter: blur(5px);
      padding: 10px 15px;
      border-radius: 30px;
      color: white;
      font-weight: 500;
      cursor: pointer;
      transition: all 0.3s ease;
      border: 1px solid rgba(255, 255, 255, 0.3);
    }

    .season-toggle:hover {
      background: rgba(255, 255, 255, 0.3);
      transform: translateY(-2px);
    }

    .winter-bg {
      background: linear-gradient(135deg, #1e3c72, #2a5298);
    }

    .fall-bg {
      background: linear-gradient(135deg, #b91d1d, #e65c00);
    }

    .banner-content {
      position: relative;
      z-index: 2;
      padding: 40px;
      height: 100%;
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      text-align: center;
      color: white;
    }

    .banner-title {
      font-family: 'Playfair Display', serif;
      font-size: 4rem;
      font-weight: 900;
      margin-bottom: 20px;
      text-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3);
      opacity: 0;
      transform: translateY(30px);
      animation: fadeUp 0.8s ease forwards 0.2s;
    }

    .banner-subtitle {
      font-size: 1.5rem;
      margin-bottom: 30px;
      line-height: 1.4;
      max-width: 80%;
      opacity: 0;
      transform: translateY(30px);
      animation: fadeUp 0.8s ease forwards 0.4s;
    }

    .discount-badge {
      background: rgba(255, 255, 255, 0.15);
      backdrop-filter: blur(10px);
      padding: 15px 30px;
      border-radius: 50px;
      font-size: 1.8rem;
      font-weight: 700;
      margin-bottom: 40px;
      border: 2px solid rgba(255, 255, 255, 0.2);
      opacity: 0;
      transform: scale(0.8);
      animation: popIn 0.6s cubic-bezier(0.18, 1.3, 0.4, 1) forwards 0.6s;
    }

    .cta-button {
      padding: 16px 35px;
      background: white;
      color: #333;
      border: none;
      border-radius: 50px;
      font-size: 1.1rem;
      font-weight: 600;
      cursor: pointer;
      transition: all 0.3s ease;
      opacity: 0;
      transform: translateY(30px);
      animation: fadeUp 0.8s ease forwards 0.8s;
      box-shadow: 0 6px 15px rgba(0, 0, 0, 0.2);
    }

    .cta-button:hover {
      transform: translateY(-5px);
      box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
    }

    .particles-container {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      z-index: 1;
      pointer-events: none;
    }

    .particle {
      position: absolute;
      width: 10px;
      height: 10px;
      background: rgba(255, 255, 255, 0.7);
      border-radius: 50%;
      animation: fall linear infinite;
    }

    .winter .particle {
      background: white;
      border-radius: 50%;
    }

    .fall .particle {
      background: none;
      border-radius: 0;
      background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="%23ff9800" d="M10 0 L13 7 L20 7 L14 12 L17 20 L10 15 L3 20 L6 12 L0 7 L7 7 Z"/></svg>');
      background-size: contain;
      transform: rotate(0deg);
      animation: fallAndRotate linear infinite;
    }

    .limited-offer {
      position: absolute;
      bottom: 30px;
      left: 0;
      width: 100%;
      font-size: 1rem;
      font-weight: 500;
      padding: 10px;
      opacity: 0;
      animation: blinkEffect 3s infinite, fadeUp 0.8s ease forwards 1s;
    }

    .countdown {
      font-weight: 700;
      font-size: 1.2rem;
      margin-top: 10px;
    }

    .promotion-details {
      position: absolute;
      bottom: 80px;
      font-size: 0.9rem;
      opacity: 0.7;
      max-width: 80%;
      opacity: 0;
      animation: fadeUp 0.8s ease forwards 1.2s;
    }

    .illustration {
      position: absolute;
      width: 150px;
      height: 150px;
      z-index: 1;
      opacity: 0;
      animation: float 6s ease-in-out infinite, fadeIn 1s ease forwards 1.5s;
    }

    .illustration.top-left {
      top: 50px;
      left: 50px;
      animation-delay: 0.2s, 1.5s;
    }

    .illustration.top-right {
      top: 70px;
      right: 50px;
      animation-delay: 0.5s, 1.8s;
    }

    .illustration.bottom-left {
      bottom: 70px;
      left: 60px;
      animation-delay: 0.8s, 2.1s;
    }

    .illustration.bottom-right {
      bottom: 50px;
      right: 60px;
      animation-delay: 1.1s, 2.4s;
    }

    .winter .illustration {
      filter: drop-shadow(0 0 10px rgba(255, 255, 255, 0.3));
    }

    .fall .illustration {
      filter: drop-shadow(0 0 10px rgba(255, 215, 0, 0.3));
    }

    @keyframes fadeUp {
      to {
        opacity: 1;
        transform: translateY(0);
      }
    }

    @keyframes popIn {
      50% {
        transform: scale(1.1);
      }
      to {
        opacity: 1;
        transform: scale(1);
      }
    }

    @keyframes blinkEffect {
      0%, 100% {
        opacity: 1;
      }
      50% {
        opacity: 0.7;
      }
    }

    @keyframes fall {
      to {
        transform: translateY(700px);
      }
    }

    @keyframes fallAndRotate {
      to {
        transform: translateY(700px) rotate(360deg);
      }
    }

    @keyframes float {
      0%, 100% {
        transform: translateY(0);
      }
      50% {
        transform: translateY(-20px);
      }
    }

    @keyframes fadeIn {
      to {
        opacity: 1;
      }
    }

    @media (max-width: 700px) {
      .banner-title {
        font-size: 3rem;
      }
      
      .banner-subtitle {
        font-size: 1.2rem;
        max-width: 90%;
      }
      
      .discount-badge {
        font-size: 1.5rem;
        padding: 10px 25px;
      }
      
      .illustration {
        width: 100px;
        height: 100px;
      }
      
      .illustration.top-left {
        top: 30px;
        left: 30px;
      }
      
      .illustration.top-right {
        top: 40px;
        right: 30px;
      }
      
      .illustration.bottom-left {
        bottom: 100px;
        left: 30px;
      }
      
      .illustration.bottom-right {
        bottom: 100px;
        right: 30px;
      }
    }
  </style>
</head>
<body>
  <div class="banner-container winter">
    <div class="season-toggle">Change Season</div>
    
    <div class="particles-container"></div>
    
    <div class="illustration top-left">
      <svg viewBox="0 0 512 512" fill="white" class="winter-icon">
        <path d="M217.9 105.9L340.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L217.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-241.4c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.5 24 9.9zM192 373.2l118-118c2-2 3.1-4.7 3.1-7.5s-1.1-5.5-3.1-7.5l-118-118L192 373.2z"/>
      </svg>
    </div>
    
    <div class="illustration top-right">
      <svg viewBox="0 0 576 512" fill="white" class="winter-icon">
        <path d="M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.6 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z"/>
      </svg>
    </div>
    
    <div class="illustration bottom-left">
      <svg viewBox="0 0 512 512" fill="white" class="winter-icon">
        <path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"/>
      </svg>
    </div>
    
    <div class="illustration bottom-right">
      <svg viewBox="0 0 512 512" fill="white" class="winter-icon">
        <path d="M448 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM304 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-32 32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm-96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM448 416a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM304 448a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-32 32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm-96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-96-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM48 448a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM16 304a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm32-32a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm96-32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32-32a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm96-32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32-32a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zM496 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-480 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"/>
      </svg>
    </div>
    
    <div class="banner-content">
      <h1 class="banner-title">Winter Wonderland</h1>
      <p class="banner-subtitle">Embrace the chill with our collection of cozy essentials designed for those magical winter moments.</p>
      <div class="discount-badge">SAVE UP TO 40% OFF</div>
      <button class="cta-button">Explore Collection</button>
      
      <p class="promotion-details">Free shipping on orders over $50. Gift wrapping available.</p>
      <div class="limited-offer">
        Limited-time offer ends in:
        <div class="countdown" id="countdown">5 days, 12 hours</div>
      </div>
    </div>
  </div>

  <script>
    document.addEventListener('DOMContentLoaded', function() {
      const bannerContainer = document.querySelector('.banner-container');
      const seasonToggle = document.querySelector('.season-toggle');
      const bannerTitle = document.querySelector('.banner-title');
      const bannerSubtitle = document.querySelector('.banner-subtitle');
      const discountBadge = document.querySelector('.discount-badge');
      const particlesContainer = document.querySelector('.particles-container');
      const winterIcons = document.querySelectorAll('.winter-icon');
      
      // Create particles
      function createParticles(count) {
        particlesContainer.innerHTML = '';
        for (let i = 0; i < count; i++) {
          const particle = document.createElement('div');
          particle.classList.add('particle');
          
          // Random positioning
          const size = Math.random() * 8 + 4; // 4px to 12px
          particle.style.width = `${size}px`;
          particle.style.height = `${size}px`;
          particle.style.left = `${Math.random() * 100}%`;
          particle.style.top = `-${size}px`;
          
          // Random animation duration
          const duration = Math.random() * 10 + 5; // 5s to 15s
          particle.style.animationDuration = `${duration}s`;
          
          // Random animation delay
          particle.style.animationDelay = `${Math.random() * 5}s`;
          
          particlesContainer.appendChild(particle);
        }
      }
      
      // Initialize with winter theme
      createParticles(50);
      
      // Update countdown timer
      function updateCountdown() {
        const now = new Date();
        const endDate = new Date();
        
        // Set end date to 5 days from now
        endDate.setDate(now.getDate() + 5);
        endDate.setHours(now.getHours() + 12);
        
        const diff = endDate - now;
        
        const days = Math.floor(diff / (1000 * 60 * 60 * 24));
        const hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
        
        document.getElementById('countdown').textContent = `${days} days, ${hours} hours`;
      }
      
      updateCountdown();
      setInterval(updateCountdown, 60000); // Update every minute
      
      // Toggle between seasons
      let isWinter = true;
      
      seasonToggle.addEventListener('click', function() {
        isWinter = !isWinter;
        
        if (isWinter) {
          // Switch to winter theme
          bannerContainer.classList.remove('fall-bg');
          bannerContainer.classList.add('winter-bg');
          bannerContainer.classList.remove('fall');
          bannerContainer.classList.add('winter');
          
          bannerTitle.textContent = 'Winter Wonderland';
          bannerSubtitle.textContent = 'Embrace the chill with our collection of cozy essentials designed for those magical winter moments.';
          discountBadge.textContent = 'SAVE UP TO 40% OFF';
          seasonToggle.textContent = 'Change Season';
          
          // Update SVG colors
          winterIcons.forEach(icon => {
            icon.setAttribute('fill', 'white');
          });
          
          createParticles(50);
          
        } else {
          // Switch to fall theme
          bannerContainer.classList.remove('winter-bg');
          bannerContainer.classList.add('fall-bg');
          bannerContainer.classList.remove('winter');
          bannerContainer.classList.add('fall');
          
          bannerTitle.textContent = 'Autumn Harvest';
          bannerSubtitle.textContent = 'Fall in love with our autumn collection. Warm tones and cozy fabrics for the perfect seasonal transition.';
          discountBadge.textContent = 'HARVEST SALE 35% OFF';
          seasonToggle.textContent = 'Change Season';
          
          // Update SVG colors
          winterIcons.forEach(icon => {
            icon.setAttribute('fill', '#ffb74d');
          });
          
          createParticles(30);
        }
      });
      
      // CTA button hover effect
      const ctaButton = document.querySelector('.cta-button');
      ctaButton.addEventListener('mouseenter', function() {
        this.style.background = isWinter ? '#e0f7fa' : '#fff3e0';
      });
      
      ctaButton.addEventListener('mouseleave', function() {
        this.style.background = 'white';
      });
      
      // Prevent actual navigation
      ctaButton.addEventListener('click', function(e) {
        e.preventDefault();
        
        // Visual feedback for click
        this.style.transform = 'scale(0.95)';
        setTimeout(() => {
          this.style.transform = '';
        }, 150);
        
        // Toggle a message to show interaction
        discountBadge.textContent = 'COUPON APPLIED!';
        setTimeout(() => {
          discountBadge.textContent = isWinter ? 'SAVE UP TO 40% OFF' : 'HARVEST SALE 35% OFF';
        }, 1500);
      });
    });
  </script>
</body>
</html>

7) Ripple of Hope

Here's the code:

<html>
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    :root {
      --primary-color: #5B9AA0;
      --secondary-color: #D6EDFF;
      --accent-color: #F67280;
      --text-color: #2C3E50;
      --light-color: #F9F9F9;
    }
    
    * {
      box-sizing: border-box;
      margin: 0;
      padding: 0;
      font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    }
    
    body {
      background-color: var(--light-color);
      color: var(--text-color);
      height: 100%;
      width: 100%;
      display: flex;
      justify-content: center;
      align-items: center;
      overflow: hidden;
    }

    .banner-container {
      width: 100%;
      max-width: 700px;
      height: 650px;
      background: linear-gradient(120deg, #e6f7ff, #f9f0ff);
      border-radius: 16px;
      box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
      overflow: hidden;
      position: relative;
      padding: 30px;
      display: flex;
      flex-direction: column;
      justify-content: space-between;
    }

    .water-ripple {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      background: radial-gradient(circle at center, rgba(91, 154, 160, 0.2) 10%, transparent 60%);
      z-index: 0;
      opacity: 0.4;
      animation: ripple 8s infinite ease-in-out;
    }

    @keyframes ripple {
      0%, 100% {
        transform: scale(1);
      }
      50% {
        transform: scale(1.1);
      }
    }

    .banner-header {
      position: relative;
      z-index: 1;
      text-align: center;
    }

    .banner-title {
      font-size: 2.5rem;
      font-weight: 700;
      color: var(--primary-color);
      margin-bottom: 15px;
      position: relative;
      display: inline-block;
    }

    .banner-title::after {
      content: '';
      position: absolute;
      bottom: -8px;
      left: 50%;
      transform: translateX(-50%);
      width: 80px;
      height: 3px;
      background-color: var(--accent-color);
      border-radius: 50px;
    }

    .banner-subtitle {
      font-size: 1.1rem;
      font-weight: 400;
      color: var(--text-color);
      margin-bottom: 25px;
      line-height: 1.5;
      max-width: 85%;
      margin: 0 auto;
    }

    .banner-content {
      display: flex;
      flex-direction: column;
      align-items: center;
      position: relative;
      z-index: 1;
    }

    .illustration {
      width: 280px;
      height: 220px;
      margin: 20px 0;
      position: relative;
      background-color: rgba(255, 255, 255, 0.7);
      padding: 15px;
      border-radius: 12px;
      display: flex;
      justify-content: center;
      align-items: center;
      box-shadow: 0 6px 16px rgba(0, 0, 0, 0.07);
      overflow: hidden;
    }

    .children-container {
      display: flex;
      position: relative;
    }

    .child {
      width: 60px;
      height: 140px;
      position: relative;
      margin: 0 8px;
      transform-origin: bottom center;
      animation: sway 4s infinite ease-in-out;
    }

    .child:nth-child(2) {
      animation-delay: 0.5s;
    }

    .child:nth-child(3) {
      animation-delay: 1s;
    }

    @keyframes sway {
      0%, 100% {
        transform: rotate(-3deg);
      }
      50% {
        transform: rotate(3deg);
      }
    }

    .child-head {
      width: 40px;
      height: 40px;
      background-color: #ffdbac;
      border-radius: 50%;
      position: absolute;
      top: 0;
      left: 50%;
      transform: translateX(-50%);
    }

    .child-body {
      width: 30px;
      height: 60px;
      background-color: var(--accent-color);
      border-radius: 15px 15px 5px 5px;
      position: absolute;
      top: 35px;
      left: 50%;
      transform: translateX(-50%);
    }

    .child-legs {
      width: 40px;
      height: 40px;
      position: absolute;
      top: 90px;
      left: 50%;
      transform: translateX(-50%);
    }

    .leg {
      width: 10px;
      height: 40px;
      background-color: #ffdbac;
      border-radius: 5px;
      position: absolute;
    }

    .leg.left {
      left: 5px;
    }

    .leg.right {
      right: 5px;
    }

    .child:nth-child(1) .child-body {
      background-color: var(--accent-color);
    }

    .child:nth-child(2) .child-body {
      background-color: var(--primary-color);
    }

    .child:nth-child(3) .child-body {
      background-color: #7FB2D6;
    }

    .floating-bubbles {
      position: absolute;
      width: 100%;
      height: 100%;
      top: 0;
      left: 0;
      pointer-events: none;
    }

    .bubble {
      position: absolute;
      background-color: rgba(255, 255, 255, 0.6);
      border-radius: 50%;
      opacity: 0.6;
      animation: float 8s infinite ease-in-out;
    }

    @keyframes float {
      0% {
        transform: translateY(0) translateX(0);
        opacity: 0;
      }
      50% {
        opacity: 0.6;
      }
      100% {
        transform: translateY(-100px) translateX(20px);
        opacity: 0;
      }
    }

    .progress-container {
      width: 100%;
      background-color: rgba(255, 255, 255, 0.5);
      border-radius: 50px;
      height: 20px;
      margin: 30px 0 15px;
      position: relative;
      overflow: hidden;
      box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05) inset;
    }

    .progress-bar {
      height: 100%;
      width: 0%;
      background: linear-gradient(90deg, var(--primary-color), var(--accent-color));
      border-radius: 50px;
      transition: width 1.5s cubic-bezier(0.34, 1.56, 0.64, 1);
      position: relative;
      overflow: hidden;
    }

    .progress-bar::after {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      background: linear-gradient(
        90deg,
        rgba(255, 255, 255, 0) 0%,
        rgba(255, 255, 255, 0.2) 50%,
        rgba(255, 255, 255, 0) 100%
      );
      animation: shimmer 2s infinite;
    }

    @keyframes shimmer {
      0% {
        transform: translateX(-100%);
      }
      100% {
        transform: translateX(100%);
      }
    }

    .progress-text {
      display: flex;
      justify-content: space-between;
      width: 100%;
      font-size: 0.9rem;
      color: var(--text-color);
      margin-bottom: 20px;
    }

    .progress-label {
      font-weight: 600;
    }

    .stats {
      display: flex;
      justify-content: space-around;
      width: 100%;
      margin: 20px 0;
    }

    .stat {
      text-align: center;
      flex: 1;
      padding: 0 10px;
      position: relative;
    }

    .stat-value {
      font-size: 2rem;
      font-weight: 700;
      color: var(--primary-color);
      margin-bottom: 5px;
      position: relative;
      display: inline-block;
    }

    .stat-label {
      font-size: 0.9rem;
      color: var(--text-color);
      opacity: 0.8;
    }

    .stat::after {
      content: '';
      position: absolute;
      right: 0;
      top: 20%;
      height: 60%;
      width: 1px;
      background-color: rgba(0, 0, 0, 0.1);
    }

    .stat:last-child::after {
      display: none;
    }

    .action-container {
      width: 100%;
      display: flex;
      justify-content: center;
      margin-top: 20px;
      position: relative;
      z-index: 2;
    }

    .donate-btn {
      padding: 14px 35px;
      background-color: var(--accent-color);
      color: white;
      border: none;
      border-radius: 50px;
      font-size: 1.1rem;
      font-weight: 600;
      cursor: pointer;
      box-shadow: 0 4px 15px rgba(246, 114, 128, 0.4);
      transition: all 0.3s ease;
      position: relative;
      overflow: hidden;
    }

    .donate-btn:hover {
      transform: translateY(-2px);
      box-shadow: 0 6px 20px rgba(246, 114, 128, 0.5);
    }

    .donate-btn:active {
      transform: translateY(0);
    }

    .donate-btn::before {
      content: '';
      position: absolute;
      top: 0;
      left: -100%;
      width: 100%;
      height: 100%;
      background: linear-gradient(
        90deg,
        transparent,
        rgba(255, 255, 255, 0.2),
        transparent
      );
      transition: all 0.4s ease;
    }

    .donate-btn:hover::before {
      left: 100%;
    }

    @media (max-width: 500px) {
      .banner-title {
        font-size: 2rem;
      }
      
      .banner-subtitle {
        font-size: 0.95rem;
      }
      
      .illustration {
        width: 240px;
        height: 180px;
      }
      
      .stat-value {
        font-size: 1.6rem;
      }
      
      .child {
        width: 50px;
        height: 120px;
      }
      
      .child-head {
        width: 35px;
        height: 35px;
      }
      
      .child-body {
        width: 25px;
        height: 50px;
      }
      
      .banner-container {
        padding: 20px;
        height: 600px;
      }
    }

    .heartbeat {
      animation: heartbeat 1.5s infinite;
    }

    @keyframes heartbeat {
      0%, 100% {
        transform: scale(1);
      }
      50% {
        transform: scale(1.1);
      }
    }
  </style>
</head>
<body>
  <div class="banner-container">
    <div class="water-ripple"></div>
    
    <div class="banner-header">
      <h1 class="banner-title">Water for Children</h1>
      <p class="banner-subtitle">Help us provide clean drinking water to rural communities where children walk miles each day just to collect water that makes them sick.</p>
    </div>
    
    <div class="banner-content">
      <div class="illustration">
        <div class="children-container">
          <div class="child">
            <div class="child-head"></div>
            <div class="child-body"></div>
            <div class="child-legs">
              <div class="leg left"></div>
              <div class="leg right"></div>
            </div>
          </div>
          <div class="child">
            <div class="child-head"></div>
            <div class="child-body"></div>
            <div class="child-legs">
              <div class="leg left"></div>
              <div class="leg right"></div>
            </div>
          </div>
          <div class="child">
            <div class="child-head"></div>
            <div class="child-body"></div>
            <div class="child-legs">
              <div class="leg left"></div>
              <div class="leg right"></div>
            </div>
          </div>
        </div>
        <div class="floating-bubbles">
          <div class="bubble" style="width: 20px; height: 20px; left: 20%; top: 20%; animation-delay: 0s;"></div>
          <div class="bubble" style="width: 15px; height: 15px; left: 80%; top: 60%; animation-delay: 2s;"></div>
          <div class="bubble" style="width: 25px; height: 25px; left: 50%; top: 50%; animation-delay: 4s;"></div>
          <div class="bubble" style="width: 10px; height: 10px; left: 30%; top: 70%; animation-delay: 3s;"></div>
          <div class="bubble" style="width: 18px; height: 18px; left: 70%; top: 30%; animation-delay: 1s;"></div>
        </div>
      </div>
      
      <div class="stats">
        <div class="stat">
          <h3 class="stat-value" id="stat-wells">32</h3>
          <p class="stat-label">Wells Built</p>
        </div>
        <div class="stat">
          <h3 class="stat-value" id="stat-people">4,870</h3>
          <p class="stat-label">People Helped</p>
        </div>
        <div class="stat">
          <h3 class="stat-value" id="stat-villages">18</h3>
          <p class="stat-label">Villages Reached</p>
        </div>
      </div>
      
      <div class="progress-text">
        <span class="progress-label">Current Campaign Progress:</span>
        <span class="progress-value" id="progress-percent">0%</span>
      </div>
      
      <div class="progress-container">
        <div class="progress-bar" id="progress-bar"></div>
      </div>
      
      <div class="progress-text">
        <span>$0</span>
        <span id="target-amount">$50,000</span>
      </div>
    </div>
    
    <div class="action-container">
      <button class="donate-btn" id="donate-btn">Donate Now</button>
    </div>
  </div>

  <script>
    document.addEventListener('DOMContentLoaded', function() {
      // Set up donation progress animation
      const progressBar = document.getElementById('progress-bar');
      const progressPercent = document.getElementById('progress-percent');
      const donateBtn = document.getElementById('donate-btn');
      const statWells = document.getElementById('stat-wells');
      const statPeople = document.getElementById('stat-people');
      const statVillages = document.getElementById('stat-villages');
      
      // Animated counter function
      function animateCounter(element, start, end, duration) {
        let startTime = null;
        const step = (timestamp) => {
          if (!startTime) startTime = timestamp;
          const progress = Math.min((timestamp - startTime) / duration, 1);
          let value = Math.floor(progress * (end - start) + start);
          
          // Format with commas if it's a large number
          if (value > 999) {
            value = value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
          }
          
          element.innerText = value;
          if (progress < 1) {
            window.requestAnimationFrame(step);
          }
        };
        window.requestAnimationFrame(step);
      }
      
      // Initial progress (simulated)
      const currentProgress = 68; // 68% of goal reached
      
      // Animate statistics on load
      setTimeout(() => {
        progressBar.style.width = `${currentProgress}%`;
        progressPercent.textContent = `${currentProgress}%`;
        
        animateCounter(statWells, 0, 32, 2000);
        animateCounter(statPeople, 0, 4870, 2500);
        animateCounter(statVillages, 0, 18, 1800);
      }, 500);
      
      // Interactive donation button
      donateBtn.addEventListener('click', function(e) {
        e.preventDefault();
        
        // Add heartbeat effect on click
        this.classList.add('heartbeat');
        setTimeout(() => {
          this.classList.remove('heartbeat');
        }, 1000);
        
        // Simulate donation increment (for demo purposes)
        let newProgress = Math.min(currentProgress + 5, 100);
        progressBar.style.width = `${newProgress}%`;
        progressPercent.textContent = `${newProgress}%`;
        
        // Update stats for visual feedback
        let currentWells = parseInt(statWells.textContent);
        let currentPeople = parseInt(statPeople.textContent.replace(/,/g, ''));
        let currentVillages = parseInt(statVillages.textContent);
        
        animateCounter(statWells, currentWells, currentWells + 1, 1000);
        animateCounter(statPeople, currentPeople, currentPeople + 150, 1000);
        if (newProgress % 15 === 0) {
          animateCounter(statVillages, currentVillages, currentVillages + 1, 1000);
        }
      });
      
      // Add random bubble animations for visual interest
      function createBubble() {
        const bubble = document.createElement('div');
        bubble.classList.add('bubble');
        
        const size = Math.random() * 15 + 10;
        const left = Math.random() * 100;
        const animationDuration = Math.random() * 4 + 4;
        
        bubble.style.width = `${size}px`;
        bubble.style.height = `${size}px`;
        bubble.style.left = `${left}%`;
        bubble.style.top = '100%';
        bubble.style.animationDuration = `${animationDuration}s`;
        
        document.querySelector('.floating-bubbles').appendChild(bubble);
        
        setTimeout(() => {
          bubble.remove();
        }, animationDuration * 1000);
      }
      
      // Create bubbles periodically
      setInterval(createBubble, 2000);
      
      // Initial bubbles
      for (let i = 0; i < 5; i++) {
        setTimeout(createBubble, i * 500);
      }
    });
  </script>
</body>
</html>

8) Futuristic Product Launch Banner

Here's the code:

<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>NovaTech X1 Launch</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=Syncopate:wght@400;700&display=swap');
        
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Space Grotesk', sans-serif;
        }
        
        body {
            background-color: #0a0a0a;
            color: #f0f0f0;
            width: 100%;
            height: 100%;
            overflow: hidden;
        }
        
        .container {
            width: 100%;
            max-width: 700px;
            height: 700px;
            margin: 0 auto;
            position: relative;
            overflow: hidden;
            display: flex;
            flex-direction: column;
            perspective: 1000px;
        }
        
        .banner {
            width: 100%;
            height: 100%;
            background: linear-gradient(135deg, #10101a, #0a0a0a);
            border-radius: 12px;
            padding: 30px;
            position: relative;
            display: flex;
            flex-direction: column;
            justify-content: space-between;
            z-index: 1;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.6);
            transition: all 0.5s ease;
            opacity: 0;
            transform: translateY(30px);
        }
        
        .banner.loaded {
            opacity: 1;
            transform: translateY(0);
        }
        
        .grid-pattern {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-image: 
                linear-gradient(rgba(42, 252, 152, 0.05) 1px, transparent 1px),
                linear-gradient(90deg, rgba(42, 252, 152, 0.05) 1px, transparent 1px);
            background-size: 20px 20px;
            z-index: -1;
        }
        
        .header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 20px;
        }
        
        .logo {
            font-family: 'Syncopate', sans-serif;
            font-weight: 700;
            font-size: 20px;
            letter-spacing: -1px;
            color: #fff;
            display: flex;
            align-items: center;
        }
        
        .logo span {
            color: #2AFCC8;
        }
        
        .neon-circle {
            width: 12px;
            height: 12px;
            background: #2AFCC8;
            border-radius: 50%;
            margin-right: 10px;
            box-shadow: 0 0 10px #2AFCC8, 0 0 20px #2AFCC8;
            animation: pulse 2s infinite;
        }
        
        .date {
            font-size: 14px;
            opacity: 0.7;
            font-family: 'Space Grotesk', sans-serif;
            font-weight: 300;
        }
        
        .product {
            position: relative;
            flex: 1;
            display: flex;
            flex-direction: column;
            justify-content: center;
            z-index: 2;
        }
        
        .tagline {
            font-size: 16px;
            color: #2AFCC8;
            margin-bottom: 15px;
            transform: translateY(20px);
            opacity: 0;
            animation: fadeInUp 0.6s ease forwards;
            animation-delay: 0.6s;
            text-transform: uppercase;
            letter-spacing: 4px;
        }
        
        .title {
            font-family: 'Syncopate', sans-serif;
            font-size: 56px;
            font-weight: 700;
            margin-bottom: 20px;
            line-height: 1;
            background: linear-gradient(90deg, #fff, #2AFCC8);
            -webkit-background-clip: text;
            background-clip: text;
            -webkit-text-fill-color: transparent;
            transform: translateY(20px);
            opacity: 0;
            animation: fadeInUp 0.6s ease forwards;
            animation-delay: 0.8s;
        }
        
        .description {
            font-size: 18px;
            font-weight: 300;
            line-height: 1.6;
            margin-bottom: 30px;
            max-width: 80%;
            color: rgba(255, 255, 255, 0.8);
            transform: translateY(20px);
            opacity: 0;
            animation: fadeInUp 0.6s ease forwards;
            animation-delay: 1s;
        }
        
        .specs {
            display: flex;
            gap: 20px;
            margin-bottom: 40px;
            transform: translateY(20px);
            opacity: 0;
            animation: fadeInUp 0.6s ease forwards;
            animation-delay: 1.2s;
        }
        
        .spec-item {
            background: rgba(255, 255, 255, 0.03);
            border: 1px solid rgba(255, 255, 255, 0.05);
            border-radius: 8px;
            padding: 15px;
            min-width: 120px;
            backdrop-filter: blur(10px);
            transition: all 0.3s ease;
            cursor: pointer;
            position: relative;
            overflow: hidden;
        }
        
        .spec-item:hover {
            background: rgba(42, 252, 200, 0.1);
            border-color: rgba(42, 252, 200, 0.3);
            transform: translateY(-5px);
        }
        
        .spec-item:hover::after {
            opacity: 1;
        }
        
        .spec-item::after {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: linear-gradient(90deg, transparent, rgba(42, 252, 200, 0.1), transparent);
            transform: translateX(-100%);
            animation: shimmer 2s infinite;
            opacity: 0;
            transition: opacity 0.3s ease;
        }
        
        .spec-item h3 {
            font-size: 14px;
            color: #2AFCC8;
            margin-bottom: 5px;
        }
        
        .spec-item p {
            font-size: 18px;
            font-weight: 500;
        }
        
        .tech-details {
            position: absolute;
            bottom: 0;
            left: 0;
            width: 100%;
            padding: 15px;
            background: rgba(10, 10, 10, 0.9);
            border-radius: 8px;
            transform: translateY(100%);
            transition: transform 0.3s ease;
            border-top: 1px solid rgba(42, 252, 200, 0.3);
            backdrop-filter: blur(5px);
            z-index: 10;
            font-size: 14px;
        }
        
        .spec-item:hover .tech-details {
            transform: translateY(0);
        }
        
        .cta {
            display: flex;
            align-items: center;
            gap: 20px;
            transform: translateY(20px);
            opacity: 0;
            animation: fadeInUp 0.6s ease forwards;
            animation-delay: 1.4s;
        }
        
        .cta-button {
            background: linear-gradient(90deg, #2AFCC8, #2AC8FC);
            color: #0a0a0a;
            border: none;
            padding: 15px 30px;
            border-radius: 30px;
            font-weight: 600;
            font-size: 16px;
            cursor: pointer;
            position: relative;
            overflow: hidden;
            z-index: 1;
            transition: all 0.3s ease;
        }
        
        .cta-button:hover {
            transform: translateY(-2px);
            box-shadow: 0 10px 20px rgba(42, 252, 200, 0.3);
        }
        
        .cta-button::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: linear-gradient(90deg, #2AC8FC, #2AFCC8);
            z-index: -1;
            transition: opacity 0.3s ease;
            opacity: 0;
        }
        
        .cta-button:hover::before {
            opacity: 1;
        }
        
        .learn-more {
            color: #fff;
            text-decoration: none;
            font-size: 16px;
            position: relative;
            transition: all 0.3s ease;
        }
        
        .learn-more::after {
            content: '';
            position: absolute;
            bottom: -5px;
            left: 0;
            width: 100%;
            height: 1px;
            background: #2AFCC8;
            transform: scaleX(0);
            transform-origin: right;
            transition: transform 0.3s ease;
        }
        
        .learn-more:hover {
            color: #2AFCC8;
        }
        
        .learn-more:hover::after {
            transform: scaleX(1);
            transform-origin: left;
        }
        
        .product-image {
            position: absolute;
            right: -80px;
            bottom: 50px;
            width: 50%;
            max-width: 350px;
            transform: translateY(50px) rotate(10deg);
            opacity: 0;
            filter: drop-shadow(0 10px 20px rgba(42, 252, 200, 0.3));
            z-index: 0;
            animation: fadeInProduct 1s ease forwards;
            animation-delay: 1.6s;
        }
        
        .particles {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            overflow: hidden;
            z-index: 0;
        }
        
        .particle {
            position: absolute;
            width: 5px;
            height: 5px;
            border-radius: 50%;
            background: rgba(42, 252, 200, 0.6);
            box-shadow: 0 0 10px rgba(42, 252, 200, 0.8);
            animation: float 10s linear infinite;
        }
        
        @keyframes float {
            0% {
                transform: translateY(0) translateX(0);
                opacity: 0;
            }
            10% {
                opacity: 1;
            }
            90% {
                opacity: 1;
            }
            100% {
                transform: translateY(-700px) translateX(50px);
                opacity: 0;
            }
        }
        
        @keyframes pulse {
            0% {
                box-shadow: 0 0 10px #2AFCC8, 0 0 20px #2AFCC8;
            }
            50% {
                box-shadow: 0 0 15px #2AFCC8, 0 0 30px #2AFCC8;
            }
            100% {
                box-shadow: 0 0 10px #2AFCC8, 0 0 20px #2AFCC8;
            }
        }
        
        @keyframes fadeInUp {
            from {
                opacity: 0;
                transform: translateY(20px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }
        
        @keyframes fadeInProduct {
            from {
                opacity: 0;
                transform: translateY(50px) rotate(10deg);
            }
            to {
                opacity: 1;
                transform: translateY(0) rotate(0deg);
            }
        }
        
        @keyframes shimmer {
            0% {
                transform: translateX(-100%);
            }
            100% {
                transform: translateX(100%);
            }
        }
        
        @media (max-width: 700px) {
            .container {
                height: auto;
                min-height: 700px;
            }
            
            .banner {
                padding: 20px;
            }
            
            .title {
                font-size: 40px;
            }
            
            .description {
                font-size: 16px;
                max-width: 100%;
            }
            
            .specs {
                flex-wrap: wrap;
            }
            
            .spec-item {
                min-width: calc(50% - 10px);
            }
            
            .product-image {
                position: relative;
                right: 0;
                bottom: 0;
                width: 80%;
                max-width: 250px;
                margin: 20px auto 0;
            }
            
            .cta {
                flex-direction: column;
                align-items: flex-start;
            }
        }
        
        @media (max-width: 480px) {
            .title {
                font-size: 32px;
            }
            
            .spec-item {
                min-width: 100%;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="banner">
            <div class="grid-pattern"></div>
            <div class="particles" id="particles"></div>
            
            <div class="header">
                <div class="logo">
                    <div class="neon-circle"></div>
                    NOVA<span>TECH</span>
                </div>
                <div class="date">LAUNCHING OCT 30, 2023</div>
            </div>
            
            <div class="product">
                <div class="tagline">The future is now</div>
                <h1 class="title">NOVA X1</h1>
                <p class="description">Introducing the industry's first quantum-enhanced neural processor. The X1 breaks computational barriers with 30x faster AI processing and 80% less power consumption.</p>
                
                <div class="specs">
                    <div class="spec-item">
                        <h3>PERFORMANCE</h3>
                        <p>180 TFLOPS</p>
                        <div class="tech-details">
                            Built on 3nm architecture with 12-core quantum acceleration matrix
                        </div>
                    </div>
                    <div class="spec-item">
                        <h3>EFFICIENCY</h3>
                        <p>12W TDP</p>
                        <div class="tech-details">
                            Revolutionary carbon nanotube heat dissipation system with zero throttling
                        </div>
                    </div>
                    <div class="spec-item">
                        <h3>AI CORES</h3>
                        <p>128 NPUs</p>
                        <div class="tech-details">
                            Dedicated neural processing units with quantum entanglement acceleration
                        </div>
                    </div>
                </div>
                
                <div class="cta">
                    <button class="cta-button" id="preorderBtn">PRE-ORDER NOW</button>
                    <a href="#" class="learn-more">Explore technical specs</a>
                </div>
            </div>
            
            <img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgdmlld0JveD0iMCAwIDUwMCA1MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPGRlZnM+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9ImdyYWQxIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIxMDAlIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzJBRkNDOCIgc3RvcC1vcGFjaXR5PSIwLjgiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjMkFDOEZDIiBzdG9wLW9wYWNpdHk9IjAuOCIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iZ3JhZDIiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjEwMCUiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjMkFGQ0M4IiBzdG9wLW9wYWNpdHk9IjAuMyIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMyQUM4RkMiIHN0b3Atb3BhY2l0eT0iMC4zIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogIDwvZGVmcz4KICAgIDxyZWN0IHg9IjE1MCIgeT0iMTAwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjMwMCIgcng9IjIwIiByeT0iMjAiIGZpbGw9IiMxNTE1MjAiIHN0cm9rZT0idXJsKCNncmFkMSkiIHN0cm9rZS13aWR0aD0iMiIvPgogICAgPHJlY3QgeD0iMTgwIiB5PSIxMzAiIHdpZHRoPSIxNDAiIGhlaWdodD0iMjQwIiByeD0iNSIgcnk9IjUiIGZpbGw9InVybCgjZ3JhZDIpIiBmaWxsLW9wYWNpdHk9IjAuMSIvPgogICAgPGNpcmNsZSBjeD0iMjUwIiBjeT0iMTIwIiByPSI1IiBmaWxsPSIjMkFGQ0M4Ii8+CiAgICA8cmVjdCB4PSIyMDAiIHk9IjM4MCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMCIgcng9IjUiIHJ5PSI1IiBmaWxsPSIjMkFGQ0M4IiBmaWxsLW9wYWNpdHk9IjAuNyIvPgogICAgCiAgICA8Y2lyY2xlIGN4PSIxNzAiIGN5PSIxODAiIHI9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9IiMyQUZDQzgiIHN0cm9rZS13aWR0aD0iMiIvPgogICAgPGNpcmNsZSBjeD0iMTcwIiBjeT0iMjIwIiByPSIxMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMkFGQ0M4IiBzdHJva2Utd2lkdGg9IjIiLz4KICAgIDxjaXJjbGUgY3g9IjE3MCIgY3k9IjI2MCIgcj0iMTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzJBRkNDOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxNzAiIGN5PSIzMDAiIHI9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9IiMyQUZDQzgiIHN0cm9rZS13aWR0aD0iMiIvPgogICAgCiAgICA8Y2lyY2xlIGN4PSIzMzAiIGN5PSIxODAiIHI9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9IiMyQUZDQzgiIHN0cm9rZS13aWR0aD0iMiIvPgogICAgPGNpcmNsZSBjeD0iMzMwIiBjeT0iMjIwIiByPSIxMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMkFGQ0M4IiBzdHJva2Utd2lkdGg9IjIiLz4KICAgIDxjaXJjbGUgY3g9IjMzMCIgY3k9IjI2MCIgcj0iMTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzJBRkNDOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIzMzAiIGN5PSIzMDAiIHI9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9IiMyQUZDQzgiIHN0cm9rZS13aWR0aD0iMiIvPgogICAgCiAgICA8Y2lyY2xlIGN4PSIyNTAiIGN5PSIyMzAiIHI9IjQ1IiBmaWxsPSJub25lIiBzdHJva2U9InVybCgjZ3JhZDEpIiBzdHJva2Utd2lkdGg9IjMiLz4KICAgIDxjaXJjbGUgY3g9IjI1MCIgY3k9IjIzMCIgcj0iMzAiIGZpbGw9Im5vbmUiIHN0cm9rZT0idXJsKCNncmFkMSkiIHN0cm9rZS13aWR0aD0iMiIvPgogICAgPGNpcmNsZSBjeD0iMjUwIiBjeT0iMjMwIiByPSIxNSIgZmlsbD0idXJsKCNncmFkMSkiLz4KICAgIDxjaXJjbGUgY3g9IjI3MCIgY3k9IjIxNSIgcj0iNCIgZmlsbD0iI2ZmZiIvPgogICAgCiAgICA8cmVjdCB4PSIxOTAiIHk9IjE0MCIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIyMCIgcng9IjUiIHJ5PSI1IiBmaWxsPSIjMkFGQ0M4IiBmaWxsLW9wYWNpdHk9IjAuMSIvPgogICAgPHBhdGggZD0iTTIyMCAzMTAgTDI4MCAzMTAgTDI2MCAzNDAgTDI0MCAzNDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzJBRkNDOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICA8bGluZSB4MT0iMTkwIiB5MT0iMzQwIiB4Mj0iMzEwIiB5Mj0iMzQwIiBzdHJva2U9IiMyQUZDQzgiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWRhc2hhcnJheT0iNCIvPgogICAgCiAgICA8IS0tIERlY29yYXRpdmUgbGluZXMgYW5kIGNpcmN1aXRzIC0tPgogICAgPHBhdGggZD0iTTEwMCAxNTAgTDEzMCAxNTAgTDEzMCAxODAgTDE1MCAxODAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzJBRkNDOCIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2Utb3BhY2l0eT0iMC41Ii8+CiAgICA8cGF0aCBkPSJNMTAwIDIzMCBMMTMwIDIzMCBMMTMwIDI2MCBMMTUwIDI2MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMkFGQ0M4IiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1vcGFjaXR5PSIwLjUiLz4KICAgIDxwYXRoIGQ9Ik00MDAgMjAwIEwzNzAgMjAwIEwzNzAgMjIwIEwzNTAgMjIwIiBmaWxsPSJub25lIiBzdHJva2U9IiMyQUZDQzgiIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLW9wYWNpdHk9IjAuNSIvPgogICAgPHBhdGggZD0iTTQwMCAyODAgTDM3MCAyODAgTDM3MCAzMDAgTDM1MCAzMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzJBRkNDOCIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2Utb3BhY2l0eT0iMC41Ii8+CiAgICAKICAgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjE1MCIgcj0iNSIgZmlsbD0iIzJBRkNDOCIgZmlsbC1vcGFjaXR5PSIwLjUiLz4KICAgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjIzMCIgcj0iNSIgZmlsbD0iIzJBRkNDOCIgZmlsbC1vcGFjaXR5PSIwLjUiLz4KICAgIDxjaXJjbGUgY3g9IjQwMCIgY3k9IjIwMCIgcj0iNSIgZmlsbD0iIzJBRkNDOCIgZmlsbC1vcGFjaXR5PSIwLjUiLz4KICAgIDxjaXJjbGUgY3g9IjQwMCIgY3k9IjI4MCIgcj0iNSIgZmlsbD0iIzJBRkNDOCIgZmlsbC1vcGFjaXR5PSIwLjUiLz4KPC9zdmc+" class="product-image" alt="NovaX1 Neural Processor">
        </div>
    </div>

    <script>
        document.addEventListener('DOMContentLoaded', function() {
            // Show banner with animation
            setTimeout(function() {
                document.querySelector('.banner').classList.add('loaded');
            }, 300);
            
            // Create particles
            const particlesContainer = document.getElementById('particles');
            for (let i = 0; i < 20; i++) {
                createParticle();
            }
            
            function createParticle() {
                const particle = document.createElement('div');
                particle.classList.add('particle');
                
                // Random position
                const x = Math.random() * 100;
                const y = Math.random() * 100;
                particle.style.left = `${x}%`;
                particle.style.bottom = `${-5}%`;
                
                // Random size
                const size = Math.random() * 3 + 2;
                particle.style.width = `${size}px`;
                particle.style.height = `${size}px`;
                
                // Random opacity
                particle.style.opacity = Math.random() * 0.5 + 0.3;
                
                // Random animation duration
                const duration = Math.random() * 15 + 10;
                particle.style.animationDuration = `${duration}s`;
                
                // Random delay
                const delay = Math.random() * 5;
                particle.style.animationDelay = `${delay}s`;
                
                particlesContainer.appendChild(particle);
                
                // Remove particle after animation and create a new one
                setTimeout(() => {
                    particle.remove();
                    createParticle();
                }, (duration + delay) * 1000);
            }
            
            // CTA Button Effect
            const preorderBtn = document.getElementById('preorderBtn');
            preorderBtn.addEventListener('click', function(e) {
                e.preventDefault();
                
                // Create a ripple effect
                const ripple = document.createElement('div');
                ripple.style.position = 'absolute';
                ripple.style.width = '10px';
                ripple.style.height = '10px';
                ripple.style.borderRadius = '50%';
                ripple.style.backgroundColor = 'rgba(255, 255, 255, 0.6)';
                ripple.style.transform = 'scale(0)';
                ripple.style.transition = 'all 0.6s ease';
                
                // Get click position
                const rect = this.getBoundingClientRect();
                const x = e.clientX - rect.left;
                const y = e.clientY - rect.top;
                
                ripple.style.left = `${x}px`;
                ripple.style.top = `${y}px`;
                
                this.appendChild(ripple);
                
                // Animate ripple
                setTimeout(() => {
                    ripple.style.transform = 'scale(20)';
                    ripple.style.opacity = '0';
                    
                    setTimeout(() => {
                        ripple.remove();
                    }, 600);
                    
                    // Change button text
                    this.textContent = 'RESERVED';
                    this.style.background = '#2AFCC8';
                    
                    // Reset after 2 seconds
                    setTimeout(() => {
                        this.textContent = 'PRE-ORDER NOW';
                        this.style.background = 'linear-gradient(90deg, #2AFCC8, #2AC8FC)';
                    }, 2000);
                    
                }, 10);
            });
            
            // Parallax effect on product image
            document.addEventListener('mousemove', function(e) {
                const container = document.querySelector('.container');
                const rect = container.getBoundingClientRect();
                
                if (e.clientX > rect.left && e.clientX < rect.right &&
                    e.clientY > rect.top && e.clientY < rect.bottom) {
                    
                    const xPos = (e.clientX - rect.left) / rect.width - 0.5;
                    const yPos = (e.clientY - rect.top) / rect.height - 0.5;
                    
                    const productImage = document.querySelector('.product-image');
                    productImage.style.transform = `translateY(${yPos * -10}px) translateX(${xPos * -10}px)`;
                }
            });
        });
    </script>
</body>
</html>

9) 30-Minute Farm Delivery

Here's the code:

<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Fresh Harvest Delivery</title>
    <style>
        @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700&family=Poppins:wght@400;500;600&display=swap');

        :root {
            --primary: #FF6B35;
            --secondary: #2EC4B6;
            --accent: #FFBF69;
            --dark: #252422;
            --light: #FFFCF9;
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: 'Poppins', sans-serif;
            background-color: var(--light);
            color: var(--dark);
            height: 100%;
            width: 100%;
            overflow: hidden;
        }

        .container {
            width: 100%;
            height: 100vh;
            max-width: 700px;
            max-height: 700px;
            margin: 0 auto;
            position: relative;
            overflow: hidden;
        }

        .banner {
            width: 100%;
            height: 100%;
            display: flex;
            flex-direction: column;
            background-color: var(--light);
            position: relative;
            padding: 2rem;
            overflow: hidden;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
        }

        .banner::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: linear-gradient(45deg, rgba(255, 191, 105, 0.15) 0%, rgba(46, 196, 182, 0.15) 100%);
            z-index: 0;
        }

        .header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 1.5rem;
            position: relative;
            z-index: 1;
        }

        .logo {
            font-family: 'Playfair Display', serif;
            font-size: 1.8rem;
            color: var(--dark);
            display: flex;
            align-items: center;
            gap: 10px;
        }

        .logo svg {
            height: 30px;
            width: 30px;
            fill: var(--primary);
        }

        .content {
            flex: 1;
            display: flex;
            flex-direction: column;
            justify-content: center;
            position: relative;
            z-index: 1;
        }

        .headline {
            font-family: 'Playfair Display', serif;
            font-size: 3rem;
            line-height: 1.2;
            margin-bottom: 1rem;
            color: var(--dark);
            position: relative;
        }

        .headline span {
            color: var(--primary);
            position: relative;
        }

        .headline span::after {
            content: '';
            position: absolute;
            left: 0;
            bottom: 5px;
            width: 100%;
            height: 8px;
            background-color: var(--accent);
            z-index: -1;
            transform: skewX(-5deg);
        }

        .subheadline {
            font-size: 1.1rem;
            margin-bottom: 2rem;
            max-width: 80%;
            color: var(--dark);
            opacity: 0.9;
        }

        .cta {
            background-color: var(--primary);
            color: white;
            border: none;
            padding: 1rem 2rem;
            font-size: 1rem;
            font-weight: 600;
            border-radius: 50px;
            cursor: pointer;
            box-shadow: 0 4px 15px rgba(255, 107, 53, 0.3);
            transition: all 0.3s ease;
            position: relative;
            overflow: hidden;
            z-index: 1;
            max-width: fit-content;
        }

        .cta:hover {
            transform: translateY(-3px);
            box-shadow: 0 6px 20px rgba(255, 107, 53, 0.4);
        }

        .cta::before {
            content: '';
            position: absolute;
            top: 0;
            left: -100%;
            width: 100%;
            height: 100%;
            background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
            transition: left 0.7s ease;
            z-index: -1;
        }

        .cta:hover::before {
            left: 100%;
        }

        .food-carousel {
            position: absolute;
            bottom: 2rem;
            right: 2rem;
            display: flex;
            gap: 1.5rem;
            z-index: 2;
        }

        .food-item {
            width: 80px;
            height: 80px;
            border-radius: 50%;
            overflow: hidden;
            position: relative;
            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
            cursor: pointer;
            transition: all 0.3s ease;
        }

        .food-item:hover {
            transform: translateY(-5px) scale(1.05);
            box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);
        }

        .food-item img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        .food-item::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: linear-gradient(to top, rgba(0, 0, 0, 0.6), transparent);
            opacity: 0;
            transition: opacity 0.3s ease;
        }

        .food-item:hover::before {
            opacity: 1;
        }

        .food-popup {
            position: absolute;
            bottom: 120px;
            right: 50px;
            background-color: white;
            padding: 1.5rem;
            border-radius: 10px;
            box-shadow: 0 15px 35px rgba(0, 0, 0, 0.15);
            opacity: 0;
            transform: translateY(20px);
            pointer-events: none;
            transition: all 0.3s ease;
            width: 300px;
            z-index: 10;
        }

        .food-popup.active {
            opacity: 1;
            transform: translateY(0);
        }

        .food-popup h3 {
            font-family: 'Playfair Display', serif;
            font-size: 1.4rem;
            margin-bottom: 0.5rem;
            color: var(--dark);
        }

        .food-popup p {
            font-size: 0.9rem;
            margin-bottom: 1rem;
            color: var(--dark);
            opacity: 0.8;
        }

        .food-popup .price {
            font-weight: 600;
            color: var(--primary);
            font-size: 1.2rem;
        }

        .food-popup .add-btn {
            background-color: var(--secondary);
            color: white;
            border: none;
            padding: 0.5rem 1rem;
            font-size: 0.9rem;
            border-radius: 5px;
            cursor: pointer;
            transition: all 0.3s ease;
            margin-top: 0.5rem;
        }

        .food-popup .add-btn:hover {
            background-color: #25a99d;
        }

        .food-image-large {
            position: absolute;
            top: 0;
            right: 0;
            width: 40%;
            height: 100%;
            overflow: hidden;
            z-index: 0;
            opacity: 0.8;
        }

        .food-image-large img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            transform: scale(1.1);
            animation: slowZoom 20s infinite alternate;
        }

        .food-image-large::after {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: linear-gradient(to right, var(--light), transparent);
        }

        .special-badge {
            position: absolute;
            top: 2rem;
            right: 2rem;
            background-color: var(--accent);
            color: var(--dark);
            font-weight: 600;
            padding: 0.5rem 1rem;
            border-radius: 50px;
            transform: rotate(5deg);
            box-shadow: 0 4px 10px rgba(255, 191, 105, 0.4);
            z-index: 3;
            animation: pulse 2s infinite;
        }

        @keyframes pulse {
            0% {
                transform: rotate(5deg) scale(1);
            }
            50% {
                transform: rotate(5deg) scale(1.05);
            }
            100% {
                transform: rotate(5deg) scale(1);
            }
        }

        @keyframes slowZoom {
            0% {
                transform: scale(1);
            }
            100% {
                transform: scale(1.1);
            }
        }

        @media (max-width: 600px) {
            .banner {
                padding: 1.5rem;
            }

            .headline {
                font-size: 2.2rem;
            }

            .subheadline {
                font-size: 1rem;
                max-width: 100%;
            }

            .food-image-large {
                opacity: 0.3;
                width: 100%;
            }

            .food-carousel {
                right: 1rem;
                bottom: 1rem;
                gap: 1rem;
            }

            .food-item {
                width: 60px;
                height: 60px;
            }

            .food-popup {
                width: 250px;
                right: 20px;
                bottom: 90px;
            }

            .special-badge {
                top: 1rem;
                right: 1rem;
                font-size: 0.8rem;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="banner">
            <div class="header">
                <div class="logo">
                    <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
                        <path d="M3 22L12 2L21 22H3Z"/>
                        <circle cx="12" cy="14" r="3"/>
                    </svg>
                    Fresh Harvest
                </div>
            </div>
            
            <div class="content">
                <h1 class="headline">Farm-to-Door in <span>30 Minutes</span></h1>
                <p class="subheadline">Seasonal ingredients, chef-crafted recipes, and zero-waste packaging delivered right when you need it.</p>
                <button class="cta">Order Farm Fresh</button>
            </div>

            <div class="special-badge">30% OFF FIRST ORDER</div>
            
            <div class="food-image-large">
                <img src="https://images.unsplash.com/photo-1540189549336-e6e99c3679fe?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80" alt="Food platter">
            </div>
            
            <div class="food-carousel">
                <div class="food-item" data-name="Rainbow Bowl" data-description="Vibrant mix of roasted sweet potatoes, avocado, quinoa, and seasonal veggies with turmeric tahini dressing." data-price="$14.95">
                    <img src="https://images.unsplash.com/photo-1512621776951-a57141f2eefd?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=300&q=80" alt="Rainbow Bowl">
                </div>
                <div class="food-item" data-name="Harvest Pizza" data-description="Stone-baked sourdough crust topped with heirloom tomatoes, buffalo mozzarella, and fresh basil from our garden." data-price="$18.50">
                    <img src="https://images.unsplash.com/photo-1604382354936-07c5d9983bd3?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=300&q=80" alt="Harvest Pizza">
                </div>
                <div class="food-item" data-name="Seasonal Salmon" data-description="Wild-caught salmon with charred lemon, microgreens, and maple-miso glaze on a bed of herbed farro." data-price="$22.95">
                    <img src="https://images.unsplash.com/photo-1519708227418-c8fd9a32b7a2?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=300&q=80" alt="Seasonal Salmon">
                </div>
            </div>
            
            <div class="food-popup">
                <h3>Rainbow Bowl</h3>
                <p>Vibrant mix of roasted sweet potatoes, avocado, quinoa, and seasonal veggies with turmeric tahini dressing.</p>
                <div class="price">$14.95</div>
                <button class="add-btn">Add to Order</button>
            </div>
        </div>
    </div>

    <script>
        document.addEventListener('DOMContentLoaded', function() {
            const foodItems = document.querySelectorAll('.food-item');
            const foodPopup = document.querySelector('.food-popup');
            const popupTitle = foodPopup.querySelector('h3');
            const popupDescription = foodPopup.querySelector('p');
            const popupPrice = foodPopup.querySelector('.price');
            const ctaButton = document.querySelector('.cta');
            let activeItem = null;
            
            // Add shimmer effect to CTA button
            setInterval(() => {
                const cta = document.querySelector('.cta');
                cta.classList.add('shimmer');
                setTimeout(() => {
                    cta.classList.remove('shimmer');
                }, 700);
            }, 4000);
            
            // Food item hover functionality
            foodItems.forEach(item => {
                item.addEventListener('mouseenter', function() {
                    if (activeItem === this) return;
                    
                    activeItem = this;
                    const name = this.getAttribute('data-name');
                    const description = this.getAttribute('data-description');
                    const price = this.getAttribute('data-price');
                    
                    popupTitle.textContent = name;
                    popupDescription.textContent = description;
                    popupPrice.textContent = price;
                    
                    foodPopup.classList.add('active');
                });
                
                item.addEventListener('mouseleave', function() {
                    if (activeItem === this) {
                        setTimeout(() => {
                            if (activeItem === this) {
                                foodPopup.classList.remove('active');
                                activeItem = null;
                            }
                        }, 300);
                    }
                });
            });
            
            // Prevent popup from closing when hovering the popup itself
            foodPopup.addEventListener('mouseenter', function() {
                foodPopup.classList.add('active');
            });
            
            foodPopup.addEventListener('mouseleave', function() {
                foodPopup.classList.remove('active');
                activeItem = null;
            });
            
            // Add button in popup functionality
            const addButton = foodPopup.querySelector('.add-btn');
            addButton.addEventListener('click', function() {
                this.textContent = '✓ Added';
                this.style.backgroundColor = '#4CAF50';
                
                setTimeout(() => {
                    this.textContent = 'Add to Order';
                    this.style.backgroundColor = '';
                }, 1500);
            });
            
            // CTA button effect
            ctaButton.addEventListener('click', function() {
                this.innerHTML = 'Order Placed!';
                this.style.backgroundColor = '#4CAF50';
                
                setTimeout(() => {
                    this.innerHTML = 'Order Farm Fresh';
                    this.style.backgroundColor = '';
                }, 1500);
            });
            
            // Handle touch events for mobile
            foodItems.forEach(item => {
                item.addEventListener('touchstart', function(e) {
                    e.preventDefault();
                    
                    // Close any open popup first
                    if (activeItem && activeItem !== this) {
                        foodPopup.classList.remove('active');
                    }
                    
                    activeItem = this;
                    const name = this.getAttribute('data-name');
                    const description = this.getAttribute('data-description');
                    const price = this.getAttribute('data-price');
                    
                    popupTitle.textContent = name;
                    popupDescription.textContent = description;
                    popupPrice.textContent = price;
                    
                    foodPopup.classList.toggle('active');
                });
            });
            
            // Close popup when tapping elsewhere
            document.addEventListener('touchstart', function(e) {
                if (!e.target.closest('.food-popup') && !e.target.closest('.food-item')) {
                    foodPopup.classList.remove('active');
                    activeItem = null;
                }
            });
        });
    </script>
</body>
</html>

10) Adventure Awaits: Travel Banner

Here's the code:

<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Wanderlust Explorer</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }

        :root {
            --primary: #ff7e5f;
            --secondary: #feb47b;
            --dark: #2c3e50;
            --light: #f9f9f9;
            --overlay: rgba(0, 0, 0, 0.5);
        }

        .travel-banner {
            position: relative;
            width: 100%;
            height: 700px;
            overflow: hidden;
            color: var(--light);
        }

        .banner-bg {
            position: absolute;
            width: 100%;
            height: 100%;
            background-size: cover;
            background-position: center;
            transition: transform 8s ease-in-out;
            z-index: 1;
        }

        .overlay {
            position: absolute;
            width: 100%;
            height: 100%;
            background: linear-gradient(135deg, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0.3) 100%);
            z-index: 2;
        }

        .content-wrapper {
            position: relative;
            z-index: 3;
            height: 100%;
            width: 100%;
            display: flex;
            flex-direction: column;
            justify-content: center;
            padding: 2rem;
        }

        .banner-title {
            font-size: 3.5rem;
            font-weight: 800;
            margin-bottom: 1rem;
            text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
            transform: translateY(20px);
            opacity: 0;
            animation: fadeUp 1s ease forwards 0.2s;
        }

        .banner-subtitle {
            font-size: 1.5rem;
            font-weight: 400;
            margin-bottom: 2rem;
            text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.5);
            max-width: 600px;
            transform: translateY(20px);
            opacity: 0;
            animation: fadeUp 1s ease forwards 0.4s;
        }

        .hotspots-container {
            display: flex;
            flex-wrap: wrap;
            gap: 1rem;
            margin-top: 1rem;
            transform: translateY(20px);
            opacity: 0;
            animation: fadeUp 1s ease forwards 0.6s;
        }

        .hotspot {
            position: relative;
            padding: 0.75rem 1.25rem;
            background: rgba(255, 255, 255, 0.1);
            backdrop-filter: blur(10px);
            border-radius: 50px;
            cursor: pointer;
            transition: all 0.3s ease;
            border: 1px solid rgba(255, 255, 255, 0.2);
        }

        .hotspot:hover {
            background: rgba(255, 255, 255, 0.25);
            transform: translateY(-5px);
            box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
        }

        .hotspot-label {
            font-weight: 600;
            font-size: 1rem;
            display: flex;
            align-items: center;
            gap: 0.5rem;
        }

        .hotspot-icon {
            font-size: 1.2rem;
        }

        .hotspot-details {
            position: absolute;
            top: calc(100% + 15px);
            left: 50%;
            transform: translateX(-50%) scale(0.9);
            width: 300px;
            background: rgba(0, 0, 0, 0.85);
            backdrop-filter: blur(10px);
            padding: 1.5rem;
            border-radius: 10px;
            box-shadow: 0 15px 30px rgba(0, 0, 0, 0.3);
            z-index: 10;
            opacity: 0;
            pointer-events: none;
            transition: all 0.3s ease;
        }

        .hotspot:hover .hotspot-details {
            opacity: 1;
            transform: translateX(-50%) scale(1);
            pointer-events: all;
        }

        .hotspot-details::before {
            content: '';
            position: absolute;
            top: -8px;
            left: 50%;
            transform: translateX(-50%) rotate(45deg);
            width: 16px;
            height: 16px;
            background: rgba(0, 0, 0, 0.85);
        }

        .hotspot-title {
            font-size: 1.1rem;
            font-weight: 700;
            margin-bottom: 0.5rem;
            color: var(--secondary);
        }

        .hotspot-description {
            font-size: 0.9rem;
            margin-bottom: 1rem;
            line-height: 1.5;
        }

        .hotspot-stats {
            display: flex;
            justify-content: space-between;
            padding-top: 0.75rem;
            border-top: 1px solid rgba(255, 255, 255, 0.2);
            font-size: 0.85rem;
        }

        .hotspot-stat {
            display: flex;
            flex-direction: column;
            align-items: center;
        }

        .hotspot-stat-value {
            font-weight: 700;
            color: var(--primary);
        }

        .explore-btn {
            display: inline-block;
            margin-top: 2rem;
            padding: 1rem 2rem;
            background: linear-gradient(135deg, var(--primary) 0%, var(--secondary) 100%);
            color: white;
            border: none;
            border-radius: 50px;
            font-weight: 600;
            font-size: 1.1rem;
            cursor: pointer;
            transition: all 0.3s ease;
            text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
            box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
            transform: translateY(20px);
            opacity: 0;
            animation: fadeUp 1s ease forwards 0.8s;
        }

        .explore-btn:hover {
            transform: translateY(-5px);
            box-shadow: 0 15px 30px rgba(0, 0, 0, 0.2);
        }

        .location-indicator {
            position: absolute;
            bottom: 1.5rem;
            right: 1.5rem;
            z-index: 5;
            display: flex;
            align-items: center;
            padding: 0.5rem 1rem;
            background: rgba(0, 0, 0, 0.7);
            backdrop-filter: blur(10px);
            border-radius: 50px;
            font-size: 0.9rem;
            font-weight: 600;
            opacity: 0;
            animation: fadeIn 1s ease forwards 1s;
        }

        .location-indicator i {
            margin-right: 0.5rem;
            color: var(--primary);
        }

        .destinations-nav {
            position: absolute;
            bottom: 1.5rem;
            left: 1.5rem;
            z-index: 5;
            display: flex;
            gap: 0.5rem;
            opacity: 0;
            animation: fadeIn 1s ease forwards 1s;
        }

        .dest-dot {
            width: 10px;
            height: 10px;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.5);
            cursor: pointer;
            transition: all 0.3s ease;
        }

        .dest-dot.active {
            background: var(--primary);
            transform: scale(1.3);
        }

        @keyframes fadeUp {
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        @keyframes fadeIn {
            to {
                opacity: 1;
            }
        }

        @media (max-width: 768px) {
            .banner-title {
                font-size: 2.5rem;
            }

            .banner-subtitle {
                font-size: 1.2rem;
            }

            .hotspots-container {
                flex-direction: column;
                align-items: flex-start;
                max-width: 100%;
            }

            .hotspot-details {
                width: 250px;
            }
        }

        @media (max-width: 480px) {
            .banner-title {
                font-size: 2rem;
            }

            .banner-subtitle {
                font-size: 1rem;
            }

            .explore-btn {
                padding: 0.75rem 1.5rem;
                font-size: 1rem;
            }
        }
    </style>
</head>
<body>
    <div class="travel-banner">
        <div class="banner-bg" id="bannerBg"></div>
        <div class="overlay"></div>
        <div class="content-wrapper">
            <h1 class="banner-title">Discover Hidden Paradises</h1>
            <p class="banner-subtitle">Unveil extraordinary destinations beyond the beaten path, crafted for authentic travelers seeking meaningful journeys.</p>
            
            <div class="hotspots-container">
                <div class="hotspot" data-dest="bali">
                    <div class="hotspot-label">
                        <i class="hotspot-icon">🏝️</i>
                        <span>Bali Hideaways</span>
                    </div>
                    <div class="hotspot-details">
                        <h3 class="hotspot-title">Jatiluwih Rice Terraces</h3>
                        <p class="hotspot-description">Escape the crowds at these UNESCO-listed terraces in central Bali, where ancient irrigation systems create emerald-green landscapes away from Ubud's tourist circuit.</p>
                        <div class="hotspot-stats">
                            <div class="hotspot-stat">
                                <span class="hotspot-stat-value">9.2</span>
                                <span>Rating</span>
                            </div>
                            <div class="hotspot-stat">
                                <span class="hotspot-stat-value">$45</span>
                                <span>Day Tour</span>
                            </div>
                            <div class="hotspot-stat">
                                <span class="hotspot-stat-value">2 hrs</span>
                                <span>From Ubud</span>
                            </div>
                        </div>
                    </div>
                </div>
                
                <div class="hotspot" data-dest="peru">
                    <div class="hotspot-label">
                        <i class="hotspot-icon">🏔️</i>
                        <span>Andean Treasures</span>
                    </div>
                    <div class="hotspot-details">
                        <h3 class="hotspot-title">Rainbow Mountain Alternatives</h3>
                        <p class="hotspot-description">Skip Vinicunca's crowds and discover Palccoyo, featuring three equally stunning rainbow mountains with a fraction of the hiking time and virtually no other tourists.</p>
                        <div class="hotspot-stats">
                            <div class="hotspot-stat">
                                <span class="hotspot-stat-value">9.4</span>
                                <span>Rating</span>
                            </div>
                            <div class="hotspot-stat">
                                <span class="hotspot-stat-value">$85</span>
                                <span>Full Tour</span>
                            </div>
                            <div class="hotspot-stat">
                                <span class="hotspot-stat-value">3 hrs</span>
                                <span>From Cusco</span>
                            </div>
                        </div>
                    </div>
                </div>
                
                <div class="hotspot" data-dest="japan">
                    <div class="hotspot-label">
                        <i class="hotspot-icon">🏮</i>
                        <span>Secret Japan</span>
                    </div>
                    <div class="hotspot-details">
                        <h3 class="hotspot-title">Yakushima Island</h3>
                        <p class="hotspot-description">Explore the ancient moss-covered forest that inspired Studio Ghibli's Princess Mononoke, home to thousand-year-old cedar trees and a magical atmosphere few travelers experience.</p>
                        <div class="hotspot-stats">
                            <div class="hotspot-stat">
                                <span class="hotspot-stat-value">9.7</span>
                                <span>Rating</span>
                            </div>
                            <div class="hotspot-stat">
                                <span class="hotspot-stat-value">$120</span>
                                <span>Day Pass</span>
                            </div>
                            <div class="hotspot-stat">
                                <span class="hotspot-stat-value">4 hrs</span>
                                <span>From Kagoshima</span>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            
            <button class="explore-btn">Plan Your Escape</button>
        </div>
        
        <div class="location-indicator">
            <i>📍</i> <span id="currentLocation">Bali, Indonesia</span>
        </div>
        
        <div class="destinations-nav">
            <div class="dest-dot active" data-dest="bali"></div>
            <div class="dest-dot" data-dest="peru"></div>
            <div class="dest-dot" data-dest="japan"></div>
        </div>
    </div>

    <script>
        document.addEventListener('DOMContentLoaded', function() {
            const destinations = {
                bali: {
                    image: 'https://images.unsplash.com/photo-1537953773345-d172ccf13cf1?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1350&q=80',
                    location: 'Bali, Indonesia'
                },
                peru: {
                    image: 'https://images.unsplash.com/photo-1526392060635-9d6019884377?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1350&q=80',
                    location: 'Rainbow Mountain, Peru'
                },
                japan: {
                    image: 'https://images.unsplash.com/photo-1545569341-9eb8b30979d9?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1350&q=80',
                    location: 'Yakushima, Japan'
                }
            };
            
            const bannerBg = document.getElementById('bannerBg');
            const currentLocation = document.getElementById('currentLocation');
            const destDots = document.querySelectorAll('.dest-dot');
            const hotspots = document.querySelectorAll('.hotspot');
            
            // Initial setup
            bannerBg.style.backgroundImage = `url(${destinations.bali.image})`;
            
            // Add hover effect for banner background
            document.querySelector('.travel-banner').addEventListener('mouseenter', function() {
                bannerBg.style.transform = 'scale(1.05)';
            });
            
            document.querySelector('.travel-banner').addEventListener('mouseleave', function() {
                bannerBg.style.transform = 'scale(1)';
            });
            
            // Destination navigation
            destDots.forEach(dot => {
                dot.addEventListener('click', function() {
                    const dest = this.getAttribute('data-dest');
                    
                    // Update active state
                    destDots.forEach(d => d.classList.remove('active'));
                    this.classList.add('active');
                    
                    // Update background and location text
                    bannerBg.style.opacity = '0';
                    setTimeout(() => {
                        bannerBg.style.backgroundImage = `url(${destinations[dest].image})`;
                        currentLocation.textContent = destinations[dest].location;
                        bannerBg.style.opacity = '1';
                    }, 300);
                });
            });
            
            // Hotspot click also changes destination
            hotspots.forEach(hotspot => {
                hotspot.addEventListener('click', function(e) {
                    if (e.target.closest('.hotspot-details')) return;
                    
                    const dest = this.getAttribute('data-dest');
                    
                    // Update active state on navigation dots
                    destDots.forEach(dot => {
                        if (dot.getAttribute('data-dest') === dest) {
                            dot.classList.add('active');
                        } else {
                            dot.classList.remove('active');
                        }
                    });
                    
                    // Update background and location text
                    bannerBg.style.opacity = '0';
                    setTimeout(() => {
                        bannerBg.style.backgroundImage = `url(${destinations[dest].image})`;
                        currentLocation.textContent = destinations[dest].location;
                        bannerBg.style.opacity = '1';
                    }, 300);
                });
            });

            // Explore button effect
            const exploreBtn = document.querySelector('.explore-btn');
            exploreBtn.addEventListener('click', function() {
                this.textContent = 'Customizing Your Journey...';
                setTimeout(() => {
                    this.textContent = 'Plan Your Escape';
                }, 2000);
            });

            // Auto-rotate destinations every 6 seconds
            let currentDestIndex = 0;
            const destKeys = Object.keys(destinations);
            
            setInterval(() => {
                currentDestIndex = (currentDestIndex + 1) % destKeys.length;
                const nextDest = destKeys[currentDestIndex];
                
                // Update active state
                destDots.forEach(dot => {
                    if (dot.getAttribute('data-dest') === nextDest) {
                        dot.classList.add('active');
                    } else {
                        dot.classList.remove('active');
                    }
                });
                
                // Update background and location
                bannerBg.style.opacity = '0';
                setTimeout(() => {
                    bannerBg.style.backgroundImage = `url(${destinations[nextDest].image})`;
                    currentLocation.textContent = destinations[nextDest].location;
                    bannerBg.style.opacity = '1';
                }, 300);
                
            }, 6000);
        });
    </script>
</body>
</html>

Tips To Design a Great Banner

  • Keep It Simple: Avoid clutter by focusing on a single message or call-to-action. Simplicity ensures your banner is easily understood at a glance.
  • Use High-Quality Images: Choose clear, high-resolution images that are relevant to your message. Quality visuals enhance credibility and engagement.
  • Prioritize Readability: Use large, legible fonts and high-contrast colors to ensure text is easy to read. Avoid overly decorative fonts.
  • Incorporate Branding: Include your logo and brand colors to maintain consistency and reinforce brand identity. This helps in building brand recognition.
  • Test Responsiveness: Ensure your banner looks great on all devices by testing its responsiveness. A mobile-friendly design is crucial for reaching a wider audience.

Get Started with Subframe for Free

Ready to elevate your design game? With Subframe, you can create pixel-perfect UIs, including stunning banners, in minutes. Our drag-and-drop editor ensures efficiency and precision.

Don't wait—start for free and begin designing immediately!

Join thousands of happy builders.

Subframe lets you build stunning UI with beautifully crafted components and a drag-and-drop visual editor.

Made in Webflow