@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,83 @@
|
|
|
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
|
+
.eyes-blink {
|
|
10
|
+
transform-origin: 7.5px 9px;
|
|
11
|
+
animation: eye-blink 4s infinite ease-in-out;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
#eyes-js {
|
|
15
|
+
transition: transform 0.2s ease-out;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* Visible arm (left, facing screen) — occasional wobble */
|
|
19
|
+
.arm-wobble {
|
|
20
|
+
transform-box: fill-box;
|
|
21
|
+
transform-origin: 100% 0%; /* Shoulder joint: body-side top */
|
|
22
|
+
animation: arm-wobble 25s infinite ease-in-out;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@keyframes breathe {
|
|
26
|
+
0%, 100% { transform: scale(1, 1) translate(0, 0); }
|
|
27
|
+
50% { transform: scale(1.02, 0.98) translate(0, 0.5px); }
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@keyframes eye-blink {
|
|
31
|
+
0%, 10%, 100% { transform: scaleY(1); }
|
|
32
|
+
5% { transform: scaleY(0.1); }
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* Arm wobble: 25s cycle, still ~23s, quick wave in ~1.5s near the end */
|
|
36
|
+
@keyframes arm-wobble {
|
|
37
|
+
0%, 91%, 97%, 100% { transform: rotate(0deg); }
|
|
38
|
+
92% { transform: rotate(18deg); }
|
|
39
|
+
93.5% { transform: rotate(-5deg); }
|
|
40
|
+
95% { transform: rotate(14deg); }
|
|
41
|
+
}
|
|
42
|
+
</style>
|
|
43
|
+
</defs>
|
|
44
|
+
|
|
45
|
+
<!-- No shadow (against screen edge, no ground plane) -->
|
|
46
|
+
|
|
47
|
+
<!-- Entire character leaning: rotate -12° around feet base (7.5, 15) -->
|
|
48
|
+
<!-- Negative = counterclockwise = head tilts left toward screen = peeking pose -->
|
|
49
|
+
<g transform="rotate(-12, 7.5, 15)">
|
|
50
|
+
|
|
51
|
+
<!-- Legs (inside rotation group so they tilt with the body) -->
|
|
52
|
+
<g fill="#DE886D">
|
|
53
|
+
<rect x="3" y="11" width="1" height="4"/>
|
|
54
|
+
<rect x="5" y="11" width="1" height="4"/>
|
|
55
|
+
<rect x="9" y="11" width="1" height="4"/>
|
|
56
|
+
<rect x="11" y="11" width="1" height="4"/>
|
|
57
|
+
</g>
|
|
58
|
+
|
|
59
|
+
<!-- Upper Body (JS body-shift preserved for compatibility) -->
|
|
60
|
+
<g id="body-js">
|
|
61
|
+
<g class="breathe-anim">
|
|
62
|
+
<!-- Torso -->
|
|
63
|
+
<rect x="2" y="6" width="11" height="7" fill="#DE886D"/>
|
|
64
|
+
|
|
65
|
+
<!-- Left Arm (visible side, facing screen) — extended + wobble -->
|
|
66
|
+
<g class="arm-wobble">
|
|
67
|
+
<rect x="-1.5" y="9" width="4.5" height="2" fill="#DE886D"/>
|
|
68
|
+
</g>
|
|
69
|
+
|
|
70
|
+
<!-- Right Arm (near edge, partially hidden) — normal -->
|
|
71
|
+
<rect x="13" y="9" width="2" height="2" fill="#DE886D"/>
|
|
72
|
+
|
|
73
|
+
<!-- Eyes: JS translate wrapper + CSS blink -->
|
|
74
|
+
<g id="eyes-js" fill="#000000">
|
|
75
|
+
<g class="eyes-blink">
|
|
76
|
+
<rect x="4" y="8" width="1" height="2"/>
|
|
77
|
+
<rect x="10" y="8" width="1" height="2"/>
|
|
78
|
+
</g>
|
|
79
|
+
</g>
|
|
80
|
+
</g>
|
|
81
|
+
</g>
|
|
82
|
+
</g>
|
|
83
|
+
</svg>
|
|
@@ -0,0 +1,82 @@
|
|
|
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
|
+
.eyes-blink {
|
|
10
|
+
transform-origin: 7.5px 9px;
|
|
11
|
+
animation: eye-blink 4s infinite ease-in-out;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
#eyes-js {
|
|
15
|
+
transition: transform 0.2s ease-out;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* Arm waving — fast 3 waves then pause, loop */
|
|
19
|
+
.arm-wave {
|
|
20
|
+
transform-origin: 2px 9px;
|
|
21
|
+
animation: peek-wave 3s infinite ease-in-out;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@keyframes breathe {
|
|
25
|
+
0%, 100% { transform: scale(1, 1) translate(0, 0); }
|
|
26
|
+
50% { transform: scale(1.02, 0.98) translate(0, 0.5px); }
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@keyframes eye-blink {
|
|
30
|
+
0%, 10%, 100% { transform: scaleY(1); }
|
|
31
|
+
5% { transform: scaleY(0.1); }
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* Fast 3 waves (~0.9s) then still (~2.1s), loop */
|
|
35
|
+
@keyframes peek-wave {
|
|
36
|
+
0% { transform: rotate(0deg); }
|
|
37
|
+
5% { transform: rotate(35deg); }
|
|
38
|
+
10% { transform: rotate(-15deg); }
|
|
39
|
+
15% { transform: rotate(35deg); }
|
|
40
|
+
20% { transform: rotate(-15deg); }
|
|
41
|
+
25% { transform: rotate(35deg); }
|
|
42
|
+
30%, 100% { transform: rotate(0deg); }
|
|
43
|
+
}
|
|
44
|
+
</style>
|
|
45
|
+
</defs>
|
|
46
|
+
|
|
47
|
+
<!-- Entire character leaning -->
|
|
48
|
+
<g transform="rotate(-12, 7.5, 15)">
|
|
49
|
+
|
|
50
|
+
<!-- Legs -->
|
|
51
|
+
<g fill="#DE886D">
|
|
52
|
+
<rect x="3" y="11" width="1" height="4"/>
|
|
53
|
+
<rect x="5" y="11" width="1" height="4"/>
|
|
54
|
+
<rect x="9" y="11" width="1" height="4"/>
|
|
55
|
+
<rect x="11" y="11" width="1" height="4"/>
|
|
56
|
+
</g>
|
|
57
|
+
|
|
58
|
+
<!-- Upper Body -->
|
|
59
|
+
<g id="body-js">
|
|
60
|
+
<g class="breathe-anim">
|
|
61
|
+
<!-- Torso -->
|
|
62
|
+
<rect x="2" y="6" width="11" height="7" fill="#DE886D"/>
|
|
63
|
+
|
|
64
|
+
<!-- Left Arm — continuous big wave -->
|
|
65
|
+
<g class="arm-wave">
|
|
66
|
+
<rect x="-1.5" y="9" width="5.5" height="2" fill="#DE886D"/>
|
|
67
|
+
</g>
|
|
68
|
+
|
|
69
|
+
<!-- Right Arm -->
|
|
70
|
+
<rect x="13" y="9" width="2" height="2" fill="#DE886D"/>
|
|
71
|
+
|
|
72
|
+
<!-- Eyes: JS translate wrapper + CSS blink -->
|
|
73
|
+
<g id="eyes-js" fill="#000000">
|
|
74
|
+
<g class="eyes-blink">
|
|
75
|
+
<rect x="4" y="8" width="1" height="2"/>
|
|
76
|
+
<rect x="10" y="8" width="1" height="2"/>
|
|
77
|
+
</g>
|
|
78
|
+
</g>
|
|
79
|
+
</g>
|
|
80
|
+
</g>
|
|
81
|
+
</g>
|
|
82
|
+
</svg>
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500"
|
|
2
|
+
shape-rendering="crispEdges">
|
|
3
|
+
<defs>
|
|
4
|
+
<style>
|
|
5
|
+
/* Slower breathing for sleepy feel */
|
|
6
|
+
.breathe-anim {
|
|
7
|
+
transform-origin: 7.5px 13px;
|
|
8
|
+
animation: breathe 5s infinite ease-in-out;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/* Very slow, barely noticeable arm drift */
|
|
12
|
+
.arm-wobble {
|
|
13
|
+
transform-box: fill-box;
|
|
14
|
+
transform-origin: 100% 0%;
|
|
15
|
+
animation: arm-drift 50s infinite ease-in-out;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* Zzz particles (same style as clawd-sleeping.svg) */
|
|
19
|
+
.z-particle { opacity: 0; }
|
|
20
|
+
.z1 { animation: float-1 6s infinite ease-in-out 0s; }
|
|
21
|
+
.z2 { animation: float-2 6s infinite ease-in-out 2s; }
|
|
22
|
+
.z3 { animation: float-3 6s infinite ease-in-out 4s; }
|
|
23
|
+
|
|
24
|
+
@keyframes breathe {
|
|
25
|
+
0%, 100% { transform: scale(1, 1) translate(0, 0); }
|
|
26
|
+
50% { transform: scale(1.015, 0.985) translate(0, 0.3px); }
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@keyframes arm-drift {
|
|
30
|
+
0%, 94%, 100% { transform: rotate(0deg); }
|
|
31
|
+
96% { transform: rotate(3deg); }
|
|
32
|
+
98% { transform: rotate(-1deg); }
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* Zzz floats left and up (away from screen edge) */
|
|
36
|
+
@keyframes float-1 {
|
|
37
|
+
0% { transform: translate(-2px, 6px) scale(0.4); opacity: 0; }
|
|
38
|
+
10% { opacity: 1; }
|
|
39
|
+
30% { transform: translate(-5px, 3px) scale(0.6); }
|
|
40
|
+
50% { transform: translate(-3px, 0px) scale(0.8); }
|
|
41
|
+
70% { transform: translate(-6px, -3px) scale(1.0); }
|
|
42
|
+
90% { opacity: 0.8; }
|
|
43
|
+
100% { transform: translate(-4px, -6px) scale(1.1); opacity: 0; }
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@keyframes float-2 {
|
|
47
|
+
0% { transform: translate(-3px, 7px) scale(0.3); opacity: 0; }
|
|
48
|
+
10% { opacity: 1; }
|
|
49
|
+
30% { transform: translate(-6px, 4px) scale(0.5); }
|
|
50
|
+
50% { transform: translate(-4px, 1px) scale(0.7); }
|
|
51
|
+
70% { transform: translate(-7px, -2px) scale(0.9); }
|
|
52
|
+
90% { opacity: 0.8; }
|
|
53
|
+
100% { transform: translate(-5px, -5px) scale(1.0); opacity: 0; }
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@keyframes float-3 {
|
|
57
|
+
0% { transform: translate(-1px, 5px) scale(0.5); opacity: 0; }
|
|
58
|
+
10% { opacity: 1; }
|
|
59
|
+
30% { transform: translate(-4px, 2px) scale(0.7); }
|
|
60
|
+
50% { transform: translate(-2px, -1px) scale(0.9); }
|
|
61
|
+
70% { transform: translate(-5px, -4px) scale(1.1); }
|
|
62
|
+
90% { opacity: 0.8; }
|
|
63
|
+
100% { transform: translate(-3px, -7px) scale(1.2); opacity: 0; }
|
|
64
|
+
}
|
|
65
|
+
</style>
|
|
66
|
+
|
|
67
|
+
<g id="pixel-z">
|
|
68
|
+
<rect x="0" y="0" width="4" height="1"/>
|
|
69
|
+
<rect x="2" y="1" width="1" height="1"/>
|
|
70
|
+
<rect x="1" y="2" width="1" height="1"/>
|
|
71
|
+
<rect x="0" y="3" width="4" height="1"/>
|
|
72
|
+
</g>
|
|
73
|
+
|
|
74
|
+
<g id="pixel-z-small">
|
|
75
|
+
<rect x="0" y="0" width="3" height="1"/>
|
|
76
|
+
<rect x="1" y="1" width="1" height="1"/>
|
|
77
|
+
<rect x="0" y="2" width="3" height="1"/>
|
|
78
|
+
</g>
|
|
79
|
+
</defs>
|
|
80
|
+
|
|
81
|
+
<!-- Zzz particles -->
|
|
82
|
+
<use href="#pixel-z" class="z-particle z1" fill="#90A4AE"/>
|
|
83
|
+
<use href="#pixel-z-small" class="z-particle z2" fill="#B0BEC5"/>
|
|
84
|
+
<use href="#pixel-z" class="z-particle z3" fill="#CFD8DC"/>
|
|
85
|
+
|
|
86
|
+
<g transform="rotate(-12, 7.5, 15)">
|
|
87
|
+
<g fill="#DE886D">
|
|
88
|
+
<rect x="3" y="11" width="1" height="4"/>
|
|
89
|
+
<rect x="5" y="11" width="1" height="4"/>
|
|
90
|
+
<rect x="9" y="11" width="1" height="4"/>
|
|
91
|
+
<rect x="11" y="11" width="1" height="4"/>
|
|
92
|
+
</g>
|
|
93
|
+
|
|
94
|
+
<g id="body-js">
|
|
95
|
+
<g class="breathe-anim">
|
|
96
|
+
<rect x="2" y="6" width="11" height="7" fill="#DE886D"/>
|
|
97
|
+
|
|
98
|
+
<g class="arm-wobble">
|
|
99
|
+
<rect x="-1.5" y="9" width="4.5" height="2" fill="#DE886D"/>
|
|
100
|
+
</g>
|
|
101
|
+
|
|
102
|
+
<rect x="13" y="9" width="2" height="2" fill="#DE886D"/>
|
|
103
|
+
|
|
104
|
+
<!-- Eyes closed — wide dashes like sleeping pose -->
|
|
105
|
+
<g id="eyes-js" fill="#000000">
|
|
106
|
+
<rect x="3.5" y="8.8" width="2" height="0.4"/>
|
|
107
|
+
<rect x="9.5" y="8.8" width="2" height="0.4"/>
|
|
108
|
+
</g>
|
|
109
|
+
</g>
|
|
110
|
+
</g>
|
|
111
|
+
</g>
|
|
112
|
+
</svg>
|
|
@@ -0,0 +1,153 @@
|
|
|
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
|
+
.eyes-read {
|
|
10
|
+
animation: read-code 1.2s infinite;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
#eyes-js {
|
|
14
|
+
transition: transform 0.2s ease-out;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.arm-l-type {
|
|
18
|
+
transform-origin: 3px 10px;
|
|
19
|
+
animation: type-l 0.15s infinite ease-in-out;
|
|
20
|
+
}
|
|
21
|
+
.arm-r-type {
|
|
22
|
+
transform-origin: 12px 10px;
|
|
23
|
+
animation: type-r 0.12s infinite ease-in-out;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* Floating data packets */
|
|
27
|
+
.data-bit {
|
|
28
|
+
opacity: 0;
|
|
29
|
+
animation: float-data 1s infinite linear;
|
|
30
|
+
}
|
|
31
|
+
.d1 { animation-delay: 0.0s; transform-origin: -2px 10px; }
|
|
32
|
+
.d2 { animation-delay: 0.3s; transform-origin: 5px 12px; }
|
|
33
|
+
.d3 { animation-delay: 0.6s; transform-origin: 12px 11px; }
|
|
34
|
+
.d4 { animation-delay: 0.8s; transform-origin: 17px 9px; }
|
|
35
|
+
.d5 { animation-delay: 0.1s; transform-origin: 8px 10px; }
|
|
36
|
+
.d6 { animation-delay: 0.4s; transform-origin: 0px 11px; }
|
|
37
|
+
.d7 { animation-delay: 0.7s; transform-origin: 15px 12px; }
|
|
38
|
+
|
|
39
|
+
@keyframes breathe {
|
|
40
|
+
0%, 100% { transform: scale(1, 1) translate(0, 0); }
|
|
41
|
+
50% { transform: scale(1.02, 0.98) translate(0, 0.5px); }
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@keyframes read-code {
|
|
45
|
+
0%, 14% { transform: translate(-2px, 0); }
|
|
46
|
+
15%, 29% { transform: translate(-1.5px, 0); }
|
|
47
|
+
30%, 44% { transform: translate(-1px, 0); }
|
|
48
|
+
45%, 59% { transform: translate(-0.5px, 0); }
|
|
49
|
+
60%, 84% { transform: translate(0px, 0); }
|
|
50
|
+
85%, 100% { transform: translate(-2px, 0); }
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@keyframes type-l {
|
|
54
|
+
0% { transform: rotate(-10deg); }
|
|
55
|
+
25% { transform: rotate(15deg); }
|
|
56
|
+
50% { transform: rotate(-5deg); }
|
|
57
|
+
75% { transform: rotate(10deg); }
|
|
58
|
+
100% { transform: rotate(-10deg); }
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@keyframes type-r {
|
|
62
|
+
0% { transform: rotate(10deg); }
|
|
63
|
+
25% { transform: rotate(-15deg); }
|
|
64
|
+
50% { transform: rotate(5deg); }
|
|
65
|
+
75% { transform: rotate(-10deg); }
|
|
66
|
+
100% { transform: rotate(10deg); }
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.logo-glow {
|
|
70
|
+
animation: logo-pulse 1.5s infinite alternate ease-in-out;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@keyframes logo-pulse {
|
|
74
|
+
0% { opacity: 0.4; }
|
|
75
|
+
100% { opacity: 1; }
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* Packets float up and fade */
|
|
79
|
+
@keyframes float-data {
|
|
80
|
+
0% { transform: translateY(0) scale(0.5); opacity: 0; }
|
|
81
|
+
20% { opacity: 0.8; }
|
|
82
|
+
100% { transform: translateY(-15px) scale(1.2); opacity: 0; }
|
|
83
|
+
}
|
|
84
|
+
</style>
|
|
85
|
+
|
|
86
|
+
<!-- A small square to represent data/code -->
|
|
87
|
+
<g id="pixel-packet">
|
|
88
|
+
<rect x="0" y="0" width="1.5" height="1.5" />
|
|
89
|
+
</g>
|
|
90
|
+
</defs>
|
|
91
|
+
|
|
92
|
+
<!-- No shadow (against screen edge, no ground plane) -->
|
|
93
|
+
|
|
94
|
+
<!-- Entire character leaning: rotate -12° around feet base (7.5, 15) -->
|
|
95
|
+
<!-- Negative = counterclockwise = head tilts left toward screen = peeking pose -->
|
|
96
|
+
<g transform="rotate(-12, 7.5, 15)">
|
|
97
|
+
|
|
98
|
+
<!-- Legs (inside rotation group so they tilt with the body) -->
|
|
99
|
+
<g fill="#DE886D">
|
|
100
|
+
<rect x="3" y="11" width="1" height="4"/>
|
|
101
|
+
<rect x="5" y="11" width="1" height="4"/>
|
|
102
|
+
<rect x="9" y="11" width="1" height="4"/>
|
|
103
|
+
<rect x="11" y="11" width="1" height="4"/>
|
|
104
|
+
</g>
|
|
105
|
+
|
|
106
|
+
<!-- Upper Body (JS body-shift preserved for compatibility) -->
|
|
107
|
+
<g id="body-js">
|
|
108
|
+
<g class="breathe-anim">
|
|
109
|
+
<!-- Torso -->
|
|
110
|
+
<rect x="2" y="6" width="11" height="7" fill="#DE886D"/>
|
|
111
|
+
|
|
112
|
+
<!-- Left Arm — typing -->
|
|
113
|
+
<g class="arm-l-type">
|
|
114
|
+
<rect x="0" y="9" width="3" height="2" fill="#DE886D"/>
|
|
115
|
+
</g>
|
|
116
|
+
|
|
117
|
+
<!-- Right Arm — typing -->
|
|
118
|
+
<g class="arm-r-type">
|
|
119
|
+
<rect x="12" y="9" width="3" height="2" fill="#DE886D"/>
|
|
120
|
+
</g>
|
|
121
|
+
|
|
122
|
+
<!-- Eyes: JS translate wrapper + CSS blink -->
|
|
123
|
+
<g id="eyes-js" fill="#000000">
|
|
124
|
+
<g class="eyes-read">
|
|
125
|
+
<rect x="4" y="8" width="1" height="2"/>
|
|
126
|
+
<rect x="10" y="8" width="1" height="2"/>
|
|
127
|
+
</g>
|
|
128
|
+
</g>
|
|
129
|
+
</g>
|
|
130
|
+
</g>
|
|
131
|
+
|
|
132
|
+
<!-- Pixel Laptop (inside rotation group so it leans with Clawd) -->
|
|
133
|
+
<g id="laptop" transform="translate(3, 11)">
|
|
134
|
+
<!-- Laptop Base -->
|
|
135
|
+
<rect x="-0.5" y="4" width="8" height="1" fill="#546E7A" rx="0.5"/>
|
|
136
|
+
<!-- Screen Back -->
|
|
137
|
+
<rect x="0" y="0" width="7" height="4.5" fill="#78909C" rx="0.5"/>
|
|
138
|
+
<!-- Glowing Logo -->
|
|
139
|
+
<circle cx="3.5" cy="2" r="1.2" fill="#40C4FF" opacity="0.2" class="logo-glow"/>
|
|
140
|
+
<rect x="3" y="1.5" width="1" height="1" fill="#FFFFFF" class="logo-glow"/>
|
|
141
|
+
</g>
|
|
142
|
+
</g>
|
|
143
|
+
<!-- Data Particles floating up from behind the laptop -->
|
|
144
|
+
<g class="data-particles" fill="#40C4FF">
|
|
145
|
+
<use href="#pixel-packet" class="data-bit d1" x="-2" y="12" />
|
|
146
|
+
<use href="#pixel-packet" class="data-bit d2" x="5" y="11" />
|
|
147
|
+
<use href="#pixel-packet" class="data-bit d3" x="12" y="13" />
|
|
148
|
+
<use href="#pixel-packet" class="data-bit d4" x="17" y="11" />
|
|
149
|
+
<use href="#pixel-packet" class="data-bit d5" x="8" y="10" />
|
|
150
|
+
<use href="#pixel-packet" class="data-bit d6" x="1" y="11" />
|
|
151
|
+
<use href="#pixel-packet" class="data-bit d7" x="15" y="12" />
|
|
152
|
+
</g>
|
|
153
|
+
</svg>
|