← back to Model Arena
data/artifacts/15fb25164101/qwen3-14b.html
250 lines
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Shop by Color</title>
<style>
:root {
--bg: #faf8f4;
--surface: #ffffff;
--ink: #1c1a17;
--muted: #9b948a;
--accent: #b0472e;
--line: #e8e6e2;
--shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
--glow: 0 0 24px rgba(176, 71, 46, 0.35);
--ease: cubic-bezier(0.22, 1, 0.36, 1);
--fade-up: 0.7s var(--ease) both;
--fade-up-delay: 90ms;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
touch-action: manipulation;
}
html, body {
height: 100%;
font-family: -apple-system, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
background: var(--bg);
color: var(--ink);
overflow: hidden;
}
body {
display: flex;
flex-direction: column;
align-items: flex-start;
}
header {
position: fixed;
top: 0;
left: 0;
width: 100%;
padding: 16px 24px;
font-family: 'Playfair Display', Georgia, serif;
letter-spacing: 0.18em;
text-transform: uppercase;
font-size: 24px;
color: var(--ink);
background: var(--surface);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
z-index: 1000;
}
header::after {
content: "";
display: block;
height: 1px;
background: var(--line);
margin: 16px 0;
}
main {
padding-top: 80px;
padding-left: 24px;
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
overflow: auto;
}
.color-wheel {
width: 320px;
height: 320px;
background: conic-gradient(
var(--accent) 0deg,
var(--accent) 10deg,
var(--muted) 10deg,
var(--muted) 20deg,
var(--ink) 20deg,
var(--ink) 30deg,
var(--muted) 30deg,
var(--muted) 40deg,
var(--accent) 40deg
);
border: 1px solid var(--line);
border-radius: 50%;
cursor: pointer;
transition: box-shadow 0.3s var(--ease);
touch-action: manipulation;
}
.color-wheel:active {
box-shadow: var(--glow);
}
.pattern-gallery {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 24px;
margin-top: 48px;
opacity: 0;
transform: translateY(28px);
animation: fadeUp 0.7s var(--ease) both;
animation-delay: 0s;
}
.pattern-gallery > div {
background: var(--surface);
border: 1px solid var(--line);
border-radius: 14px;
padding: 24px;
box-shadow: var(--shadow);
transition: box-shadow 0.2s var(--ease);
}
.pattern-gallery > div:hover {
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.18);
}
.pattern-gallery > div > div {
height: 180px;
background: var(--muted);
border-radius: 14px;
margin-bottom: 16px;
}
.pattern-gallery > div > h4 {
font-family: 'Playfair Display', Georgia, serif;
font-size: 24px;
letter-spacing: 0.15em;
text-transform: uppercase;
margin-bottom: 8px;
}
.pattern-gallery > div > p {
font-size: 14px;
color: var(--muted);
}
.share-bar {
position: fixed;
bottom: 24px;
left: 50%;
transform: translateX(-50%);
display: flex;
gap: 16px;
background: var(--surface);
padding: 12px 24px;
border-radius: 14px;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
font-family: -apple-system, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
text-transform: uppercase;
letter-spacing: 0.15em;
font-size: 12px;
}
.share-bar button {
background: none;
border: none;
color: var(--accent);
cursor: pointer;
padding: 8px;
transition: color 0.2s var(--ease);
}
.share-bar button:hover {
color: var(--ink);
}
@keyframes fadeUp {
from {
opacity: 0;
transform: translateY(28px);
}
to {
opacity: 1;
transform: none;
}
}
</style>
</head>
<body>
<header>DESIGNER WALLCOVERINGS</header>
<main>
<div class="color-wheel" id="colorWheel"></div>
<div class="pattern-gallery" id="patternGallery">
<div>
<div></div>
<h4>ORANGE BLOSSOM</h4>
<p>Soft and floral, with warm undertones.</p>
</div>
<div>
<div></div>
<h4>TEAL GROVE</h4>
<p>Cool and refreshing, with natural depth.</p>
</div>
<div>
<div></div>
<h4>PURPLE LILY</h4>
<p>Elegant and refined, with a rich tone.</p>
</div>
<div>
<div></div>
<h4>AMBER WAVE</h4>
<p>Warm and inviting, with golden highlights.</p>
</div>
</div>
</main>
<div class="share-bar">
<button>SHARE</button>
<button>SAVE</button>
<button>PRINT</button>
</div>
<script>
const colorWheel = document.getElementById('colorWheel');
const patternGallery = document.getElementById('patternGallery');
let currentHue = 0;
colorWheel.addEventListener('click', (e) => {
const rect = colorWheel.getBoundingClientRect();
const x = e.clientX - rect.left;
const y = e.clientY - rect.top;
const centerX = rect.width / 2;
const centerY = rect.height / 2;
const dx = x - centerX;
const dy = y - centerY;
const angle = Math.atan2(dy, dx) * (180 / Math.PI);
const hue = (360 - angle + 360) % 360;
currentHue = hue;
updatePatterns();
});
function updatePatterns() {
const patterns = patternGallery.children;
for (let i = 0; i < patterns.length; i++) {
const pattern = patterns[i];
const hue = (currentHue + i * 90) % 360;
pattern.querySelector('div').style.background = `hsl(${hue}, 60%, 60%)`;
}
}
</script>
</body>
</html>