@krpkg/ui 0.0.0-stage → 0.2.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 (71) hide show
  1. package/README.md +128 -2
  2. package/assets/android-background-alley.svg +3 -0
  3. package/assets/android-background-clean.svg +3 -0
  4. package/assets/android-background-default.svg +3 -0
  5. package/assets/android-background-mono.svg +3 -0
  6. package/assets/android-background-teal.svg +3 -0
  7. package/assets/android-foreground-alley.svg +3 -0
  8. package/assets/android-foreground-clean.svg +3 -0
  9. package/assets/android-foreground-default.svg +3 -0
  10. package/assets/android-foreground-mono.svg +3 -0
  11. package/assets/android-foreground-teal.svg +3 -0
  12. package/assets/android-icon-background.png +0 -0
  13. package/assets/android-icon-foreground.png +0 -0
  14. package/assets/android-icon-monochrome.png +0 -0
  15. package/assets/apple-touch-icon-120x120.png +0 -0
  16. package/assets/apple-touch-icon-152x152.png +0 -0
  17. package/assets/apple-touch-icon-167x167.png +0 -0
  18. package/assets/apple-touch-icon-180x180.png +0 -0
  19. package/assets/apple-touch-icon.png +0 -0
  20. package/assets/favicon-128x128.png +0 -0
  21. package/assets/favicon-16x16.png +0 -0
  22. package/assets/favicon-32x32.png +0 -0
  23. package/assets/favicon-48x48.png +0 -0
  24. package/assets/favicon-64x64.png +0 -0
  25. package/assets/favicon-96x96.png +0 -0
  26. package/assets/favicon.ico +0 -0
  27. package/assets/favicon.png +0 -0
  28. package/assets/favicon.svg +11 -0
  29. package/assets/icon-alley.png +0 -0
  30. package/assets/icon-teal.png +0 -0
  31. package/assets/icon.png +0 -0
  32. package/assets/logo-alley.svg +11 -0
  33. package/assets/logo-badge.svg +11 -0
  34. package/assets/logo-clean.svg +11 -0
  35. package/assets/logo-default.svg +11 -0
  36. package/assets/logo-icon.svg +3 -0
  37. package/assets/logo-mono.svg +11 -0
  38. package/assets/logo-teal.svg +11 -0
  39. package/assets/logo.svg +3 -0
  40. package/assets/pwa-192x192.png +0 -0
  41. package/assets/pwa-256x256.png +0 -0
  42. package/assets/pwa-384x384.png +0 -0
  43. package/assets/pwa-512x512.png +0 -0
  44. package/assets/pwa-maskable-192x192.png +0 -0
  45. package/assets/pwa-maskable-512x512.png +0 -0
  46. package/assets/splash-icon.png +0 -0
  47. package/dist/chunk-HAD2NPEW.mjs +155 -0
  48. package/dist/chunk-HAD2NPEW.mjs.map +1 -0
  49. package/dist/chunk-ZJSL4I3W.mjs +38 -0
  50. package/dist/chunk-ZJSL4I3W.mjs.map +1 -0
  51. package/dist/index.css +2053 -0
  52. package/dist/index.css.map +1 -0
  53. package/dist/index.d.mts +245 -0
  54. package/dist/index.d.ts +245 -0
  55. package/dist/index.js +1331 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/index.mjs +1110 -0
  58. package/dist/index.mjs.map +1 -0
  59. package/dist/tokens.d.mts +183 -0
  60. package/dist/tokens.d.ts +183 -0
  61. package/dist/tokens.js +185 -0
  62. package/dist/tokens.js.map +1 -0
  63. package/dist/tokens.mjs +19 -0
  64. package/dist/tokens.mjs.map +1 -0
  65. package/dist/utils.d.mts +13 -0
  66. package/dist/utils.d.ts +13 -0
  67. package/dist/utils.js +65 -0
  68. package/dist/utils.js.map +1 -0
  69. package/dist/utils.mjs +9 -0
  70. package/dist/utils.mjs.map +1 -0
  71. package/package.json +55 -4
package/dist/index.css ADDED
@@ -0,0 +1,2053 @@
1
+ @import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;500;600&family=IBM+Plex+Sans:wght@300;400;500;600&family=Noto+Sans+JP:wght@300;400;500;700&display=swap";
2
+
3
+ /* src/styles/theme.css */
4
+ :root {
5
+ --kz-bg-0: #0a0a0c;
6
+ --kz-bg-1: #111114;
7
+ --kz-bg-2: #18181c;
8
+ --kz-bg-3: #1f1f24;
9
+ --kz-border: #2a2a30;
10
+ --kz-border-subtle: #1e1e24;
11
+ --kz-border-light: #3f3f46;
12
+ --kz-text-0: #e2ded6;
13
+ --kz-text-1: #b0aca4;
14
+ --kz-text-2: #706c66;
15
+ --kz-text-3: #4a4844;
16
+ --kz-accent: #c49368;
17
+ --kz-accent-dim: rgba(196, 147, 104, 0.12);
18
+ --kz-accent-hover: #d4a478;
19
+ --kz-teal: #6a9e9e;
20
+ --kz-teal-dim: rgba(106, 158, 158, 0.12);
21
+ --kz-warm: #a08060;
22
+ --kz-red-soft: #b05050;
23
+ --kz-green-soft: #6a9a6a;
24
+ --kz-blue: #3b82f6;
25
+ --kz-purple: #a855f7;
26
+ --kz-sticky-1: #e8e0b8;
27
+ --kz-sticky-2: #e0c8c0;
28
+ --kz-sticky-3: #c0d0d8;
29
+ --kz-sticky-4: #c8d8c0;
30
+ --kz-mono: "IBM Plex Mono", monospace;
31
+ --kz-sans:
32
+ "IBM Plex Sans",
33
+ -apple-system,
34
+ BlinkMacSystemFont,
35
+ "Segoe UI",
36
+ Roboto,
37
+ sans-serif;
38
+ --kz-jp: "Noto Sans JP", sans-serif;
39
+ --kz-radius-sm: 4px;
40
+ --kz-radius-md: 6px;
41
+ --kz-radius-lg: 10px;
42
+ }
43
+ [data-theme=citlali] {
44
+ --kz-bg-0: #090d1d;
45
+ --kz-bg-1: #10172d;
46
+ --kz-bg-2: #172343;
47
+ --kz-bg-3: #21305a;
48
+ --kz-border: #334879;
49
+ --kz-border-subtle: #1d2b4c;
50
+ --kz-text-0: #e9eaff;
51
+ --kz-text-1: #b9c8ed;
52
+ --kz-text-2: #8293c2;
53
+ --kz-text-3: #52658f;
54
+ --kz-accent: #f2a9c8;
55
+ --kz-accent-dim: rgba(242, 169, 200, 0.13);
56
+ --kz-accent-hover: #ffd0e2;
57
+ --kz-teal: #9bc9ed;
58
+ --kz-teal-dim: rgba(155, 201, 237, 0.12);
59
+ --kz-warm: #c3a7d9;
60
+ --kz-red-soft: #d77b9c;
61
+ --kz-green-soft: #8cc5bd;
62
+ --kz-sticky-1: #f6d5e2;
63
+ --kz-sticky-2: #c9d9f3;
64
+ --kz-sticky-3: #b8c9e7;
65
+ --kz-sticky-4: #d9c8ed;
66
+ }
67
+ [data-theme=furina] {
68
+ --kz-bg-0: #080d1a;
69
+ --kz-bg-1: #0e1526;
70
+ --kz-bg-2: #141f38;
71
+ --kz-bg-3: #1c2b4c;
72
+ --kz-border: #29406d;
73
+ --kz-border-subtle: #182745;
74
+ --kz-text-0: #edf4ff;
75
+ --kz-text-1: #c2d5f2;
76
+ --kz-text-2: #7f9ec7;
77
+ --kz-text-3: #4b6691;
78
+ --kz-accent: #5ab2ff;
79
+ --kz-accent-dim: rgba(90, 178, 255, 0.14);
80
+ --kz-accent-hover: #82c8ff;
81
+ --kz-teal: #7ce8ff;
82
+ --kz-teal-dim: rgba(124, 232, 255, 0.12);
83
+ --kz-warm: #d5b3ff;
84
+ --kz-red-soft: #e27d97;
85
+ --kz-green-soft: #70d6b6;
86
+ --kz-sticky-1: #dbeaff;
87
+ --kz-sticky-2: #c6e0ff;
88
+ --kz-sticky-3: #b0d4ff;
89
+ --kz-sticky-4: #d8cfff;
90
+ }
91
+ [data-theme=alley] {
92
+ --kz-bg-0: #050409;
93
+ --kz-bg-1: #0b0914;
94
+ --kz-bg-2: #141021;
95
+ --kz-bg-3: #1d182e;
96
+ --kz-border: #382c54;
97
+ --kz-border-subtle: #231b36;
98
+ --kz-border-light: #4e3f73;
99
+ --kz-text-0: #f3effc;
100
+ --kz-text-1: #d1c5e8;
101
+ --kz-text-2: #8f82aa;
102
+ --kz-text-3: #5c5273;
103
+ --kz-accent: #b066ff;
104
+ --kz-accent-dim: rgba(176, 102, 255, 0.14);
105
+ --kz-accent-hover: #c485ff;
106
+ --kz-teal: #7c5cbf;
107
+ --kz-teal-dim: rgba(124, 92, 191, 0.14);
108
+ --kz-warm: #e09fdb;
109
+ --kz-red-soft: #d9538f;
110
+ --kz-green-soft: #7ac998;
111
+ --kz-sticky-1: #e9d5ff;
112
+ --kz-sticky-2: #ddd6fe;
113
+ --kz-sticky-3: #fae8ff;
114
+ --kz-sticky-4: #f3e8ff;
115
+ }
116
+ .kz-dot-grid {
117
+ background-image:
118
+ radial-gradient(
119
+ circle,
120
+ var(--kz-border-subtle) 1px,
121
+ transparent 1px);
122
+ background-size: 24px 24px;
123
+ }
124
+ .kz-bracket-card {
125
+ position: relative;
126
+ background: var(--kz-bg-1);
127
+ border: 1px solid var(--kz-border-subtle);
128
+ transition: border-color 0.15s ease, background-color 0.15s ease;
129
+ }
130
+ .kz-bracket-card:hover {
131
+ border-color: var(--kz-border);
132
+ background: var(--kz-bg-2);
133
+ }
134
+ .kz-bracket-card::before,
135
+ .kz-bracket-card::after {
136
+ content: "";
137
+ position: absolute;
138
+ width: 8px;
139
+ height: 8px;
140
+ border-style: solid;
141
+ border-color: var(--kz-accent);
142
+ opacity: 0.4;
143
+ transition:
144
+ opacity 0.2s ease,
145
+ width 0.2s ease,
146
+ height 0.2s ease;
147
+ pointer-events: none;
148
+ }
149
+ .kz-bracket-card::before {
150
+ top: -1px;
151
+ left: -1px;
152
+ border-width: 1px 0 0 1px;
153
+ }
154
+ .kz-bracket-card::after {
155
+ bottom: -1px;
156
+ right: -1px;
157
+ border-width: 0 1px 1px 0;
158
+ }
159
+ .kz-bracket-card:hover::before,
160
+ .kz-bracket-card:hover::after {
161
+ opacity: 1;
162
+ width: 12px;
163
+ height: 12px;
164
+ }
165
+ .kz-corner-frame {
166
+ position: relative;
167
+ }
168
+ .kz-corner {
169
+ position: absolute;
170
+ width: 10px;
171
+ height: 10px;
172
+ border-style: solid;
173
+ border-color: var(--kz-accent);
174
+ pointer-events: none;
175
+ opacity: 0.75;
176
+ }
177
+ .kz-corner.tl {
178
+ top: -1px;
179
+ left: -1px;
180
+ border-width: 1px 0 0 1px;
181
+ }
182
+ .kz-corner.tr {
183
+ top: -1px;
184
+ right: -1px;
185
+ border-width: 1px 1px 0 0;
186
+ }
187
+ .kz-corner.bl {
188
+ bottom: -1px;
189
+ left: -1px;
190
+ border-width: 0 0 1px 1px;
191
+ }
192
+ .kz-corner.br {
193
+ bottom: -1px;
194
+ right: -1px;
195
+ border-width: 0 1px 1px 0;
196
+ }
197
+ .kz-btn {
198
+ display: inline-flex;
199
+ align-items: center;
200
+ justify-content: center;
201
+ gap: 8px;
202
+ font-family: var(--kz-mono);
203
+ font-size: 13px;
204
+ padding: 8px 16px;
205
+ border-radius: var(--kz-radius-sm);
206
+ cursor: pointer;
207
+ transition: all 0.15s ease;
208
+ border: 1px solid transparent;
209
+ outline: none;
210
+ text-decoration: none;
211
+ user-select: none;
212
+ touch-action: manipulation;
213
+ }
214
+ .kz-btn-primary {
215
+ background: var(--kz-accent);
216
+ color: var(--kz-bg-0);
217
+ font-weight: 500;
218
+ }
219
+ .kz-btn-primary:hover {
220
+ background: var(--kz-accent-hover);
221
+ }
222
+ .kz-btn-outline {
223
+ background: transparent;
224
+ border-color: var(--kz-border);
225
+ color: var(--kz-text-0);
226
+ }
227
+ .kz-btn-outline:hover {
228
+ border-color: var(--kz-accent);
229
+ color: var(--kz-accent);
230
+ background: var(--kz-accent-dim);
231
+ }
232
+ .kz-btn-ghost {
233
+ background: transparent;
234
+ color: var(--kz-text-1);
235
+ }
236
+ .kz-btn-ghost:hover {
237
+ color: var(--kz-text-0);
238
+ background: var(--kz-bg-2);
239
+ }
240
+ .kz-btn-sm {
241
+ font-size: 11px;
242
+ padding: 4px 10px;
243
+ }
244
+ .kz-btn-lg {
245
+ font-size: 14px;
246
+ padding: 12px 24px;
247
+ }
248
+ .kz-badge {
249
+ display: inline-flex;
250
+ align-items: center;
251
+ gap: 6px;
252
+ font-family: var(--kz-mono);
253
+ font-size: 11px;
254
+ padding: 2px 8px;
255
+ border-radius: var(--kz-radius-sm);
256
+ background: var(--kz-bg-2);
257
+ border: 1px solid var(--kz-border-subtle);
258
+ color: var(--kz-text-1);
259
+ letter-spacing: 0.04em;
260
+ text-transform: uppercase;
261
+ }
262
+ .kz-badge.accent {
263
+ border-color: var(--kz-accent);
264
+ color: var(--kz-accent);
265
+ background: var(--kz-accent-dim);
266
+ }
267
+ .kz-badge.teal {
268
+ border-color: var(--kz-teal);
269
+ color: var(--kz-teal);
270
+ background: var(--kz-teal-dim);
271
+ }
272
+ .kz-badge.purple {
273
+ border-color: var(--kz-purple);
274
+ color: var(--kz-purple);
275
+ background: rgba(168, 85, 247, 0.14);
276
+ }
277
+ .kz-badge.outline {
278
+ background: transparent;
279
+ border-color: var(--kz-border);
280
+ color: var(--kz-text-1);
281
+ }
282
+ .kz-dot {
283
+ display: inline-block;
284
+ width: 6px;
285
+ height: 6px;
286
+ border-radius: 50%;
287
+ background: var(--kz-accent);
288
+ }
289
+ .kz-dot.pulse {
290
+ box-shadow: 0 0 0 0 rgba(196, 147, 104, 0.7);
291
+ animation: kz-pulse 2s infinite;
292
+ }
293
+ @keyframes kz-pulse {
294
+ 0% {
295
+ transform: scale(0.95);
296
+ box-shadow: 0 0 0 0 rgba(196, 147, 104, 0.7);
297
+ }
298
+ 70% {
299
+ transform: scale(1);
300
+ box-shadow: 0 0 0 6px rgba(196, 147, 104, 0);
301
+ }
302
+ 100% {
303
+ transform: scale(0.95);
304
+ box-shadow: 0 0 0 0 rgba(196, 147, 104, 0);
305
+ }
306
+ }
307
+ .kz-dot.green {
308
+ background: var(--kz-green-soft);
309
+ }
310
+ .kz-dot.red {
311
+ background: var(--kz-red-soft);
312
+ }
313
+ .kz-dot.teal {
314
+ background: var(--kz-teal);
315
+ }
316
+ .kz-dot.purple {
317
+ background: var(--kz-purple);
318
+ }
319
+ .kz-tech-label {
320
+ display: inline-flex;
321
+ align-items: baseline;
322
+ gap: 6px;
323
+ font-family: var(--kz-mono);
324
+ font-size: 12px;
325
+ color: var(--kz-text-2);
326
+ }
327
+ .kz-tech-label .jp {
328
+ font-family: var(--kz-jp);
329
+ font-size: 10px;
330
+ color: var(--kz-text-3);
331
+ letter-spacing: 0.05em;
332
+ }
333
+ .kz-coord {
334
+ font-family: var(--kz-mono);
335
+ font-size: 10px;
336
+ color: var(--kz-text-3);
337
+ letter-spacing: 0.1em;
338
+ user-select: none;
339
+ }
340
+ .kz-vinyl-area {
341
+ position: relative;
342
+ display: inline-flex;
343
+ align-items: center;
344
+ justify-content: center;
345
+ cursor: pointer;
346
+ user-select: none;
347
+ }
348
+ .kz-vinyl-area.kz-vinyl-sm {
349
+ width: 56px;
350
+ height: 56px;
351
+ }
352
+ .kz-vinyl-area.kz-vinyl-md {
353
+ width: 140px;
354
+ height: 140px;
355
+ }
356
+ .kz-vinyl-area.kz-vinyl-lg {
357
+ width: 180px;
358
+ height: 180px;
359
+ }
360
+ .kz-vinyl-ring {
361
+ position: absolute;
362
+ inset: 0;
363
+ border-radius: 50%;
364
+ border: 1px solid var(--kz-border-subtle);
365
+ pointer-events: none;
366
+ }
367
+ .kz-vinyl {
368
+ width: 90%;
369
+ height: 90%;
370
+ border-radius: 50%;
371
+ position: relative;
372
+ background:
373
+ radial-gradient(
374
+ circle at center,
375
+ var(--kz-bg-3) 0%,
376
+ var(--kz-bg-1) 60%,
377
+ var(--kz-bg-3) 62%,
378
+ var(--kz-bg-1) 100%),
379
+ repeating-radial-gradient(
380
+ circle at center,
381
+ transparent 15px,
382
+ rgba(255, 255, 255, 0.03) 16px,
383
+ transparent 17px,
384
+ transparent 20px);
385
+ border: 1px solid var(--kz-border);
386
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
387
+ animation: kz-spin 4s linear infinite;
388
+ animation-play-state: paused;
389
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
390
+ }
391
+ .kz-vinyl.playing {
392
+ animation-play-state: running;
393
+ border-color: var(--kz-accent);
394
+ box-shadow: 0 0 16px var(--kz-accent-dim);
395
+ }
396
+ .kz-vinyl-label {
397
+ position: absolute;
398
+ top: 50%;
399
+ left: 50%;
400
+ transform: translate(-50%, -50%);
401
+ width: 42%;
402
+ height: 42%;
403
+ border-radius: 50%;
404
+ background: var(--kz-bg-2);
405
+ border: 1px solid rgba(255, 255, 255, 0.12);
406
+ display: flex;
407
+ align-items: center;
408
+ justify-content: center;
409
+ overflow: hidden;
410
+ pointer-events: none;
411
+ }
412
+ .kz-vinyl-cover {
413
+ width: 100%;
414
+ height: 100%;
415
+ object-fit: cover;
416
+ }
417
+ .kz-vinyl-label span {
418
+ font-family: var(--kz-mono);
419
+ font-size: 9px;
420
+ font-weight: 600;
421
+ color: var(--kz-accent);
422
+ letter-spacing: 0.05em;
423
+ }
424
+ .kz-vinyl-spindle {
425
+ position: absolute;
426
+ top: 50%;
427
+ left: 50%;
428
+ transform: translate(-50%, -50%);
429
+ width: 6px;
430
+ height: 6px;
431
+ border-radius: 50%;
432
+ background: #08080a;
433
+ border: 0.5px solid rgba(255, 255, 255, 0.4);
434
+ }
435
+ @keyframes kz-spin {
436
+ from {
437
+ transform: rotate(0deg);
438
+ }
439
+ to {
440
+ transform: rotate(360deg);
441
+ }
442
+ }
443
+ .kz-sticky {
444
+ position: relative;
445
+ padding: 16px 14px 14px;
446
+ border-radius: 2px;
447
+ color: #1e1e24;
448
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.25);
449
+ transform: rotate(-1deg);
450
+ transition: transform 0.2s ease;
451
+ }
452
+ .kz-sticky:hover {
453
+ transform: rotate(0deg) scale(1.02);
454
+ }
455
+ .kz-sticky-1 {
456
+ background: var(--kz-sticky-1);
457
+ }
458
+ .kz-sticky-2 {
459
+ background: var(--kz-sticky-2);
460
+ }
461
+ .kz-sticky-3 {
462
+ background: var(--kz-sticky-3);
463
+ }
464
+ .kz-sticky-4 {
465
+ background: var(--kz-sticky-4);
466
+ }
467
+ .kz-sticky.has-tape::before {
468
+ content: "";
469
+ position: absolute;
470
+ top: -8px;
471
+ left: 50%;
472
+ transform: translateX(-50%);
473
+ width: 44px;
474
+ height: 14px;
475
+ background: rgba(255, 255, 255, 0.45);
476
+ backdrop-filter: blur(2px);
477
+ border: 1px dashed rgba(0, 0, 0, 0.1);
478
+ }
479
+ .kz-sticky-title {
480
+ font-family: var(--kz-mono);
481
+ font-size: 11px;
482
+ font-weight: 600;
483
+ letter-spacing: 0.04em;
484
+ margin-bottom: 6px;
485
+ text-transform: uppercase;
486
+ color: rgba(0, 0, 0, 0.7);
487
+ }
488
+ .kz-sticky-body {
489
+ font-family: var(--kz-sans);
490
+ font-size: 12px;
491
+ line-height: 1.45;
492
+ color: rgba(0, 0, 0, 0.85);
493
+ }
494
+ .kz-spoiler-gate {
495
+ padding: 24px 16px;
496
+ text-align: center;
497
+ display: flex;
498
+ flex-direction: column;
499
+ align-items: center;
500
+ gap: 12px;
501
+ width: 100%;
502
+ }
503
+ .kz-spoiler-icon {
504
+ font-size: 20px;
505
+ color: var(--kz-red-soft);
506
+ }
507
+ .kz-spoiler-title {
508
+ font-family: var(--kz-mono);
509
+ font-size: 12px;
510
+ font-weight: 600;
511
+ color: var(--kz-text-0);
512
+ letter-spacing: 0.05em;
513
+ }
514
+ .kz-spoiler-desc {
515
+ font-size: 12px;
516
+ color: var(--kz-text-2);
517
+ line-height: 1.5;
518
+ max-width: 400px;
519
+ }
520
+ .kz-spoiler-clearance {
521
+ font-family: var(--kz-mono);
522
+ font-size: 10px;
523
+ color: var(--kz-text-3);
524
+ background: var(--kz-bg-0);
525
+ padding: 4px 8px;
526
+ border: 1px solid var(--kz-border-subtle);
527
+ border-radius: var(--kz-radius-sm);
528
+ }
529
+ .kz-input-wrapper {
530
+ display: inline-flex;
531
+ flex-direction: column;
532
+ gap: 5px;
533
+ }
534
+ .kz-input-full {
535
+ width: 100%;
536
+ }
537
+ .kz-input-header {
538
+ display: flex;
539
+ justify-content: space-between;
540
+ align-items: baseline;
541
+ padding: 0 2px;
542
+ }
543
+ .kz-input-label {
544
+ font-family: var(--kz-mono);
545
+ font-size: 11px;
546
+ font-weight: 600;
547
+ color: var(--kz-text-1);
548
+ letter-spacing: 0.04em;
549
+ text-transform: uppercase;
550
+ }
551
+ .kz-input-sublabel {
552
+ font-family: var(--kz-jp);
553
+ font-size: 10px;
554
+ color: var(--kz-text-3);
555
+ }
556
+ .kz-input-field-container {
557
+ position: relative;
558
+ display: flex;
559
+ align-items: center;
560
+ background: var(--kz-bg-1);
561
+ border: 1px solid var(--kz-border);
562
+ border-radius: var(--kz-radius-sm);
563
+ transition: all 0.15s ease;
564
+ overflow: hidden;
565
+ }
566
+ .kz-input-field-container:focus-within {
567
+ border-color: var(--kz-accent);
568
+ box-shadow: 0 0 10px var(--kz-accent-dim);
569
+ }
570
+ .kz-input-has-error .kz-input-field-container {
571
+ border-color: var(--kz-red-soft);
572
+ box-shadow: 0 0 8px rgba(176, 80, 80, 0.2);
573
+ }
574
+ .kz-input-prefix {
575
+ padding-left: 10px;
576
+ font-family: var(--kz-mono);
577
+ font-size: 12px;
578
+ color: var(--kz-accent);
579
+ font-weight: 600;
580
+ user-select: none;
581
+ flex-shrink: 0;
582
+ }
583
+ .kz-input-suffix {
584
+ padding-right: 10px;
585
+ font-family: var(--kz-mono);
586
+ font-size: 11px;
587
+ color: var(--kz-text-2);
588
+ flex-shrink: 0;
589
+ }
590
+ .kz-input-field {
591
+ width: 100%;
592
+ background: transparent;
593
+ border: none;
594
+ outline: none;
595
+ color: var(--kz-text-0);
596
+ font-family: var(--kz-mono);
597
+ font-size: 12px;
598
+ padding: 8px 10px;
599
+ }
600
+ .kz-input-field::placeholder {
601
+ color: var(--kz-text-3);
602
+ }
603
+ .kz-input-sm .kz-input-field {
604
+ padding: 5px 8px;
605
+ font-size: 11px;
606
+ }
607
+ .kz-input-lg .kz-input-field {
608
+ padding: 12px 14px;
609
+ font-size: 14px;
610
+ }
611
+ .kz-input-corner-tl {
612
+ position: absolute;
613
+ top: 0;
614
+ left: 0;
615
+ width: 4px;
616
+ height: 4px;
617
+ border-top: 1px solid var(--kz-accent);
618
+ border-left: 1px solid var(--kz-accent);
619
+ opacity: 0;
620
+ transition: opacity 0.15s ease;
621
+ }
622
+ .kz-input-corner-br {
623
+ position: absolute;
624
+ bottom: 0;
625
+ right: 0;
626
+ width: 4px;
627
+ height: 4px;
628
+ border-bottom: 1px solid var(--kz-accent);
629
+ border-right: 1px solid var(--kz-accent);
630
+ opacity: 0;
631
+ transition: opacity 0.15s ease;
632
+ }
633
+ .kz-input-field-container:focus-within .kz-input-corner-tl,
634
+ .kz-input-field-container:focus-within .kz-input-corner-br {
635
+ opacity: 1;
636
+ }
637
+ .kz-input-footer {
638
+ padding: 0 2px;
639
+ font-family: var(--kz-mono);
640
+ font-size: 10px;
641
+ }
642
+ .kz-input-error-msg {
643
+ color: var(--kz-red-soft);
644
+ }
645
+ .kz-input-hint-msg {
646
+ color: var(--kz-text-3);
647
+ }
648
+ .kz-telemetry-container {
649
+ display: flex;
650
+ flex-direction: column;
651
+ gap: 6px;
652
+ width: 100%;
653
+ }
654
+ .kz-telemetry-header {
655
+ display: flex;
656
+ justify-content: space-between;
657
+ align-items: center;
658
+ font-family: var(--kz-mono);
659
+ font-size: 11px;
660
+ }
661
+ .kz-telemetry-label-group {
662
+ display: flex;
663
+ align-items: center;
664
+ gap: 6px;
665
+ }
666
+ .kz-telemetry-label {
667
+ font-weight: 600;
668
+ color: var(--kz-text-0);
669
+ letter-spacing: 0.04em;
670
+ }
671
+ .kz-telemetry-coord {
672
+ color: var(--kz-text-3);
673
+ font-size: 10px;
674
+ }
675
+ .kz-telemetry-readout {
676
+ color: var(--kz-accent);
677
+ font-weight: 600;
678
+ }
679
+ .kz-telemetry-track {
680
+ width: 100%;
681
+ height: 6px;
682
+ background: var(--kz-bg-2);
683
+ border: 1px solid var(--kz-border);
684
+ border-radius: var(--kz-radius-sm);
685
+ overflow: hidden;
686
+ position: relative;
687
+ }
688
+ .kz-telemetry-sm .kz-telemetry-track {
689
+ height: 4px;
690
+ }
691
+ .kz-telemetry-lg .kz-telemetry-track {
692
+ height: 10px;
693
+ }
694
+ .kz-telemetry-fill {
695
+ height: 100%;
696
+ background: var(--kz-accent);
697
+ position: relative;
698
+ transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);
699
+ }
700
+ .kz-telemetry-glow {
701
+ position: absolute;
702
+ right: 0;
703
+ top: 0;
704
+ bottom: 0;
705
+ width: 10px;
706
+ background: #fff;
707
+ opacity: 0.6;
708
+ filter: blur(2px);
709
+ }
710
+ .kz-telemetry-segments {
711
+ display: flex;
712
+ gap: 2px;
713
+ width: 100%;
714
+ height: 100%;
715
+ }
716
+ .kz-telemetry-seg {
717
+ flex: 1;
718
+ height: 100%;
719
+ background: var(--kz-bg-3);
720
+ transition: background-color 0.2s ease;
721
+ }
722
+ .kz-telemetry-seg.active {
723
+ background: var(--kz-accent);
724
+ }
725
+ .kz-telemetry-teal .kz-telemetry-fill,
726
+ .kz-telemetry-teal .kz-telemetry-seg.active {
727
+ background: var(--kz-teal);
728
+ }
729
+ .kz-telemetry-teal .kz-telemetry-readout {
730
+ color: var(--kz-teal);
731
+ }
732
+ .kz-telemetry-purple .kz-telemetry-fill,
733
+ .kz-telemetry-purple .kz-telemetry-seg.active {
734
+ background: var(--kz-purple);
735
+ }
736
+ .kz-telemetry-purple .kz-telemetry-readout {
737
+ color: var(--kz-purple);
738
+ }
739
+ .kz-telemetry-danger .kz-telemetry-fill,
740
+ .kz-telemetry-danger .kz-telemetry-seg.active {
741
+ background: var(--kz-red-soft);
742
+ }
743
+ .kz-telemetry-danger .kz-telemetry-readout {
744
+ color: var(--kz-red-soft);
745
+ }
746
+ .kz-telemetry-success .kz-telemetry-fill,
747
+ .kz-telemetry-success .kz-telemetry-seg.active {
748
+ background: var(--kz-green-soft);
749
+ }
750
+ .kz-telemetry-success .kz-telemetry-readout {
751
+ color: var(--kz-green-soft);
752
+ }
753
+ .kz-modal-portal {
754
+ position: fixed;
755
+ inset: 0;
756
+ z-index: 999;
757
+ display: flex;
758
+ align-items: center;
759
+ justify-content: center;
760
+ padding: 12px;
761
+ }
762
+ .kz-modal-backdrop {
763
+ position: absolute;
764
+ inset: 0;
765
+ background: rgba(5, 5, 8, 0.85);
766
+ backdrop-filter: blur(8px);
767
+ -webkit-backdrop-filter: blur(8px);
768
+ animation: kzFadeIn 0.15s ease-out;
769
+ }
770
+ @keyframes kzFadeIn {
771
+ from {
772
+ opacity: 0;
773
+ }
774
+ to {
775
+ opacity: 1;
776
+ }
777
+ }
778
+ .kz-modal-dialog {
779
+ position: relative;
780
+ z-index: 10;
781
+ background: var(--kz-bg-1);
782
+ border: 1px solid var(--kz-border);
783
+ border-radius: var(--kz-radius-md);
784
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.8), 0 0 0 1px var(--kz-border-subtle);
785
+ width: 100%;
786
+ max-width: 520px;
787
+ animation: kzScaleIn 0.2s cubic-bezier(0.16, 1, 0.3, 1);
788
+ display: flex;
789
+ flex-direction: column;
790
+ overflow: hidden;
791
+ max-height: calc(100vh - 24px);
792
+ }
793
+ @keyframes kzScaleIn {
794
+ from {
795
+ opacity: 0;
796
+ transform: scale(0.95) translateY(8px);
797
+ }
798
+ to {
799
+ opacity: 1;
800
+ transform: scale(1) translateY(0);
801
+ }
802
+ }
803
+ .kz-modal-sm {
804
+ max-width: 380px;
805
+ }
806
+ .kz-modal-lg {
807
+ max-width: 720px;
808
+ }
809
+ .kz-modal-header {
810
+ display: flex;
811
+ align-items: center;
812
+ justify-content: space-between;
813
+ gap: 8px;
814
+ padding: 12px 14px;
815
+ border-bottom: 1px solid var(--kz-border-subtle);
816
+ background: var(--kz-bg-2);
817
+ }
818
+ .kz-modal-title-group {
819
+ display: flex;
820
+ align-items: baseline;
821
+ gap: 6px;
822
+ font-family: var(--kz-mono);
823
+ overflow: hidden;
824
+ text-overflow: ellipsis;
825
+ white-space: nowrap;
826
+ min-width: 0;
827
+ }
828
+ .kz-modal-title {
829
+ font-size: 11px;
830
+ font-weight: 600;
831
+ letter-spacing: 0.05em;
832
+ color: var(--kz-accent);
833
+ overflow: hidden;
834
+ text-overflow: ellipsis;
835
+ white-space: nowrap;
836
+ }
837
+ .kz-modal-jp {
838
+ font-family: var(--kz-jp);
839
+ font-size: 9px;
840
+ color: var(--kz-text-3);
841
+ display: none;
842
+ }
843
+ @media (min-width: 480px) {
844
+ .kz-modal-jp {
845
+ display: inline;
846
+ }
847
+ .kz-modal-title {
848
+ font-size: 12px;
849
+ }
850
+ }
851
+ .kz-modal-coord {
852
+ font-size: 9px;
853
+ color: var(--kz-text-3);
854
+ display: none;
855
+ }
856
+ @media (min-width: 600px) {
857
+ .kz-modal-coord {
858
+ display: inline;
859
+ }
860
+ }
861
+ .kz-modal-close-btn {
862
+ background: transparent;
863
+ border: none;
864
+ font-family: var(--kz-mono);
865
+ font-size: 11px;
866
+ color: var(--kz-text-2);
867
+ cursor: pointer;
868
+ flex-shrink: 0;
869
+ padding: 4px 6px;
870
+ transition: color 0.12s ease;
871
+ }
872
+ .kz-modal-close-btn:hover {
873
+ color: var(--kz-red-soft);
874
+ }
875
+ .kz-modal-body {
876
+ padding: 14px;
877
+ color: var(--kz-text-1);
878
+ font-size: 12px;
879
+ line-height: 1.5;
880
+ overflow-y: auto;
881
+ word-break: break-word;
882
+ }
883
+ @media (min-width: 480px) {
884
+ .kz-modal-body {
885
+ padding: 18px;
886
+ font-size: 13px;
887
+ }
888
+ }
889
+ .kz-modal-footer {
890
+ display: flex;
891
+ align-items: center;
892
+ justify-content: flex-end;
893
+ gap: 8px;
894
+ padding: 10px 14px;
895
+ border-top: 1px solid var(--kz-border-subtle);
896
+ background: var(--kz-bg-0);
897
+ flex-wrap: wrap;
898
+ }
899
+ .kz-modal-corner-tl,
900
+ .kz-modal-corner-tr,
901
+ .kz-modal-corner-bl,
902
+ .kz-modal-corner-br {
903
+ position: absolute;
904
+ width: 6px;
905
+ height: 6px;
906
+ border-color: var(--kz-accent);
907
+ pointer-events: none;
908
+ }
909
+ .kz-modal-corner-tl {
910
+ top: -1px;
911
+ left: -1px;
912
+ border-top: 2px solid;
913
+ border-left: 2px solid;
914
+ }
915
+ .kz-modal-corner-tr {
916
+ top: -1px;
917
+ right: -1px;
918
+ border-top: 2px solid;
919
+ border-right: 2px solid;
920
+ }
921
+ .kz-modal-corner-bl {
922
+ bottom: -1px;
923
+ left: -1px;
924
+ border-bottom: 2px solid;
925
+ border-left: 2px solid;
926
+ }
927
+ .kz-modal-corner-br {
928
+ bottom: -1px;
929
+ right: -1px;
930
+ border-bottom: 2px solid;
931
+ border-right: 2px solid;
932
+ }
933
+ .kz-terminal-window {
934
+ border: 1px solid var(--kz-border);
935
+ background: var(--kz-bg-0);
936
+ border-radius: var(--kz-radius-md);
937
+ overflow: hidden;
938
+ width: 100%;
939
+ }
940
+ .kz-terminal-header {
941
+ display: flex;
942
+ align-items: center;
943
+ justify-content: space-between;
944
+ padding: 8px 12px;
945
+ background: var(--kz-bg-1);
946
+ border-bottom: 1px solid var(--kz-border-subtle);
947
+ }
948
+ .kz-terminal-dots {
949
+ display: flex;
950
+ align-items: center;
951
+ gap: 6px;
952
+ }
953
+ .kz-term-dot {
954
+ width: 8px;
955
+ height: 8px;
956
+ border-radius: 50%;
957
+ display: inline-block;
958
+ }
959
+ .kz-term-dot-red {
960
+ background: #ef4444;
961
+ opacity: 0.8;
962
+ }
963
+ .kz-term-dot-yellow {
964
+ background: #f59e0b;
965
+ opacity: 0.8;
966
+ }
967
+ .kz-term-dot-green {
968
+ background: #10b981;
969
+ opacity: 0.8;
970
+ }
971
+ .kz-terminal-title-box {
972
+ display: flex;
973
+ align-items: center;
974
+ gap: 8px;
975
+ font-family: var(--kz-mono);
976
+ font-size: 11px;
977
+ }
978
+ .kz-terminal-title {
979
+ color: var(--kz-text-1);
980
+ font-weight: 500;
981
+ }
982
+ .kz-terminal-badge {
983
+ font-size: 9px;
984
+ color: var(--kz-accent);
985
+ border: 1px solid var(--kz-accent);
986
+ border-radius: 2px;
987
+ padding: 1px 4px;
988
+ }
989
+ .kz-terminal-copy-btn {
990
+ background: transparent;
991
+ border: none;
992
+ font-family: var(--kz-mono);
993
+ font-size: 10px;
994
+ color: var(--kz-text-2);
995
+ cursor: pointer;
996
+ transition: color 0.12s ease;
997
+ }
998
+ .kz-terminal-copy-btn:hover {
999
+ color: var(--kz-accent);
1000
+ }
1001
+ .kz-terminal-body {
1002
+ padding: 12px;
1003
+ overflow-x: auto;
1004
+ }
1005
+ .kz-terminal-pre {
1006
+ margin: 0;
1007
+ font-family: var(--kz-mono);
1008
+ font-size: 12px;
1009
+ color: var(--kz-text-0);
1010
+ line-height: 1.6;
1011
+ }
1012
+ .kz-terminal-line {
1013
+ display: flex;
1014
+ gap: 14px;
1015
+ }
1016
+ .kz-terminal-lineno {
1017
+ color: var(--kz-text-3);
1018
+ user-select: none;
1019
+ min-width: 18px;
1020
+ text-align: right;
1021
+ flex-shrink: 0;
1022
+ }
1023
+ .kz-terminal-linecontent {
1024
+ white-space: pre;
1025
+ }
1026
+ .kz-tooltip-wrapper {
1027
+ position: relative;
1028
+ display: inline-flex;
1029
+ }
1030
+ .kz-tooltip-box {
1031
+ position: absolute;
1032
+ z-index: 100;
1033
+ background: var(--kz-bg-1);
1034
+ border: 1px solid var(--kz-border);
1035
+ padding: 5px 8px;
1036
+ border-radius: var(--kz-radius-sm);
1037
+ font-family: var(--kz-mono);
1038
+ font-size: 11px;
1039
+ color: var(--kz-text-0);
1040
+ white-space: nowrap;
1041
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
1042
+ pointer-events: none;
1043
+ display: flex;
1044
+ flex-direction: column;
1045
+ gap: 2px;
1046
+ }
1047
+ .kz-tooltip-coord {
1048
+ font-size: 9px;
1049
+ color: var(--kz-text-3);
1050
+ }
1051
+ .kz-tooltip-content {
1052
+ color: var(--kz-accent);
1053
+ }
1054
+ .kz-tooltip-top {
1055
+ bottom: calc(100% + 6px);
1056
+ left: 50%;
1057
+ transform: translateX(-50%);
1058
+ }
1059
+ .kz-tooltip-bottom {
1060
+ top: calc(100% + 6px);
1061
+ left: 50%;
1062
+ transform: translateX(-50%);
1063
+ }
1064
+ .kz-tooltip-left {
1065
+ right: calc(100% + 6px);
1066
+ top: 50%;
1067
+ transform: translateY(-50%);
1068
+ }
1069
+ .kz-tooltip-right {
1070
+ left: calc(100% + 6px);
1071
+ top: 50%;
1072
+ transform: translateY(-50%);
1073
+ }
1074
+ .kz-segmented-control {
1075
+ display: inline-flex;
1076
+ background: var(--kz-bg-0);
1077
+ border: 1px solid var(--kz-border);
1078
+ border-radius: var(--kz-radius-sm);
1079
+ padding: 2px;
1080
+ gap: 2px;
1081
+ position: relative;
1082
+ }
1083
+ .kz-segmented-full {
1084
+ display: flex;
1085
+ width: 100%;
1086
+ }
1087
+ .kz-segmented-full .kz-segmented-item {
1088
+ flex: 1;
1089
+ }
1090
+ .kz-segmented-item {
1091
+ display: inline-flex;
1092
+ align-items: center;
1093
+ justify-content: center;
1094
+ gap: 6px;
1095
+ padding: 6px 12px;
1096
+ background: transparent;
1097
+ border: 1px solid transparent;
1098
+ color: var(--kz-text-2);
1099
+ font-family: var(--kz-mono);
1100
+ font-size: 11px;
1101
+ cursor: pointer;
1102
+ border-radius: var(--kz-radius-xs);
1103
+ transition: all 0.15s ease;
1104
+ position: relative;
1105
+ user-select: none;
1106
+ }
1107
+ .kz-segmented-item:hover:not(.kz-disabled) {
1108
+ color: var(--kz-text-0);
1109
+ background: var(--kz-bg-1);
1110
+ }
1111
+ .kz-segmented-item.kz-active {
1112
+ background: var(--kz-bg-2);
1113
+ color: var(--kz-accent);
1114
+ border-color: var(--kz-border-light);
1115
+ box-shadow: 0 0 8px var(--kz-accent-dim);
1116
+ }
1117
+ .kz-segmented-purple .kz-segmented-item.kz-active {
1118
+ color: var(--kz-purple);
1119
+ box-shadow: 0 0 8px rgba(176, 102, 255, 0.2);
1120
+ }
1121
+ .kz-segmented-teal .kz-segmented-item.kz-active {
1122
+ color: var(--kz-teal);
1123
+ box-shadow: 0 0 8px rgba(80, 176, 176, 0.2);
1124
+ }
1125
+ .kz-segmented-item.kz-disabled {
1126
+ opacity: 0.4;
1127
+ cursor: not-allowed;
1128
+ }
1129
+ .kz-segmented-content {
1130
+ display: flex;
1131
+ flex-direction: column;
1132
+ align-items: center;
1133
+ }
1134
+ .kz-segmented-label {
1135
+ font-weight: 500;
1136
+ }
1137
+ .kz-segmented-sublabel {
1138
+ font-size: 8px;
1139
+ color: var(--kz-text-3);
1140
+ text-transform: uppercase;
1141
+ letter-spacing: 0.5px;
1142
+ }
1143
+ .kz-segmented-badge {
1144
+ font-size: 9px;
1145
+ padding: 1px 4px;
1146
+ background: var(--kz-bg-3);
1147
+ color: var(--kz-text-1);
1148
+ border-radius: 2px;
1149
+ }
1150
+ .kz-segmented-bracket-l,
1151
+ .kz-segmented-bracket-r {
1152
+ width: 2px;
1153
+ height: 8px;
1154
+ background: currentColor;
1155
+ opacity: 0.6;
1156
+ }
1157
+ .kz-segmented-sm .kz-segmented-item {
1158
+ padding: 4px 8px;
1159
+ font-size: 10px;
1160
+ }
1161
+ .kz-segmented-lg .kz-segmented-item {
1162
+ padding: 10px 16px;
1163
+ font-size: 13px;
1164
+ }
1165
+ .kz-switch-container {
1166
+ display: inline-flex;
1167
+ align-items: center;
1168
+ gap: 10px;
1169
+ cursor: pointer;
1170
+ user-select: none;
1171
+ }
1172
+ .kz-switch-container.kz-disabled {
1173
+ opacity: 0.4;
1174
+ cursor: not-allowed;
1175
+ }
1176
+ .kz-switch-track {
1177
+ width: 44px;
1178
+ height: 22px;
1179
+ background: var(--kz-bg-0);
1180
+ border: 1px solid var(--kz-border);
1181
+ border-radius: var(--kz-radius-xs);
1182
+ position: relative;
1183
+ display: flex;
1184
+ align-items: center;
1185
+ justify-content: space-between;
1186
+ padding: 0 4px;
1187
+ transition: all 0.2s ease;
1188
+ flex-shrink: 0;
1189
+ }
1190
+ .kz-switch-container:hover:not(.kz-disabled) .kz-switch-track {
1191
+ border-color: var(--kz-border-light);
1192
+ }
1193
+ .kz-switch-thumb {
1194
+ position: absolute;
1195
+ left: 2px;
1196
+ top: 2px;
1197
+ width: 16px;
1198
+ height: 16px;
1199
+ background: var(--kz-border-light);
1200
+ border-radius: 1px;
1201
+ transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
1202
+ display: flex;
1203
+ align-items: center;
1204
+ justify-content: center;
1205
+ }
1206
+ .kz-switch-thumb-grip {
1207
+ width: 2px;
1208
+ height: 8px;
1209
+ background: var(--kz-bg-0);
1210
+ opacity: 0.8;
1211
+ }
1212
+ .kz-switch-state-text {
1213
+ font-family: var(--kz-mono);
1214
+ font-size: 8px;
1215
+ font-weight: bold;
1216
+ color: var(--kz-text-3);
1217
+ }
1218
+ .kz-switch-container.kz-checked .kz-switch-track {
1219
+ border-color: var(--kz-accent);
1220
+ background: var(--kz-bg-1);
1221
+ box-shadow: 0 0 8px var(--kz-accent-dim);
1222
+ }
1223
+ .kz-switch-container.kz-checked .kz-switch-thumb {
1224
+ left: calc(100% - 18px);
1225
+ background: var(--kz-accent);
1226
+ }
1227
+ .kz-switch-purple.kz-checked .kz-switch-track {
1228
+ border-color: var(--kz-purple);
1229
+ box-shadow: 0 0 8px rgba(176, 102, 255, 0.2);
1230
+ }
1231
+ .kz-switch-purple.kz-checked .kz-switch-thumb {
1232
+ background: var(--kz-purple);
1233
+ }
1234
+ .kz-switch-teal.kz-checked .kz-switch-track {
1235
+ border-color: var(--kz-teal);
1236
+ box-shadow: 0 0 8px rgba(80, 176, 176, 0.2);
1237
+ }
1238
+ .kz-switch-teal.kz-checked .kz-switch-thumb {
1239
+ background: var(--kz-teal);
1240
+ }
1241
+ .kz-switch-text-group {
1242
+ display: flex;
1243
+ flex-direction: column;
1244
+ gap: 2px;
1245
+ }
1246
+ .kz-switch-label {
1247
+ font-family: var(--kz-mono);
1248
+ font-size: 12px;
1249
+ color: var(--kz-text-0);
1250
+ }
1251
+ .kz-switch-sublabel {
1252
+ font-family: var(--kz-mono);
1253
+ font-size: 9px;
1254
+ color: var(--kz-text-3);
1255
+ text-transform: uppercase;
1256
+ }
1257
+ .kz-keyval-grid {
1258
+ background: var(--kz-bg-0);
1259
+ border: 1px solid var(--kz-border);
1260
+ border-radius: var(--kz-radius-sm);
1261
+ padding: 12px 14px;
1262
+ width: 100%;
1263
+ }
1264
+ .kz-keyval-header {
1265
+ display: flex;
1266
+ align-items: center;
1267
+ justify-content: space-between;
1268
+ padding-bottom: 8px;
1269
+ margin-bottom: 8px;
1270
+ border-bottom: 1px dashed var(--kz-border-subtle);
1271
+ }
1272
+ .kz-keyval-title {
1273
+ font-family: var(--kz-mono);
1274
+ font-size: 11px;
1275
+ font-weight: 600;
1276
+ color: var(--kz-accent);
1277
+ text-transform: uppercase;
1278
+ letter-spacing: 0.8px;
1279
+ }
1280
+ .kz-keyval-coord {
1281
+ font-family: var(--kz-mono);
1282
+ font-size: 9px;
1283
+ color: var(--kz-text-3);
1284
+ }
1285
+ .kz-keyval-list {
1286
+ display: flex;
1287
+ flex-direction: column;
1288
+ gap: 8px;
1289
+ }
1290
+ .kz-keyval-cols-2 .kz-keyval-list {
1291
+ display: grid;
1292
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1293
+ gap: 8px 16px;
1294
+ }
1295
+ @media (max-width: 640px) {
1296
+ .kz-keyval-cols-2 .kz-keyval-list {
1297
+ grid-template-columns: 100%;
1298
+ }
1299
+ }
1300
+ .kz-keyval-row {
1301
+ display: flex;
1302
+ align-items: baseline;
1303
+ justify-content: space-between;
1304
+ gap: 8px;
1305
+ font-family: var(--kz-mono);
1306
+ font-size: 11px;
1307
+ }
1308
+ .kz-keyval-key {
1309
+ color: var(--kz-text-2);
1310
+ display: inline-flex;
1311
+ align-items: center;
1312
+ gap: 6px;
1313
+ white-space: nowrap;
1314
+ }
1315
+ .kz-keyval-dot {
1316
+ width: 4px;
1317
+ height: 4px;
1318
+ border-radius: 50%;
1319
+ background: var(--kz-text-3);
1320
+ }
1321
+ .kz-keyval-dot.kz-dot-success {
1322
+ background: var(--kz-green-soft);
1323
+ }
1324
+ .kz-keyval-dot.kz-dot-warning {
1325
+ background: var(--kz-amber-soft);
1326
+ }
1327
+ .kz-keyval-dot.kz-dot-alert {
1328
+ background: var(--kz-red-soft);
1329
+ }
1330
+ .kz-keyval-dot.kz-dot-purple {
1331
+ background: var(--kz-purple);
1332
+ }
1333
+ .kz-keyval-leader {
1334
+ flex: 1;
1335
+ border-bottom: 1px dotted var(--kz-border-subtle);
1336
+ margin: 0 4px;
1337
+ position: relative;
1338
+ top: -3px;
1339
+ }
1340
+ .kz-keyval-val {
1341
+ display: inline-flex;
1342
+ align-items: baseline;
1343
+ gap: 6px;
1344
+ white-space: nowrap;
1345
+ }
1346
+ .kz-keyval-val-main {
1347
+ color: var(--kz-text-0);
1348
+ font-weight: 500;
1349
+ }
1350
+ .kz-keyval-val-sub {
1351
+ font-size: 9px;
1352
+ color: var(--kz-text-3);
1353
+ }
1354
+ .kz-breadcrumbs {
1355
+ display: flex;
1356
+ align-items: center;
1357
+ gap: 8px;
1358
+ font-family: var(--kz-mono);
1359
+ font-size: 11px;
1360
+ overflow-x: auto;
1361
+ white-space: nowrap;
1362
+ -webkit-overflow-scrolling: touch;
1363
+ }
1364
+ .kz-breadcrumb-prefix {
1365
+ color: var(--kz-accent);
1366
+ font-weight: 600;
1367
+ user-select: none;
1368
+ }
1369
+ .kz-breadcrumb-list {
1370
+ display: flex;
1371
+ align-items: center;
1372
+ list-style: none;
1373
+ padding: 0;
1374
+ margin: 0;
1375
+ gap: 6px;
1376
+ }
1377
+ .kz-breadcrumb-item {
1378
+ display: inline-flex;
1379
+ align-items: center;
1380
+ gap: 6px;
1381
+ color: var(--kz-text-2);
1382
+ }
1383
+ .kz-breadcrumb-separator {
1384
+ color: var(--kz-text-3);
1385
+ user-select: none;
1386
+ }
1387
+ .kz-breadcrumb-link,
1388
+ .kz-breadcrumb-button {
1389
+ background: transparent;
1390
+ border: none;
1391
+ padding: 0;
1392
+ color: var(--kz-text-1);
1393
+ text-decoration: none;
1394
+ cursor: pointer;
1395
+ font-family: inherit;
1396
+ font-size: inherit;
1397
+ transition: color 0.15s ease;
1398
+ }
1399
+ .kz-breadcrumb-link:hover,
1400
+ .kz-breadcrumb-button:hover {
1401
+ color: var(--kz-accent);
1402
+ }
1403
+ .kz-breadcrumb-current {
1404
+ color: var(--kz-text-0);
1405
+ font-weight: 500;
1406
+ }
1407
+ .kz-drawer-backdrop {
1408
+ position: fixed;
1409
+ inset: 0;
1410
+ background: rgba(5, 5, 8, 0.75);
1411
+ backdrop-filter: blur(4px);
1412
+ z-index: 1000;
1413
+ display: flex;
1414
+ }
1415
+ .kz-drawer-bottom {
1416
+ align-items: flex-end;
1417
+ justify-content: center;
1418
+ }
1419
+ .kz-drawer-right {
1420
+ align-items: stretch;
1421
+ justify-content: flex-end;
1422
+ }
1423
+ .kz-drawer-panel {
1424
+ background: var(--kz-bg-1);
1425
+ border: 1px solid var(--kz-border);
1426
+ position: relative;
1427
+ box-shadow: 0 0 24px rgba(0, 0, 0, 0.7);
1428
+ display: flex;
1429
+ flex-direction: column;
1430
+ }
1431
+ .kz-drawer-panel-bottom {
1432
+ width: 100%;
1433
+ max-width: 600px;
1434
+ max-height: 85vh;
1435
+ border-top-left-radius: var(--kz-radius-md);
1436
+ border-top-right-radius: var(--kz-radius-md);
1437
+ border-bottom: none;
1438
+ animation: kz-drawer-slide-up 0.25s cubic-bezier(0.16, 1, 0.3, 1);
1439
+ }
1440
+ .kz-drawer-panel-right {
1441
+ width: 100%;
1442
+ max-width: 380px;
1443
+ height: 100%;
1444
+ border-right: none;
1445
+ animation: kz-drawer-slide-left 0.25s cubic-bezier(0.16, 1, 0.3, 1);
1446
+ }
1447
+ @keyframes kz-drawer-slide-up {
1448
+ from {
1449
+ transform: translateY(100%);
1450
+ }
1451
+ to {
1452
+ transform: translateY(0);
1453
+ }
1454
+ }
1455
+ @keyframes kz-drawer-slide-left {
1456
+ from {
1457
+ transform: translateX(100%);
1458
+ }
1459
+ to {
1460
+ transform: translateX(0);
1461
+ }
1462
+ }
1463
+ .kz-drawer-handle-bar {
1464
+ display: flex;
1465
+ justify-content: center;
1466
+ padding: 8px 0 4px;
1467
+ cursor: pointer;
1468
+ }
1469
+ .kz-drawer-handle-pill {
1470
+ width: 36px;
1471
+ height: 4px;
1472
+ background: var(--kz-border-light);
1473
+ border-radius: 2px;
1474
+ }
1475
+ .kz-drawer-header {
1476
+ display: flex;
1477
+ align-items: flex-start;
1478
+ justify-content: space-between;
1479
+ padding: 12px 16px;
1480
+ border-bottom: 1px solid var(--kz-border);
1481
+ }
1482
+ .kz-drawer-title-group {
1483
+ display: flex;
1484
+ flex-direction: column;
1485
+ gap: 2px;
1486
+ }
1487
+ .kz-drawer-coord {
1488
+ font-family: var(--kz-mono);
1489
+ font-size: 9px;
1490
+ color: var(--kz-accent);
1491
+ letter-spacing: 0.8px;
1492
+ }
1493
+ .kz-drawer-title {
1494
+ margin: 0;
1495
+ font-family: var(--kz-mono);
1496
+ font-size: 14px;
1497
+ color: var(--kz-text-0);
1498
+ font-weight: 600;
1499
+ }
1500
+ .kz-drawer-sublabel {
1501
+ font-family: var(--kz-mono);
1502
+ font-size: 9px;
1503
+ color: var(--kz-text-3);
1504
+ text-transform: uppercase;
1505
+ }
1506
+ .kz-drawer-close-btn {
1507
+ background: transparent;
1508
+ border: 1px solid var(--kz-border);
1509
+ color: var(--kz-text-2);
1510
+ width: 24px;
1511
+ height: 24px;
1512
+ display: inline-flex;
1513
+ align-items: center;
1514
+ justify-content: center;
1515
+ border-radius: var(--kz-radius-xs);
1516
+ cursor: pointer;
1517
+ font-family: var(--kz-mono);
1518
+ font-size: 11px;
1519
+ }
1520
+ .kz-drawer-close-btn:hover {
1521
+ border-color: var(--kz-accent);
1522
+ color: var(--kz-accent);
1523
+ }
1524
+ .kz-drawer-body {
1525
+ padding: 16px;
1526
+ overflow-y: auto;
1527
+ flex: 1;
1528
+ }
1529
+ .kz-hud-toast {
1530
+ position: fixed;
1531
+ bottom: 24px;
1532
+ left: 24px;
1533
+ z-index: 1100;
1534
+ max-width: calc(100vw - 48px);
1535
+ width: 340px;
1536
+ background: var(--kz-bg-1);
1537
+ border: 1px solid var(--kz-border);
1538
+ border-radius: var(--kz-radius-sm);
1539
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.6);
1540
+ animation: kz-toast-pop 0.2s cubic-bezier(0.16, 1, 0.3, 1);
1541
+ overflow: hidden;
1542
+ }
1543
+ @keyframes kz-toast-pop {
1544
+ from {
1545
+ opacity: 0;
1546
+ transform: translateY(12px) scale(0.96);
1547
+ }
1548
+ to {
1549
+ opacity: 1;
1550
+ transform: translateY(0) scale(1);
1551
+ }
1552
+ }
1553
+ .kz-toast-inner {
1554
+ display: flex;
1555
+ align-items: flex-start;
1556
+ padding: 10px 12px;
1557
+ gap: 8px;
1558
+ position: relative;
1559
+ }
1560
+ .kz-toast-bracket-l,
1561
+ .kz-toast-bracket-r {
1562
+ width: 2px;
1563
+ height: 12px;
1564
+ background: var(--kz-accent);
1565
+ margin-top: 3px;
1566
+ flex-shrink: 0;
1567
+ }
1568
+ .kz-toast-purple .kz-toast-bracket-l,
1569
+ .kz-toast-purple .kz-toast-bracket-r {
1570
+ background: var(--kz-purple);
1571
+ }
1572
+ .kz-toast-teal .kz-toast-bracket-l,
1573
+ .kz-toast-teal .kz-toast-bracket-r {
1574
+ background: var(--kz-teal);
1575
+ }
1576
+ .kz-toast-alert .kz-toast-bracket-l,
1577
+ .kz-toast-alert .kz-toast-bracket-r {
1578
+ background: var(--kz-red-soft);
1579
+ }
1580
+ .kz-toast-content {
1581
+ flex: 1;
1582
+ display: flex;
1583
+ flex-direction: column;
1584
+ gap: 2px;
1585
+ min-width: 0;
1586
+ }
1587
+ .kz-toast-header {
1588
+ display: flex;
1589
+ align-items: center;
1590
+ gap: 6px;
1591
+ }
1592
+ .kz-toast-dot {
1593
+ width: 5px;
1594
+ height: 5px;
1595
+ border-radius: 50%;
1596
+ background: var(--kz-accent);
1597
+ box-shadow: 0 0 4px var(--kz-accent);
1598
+ }
1599
+ .kz-toast-purple .kz-toast-dot {
1600
+ background: var(--kz-purple);
1601
+ box-shadow: 0 0 4px var(--kz-purple);
1602
+ }
1603
+ .kz-toast-teal .kz-toast-dot {
1604
+ background: var(--kz-teal);
1605
+ box-shadow: 0 0 4px var(--kz-teal);
1606
+ }
1607
+ .kz-toast-alert .kz-toast-dot {
1608
+ background: var(--kz-red-soft);
1609
+ box-shadow: 0 0 4px var(--kz-red-soft);
1610
+ }
1611
+ .kz-toast-coord {
1612
+ font-family: var(--kz-mono);
1613
+ font-size: 8px;
1614
+ color: var(--kz-text-3);
1615
+ letter-spacing: 0.8px;
1616
+ }
1617
+ .kz-toast-title {
1618
+ font-family: var(--kz-mono);
1619
+ font-size: 12px;
1620
+ font-weight: 600;
1621
+ color: var(--kz-text-0);
1622
+ }
1623
+ .kz-toast-desc {
1624
+ font-family: var(--kz-sans);
1625
+ font-size: 11px;
1626
+ color: var(--kz-text-2);
1627
+ line-height: 1.35;
1628
+ }
1629
+ .kz-toast-dismiss {
1630
+ background: transparent;
1631
+ border: none;
1632
+ color: var(--kz-text-3);
1633
+ cursor: pointer;
1634
+ font-size: 10px;
1635
+ padding: 2px 4px;
1636
+ }
1637
+ .kz-toast-dismiss:hover {
1638
+ color: var(--kz-text-0);
1639
+ }
1640
+ .kz-toast-progress-track {
1641
+ height: 2px;
1642
+ background: var(--kz-bg-0);
1643
+ width: 100%;
1644
+ }
1645
+ .kz-toast-progress-bar {
1646
+ height: 100%;
1647
+ background: var(--kz-accent);
1648
+ transition: width 0.05s linear;
1649
+ }
1650
+ .kz-toast-purple .kz-toast-progress-bar {
1651
+ background: var(--kz-purple);
1652
+ }
1653
+ .kz-toast-teal .kz-toast-progress-bar {
1654
+ background: var(--kz-teal);
1655
+ }
1656
+ .kz-toast-alert .kz-toast-progress-bar {
1657
+ background: var(--kz-red-soft);
1658
+ }
1659
+ .kz-vinyl-alley .kz-vinyl {
1660
+ background:
1661
+ radial-gradient(
1662
+ circle at center,
1663
+ #1b0e2b 0%,
1664
+ #090510 60%,
1665
+ #200f33 62%,
1666
+ #050409 100%),
1667
+ repeating-radial-gradient(
1668
+ circle at center,
1669
+ transparent 15px,
1670
+ rgba(176, 102, 255, 0.06) 16px,
1671
+ transparent 17px,
1672
+ transparent 20px);
1673
+ border-color: #3b1d5c;
1674
+ }
1675
+ .kz-vinyl-alley .kz-vinyl.playing {
1676
+ border-color: var(--kz-purple);
1677
+ box-shadow: 0 0 18px rgba(176, 102, 255, 0.45);
1678
+ }
1679
+ .kz-vinyl-alley .kz-vinyl-label {
1680
+ background: #150924;
1681
+ border-color: rgba(176, 102, 255, 0.3);
1682
+ }
1683
+ .kz-vinyl-alley .kz-vinyl-label span {
1684
+ color: var(--kz-purple);
1685
+ }
1686
+ .kz-vinyl-teal .kz-vinyl {
1687
+ background:
1688
+ radial-gradient(
1689
+ circle at center,
1690
+ #071e1e 0%,
1691
+ #020909 60%,
1692
+ #0c2b2b 62%,
1693
+ #040b0b 100%),
1694
+ repeating-radial-gradient(
1695
+ circle at center,
1696
+ transparent 15px,
1697
+ rgba(80, 176, 176, 0.06) 16px,
1698
+ transparent 17px,
1699
+ transparent 20px);
1700
+ border-color: #123d3d;
1701
+ }
1702
+ .kz-vinyl-teal .kz-vinyl.playing {
1703
+ border-color: var(--kz-teal);
1704
+ box-shadow: 0 0 18px rgba(80, 176, 176, 0.45);
1705
+ }
1706
+ .kz-vinyl-teal .kz-vinyl-label {
1707
+ background: #061818;
1708
+ border-color: rgba(80, 176, 176, 0.3);
1709
+ }
1710
+ .kz-vinyl-teal .kz-vinyl-label span {
1711
+ color: var(--kz-teal);
1712
+ }
1713
+ .kz-vinyl-gold .kz-vinyl {
1714
+ background:
1715
+ radial-gradient(
1716
+ circle at center,
1717
+ #2e220a 0%,
1718
+ #120e04 60%,
1719
+ #3d2f0d 62%,
1720
+ #0a0803 100%),
1721
+ repeating-radial-gradient(
1722
+ circle at center,
1723
+ transparent 15px,
1724
+ rgba(226, 183, 20, 0.08) 16px,
1725
+ transparent 17px,
1726
+ transparent 20px);
1727
+ border-color: #5c4714;
1728
+ }
1729
+ .kz-vinyl-gold .kz-vinyl.playing {
1730
+ border-color: #e2b714;
1731
+ box-shadow: 0 0 18px rgba(226, 183, 20, 0.45);
1732
+ }
1733
+ .kz-vinyl-gold .kz-vinyl-label {
1734
+ background: #1f1807;
1735
+ border-color: rgba(226, 183, 20, 0.4);
1736
+ }
1737
+ .kz-vinyl-gold .kz-vinyl-label span {
1738
+ color: #e2b714;
1739
+ }
1740
+ .kz-vinyl-hologram .kz-vinyl {
1741
+ background:
1742
+ radial-gradient(
1743
+ circle at center,
1744
+ #111422 0%,
1745
+ #070912 60%,
1746
+ #1a1e36 62%,
1747
+ #04050a 100%),
1748
+ repeating-conic-gradient(
1749
+ from 0deg,
1750
+ rgba(176, 102, 255, 0.1) 0deg,
1751
+ rgba(80, 176, 176, 0.1) 60deg,
1752
+ rgba(226, 183, 20, 0.1) 120deg,
1753
+ rgba(176, 102, 255, 0.1) 180deg);
1754
+ border-color: #2b335c;
1755
+ }
1756
+ .kz-vinyl-hologram .kz-vinyl.playing {
1757
+ border-color: #5ab2ff;
1758
+ box-shadow: 0 0 20px rgba(90, 178, 255, 0.45);
1759
+ }
1760
+ .kz-vinyl-hologram .kz-vinyl-label {
1761
+ background: #0a0d1c;
1762
+ border-color: rgba(90, 178, 255, 0.4);
1763
+ }
1764
+ .kz-vinyl-hologram .kz-vinyl-label span {
1765
+ color: #5ab2ff;
1766
+ }
1767
+ .kz-bottom-bar {
1768
+ width: 100%;
1769
+ background: var(--kz-bg-1);
1770
+ padding: 6px 12px calc(6px + env(safe-area-inset-bottom, 0px));
1771
+ z-index: 900;
1772
+ user-select: none;
1773
+ }
1774
+ .kz-bottom-bar-fixed {
1775
+ position: fixed;
1776
+ bottom: 0;
1777
+ left: 0;
1778
+ right: 0;
1779
+ }
1780
+ .kz-bottom-bar-blur {
1781
+ background: rgba(10, 10, 12, 0.85);
1782
+ backdrop-filter: blur(12px);
1783
+ -webkit-backdrop-filter: blur(12px);
1784
+ }
1785
+ .kz-bottom-bar-bordered {
1786
+ border-top: 1px solid var(--kz-border);
1787
+ }
1788
+ .kz-bottom-bar-track {
1789
+ max-width: 600px;
1790
+ margin: 0 auto;
1791
+ display: flex;
1792
+ align-items: center;
1793
+ justify-content: space-around;
1794
+ position: relative;
1795
+ }
1796
+ .kz-bottom-bar-item {
1797
+ display: flex;
1798
+ flex-direction: column;
1799
+ align-items: center;
1800
+ justify-content: center;
1801
+ gap: 4px;
1802
+ background: transparent;
1803
+ border: none;
1804
+ padding: 6px 10px;
1805
+ color: var(--kz-text-2);
1806
+ cursor: pointer;
1807
+ border-radius: var(--kz-radius-xs);
1808
+ transition: all 0.15s ease;
1809
+ position: relative;
1810
+ flex: 1;
1811
+ }
1812
+ .kz-bottom-bar-item:hover:not(.kz-disabled) {
1813
+ color: var(--kz-text-0);
1814
+ }
1815
+ .kz-bottom-bar-item.kz-active {
1816
+ color: var(--kz-accent);
1817
+ }
1818
+ .kz-bottom-bar-alley .kz-bottom-bar-item.kz-active {
1819
+ color: var(--kz-purple);
1820
+ }
1821
+ .kz-bottom-bar-teal .kz-bottom-bar-item.kz-active {
1822
+ color: var(--kz-teal);
1823
+ }
1824
+ .kz-bottom-bar-active-pip {
1825
+ position: absolute;
1826
+ top: 0;
1827
+ width: 18px;
1828
+ height: 2px;
1829
+ background: currentColor;
1830
+ border-radius: 1px;
1831
+ box-shadow: 0 0 6px currentColor;
1832
+ }
1833
+ .kz-bottom-bar-icon-wrap {
1834
+ position: relative;
1835
+ display: flex;
1836
+ align-items: center;
1837
+ justify-content: center;
1838
+ }
1839
+ .kz-bottom-bar-badge {
1840
+ position: absolute;
1841
+ top: -4px;
1842
+ right: -8px;
1843
+ font-family: var(--kz-mono);
1844
+ font-size: 8px;
1845
+ font-weight: bold;
1846
+ padding: 1px 4px;
1847
+ border-radius: 6px;
1848
+ background: var(--kz-red-soft);
1849
+ color: #ffffff;
1850
+ line-height: 1;
1851
+ }
1852
+ .kz-bottom-bar-label {
1853
+ font-family: var(--kz-mono);
1854
+ font-size: 9px;
1855
+ font-weight: 500;
1856
+ letter-spacing: 0.5px;
1857
+ text-transform: uppercase;
1858
+ }
1859
+ .kz-bottom-bar-item.kz-disabled {
1860
+ opacity: 0.35;
1861
+ cursor: not-allowed;
1862
+ }
1863
+ .kz-vinyl-layout-mini {
1864
+ display: flex;
1865
+ align-items: center;
1866
+ gap: 12px;
1867
+ background: var(--kz-bg-0);
1868
+ border: 1px solid var(--kz-border);
1869
+ border-radius: var(--kz-radius-sm);
1870
+ padding: 8px 12px;
1871
+ width: 100%;
1872
+ }
1873
+ .kz-vinyl-layout-mini.kz-playing {
1874
+ border-color: var(--kz-accent);
1875
+ box-shadow: 0 0 12px var(--kz-accent-dim);
1876
+ }
1877
+ .kz-vinyl-alley.kz-playing {
1878
+ border-color: var(--kz-purple);
1879
+ box-shadow: 0 0 12px rgba(176, 102, 255, 0.2);
1880
+ }
1881
+ .kz-vinyl-mini-disc {
1882
+ flex-shrink: 0;
1883
+ }
1884
+ .kz-vinyl-mini-info {
1885
+ flex: 1;
1886
+ min-width: 0;
1887
+ display: flex;
1888
+ flex-direction: column;
1889
+ gap: 2px;
1890
+ }
1891
+ .kz-vinyl-mini-status {
1892
+ display: flex;
1893
+ align-items: center;
1894
+ gap: 6px;
1895
+ font-family: var(--kz-mono);
1896
+ font-size: 8px;
1897
+ color: var(--kz-text-3);
1898
+ text-transform: uppercase;
1899
+ }
1900
+ .kz-vinyl-pulse {
1901
+ width: 5px;
1902
+ height: 5px;
1903
+ border-radius: 50%;
1904
+ background: var(--kz-text-3);
1905
+ }
1906
+ .kz-pulse-active {
1907
+ background: var(--kz-accent);
1908
+ box-shadow: 0 0 6px var(--kz-accent);
1909
+ animation: kz-pulse 1.2s infinite;
1910
+ }
1911
+ .kz-vinyl-alley .kz-pulse-active {
1912
+ background: var(--kz-purple);
1913
+ box-shadow: 0 0 6px var(--kz-purple);
1914
+ }
1915
+ .kz-vinyl-rpm-tag {
1916
+ background: var(--kz-bg-2);
1917
+ padding: 0 4px;
1918
+ border-radius: 2px;
1919
+ color: var(--kz-text-2);
1920
+ }
1921
+ .kz-vinyl-mini-title {
1922
+ font-family: var(--kz-mono);
1923
+ font-size: 12px;
1924
+ font-weight: 600;
1925
+ color: var(--kz-text-0);
1926
+ white-space: nowrap;
1927
+ overflow: hidden;
1928
+ text-overflow: ellipsis;
1929
+ }
1930
+ .kz-vinyl-mini-artist {
1931
+ font-family: var(--kz-sans);
1932
+ font-size: 11px;
1933
+ color: var(--kz-text-2);
1934
+ white-space: nowrap;
1935
+ overflow: hidden;
1936
+ text-overflow: ellipsis;
1937
+ }
1938
+ .kz-vinyl-mini-controls {
1939
+ flex-shrink: 0;
1940
+ }
1941
+ .kz-vinyl-layout-card {
1942
+ display: flex;
1943
+ flex-direction: column;
1944
+ background: var(--kz-bg-1);
1945
+ border: 1px solid var(--kz-border);
1946
+ border-radius: var(--kz-radius-md);
1947
+ padding: 16px;
1948
+ width: 100%;
1949
+ max-width: 380px;
1950
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
1951
+ }
1952
+ .kz-vinyl-deck-header {
1953
+ display: flex;
1954
+ align-items: center;
1955
+ justify-content: space-between;
1956
+ padding-bottom: 12px;
1957
+ border-bottom: 1px dashed var(--kz-border-subtle);
1958
+ font-family: var(--kz-mono);
1959
+ font-size: 9px;
1960
+ color: var(--kz-text-3);
1961
+ }
1962
+ .kz-vinyl-deck-tag {
1963
+ color: var(--kz-accent);
1964
+ letter-spacing: 0.8px;
1965
+ font-weight: 600;
1966
+ }
1967
+ .kz-vinyl-alley .kz-vinyl-deck-tag {
1968
+ color: var(--kz-purple);
1969
+ }
1970
+ .kz-vinyl-deck-status {
1971
+ display: flex;
1972
+ align-items: center;
1973
+ gap: 6px;
1974
+ }
1975
+ .kz-vinyl-deck-center {
1976
+ display: flex;
1977
+ align-items: center;
1978
+ justify-content: center;
1979
+ padding: 24px 0;
1980
+ position: relative;
1981
+ }
1982
+ .kz-turntable-tonearm {
1983
+ position: absolute;
1984
+ top: 14px;
1985
+ right: 18px;
1986
+ width: 60px;
1987
+ height: 110px;
1988
+ pointer-events: none;
1989
+ transform-origin: 45px 12px;
1990
+ transform: rotate(-16deg);
1991
+ transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
1992
+ }
1993
+ .kz-turntable-tonearm.engaged {
1994
+ transform: rotate(18deg);
1995
+ }
1996
+ .kz-tonearm-pivot {
1997
+ position: absolute;
1998
+ top: 6px;
1999
+ right: 8px;
2000
+ width: 16px;
2001
+ height: 16px;
2002
+ border-radius: 50%;
2003
+ background: var(--kz-bg-3);
2004
+ border: 1px solid var(--kz-border-light);
2005
+ }
2006
+ .kz-tonearm-rod {
2007
+ position: absolute;
2008
+ top: 14px;
2009
+ right: 15px;
2010
+ width: 2px;
2011
+ height: 90px;
2012
+ background: var(--kz-border-light);
2013
+ }
2014
+ .kz-tonearm-head {
2015
+ position: absolute;
2016
+ bottom: 0;
2017
+ right: 10px;
2018
+ width: 10px;
2019
+ height: 14px;
2020
+ background: var(--kz-accent);
2021
+ border-radius: 1px;
2022
+ }
2023
+ .kz-vinyl-deck-footer {
2024
+ display: flex;
2025
+ flex-direction: column;
2026
+ gap: 12px;
2027
+ border-top: 1px dashed var(--kz-border-subtle);
2028
+ padding-top: 12px;
2029
+ }
2030
+ .kz-vinyl-deck-meta {
2031
+ display: flex;
2032
+ flex-direction: column;
2033
+ gap: 2px;
2034
+ text-align: center;
2035
+ }
2036
+ .kz-vinyl-deck-title {
2037
+ font-family: var(--kz-mono);
2038
+ font-size: 13px;
2039
+ font-weight: 600;
2040
+ color: var(--kz-text-0);
2041
+ }
2042
+ .kz-vinyl-deck-artist {
2043
+ font-family: var(--kz-sans);
2044
+ font-size: 11px;
2045
+ color: var(--kz-text-2);
2046
+ }
2047
+ .kz-vinyl-deck-controls {
2048
+ display: flex;
2049
+ align-items: center;
2050
+ justify-content: center;
2051
+ gap: 12px;
2052
+ }
2053
+ /*# sourceMappingURL=index.css.map */