• Updated 22 Oct, 10:10 UTC
  • Next run 23 Oct, 05:17 UTCNext 23 Oct 05:17
  • Last 7 days: 7 new models, 157 runs7 d: 7 models, 157 runs
Network offOpen alone (new tab)

Run details

Model
elorian/glimpse
Route
OpenRouter API, one user message
Served by
Together
Reasoning
provider default, 18,931 reasoning tokens
Limits
60 min · 200,000 output tokens ($0.60 at $3/M)
Date
22 Oct 2026
Time
1 min 46 s
Size
13 kB
Tokens
281 in, 25,040 out
List price
$0.075 ($0.6 in / $3 out per M)
Paid
$0.075

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 296 lines Raw

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Elorian · Automatic Chronometer</title>
<style>
  :root{color-scheme:dark}
  *{margin:0;padding:0;box-sizing:border-box}
  html,body{height:100%}
  body{
    display:grid;place-items:center;
    background:radial-gradient(1100px 700px at 50% 30%, #262a33 0%, #14161c 45%, #0a0b0e 100%);
    font-family:Georgia,'Times New Roman',serif;
    overflow:hidden;
  }
  .stage{width:min(94vmin,660px);position:relative}
  svg{width:100%;height:auto;display:block;filter:drop-shadow(0 30px 60px rgba(0,0,0,.55))}
  #hands>g{filter:drop-shadow(0 4px 6px rgba(0,0,0,.45))}
  #glint{animation:sheen 7s ease-in-out infinite}
  #glint2{animation:sheen 7s ease-in-out infinite;animation-delay:3.5s}
  @keyframes sheen{0%,100%{opacity:.06}50%{opacity:.13}}
  @media (prefers-reduced-motion:reduce){#glint,#glint2{animation:none}}
  #caption{
    margin-top:22px;text-align:center;color:#9a8a5f;
    font-size:12px;letter-spacing:3.5px;text-transform:uppercase;
  }
  #caption b{color:#d8b46a;font-weight:normal}
</style>
</head>
<body>
<main class="stage">
<svg id="watch" viewBox="0 0 800 800" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Mechanical wristwatch showing the current local time">
  <defs>
    <linearGradient id="goldLinear" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#f8e7b6"/><stop offset=".45" stop-color="#dcb75f"/>
      <stop offset=".55" stop-color="#b8892f"/><stop offset="1" stop-color="#f3dda2"/>
    </linearGradient>
    <radialGradient id="goldCase" cx="35%" cy="28%" r="80%">
      <stop offset="0" stop-color="#fff3cf"/><stop offset=".28" stop-color="#e8c877"/>
      <stop offset=".55" stop-color="#a97f2e"/><stop offset=".82" stop-color="#6f4f16"/>
      <stop offset="1" stop-color="#cfa750"/>
    </radialGradient>
    <radialGradient id="dialRadial" cx="42%" cy="36%" r="78%">
      <stop offset="0" stop-color="#274674"/><stop offset=".45" stop-color="#152840"/>
      <stop offset=".8" stop-color="#0a1322"/><stop offset="1" stop-color="#060b14"/>
    </radialGradient>
    <linearGradient id="leather" x1="0" y1="0" x2="1" y2="0">
      <stop offset="0" stop-color="#20110a"/><stop offset=".5" stop-color="#43291a"/>
      <stop offset="1" stop-color="#1a0e08"/>
    </linearGradient>
    <radialGradient id="glassRadial" cx="50%" cy="44%" r="52%">
      <stop offset="0" stop-color="rgba(255,255,255,0)"/>
      <stop offset=".72" stop-color="rgba(255,255,255,0)"/>
      <stop offset=".90" stop-color="rgba(255,255,255,.07)"/>
      <stop offset=".97" stop-color="rgba(255,255,255,.15)"/>
      <stop offset="1" stop-color="rgba(255,255,255,0)"/>
    </radialGradient>
    <filter id="soft" x="-30%" y="-30%" width="160%" height="160%">
      <feDropShadow dx="0" dy="16" stdDeviation="22" flood-color="#000" flood-opacity=".55"/>
    </filter>
    <filter id="blurL"><feGaussianBlur stdDeviation="16"/></filter>
    <clipPath id="dialClip"><circle cx="400" cy="400" r="288"/></clipPath>
    <clipPath id="apertureClip"><circle cx="250" cy="400" r="56"/></clipPath>
  </defs>

  <!-- leather strap -->
  <g id="strap">
    <path d="M356 14 L444 14 L428 150 L372 150 Z" fill="url(#leather)"/>
    <path d="M372 650 L428 650 L444 786 L356 786 Z" fill="url(#leather)"/>
    <path d="M364 22 L378 142" stroke="#c9a06a" stroke-width="1.4" stroke-dasharray="7 5" opacity=".45" fill="none"/>
    <path d="M436 22 L422 142" stroke="#c9a06a" stroke-width="1.4" stroke-dasharray="7 5" opacity=".45" fill="none"/>
    <path d="M378 658 L364 778" stroke="#c9a06a" stroke-width="1.4" stroke-dasharray="7 5" opacity=".45" fill="none"/>
    <path d="M422 658 L436 778" stroke="#c9a06a" stroke-width="1.4" stroke-dasharray="7 5" opacity=".45" fill="none"/>
  </g>

  <!-- case -->
  <g filter="url(#soft)">
    <circle cx="400" cy="400" r="352" fill="url(#goldCase)"/>
  </g>
  <circle cx="400" cy="400" r="346" fill="none" stroke="#ffe9ad" stroke-opacity=".28" stroke-width="1.5"/>
  <g id="fluting"></g>
  <circle cx="400" cy="400" r="303" fill="none" stroke="#241804" stroke-width="4"/>
  <circle cx="400" cy="400" r="299" fill="none" stroke="#ffe9ad" stroke-opacity=".18" stroke-width="1"/>

  <!-- dial -->
  <circle cx="400" cy="400" r="288" fill="url(#dialRadial)"/>
  <g id="sunburst" clip-path="url(#dialClip)"></g>
  <g id="ticks"></g>
  <g id="markers"></g>

  <g font-family="Georgia,'Times New Roman',serif" text-anchor="middle">
    <text x="400" y="294" font-size="30" fill="#dcb75f" style="letter-spacing:7px">ELORIAN</text>
    <text x="400" y="320" font-size="11" fill="#8f7a4f" style="letter-spacing:4.5px">AUTOMATIC</text>
    <text x="400" y="480" font-size="11" fill="#8f7a4f" style="letter-spacing:4.5px">CHRONOMÈTRE</text>
    <text x="400" y="508" font-size="9" fill="#6f5d3a" style="letter-spacing:3px">SWISS MADE</text>
  </g>

  <!-- open-heart aperture: gear train + balance -->
  <g id="openHeart">
    <circle cx="250" cy="400" r="58" fill="#0a0d12"/>
    <g clip-path="url(#apertureClip)">
      <circle cx="250" cy="400" r="56" fill="none" stroke="#161b24" stroke-width="10"/>
      <g id="gearA"></g><g id="gearB"></g><g id="gearC"></g>
      <g id="balance"></g>
    </g>
    <circle cx="250" cy="400" r="58" fill="none" stroke="url(#goldLinear)" stroke-width="7"/>
    <circle cx="250" cy="400" r="61.5" fill="none" stroke="#241804" stroke-width="1.5"/>
    <circle cx="250" cy="400" r="54.5" fill="none" stroke="#000" stroke-opacity=".35" stroke-width="2"/>
  </g>

  <!-- date aperture -->
  <g id="dateWindow">
    <rect x="516" y="366" width="68" height="68" rx="8" fill="url(#goldLinear)" stroke="#241804" stroke-width="1.5"/>
    <rect x="522" y="372" width="56" height="56" rx="4" fill="#f2ead6"/>
    <rect x="522" y="372" width="56" height="56" rx="4" fill="none" stroke="#b39a5e" stroke-width="1"/>
    <text id="dateText" x="550" y="412" text-anchor="middle" font-family="'Helvetica Neue',Helvetica,Arial,sans-serif" font-size="38" font-weight="600" fill="#1c1c1c">--</text>
  </g>

  <!-- hands -->
  <g id="hands">
    <g id="hourHand">
      <polygon points="400,232 409,264 404.5,398 395.5,398 391,264" fill="url(#goldLinear)" stroke="#3d2c0e" stroke-width="0.8" stroke-linejoin="round"/>
      <polygon points="400,246 403.4,266 402,390 398,390 396.6,266" fill="#e9f2d8" opacity="0.9"/>
    </g>
    <g id="minuteHand">
      <polygon points="400,150 407,182 403.5,398 396.5,398 393,182" fill="url(#goldLinear)" stroke="#3d2c0e" stroke-width="0.8" stroke-linejoin="round"/>
      <polygon points="400,164 402.8,188 401.4,390 398.6,390 397.2,188" fill="#e9f2d8" opacity="0.9"/>
    </g>
    <g id="secondHand">
      <line x1="400" y1="478" x2="400" y2="136" stroke="#dcb75f" stroke-width="3" stroke-linecap="round"/>
      <polygon points="400,132 403.8,148 396.2,148" fill="#dcb75f" stroke="#3d2c0e" stroke-width="0.6"/>
      <circle cx="400" cy="466" r="7" fill="#dcb75f" stroke="#3d2c0e" stroke-width="1"/>
      <circle cx="400" cy="466" r="2.4" fill="#20242c"/>
    </g>
    <g id="cap">
      <circle cx="400" cy="400" r="8.5" fill="url(#goldLinear)" stroke="#3d2c0e" stroke-width="1"/>
      <circle cx="400" cy="400" r="2.6" fill="#20242c"/>
    </g>
  </g>

  <!-- sapphire crystal glints -->
  <g id="crystal" pointer-events="none">
    <circle cx="400" cy="400" r="296" fill="url(#glassRadial)"/>
    <ellipse id="glint" cx="308" cy="262" rx="180" ry="64" transform="rotate(-34 308 262)" fill="#fff" opacity=".08" filter="url(#blurL)" style="mix-blend-mode:screen"/>
    <ellipse id="glint2" cx="520" cy="540" rx="120" ry="40" transform="rotate(-34 520 540)" fill="#fff" opacity=".05" filter="url(#blurL)" style="mix-blend-mode:screen"/>
  </g>

  <!-- crown -->
  <g id="crown">
    <rect x="742" y="385" width="24" height="30" rx="5" fill="url(#goldLinear)" stroke="#3d2c0e" stroke-width="1"/>
    <circle cx="778" cy="400" r="15" fill="url(#goldCase)" stroke="#3d2c0e" stroke-width="1"/>
    <line x1="766" y1="393" x2="790" y2="393" stroke="#5c4416" stroke-width="1" opacity=".55"/>
    <line x1="765" y1="400" x2="791" y2="400" stroke="#5c4416" stroke-width="1" opacity=".55"/>
    <line x1="766" y1="407" x2="790" y2="407" stroke="#5c4416" stroke-width="1" opacity=".55"/>
    <circle cx="778" cy="400" r="4" fill="#241804" opacity=".8"/>
  </g>
</svg>
<p id="caption"></p>
</main>

<script>
(function(){
  var NS='http://www.w3.org/2000/svg';
  function $(id){return document.getElementById(id)}
  function el(tag,attrs,parent){
    var e=document.createElementNS(NS,tag);
    for(var k in attrs)e.setAttribute(k,attrs[k]);
    if(parent)parent.appendChild(e);
    return e;
  }
  function rad(d){return d*Math.PI/180}
  function px(cx,cy,r,d){return cx+r*Math.cos(rad(d-90))}
  function py(cx,cy,r,d){return cy+r*Math.sin(rad(d-90))}

  /* sunburst brushing */
  var sun=$('sunburst'),R=292,i,a;
  for(i=0;i<360;i++){
    a=i;
    el('polygon',{
      points:'400,400 '+px(400,400,R,a)+','+py(400,400,R,a)+' '+px(400,400,R,a+1)+','+py(400,400,R,a+1),
      fill:(i%2?'#9fc0e8':'#000000'), opacity:(i%2?0.016:0.05)
    },sun);
  }

  /* fluted bezel */
  var fl=$('fluting'),N=150;
  for(i=0;i<N;i++){
    a=i*360/N;
    el('line',{
      x1:px(400,400,307,a),y1:py(400,400,307,a),
      x2:px(400,400,345,a),y2:py(400,400,345,a),
      stroke:(i%2?'#4c3710':'#f6e3b0'),
      'stroke-opacity':(i%2?0.85:0.55),'stroke-width':(i%2?2.2:1)
    },fl);
    el('line',{
      x1:px(400,400,307,a+0.9),y1:py(400,400,307,a+0.9),
      x2:px(400,400,345,a+0.9),y2:py(400,400,345,a+0.9),
      stroke:'#ffffff','stroke-opacity':0.10,'stroke-width':0.7
    },fl);
  }

  /* minute track */
  var tk=$('ticks');
  for(i=0;i<60;i++){
    a=i*6;
    var lg=(i%5===0);
    el('line',{
      x1:px(400,400,lg?267:271,a),y1:py(400,400,lg?267:271,a),
      x2:px(400,400,278,a),y2:py(400,400,278,a),
      stroke:(lg?'#e6c675':'#93804f'),
      'stroke-width':(lg?2.4:1),'stroke-opacity':(lg?0.95:0.7)
    },tk);
  }

  /* applied hour markers */
  var mk=$('markers');
  for(i=0;i<12;i++){
    a=i*30;
    var tf='rotate('+a+' 400 400)';
    if(i===0){
      el('rect',{x:387.5,y:134,width:7,height:36,rx:2,fill:'url(#goldLinear)',stroke:'#4a3612','stroke-width':0.7,transform:tf},mk);
      el('rect',{x:405.5,y:134,width:7,height:36,rx:2,fill:'url(#goldLinear)',stroke:'#4a3612','stroke-width':0.7,transform:tf},mk);
    }else{
      el('rect',{x:395.5,y:136,width:9,height:34,rx:2,fill:'url(#goldLinear)',stroke:'#4a3612','stroke-width':0.7,transform:tf},mk);
    }
  }

  /* gear train */
  function gearShape(cx,cy,r,teeth,th,fill,parent){
    var pts=[],step=360/teeth,j,aa;
    for(j=0;j<teeth;j++){
      aa=j*step;
      pts.push(px(cx,cy,r-1.5,aa)+','+py(cx,cy,r-1.5,aa));
      pts.push(px(cx,cy,r+th,aa+step*0.18)+','+py(cx,cy,r+th,aa+step*0.18));
      pts.push(px(cx,cy,r+th,aa+step*0.47)+','+py(cx,cy,r+th,aa+step*0.47));
      pts.push(px(cx,cy,r-1.5,aa+step*0.68)+','+py(cx,cy,r-1.5,aa+step*0.68));
    }
    el('polygon',{points:pts.join(' '),fill:fill,stroke:'#3d2c0e','stroke-width':1,'stroke-linejoin':'round'},parent);
    el('circle',{cx:cx,cy:cy,r:Math.max(3,r*0.18),fill:'#20242c',stroke:'#59481f','stroke-width':1},parent);
  }
  gearShape(218,428,20,14,4,'#c9a24b',$('gearA'));
  gearShape(232,368,12,10,3,'#aeb8c2',$('gearB'));
  gearShape(276,432,9,8,2.5,'#c9a24b',$('gearC'));

  /* balance wheel */
  var bal=$('balance'),bx=268,by=404;
  el('circle',{cx:bx,cy:by,r:30,fill:'none',stroke:'#dcb75f','stroke-width':6},bal);
  el('line',{x1:bx-29,y1:by,x2:bx+29,y2:by,stroke:'#dcb75f','stroke-width':3,transform:'rotate(45 '+bx+' '+by+')'},bal);
  el('line',{x1:bx-29,y1:by,x2:bx+29,y2:by,stroke:'#dcb75f','stroke-width':3,transform:'rotate(135 '+bx+' '+by+')'},bal);
  [45,135,225,315].forEach(function(deg){
    el('circle',{cx:px(bx,by,30,deg),cy:py(bx,by,30,deg),r:3.4,fill:'#f6e3b0',stroke:'#6f4f16','stroke-width':1},bal);
  });
  el('circle',{cx:bx,cy:by,r:13,fill:'none',stroke:'#8fa8c8','stroke-width':1,opacity:0.7,'stroke-dasharray':'34 14'},bal);
  el('circle',{cx:bx,cy:by,r:8,fill:'none',stroke:'#8fa8c8','stroke-width':1,opacity:0.6,'stroke-dasharray':'20 10'},bal);
  el('circle',{cx:bx,cy:by,r:2.6,fill:'#e8eef4'},bal);

  /* animation */
  var hourG=$('hourHand'),minG=$('minuteHand'),secG=$('secondHand'),
      gA=$('gearA'),gB=$('gearB'),gC=$('gearC'),
      dateT=$('dateText'),cap=$('caption');
  var lastDate='',lastSec=-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;
    secG.setAttribute('transform','rotate('+(s*6)+' 400 400)');
    minG.setAttribute('transform','rotate('+(m*6)+' 400 400)');
    hourG.setAttribute('transform','rotate('+(h*30)+' 400 400)');

    var t=performance.now()/1000;
    bal.setAttribute('transform','rotate('+(26*Math.sin(t*2*Math.PI*1.15))+' '+bx+' '+by+')');
    gA.setAttribute('transform','rotate('+(-t*12)+' 218 428)');
    gB.setAttribute('transform','rotate('+(t*22)+' 232 368)');
    gC.setAttribute('transform','rotate('+(t*30)+' 276 432)');

    var dstr=String(now.getDate()).padStart(2,'0');
    if(dstr!==lastDate){dateT.textContent=dstr;lastDate=dstr;}

    var sec=now.getSeconds();
    if(sec!==lastSec){
      lastSec=sec;
      var wd=now.toLocaleDateString(undefined,{weekday:'long'});
      var dt=now.toLocaleDateString(undefined,{day:'numeric',month:'long',year:'numeric'});
      var tm=now.toLocaleTimeString();
      cap.innerHTML='<b>'+wd+'</b>&nbsp;·&nbsp;'+dt+'&nbsp;·&nbsp;'+tm;
    }
    requestAnimationFrame(frame);
  }
  requestAnimationFrame(frame);
})();
</script>
</body>
</html>

Compare with

Glimpse: other attempts