@jjlmoya/utils-creative 1.4.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.
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  import { Icon } from 'astro-icon/components';
3
- import './style.css';
4
3
  import type { ExcuseGeneratorUI } from './index';
5
4
 
6
5
  interface Props {
@@ -138,3 +137,322 @@ const { ui } = Astro.props;
138
137
 
139
138
  els.genBtn?.addEventListener('click', generateExcuse);
140
139
  </script>
140
+
141
+ <style>
142
+ .excuse-generator {
143
+ --excuse-generator-bg: #fff;
144
+ --excuse-generator-bg-transparent: rgba(255, 255, 255, 0.8);
145
+ --excuse-generator-bg-muted: #f1f5f9;
146
+ --excuse-generator-text: #0f172a;
147
+ --excuse-generator-text-muted: #475569;
148
+ --excuse-generator-text-dim: #64748b;
149
+ --excuse-generator-border: #e2e8f0;
150
+ --excuse-generator-shadow: rgba(0, 0, 0, 0.05);
151
+ --excuse-generator-primary: #ec4899;
152
+ --excuse-generator-primary-on: #fff;
153
+ --excuse-generator-accent: #f43f5e;
154
+ --excuse-generator-success: #10b981;
155
+ --excuse-generator-warning: #f59e0b;
156
+ --excuse-generator-error: #f43f5e;
157
+ --excuse-generator-ring: rgba(236, 72, 153, 0.2);
158
+ }
159
+
160
+ :global(.theme-dark) .excuse-generator {
161
+ --excuse-generator-bg: #0f172a;
162
+ --excuse-generator-bg-transparent: rgba(15, 23, 42, 0.8);
163
+ --excuse-generator-bg-muted: #1e293b;
164
+ --excuse-generator-text: #f8fafc;
165
+ --excuse-generator-text-muted: #94a3b8;
166
+ --excuse-generator-text-dim: #64748b;
167
+ --excuse-generator-border: #334155;
168
+ --excuse-generator-shadow: rgba(0, 0, 0, 0.3);
169
+ --excuse-generator-primary: #f472b6;
170
+ --excuse-generator-primary-on: #fff;
171
+ --excuse-generator-accent: #fb7185;
172
+ --excuse-generator-success: #34d399;
173
+ --excuse-generator-warning: #fbbf24;
174
+ --excuse-generator-error: #fb7185;
175
+ --excuse-generator-ring: rgba(244, 114, 182, 0.2);
176
+ }
177
+
178
+ .excuse-generator-root {
179
+ max-width: 64rem;
180
+ margin-left: auto;
181
+ margin-right: auto;
182
+ padding: 1rem;
183
+ }
184
+
185
+ @media (min-width: 768px) {
186
+ .excuse-generator-root {
187
+ padding: 2rem;
188
+ }
189
+ }
190
+
191
+ .excuse-generator-card {
192
+ position: relative;
193
+ background-color: var(--excuse-generator-bg-transparent);
194
+ backdrop-filter: blur(24px);
195
+ border-radius: 2rem;
196
+ padding: 2rem;
197
+ box-shadow: 0 25px 50px -12px var(--excuse-generator-shadow);
198
+ border: 1px solid var(--excuse-generator-border);
199
+ min-height: 500px;
200
+ display: flex;
201
+ flex-direction: column;
202
+ align-items: center;
203
+ justify-content: center;
204
+ text-align: center;
205
+ overflow: hidden;
206
+ }
207
+
208
+ @media (min-width: 768px) {
209
+ .excuse-generator-card {
210
+ padding: 3rem;
211
+ }
212
+ }
213
+
214
+ .excuse-generator-blob {
215
+ position: absolute;
216
+ width: 24rem;
217
+ height: 24rem;
218
+ border-radius: 9999px;
219
+ filter: blur(64px);
220
+ pointer-events: none;
221
+ }
222
+
223
+ .excuse-generator-blob-1 {
224
+ top: 0;
225
+ right: 0;
226
+ transform: translate(50%, -50%);
227
+ background-color: rgba(244, 114, 182, 0.2);
228
+ }
229
+
230
+ .excuse-generator-blob-2 {
231
+ bottom: 0;
232
+ left: 0;
233
+ transform: translate(-50%, 50%);
234
+ background-color: rgba(251, 113, 133, 0.2);
235
+ }
236
+
237
+ .excuse-generator-slots {
238
+ position: relative;
239
+ z-index: 10;
240
+ width: 100%;
241
+ max-width: 80rem;
242
+ min-height: 200px;
243
+ display: flex;
244
+ flex-direction: column;
245
+ gap: 1rem;
246
+ margin-bottom: 3rem;
247
+ }
248
+
249
+ @media (min-width: 1024px) {
250
+ .excuse-generator-slots {
251
+ flex-direction: row;
252
+ align-items: center;
253
+ }
254
+ }
255
+
256
+ .excuse-generator-slot {
257
+ position: relative;
258
+ flex: 1;
259
+ min-width: 200px;
260
+ background-color: rgba(255, 255, 255, 0.6);
261
+ backdrop-filter: blur(4px);
262
+ border-radius: 1rem;
263
+ padding: 1.5rem;
264
+ border: 2px solid var(--excuse-generator-border);
265
+ box-shadow: 0 10px 15px -3px var(--excuse-generator-shadow);
266
+ display: flex;
267
+ align-items: center;
268
+ justify-content: center;
269
+ text-align: center;
270
+ transition-property: all;
271
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
272
+ transition-duration: 300ms;
273
+ }
274
+
275
+ :global(.theme-dark) .excuse-generator-slot {
276
+ background-color: rgba(15, 23, 42, 0.6);
277
+ }
278
+
279
+ .excuse-generator-slot:hover {
280
+ transform: scale(1.05);
281
+ background-color: var(--excuse-generator-bg);
282
+ border-color: var(--excuse-generator-primary);
283
+ }
284
+
285
+ .excuse-generator-slot-label {
286
+ position: absolute;
287
+ top: 0.5rem;
288
+ left: 50%;
289
+ transform: translateX(-50%);
290
+ color: var(--excuse-generator-text-dim);
291
+ font-size: 0.75rem;
292
+ line-height: 1rem;
293
+ text-transform: uppercase;
294
+ letter-spacing: 0.1em;
295
+ opacity: 0.5;
296
+ }
297
+
298
+ .excuse-generator-slot-text {
299
+ font-size: 1.5rem;
300
+ font-weight: 900;
301
+ color: var(--excuse-generator-primary);
302
+ line-height: 1.25;
303
+ overflow-wrap: break-word;
304
+ width: 100%;
305
+ transition-property: all;
306
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
307
+ transition-duration: 100ms;
308
+ }
309
+
310
+ @media (min-width: 768px) {
311
+ .excuse-generator-slot-text {
312
+ font-size: 1.875rem;
313
+ line-height: 2.25rem;
314
+ }
315
+ }
316
+
317
+ .excuse-generator-slot-text.blur {
318
+ filter: blur(3px);
319
+ opacity: 0.7;
320
+ transform: scale(0.95);
321
+ }
322
+
323
+ .excuse-generator-separator {
324
+ display: none;
325
+ font-size: 2rem;
326
+ color: var(--excuse-generator-border);
327
+ }
328
+
329
+ @media (min-width: 1024px) {
330
+ .excuse-generator-separator {
331
+ display: block;
332
+ }
333
+ }
334
+
335
+ .excuse-generator-separator-mobile {
336
+ display: flex;
337
+ justify-content: center;
338
+ color: var(--excuse-generator-border);
339
+ }
340
+
341
+ @media (min-width: 1024px) {
342
+ .excuse-generator-separator-mobile {
343
+ display: none;
344
+ }
345
+ }
346
+
347
+ .excuse-generator-actions {
348
+ position: relative;
349
+ z-index: 10;
350
+ display: flex;
351
+ flex-direction: column;
352
+ gap: 1.5rem;
353
+ align-items: center;
354
+ }
355
+
356
+ .excuse-generator-btn {
357
+ position: relative;
358
+ padding-left: 2.5rem;
359
+ padding-right: 2.5rem;
360
+ padding-top: 1.25rem;
361
+ padding-bottom: 1.25rem;
362
+ background-color: #0f172a;
363
+ border-radius: 1rem;
364
+ color: #fff;
365
+ font-weight: 900;
366
+ font-size: 1.25rem;
367
+ line-height: 1.75rem;
368
+ box-shadow: 0 25px 50px -12px rgba(236, 72, 153, 0.2);
369
+ border: none;
370
+ cursor: pointer;
371
+ overflow: hidden;
372
+ transition-property: all;
373
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
374
+ transition-duration: 300ms;
375
+ }
376
+
377
+ :global(.theme-dark) .excuse-generator-btn {
378
+ background-color: #f8fafc;
379
+ color: #0f172a;
380
+ }
381
+
382
+ .excuse-generator-btn:hover {
383
+ transform: translateY(-0.25rem);
384
+ box-shadow: 0 25px 50px -12px rgba(236, 72, 153, 0.4);
385
+ }
386
+
387
+ .excuse-generator-btn:active {
388
+ transform: translateY(0);
389
+ }
390
+
391
+ .excuse-generator-btn:disabled {
392
+ opacity: 0.7;
393
+ cursor: not-allowed;
394
+ }
395
+
396
+ .excuse-generator-btn-content {
397
+ position: relative;
398
+ z-index: 10;
399
+ display: flex;
400
+ align-items: center;
401
+ gap: 0.75rem;
402
+ }
403
+
404
+ .excuse-generator-btn-gradient {
405
+ position: absolute;
406
+ inset: 0;
407
+ background-image: linear-gradient(to right, var(--excuse-generator-primary), var(--excuse-generator-accent), var(--excuse-generator-primary));
408
+ opacity: 0;
409
+ transition-property: opacity;
410
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
411
+ transition-duration: 300ms;
412
+ }
413
+
414
+ .excuse-generator-btn:hover .excuse-generator-btn-gradient {
415
+ opacity: 1;
416
+ }
417
+
418
+ .excuse-generator-btn:hover .excuse-generator-btn-content {
419
+ color: var(--excuse-generator-primary-on);
420
+ }
421
+
422
+ .excuse-generator-copy {
423
+ background: none;
424
+ border: none;
425
+ cursor: pointer;
426
+ color: var(--excuse-generator-text-dim);
427
+ font-size: 0.875rem;
428
+ line-height: 1.25rem;
429
+ font-weight: 700;
430
+ display: flex;
431
+ align-items: center;
432
+ gap: 0.5rem;
433
+ transition-property: all;
434
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
435
+ transition-duration: 200ms;
436
+ opacity: 0;
437
+ pointer-events: none;
438
+ transform: translateY(0.5rem);
439
+ }
440
+
441
+ .excuse-generator-copy.visible {
442
+ opacity: 1;
443
+ pointer-events: auto;
444
+ transform: translateY(0);
445
+ }
446
+
447
+ .excuse-generator-copy:hover {
448
+ color: var(--excuse-generator-primary);
449
+ }
450
+
451
+ .excuse-generator-copy-success {
452
+ color: var(--excuse-generator-success);
453
+ font-weight: 700;
454
+ display: flex;
455
+ align-items: center;
456
+ gap: 0.5rem;
457
+ }
458
+ </style>
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  import { Icon } from 'astro-icon/components';
3
- import './style.css';
4
3
  import type { FortuneCookieUI } from './index';
5
4
 
6
5
  interface Props {
@@ -297,3 +296,349 @@ const ASSETS = {
297
296
 
298
297
  new FortuneCookie();
299
298
  </script>
299
+
300
+ <style>
301
+ .fortune-cookie {
302
+ --fortune-cookie-bg: #fff;
303
+ --fortune-cookie-bg-muted: #fffbeb;
304
+ --fortune-cookie-text: #0f172a;
305
+ --fortune-cookie-text-muted: #475569;
306
+ --fortune-cookie-text-dim: #64748b;
307
+ --fortune-cookie-border: #fef3c7;
308
+ --fortune-cookie-shadow: rgba(0, 0, 0, 0.05);
309
+ --fortune-cookie-primary: #f59e0b;
310
+ --fortune-cookie-primary-on: #fff;
311
+ --fortune-cookie-accent: #fcd34d;
312
+ --fortune-cookie-success: #10b981;
313
+ --fortune-cookie-warning: #f59e0b;
314
+ --fortune-cookie-error: #f43f5e;
315
+ }
316
+
317
+ :global(.theme-dark) .fortune-cookie {
318
+ --fortune-cookie-bg: #0f172a;
319
+ --fortune-cookie-bg-muted: #1e293b;
320
+ --fortune-cookie-text: #f8fafc;
321
+ --fortune-cookie-text-muted: #94a3b8;
322
+ --fortune-cookie-text-dim: #64748b;
323
+ --fortune-cookie-border: #334155;
324
+ --fortune-cookie-shadow: rgba(0, 0, 0, 0.3);
325
+ --fortune-cookie-primary: #fbbf24;
326
+ --fortune-cookie-primary-on: #fff;
327
+ --fortune-cookie-accent: #fcd34d;
328
+ --fortune-cookie-success: #34d399;
329
+ --fortune-cookie-warning: #fbbf24;
330
+ --fortune-cookie-error: #fb7185;
331
+ }
332
+
333
+ .fortune-cookie-root {
334
+ width: 100%;
335
+ max-width: 64rem;
336
+ margin-left: auto;
337
+ margin-right: auto;
338
+ }
339
+
340
+ .fortune-cookie-card {
341
+ position: relative;
342
+ background-color: var(--fortune-cookie-bg);
343
+ border-radius: 1.5rem;
344
+ box-shadow: 0 25px 50px -12px var(--fortune-cookie-shadow);
345
+ overflow: hidden;
346
+ border: 1px solid var(--fortune-cookie-border);
347
+ min-height: 600px;
348
+ display: flex;
349
+ flex-direction: column;
350
+ align-items: center;
351
+ justify-content: center;
352
+ padding: 2rem;
353
+ }
354
+
355
+ .fortune-cookie-glow {
356
+ position: absolute;
357
+ inset: 0;
358
+ opacity: 0.1;
359
+ pointer-events: none;
360
+ background-image: radial-gradient(circle at center, var(--fortune-cookie-primary), transparent, transparent);
361
+ }
362
+
363
+ .fortune-cookie-content {
364
+ position: relative;
365
+ z-index: 10;
366
+ width: 100%;
367
+ display: flex;
368
+ flex-direction: column;
369
+ align-items: center;
370
+ }
371
+
372
+ .fortune-cookie-instruction {
373
+ font-size: 1.25rem;
374
+ line-height: 1.75rem;
375
+ font-weight: 700;
376
+ color: #92400e;
377
+ margin-bottom: 2rem;
378
+ text-transform: uppercase;
379
+ letter-spacing: 0.1em;
380
+ animation: fortune-cookie-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
381
+ }
382
+
383
+ :global(.theme-dark) .fortune-cookie-instruction {
384
+ color: #fbbf24;
385
+ }
386
+
387
+ @keyframes fortune-cookie-pulse {
388
+ 0%, 100% { opacity: 1; }
389
+ 50% { opacity: .5; }
390
+ }
391
+
392
+ .fortune-cookie-stage {
393
+ position: relative;
394
+ width: 20rem;
395
+ height: 20rem;
396
+ cursor: pointer;
397
+ }
398
+
399
+ @media (min-width: 768px) {
400
+ .fortune-cookie-stage {
401
+ width: 24rem;
402
+ height: 24rem;
403
+ }
404
+ }
405
+
406
+ .fortune-cookie-body {
407
+ position: absolute;
408
+ inset: 2rem;
409
+ transition-property: transform;
410
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
411
+ transition-duration: 100ms;
412
+ }
413
+
414
+ @media (min-width: 768px) {
415
+ .fortune-cookie-body {
416
+ inset: 3rem;
417
+ }
418
+ }
419
+
420
+ .fortune-cookie-body:active {
421
+ transform: scale(0.95);
422
+ }
423
+
424
+ .fortune-cookie-img {
425
+ width: 100%;
426
+ height: 100%;
427
+ object-fit: contain;
428
+ z-index: 10;
429
+ position: relative;
430
+ }
431
+
432
+ .fortune-cookie-broken {
433
+ position: absolute;
434
+ inset: 2rem;
435
+ pointer-events: none;
436
+ }
437
+
438
+ .fortune-cookie-broken.hidden {
439
+ display: none;
440
+ }
441
+
442
+ @media (min-width: 768px) {
443
+ .fortune-cookie-broken {
444
+ inset: 3rem;
445
+ }
446
+ }
447
+
448
+ .fortune-cookie-half {
449
+ position: absolute;
450
+ width: 50%;
451
+ height: 100%;
452
+ object-fit: contain;
453
+ transition-property: all;
454
+ transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
455
+ transition-duration: 1000ms;
456
+ }
457
+
458
+ .fortune-cookie-half-left {
459
+ left: 0;
460
+ transform-origin: bottom left;
461
+ }
462
+
463
+ .fortune-cookie-half-right {
464
+ right: 0;
465
+ transform-origin: bottom right;
466
+ }
467
+
468
+ .fortune-cookie-paper {
469
+ position: absolute;
470
+ top: 50%;
471
+ left: 50%;
472
+ transform: translate(-50%, -50%) scale(0.5);
473
+ width: 85%;
474
+ max-width: 320px;
475
+ background-color: #fff;
476
+ border-radius: 2px;
477
+ box-shadow:
478
+ 0 10px 15px -3px rgba(0, 0, 0, 0.2),
479
+ 0 4px 6px -2px rgba(0, 0, 0, 0.1),
480
+ inset 0 0 20px rgba(0, 0, 0, 0.05);
481
+ opacity: 0;
482
+ transition-property: all;
483
+ transition-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1);
484
+ transition-duration: 800ms;
485
+ z-index: 0;
486
+ overflow: hidden;
487
+ }
488
+
489
+ .fortune-cookie-paper.visible {
490
+ opacity: 1;
491
+ transform: translate(-50%, -50%) scale(1) rotate(-1deg);
492
+ z-index: 20;
493
+ }
494
+
495
+ .fortune-cookie-paper-img {
496
+ width: 100%;
497
+ height: auto;
498
+ display: block;
499
+ opacity: 0.15;
500
+ pointer-events: none;
501
+ mix-blend-mode: multiply;
502
+ }
503
+
504
+ .fortune-cookie-paper-content {
505
+ position: absolute;
506
+ inset: 0;
507
+ display: flex;
508
+ flex-direction: column;
509
+ align-items: center;
510
+ justify-content: center;
511
+ padding: 1.5rem;
512
+ text-align: center;
513
+ z-index: 10;
514
+ }
515
+
516
+ .fortune-cookie-text {
517
+ color: #1e293b;
518
+ font-weight: 800;
519
+ font-size: 1.125rem;
520
+ line-height: 1.4;
521
+ transform: rotate(-1deg);
522
+ user-select: text;
523
+ margin: 0;
524
+ }
525
+
526
+ @media (min-width: 768px) {
527
+ .fortune-cookie-text {
528
+ font-size: 1.25rem;
529
+ }
530
+ }
531
+
532
+ .fortune-cookie-lucky-numbers {
533
+ margin-top: 1rem;
534
+ display: flex;
535
+ flex-wrap: wrap;
536
+ gap: 0.5rem;
537
+ justify-content: center;
538
+ transform: rotate(-1deg);
539
+ }
540
+
541
+ :global(.fortune-cookie-number) {
542
+ font-size: 0.75rem;
543
+ line-height: 1rem;
544
+ font-weight: 700;
545
+ background-color: #f1f5f9;
546
+ color: #dc2626;
547
+ padding-left: 0.5rem;
548
+ padding-right: 0.5rem;
549
+ padding-top: 0.125rem;
550
+ padding-bottom: 0.125rem;
551
+ border-radius: 0.25rem;
552
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
553
+ border: 1px solid #fee2e2;
554
+ }
555
+
556
+ .fortune-cookie-particles {
557
+ position: absolute;
558
+ inset: 0;
559
+ pointer-events: none;
560
+ overflow: visible;
561
+ z-index: 20;
562
+ }
563
+
564
+ .fortune-cookie-reset {
565
+ display: none;
566
+ margin-top: 3rem;
567
+ flex-direction: column;
568
+ align-items: center;
569
+ gap: 1rem;
570
+ }
571
+
572
+ .fortune-cookie-reset.visible {
573
+ display: flex;
574
+ }
575
+
576
+ .fortune-cookie-status {
577
+ font-size: 0.875rem;
578
+ line-height: 1.25rem;
579
+ color: var(--fortune-cookie-text-dim);
580
+ }
581
+
582
+ .fortune-cookie-share-btn {
583
+ padding-left: 1.5rem;
584
+ padding-right: 1.5rem;
585
+ padding-top: 0.5rem;
586
+ padding-bottom: 0.5rem;
587
+ background-color: #f1f5f9;
588
+ color: #334155;
589
+ border-radius: 9999px;
590
+ font-size: 0.875rem;
591
+ line-height: 1.25rem;
592
+ font-weight: 700;
593
+ border: none;
594
+ cursor: pointer;
595
+ display: flex;
596
+ align-items: center;
597
+ gap: 0.5rem;
598
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
599
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
600
+ transition-duration: 150ms;
601
+ }
602
+
603
+ :global(.theme-dark) .fortune-cookie-share-btn {
604
+ background-color: #1e293b;
605
+ color: #cbd5e1;
606
+ }
607
+
608
+ .fortune-cookie-share-btn:hover {
609
+ background-color: #e2e8f0;
610
+ }
611
+
612
+ :global(.theme-dark) .fortune-cookie-share-btn:hover {
613
+ background-color: #334155;
614
+ }
615
+
616
+ .fortune-cookie-shake-1 {
617
+ animation: fortune-cookie-shake 0.3s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
618
+ }
619
+
620
+ .fortune-cookie-shake-2 {
621
+ animation: fortune-cookie-shake 0.4s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
622
+ }
623
+
624
+ .fortune-cookie-shake-3 {
625
+ animation: fortune-cookie-shake 0.5s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
626
+ }
627
+
628
+ @keyframes fortune-cookie-shake {
629
+ 10%, 90% { transform: translate3d(-1px, 0, 0) rotate(-1deg); }
630
+ 20%, 80% { transform: translate3d(2px, 0, 0) rotate(2deg); }
631
+ 30%, 50%, 70% { transform: translate3d(-4px, 0, 0) rotate(-4deg); }
632
+ 40%, 60% { transform: translate3d(4px, 0, 0) rotate(4deg); }
633
+ }
634
+
635
+ :global(.fortune-cookie-crumb) {
636
+ position: absolute;
637
+ width: 20px;
638
+ height: 20px;
639
+ background-image: url("/images/utilities/fortune/fc-crumbs.webp");
640
+ background-size: contain;
641
+ background-repeat: no-repeat;
642
+ pointer-events: none;
643
+ }
644
+ </style>
@@ -282,7 +282,7 @@ const { ui } = Astro.props;
282
282
  color: #ef4444;
283
283
  }
284
284
 
285
- .synesthesia-painter-char {
285
+ :global(.synesthesia-painter-char) {
286
286
  display: inline-block;
287
287
  color: var(--char-color);
288
288
  transition: color 0.3s cubic-bezier(0.4, 0, 0.2, 1);
@@ -301,7 +301,7 @@ const { ui } = Astro.props;
301
301
  }
302
302
  }
303
303
 
304
- .synesthesia-painter-viz-layer.dots .synesthesia-painter-char {
304
+ :global(.synesthesia-painter-viz-layer.dots .synesthesia-painter-char) {
305
305
  color: transparent;
306
306
  font-size: 0;
307
307
  width: 1rem;
@@ -312,17 +312,17 @@ const { ui } = Astro.props;
312
312
  box-shadow: 0 0 8px var(--char-color);
313
313
  }
314
314
 
315
- .synesthesia-painter-viz-layer.aura .synesthesia-painter-char {
315
+ :global(.synesthesia-painter-viz-layer.aura .synesthesia-painter-char) {
316
316
  color: rgba(255, 255, 255, 0.15);
317
317
  text-shadow: 0 0 18px var(--char-color), 0 0 36px var(--char-color);
318
318
  }
319
319
 
320
- :global(.theme-dark) .synesthesia-painter-viz-layer.aura .synesthesia-painter-char {
320
+ :global(.theme-dark .synesthesia-painter-viz-layer.aura .synesthesia-painter-char) {
321
321
  color: rgba(255, 255, 255, 0.85);
322
322
  text-shadow: 0 0 14px var(--char-color), 0 0 28px var(--char-color), 0 0 56px var(--char-color);
323
323
  }
324
324
 
325
- .synesthesia-painter-cursor {
325
+ :global(.synesthesia-painter-cursor) {
326
326
  display: inline-block;
327
327
  width: 2px;
328
328
  height: 2.5rem;