← back to Model Arena

data/artifacts/25835bfaba3a/qwen25-7b.html

193 lines

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Style Showdown</title>
<style>
:root {
    --bg: #f7efe6;
    --ink: #3a2c22;
    --accent: #c65f38;
    --line: 1px solid rgba(0,0,0,.1);
    --shadow: 0 8px 24px rgba(0,0,0,.12), hover 0 16px 48px rgba(0,0,0,.18);
    --ease: cubic-bezier(.22,1,.36,1) both;
}

body {
    background-color: var(--bg);
    color: var(--ink);
    font-family: 'Didot', 'Bodoni MT', Georgia, serif;
    margin: 0;
    padding: 96px;
    overflow-x: hidden;
}

header {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    margin-bottom: 48px;
}

header span {
    font-size: 32px;
    line-height: 1.15em;
    letter-spacing: .18em;
    text-transform: uppercase;
}

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

.card {
    background-color: var(--bg);
    border-radius: 14px;
    padding: 24px;
    box-shadow: var(--shadow);
    display: flex;
    align-items: center;
    justify-content: space-between;
    transition: transform .7s ease, box-shadow .35s ease;
}

.card:hover {
    transform: translateY(-8px);
    box-shadow: var(--shadow) 0 16px 48px rgba(0,0,0,.18);
}

.result-card {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: #fff;
    border-radius: 14px;
    padding: 24px;
    box-shadow: var(--shadow);
    display: none;
}

.result-card h1 {
    font-size: 38px;
    margin-bottom: 16px;
}

.result-card .winner {
    font-size: 24px;
    color: var(--accent);
}

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

.fade-up-enter-active, .fade-up-leave-active {
    transition: all .7s ease;
}
.fade-up-enter-from, .fade-up-leave-to {
    opacity: 0;
    transform: translateY(28px);
}
</style>
</head>
<body>

<header>
    <span>DESIGNER WALLCOVERINGS</span>
</header>

<section id="bracket">
    <!-- Quarterfinals -->
    <div class="card" onclick="advance('Damask', 'Toile')"><span>Damask</span><span>Toile</span></div>
    <div class="card" onclick="advance('Ikat', 'Chinoiserie')"><span>Ikat</span><span>Chinoiserie</span></div>
    <div class="card" onclick="advance('Art Deco', 'Boho')"><span>Art Deco</span><span>Boho</span></div>
    <div class="card" onclick="advance('Coastal', 'Grandmillennial')"><span>Coastal</span><span>Grandmillennial</span></div>

    <!-- Semifinals -->
    <div id="semifinal1" class="card" style="display: none;"><span id="winner-semifinal1"></span></div>
    <div id="semifinal2" class="card" style="display: none;"><span id="winner-semifinal2"></span></div>

    <!-- Final -->
    <div id="final" class="card" style="display: none;"><span id="winner-final"></span></div>

    <!-- Result Card -->
    <div id="result-card" class="result-card">
        <h1>Champion</h1>
        <p id="champion"></p>
    </div>
</section>

<script>
let damaskWins = 0;
let toileWins = 0;
let ikatWins = 0;
let chinoiserieWins = 0;
let artDecoWins = 0;
let bohoWins = 0;
let coastalWins = 0;
let grandmillennialWins = 0;

function advance(style1, style2) {
    const card1 = document.querySelector(`.card:contains('${style1}')`);
    const card2 = document.querySelector(`.card:contains('${style2}')`);

    if (Math.random() > 0.5) {
        card1.classList.add('fade-up-enter-active');
        setTimeout(() => {
            card1.style.display = 'none';
            if (card1 === document.querySelector('.card:contains(Damask)')) damaskWins++;
            else if (card1 === document.querySelector('.card:contains(Toile)')) toileWins++;
            advanceWinner(style1);
        }, 700);
    } else {
        card2.classList.add('fade-up-enter-active');
        setTimeout(() => {
            card2.style.display = 'none';
            if (card2 === document.querySelector('.card:contains(Ikat)')) ikatWins++;
            else if (card2 === document.querySelector('.card:contains(Chinoiserie)')) chinoiserieWins++;
            advanceWinner(style2);
        }, 700);
    }
}

function advanceWinner(winner) {
    const semifinal1 = document.getElementById('semifinal1');
    const semifinal2 = document.getElementById('semifinal2');

    if (damaskWins > toileWins) {
        semifinal1.textContent = 'Damask';
    } else {
        semifinal1.textContent = 'Toile';
    }

    if (ikatWins > chinoiserieWins) {
        semifinal2.textContent = 'Ikat';
    } else {
        semifinal2.textContent = 'Chinoiserie';
    }

    const finalWinner = document.getElementById('winner-final');
    if (semifinal1.textContent === 'Damask' && semifinal2.textContent === 'Ikat') {
        finalWinner.textContent = 'Damask';
    } else if (semifinal1.textContent === 'Toile' && semifinal2.textContent === 'Ikat') {
        finalWinner.textContent = 'Ikat';
    }

    const resultCard = document.getElementById('result-card');
    resultCard.style.display = 'block';

    setTimeout(() => {
        resultCard.querySelector('#champion').textContent = finalWinner.textContent;
    }, 700);
}

advance('Damask', 'Toile');
</script>

</body>
</html>