tokentracker-cli 0.5.9 → 0.5.12

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 (51) hide show
  1. package/dashboard/dist/assets/DashboardPage-CRoqVbH0.js +12 -0
  2. package/dashboard/dist/assets/{LeaderboardPage-BaHIGvSw.js → LeaderboardPage-B3ZnlNgw.js} +1 -1
  3. package/dashboard/dist/assets/{LeaderboardProfilePage-BCvKUQ4z.js → LeaderboardProfilePage-Cq17bu0k.js} +1 -1
  4. package/dashboard/dist/assets/{ThemeToggle-BVMjkcsk.js → ThemeToggle-D2rifL57.js} +1 -1
  5. package/dashboard/dist/assets/{leaderboard-columns-BvsbuvV1.js → leaderboard-columns-DQnk56C_.js} +1 -1
  6. package/dashboard/dist/assets/{main-Cs8rK2ak.js → main-wolIKQH9.js} +3 -3
  7. package/dashboard/dist/clawd/happy.svg +161 -0
  8. package/dashboard/dist/clawd/idle/collapse.svg +101 -0
  9. package/dashboard/dist/clawd/idle/doze.svg +72 -0
  10. package/dashboard/dist/clawd/idle/follow.svg +64 -0
  11. package/dashboard/dist/clawd/idle/living.svg +196 -0
  12. package/dashboard/dist/clawd/idle/look.svg +115 -0
  13. package/dashboard/dist/clawd/idle/yawn.svg +158 -0
  14. package/dashboard/dist/clawd/mini/alert.svg +129 -0
  15. package/dashboard/dist/clawd/mini/crabwalk.svg +76 -0
  16. package/dashboard/dist/clawd/mini/enter-sleep.svg +65 -0
  17. package/dashboard/dist/clawd/mini/enter.svg +115 -0
  18. package/dashboard/dist/clawd/mini/happy.svg +124 -0
  19. package/dashboard/dist/clawd/mini/idle.svg +83 -0
  20. package/dashboard/dist/clawd/mini/peek.svg +82 -0
  21. package/dashboard/dist/clawd/mini/sleep.svg +112 -0
  22. package/dashboard/dist/clawd/react/double.svg +108 -0
  23. package/dashboard/dist/clawd/react/drag.svg +102 -0
  24. package/dashboard/dist/clawd/react/left.svg +102 -0
  25. package/dashboard/dist/clawd/react/right.svg +102 -0
  26. package/dashboard/dist/clawd/sleep/collapse-sleep.svg +247 -0
  27. package/dashboard/dist/clawd/sleep/sleeping.svg +118 -0
  28. package/dashboard/dist/clawd/sleep/wake.svg +277 -0
  29. package/dashboard/dist/clawd/static-base.svg +21 -0
  30. package/dashboard/dist/clawd/status/disconnected.svg +136 -0
  31. package/dashboard/dist/clawd/status/error.svg +94 -0
  32. package/dashboard/dist/clawd/status/notification.svg +134 -0
  33. package/dashboard/dist/clawd/working/building.svg +231 -0
  34. package/dashboard/dist/clawd/working/carrying.svg +107 -0
  35. package/dashboard/dist/clawd/working/conducting.svg +118 -0
  36. package/dashboard/dist/clawd/working/confused.svg +113 -0
  37. package/dashboard/dist/clawd/working/debugger.svg +91 -0
  38. package/dashboard/dist/clawd/working/juggling.svg +82 -0
  39. package/dashboard/dist/clawd/working/overheated.svg +75 -0
  40. package/dashboard/dist/clawd/working/pushing.svg +125 -0
  41. package/dashboard/dist/clawd/working/sweeping.svg +79 -0
  42. package/dashboard/dist/clawd/working/thinking.svg +119 -0
  43. package/dashboard/dist/clawd/working/typing.svg +153 -0
  44. package/dashboard/dist/clawd/working/ultrathink.svg +166 -0
  45. package/dashboard/dist/clawd/working/wizard.svg +98 -0
  46. package/dashboard/dist/index.html +1 -1
  47. package/dashboard/dist/llms.txt +9 -12
  48. package/dashboard/dist/share.html +1 -1
  49. package/package.json +1 -1
  50. package/src/commands/serve.js +12 -0
  51. package/dashboard/dist/assets/DashboardPage-DEZCzCqB.js +0 -12
@@ -0,0 +1,102 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
2
+ <defs>
3
+ <style>
4
+ .body-react {
5
+ transform-origin: 7.5px 15px;
6
+ animation: body-look-l 2.5s 1 ease-in-out forwards;
7
+ }
8
+ .eyes-react {
9
+ animation: eyes-look-l 2.5s 1 ease-in-out forwards;
10
+ }
11
+ .eyes-blink {
12
+ transform-origin: 7.5px 9px;
13
+ animation: blink 3s infinite linear;
14
+ }
15
+ .question-pop {
16
+ transform-origin: center;
17
+ animation: question-l 2.5s 1 ease-in-out forwards;
18
+ opacity: 0;
19
+ }
20
+ .arm-l-react {
21
+ animation: arm-l-return 2.5s 1 ease-in-out forwards;
22
+ }
23
+
24
+ /* Left arm: starts at idle-follow position (0,9), raises up then returns */
25
+ @keyframes arm-l-return {
26
+ 0%, 8% { transform: none; }
27
+ 16%, 56% { transform: translate(-1px, -2px) rotate(15deg); }
28
+ 84%, 100%{ transform: none; }
29
+ }
30
+
31
+ /* Body turns left then returns */
32
+ @keyframes body-look-l {
33
+ 0%, 8% { transform: translate(0px, 0px); }
34
+ 16%, 56% { transform: translate(-2px, 0px) rotate(-2deg); }
35
+ 84%, 100%{ transform: translate(0px, 0px); }
36
+ }
37
+
38
+ /* Eyes lead the body (larger offset) */
39
+ @keyframes eyes-look-l {
40
+ 0%, 8% { transform: translate(0px, 0px); }
41
+ 16%, 56% { transform: translate(-3px, 0px); }
42
+ 84%, 100%{ transform: translate(0px, 0px); }
43
+ }
44
+
45
+ /* Blinking (looping, keeps character alive) */
46
+ @keyframes blink {
47
+ 0%, 13%, 17%, 80%, 84%, 100% { transform: scaleY(1); }
48
+ 15%, 82% { transform: scaleY(0.1); }
49
+ }
50
+
51
+ /* Question mark: pop up, hold, float away */
52
+ @keyframes question-l {
53
+ 0%, 12% { opacity: 0; transform: translate(-6px, 6px) scale(0.5); }
54
+ 22%, 48% { opacity: 1; transform: translate(-8px, -2px) scale(1); }
55
+ 64%, 100%{ opacity: 0; transform: translate(-8px, -8px) scale(1.2); }
56
+ }
57
+ </style>
58
+
59
+ <g id="pixel-question">
60
+ <rect x="1" y="0" width="2" height="1"/>
61
+ <rect x="0" y="1" width="1" height="1"/>
62
+ <rect x="3" y="1" width="1" height="2"/>
63
+ <rect x="2" y="3" width="1" height="1"/>
64
+ <rect x="1" y="4" width="1" height="1"/>
65
+ <rect x="1" y="6" width="1" height="1"/>
66
+ </g>
67
+ </defs>
68
+
69
+ <!-- Ground Shadow -->
70
+ <rect x="3" y="15" width="9" height="1" fill="#000000" opacity="0.5"/>
71
+
72
+ <!-- Static Legs -->
73
+ <g fill="#DE886D">
74
+ <rect x="3" y="13" width="1" height="2"/>
75
+ <rect x="5" y="13" width="1" height="2"/>
76
+ <rect x="9" y="13" width="1" height="2"/>
77
+ <rect x="11" y="13" width="1" height="2"/>
78
+ </g>
79
+
80
+ <!-- Animated Upper Body -->
81
+ <g class="body-react">
82
+ <g fill="#DE886D">
83
+ <rect x="2" y="6" width="11" height="7"/>
84
+ <!-- Left arm: base position matches idle-follow (0,9), CSS animates raise+return -->
85
+ <g class="arm-l-react">
86
+ <rect x="0" y="9" width="2" height="2"/>
87
+ </g>
88
+ <rect x="13" y="9" width="2" height="2"/>
89
+ </g>
90
+ <g class="eyes-react">
91
+ <g class="eyes-blink" fill="#000000">
92
+ <rect x="4" y="8" width="1" height="2"/>
93
+ <rect x="10" y="8" width="1" height="2"/>
94
+ </g>
95
+ </g>
96
+ </g>
97
+
98
+ <!-- Left Question Mark -->
99
+ <g class="question-pop" fill="#40C4FF">
100
+ <use href="#pixel-question" />
101
+ </g>
102
+ </svg>
@@ -0,0 +1,102 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
2
+ <defs>
3
+ <style>
4
+ .body-react {
5
+ transform-origin: 7.5px 15px;
6
+ animation: body-look-r 2.5s 1 ease-in-out forwards;
7
+ }
8
+ .eyes-react {
9
+ animation: eyes-look-r 2.5s 1 ease-in-out forwards;
10
+ }
11
+ .eyes-blink {
12
+ transform-origin: 7.5px 9px;
13
+ animation: blink 3s infinite linear;
14
+ }
15
+ .question-pop {
16
+ transform-origin: center;
17
+ animation: question-r 2.5s 1 ease-in-out forwards;
18
+ opacity: 0;
19
+ }
20
+ .arm-r-react {
21
+ animation: arm-r-return 2.5s 1 ease-in-out forwards;
22
+ }
23
+
24
+ /* Right arm: starts at idle-follow position (13,9), raises up then returns */
25
+ @keyframes arm-r-return {
26
+ 0%, 8% { transform: none; }
27
+ 16%, 56% { transform: translate(1px, -2px) rotate(-15deg); }
28
+ 84%, 100%{ transform: none; }
29
+ }
30
+
31
+ /* Body turns right then returns */
32
+ @keyframes body-look-r {
33
+ 0%, 8% { transform: translate(0px, 0px); }
34
+ 16%, 56% { transform: translate(2px, 0px) rotate(2deg); }
35
+ 84%, 100%{ transform: translate(0px, 0px); }
36
+ }
37
+
38
+ /* Eyes lead the body (larger offset) */
39
+ @keyframes eyes-look-r {
40
+ 0%, 8% { transform: translate(0px, 0px); }
41
+ 16%, 56% { transform: translate(3px, 0px); }
42
+ 84%, 100%{ transform: translate(0px, 0px); }
43
+ }
44
+
45
+ /* Blinking (looping, keeps character alive) */
46
+ @keyframes blink {
47
+ 0%, 13%, 17%, 80%, 84%, 100% { transform: scaleY(1); }
48
+ 15%, 82% { transform: scaleY(0.1); }
49
+ }
50
+
51
+ /* Question mark: pop up, hold, float away */
52
+ @keyframes question-r {
53
+ 0%, 12% { opacity: 0; transform: translate(6px, 6px) scale(0.5); }
54
+ 22%, 48% { opacity: 1; transform: translate(8px, -2px) scale(1); }
55
+ 64%, 100%{ opacity: 0; transform: translate(8px, -8px) scale(1.2); }
56
+ }
57
+ </style>
58
+
59
+ <g id="pixel-question">
60
+ <rect x="1" y="0" width="2" height="1"/>
61
+ <rect x="0" y="1" width="1" height="1"/>
62
+ <rect x="3" y="1" width="1" height="2"/>
63
+ <rect x="2" y="3" width="1" height="1"/>
64
+ <rect x="1" y="4" width="1" height="1"/>
65
+ <rect x="1" y="6" width="1" height="1"/>
66
+ </g>
67
+ </defs>
68
+
69
+ <!-- Ground Shadow -->
70
+ <rect x="3" y="15" width="9" height="1" fill="#000000" opacity="0.5"/>
71
+
72
+ <!-- Static Legs -->
73
+ <g fill="#DE886D">
74
+ <rect x="3" y="13" width="1" height="2"/>
75
+ <rect x="5" y="13" width="1" height="2"/>
76
+ <rect x="9" y="13" width="1" height="2"/>
77
+ <rect x="11" y="13" width="1" height="2"/>
78
+ </g>
79
+
80
+ <!-- Animated Upper Body -->
81
+ <g class="body-react">
82
+ <g fill="#DE886D">
83
+ <rect x="2" y="6" width="11" height="7"/>
84
+ <rect x="0" y="9" width="2" height="2"/>
85
+ <!-- Right arm: base position matches idle-follow (13,9), CSS animates raise+return -->
86
+ <g class="arm-r-react">
87
+ <rect x="13" y="9" width="2" height="2"/>
88
+ </g>
89
+ </g>
90
+ <g class="eyes-react">
91
+ <g class="eyes-blink" fill="#000000">
92
+ <rect x="4" y="8" width="1" height="2"/>
93
+ <rect x="10" y="8" width="1" height="2"/>
94
+ </g>
95
+ </g>
96
+ </g>
97
+
98
+ <!-- Right Question Mark -->
99
+ <g class="question-pop" fill="#FFC107" transform="translate(10, 0)">
100
+ <use href="#pixel-question" />
101
+ </g>
102
+ </svg>
@@ -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,118 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
2
+ <defs>
3
+ <style>
4
+ /* Slow, rhythmic deep breathing animation */
5
+ .breathe {
6
+ transform-origin: 7.5px 15px; /* Pivot at the floor to expand upwards */
7
+ animation: breathe-squash 4.5s infinite ease-in-out;
8
+ }
9
+
10
+ /* Shadow expands slightly as the body inflates */
11
+ .shadow-breathe {
12
+ transform-origin: 7.5px 15.5px;
13
+ animation: shadow-pulse 4.5s infinite ease-in-out;
14
+ }
15
+
16
+ /* Zzz Particle Base Styles */
17
+ .z-particle {
18
+ opacity: 0;
19
+ }
20
+ .z1 { animation: float-1 6s infinite ease-in-out; animation-delay: 0s; }
21
+ .z2 { animation: float-2 6s infinite ease-in-out; animation-delay: 2s; }
22
+ .z3 { animation: float-3 6s infinite ease-in-out; animation-delay: 4s; }
23
+
24
+ /* Breathing Keyframes (Slow inhale, hold, exhale, pause) */
25
+ @keyframes breathe-squash {
26
+ 0%, 80%, 100% { transform: scale(1, 1); }
27
+ 30%, 40% { transform: scale(1.02, 1.25); } /* Chest expands/inflates */
28
+ }
29
+
30
+ @keyframes shadow-pulse {
31
+ 0%, 80%, 100% { transform: scaleX(1); opacity: 0.4; }
32
+ 30%, 40% { transform: scaleX(1.05); opacity: 0.5; }
33
+ }
34
+
35
+ /* Swaying and fading floating Z keyframes (Adjusted for lowered head) */
36
+ @keyframes float-1 {
37
+ 0% { transform: translate(5px, 8px) scale(0.4); opacity: 0; }
38
+ 10% { opacity: 1; }
39
+ 30% { transform: translate(9px, 4px) scale(0.6); }
40
+ 50% { transform: translate(4px, 0px) scale(0.8); }
41
+ 70% { transform: translate(8px, -4px) scale(1.0); }
42
+ 90% { opacity: 0.8; }
43
+ 100% { transform: translate(6px, -8px) scale(1.1); opacity: 0; }
44
+ }
45
+
46
+ @keyframes float-2 {
47
+ 0% { transform: translate(8px, 9px) scale(0.3); opacity: 0; }
48
+ 10% { opacity: 1; }
49
+ 30% { transform: translate(5px, 5px) scale(0.5); }
50
+ 50% { transform: translate(9px, 1px) scale(0.7); }
51
+ 70% { transform: translate(6px, -3px) scale(0.9); }
52
+ 90% { opacity: 0.8; }
53
+ 100% { transform: translate(8px, -7px) scale(1.0); opacity: 0; }
54
+ }
55
+
56
+ @keyframes float-3 {
57
+ 0% { transform: translate(6px, 7px) scale(0.5); opacity: 0; }
58
+ 10% { opacity: 1; }
59
+ 30% { transform: translate(9px, 3px) scale(0.7); }
60
+ 50% { transform: translate(4px, -1px) scale(0.9); }
61
+ 70% { transform: translate(8px, -5px) scale(1.1); }
62
+ 90% { opacity: 0.8; }
63
+ 100% { transform: translate(5px, -9px) scale(1.2); opacity: 0; }
64
+ }
65
+ </style>
66
+
67
+ <!-- Pixel Art "Z" Definitions -->
68
+ <g id="pixel-z">
69
+ <rect x="0" y="0" width="4" height="1" />
70
+ <rect x="2" y="1" width="1" height="1" />
71
+ <rect x="1" y="2" width="1" height="1" />
72
+ <rect x="0" y="3" width="4" height="1" />
73
+ </g>
74
+
75
+ <g id="pixel-z-small">
76
+ <rect x="0" y="0" width="3" height="1" />
77
+ <rect x="1" y="1" width="1" height="1" />
78
+ <rect x="0" y="2" width="3" height="1" />
79
+ </g>
80
+ </defs>
81
+
82
+ <!-- Ground Shadow (Widened for the splooted posture) -->
83
+ <rect id="ground-shadow" class="shadow-breathe" x="-1" y="15" width="17" height="1" fill="#000000" />
84
+
85
+ <!-- Floating Zzz Bubbles -->
86
+ <g class="zzz-particles">
87
+ <use href="#pixel-z" class="z-particle z1" fill="#90A4AE" />
88
+ <use href="#pixel-z-small" class="z-particle z2" fill="#B0BEC5" />
89
+ <use href="#pixel-z" class="z-particle z3" fill="#CFD8DC" />
90
+ </g>
91
+
92
+ <!-- Splooted / Melted Sleeping Pose -->
93
+ <g class="breathe">
94
+ <!-- Legs pointing up from behind (Relaxed Sploot) -->
95
+ <g fill="#DE886D">
96
+ <rect id="outer-left-leg-up" x="3" y="9" width="1" height="1"/>
97
+ <rect id="inner-left-leg-up" x="5" y="9" width="1" height="1"/>
98
+ <rect id="inner-right-leg-up" x="9" y="9" width="1" height="1"/>
99
+ <rect id="outer-right-leg-up" x="11" y="9" width="1" height="1"/>
100
+ </g>
101
+
102
+ <!-- Squashed Body Resting on the Floor -->
103
+ <g fill="#DE886D">
104
+ <!-- Main flattened torso -->
105
+ <rect id="torso-sploot" x="1" y="10" width="13" height="5"/>
106
+
107
+ <!-- Arms spread flat on the ground -->
108
+ <rect id="left-arm-sploot" x="-1" y="13" width="2" height="2"/>
109
+ <rect id="right-arm-sploot" x="14" y="13" width="2" height="2"/>
110
+ </g>
111
+
112
+ <!-- Ultra-Thin Shut Eyes (Dashes) -->
113
+ <g fill="#000000">
114
+ <rect id="left-eye-shut" x="3.5" y="12.5" width="2" height="0.4"/>
115
+ <rect id="right-eye-shut" x="9.5" y="12.5" width="2" height="0.4"/>
116
+ </g>
117
+ </g>
118
+ </svg>