@mumulinya167/ccm-pet-assets 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/README.md +4 -0
  2. package/assets/calico/calico-collapsing.apng +0 -0
  3. package/assets/calico/calico-dozing.apng +0 -0
  4. package/assets/calico/calico-error.apng +0 -0
  5. package/assets/calico/calico-happy.apng +0 -0
  6. package/assets/calico/calico-idle-follow.svg +324 -0
  7. package/assets/calico/calico-idle.apng +0 -0
  8. package/assets/calico/calico-mini-alert.apng +0 -0
  9. package/assets/calico/calico-mini-crabwalk.apng +0 -0
  10. package/assets/calico/calico-mini-enter.apng +0 -0
  11. package/assets/calico/calico-mini-happy.apng +0 -0
  12. package/assets/calico/calico-mini-idle.apng +0 -0
  13. package/assets/calico/calico-mini-peek.apng +0 -0
  14. package/assets/calico/calico-mini-sleep.apng +0 -0
  15. package/assets/calico/calico-notification.apng +0 -0
  16. package/assets/calico/calico-react-drag.apng +0 -0
  17. package/assets/calico/calico-react-left.apng +0 -0
  18. package/assets/calico/calico-react-poke.apng +0 -0
  19. package/assets/calico/calico-sleeping.apng +0 -0
  20. package/assets/calico/calico-thinking.apng +0 -0
  21. package/assets/calico/calico-waking.apng +0 -0
  22. package/assets/calico/calico-working-building.apng +0 -0
  23. package/assets/calico/calico-working-carrying.apng +0 -0
  24. package/assets/calico/calico-working-conducting.apng +0 -0
  25. package/assets/calico/calico-working-juggling.apng +0 -0
  26. package/assets/calico/calico-working-sweeping.apng +0 -0
  27. package/assets/calico/calico-working-typing.apng +0 -0
  28. package/assets/calico/calico-yawning.apng +0 -0
  29. package/assets/calico.svg +324 -0
  30. package/assets/clawd/LICENSE +22 -0
  31. package/assets/clawd/clawd-about-hero.svg +202 -0
  32. package/assets/clawd/clawd-collapse-sleep.svg +247 -0
  33. package/assets/clawd/clawd-error.svg +94 -0
  34. package/assets/clawd/clawd-happy.svg +161 -0
  35. package/assets/clawd/clawd-headphones-groove.svg +194 -0
  36. package/assets/clawd/clawd-idle-bubble.svg +180 -0
  37. package/assets/clawd/clawd-idle-collapse.svg +101 -0
  38. package/assets/clawd/clawd-idle-doze.svg +72 -0
  39. package/assets/clawd/clawd-idle-follow.svg +64 -0
  40. package/assets/clawd/clawd-idle-living.svg +196 -0
  41. package/assets/clawd/clawd-idle-look.svg +115 -0
  42. package/assets/clawd/clawd-idle-reading.svg +252 -0
  43. package/assets/clawd/clawd-idle-yawn.svg +158 -0
  44. package/assets/clawd/clawd-mini-alert.svg +129 -0
  45. package/assets/clawd/clawd-mini-crabwalk.svg +76 -0
  46. package/assets/clawd/clawd-mini-enter-sleep.svg +64 -0
  47. package/assets/clawd/clawd-mini-enter.svg +114 -0
  48. package/assets/clawd/clawd-mini-happy.svg +124 -0
  49. package/assets/clawd/clawd-mini-idle.svg +83 -0
  50. package/assets/clawd/clawd-mini-peek.svg +82 -0
  51. package/assets/clawd/clawd-mini-sleep.svg +112 -0
  52. package/assets/clawd/clawd-mini-typing.svg +153 -0
  53. package/assets/clawd/clawd-notification.svg +438 -0
  54. package/assets/clawd/clawd-react-annoyed.svg +167 -0
  55. package/assets/clawd/clawd-react-double-jump.svg +229 -0
  56. package/assets/clawd/clawd-react-double.svg +108 -0
  57. package/assets/clawd/clawd-react-drag.svg +102 -0
  58. package/assets/clawd/clawd-react-left.svg +102 -0
  59. package/assets/clawd/clawd-react-right.svg +102 -0
  60. package/assets/clawd/clawd-sleeping.svg +118 -0
  61. package/assets/clawd/clawd-static-base.svg +21 -0
  62. package/assets/clawd/clawd-wake.svg +277 -0
  63. package/assets/clawd/clawd-working-building.svg +329 -0
  64. package/assets/clawd/clawd-working-carrying.svg +178 -0
  65. package/assets/clawd/clawd-working-debugger.svg +245 -0
  66. package/assets/clawd/clawd-working-juggling.svg +183 -0
  67. package/assets/clawd/clawd-working-sweeping.svg +248 -0
  68. package/assets/clawd/clawd-working-thinking.svg +501 -0
  69. package/assets/clawd/clawd-working-typing-boss.svg +307 -0
  70. package/assets/clawd/clawd-working-typing.svg +273 -0
  71. package/assets/clawd/clawd-working-ultrathink.svg +166 -0
  72. package/assets/clawd/clawd-working-wizard.svg +356 -0
  73. package/assets/clawd.svg +64 -0
  74. package/assets/cloudling/cloudling/cloudling-attention.svg +380 -0
  75. package/assets/cloudling/cloudling/cloudling-building.svg +667 -0
  76. package/assets/cloudling/cloudling/cloudling-carrying.svg +604 -0
  77. package/assets/cloudling/cloudling/cloudling-conducting.svg +616 -0
  78. package/assets/cloudling/cloudling/cloudling-dozing-to-sleeping.svg +578 -0
  79. package/assets/cloudling/cloudling/cloudling-dozing.svg +358 -0
  80. package/assets/cloudling/cloudling/cloudling-error.svg +428 -0
  81. package/assets/cloudling/cloudling/cloudling-idle-reading.svg +658 -0
  82. package/assets/cloudling/cloudling/cloudling-idle-to-dozing.svg +568 -0
  83. package/assets/cloudling/cloudling/cloudling-idle-to-sleeping.svg +811 -0
  84. package/assets/cloudling/cloudling/cloudling-idle.svg +255 -0
  85. package/assets/cloudling/cloudling/cloudling-juggling.svg +648 -0
  86. package/assets/cloudling/cloudling/cloudling-mini-alert.svg +390 -0
  87. package/assets/cloudling/cloudling/cloudling-mini-crabwalk.svg +335 -0
  88. package/assets/cloudling/cloudling/cloudling-mini-enter-roll-in.svg +226 -0
  89. package/assets/cloudling/cloudling/cloudling-mini-enter-sleep.svg +232 -0
  90. package/assets/cloudling/cloudling/cloudling-mini-happy.svg +371 -0
  91. package/assets/cloudling/cloudling/cloudling-mini-idle.svg +279 -0
  92. package/assets/cloudling/cloudling/cloudling-mini-peek.svg +328 -0
  93. package/assets/cloudling/cloudling/cloudling-mini-sleep.svg +260 -0
  94. package/assets/cloudling/cloudling/cloudling-mini-typing.svg +692 -0
  95. package/assets/cloudling/cloudling/cloudling-notification.svg +494 -0
  96. package/assets/cloudling/cloudling/cloudling-react-drag.svg +83 -0
  97. package/assets/cloudling/cloudling/cloudling-sleeping-to-idle.svg +555 -0
  98. package/assets/cloudling/cloudling/cloudling-sleeping.svg +500 -0
  99. package/assets/cloudling/cloudling/cloudling-sweeping.svg +292 -0
  100. package/assets/cloudling/cloudling/cloudling-thinking.svg +720 -0
  101. package/assets/cloudling/cloudling/cloudling-typing.svg +354 -0
  102. package/assets/cloudling/cloudling-attention.svg +380 -0
  103. package/assets/cloudling/cloudling-building.svg +667 -0
  104. package/assets/cloudling/cloudling-carrying.svg +604 -0
  105. package/assets/cloudling/cloudling-conducting.svg +616 -0
  106. package/assets/cloudling/cloudling-dozing-to-sleeping.svg +578 -0
  107. package/assets/cloudling/cloudling-dozing.svg +358 -0
  108. package/assets/cloudling/cloudling-error.svg +428 -0
  109. package/assets/cloudling/cloudling-idle-reading.svg +658 -0
  110. package/assets/cloudling/cloudling-idle-to-dozing.svg +568 -0
  111. package/assets/cloudling/cloudling-idle-to-sleeping.svg +811 -0
  112. package/assets/cloudling/cloudling-idle.svg +255 -0
  113. package/assets/cloudling/cloudling-juggling.svg +648 -0
  114. package/assets/cloudling/cloudling-mini-alert.svg +390 -0
  115. package/assets/cloudling/cloudling-mini-crabwalk.svg +335 -0
  116. package/assets/cloudling/cloudling-mini-enter-roll-in.svg +226 -0
  117. package/assets/cloudling/cloudling-mini-enter-sleep.svg +232 -0
  118. package/assets/cloudling/cloudling-mini-happy.svg +371 -0
  119. package/assets/cloudling/cloudling-mini-idle.svg +279 -0
  120. package/assets/cloudling/cloudling-mini-peek.svg +328 -0
  121. package/assets/cloudling/cloudling-mini-sleep.svg +260 -0
  122. package/assets/cloudling/cloudling-mini-typing.svg +692 -0
  123. package/assets/cloudling/cloudling-notification.svg +494 -0
  124. package/assets/cloudling/cloudling-react-drag.svg +83 -0
  125. package/assets/cloudling/cloudling-sleeping-to-idle.svg +555 -0
  126. package/assets/cloudling/cloudling-sleeping.svg +500 -0
  127. package/assets/cloudling/cloudling-sweeping.svg +292 -0
  128. package/assets/cloudling/cloudling-thinking.svg +720 -0
  129. package/assets/cloudling/cloudling-typing.svg +354 -0
  130. package/assets/cloudling.svg +255 -0
  131. package/assets/ghost-attention.svg +19 -0
  132. package/assets/ghost-carrying.svg +19 -0
  133. package/assets/ghost-collapsing.svg +19 -0
  134. package/assets/ghost-dozing.svg +23 -0
  135. package/assets/ghost-error.svg +19 -0
  136. package/assets/ghost-happy.svg +23 -0
  137. package/assets/ghost-idle-action1.svg +19 -0
  138. package/assets/ghost-idle-action2.svg +19 -0
  139. package/assets/ghost-idle-action3.svg +19 -0
  140. package/assets/ghost-idle.svg +11 -0
  141. package/assets/ghost-juggling.svg +19 -0
  142. package/assets/ghost-notification.svg +19 -0
  143. package/assets/ghost-react-double.svg +23 -0
  144. package/assets/ghost-react-drag.svg +23 -0
  145. package/assets/ghost-react-left.svg +19 -0
  146. package/assets/ghost-react-right.svg +19 -0
  147. package/assets/ghost-sleeping.svg +19 -0
  148. package/assets/ghost-sweeping.svg +19 -0
  149. package/assets/ghost-thinking.svg +19 -0
  150. package/assets/ghost-waking.svg +19 -0
  151. package/assets/ghost-working.svg +19 -0
  152. package/assets/ghost-yawning.svg +23 -0
  153. package/assets/ghost.svg +11 -0
  154. package/assets/robot-attention.svg +19 -0
  155. package/assets/robot-carrying.svg +19 -0
  156. package/assets/robot-collapsing.svg +19 -0
  157. package/assets/robot-dozing.svg +23 -0
  158. package/assets/robot-error.svg +19 -0
  159. package/assets/robot-happy.svg +23 -0
  160. package/assets/robot-idle-action1.svg +19 -0
  161. package/assets/robot-idle-action2.svg +19 -0
  162. package/assets/robot-idle-action3.svg +19 -0
  163. package/assets/robot-idle.svg +11 -0
  164. package/assets/robot-juggling.svg +19 -0
  165. package/assets/robot-notification.svg +19 -0
  166. package/assets/robot-react-double.svg +23 -0
  167. package/assets/robot-react-drag.svg +23 -0
  168. package/assets/robot-react-left.svg +19 -0
  169. package/assets/robot-react-right.svg +19 -0
  170. package/assets/robot-sleeping.svg +19 -0
  171. package/assets/robot-sweeping.svg +19 -0
  172. package/assets/robot-thinking.svg +19 -0
  173. package/assets/robot-waking.svg +19 -0
  174. package/assets/robot-working.svg +19 -0
  175. package/assets/robot-yawning.svg +23 -0
  176. package/assets/robot.svg +11 -0
  177. package/manifest.json +889 -0
  178. package/package.json +18 -0
@@ -0,0 +1,247 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500" shape-rendering="crispEdges">
2
+ <defs>
3
+ <style>
4
+ /* Collapse (0-1s) → Sleep breathing + Zzz (1s onwards, infinite) */
5
+ /* Start pose matches yawn end: body scale(1.05,0.95) translate(0,1px), eyes shut, arms down */
6
+
7
+ .rest-shadow-breathe {
8
+ transform-origin: 7.5px 15.5px;
9
+ animation: sleep-shadow 4.5s infinite ease-in-out 1s;
10
+ }
11
+
12
+ .rest-shadow-form {
13
+ transform-origin: 7.5px 15.5px;
14
+ animation: rest-shadow-form 1s linear forwards;
15
+ }
16
+
17
+ .rest-breathe {
18
+ transform-origin: 7.5px 15px;
19
+ animation: sleep-breathe 4.5s infinite ease-in-out 1s;
20
+ }
21
+
22
+ .rest-body-frame {
23
+ transform-origin: 7.5px 13px;
24
+ animation: rest-body-frame 1s linear forwards;
25
+ }
26
+
27
+ .rest-torso {
28
+ transform-origin: 2px 6px;
29
+ animation: rest-torso 1s linear forwards;
30
+ }
31
+
32
+ .rest-arm-l {
33
+ transform-origin: 1px 10px;
34
+ animation: rest-arm-l 1s linear forwards;
35
+ }
36
+
37
+ .rest-arm-r {
38
+ transform-origin: 14px 10px;
39
+ animation: rest-arm-r 1s linear forwards;
40
+ }
41
+
42
+ .rest-eye-l {
43
+ transform-origin: 4px 8px;
44
+ animation: rest-eye-l 1s linear forwards;
45
+ }
46
+
47
+ .rest-eye-r {
48
+ transform-origin: 10px 8px;
49
+ animation: rest-eye-r 1s linear forwards;
50
+ }
51
+
52
+ .rest-leg {
53
+ animation: rest-leg 1s linear forwards;
54
+ }
55
+
56
+ .rest-leg.left-outer { transform-origin: 3px 12px; }
57
+ .rest-leg.left-inner { transform-origin: 5px 12px; }
58
+ .rest-leg.right-inner { transform-origin: 9px 12px; }
59
+ .rest-leg.right-outer { transform-origin: 11px 12px; }
60
+
61
+ .z-particle { opacity: 0; }
62
+ .z1 { animation: float-1 6s infinite ease-in-out 1s; }
63
+ .z2 { animation: float-2 6s infinite ease-in-out 3s; }
64
+ .z3 { animation: float-3 6s infinite ease-in-out 5s; }
65
+
66
+ /* Shadow: narrow (matching yawn end) → wide (sleeping) */
67
+ @keyframes rest-shadow-form {
68
+ 0% { transform: scaleX(0.556); opacity: 0.55; }
69
+ 4% { transform: scaleX(0.574); opacity: 0.548; }
70
+ 14% { transform: scaleX(0.61); opacity: 0.54; }
71
+ 28% { transform: scaleX(0.665); opacity: 0.522; }
72
+ 42% { transform: scaleX(0.74); opacity: 0.5; }
73
+ 68% { transform: scaleX(0.9); opacity: 0.45; }
74
+ 86% { transform: scaleX(1.02); opacity: 0.41; }
75
+ 100% { transform: scaleX(1); opacity: 0.4; }
76
+ }
77
+
78
+ /* Body frame: yawn-end squash → neutral (sleeping base) */
79
+ @keyframes rest-body-frame {
80
+ 0% { transform: scale(1.05, 0.95) translate(0, 1px); }
81
+ 4% { transform: scale(1.058, 0.94) translate(0, 1.1px); }
82
+ 14% { transform: scale(1.072, 0.915) translate(0, 1.32px); }
83
+ 28% { transform: scale(1.09, 0.875) translate(0, 1.68px); }
84
+ 40% { transform: scale(1.1, 0.84) translate(0, 1.95px); }
85
+ 66% { transform: scale(1.05, 0.9) translate(0, 1.05px); }
86
+ 84% { transform: scale(1.01, 0.98) translate(0, 0.22px); }
87
+ 100% { transform: scale(1, 1) translate(0, 0); }
88
+ }
89
+
90
+ /* Torso: standing → splooted flat */
91
+ @keyframes rest-torso {
92
+ 0% { transform: translate(0, 0) scale(1, 1); }
93
+ 4% { transform: translate(-0.02px, 0.08px) scale(1.004, 0.998); }
94
+ 14% { transform: translate(-0.1px, 0.34px) scale(1.018, 0.985); }
95
+ 28% { transform: translate(-0.26px, 1.02px) scale(1.045, 0.94); }
96
+ 44% { transform: translate(-0.4px, 1.75px) scale(1.08, 0.9); }
97
+ 68% { transform: translate(-0.8px, 3.1px) scale(1.14, 0.8); }
98
+ 86% { transform: translate(-1.05px, 3.95px) scale(1.19, 0.72); }
99
+ 100% { transform: translate(-1px, 4px) scale(1.1818, 0.7143); }
100
+ }
101
+
102
+ /* Arms: relaxed down → flat on ground */
103
+ @keyframes rest-arm-l {
104
+ 0% { transform: translate(0, 1px) rotate(-15deg); }
105
+ 4% { transform: translate(-0.03px, 1.08px) rotate(-14.5deg); }
106
+ 14% { transform: translate(-0.11px, 1.34px) rotate(-13deg); }
107
+ 28% { transform: translate(-0.27px, 1.98px) rotate(-9deg); }
108
+ 44% { transform: translate(-0.45px, 2.45px) rotate(-7deg); }
109
+ 68% { transform: translate(-0.8px, 3.35px) rotate(-2deg); }
110
+ 86% { transform: translate(-1.05px, 4.05px) rotate(0deg); }
111
+ 100% { transform: translate(-1px, 4px) rotate(0deg); }
112
+ }
113
+
114
+ @keyframes rest-arm-r {
115
+ 0% { transform: translate(0, 1px) rotate(15deg); }
116
+ 4% { transform: translate(0.03px, 1.08px) rotate(14.5deg); }
117
+ 14% { transform: translate(0.11px, 1.34px) rotate(13deg); }
118
+ 28% { transform: translate(0.27px, 1.98px) rotate(9deg); }
119
+ 44% { transform: translate(0.45px, 2.45px) rotate(7deg); }
120
+ 68% { transform: translate(0.8px, 3.35px) rotate(2deg); }
121
+ 86% { transform: translate(1.05px, 4.05px) rotate(0deg); }
122
+ 100% { transform: translate(1px, 4px) rotate(0deg); }
123
+ }
124
+
125
+ /* Eyes: shut (scaleY 0.1) → sleeping dashes */
126
+ @keyframes rest-eye-l {
127
+ 0% { transform: scale(1, 0.1); }
128
+ 4% { transform: translate(0, 0.06px) scale(1.015, 0.1); }
129
+ 14% { transform: translate(0, 0.28px) scale(1.06, 0.1); }
130
+ 24% { transform: translate(0, 0.6px) scale(1.12, 0.1); }
131
+ 52% { transform: translate(-0.15px, 2.1px) scale(1.45, 0.12); }
132
+ 78% { transform: translate(-0.35px, 3.8px) scale(1.82, 0.17); }
133
+ 100% { transform: translate(-0.5px, 4.5px) scale(2, 0.2); }
134
+ }
135
+
136
+ @keyframes rest-eye-r {
137
+ 0% { transform: scale(1, 0.1); }
138
+ 4% { transform: translate(0, 0.06px) scale(1.015, 0.1); }
139
+ 14% { transform: translate(0, 0.28px) scale(1.06, 0.1); }
140
+ 24% { transform: translate(0, 0.6px) scale(1.12, 0.1); }
141
+ 52% { transform: translate(-0.15px, 2.1px) scale(1.45, 0.12); }
142
+ 78% { transform: translate(-0.35px, 3.8px) scale(1.82, 0.17); }
143
+ 100% { transform: translate(-0.5px, 4.5px) scale(2, 0.2); }
144
+ }
145
+
146
+ /* Legs: standing → short stubs */
147
+ @keyframes rest-leg {
148
+ 0% { transform: translate(0, 0) scale(1, 1); }
149
+ 4% { transform: translate(0, -0.03px) scale(1, 0.985); }
150
+ 14% { transform: translate(0, -0.14px) scale(1, 0.93); }
151
+ 44% { transform: translate(0, -0.4px) scale(1, 0.82); }
152
+ 68% { transform: translate(0, -1.4px) scale(1, 0.6); }
153
+ 84% { transform: translate(0, -2.4px) scale(1, 0.42); }
154
+ 100% { transform: translate(0, -3px) scale(1, 0.3333); }
155
+ }
156
+
157
+ /* Sleep breathing loop */
158
+ @keyframes sleep-breathe {
159
+ 0%, 80%, 100% { transform: scale(1, 1); }
160
+ 30%, 40% { transform: scale(1.02, 1.25); }
161
+ }
162
+
163
+ @keyframes sleep-shadow {
164
+ 0%, 80%, 100% { transform: scaleX(1); opacity: 0.4; }
165
+ 30%, 40% { transform: scaleX(1.05); opacity: 0.5; }
166
+ }
167
+
168
+ /* Zzz particle floats */
169
+ @keyframes float-1 {
170
+ 0% { transform: translate(5px, 8px) scale(0.4); opacity: 0; }
171
+ 10% { opacity: 1; }
172
+ 30% { transform: translate(9px, 4px) scale(0.6); }
173
+ 50% { transform: translate(4px, 0px) scale(0.8); }
174
+ 70% { transform: translate(8px, -4px) scale(1); }
175
+ 90% { opacity: 0.8; }
176
+ 100% { transform: translate(6px, -8px) scale(1.1); opacity: 0; }
177
+ }
178
+
179
+ @keyframes float-2 {
180
+ 0% { transform: translate(8px, 9px) scale(0.3); opacity: 0; }
181
+ 10% { opacity: 1; }
182
+ 30% { transform: translate(5px, 5px) scale(0.5); }
183
+ 50% { transform: translate(9px, 1px) scale(0.7); }
184
+ 70% { transform: translate(6px, -3px) scale(0.9); }
185
+ 90% { opacity: 0.8; }
186
+ 100% { transform: translate(8px, -7px) scale(1); opacity: 0; }
187
+ }
188
+
189
+ @keyframes float-3 {
190
+ 0% { transform: translate(6px, 7px) scale(0.5); opacity: 0; }
191
+ 10% { opacity: 1; }
192
+ 30% { transform: translate(9px, 3px) scale(0.7); }
193
+ 50% { transform: translate(4px, -1px) scale(0.9); }
194
+ 70% { transform: translate(8px, -5px) scale(1.1); }
195
+ 90% { opacity: 0.8; }
196
+ 100% { transform: translate(5px, -9px) scale(1.2); opacity: 0; }
197
+ }
198
+ </style>
199
+
200
+ <g id="pixel-z">
201
+ <rect x="0" y="0" width="4" height="1"/>
202
+ <rect x="2" y="1" width="1" height="1"/>
203
+ <rect x="1" y="2" width="1" height="1"/>
204
+ <rect x="0" y="3" width="4" height="1"/>
205
+ </g>
206
+
207
+ <g id="pixel-z-small">
208
+ <rect x="0" y="0" width="3" height="1"/>
209
+ <rect x="1" y="1" width="1" height="1"/>
210
+ <rect x="0" y="2" width="3" height="1"/>
211
+ </g>
212
+ </defs>
213
+
214
+ <!-- Shadow -->
215
+ <g class="rest-shadow-breathe">
216
+ <rect class="rest-shadow-form" x="-1" y="15" width="17" height="1" fill="#000000" opacity="0.4"/>
217
+ </g>
218
+
219
+ <!-- Zzz particles -->
220
+ <use href="#pixel-z" class="z-particle z1" fill="#90A4AE"/>
221
+ <use href="#pixel-z-small" class="z-particle z2" fill="#B0BEC5"/>
222
+ <use href="#pixel-z" class="z-particle z3" fill="#CFD8DC"/>
223
+
224
+ <!-- Body -->
225
+ <g class="rest-breathe">
226
+ <g fill="#DE886D">
227
+ <rect class="rest-leg left-outer" x="3" y="12" width="1" height="3"/>
228
+ <rect class="rest-leg left-inner" x="5" y="12" width="1" height="3"/>
229
+ <rect class="rest-leg right-inner" x="9" y="12" width="1" height="3"/>
230
+ <rect class="rest-leg right-outer" x="11" y="12" width="1" height="3"/>
231
+ </g>
232
+
233
+ <g class="rest-body-frame">
234
+ <rect class="rest-torso" x="2" y="6" width="11" height="7" fill="#DE886D"/>
235
+ <g class="rest-arm-l">
236
+ <rect x="0" y="9" width="2" height="2" fill="#DE886D"/>
237
+ </g>
238
+ <g class="rest-arm-r">
239
+ <rect x="13" y="9" width="2" height="2" fill="#DE886D"/>
240
+ </g>
241
+ <g fill="#000000">
242
+ <rect class="rest-eye-l" x="4" y="8" width="1" height="2"/>
243
+ <rect class="rest-eye-r" x="10" y="8" width="1" height="2"/>
244
+ </g>
245
+ </g>
246
+ </g>
247
+ </svg>
@@ -0,0 +1,94 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
2
+ <defs>
3
+ <style>
4
+ .body-exhausted {
5
+ transform-origin: 7.5px 15px;
6
+ animation: heavy-breathe 2.5s infinite ease-in-out;
7
+ }
8
+ .arm-fan {
9
+ transform-origin: 14px 10px;
10
+ animation: fan-self 0.4s infinite alternate ease-in-out;
11
+ }
12
+ .smoke {
13
+ opacity: 0;
14
+ animation: puff-smoke 3s infinite ease-out;
15
+ }
16
+ .sm1 { animation-delay: 0s; }
17
+ .sm2 { animation-delay: 1s; }
18
+ .sm3 { animation-delay: 2s; }
19
+
20
+ /* Error warning flash */
21
+ .error-warning {
22
+ animation: error-flash 0.8s infinite ease-in-out;
23
+ }
24
+
25
+ @keyframes heavy-breathe {
26
+ 0%, 100% { transform: scale(1, 1) translateY(0); }
27
+ 50% { transform: scale(1.05, 0.9) translateY(1.5px); }
28
+ }
29
+ @keyframes fan-self {
30
+ 0% { transform: rotate(0deg); }
31
+ 100% { transform: rotate(-60deg); }
32
+ }
33
+ @keyframes puff-smoke {
34
+ 0% { transform: translate(7.5px, 6px) scale(0.5); opacity: 0; }
35
+ 20% { opacity: 0.6; }
36
+ 100% { transform: translate(7.5px, -15px) scale(2); opacity: 0; }
37
+ }
38
+ @keyframes error-flash {
39
+ 0%, 100% { opacity: 1; }
40
+ 50% { opacity: 0.15; }
41
+ }
42
+ </style>
43
+ <g id="smoke-puff">
44
+ <rect x="-1" y="-1" width="2" height="2" fill="#B0BEC5" rx="0.5"/>
45
+ <rect x="0" y="-2" width="2" height="2" fill="#CFD8DC" rx="0.5"/>
46
+ </g>
47
+ </defs>
48
+
49
+ <rect id="ground-shadow" x="-1" y="15" width="17" height="1" fill="#000000" opacity="0.5"/>
50
+
51
+ <!-- Smoke -->
52
+ <g>
53
+ <use href="#smoke-puff" class="smoke sm1"/>
54
+ <use href="#smoke-puff" class="smoke sm2" transform="translate(-2, 0)"/>
55
+ <use href="#smoke-puff" class="smoke sm3" transform="translate(2, 0)"/>
56
+ </g>
57
+
58
+ <g class="body-exhausted">
59
+ <!-- Sploot Legs -->
60
+ <g fill="#DE886D">
61
+ <rect x="3" y="9" width="1" height="1"/>
62
+ <rect x="5" y="9" width="1" height="1"/>
63
+ <rect x="9" y="9" width="1" height="1"/>
64
+ <rect x="11" y="9" width="1" height="1"/>
65
+ </g>
66
+
67
+ <!-- Torso Sploot -->
68
+ <g fill="#DE886D">
69
+ <rect x="1" y="10" width="13" height="5"/>
70
+ <rect x="-1" y="13" width="2" height="2"/>
71
+ </g>
72
+
73
+ <!-- Fanning Arm (closer to body) -->
74
+ <g class="arm-fan">
75
+ <rect x="13" y="11" width="2" height="2" fill="#DE886D"/>
76
+ </g>
77
+
78
+ <!-- XX Eyes -->
79
+ <g fill="#000000">
80
+ <!-- Left X -->
81
+ <rect x="3" y="12" width="0.6" height="2.2" transform="rotate(45 3.3 13.1)"/>
82
+ <rect x="3" y="12" width="0.6" height="2.2" transform="rotate(-45 3.3 13.1)"/>
83
+ <!-- Right X -->
84
+ <rect x="10" y="12" width="0.6" height="2.2" transform="rotate(45 10.3 13.1)"/>
85
+ <rect x="10" y="12" width="0.6" height="2.2" transform="rotate(-45 10.3 13.1)"/>
86
+ </g>
87
+ </g>
88
+
89
+ <!-- Error Warning (flashing) -->
90
+ <g class="error-warning">
91
+ <!-- Error text only -->
92
+ <text x="7.5" y="6" text-anchor="middle" font-family="'Söhne', 'Helvetica Neue', Arial, sans-serif" font-size="3.5" font-weight="700" fill="#FF3B30">ERROR</text>
93
+ </g>
94
+ </svg>
@@ -0,0 +1,161 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
2
+ <defs>
3
+ <style>
4
+ /* Bouncing Character Body */
5
+ .bounce-anim {
6
+ transform-box: fill-box;
7
+ transform-origin: 50% 100%; /* Base of the feet */
8
+ animation: bounce 1s infinite ease-in-out;
9
+ }
10
+
11
+ /* Ground Shadow Pulse */
12
+ .shadow-anim {
13
+ transform-box: fill-box;
14
+ transform-origin: 50% 50%;
15
+ animation: shadow 1s infinite ease-in-out;
16
+ }
17
+
18
+ /* Enthusiastic Waving Arms */
19
+ .arm-l {
20
+ transform-box: fill-box;
21
+ transform-origin: 100% 50%; /* Shoulder joint */
22
+ animation: wave-l 0.15s infinite alternate ease-in-out;
23
+ }
24
+ .arm-r {
25
+ transform-box: fill-box;
26
+ transform-origin: 0% 50%; /* Shoulder joint */
27
+ animation: wave-r 0.15s infinite alternate ease-in-out;
28
+ }
29
+
30
+ /* Happy Blinking Eyes */
31
+ .eyes-blink {
32
+ transform-box: fill-box;
33
+ transform-origin: 50% 50%;
34
+ animation: blink 2s infinite linear;
35
+ }
36
+
37
+ /* Pixel-Art Sparkle Animations (Frame-by-frame style) */
38
+ .spark-center {
39
+ opacity: 0;
40
+ animation: flash-center 1.5s infinite step-end;
41
+ animation-delay: var(--delay, 0s);
42
+ }
43
+
44
+ .spark-outer {
45
+ opacity: 0;
46
+ animation: flash-outer 1.5s infinite step-end;
47
+ animation-delay: var(--delay, 0s);
48
+ }
49
+
50
+ /* Character Keyframes */
51
+ @keyframes bounce {
52
+ 0%, 15%, 100% { transform: translateY(0) scaleY(1); }
53
+ 20% { transform: translateY(0) scaleY(0.85); } /* Anticipation squash */
54
+ 40% { transform: translateY(-10px) scaleY(1.05); } /* Fast up + stretch */
55
+ 50% { transform: translateY(-12px) scaleY(1); } /* Hangtime peak */
56
+ 60% { transform: translateY(-10px) scaleY(1.05); } /* Fast fall + stretch */
57
+ 80% { transform: translateY(0) scaleY(0.85); } /* Landing squash */
58
+ 85% { transform: translateY(0) scaleY(1); } /* Recover */
59
+ }
60
+
61
+ @keyframes shadow {
62
+ 0%, 15%, 100% { transform: scale(1); opacity: 0.5; }
63
+ 20% { transform: scale(1.1); opacity: 0.6; }
64
+ 40% { transform: scale(0.6); opacity: 0.2; }
65
+ 50% { transform: scale(0.5); opacity: 0.15; }
66
+ 60% { transform: scale(0.6); opacity: 0.2; }
67
+ 80% { transform: scale(1.1); opacity: 0.6; }
68
+ 85% { transform: scale(1); opacity: 0.5; }
69
+ }
70
+
71
+ @keyframes wave-l {
72
+ 0% { transform: rotate(45deg); }
73
+ 100% { transform: rotate(85deg); }
74
+ }
75
+
76
+ @keyframes wave-r {
77
+ 0% { transform: rotate(-45deg); }
78
+ 100% { transform: rotate(-85deg); }
79
+ }
80
+
81
+ @keyframes blink {
82
+ 0%, 46%, 54%, 100% { transform: scaleY(1); }
83
+ 50% { transform: scaleY(0.1); }
84
+ }
85
+
86
+ /*
87
+ True 8-Bit Sparkle Timeline:
88
+ 1. Small center dot appears
89
+ 2. Outer arms appear (Full Star)
90
+ 3. Center dot disappears (Hollow Ring)
91
+ 4. Everything disappears
92
+ */
93
+ @keyframes flash-center {
94
+ 0% { opacity: 0; }
95
+ 10% { opacity: 1; } /* Small dot */
96
+ 30% { opacity: 0; } /* Disappears, leaving hollow star */
97
+ 100%{ opacity: 0; }
98
+ }
99
+
100
+ @keyframes flash-outer {
101
+ 0% { opacity: 0; }
102
+ 20% { opacity: 1; } /* Outer arms appear to complete the star */
103
+ 40% { opacity: 0; } /* Entire star disappears */
104
+ 100%{ opacity: 0; }
105
+ }
106
+ </style>
107
+
108
+ <!-- Reusable Pixel Art Sparkle Definition -->
109
+ <g id="px-sparkle">
110
+ <!-- Center pixel -->
111
+ <rect class="spark-center" x="-0.5" y="-0.5" width="1" height="1" />
112
+ <!-- Outer 4 pixels forming the cross -->
113
+ <path class="spark-outer" d="M -0.5,-1.5 h1 v1 h-1 z
114
+ M -0.5,0.5 h1 v1 h-1 z
115
+ M -1.5,-0.5 h1 v1 h-1 z
116
+ M 0.5,-0.5 h1 v1 h-1 z" />
117
+ </g>
118
+ </defs>
119
+
120
+ <!-- Ground Shadow -->
121
+ <rect id="ground-shadow" class="shadow-anim" x="3" y="15" width="9" height="1" fill="#000000"/>
122
+
123
+ <!-- Pixel-Art Sparkle Particles Group -->
124
+ <g class="sparkles">
125
+ <use href="#px-sparkle" x="-4" y="-2" fill="#FFD700" style="--delay: 0.0s"/>
126
+ <use href="#px-sparkle" x="18" y="-4" fill="#FFA000" style="--delay: 0.3s"/>
127
+ <use href="#px-sparkle" x="20" y="10" fill="#FFF59D" style="--delay: 0.6s"/>
128
+ <use href="#px-sparkle" x="-6" y="12" fill="#FFC107" style="--delay: 0.9s"/>
129
+ <use href="#px-sparkle" x="7" y="-8" fill="#FFF59D" style="--delay: 1.2s"/>
130
+ <use href="#px-sparkle" x="-2" y="6" fill="#FFD700" style="--delay: 0.7s"/>
131
+ </g>
132
+
133
+ <!-- Main Animated Character -->
134
+ <g class="bounce-anim">
135
+ <!-- Body Color Group -->
136
+ <g id="body-color-group" fill="#DE886D">
137
+ <!-- Legs (Move and squash with the body naturally) -->
138
+ <rect id="outer-left-leg" x="3" y="13" width="1" height="2"/>
139
+ <rect id="inner-left-leg" x="5" y="13" width="1" height="2"/>
140
+ <rect id="inner-right-leg" x="9" y="13" width="1" height="2"/>
141
+ <rect id="outer-right-leg" x="11" y="13" width="1" height="2"/>
142
+
143
+ <!-- Main Torso -->
144
+ <rect id="torso" x="2" y="6" width="11" height="7"/>
145
+
146
+ <!-- Waving Arms -->
147
+ <g class="arm-l">
148
+ <rect id="left-arm" x="0" y="9" width="2" height="2"/>
149
+ </g>
150
+ <g class="arm-r">
151
+ <rect id="right-arm" x="13" y="9" width="2" height="2"/>
152
+ </g>
153
+ </g>
154
+
155
+ <!-- Eyes Color Group -->
156
+ <g class="eyes-blink" fill="#000000">
157
+ <rect id="left-eye" x="4" y="8" width="1" height="2"/>
158
+ <rect id="right-eye" x="10" y="8" width="1" height="2"/>
159
+ </g>
160
+ </g>
161
+ </svg>