• Updated 30 Oct, 21:11 UTC
  • Next run 31 Oct, 05:17 UTCNext 31 Oct 05:17
  • Last 7 days: 4 new models · 475 runs7 d: 4 models · 475 runs
Wristwatch that shows the current time

InklingThinking Machines

Network offOpen alone (new tab)

Run details

Model
thinkingmachines/inkling
Route
OpenRouter API, one user message
Served by
Together
Effort
high, OpenRouter's default for this model
Limits
60 min · 471,859 output tokens (the model's limit)
Date
27 Oct 2026
Time
3 min 43 s
Size
14 kB
Tokens
91 in, 18,982 out (13,779 of them thinking)
List price
$0.077 at today's price ($1 in / $4.05 out per M)
Paid
$0.077

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

14 kB 543 lines Raw

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Aurelia Automatique — Lux Mechanical Timepiece</title>
<style>
  :root {
    --gold-deep: #5c3a1e;
    --gold-mid: #8a6e3e;
    --gold-bright: #c5a059;
    --gold-highlight: #f5e6b8;
    --dial-deep: #080d18;
    --dial-mid: #1a2545;
    --dial-surface: radial-gradient(circle at 50% 30%, #2a3a5c, #1a2545, #0d1018);
  }

  * { margin: 0; padding: 0; box-sizing: border-box; }

  body {
    background: radial-gradient(circle at center, #14142b 0%, #0a0a12 100%);
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: "Times New Roman", Times, Georgia, "Palatino Linotype", serif;
    color: #e6c88e;
    overflow: hidden;
  }

  /* Ambient desk reflection */
  body::before {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 40vh;
    background: linear-gradient(to top, rgba(255,255,255,0.03), transparent);
    pointer-events: none;
  }

  .scene {
    position: relative;
    z-index: 2;
  }

  .watch-wrapper {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
  }

  /* Strap */
  .strap {
    width: 150px;
    height: 90px;
    background: linear-gradient(90deg, #2a1e15 0%, #3a2a1f 30%, #1a110e 70%, #2a1e15 100%);
    position: relative;
    border-left: 1px solid rgba(255,255,255,0.08);
    border-right: 1px solid rgba(0,0,0,0.4);
    box-shadow: inset 0 0 20px rgba(0,0,0,0.8);
    z-index: -1;
  }
  .strap-top {
    border-radius: 12px 12px 0 0;
    margin-bottom: -12px;
  }
  .strap-bottom {
    border-radius: 0 0 12px 12px;
    margin-top: -12px;
  }
  /* Stitching */
  .strap::after {
    content: "";
    position: absolute;
    top: 14px;
    bottom: 14px;
    left: 10px;
    right: 10px;
    border-left: 1px dashed rgba(255,255,255,0.12);
    border-right: 1px dashed rgba(255,255,255,0.12);
    pointer-events: none;
  }

  /* Lugs connecting strap to case */
  .lug {
    position: absolute;
    width: 28px;
    height: 26px;
    background: linear-gradient(180deg, #c59e4a, #8a6e3e, #5c3a1e);
    border-radius: 4px 4px 2px 2px;
    top: 64px;
    z-index: 1;
    box-shadow: inset -1px -1px 3px rgba(0,0,0,0.5);
  }
  .lug-left { left: 66px; }
  .lug-right { right: 66px; }

  /* Watch case */
  .watch-case {
    position: relative;
    width: 340px;
    height: 340px;
    border-radius: 50%;
    background:
      radial-gradient(circle at 35% 35%, #f8e8b0 0%, #d4a843 20%, #9e7b2e 50%, #5c3a1e 85%, #3b240e 100%);
    box-shadow:
      0 30px 60px rgba(0,0,0,0.9),
      0 10px 30px rgba(0,0,0,0.7),
      inset 0 0 40px rgba(255,255,255,0.25),
      inset -15px -15px 40px rgba(0,0,0,0.5),
      inset 0 -8px 20px rgba(0,0,0,0.6),
      0 0 0 4px #8a6e3e,
      0 0 0 7px #c5a059,
      0 0 0 9px #5c3a1e;
    display: flex;
    align-items: center;
    justify-content: center;
  }

  /* Crown */
  .crown {
    position: absolute;
    right: -10px;
    top: 50%;
    width: 22px;
    height: 32px;
    background: linear-gradient(90deg, #5c3a1e, #9e7b2e, #c5a059, #f5e6b8, #c5a059, #9e7b2e, #5c3a1e);
    border-radius: 10px;
    transform: translateY(-50%);
    box-shadow: inset -3px 0 6px rgba(0,0,0,0.5), 2px 0 8px rgba(0,0,0,0.7);
  }
  .crown-ridges {
    position: absolute;
    left: 5px;
    top: 3px;
    bottom: 3px;
    width: 2px;
    background: linear-gradient(180deg, transparent, rgba(0,0,0,0.4), transparent, rgba(0,0,0,0.4), transparent);
    box-shadow: 4px 0 0 rgba(0,0,0,0.35), 8px 0 0 rgba(0,0,0,0.35);
  }

  /* Watch face */
  .watch-face {
    position: relative;
    width: 278px;
    height: 278px;
    border-radius: 50%;
    background: var(--dial-surface);
    box-shadow:
      inset 0 0 40px rgba(0,0,0,0.9),
      inset 0 0 15px rgba(255,255,255,0.06),
      0 0 0 2px rgba(201,168,94,0.15);
    overflow: hidden;
  }

  /* Subtle sunburst texture */
  .dial-texture {
    position: absolute;
    inset: 0;
    background:
      repeating-radial-gradient(circle at center, transparent 0 18px, rgba(255,255,255,0.025) 18px 19px),
      linear-gradient(135deg, rgba(255,255,255,0.04) 0%, transparent 40%, transparent 60%, rgba(255,255,255,0.03) 100%);
    pointer-events: none;
    z-index: 1;
  }

  /* Minute / hour ring */
  .chapter-ring {
    position: absolute;
    inset: 16px;
    border: 1.5px solid rgba(201, 168, 94, 0.25);
    border-radius: 50%;
    pointer-events: none;
    z-index: 2;
  }

  /* Markers container */
  .markers-layer {
    position: absolute;
    inset: 0;
    z-index: 3;
    pointer-events: none;
  }

  /* Hour markers (dots) */
  .hour-marker {
    position: absolute;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    top: 50%;
    left: 50%;
    margin: -3.5px 0 0 -3.5px;
    background: radial-gradient(circle at 35% 35%, var(--gold-highlight), var(--gold-bright) 40%, var(--gold-mid) 80%);
    box-shadow: 0 0 5px rgba(201, 168, 94, 0.45), inset -1px -1px 2px rgba(0,0,0,0.3);
  }

  /* Numbers layer */
  .numbers-layer {
    position: absolute;
    inset: 0;
    z-index: 3;
    pointer-events: none;
  }

  .hour-number-container {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 0;
    height: 0;
  }

  .hour-number {
    position: absolute;
    transform: translate(-50%, -50%);
    font-family: "Times New Roman", Times, serif;
    font-variant: small-caps;
    font-weight: 700;
    letter-spacing: 1px;
    font-size: 16px;
    color: var(--gold-highlight);
    text-shadow: 0 0 6px rgba(201, 168, 94, 0.35), 0 1px 2px rgba(0,0,0,0.8);
  }

  /* Date window */
  .date-window {
    position: absolute;
    right: 42px;
    top: 50%;
    transform: translateY(-50%);
    width: 32px;
    height: 22px;
    background: linear-gradient(180deg, #f8f4e8, #e8dfc8);
    border: 2px solid var(--gold-bright);
    border-radius: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow:
      inset 0 0 6px rgba(0,0,0,0.15),
      0 2px 6px rgba(0,0,0,0.35);
    z-index: 6;
  }
  .date-window::before {
    content: "";
    position: absolute;
    inset: -2px;
    border-radius: 6px;
    border: 1px solid rgba(255,255,255,0.35);
    background: radial-gradient(circle at 50% 50%, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0) 70%);
    pointer-events: none;
  }

  .date-display {
    position: relative;
    z-index: 2;
    font-family: "Courier New", Courier, monospace;
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 1px;
    color: #1a1610;
    text-shadow: 0 0 1px rgba(255,255,255,0.3);
  }

  /* Brand text */
  .brand-text {
    position: absolute;
    top: 52px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 5;
    text-align: center;
  }
  .brand-main {
    font-variant: small-caps;
    font-size: 22px;
    letter-spacing: 5px;
    color: var(--gold-highlight);
    text-shadow: 0 0 8px rgba(201, 168, 94, 0.5), 0 2px 4px rgba(0,0,0,0.9);
    font-weight: 700;
  }
  .brand-sub {
    font-size: 7px;
    letter-spacing: 3px;
    color: rgba(245, 230, 184, 0.7);
    margin-top: 2px;
    text-transform: uppercase;
  }

  /* Bottom text */
  .bottom-text {
    position: absolute;
    bottom: 38px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 5;
    text-align: center;
    font-size: 6px;
    letter-spacing: 2px;
    color: rgba(245, 230, 184, 0.5);
    text-transform: uppercase;
    text-shadow: 0 0 3px rgba(0,0,0,0.8);
  }

  /* Jewel / pivot */
  .jewel {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: radial-gradient(circle at 35% 35%, #ff6b80, #b30026, #330005);
    transform: translate(-50%, -50%);
    box-shadow:
      0 0 6px rgba(255, 50, 80, 0.45),
      inset -1px -1px 2px rgba(255,255,255,0.25);
    z-index: 10;
  }

  /* Hands */
  .hand {
    position: absolute;
    bottom: 50%;
    left: 50%;
    border-radius: 2px;
    transform-origin: bottom center;
    transform: translateX(-50%) rotate(0deg);
    will-change: transform;
    z-index: 4;
  }

  .hour-hand {
    width: 7px;
    height: 78px;
    background: linear-gradient(180deg, transparent 10%, var(--gold-bright) 20%, var(--gold-mid) 60%, var(--gold-deep) 90%);
    box-shadow: 0 0 4px rgba(201,168,94,0.4), 0 2px 4px rgba(0,0,0,0.5);
    border-radius: 3px 3px 2px 2px;
  }

  .minute-hand {
    width: 4.5px;
    height: 108px;
    background: linear-gradient(180deg, transparent 5%, var(--gold-highlight) 15%, var(--gold-bright) 50%, var(--gold-mid) 85%);
    box-shadow: 0 0 3px rgba(201,168,94,0.35), 0 3px 5px rgba(0,0,0,0.4);
    border-radius: 3px 3px 2px 2px;
  }

  .second-hand {
    width: 1.5px;
    height: 130px;
    background: linear-gradient(180deg, transparent 5%, #e6c88e 15%, #c5a059 60%, #8a6e3e 95%);
    border-radius: 1px;
    box-shadow: 0 0 3px rgba(201,168,94,0.3);
  }
  .second-hand::after {
    content: "";
    position: absolute;
    top: -5px;
    left: 50%;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: radial-gradient(circle at 40% 40%, #ff6b6b, #b30026, #330005);
    transform: translateX(-50%);
    box-shadow: 0 0 5px rgba(255,50,80,0.5), inset -1px -1px 2px rgba(255,255,255,0.2);
  }
  /* Counterweight near pivot */
  .second-hand::before {
    content: "";
    position: absolute;
    bottom: -10px;
    left: 50%;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: radial-gradient(circle at 35% 35%, var(--gold-highlight), var(--gold-mid));
    transform: translateX(-50%);
    box-shadow: 0 0 4px rgba(201,168,94,0.5);
  }

  /* Crystal reflection */
  .crystal-glare {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    background: linear-gradient(135deg, rgba(255,255,255,0.12) 0%, rgba(255,255,255,0) 30%, rgba(255,255,255,0) 65%, rgba(255,255,255,0.08) 100%);
    pointer-events: none;
    z-index: 15;
  }

  /* Small decorative triangle at 12 */
  .twelve-marker {
    position: absolute;
    top: 20px;
    left: 50%;
    width: 0;
    height: 0;
    border-left: 6px solid transparent;
    border-right: 6px solid transparent;
    border-top: 10px solid var(--gold-bright);
    transform: translateX(-50%);
    filter: drop-shadow(0 0 3px rgba(201,168,94,0.6));
    z-index: 3;
  }

</style>
</head>
<body>

<div class="scene">
  <div class="watch-wrapper">
    <!-- Top strap -->
    <div class="strap strap-top"></div>

    <!-- Lugs -->
    <div class="lug lug-left"></div>
    <div class="lug lug-right"></div>

    <!-- Case -->
    <div class="watch-case">
      <!-- Crown -->
      <div class="crown">
        <div class="crown-ridges"></div>
      </div>

      <div class="watch-face">
        <div class="dial-texture"></div>
        <div class="chapter-ring"></div>
        <div class="crystal-glare"></div>

        <!-- 12 o'clock triangle -->
        <div class="twelve-marker"></div>

        <!-- Hour markers -->
        <div class="markers-layer" id="hour-markers"></div>

        <!-- Hour numbers -->
        <div class="numbers-layer" id="hour-numbers"></div>

        <!-- Brand -->
        <div class="brand-text">
          <div class="brand-main">Aurelia</div>
          <div class="brand-sub">Chronomètre Automatique</div>
        </div>

        <!-- Date -->
        <div class="date-window">
          <span class="date-display" id="date-display">01</span>
        </div>

        <!-- Bottom text -->
        <div class="bottom-text">Swiss Made &mdash; 28'800 vph</div>

        <!-- Jewel -->
        <div class="jewel"></div>

        <!-- Hands -->
        <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>
    </div>

    <!-- Bottom strap -->
    <div class="strap strap-bottom"></div>
  </div>
</div>

<script>
(function() {
  // Build hour markers (dots)
  const markersLayer = document.getElementById('hour-markers');
  for (let i = 0; i < 12; i++) {
    const m = document.createElement('div');
    m.className = 'hour-marker';
    const angle = i * 30; // 0 at 12, clockwise
    m.style.transform = 'rotate(' + angle + 'deg) translateY(-120px)';
    markersLayer.appendChild(m);
  }

  // Build hour numbers
  const numbersLayer = document.getElementById('hour-numbers');
  for (let i = 0; i < 12; i++) {
    const container = document.createElement('div');
    container.className = 'hour-number-container';
    const angle = i * 30;
    container.style.transform = 'rotate(' + angle + 'deg) translateY(-92px)';
    
    const span = document.createElement('span');
    span.className = 'hour-number';
    span.textContent = i === 0 ? '12' : (i === 3 ? '3' : (i === 6 ? '6' : (i === 9 ? '9' : '')));
    // For simplicity show 12, 3, 6, 9 and leave others clean? Let's show all but smaller.
    span.textContent = i === 0 ? '12' : (i === 3 ? '3' : (i === 6 ? '6' : (i === 9 ? '9' : '')));
    // Actually let's show all 12 with smaller font except main 4.
    if (i !== 0 && i !== 3 && i !== 6 && i !== 9) {
      span.textContent = '';
      // Instead, place a small dot for other hours? Already have dots. Let's just keep main numbers.
    }
    // Let's set all numbers but small size for non-main, but for luxury, batons are enough.
    // We'll only render 12, 3, 6, 9 for elegance.
    if (i !== 0 && i !== 3 && i !== 6 && i !== 9) {
      span.textContent = '';
    } else {
      span.style.fontSize = '20px';
    }
    span.style.transform = 'rotate(' + (-angle) + 'deg)';
    container.appendChild(span);
    numbersLayer.appendChild(container);
  }

  // Update function
  function update() {
    const now = new Date();
    const sec = now.getSeconds() + now.getMilliseconds() / 1000;
    const min = now.getMinutes() + sec / 60;
    const hour = (now.getHours() % 12) + min / 60;

    const secDeg = sec * 6;
    const minDeg = min * 6;
    const hourDeg = hour * 30 + min * 0.5;

    document.getElementById('hour-hand').style.transform = 'translateX(-50%) rotate(' + hourDeg + 'deg)';
    document.getElementById('minute-hand').style.transform = 'translateX(-50%) rotate(' + minDeg + 'deg)';
    document.getElementById('second-hand').style.transform = 'translateX(-50%) rotate(' + secDeg + 'deg)';

    const dateNum = now.getDate();
    document.getElementById('date-display').textContent = String(dateNum).padStart(2, '0');

    requestAnimationFrame(update);
  }

  // Start
  requestAnimationFrame(update);
})();
</script>

</body>
</html>

Compare with

Inkling: other attempts