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,371 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>远行商人</title>
7
+ <style>
8
+ @font-face {
9
+ font-family: "fzlant";
10
+ src: url("{{_res_path}}ttf/fzlant.D5FI9Et0.ttf");
11
+ }
12
+
13
+ @font-face {
14
+ font-family: "dundun";
15
+ src: url("{{_res_path}}ttf/dundun.xHd_Ee5-.woff2");
16
+ }
17
+
18
+ * {
19
+ margin: 0;
20
+ padding: 0;
21
+ box-sizing: border-box;
22
+ }
23
+
24
+ :root {
25
+ --font-family: "fzlant", "Microsoft YaHei", "PingFang SC", sans-serif;
26
+ --font-family-accent: "dundun", "fzlant", "Microsoft YaHei", sans-serif;
27
+ --text-1: #332719;
28
+ --text-2: #6b5846;
29
+ --line: rgba(118, 97, 74, 0.22);
30
+ --panel-bg: rgba(243, 237, 227, 0.94);
31
+ --card-bg: rgba(255, 252, 247, 0.82);
32
+ --tag-bg: rgba(255, 214, 153, 0.4);
33
+ --tag-text: #9a5f19;
34
+ }
35
+
36
+ html,
37
+ body {
38
+ width: 100%;
39
+ height: auto;
40
+ font-family: var(--font-family);
41
+ color: var(--text-1);
42
+ background: #ece3d3;
43
+ }
44
+
45
+ .merchant-page {
46
+ position: relative;
47
+ width: min(820px, 100%);
48
+ margin: 0 auto;
49
+ overflow: hidden;
50
+ background: #ece3d3;
51
+ }
52
+
53
+ .background {
54
+ position: absolute;
55
+ inset: 0;
56
+ background-size: cover;
57
+ background-position: center top;
58
+ background-repeat: no-repeat;
59
+ opacity: 0.24;
60
+ filter: saturate(0.9);
61
+ }
62
+
63
+ .content-container {
64
+ position: relative;
65
+ z-index: 1;
66
+ width: 100%;
67
+ padding: 18px 18px 24px;
68
+ }
69
+
70
+ .header {
71
+ display: flex;
72
+ justify-content: space-between;
73
+ gap: 20px;
74
+ padding: 22px 24px;
75
+ border: 1px solid var(--line);
76
+ border-radius: 24px;
77
+ background: linear-gradient(135deg, rgba(255,255,255,0.86), rgba(245,236,221,0.9));
78
+ box-shadow: 0 14px 36px rgba(58, 39, 21, 0.08);
79
+ }
80
+
81
+ .title-section {
82
+ display: flex;
83
+ flex-direction: column;
84
+ gap: 10px;
85
+ }
86
+
87
+ .title-main {
88
+ display: flex;
89
+ align-items: center;
90
+ gap: 14px;
91
+ }
92
+
93
+ .title-badge {
94
+ width: 68px;
95
+ height: 68px;
96
+ display: flex;
97
+ align-items: center;
98
+ justify-content: center;
99
+ background: transparent;
100
+ color: #fffaf0;
101
+ font-size: 32px;
102
+ font-weight: 900;
103
+ }
104
+
105
+ .title-badge img {
106
+ width: 68px;
107
+ height: 68px;
108
+ object-fit: contain;
109
+ }
110
+
111
+ .title-text {
112
+ font-family: var(--font-family-accent);
113
+ font-size: 42px;
114
+ font-weight: 900;
115
+ letter-spacing: 2px;
116
+ }
117
+
118
+ .subtitle {
119
+ color: var(--text-2);
120
+ font-size: 18px;
121
+ }
122
+
123
+ .header-side {
124
+ min-width: 320px;
125
+ display: flex;
126
+ flex-direction: column;
127
+ align-items: flex-end;
128
+ justify-content: center;
129
+ gap: 14px;
130
+ }
131
+
132
+ .summary-chip {
133
+ padding: 10px 16px;
134
+ border-radius: 999px;
135
+ background: rgba(255,255,255,0.72);
136
+ border: 1px solid rgba(179, 123, 45, 0.2);
137
+ color: var(--text-2);
138
+ font-size: 18px;
139
+ }
140
+
141
+ .summary-chip strong {
142
+ font-family: var(--font-family-accent);
143
+ color: #a0631d;
144
+ font-size: 28px;
145
+ margin-left: 8px;
146
+ }
147
+
148
+ .round-info {
149
+ display: flex;
150
+ align-items: center;
151
+ gap: 12px;
152
+ flex-wrap: wrap;
153
+ justify-content: flex-end;
154
+ }
155
+
156
+ .round-pill,
157
+ .countdown-pill {
158
+ padding: 8px 14px;
159
+ border-radius: 999px;
160
+ background: rgba(255,255,255,0.78);
161
+ border: 1px solid var(--line);
162
+ font-size: 17px;
163
+ }
164
+
165
+ .countdown-pill {
166
+ color: #bf5f3f;
167
+ font-weight: 700;
168
+ }
169
+
170
+ .products-grid {
171
+ display: grid;
172
+ grid-template-columns: 1fr;
173
+ gap: 16px;
174
+ margin-top: 18px;
175
+ }
176
+
177
+ .product-card {
178
+ display: grid;
179
+ grid-template-columns: 140px 1fr auto;
180
+ gap: 18px;
181
+ align-items: center;
182
+ min-height: 156px;
183
+ padding: 18px 22px;
184
+ border: 1px solid rgba(118, 97, 74, 0.14);
185
+ border-radius: 22px;
186
+ background: linear-gradient(135deg, rgba(255,255,255,0.72), rgba(244,236,224,0.88));
187
+ box-shadow: 0 10px 26px rgba(58, 39, 21, 0.06);
188
+ }
189
+
190
+ .product-image-container {
191
+ width: 140px;
192
+ height: 140px;
193
+ border-radius: 18px;
194
+ background: radial-gradient(circle at 30% 30%, rgba(255,255,255,0.94), rgba(239,228,210,0.92));
195
+ display: flex;
196
+ align-items: center;
197
+ justify-content: center;
198
+ overflow: hidden;
199
+ }
200
+
201
+ .product-image {
202
+ width: 100%;
203
+ height: 100%;
204
+ object-fit: contain;
205
+ }
206
+
207
+ .product-main {
208
+ min-width: 0;
209
+ }
210
+
211
+ .product-name {
212
+ font-family: var(--font-family-accent);
213
+ font-size: 34px;
214
+ font-weight: 800;
215
+ line-height: 1.2;
216
+ word-break: break-word;
217
+ }
218
+
219
+ .product-sub {
220
+ margin-top: 10px;
221
+ color: var(--text-2);
222
+ font-size: 18px;
223
+ }
224
+
225
+ .product-time {
226
+ display: inline-flex;
227
+ margin-top: 14px;
228
+ padding: 8px 14px;
229
+ border-radius: 999px;
230
+ background: var(--tag-bg);
231
+ color: var(--tag-text);
232
+ font-size: 16px;
233
+ font-weight: 700;
234
+ }
235
+
236
+ .product-side {
237
+ align-self: stretch;
238
+ display: flex;
239
+ align-items: center;
240
+ justify-content: flex-end;
241
+ }
242
+
243
+ .product-slot {
244
+ padding: 10px 14px;
245
+ border-radius: 16px;
246
+ background: rgba(255,255,255,0.72);
247
+ border: 1px solid rgba(179, 123, 45, 0.18);
248
+ color: #8b5e2b;
249
+ font-size: 18px;
250
+ font-weight: 700;
251
+ }
252
+
253
+ .product-empty {
254
+ text-align: center;
255
+ padding: 30px 18px;
256
+ border-radius: 22px;
257
+ border: 1px dashed rgba(120, 102, 81, 0.35);
258
+ color: #5c4a37;
259
+ font-size: 22px;
260
+ background: rgba(255,255,255,0.52);
261
+ }
262
+
263
+ @media (max-width: 760px) {
264
+ .merchant-page {
265
+ width: 100%;
266
+ }
267
+
268
+ .content-container {
269
+ padding: 10px 10px 14px;
270
+ }
271
+
272
+ .header {
273
+ flex-direction: column;
274
+ gap: 10px;
275
+ padding: 14px 16px;
276
+ }
277
+
278
+ .header-side {
279
+ min-width: 0;
280
+ align-items: flex-start;
281
+ }
282
+
283
+ .round-info {
284
+ justify-content: flex-start;
285
+ }
286
+
287
+ .title-badge,
288
+ .title-badge img {
289
+ width: 48px;
290
+ height: 48px;
291
+ }
292
+
293
+ .title-text {
294
+ font-size: 30px;
295
+ }
296
+
297
+ .product-card {
298
+ grid-template-columns: 92px 1fr;
299
+ min-height: 0;
300
+ padding: 12px 14px;
301
+ }
302
+
303
+ .product-image-container {
304
+ width: 92px;
305
+ height: 92px;
306
+ }
307
+
308
+ .product-name {
309
+ font-size: 24px;
310
+ }
311
+
312
+ .product-side {
313
+ grid-column: 1 / -1;
314
+ justify-content: flex-start;
315
+ padding-left: 106px;
316
+ }
317
+ }
318
+ </style>
319
+ </head>
320
+ <body>
321
+ <div class="merchant-page">
322
+ <div class="background" style="background-image: url('{{background}}');"></div>
323
+ <div class="content-container">
324
+ <div class="header">
325
+ <div class="title-section">
326
+ <div class="title-main">
327
+ <div class="title-badge">
328
+ {{if titleIcon}}
329
+ <img src="{{_res_path}}img/yuanxingshangren.png" alt="{{title}}">
330
+ {{else}}
331
+
332
+ {{/if}}
333
+ </div>
334
+ <span class="title-text">{{title}}</span>
335
+ </div>
336
+ <div class="subtitle">{{subtitle}}</div>
337
+ </div>
338
+ <div class="header-side">
339
+ <div class="summary-chip">当前商品数 <strong>{{product_count}}</strong></div>
340
+ <div class="round-info">
341
+ <div class="round-pill">第 {{round_info.current || '未开放'}} / {{round_info.total}} 轮</div>
342
+ <div class="countdown-pill">剩余 {{round_info.countdown}}</div>
343
+ </div>
344
+ </div>
345
+ </div>
346
+
347
+ <div class="products-grid">
348
+ {{if products && products.length > 0}}
349
+ {{each products product}}
350
+ <div class="product-card">
351
+ <div class="product-image-container">
352
+ <img class="product-image" src="{{product.image}}" alt="{{product.name}}">
353
+ </div>
354
+ <div class="product-main">
355
+ <div class="product-name">{{product.name}}</div>
356
+ <div class="product-sub">远行商人当前轮次商品</div>
357
+ <div class="product-time">北京时间 {{product.time_label}}</div>
358
+ </div>
359
+ <div class="product-side">
360
+ <div class="product-slot">本轮商品</div>
361
+ </div>
362
+ </div>
363
+ {{/each}}
364
+ {{else}}
365
+ <div class="product-empty">本轮暂无商品,稍后再来看看。</div>
366
+ {{/if}}
367
+ </div>
368
+ </div>
369
+ </div>
370
+ </body>
371
+ </html>
@@ -0,0 +1,371 @@
1
+ * {
2
+ margin: 0;
3
+ padding: 0;
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ :root {
8
+ --font-family: "Microsoft YaHei", "PingFang SC", sans-serif;
9
+ --text-1: #3a2f24;
10
+ --text-2: #5c4a37;
11
+ --text-3: #75624d;
12
+ --gold-1: #b5791f;
13
+ --green-1: #2f9750;
14
+ --orange-1: #b1772c;
15
+ --base-rgb: 232, 225, 209;
16
+ --panel-bg: rgb(var(--base-rgb));
17
+ --line: rgba(118, 97, 74, 0.3);
18
+ }
19
+
20
+ html,
21
+ body {
22
+ width: 100%;
23
+ height: auto;
24
+ font-family: var(--font-family);
25
+ color: var(--text-1);
26
+ background: rgb(var(--base-rgb));
27
+ }
28
+
29
+ .merchant-page {
30
+ position: relative;
31
+ width: 100%;
32
+ min-height: 0;
33
+ height: auto;
34
+ overflow: visible;
35
+ background: rgb(var(--base-rgb));
36
+ }
37
+
38
+ .background {
39
+ position: absolute;
40
+ inset: 0;
41
+ background-size: cover;
42
+ background-position: center top;
43
+ background-repeat: no-repeat;
44
+ opacity: 1;
45
+ z-index: 0;
46
+ }
47
+
48
+ .content-container {
49
+ position: relative;
50
+ z-index: 1;
51
+ width: 100%;
52
+ margin: 0 auto;
53
+ padding: 0 0 8px;
54
+ }
55
+
56
+ .header {
57
+ display: flex;
58
+ align-items: stretch;
59
+ justify-content: space-between;
60
+ margin-bottom: 18px;
61
+ padding: 18px 24px;
62
+ border-radius: 0;
63
+ border-top: 1px solid var(--line);
64
+ border-bottom: 1px solid var(--line);
65
+ background: var(--panel-bg);
66
+ }
67
+
68
+ .title-section {
69
+ display: flex;
70
+ flex-direction: column;
71
+ justify-content: center;
72
+ gap: 8px;
73
+ }
74
+
75
+ .title-main {
76
+ display: flex;
77
+ align-items: center;
78
+ gap: 14px;
79
+ }
80
+
81
+ .title-icon-img {
82
+ width: 68px;
83
+ height: 68px;
84
+ object-fit: contain;
85
+ }
86
+
87
+ .title-text {
88
+ font-size: 40px;
89
+ font-weight: 800;
90
+ letter-spacing: 3px;
91
+ color: var(--text-1);
92
+ }
93
+
94
+ .subtitle {
95
+ margin-top: 0;
96
+ color: var(--text-2);
97
+ font-size: 18px;
98
+ }
99
+
100
+ .header-right {
101
+ display: flex;
102
+ flex-direction: column;
103
+ align-items: flex-end;
104
+ justify-content: center;
105
+ gap: 10px;
106
+ min-width: 320px;
107
+ padding-left: 24px;
108
+ border-left: 1px solid rgba(118, 97, 74, 0.3);
109
+ }
110
+
111
+ .header-balance {
112
+ display: inline-flex;
113
+ align-items: center;
114
+ gap: 10px;
115
+ border-radius: 999px;
116
+ padding: 8px 16px;
117
+ border: 1px solid rgba(191, 141, 67, 0.5);
118
+ background: linear-gradient(135deg, rgba(245, 227, 184, 0.95), rgba(233, 215, 173, 0.95));
119
+ }
120
+
121
+ .currency-icon,
122
+ .price-icon {
123
+ width: 22px;
124
+ height: 22px;
125
+ object-fit: contain;
126
+ image-rendering: high-quality;
127
+ }
128
+
129
+ .amount-value {
130
+ color: var(--gold-1);
131
+ font-size: 30px;
132
+ font-weight: 800;
133
+ letter-spacing: 0.5px;
134
+ }
135
+
136
+ .round-info {
137
+ display: flex;
138
+ align-items: center;
139
+ gap: 10px;
140
+ padding-top: 8px;
141
+ border-top: 1px dashed rgba(118, 97, 74, 0.35);
142
+ }
143
+
144
+ .round-label {
145
+ font-size: 20px;
146
+ font-weight: 800;
147
+ }
148
+
149
+ .round-count {
150
+ margin-left: 0;
151
+ font-size: 17px;
152
+ color: var(--text-3);
153
+ }
154
+
155
+ .countdown {
156
+ color: #bf5f3f;
157
+ font-weight: 700;
158
+ font-size: 18px;
159
+ letter-spacing: 0.5px;
160
+ margin-left: 10px;
161
+ }
162
+
163
+ .products-grid {
164
+ display: grid;
165
+ grid-template-columns: 1fr;
166
+ gap: 16px;
167
+ padding: 0 12px;
168
+ }
169
+
170
+ .product-card {
171
+ display: grid;
172
+ grid-template-columns: minmax(280px, 1fr) minmax(260px, auto);
173
+ align-items: center;
174
+ gap: 20px;
175
+ border-radius: 18px;
176
+ border: none;
177
+ background: linear-gradient(90deg,
178
+ rgba(214, 206, 190, 1) 0%,
179
+ rgba(214, 206, 190, 0.96) 56%,
180
+ rgba(214, 206, 190, 0.72) 80%,
181
+ rgba(214, 206, 190, 0) 100%);
182
+ min-height: 154px;
183
+ padding: 22px;
184
+ transition: transform 0.18s ease;
185
+ }
186
+
187
+ .product-card:hover {
188
+ transform: translateY(-2px);
189
+ }
190
+
191
+ .product-main-left {
192
+ display: flex;
193
+ align-items: center;
194
+ gap: 16px;
195
+ min-width: 0;
196
+ }
197
+
198
+ .product-image-container {
199
+ width: 156px;
200
+ height: 156px;
201
+ flex-shrink: 0;
202
+ border-radius: 0;
203
+ border: none;
204
+ background: transparent;
205
+ display: flex;
206
+ align-items: center;
207
+ justify-content: center;
208
+ padding: 0;
209
+ }
210
+
211
+ .product-image {
212
+ width: 100%;
213
+ height: 100%;
214
+ object-fit: contain;
215
+ image-rendering: high-quality;
216
+ }
217
+
218
+ .product-name {
219
+ min-width: 0;
220
+ color: #3a2f24;
221
+ font-size: 32px;
222
+ font-weight: 700;
223
+ line-height: 1.24;
224
+ word-break: break-word;
225
+ }
226
+
227
+ .product-main-right {
228
+ display: flex;
229
+ flex-direction: column;
230
+ align-items: flex-end;
231
+ justify-content: center;
232
+ gap: 12px;
233
+ }
234
+
235
+ .product-meta-row {
236
+ display: flex;
237
+ align-items: center;
238
+ gap: 10px;
239
+ }
240
+
241
+ .product-stat {
242
+ display: inline-flex;
243
+ align-items: center;
244
+ gap: 8px;
245
+ font-size: 20px;
246
+ padding: 8px 14px;
247
+ border-radius: 999px;
248
+ border: 1px solid transparent;
249
+ white-space: nowrap;
250
+ }
251
+
252
+ .product-stat .label {
253
+ color: #6d5843;
254
+ }
255
+
256
+ .product-stat .value {
257
+ font-weight: 700;
258
+ }
259
+
260
+ .product-stock {
261
+ border-color: rgba(90, 160, 95, 0.35);
262
+ background: rgba(203, 232, 200, 0.85);
263
+ }
264
+
265
+ .product-stock .value {
266
+ color: var(--green-1);
267
+ }
268
+
269
+ .product-limit {
270
+ border-color: rgba(219, 160, 82, 0.35);
271
+ background: rgba(246, 225, 192, 0.92);
272
+ }
273
+
274
+ .product-limit .value {
275
+ color: var(--orange-1);
276
+ }
277
+
278
+ .product-price {
279
+ border-color: rgba(191, 141, 67, 0.45);
280
+ background: rgba(247, 230, 197, 0.95);
281
+ }
282
+
283
+ .product-price .value {
284
+ color: var(--gold-1);
285
+ font-size: 32px;
286
+ line-height: 1;
287
+ }
288
+
289
+ .product-empty {
290
+ grid-column: 1 / -1;
291
+ text-align: center;
292
+ padding: 30px 18px;
293
+ border-radius: 18px;
294
+ border: 1px dashed rgba(120, 102, 81, 0.35);
295
+ color: #5c4a37;
296
+ font-size: 22px;
297
+ background: rgb(var(--base-rgb));
298
+ }
299
+
300
+ @media (max-width: 760px) {
301
+ .content-container {
302
+ padding: 0 0 16px;
303
+ }
304
+
305
+ .header {
306
+ flex-direction: column;
307
+ align-items: flex-start;
308
+ gap: 12px;
309
+ padding: 16px;
310
+ border-radius: 0;
311
+ }
312
+
313
+ .header-right {
314
+ width: 100%;
315
+ min-width: 0;
316
+ align-items: flex-start;
317
+ padding-left: 0;
318
+ padding-top: 12px;
319
+ border-left: none;
320
+ border-top: 1px solid rgba(118, 97, 74, 0.3);
321
+ }
322
+
323
+ .title-icon-img {
324
+ width: 54px;
325
+ height: 54px;
326
+ }
327
+
328
+ .title-text {
329
+ font-size: 30px;
330
+ letter-spacing: 1px;
331
+ }
332
+
333
+ .amount-value {
334
+ font-size: 24px;
335
+ }
336
+
337
+ .products-grid {
338
+ padding: 0 8px;
339
+ }
340
+
341
+ .product-card {
342
+ grid-template-columns: 1fr;
343
+ min-height: 0;
344
+ padding: 16px;
345
+ }
346
+
347
+ .product-main-right {
348
+ align-items: flex-start;
349
+ gap: 10px;
350
+ }
351
+
352
+ .product-name {
353
+ font-size: 24px;
354
+ }
355
+
356
+ .product-image-container {
357
+ width: 136px;
358
+ height: 136px;
359
+ }
360
+
361
+ .product-stat {
362
+ font-size: 17px;
363
+ padding: 6px 10px;
364
+ }
365
+
366
+ .product-price .value {
367
+ font-size: 26px;
368
+ }
369
+ }
370
+
371
+