koishi-plugin-rocom 1.0.1

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 (157) hide show
  1. package/lib/client.d.ts +53 -0
  2. package/lib/client.js +473 -0
  3. package/lib/commands/account.d.ts +5 -0
  4. package/lib/commands/account.js +205 -0
  5. package/lib/commands/admin.d.ts +2 -0
  6. package/lib/commands/admin.js +117 -0
  7. package/lib/commands/egg.d.ts +2 -0
  8. package/lib/commands/egg.js +196 -0
  9. package/lib/commands/merchant.d.ts +2 -0
  10. package/lib/commands/merchant.js +242 -0
  11. package/lib/commands/query.d.ts +2 -0
  12. package/lib/commands/query.js +1264 -0
  13. package/lib/commands/wiki.d.ts +2 -0
  14. package/lib/commands/wiki.js +11 -0
  15. package/lib/egg-service.d.ts +229 -0
  16. package/lib/egg-service.js +705 -0
  17. package/lib/index.d.ts +24 -0
  18. package/lib/index.js +3746 -0
  19. package/lib/render-templates/bind-list/index.html +51 -0
  20. package/lib/render-templates/bind-list/style.css +178 -0
  21. package/lib/render-templates/exchange-hall/css/_@astro-renderers.0KDkAyVb.css +1 -0
  22. package/lib/render-templates/exchange-hall/css/index.B3tv56V6.css +1 -0
  23. package/lib/render-templates/exchange-hall/css/index.D2LGPudy.css +1 -0
  24. package/lib/render-templates/exchange-hall/extracted.css +393 -0
  25. package/lib/render-templates/exchange-hall/index.html +99 -0
  26. package/lib/render-templates/exchange-hall/style.css +267 -0
  27. package/lib/render-templates/friendship/index.html +58 -0
  28. package/lib/render-templates/friendship/style.css +182 -0
  29. package/lib/render-templates/home/data/home_item_list.json +122 -0
  30. package/lib/render-templates/home/img/home_icon/100604.png +0 -0
  31. package/lib/render-templates/home/img/home_icon/100604_1.png +0 -0
  32. package/lib/render-templates/home/img/home_icon/100604_2.png +0 -0
  33. package/lib/render-templates/home/img/home_icon/100605.png +0 -0
  34. package/lib/render-templates/home/img/home_icon/100605_1.png +0 -0
  35. package/lib/render-templates/home/img/home_icon/100605_2.png +0 -0
  36. package/lib/render-templates/home/img/home_icon/100606.png +0 -0
  37. package/lib/render-templates/home/img/home_icon/100606_1.png +0 -0
  38. package/lib/render-templates/home/img/home_icon/100606_2.png +0 -0
  39. package/lib/render-templates/home/img/home_icon/100607.png +0 -0
  40. package/lib/render-templates/home/img/home_icon/100607_1.png +0 -0
  41. package/lib/render-templates/home/img/home_icon/100607_2.png +0 -0
  42. package/lib/render-templates/home/img/home_icon/100608.png +0 -0
  43. package/lib/render-templates/home/img/home_icon/100608_1.png +0 -0
  44. package/lib/render-templates/home/img/home_icon/100608_2.png +0 -0
  45. package/lib/render-templates/home/img/home_icon/100622.png +0 -0
  46. package/lib/render-templates/home/img/home_icon/100622_1.png +0 -0
  47. package/lib/render-templates/home/img/home_icon/100622_2.png +0 -0
  48. package/lib/render-templates/home/img/home_icon/100623.png +0 -0
  49. package/lib/render-templates/home/img/home_icon/100623_1.png +0 -0
  50. package/lib/render-templates/home/img/home_icon/100623_2.png +0 -0
  51. package/lib/render-templates/home/img/home_icon/100624.png +0 -0
  52. package/lib/render-templates/home/img/home_icon/100624_1.png +0 -0
  53. package/lib/render-templates/home/img/home_icon/100624_2.png +0 -0
  54. package/lib/render-templates/home/img/home_icon/100627.png +0 -0
  55. package/lib/render-templates/home/img/home_icon/100627_1.png +0 -0
  56. package/lib/render-templates/home/img/home_icon/100627_2.png +0 -0
  57. package/lib/render-templates/home/img/home_icon/100684.png +0 -0
  58. package/lib/render-templates/home/img/home_icon/100684_1.png +0 -0
  59. package/lib/render-templates/home/img/home_icon/100684_2.png +0 -0
  60. package/lib/render-templates/home/img/home_icon/100686.png +0 -0
  61. package/lib/render-templates/home/img/home_icon/100686_1.png +0 -0
  62. package/lib/render-templates/home/img/home_icon/100686_2.png +0 -0
  63. package/lib/render-templates/home/img/home_icon/100687.png +0 -0
  64. package/lib/render-templates/home/img/home_icon/100687_1.png +0 -0
  65. package/lib/render-templates/home/img/home_icon/100687_2.png +0 -0
  66. package/lib/render-templates/home/img/home_icon/100689.png +0 -0
  67. package/lib/render-templates/home/img/home_icon/100689_1.png +0 -0
  68. package/lib/render-templates/home/img/home_icon/100689_2.png +0 -0
  69. package/lib/render-templates/home/img/home_icon/100690.png +0 -0
  70. package/lib/render-templates/home/img/home_icon/100690_1.png +0 -0
  71. package/lib/render-templates/home/img/home_icon/100690_2.png +0 -0
  72. package/lib/render-templates/home/img/home_icon/100691.png +0 -0
  73. package/lib/render-templates/home/img/home_icon/100691_1.png +0 -0
  74. package/lib/render-templates/home/img/home_icon/100691_2.png +0 -0
  75. package/lib/render-templates/home/img/home_icon/100692.png +0 -0
  76. package/lib/render-templates/home/img/home_icon/100692_1.png +0 -0
  77. package/lib/render-templates/home/img/home_icon/100692_2.png +0 -0
  78. package/lib/render-templates/home/img/home_icon/100693.png +0 -0
  79. package/lib/render-templates/home/img/home_icon/100693_1.png +0 -0
  80. package/lib/render-templates/home/img/home_icon/100693_2.png +0 -0
  81. package/lib/render-templates/home/img/home_icon/100694.png +0 -0
  82. package/lib/render-templates/home/img/home_icon/100694_1.png +0 -0
  83. package/lib/render-templates/home/img/home_icon/100694_2.png +0 -0
  84. package/lib/render-templates/home/img/home_icon/100706.png +0 -0
  85. package/lib/render-templates/home/img/home_icon/100706_1.png +0 -0
  86. package/lib/render-templates/home/img/home_icon/100706_2.png +0 -0
  87. package/lib/render-templates/home/img/home_icon/100751.png +0 -0
  88. package/lib/render-templates/home/img/home_icon/100751_1.png +0 -0
  89. package/lib/render-templates/home/img/home_icon/100751_2.png +0 -0
  90. package/lib/render-templates/home/img/home_icon/100755.png +0 -0
  91. package/lib/render-templates/home/img/home_icon/100755_1.png +0 -0
  92. package/lib/render-templates/home/img/home_icon/100755_2.png +0 -0
  93. package/lib/render-templates/home/img/home_icon/100762.png +0 -0
  94. package/lib/render-templates/home/img/home_icon/100762_1.png +0 -0
  95. package/lib/render-templates/home/img/home_icon/100762_2.png +0 -0
  96. package/lib/render-templates/home/img/home_icon/100764.png +0 -0
  97. package/lib/render-templates/home/img/home_icon/100764_1.png +0 -0
  98. package/lib/render-templates/home/img/home_icon/100764_2.png +0 -0
  99. package/lib/render-templates/home/img/home_icon/100869.png +0 -0
  100. package/lib/render-templates/home/img/home_icon/100869_1.png +0 -0
  101. package/lib/render-templates/home/img/home_icon/100869_2.png +0 -0
  102. package/lib/render-templates/home/img/img_HomeVisit_Icon1.png +0 -0
  103. package/lib/render-templates/home/img/img_LevelReward_Bg2.png +0 -0
  104. package/lib/render-templates/home/index.html +139 -0
  105. package/lib/render-templates/home/style.css +537 -0
  106. package/lib/render-templates/ingame-shop/index.html +87 -0
  107. package/lib/render-templates/ingame-shop/style.css +220 -0
  108. package/lib/render-templates/inspect/index.html +47 -0
  109. package/lib/render-templates/inspect/style.css +149 -0
  110. package/lib/render-templates/lineup/index.html +77 -0
  111. package/lib/render-templates/lineup/style.css +255 -0
  112. package/lib/render-templates/lineup-detail/index.html +63 -0
  113. package/lib/render-templates/lineup-detail/style.css +218 -0
  114. package/lib/render-templates/menu/index.html +36 -0
  115. package/lib/render-templates/menu/style.css +126 -0
  116. package/lib/render-templates/package/index.html +115 -0
  117. package/lib/render-templates/package/style.css +352 -0
  118. package/lib/render-templates/personal-card/index.html +292 -0
  119. package/lib/render-templates/personal-card/style.css +2114 -0
  120. package/lib/render-templates/pet-wiki/index.html +118 -0
  121. package/lib/render-templates/pet-wiki/style.css +382 -0
  122. package/lib/render-templates/player-search/index.html +60 -0
  123. package/lib/render-templates/player-search/style.css +192 -0
  124. package/lib/render-templates/record/index.html +86 -0
  125. package/lib/render-templates/record/style.css +322 -0
  126. package/lib/render-templates/searcheggs/Pets.json +104328 -0
  127. package/lib/render-templates/searcheggs/candidates.html +52 -0
  128. package/lib/render-templates/searcheggs/eggs.py +599 -0
  129. package/lib/render-templates/searcheggs/index.html +198 -0
  130. package/lib/render-templates/searcheggs/pair.html +81 -0
  131. package/lib/render-templates/searcheggs/size.html +82 -0
  132. package/lib/render-templates/searcheggs/style.css +586 -0
  133. package/lib/render-templates/searcheggs/want.html +63 -0
  134. package/lib/render-templates/skill-wiki/index.html +68 -0
  135. package/lib/render-templates/skill-wiki/style.css +182 -0
  136. package/lib/render-templates/student/index.html +95 -0
  137. package/lib/render-templates/student/style.css +255 -0
  138. package/lib/render-templates/student-perks/index.html +78 -0
  139. package/lib/render-templates/student-perks/style.css +238 -0
  140. package/lib/render-templates/student-state/index.html +52 -0
  141. package/lib/render-templates/student-state/style.css +157 -0
  142. package/lib/render-templates/yuanxing-shangren/index.html +371 -0
  143. package/lib/render-templates/yuanxing-shangren/style.css +371 -0
  144. package/lib/render.d.ts +11 -0
  145. package/lib/render.js +226 -0
  146. package/lib/role-token.d.ts +27 -0
  147. package/lib/role-token.js +137 -0
  148. package/lib/send-image.d.ts +3 -0
  149. package/lib/send-image.js +135 -0
  150. package/lib/subscription-send.d.ts +8 -0
  151. package/lib/subscription-send.js +48 -0
  152. package/lib/types.d.ts +32 -0
  153. package/lib/types.js +2 -0
  154. package/lib/user.d.ts +67 -0
  155. package/lib/user.js +176 -0
  156. package/package.json +58 -0
  157. package/readme.md +575 -0
@@ -0,0 +1,115 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=1320, initial-scale=1">
6
+ <title>{{pageTitle}}</title>
7
+ <link rel="stylesheet" href="{{_res_path}}render/package/style.css">
8
+ </head>
9
+ <body class="page-out-client">
10
+ <div class="package-cont page-section-main">
11
+ <div class="package-page">
12
+ <div class="spirits-page-header">
13
+ <div class="header-user-info">
14
+ <img
15
+ class="header-avatar"
16
+ src="{{userAvatar}}"
17
+ alt="Avatar"
18
+ onerror="this.onerror=null;this.src='data:image/svg+xml,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 24 24\' fill=\'%23333\'%3E%3Ccircle cx=\'12\' cy=\'12\' r=\'12\'/%3E%3C/svg%3E'">
19
+ <div class="header-user-details">
20
+ <div class="header-user-name-row">
21
+ <span class="header-user-name">{{userName}}</span>
22
+ <span class="header-user-level">Lv. {{userLevel}}</span>
23
+ </div>
24
+ <span class="header-user-uid">ID:{{userUid}}</span>
25
+ </div>
26
+ </div>
27
+
28
+ <div class="header-center">
29
+ <div class="page-title">{{pageTitle}}</div>
30
+ <ul class="tab-nav">
31
+ {{each tabs tab}}
32
+ <li class="tab-item{{if tab.active}} cur{{/if}}">{{tab.text}}</li>
33
+ {{/each}}
34
+ </ul>
35
+ </div>
36
+
37
+ <div class="header-right">
38
+ <span class="view-status">当前查看:{{currentTab}}</span>
39
+ <span class="search-text">总计持有:{{totalCount}}</span>
40
+ <span class="search-text">当前账号:{{accountLabel}}</span>
41
+ </div>
42
+ </div>
43
+
44
+ <main class="spirits-content">
45
+ <div class="spirits-grid{{if !pets || pets.length === 0}} is-empty{{/if}}">
46
+ {{if pets && pets.length > 0}}
47
+ {{each pets pet}}
48
+ <div class="spirit-card">
49
+ <div class="spirit-card-header">
50
+ <div class="element-icons">
51
+ {{if pet.elementIcons && pet.elementIcons.length > 0}}
52
+ {{each pet.elementIcons icon}}
53
+ <div class="element-icon">
54
+ <img src="{{icon.src}}" alt="{{icon.name}}" onerror="this.style.display='none'">
55
+ </div>
56
+ {{/each}}
57
+ {{else}}
58
+ <div class="element-icon element-icon-empty">?</div>
59
+ {{/if}}
60
+ </div>
61
+ <div class="spirit-level"><span>LV.{{pet.level}}</span></div>
62
+ </div>
63
+
64
+ <div class="spirit-image">
65
+ {{if pet.badgeImage}}
66
+ <img class="spirit-subset-badge" src="{{pet.badgeImage}}" alt="{{currentTab}}" onerror="this.style.display='none'">
67
+ {{/if}}
68
+ <div class="helper-image">
69
+ <img
70
+ alt="{{pet.name}}"
71
+ class="helper-image-pic"
72
+ src="{{pet.pet_img_url || pet.imageUrl || fallbackPetImage}}"
73
+ loading="eager"
74
+ onerror="this.onerror=null;this.src='{{fallbackPetImage}}'">
75
+ </div>
76
+ </div>
77
+
78
+ <div class="stats-spirit-name">
79
+ <span>{{pet.name}}</span>
80
+ {{if pet.custom_name}}
81
+ <span class="custom-name">{{pet.custom_name}}</span>
82
+ {{/if}}
83
+ </div>
84
+ </div>
85
+ {{/each}}
86
+
87
+ {{each emptySlots slot}}
88
+ <div class="spirit-card is-empty">
89
+ <div class="spirit-card-header">
90
+ <div class="element-icons"></div>
91
+ <div class="spirit-level"><span>--</span></div>
92
+ </div>
93
+ <div class="spirit-image spirit-image-empty">
94
+ <div class="spirit-empty-copy">空位</div>
95
+ </div>
96
+ <div class="stats-spirit-name"><span>待补位</span></div>
97
+ </div>
98
+ {{/each}}
99
+ {{else}}
100
+ <div class="empty-card">
101
+ <div class="empty-card-title">这一页暂时没有精灵</div>
102
+ <div class="empty-card-desc">试试切换分类或页码重新查询</div>
103
+ </div>
104
+ {{/if}}
105
+ </div>
106
+ </main>
107
+
108
+ <div class="pagination-footer">
109
+ <span class="pagination-text">第 {{currentPage}} 页,共 {{totalPages}} 页,每页 {{pageSize}} 只精灵</span>
110
+ <span class="pagination-hint">{{commandHint}}</span>
111
+ </div>
112
+ </div>
113
+ </div>
114
+ </body>
115
+ </html>
@@ -0,0 +1,352 @@
1
+ @font-face {
2
+ font-family: 'mianfeiziti';
3
+ src: url('../../ttf/dundun.xHd_Ee5-.woff2') format('woff2'),
4
+ url('../../ttf/dundun.BCbg_KoL.ttf') format('truetype');
5
+ font-display: swap;
6
+ }
7
+
8
+ :root {
9
+ --helper-font-family-mianfeiziti: 'mianfeiziti', sans-serif;
10
+ }
11
+
12
+ html, body {
13
+ margin: 0;
14
+ padding: 30px;
15
+ background: url("../../img/bg.C8CUoi7I.jpg") no-repeat center top;
16
+ background-size: cover;
17
+ font-size: 100px; /* 1rem = 100px */
18
+ }
19
+
20
+ body {
21
+ font-size: 14px;
22
+ min-height: 100vh;
23
+ }
24
+
25
+ .package-cont {
26
+ width: auto;
27
+ min-width: 9rem;
28
+ background-color: rgba(0, 0, 0, 0.4);
29
+ border-radius: 0.2rem;
30
+ padding: 0.15rem 0.2rem 0.45rem;
31
+ margin-bottom: 20px;
32
+ box-sizing: border-box;
33
+ }
34
+
35
+ .package-page {
36
+ display: flex;
37
+ flex-direction: column;
38
+ gap: 0.2rem;
39
+ }
40
+
41
+ .spirits-page-header {
42
+ display: flex;
43
+ align-items: center;
44
+ justify-content: space-between;
45
+ padding-bottom: 0.05rem;
46
+ border-bottom: 2px solid rgba(255, 255, 255, 0.1);
47
+ }
48
+
49
+ .header-user-info {
50
+ display: flex;
51
+ align-items: center;
52
+ gap: 0.1rem; /* Need slightly more gap for this layout */
53
+ flex: 1;
54
+ }
55
+
56
+ .header-avatar {
57
+ width: 0.6rem; /* A bit larger to match the personal card proportion */
58
+ height: 0.6rem;
59
+ object-fit: contain;
60
+ /* Removed the border-radius and solid border as the original avatar has its own background/shape */
61
+ }
62
+
63
+ .header-user-details {
64
+ display: flex;
65
+ flex-direction: column;
66
+ justify-content: center;
67
+ gap: 0.04rem;
68
+ }
69
+
70
+ .header-user-name-row {
71
+ display: flex;
72
+ align-items: center;
73
+ gap: 0.08rem;
74
+ }
75
+
76
+ .header-user-name {
77
+ font-family: var(--helper-font-family-mianfeiziti);
78
+ color: #f4eee1; /* Light text since background is dark */
79
+ font-size: 0.22rem;
80
+ font-weight: bold;
81
+ }
82
+
83
+ .header-user-level {
84
+ font-family: var(--helper-font-family-mianfeiziti);
85
+ background-color: #ffc966; /* Pill color from screenshot */
86
+ color: #272624; /* Dark grey text inside pill */
87
+ font-size: 0.14rem;
88
+ font-weight: bold;
89
+ padding: 0.02rem 0.08rem;
90
+ border-radius: 0.1rem;
91
+ line-height: 1.2;
92
+ }
93
+
94
+ .header-user-uid {
95
+ font-family: Arial, sans-serif;
96
+ color: #a8a69f;
97
+ font-size: 0.14rem;
98
+ }
99
+
100
+ .header-center {
101
+ display: flex;
102
+ flex-direction: column;
103
+ align-items: center;
104
+ gap: 0.04rem;
105
+ }
106
+
107
+ .page-title {
108
+ color: #f4eee1;
109
+ font-family: var(--helper-font-family-mianfeiziti);
110
+ font-size: 0.24rem;
111
+ font-weight: normal;
112
+ text-shadow: 0 2px 4px rgba(0,0,0,0.5);
113
+ line-height: 1;
114
+ }
115
+
116
+ .tab-nav {
117
+ display: flex;
118
+ list-style: none;
119
+ margin: 0;
120
+ padding: 0;
121
+ gap: 0.15rem;
122
+ }
123
+
124
+ .tab-item {
125
+ font-family: var(--helper-font-family-mianfeiziti);
126
+ color: #a8a69f;
127
+ font-size: 0.16rem;
128
+ cursor: pointer;
129
+ padding: 0.02rem 0;
130
+ }
131
+
132
+ .tab-item.cur {
133
+ color: #f4eee1;
134
+ border-bottom: 2px solid #ffc65f;
135
+ }
136
+
137
+ .header-right {
138
+ display: flex;
139
+ flex-direction: column;
140
+ align-items: flex-end;
141
+ justify-content: center;
142
+ gap: 0.02rem;
143
+ flex: 1;
144
+ }
145
+
146
+ .view-status {
147
+ font-family: var(--helper-font-family-mianfeiziti);
148
+ color: #f1b958;
149
+ font-size: 0.16rem;
150
+ }
151
+
152
+ .search-text {
153
+ font-family: var(--helper-font-family-mianfeiziti);
154
+ color: #f4eee1;
155
+ font-size: 0.14rem;
156
+ }
157
+
158
+ .spirits-content {
159
+ margin-top: 0.05rem;
160
+ }
161
+
162
+ .spirits-grid {
163
+ display: grid;
164
+ grid-template-columns: repeat(5, 1.9rem);
165
+ grid-template-rows: auto;
166
+ gap: 0.2rem 0.25rem;
167
+ justify-content: center;
168
+ }
169
+
170
+ /* Card Styling */
171
+ .spirit-card {
172
+ width: 1.9rem;
173
+ height: 2.6rem;
174
+ background: url("../../img/精灵pg.png") no-repeat center center;
175
+ background-size: 100% 100%;
176
+ display: flex;
177
+ flex-direction: column;
178
+ position: relative;
179
+ transition: transform 0.2s;
180
+ }
181
+
182
+ .spirit-card:hover {
183
+ transform: translateY(-2px);
184
+ }
185
+
186
+ .spirit-card-header {
187
+ display: flex;
188
+ justify-content: space-between;
189
+ align-items: flex-start;
190
+ padding: 0.15rem 0.2rem 0; /* Scaled inside bounds */
191
+ z-index: 2;
192
+ }
193
+
194
+ .element-icons {
195
+ display: flex;
196
+ gap: 0.05rem;
197
+ }
198
+
199
+ .element-icon img {
200
+ width: 0.28rem;
201
+ height: 0.28rem;
202
+ object-fit: contain;
203
+ }
204
+
205
+ .element-icon-empty {
206
+ width: 0.28rem;
207
+ height: 0.28rem;
208
+ border-radius: 50%;
209
+ background: rgba(255, 255, 255, 0.14);
210
+ color: #f4eee1;
211
+ display: flex;
212
+ align-items: center;
213
+ justify-content: center;
214
+ font-family: var(--helper-font-family-mianfeiziti);
215
+ font-size: 0.14rem;
216
+ }
217
+
218
+ .spirit-level {
219
+ font-family: var(--helper-font-family-mianfeiziti);
220
+ font-size: 0.22rem;
221
+ color: #555350; /* Dark grey for level text based on image */
222
+ }
223
+
224
+ .spirit-image {
225
+ flex: 1;
226
+ display: flex;
227
+ align-items: flex-start; /* move up */
228
+ justify-content: center;
229
+ position: relative;
230
+ padding-top: 0.1rem; /* slight offset to position it perfectly */
231
+ }
232
+
233
+ .helper-image {
234
+ width: 1.7rem;
235
+ height: 1.45rem;
236
+ display: flex;
237
+ align-items: center;
238
+ justify-content: center;
239
+ }
240
+
241
+ .helper-image-pic {
242
+ max-width: 100%;
243
+ max-height: 100%;
244
+ object-fit: contain;
245
+ filter: drop-shadow(0 0.06rem 0.12rem rgba(0, 0, 0, 0.18));
246
+ }
247
+
248
+ .stats-spirit-name {
249
+ width: 100%;
250
+ height: 0.55rem; /* Increased height to fit two lines */
251
+ display: flex;
252
+ flex-direction: column; /* Vertical stack */
253
+ align-items: center;
254
+ justify-content: center;
255
+ position: absolute;
256
+ bottom: -0.01rem; /* 下移 5px(1rem=100px) */
257
+ }
258
+
259
+ .stats-spirit-name span {
260
+ color: #272624;
261
+ font-family: var(--helper-font-family-mianfeiziti);
262
+ font-size: 0.2rem; /* Slightly smaller to fit */
263
+ line-height: 1.1;
264
+ font-weight: bold;
265
+ white-space: nowrap;
266
+ overflow: hidden;
267
+ text-overflow: ellipsis;
268
+ padding: 0 0.06rem;
269
+ }
270
+
271
+ .stats-spirit-name .custom-name {
272
+ font-size: 0.14rem;
273
+ color: #555; /* Slightly darker/neutral for custom name */
274
+ font-weight: normal;
275
+ margin-top: 0.02rem;
276
+ }
277
+
278
+ .spirit-subset-badge {
279
+ position: absolute;
280
+ top: 0.02rem;
281
+ right: 0.12rem;
282
+ width: 0.8rem;
283
+ z-index: 2;
284
+ }
285
+
286
+ .spirit-card.is-empty {
287
+ opacity: 0.42;
288
+ }
289
+
290
+ .spirit-image-empty {
291
+ align-items: center;
292
+ padding-top: 0;
293
+ }
294
+
295
+ .spirit-empty-copy {
296
+ color: #7d7568;
297
+ font-family: var(--helper-font-family-mianfeiziti);
298
+ font-size: 0.2rem;
299
+ }
300
+
301
+ .spirits-grid.is-empty {
302
+ grid-template-columns: 1fr;
303
+ grid-template-rows: 1fr;
304
+ }
305
+
306
+ .empty-card {
307
+ min-height: 5.4rem;
308
+ border-radius: 0.24rem;
309
+ border: 1px dashed rgba(255, 255, 255, 0.18);
310
+ background: rgba(0, 0, 0, 0.14);
311
+ display: flex;
312
+ flex-direction: column;
313
+ align-items: center;
314
+ justify-content: center;
315
+ gap: 0.12rem;
316
+ }
317
+
318
+ .empty-card-title {
319
+ color: #f4eee1;
320
+ font-family: var(--helper-font-family-mianfeiziti);
321
+ font-size: 0.24rem;
322
+ }
323
+
324
+ .empty-card-desc {
325
+ color: #b9b1a2;
326
+ font-family: var(--helper-font-family-mianfeiziti);
327
+ font-size: 0.15rem;
328
+ }
329
+
330
+ .pagination-footer {
331
+ display: flex;
332
+ flex-direction: column;
333
+ align-items: center;
334
+ justify-content: center;
335
+ margin-top: 0.2rem;
336
+ margin-bottom: 0.2rem;
337
+ padding-top: 0.15rem;
338
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
339
+ gap: 0.05rem;
340
+ }
341
+
342
+ .pagination-text {
343
+ font-family: var(--helper-font-family-mianfeiziti);
344
+ color: #f4eee1;
345
+ font-size: 0.18rem;
346
+ }
347
+
348
+ .pagination-hint {
349
+ font-family: var(--helper-font-family-mianfeiziti);
350
+ color: #a8a69f;
351
+ font-size: 0.14rem;
352
+ }