← back to Model Arena

data/artifacts/258516d076e6/gemma3-12b.html

227 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 - Designer Wallcoverings</title>
  <style>
    :root {
      --bg: #faf8f4; /* ivory-gallery */
      --surface: #ffffff;
      --text: #3a2c22; /* terracotta-sun */
      --muted: #9b948a;
      --accent: #c65f38; /* terracotta-sun */
      --line: #dcd7ca;
      --shadow: rgba(0, 0, 0, 0.12);
      --ease: cubic-bezier(0.22, 1, 0.36, 1);
    }

    body {
      font-family: 'apple-system', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
      background-color: var(--bg);
      color: var(--text);
      margin: 0;
      padding: 0;
      overflow-x: hidden; /* prevent horizontal scroll */
    }

    header {
      background-color: var(--surface);
      padding: 32px;
      text-align: left;
      box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
      position: fixed; /* Fix the header at the top */
      top: 0;
      left: 0;
      width: 100%;
      z-index: 100; /* Ensure it stays on top of other content */
    }

    header h1 {
      font-family: 'Didot', 'Bodoni MT', 'Playfair Display', Georgia, serif;
      font-size: 67px;
      line-height: 1;
      letter-spacing: .18em;
      margin: 0;
      font-weight: normal;
    }

    .color-wheel-container {
      display: flex;
      justify-content: center;
      align-items: center;
      padding: 96px; /* section padding */
      height: calc(100vh - 96px - 80px); /* Adjust for header and share bar height*/
      overflow-x: hidden;
    }

    .color-wheel {
      width: 240px;
      height: 240px;
      border-radius: 50%;
      background: conic-gradient(from 0deg, #fde72e, #ffa600, #ff8c00, #e66300, #ba4d00, #913a00, #782b00); /* Example hues */
      cursor: crosshair;
      position: relative;
      box-shadow: 0 8px 24px var(--shadow);
    }

    .color-wheel::before {
        content: '';
        position: absolute;
        top: calc(50% - 16px); /* center */
        left: calc(50% - 16px); /* center */
        width: 32px;
        height: 32px;
        border-radius: 50%;
        background-color: var(--surface);
    }

    .filmstrip {
      display: flex;
      flex-wrap: wrap;
      justify-content: center;
      margin-top: 48px;
    }

    .pattern-card {
      width: 260px;
      height: 200px;
      margin: 24px;
      border-radius: 14px;
      overflow: hidden;
      box-shadow: 0 8px 24px var(--shadow);
      position: relative;
    }

    .pattern-card::before { /* Different CSS patterns */
        content: "";
        display: block;
        width: 100%;
        height: 100%;
        background-size: cover;
        background-position: center;
    }

    /* Pattern Examples - Customize these significantly! */
    .pattern-card.geometric::before { background-image: url("data:image/svg+xml,%3Csvg width='260' height='200'%3E%3Crect width='100%' height='100%' fill='%23c65f38' opacity='.5'/%3E%3Crect x='50%' y='50%' width='50%' height='50%' fill='%23ffffff'/%3E%3C/svg%3E"); }
    .pattern-card.organic::before { background-image: url("data:image/svg+xml,%3Csvg width='260' height='200'%3E%3Ccircle cx='50%' cy='50%' r='40%' fill='%23c65f38'/%3E%3Ccircle cx='75%' cy='25%' r='30%' fill='%23ffffff'/%3E%3C/svg%3E"); }
    .pattern-card.abstract::before { background-image: url("data:image/svg+xml,%3Csvg width='260' height='200'%3E%3Cline x1='0' y1='0' x2='260' y2='200' stroke='%23c65f38'/%3E%3Crect x='0' y='0' width='260' height='200' fill='%23ffffff' opacity='.2'/%3E%3C/svg%3E"); }
    .pattern-card.linear::before { background-image: url("data:image/svg+xml,%3Csvg width='260' height='200'%3E%3Cline x1='0' y1='0' x2='260' y2='200' stroke='%23c65f38'/%3E%3C/svg%3E"); }

    .share-bar {
      background-color: var(--surface);
      padding: 16px;
      text-align: center;
      font-size: 12px;
      letter-spacing: .15em;
      text-transform: uppercase;
      color: var(--muted);
    }

    /* Overlay styles */
    .overlay {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(0, 0, 0, 0.7); /* Semi-transparent black */
        z-index: 200;
        display: none; /* Initially hidden */
    }

    .overlay p {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      color: var(--surface);
      font-size: 24px; /* Larger text for better visibility */
    }

    /* JavaScript variables (for color selection) */
    .pattern-card {
        cursor: pointer;
    }
  </style>
</head>
<body>

  <header>
    <h1>DESIGNER WALLCOVERINGS</h1>
  </header>

  <div class="color-wheel-container">
    <div id="colorWheel" class="color-wheel"></div>
  </div>


  <div class="filmstrip" id="patternFilmstrip">
      <div class="pattern-card geometric"></div>
      <div class="pattern-card organic"></div>
      <div class="pattern-card abstract"></div>
      <div class="pattern-card linear"></div>
  </div>

  <div class="share-bar">
    Share your style! #designerwallcoverings
  </div>


  <!-- Overlay for messages -->
  <div id="overlay" class="overlay">
    <p>Message here</p>
  </div>



  <script>
    const colorWheel = document.getElementById('colorWheel');
    const patternFilmstrip = document.getElementById('patternFilmstrip');
    let selectedHue = null;

    colorWheel.addEventListener('click', (event) => {
      const x = event.offsetX;
      const y = event.offsetY;

      // Calculate angle from center of the wheel
      let angle = Math.atan2(y, x) * 180 / Math.PI;

      if (angle < 0) {
        angle += 360;
      }

      // Map hue to a color - adjust as needed for your palette
      let hue = Math.round((angle / 360) * 6); // 6 hues in the example palette

      selectedHue = hue;

      updatePatterns(hue);
    });


    function updatePatterns(hue) {
        // Example color mapping:  adjust as needed for your palettes
        let colors = ['#fde72e', '#ffa600', '#ff8c00', '#e66300', '#ba4d00', '#913a00'];
        let patternClasses = ['geometric', 'organic', 'abstract', 'linear'];

        if (hue >= colors.length) {
          hue = 0; // Wrap around if hue is out of range
        }

        const color = colors[hue];


        const patternCards = document.querySelectorAll('.pattern-card');

        for(let i = 0; i < patternCards.length; ++i){
            patternCards[i].style.backgroundImage = `url("data:image/svg+xml,%3Csvg width='260' height='200'%3E%3Crect width='100%' height='100%' fill='${color}' opacity='.5'/%3E%3Crect x='50%' y='50%' width='50%' height='50%' fill='%23ffffff'/%3E%3C/svg%3E")`;
        }

    }



  </script>
</body>
</html>