← back to Model Arena
data/artifacts/0a809ac3ac48/gemma3-12b.html
257 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; /* ivory-gallery */
--surface: #ffffff;
--text: #1c1a17;
--muted: #9b948a;
--accent: #b0472e;
--line: #ddd;
--shadow: rgba(0, 0, 0, 0.12);
--ease: cubic-bezier(.22, 1, .36, 1);
}
body {
margin: 0;
font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
background-color: var(--bg);
color: var(--text);
overflow: hidden; /* Prevent scrollbars */
}
header {
position: fixed;
top: 0;
left: 0;
width: 100%;
padding: 32px;
background-color: var(--surface);
text-align: left;
font-family: 'Playfair Display', Georgia, serif;
letter-spacing: .18em;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.12); /* Subtle shadow */
}
header h1 {
font-size: 67px;
margin: 0;
line-height: 1;
display: inline-block;
}
main {
padding-top: calc(100vh + 32px); /* Push content below header */
padding-bottom: 32px;
overflow-x: hidden; /*Prevent horizontal scroll*/
}
.reel-container {
position: relative;
width: 100%;
height: 100vh;
overflow: hidden;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.scene {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0;
transition: opacity 1s var(--ease);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.scene.active {
opacity: 1;
}
.caption {
font-size: 24px;
text-align: center;
margin-bottom: 32px;
}
.swatch-container {
display: flex;
gap: 24px;
justify-content: center;
}
.swatch {
width: 150px;
height: 150px;
background-size: cover;
border-radius: 14px;
box-shadow: 0 8px 24px var(--shadow);
}
.styling-tip {
font-size: 16px;
text-align: center;
margin-top: 32px;
}
.cta {
font-size: 18px;
text-align: center;
margin-top: 48px;
}
.progress-bar-container {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
height: 5px;
background-color: var(--line);
}
.progress-bar {
height: 100%;
width: 0%;
background-color: var(--accent);
}
.play-pause-button {
position: fixed;
bottom: 16px;
right: 16px;
padding: 8px 12px;
border: 1px solid var(--line);
background-color: var(--surface);
cursor: pointer;
font-size: 12px;
letter-spacing: .15em;
text-transform: uppercase;
}
.notification {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: var(--surface);
padding: 24px;
border-radius: 8px;
box-shadow: 0 16px 48px var(--shadow);
text-align: center;
z-index: 1000;
opacity: 0;
transition: opacity .5s ease;
}
.notification.active {
opacity: 1;
}
</style>
</head>
<body>
<header>
<h1>DESIGNER WALLCOVERINGS</h1>
</header>
<div class="reel-container">
<div class="scene" id="scene1">
<h2 class="caption">This season it's all about...</h2>
</div>
<div class="scene" id="scene2">
<h2 class="caption" id="hue-name">Celadon</h2>
</div>
<div class="scene" id="scene3">
<div class="swatch-container">
<div class="swatch" style="background-image: linear-gradient(to bottom, var(--accent) 50%, rgba(255,255,255,0.8));"></div>
<div class="swatch" style="background-image: linear-gradient(to right, #e6cc7c, #d4a163);"></div>
<div class="swatch" style="background-image: linear-gradient(to top left, #b2956f, #a08055);"></div>
</div>
</div>
<div class="scene" id="scene4">
<p class="styling-tip">Pair Celadon with natural textures and warm metallics for a serene and inviting space.</p>
</div>
<div class="scene" id="scene5">
<p class="cta">Explore the full collection at DesignerWallcoverings.com</p>
</div>
</div>
<button class="play-pause-button" id="playPauseButton">Play</button>
<div class="progress-bar-container"><div class="progress-bar" id="progressBar"></div></div>
<div class="notification" id="notification">Loading...</div>
<script>
const scenes = document.querySelectorAll('.scene');
let currentScene = 0;
let timeoutId;
let isPlaying = true;
const progressBar = document.getElementById('progressBar');
const notification = document.getElementById('notification');
function showScene(index) {
scenes.forEach((scene, i) => {
if (i === index) {
scene.classList.add('active');
} else {
scene.classList.remove('active');
}
});
}
function advanceScene() {
currentScene = (currentScene + 1) % scenes.length;
showScene(currentScene);
// Update progress bar
const progress = currentScene / (scenes.length - 1);
progressBar.style.width = `${progress * 100}%`;
}
function startAutoAdvance() {
timeoutId = setTimeout(advanceScene, 5000); // Advance every 5 seconds
}
function pauseAutoAdvance() {
clearTimeout(timeoutId);
}
function playPause(){
if (isPlaying) {
pauseAutoAdvance();
isPlaying = false;
document.getElementById('playPauseButton').textContent = "Play";
} else {
startAutoAdvance();
isPlaying = true;
document.getElementById('playPauseButton').textContent = "Pause";
}
}
notification.classList.add("active");
setTimeout(() => { notification.classList.remove("active")}, 1500);
showScene(0); // Start with the first scene
startAutoAdvance();
document.getElementById('playPauseButton').addEventListener('click', playPause);
</script>
</body>
</html>