@jjlmoya/utils-audiovisual 1.5.0 → 1.6.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jjlmoya/utils-audiovisual",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "type": "module",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
@@ -177,7 +177,7 @@ const { ui } = Astro.props;
177
177
  </script>
178
178
 
179
179
  <style>
180
- .cl-root {
180
+ :global(.cl-root) {
181
181
  --cl-bg: #fff;
182
182
  --cl-bg-elevated: #f8fafc;
183
183
  --cl-border: #e2e8f0;
@@ -195,7 +195,7 @@ const { ui } = Astro.props;
195
195
  margin: 0 auto;
196
196
  }
197
197
 
198
- :global(.theme-dark) .cl-root {
198
+ :global(.theme-dark .cl-root) {
199
199
  --cl-bg: #18181b;
200
200
  --cl-bg-elevated: #27272a;
201
201
  --cl-border: #3f3f46;
@@ -209,7 +209,7 @@ const { ui } = Astro.props;
209
209
  --cl-shadow: rgba(0, 0, 0, 0.5);
210
210
  }
211
211
 
212
- .cl-card {
212
+ :global(.cl-card) {
213
213
  background: var(--cl-bg);
214
214
  border: 1px solid var(--cl-border);
215
215
  border-radius: 3rem;
@@ -219,7 +219,7 @@ const { ui } = Astro.props;
219
219
  overflow: hidden;
220
220
  }
221
221
 
222
- .cl-drop {
222
+ :global(.cl-drop) {
223
223
  padding: 5rem 2rem;
224
224
  display: flex;
225
225
  flex-direction: column;
@@ -232,13 +232,13 @@ const { ui } = Astro.props;
232
232
  gap: 0.5rem;
233
233
  }
234
234
 
235
- .cl-drop:hover,
236
- .cl-drop-active {
235
+ :global(.cl-drop:hover),
236
+ :global(.cl-drop-active) {
237
237
  background: var(--cl-accent-alpha-hover);
238
238
  border-color: var(--cl-accent);
239
239
  }
240
240
 
241
- .cl-drop-icon {
241
+ :global(.cl-drop-icon) {
242
242
  width: 5rem;
243
243
  height: 5rem;
244
244
  background: var(--cl-accent-alpha);
@@ -250,30 +250,30 @@ const { ui } = Astro.props;
250
250
  color: var(--cl-accent);
251
251
  }
252
252
 
253
- .cl-drop-icon svg {
253
+ :global(.cl-drop-icon svg) {
254
254
  width: 2.5rem;
255
255
  height: 2.5rem;
256
256
  }
257
257
 
258
- .cl-drop-title {
258
+ :global(.cl-drop-title) {
259
259
  font-size: 2rem;
260
260
  font-weight: 950;
261
261
  color: var(--cl-text);
262
262
  margin: 0;
263
263
  }
264
264
 
265
- .cl-drop-sub {
265
+ :global(.cl-drop-sub) {
266
266
  font-size: 1.1rem;
267
267
  color: var(--cl-text-muted);
268
268
  margin: 0;
269
269
  font-weight: 600;
270
270
  }
271
271
 
272
- .cl-workspace {
272
+ :global(.cl-workspace) {
273
273
  padding: 1.5rem;
274
274
  }
275
275
 
276
- .cl-mini-drop {
276
+ :global(.cl-mini-drop) {
277
277
  display: inline-flex;
278
278
  align-items: center;
279
279
  gap: 0.75rem;
@@ -289,17 +289,17 @@ const { ui } = Astro.props;
289
289
  transition: border-color 0.2s, color 0.2s;
290
290
  }
291
291
 
292
- .cl-mini-drop:hover {
292
+ :global(.cl-mini-drop:hover) {
293
293
  border-color: var(--cl-accent);
294
294
  color: var(--cl-accent);
295
295
  }
296
296
 
297
- .cl-mini-drop svg {
297
+ :global(.cl-mini-drop svg) {
298
298
  width: 1.1rem;
299
299
  height: 1.1rem;
300
300
  }
301
301
 
302
- .cl-config-bar {
302
+ :global(.cl-config-bar) {
303
303
  padding: 1rem 0;
304
304
  margin-bottom: 2rem;
305
305
  border-bottom: 1px solid var(--cl-border);
@@ -307,13 +307,13 @@ const { ui } = Astro.props;
307
307
  justify-content: flex-end;
308
308
  }
309
309
 
310
- .cl-config-item {
310
+ :global(.cl-config-item) {
311
311
  display: flex;
312
312
  align-items: center;
313
313
  gap: 1rem;
314
314
  }
315
315
 
316
- .cl-config-label {
316
+ :global(.cl-config-label) {
317
317
  font-size: 0.75rem;
318
318
  font-weight: 900;
319
319
  text-transform: uppercase;
@@ -321,7 +321,7 @@ const { ui } = Astro.props;
321
321
  letter-spacing: 0.1em;
322
322
  }
323
323
 
324
- .cl-count-select {
324
+ :global(.cl-count-select) {
325
325
  padding: 0.5rem 1rem;
326
326
  border-radius: 0.75rem;
327
327
  background: var(--cl-bg-elevated);
@@ -331,58 +331,58 @@ const { ui } = Astro.props;
331
331
  cursor: pointer;
332
332
  }
333
333
 
334
- .cl-result-layout {
334
+ :global(.cl-result-layout) {
335
335
  display: grid;
336
336
  grid-template-columns: 1fr 1.25fr;
337
337
  gap: 3rem;
338
338
  }
339
339
 
340
340
  @media (max-width: 800px) {
341
- .cl-result-layout {
341
+ :global(.cl-result-layout) {
342
342
  grid-template-columns: 1fr;
343
343
  }
344
344
  }
345
345
 
346
- .cl-preview-col {
346
+ :global(.cl-preview-col) {
347
347
  display: flex;
348
348
  flex-direction: column;
349
349
  gap: 1rem;
350
350
  }
351
351
 
352
- .cl-preview-img {
352
+ :global(.cl-preview-img) {
353
353
  width: 100%;
354
354
  border-radius: 1.5rem;
355
355
  box-shadow: 0 20px 40px var(--cl-shadow);
356
356
  display: block;
357
357
  }
358
358
 
359
- .cl-palette-col {
359
+ :global(.cl-palette-col) {
360
360
  display: flex;
361
361
  flex-direction: column;
362
362
  gap: 1.5rem;
363
363
  }
364
364
 
365
- .cl-palette-header {
365
+ :global(.cl-palette-header) {
366
366
  display: flex;
367
367
  align-items: center;
368
368
  gap: 1rem;
369
369
  color: var(--cl-accent);
370
370
  }
371
371
 
372
- .cl-palette-header svg {
372
+ :global(.cl-palette-header svg) {
373
373
  width: 1.25rem;
374
374
  height: 1.25rem;
375
375
  flex-shrink: 0;
376
376
  }
377
377
 
378
- .cl-palette-header h4 {
378
+ :global(.cl-palette-header h4) {
379
379
  font-size: 1.25rem;
380
380
  font-weight: 950;
381
381
  color: var(--cl-text);
382
382
  margin: 0;
383
383
  }
384
384
 
385
- .cl-loader {
385
+ :global(.cl-loader) {
386
386
  display: flex;
387
387
  flex-direction: column;
388
388
  align-items: center;
@@ -390,7 +390,7 @@ const { ui } = Astro.props;
390
390
  padding: 2rem 0;
391
391
  }
392
392
 
393
- .cl-spinner {
393
+ :global(.cl-spinner) {
394
394
  width: 3rem;
395
395
  height: 3rem;
396
396
  border: 3px solid var(--cl-accent-alpha);
@@ -399,7 +399,7 @@ const { ui } = Astro.props;
399
399
  animation: cl-spin 0.8s linear infinite;
400
400
  }
401
401
 
402
- .cl-loader-text {
402
+ :global(.cl-loader-text) {
403
403
  font-size: 0.75rem;
404
404
  font-weight: 900;
405
405
  text-transform: uppercase;
@@ -408,14 +408,14 @@ const { ui } = Astro.props;
408
408
  margin: 0;
409
409
  }
410
410
 
411
- .cl-swatches {
411
+ :global(.cl-swatches) {
412
412
  display: flex;
413
413
  flex-direction: column;
414
414
  gap: 0.75rem;
415
415
  animation: cl-fade-up 0.5s ease;
416
416
  }
417
417
 
418
- .cl-swatch {
418
+ :global(.cl-swatch) {
419
419
  display: flex;
420
420
  align-items: center;
421
421
  gap: 1.25rem;
@@ -427,17 +427,17 @@ const { ui } = Astro.props;
427
427
  transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275), border-color 0.2s;
428
428
  }
429
429
 
430
- .cl-swatch:hover {
430
+ :global(.cl-swatch:hover) {
431
431
  transform: scale(1.02);
432
432
  border-color: var(--cl-accent);
433
433
  }
434
434
 
435
- .cl-swatch-copied {
435
+ :global(.cl-swatch-copied) {
436
436
  background: var(--cl-emerald-alpha);
437
437
  border-color: var(--cl-emerald);
438
438
  }
439
439
 
440
- .cl-swatch-color {
440
+ :global(.cl-swatch-color) {
441
441
  width: 3.5rem;
442
442
  height: 3.5rem;
443
443
  border-radius: 0.75rem;
@@ -445,19 +445,19 @@ const { ui } = Astro.props;
445
445
  flex-shrink: 0;
446
446
  }
447
447
 
448
- .cl-swatch-info {
448
+ :global(.cl-swatch-info) {
449
449
  display: flex;
450
450
  flex-direction: column;
451
451
  gap: 0.2rem;
452
452
  }
453
453
 
454
- .cl-swatch-hex {
454
+ :global(.cl-swatch-hex) {
455
455
  font-weight: 950;
456
456
  color: var(--cl-text);
457
457
  font-size: 1.25rem;
458
458
  }
459
459
 
460
- .cl-swatch-action {
460
+ :global(.cl-swatch-action) {
461
461
  font-size: 0.7rem;
462
462
  font-weight: 900;
463
463
  color: var(--cl-text-muted);
@@ -465,7 +465,7 @@ const { ui } = Astro.props;
465
465
  letter-spacing: 0.05em;
466
466
  }
467
467
 
468
- .cl-hidden {
468
+ :global(.cl-hidden) {
469
469
  display: none;
470
470
  }
471
471
 
@@ -246,7 +246,7 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
246
246
  ctx.fillRect(0, 0, W, H);
247
247
  for (let i = 0; i < Math.min(images.length, pos.length); i++) {
248
248
  const p = pos[i]!;
249
- await drawImage(ctx, images[i]!.src, p[0], p[1], p[2], p[3]);
249
+ await drawImage(ctx, images[i]!.src, { x: p[0], y: p[1], w: p[2], h: p[3] });
250
250
  if (gap > 0) { ctx.strokeStyle = bcInput.value; ctx.lineWidth = gap; ctx.strokeRect(p[0]-gap/2, p[1]-gap/2, p[2]+gap, p[3]+gap); }
251
251
  }
252
252
  canvas.style.display = '';
@@ -301,7 +301,7 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
301
301
  </script>
302
302
 
303
303
  <style>
304
- .cm-root {
304
+ :global(.cm-root) {
305
305
  --cm-bg: #fff;
306
306
  --cm-bg-muted: #f8fafc;
307
307
  --cm-border: #e2e8f0;
@@ -317,7 +317,7 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
317
317
  padding: 1rem;
318
318
  }
319
319
 
320
- :global(.theme-dark) .cm-root {
320
+ :global(.theme-dark .cm-root) {
321
321
  --cm-bg: #1e293b;
322
322
  --cm-bg-muted: #0f172a;
323
323
  --cm-border: #334155;
@@ -328,7 +328,7 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
328
328
  --cm-shadow: rgba(0,0,0,0.4);
329
329
  }
330
330
 
331
- .cm-card {
331
+ :global(.cm-card) {
332
332
  background: var(--cm-bg);
333
333
  border: 1px solid var(--cm-border);
334
334
  border-radius: var(--cm-radius);
@@ -336,7 +336,7 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
336
336
  overflow: hidden;
337
337
  }
338
338
 
339
- .cm-top-row {
339
+ :global(.cm-top-row) {
340
340
  display: grid;
341
341
  grid-template-columns: 300px 1fr;
342
342
  gap: 0;
@@ -348,7 +348,7 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
348
348
  }
349
349
  }
350
350
 
351
- .cm-left-col {
351
+ :global(.cm-left-col) {
352
352
  padding: 1.25rem;
353
353
  border-right: 1px solid var(--cm-border);
354
354
  display: flex;
@@ -363,7 +363,7 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
363
363
  }
364
364
  }
365
365
 
366
- .cm-drop-zone {
366
+ :global(.cm-drop-zone) {
367
367
  position: relative;
368
368
  background: var(--cm-bg-muted);
369
369
  border: 2px dashed var(--cm-border);
@@ -379,7 +379,7 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
379
379
  color: var(--cm-primary);
380
380
  }
381
381
 
382
- .cm-drop-zone input[type="file"] {
382
+ :global(.cm-drop-zone input[type="file"]) {
383
383
  position: absolute;
384
384
  inset: 0;
385
385
  opacity: 0;
@@ -388,32 +388,32 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
388
388
  height: 100%;
389
389
  }
390
390
 
391
- .cm-drop-zone:hover,
392
- .cm-drop-zone-over {
391
+ :global(.cm-drop-zone:hover),
392
+ :global(.cm-drop-zone-over) {
393
393
  border-color: var(--cm-primary);
394
394
  background: var(--cm-primary-light);
395
395
  }
396
396
 
397
- .cm-drop-title {
397
+ :global(.cm-drop-title) {
398
398
  font-size: 0.9rem;
399
399
  font-weight: 700;
400
400
  color: var(--cm-text);
401
401
  margin: 0;
402
402
  }
403
403
 
404
- .cm-drop-sub {
404
+ :global(.cm-drop-sub) {
405
405
  font-size: 0.75rem;
406
406
  color: var(--cm-text-muted);
407
407
  margin: 0;
408
408
  }
409
409
 
410
- .cm-drop-link {
410
+ :global(.cm-drop-link) {
411
411
  color: var(--cm-primary);
412
412
  font-weight: 600;
413
413
  cursor: pointer;
414
414
  }
415
415
 
416
- .cm-section-label {
416
+ :global(.cm-section-label) {
417
417
  display: block;
418
418
  font-size: 0.65rem;
419
419
  font-weight: 700;
@@ -422,13 +422,13 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
422
422
  color: var(--cm-text-muted);
423
423
  }
424
424
 
425
- .cm-section-header {
425
+ :global(.cm-section-header) {
426
426
  display: flex;
427
427
  justify-content: space-between;
428
428
  align-items: center;
429
429
  }
430
430
 
431
- .cm-badge {
431
+ :global(.cm-badge) {
432
432
  background: var(--cm-primary-light);
433
433
  color: var(--cm-primary);
434
434
  font-size: 0.65rem;
@@ -437,14 +437,14 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
437
437
  border-radius: 9999px;
438
438
  }
439
439
 
440
- .cm-thumbs {
440
+ :global(.cm-thumbs) {
441
441
  display: grid;
442
442
  grid-template-columns: repeat(auto-fill, minmax(48px, 1fr));
443
443
  gap: 0.35rem;
444
444
  margin-top: 0.5rem;
445
445
  }
446
446
 
447
- .cm-thumb {
447
+ :global(.cm-thumb) {
448
448
  position: relative;
449
449
  aspect-ratio: 1;
450
450
  border-radius: 0.4rem;
@@ -453,18 +453,18 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
453
453
  transition: border-color 0.15s;
454
454
  }
455
455
 
456
- .cm-thumb:hover {
456
+ :global(.cm-thumb:hover) {
457
457
  border-color: var(--cm-primary);
458
458
  }
459
459
 
460
- .cm-thumb img {
460
+ :global(.cm-thumb img) {
461
461
  width: 100%;
462
462
  height: 100%;
463
463
  object-fit: cover;
464
464
  display: block;
465
465
  }
466
466
 
467
- .cm-thumb-num {
467
+ :global(.cm-thumb-num) {
468
468
  position: absolute;
469
469
  bottom: 2px;
470
470
  left: 3px;
@@ -475,7 +475,7 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
475
475
  line-height: 1;
476
476
  }
477
477
 
478
- .cm-thumb-del {
478
+ :global(.cm-thumb-del) {
479
479
  position: absolute;
480
480
  top: 2px;
481
481
  right: 2px;
@@ -493,15 +493,15 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
493
493
  transition: background 0.15s;
494
494
  }
495
495
 
496
- .cm-thumb:hover .cm-thumb-del {
496
+ :global(.cm-thumb:hover .cm-thumb-del) {
497
497
  display: flex;
498
498
  }
499
499
 
500
- .cm-thumb-del:hover {
500
+ :global(.cm-thumb-del:hover) {
501
501
  background: #dc2626;
502
502
  }
503
503
 
504
- .cm-preview-col {
504
+ :global(.cm-preview-col) {
505
505
  padding: 1.25rem;
506
506
  display: flex;
507
507
  flex-direction: column;
@@ -509,7 +509,7 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
509
509
  min-height: 260px;
510
510
  }
511
511
 
512
- .cm-preview-placeholder {
512
+ :global(.cm-preview-placeholder) {
513
513
  flex: 1;
514
514
  background: var(--cm-bg-muted);
515
515
  border: 2px dashed var(--cm-border);
@@ -522,12 +522,12 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
522
522
  color: var(--cm-text-muted);
523
523
  }
524
524
 
525
- .cm-preview-placeholder p {
525
+ :global(.cm-preview-placeholder p) {
526
526
  font-size: 0.8rem;
527
527
  margin: 0;
528
528
  }
529
529
 
530
- .cm-canvas {
530
+ :global(.cm-canvas) {
531
531
  width: 100%;
532
532
  height: auto;
533
533
  border-radius: 0.75rem;
@@ -535,7 +535,7 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
535
535
  display: block;
536
536
  }
537
537
 
538
- .cm-dims-badge {
538
+ :global(.cm-dims-badge) {
539
539
  font-size: 0.65rem;
540
540
  font-weight: 600;
541
541
  color: var(--cm-text-muted);
@@ -545,7 +545,7 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
545
545
  padding: 0.15rem 0.5rem;
546
546
  }
547
547
 
548
- .cm-section-divider {
548
+ :global(.cm-section-divider) {
549
549
  border-top: 1px solid var(--cm-border);
550
550
  padding: 1rem 1.25rem;
551
551
  display: flex;
@@ -553,13 +553,13 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
553
553
  gap: 0.75rem;
554
554
  }
555
555
 
556
- .cm-layouts {
556
+ :global(.cm-layouts) {
557
557
  display: grid;
558
558
  grid-template-columns: repeat(auto-fill, minmax(64px, 1fr));
559
559
  gap: 0.4rem;
560
560
  }
561
561
 
562
- .cm-layout-btn {
562
+ :global(.cm-layout-btn) {
563
563
  display: flex;
564
564
  flex-direction: column;
565
565
  align-items: center;
@@ -574,31 +574,31 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
574
574
  position: relative;
575
575
  }
576
576
 
577
- .cm-layout-btn span {
577
+ :global(.cm-layout-btn span) {
578
578
  font-size: 0.55rem;
579
579
  font-weight: 600;
580
580
  text-align: center;
581
581
  line-height: 1.2;
582
582
  }
583
583
 
584
- .cm-layout-btn:hover:not(:disabled) {
584
+ :global(.cm-layout-btn:hover:not(:disabled)) {
585
585
  border-color: var(--cm-primary);
586
586
  color: var(--cm-primary);
587
587
  background: var(--cm-primary-light);
588
588
  }
589
589
 
590
- .cm-layout-btn-active {
590
+ :global(.cm-layout-btn-active) {
591
591
  border-color: var(--cm-primary);
592
592
  background: var(--cm-primary-light);
593
593
  color: var(--cm-primary);
594
594
  }
595
595
 
596
- .cm-layout-btn-disabled {
596
+ :global(.cm-layout-btn-disabled) {
597
597
  opacity: 0.45;
598
598
  cursor: not-allowed;
599
599
  }
600
600
 
601
- .cm-layout-need {
601
+ :global(.cm-layout-need) {
602
602
  position: absolute;
603
603
  top: 2px;
604
604
  right: 4px;
@@ -612,37 +612,37 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
612
612
  line-height: 1.4;
613
613
  }
614
614
 
615
- .cm-settings-inline {
615
+ :global(.cm-settings-inline) {
616
616
  display: flex;
617
617
  flex-wrap: wrap;
618
618
  align-items: flex-end;
619
619
  gap: 1rem;
620
620
  }
621
621
 
622
- .cm-setting {
622
+ :global(.cm-setting) {
623
623
  display: flex;
624
624
  flex-direction: column;
625
625
  gap: 0.3rem;
626
626
  }
627
627
 
628
- .cm-setting-label {
628
+ :global(.cm-setting-label) {
629
629
  font-size: 0.7rem;
630
630
  font-weight: 600;
631
631
  color: var(--cm-text-muted);
632
632
  }
633
633
 
634
- .cm-slider {
634
+ :global(.cm-slider) {
635
635
  accent-color: var(--cm-primary);
636
636
  width: 120px;
637
637
  }
638
638
 
639
- .cm-color-row {
639
+ :global(.cm-color-row) {
640
640
  display: flex;
641
641
  align-items: center;
642
642
  gap: 0.5rem;
643
643
  }
644
644
 
645
- .cm-color-swatch {
645
+ :global(.cm-color-swatch) {
646
646
  width: 32px;
647
647
  height: 32px;
648
648
  border: 2px solid var(--cm-border);
@@ -652,14 +652,14 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
652
652
  background: transparent;
653
653
  }
654
654
 
655
- .cm-color-code {
655
+ :global(.cm-color-code) {
656
656
  font-size: 0.7rem;
657
657
  font-weight: 600;
658
658
  color: var(--cm-text-muted);
659
659
  font-variant-numeric: tabular-nums;
660
660
  }
661
661
 
662
- .cm-download-btn {
662
+ :global(.cm-download-btn) {
663
663
  display: flex;
664
664
  align-items: center;
665
665
  gap: 0.4rem;
@@ -677,13 +677,13 @@ const dropSub = (ui.dropSub ?? '').replace('{link}', `<span class="cm-drop-link"
677
677
  margin-left: auto;
678
678
  }
679
679
 
680
- .cm-download-btn:disabled {
680
+ :global(.cm-download-btn:disabled) {
681
681
  opacity: 0.4;
682
682
  cursor: not-allowed;
683
683
  box-shadow: none;
684
684
  }
685
685
 
686
- .cm-download-btn:not(:disabled):hover {
686
+ :global(.cm-download-btn:not(:disabled):hover) {
687
687
  transform: translateY(-1px);
688
688
  box-shadow: 0 6px 18px rgba(99,102,241,0.4);
689
689
  }