← back to Model Arena

data/artifacts/0a809ac3ac48/hf-qwen-coder-32b.html

241 lines

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Color of the Season Reel</title>
    <style>
        :root {
            --bg: #faf8f4;
            --surface: #ffffff;
            --text: #1c1a17;
            --muted: #9b948a;
            --accent: #b0472e;
            --line: #dddcdc;
            --shadow: rgba(0, 0, 0, .12);
            --ease: cubic-bezier(.22, 1, .36, 1);
        }

        body {
            margin: 0;
            font-family: -apple-system, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
            background-color: var(--bg);
            color: var(--text);
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: space-between;
            height: 100vh;
            overflow: hidden;
        }

        header {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            background-color: var(--bg);
            padding: 24px;
            box-shadow: 0 2px 8px rgba(0, 0, 0, .1);
        }

        header h1 {
            font-family: 'Playfair Display', Georgia, serif;
            font-size: 50px;
            letter-spacing: .18em;
            margin: 0;
        }

        main {
            flex: 1;
            width: 100%;
            display: flex;
            justify-content: center;
            align-items: center;
            position: relative;
        }

        .scene {
            opacity: 0;
            animation: fadeUp .7s var(--ease) both;
            text-align: center;
            width: 85%;
            max-width: 600px;
        }

        .scene h2, .scene h3 {
            margin: 0 0 12px;
            font-family: 'Playfair Display', Georgia, serif;
        }

        .scene h2 {
            font-size: 67px;
            line-height: 1.2;
        }

        .scene h3 {
            font-size: 28px;
            color: var(--muted);
            letter-spacing: .15em;
        }

        .swatches {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 24px;
            margin-top: 24px;
        }

        .swatch {
            width: 100%;
            padding-bottom: 75%; /* 4:3 aspect ratio */
            background-size: cover;
            border-radius: 8px;
            box-shadow: var(--shadow);
        }

        .tip {
            font-size: 21px;
            margin-top: 24px;
            text-align: left;
            color: var(--muted);
        }

        .cta {
            display: inline-block;
            background-color: var(--accent);
            color: var(--surface);
            padding: 12px 24px;
            border-radius: 8px;
            font-size: 16px;
            text-transform: uppercase;
            letter-spacing: .15em;
            margin-top: 24px;
            text-decoration: none;
        }

        .cta:hover {
            background-color: var(--accent);
            transform: translateY(-2px);
            box-shadow: 0 16px 48px rgba(0, 0, 0, .18);
        }

        footer {
            display: flex;
            justify-content: center;
            align-items: center;
            width: 100%;
            background-color: var(--bg);
            padding: 24px;
            box-shadow: 0 -2px 8px rgba(0, 0, 0, .1);
        }

        footer .progress-bar {
            flex: 1;
            height: 4px;
            background-color: var(--line);
            border-radius: 2px;
            overflow: hidden;
            position: relative;
        }

        footer .progress {
            width: 0%;
            height: 100%;
            background-color: var(--accent);
            transition: width .5s ease-in-out;
        }

        footer .controls {
            display: flex;
            gap: 8px;
            margin-left: 24px;
        }

        footer .control {
            font-size: 16px;
            color: var(--muted);
            cursor: pointer;
        }

        @keyframes fadeUp {
            from { opacity: 0; transform: translateY(28px); }
            to { opacity: 1; transform: none; }
        }

        .swatch:nth-child(1) { background-image: linear-gradient(45deg, #f8b400, var(--accent)); }
        .swatch:nth-child(2) { background-image: radial-gradient(circle at center, #f8b400, var(--accent)); }
        .swatch:nth-child(3) { background-image: repeating-linear-gradient(-45deg, #f8b400, #f8b400 16px, var(--accent) 16px, var(--accent) 32px); }
    </style>
</head>
<body>
    <header>
        <h1>DESIGNER WALLCOVERINGS</h1>
    </header>
    <main>
        <div class="scene" id="hook">
            <h2>This season it's all about...</h2>
        </div>
        <div class="scene" id="hue">
            <h2>Celadon</h2>
        </div>
        <div class="scene" id="swatches">
            <div class="swatches">
                <div class="swatch"></div>
                <div class="swatch"></div>
                <div class="swatch"></div>
            </div>
        </div>
        <div class="scene" id="tip">
            <h3>Styling Tip</h3>
            <p class="tip">Pair Celadon with warm wooden furniture and metallic accents for a sophisticated look.</p>
        </div>
        <div class="scene" id="cta">
            <a href="#" class="cta">Explore Now</a>
        </div>
    </main>
    <footer>
        <div class="progress-bar">
            <div class="progress"></div>
        </div>
        <div class="controls">
            <span class="control" onclick="playPause()">PAUSE</span>
        </div>
    </footer>
    <script>
        const scenes = document.querySelectorAll('.scene');
        const progress = document.querySelector('.progress');
        const controls = document.querySelector('.controls .control');
        let currentScene = 0;
        let intervalId;
        let isPlaying = true;

        function showScene(index) {
            scenes.forEach((scene, i) => scene.style.opacity = (i === index ? 1 : 0));
            progress.style.width = `${(index / (scenes.length - 1)) * 100}%`;
        }

        function nextScene() {
            if (isPlaying) {
                currentScene = (currentScene + 1) % scenes.length;
                showScene(currentScene);
            }
        }

        function playPause() {
            isPlaying = !isPlaying;
            controls.textContent = isPlaying ? 'PAUSE' : 'PLAY';
            if (isPlaying) {
                intervalId = setInterval(nextScene, 5000);
            } else {
                clearInterval(intervalId);
            }
        }

        document.addEventListener('DOMContentLoaded', () => {
            showScene(currentScene);
            intervalId = setInterval(nextScene, 5000);
        });
    </script>
</body>
</html>