Run details
- Model
- xiaomi/mimo-v2.6-pro
- Route
- OpenRouter API, one user message
- Reasoning
- provider default, 21,152 reasoning tokens
- Limits
- 60 min · 131,072 output tokens
- Date
- 21 Oct 2026
- Time
- 7 min 54 s
- Size
- 17 kB
- Tokens
- 82 in, 28,326 out
- List price
- $0.025 ($0.435 in / $0.87 out per M)
- Paid
- $0.022
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
17 kB 400 lines Raw
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Aurore — Mechanical Wristwatch</title>
<style>
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{
background:radial-gradient(125% 105% at 50% 18%, #2b2e33 0%, #191a1e 42%, #0a0b0d 100%);
display:flex;align-items:center;justify-content:center;overflow:hidden;
font-family:Georgia,"Times New Roman",Times,serif;
}
.stage{width:min(92vw,74vh);aspect-ratio:3 / 4}
svg#watch{width:100%;height:100%;display:block}
</style>
</head>
<body>
<div class="stage">
<svg id="watch" viewBox="0 0 720 960" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Luxury mechanical wristwatch showing local time">
<title>Aurore Manufacture — mechanical wristwatch</title>
<defs>
<radialGradient id="backdrop" cx="50%" cy="38%" r="80%">
<stop offset="0" stop-color="#2c2f35"/>
<stop offset="0.55" stop-color="#181a1e"/>
<stop offset="1" stop-color="#0a0b0d"/>
</radialGradient>
<radialGradient id="halo" cx="50%" cy="50%" r="50%">
<stop offset="0" stop-color="#d9b25c" stop-opacity="0.20"/>
<stop offset="0.55" stop-color="#d9b25c" stop-opacity="0.06"/>
<stop offset="1" stop-color="#d9b25c" stop-opacity="0"/>
</radialGradient>
<linearGradient id="goldMain" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#5c4214"/>
<stop offset="0.10" stop-color="#d8b45c"/>
<stop offset="0.22" stop-color="#fff2c2"/>
<stop offset="0.34" stop-color="#c69a34"/>
<stop offset="0.48" stop-color="#7d5a1c"/>
<stop offset="0.62" stop-color="#f2dd9c"/>
<stop offset="0.76" stop-color="#c8992f"/>
<stop offset="0.90" stop-color="#6b4c17"/>
<stop offset="1" stop-color="#e6c67a"/>
</linearGradient>
<radialGradient id="goldRadial" cx="34%" cy="18%" r="90%">
<stop offset="0" stop-color="#fff6d6"/>
<stop offset="0.20" stop-color="#edd18a"/>
<stop offset="0.46" stop-color="#c39630"/>
<stop offset="0.72" stop-color="#8a6522"/>
<stop offset="0.90" stop-color="#d7b055"/>
<stop offset="1" stop-color="#77541a"/>
</radialGradient>
<linearGradient id="goldPolish" x1="0" y1="0" x2="0.35" y2="1">
<stop offset="0" stop-color="#fff9e2"/>
<stop offset="0.33" stop-color="#e2bd68"/>
<stop offset="0.62" stop-color="#8c6a24"/>
<stop offset="1" stop-color="#eed48f"/>
</linearGradient>
<linearGradient id="goldIndex" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#fff7d8"/>
<stop offset="0.38" stop-color="#e2c072"/>
<stop offset="0.72" stop-color="#b2882e"/>
<stop offset="1" stop-color="#6f4f16"/>
</linearGradient>
<linearGradient id="goldHand" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#fff9e2"/>
<stop offset="0.45" stop-color="#e3c274"/>
<stop offset="1" stop-color="#7c5a1a"/>
</linearGradient>
<linearGradient id="blueSteel" x1="0" y1="0" x2="1" y2="0.25">
<stop offset="0" stop-color="#06122c"/>
<stop offset="0.18" stop-color="#2c59ab"/>
<stop offset="0.42" stop-color="#93b6f2"/>
<stop offset="0.58" stop-color="#2f5cb0"/>
<stop offset="0.82" stop-color="#081a3c"/>
<stop offset="1" stop-color="#2b57a5"/>
</linearGradient>
<radialGradient id="dialGrad" cx="46%" cy="34%" r="78%">
<stop offset="0" stop-color="#2d5190"/>
<stop offset="0.36" stop-color="#1c3767"/>
<stop offset="0.72" stop-color="#102348"/>
<stop offset="1" stop-color="#05102a"/>
</radialGradient>
<radialGradient id="dialShade" cx="50%" cy="46%" r="52%">
<stop offset="0.60" stop-color="#000000" stop-opacity="0"/>
<stop offset="0.86" stop-color="#000814" stop-opacity="0.30"/>
<stop offset="1" stop-color="#000814" stop-opacity="0.75"/>
</radialGradient>
<linearGradient id="ivory" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#fffdf8"/>
<stop offset="0.55" stop-color="#f4eee3"/>
<stop offset="1" stop-color="#dbd2c1"/>
</linearGradient>
<linearGradient id="sheen" x1="0" y1="0" x2="0.75" y2="1">
<stop offset="0" stop-color="#ffffff" stop-opacity="0.32"/>
<stop offset="0.30" stop-color="#ffffff" stop-opacity="0.07"/>
<stop offset="0.62" stop-color="#ffffff" stop-opacity="0.015"/>
<stop offset="1" stop-color="#ffffff" stop-opacity="0.13"/>
</linearGradient>
<linearGradient id="leather" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#140b06"/>
<stop offset="0.14" stop-color="#3d2415"/>
<stop offset="0.38" stop-color="#6b422a"/>
<stop offset="0.55" stop-color="#7c4f31"/>
<stop offset="0.80" stop-color="#402616"/>
<stop offset="1" stop-color="#120a05"/>
</linearGradient>
<pattern id="grain" width="9" height="9" patternUnits="userSpaceOnUse" patternTransform="rotate(28)">
<line x1="0" y1="0" x2="0" y2="9" stroke="#000000" stroke-width="1.7" opacity="0.17"/>
<line x1="4.5" y1="0" x2="4.5" y2="9" stroke="#ffffff" stroke-width="0.9" opacity="0.05"/>
</pattern>
<clipPath id="dialClip"><circle cx="360" cy="480" r="222"/></clipPath>
<clipPath id="crystalClip"><circle cx="360" cy="480" r="223"/></clipPath>
<clipPath id="strapClip">
<path d="M265 -12 C261 90, 256 190, 252 268 L468 268 C464 190, 459 90, 455 -12 Z"/>
<path d="M265 972 C261 870, 256 770, 252 692 L468 692 C464 770, 459 870, 455 972 Z"/>
</clipPath>
<filter id="bigShadow" x="-45%" y="-45%" width="190%" height="190%">
<feDropShadow dx="0" dy="26" stdDeviation="26" flood-color="#000000" flood-opacity="0.72"/>
</filter>
<filter id="blur18"><feGaussianBlur stdDeviation="18"/></filter>
<filter id="blur10"><feGaussianBlur stdDeviation="10"/></filter>
<filter id="blur4"><feGaussianBlur stdDeviation="4"/></filter>
</defs>
<!-- backdrop -->
<rect width="720" height="960" fill="url(#backdrop)"/>
<ellipse cx="360" cy="500" rx="345" ry="435" fill="url(#halo)"/>
<!-- strap -->
<g id="strap">
<path d="M265 -12 C261 90, 256 190, 252 268 L468 268 C464 190, 459 90, 455 -12 Z" fill="url(#leather)"/>
<path d="M265 972 C261 870, 256 770, 252 692 L468 692 C464 770, 459 870, 455 972 Z" fill="url(#leather)"/>
<g clip-path="url(#strapClip)">
<rect x="0" y="0" width="720" height="960" fill="url(#grain)"/>
<path d="M279 -12 C275 90, 270 190, 266 268" fill="none" stroke="#c99b62" stroke-width="3.2" stroke-dasharray="13 11" opacity="0.5"/>
<path d="M441 -12 C445 90, 450 190, 454 268" fill="none" stroke="#c99b62" stroke-width="3.2" stroke-dasharray="13 11" opacity="0.5"/>
<path d="M279 972 C275 870, 270 770, 266 692" fill="none" stroke="#c99b62" stroke-width="3.2" stroke-dasharray="13 11" opacity="0.5"/>
<path d="M441 972 C445 870, 450 770, 454 692" fill="none" stroke="#c99b62" stroke-width="3.2" stroke-dasharray="13 11" opacity="0.5"/>
<path d="M360 -12 L360 268" stroke="#ffffff" stroke-width="46" opacity="0.05"/>
<path d="M360 692 L360 972" stroke="#ffffff" stroke-width="46" opacity="0.05"/>
</g>
</g>
<!-- shadow cast by the case onto the strap -->
<ellipse cx="360" cy="506" rx="300" ry="288" fill="#000000" opacity="0.36" filter="url(#blur18)"/>
<!-- lugs -->
<g id="lugs" filter="url(#bigShadow)" fill="url(#goldMain)">
<rect x="258" y="172" width="58" height="156" rx="27" transform="rotate(-7 287 250)"/>
<rect x="404" y="172" width="58" height="156" rx="27" transform="rotate(7 433 250)"/>
<rect x="258" y="632" width="58" height="156" rx="27" transform="rotate(7 287 710)"/>
<rect x="404" y="632" width="58" height="156" rx="27" transform="rotate(-7 433 710)"/>
</g>
<!-- crown -->
<g id="crown">
<rect x="594" y="462" width="28" height="36" rx="5" fill="url(#goldMain)"/>
<rect x="612" y="450" width="42" height="60" rx="8" fill="url(#goldRadial)" stroke="#3a2709" stroke-width="1.6"/>
<g stroke="#4b3413" stroke-width="1.7" opacity="0.5">
<line x1="620" y1="457" x2="620" y2="503"/>
<line x1="627" y1="457" x2="627" y2="503"/>
<line x1="634" y1="457" x2="634" y2="503"/>
<line x1="641" y1="457" x2="641" y2="503"/>
<line x1="648" y1="457" x2="648" y2="503"/>
</g>
<rect x="644" y="455" width="7" height="50" rx="3" fill="#fff3c9" opacity="0.30"/>
</g>
<!-- case -->
<g id="case">
<circle cx="360" cy="480" r="252" fill="url(#goldMain)"/>
<circle cx="360" cy="480" r="251" fill="none" stroke="#2a1c07" stroke-width="2.5" opacity="0.55"/>
<circle cx="360" cy="480" r="238" fill="none" stroke="url(#goldRadial)" stroke-width="26"/>
<circle cx="360" cy="480" r="225.5" fill="none" stroke="url(#goldPolish)" stroke-width="6"/>
<circle cx="360" cy="480" r="222.5" fill="none" stroke="#0b1226" stroke-width="3" opacity="0.85"/>
</g>
<!-- dial -->
<g id="dial">
<circle cx="360" cy="480" r="222" fill="url(#dialGrad)"/>
<g clip-path="url(#dialClip)">
<path id="sunburst" fill="none" stroke="#efd59a" stroke-width="1.3" opacity="0.055"/>
<path id="guilloche" fill="none" stroke="#cfe2ff" stroke-width="1" opacity="0.05"/>
<ellipse cx="296" cy="352" rx="215" ry="185" fill="#86ade9" opacity="0.11" filter="url(#blur18)"/>
</g>
<circle cx="360" cy="480" r="222" fill="url(#dialShade)"/>
<!-- minute track -->
<path id="ticksMinor" fill="none" stroke="#d8c290" stroke-width="1.9" opacity="0.85" stroke-linecap="butt"/>
<path id="ticksMajor" fill="none" stroke="#f0dcae" stroke-width="3.4" opacity="0.95" stroke-linecap="butt"/>
<!-- applied hour markers -->
<g id="indices"></g>
<!-- dial text -->
<g text-anchor="middle" font-family="Georgia, 'Times New Roman', Times, serif">
<text x="364.5" y="382" font-size="27" letter-spacing="9" fill="#f2e2b8">AURORE</text>
<text x="362.3" y="409" font-size="10.5" letter-spacing="4.5" fill="#c9b287">MANUFACTURE</text>
<text x="362" y="562" font-size="11" letter-spacing="4" fill="#c9b287">CHRONOMÈTRE</text>
<text x="361.8" y="593" font-size="9.5" letter-spacing="3.5" fill="#a3906c">AUTOMATIC</text>
</g>
<!-- date window -->
<g id="dateWindow">
<rect x="472" y="452" width="76" height="56" rx="5" fill="#02101f" opacity="0.55"/>
<rect x="475" y="455" width="70" height="50" rx="3" fill="url(#ivory)"/>
<rect x="475" y="455" width="70" height="50" rx="3" fill="none" stroke="url(#goldIndex)" stroke-width="3.6"/>
<rect x="479" y="459" width="62" height="42" rx="2" fill="none" stroke="#8b7f66" stroke-width="1" opacity="0.55"/>
<text id="dateText" x="510" y="481" text-anchor="middle" dominant-baseline="central"
font-family="Georgia, 'Times New Roman', Times, serif" font-size="31" fill="#232830">12</text>
</g>
</g>
<!-- hand shadows -->
<g id="handShadows" transform="translate(7,11)" opacity="0.42" fill="#020c1c">
<g id="hourShadow">
<path d="M0,-112 L9,-42 L5.5,26 L0,50 L-5.5,26 L-9,-42 Z"/>
</g>
<g id="minShadow">
<path d="M0,-176 L11,-46 L6.5,30 L0,56 L-6.5,30 L-11,-46 Z"/>
</g>
<g id="secShadow">
<path d="M0,-196 L2.2,-196 L2.2,58 L-2.2,58 L-2.2,-196 Z"/>
<circle cx="0" cy="42" r="9"/>
</g>
</g>
<!-- hands -->
<g id="hands">
<g id="hourHand">
<path d="M0,-112 L9,-42 L5.5,26 L0,50 L-5.5,26 L-9,-42 Z" fill="url(#goldHand)" stroke="#2c1e08" stroke-width="1" stroke-opacity="0.5"/>
<path d="M0,-112 L9,-42 L0,-33 Z" fill="#fff8de" opacity="0.38"/>
<path d="M0,-96 L3.2,-48 L2.3,10 L0,20 L-2.3,10 L-3.2,-48 Z" fill="#f2ead0" opacity="0.85"/>
</g>
<g id="minHand">
<path d="M0,-176 L11,-46 L6.5,30 L0,56 L-6.5,30 L-11,-46 Z" fill="url(#goldHand)" stroke="#2c1e08" stroke-width="1" stroke-opacity="0.5"/>
<path d="M0,-176 L11,-46 L0,-37 Z" fill="#fff8de" opacity="0.38"/>
<path d="M0,-158 L4,-54 L2.7,14 L0,26 L-2.7,14 L-4,-54 Z" fill="#f2ead0" opacity="0.85"/>
</g>
<g id="secHand">
<line x1="0" y1="-196" x2="0" y2="58" stroke="url(#blueSteel)" stroke-width="3.2" stroke-linecap="round"/>
<circle cx="0" cy="42" r="9.5" fill="url(#blueSteel)"/>
<circle cx="0" cy="42" r="3.2" fill="#e8d6a2" opacity="0.55"/>
<circle cx="0" cy="-178" r="5.5" fill="url(#blueSteel)"/>
<circle cx="0" cy="-178" r="2" fill="#e8d6a2" opacity="0.5"/>
</g>
<circle cx="360" cy="480" r="11" fill="url(#goldHand)"/>
<circle cx="360" cy="480" r="4.6" fill="#0b1730"/>
<circle cx="357" cy="477" r="2" fill="#fff6d5" opacity="0.5"/>
</g>
<!-- crystal -->
<g id="crystal" clip-path="url(#crystalClip)">
<ellipse cx="272" cy="326" rx="118" ry="252" transform="rotate(-32 272 326)" fill="url(#sheen)" opacity="0.75" filter="url(#blur10)"/>
<ellipse cx="476" cy="648" rx="88" ry="168" transform="rotate(-32 476 648)" fill="url(#sheen)" opacity="0.32" filter="url(#blur18)"/>
<path d="M170 618 C242 692 424 708 546 632" fill="none" stroke="#ffffff" stroke-width="32" opacity="0.055" filter="url(#blur18)"/>
<path d="M166 592 A224 224 0 0 1 283.4 269.5" fill="none" stroke="#ffffff" stroke-width="3" opacity="0.32" stroke-linecap="round"/>
<path d="M570.5 556.6 A224 224 0 0 1 398.9 700.6" fill="none" stroke="#000814" stroke-width="9" opacity="0.28" stroke-linecap="round" filter="url(#blur4)"/>
<path d="M232 306 A224 224 0 0 1 452 276" fill="none" stroke="#ffffff" stroke-width="2" opacity="0.18" stroke-linecap="round"/>
</g>
</svg>
</div>
<script>
(function () {
"use strict";
var NS = "http://www.w3.org/2000/svg";
var CX = 360, CY = 480;
function pt(r, deg) {
var a = (deg - 90) * Math.PI / 180;
return [CX + r * Math.cos(a), CY + r * Math.sin(a)];
}
function f(n) { return Math.round(n * 100) / 100; }
/* ---------- sunburst guilloché ---------- */
var d = "", i, p, r;
for (i = 0; i < 240; i++) {
p = pt(222, i * 1.5);
d += "M" + CX + " " + CY + "L" + f(p[0]) + " " + f(p[1]);
}
document.getElementById("sunburst").setAttribute("d", d);
/* ---------- concentric engine-turned rings ---------- */
d = "";
for (r = 10; r <= 222; r += 6) {
d += "M" + f(CX - r) + " " + CY +
"a" + r + " " + r + " 0 1 0 " + (2 * r) + " 0" +
"a" + r + " " + r + " 0 1 0 " + (-2 * r) + " 0";
}
document.getElementById("guilloche").setAttribute("d", d);
/* ---------- minute track ---------- */
var minor = "", major = "";
for (i = 0; i < 60; i++) {
var isMajor = (i % 5 === 0);
var a1 = pt(isMajor ? 186 : 196, i * 6);
var a2 = pt(210, i * 6);
var seg = "M" + f(a1[0]) + " " + f(a1[1]) + "L" + f(a2[0]) + " " + f(a2[1]);
if (isMajor) { major += seg; } else { minor += seg; }
}
document.getElementById("ticksMinor").setAttribute("d", minor);
document.getElementById("ticksMajor").setAttribute("d", major);
/* ---------- applied hour markers ---------- */
var idxG = document.getElementById("indices");
for (i = 0; i < 12; i++) {
if (i === 3) { continue; } /* date aperture at 3 o'clock */
var ang = i * 30;
var offs = (i === 0) ? [-11, 11] : [0]; /* double baton at 12 */
for (var k = 0; k < offs.length; k++) {
var off = offs[k];
var sh = document.createElementNS(NS, "rect");
sh.setAttribute("x", CX + off - 4);
sh.setAttribute("y", CY - 190);
sh.setAttribute("width", 8);
sh.setAttribute("height", 50);
sh.setAttribute("rx", 2.5);
sh.setAttribute("fill", "#02101f");
sh.setAttribute("opacity", "0.45");
sh.setAttribute("transform", "translate(2.5,4) rotate(" + ang + " " + CX + " " + CY + ")");
idxG.appendChild(sh);
var mr = document.createElementNS(NS, "rect");
mr.setAttribute("x", CX + off - 4);
mr.setAttribute("y", CY - 192);
mr.setAttribute("width", 8);
mr.setAttribute("height", 52);
mr.setAttribute("rx", 2.5);
mr.setAttribute("fill", "url(#goldIndex)");
mr.setAttribute("transform", "rotate(" + ang + " " + CX + " " + CY + ")");
idxG.appendChild(mr);
}
}
/* ---------- movement ---------- */
var hourHand = document.getElementById("hourHand"),
minHand = document.getElementById("minHand"),
secHand = document.getElementById("secHand"),
hourSh = document.getElementById("hourShadow"),
minSh = document.getElementById("minShadow"),
secSh = document.getElementById("secShadow"),
dateText = document.getElementById("dateText");
function setRot(el, deg) {
el.setAttribute("transform", "rotate(" + deg + " " + CX + " " + CY + ")");
}
var lastDay = -1;
function frame() {
var now = new Date();
var s = now.getSeconds() + now.getMilliseconds() / 1000;
var m = now.getMinutes() + s / 60;
var h = (now.getHours() % 12) + m / 60;
setRot(hourHand, h * 30); setRot(hourSh, h * 30);
setRot(minHand, m * 6); setRot(minSh, m * 6);
setRot(secHand, s * 6); setRot(secSh, s * 6);
var day = now.getDate();
if (day !== lastDay) {
lastDay = day;
dateText.textContent = (day < 10 ? "0" : "") + day;
}
requestAnimationFrame(frame);
}
requestAnimationFrame(frame);
})();
</script>
</body>
</html>

