← back to Model Arena

data/artifacts/0b9bb5066c06/gemma3-12b.html

245 lines

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Which Design Era?</title>
    <style>
        :root {
            --bg-color: #faf8f4; /* ivory-gallery */
            --surface-color: #ffffff;
            --text-color: #1c1a17;
            --muted-color: #9b948a;
            --accent-color-1: #b0472e;
            --accent-color-2: #2f4c39;
            --font-display: 'Playfair Display', Georgia, serif;
            --font-body: apple-system, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
        }

        body {
            background-color: var(--bg-color);
            color: var(--text-color);
            font-family: var(--font-body);
            margin: 0;
            padding: 0;
            overflow-x: hidden; /* Prevent horizontal scroll */
        }

        .top-bar {
            background-color: var(--surface-color);
            padding: 16px;
            text-align: left;
            box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
        }

        .wordmark {
            font-family: var(--font-display);
            font-size: 2.5em; /* Adjusted for better visual impact */
            text-transform: uppercase;
            letter-spacing: .18em;
            margin: 0;
        }

        .container {
            padding: 96px;
            max-width: 1200px;
            margin: 0 auto;
        }

        .vignette {
            width: 100%;
            height: 400px;
            background-size: cover;
            background-position: center;
            border-radius: 14px;
            box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
            margin-bottom: 32px;
        }

        .options {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
            gap: 24px;
        }

        .option-button {
            background-color: var(--surface-color);
            border: 1px solid var(--muted-color);
            padding: 16px 24px;
            border-radius: 14px;
            cursor: pointer;
            transition: background-color 0.2s ease, box-shadow 0.2s ease;
        }

        .option-button:hover {
            background-color: #f9f9f9; /* Lighter shade on hover */
            box-shadow: 0 16px 48px rgba(0, 0, 0, 0.18);
        }

        .feedback {
            text-align: center;
            font-size: 1.2em;
            margin-top: 32px;
        }

        .fun-fact {
            font-style: italic;
            color: var(--muted-color);
            margin-top: 8px;
        }


        .score {
            text-align: center;
            font-size: 1.5em;
            margin-bottom: 32px;
        }

        #restart-button {
          background-color: var(--accent-color-1);
          color: white;
          border: none;
          padding: 16px 24px;
          border-radius: 14px;
          cursor: pointer;
          transition: background-color 0.2s ease;
          margin-top: 32px;
        }

        #restart-button:hover {
            background-color: darken(var(--accent-color-1), 10%); /* Darken on hover */
        }

        @keyframes fadeUp {
            from { opacity: 0; transform: translateY(28px); }
            to { opacity: 1; transform: none; }
        }

    </style>
</head>
<body>

    <div class="top-bar">
        <h1 class="wordmark">DESIGNER WALLCOVERINGS</h1>
    </div>

    <div class="container" id="gameContainer">
        <div class="score" id="scoreDisplay">Score: 0</div>
        <div class="vignette" id="vignetteImage"></div>
        <div class="options" id="optionButtons"></div>
        <div class="feedback" id="feedbackMessage"></div>
        <div class="fun-fact" id="funFactDisplay"></div>
        <button id="restart-button">Restart</button>
    </div>

    <script>
        const eras = [
            { name: "Victorian", image: "victorian.jpg", fact: "Victorian interiors often featured dark, rich colors and ornate details." },
            { name: "Art Deco", image: "art_deco.jpg", fact: "Art Deco emphasized geometric shapes, luxurious materials like chrome and velvet, and a sense of glamour." },
            { name: "Mid-Century Modern", image: "mid_century.jpg", fact: "Mid-Century Modern design focused on clean lines, organic forms, and functionality." },
            { name: "Grandmillennial", image: "grandmillennial.jpg", fact: "Grandmillennial style blends traditional elements like chintz and florals with a modern sensibility." }
        ];

        let currentEraIndex = 0;
        let score = 0;
        let round = 1;
        let highScore = localStorage.getItem("highScore") || 0;


        function setVignette() {
            const vignetteImage = document.getElementById("vignetteImage");
            vignetteImage.style.backgroundImage = `url(${eras[currentEraIndex].image})`;
        }

        function setOptions() {
            const optionButtonsDiv = document.getElementById("optionButtons");
            optionButtonsDiv.innerHTML = ""; // Clear previous options

            const correctEra = eras[currentEraIndex];

            let availableEras = [...eras];
            availableEras.splice(availableEras.indexOf(correctEra), 1);  // Remove the current era to prevent it from appearing as an option

            for (let i = 0; i < 3; i++) {
                const randomIndex = Math.floor(Math.random() * availableEras.length);
                const wrongEra = availableEras[randomIndex];
                availableEras.splice(randomIndex, 1);  // Remove the selected era to ensure uniqueness
            }

            let allOptions = [correctEra, ...availableEras];
            allOptions.sort(() => Math.random() - 0.5); // Shuffle options


            allOptions.forEach(era => {
                const button = document.createElement("button");
                button.classList.add("option-button");
                button.textContent = era.name;

                button.addEventListener("click", () => {
                    checkAnswer(era);
                });

                optionButtonsDiv.appendChild(button);
            });
        }


        function checkAnswer(selectedEra) {
            const feedbackMessage = document.getElementById("feedbackMessage");
            const funFactDisplay = document.getElementById("funFactDisplay");
            if (selectedEra.name === eras[currentEraIndex].name) {
                score++;
                feedbackMessage.textContent = "Correct!";
                funFactDisplay.textContent = eras[currentEraIndex].fact;
            } else {
                feedbackMessage.textContent = "Incorrect.";
                funFactDisplay.textContent = "";
            }

            document.getElementById("scoreDisplay").textContent = `Score: ${score}`;

            setTimeout(() => {
                nextRound();
            }, 1500); // Delay before showing next round
        }


        function nextRound() {
          round++;
          currentEraIndex = (currentEraIndex + 1) % eras.length;
          setVignette();
          setOptions();
          feedbackMessage.textContent = "";
          funFactDisplay.textContent = "";

          //animate vignette fade in on new round
          document.getElementById("vignetteImage").classList.add('fadeUp');
        }



        function restartGame() {
            score = 0;
            round = 1;
            currentEraIndex = 0;
            highScore = localStorage.getItem("highScore") || 0; // Reset high score on restart

            document.getElementById("scoreDisplay").textContent = `Score: ${score}`;
            setVignette();
            setOptions();
            feedbackMessage.textContent = "";
            funFactDisplay.textContent = "";
        }


        // Initialize game
        window.onload = () => {
            setVignette();
            setOptions();

            document.getElementById("restart-button").addEventListener("click", restartGame);
        };

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