• Updated 23 Oct, 19:41 UTC
  • Next run 24 Oct, 05:17 UTCNext 24 Oct 05:17
  • Last 7 days: 5 new models, 196 runs7 d: 5 models, 196 runs
Wristwatch that shows the current time

Hy4 PreviewTencent

Network offOpen alone (new tab)

Run details

Model
tencent/hy4-preview
Route
OpenRouter API, one user message
Served by
Cohere
Effort
high, OpenRouter's default for this model
Limits
60 min · 64,000 output tokens (the model's limit)
Date
23 Oct 2026
Time
44 s
Size
13 kB
Tokens
96 in, 4,207 out (468 of them thinking)
List price
$0.010 at today's price ($0.751 in / $2.25 out per M)
Paid
$0.011

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

13 kB 420 lines Raw

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Luxury Mechanical Watch</title>
    <style>
        :root {
            --watch-size: 420px;
            --bezel-width: 35px;
            --dial-size: calc(var(--watch-size) - (var(--bezel-width) * 2));
            --gold: #e3c28d;
            --steel-light: #f4f5f7;
            --steel-mid: #b8bcc1;
            --steel-dark: #4c5156;
            --dial-blue: #0c182c;
            --dial-light: #1f3a63;
        }

        body {
            margin: 0;
            height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
            background: radial-gradient(circle at center, #2a2d34 0%, #0d0e12 100%);
            font-family: 'Times New Roman', Times, serif;
            overflow: hidden;
        }

        /* Lugs (the metal attachments for the strap) */
        .lugs {
            position: absolute;
            width: 140px;
            height: calc(var(--watch-size) + 60px);
            pointer-events: none;
        }
        
        .lug {
            position: absolute;
            width: 34px;
            height: 90px;
            background: linear-gradient(90deg, var(--steel-dark), var(--steel-light), var(--steel-mid), var(--steel-dark));
            border-radius: 5px;
            box-shadow: 2px 4px 10px rgba(0,0,0,0.5);
        }
        .lug.tl { top: -30px; left: 0; transform: rotate(-15deg); }
        .lug.tr { top: -30px; right: 0; transform: rotate(15deg); }
        .lug.bl { bottom: -30px; left: 0; transform: rotate(15deg); }
        .lug.br { bottom: -30px; right: 0; transform: rotate(-15deg); }

        /* Main Watch Case */
        .watch-case {
            position: relative;
            width: var(--watch-size);
            height: var(--watch-size);
            border-radius: 50%;
            background: conic-gradient(
                var(--steel-mid) 0deg, var(--steel-light) 45deg, var(--steel-dark) 90deg, var(--steel-light) 135deg, 
                var(--steel-mid) 180deg, var(--steel-light) 225deg, var(--steel-dark) 270deg, var(--steel-light) 315deg, var(--steel-mid) 360deg
            );
            box-shadow: 
                15px 25px 40px rgba(0,0,0,0.7),
                inset 0px 2px 5px rgba(255,255,255,0.8),
                inset 0px -2px 5px rgba(0,0,0,0.5);
            display: flex;
            justify-content: center;
            align-items: center;
        }

        /* Fluted Bezel Ring */
        .bezel {
            position: absolute;
            width: calc(var(--watch-size) - 12px);
            height: calc(var(--watch-size) - 12px);
            border-radius: 50%;
            background: repeating-conic-gradient(
                from 0deg, 
                var(--steel-light) 0deg, 
                var(--steel-mid) 1.5deg, 
                var(--steel-dark) 3deg, 
                var(--steel-mid) 4.5deg, 
                var(--steel-light) 6deg
            );
            box-shadow: 
                inset 0 0 15px rgba(0,0,0,0.6),
                0 5px 15px rgba(0,0,0,0.4);
            display: flex;
            justify-content: center;
            align-items: center;
        }

        /* Polished inner bezel slope */
        .inner-bezel {
            position: absolute;
            width: calc(var(--dial-size) + 16px);
            height: calc(var(--dial-size) + 16px);
            border-radius: 50%;
            background: linear-gradient(135deg, #fff 0%, var(--gold) 25%, #8a6a35 50%, var(--gold) 75%, #fff 100%);
            box-shadow: inset 0 2px 8px rgba(0,0,0,0.5);
            display: flex;
            justify-content: center;
            align-items: center;
        }

        /* Watch Dial */
        .dial {
            position: absolute;
            width: var(--dial-size);
            height: var(--dial-size);
            border-radius: 50%;
            background: 
                repeating-conic-gradient(from 0deg, rgba(255,255,255,0.02) 0deg 1deg, transparent 1deg 2deg),
                radial-gradient(circle at center, var(--dial-light) 0%, var(--dial-blue) 70%, #050a14 100%);
            box-shadow: inset 0 8px 25px rgba(0,0,0,0.9);
            display: flex;
            justify-content: center;
            align-items: center;
        }

        /* Brand & Text */
        .brand {
            position: absolute;
            top: 22%;
            width: 100%;
            text-align: center;
            color: var(--gold);
            font-size: 20px;
            letter-spacing: 3px;
            text-transform: uppercase;
            text-shadow: 1px 1px 2px rgba(0,0,0,0.8);
            z-index: 2;
        }
        
        .brand span {
            display: block;
            font-size: 9px;
            letter-spacing: 2px;
            color: var(--steel-mid);
            margin-top: 4px;
            font-family: sans-serif;
        }

        .swiss-made {
            position: absolute;
            bottom: 22%;
            width: 100%;
            text-align: center;
            color: var(--steel-mid);
            font-size: 10px;
            letter-spacing: 1px;
            font-family: sans-serif;
            z-index: 2;
        }

        /* Ticks & Markers */
        .marker {
            position: absolute;
            width: 100%;
            height: 100%;
            top: 0;
            left: 0;
        }

        .tick {
            position: absolute;
            left: 50%;
            top: 2%;
            transform-origin: 50% calc(var(--dial-size) / 2 - 4%);
        }

        .tick.minute {
            width: 2px;
            height: 6px;
            background: rgba(255, 255, 255, 0.3);
            margin-left: -1px;
        }

        .tick.hour {
            width: 6px;
            height: 20px;
            background: linear-gradient(to bottom, var(--gold), #b38741);
            margin-left: -3px;
            border-radius: 1px;
            box-shadow: 1px 1px 3px rgba(0,0,0,0.8);
            top: 3.5%;
            transform-origin: 50% calc(var(--dial-size) / 2 - 7%);
        }

        /* Date Window */
        .date-window {
            position: absolute;
            right: 12%;
            top: 50%;
            transform: translateY(-50%);
            width: 34px;
            height: 26px;
            background: #fdfdfd;
            border: 2px solid var(--gold);
            border-radius: 3px;
            box-shadow: 
                inset 1px 1px 4px rgba(0,0,0,0.4),
                2px 2px 5px rgba(0,0,0,0.6);
            display: flex;
            justify-content: center;
            align-items: center;
            z-index: 2;
        }

        .date-text {
            color: #111;
            font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
            font-size: 16px;
            font-weight: bold;
            margin: 0;
            padding: 0;
            line-height: 1;
            transform: scaleY(1.1);
        }

        /* Watch Hands */
        .hand {
            position: absolute;
            bottom: 50%;
            left: 50%;
            transform-origin: bottom center;
            border-radius: 4px 4px 0 0;
            z-index: 10;
        }

        .hour-hand {
            width: 8px;
            height: 25%;
            margin-left: -4px;
            background: linear-gradient(to right, #fff, var(--gold) 50%, #b38741);
            clip-path: polygon(50% 0%, 100% 20%, 80% 100%, 20% 100%, 0% 20%);
            box-shadow: 2px 2px 5px rgba(0,0,0,0.5);
        }

        .minute-hand {
            width: 6px;
            height: 38%;
            margin-left: -3px;
            background: linear-gradient(to right, #fff, var(--gold) 50%, #b38741);
            clip-path: polygon(50% 0%, 100% 15%, 80% 100%, 20% 100%, 0% 15%);
            box-shadow: 3px 3px 6px rgba(0,0,0,0.5);
        }

        .second-hand {
            width: 2px;
            height: 45%;
            margin-left: -1px;
            background: #d32f2f;
            border-radius: 2px;
            box-shadow: 2px 2px 4px rgba(0,0,0,0.4);
        }
        
        .second-hand::after {
            content: '';
            position: absolute;
            bottom: -15%;
            width: 2px;
            height: 15%;
            background: #d32f2f;
        }

        /* Center Pin */
        .center-pin {
            position: absolute;
            width: 12px;
            height: 12px;
            background: radial-gradient(circle at center, var(--steel-light) 0%, var(--steel-dark) 100%);
            border-radius: 50%;
            box-shadow: 0 2px 4px rgba(0,0,0,0.6);
            z-index: 11;
        }

        /* Crown */
        .crown {
            position: absolute;
            right: -18px;
            top: 50%;
            transform: translateY(-50%);
            width: 22px;
            height: 36px;
            background: repeating-linear-gradient(
                to bottom,
                var(--steel-dark) 0px,
                var(--steel-light) 2px,
                var(--steel-mid) 4px,
                var(--steel-dark) 6px
            );
            border-radius: 3px 6px 6px 3px;
            box-shadow: 4px 2px 8px rgba(0,0,0,0.6);
            z-index: -1;
        }
        .crown::before {
            content: '';
            position: absolute;
            left: -6px;
            top: 50%;
            transform: translateY(-50%);
            width: 10px;
            height: 20px;
            background: linear-gradient(to bottom, var(--steel-dark), var(--steel-light), var(--steel-dark));
            border-radius: 2px;
        }

        /* Sapphire Crystal Reflection */
        .crystal {
            position: absolute;
            width: 100%;
            height: 100%;
            border-radius: 50%;
            background: linear-gradient(135deg, rgba(255,255,255,0.25) 0%, rgba(255,255,255,0) 40%, rgba(255,255,255,0) 60%, rgba(255,255,255,0.05) 100%);
            pointer-events: none;
            z-index: 20;
            box-shadow: inset 0 0 20px rgba(255,255,255,0.1);
        }
    </style>
</head>
<body>

    <div class="lugs">
        <div class="lug tl"></div>
        <div class="lug tr"></div>
        <div class="lug bl"></div>
        <div class="lug br"></div>
    </div>

    <div class="watch-case">
        <div class="crown"></div>
        
        <div class="bezel">
            <div class="inner-bezel">
                <div class="dial">
                    <div class="brand">
                        AURELIA
                        <span>CHRONOMETER</span>
                    </div>
                    
                    <div class="swiss-made">SWISS MADE</div>
                    
                    <div class="date-window">
                        <div class="date-text" id="date-display">1</div>
                    </div>

                    <div class="marker-container" id="markers"></div>

                    <div class="hand hour-hand" id="hour-hand"></div>
                    <div class="hand minute-hand" id="minute-hand"></div>
                    <div class="hand second-hand" id="second-hand"></div>
                    
                    <div class="center-pin"></div>
                    <div class="crystal"></div>
                </div>
            </div>
        </div>
    </div>

    <script>
        const markerContainer = document.getElementById('markers');
        const dialSize = 350; // var(--dial-size) computing to approx 350px

        // Generate Dial Markers
        for (let i = 0; i < 60; i++) {
            const tick = document.createElement('div');
            tick.className = `tick ${i % 5 === 0 ? 'hour' : 'minute'}`;
            tick.style.transform = `rotate(${i * 6}deg)`;
            
            // Skip the 3 o'clock hour marker to make room for the date window
            if (i === 15) {
                tick.style.display = 'none';
            }
            
            markerContainer.appendChild(tick);
        }

        const hourHand = document.getElementById('hour-hand');
        const minuteHand = document.getElementById('minute-hand');
        const secondHand = document.getElementById('second-hand');
        const dateDisplay = document.getElementById('date-display');

        let lastDate = -1;

        function updateTime() {
            const now = new Date();
            
            // Get time components
            const hours = now.getHours();
            const minutes = now.getMinutes();
            const seconds = now.getSeconds();
            const milliseconds = now.getMilliseconds();
            const date = now.getDate();

            // Continuous sweep calculations
            const secondsAngle = (seconds + milliseconds / 1000) * 6;
            const minutesAngle = (minutes + seconds / 60) * 6;
            const hoursAngle = ((hours % 12) + minutes / 60) * 30;

            // Apply rotations
            secondHand.style.transform = `rotate(${secondsAngle}deg)`;
            minuteHand.style.transform = `rotate(${minutesAngle}deg)`;
            hourHand.style.transform = `rotate(${hoursAngle}deg)`;

            // Update date if changed
            if (date !== lastDate) {
                dateDisplay.textContent = date;
                lastDate = date;
            }

            // Use requestAnimationFrame for fluid sweeping motion
            requestAnimationFrame(updateTime);
        }

        // Start the clock
        requestAnimationFrame(updateTime);
    </script>
</body>
</html>

Compare with

Hy4 Preview: other attempts