← 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>