← back to Model Arena
data/artifacts/131728b7aeb6/hermes3-8b.html
199 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: Celadon</title>
<style>
:root {
--bg: #faf8f4;
--surface: #ffffff;
--text: #1c1a17;
--muted: #9b948a;
--accent-primary: #b0472e;
--accent-secondary: #2f4c39;
--line: 1px solid rgba(0,0,0,.05);
--shadow-light: 0 8px 24px rgba(0,0,0,.06);
--shadow-hover: 0 16px 48px rgba(0,0,0,.18);
--ease-in-out-quart: cubic-bezier(.165, .84, .44, 1);
}
body {
font-family: 'EB Garamond', serif;
line-height: 1.6;
background-color: var(--bg);
color: var(--text);
margin: 0; padding: 96px;
}
h1 {
font-family: 'Cormorant Garamond', serif;
font-size: 50px;
text-transform: uppercase;
letter-spacing: .18em;
margin: 0;
}
.wordmark {
background-color: var(--surface);
padding: 4px 8px;
border-radius: 14px;
display: inline-block;
position: fixed;
top: 24px;
left: 24px;
box-shadow: var(--shadow-light);
}
.reel {
display: grid;
gap: 24px;
padding: 96px;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}
.card {
background-color: var(--surface);
border-radius: 14px;
box-shadow: var(--shadow-light);
overflow: hidden;
cursor: default;
}
.card h2 {
font-size: 28px;
text-transform: uppercase;
margin: 0;
padding: 24px;
background-color: var(--muted);
color: var(--surface);
}
.card p {
font-size: 16px;
margin: 0;
padding: 0 24px 24px;
}
.reel button {
display: block;
background-color: var(--accent-primary);
border-radius: 14px;
color: var(--surface);
font-family: 'EB Garamond', serif;
text-transform: uppercase;
letter-spacing: .1em;
padding: 12px 24px;
margin: 0 auto;
border: none;
cursor: pointer;
transition: background-color .3s, box-shadow .3s;
}
.reel button:hover {
filter: brightness(90%);
box-shadow: var(--shadow-hover);
}
@keyframes fadeUp {
from { opacity: 0; transform: translateY(28px); }
to { opacity: 1; transform: translateY(0); }
}
.slide, .card {
animation: fadeUp .7s var(--ease-in-out-quart) both;
animation-delay: calc(var(--index) * 90ms);
animation-fill-mode: forwards;
}
@keyframes scrollProgress {
to { background-position: 100% }
}
.progress-bar {
height: 4px;
background-color: var(--muted);
width: 0%;
position: fixed;
z-index: -1;
right: 0;
bottom: 0;
left: calc(var(--index) * 260px);
animation: scrollProgress 3s linear infinite;
}
</style>
</head>
<body>
<div class="wordmark">DESIGNER WALLCOVERINGS</div>
<div class="reel">
<div class="card" style="--index:0;">
<h2>This season it's all about...</h2>
<p>Celadon</p>
<button>Shop Now</button>
</div>
<div class="card" style="--index:1;">
<img src="celadon-pattern-1.svg" alt="">
<p>Swatch #1</p>
</div>
<div class="card" style="--index:2;">
<img src="celadon-pattern-2.svg" alt="">
<p>Swatch #2</p>
</div>
<div class="card" style="--index:3;">
<img src="celadon-pattern-3.svg" alt="">
<p>Swatch #3</p>
</div>
<div class="card" style="--index:4;">
<h2>Tips for Incorporating Celadon</h2>
<p>Try pairing celadon with warm metallics or earthy neutrals for a sophisticated look.</p>
</div>
<div class="card" style="--index:5;">
<button>Shop This Look</button>
</div>
</div>
<div class="progress-bar"></div>
<script>
let index = 0;
const cards = document.querySelectorAll('.reel .card');
const totalCards = cards.length;
function nextSlide() {
cards[index].style.display = 'none';
index++;
if(index >= totalCards) index = 0;
cards[index].style.display = 'block';
updateProgressBar();
}
document.querySelector('.reel').addEventListener('click', nextSlide);
function updateProgressBar() {
const progress = (index * 100) / totalCards;
document.querySelector('.progress-bar').style.width = `${progress}%`;
}
setInterval(() => {
if(index < totalCards - 1) index++;
else index = 0;
cards[index].style.display = 'block';
updateProgressBar();
}, 7000);
</script>
</body>
</html>