← back to Animated Concepts #3compare with ground truth →
model output
GPT-5.4
Animated Concepts #3
A 0.95T 0.21
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="UTF-8" />
5<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6<title>Diamond Pulse Loader</title>
7<style>
8 :root{
9 --bg:#1f1f1f;
10 --dot:#ff7f79;
11 --cycle:1.2s;
12 }
13
14 html,body{
15 margin:0;
16 width:100%;
17 height:100%;
18 background:var(--bg);
19 overflow:hidden;
20 }
21
22 body{
23 display:grid;
24 place-items:center;
25 font-family:sans-serif;
26 }
27
28 .loader{
29 position:relative;
30 width:84px;
31 height:84px;
32 }
33
34 .diamond{
35 position:absolute;
36 left:50%;
37 top:50%;
38 background:var(--dot);
39 transform:translate(-50%,-50%) rotate(45deg);
40 border-radius:2px;
41 box-shadow:0 0 0 0.5px rgba(255,160,150,.15);
42 }
43
44 .center{
45 width:28px;
46 height:28px;
47 animation:centerPulse var(--cycle) ease-in-out infinite;
48 }
49
50 .small{
51 width:10px;
52 height:10px;
53 animation:outerPulse var(--cycle) ease-in-out infinite;
54 }
55
56 .top{ transform:translate(-50%,-50%) translateY(-42px) rotate(45deg); }
57 .right{ transform:translate(-50%,-50%) translateX(42px) rotate(45deg); }
58 .bottom{ transform:translate(-50%,-50%) translateY(42px) rotate(45deg); }
59 .left{ transform:translate(-50%,-50%) translateX(-42px) rotate(45deg); }
60
61 .top,.right,.bottom,.left{
62 animation-name:outerPulse;
63 animation-duration:var(--cycle);
64 animation-timing-function:ease-in-out;
65 animation-iteration-count:infinite;
66 }
67
68 @keyframes centerPulse{
69 0%, 18%, 100%{
70 width:10px;
71 height:10px;
72 opacity:1;
73 }
74 42%, 58%{
75 width:28px;
76 height:28px;
77 opacity:1;
78 }
79 82%{
80 width:10px;
81 height:10px;
82 opacity:1;
83 }
84 }
85
86 @keyframes outerPulse{
87 0%, 18%, 100%{
88 width:10px;
89 height:10px;
90 opacity:1;
91 }
92 42%, 58%{
93 width:10px;
94 height:10px;
95 opacity:1;
96 }
97 82%{
98 width:10px;
99 height:10px;
100 opacity:1;
101 }
102 }
103
104 /* subtle frame-like breathing to better match the sampled sequence */
105 .loader{
106 animation:microShift var(--cycle) ease-in-out infinite;
107 }
108
109 @keyframes microShift{
110 0%,100%{ transform:translateY(0); }
111 50%{ transform:translateY(-1px); }
112 }
113</style>
114</head>
115<body>
116 <div class="loader" aria-label="loading animation">
117 <div class="diamond center"></div>
118 <div class="diamond small top"></div>
119 <div class="diamond small right"></div>
120 <div class="diamond small bottom"></div>
121 <div class="diamond small left"></div>
122 </div>
123</body>
124</html>