@mumulinya167/ccm-pet-assets 2.0.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/assets/calico/calico-idle-follow.svg +324 -324
  2. package/assets/calico.svg +324 -324
  3. package/assets/clawd/LICENSE +22 -22
  4. package/assets/clawd/clawd-about-hero.svg +202 -202
  5. package/assets/clawd/clawd-collapse-sleep.svg +247 -247
  6. package/assets/clawd/clawd-error.svg +94 -94
  7. package/assets/clawd/clawd-happy.svg +160 -160
  8. package/assets/clawd/clawd-headphones-groove.svg +194 -194
  9. package/assets/clawd/clawd-idle-bubble.svg +180 -180
  10. package/assets/clawd/clawd-idle-collapse.svg +101 -101
  11. package/assets/clawd/clawd-idle-doze.svg +72 -72
  12. package/assets/clawd/clawd-idle-follow.svg +64 -64
  13. package/assets/clawd/clawd-idle-living.svg +195 -195
  14. package/assets/clawd/clawd-idle-look.svg +115 -115
  15. package/assets/clawd/clawd-idle-reading.svg +252 -252
  16. package/assets/clawd/clawd-idle-yawn.svg +158 -158
  17. package/assets/clawd/clawd-mini-alert.svg +129 -129
  18. package/assets/clawd/clawd-mini-crabwalk.svg +76 -76
  19. package/assets/clawd/clawd-mini-enter-sleep.svg +64 -64
  20. package/assets/clawd/clawd-mini-enter.svg +114 -114
  21. package/assets/clawd/clawd-mini-happy.svg +124 -124
  22. package/assets/clawd/clawd-mini-idle.svg +83 -83
  23. package/assets/clawd/clawd-mini-peek.svg +82 -82
  24. package/assets/clawd/clawd-mini-sleep.svg +112 -112
  25. package/assets/clawd/clawd-mini-typing.svg +153 -153
  26. package/assets/clawd/clawd-notification.svg +438 -438
  27. package/assets/clawd/clawd-react-annoyed.svg +167 -167
  28. package/assets/clawd/clawd-react-double-jump.svg +229 -229
  29. package/assets/clawd/clawd-react-double.svg +108 -108
  30. package/assets/clawd/clawd-react-drag.svg +102 -102
  31. package/assets/clawd/clawd-react-left.svg +102 -102
  32. package/assets/clawd/clawd-react-right.svg +102 -102
  33. package/assets/clawd/clawd-sleeping.svg +117 -117
  34. package/assets/clawd/clawd-static-base.svg +20 -20
  35. package/assets/clawd/clawd-wake.svg +277 -277
  36. package/assets/clawd/clawd-working-building.svg +329 -329
  37. package/assets/clawd/clawd-working-carrying.svg +178 -178
  38. package/assets/clawd/clawd-working-debugger.svg +245 -245
  39. package/assets/clawd/clawd-working-juggling.svg +183 -183
  40. package/assets/clawd/clawd-working-sweeping.svg +248 -248
  41. package/assets/clawd/clawd-working-thinking.svg +501 -501
  42. package/assets/clawd/clawd-working-typing-boss.svg +307 -307
  43. package/assets/clawd/clawd-working-typing.svg +273 -273
  44. package/assets/clawd/clawd-working-ultrathink.svg +166 -166
  45. package/assets/clawd/clawd-working-wizard.svg +356 -356
  46. package/assets/clawd.svg +64 -64
  47. package/assets/cloudling/cloudling/cloudling-attention.svg +379 -379
  48. package/assets/cloudling/cloudling/cloudling-building.svg +667 -667
  49. package/assets/cloudling/cloudling/cloudling-carrying.svg +604 -604
  50. package/assets/cloudling/cloudling/cloudling-conducting.svg +616 -616
  51. package/assets/cloudling/cloudling/cloudling-dozing-to-sleeping.svg +578 -578
  52. package/assets/cloudling/cloudling/cloudling-dozing.svg +358 -358
  53. package/assets/cloudling/cloudling/cloudling-error.svg +428 -428
  54. package/assets/cloudling/cloudling/cloudling-idle-reading.svg +658 -658
  55. package/assets/cloudling/cloudling/cloudling-idle-to-dozing.svg +568 -568
  56. package/assets/cloudling/cloudling/cloudling-idle-to-sleeping.svg +811 -811
  57. package/assets/cloudling/cloudling/cloudling-idle.svg +255 -255
  58. package/assets/cloudling/cloudling/cloudling-juggling.svg +648 -648
  59. package/assets/cloudling/cloudling/cloudling-mini-alert.svg +389 -389
  60. package/assets/cloudling/cloudling/cloudling-mini-crabwalk.svg +335 -335
  61. package/assets/cloudling/cloudling/cloudling-mini-enter-roll-in.svg +225 -225
  62. package/assets/cloudling/cloudling/cloudling-mini-enter-sleep.svg +231 -231
  63. package/assets/cloudling/cloudling/cloudling-mini-happy.svg +370 -370
  64. package/assets/cloudling/cloudling/cloudling-mini-idle.svg +279 -279
  65. package/assets/cloudling/cloudling/cloudling-mini-peek.svg +327 -327
  66. package/assets/cloudling/cloudling/cloudling-mini-sleep.svg +260 -260
  67. package/assets/cloudling/cloudling/cloudling-mini-typing.svg +691 -691
  68. package/assets/cloudling/cloudling/cloudling-notification.svg +493 -493
  69. package/assets/cloudling/cloudling/cloudling-react-drag.svg +83 -83
  70. package/assets/cloudling/cloudling/cloudling-sleeping-to-idle.svg +555 -555
  71. package/assets/cloudling/cloudling/cloudling-sleeping.svg +500 -500
  72. package/assets/cloudling/cloudling/cloudling-sweeping.svg +292 -292
  73. package/assets/cloudling/cloudling/cloudling-thinking.svg +719 -719
  74. package/assets/cloudling/cloudling/cloudling-typing.svg +354 -354
  75. package/assets/cloudling/cloudling-attention.svg +379 -379
  76. package/assets/cloudling/cloudling-building.svg +667 -667
  77. package/assets/cloudling/cloudling-carrying.svg +604 -604
  78. package/assets/cloudling/cloudling-conducting.svg +616 -616
  79. package/assets/cloudling/cloudling-dozing-to-sleeping.svg +578 -578
  80. package/assets/cloudling/cloudling-dozing.svg +358 -358
  81. package/assets/cloudling/cloudling-error.svg +428 -428
  82. package/assets/cloudling/cloudling-idle-reading.svg +658 -658
  83. package/assets/cloudling/cloudling-idle-to-dozing.svg +568 -568
  84. package/assets/cloudling/cloudling-idle-to-sleeping.svg +811 -811
  85. package/assets/cloudling/cloudling-idle.svg +255 -255
  86. package/assets/cloudling/cloudling-juggling.svg +648 -648
  87. package/assets/cloudling/cloudling-mini-alert.svg +389 -389
  88. package/assets/cloudling/cloudling-mini-crabwalk.svg +335 -335
  89. package/assets/cloudling/cloudling-mini-enter-roll-in.svg +225 -225
  90. package/assets/cloudling/cloudling-mini-enter-sleep.svg +231 -231
  91. package/assets/cloudling/cloudling-mini-happy.svg +370 -370
  92. package/assets/cloudling/cloudling-mini-idle.svg +279 -279
  93. package/assets/cloudling/cloudling-mini-peek.svg +327 -327
  94. package/assets/cloudling/cloudling-mini-sleep.svg +260 -260
  95. package/assets/cloudling/cloudling-mini-typing.svg +691 -691
  96. package/assets/cloudling/cloudling-notification.svg +493 -493
  97. package/assets/cloudling/cloudling-react-drag.svg +83 -83
  98. package/assets/cloudling/cloudling-sleeping-to-idle.svg +555 -555
  99. package/assets/cloudling/cloudling-sleeping.svg +500 -500
  100. package/assets/cloudling/cloudling-sweeping.svg +292 -292
  101. package/assets/cloudling/cloudling-thinking.svg +719 -719
  102. package/assets/cloudling/cloudling-typing.svg +354 -354
  103. package/assets/cloudling.svg +255 -255
  104. package/assets/ghost-attention.svg +19 -19
  105. package/assets/ghost-carrying.svg +19 -19
  106. package/assets/ghost-collapsing.svg +19 -19
  107. package/assets/ghost-dozing.svg +23 -23
  108. package/assets/ghost-error.svg +19 -19
  109. package/assets/ghost-happy.svg +23 -23
  110. package/assets/ghost-idle.svg +11 -11
  111. package/assets/ghost-juggling.svg +19 -19
  112. package/assets/ghost-notification.svg +19 -19
  113. package/assets/ghost-react-double.svg +23 -23
  114. package/assets/ghost-react-drag.svg +23 -23
  115. package/assets/ghost-react-left.svg +19 -19
  116. package/assets/ghost-react-right.svg +19 -19
  117. package/assets/ghost-sleeping.svg +19 -19
  118. package/assets/ghost-sweeping.svg +19 -19
  119. package/assets/ghost-waking.svg +19 -19
  120. package/assets/ghost-yawning.svg +23 -23
  121. package/assets/ghost.svg +11 -11
  122. package/assets/robot-attention.svg +19 -19
  123. package/assets/robot-carrying.svg +19 -19
  124. package/assets/robot-collapsing.svg +19 -19
  125. package/assets/robot-dozing.svg +23 -23
  126. package/assets/robot-error.svg +19 -19
  127. package/assets/robot-happy.svg +23 -23
  128. package/assets/robot-idle.svg +11 -11
  129. package/assets/robot-juggling.svg +19 -19
  130. package/assets/robot-notification.svg +19 -19
  131. package/assets/robot-react-double.svg +23 -23
  132. package/assets/robot-react-drag.svg +23 -23
  133. package/assets/robot-react-left.svg +19 -19
  134. package/assets/robot-react-right.svg +19 -19
  135. package/assets/robot-sleeping.svg +19 -19
  136. package/assets/robot-sweeping.svg +19 -19
  137. package/assets/robot-waking.svg +19 -19
  138. package/assets/robot-yawning.svg +23 -23
  139. package/assets/robot.svg +11 -11
  140. package/manifest.json +280 -280
  141. package/package.json +1 -1
@@ -1,194 +1,194 @@
1
- <!--
2
- clawd-experiment-headphones-groove-v6.svg
3
- v5 基础上鹿鹿两个微调:
4
- 1. 眼睛 V 字 y +0.5 (顶 8->8.5 底 9->9.5) — v5 位置偏高
5
- 2. 耳罩压缩 0.78 -> 0.85 (缩量 22%->15%), 过冲 1.04 -> 1.02 一起收 — v5 压太多
6
- -->
7
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
8
- <defs>
9
- <style>
10
- .shadow-sway {
11
- transform-box: fill-box;
12
- transform-origin: 50% 50%;
13
- animation: shadow-sway 1.6s infinite ease-in-out;
14
- }
15
-
16
- .body-sway {
17
- transform-origin: 7.5px 13px;
18
- animation: body-sway 1.6s infinite ease-in-out;
19
- }
20
-
21
- .leg-left-inner,
22
- .leg-left-outer,
23
- .leg-right-inner,
24
- .leg-right-outer {
25
- transform-box: fill-box;
26
- transform-origin: 50% 0%;
27
- }
28
- .leg-left-inner { animation: leg-left-inner 1.6s infinite ease-in-out; }
29
- .leg-left-outer { animation: leg-left-outer 1.6s infinite ease-in-out; }
30
- .leg-right-inner { animation: leg-right-inner 1.6s infinite ease-in-out; }
31
- .leg-right-outer { animation: leg-right-outer 1.6s infinite ease-in-out; }
32
-
33
- .arm-left-dance {
34
- transform-box: fill-box;
35
- transform-origin: 100% 0%;
36
- animation: arm-left-dance 1.6s infinite ease-in-out;
37
- }
38
- .arm-right-dance {
39
- transform-box: fill-box;
40
- transform-origin: 0% 0%;
41
- animation: arm-right-dance 1.6s infinite ease-in-out;
42
- }
43
-
44
- /* 耳罩 squeeze: 拍点挤压, 中性回弹过冲 */
45
- .earcup-left {
46
- transform-box: fill-box;
47
- transform-origin: 100% 50%; /* 右边缘 = 内侧, 朝身体方向收 */
48
- animation: earcup-squeeze 1.6s infinite ease-in-out;
49
- }
50
- .earcup-right {
51
- transform-box: fill-box;
52
- transform-origin: 0% 50%; /* 左边缘 = 内侧 */
53
- animation: earcup-squeeze 1.6s infinite ease-in-out;
54
- }
55
-
56
- .note-left { animation: note-left 1.6s infinite ease-out; }
57
- .note-right { animation: note-right 1.6s infinite ease-out; }
58
-
59
- @keyframes shadow-sway {
60
- 0%, 100% { transform: translateX(0) scaleX(1); opacity: 0.5; }
61
- 22%, 30% { transform: translateX(-0.5px) scaleX(0.85); opacity: 0.45; }
62
- 50% { transform: translateX(0) scaleX(1); opacity: 0.5; }
63
- 70%, 78% { transform: translateX(0.5px) scaleX(0.85); opacity: 0.45; }
64
- }
65
-
66
- @keyframes body-sway {
67
- 0%, 100% { transform: rotate(0deg) translateY(0); }
68
- 22%, 30% { transform: rotate(-6deg) translateY(0.3px); }
69
- 50% { transform: rotate(0deg) translateY(-0.2px); }
70
- 70%, 78% { transform: rotate(6deg) translateY(0.3px); }
71
- }
72
-
73
- @keyframes leg-right-inner {
74
- 0%, 100% { transform: rotate(0deg) translateY(0); }
75
- 22%, 30% { transform: rotate(-12deg) translateY(-0.2px); }
76
- 50%, 70%, 78% { transform: rotate(0deg) translateY(0); }
77
- }
78
- @keyframes leg-right-outer {
79
- 0%, 100% { transform: rotate(0deg) translateY(0); }
80
- 22%, 30% { transform: rotate(-22deg) translateY(-0.3px); }
81
- 50%, 70%, 78% { transform: rotate(0deg) translateY(0); }
82
- }
83
- @keyframes leg-left-inner {
84
- 0%, 22%, 30%, 50%, 100% { transform: rotate(0deg) translateY(0); }
85
- 70%, 78% { transform: rotate(12deg) translateY(-0.2px); }
86
- }
87
- @keyframes leg-left-outer {
88
- 0%, 22%, 30%, 50%, 100% { transform: rotate(0deg) translateY(0); }
89
- 70%, 78% { transform: rotate(22deg) translateY(-0.3px); }
90
- }
91
-
92
- @keyframes arm-left-dance {
93
- 0%, 100% { transform: rotate(0deg); }
94
- 22%, 30% { transform: rotate(-30deg); }
95
- 50% { transform: rotate(0deg); }
96
- 70%, 78% { transform: rotate(20deg); }
97
- }
98
- @keyframes arm-right-dance {
99
- 0%, 100% { transform: rotate(0deg); }
100
- 22%, 30% { transform: rotate(-20deg); }
101
- 50% { transform: rotate(0deg); }
102
- 70%, 78% { transform: rotate(30deg); }
103
- }
104
-
105
- /* 耳罩: 拍点 (左压/右压) 都 squeeze 0.78, 中性 50% 回弹过冲 1.04 */
106
- @keyframes earcup-squeeze {
107
- 0%, 100% { transform: scaleX(1); }
108
- 22%, 30% { transform: scaleX(0.85); }
109
- 50% { transform: scaleX(1.02); }
110
- 70%, 78% { transform: scaleX(0.85); }
111
- }
112
-
113
- @keyframes note-left {
114
- 0%, 14%, 42%, 100% { opacity: 0; transform: translate(0, 0); }
115
- 22% { opacity: 1; transform: translate(-0.4px, -1.2px); }
116
- 38% { opacity: 0; transform: translate(-1.6px, -3.5px); }
117
- }
118
- @keyframes note-right {
119
- 0%, 62%, 82%, 100% { opacity: 0; transform: translate(0, 0); }
120
- 70% { opacity: 1; transform: translate(0.4px, -1.2px); }
121
- 78% { opacity: 0; transform: translate(1.6px, -3.5px); }
122
- }
123
- </style>
124
-
125
- <g id="music-note" fill="#FFE066">
126
- <rect x="0" y="2" width="1" height="1"/>
127
- <rect x="1" y="0" width="1" height="3"/>
128
- <rect x="2" y="0" width="1" height="1"/>
129
- </g>
130
- </defs>
131
-
132
- <rect class="shadow-sway" x="3" y="15" width="9" height="1" fill="#000000"/>
133
-
134
- <g fill="#DE886D">
135
- <rect class="leg-left-outer" x="3" y="13" width="1" height="2"/>
136
- <rect class="leg-left-inner" x="5" y="13" width="1" height="2"/>
137
- <rect class="leg-right-inner" x="9" y="13" width="1" height="2"/>
138
- <rect class="leg-right-outer" x="11" y="13" width="1" height="2"/>
139
- </g>
140
-
141
- <g class="body-sway">
142
- <rect x="2" y="6" width="11" height="7" fill="#DE886D"/>
143
-
144
- <!-- 头带 (不参与 squeeze, 只跟随 body-sway) -->
145
- <g fill="#1D5C83">
146
- <rect x="4.9" y="2.85" width="5.05" height="0.75"/>
147
- <rect x="4.46" y="2.93" width="0.75" height="0.75"/>
148
- <rect x="9.66" y="2.93" width="0.75" height="0.75"/>
149
- <rect x="4.03" y="3.1" width="0.75" height="0.75"/>
150
- <rect x="10.11" y="3.09" width="0.75" height="0.75"/>
151
- <rect x="3.59" y="3.34" width="0.75" height="0.75"/>
152
- <rect x="10.57" y="3.33" width="0.75" height="0.75"/>
153
- <rect x="3.15" y="3.63" width="0.75" height="0.75"/>
154
- <rect x="11.02" y="3.61" width="0.75" height="0.75"/>
155
- <rect x="2.71" y="3.98" width="0.75" height="0.75"/>
156
- <rect x="11.48" y="3.96" width="0.75" height="0.75"/>
157
- <rect x="2.28" y="4.37" width="0.75" height="0.75"/>
158
- <rect x="11.94" y="4.34" width="0.75" height="0.75"/>
159
- <rect x="1.84" y="4.82" width="0.75" height="0.75"/>
160
- <rect x="12.39" y="4.78" width="0.75" height="0.75"/>
161
- <rect x="1.4" y="5.3" width="0.75" height="0.75"/>
162
- <rect x="12.85" y="5.25" width="0.75" height="0.75"/>
163
- </g>
164
-
165
- <!-- 左耳罩 (三层) -->
166
- <g class="earcup-left">
167
- <rect x="0.2" y="7" width="0.6" height="2.4" fill="#1D5C83"/>
168
- <rect x="0.8" y="6.5" width="0.6" height="3.25" fill="#256891"/>
169
- <rect x="1.4" y="6" width="0.6" height="4.05" fill="#2E7AA8"/>
170
- </g>
171
-
172
- <!-- 右耳罩 (三层) -->
173
- <g class="earcup-right">
174
- <rect x="14.2" y="7" width="0.6" height="2.4" fill="#1D5C83"/>
175
- <rect x="13.6" y="6.5" width="0.6" height="3.25" fill="#256891"/>
176
- <rect x="13" y="6" width="0.6" height="4.05" fill="#2E7AA8"/>
177
- </g>
178
-
179
- <g class="arm-left-dance">
180
- <rect x="-1" y="9" width="2" height="2" fill="#DE886D"/>
181
- </g>
182
- <g class="arm-right-dance">
183
- <rect x="14" y="9" width="2" height="2" fill="#DE886D"/>
184
- </g>
185
-
186
- <g fill="none" stroke="#000000" stroke-width="0.7" stroke-linecap="round" stroke-linejoin="round">
187
- <polyline points="3.5,8.5 4.5,9.5 5.5,8.5"/>
188
- <polyline points="9.5,8.5 10.5,9.5 11.5,8.5"/>
189
- </g>
190
- </g>
191
-
192
- <g transform="translate(-5 4)"><g class="note-left"><use href="#music-note"/></g></g>
193
- <g transform="translate(15 4)"><g class="note-right"><use href="#music-note"/></g></g>
194
- </svg>
1
+ <!--
2
+ clawd-experiment-headphones-groove-v6.svg
3
+ v5 基础上鹿鹿两个微调:
4
+ 1. 眼睛 V 字 y +0.5 (顶 8->8.5 底 9->9.5) — v5 位置偏高
5
+ 2. 耳罩压缩 0.78 -> 0.85 (缩量 22%->15%), 过冲 1.04 -> 1.02 一起收 — v5 压太多
6
+ -->
7
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
8
+ <defs>
9
+ <style>
10
+ .shadow-sway {
11
+ transform-box: fill-box;
12
+ transform-origin: 50% 50%;
13
+ animation: shadow-sway 1.6s infinite ease-in-out;
14
+ }
15
+
16
+ .body-sway {
17
+ transform-origin: 7.5px 13px;
18
+ animation: body-sway 1.6s infinite ease-in-out;
19
+ }
20
+
21
+ .leg-left-inner,
22
+ .leg-left-outer,
23
+ .leg-right-inner,
24
+ .leg-right-outer {
25
+ transform-box: fill-box;
26
+ transform-origin: 50% 0%;
27
+ }
28
+ .leg-left-inner { animation: leg-left-inner 1.6s infinite ease-in-out; }
29
+ .leg-left-outer { animation: leg-left-outer 1.6s infinite ease-in-out; }
30
+ .leg-right-inner { animation: leg-right-inner 1.6s infinite ease-in-out; }
31
+ .leg-right-outer { animation: leg-right-outer 1.6s infinite ease-in-out; }
32
+
33
+ .arm-left-dance {
34
+ transform-box: fill-box;
35
+ transform-origin: 100% 0%;
36
+ animation: arm-left-dance 1.6s infinite ease-in-out;
37
+ }
38
+ .arm-right-dance {
39
+ transform-box: fill-box;
40
+ transform-origin: 0% 0%;
41
+ animation: arm-right-dance 1.6s infinite ease-in-out;
42
+ }
43
+
44
+ /* 耳罩 squeeze: 拍点挤压, 中性回弹过冲 */
45
+ .earcup-left {
46
+ transform-box: fill-box;
47
+ transform-origin: 100% 50%; /* 右边缘 = 内侧, 朝身体方向收 */
48
+ animation: earcup-squeeze 1.6s infinite ease-in-out;
49
+ }
50
+ .earcup-right {
51
+ transform-box: fill-box;
52
+ transform-origin: 0% 50%; /* 左边缘 = 内侧 */
53
+ animation: earcup-squeeze 1.6s infinite ease-in-out;
54
+ }
55
+
56
+ .note-left { animation: note-left 1.6s infinite ease-out; }
57
+ .note-right { animation: note-right 1.6s infinite ease-out; }
58
+
59
+ @keyframes shadow-sway {
60
+ 0%, 100% { transform: translateX(0) scaleX(1); opacity: 0.5; }
61
+ 22%, 30% { transform: translateX(-0.5px) scaleX(0.85); opacity: 0.45; }
62
+ 50% { transform: translateX(0) scaleX(1); opacity: 0.5; }
63
+ 70%, 78% { transform: translateX(0.5px) scaleX(0.85); opacity: 0.45; }
64
+ }
65
+
66
+ @keyframes body-sway {
67
+ 0%, 100% { transform: rotate(0deg) translateY(0); }
68
+ 22%, 30% { transform: rotate(-6deg) translateY(0.3px); }
69
+ 50% { transform: rotate(0deg) translateY(-0.2px); }
70
+ 70%, 78% { transform: rotate(6deg) translateY(0.3px); }
71
+ }
72
+
73
+ @keyframes leg-right-inner {
74
+ 0%, 100% { transform: rotate(0deg) translateY(0); }
75
+ 22%, 30% { transform: rotate(-12deg) translateY(-0.2px); }
76
+ 50%, 70%, 78% { transform: rotate(0deg) translateY(0); }
77
+ }
78
+ @keyframes leg-right-outer {
79
+ 0%, 100% { transform: rotate(0deg) translateY(0); }
80
+ 22%, 30% { transform: rotate(-22deg) translateY(-0.3px); }
81
+ 50%, 70%, 78% { transform: rotate(0deg) translateY(0); }
82
+ }
83
+ @keyframes leg-left-inner {
84
+ 0%, 22%, 30%, 50%, 100% { transform: rotate(0deg) translateY(0); }
85
+ 70%, 78% { transform: rotate(12deg) translateY(-0.2px); }
86
+ }
87
+ @keyframes leg-left-outer {
88
+ 0%, 22%, 30%, 50%, 100% { transform: rotate(0deg) translateY(0); }
89
+ 70%, 78% { transform: rotate(22deg) translateY(-0.3px); }
90
+ }
91
+
92
+ @keyframes arm-left-dance {
93
+ 0%, 100% { transform: rotate(0deg); }
94
+ 22%, 30% { transform: rotate(-30deg); }
95
+ 50% { transform: rotate(0deg); }
96
+ 70%, 78% { transform: rotate(20deg); }
97
+ }
98
+ @keyframes arm-right-dance {
99
+ 0%, 100% { transform: rotate(0deg); }
100
+ 22%, 30% { transform: rotate(-20deg); }
101
+ 50% { transform: rotate(0deg); }
102
+ 70%, 78% { transform: rotate(30deg); }
103
+ }
104
+
105
+ /* 耳罩: 拍点 (左压/右压) 都 squeeze 0.78, 中性 50% 回弹过冲 1.04 */
106
+ @keyframes earcup-squeeze {
107
+ 0%, 100% { transform: scaleX(1); }
108
+ 22%, 30% { transform: scaleX(0.85); }
109
+ 50% { transform: scaleX(1.02); }
110
+ 70%, 78% { transform: scaleX(0.85); }
111
+ }
112
+
113
+ @keyframes note-left {
114
+ 0%, 14%, 42%, 100% { opacity: 0; transform: translate(0, 0); }
115
+ 22% { opacity: 1; transform: translate(-0.4px, -1.2px); }
116
+ 38% { opacity: 0; transform: translate(-1.6px, -3.5px); }
117
+ }
118
+ @keyframes note-right {
119
+ 0%, 62%, 82%, 100% { opacity: 0; transform: translate(0, 0); }
120
+ 70% { opacity: 1; transform: translate(0.4px, -1.2px); }
121
+ 78% { opacity: 0; transform: translate(1.6px, -3.5px); }
122
+ }
123
+ </style>
124
+
125
+ <g id="music-note" fill="#FFE066">
126
+ <rect x="0" y="2" width="1" height="1"/>
127
+ <rect x="1" y="0" width="1" height="3"/>
128
+ <rect x="2" y="0" width="1" height="1"/>
129
+ </g>
130
+ </defs>
131
+
132
+ <rect class="shadow-sway" x="3" y="15" width="9" height="1" fill="#000000"/>
133
+
134
+ <g fill="#DE886D">
135
+ <rect class="leg-left-outer" x="3" y="13" width="1" height="2"/>
136
+ <rect class="leg-left-inner" x="5" y="13" width="1" height="2"/>
137
+ <rect class="leg-right-inner" x="9" y="13" width="1" height="2"/>
138
+ <rect class="leg-right-outer" x="11" y="13" width="1" height="2"/>
139
+ </g>
140
+
141
+ <g class="body-sway">
142
+ <rect x="2" y="6" width="11" height="7" fill="#DE886D"/>
143
+
144
+ <!-- 头带 (不参与 squeeze, 只跟随 body-sway) -->
145
+ <g fill="#1D5C83">
146
+ <rect x="4.9" y="2.85" width="5.05" height="0.75"/>
147
+ <rect x="4.46" y="2.93" width="0.75" height="0.75"/>
148
+ <rect x="9.66" y="2.93" width="0.75" height="0.75"/>
149
+ <rect x="4.03" y="3.1" width="0.75" height="0.75"/>
150
+ <rect x="10.11" y="3.09" width="0.75" height="0.75"/>
151
+ <rect x="3.59" y="3.34" width="0.75" height="0.75"/>
152
+ <rect x="10.57" y="3.33" width="0.75" height="0.75"/>
153
+ <rect x="3.15" y="3.63" width="0.75" height="0.75"/>
154
+ <rect x="11.02" y="3.61" width="0.75" height="0.75"/>
155
+ <rect x="2.71" y="3.98" width="0.75" height="0.75"/>
156
+ <rect x="11.48" y="3.96" width="0.75" height="0.75"/>
157
+ <rect x="2.28" y="4.37" width="0.75" height="0.75"/>
158
+ <rect x="11.94" y="4.34" width="0.75" height="0.75"/>
159
+ <rect x="1.84" y="4.82" width="0.75" height="0.75"/>
160
+ <rect x="12.39" y="4.78" width="0.75" height="0.75"/>
161
+ <rect x="1.4" y="5.3" width="0.75" height="0.75"/>
162
+ <rect x="12.85" y="5.25" width="0.75" height="0.75"/>
163
+ </g>
164
+
165
+ <!-- 左耳罩 (三层) -->
166
+ <g class="earcup-left">
167
+ <rect x="0.2" y="7" width="0.6" height="2.4" fill="#1D5C83"/>
168
+ <rect x="0.8" y="6.5" width="0.6" height="3.25" fill="#256891"/>
169
+ <rect x="1.4" y="6" width="0.6" height="4.05" fill="#2E7AA8"/>
170
+ </g>
171
+
172
+ <!-- 右耳罩 (三层) -->
173
+ <g class="earcup-right">
174
+ <rect x="14.2" y="7" width="0.6" height="2.4" fill="#1D5C83"/>
175
+ <rect x="13.6" y="6.5" width="0.6" height="3.25" fill="#256891"/>
176
+ <rect x="13" y="6" width="0.6" height="4.05" fill="#2E7AA8"/>
177
+ </g>
178
+
179
+ <g class="arm-left-dance">
180
+ <rect x="-1" y="9" width="2" height="2" fill="#DE886D"/>
181
+ </g>
182
+ <g class="arm-right-dance">
183
+ <rect x="14" y="9" width="2" height="2" fill="#DE886D"/>
184
+ </g>
185
+
186
+ <g fill="none" stroke="#000000" stroke-width="0.7" stroke-linecap="round" stroke-linejoin="round">
187
+ <polyline points="3.5,8.5 4.5,9.5 5.5,8.5"/>
188
+ <polyline points="9.5,8.5 10.5,9.5 11.5,8.5"/>
189
+ </g>
190
+ </g>
191
+
192
+ <g transform="translate(-5 4)"><g class="note-left"><use href="#music-note"/></g></g>
193
+ <g transform="translate(15 4)"><g class="note-right"><use href="#music-note"/></g></g>
194
+ </svg>