← back to Model Arena

data/artifacts/193230252710/hermes3-8b.html

214 lines

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Luxury Wallcovering Mood Board Generator</title>
  <style>
    :root {
      --bg: #faf8f4;
      --surface: #ffffff;
      --text: #1c1a17;
      --muted: #9b948a;
      --accent-primary: #b0472e;
      --accent-secondary: #2f4c39;
      --line: 1px solid var(--text);
      --shadow-card: 0 8px 24px rgba(0, 0, 0, .12);
      --shadow-hover: 0 16px 48px rgba(0, 0, 0, .18);
      --glow: 0 0 24px var(--accent-primary) at 35%;
      --ease-in-out-quart: cubic-bezier(.22, 1, .36, 1);
    }

    body {
      background-color: var(--bg);
      color: var(--text);
      font-family: -apple-system, "Segoe UI", "Helvetica Neue", Arial, sans-serif;
      margin: 0;
      padding: 64px;
    }

    header {
      display: flex;
      align-items: center;
      margin-bottom: 32px;
    }

    .wordmark {
      font-family: 'Cormorant Garamond', serif;
      font-size: 48px;
      letter-spacing: .18em;
      margin-right: 24px;
    }

    h1 {
      font-weight: normal;
      margin: 0;
    }

    h2 {
      font-family: "Didot", "Bodoni MT", "Playfair Display", Georgia, serif;
      font-size: 42px;
      letter-spacing: .15em;
      margin: 32px 0 16px;
    }

    section {
      background-color: var(--surface);
      border-radius: 14px;
      box-shadow: var(--shadow-card);
      display: grid;
      gap: 24px;
      padding: 32px;
    }

    .pattern {
      background-size: cover;
      border-radius: 8px;
      box-shadow: var(--glow);
      cursor: pointer;
      display: flex;
      gap: 16px;
      justify-content: space-between;
      min-height: 120px;
      padding: 0 24px;
    }

    .pattern:hover {
      box-shadow: var(--shadow-hover);
    }

    .color-chip {
      align-items: center;
      background-color: var(--accent-primary);
      border-radius: 50%;
      display: flex;
      height: 40px;
      justify-content: center;
      min-width: 40px;
      font-weight: bold;
    }

    .label {
      color: var(--surface);
      margin-left: 8px;
      white-space: nowrap;
    }
  </style>
</head>
<body>
<header>
  <div class="wordmark">DESIGNER WALLCOVERINGS</div>
  <h1>Luxury Wallcovering Mood Board Generator</h1>
</header>

<div class="controls">
  <label for="theme">Select a theme:</label>
  <select id="theme">
    <option value="classic">Classic</option>
    <option value="coastal">Coastal</option>
    <option value="moody">Moody</option>
    <option value="botanical">Botanical</option>
  </select>

  <button id="regenerate" class="btn">Regenerate</button>
</div>

<div class="mood-board">
  <section>
    <h2>Hero Pattern</h2>
    <div class="pattern" style="--hero-bg: #8a8578;"></div>
  </section>

  <section>
    <h2>Color Palette</h2>
    <div class="pattern">
      <div class="color-chip"></div><span class="label muted">Muted</span>
    </div>
    <div class="pattern">
      <div class="color-chip" style="--accent-bg: #c9a961;"></div><span class="label accent-primary">Accent 1</span>
    </div>
    <div class="pattern">
      <div class="color-chip" style="--text-bg: #7d6a45;"></div><span class="label text">Text</span>
    </div>
  </section>

  <section>
    <h2>Type Pairing</h2>
    <div class="pattern">
      <div class="color-chip"></div><span class="label display">Display Serif</span>
    </div>
    <div class="pattern">
      <div class="color-chip" style="--body-bg: #f5f2ea;"></div><span class="label body">Body Sans</span>
    </div>
  </section>

  <section>
    <h2>Texture Tile</h2>
    <div class="pattern" style="--tile-bg: #d3cdbe;"></div>
  </section>
</div>

<script>
  const themes = {
    classic: {heroBg: "#f5f2ea", colorChips: ["#a58db8", "#c9a961", "#7d6a45"], textBg: "#f5f2ea"},
    coastal: {heroBg: "#f0fff4", colorChips: ["#87cefa", "#20b2aa", "#008000"], textBg: "#f0fff4"}, 
    moody: {heroBg: "#8a8578", colorChips: ["#d8b3da", "#c9a961", "#7d6a45"], textBg: "#17171c"},
    botanical: {heroBg: "#f5f2ea", colorChips: ["#87d37d", "#e0e865", "#ffd700"], textBg: "#8a8578"}
  };

  const moodBoard = document.querySelector(".mood-board");

  function generateMoodBoard(theme) {
    const heroPattern = `linear-gradient(45deg, var(--hero-bg), var(--hero-bg) 25%, transparent 25%), 
                         linear-gradient(-45deg, var(--hero-bg), var(--hero-bg) 25%, transparent 25%),
                         linear-gradient(45deg, transparent 75%, var(--hero-bg) 75%),
                         linear-gradient(-45deg, transparent 75%, var(--hero-bg) 75%)`;
    
    const colorChips = themes[theme].colorChips.map((bg, index) => `
      <div class="pattern">
        <div class="color-chip" style="--background-color: ${bg}"></div><span class="label">
          ${index === 0 ? "Muted" : index === 1 ? "Accent 1" : "Text"}
        </span>
      </div>`);

    const bodyBg = themes[theme].textBg;

    moodBoard.innerHTML = `
      <section>
        <h2>Hero Pattern</h2>
        <div class="pattern" style="--hero-bg: ${themes[theme].heroBg}; background-size: cover; background-origin: content;"></div>
      </section>

      <section>
        ${colorChips.join("\n")}
      </section>

      <section>
        <h2>Type Pairing</h2>
        <div class="pattern">
          <div class="color-chip" style="--body-bg: ${bodyBg};"></div><span class="label display">Display Serif</span>
        </div>
        <div class="pattern">
          <div class="color-chip" style="--background-color: #ffffff;"></div><span class="label body">Body Sans</span>
        </div>
      </section>

      <section>
        <h2>Texture Tile</h2>
        <div class="pattern" style="--tile-bg: #d3cdbe; background-size: cover; background-origin: content;"></div>
      </section>
    `;

    document.body.style.backgroundColor = themes[theme].bg;
  }

  const themeSelect = document.querySelector("#theme");
  const regenerateButton = document.querySelector("#regenerate");

  themeSelect.addEventListener("change", () => generateMoodBoard(themeSelect.value));
  regenerateButton.addEventListener("click", () => generateMoodBoard(themeSelect.value));

  generateMoodBoard(themeSelect.value);
</script>
</body>
</html>