Models 44

GPT-6.1 Terra

by OpenAIReasoningClean
Open in new window

Running live in a sandboxed frame. Click inside it before using the keyboard.

How it went

Total time
33.2 s
Cost
$0.015
Output tokens
2,920
Spent thinking
49 tokens
Speed
95 tok/s
Console errors
0
First token after
2.4 s
First visible text after
4.3 s
Prompt tokens
356
Code size
7.9 KB
Finish reason
stop
Served by
OpenAI
Model id
openai/gpt-6.1-terra
Reasoning sent
{"effort":"low"}
Max output
128,000 tokens
Generated
Nov 12, 2026

What it was asked

The prompt
“a "like" button in pure CSS, no JavaScript, that does a crazy animation when you click it”
System prompt, sent with every prompt
You are generating a self-contained web demo. It will be rendered automatically in a sandboxed iframe and compared side by side with the output of other AI models given the exact same task.

Output rules:
- Reply with exactly ONE fenced code block containing the complete file: ```html (or ```svg when the task asks for an SVG). No text before or after the code block.
- Everything must be inline: CSS in <style>, JavaScript in <script>. No external files, images, fonts or network requests, except the CDN URLs explicitly allowed by the task.
- Do not use localStorage, sessionStorage, cookies, IndexedDB, alert(), confirm(), prompt() or window.open(): they are blocked in the sandbox and will throw.
- The page must look right in a 1280×800 viewport and adapt gracefully down to 375px wide. No horizontal scrollbar.
- Something meaningful must be visible on first paint: a screenshot is taken automatically about 3 seconds after load, without any interaction.
- Everything that makes the demo interesting must be visible within the first seconds: nothing hidden behind a high score, a later level or a long play session.
- Games must start in a self-playing demo mode (a simple AI plays) behind a "Click or press a key to start" message, so the game can be judged in action without playing.
- The iframe only receives keyboard events after the user clicks it: if the demo uses the keyboard, display a clear "Click or press a key to start" message.
- The code must run with zero errors in the console of the latest Chrome.

Code run-1.html · 250 lines

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>A Little Love</title>
<style>
  * { box-sizing: border-box; }
  :root {
    --ink: #29243d;
    --muted: #9690a6;
    --pink: #ff4f87;
  }
  body {
    margin: 0;
    min-height: 100vh;
    display: grid;
    place-items: center;
    overflow-x: hidden;
    color: var(--ink);
    font-family: ui-rounded, "Avenir Next", Avenir, system-ui, sans-serif;
    background: #f8f5fb;
    background-image:
      radial-gradient(circle at 13% 20%, #ffe3ed 0, transparent 28%),
      radial-gradient(circle at 88% 78%, #e6e2ff 0, transparent 30%);
  }
  .page {
    width: min(100% - 32px, 480px);
    text-align: center;
    padding: 36px 0;
  }
  .eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: #a181a4;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .2em;
    text-transform: uppercase;
    margin-bottom: 17px;
  }
  .eyebrow::before, .eyebrow::after {
    content: "";
    width: 24px;
    height: 1px;
    background: #d6c3d5;
  }
  .card {
    position: relative;
    overflow: hidden;
    border: 1px solid rgba(255,255,255,.95);
    border-radius: 30px;
    background: rgba(255,255,255,.77);
    box-shadow: 0 25px 70px rgba(105, 73, 116, .11), 0 4px 15px rgba(105, 73, 116, .04);
    padding: 38px 24px 30px;
  }
  .card::before {
    content: "";
    position: absolute;
    top: -95px;
    left: 50%;
    width: 300px;
    height: 230px;
    transform: translateX(-50%);
    background: radial-gradient(ellipse, #ffedf3, transparent 70%);
    pointer-events: none;
  }
  .topline {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    color: #b39baa;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .17em;
    text-transform: uppercase;
  }
  .topline span { color: #ff8bab; font-size: 14px; }
  h1 {
    position: relative;
    margin: 15px 0 8px;
    font-size: clamp(29px, 7vw, 38px);
    letter-spacing: -.055em;
    line-height: 1.1;
  }
  .subtitle {
    position: relative;
    margin: 0;
    color: var(--muted);
    font-size: 14px;
    line-height: 1.6;
  }
  .stage {
    height: 250px;
    display: grid;
    place-items: center;
    position: relative;
  }
  .stage::before, .stage::after {
    content: "✦";
    position: absolute;
    color: #eadce9;
    font-size: 19px;
  }
  .stage::before { left: 15%; top: 28%; }
  .stage::after { right: 15%; bottom: 25%; font-size: 13px; }
  input {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
  }
  .like {
    position: relative;
    z-index: 1;
    width: 102px;
    height: 102px;
    display: grid;
    place-items: center;
    cursor: pointer;
    border: 1px solid #f3e5ec;
    border-radius: 32px;
    background: white;
    box-shadow: 0 12px 28px rgba(212, 127, 161, .15), 0 3px 7px rgba(137, 94, 118, .06);
    transition: transform .25s, box-shadow .25s, background .25s;
    -webkit-tap-highlight-color: transparent;
  }
  .like:hover { transform: translateY(-4px) scale(1.04); box-shadow: 0 18px 34px rgba(212,127,161,.23); }
  .like:active { transform: scale(.9); }
  input:focus-visible + .like { outline: 3px solid #bba8ff; outline-offset: 6px; }
  .heart {
    width: 49px;
    height: 49px;
    fill: #e8d9e0;
    transition: fill .25s;
    filter: drop-shadow(0 3px 2px rgba(255, 79, 135, 0));
    position: relative;
    z-index: 2;
  }
  input:checked + .like { background: #fff6f9; border-color: #ffd5e2; }
  input:checked + .like .heart {
    fill: var(--pink);
    filter: drop-shadow(0 4px 4px rgba(255,79,135,.25));
    animation: heart-pop .8s cubic-bezier(.2,.9,.3,1.4) both;
  }
  .ring {
    position: absolute;
    inset: 15px;
    border: 3px solid #ff8ab1;
    border-radius: 50%;
    opacity: 0;
    pointer-events: none;
  }
  input:checked + .like .ring { animation: ring .75s ease-out both; }
  .particle {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--color);
    opacity: 0;
    pointer-events: none;
  }
  .particle:nth-of-type(even) { border-radius: 2px; width: 8px; height: 14px; }
  input:checked + .like .particle {
    animation: confetti .9s cubic-bezier(.1,.65,.25,1) both;
    animation-delay: var(--delay, 0s);
  }
  @keyframes heart-pop {
    0% { transform: scale(.4) rotate(-18deg); }
    30% { transform: scale(1.5) rotate(12deg); }
    50% { transform: scale(.8) rotate(-9deg); }
    70% { transform: scale(1.2) rotate(5deg); }
    100% { transform: scale(1) rotate(0); }
  }
  @keyframes ring {
    0% { transform: scale(.3); opacity: .9; border-width: 8px; }
    100% { transform: scale(2.4); opacity: 0; border-width: 1px; }
  }
  @keyframes confetti {
    0% { transform: translate(-50%,-50%) scale(.2) rotate(0); opacity: 1; }
    65% { opacity: 1; }
    100% { transform: translate(calc(-50% + var(--x)), calc(-50% + var(--y))) scale(.7) rotate(240deg); opacity: 0; }
  }
  .caption {
    min-height: 25px;
    color: #b49dab;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .02em;
  }
  .caption .after { display: none; color: #ef6994; }
  .stage:has(input:checked) + .caption .before { display: none; }
  .stage:has(input:checked) + .caption .after { display: inline; }
  .divider { height: 1px; background: #f3ecf1; margin: 22px 0 20px; }
  .footer {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 7px;
    color: #b7aeba;
    font-size: 11px;
    font-weight: 600;
  }
  .footer .dot { color: #ff93b4; font-size: 16px; }
  .note { margin: 22px 0 0; color: #b9aebc; font-size: 11px; letter-spacing: .03em; }
  @media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
  }
</style>
</head>
<body>
  <main class="page">
    <div class="eyebrow">A tiny interaction</div>
    <section class="card">
      <div class="topline"><span>✦</span> Made to be clicked <span>✦</span></div>
      <h1>Send a little love.</h1>
      <p class="subtitle">Some things deserve a little celebration.</p>
      <div class="stage">
        <input type="checkbox" id="like" aria-label="Like">
        <label class="like" for="like">
          <span class="ring"></span>
          <span class="particle" style="--x:0px;--y:-105px;--color:#ff648e"></span>
          <span class="particle" style="--x:52px;--y:-91px;--color:#ffc75e;--delay:.02s"></span>
          <span class="particle" style="--x:91px;--y:-52px;--color:#b793ff"></span>
          <span class="particle" style="--x:110px;--y:2px;--color:#ff719a;--delay:.03s"></span>
          <span class="particle" style="--x:94px;--y:58px;--color:#ffbf65"></span>
          <span class="particle" style="--x:52px;--y:97px;--color:#a99aff;--delay:.04s"></span>
          <span class="particle" style="--x:0px;--y:110px;--color:#ff719a"></span>
          <span class="particle" style="--x:-55px;--y:94px;--color:#ffc75e;--delay:.02s"></span>
          <span class="particle" style="--x:-95px;--y:55px;--color:#bb9aff"></span>
          <span class="particle" style="--x:-110px;--y:0px;--color:#ff719a;--delay:.03s"></span>
          <span class="particle" style="--x:-92px;--y:-55px;--color:#ffc75e"></span>
          <span class="particle" style="--x:-53px;--y:-92px;--color:#bc9aff;--delay:.04s"></span>
          <svg class="heart" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 21.1 10.7 20C5.5 15.3 2 12.1 2 8.2 2 5 4.5 2.5 7.7 2.5c1.8 0 3.5.8 4.3 2.1.8-1.3 2.5-2.1 4.3-2.1C19.5 2.5 22 5 22 8.2c0 3.9-3.5 7.1-8.7 11.8L12 21.1Z"/></svg>
        </label>
      </div>
      <div class="caption"><span class="before">Go on, tap the heart ↑</span><span class="after">A little love goes a long way ♥</span></div>
      <div class="divider"></div>
      <div class="footer"><span class="dot">♥</span> A little joy, made with CSS</div>
    </section>
    <p class="note">Click again to reset &amp; spread more love.</p>
  </main>
</body>
</html>
Reasoning trace (49 tokens)
**Creating CSS animations**

I’m thinking about how to make a pure CSS checkbox animation. I want to design a polished, centered card with a background, adding burst particles through pseudo-elements and spans. I'll need to incorporate the checkbox's checked animation, maybe using a heart SVG. I wonder if I can use a character for the heart or go with an inline SVG. I should also consider animating the checked selectors and allowing toggles to replay! Layout will be very important too.