@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,307 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
|
|
2
|
+
<!-- ✅ FINAL · clawd 老板皮肤定稿版 (2026-04-16 鹿鹿确认)
|
|
3
|
+
定稿 = v13. 后续 v14/v15 尝试加墨镜反光滑动被否, 画蛇添足, 留档不删
|
|
4
|
+
|
|
5
|
+
动作清单:
|
|
6
|
+
- 踱步 pacing gait (左两腿 / 右两腿 交替抬, 周期 2.2s 气定神闲)
|
|
7
|
+
- body-walk 身体起伏 + 左右重心转移 (锁相踱步)
|
|
8
|
+
- 金币摆 (pivot 金币顶部挂点, rotate ±3°, 锁相 body-walk)
|
|
9
|
+
- 雪茄摆 (pivot 手握端, rotate -150°±3°, 周期 2.8s 互质自主节奏)
|
|
10
|
+
- 影子跟随 (translateX 跟 body-walk, scale+opacity 脉动)
|
|
11
|
+
- 代码烟雾 (8 符号从火星飘起, 已在 v10 修好初始帧 bug)
|
|
12
|
+
- 外层 rotate(+1°) 克制抬头气场
|
|
13
|
+
- 墨镜 / V 形金链条 / 雪茄火星明灭 (v8 / v10 继承)
|
|
14
|
+
|
|
15
|
+
v13 · v12 基础上修影子 (让影子跟身体走 + 改对相位)
|
|
16
|
+
v12 → v13 修改:
|
|
17
|
+
1. 影子加 translateX 跟随 body-walk 左右晃:
|
|
18
|
+
- 身体 25% 向右偏 +0.15 → 影子也 +0.15
|
|
19
|
+
- 身体 75% 向左偏 -0.15 → 影子也 -0.15
|
|
20
|
+
2. scale/opacity 相位修正:
|
|
21
|
+
- v12 错在: 身体抬起瞬间 (25%/75%) 影子变大+深, 反物理
|
|
22
|
+
- v13 改: 身体下沉瞬间 (0%/50%/100%) 影子变大+深 (贴地重, 压得深)
|
|
23
|
+
身体抬起瞬间 (25%/75%) 影子变小+浅 (离地轻, 影子收敛)
|
|
24
|
+
3. 幅度保持克制 (scale ±1.5%, opacity 0.5↔0.52) — 身体本身起伏就小
|
|
25
|
+
|
|
26
|
+
其他保留 v12 (踱步 pacing gait / 金币摆 / 雪茄摆 / 代码烟雾)
|
|
27
|
+
|
|
28
|
+
v11 → v12 修改:
|
|
29
|
+
1. 金币摆 (coin-sway):
|
|
30
|
+
- pivot 金币顶部挂点 (12.7, 10.9275) — 链条汇合点, 模拟从链条挂下
|
|
31
|
+
- rotate ±3°, 周期 1.1s + alternate = 来回 2.2s 锁相 body-walk
|
|
32
|
+
- 金币外层包一层 g.coin-sway, 内层保持原 translate+scale
|
|
33
|
+
2. 雪茄摆 bug 修复:
|
|
34
|
+
- v11 用 transform-box: fill-box + 百分比 origin
|
|
35
|
+
SVG <g> 上浏览器 fill-box 支持不一致, 可能导致 animation 不生效
|
|
36
|
+
- 改成 carrying/pack-swing 同款的绝对坐标 origin (1px 10.5px), 稳妥
|
|
37
|
+
- 雪茄结构重构:
|
|
38
|
+
* 去掉外层 <g transform="translate(1 10)">, rects 坐标直接 shift 到 (1..6, 10..11)
|
|
39
|
+
* 内层新增 <g transform="rotate(-150 1 10.5)"> 做基础 -150° 旋转
|
|
40
|
+
* 外层 .cigar-sway 用 CSS 叠加 ±3° 旋转, pivot 同样 (1, 10.5)
|
|
41
|
+
* 两层 rotate 绕同一 pivot, 矩阵复合 = rotate(-150 ± 3°)
|
|
42
|
+
3. 火星全局坐标 (-2.9, 8.25) 不变 (验算: (5.5, 10.5) 绕 (1, 10.5) rotate(-150) = (-2.9, 8.25))
|
|
43
|
+
codesmoke 起点保持不变
|
|
44
|
+
|
|
45
|
+
为什么金币 pivot 在顶部而不是中心:
|
|
46
|
+
物理上金币是从链条挂点吊下, 摆动轴 = 链条末端 = 金币顶部中心
|
|
47
|
+
pivot 放金币底部会看起来像"金币从底部被钉住", 反物理
|
|
48
|
+
|
|
49
|
+
为什么金币周期对齐 body-walk (2.2s) 而不是错开:
|
|
50
|
+
金币挂在身上, 走路时自然应和身体律动, 不是独立节奏
|
|
51
|
+
错开反而显得金币有自主意识, 违和
|
|
52
|
+
雪茄是"大佬主动叼的", 有自主节奏 (2.8s 互质) 才像"悠着抽"
|
|
53
|
+
|
|
54
|
+
其他保留 v11 (踱步 pacing gait / body-walk / 阴影脉动 / 代码烟雾) -->
|
|
55
|
+
|
|
56
|
+
<defs>
|
|
57
|
+
<filter id="smoke-glow" x="-100%" y="-100%" width="300%" height="300%">
|
|
58
|
+
<feGaussianBlur stdDeviation="0.3" result="glow"/>
|
|
59
|
+
<feMerge>
|
|
60
|
+
<feMergeNode in="glow"/>
|
|
61
|
+
<feMergeNode in="glow"/>
|
|
62
|
+
<feMergeNode in="SourceGraphic"/>
|
|
63
|
+
</feMerge>
|
|
64
|
+
</filter>
|
|
65
|
+
<style>
|
|
66
|
+
.body-walk {
|
|
67
|
+
transform-origin: 7.5px 15px;
|
|
68
|
+
animation: body-walk 2.2s infinite ease-in-out;
|
|
69
|
+
}
|
|
70
|
+
.step-left {
|
|
71
|
+
animation: step-left 2.2s infinite ease-in-out;
|
|
72
|
+
}
|
|
73
|
+
.step-right {
|
|
74
|
+
animation: step-right 2.2s infinite ease-in-out;
|
|
75
|
+
}
|
|
76
|
+
.coin-sway {
|
|
77
|
+
transform-origin: 12.7px 10.9275px;
|
|
78
|
+
animation: coin-sway 1.1s infinite alternate ease-in-out;
|
|
79
|
+
}
|
|
80
|
+
.cigar-sway {
|
|
81
|
+
transform-origin: 1px 10.5px;
|
|
82
|
+
animation: cigar-sway 2.8s infinite alternate ease-in-out;
|
|
83
|
+
}
|
|
84
|
+
.shadow-pulse {
|
|
85
|
+
transform-origin: 7.5px 15.5px;
|
|
86
|
+
animation: shadow-pulse 2.2s infinite ease-in-out;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@keyframes body-walk {
|
|
90
|
+
0%, 50%, 100% { transform: translate(0px, 0.5px); }
|
|
91
|
+
25% { transform: translate(0.15px, 0px); }
|
|
92
|
+
75% { transform: translate(-0.15px, 0px); }
|
|
93
|
+
}
|
|
94
|
+
@keyframes step-left {
|
|
95
|
+
0%, 15%, 35%, 100% { transform: translateY(0); }
|
|
96
|
+
25% { transform: translateY(-0.7px); }
|
|
97
|
+
}
|
|
98
|
+
@keyframes step-right {
|
|
99
|
+
0%, 65%, 85%, 100% { transform: translateY(0); }
|
|
100
|
+
75% { transform: translateY(-0.7px); }
|
|
101
|
+
}
|
|
102
|
+
@keyframes coin-sway {
|
|
103
|
+
0% { transform: rotate(-3deg); }
|
|
104
|
+
100% { transform: rotate(3deg); }
|
|
105
|
+
}
|
|
106
|
+
@keyframes cigar-sway {
|
|
107
|
+
0% { transform: rotate(-3deg); }
|
|
108
|
+
100% { transform: rotate(3deg); }
|
|
109
|
+
}
|
|
110
|
+
@keyframes shadow-pulse {
|
|
111
|
+
0%, 50%, 100% { transform: translate(0px, 0px) scale(1.015); opacity: 0.52; }
|
|
112
|
+
25% { transform: translate(0.15px, 0px) scale(1); opacity: 0.5; }
|
|
113
|
+
75% { transform: translate(-0.15px, 0px) scale(1); opacity: 0.5; }
|
|
114
|
+
}
|
|
115
|
+
</style>
|
|
116
|
+
</defs>
|
|
117
|
+
|
|
118
|
+
<rect class="shadow-pulse" id="ground-shadow" x="3" y="15" width="9" height="1" fill="#000000"/>
|
|
119
|
+
|
|
120
|
+
<g transform="rotate(1 7.5 15)">
|
|
121
|
+
<g id="master-group">
|
|
122
|
+
|
|
123
|
+
<g id="legs" fill="#DE886D">
|
|
124
|
+
<rect class="step-left" id="outer-left-leg" x="3" y="13" width="1" height="2"/>
|
|
125
|
+
<rect class="step-left" id="inner-left-leg" x="5" y="13" width="1" height="2"/>
|
|
126
|
+
<rect class="step-right" id="inner-right-leg" x="9" y="13" width="1" height="2"/>
|
|
127
|
+
<rect class="step-right" id="outer-right-leg" x="11" y="13" width="1" height="2"/>
|
|
128
|
+
</g>
|
|
129
|
+
|
|
130
|
+
<g class="body-walk">
|
|
131
|
+
|
|
132
|
+
<g id="body-parts" fill="#DE886D">
|
|
133
|
+
<rect id="torso" x="2" y="6" width="11" height="7"/>
|
|
134
|
+
<rect id="left-arm" x="0" y="9" width="2" height="2"/>
|
|
135
|
+
<rect id="right-arm" x="13" y="9" width="2" height="2"/>
|
|
136
|
+
</g>
|
|
137
|
+
|
|
138
|
+
<g id="eyes-color-group" fill="#000000">
|
|
139
|
+
<rect id="left-eye" x="4" y="8" width="1" height="2"/>
|
|
140
|
+
<rect id="right-eye" x="10" y="8" width="1" height="2"/>
|
|
141
|
+
</g>
|
|
142
|
+
|
|
143
|
+
<g id="chain" fill="none" stroke="#FFD700" stroke-width="0.15">
|
|
144
|
+
<circle cx="2.200" cy="8.800" r="0.22"/>
|
|
145
|
+
<circle cx="2.856" cy="9.207" r="0.22"/>
|
|
146
|
+
<circle cx="3.513" cy="9.607" r="0.22"/>
|
|
147
|
+
<circle cx="4.169" cy="9.994" r="0.22"/>
|
|
148
|
+
<circle cx="4.825" cy="10.361" r="0.22"/>
|
|
149
|
+
<circle cx="5.481" cy="10.705" r="0.22"/>
|
|
150
|
+
<circle cx="6.138" cy="11.019" r="0.22"/>
|
|
151
|
+
<circle cx="6.794" cy="11.302" r="0.22"/>
|
|
152
|
+
<circle cx="7.450" cy="11.550" r="0.22"/>
|
|
153
|
+
<circle cx="8.106" cy="11.764" r="0.22"/>
|
|
154
|
+
<circle cx="8.763" cy="11.944" r="0.22"/>
|
|
155
|
+
<circle cx="9.419" cy="12.092" r="0.22"/>
|
|
156
|
+
<circle cx="10.075" cy="12.211" r="0.22"/>
|
|
157
|
+
<circle cx="10.731" cy="12.306" r="0.22"/>
|
|
158
|
+
<circle cx="11.388" cy="12.382" r="0.22"/>
|
|
159
|
+
<circle cx="12.044" cy="12.444" r="0.22"/>
|
|
160
|
+
<circle cx="12.700" cy="12.500" r="0.22"/>
|
|
161
|
+
<circle cx="12.800" cy="8.800" r="0.22"/>
|
|
162
|
+
<circle cx="12.780" cy="9.716" r="0.22"/>
|
|
163
|
+
<circle cx="12.760" cy="10.565" r="0.22"/>
|
|
164
|
+
<circle cx="12.740" cy="11.305" r="0.22"/>
|
|
165
|
+
<circle cx="12.720" cy="11.936" r="0.22"/>
|
|
166
|
+
<circle cx="12.700" cy="12.500" r="0.22"/>
|
|
167
|
+
</g>
|
|
168
|
+
|
|
169
|
+
<g id="glasses" transform="translate(1.325 7.375) scale(0.65)">
|
|
170
|
+
<g fill="#000000">
|
|
171
|
+
<rect x="0" y="0" width="19" height="1"/>
|
|
172
|
+
<rect x="0" y="1" width="8" height="1"/>
|
|
173
|
+
<rect x="11" y="1" width="8" height="1"/>
|
|
174
|
+
<rect x="0" y="2" width="8" height="1"/>
|
|
175
|
+
<rect x="11" y="2" width="8" height="1"/>
|
|
176
|
+
<rect x="1" y="3" width="6" height="1"/>
|
|
177
|
+
<rect x="12" y="3" width="6" height="1"/>
|
|
178
|
+
<rect x="2" y="4" width="4" height="1"/>
|
|
179
|
+
<rect x="13" y="4" width="4" height="1"/>
|
|
180
|
+
</g>
|
|
181
|
+
<g fill="#FFFFFF">
|
|
182
|
+
<rect x="5" y="1" width="1" height="1"/>
|
|
183
|
+
<rect x="4" y="2" width="1" height="1"/>
|
|
184
|
+
<rect x="16" y="1" width="1" height="1"/>
|
|
185
|
+
<rect x="15" y="2" width="1" height="1"/>
|
|
186
|
+
</g>
|
|
187
|
+
</g>
|
|
188
|
+
|
|
189
|
+
<g class="coin-sway">
|
|
190
|
+
<g id="coin" transform="translate(11.1275 10.9275) scale(0.185)">
|
|
191
|
+
<g fill="#CC6600">
|
|
192
|
+
<rect x="6" y="0" width="5" height="1"/>
|
|
193
|
+
<rect x="4" y="1" width="9" height="1"/>
|
|
194
|
+
<rect x="3" y="2" width="11" height="1"/>
|
|
195
|
+
<rect x="2" y="3" width="13" height="1"/>
|
|
196
|
+
<rect x="1" y="4" width="15" height="2"/>
|
|
197
|
+
<rect x="0" y="6" width="17" height="5"/>
|
|
198
|
+
<rect x="1" y="11" width="15" height="2"/>
|
|
199
|
+
<rect x="2" y="13" width="13" height="1"/>
|
|
200
|
+
<rect x="3" y="14" width="11" height="1"/>
|
|
201
|
+
<rect x="4" y="15" width="9" height="1"/>
|
|
202
|
+
<rect x="6" y="16" width="5" height="1"/>
|
|
203
|
+
</g>
|
|
204
|
+
<g fill="#FFD700">
|
|
205
|
+
<rect x="7" y="1" width="3" height="1"/>
|
|
206
|
+
<rect x="5" y="2" width="7" height="1"/>
|
|
207
|
+
<rect x="4" y="3" width="9" height="1"/>
|
|
208
|
+
<rect x="3" y="4" width="11" height="1"/>
|
|
209
|
+
<rect x="2" y="5" width="13" height="2"/>
|
|
210
|
+
<rect x="1" y="7" width="15" height="3"/>
|
|
211
|
+
<rect x="2" y="10" width="13" height="2"/>
|
|
212
|
+
<rect x="3" y="12" width="11" height="1"/>
|
|
213
|
+
<rect x="4" y="13" width="9" height="1"/>
|
|
214
|
+
<rect x="5" y="14" width="7" height="1"/>
|
|
215
|
+
<rect x="7" y="15" width="3" height="1"/>
|
|
216
|
+
</g>
|
|
217
|
+
<g fill="#FF9900">
|
|
218
|
+
<rect x="8" y="4" width="1" height="9"/>
|
|
219
|
+
<rect x="6" y="5" width="5" height="1"/>
|
|
220
|
+
<rect x="6" y="6" width="1" height="1"/>
|
|
221
|
+
<rect x="6" y="7" width="2" height="1"/>
|
|
222
|
+
<rect x="7" y="8" width="1" height="1"/>
|
|
223
|
+
<rect x="9" y="8" width="1" height="1"/>
|
|
224
|
+
<rect x="9" y="9" width="2" height="1"/>
|
|
225
|
+
<rect x="10" y="10" width="1" height="1"/>
|
|
226
|
+
<rect x="6" y="11" width="5" height="1"/>
|
|
227
|
+
</g>
|
|
228
|
+
<g fill="#FFEE55">
|
|
229
|
+
<rect x="6" y="2" width="2" height="1"/>
|
|
230
|
+
<rect x="5" y="3" width="2" height="1"/>
|
|
231
|
+
</g>
|
|
232
|
+
</g>
|
|
233
|
+
</g>
|
|
234
|
+
|
|
235
|
+
<g class="cigar-sway">
|
|
236
|
+
<g id="cigarette-rotor" transform="rotate(-150 1 10.5)">
|
|
237
|
+
<rect x="1" y="10" width="1" height="1" fill="#8B4513"/>
|
|
238
|
+
<rect x="2" y="10" width="3" height="1" fill="#F0E4C8"/>
|
|
239
|
+
<rect x="5" y="10" width="1" height="1" fill="#FFD700">
|
|
240
|
+
<animate attributeName="fill"
|
|
241
|
+
values="#FFD700;#FF8800;#CC3300;#CC3300;#FFD700"
|
|
242
|
+
keyTimes="0;0.1;0.25;0.9;1"
|
|
243
|
+
dur="3s"
|
|
244
|
+
repeatCount="indefinite"/>
|
|
245
|
+
</rect>
|
|
246
|
+
</g>
|
|
247
|
+
</g>
|
|
248
|
+
|
|
249
|
+
<g id="codesmoke" font-family="Consolas, 'Courier New', Menlo, monospace"
|
|
250
|
+
font-size="1.5" font-weight="bold"
|
|
251
|
+
text-anchor="middle" dominant-baseline="central"
|
|
252
|
+
fill="#5A5A5A" filter="url(#smoke-glow)">
|
|
253
|
+
|
|
254
|
+
<text x="-2.9" y="8.25" opacity="0">{<animateTransform attributeName="transform" type="translate"
|
|
255
|
+
values="0,0; 0.5,-3; -0.3,-6; 0.4,-9; -0.2,-12"
|
|
256
|
+
keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="0s" repeatCount="indefinite"/>
|
|
257
|
+
<animate attributeName="opacity" values="0;1;1;0.5;0"
|
|
258
|
+
keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="0s" repeatCount="indefinite"/></text>
|
|
259
|
+
|
|
260
|
+
<text x="-2.9" y="8.25" opacity="0">;<animateTransform attributeName="transform" type="translate"
|
|
261
|
+
values="0,0; -0.4,-3; 0.5,-6; -0.3,-9; 0.2,-12"
|
|
262
|
+
keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="0.5s" repeatCount="indefinite"/>
|
|
263
|
+
<animate attributeName="opacity" values="0;1;1;0.5;0"
|
|
264
|
+
keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="0.5s" repeatCount="indefinite"/></text>
|
|
265
|
+
|
|
266
|
+
<text x="-2.9" y="8.25" opacity="0"><<animateTransform attributeName="transform" type="translate"
|
|
267
|
+
values="0,0; 0.3,-3; -0.5,-6; 0.2,-9; -0.4,-12"
|
|
268
|
+
keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="1s" repeatCount="indefinite"/>
|
|
269
|
+
<animate attributeName="opacity" values="0;1;1;0.5;0"
|
|
270
|
+
keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="1s" repeatCount="indefinite"/></text>
|
|
271
|
+
|
|
272
|
+
<text x="-2.9" y="8.25" opacity="0">}<animateTransform attributeName="transform" type="translate"
|
|
273
|
+
values="0,0; -0.5,-3; 0.4,-6; -0.2,-9; 0.3,-12"
|
|
274
|
+
keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="1.5s" repeatCount="indefinite"/>
|
|
275
|
+
<animate attributeName="opacity" values="0;1;1;0.5;0"
|
|
276
|
+
keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="1.5s" repeatCount="indefinite"/></text>
|
|
277
|
+
|
|
278
|
+
<text x="-2.9" y="8.25" opacity="0">=<animateTransform attributeName="transform" type="translate"
|
|
279
|
+
values="0,0; 0.6,-3; -0.2,-6; 0.5,-9; -0.3,-12"
|
|
280
|
+
keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="2s" repeatCount="indefinite"/>
|
|
281
|
+
<animate attributeName="opacity" values="0;1;1;0.5;0"
|
|
282
|
+
keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="2s" repeatCount="indefinite"/></text>
|
|
283
|
+
|
|
284
|
+
<text x="-2.9" y="8.25" opacity="0">><animateTransform attributeName="transform" type="translate"
|
|
285
|
+
values="0,0; -0.3,-3; 0.5,-6; -0.4,-9; 0.2,-12"
|
|
286
|
+
keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="2.5s" repeatCount="indefinite"/>
|
|
287
|
+
<animate attributeName="opacity" values="0;1;1;0.5;0"
|
|
288
|
+
keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="2.5s" repeatCount="indefinite"/></text>
|
|
289
|
+
|
|
290
|
+
<text x="-2.9" y="8.25" opacity="0">*<animateTransform attributeName="transform" type="translate"
|
|
291
|
+
values="0,0; 0.4,-3; -0.6,-6; 0.3,-9; -0.5,-12"
|
|
292
|
+
keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="3s" repeatCount="indefinite"/>
|
|
293
|
+
<animate attributeName="opacity" values="0;1;1;0.5;0"
|
|
294
|
+
keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="3s" repeatCount="indefinite"/></text>
|
|
295
|
+
|
|
296
|
+
<text x="-2.9" y="8.25" opacity="0">#<animateTransform attributeName="transform" type="translate"
|
|
297
|
+
values="0,0; -0.5,-3; 0.3,-6; -0.6,-9; 0.4,-12"
|
|
298
|
+
keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="3.5s" repeatCount="indefinite"/>
|
|
299
|
+
<animate attributeName="opacity" values="0;1;1;0.5;0"
|
|
300
|
+
keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="3.5s" repeatCount="indefinite"/></text>
|
|
301
|
+
|
|
302
|
+
</g>
|
|
303
|
+
|
|
304
|
+
</g>
|
|
305
|
+
</g>
|
|
306
|
+
</g>
|
|
307
|
+
</svg>
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
|
|
2
|
+
<defs>
|
|
3
|
+
<style>
|
|
4
|
+
/* ===== Body (KEEP) ===== */
|
|
5
|
+
.body-bounce {
|
|
6
|
+
transform-origin: 7.5px 15px;
|
|
7
|
+
animation: body-bounce 0.35s infinite ease-in-out;
|
|
8
|
+
}
|
|
9
|
+
.breathe {
|
|
10
|
+
transform-origin: 7.5px 13px;
|
|
11
|
+
animation: breathe 3.2s infinite ease-in-out;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/* ===== Arms (KEEP) ===== */
|
|
15
|
+
.arm-l-type {
|
|
16
|
+
transform-origin: 2px 10px;
|
|
17
|
+
animation: type-l 0.15s infinite ease-in-out;
|
|
18
|
+
}
|
|
19
|
+
.arm-r-type {
|
|
20
|
+
transform-origin: 13px 10px;
|
|
21
|
+
animation: type-r 0.12s infinite ease-in-out;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* ===== Eyes ===== */
|
|
25
|
+
.eyes-code {
|
|
26
|
+
transform-origin: 7.5px 9px;
|
|
27
|
+
animation: eye-code 10s infinite ease-in-out;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* ===== Code lines: each line grows, holds, then slides up + fades ===== */
|
|
31
|
+
.code-line {
|
|
32
|
+
transform-box: fill-box;
|
|
33
|
+
transform-origin: left center;
|
|
34
|
+
}
|
|
35
|
+
.cl1 { animation: cl1 6s infinite; }
|
|
36
|
+
.cl2 { animation: cl2 6s infinite; }
|
|
37
|
+
.cl3 { animation: cl3 6s infinite; }
|
|
38
|
+
.cl4 { animation: cl4 6s infinite; }
|
|
39
|
+
|
|
40
|
+
/* Key press flashes — different periods so they look random */
|
|
41
|
+
.key-flash { opacity: 0; }
|
|
42
|
+
.kf1 { animation: kflash 0.6s infinite; }
|
|
43
|
+
.kf2 { animation: kflash 0.8s infinite; animation-delay: -0.25s; }
|
|
44
|
+
.kf3 { animation: kflash 0.5s infinite; animation-delay: -0.1s; }
|
|
45
|
+
.kf4 { animation: kflash 0.7s infinite; animation-delay: -0.45s; }
|
|
46
|
+
.kf5 { animation: kflash 0.55s infinite; animation-delay: -0.3s; }
|
|
47
|
+
.kf6 { animation: kflash 0.9s infinite; animation-delay: -0.5s; }
|
|
48
|
+
|
|
49
|
+
/* Data particles (float up behind screen) */
|
|
50
|
+
.data-bit { opacity: 0; animation: float-data 1.5s infinite linear; }
|
|
51
|
+
.d1 { animation-delay: 0s; }
|
|
52
|
+
.d2 { animation-delay: -0.4s; }
|
|
53
|
+
.d3 { animation-delay: -0.8s; }
|
|
54
|
+
.d4 { animation-delay: -1.2s; }
|
|
55
|
+
|
|
56
|
+
/* Shadow */
|
|
57
|
+
.shadow-anim {
|
|
58
|
+
transform-origin: 7.5px 15.5px;
|
|
59
|
+
animation: shadow-bob 0.4s infinite ease-in-out;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* ==================== Keyframes ==================== */
|
|
63
|
+
|
|
64
|
+
@keyframes body-bounce {
|
|
65
|
+
0%, 100% { transform: translateY(0); }
|
|
66
|
+
50% { transform: translateY(0.8px); }
|
|
67
|
+
}
|
|
68
|
+
@keyframes breathe {
|
|
69
|
+
0%, 100% { transform: scale(1, 1) translate(0, 0); }
|
|
70
|
+
50% { transform: scale(1.02, 0.98) translate(0, 0.5px); }
|
|
71
|
+
}
|
|
72
|
+
@keyframes shadow-bob {
|
|
73
|
+
0%, 100% { transform: scaleX(1.02); opacity: 0.5; }
|
|
74
|
+
50% { transform: scaleX(1.05); opacity: 0.55; }
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
@keyframes type-l {
|
|
78
|
+
0% { transform: rotate(-5deg); }
|
|
79
|
+
25% { transform: rotate(-38deg); }
|
|
80
|
+
50% { transform: rotate(-10deg); }
|
|
81
|
+
75% { transform: rotate(-30deg); }
|
|
82
|
+
100% { transform: rotate(-5deg); }
|
|
83
|
+
}
|
|
84
|
+
@keyframes type-r {
|
|
85
|
+
0% { transform: rotate(5deg); }
|
|
86
|
+
25% { transform: rotate(38deg); }
|
|
87
|
+
50% { transform: rotate(10deg); }
|
|
88
|
+
75% { transform: rotate(30deg); }
|
|
89
|
+
100% { transform: rotate(5deg); }
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* Eyes: long keyboard squint → 2 consecutive scans → keyboard */
|
|
93
|
+
@keyframes eye-code {
|
|
94
|
+
0% { transform: translate(0, 1px) scaleY(0.6); }
|
|
95
|
+
14% { transform: translate(0, 1px) scaleY(0.6); }
|
|
96
|
+
15% { transform: translate(0, 1px) scaleY(0.1); }
|
|
97
|
+
16% { transform: translate(0, 1px) scaleY(0.6); }
|
|
98
|
+
36% { transform: translate(0, 1px) scaleY(0.6); }
|
|
99
|
+
37% { transform: translate(0, 1px) scaleY(0.1); }
|
|
100
|
+
38% { transform: translate(0, 1px) scaleY(0.6); }
|
|
101
|
+
54% { transform: translate(0, 1px) scaleY(0.6); }
|
|
102
|
+
55% { transform: translate(0, 1px) scaleY(0.1); }
|
|
103
|
+
57% { transform: translate(-1px, -0.5px) scaleY(1); }
|
|
104
|
+
62% { transform: translate(1.5px, -0.5px) scaleY(1); }
|
|
105
|
+
64% { transform: translate(-0.5px, -0.3px) scaleY(1); }
|
|
106
|
+
69% { transform: translate(1.5px, -0.5px) scaleY(1); }
|
|
107
|
+
71% { transform: translate(1px, -0.3px) scaleY(0.1); }
|
|
108
|
+
73% { transform: translate(0, 1px) scaleY(0.6); }
|
|
109
|
+
89% { transform: translate(0, 1px) scaleY(0.6); }
|
|
110
|
+
90% { transform: translate(0, 1px) scaleY(0.1); }
|
|
111
|
+
91% { transform: translate(0, 1px) scaleY(0.6); }
|
|
112
|
+
100% { transform: translate(0, 1px) scaleY(0.6); }
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/* Code lines: grow from left → hold → slide up + fade out
|
|
116
|
+
Each line staggers by ~15%. Slide-up gives "scroll" feel.
|
|
117
|
+
At 95-100% all invisible → brief blank → cycle restarts */
|
|
118
|
+
@keyframes cl1 {
|
|
119
|
+
0% { transform: scaleX(0); opacity: 0; }
|
|
120
|
+
3% { transform: scaleX(0); opacity: 1; }
|
|
121
|
+
13% { transform: scaleX(1); opacity: 1; }
|
|
122
|
+
13%, 78% { transform: scaleX(1) translateY(0); opacity: 1; }
|
|
123
|
+
88% { transform: scaleX(1) translateY(-3px); opacity: 0; }
|
|
124
|
+
89%, 100% { transform: scaleX(0) translateY(0); opacity: 0; }
|
|
125
|
+
}
|
|
126
|
+
@keyframes cl2 {
|
|
127
|
+
0%, 14% { transform: scaleX(0); opacity: 0; }
|
|
128
|
+
15% { transform: scaleX(0); opacity: 1; }
|
|
129
|
+
27% { transform: scaleX(1); opacity: 1; }
|
|
130
|
+
27%, 82% { transform: scaleX(1) translateY(0); opacity: 1; }
|
|
131
|
+
91% { transform: scaleX(1) translateY(-3px); opacity: 0; }
|
|
132
|
+
92%, 100% { transform: scaleX(0) translateY(0); opacity: 0; }
|
|
133
|
+
}
|
|
134
|
+
@keyframes cl3 {
|
|
135
|
+
0%, 29% { transform: scaleX(0); opacity: 0; }
|
|
136
|
+
30% { transform: scaleX(0); opacity: 1; }
|
|
137
|
+
42% { transform: scaleX(1); opacity: 1; }
|
|
138
|
+
42%, 85% { transform: scaleX(1) translateY(0); opacity: 1; }
|
|
139
|
+
93% { transform: scaleX(1) translateY(-3px); opacity: 0; }
|
|
140
|
+
94%, 100% { transform: scaleX(0) translateY(0); opacity: 0; }
|
|
141
|
+
}
|
|
142
|
+
@keyframes cl4 {
|
|
143
|
+
0%, 44% { transform: scaleX(0); opacity: 0; }
|
|
144
|
+
45% { transform: scaleX(0); opacity: 1; }
|
|
145
|
+
57% { transform: scaleX(1); opacity: 1; }
|
|
146
|
+
57%, 88% { transform: scaleX(1) translateY(0); opacity: 1; }
|
|
147
|
+
95% { transform: scaleX(1) translateY(-3px); opacity: 0; }
|
|
148
|
+
96%, 100% { transform: scaleX(0) translateY(0); opacity: 0; }
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/* Key flash: brief bright pulse, mostly off */
|
|
152
|
+
@keyframes kflash {
|
|
153
|
+
0%, 70%, 100% { opacity: 0; }
|
|
154
|
+
35% { opacity: 0.8; }
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
@keyframes float-data {
|
|
158
|
+
0% { transform: translateY(0) scale(0.5); opacity: 0; }
|
|
159
|
+
10% { opacity: 0.8; }
|
|
160
|
+
100% { transform: translateY(-17px) scale(1); opacity: 0; }
|
|
161
|
+
}
|
|
162
|
+
</style>
|
|
163
|
+
<g id="pixel-packet">
|
|
164
|
+
<rect x="0" y="0" width="1.5" height="1.5"/>
|
|
165
|
+
</g>
|
|
166
|
+
</defs>
|
|
167
|
+
|
|
168
|
+
<!-- Ground Shadow -->
|
|
169
|
+
<rect class="shadow-anim" x="3" y="15" width="9" height="1" fill="#000" opacity="0.5"/>
|
|
170
|
+
|
|
171
|
+
<!-- Data particles (behind screen, float up and disappear behind it) -->
|
|
172
|
+
<g fill="#40C4FF">
|
|
173
|
+
<use href="#pixel-packet" class="data-bit d1" x="3" y="7"/>
|
|
174
|
+
<use href="#pixel-packet" class="data-bit d2" x="7" y="8"/>
|
|
175
|
+
<use href="#pixel-packet" class="data-bit d3" x="11" y="7"/>
|
|
176
|
+
<use href="#pixel-packet" class="data-bit d4" x="5" y="8"/>
|
|
177
|
+
</g>
|
|
178
|
+
|
|
179
|
+
<!-- Mini Screen -->
|
|
180
|
+
<g id="screen" transform="translate(1.25, 0)">
|
|
181
|
+
<rect x="-0.5" y="-6" width="13.5" height="10.5" fill="#1E1E2E" rx="0.3"/>
|
|
182
|
+
<rect x="-0.5" y="-6" width="13.5" height="1.2" fill="#2D2D3D" rx="0.3"/>
|
|
183
|
+
<rect x="0.3" y="-5.6" width="0.5" height="0.4" fill="#FF5F56"/>
|
|
184
|
+
<rect x="1.2" y="-5.6" width="0.5" height="0.4" fill="#FFBD2E"/>
|
|
185
|
+
<rect x="2.1" y="-5.6" width="0.5" height="0.4" fill="#27C93F"/>
|
|
186
|
+
|
|
187
|
+
<!-- Code lines (indented, varying lengths = code structure) -->
|
|
188
|
+
<rect class="code-line cl1" x="0.5" y="-3.5" width="5" height="0.7" fill="#4CAF50" opacity="0.8"/>
|
|
189
|
+
<rect class="code-line cl2" x="2" y="-1.8" width="8" height="0.7" fill="#4CAF50" opacity="0.8"/>
|
|
190
|
+
<rect class="code-line cl3" x="2" y="-0.1" width="4.5" height="0.7" fill="#40C4FF" opacity="0.7"/>
|
|
191
|
+
<rect class="code-line cl4" x="0.5" y="1.6" width="2" height="0.7" fill="#FFC107" opacity="0.7"/>
|
|
192
|
+
|
|
193
|
+
</g>
|
|
194
|
+
|
|
195
|
+
<!-- Layer 1: Body -->
|
|
196
|
+
<g class="body-bounce">
|
|
197
|
+
<g class="breathe">
|
|
198
|
+
<g fill="#DE886D">
|
|
199
|
+
<rect x="3" y="13" width="1" height="2"/>
|
|
200
|
+
<rect x="5" y="13" width="1" height="2"/>
|
|
201
|
+
<rect x="9" y="13" width="1" height="2"/>
|
|
202
|
+
<rect x="11" y="13" width="1" height="2"/>
|
|
203
|
+
<rect x="2" y="6" width="11" height="7"/>
|
|
204
|
+
</g>
|
|
205
|
+
<g class="eyes-code" fill="#000">
|
|
206
|
+
<rect x="4" y="8" width="1" height="2"/>
|
|
207
|
+
<rect x="10" y="8" width="1" height="2"/>
|
|
208
|
+
</g>
|
|
209
|
+
</g>
|
|
210
|
+
</g>
|
|
211
|
+
|
|
212
|
+
<!-- Layer 2: Keyboard -->
|
|
213
|
+
<g id="keyboard" transform="translate(-0.5, 11.8)">
|
|
214
|
+
<rect x="0" y="0" width="16" height="3.2" fill="#455A64" rx="0.3"/>
|
|
215
|
+
<g fill="#78909C">
|
|
216
|
+
<rect x="0.5" y="0.4" width="1" height="0.7"/>
|
|
217
|
+
<rect x="1.8" y="0.4" width="1" height="0.7"/>
|
|
218
|
+
<rect x="3.5" y="0.4" width="6" height="0.7" rx="0.2"/>
|
|
219
|
+
<rect x="10.2" y="0.4" width="1" height="0.7"/>
|
|
220
|
+
<rect x="11.5" y="0.4" width="1" height="0.7"/>
|
|
221
|
+
<rect x="12.8" y="0.4" width="1" height="0.7"/>
|
|
222
|
+
<rect x="14.1" y="0.4" width="1.3" height="0.7"/>
|
|
223
|
+
</g>
|
|
224
|
+
<g fill="#78909C">
|
|
225
|
+
<rect x="0.8" y="1.3" width="0.9" height="0.7"/>
|
|
226
|
+
<rect x="2.0" y="1.3" width="0.9" height="0.7"/>
|
|
227
|
+
<rect x="3.2" y="1.3" width="0.9" height="0.7"/>
|
|
228
|
+
<rect x="4.4" y="1.3" width="0.9" height="0.7"/>
|
|
229
|
+
<rect x="5.6" y="1.3" width="0.9" height="0.7"/>
|
|
230
|
+
<rect x="6.8" y="1.3" width="0.9" height="0.7"/>
|
|
231
|
+
<rect x="8.0" y="1.3" width="0.9" height="0.7"/>
|
|
232
|
+
<rect x="9.2" y="1.3" width="0.9" height="0.7"/>
|
|
233
|
+
<rect x="10.4" y="1.3" width="0.9" height="0.7"/>
|
|
234
|
+
<rect x="11.6" y="1.3" width="0.9" height="0.7"/>
|
|
235
|
+
<rect x="12.8" y="1.3" width="0.9" height="0.7"/>
|
|
236
|
+
<rect x="14.0" y="1.3" width="0.9" height="0.7"/>
|
|
237
|
+
</g>
|
|
238
|
+
<g fill="#78909C">
|
|
239
|
+
<rect x="0.5" y="2.2" width="0.9" height="0.7"/>
|
|
240
|
+
<rect x="1.7" y="2.2" width="0.9" height="0.7"/>
|
|
241
|
+
<rect x="2.9" y="2.2" width="0.9" height="0.7"/>
|
|
242
|
+
<rect x="4.1" y="2.2" width="0.9" height="0.7"/>
|
|
243
|
+
<rect x="5.3" y="2.2" width="0.9" height="0.7"/>
|
|
244
|
+
<rect x="6.5" y="2.2" width="0.9" height="0.7"/>
|
|
245
|
+
<rect x="7.7" y="2.2" width="0.9" height="0.7"/>
|
|
246
|
+
<rect x="8.9" y="2.2" width="0.9" height="0.7"/>
|
|
247
|
+
<rect x="10.1" y="2.2" width="0.9" height="0.7"/>
|
|
248
|
+
<rect x="11.3" y="2.2" width="0.9" height="0.7"/>
|
|
249
|
+
<rect x="12.5" y="2.2" width="0.9" height="0.7"/>
|
|
250
|
+
<rect x="13.7" y="2.2" width="0.9" height="0.7"/>
|
|
251
|
+
<rect x="14.9" y="2.2" width="0.6" height="0.7"/>
|
|
252
|
+
</g>
|
|
253
|
+
<!-- Key press highlights (overlay on top of keys) -->
|
|
254
|
+
<g fill="#B0BEC5">
|
|
255
|
+
<rect class="key-flash kf1" x="4.4" y="1.3" width="0.9" height="0.7"/>
|
|
256
|
+
<rect class="key-flash kf2" x="9.2" y="1.3" width="0.9" height="0.7"/>
|
|
257
|
+
<rect class="key-flash kf3" x="2.9" y="2.2" width="0.9" height="0.7"/>
|
|
258
|
+
<rect class="key-flash kf4" x="7.7" y="2.2" width="0.9" height="0.7"/>
|
|
259
|
+
<rect class="key-flash kf5" x="11.6" y="1.3" width="0.9" height="0.7"/>
|
|
260
|
+
<rect class="key-flash kf6" x="3.5" y="0.4" width="6" height="0.7" rx="0.2"/>
|
|
261
|
+
</g>
|
|
262
|
+
</g>
|
|
263
|
+
|
|
264
|
+
<!-- Layer 3: Arms -->
|
|
265
|
+
<g class="body-bounce">
|
|
266
|
+
<g class="breathe">
|
|
267
|
+
<g fill="#DE886D">
|
|
268
|
+
<g class="arm-l-type"><rect x="0" y="9" width="2" height="2"/></g>
|
|
269
|
+
<g class="arm-r-type"><rect x="13" y="9" width="2" height="2"/></g>
|
|
270
|
+
</g>
|
|
271
|
+
</g>
|
|
272
|
+
</g>
|
|
273
|
+
</svg>
|