zsbqb-static 0.1.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.
Files changed (52) hide show
  1. package/README.md +4 -0
  2. package/catalog/bubble-4f53cda18c2b.json +1 -0
  3. package/catalog/crescent-4f53cda18c2b.json +1 -0
  4. package/catalog/dianfeng-4f53cda18c2b.json +1 -0
  5. package/catalog/manifest.json +1 -0
  6. package/catalog/pinball-4f53cda18c2b.json +1 -0
  7. package/catalog/pinyin-4f53cda18c2b.json +1 -0
  8. package/catalog/xingdong-4f53cda18c2b.json +1 -0
  9. package/css/app.css +2157 -0
  10. package/img/apple-touch-icon.png +0 -0
  11. package/img/brand-logo.png +0 -0
  12. package/img/favicon-192.png +0 -0
  13. package/img/favicon-32.png +0 -0
  14. package/img/favicon.ico +0 -0
  15. package/img/modes/bubble.png +0 -0
  16. package/img/modes/crescent.png +0 -0
  17. package/img/modes/dianfeng-master.png +0 -0
  18. package/img/modes/dianfeng.png +0 -0
  19. package/img/modes/master.png +0 -0
  20. package/img/modes/pinball.png +0 -0
  21. package/img/modes/xingdong.png +0 -0
  22. package/img/skills/fire.png +0 -0
  23. package/img/skills/limit.png +0 -0
  24. package/js/app.js +2124 -0
  25. package/js/auth-shell-sync.js +45 -0
  26. package/js/burst-preview-host.js +493 -0
  27. package/js/catalog-search.js +311 -0
  28. package/js/query-app.js +331 -0
  29. package/note-preview/assets/atlas/bubble.webp +0 -0
  30. package/note-preview/assets/atlas/crescent.webp +0 -0
  31. package/note-preview/assets/atlas/idol.webp +0 -0
  32. package/note-preview/assets/atlas/manifest.json +1 -0
  33. package/note-preview/assets/atlas/pinball.webp +0 -0
  34. package/note-preview/assets/atlas/shared.webp +0 -0
  35. package/note-preview/assets/sfx/burst-end.m4a +0 -0
  36. package/note-preview/assets/sfx/burst-start.m4a +0 -0
  37. package/note-preview/assets/sfx/key-tone-bubble-slide.m4a +0 -0
  38. package/note-preview/assets/sfx/key-tone-bubble.m4a +0 -0
  39. package/note-preview/assets/sfx/key-tone-classic.m4a +0 -0
  40. package/note-preview/assets/sfx/key-tone-crescent-slide.m4a +0 -0
  41. package/note-preview/assets/sfx/key-tone-crescent.m4a +0 -0
  42. package/note-preview/assets/sfx/key-tone-long.m4a +0 -0
  43. package/note-preview/assets/sfx/key-tone-pinball-slide.m4a +0 -0
  44. package/note-preview/assets/sfx/key-tone-pinball.m4a +0 -0
  45. package/note-preview/assets/sfx/key-tone-rhythm.m4a +0 -0
  46. package/note-preview/assets/sfx/key-tone-slide.m4a +0 -0
  47. package/note-preview/assets/sfx/key-tone-xingdong-slide.m4a +0 -0
  48. package/note-preview/assets/sfx/key-tone-xingdong.m4a +0 -0
  49. package/note-preview/assets/sfx/key-tone.m4a +0 -0
  50. package/note-preview/note-preview.min.js +1 -0
  51. package/package.json +18 -0
  52. package/public/season.json +1 -0
package/css/app.css ADDED
@@ -0,0 +1,2157 @@
1
+ :root {
2
+ --bg: #ffffff;
3
+ --bg-2: #f5f6f8;
4
+ --card: #ffffff;
5
+ --line: #e5e7eb;
6
+ --text: #1a1d26;
7
+ --muted: #6b7280;
8
+ --accent: #e84d1a;
9
+ --accent-2: #c2410c;
10
+ --burst-pink: #ff7abd;
11
+ --burst-red: #ff3338;
12
+ --teal: #0d9488;
13
+ --danger: #dc2626;
14
+ --ok: #16a34a;
15
+ --shadow: 0 8px 28px rgba(15, 23, 42, 0.06);
16
+ --radius: 18px;
17
+ --page-width: 1120px;
18
+ --page-gutter: 8px;
19
+ --page-edge-inset: 1px;
20
+ --query-bleed-right: calc(-1 * var(--page-gutter) + var(--page-edge-inset));
21
+ --font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", sans-serif;
22
+ }
23
+
24
+ * { box-sizing: border-box; }
25
+ html, body { margin: 0; min-height: 100%; }
26
+ html { scrollbar-gutter: stable; }
27
+ body {
28
+ font-family: var(--font-sans);
29
+ color: var(--text);
30
+ background: var(--bg);
31
+ line-height: 1.6;
32
+ }
33
+
34
+ .page-bg {
35
+ position: fixed;
36
+ inset: 0;
37
+ z-index: -1;
38
+ background:
39
+ radial-gradient(900px 420px at 90% -10%, rgba(232, 77, 26, 0.08), transparent 55%),
40
+ radial-gradient(700px 380px at -10% 110%, rgba(13, 148, 136, 0.06), transparent 50%),
41
+ linear-gradient(180deg, #ffffff, #f8f9fb 45%, #ffffff);
42
+ }
43
+ .page-bg::after {
44
+ content: "";
45
+ position: absolute;
46
+ inset: 0;
47
+ background-image: linear-gradient(rgba(15, 23, 42, 0.03) 1px, transparent 1px),
48
+ linear-gradient(90deg, rgba(15, 23, 42, 0.03) 1px, transparent 1px);
49
+ background-size: 48px 48px;
50
+ mask-image: radial-gradient(circle at 50% 20%, black, transparent 75%);
51
+ }
52
+
53
+ a { color: var(--accent-2); text-decoration: none; }
54
+ a:hover { color: var(--accent); }
55
+ h1, h2, h3 { font-family: var(--font-sans); letter-spacing: 0; line-height: 1.15; }
56
+ h1 { font-size: clamp(2rem, 4vw, 3.4rem); margin: 0 0 0.6rem; }
57
+ h2 { font-size: 1.6rem; }
58
+ p { margin: 0 0 1rem; }
59
+
60
+ .site-header, .site-footer, .site-main {
61
+ width: min(var(--page-width), calc(100% - var(--page-gutter) * 2));
62
+ margin: 0 auto;
63
+ }
64
+ .site-header {
65
+ display: flex;
66
+ align-items: center;
67
+ gap: 24px;
68
+ padding: 12px 0 8px;
69
+ }
70
+ .brand { display: flex; align-items: center; gap: 10px; color: var(--text); font-weight: 800; }
71
+ .brand:hover { color: var(--text); }
72
+ .brand-mark {
73
+ width: 36px; height: 36px; display: grid; place-items: center;
74
+ background: var(--accent); color: #fff; border-radius: 10px;
75
+ font-family: var(--font-sans);
76
+ }
77
+ .brand-logo {
78
+ height: 36px;
79
+ width: auto;
80
+ display: block;
81
+ object-fit: contain;
82
+ }
83
+ .site-nav { display: flex; gap: 10px; flex: 1; min-width: 0; align-items: center; }
84
+ .site-nav__link {
85
+ color: var(--muted);
86
+ white-space: nowrap;
87
+ padding: 6px 12px;
88
+ border-radius: 8px;
89
+ font-weight: 600;
90
+ font-size: 14px;
91
+ transition: background 0.15s ease, color 0.15s ease;
92
+ }
93
+ .site-nav__link:hover { color: var(--text); background: var(--bg-2); }
94
+ .site-nav__link.is-active,
95
+ .site-nav__link.is-active:hover {
96
+ background: var(--text);
97
+ color: #fff;
98
+ }
99
+ .site-nav__link--primary { flex: 0 0 auto; }
100
+ .site-nav__link--extra { flex: 0 0 auto; }
101
+ .header-actions { display: flex; gap: 10px; align-items: center; margin-left: auto; flex: 0 0 auto; flex-shrink: 0; }
102
+ .header-menu { display: none; }
103
+ .user-menu {
104
+ position: relative;
105
+ }
106
+ .user-menu__trigger {
107
+ align-items: center;
108
+ gap: 6px;
109
+ cursor: pointer;
110
+ font: inherit;
111
+ }
112
+ .user-menu__trigger.chip {
113
+ color: var(--teal);
114
+ }
115
+ .user-menu__caret {
116
+ display: inline-flex;
117
+ align-items: center;
118
+ justify-content: center;
119
+ width: 12px;
120
+ height: 12px;
121
+ color: var(--muted);
122
+ flex-shrink: 0;
123
+ user-select: none;
124
+ pointer-events: none;
125
+ transition: transform 0.15s ease;
126
+ }
127
+ .user-menu__caret svg {
128
+ width: 12px;
129
+ height: 12px;
130
+ display: block;
131
+ }
132
+ .user-menu__trigger[aria-expanded="true"] .user-menu__caret {
133
+ transform: rotate(180deg);
134
+ }
135
+ .user-menu__menu {
136
+ position: absolute;
137
+ top: calc(100% + 6px);
138
+ right: 0;
139
+ z-index: 40;
140
+ min-width: 228px;
141
+ background: #fff;
142
+ border: 1px solid var(--line);
143
+ border-radius: 12px;
144
+ box-shadow: var(--shadow);
145
+ padding: 6px;
146
+ display: grid;
147
+ gap: 2px;
148
+ }
149
+ .user-menu__menu[hidden] {
150
+ display: none !important;
151
+ }
152
+ .user-menu__item {
153
+ display: block;
154
+ width: 100%;
155
+ border: 0;
156
+ border-radius: 8px;
157
+ background: transparent;
158
+ color: var(--text);
159
+ font: inherit;
160
+ font-size: 13px;
161
+ font-weight: 600;
162
+ text-align: left;
163
+ text-decoration: none;
164
+ padding: 8px 10px;
165
+ cursor: pointer;
166
+ }
167
+ .user-menu__item:hover,
168
+ .user-menu__item:focus-visible {
169
+ background: rgba(232, 77, 26, 0.08);
170
+ color: var(--text);
171
+ outline: none;
172
+ }
173
+ .user-menu__item.is-active,
174
+ .user-menu__item.is-active:hover,
175
+ .user-menu__item.is-active:focus-visible {
176
+ background: var(--text);
177
+ color: #fff;
178
+ }
179
+ .user-menu__logout {
180
+ margin: 0;
181
+ }
182
+ .user-menu__nav {
183
+ display: none;
184
+ gap: 2px;
185
+ padding-bottom: 4px;
186
+ margin-bottom: 2px;
187
+ border-bottom: 1px solid var(--line);
188
+ }
189
+ .user-menu__account {
190
+ display: grid;
191
+ gap: 2px;
192
+ padding-top: 2px;
193
+ }
194
+ .user-menu__account .user-menu__logout {
195
+ padding-top: 2px;
196
+ border-top: 1px solid var(--line);
197
+ }
198
+ .user-menu__mute-badge {
199
+ display: inline-flex;
200
+ align-items: center;
201
+ justify-content: center;
202
+ width: 14px;
203
+ height: 14px;
204
+ color: var(--accent);
205
+ }
206
+ .user-menu__mute-badge[hidden] {
207
+ display: none !important;
208
+ }
209
+ .user-menu__mute-badge svg {
210
+ width: 14px;
211
+ height: 14px;
212
+ display: block;
213
+ }
214
+ .user-menu__prefs {
215
+ display: grid;
216
+ gap: 2px;
217
+ padding-bottom: 4px;
218
+ margin-bottom: 2px;
219
+ border-bottom: 1px solid var(--line);
220
+ }
221
+ .user-menu__pref {
222
+ display: grid;
223
+ grid-template-columns: minmax(0, 1fr);
224
+ gap: 4px;
225
+ align-items: start;
226
+ }
227
+ .user-menu__mute {
228
+ display: flex;
229
+ align-items: center;
230
+ gap: 8px;
231
+ }
232
+ .user-menu__mute-hit {
233
+ display: inline-flex;
234
+ align-items: center;
235
+ gap: 8px;
236
+ margin: 0;
237
+ padding: 0;
238
+ border: 0;
239
+ background: transparent;
240
+ color: inherit;
241
+ font: inherit;
242
+ font-weight: inherit;
243
+ cursor: pointer;
244
+ }
245
+ .user-menu__mute-hit:first-child {
246
+ flex: 1 1 auto;
247
+ min-width: 0;
248
+ justify-content: flex-start;
249
+ text-align: left;
250
+ }
251
+ .user-menu__mute-icon {
252
+ display: inline-flex;
253
+ width: 16px;
254
+ height: 16px;
255
+ flex: 0 0 auto;
256
+ color: var(--muted);
257
+ }
258
+ .user-menu__mute-icon svg {
259
+ width: 16px;
260
+ height: 16px;
261
+ display: block;
262
+ }
263
+ .user-menu__mute-label {
264
+ flex: 1 1 auto;
265
+ min-width: 0;
266
+ }
267
+ .user-menu__switch {
268
+ position: relative;
269
+ width: 36px;
270
+ height: 20px;
271
+ flex: 0 0 auto;
272
+ border-radius: 999px;
273
+ background: #d1d5db;
274
+ box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.06);
275
+ }
276
+ .user-menu__switch::after {
277
+ content: "";
278
+ position: absolute;
279
+ top: 2px;
280
+ left: 2px;
281
+ width: 16px;
282
+ height: 16px;
283
+ border-radius: 50%;
284
+ background: #fff;
285
+ box-shadow: 0 1px 3px rgba(15, 23, 42, 0.2);
286
+ transition: transform 0.15s ease;
287
+ }
288
+ .user-menu__mute.is-on,
289
+ .user-menu__mute[aria-checked="true"] {
290
+ color: var(--accent);
291
+ }
292
+ .user-menu__mute.is-on .user-menu__mute-icon,
293
+ .user-menu__mute[aria-checked="true"] .user-menu__mute-icon {
294
+ color: var(--accent);
295
+ }
296
+ .user-menu__mute.is-on .user-menu__switch,
297
+ .user-menu__mute[aria-checked="true"] .user-menu__switch {
298
+ background: var(--accent);
299
+ }
300
+ .user-menu__mute.is-on .user-menu__switch::after,
301
+ .user-menu__mute[aria-checked="true"] .user-menu__switch::after {
302
+ transform: translateX(16px);
303
+ }
304
+ .user-menu__burst-color {
305
+ display: flex;
306
+ align-items: center;
307
+ gap: 8px;
308
+ color: var(--burst-pink);
309
+ transition: color 0.15s ease, background 0.15s ease;
310
+ }
311
+ .user-menu__burst-color .user-menu__mute-icon {
312
+ color: inherit;
313
+ }
314
+ .user-menu__burst-color.is-pink,
315
+ .user-menu__burst-color:not(.is-red),
316
+ .user-menu__burst-color.is-pink:hover,
317
+ .user-menu__burst-color.is-pink:focus-visible,
318
+ .user-menu__burst-color:not(.is-red):hover,
319
+ .user-menu__burst-color:not(.is-red):focus-visible {
320
+ color: var(--burst-pink);
321
+ }
322
+ .user-menu__burst-color.is-pink:hover,
323
+ .user-menu__burst-color.is-pink:focus-visible,
324
+ .user-menu__burst-color:not(.is-red):hover,
325
+ .user-menu__burst-color:not(.is-red):focus-visible {
326
+ background: rgba(255, 122, 189, 0.12);
327
+ }
328
+ .user-menu__burst-color.is-red,
329
+ .user-menu__burst-color.is-red:hover,
330
+ .user-menu__burst-color.is-red:focus-visible {
331
+ color: var(--burst-red);
332
+ }
333
+ .user-menu__burst-color.is-red:hover,
334
+ .user-menu__burst-color.is-red:focus-visible {
335
+ background: rgba(255, 51, 56, 0.12);
336
+ }
337
+ .user-menu__color-switch {
338
+ display: flex;
339
+ align-items: center;
340
+ gap: 4px;
341
+ flex: 0 0 auto;
342
+ font-size: 11px;
343
+ font-weight: 800;
344
+ letter-spacing: 0.04em;
345
+ line-height: 1;
346
+ user-select: none;
347
+ }
348
+ .user-menu__color-switch-opt.is-pink {
349
+ color: var(--burst-pink);
350
+ }
351
+ .user-menu__color-switch-opt.is-red {
352
+ color: var(--burst-red);
353
+ }
354
+ .user-menu__burst-color.is-pink .user-menu__color-switch-opt.is-red,
355
+ .user-menu__burst-color:not(.is-red) .user-menu__color-switch-opt.is-red {
356
+ opacity: 0.38;
357
+ }
358
+ .user-menu__burst-color.is-red .user-menu__color-switch-opt.is-pink {
359
+ opacity: 0.38;
360
+ }
361
+ .user-menu__color-switch-track {
362
+ position: relative;
363
+ width: 36px;
364
+ height: 20px;
365
+ flex: 0 0 auto;
366
+ border-radius: 999px;
367
+ background: var(--burst-pink);
368
+ box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.06);
369
+ }
370
+ .user-menu__color-switch-track::after {
371
+ content: "";
372
+ position: absolute;
373
+ top: 2px;
374
+ left: 2px;
375
+ width: 16px;
376
+ height: 16px;
377
+ border-radius: 50%;
378
+ background: #fff;
379
+ box-shadow: 0 1px 3px rgba(15, 23, 42, 0.2);
380
+ transition: transform 0.15s ease;
381
+ }
382
+ .user-menu__burst-color.is-red .user-menu__color-switch-track {
383
+ background: var(--burst-red);
384
+ }
385
+ .user-menu__burst-color.is-red .user-menu__color-switch-track::after {
386
+ transform: translateX(16px);
387
+ }
388
+ .user-menu__help {
389
+ width: 22px;
390
+ height: 22px;
391
+ flex: 0 0 auto;
392
+ margin: 0;
393
+ padding: 0;
394
+ border: 1px solid var(--line);
395
+ border-radius: 50%;
396
+ background: #fff;
397
+ color: var(--muted);
398
+ font: inherit;
399
+ font-size: 12px;
400
+ font-weight: 700;
401
+ line-height: 1;
402
+ cursor: pointer;
403
+ }
404
+ .user-menu__help:hover,
405
+ .user-menu__help:focus-visible {
406
+ border-color: var(--accent);
407
+ color: var(--accent);
408
+ outline: none;
409
+ }
410
+ .user-menu__help[aria-expanded="true"] {
411
+ background: rgba(232, 77, 26, 0.08);
412
+ border-color: var(--accent);
413
+ color: var(--accent);
414
+ }
415
+ .user-menu__help-bubble {
416
+ grid-column: 1 / -1;
417
+ margin: 0 2px 4px;
418
+ padding: 8px 10px;
419
+ border-radius: 8px;
420
+ background: var(--bg-2);
421
+ color: var(--muted);
422
+ font-size: 12px;
423
+ font-weight: 500;
424
+ line-height: 1.45;
425
+ }
426
+ .user-menu__help-bubble[hidden] {
427
+ display: none !important;
428
+ }
429
+ .header-menu__trigger {
430
+ gap: 6px;
431
+ }
432
+ .site-main { padding: 28px 0 64px; }
433
+ .site-footer {
434
+ display: flex; justify-content: space-between; gap: 16px;
435
+ padding: 24px 0 40px; color: var(--muted); border-top: 1px solid var(--line);
436
+ }
437
+
438
+ .btn {
439
+ display: inline-flex; align-items: center; justify-content: center;
440
+ border: 0; cursor: pointer; border-radius: 999px;
441
+ padding: 10px 16px; font-weight: 700; font-size: 14px;
442
+ }
443
+ .btn-primary { background: var(--accent); color: #fff; }
444
+ .btn-primary:hover { filter: brightness(1.06); color: #fff; }
445
+ .btn.is-busy,
446
+ a.is-busy {
447
+ pointer-events: none;
448
+ opacity: 0.72;
449
+ }
450
+ .btn-purple { background: #7c3aed; color: #fff; }
451
+ .btn-purple:hover { filter: brightness(1.06); color: #fff; }
452
+ .btn-ghost { background: transparent; color: var(--text); border: 1px solid var(--line); }
453
+ .btn-ghost:hover { background: var(--bg-2); }
454
+ .btn:disabled {
455
+ opacity: 0.45;
456
+ cursor: not-allowed;
457
+ }
458
+ .chip {
459
+ display: inline-flex; align-items: center; padding: 6px 10px; border-radius: 999px;
460
+ background: #f0fdf9; color: var(--teal); font-size: 12px;
461
+ border: 1px solid #ccfbf1;
462
+ }
463
+
464
+ .hero { display: grid; grid-template-columns: 1.3fr 0.9fr; gap: 32px; align-items: start; padding: 24px 0 48px; }
465
+ .lead { font-size: 1.08rem; color: var(--muted); max-width: 46ch; }
466
+ .eyebrow {
467
+ color: var(--accent);
468
+ font-weight: 700;
469
+ letter-spacing: 0.12em;
470
+ text-transform: uppercase;
471
+ font-size: 15px;
472
+ margin: 0 0 0.45rem;
473
+ }
474
+ .eyebrow--hero {
475
+ font-size: 18px;
476
+ letter-spacing: 0.16em;
477
+ }
478
+ .hero-actions, .inline-field { display: flex; gap: 10px; align-items: end; flex-wrap: wrap; }
479
+ .inline-field { margin: 0 0 12px; }
480
+ .hero-panel, .panel, .plan-card, .auth-card {
481
+ background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
482
+ padding: 22px; box-shadow: var(--shadow);
483
+ }
484
+ .stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 12px; margin-bottom: 18px; }
485
+ .stat-grid div, .hero-panel .stat-grid div {
486
+ background: var(--bg-2); border: 1px solid var(--line); border-radius: 14px; padding: 14px;
487
+ }
488
+ .stat-grid strong { display: block; font-size: 1.3rem; }
489
+ .stat-grid span, .muted { color: var(--muted); }
490
+ .role-list { list-style: none; padding: 0; margin: 0; }
491
+ .role-list li { padding: 10px 0; border-top: 1px solid var(--line); color: var(--muted); }
492
+ .role-list b { display: block; color: var(--text); }
493
+
494
+ .section { margin: 18px 0 46px; }
495
+ .section-head { display: flex; justify-content: space-between; gap: 16px; align-items: end; margin-bottom: 18px; }
496
+ .card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; }
497
+ .price { font-size: 2rem; font-family: var(--font-sans); margin: 8px 0; }
498
+ .price small { font-size: 0.9rem; color: var(--muted); margin-left: 6px; }
499
+ .is-locked { opacity: 0.72; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(232,77,26,0.04) 10px, rgba(232,77,26,0.04) 12px); }
500
+
501
+ .profile-grid .auth-card { width: auto; }
502
+ .auth-layout { display: grid; place-items: start center; padding-top: 20px; }
503
+ .auth-card { width: min(460px, 100%); }
504
+ .auth-tabs {
505
+ display: flex;
506
+ gap: 8px;
507
+ margin: 0 0 16px;
508
+ }
509
+ .auth-tab {
510
+ flex: 1;
511
+ padding: 8px 12px;
512
+ border-radius: 999px;
513
+ border: 1px solid var(--line);
514
+ background: #fff;
515
+ color: var(--muted);
516
+ font: inherit;
517
+ font-size: 14px;
518
+ cursor: pointer;
519
+ }
520
+ .auth-tab.is-on {
521
+ color: var(--text);
522
+ border-color: var(--accent);
523
+ background: rgba(232, 77, 26, 0.08);
524
+ }
525
+ .form-stack { display: grid; gap: 12px; }
526
+ .profile-field { display: grid; gap: 6px; }
527
+ .profile-field > .muted { margin: 0; font-size: 14px; }
528
+ .profile-username-row {
529
+ display: flex;
530
+ align-items: center;
531
+ gap: 8px;
532
+ min-height: 42px;
533
+ }
534
+ .profile-username-value {
535
+ font-size: 16px;
536
+ color: var(--text);
537
+ }
538
+ .profile-edit-btn {
539
+ display: inline-flex;
540
+ align-items: center;
541
+ justify-content: center;
542
+ width: 32px;
543
+ height: 32px;
544
+ padding: 0;
545
+ border: none;
546
+ border-radius: 8px;
547
+ background: transparent;
548
+ color: var(--muted);
549
+ cursor: pointer;
550
+ }
551
+ .profile-edit-btn:hover {
552
+ color: var(--accent);
553
+ background: rgba(232, 77, 26, 0.08);
554
+ }
555
+ .profile-phone {
556
+ margin: 0;
557
+ font-size: 16px;
558
+ color: var(--text);
559
+ }
560
+ .profile-username-edit .errorlist { margin-top: 6px; }
561
+ label { display: grid; gap: 6px; font-size: 14px; color: var(--muted); }
562
+ .check-row {
563
+ display: flex;
564
+ flex-direction: row;
565
+ align-items: center;
566
+ gap: 8px;
567
+ }
568
+ .check-row input[type="checkbox"] {
569
+ width: 16px;
570
+ height: 16px;
571
+ margin: 0;
572
+ flex: 0 0 auto;
573
+ }
574
+ .check-row label {
575
+ display: inline;
576
+ margin: 0;
577
+ font-size: 14px;
578
+ color: var(--muted);
579
+ white-space: nowrap;
580
+ }
581
+ .field-input, select.field-input, textarea {
582
+ width: 100%; background: #fff; color: var(--text);
583
+ border: 1px solid var(--line); border-radius: 12px; padding: 10px 12px; font: inherit;
584
+ }
585
+ .errorlist { color: var(--danger); list-style: none; padding: 0; margin: 6px 0 0; font-size: 13px; }
586
+ .inline-field .field-input { flex: 1; min-width: 220px; }
587
+ .captcha-field { margin: 2px 0 4px; }
588
+ .captcha-row {
589
+ display: flex;
590
+ flex-wrap: wrap;
591
+ align-items: center;
592
+ gap: 8px;
593
+ }
594
+ .captcha-status { font-size: 14px; }
595
+
596
+ .roster-note-form { display: flex; gap: 8px; align-items: center; margin: 0; }
597
+ .roster-note-form .field-input { min-width: 140px; width: 180px; padding: 6px 10px; }
598
+ .table-wrap { overflow: auto; border: 1px solid var(--line); border-radius: 16px; }
599
+ .code-block {
600
+ margin: 0;
601
+ padding: 12px 14px;
602
+ overflow: auto;
603
+ max-height: 420px;
604
+ white-space: pre-wrap;
605
+ word-break: break-word;
606
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
607
+ font-size: 12px;
608
+ line-height: 1.45;
609
+ background: color-mix(in srgb, var(--line) 35%, transparent);
610
+ border-radius: 12px;
611
+ }
612
+ .pager {
613
+ display: flex;
614
+ flex-wrap: wrap;
615
+ gap: 8px;
616
+ align-items: center;
617
+ margin-top: 14px;
618
+ }
619
+ input.field-input[type="datetime-local"] {
620
+ min-width: 210px;
621
+ }
622
+ table { width: 100%; border-collapse: collapse; background: var(--card); }
623
+ th, td { padding: 12px 14px; text-align: left; border-bottom: 1px solid var(--line); }
624
+ th { color: var(--muted); font-weight: 600; font-size: 13px; background: var(--bg-2); }
625
+
626
+ .flash-stack {
627
+ width: min(var(--page-width), calc(100% - var(--page-gutter) * 2));
628
+ margin: 12px auto 0;
629
+ display: grid;
630
+ gap: 8px;
631
+ }
632
+ .flash { padding: 10px 14px; border-radius: 12px; background: var(--bg-2); border: 1px solid var(--line); }
633
+ .flash-success { background: rgba(22, 163, 74, 0.08); color: var(--ok); border-color: rgba(22, 163, 74, 0.2); }
634
+ .flash-error, .flash-warning { background: rgba(220, 38, 38, 0.08); color: var(--danger); border-color: rgba(220, 38, 38, 0.2); }
635
+ .flash-info { background: rgba(13, 148, 136, 0.08); color: var(--teal); border-color: rgba(13, 148, 136, 0.2); }
636
+
637
+ .staff-nav, .staff-tabs {
638
+ display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 18px;
639
+ }
640
+ .staff-nav a, .staff-tabs a {
641
+ padding: 6px 12px; border-radius: 999px; border: 1px solid var(--line); color: var(--muted);
642
+ }
643
+ .staff-nav a.is-on, .staff-tabs a.is-on { color: var(--text); border-color: var(--accent); background: rgba(232,77,26,0.08); }
644
+ .staff-log-title { margin: 22px 0 6px; font-size: 1.05rem; }
645
+ .staff-burst-prefs {
646
+ margin: 22px 0 8px;
647
+ padding: 16px 18px;
648
+ border: 1px solid var(--line);
649
+ border-radius: 14px;
650
+ background: var(--card);
651
+ }
652
+ .staff-burst-prefs h2 { margin: 0 0 6px; font-size: 1.1rem; }
653
+ .staff-burst-prefs__form { display: grid; gap: 14px; margin-top: 12px; }
654
+ .staff-burst-prefs__grid {
655
+ display: grid;
656
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
657
+ gap: 12px 16px;
658
+ align-items: end;
659
+ }
660
+ .staff-burst-prefs__grid label { display: grid; gap: 6px; font-size: 13px; color: var(--muted); }
661
+ .staff-burst-check {
662
+ display: flex !important;
663
+ align-items: center;
664
+ gap: 8px;
665
+ grid-template-columns: none !important;
666
+ min-height: 42px;
667
+ color: var(--text) !important;
668
+ }
669
+ .staff-burst-check input { width: 16px; height: 16px; }
670
+ .staff-burst-editor { margin-top: 28px; }
671
+ .staff-burst-slot-list { display: grid; gap: 14px; }
672
+ .staff-burst-slot {
673
+ border: 1px solid var(--line);
674
+ border-radius: 14px;
675
+ padding: 14px 16px;
676
+ background: var(--card);
677
+ }
678
+ .staff-burst-slot.is-empty { opacity: 0.78; }
679
+ .staff-burst-slot.is-locked {
680
+ border-color: rgba(232, 77, 26, 0.45);
681
+ box-shadow: inset 3px 0 0 var(--accent);
682
+ }
683
+ .staff-burst-badge {
684
+ display: inline-block;
685
+ margin-left: 6px;
686
+ padding: 1px 7px;
687
+ border-radius: 999px;
688
+ font-size: 11px;
689
+ font-weight: 600;
690
+ color: var(--accent);
691
+ border: 1px solid rgba(232, 77, 26, 0.35);
692
+ vertical-align: middle;
693
+ }
694
+ .staff-burst-badge--rec {
695
+ color: var(--ok, #15803d);
696
+ border-color: rgba(22, 163, 74, 0.35);
697
+ }
698
+ .staff-burst-slot__head {
699
+ display: flex;
700
+ flex-wrap: wrap;
701
+ gap: 10px;
702
+ justify-content: space-between;
703
+ align-items: center;
704
+ margin-bottom: 12px;
705
+ }
706
+ .staff-burst-slot__actions { display: flex; flex-wrap: wrap; gap: 8px; }
707
+ .staff-burst-slot__fields {
708
+ display: grid;
709
+ grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
710
+ gap: 10px 12px;
711
+ margin-bottom: 10px;
712
+ }
713
+ .staff-burst-slot__fields label { display: grid; gap: 5px; font-size: 12px; color: var(--muted); }
714
+ .staff-burst-slot__note { grid-column: 1 / -1; }
715
+ .staff-burst-slot__meta { margin: 0 0 10px; font-size: 13px; }
716
+ .scope-grid { display: grid; gap: 8px; margin: 0 0 16px; }
717
+ .burst-block { margin: 28px 0; }
718
+ .burst-block--plain { margin: 12px 0 0; }
719
+ .mode-label-badge {
720
+ display: inline-flex;
721
+ align-items: center;
722
+ justify-content: center;
723
+ border-radius: 999px;
724
+ padding: 5px 12px;
725
+ font-weight: 700;
726
+ font-size: 13px;
727
+ line-height: 1.2;
728
+ color: #fff;
729
+ user-select: none;
730
+ }
731
+ .mode-label-badge--single { background: var(--accent); }
732
+ .mode-label-badge--double { background: #7c3aed; }
733
+ .query-filters { margin-bottom: 12px; }
734
+ .filter-row { display: flex; gap: 12px; flex-wrap: wrap; align-items: end; margin-top: 10px; }
735
+ .filter-row label { min-width: 140px; }
736
+ .paywall-panel { max-width: 560px; }
737
+ .slot-meta { display: grid; gap: 8px; margin: 10px 0 0; font-size: 14px; }
738
+ .slot-meta div { display: grid; grid-template-columns: 72px 1fr; gap: 8px; align-items: start; }
739
+ .slot-meta dt { margin: 0; color: var(--muted); font-weight: 600; }
740
+ .slot-meta dd { margin: 0; }
741
+ .slot-meta .slot-note { grid-column: 1 / -1; display: grid; grid-template-columns: 72px 1fr; gap: 8px; }
742
+ .slot-gain { font-weight: 800; font-size: 1.05rem; }
743
+ .burst-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; }
744
+ .slot-card {
745
+ background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 14px;
746
+ }
747
+ .slot-card h4 { margin: 0 0 6px; }
748
+ .slot-card.is-empty { opacity: 0.55; }
749
+ .slot-bonly {
750
+ grid-column: 1 / -1;
751
+ border: 1px dashed var(--line);
752
+ border-radius: 14px;
753
+ padding: 10px 12px;
754
+ background: rgba(15, 23, 42, 0.02);
755
+ }
756
+ .slot-bonly > summary {
757
+ cursor: pointer;
758
+ list-style: none;
759
+ color: var(--muted);
760
+ font-weight: 700;
761
+ font-size: 14px;
762
+ user-select: none;
763
+ }
764
+ .slot-bonly > summary::-webkit-details-marker { display: none; }
765
+ .slot-bonly > summary::before {
766
+ content: "▸ ";
767
+ color: var(--accent);
768
+ }
769
+ .slot-bonly[open] > summary {
770
+ margin-bottom: 10px;
771
+ color: var(--text);
772
+ }
773
+ .slot-bonly[open] > summary::before { content: "▾ "; }
774
+ .slot-bonly .slot-card { margin: 0; }
775
+
776
+ /* —— 爆气查询列表 —— */
777
+ .site-main:has(.query-section) {
778
+ padding-top: 10px;
779
+ }
780
+ .query-section {
781
+ margin-top: 0;
782
+ }
783
+ .query-section .section-head {
784
+ align-items: start;
785
+ margin-bottom: 12px;
786
+ }
787
+ .query-section .section-head h1 {
788
+ flex: 0 0 auto;
789
+ margin-bottom: 0;
790
+ font-size: clamp(1.75rem, 3.5vw, 2.8rem);
791
+ }
792
+ .query-section .section-head p {
793
+ flex: 1 1 280px;
794
+ margin: 0;
795
+ max-width: 36em;
796
+ font-size: 13px;
797
+ line-height: 1.5;
798
+ color: var(--muted);
799
+ }
800
+ .query-shell {
801
+ display: grid;
802
+ grid-template-columns: 28px minmax(0, 1fr);
803
+ gap: 10px;
804
+ align-items: start;
805
+ }
806
+ .alpha-rail {
807
+ /* 热区相对 28px 栏宽向外扩一截,便于鼠标/触屏滑动选字母 */
808
+ --alpha-rail-pad-start: 14px;
809
+ --alpha-rail-pad-end: 20px;
810
+ --alpha-rail-pad-y: 10px;
811
+ position: sticky;
812
+ top: 0;
813
+ z-index: 15;
814
+ display: flex;
815
+ flex-direction: column;
816
+ gap: 4px;
817
+ width: 28px;
818
+ box-sizing: content-box;
819
+ max-height: calc(100vh - 40px);
820
+ overflow-y: auto;
821
+ overflow-x: hidden;
822
+ overscroll-behavior: contain;
823
+ padding: var(--alpha-rail-pad-y) var(--alpha-rail-pad-end) var(--alpha-rail-pad-y) var(--alpha-rail-pad-start);
824
+ margin: calc(var(--alpha-rail-pad-y) * -1) calc(var(--alpha-rail-pad-end) * -1) calc(var(--alpha-rail-pad-y) * -1) calc(var(--alpha-rail-pad-start) * -1);
825
+ border-right: none;
826
+ scrollbar-width: none;
827
+ -ms-overflow-style: none;
828
+ touch-action: none;
829
+ cursor: pointer;
830
+ user-select: none;
831
+ -webkit-user-select: none;
832
+ }
833
+ .alpha-rail::after {
834
+ content: "";
835
+ position: absolute;
836
+ inset: 0 auto 0 auto;
837
+ left: calc(var(--alpha-rail-pad-start) + 28px);
838
+ width: 1px;
839
+ background: var(--line);
840
+ pointer-events: none;
841
+ }
842
+ .alpha-rail::-webkit-scrollbar {
843
+ display: none;
844
+ }
845
+ .alpha-rail__item {
846
+ display: grid;
847
+ place-items: center;
848
+ width: 28px;
849
+ min-height: 22px;
850
+ padding: 2px 0;
851
+ border-radius: 5px;
852
+ color: var(--muted);
853
+ font-size: 13px;
854
+ font-weight: 600;
855
+ font-family: var(--font-sans);
856
+ font-variant-numeric: tabular-nums;
857
+ line-height: 1;
858
+ letter-spacing: 0;
859
+ flex: 0 0 auto;
860
+ }
861
+ .alpha-rail__item:hover,
862
+ .alpha-rail__item.is-scrub {
863
+ color: var(--text);
864
+ background: rgba(232, 77, 26, 0.1);
865
+ }
866
+ .alpha-rail__item.is-on,
867
+ .alpha-rail__item.is-on:hover,
868
+ .alpha-rail__item.is-on.is-scrub {
869
+ color: #fff;
870
+ background: var(--text);
871
+ font-weight: 700;
872
+ }
873
+ .query-toolbar { margin-bottom: 8px; }
874
+ .query-section .query-toolbar {
875
+ position: sticky;
876
+ top: 0;
877
+ z-index: 20;
878
+ margin-bottom: 2px;
879
+ padding: 6px 0 10px;
880
+ background: var(--bg);
881
+ box-shadow: 0 1px 0 var(--line);
882
+ }
883
+ .query-section .bpm-combo__menu {
884
+ z-index: 30;
885
+ }
886
+ .query-section .query-filters {
887
+ margin-bottom: 0;
888
+ }
889
+ .query-section .query-mode-line {
890
+ display: flex;
891
+ flex-wrap: nowrap;
892
+ align-items: stretch;
893
+ gap: 0 2px;
894
+ margin-bottom: 8px;
895
+ width: 100%;
896
+ min-width: 0;
897
+ }
898
+ .query-section .family-filter,
899
+ .query-section .star-filter,
900
+ .query-section .bpm-filter {
901
+ display: flex;
902
+ align-items: center;
903
+ gap: 2px;
904
+ flex: 1 1 0;
905
+ min-width: 0;
906
+ }
907
+ .query-section .star-filter {
908
+ margin-left: -1px;
909
+ }
910
+ .query-section .family-picker,
911
+ .query-section .star-picker,
912
+ .query-section .bpm-combo {
913
+ flex: 1 1 auto;
914
+ min-width: 0;
915
+ }
916
+ .query-section .family-filter__text,
917
+ .query-section .star-filter__text,
918
+ .query-section .bpm-filter__text {
919
+ flex: 0 0 auto;
920
+ min-width: 0;
921
+ font-size: 12px;
922
+ letter-spacing: -0.02em;
923
+ }
924
+ .query-section .star-picker__trigger,
925
+ .query-section .family-picker__trigger {
926
+ width: 100%;
927
+ min-width: 4.35rem;
928
+ max-width: none;
929
+ padding: 6px 3px 6px 6px;
930
+ gap: 2px;
931
+ font-size: 12px;
932
+ }
933
+ .query-section .family-picker__value {
934
+ gap: 0.25em;
935
+ font-size: 12px;
936
+ }
937
+ .query-section .family-picker__icon {
938
+ width: 14px;
939
+ height: 14px;
940
+ }
941
+ .query-section .star-picker__value {
942
+ font-size: 12px;
943
+ }
944
+ .query-section .star-picker__caret,
945
+ .query-section .family-picker__caret {
946
+ font-size: 10px;
947
+ }
948
+ .query-section .bpm-combo__field {
949
+ box-sizing: border-box;
950
+ width: 100%;
951
+ min-width: calc(4.75ch + 1.05rem);
952
+ max-width: none;
953
+ border-radius: 12px;
954
+ overflow: hidden;
955
+ }
956
+ .query-section .bpm-combo__input,
957
+ .query-section .bpm-combo__input[readonly] {
958
+ width: auto;
959
+ min-width: 4.75ch;
960
+ max-width: none;
961
+ flex: 1 1 auto;
962
+ padding: 6px 2px 6px 6px;
963
+ font-size: 12px;
964
+ overflow: hidden;
965
+ text-overflow: clip;
966
+ }
967
+ .query-section .bpm-combo__caret {
968
+ padding: 0 4px;
969
+ font-size: 10px;
970
+ }
971
+ .query-section .query-search-line {
972
+ width: 100%;
973
+ }
974
+ .query-section .family-filter__text,
975
+ .query-section .star-filter__text,
976
+ .query-section .bpm-filter__text,
977
+ .query-section .search-filter__text {
978
+ flex: 0 0 auto;
979
+ }
980
+ .query-section .search-filter {
981
+ display: flex;
982
+ align-items: center;
983
+ gap: 8px;
984
+ width: 100%;
985
+ min-width: 0;
986
+ }
987
+ .query-section .search-filter .search-box {
988
+ position: relative;
989
+ flex: 1 1 auto;
990
+ min-width: 0;
991
+ width: auto;
992
+ max-width: none;
993
+ }
994
+ .query-section .search-filter .field-input {
995
+ width: 100%;
996
+ min-width: 0;
997
+ padding: 8px 32px 8px 10px;
998
+ font-size: 13px;
999
+ }
1000
+ .query-section .search-filter .btn {
1001
+ flex: 0 0 auto;
1002
+ margin-right: calc(-1 * var(--query-bleed-right) + 8px);
1003
+ padding: 8px 12px;
1004
+ font-size: 13px;
1005
+ }
1006
+ .query-section .query-main {
1007
+ overflow: visible;
1008
+ min-width: 0;
1009
+ margin-right: var(--query-bleed-right);
1010
+ }
1011
+ .query-mode-line {
1012
+ display: flex;
1013
+ flex-wrap: wrap;
1014
+ align-items: center;
1015
+ gap: 10px 16px;
1016
+ margin-bottom: 12px;
1017
+ }
1018
+ .star-filter {
1019
+ display: inline-flex;
1020
+ align-items: center;
1021
+ gap: 8px;
1022
+ min-width: 0;
1023
+ flex: 0 0 auto;
1024
+ }
1025
+ .star-filter__text {
1026
+ color: var(--muted);
1027
+ font-weight: 600;
1028
+ font-size: 13px;
1029
+ white-space: nowrap;
1030
+ }
1031
+ .star-picker {
1032
+ position: relative;
1033
+ }
1034
+ .star-picker__native {
1035
+ position: absolute;
1036
+ width: 1px;
1037
+ height: 1px;
1038
+ opacity: 0;
1039
+ pointer-events: none;
1040
+ }
1041
+ .star-picker__trigger,
1042
+ .family-picker__trigger {
1043
+ display: inline-flex;
1044
+ align-items: center;
1045
+ justify-content: space-between;
1046
+ gap: 6px;
1047
+ box-sizing: border-box;
1048
+ width: 5.25rem;
1049
+ min-width: 5.25rem;
1050
+ max-width: 5.25rem;
1051
+ padding: 8px 8px 8px 10px;
1052
+ cursor: pointer;
1053
+ text-align: left;
1054
+ }
1055
+ .star-picker__value,
1056
+ .family-picker__value {
1057
+ flex: 1 1 auto;
1058
+ min-width: 0;
1059
+ overflow: hidden;
1060
+ text-overflow: ellipsis;
1061
+ white-space: nowrap;
1062
+ }
1063
+ .star-picker__value {
1064
+ font-size: 13px;
1065
+ font-weight: 600;
1066
+ }
1067
+ .star-picker__caret,
1068
+ .family-picker__caret {
1069
+ color: var(--muted);
1070
+ font-size: 12px;
1071
+ line-height: 1;
1072
+ flex: 0 0 auto;
1073
+ }
1074
+ .star-picker__menu {
1075
+ position: absolute;
1076
+ top: calc(100% + 4px);
1077
+ left: 0;
1078
+ z-index: 30;
1079
+ min-width: 100%;
1080
+ background: #fff;
1081
+ border: 1px solid var(--line);
1082
+ border-radius: 12px;
1083
+ box-shadow: var(--shadow);
1084
+ padding: 6px;
1085
+ display: grid;
1086
+ gap: 2px;
1087
+ }
1088
+ .star-picker__menu[hidden] {
1089
+ display: none !important;
1090
+ }
1091
+ .star-picker__option {
1092
+ display: block;
1093
+ width: 100%;
1094
+ border: 0;
1095
+ background: transparent;
1096
+ border-radius: 8px;
1097
+ padding: 8px 10px;
1098
+ font: inherit;
1099
+ font-size: 13px;
1100
+ font-weight: 600;
1101
+ color: var(--text);
1102
+ cursor: pointer;
1103
+ text-align: left;
1104
+ white-space: nowrap;
1105
+ }
1106
+ .star-picker__option:hover,
1107
+ .star-picker__option.is-on {
1108
+ background: rgba(232, 77, 26, 0.08);
1109
+ }
1110
+ .search-filter__text {
1111
+ color: var(--muted);
1112
+ font-weight: 600;
1113
+ font-size: 13px;
1114
+ white-space: nowrap;
1115
+ }
1116
+ .bpm-filter {
1117
+ display: inline-flex;
1118
+ align-items: center;
1119
+ gap: 8px;
1120
+ min-width: 0;
1121
+ flex: 0 0 auto;
1122
+ }
1123
+ .bpm-filter__text {
1124
+ color: var(--muted);
1125
+ font-weight: 600;
1126
+ font-size: 13px;
1127
+ white-space: nowrap;
1128
+ }
1129
+ .bpm-combo {
1130
+ position: relative;
1131
+ }
1132
+ .bpm-combo__field {
1133
+ display: inline-flex;
1134
+ align-items: stretch;
1135
+ width: auto;
1136
+ min-width: 0;
1137
+ padding: 0;
1138
+ overflow: visible;
1139
+ }
1140
+ .bpm-combo__input {
1141
+ flex: 0 1 auto;
1142
+ width: 5.5ch;
1143
+ min-width: 5.5ch;
1144
+ max-width: 10ch;
1145
+ border: none;
1146
+ background: transparent;
1147
+ font: inherit;
1148
+ font-size: 13px;
1149
+ font-weight: 600;
1150
+ font-variant-numeric: tabular-nums;
1151
+ padding: 8px 4px 8px 10px;
1152
+ color: var(--text);
1153
+ }
1154
+ .bpm-combo__input::placeholder {
1155
+ color: var(--muted);
1156
+ font-weight: 600;
1157
+ }
1158
+ .bpm-combo__input:focus {
1159
+ outline: none;
1160
+ }
1161
+ .bpm-combo__input[readonly] {
1162
+ width: auto;
1163
+ min-width: 5.5ch;
1164
+ max-width: none;
1165
+ color: var(--muted);
1166
+ cursor: text;
1167
+ }
1168
+ .bpm-combo__caret {
1169
+ flex: 0 0 auto;
1170
+ align-self: stretch;
1171
+ display: inline-flex;
1172
+ align-items: center;
1173
+ border: none;
1174
+ border-left: 1px solid var(--line);
1175
+ background: rgba(0, 0, 0, 0.02);
1176
+ color: var(--muted);
1177
+ font: inherit;
1178
+ font-size: 12px;
1179
+ line-height: 1;
1180
+ padding: 0 7px;
1181
+ cursor: pointer;
1182
+ }
1183
+ .bpm-combo__caret:hover {
1184
+ color: var(--text);
1185
+ background: rgba(232, 77, 26, 0.06);
1186
+ }
1187
+ .bpm-combo__menu {
1188
+ position: absolute;
1189
+ z-index: 20;
1190
+ top: calc(100% + 4px);
1191
+ left: 0;
1192
+ min-width: 100%;
1193
+ max-height: 280px;
1194
+ overflow: auto;
1195
+ border: 1px solid var(--line);
1196
+ border-radius: 10px;
1197
+ background: #fff;
1198
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
1199
+ padding: 4px;
1200
+ }
1201
+ .bpm-combo__menu[hidden] {
1202
+ display: none !important;
1203
+ }
1204
+ .bpm-combo__option {
1205
+ display: block;
1206
+ width: 100%;
1207
+ border: none;
1208
+ border-radius: 8px;
1209
+ background: transparent;
1210
+ color: var(--text);
1211
+ font: inherit;
1212
+ font-size: 13px;
1213
+ font-weight: 600;
1214
+ text-align: left;
1215
+ padding: 8px 10px;
1216
+ cursor: pointer;
1217
+ white-space: nowrap;
1218
+ }
1219
+ .bpm-combo__option:hover,
1220
+ .bpm-combo__option.is-on {
1221
+ background: rgba(232, 77, 26, 0.08);
1222
+ }
1223
+ .family-filter {
1224
+ display: inline-flex;
1225
+ align-items: center;
1226
+ gap: 8px;
1227
+ min-width: 0;
1228
+ flex: 0 0 auto;
1229
+ }
1230
+ .family-filter__text {
1231
+ color: var(--muted);
1232
+ font-weight: 600;
1233
+ font-size: 13px;
1234
+ white-space: nowrap;
1235
+ }
1236
+ .family-picker {
1237
+ position: relative;
1238
+ }
1239
+ .family-picker__native {
1240
+ position: absolute;
1241
+ width: 1px;
1242
+ height: 1px;
1243
+ opacity: 0;
1244
+ pointer-events: none;
1245
+ }
1246
+ .family-picker__value {
1247
+ display: inline-flex;
1248
+ align-items: center;
1249
+ gap: 0.35em;
1250
+ font-size: 13px;
1251
+ font-weight: 600;
1252
+ }
1253
+ .family-picker__value > span {
1254
+ overflow: hidden;
1255
+ text-overflow: ellipsis;
1256
+ white-space: nowrap;
1257
+ }
1258
+ .family-picker__menu {
1259
+ position: absolute;
1260
+ top: calc(100% + 4px);
1261
+ left: 0;
1262
+ z-index: 30;
1263
+ min-width: 100%;
1264
+ background: #fff;
1265
+ border: 1px solid var(--line);
1266
+ border-radius: 12px;
1267
+ box-shadow: var(--shadow);
1268
+ padding: 6px;
1269
+ display: grid;
1270
+ gap: 2px;
1271
+ }
1272
+ .family-picker__menu[hidden] {
1273
+ display: none !important;
1274
+ }
1275
+ .family-picker__option {
1276
+ display: flex;
1277
+ align-items: center;
1278
+ gap: 0.45em;
1279
+ width: 100%;
1280
+ border: 0;
1281
+ background: transparent;
1282
+ border-radius: 8px;
1283
+ padding: 8px 10px;
1284
+ font: inherit;
1285
+ font-size: 13px;
1286
+ font-weight: 600;
1287
+ color: var(--text);
1288
+ cursor: pointer;
1289
+ text-align: left;
1290
+ }
1291
+ .family-picker__option:hover,
1292
+ .family-picker__option.is-on {
1293
+ background: rgba(232, 77, 26, 0.08);
1294
+ }
1295
+ .family-picker__icon {
1296
+ width: 1em;
1297
+ height: 1em;
1298
+ object-fit: contain;
1299
+ flex: 0 0 auto;
1300
+ display: block;
1301
+ }
1302
+ .family-picker__icon.is-ornate {
1303
+ width: 1.35em;
1304
+ height: 1em;
1305
+ }
1306
+ .mode-badge {
1307
+ width: 28px;
1308
+ height: 28px;
1309
+ border-radius: 50%;
1310
+ display: inline-grid;
1311
+ place-items: center;
1312
+ font-size: 12px;
1313
+ font-weight: 800;
1314
+ color: #fff;
1315
+ background: #334155;
1316
+ flex: 0 0 auto;
1317
+ }
1318
+ .mode-badge[data-family="xingdong"] { background: #e8408c; }
1319
+ .mode-badge[data-family="dianfeng"] { background: #7c3aed; }
1320
+ .mode-badge[data-family="pinball"] { background: #6d28d9; }
1321
+ .mode-badge[data-family="bubble"] { background: #0ea5e9; }
1322
+ .mode-badge[data-family="crescent"] { background: #ea580c; }
1323
+ .mode-icon-row {
1324
+ display: flex;
1325
+ flex-wrap: wrap;
1326
+ gap: 8px;
1327
+ flex: 1 1 auto;
1328
+ min-width: 0;
1329
+ margin-bottom: 0;
1330
+ }
1331
+ .mode-icon-chip {
1332
+ display: inline-flex;
1333
+ align-items: center;
1334
+ padding: 8px 14px;
1335
+ border-radius: 999px;
1336
+ border: 1px solid var(--line);
1337
+ color: var(--muted);
1338
+ background: #fff;
1339
+ font-weight: 700;
1340
+ font-size: 13px;
1341
+ }
1342
+ .mode-icon-chip:hover,
1343
+ .mode-icon-chip.is-on {
1344
+ color: var(--text);
1345
+ border-color: var(--accent);
1346
+ background: rgba(232, 77, 26, 0.06);
1347
+ }
1348
+ .mode-icon {
1349
+ width: 32px;
1350
+ height: 32px;
1351
+ border-radius: 50%;
1352
+ display: block;
1353
+ flex: 0 0 auto;
1354
+ box-shadow: 0 2px 8px rgba(15, 23, 42, 0.12);
1355
+ object-fit: cover;
1356
+ }
1357
+ .mode-icon--ornate {
1358
+ width: 40px;
1359
+ height: 28px;
1360
+ border-radius: 0;
1361
+ object-fit: contain;
1362
+ box-shadow: none;
1363
+ filter: drop-shadow(0 2px 6px rgba(124, 58, 237, 0.28));
1364
+ }
1365
+ .mode-icon--sm { width: 28px; height: 28px; }
1366
+ .mode-icon--sm.mode-icon--ornate { width: 36px; height: 24px; }
1367
+ .star-badge {
1368
+ width: 28px;
1369
+ height: 28px;
1370
+ border-radius: 50%;
1371
+ display: inline-grid;
1372
+ place-items: center;
1373
+ font-size: 12px;
1374
+ font-weight: 800;
1375
+ border: 1px solid var(--line);
1376
+ background: #fff;
1377
+ color: var(--text);
1378
+ }
1379
+ .query-filter-row { margin-top: 0; align-items: end; }
1380
+ .query-search-field { flex: 1; min-width: 200px; align-items: center; }
1381
+ .search-box {
1382
+ position: relative;
1383
+ flex: 1;
1384
+ min-width: 200px;
1385
+ }
1386
+ .search-box .field-input {
1387
+ width: 100%;
1388
+ min-width: 0;
1389
+ padding-right: 38px;
1390
+ }
1391
+ .search-box input[type="search"]::-webkit-search-cancel-button,
1392
+ .query-search-field input[type="search"]::-webkit-search-cancel-button {
1393
+ -webkit-appearance: none;
1394
+ appearance: none;
1395
+ display: none;
1396
+ }
1397
+ .search-box input[type="search"]::-ms-clear,
1398
+ .query-search-field input[type="search"]::-ms-clear {
1399
+ display: none;
1400
+ }
1401
+ .search-clear {
1402
+ position: absolute;
1403
+ right: 8px;
1404
+ top: 50%;
1405
+ transform: translateY(-50%);
1406
+ width: 26px;
1407
+ height: 26px;
1408
+ border: 0;
1409
+ border-radius: 50%;
1410
+ background: transparent;
1411
+ color: var(--muted);
1412
+ font-size: 20px;
1413
+ line-height: 1;
1414
+ display: none;
1415
+ place-items: center;
1416
+ cursor: pointer;
1417
+ padding: 0;
1418
+ }
1419
+ .search-clear.is-on { display: grid; }
1420
+ .search-clear:hover { color: var(--text); background: rgba(15, 23, 42, 0.06); }
1421
+ .query-hint { margin: 0 0 10px; }
1422
+ .query-section .query-hint {
1423
+ margin: 0 0 8px;
1424
+ }
1425
+ .query-hint__summary { color: var(--text); }
1426
+ .query-hint__mode,
1427
+ .query-hint__star,
1428
+ .query-hint__letter { font-weight: 700; }
1429
+ .query-hint__mode[data-family="xingdong"] { color: #c026a8; } /* 粉紫 */
1430
+ .query-hint__mode[data-family="dianfeng"] { color: #7c3aed; } /* 紫 */
1431
+ .query-hint__mode[data-family="pinball"] { color: #0891b2; } /* 青蓝 */
1432
+ .query-hint__mode[data-family="bubble"] { color: #ca8a04; } /* 金黄 */
1433
+ .query-hint__mode[data-family="crescent"] { color: #ea580c; } /* 橙红 */
1434
+ .query-hint__star { color: var(--text); }
1435
+ .query-hint__letter { color: var(--text); }
1436
+ .query-hint__bpm {
1437
+ font-weight: 700;
1438
+ color: var(--text);
1439
+ font-variant-numeric: tabular-nums;
1440
+ }
1441
+ .query-hint__q { color: var(--text); font-weight: 800; }
1442
+ .song-list {
1443
+ border: 1px solid var(--line);
1444
+ border-radius: 14px;
1445
+ background: var(--card);
1446
+ overflow: hidden;
1447
+ }
1448
+ .song-row {
1449
+ width: 100%;
1450
+ display: flex;
1451
+ flex-wrap: nowrap;
1452
+ align-items: center;
1453
+ gap: 8px 12px;
1454
+ padding: 12px 16px;
1455
+ border: 0;
1456
+ border-bottom: 1px solid #e8eaee;
1457
+ background: transparent;
1458
+ color: var(--text);
1459
+ text-align: left;
1460
+ cursor: pointer;
1461
+ font: inherit;
1462
+ }
1463
+ .song-row[hidden] {
1464
+ display: none !important;
1465
+ }
1466
+ .song-row:last-child { border-bottom: 0; }
1467
+ .song-row:hover { background: rgba(15, 23, 42, 0.03); }
1468
+ .song-row.is-fire,
1469
+ .song-row.is-fire .song-row__title { color: var(--danger); }
1470
+ .song-row__title-rail {
1471
+ flex: 1 1 auto;
1472
+ min-width: 0;
1473
+ overflow: hidden;
1474
+ cursor: default;
1475
+ touch-action: pan-y;
1476
+ user-select: none;
1477
+ -webkit-user-select: none;
1478
+ }
1479
+ .song-row__title-rail.is-overflow {
1480
+ cursor: grab;
1481
+ touch-action: none;
1482
+ }
1483
+ .song-row__title-rail.is-dragging {
1484
+ cursor: grabbing;
1485
+ }
1486
+ .song-row__title {
1487
+ display: inline-block;
1488
+ max-width: none;
1489
+ font-weight: 700;
1490
+ white-space: nowrap;
1491
+ will-change: transform;
1492
+ }
1493
+ .song-row__meta {
1494
+ display: inline-flex;
1495
+ flex-wrap: nowrap;
1496
+ flex: 0 0 auto;
1497
+ gap: 6px;
1498
+ color: var(--muted);
1499
+ font-size: 13px;
1500
+ white-space: nowrap;
1501
+ }
1502
+ .song-row.is-fire .song-row__meta { color: #f87171; }
1503
+ .song-row__bpm {
1504
+ flex: 0 0 auto;
1505
+ margin-left: 0;
1506
+ color: var(--muted);
1507
+ font-size: 13px;
1508
+ font-variant-numeric: tabular-nums;
1509
+ white-space: nowrap;
1510
+ }
1511
+ .song-row.is-fire .song-row__bpm { color: #f87171; }
1512
+ .song-tag { font-weight: 600; }
1513
+ .song-list__empty { margin: 0; padding: 24px 16px; }
1514
+
1515
+ .category-modal[hidden] { display: none !important; }
1516
+ .category-modal {
1517
+ position: fixed;
1518
+ inset: 0;
1519
+ z-index: 40;
1520
+ display: grid;
1521
+ place-items: center;
1522
+ padding: 24px;
1523
+ }
1524
+ .category-modal__backdrop {
1525
+ position: absolute;
1526
+ inset: 0;
1527
+ background: rgba(15, 23, 42, 0.45);
1528
+ }
1529
+ .category-modal__panel {
1530
+ position: relative;
1531
+ width: min(440px, 100%);
1532
+ background: #fff;
1533
+ border-radius: 18px;
1534
+ border: 1px solid var(--line);
1535
+ box-shadow: var(--shadow);
1536
+ padding: 28px 24px 24px;
1537
+ }
1538
+ .category-modal__x {
1539
+ position: absolute;
1540
+ top: 10px;
1541
+ right: 12px;
1542
+ width: 32px;
1543
+ height: 32px;
1544
+ border: 0;
1545
+ border-radius: 50%;
1546
+ background: transparent;
1547
+ font-size: 22px;
1548
+ line-height: 1;
1549
+ color: var(--muted);
1550
+ cursor: pointer;
1551
+ }
1552
+ .category-modal__warn {
1553
+ margin: 0 0 14px;
1554
+ color: var(--danger);
1555
+ font-size: 12px;
1556
+ line-height: 1.45;
1557
+ }
1558
+ .category-modal__mode {
1559
+ display: flex;
1560
+ align-items: center;
1561
+ gap: 6px;
1562
+ margin: 0 0 8px;
1563
+ flex-wrap: wrap;
1564
+ }
1565
+ .category-modal__mode-lead {
1566
+ color: var(--text);
1567
+ }
1568
+ .category-modal__mode-pick {
1569
+ display: inline-flex;
1570
+ align-items: center;
1571
+ gap: 8px;
1572
+ }
1573
+ .category-modal__mode-name {
1574
+ font-weight: 700;
1575
+ }
1576
+ .category-modal__mode-meta {
1577
+ color: var(--text);
1578
+ font-size: 14px;
1579
+ font-weight: 600;
1580
+ font-variant-numeric: tabular-nums;
1581
+ white-space: nowrap;
1582
+ }
1583
+ .category-modal__mode-name[data-family="xingdong"] { color: #c026a8; }
1584
+ .category-modal__mode-name[data-family="dianfeng"] { color: #7c3aed; }
1585
+ .category-modal__mode-name[data-family="pinball"] { color: #0891b2; }
1586
+ .category-modal__mode-name[data-family="bubble"] { color: #ca8a04; }
1587
+ .category-modal__mode-name[data-family="crescent"] { color: #ea580c; }
1588
+ .category-modal__title {
1589
+ margin: 0 0 18px;
1590
+ font-size: 1.45rem;
1591
+ }
1592
+ .category-modal__title:has(+ .category-modal__artist:not([hidden])) {
1593
+ margin-bottom: 4px;
1594
+ }
1595
+ .category-modal__artist {
1596
+ margin: 0 0 16px;
1597
+ color: var(--muted);
1598
+ font-size: 13px;
1599
+ line-height: 1.4;
1600
+ }
1601
+ .category-modal__artist[hidden] {
1602
+ display: none !important;
1603
+ }
1604
+ .category-modal__prompt {
1605
+ margin: 0 0 14px;
1606
+ color: var(--text);
1607
+ }
1608
+ .category-modal__actions {
1609
+ display: flex;
1610
+ flex-wrap: wrap;
1611
+ gap: 10px;
1612
+ }
1613
+ .category-modal__actions [hidden] {
1614
+ display: none !important;
1615
+ }
1616
+ .category-modal__lock { margin: 12px 0 0; }
1617
+ .resume-modal__body {
1618
+ margin: 0 0 12px;
1619
+ line-height: 1.6;
1620
+ }
1621
+ .resume-modal .category-modal__title { font-size: 22px; }
1622
+
1623
+ /* —— 爆点详情 —— */
1624
+ .burst-detail {
1625
+ max-width: 720px;
1626
+ margin-left: auto;
1627
+ margin-right: auto;
1628
+ }
1629
+ .burst-detail__card {
1630
+ background: var(--card);
1631
+ border: 1px solid var(--line);
1632
+ border-radius: 22px;
1633
+ padding: 16px 16px 18px;
1634
+ box-shadow: var(--shadow);
1635
+ }
1636
+ .burst-detail__head {
1637
+ display: grid;
1638
+ gap: 10px;
1639
+ margin-bottom: 12px;
1640
+ }
1641
+ .burst-detail__mode-line {
1642
+ display: flex;
1643
+ flex-wrap: wrap;
1644
+ align-items: center;
1645
+ gap: 8px;
1646
+ }
1647
+ .burst-family-pill {
1648
+ display: inline-flex;
1649
+ align-items: center;
1650
+ gap: 6px;
1651
+ padding: 3px 12px 3px 3px;
1652
+ border-radius: 999px;
1653
+ background: #fce7f3;
1654
+ color: #9d174d;
1655
+ font-weight: 700;
1656
+ font-size: 14px;
1657
+ line-height: 1.2;
1658
+ }
1659
+ .burst-family-pill .mode-icon {
1660
+ width: 24px;
1661
+ height: 24px;
1662
+ box-shadow: none;
1663
+ }
1664
+ .burst-family-pill .mode-icon--ornate {
1665
+ width: 32px;
1666
+ height: 22px;
1667
+ }
1668
+ .burst-family-pill[data-family="xingdong"] { background: #fce7f3; color: #9d174d; }
1669
+ .burst-family-pill[data-family="dianfeng"] { background: #ede9fe; color: #6d28d9; }
1670
+ .burst-family-pill[data-family="pinball"] { background: #cffafe; color: #0e7490; }
1671
+ .burst-family-pill[data-family="bubble"] { background: #fef9c3; color: #a16207; }
1672
+ .burst-family-pill[data-family="crescent"] { background: #ffedd5; color: #c2410c; }
1673
+ .burst-family-pill__text { white-space: nowrap; }
1674
+ .burst-detail__mode-name {
1675
+ font-weight: 700;
1676
+ font-size: 15px;
1677
+ }
1678
+ .burst-detail__mode-name[data-family="xingdong"] { color: #c026a8; }
1679
+ .burst-detail__mode-name[data-family="dianfeng"] { color: #7c3aed; }
1680
+ .burst-detail__mode-name[data-family="pinball"] { color: #0891b2; }
1681
+ .burst-detail__mode-name[data-family="bubble"] { color: #ca8a04; }
1682
+ .burst-detail__mode-name[data-family="crescent"] { color: #ea580c; }
1683
+ .burst-detail__star {
1684
+ font-weight: 700;
1685
+ font-size: 15px;
1686
+ color: var(--text);
1687
+ font-variant-numeric: tabular-nums;
1688
+ }
1689
+ .burst-detail__title-row {
1690
+ display: flex;
1691
+ flex-wrap: nowrap;
1692
+ align-items: center;
1693
+ gap: 8px 10px;
1694
+ min-width: 0;
1695
+ }
1696
+ .burst-detail__skill {
1697
+ width: 40px;
1698
+ height: 40px;
1699
+ object-fit: contain;
1700
+ border-radius: 50%;
1701
+ flex: 0 0 auto;
1702
+ }
1703
+ .burst-detail__title {
1704
+ margin: 0;
1705
+ flex: 1 1 auto;
1706
+ min-width: 0;
1707
+ font-family: var(--font-sans);
1708
+ font-size: clamp(1.45rem, 5vw, 1.85rem);
1709
+ font-weight: 900;
1710
+ line-height: 1.2;
1711
+ letter-spacing: 0;
1712
+ color: var(--text);
1713
+ overflow: hidden;
1714
+ text-overflow: ellipsis;
1715
+ white-space: nowrap;
1716
+ }
1717
+ .burst-detail__title.is-fire {
1718
+ color: var(--danger);
1719
+ }
1720
+ .burst-detail__bpm {
1721
+ margin-left: auto;
1722
+ flex: 0 0 auto;
1723
+ color: var(--muted);
1724
+ font-family: var(--font-sans);
1725
+ font-size: 14px;
1726
+ font-weight: 700;
1727
+ line-height: 1;
1728
+ font-variant-numeric: tabular-nums;
1729
+ white-space: nowrap;
1730
+ }
1731
+ .burst-detail__tags {
1732
+ display: flex;
1733
+ flex-wrap: wrap;
1734
+ align-items: center;
1735
+ gap: 8px;
1736
+ }
1737
+ .burst-chip {
1738
+ display: inline-flex;
1739
+ align-items: center;
1740
+ padding: 2px 10px;
1741
+ border-radius: 999px;
1742
+ border: 1px solid var(--line);
1743
+ background: #f3f4f6;
1744
+ color: var(--text);
1745
+ font-size: 12px;
1746
+ font-weight: 700;
1747
+ line-height: 1.5;
1748
+ }
1749
+ .burst-detail__close {
1750
+ width: 28px;
1751
+ height: 28px;
1752
+ margin-left: auto;
1753
+ border-radius: 50%;
1754
+ border: 1px solid var(--line);
1755
+ display: grid;
1756
+ place-items: center;
1757
+ color: var(--muted);
1758
+ font-size: 18px;
1759
+ line-height: 1;
1760
+ flex: 0 0 auto;
1761
+ }
1762
+ .burst-detail__close:hover { color: var(--text); border-color: var(--accent); }
1763
+ .burst-detail__switch { margin-bottom: 8px; }
1764
+ .burst-accordion { display: grid; gap: 14px; margin-bottom: 0; }
1765
+ .burst-item {
1766
+ background: transparent;
1767
+ overflow: visible;
1768
+ contain: layout;
1769
+ }
1770
+ .burst-item--bonly .burst-item__box { border-style: dashed; }
1771
+ .burst-item--empty {
1772
+ padding: 12px 14px;
1773
+ border: 1px dashed var(--line);
1774
+ border-radius: 14px;
1775
+ background: #fff;
1776
+ }
1777
+ .burst-item__box {
1778
+ position: relative;
1779
+ background: #f3f4f6;
1780
+ border-radius: 14px;
1781
+ padding: 12px 12px 10px;
1782
+ }
1783
+ .burst-code-stack {
1784
+ display: grid;
1785
+ gap: 10px;
1786
+ }
1787
+ .burst-code-row {
1788
+ display: flex;
1789
+ align-items: stretch;
1790
+ gap: 4px;
1791
+ min-width: 0;
1792
+ }
1793
+ .burst-code-col {
1794
+ display: flex;
1795
+ flex-direction: row;
1796
+ flex-wrap: wrap;
1797
+ align-items: baseline;
1798
+ gap: 0 4px;
1799
+ flex: 0 0 auto;
1800
+ min-width: 0;
1801
+ width: auto;
1802
+ }
1803
+ .burst-item.is-open .burst-code-col {
1804
+ flex-direction: column;
1805
+ align-items: flex-start;
1806
+ gap: 0;
1807
+ }
1808
+ .burst-code {
1809
+ font-size: 1.35rem;
1810
+ font-weight: 800;
1811
+ line-height: 1.25;
1812
+ color: #ff0000;
1813
+ letter-spacing: -0.02em;
1814
+ font-variant-numeric: tabular-nums;
1815
+ }
1816
+ .burst-code-rank {
1817
+ color: var(--muted);
1818
+ font-family: var(--font-sans);
1819
+ font-size: 11px;
1820
+ font-weight: 700;
1821
+ line-height: 1.2;
1822
+ letter-spacing: 0;
1823
+ white-space: nowrap;
1824
+ max-width: 100%;
1825
+ overflow: hidden;
1826
+ text-overflow: ellipsis;
1827
+ }
1828
+ .burst-code-rank:empty {
1829
+ display: none;
1830
+ }
1831
+ .burst-code.is-fire,
1832
+ .burst-item.is-fire .burst-code { color: #ff0000; }
1833
+ .burst-desc-card {
1834
+ background: #fff;
1835
+ border-radius: 10px;
1836
+ padding: 4px 8px;
1837
+ flex: 1 1 auto;
1838
+ min-width: 0;
1839
+ }
1840
+ .burst-descs {
1841
+ display: grid;
1842
+ gap: 1px;
1843
+ }
1844
+ .burst-item__toolbar {
1845
+ display: flex;
1846
+ flex-wrap: wrap;
1847
+ align-items: center;
1848
+ gap: 8px;
1849
+ margin-top: 10px;
1850
+ }
1851
+ .burst-item__correct {
1852
+ display: flex;
1853
+ align-items: center;
1854
+ gap: 6px;
1855
+ flex: 1 1 auto;
1856
+ flex-wrap: wrap;
1857
+ min-width: 0;
1858
+ }
1859
+ .burst-item__cb-input.field-input {
1860
+ width: 118px;
1861
+ min-width: 0;
1862
+ flex: 0 1 118px;
1863
+ padding: 7px 10px;
1864
+ font-size: 13px;
1865
+ border-radius: 8px;
1866
+ background: #fff;
1867
+ }
1868
+ .burst-item__calc,
1869
+ .burst-item__undo {
1870
+ padding: 7px 10px;
1871
+ font-size: 13px;
1872
+ white-space: nowrap;
1873
+ border-radius: 8px;
1874
+ background: #fff;
1875
+ }
1876
+ .burst-item__calc:disabled,
1877
+ .burst-item__undo:disabled {
1878
+ opacity: 1;
1879
+ color: var(--muted);
1880
+ background: #fff;
1881
+ }
1882
+ .burst-item__toggle {
1883
+ border: 1px solid var(--accent);
1884
+ background: var(--accent);
1885
+ padding: 3px 10px;
1886
+ border-radius: 999px;
1887
+ margin-left: auto;
1888
+ color: #fff;
1889
+ font: inherit;
1890
+ font-size: 12px;
1891
+ font-weight: 700;
1892
+ line-height: 1.4;
1893
+ text-decoration: none;
1894
+ cursor: pointer;
1895
+ flex: 0 0 auto;
1896
+ white-space: nowrap;
1897
+ transition: background-color 0.15s ease, border-color 0.15s ease;
1898
+ }
1899
+ .burst-item__box .burst-item__toggle--float {
1900
+ position: absolute;
1901
+ top: 8px;
1902
+ right: 12px;
1903
+ z-index: 5;
1904
+ margin-left: 0;
1905
+ background: var(--accent);
1906
+ color: #fff;
1907
+ border: 1px solid var(--accent);
1908
+ border-radius: 999px;
1909
+ padding: 3px 10px;
1910
+ }
1911
+ .burst-item__toggle:hover,
1912
+ .burst-item__toggle:focus-visible {
1913
+ color: #fff;
1914
+ background: var(--accent-2);
1915
+ border-color: var(--accent-2);
1916
+ outline: none;
1917
+ }
1918
+ .burst-item:not(.is-open) .burst-desc-card,
1919
+ .burst-item:not(.is-open) .burst-desc--type,
1920
+ .burst-item:not(.is-open) .burst-item__correct {
1921
+ display: none;
1922
+ }
1923
+ .burst-item:not(.is-open) .burst-code-row {
1924
+ display: flex;
1925
+ }
1926
+ .burst-item:not(.is-open) .burst-code-col {
1927
+ display: inline-flex;
1928
+ flex-direction: row;
1929
+ flex-wrap: nowrap;
1930
+ align-items: baseline;
1931
+ gap: 4px;
1932
+ max-width: none;
1933
+ width: auto;
1934
+ }
1935
+ .burst-item:not(.is-open) .burst-code-rank {
1936
+ white-space: nowrap;
1937
+ }
1938
+ .burst-item:not(.is-open) .burst-item__box {
1939
+ display: flex;
1940
+ align-items: center;
1941
+ gap: 8px 12px;
1942
+ padding: 10px 12px;
1943
+ }
1944
+ .burst-item:not(.is-open) .burst-code-stack {
1945
+ flex: 1 1 auto;
1946
+ min-width: 0;
1947
+ gap: 4px;
1948
+ }
1949
+ .burst-item:not(.is-open) .burst-item__toolbar {
1950
+ margin-top: 0;
1951
+ flex: 0 0 auto;
1952
+ }
1953
+ .burst-item__panel {
1954
+ display: grid;
1955
+ grid-template-rows: 0fr;
1956
+ }
1957
+ .burst-item.is-open .burst-item__panel { grid-template-rows: 1fr; }
1958
+ .burst-item__panel-inner {
1959
+ overflow: hidden;
1960
+ min-height: 0;
1961
+ }
1962
+ .burst-item__tail { margin-top: 0; }
1963
+ .burst-item.is-open .burst-item__tail { margin-top: 10px; }
1964
+ .burst-item__body { padding: 0; text-align: left; }
1965
+ .burst-preview-list {
1966
+ display: block;
1967
+ width: 100%;
1968
+ margin-top: 14px;
1969
+ }
1970
+ .burst-preview {
1971
+ min-width: 0;
1972
+ contain: layout;
1973
+ }
1974
+ .burst-preview__title {
1975
+ margin: 0 0 8px;
1976
+ color: var(--text);
1977
+ font-size: 13px;
1978
+ font-weight: 700;
1979
+ }
1980
+ .burst-preview__player {
1981
+ position: relative;
1982
+ display: flex;
1983
+ flex-direction: column;
1984
+ overflow: hidden;
1985
+ width: 100%;
1986
+ height: auto;
1987
+ aspect-ratio: 16 / 9;
1988
+ border: 1px solid var(--line);
1989
+ border-radius: 14px;
1990
+ background: #000;
1991
+ }
1992
+ .burst-preview[data-preview-state="ready"] .burst-preview__player {
1993
+ aspect-ratio: auto;
1994
+ }
1995
+ .burst-preview__canvas {
1996
+ position: relative;
1997
+ display: flex;
1998
+ flex-direction: column;
1999
+ width: 100%;
2000
+ flex: 1 1 auto;
2001
+ height: 100%;
2002
+ min-height: 0;
2003
+ }
2004
+ .burst-preview[data-preview-state="ready"] .burst-preview__canvas {
2005
+ flex: 0 0 auto;
2006
+ height: auto;
2007
+ }
2008
+ .burst-preview__status {
2009
+ position: absolute;
2010
+ inset: 0;
2011
+ z-index: 2;
2012
+ display: grid;
2013
+ place-items: center;
2014
+ margin: 0;
2015
+ padding: 16px;
2016
+ background: rgba(32, 18, 64, 0.72);
2017
+ color: #efe8ff;
2018
+ font-size: 13px;
2019
+ text-align: center;
2020
+ }
2021
+ .burst-preview__status[hidden],
2022
+ .burst-preview[data-preview-state="ready"] .burst-preview__status {
2023
+ display: none !important;
2024
+ }
2025
+ .burst-preview[data-preview-state="error"] .burst-preview__status {
2026
+ color: var(--danger);
2027
+ }
2028
+ .burst-desc-line {
2029
+ margin: 0;
2030
+ font-size: 12px;
2031
+ line-height: 1.45;
2032
+ color: var(--text);
2033
+ text-align: left;
2034
+ }
2035
+ .burst-desc-tag {
2036
+ font-weight: 700;
2037
+ color: var(--text);
2038
+ }
2039
+ .burst-start-combo {
2040
+ font-weight: 700;
2041
+ font-variant-numeric: tabular-nums;
2042
+ color: var(--text);
2043
+ }
2044
+ .burst-start-combo.is-fire { color: var(--danger); }
2045
+ .burst-desc--note { color: var(--muted); margin: 4px 0 0; text-align: left; font-size: 12px; }
2046
+ .burst-desc--type { padding-left: 0; }
2047
+ .burst-stat-row {
2048
+ display: grid;
2049
+ grid-template-columns: repeat(4, minmax(0, 1fr));
2050
+ gap: 6px;
2051
+ margin: 0 0 8px;
2052
+ }
2053
+ .burst-stat {
2054
+ background: #f3f4f6;
2055
+ border-radius: 8px;
2056
+ padding: 5px 8px 4px;
2057
+ text-align: left;
2058
+ }
2059
+ .burst-stat__label {
2060
+ display: block;
2061
+ font-size: 11px;
2062
+ font-weight: 600;
2063
+ color: var(--muted);
2064
+ line-height: 1.2;
2065
+ }
2066
+ .burst-stat__value {
2067
+ display: block;
2068
+ margin-top: 1px;
2069
+ font-size: 15px;
2070
+ font-weight: 800;
2071
+ color: var(--text);
2072
+ font-variant-numeric: tabular-nums;
2073
+ line-height: 1.2;
2074
+ }
2075
+ .burst-stat__value.slot-gain {
2076
+ color: var(--text);
2077
+ font-weight: 800;
2078
+ font-size: 15px;
2079
+ }
2080
+ .score-delta {
2081
+ margin-left: 2px;
2082
+ font-weight: 700;
2083
+ font-size: 12px;
2084
+ font-variant-numeric: tabular-nums;
2085
+ }
2086
+ .score-delta.is-pos { color: var(--ok); }
2087
+ .score-delta.is-neg { color: var(--danger); }
2088
+ .burst-extra { display: grid; gap: 4px; margin: 0; font-size: 13px; }
2089
+ .burst-extra div { display: grid; grid-template-columns: 72px 1fr; gap: 8px; }
2090
+ .burst-extra dt { margin: 0; color: var(--muted); font-weight: 600; }
2091
+ .burst-extra dd { margin: 0; }
2092
+ .burst-extra__note { grid-column: 1 / -1; }
2093
+
2094
+ @media (max-width: 880px) {
2095
+ .site-header {
2096
+ display: grid;
2097
+ grid-template-columns: minmax(0, 1fr) auto;
2098
+ grid-template-areas:
2099
+ "brand actions"
2100
+ "nav nav";
2101
+ gap: 8px;
2102
+ align-items: center;
2103
+ }
2104
+ .brand {
2105
+ grid-area: brand;
2106
+ min-width: 0;
2107
+ }
2108
+ .header-actions {
2109
+ grid-area: actions;
2110
+ margin-left: 0;
2111
+ flex-shrink: 0;
2112
+ gap: 6px;
2113
+ justify-self: end;
2114
+ }
2115
+ .site-nav {
2116
+ grid-area: nav;
2117
+ display: flex;
2118
+ min-width: 0;
2119
+ gap: 10px;
2120
+ overflow: visible;
2121
+ }
2122
+ .site-nav__link--primary {
2123
+ font-size: 12px;
2124
+ padding: 6px 10px;
2125
+ }
2126
+ .site-nav__link--extra {
2127
+ display: none;
2128
+ }
2129
+ .brand-logo {
2130
+ height: 28px;
2131
+ max-width: min(108px, 42vw);
2132
+ }
2133
+ .header-actions__auth {
2134
+ padding: 6px 10px;
2135
+ font-size: 12px;
2136
+ white-space: nowrap;
2137
+ }
2138
+ .user-menu__nav {
2139
+ display: grid;
2140
+ }
2141
+ .user-menu__menu {
2142
+ min-width: 228px;
2143
+ }
2144
+ }
2145
+
2146
+ @media (max-width: 800px) {
2147
+ .burst-grid { grid-template-columns: 1fr; }
2148
+ .hero { grid-template-columns: 1fr; }
2149
+ .site-footer { flex-direction: column; }
2150
+ .query-shell { grid-template-columns: 28px minmax(0, 1fr); gap: 8px; }
2151
+ /* 手机端再扩一截:约等于栏宽,拇指更容易落在滑动热区内 */
2152
+ .alpha-rail {
2153
+ --alpha-rail-pad-start: 20px;
2154
+ --alpha-rail-pad-end: 32px;
2155
+ --alpha-rail-pad-y: 16px;
2156
+ }
2157
+ }