← back to Model Arena
data/artifacts/131728b7aeb6/gemma3-12b.html
300 lines
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<title>Color of the Season - Designer Wallcoverings</title>
<style>
:root {
--bg: #faf8f4;
--surface: #ffffff;
--text: #1c1a17;
--muted: #9b948a;
--accent: #b0472e; /* Terracotta-Sun */
--line: rgba(0, 0, 0, .08);
--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);
overflow: hidden; /* Prevent scrolling */
height: 100vh;
display: flex;
flex-direction: column;
}
.top-bar {
position: fixed;
top: 0;
left: 0;
width: 100%;
padding: 24px;
background-color: var(--surface);
box-shadow: 0 2px 8px var(--shadow);
z-index: 100; /* Ensure it stays on top */
}
.wordmark {
font-family: 'Playfair Display', Georgia, serif;
font-size: 36px;
letter-spacing: .18em;
text-transform: uppercase;
color: var(--text);
}
/* Reel Container */
.reel-container {
flex: 1; /* Take remaining vertical space */
display: flex;
flex-direction: column;
align-items: center;
justify-content: flex-start;
padding-top: 80px; /* Account for fixed top bar height */
}
.scene {
position: relative;
width: 100%;
height: calc(100vh - 80px); /* Match screen dimensions, minus the top bar*/
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
opacity: 0;
}
.scene.active {
opacity: 1;
}
h1 {
font-size: 67px;
font-family: 'Playfair Display', Georgia, serif;
text-align: center;
margin-bottom: 32px;
}
.caption {
font-size: 18px;
text-align: center;
margin-top: 48px;
}
/* Swatches */
.swatch-container {
display: flex;
gap: 32px;
justify-content: center;
width: 100%;
}
.swatch {
width: 160px; /* Fixed size for consistency */
height: 160px;
border-radius: 14px;
background-color: var(--accent);
box-shadow: 0 8px 24px var(--shadow);
}
/* Styling Tip */
.styling-tip {
font-size: 21px; /* Lead font size */
text-align: center;
margin-top: 48px;
}
/* CTA */
.cta {
font-size: 16px;
text-decoration: underline;
cursor: pointer;
margin-top: 64px;
}
/* Progress Bar & Controls */
#progress-bar-container {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
background-color: var(--surface);
padding: 8px;
z-index: 100;
}
#progress-bar {
width: 0%;
height: 8px;
background-color: var(--accent);
}
#controls {
position: fixed;
bottom: 8px;
left: 50%;
transform: translateX(-50%);
display: flex;
gap: 16px;
}
.control-button {
font-size: 12px;
text-transform: uppercase;
letter-spacing: .15em;
color: var(--muted);
background-color: transparent;
border: none;
cursor: pointer;
padding: 8px 16px;
border-radius: 4px;
}
/* Overlay for Messages */
.overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, .8);
color: var(--surface);
display: flex;
justify-content: center;
align-items: center;
font-size: 24px;
z-index: 101; /* Above all */
opacity: 0;
transition: opacity .3s ease;
}
.overlay.active {
opacity: 1;
}
</style>
</head>
<body>
<div class="top-bar">
<div class="wordmark">DESIGNER WALLCOVERINGS</div>
</div>
<div class="reel-container">
<div id="scene1" class="scene">
<h1>This season it's all about...</h1>
</div>
<div id="scene2" class="scene">
<h1>Celadon</h1>
</div>
<div id="scene3" class="scene">
<div class="swatch-container">
<div class="swatch" style="background-color: #a8d09b;"></div>
<div class="swatch" style="background-color: #c7e4bc;"></div>
<div class="swatch" style="background-color: #e1f2d3;"></div>
</div>
</div>
<div id="scene4" class="scene">
<p class="styling-tip">Pair Celadon with natural wood tones and soft textures for a serene, organic feel.</p>
</div>
<div id="scene5" class="scene">
<a href="#" class="cta">Explore the Collection</a>
</div>
</div>
<div id="progress-bar-container">
<div id="progress-bar"></div>
</div>
<div id="controls">
<button class="control-button" id="playPauseBtn">Play</button>
</div>
<div class="overlay" id="messageOverlay">
<p>Message Content Here</p>
</div>
<script>
const scenes = document.querySelectorAll('.scene');
const progressBar = document.getElementById('progress-bar');
const playPauseBtn = document.getElementById('playPauseBtn');
let currentSceneIndex = 0;
let isPlaying = true;
const sceneChangeDelay = 5000; // milliseconds - adjust for pace
function showScene(index) {
scenes.forEach((scene, i) => {
if (i === index) {
scene.classList.add('active');
} else {
scene.classList.remove('active');
}
});
}
function updateProgressBar() {
const progress = (currentSceneIndex / (scenes.length - 1)) * 100;
progressBar.style.width = `${progress}%`;
}
function nextScene() {
currentSceneIndex++;
if (currentSceneIndex >= scenes.length) {
currentSceneIndex = 0;
}
showScene(currentSceneIndex);
updateProgressBar();
// Auto-advance if playing
if (isPlaying) {
setTimeout(nextScene, sceneChangeDelay);
}
}
function togglePlayPause() {
isPlaying = !isPlaying;
playPauseBtn.textContent = isPlaying ? 'Pause' : 'Play';
if (isPlaying) {
nextScene(); // Start or resume auto-advance
}
}
// Initial scene setup
showScene(0);
// Auto-advance the first time if playing
if (isPlaying) {
setTimeout(nextScene, sceneChangeDelay);
}
playPauseBtn.addEventListener('click', togglePlayPause);
</script>
</body>
</html>