Models 44

GLM 5.3

by Z.aiReasoningClean
Open in new window

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

How it went

Total time
31.7 s
Cost
$0.0065
Output tokens
3,180
Spent thinking
20 tokens
Speed
109.3 tok/s
Console errors
0
First token after
2.6 s
First visible text after
3.3 s
Prompt tokens
499
Code size
9.3 KB
Finish reason
stop
Served by
Decart
Model id
z-ai/glm-5.3
Reasoning sent
{"effort":"low"}
Max output
943,718 tokens
Generated
Nov 12, 2026

What it was asked

The prompt
Create a set of four animated weather cards (sunny, rainy, snowy, stormy), made with HTML and CSS only. Requirements: - Absolutely no JavaScript: the file must not contain any <script> tag or inline event handler. - No images, no SVG, no icon fonts: every weather icon is built from HTML elements and pseudo-elements styled with CSS. - Each card shows an animated icon (rotating sun rays, falling rain drops, drifting snowflakes, flashing lightning), a city name, a temperature and a short description. - Each card has its own background gradient matching the weather. - The cards are displayed in a responsive grid (4 per row on desktop, stacked on mobile) and lift up on hover. - Smooth infinite animations using @keyframes, and respect prefers-reduced-motion.
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 · 291 lines

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Weather Cards — Pure CSS</title>
<style>
  :root{
    --radius: 22px;
    --pad: 28px;
  }
  *{ box-sizing:border-box; margin:0; padding:0; }
  body{
    min-height:100vh;
    font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
    background: #10141f;
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    padding: 40px 20px;
    gap: 28px;
  }
  h1{
    color:#e8ecf5; font-weight:300; letter-spacing:.35em; text-transform:uppercase;
    font-size:clamp(.85rem, 2.2vw, 1.1rem); text-align:center;
  }
  h1 span{ color:#7f8bb0; }

  .grid{
    display:grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 22px;
    width:100%;
    max-width: 1180px;
  }
  @media (max-width: 900px){
    .grid{ grid-template-columns: repeat(2, 1fr); }
  }
  @media (max-width: 560px){
    .grid{ grid-template-columns: 1fr; }
  }

  .card{
    position:relative;
    border-radius: var(--radius);
    padding: var(--pad);
    color:#fff;
    min-height: 300px;
    display:flex; flex-direction:column;
    box-shadow: 0 12px 30px rgba(0,0,0,.35);
    overflow:hidden;
    transition: transform .35s ease, box-shadow .35s ease;
  }
  .card:hover{
    transform: translateY(-10px) scale(1.02);
    box-shadow: 0 26px 48px rgba(0,0,0,.5);
  }

  /* ---------- shared typography ---------- */
  .city{ font-size:.82rem; letter-spacing:.22em; text-transform:uppercase; opacity:.9; }
  .temp{ font-size:3.4rem; font-weight:200; line-height:1; margin:14px 0 4px; }
  .temp sup{ font-size:1.6rem; font-weight:300; }
  .desc{ font-size:.95rem; opacity:.85; font-weight:300; line-height:1.4; }

  .icon{ position:relative; height:96px; margin-bottom:18px; }
  .icon > *{ position:absolute; }

  /* ================= SUNNY ================= */
  .sunny{
    background: linear-gradient(160deg,#ffb347 0%, #ff8c42 45%, #ff7043 100%);
  }
  .sun{
    width:52px; height:52px; border-radius:50%;
    background:#fff3b0;
    box-shadow: 0 0 30px 8px rgba(255,240,150,.75);
    top:22px; left:50%;
    animation: sunPulse 4s ease-in-out infinite;
  }
  .sun::before, .sun::after,
  .sun .ray::before, .sun .ray::after{
    content:""; position:absolute;
    left:50%; top:50%;
    width:6px; height:76px; margin:-38px 0 0 -3px;
    border-radius:6px;
    background:#ffe27a;
    box-shadow: 0 0 12px rgba(255,226,122,.8);
  }
  .sun::before{ transform: rotate(45deg); }
  .sun::after { transform: rotate(135deg); }
  .sun .ray::before{ transform: rotate(0deg); }
  .sun .ray::after { transform: rotate(90deg); }
  .sun-rays{
    inset:0;
    animation: spin 14s linear infinite;
  }
  @keyframes spin{ to{ transform: rotate(360deg); } }
  @keyframes sunPulse{
    0%,100%{ transform: scale(1); box-shadow:0 0 30px 8px rgba(255,240,150,.75); }
    50%    { transform: scale(1.08); box-shadow:0 0 44px 14px rgba(255,240,150,.95); }
  }

  /* ================= RAINY ================= */
  .rainy{
    background: linear-gradient(160deg,#4b6cb7 0%, #3a4a8c 50%, #2c3a6e 100%);
  }
  .cloud, .cloud-sm{ background:#e6ecf5; border-radius:60px; }
  .cloud{
    width:78px; height:34px; top:14px; left:50%;
    transform:translateX(-50%);
    animation: bob 5s ease-in-out infinite;
  }
  .cloud::before, .cloud::after{
    content:""; position:absolute; background:inherit; border-radius:50%;
  }
  .cloud::before{ width:36px;height:36px; top:-16px; left:12px; }
  .cloud::after { width:28px;height:28px; top:-11px; left:42px; }
  .cloud-sm{
    width:44px; height:22px; top:4px; left:12%;
    opacity:.55;
    animation: bob 5s ease-in-out infinite reverse;
  }
  .cloud-sm::before{ content:""; position:absolute; width:20px;height:20px;
    background:inherit; border-radius:50%; top:-9px; left:9px; }
  @keyframes bob{ 0%,100%{transform:translateX(-50%) translateY(0);} 50%{transform:translateX(-50%) translateY(5px);} }

  .drop{
    width:5px; height:16px; border-radius: 50% 50% 60% 60% / 20% 20% 80% 80%;
    background: linear-gradient(#bfe0ff, #7fb5ff);
    top:6px;
    animation: fall 1.2s linear infinite;
  }
  .drop:nth-child(2){ left: calc(50% - 22px); animation-delay: 0s;   }
  .drop:nth-child(3){ left: calc(50% - 6px);  animation-delay:.35s; }
  .drop:nth-child(4){ left: calc(50% + 10px); animation-delay:.7s;  }
  .drop:nth-child(5){ left: calc(50% + 24px); animation-delay:.15s; height:13px; }
  @keyframes fall{
    0%  { transform: translateY(0);    opacity:0; }
    15% { opacity:1; }
    100%{ transform: translateY(78px); opacity:.2; }
  }

  /* ================= SNOWY ================= */
  .snowy{
    background: linear-gradient(160deg,#8fb8de 0%, #6f95c4 50%, #56779f 100%);
  }
  .flake{
    width:10px; height:10px; background:#fff; border-radius:50%;
    top:10px;
    box-shadow: 0 0 8px rgba(255,255,255,.9);
    animation: drift 3.4s linear infinite;
  }
  .flake::before, .flake::after{
    content:""; position:absolute; background:inherit; border-radius:inherit;
    left:50%; top:50%; width:10px; height:10px; margin:-5px 0 0 -5px;
  }
  .flake::before{ transform: rotate(60deg); }
  .flake::after { transform: rotate(-60deg); }
  .flake:nth-child(2){ left: calc(50% - 28px); animation-duration:3s; }
  .flake:nth-child(3){ left: calc(50% - 4px);  animation-duration:3.8s; animation-delay:.6s;}
  .flake:nth-child(4){ left: calc(50% + 20px); animation-duration:3.2s; animation-delay:1.1s;}
  .flake:nth-child(5){ left: calc(50% + 40px); animation-duration:4s;  animation-delay:.3s; transform:scale(.7);}
  @keyframes drift{
    0%  { transform: translate(0,0) rotate(0deg);      opacity:0; }
    10% { opacity:1; }
    100%{ transform: translate(-16px, 84px) rotate(300deg); opacity:.3; }
  }

  /* ================= STORMY ================= */
  .stormy{
    background: linear-gradient(160deg,#37415c 0%, #262d43 55%, #1a1f30 100%);
  }
  .bolt{
    width:0; height:0; top:44px; left:50%;
    border-left:12px solid transparent;
    border-right:12px solid transparent;
    border-top:20px solid #ffe14d;
    transform: translateX(-50%) rotate(18deg) skewX(-14deg);
    filter: drop-shadow(0 0 10px rgba(255,225,77,.9));
    animation: flash 2.6s steps(1) infinite;
  }
  .bolt::before{
    content:""; position:absolute;
    left:-16px; top:14px;
    border-left:9px solid transparent;
    border-right:12px solid transparent;
    border-top:16px solid #ffd21f;
    transform: skewX(28deg);
  }
  .cloud-dark{
    width:84px; height:34px; top:12px; left:50%;
    background:#5a6480; border-radius:60px;
    transform:translateX(-50%);
  }
  .cloud-dark::before, .cloud-dark::after{
    content:""; position:absolute; background:inherit; border-radius:50%;
  }
  .cloud-dark::before{ width:38px;height:38px; top:-18px; left:12px; }
  .cloud-dark::after { width:30px;height:30px; top:-12px; left:44px; }
  .stormy::before{ /* full-card lightning glow */
    content:""; position:absolute; inset:0;
    background: rgba(255,240,180,.14);
    opacity:0; pointer-events:none;
    animation: flashBg 2.6s steps(1) infinite;
  }
  @keyframes flash{
    0%, 42% { opacity:0; }
    44%     { opacity:1; }
    46%     { opacity:0; }
    48%     { opacity:1; }
    52%     { opacity:0; }
    100%    { opacity:0; }
  }
  @keyframes flashBg{
    0%, 42% { opacity:0; }
    44%     { opacity:1; }
    46%     { opacity:0; }
    48%     { opacity:1; }
    52%     { opacity:0; }
    100%    { opacity:0; }
  }

  /* reduced motion */
  @media (prefers-reduced-motion: reduce){
    *, *::before, *::after{
      animation-duration: 0.01s !important;
      animation-iteration-count: 1 !important;
      transition-duration: 0.01s !important;
    }
  }
</style>
</head>
<body>

  <h1>Four Seasons, <span>Four Skies</span></h1>

  <div class="grid">

    <!-- SUNNY -->
    <article class="card sunny">
      <div class="icon">
        <div class="sun-rays">
          <div class="sun"><span class="ray"></span></div>
        </div>
      </div>
      <div class="city">Valencia</div>
      <div class="temp">29<sup>°C</sup></div>
      <p class="desc">Clear skies with a warm Mediterranean breeze all afternoon.</p>
    </article>

    <!-- RAINY -->
    <article class="card rainy">
      <div class="icon">
        <div class="cloud-sm"></div>
        <div class="cloud"></div>
        <span class="drop"></span>
        <span class="drop"></span>
        <span class="drop"></span>
        <span class="drop"></span>
      </div>
      <div class="city">Bergen</div>
      <div class="temp">14<sup>°C</sup></div>
      <p class="desc">Steady showers rolling in from the coast — umbrella weather.</p>
    </article>

    <!-- SNOWY -->
    <article class="card snowy">
      <div class="icon">
        <div class="cloud" style="background:#f4f8fd;"></div>
        <span class="flake"></span>
        <span class="flake"></span>
        <span class="flake"></span>
        <span class="flake"></span>
      </div>
      <div class="city">Reykjavík</div>
      <div class="temp">-3<sup>°C</sup></div>
      <p class="desc">Light snow drifting softly, settling on the rooftops.</p>
    </article>

    <!-- STORMY -->
    <article class="card stormy">
      <div class="icon">
        <div class="bolt"></div>
        <div class="cloud-dark"></div>
      </div>
      <div class="city">New Orleans</div>
      <div class="temp">21<sup>°C</sup></div>
      <p class="desc">Thunderstorms overhead — dramatic lightning after dark.</p>
    </article>

  </div>

</body>
</html>
Reasoning trace (20 tokens)
Pure HTML/CSS. Build icons with divs and pseudo-elements. Provide four cards in grid.