Exploding like buttonOne-line
Muse Ember
by MetaReasoningClean
Running live in a sandboxed frame. Click inside it before using the keyboard.
How it went
- Total time
- 19.0 s
- Cost
- $0.0041
- Output tokens
- 8,195
- Spent thinking
- 2,336 tokens
- Speed
- 486 tok/s
- Console errors
- 0
- First token after
- 2.1 s
- First visible text after
- 8.9 s
- Prompt tokens
- 374
- Code size
- 16.6 KB
- Finish reason
- stop
- Served by
- Meta
- Model id
meta/muse-ember- Reasoning sent
{"effort":"medium"}- Max output
- 943,718 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 · 329 lines
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PURE CSS LIKE BUTTON — No JavaScript</title>
<style>
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{
font-family:ui-rounded,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
background:#0d0a23;
color:#fff;
overflow-x:hidden;
min-height:100vh;
}
/* ===== BACKGROUND STAGE ===== */
.stage{
position:relative;
min-height:100vh;
display:flex;
flex-direction:column;
align-items:center;
justify-content:center;
padding:28px 18px 34px;
overflow:hidden;
background:
radial-gradient(700px 420px at 18% 8%, rgba(255,46,99,.35), transparent 60%),
radial-gradient(700px 500px at 88% 88%, rgba(124,58,237,.38), transparent 60%),
radial-gradient(500px 340px at 80% 12%, rgba(255,140,0,.18), transparent 60%),
linear-gradient(160deg,#120d2e 0%,#1d1345 48%,#0d0a23 100%);
}
/* floating ambient hearts */
.ambient{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.ambient i{
position:absolute;font-style:normal;color:rgba(255,255,255,.07);
animation:drift 9s ease-in-out infinite;
}
.ambient i:nth-child(1){left:6%;top:18%;font-size:44px;animation-delay:0s}
.ambient i:nth-child(2){left:88%;top:22%;font-size:30px;animation-delay:1.2s;color:rgba(255,46,99,.16)}
.ambient i:nth-child(3){left:12%;top:78%;font-size:28px;animation-delay:.6s}
.ambient i:nth-child(4){right:10%;top:72%;font-size:52px;animation-delay:1.8s;color:rgba(255,255,255,.06)}
.ambient i:nth-child(5){left:46%;top:6%;font-size:22px;animation-delay:2.4s}
.ambient i:nth-child(6){left:78%;top:52%;font-size:20px;animation-delay:.3s;color:rgba(255,200,80,.14)}
@keyframes drift{0%,100%{transform:translateY(0) rotate(-8deg)}50%{transform:translateY(-22px) rotate(10deg)}}
/* rotating rays behind button */
.rays{
position:absolute;left:50%;top:52%;width:720px;height:720px;
transform:translate(-50%,-50%);
background:repeating-conic-gradient(from 0deg, rgba(255,46,99,.22) 0deg 10deg, transparent 10deg 22deg);
-webkit-mask-image:radial-gradient(circle, rgba(0,0,0,.9) 0%, transparent 62%);
mask-image:radial-gradient(circle, rgba(0,0,0,.9) 0%, transparent 62%);
border-radius:50%;
opacity:.18;
animation:spin 26s linear infinite;
pointer-events:none;
transition:opacity .5s, width .5s, height .5s;
}
@keyframes spin{to{transform:translate(-50%,-50%) rotate(360deg)}}
/* ===== HEADER ===== */
header{position:relative;z-index:3;text-align:center;max-width:820px}
.eyebrow{
display:inline-flex;gap:8px;flex-wrap:wrap;justify-content:center;
font-size:11px;letter-spacing:.22em;font-weight:800;text-transform:uppercase;
color:#ffd1dc;
}
.eyebrow span{border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.07);padding:6px 11px;border-radius:999px;backdrop-filter:blur(6px)}
.eyebrow b{color:#ff2e63}
h1{
margin-top:16px;
font-size:clamp(38px,7.2vw,78px);
line-height:.92;letter-spacing:-.04em;font-weight:950;
text-transform:uppercase;
}
h1 .line1{display:block;color:#fff}
h1 .line2{
display:block;
background:linear-gradient(90deg,#ff2e63,#ff7a18,#ffd166,#ff2e63);
-webkit-background-clip:text;background-clip:text;color:transparent;
background-size:220% 100%;
animation:gradSlide 5s linear infinite;
}
@keyframes gradSlide{to{background-position:220% 0}}
.sub{
margin:16px auto 0;max-width:560px;color:rgba(255,255,255,.78);
font-size:clamp(14px,2vw,17px);line-height:1.55;font-weight:550;
}
.sub code{color:#ffd166;background:rgba(255,255,255,.09);padding:2px 7px;border-radius:6px;font-weight:800}
/* ===== HIDDEN CHECKBOX ===== */
.like-toggle{
position:absolute;opacity:0;width:1px;height:1px;pointer-events:none;
}
/* ===== THE BUTTON ===== */
.btn-zone{position:relative;z-index:4;margin:34px 0 8px;display:flex;flex-direction:column;align-items:center}
.btn{
position:relative;
display:inline-flex;align-items:center;gap:16px;
padding:20px 30px 20px 26px;
border-radius:999px;
background:#ffffff;
color:#17102e;
cursor:pointer;
user-select:none;-webkit-user-select:none;
box-shadow:0 18px 50px rgba(0,0,0,.45), 0 4px 0 rgba(0,0,0,.18), inset 0 -3px 0 rgba(0,0,0,.06);
transition:transform .18s cubic-bezier(.34,1.56,.64,1), background .35s, color .3s, box-shadow .35s;
animation:btnPulse 2.6s ease-in-out infinite;
}
@keyframes btnPulse{0%,100%{box-shadow:0 18px 50px rgba(0,0,0,.45),0 0 0 0 rgba(255,46,99,.55)}50%{box-shadow:0 18px 50px rgba(0,0,0,.45),0 0 0 16px rgba(255,46,99,0)}}
.btn:hover{transform:translateY(-3px) rotate(-1.5deg) scale(1.04)}
.btn:active{transform:scale(.92) rotate(1deg)}
.like-toggle:focus-visible + .stage .btn{outline:4px solid #ffd166;outline-offset:6px}
/* heart icon — pure CSS heart */
.heart-wrap{position:relative;width:38px;height:34px;display:grid;place-items:center;flex:0 0 auto}
.heart{
position:relative;width:26px;height:24px;
background:#ff2e63;
transform:rotate(45deg) translateY(3px);
border-radius:5px;
transition:background .3s, transform .3s;
animation:beat 1.4s ease-in-out infinite;
transform-origin:center;
}
.heart::before,.heart::after{
content:"";position:absolute;width:26px;height:26px;border-radius:50%;background:inherit;
}
.heart::before{left:-13px;top:0}
.heart::after{left:0;top:-13px}
@keyframes beat{0%,100%{transform:rotate(45deg) translateY(3px) scale(1)}18%{transform:rotate(45deg) translateY(3px) scale(1.14)}32%{transform:rotate(45deg) translateY(3px) scale(1.28)}46%{transform:rotate(45deg) translateY(3px) scale(1.1)}}
.txt{position:relative;height:30px;min-width:92px;display:flex;align-items:center}
.txt span{position:absolute;left:0;top:50%;transform:translateY(-50%);font-weight:950;letter-spacing:.06em;font-size:22px;white-space:nowrap;transition:opacity .25s, transform .35s cubic-bezier(.34,1.56,.64,1)}
.liked-txt{opacity:0;transform:translateY(-50%) scale(.4) rotate(-12deg) !important;color:#fff}
.divider{width:1px;height:28px;background:rgba(0,0,0,.14);flex:0 0 auto}
.count{position:relative;height:22px;min-width:58px;font-weight:850;font-size:15px;color:rgba(23,16,46,.55)}
.count span{position:absolute;left:0;top:50%;transform:translateY(-50%);transition:opacity .25s, transform .3s}
.count .n1{opacity:0;transform:translateY(-50%) scale(.4)}
.badge-zero{
position:absolute;top:-10px;right:-8px;
background:#17102e;color:#ffd166;font-size:10px;font-weight:900;letter-spacing:.12em;
padding:5px 8px;border-radius:999px;border:2px solid #fff;
transform:rotate(8deg);
}
/* rings */
.ring{position:absolute;left:50%;top:50%;width:90px;height:90px;margin:-45px 0 0 -45px;border-radius:50%;border:4px solid #ff2e63;opacity:0;pointer-events:none}
.ring.r2{border-color:#ffb703;border-width:3px}
/* particles burst */
.burst{position:absolute;left:50%;top:50%;width:0;height:0;pointer-events:none;z-index:5}
.burst span{position:absolute;left:0;top:0;opacity:0;width:10px;height:10px;margin:-5px 0 0 -5px}
.burst span:nth-child(1){--x:118px;--y:-92px;background:#ff2e63;border-radius:50%;width:14px;height:14px}
.burst span:nth-child(2){--x:-118px;--y:-86px;background:#ffd166;border-radius:2px;width:11px;height:11px}
.burst span:nth-child(3){--x:140px;--y:-10px;background:#7c3aed;border-radius:50%;width:10px;height:10px}
.burst span:nth-child(4){--x:-140px;--y:-6px;background:#00d4ff;border-radius:2px;width:12px;height:12px}
.burst span:nth-child(5){--x:96px;--y:84px;background:#ff7a18;border-radius:50%;width:12px;height:12px}
.burst span:nth-child(6){--x:-96px;--y:86px;background:#ff2e63;border-radius:2px;width:10px;height:10px}
.burst span:nth-child(7){--x:0px;--y:-138px;background:#ffd166;border-radius:50%;width:13px;height:13px}
.burst span:nth-child(8){--x:62px;--y:-122px;background:#fff;border-radius:2px;width:9px;height:9px}
.burst span:nth-child(9){--x:-62px;--y:-122px;background:#00f5a0;border-radius:50%;width:10px;height:10px}
.burst span:nth-child(10){--x:150px;--y:62px;background:#ffd166;border-radius:2px;width:11px;height:11px}
.burst span:nth-child(11){--x:-150px;--y:64px;background:#ff7a18;border-radius:50%;width:12px;height:12px}
.burst span:nth-child(12){--x:0px;--y:132px;background:#ff2e63;border-radius:2px;width:10px;height:10px}
.burst span:nth-child(13){--x:84px;--y:128px;background:#7c3aed;border-radius:50%;width:9px;height:9px}
.burst span:nth-child(14){--x:-84px;--y:128px;background:#ffd166;border-radius:2px;width:13px;height:13px}
.burst span:nth-child(15){--x:172px;--y:-58px;background:#00d4ff;border-radius:50%;width:8px;height:8px}
.burst span:nth-child(16){--x:-172px;--y:-58px;background:#fff;border-radius:2px;width:8px;height:8px}
/* floating mini hearts */
.floats{position:absolute;left:50%;top:50%;width:0;height:0;pointer-events:none;z-index:6}
.floats i{position:absolute;font-style:normal;opacity:0;font-size:22px;color:#ff2e63;text-shadow:0 4px 14px rgba(255,46,99,.6)}
.floats i:nth-child(1){left:-46px;top:-20px;--dx:-30px}
.floats i:nth-child(2){left:20px;top:-34px;font-size:28px;color:#ffd166;--dx:38px}
.floats i:nth-child(3){left:-14px;top:-16px;font-size:16px;color:#ff7a18;--dx:6px}
.floats i:nth-child(4){left:34px;top:2px;font-size:18px;color:#fff;--dx:52px}
.floats i:nth-child(5){left:-58px;top:8px;font-size:18px;color:#ff2e63;--dx:-54px}
/* hint */
.hint{margin-top:16px;display:flex;align-items:center;gap:10px;color:rgba(255,255,255,.85);font-weight:800;font-size:14px;letter-spacing:.02em}
.hint .arrow{display:inline-block;animation:bounce 1s ease-in-out infinite;font-size:20px}
@keyframes bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
.hint kbd{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.25);border-bottom-width:3px;padding:2px 7px;border-radius:6px;font-size:12px}
/* toast */
.toast{
position:relative;z-index:4;margin-top:18px;
background:linear-gradient(90deg,#ff2e63,#ff7a18);
color:#fff;font-weight:950;letter-spacing:.04em;font-size:14px;
padding:10px 18px;border-radius:999px;
opacity:0;transform:translateY(14px) scale(.8) rotate(-3deg);
transition:opacity .3s, transform .45s cubic-bezier(.34,1.56,.64,1);
box-shadow:0 12px 30px rgba(255,46,99,.45);
pointer-events:none;
}
/* code strip */
.code-strip{
position:relative;z-index:3;margin-top:30px;
display:flex;gap:10px;flex-wrap:wrap;justify-content:center;max-width:760px;
}
.code-strip div{
background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);
border-radius:14px;padding:10px 14px;font-size:12.5px;color:rgba(255,255,255,.78);
backdrop-filter:blur(8px);
}
.code-strip code{color:#a5f3fc;font-weight:800}
footer{position:relative;z-index:3;margin-top:18px;color:rgba(255,255,255,.45);font-size:12px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;text-align:center}
/* ===== CHECKED = CRAZY MODE ===== */
#like:checked ~ .stage .rays{opacity:.85;width:900px;height:900px;animation-duration:7s}
#like:checked ~ .stage .btn{
background:linear-gradient(120deg,#ff2e63,#ff3d00 55%,#ff7a18);
color:#fff;
animation:pop .65s cubic-bezier(.34,1.8,.64,1), btnPulseLiked 1.2s ease-in-out .65s infinite;
box-shadow:0 22px 60px rgba(255,46,99,.55), 0 0 0 6px rgba(255,255,255,.14), inset 0 -4px 0 rgba(0,0,0,.18);
}
@keyframes pop{0%{transform:scale(1)}28%{transform:scale(1.22) rotate(-4deg)}52%{transform:scale(.9) rotate(3deg)}74%{transform:scale(1.1) rotate(-2deg)}100%{transform:scale(1.06)}}
@keyframes btnPulseLiked{0%,100%{transform:scale(1.06) rotate(-1deg)}50%{transform:scale(1.09) rotate(1deg)}}
#like:checked ~ .stage .heart{background:#fff;animation:beatLiked .9s ease-in-out infinite}
@keyframes beatLiked{0%,100%{transform:rotate(45deg) translateY(3px) scale(1.35)}25%{transform:rotate(45deg) translateY(3px) scale(1.65)}45%{transform:rotate(45deg) translateY(3px) scale(1.5)}}
#like:checked ~ .stage .like-txt{opacity:0;transform:translateY(-50%) scale(.4) rotate(10deg) !important}
#like:checked ~ .stage .liked-txt{opacity:1;transform:translateY(-50%) scale(1) rotate(-2deg) !important}
#like:checked ~ .stage .divider{background:rgba(255,255,255,.4)}
#like:checked ~ .stage .count{color:rgba(255,255,255,.9)}
#like:checked ~ .stage .count .n0{opacity:0;transform:translateY(-50%) scale(.4)}
#like:checked ~ .stage .count .n1{opacity:1;transform:translateY(-50%) scale(1)}
#like:checked ~ .stage .badge-zero{background:#fff;color:#ff2e63;transform:rotate(-6deg) scale(1.1)}
#like:checked ~ .stage .burst span{
animation:burst .85s cubic-bezier(.17,.89,.32,1.28) forwards;
}
/* stagger a bit */
#like:checked ~ .stage .burst span:nth-child(even){animation-delay:.06s}
#like:checked ~ .stage .burst span:nth-child(3n){animation-delay:.12s}
@keyframes burst{
0%{opacity:1;transform:translate(0,0) scale(.3) rotate(0deg)}
55%{opacity:1;transform:translate(var(--x),var(--y)) scale(1.25) rotate(340deg)}
100%{opacity:0;transform:translate(calc(var(--x)*1.25),calc(var(--y)*1.25 + 26px)) scale(.6) rotate(720deg)}
}
#like:checked ~ .stage .ring.r1{animation:ringGo .9s ease-out forwards}
#like:checked ~ .stage .ring.r2{animation:ringGo .9s .14s ease-out forwards}
@keyframes ringGo{0%{opacity:.95;transform:scale(.4)}100%{opacity:0;transform:scale(3.4)}}
#like:checked ~ .stage .floats i{animation:floatUp 1.5s ease-out forwards}
#like:checked ~ .stage .floats i:nth-child(2){animation-delay:.12s}
#like:checked ~ .stage .floats i:nth-child(3){animation-delay:.22s}
#like:checked ~ .stage .floats i:nth-child(4){animation-delay:.08s}
#like:checked ~ .stage .floats i:nth-child(5){animation-delay:.18s}
@keyframes floatUp{
0%{opacity:0;transform:translate(0,0) scale(.4) rotate(0deg)}
18%{opacity:1;transform:translate(calc(var(--dx)*.4),-42px) scale(1.25) rotate(-14deg)}
100%{opacity:0;transform:translate(var(--dx),-150px) scale(1) rotate(22deg)}
}
#like:checked ~ .stage .toast{opacity:1;transform:translateY(0) scale(1) rotate(-1deg)}
#like:checked ~ .stage .hint .arrow{animation:none;transform:rotate(180deg)}
@media (max-width:560px){
.btn{padding:16px 20px 16px 20px;gap:12px}
.txt{min-width:78px}
.txt span{font-size:19px}
.rays{width:520px;height:520px}
#like:checked ~ .stage .rays{width:620px;height:620px}
.code-strip div{font-size:11.5px}
}
@media (prefers-reduced-motion: reduce){
*{animation-duration:.01ms !important;animation-iteration-count:1 !important}
}
</style>
</head>
<body>
<input type="checkbox" id="like" class="like-toggle" aria-label="Like this">
<main class="stage" id="stage">
<div class="ambient"><i>♥</i><i>♥</i><i>♥</i><i>♥</i><i>♥</i><i>♥</i></div>
<div class="rays"></div>
<header>
<div class="eyebrow"><span>HTML</span><span>CSS only</span><span><b>0</b> JavaScript</span><span>Checkbox hack</span></div>
<h1><span class="line1">Pure CSS</span><span class="line2">Like Button</span></h1>
<p class="sub">One sneaky <code><input type="checkbox"></code> + one <code><label></code> = a button that explodes with hearts, rings & confetti. Click it. Go on.</p>
</header>
<div class="btn-zone">
<label class="btn" for="like" role="button" aria-pressed="false">
<span class="badge-zero">0 JS</span>
<span class="ring r1"></span>
<span class="ring r2"></span>
<span class="heart-wrap"><span class="heart"></span></span>
<span class="txt">
<span class="like-txt">LIKE</span>
<span class="liked-txt">LIKED!</span>
</span>
<span class="divider"></span>
<span class="count"><span class="n0">1,024</span><span class="n1">1,025 ♥</span></span>
<span class="burst">
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span>
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span>
</span>
<span class="floats"><i>♥</i><i>♥</i><i>♥</i><i>♥</i><i>♥</i></span>
</label>
<div class="hint"><span class="arrow">👆</span> Click the button to go crazy <span style="opacity:.6">·</span> <span><kbd>Tab</kbd> + <kbd>Space</kbd> works too</span></div>
<div class="toast">🎉 YOU LIKED THIS! ♥♥♥ 🎉 click again to unlike</div>
</div>
<div class="code-strip">
<div><code>:checked</code> triggers the chaos</div>
<div><code>@keyframes</code> does all the movement</div>
<div>No <code><script></code> was harmed</div>
</div>
<footer>Crazy animation · 100% CSS · Pure & simple</footer>
</main>
</body>
</html>Reasoning trace (2,336 tokens)
Designing a pure CSS like button with checkbox hack and multiple CSS animations while ensuring responsive layout and first-paint visibility.Extending the CSS animation sequence with particle bursts and pseudo-element text toggling.Adding particle burst, ring expansion, and text toggle animations triggered by the checkbox state.