hypeorcode
Network offOpen alone (new tab)

Run details

Model
nvidia/nemotron-3.5-lightning:free
Route
OpenRouter API, one user message
Reasoning
provider default, 12,663 reasoning tokens
Limits
60 min · 65,536 output tokens
Date
21 Oct 2026
Time
2 min 20 s
Size
5.4 kB
Tokens
93 in, 14,410 out
List price
$0.003 ($0.07 in / $0.2 out per M)
Paid
$0 (free route)

Raw files: output · meta.json

Exact prompt

Draw a mechanical wristwatch that shows the current local time, with a sweeping seconds hand and a date window. Make it look expensive.

It must be one complete, self-contained HTML file: inline all CSS and JavaScript, and make no network requests of any kind (no CDNs, web fonts or remote images). Reply with the file in a single ```html code block.

Source

5.4 kB 154 lines Raw

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Mechanical Wristwatch</title>
    <style>
        * { box-sizing: border-box; margin: 0; padding: 0; }
        body {
            min-height: 100vh;
            display: flex;
            align-items: center;
            justify-content: center;
            background: #0b0b0b;
        }
        .watch {
            position: relative;
            width: 340px;
            height: 340px;
            background: linear-gradient(135deg, #252525 0%, #0d0d0d 100%);
            border-radius: 50%;
            box-shadow: 
                inset 0 0 0 1px #353535,
                0 0 30px rgba(0,0,0,0.6),
                0 0 0 1px #454545;
        }
        .case-band {
            position: absolute;
            top: -4px; right: -4px; bottom: -4px; left: -4px;
            border-radius: 50%;
            background: linear-gradient(135deg, #ffd700 0%, #b8860b 50%, #ffec8b 100%);
            box-shadow: 
                inset 0 10px 20px rgba(0,0,0,0.35),
                inset 0 -10px 20px rgba(0,0,0,0.25),
                0 0 0 1px #ffe566,
                0 0 25px rgba(255,215,0,0.15);
            border: 2px solid #b8860b;
        }
        .crystal {
            position: absolute;
            top: 28px; right: 28px; bottom: 28px; left: 28px;
            border-radius: 50%;
            background: radial-gradient(circle at 35% 35%, rgba(255,255,255,0.08) 0%, transparent 50%);
            border: 1px solid rgba(255,255,255,0.1);
            box-shadow: inset 0 0 25px rgba(255,255,255,0.04);
        }
        .dial {
            position: absolute;
            top: 40px; right: 40px; bottom: 40px; left: 40px;
            border-radius: 50%;
            background: radial-gradient(ellipse at 30% 30%, #0a0a0a 0%, #020202 100%);
            padding: 10px;
            box-shadow: inset 0 0 35px rgba(0,0,0,0.5);
        }
        .hour-markers {
            position: absolute;
            top: 0; right: 0; bottom: 0; left: 0;
        }
        .marker {
            position: absolute;
            width: 4px;
            height: 20px;
            background: #ffd700;
            border-radius: 2px;
            top: 50%;
            transform: translateX(-50%) rotate(calc(var(--pos) * 30deg));
            box-shadow: 0 0 4px #ffd700;
        }
        .marker-l { height: 28px; }
        .hand {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            transform-origin: 50% 50%;
            z-index: 10;
        }
        .hand.second { width: 1px; height: 38%; background: #c0392b; box-shadow: 0 0 8px #c0392b; }
        .hand.minute { width: 2px; height: 33%; background: #ecf0f1; box-shadow: 0 0 6px #ecf0f1; }
        .hand.hour { width: 3px; height: 23%; background: #95a5a6; box-shadow: 0 0 4px #95a5a6; }
        .date-window {
            position: absolute;
            bottom: 10px;
            right: 10px;
            width: 44px;
            height: 20px;
            background: rgba(0,0,0,0.75);
            border-radius: 3px;
            border: 1px solid #333;
            padding: 1px 3px;
            font-family: Georgia, serif;
            font-size: 0.9rem;
            color: #ffd700;
            line-height: 1.3;
            text-align: center;
            box-shadow: inset 0 1px 2px rgba(0,0,0,0.3);
        }
    </style>
</head>
<body>
    <div class="watch">
        <div class="case-band"></div>
        <div class="crystal"></div>
        <div class="dial">
            <div class="hour-markers" id="markers"></div>
            <div class="hand hour" id="hourHand"></div>
            <div class="hand minute" id="minuteHand"></div>
            <div class="hand second" id="secondHand"></div>
            <div class="date-window" id="dateWindow">00</div>
        </div>
    </div>

    <script>
        // Initialize hour markers
        const markerContainer = document.getElementById('markers');
        for (let i = 0; i < 12; i++) {
            const marker = document.createElement('div');
            marker.className = 'marker' + (i % 3 === 0 ? '-l' : '');
            marker.style.setProperty('--pos', i);
            markerContainer.appendChild(marker);
        }

        const secondHand = document.getElementById('secondHand');
        const minuteHand = document.getElementById('minuteHand');
        const hourHand = document.getElementById('hourHand');
        const dateWindow = document.getElementById('dateWindow');

        function update() {
            const now = new Date();
            const h = now.getHours() % 12;
            const m = now.getMinutes();
            const s = now.getSeconds();
            const ms = now.getMilliseconds();

            // Continuous sweeping angles (degrees), 0° = 12 o'clock
            const sAngle = (s + ms / 1000) * 6;
            const mAngle = (m + s / 60) * 6;
            const hAngle = (h + m / 60) * 30;

            secondHand.style.transform = `rotate(${sAngle - 90}deg)`;
            minuteHand.style.transform = `rotate(${mAngle - 90}deg)`;
            hourHand.style.transform = `rotate(${hAngle - 90}deg)`;

            // Date window (two-digit day)
            const day = now.getDate();
            dateWindow.textContent = day < 10 ? '0' + day : day;

            requestAnimationFrame(update);
        }

        update();
    </script>
</body>
</html>

Compare with

Nemotron 3.5 Lightning: other attempts