@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.
- package/README.md +4 -0
- package/assets/calico/calico-collapsing.apng +0 -0
- package/assets/calico/calico-dozing.apng +0 -0
- package/assets/calico/calico-error.apng +0 -0
- package/assets/calico/calico-happy.apng +0 -0
- package/assets/calico/calico-idle-follow.svg +324 -0
- package/assets/calico/calico-idle.apng +0 -0
- package/assets/calico/calico-mini-alert.apng +0 -0
- package/assets/calico/calico-mini-crabwalk.apng +0 -0
- package/assets/calico/calico-mini-enter.apng +0 -0
- package/assets/calico/calico-mini-happy.apng +0 -0
- package/assets/calico/calico-mini-idle.apng +0 -0
- package/assets/calico/calico-mini-peek.apng +0 -0
- package/assets/calico/calico-mini-sleep.apng +0 -0
- package/assets/calico/calico-notification.apng +0 -0
- package/assets/calico/calico-react-drag.apng +0 -0
- package/assets/calico/calico-react-left.apng +0 -0
- package/assets/calico/calico-react-poke.apng +0 -0
- package/assets/calico/calico-sleeping.apng +0 -0
- package/assets/calico/calico-thinking.apng +0 -0
- package/assets/calico/calico-waking.apng +0 -0
- package/assets/calico/calico-working-building.apng +0 -0
- package/assets/calico/calico-working-carrying.apng +0 -0
- package/assets/calico/calico-working-conducting.apng +0 -0
- package/assets/calico/calico-working-juggling.apng +0 -0
- package/assets/calico/calico-working-sweeping.apng +0 -0
- package/assets/calico/calico-working-typing.apng +0 -0
- package/assets/calico/calico-yawning.apng +0 -0
- package/assets/calico.svg +324 -0
- package/assets/clawd/LICENSE +22 -0
- package/assets/clawd/clawd-about-hero.svg +202 -0
- package/assets/clawd/clawd-collapse-sleep.svg +247 -0
- package/assets/clawd/clawd-error.svg +94 -0
- package/assets/clawd/clawd-happy.svg +161 -0
- package/assets/clawd/clawd-headphones-groove.svg +194 -0
- package/assets/clawd/clawd-idle-bubble.svg +180 -0
- package/assets/clawd/clawd-idle-collapse.svg +101 -0
- package/assets/clawd/clawd-idle-doze.svg +72 -0
- package/assets/clawd/clawd-idle-follow.svg +64 -0
- package/assets/clawd/clawd-idle-living.svg +196 -0
- package/assets/clawd/clawd-idle-look.svg +115 -0
- package/assets/clawd/clawd-idle-reading.svg +252 -0
- package/assets/clawd/clawd-idle-yawn.svg +158 -0
- package/assets/clawd/clawd-mini-alert.svg +129 -0
- package/assets/clawd/clawd-mini-crabwalk.svg +76 -0
- package/assets/clawd/clawd-mini-enter-sleep.svg +64 -0
- package/assets/clawd/clawd-mini-enter.svg +114 -0
- package/assets/clawd/clawd-mini-happy.svg +124 -0
- package/assets/clawd/clawd-mini-idle.svg +83 -0
- package/assets/clawd/clawd-mini-peek.svg +82 -0
- package/assets/clawd/clawd-mini-sleep.svg +112 -0
- package/assets/clawd/clawd-mini-typing.svg +153 -0
- package/assets/clawd/clawd-notification.svg +438 -0
- package/assets/clawd/clawd-react-annoyed.svg +167 -0
- package/assets/clawd/clawd-react-double-jump.svg +229 -0
- package/assets/clawd/clawd-react-double.svg +108 -0
- package/assets/clawd/clawd-react-drag.svg +102 -0
- package/assets/clawd/clawd-react-left.svg +102 -0
- package/assets/clawd/clawd-react-right.svg +102 -0
- package/assets/clawd/clawd-sleeping.svg +118 -0
- package/assets/clawd/clawd-static-base.svg +21 -0
- package/assets/clawd/clawd-wake.svg +277 -0
- package/assets/clawd/clawd-working-building.svg +329 -0
- package/assets/clawd/clawd-working-carrying.svg +178 -0
- package/assets/clawd/clawd-working-debugger.svg +245 -0
- package/assets/clawd/clawd-working-juggling.svg +183 -0
- package/assets/clawd/clawd-working-sweeping.svg +248 -0
- package/assets/clawd/clawd-working-thinking.svg +501 -0
- package/assets/clawd/clawd-working-typing-boss.svg +307 -0
- package/assets/clawd/clawd-working-typing.svg +273 -0
- package/assets/clawd/clawd-working-ultrathink.svg +166 -0
- package/assets/clawd/clawd-working-wizard.svg +356 -0
- package/assets/clawd.svg +64 -0
- package/assets/cloudling/cloudling/cloudling-attention.svg +380 -0
- package/assets/cloudling/cloudling/cloudling-building.svg +667 -0
- package/assets/cloudling/cloudling/cloudling-carrying.svg +604 -0
- package/assets/cloudling/cloudling/cloudling-conducting.svg +616 -0
- package/assets/cloudling/cloudling/cloudling-dozing-to-sleeping.svg +578 -0
- package/assets/cloudling/cloudling/cloudling-dozing.svg +358 -0
- package/assets/cloudling/cloudling/cloudling-error.svg +428 -0
- package/assets/cloudling/cloudling/cloudling-idle-reading.svg +658 -0
- package/assets/cloudling/cloudling/cloudling-idle-to-dozing.svg +568 -0
- package/assets/cloudling/cloudling/cloudling-idle-to-sleeping.svg +811 -0
- package/assets/cloudling/cloudling/cloudling-idle.svg +255 -0
- package/assets/cloudling/cloudling/cloudling-juggling.svg +648 -0
- package/assets/cloudling/cloudling/cloudling-mini-alert.svg +390 -0
- package/assets/cloudling/cloudling/cloudling-mini-crabwalk.svg +335 -0
- package/assets/cloudling/cloudling/cloudling-mini-enter-roll-in.svg +226 -0
- package/assets/cloudling/cloudling/cloudling-mini-enter-sleep.svg +232 -0
- package/assets/cloudling/cloudling/cloudling-mini-happy.svg +371 -0
- package/assets/cloudling/cloudling/cloudling-mini-idle.svg +279 -0
- package/assets/cloudling/cloudling/cloudling-mini-peek.svg +328 -0
- package/assets/cloudling/cloudling/cloudling-mini-sleep.svg +260 -0
- package/assets/cloudling/cloudling/cloudling-mini-typing.svg +692 -0
- package/assets/cloudling/cloudling/cloudling-notification.svg +494 -0
- package/assets/cloudling/cloudling/cloudling-react-drag.svg +83 -0
- package/assets/cloudling/cloudling/cloudling-sleeping-to-idle.svg +555 -0
- package/assets/cloudling/cloudling/cloudling-sleeping.svg +500 -0
- package/assets/cloudling/cloudling/cloudling-sweeping.svg +292 -0
- package/assets/cloudling/cloudling/cloudling-thinking.svg +720 -0
- package/assets/cloudling/cloudling/cloudling-typing.svg +354 -0
- package/assets/cloudling/cloudling-attention.svg +380 -0
- package/assets/cloudling/cloudling-building.svg +667 -0
- package/assets/cloudling/cloudling-carrying.svg +604 -0
- package/assets/cloudling/cloudling-conducting.svg +616 -0
- package/assets/cloudling/cloudling-dozing-to-sleeping.svg +578 -0
- package/assets/cloudling/cloudling-dozing.svg +358 -0
- package/assets/cloudling/cloudling-error.svg +428 -0
- package/assets/cloudling/cloudling-idle-reading.svg +658 -0
- package/assets/cloudling/cloudling-idle-to-dozing.svg +568 -0
- package/assets/cloudling/cloudling-idle-to-sleeping.svg +811 -0
- package/assets/cloudling/cloudling-idle.svg +255 -0
- package/assets/cloudling/cloudling-juggling.svg +648 -0
- package/assets/cloudling/cloudling-mini-alert.svg +390 -0
- package/assets/cloudling/cloudling-mini-crabwalk.svg +335 -0
- package/assets/cloudling/cloudling-mini-enter-roll-in.svg +226 -0
- package/assets/cloudling/cloudling-mini-enter-sleep.svg +232 -0
- package/assets/cloudling/cloudling-mini-happy.svg +371 -0
- package/assets/cloudling/cloudling-mini-idle.svg +279 -0
- package/assets/cloudling/cloudling-mini-peek.svg +328 -0
- package/assets/cloudling/cloudling-mini-sleep.svg +260 -0
- package/assets/cloudling/cloudling-mini-typing.svg +692 -0
- package/assets/cloudling/cloudling-notification.svg +494 -0
- package/assets/cloudling/cloudling-react-drag.svg +83 -0
- package/assets/cloudling/cloudling-sleeping-to-idle.svg +555 -0
- package/assets/cloudling/cloudling-sleeping.svg +500 -0
- package/assets/cloudling/cloudling-sweeping.svg +292 -0
- package/assets/cloudling/cloudling-thinking.svg +720 -0
- package/assets/cloudling/cloudling-typing.svg +354 -0
- package/assets/cloudling.svg +255 -0
- package/assets/ghost-attention.svg +19 -0
- package/assets/ghost-carrying.svg +19 -0
- package/assets/ghost-collapsing.svg +19 -0
- package/assets/ghost-dozing.svg +23 -0
- package/assets/ghost-error.svg +19 -0
- package/assets/ghost-happy.svg +23 -0
- package/assets/ghost-idle-action1.svg +19 -0
- package/assets/ghost-idle-action2.svg +19 -0
- package/assets/ghost-idle-action3.svg +19 -0
- package/assets/ghost-idle.svg +11 -0
- package/assets/ghost-juggling.svg +19 -0
- package/assets/ghost-notification.svg +19 -0
- package/assets/ghost-react-double.svg +23 -0
- package/assets/ghost-react-drag.svg +23 -0
- package/assets/ghost-react-left.svg +19 -0
- package/assets/ghost-react-right.svg +19 -0
- package/assets/ghost-sleeping.svg +19 -0
- package/assets/ghost-sweeping.svg +19 -0
- package/assets/ghost-thinking.svg +19 -0
- package/assets/ghost-waking.svg +19 -0
- package/assets/ghost-working.svg +19 -0
- package/assets/ghost-yawning.svg +23 -0
- package/assets/ghost.svg +11 -0
- package/assets/robot-attention.svg +19 -0
- package/assets/robot-carrying.svg +19 -0
- package/assets/robot-collapsing.svg +19 -0
- package/assets/robot-dozing.svg +23 -0
- package/assets/robot-error.svg +19 -0
- package/assets/robot-happy.svg +23 -0
- package/assets/robot-idle-action1.svg +19 -0
- package/assets/robot-idle-action2.svg +19 -0
- package/assets/robot-idle-action3.svg +19 -0
- package/assets/robot-idle.svg +11 -0
- package/assets/robot-juggling.svg +19 -0
- package/assets/robot-notification.svg +19 -0
- package/assets/robot-react-double.svg +23 -0
- package/assets/robot-react-drag.svg +23 -0
- package/assets/robot-react-left.svg +19 -0
- package/assets/robot-react-right.svg +19 -0
- package/assets/robot-sleeping.svg +19 -0
- package/assets/robot-sweeping.svg +19 -0
- package/assets/robot-thinking.svg +19 -0
- package/assets/robot-waking.svg +19 -0
- package/assets/robot-working.svg +19 -0
- package/assets/robot-yawning.svg +23 -0
- package/assets/robot.svg +11 -0
- package/manifest.json +889 -0
- package/package.json +18 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
|
|
2
|
+
<defs>
|
|
3
|
+
<style>
|
|
4
|
+
/* 5-Second Yawn — One-shot, ends in squashed/eyes-closed pose */
|
|
5
|
+
.action-body {
|
|
6
|
+
transform-origin: 7.5px 13px;
|
|
7
|
+
animation: action-body-yawn 3.8s ease-in-out forwards;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.breathe-anim {
|
|
11
|
+
transform-origin: 7.5px 13px;
|
|
12
|
+
animation: breathe 3.2s infinite ease-in-out;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.shadow-anim {
|
|
16
|
+
transform-origin: 7.5px 15.5px;
|
|
17
|
+
animation: shadow-yawn 3.8s ease-in-out forwards;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.arm-l {
|
|
21
|
+
transform-origin: 1px 10px;
|
|
22
|
+
animation: arm-l-yawn 3.8s ease-in-out forwards;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.arm-r {
|
|
26
|
+
transform-origin: 14px 10px;
|
|
27
|
+
animation: arm-r-yawn 3.8s ease-in-out forwards;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.eyes-look {
|
|
31
|
+
animation: eye-track-yawn 3.8s ease-in-out forwards;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.eyes-blink {
|
|
35
|
+
transform-origin: 7.5px 9px;
|
|
36
|
+
animation: eye-blink-yawn 3.8s linear forwards;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.yawn-mouth {
|
|
40
|
+
transform-origin: 7.5px 11px;
|
|
41
|
+
animation: yawn-mouth-anim 3.8s ease-in-out forwards;
|
|
42
|
+
opacity: 0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.yawn-tear {
|
|
46
|
+
animation: tear-fall 3.8s ease-in-out forwards;
|
|
47
|
+
opacity: 0;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* --- Keyframes --- */
|
|
51
|
+
|
|
52
|
+
@keyframes breathe {
|
|
53
|
+
0%, 100% { transform: scale(1, 1) translate(0, 0); }
|
|
54
|
+
50% { transform: scale(1.02, 0.98) translate(0, 0.5px); }
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* Body: neutral → stretch up → peak → squash down (hold from 78%) */
|
|
58
|
+
@keyframes action-body-yawn {
|
|
59
|
+
0%, 12% { transform: scale(1, 1) translate(0, 0); }
|
|
60
|
+
32% { transform: scale(0.95, 1.05) translate(0, -1px); }
|
|
61
|
+
50% { transform: scale(0.9, 1.1) translate(0, -2px); }
|
|
62
|
+
78%, 100% { transform: scale(1.05, 0.95) translate(0, 1px); }
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@keyframes shadow-yawn {
|
|
66
|
+
0%, 12% { transform: scaleX(1); opacity: 0.5; }
|
|
67
|
+
32% { transform: scaleX(0.95); opacity: 0.45; }
|
|
68
|
+
50% { transform: scaleX(0.9); opacity: 0.4; }
|
|
69
|
+
78%, 100% { transform: scaleX(1.05); opacity: 0.55; }
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/* Eyes look slightly up during stretch, then neutral */
|
|
73
|
+
@keyframes eye-track-yawn {
|
|
74
|
+
0%, 18% { transform: translate(0, 0); }
|
|
75
|
+
32%, 68% { transform: translate(0, -1px); }
|
|
76
|
+
82%, 100% { transform: translate(0, 0); }
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* Blink once, then eyes shut for the yawn and stay shut */
|
|
80
|
+
@keyframes eye-blink-yawn {
|
|
81
|
+
0%, 18% { transform: scaleY(1); }
|
|
82
|
+
24% { transform: scaleY(0.1); }
|
|
83
|
+
30% { transform: scaleY(1); }
|
|
84
|
+
42%, 100% { transform: scaleY(0.1); }
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/* Both arms stretch outward during yawn, then relax down */
|
|
88
|
+
@keyframes arm-l-yawn {
|
|
89
|
+
0%, 12% { transform: translate(0, 0) rotate(0deg); }
|
|
90
|
+
38% { transform: translate(-1px, -2px) rotate(45deg); }
|
|
91
|
+
50% { transform: translate(-2px, -3px) rotate(80deg); }
|
|
92
|
+
78%, 100% { transform: translate(0, 1px) rotate(-15deg); }
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@keyframes arm-r-yawn {
|
|
96
|
+
0%, 12% { transform: translate(0, 0) rotate(0deg); }
|
|
97
|
+
38% { transform: translate(1px, -2px) rotate(-45deg); }
|
|
98
|
+
50% { transform: translate(2px, -3px) rotate(-80deg); }
|
|
99
|
+
78%, 100% { transform: translate(0, 1px) rotate(15deg); }
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/* Mouth opens wide then closes */
|
|
103
|
+
@keyframes yawn-mouth-anim {
|
|
104
|
+
0%, 18% { opacity: 0; transform: scale(0.1); }
|
|
105
|
+
32% { opacity: 1; transform: scale(0.5, 0.2); }
|
|
106
|
+
50% { opacity: 1; transform: scale(1.1, 1.4); }
|
|
107
|
+
68% { opacity: 1; transform: scale(0.6, 0.4); }
|
|
108
|
+
80%, 100% { opacity: 0; transform: scale(0.1); }
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* Tiny tear slides down during peak yawn */
|
|
112
|
+
@keyframes tear-fall {
|
|
113
|
+
0%, 45% { opacity: 0; transform: translateY(0); }
|
|
114
|
+
50% { opacity: 1; transform: translateY(0); }
|
|
115
|
+
68% { opacity: 1; transform: translateY(2.5px); }
|
|
116
|
+
80%, 100% { opacity: 0; transform: translateY(3px); }
|
|
117
|
+
}
|
|
118
|
+
</style>
|
|
119
|
+
</defs>
|
|
120
|
+
|
|
121
|
+
<!-- Ground Shadow -->
|
|
122
|
+
<rect id="ground-shadow" class="shadow-anim" x="3" y="15" width="9" height="1" fill="#000000" opacity="0.5"/>
|
|
123
|
+
|
|
124
|
+
<!-- Static Legs -->
|
|
125
|
+
<g id="legs" fill="#DE886D">
|
|
126
|
+
<rect x="3" y="12" width="1" height="3"/>
|
|
127
|
+
<rect x="5" y="12" width="1" height="3"/>
|
|
128
|
+
<rect x="9" y="12" width="1" height="3"/>
|
|
129
|
+
<rect x="11" y="12" width="1" height="3"/>
|
|
130
|
+
</g>
|
|
131
|
+
|
|
132
|
+
<!-- Animated Upper Body -->
|
|
133
|
+
<g class="action-body">
|
|
134
|
+
<g class="breathe-anim">
|
|
135
|
+
<!-- Torso -->
|
|
136
|
+
<rect id="torso" x="2" y="6" width="11" height="7" fill="#DE886D"/>
|
|
137
|
+
<!-- Left Arm -->
|
|
138
|
+
<g class="arm-l">
|
|
139
|
+
<rect x="0" y="9" width="2" height="2" fill="#DE886D"/>
|
|
140
|
+
</g>
|
|
141
|
+
<!-- Right Arm -->
|
|
142
|
+
<g class="arm-r">
|
|
143
|
+
<rect x="13" y="9" width="2" height="2" fill="#DE886D"/>
|
|
144
|
+
</g>
|
|
145
|
+
<!-- Yawning Mouth (hidden initially) -->
|
|
146
|
+
<rect class="yawn-mouth" x="6" y="10" width="3" height="2" fill="#000000"/>
|
|
147
|
+
<!-- Eyes -->
|
|
148
|
+
<g class="eyes-look" fill="#000000">
|
|
149
|
+
<g class="eyes-blink">
|
|
150
|
+
<rect x="4" y="8" width="1" height="2"/>
|
|
151
|
+
<rect x="10" y="8" width="1" height="2"/>
|
|
152
|
+
</g>
|
|
153
|
+
</g>
|
|
154
|
+
<!-- Tear -->
|
|
155
|
+
<rect class="yawn-tear" x="3.5" y="10" width="1" height="1" fill="#40C4FF"/>
|
|
156
|
+
</g>
|
|
157
|
+
</g>
|
|
158
|
+
</svg>
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
|
|
2
|
+
<defs>
|
|
3
|
+
<style>
|
|
4
|
+
.breathe-anim {
|
|
5
|
+
transform-origin: 7.5px 13px;
|
|
6
|
+
animation: breathe 3.2s infinite ease-in-out;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.arm-alert {
|
|
10
|
+
transform-origin: 2px 9px;
|
|
11
|
+
animation: alert-arm 4s infinite ease-in-out;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/* Normal rect eyes: visible first, hidden after blink */
|
|
15
|
+
.eyes-rect {
|
|
16
|
+
transform-origin: 7.5px 9px; /* eye vertical center for blink */
|
|
17
|
+
animation: rect-vis 4s infinite step-end, rect-move 4s infinite ease-in-out;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* xmark squint eyes: hidden first, visible after switch */
|
|
21
|
+
.eyes-xmark {
|
|
22
|
+
visibility: hidden;
|
|
23
|
+
animation: xmark-vis 4s infinite step-end;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.alert-pop {
|
|
27
|
+
animation: alert-flash 4s infinite ease-in-out;
|
|
28
|
+
opacity: 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@keyframes breathe {
|
|
32
|
+
0%, 100% { transform: scale(1, 1) translate(0, 0); }
|
|
33
|
+
50% { transform: scale(1.02, 0.98) translate(0, 0.5px); }
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@keyframes alert-arm {
|
|
37
|
+
0%, 49% { transform: rotate(0deg); }
|
|
38
|
+
51% { transform: rotate(20deg); }
|
|
39
|
+
60% { transform: rotate(-8deg); }
|
|
40
|
+
64% { transform: rotate(20deg); }
|
|
41
|
+
68% { transform: rotate(-8deg); }
|
|
42
|
+
72% { transform: rotate(20deg); }
|
|
43
|
+
76% { transform: rotate(-8deg); }
|
|
44
|
+
80% { transform: rotate(20deg); }
|
|
45
|
+
84% { transform: rotate(-8deg); }
|
|
46
|
+
88% { transform: rotate(20deg); }
|
|
47
|
+
92%, 100% { transform: rotate(0deg); }
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* Rect eyes: center, wait for exclamation, slowly look left, back, pause, blink, switch */
|
|
51
|
+
@keyframes rect-move {
|
|
52
|
+
0%, 16% { transform: translate(0, 0) scaleY(1); }
|
|
53
|
+
22%, 28% { transform: translate(-2px, 0) scaleY(1); }
|
|
54
|
+
34% { transform: translate(0, 0) scaleY(1); }
|
|
55
|
+
36% { transform: translate(0, 0) scaleY(0.1); }
|
|
56
|
+
37%, 39% { transform: translate(0, 0) scaleY(1); }
|
|
57
|
+
41% { transform: translate(0, 0) scaleY(0.1); }
|
|
58
|
+
42%, 100% { transform: translate(0, 0) scaleY(1); }
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* Rect eyes visibility: visible → hidden at 22%, back at 91% */
|
|
62
|
+
@keyframes rect-vis {
|
|
63
|
+
0% { visibility: visible; }
|
|
64
|
+
42% { visibility: hidden; }
|
|
65
|
+
91% { visibility: visible; }
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* xmark eyes visibility: hidden at start, visible at 42%, hidden at 89% */
|
|
69
|
+
@keyframes xmark-vis {
|
|
70
|
+
0% { visibility: hidden; }
|
|
71
|
+
42% { visibility: visible; }
|
|
72
|
+
89% { visibility: hidden; }
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@keyframes alert-flash {
|
|
76
|
+
0%, 8% { opacity: 0; transform: scale(0.5); }
|
|
77
|
+
12% { opacity: 1; transform: translate(0, -4px) scale(1.2); }
|
|
78
|
+
20%, 70% { opacity: 1; transform: translate(0, -4px) scale(1); }
|
|
79
|
+
85%, 100% { opacity: 0; transform: translate(0, -6px) scale(0.8); }
|
|
80
|
+
}
|
|
81
|
+
</style>
|
|
82
|
+
</defs>
|
|
83
|
+
|
|
84
|
+
<!-- Entire character leaning -->
|
|
85
|
+
<g transform="rotate(-12, 7.5, 15)">
|
|
86
|
+
|
|
87
|
+
<!-- Legs -->
|
|
88
|
+
<g fill="#DE886D">
|
|
89
|
+
<rect x="3" y="11" width="1" height="4"/>
|
|
90
|
+
<rect x="5" y="11" width="1" height="4"/>
|
|
91
|
+
<rect x="9" y="11" width="1" height="4"/>
|
|
92
|
+
<rect x="11" y="11" width="1" height="4"/>
|
|
93
|
+
</g>
|
|
94
|
+
|
|
95
|
+
<g id="body-js">
|
|
96
|
+
<g class="breathe-anim">
|
|
97
|
+
<!-- Torso -->
|
|
98
|
+
<rect x="2" y="6" width="11" height="7" fill="#DE886D"/>
|
|
99
|
+
|
|
100
|
+
<!-- Left Arm — still then shake -->
|
|
101
|
+
<g class="arm-alert">
|
|
102
|
+
<rect x="-1.5" y="9" width="4.5" height="2" fill="#DE886D"/>
|
|
103
|
+
</g>
|
|
104
|
+
|
|
105
|
+
<!-- Right Arm -->
|
|
106
|
+
<rect x="13" y="9" width="2" height="2" fill="#DE886D"/>
|
|
107
|
+
|
|
108
|
+
<!-- Phase 1: Normal rect eyes (look left at exclamation, then blink away) -->
|
|
109
|
+
<g class="eyes-rect" fill="#000000">
|
|
110
|
+
<rect x="4" y="8" width="1" height="2"/>
|
|
111
|
+
<rect x="10" y="8" width="1" height="2"/>
|
|
112
|
+
</g>
|
|
113
|
+
|
|
114
|
+
<!-- Phase 2: >< squint eyes (appear after blink) -->
|
|
115
|
+
<g class="eyes-xmark" fill="none" stroke="#000000" stroke-width="0.7" stroke-linecap="round" stroke-linejoin="round">
|
|
116
|
+
<polyline points="4,8 5.5,9 4,10"/>
|
|
117
|
+
<polyline points="11,8 9.5,9 11,10"/>
|
|
118
|
+
</g>
|
|
119
|
+
</g>
|
|
120
|
+
</g>
|
|
121
|
+
|
|
122
|
+
</g>
|
|
123
|
+
|
|
124
|
+
<!-- Exclamation mark (outside rotation = stays vertical) -->
|
|
125
|
+
<g class="alert-pop" fill="#FF3D00">
|
|
126
|
+
<rect x="-8" y="5" width="2" height="4"/>
|
|
127
|
+
<rect x="-8" y="10" width="2" height="2"/>
|
|
128
|
+
</g>
|
|
129
|
+
</svg>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
|
|
2
|
+
<defs>
|
|
3
|
+
<style>
|
|
4
|
+
.body-hunch {
|
|
5
|
+
transform-origin: 7.5px 15px;
|
|
6
|
+
animation: hunch-walk 2s infinite alternate ease-in-out;
|
|
7
|
+
}
|
|
8
|
+
.leg-1 { animation: sneak-1 0.5s infinite linear; transform-origin: top center; transform-box: fill-box; }
|
|
9
|
+
.leg-2 { animation: sneak-2 0.5s infinite linear; transform-origin: top center; transform-box: fill-box; }
|
|
10
|
+
.shadow-sneak {
|
|
11
|
+
transform-origin: 7.5px 15.5px;
|
|
12
|
+
animation: shadow-shift 2s infinite alternate ease-in-out;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* Sneaking forward and backward */
|
|
16
|
+
@keyframes hunch-walk {
|
|
17
|
+
0% { transform: translate(-2px, 1px) rotate(2deg); }
|
|
18
|
+
100% { transform: translate(3px, 1px) rotate(2deg); }
|
|
19
|
+
}
|
|
20
|
+
@keyframes shadow-shift {
|
|
21
|
+
0% { transform: translateX(-2px) scale(0.9); opacity: 0.4; }
|
|
22
|
+
100% { transform: translateX(3px) scale(0.9); opacity: 0.4; }
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* Fast tiptoe / sneak leg movement */
|
|
26
|
+
@keyframes sneak-1 {
|
|
27
|
+
0%, 100% { transform: rotate(0deg) scaleY(1); }
|
|
28
|
+
50% { transform: rotate(-25deg) scaleY(0.7); }
|
|
29
|
+
}
|
|
30
|
+
@keyframes sneak-2 {
|
|
31
|
+
0%, 100% { transform: rotate(-25deg) scaleY(0.7); }
|
|
32
|
+
50% { transform: rotate(0deg) scaleY(1); }
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* Eyes: look right (toward destination), occasionally glance back and blink */
|
|
36
|
+
.eyes-crabwalk {
|
|
37
|
+
transform-origin: 7.5px 9px;
|
|
38
|
+
animation: crab-eyes 5s infinite ease-in-out;
|
|
39
|
+
}
|
|
40
|
+
@keyframes crab-eyes {
|
|
41
|
+
0%, 55% { transform: translateX(2px) scaleY(1); }
|
|
42
|
+
62% { transform: translateX(0) scaleY(1); }
|
|
43
|
+
66% { transform: translateX(0) scaleY(0.1); }
|
|
44
|
+
70% { transform: translateX(0) scaleY(1); }
|
|
45
|
+
75% { transform: translateX(0) scaleY(0.1); }
|
|
46
|
+
80%, 85% { transform: translateX(0) scaleY(1); }
|
|
47
|
+
92%, 100% { transform: translateX(2px) scaleY(1); }
|
|
48
|
+
}
|
|
49
|
+
</style>
|
|
50
|
+
</defs>
|
|
51
|
+
|
|
52
|
+
<rect id="ground-shadow" class="shadow-sneak" x="3" y="15" width="9" height="1" fill="#000000" opacity="0.5"/>
|
|
53
|
+
|
|
54
|
+
<g class="body-hunch">
|
|
55
|
+
<g id="legs" fill="#DE886D">
|
|
56
|
+
<rect id="outer-left-leg" class="leg-1" x="3" y="13" width="1" height="2"/>
|
|
57
|
+
<rect id="inner-left-leg" class="leg-2" x="5" y="13" width="1" height="2"/>
|
|
58
|
+
<rect id="inner-right-leg" class="leg-1" x="9" y="13" width="1" height="2"/>
|
|
59
|
+
<rect id="outer-right-leg" class="leg-2" x="11" y="13" width="1" height="2"/>
|
|
60
|
+
</g>
|
|
61
|
+
|
|
62
|
+
<g id="body-color-group" fill="#DE886D">
|
|
63
|
+
<rect id="torso" x="2" y="6" width="11" height="7"/>
|
|
64
|
+
<!-- Left arm (normal pose) -->
|
|
65
|
+
<rect id="left-arm" x="0" y="9" width="2" height="2"/>
|
|
66
|
+
<!-- Right arm (normal pose, no magnifying glass) -->
|
|
67
|
+
<rect id="right-arm" x="13" y="9" width="2" height="2"/>
|
|
68
|
+
</g>
|
|
69
|
+
|
|
70
|
+
<!-- Eyes: look right, occasionally glance back + blink -->
|
|
71
|
+
<g class="eyes-crabwalk" fill="#000000">
|
|
72
|
+
<rect x="4" y="8" width="1" height="2"/>
|
|
73
|
+
<rect x="10" y="8" width="1" height="2"/>
|
|
74
|
+
</g>
|
|
75
|
+
</g>
|
|
76
|
+
</svg>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="-15 -25 45 45">
|
|
2
|
+
<style>
|
|
3
|
+
#body-js {
|
|
4
|
+
animation: bodyEnter 3.2s cubic-bezier(0.22, 1, 0.36, 1) 1 forwards;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
#left-arm {
|
|
8
|
+
transform-origin: 2px 9px;
|
|
9
|
+
animation: armEnterSleep 3.2s ease-in-out 1 forwards;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/* Eyes stay closed — wide dashes like sleeping pose */
|
|
13
|
+
|
|
14
|
+
@keyframes bodyEnter {
|
|
15
|
+
0% {
|
|
16
|
+
transform: translate(25px, 0px);
|
|
17
|
+
}
|
|
18
|
+
18% {
|
|
19
|
+
transform: translate(-3px, -0.8px);
|
|
20
|
+
}
|
|
21
|
+
24% {
|
|
22
|
+
transform: translate(1.4px, 0.4px);
|
|
23
|
+
}
|
|
24
|
+
30%,
|
|
25
|
+
100% {
|
|
26
|
+
transform: translate(0px, 0px);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* Arm extends out gently, no waving */
|
|
31
|
+
@keyframes armEnterSleep {
|
|
32
|
+
0%,
|
|
33
|
+
30% {
|
|
34
|
+
transform: scaleX(0.05) rotate(0deg);
|
|
35
|
+
}
|
|
36
|
+
50% {
|
|
37
|
+
transform: scaleX(1) rotate(0deg);
|
|
38
|
+
}
|
|
39
|
+
100% {
|
|
40
|
+
transform: scaleX(1) rotate(0deg);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
</style>
|
|
44
|
+
<g id="body-js">
|
|
45
|
+
<g transform="rotate(-12, 7.5, 15)">
|
|
46
|
+
<rect id="left-arm" x="-1.5" y="9" width="4.5" height="2" fill="#DE886D"/>
|
|
47
|
+
|
|
48
|
+
<rect x="2" y="6" width="11" height="7" fill="#DE886D"/>
|
|
49
|
+
<rect x="13" y="9" width="2" height="2" fill="#DE886D"/>
|
|
50
|
+
|
|
51
|
+
<g id="eyes-js" fill="#000000">
|
|
52
|
+
<rect x="3.5" y="8.8" width="2" height="0.4"/>
|
|
53
|
+
<rect x="9.5" y="8.8" width="2" height="0.4"/>
|
|
54
|
+
</g>
|
|
55
|
+
|
|
56
|
+
<g fill="#DE886D">
|
|
57
|
+
<rect x="3" y="11" width="1" height="4"/>
|
|
58
|
+
<rect x="5" y="11" width="1" height="4"/>
|
|
59
|
+
<rect x="9" y="11" width="1" height="4"/>
|
|
60
|
+
<rect x="11" y="11" width="1" height="4"/>
|
|
61
|
+
</g>
|
|
62
|
+
</g>
|
|
63
|
+
</g>
|
|
64
|
+
</svg>
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="-15 -25 45 45">
|
|
2
|
+
<style>
|
|
3
|
+
#body-js {
|
|
4
|
+
animation: bodyEnter 3.2s cubic-bezier(0.22, 1, 0.36, 1) 1 forwards;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
#left-arm {
|
|
8
|
+
transform-origin: 2px 9px;
|
|
9
|
+
animation: armEnterWave 3.2s ease-in-out 1 forwards;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
#eyes-js {
|
|
13
|
+
transform-origin: 7.5px 9px;
|
|
14
|
+
animation: eyesEnter 3.2s ease-in-out 1 forwards;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@keyframes bodyEnter {
|
|
18
|
+
0% {
|
|
19
|
+
transform: translate(25px, 0px);
|
|
20
|
+
}
|
|
21
|
+
18% {
|
|
22
|
+
transform: translate(-3px, -0.8px);
|
|
23
|
+
}
|
|
24
|
+
24% {
|
|
25
|
+
transform: translate(1.4px, 0.4px);
|
|
26
|
+
}
|
|
27
|
+
30% {
|
|
28
|
+
transform: translate(0px, 0px);
|
|
29
|
+
}
|
|
30
|
+
65% {
|
|
31
|
+
transform: translate(0px, 0px);
|
|
32
|
+
}
|
|
33
|
+
76% {
|
|
34
|
+
transform: translate(0.5px, 0.2px);
|
|
35
|
+
}
|
|
36
|
+
88%,
|
|
37
|
+
100% {
|
|
38
|
+
transform: translate(0px, 0px);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@keyframes armEnterWave {
|
|
43
|
+
0%,
|
|
44
|
+
30% {
|
|
45
|
+
transform: scaleX(0.05) rotate(0deg);
|
|
46
|
+
}
|
|
47
|
+
38% {
|
|
48
|
+
transform: scaleX(1.18) rotate(-8deg);
|
|
49
|
+
}
|
|
50
|
+
43% {
|
|
51
|
+
transform: scaleX(0.96) rotate(6deg);
|
|
52
|
+
}
|
|
53
|
+
48% {
|
|
54
|
+
transform: scaleX(1) rotate(-14deg);
|
|
55
|
+
}
|
|
56
|
+
53% {
|
|
57
|
+
transform: scaleX(1) rotate(16deg);
|
|
58
|
+
}
|
|
59
|
+
58% {
|
|
60
|
+
transform: scaleX(1) rotate(-12deg);
|
|
61
|
+
}
|
|
62
|
+
63% {
|
|
63
|
+
transform: scaleX(1) rotate(9deg);
|
|
64
|
+
}
|
|
65
|
+
70%,
|
|
66
|
+
100% {
|
|
67
|
+
transform: scaleX(1) rotate(0deg);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@keyframes eyesEnter {
|
|
72
|
+
0%,
|
|
73
|
+
65% {
|
|
74
|
+
transform: translateX(-1px) scaleY(1);
|
|
75
|
+
}
|
|
76
|
+
74% {
|
|
77
|
+
transform: translateX(-0.6px) scaleY(1);
|
|
78
|
+
}
|
|
79
|
+
80% {
|
|
80
|
+
transform: translateX(-0.1px) scaleY(1);
|
|
81
|
+
}
|
|
82
|
+
84% {
|
|
83
|
+
transform: translateX(0px) scaleY(0.1);
|
|
84
|
+
}
|
|
85
|
+
88% {
|
|
86
|
+
transform: translateX(0px) scaleY(1.08);
|
|
87
|
+
}
|
|
88
|
+
92%,
|
|
89
|
+
100% {
|
|
90
|
+
transform: translateX(0px) scaleY(1);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
</style>
|
|
94
|
+
<g id="body-js">
|
|
95
|
+
<g transform="rotate(-12, 7.5, 15)">
|
|
96
|
+
<rect id="left-arm" x="-1.5" y="9" width="4.5" height="2" fill="#DE886D"/>
|
|
97
|
+
|
|
98
|
+
<rect x="2" y="6" width="11" height="7" fill="#DE886D"/>
|
|
99
|
+
<rect x="13" y="9" width="2" height="2" fill="#DE886D"/>
|
|
100
|
+
|
|
101
|
+
<g id="eyes-js" fill="#000000">
|
|
102
|
+
<rect x="4" y="8" width="1" height="2"/>
|
|
103
|
+
<rect x="10" y="8" width="1" height="2"/>
|
|
104
|
+
</g>
|
|
105
|
+
|
|
106
|
+
<g fill="#DE886D">
|
|
107
|
+
<rect x="3" y="11" width="1" height="4"/>
|
|
108
|
+
<rect x="5" y="11" width="1" height="4"/>
|
|
109
|
+
<rect x="9" y="11" width="1" height="4"/>
|
|
110
|
+
<rect x="11" y="11" width="1" height="4"/>
|
|
111
|
+
</g>
|
|
112
|
+
</g>
|
|
113
|
+
</g>
|
|
114
|
+
</svg>
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
|
|
2
|
+
<defs>
|
|
3
|
+
<style>
|
|
4
|
+
.breathe-anim {
|
|
5
|
+
transform-origin: 7.5px 13px;
|
|
6
|
+
animation: breathe 3.2s infinite ease-in-out;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/* Happy arm wave — continuous, fast, fixed pivot at shoulder */
|
|
10
|
+
.arm-happy {
|
|
11
|
+
transform-origin: 2px 9px; /* Shoulder joint in SVG coords, no fill-box */
|
|
12
|
+
animation: arm-happy-wave 0.4s infinite alternate ease-in-out;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* Eyes ^^ blink — mostly ^^ with occasional full blink */
|
|
16
|
+
.eyes-happy-blink {
|
|
17
|
+
transform-origin: 7.5px 9px;
|
|
18
|
+
animation: happy-blink 3s infinite ease-in-out;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/* Pixel-Art Sparkle Animations */
|
|
22
|
+
.spark-center {
|
|
23
|
+
opacity: 0;
|
|
24
|
+
animation: flash-center 1.5s infinite step-end;
|
|
25
|
+
animation-delay: var(--delay, 0s);
|
|
26
|
+
}
|
|
27
|
+
.spark-outer {
|
|
28
|
+
opacity: 0;
|
|
29
|
+
animation: flash-outer 1.5s infinite step-end;
|
|
30
|
+
animation-delay: var(--delay, 0s);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@keyframes breathe {
|
|
34
|
+
0%, 100% { transform: scale(1, 1) translate(0, 0); }
|
|
35
|
+
50% { transform: scale(1.02, 0.98) translate(0, 0.5px); }
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* Continuous happy waving */
|
|
39
|
+
@keyframes arm-happy-wave {
|
|
40
|
+
0% { transform: rotate(22deg); }
|
|
41
|
+
100% { transform: rotate(-8deg); }
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* Happy blink: frequent blinks to look excited */
|
|
45
|
+
@keyframes happy-blink {
|
|
46
|
+
0%, 12%, 30%, 42%, 100% { transform: scaleY(1); }
|
|
47
|
+
6% { transform: scaleY(0.1); }
|
|
48
|
+
36% { transform: scaleY(0.1); }
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@keyframes flash-center {
|
|
52
|
+
0% { opacity: 0; }
|
|
53
|
+
10% { opacity: 1; }
|
|
54
|
+
30% { opacity: 0; }
|
|
55
|
+
100%{ opacity: 0; }
|
|
56
|
+
}
|
|
57
|
+
@keyframes flash-outer {
|
|
58
|
+
0% { opacity: 0; }
|
|
59
|
+
20% { opacity: 1; }
|
|
60
|
+
40% { opacity: 0; }
|
|
61
|
+
100%{ opacity: 0; }
|
|
62
|
+
}
|
|
63
|
+
</style>
|
|
64
|
+
|
|
65
|
+
<!-- Reusable Pixel Art Sparkle (from clawd-happy.svg) -->
|
|
66
|
+
<g id="px-sparkle">
|
|
67
|
+
<rect class="spark-center" x="-0.5" y="-0.5" width="1" height="1" />
|
|
68
|
+
<path class="spark-outer" d="M -0.5,-1.5 h1 v1 h-1 z
|
|
69
|
+
M -0.5,0.5 h1 v1 h-1 z
|
|
70
|
+
M -1.5,-0.5 h1 v1 h-1 z
|
|
71
|
+
M 0.5,-0.5 h1 v1 h-1 z" />
|
|
72
|
+
</g>
|
|
73
|
+
</defs>
|
|
74
|
+
|
|
75
|
+
<!-- Entire character leaning -->
|
|
76
|
+
<g transform="rotate(-12, 7.5, 15)">
|
|
77
|
+
|
|
78
|
+
<!-- Legs -->
|
|
79
|
+
<g fill="#DE886D">
|
|
80
|
+
<rect x="3" y="11" width="1" height="4"/>
|
|
81
|
+
<rect x="5" y="11" width="1" height="4"/>
|
|
82
|
+
<rect x="9" y="11" width="1" height="4"/>
|
|
83
|
+
<rect x="11" y="11" width="1" height="4"/>
|
|
84
|
+
</g>
|
|
85
|
+
|
|
86
|
+
<g id="body-js">
|
|
87
|
+
<g class="breathe-anim">
|
|
88
|
+
<!-- Torso -->
|
|
89
|
+
<rect x="2" y="6" width="11" height="7" fill="#DE886D"/>
|
|
90
|
+
|
|
91
|
+
<!-- Left Arm — happy continuous wave + flower on top -->
|
|
92
|
+
<g class="arm-happy">
|
|
93
|
+
<rect x="-1.5" y="9" width="4.5" height="2" fill="#DE886D"/>
|
|
94
|
+
<!-- Flower held at hand tip -->
|
|
95
|
+
<!-- Stem (black, from hand top to flower) -->
|
|
96
|
+
<rect x="-1.5" y="6" width="0.5" height="3" fill="#000000"/>
|
|
97
|
+
<!-- Petals (yellow pixel cross) -->
|
|
98
|
+
<rect x="-2.5" y="5" width="0.8" height="0.8" fill="#FFD700"/>
|
|
99
|
+
<rect x="-0.5" y="5" width="0.8" height="0.8" fill="#FFD700"/>
|
|
100
|
+
<rect x="-1.5" y="4.2" width="0.8" height="0.8" fill="#FFD700"/>
|
|
101
|
+
<rect x="-1.5" y="5.8" width="0.8" height="0.8" fill="#FFD700"/>
|
|
102
|
+
<!-- Center -->
|
|
103
|
+
<rect x="-1.5" y="5" width="0.8" height="0.8" fill="#FFA000"/>
|
|
104
|
+
</g>
|
|
105
|
+
|
|
106
|
+
<!-- Right Arm -->
|
|
107
|
+
<rect x="13" y="9" width="2" height="2" fill="#DE886D"/>
|
|
108
|
+
|
|
109
|
+
<!-- Eyes: ^^ happy squint with blink -->
|
|
110
|
+
<g class="eyes-happy-blink">
|
|
111
|
+
<g fill="none" stroke="#000000" stroke-width="0.7" stroke-linecap="round" stroke-linejoin="round">
|
|
112
|
+
<polyline points="3.5,9 4.5,8 5.5,9"/>
|
|
113
|
+
<polyline points="9.5,9 10.5,8 11.5,9"/>
|
|
114
|
+
</g>
|
|
115
|
+
</g>
|
|
116
|
+
</g>
|
|
117
|
+
</g>
|
|
118
|
+
</g>
|
|
119
|
+
|
|
120
|
+
<!-- Sparkles (outside rotation = stay upright, within window bounds) -->
|
|
121
|
+
<use href="#px-sparkle" x="-3" y="0" fill="#FFD700" style="--delay: 0s"/>
|
|
122
|
+
<use href="#px-sparkle" x="-6" y="6" fill="#FFA000" style="--delay: 0.4s"/>
|
|
123
|
+
<use href="#px-sparkle" x="0" y="-5" fill="#FFF59D" style="--delay: 0.8s"/>
|
|
124
|
+
</svg>
|