@gentomiyano/optimized-web-audio-player 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +189 -159
  2. package/dist/config/index.d.ts +1 -1
  3. package/dist/config/index.js +1 -0
  4. package/dist/config/index.js.map +1 -1
  5. package/dist/consumer/index.d.ts +1 -1
  6. package/dist/consumer/index.js.map +1 -1
  7. package/dist/contracts/index.d.ts +2 -2
  8. package/dist/index.d.ts +2 -2
  9. package/dist/index.js +1 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/media-delivery/index.d.ts +1 -1
  12. package/dist/media-delivery/index.js.map +1 -1
  13. package/dist/{media-element-C9dis4aG.d.ts → media-element-DyMO-PhK.d.ts} +1 -1
  14. package/dist/{player-DE9Vqztu.d.ts → player-BxNFzRq4.d.ts} +53 -1
  15. package/dist/ports/index.d.ts +2 -2
  16. package/dist/react/index.d.ts +22 -3
  17. package/dist/react/index.js +721 -12
  18. package/dist/react/index.js.map +1 -1
  19. package/dist/testing/index.d.ts +1 -1
  20. package/dist/testing/index.js +1 -0
  21. package/dist/testing/index.js.map +1 -1
  22. package/dist/ui/index.d.ts +18 -2
  23. package/dist/ui/index.js +148 -55
  24. package/dist/ui/index.js.map +1 -1
  25. package/dist/ui/player-tokens.css +572 -572
  26. package/dist/ui/player-views.css +713 -654
  27. package/dist/ui/styles.css +2 -2
  28. package/package.json +14 -3
  29. package/dist/consumer-smoke/node_modules/.modules.yaml +0 -30
  30. package/dist/consumer-smoke/node_modules/.package-map.json +0 -1
  31. package/dist/consumer-smoke/node_modules/.pnpm/lock.yaml +0 -57
  32. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/LICENSE +0 -21
  33. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/README.md +0 -9
  34. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler-unstable_mock.development.js +0 -414
  35. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler-unstable_mock.production.js +0 -406
  36. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler-unstable_post_task.development.js +0 -150
  37. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler-unstable_post_task.production.js +0 -140
  38. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.development.js +0 -364
  39. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.native.development.js +0 -350
  40. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.native.production.js +0 -330
  41. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.js +0 -340
  42. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.js +0 -7
  43. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.native.js +0 -7
  44. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/package.json +0 -27
  45. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/unstable_mock.js +0 -7
  46. package/dist/consumer-smoke/node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/unstable_post_task.js +0 -7
  47. package/dist/consumer-smoke/node_modules/.pnpm-workspace-state-v1.json +0 -29
@@ -1,654 +1,713 @@
1
- .player-compact,
2
- .player-wide,
3
- .player-detailed,
4
- .player-podcast,
5
- .player-mini,
6
- .player-queue-panel {
7
- container-name: player-surface;
8
- container-type: inline-size;
9
- }
10
-
11
- .player-compact {
12
- max-width: 480px;
13
- overflow: visible;
14
- }
15
-
16
- .player-compact__main {
17
- display: grid;
18
- grid-template-areas:
19
- "play artwork metadata volume"
20
- "play artwork signal volume";
21
- grid-template-columns: auto 48px minmax(0, 1fr) auto;
22
- align-items: center;
23
- min-width: 0;
24
- column-gap: 0.65rem;
25
- row-gap: 0.18rem;
26
- padding: 0.55rem 0.65rem;
27
- }
28
-
29
- .player-compact__main > .player-play-button {
30
- grid-area: play;
31
- min-width: var(--player-hit);
32
- min-height: var(--player-hit);
33
- }
34
-
35
- .player-compact__artwork {
36
- grid-area: artwork;
37
- width: 48px;
38
- height: 48px;
39
- }
40
-
41
- .player-compact__main > .player-metadata {
42
- grid-area: metadata;
43
- gap: 0.05rem;
44
- }
45
-
46
- .player-compact .player-collection {
47
- display: none;
48
- }
49
-
50
- .player-compact .player-title {
51
- font-size: 0.82rem;
52
- }
53
-
54
- .player-compact .player-creator {
55
- font-size: 0.63rem;
56
- }
57
-
58
- .player-compact__signal {
59
- display: grid;
60
- grid-area: signal;
61
- grid-template-columns: auto minmax(48px, 1fr) auto;
62
- align-items: center;
63
- min-width: 0;
64
- gap: 0.4rem;
65
- }
66
-
67
- .player-compact__main > .player-volume-popover {
68
- grid-area: volume;
69
- }
70
-
71
- .player-compact .player-waveform {
72
- height: 14px;
73
- }
74
-
75
- .player-compact .player-status,
76
- .player-compact .player-time {
77
- font-size: 0.52rem;
78
- letter-spacing: 0.05em;
79
- }
80
-
81
- .player-compact .player-time {
82
- gap: 0.18rem;
83
- }
84
-
85
- .player-wide {
86
- max-width: 680px;
87
- }
88
-
89
- .player-wide__grid {
90
- min-width: 0;
91
- }
92
-
93
- .player-wide__header {
94
- display: grid;
95
- grid-template-columns: 96px minmax(0, 1fr);
96
- align-items: center;
97
- min-width: 0;
98
- gap: clamp(0.9rem, 3vw, 1.2rem);
99
- padding: 0.9rem 1.1rem;
100
- border-bottom: 1px solid var(--player-faint);
101
- }
102
-
103
- .player-wide__artwork {
104
- width: 96px;
105
- height: 96px;
106
- }
107
-
108
- .player-wide__identity {
109
- display: grid;
110
- min-width: 0;
111
- gap: 0.55rem;
112
- }
113
-
114
- .player-wide[data-appearance="light"] .player-wide__identity {
115
- padding: 0.65rem 0.8rem;
116
- border: 1px solid var(--player-lcd-rule);
117
- background: var(--player-lcd);
118
- }
119
-
120
- .player-wide__identity .player-title {
121
- font-size: clamp(1.05rem, 4cqi, 1.42rem);
122
- font-weight: 350;
123
- }
124
-
125
- .player-wide__content {
126
- display: grid;
127
- min-width: 0;
128
- gap: 0.35rem;
129
- padding: 0.65rem 1.1rem 0.8rem;
130
- }
131
-
132
- .player-wide .player-transport {
133
- padding-top: 0.4rem;
134
- border-top: 1px solid var(--player-faint);
135
- }
136
-
137
- .player-timeline,
138
- .player-podcast__timeline {
139
- display: grid;
140
- grid-template-rows: auto auto auto;
141
- min-width: 0;
142
- }
143
-
144
- .player-timeline > .player-waveform,
145
- .player-podcast__timeline > .player-waveform {
146
- grid-row: 1;
147
- }
148
-
149
- .player-timeline > .player-seek,
150
- .player-podcast__timeline > .player-seek {
151
- grid-row: 2;
152
- }
153
-
154
- .player-timeline > .player-wide__timeline-footer,
155
- .player-podcast__timeline > .player-time {
156
- grid-row: 3;
157
- }
158
-
159
- .player-wide .player-waveform {
160
- height: 50px;
161
- margin-block: 0;
162
- }
163
-
164
- .player-timeline .player-seek,
165
- .player-podcast__timeline .player-seek {
166
- min-height: 30px;
167
- }
168
-
169
- .player-wide__timeline-footer {
170
- display: flex;
171
- align-items: center;
172
- justify-content: space-between;
173
- min-width: 0;
174
- gap: 1.5rem;
175
- }
176
-
177
- .player-wide__timeline-footer .player-time {
178
- width: min(13rem, 42%);
179
- }
180
-
181
- .player-wide__timeline-footer .player-volume {
182
- justify-content: flex-end;
183
- }
184
-
185
- .player-detailed {
186
- max-width: 720px;
187
- }
188
-
189
- .player-detailed__display {
190
- display: grid;
191
- grid-template-columns: 170px minmax(0, 1fr) 126px;
192
- min-width: 0;
193
- border-bottom: 1px solid var(--player-rule);
194
- }
195
-
196
- .player-detailed__artwork {
197
- width: 170px;
198
- min-height: 170px;
199
- }
200
-
201
- .player-detailed__primary {
202
- display: grid;
203
- align-content: center;
204
- min-width: 0;
205
- gap: 0.25rem;
206
- padding: 0.65rem 1.2rem 0.25rem;
207
- border-right: 1px solid var(--player-faint);
208
- }
209
-
210
- .player-detailed[data-appearance="light"] .player-detailed__primary {
211
- background: var(--player-lcd);
212
- }
213
-
214
- .player-detailed__primary .player-title {
215
- font-size: clamp(1.02rem, 3.2cqi, 1.32rem);
216
- font-weight: 350;
217
- }
218
-
219
- .player-detailed__primary .player-waveform {
220
- height: 28px;
221
- }
222
-
223
- .player-detailed__primary .player-seek {
224
- min-height: 30px;
225
- }
226
-
227
- .player-detailed__numbers {
228
- display: grid;
229
- align-content: center;
230
- min-width: 0;
231
- gap: 0.55rem;
232
- padding: 0.95rem;
233
- }
234
-
235
- .player-detailed__metric {
236
- display: grid;
237
- min-width: 0;
238
- gap: 0.12rem;
239
- justify-items: end;
240
- }
241
-
242
- .player-detailed__metric-label {
243
- color: var(--player-muted);
244
- font-size: 0.5rem;
245
- letter-spacing: 0.13em;
246
- text-transform: uppercase;
247
- }
248
-
249
- .player-detailed__metric-value {
250
- color: var(--player-text);
251
- font-family: var(--player-font-digital);
252
- font-size: 0.68rem;
253
- font-variant-numeric: tabular-nums;
254
- letter-spacing: 0.09em;
255
- }
256
-
257
- .player-detailed__transport {
258
- padding: 0.4rem 1rem;
259
- border-bottom: 1px solid var(--player-rule);
260
- }
261
-
262
- .player-section-heading {
263
- display: flex;
264
- align-items: center;
265
- justify-content: space-between;
266
- min-height: 38px;
267
- border-bottom: 1px solid var(--player-faint);
268
- color: var(--player-muted);
269
- font-size: 0.67rem;
270
- letter-spacing: 0.13em;
271
- text-transform: uppercase;
272
- }
273
-
274
- .player-detailed__queue {
275
- padding: 0 1rem 0.65rem;
276
- }
277
-
278
- .player-detailed__queue ol,
279
- .player-queue-panel ol {
280
- padding: 0;
281
- margin: 0;
282
- list-style: none;
283
- }
284
-
285
- .player-detailed__queue li,
286
- .player-queue-panel li {
287
- border-bottom: 1px solid var(--player-faint);
288
- }
289
-
290
- .player-detailed__queue li:last-child,
291
- .player-queue-panel li:last-child {
292
- border-bottom: 0;
293
- }
294
-
295
- .player-detailed__queue li[data-current="true"],
296
- .player-queue-panel li[data-current="true"] {
297
- background: var(--player-active-wash);
298
- }
299
-
300
- .player-detailed__queue li[data-current="true"] .player-queue-number,
301
- .player-detailed__queue li[data-current="true"] .player-queue-title,
302
- .player-queue-panel li[data-current="true"] .player-queue-number {
303
- color: var(--player-brand);
304
- }
305
-
306
- .player-detailed__queue li[data-current="true"] .player-queue-title,
307
- .player-queue-panel li[data-current="true"] .player-queue-copy strong {
308
- font-weight: 650;
309
- }
310
-
311
- .player-detailed__queue li > button {
312
- display: grid;
313
- grid-template-columns: 2.25rem minmax(0, 1fr) auto;
314
- align-items: center;
315
- width: 100%;
316
- min-height: 38px;
317
- padding: 0 0.55rem;
318
- border: 0;
319
- background: transparent;
320
- color: inherit;
321
- text-align: left;
322
- cursor: pointer;
323
- }
324
-
325
- .player-detailed__queue li > button:hover,
326
- .player-queue-panel li > button:hover {
327
- background: var(--player-faint);
328
- }
329
-
330
- .player-detailed__queue time,
331
- .player-queue-panel time {
332
- color: var(--player-muted);
333
- font-family: var(--player-font-digital);
334
- font-size: 0.66rem;
335
- font-variant-numeric: tabular-nums;
336
- }
337
-
338
- .player-queue-title {
339
- overflow: hidden;
340
- font-size: 0.76rem;
341
- text-overflow: ellipsis;
342
- white-space: nowrap;
343
- }
344
-
345
- .player-empty {
346
- margin: 0;
347
- padding: 1.4rem 0.6rem;
348
- color: var(--player-muted);
349
- font-size: 0.8rem;
350
- }
351
-
352
- .player-podcast {
353
- max-width: 760px;
354
- }
355
-
356
- .player-podcast__header {
357
- display: grid;
358
- grid-template-columns: 112px minmax(0, 1fr) auto;
359
- align-items: center;
360
- min-width: 0;
361
- gap: clamp(1rem, 4vw, 1.6rem);
362
- padding: 1.15rem;
363
- border-bottom: 1px solid var(--player-faint);
364
- }
365
-
366
- .player-podcast__artwork {
367
- width: 112px;
368
- height: 112px;
369
- }
370
-
371
- .player-podcast__header .player-title {
372
- font-size: clamp(1.05rem, 3.6cqi, 1.4rem);
373
- font-weight: 350;
374
- }
375
-
376
- .player-podcast[data-appearance="light"]
377
- .player-podcast__header
378
- > .player-metadata {
379
- padding: 0.65rem 0.8rem;
380
- border: 1px solid var(--player-lcd-rule);
381
- background: var(--player-lcd);
382
- }
383
-
384
- .player-podcast__transport {
385
- display: flex;
386
- align-items: center;
387
- justify-content: center;
388
- gap: clamp(0.15rem, 2vw, 1rem);
389
- padding: 0.45rem 1rem;
390
- border-top: 1px solid var(--player-rule);
391
- }
392
-
393
- .player-podcast__timeline {
394
- padding: 0.75rem 1.15rem 1.1rem;
395
- }
396
-
397
- .player-podcast__timeline .player-waveform {
398
- height: 60px;
399
- }
400
-
401
- .player-mini {
402
- max-width: 100%;
403
- overflow: visible;
404
- }
405
-
406
- .player-mini__main {
407
- display: grid;
408
- grid-template-columns: 48px minmax(120px, 1fr) auto auto minmax(130px, 0.65fr);
409
- align-items: center;
410
- min-width: 0;
411
- gap: 0.55rem;
412
- padding: 0.4rem 0.65rem;
413
- }
414
-
415
- .player-mini__artwork {
416
- width: 48px;
417
- height: 48px;
418
- }
419
-
420
- .player-mini__controls {
421
- display: flex;
422
- align-items: center;
423
- gap: 0;
424
- }
425
-
426
- .player-mini__timeline {
427
- display: grid;
428
- min-width: 0;
429
- }
430
-
431
- .player-mini__timeline .player-seek {
432
- min-height: 24px;
433
- }
434
-
435
- .player-queue-panel {
436
- max-width: 460px;
437
- }
438
-
439
- .player-queue-panel > header {
440
- display: grid;
441
- grid-template-columns: minmax(0, 1fr) auto auto;
442
- align-items: center;
443
- min-height: 60px;
444
- padding: 0.5rem 0.65rem 0.5rem 1rem;
445
- border-bottom: 1px solid var(--player-rule);
446
- }
447
-
448
- .player-queue-panel h2 {
449
- margin: 0.12rem 0 0;
450
- overflow: hidden;
451
- font-size: 0.92rem;
452
- font-weight: 600;
453
- text-overflow: ellipsis;
454
- white-space: nowrap;
455
- }
456
-
457
- .player-queue-panel li > button {
458
- display: grid;
459
- grid-template-columns: 2.3rem minmax(0, 1fr) auto;
460
- align-items: center;
461
- width: 100%;
462
- min-height: 48px;
463
- padding: 0.3rem 0.8rem 0.3rem 0.65rem;
464
- border: 0;
465
- background: transparent;
466
- color: inherit;
467
- text-align: left;
468
- cursor: pointer;
469
- }
470
-
471
- .player-queue-copy {
472
- display: grid;
473
- min-width: 0;
474
- gap: 0.08rem;
475
- }
476
-
477
- .player-queue-copy strong,
478
- .player-queue-copy small {
479
- overflow: hidden;
480
- text-overflow: ellipsis;
481
- white-space: nowrap;
482
- }
483
-
484
- .player-queue-copy strong {
485
- font-size: 0.78rem;
486
- font-weight: 540;
487
- }
488
-
489
- .player-queue-copy small {
490
- color: var(--player-muted);
491
- font-size: 0.66rem;
492
- }
493
-
494
- .player-transport .player-icon-button:not(.player-play-button),
495
- .player-podcast__transport .player-icon-button:not(.player-play-button) {
496
- color: var(--player-muted);
497
- }
498
-
499
- .player-transport .player-icon-button[aria-pressed="true"],
500
- .player-transport .player-icon-button:hover:not(:disabled),
501
- .player-podcast__transport .player-icon-button:hover:not(:disabled) {
502
- color: var(--player-brand);
503
- }
504
-
505
- @container player-surface (max-width: 680px) {
506
- .player-detailed__display {
507
- grid-template-columns: 104px minmax(0, 1fr);
508
- }
509
-
510
- .player-detailed__artwork {
511
- width: 104px;
512
- height: 104px;
513
- min-height: 0;
514
- align-self: start;
515
- }
516
-
517
- .player-detailed__primary {
518
- padding: 0.75rem;
519
- border-right: 0;
520
- }
521
-
522
- .player-detailed__primary .player-waveform {
523
- height: 24px;
524
- }
525
-
526
- .player-detailed__numbers {
527
- grid-column: 1 / -1;
528
- grid-template-columns: repeat(4, minmax(0, 1fr));
529
- align-items: center;
530
- padding: 0.5rem 0.75rem;
531
- border-top: 1px solid var(--player-faint);
532
- }
533
-
534
- .player-detailed__metric {
535
- justify-items: start;
536
- }
537
-
538
- .player-detailed__transport {
539
- padding-inline: 0.5rem;
540
- }
541
-
542
- .player-detailed__transport .player-transport {
543
- width: 100%;
544
- justify-content: space-between;
545
- gap: 0;
546
- }
547
-
548
- .player-podcast__header {
549
- grid-template-columns: 86px minmax(0, 1fr);
550
- gap: 0.85rem;
551
- padding: 0.85rem;
552
- }
553
-
554
- .player-podcast__artwork {
555
- width: 86px;
556
- height: 86px;
557
- }
558
-
559
- .player-podcast__header > .player-status {
560
- grid-column: 2;
561
- }
562
-
563
- .player-podcast__transport {
564
- gap: 0;
565
- padding-inline: 0.3rem;
566
- }
567
-
568
- .player-mini__main {
569
- grid-template-columns: 46px minmax(0, 1fr) auto;
570
- }
571
-
572
- .player-mini__controls > .player-volume-popover {
573
- display: none;
574
- }
575
-
576
- .player-mini__artwork {
577
- width: 46px;
578
- height: 46px;
579
- }
580
-
581
- .player-mini__main > .player-status,
582
- .player-mini__timeline {
583
- display: none;
584
- }
585
- }
586
-
587
- @container player-surface (max-width: 440px) {
588
- .player-compact__main {
589
- grid-template-areas:
590
- "play artwork metadata"
591
- "play artwork signal";
592
- grid-template-columns: auto 48px minmax(0, 1fr);
593
- }
594
-
595
- .player-compact__main > .player-volume-popover {
596
- display: none;
597
- }
598
-
599
- .player-compact__signal {
600
- grid-template-columns: minmax(48px, 1fr) auto;
601
- }
602
-
603
- .player-compact .player-status {
604
- display: none;
605
- }
606
-
607
- .player-wide__header {
608
- grid-template-columns: 78px minmax(0, 1fr);
609
- gap: 0.85rem;
610
- padding: 0.85rem;
611
- }
612
-
613
- .player-wide__artwork {
614
- width: 78px;
615
- height: 78px;
616
- }
617
-
618
- .player-wide__identity {
619
- gap: 0.55rem;
620
- }
621
-
622
- .player-wide__content {
623
- padding: 0.7rem 0.85rem 1rem;
624
- }
625
-
626
- .player-wide__timeline-footer .player-volume {
627
- display: none;
628
- }
629
-
630
- .player-wide__timeline-footer .player-time {
631
- width: 100%;
632
- }
633
-
634
- .player-transport {
635
- justify-content: space-between;
636
- }
637
-
638
- .player-detailed__queue {
639
- padding-inline: 0.5rem;
640
- }
641
-
642
- .player-detailed__transport {
643
- padding-inline: 0.25rem;
644
- }
645
-
646
- .player-queue-panel > header {
647
- padding-left: 0.65rem;
648
- }
649
-
650
- .player-queue-panel li > button {
651
- grid-template-columns: 1.9rem minmax(0, 1fr) auto;
652
- padding-inline: 0.45rem;
653
- }
654
- }
1
+ .player-compact,
2
+ .player-bound-compact,
3
+ .player-wide,
4
+ .player-detailed,
5
+ .player-podcast,
6
+ .player-mini,
7
+ .player-queue-panel {
8
+ container-name: player-surface;
9
+ container-type: inline-size;
10
+ }
11
+
12
+ .player-bound-compact {
13
+ max-width: 480px;
14
+ overflow: visible;
15
+ }
16
+
17
+ .player-bound-compact__main {
18
+ display: grid;
19
+ grid-template-areas:
20
+ "play artwork metadata"
21
+ "play artwork signal"
22
+ "seek seek seek";
23
+ grid-template-columns: auto 48px minmax(0, 1fr);
24
+ align-items: center;
25
+ min-width: 0;
26
+ column-gap: 0.65rem;
27
+ row-gap: 0.3rem;
28
+ padding: 0.55rem 0.65rem;
29
+ }
30
+
31
+ .player-bound-compact__main[data-active="true"] {
32
+ box-shadow: inset 3px 0 0 var(--player-accent);
33
+ }
34
+
35
+ .player-bound-compact__main > .player-play-button {
36
+ grid-area: play;
37
+ min-width: var(--player-hit);
38
+ min-height: var(--player-hit);
39
+ }
40
+
41
+ .player-bound-compact__artwork {
42
+ grid-area: artwork;
43
+ width: 48px;
44
+ height: 48px;
45
+ }
46
+
47
+ .player-bound-compact__main > .player-metadata {
48
+ grid-area: metadata;
49
+ gap: 0.05rem;
50
+ }
51
+
52
+ .player-bound-compact__signal {
53
+ display: grid;
54
+ grid-area: signal;
55
+ grid-template-columns: minmax(48px, 1fr) auto;
56
+ align-items: center;
57
+ min-width: 0;
58
+ gap: 0.4rem;
59
+ }
60
+
61
+ .player-bound-compact__signal .player-waveform {
62
+ height: 14px;
63
+ }
64
+
65
+ .player-bound-compact__main > .player-seek {
66
+ grid-area: seek;
67
+ min-height: 24px;
68
+ }
69
+
70
+ .player-compact {
71
+ max-width: 480px;
72
+ overflow: visible;
73
+ }
74
+
75
+ .player-compact__main {
76
+ display: grid;
77
+ grid-template-areas:
78
+ "play artwork metadata volume"
79
+ "play artwork signal volume";
80
+ grid-template-columns: auto 48px minmax(0, 1fr) auto;
81
+ align-items: center;
82
+ min-width: 0;
83
+ column-gap: 0.65rem;
84
+ row-gap: 0.18rem;
85
+ padding: 0.55rem 0.65rem;
86
+ }
87
+
88
+ .player-compact__main > .player-play-button {
89
+ grid-area: play;
90
+ min-width: var(--player-hit);
91
+ min-height: var(--player-hit);
92
+ }
93
+
94
+ .player-compact__artwork {
95
+ grid-area: artwork;
96
+ width: 48px;
97
+ height: 48px;
98
+ }
99
+
100
+ .player-compact__main > .player-metadata {
101
+ grid-area: metadata;
102
+ gap: 0.05rem;
103
+ }
104
+
105
+ .player-compact .player-collection {
106
+ display: none;
107
+ }
108
+
109
+ .player-compact .player-title {
110
+ font-size: 0.82rem;
111
+ }
112
+
113
+ .player-compact .player-creator {
114
+ font-size: 0.63rem;
115
+ }
116
+
117
+ .player-compact__signal {
118
+ display: grid;
119
+ grid-area: signal;
120
+ grid-template-columns: auto minmax(48px, 1fr) auto;
121
+ align-items: center;
122
+ min-width: 0;
123
+ gap: 0.4rem;
124
+ }
125
+
126
+ .player-compact__main > .player-volume-popover {
127
+ grid-area: volume;
128
+ }
129
+
130
+ .player-compact .player-waveform {
131
+ height: 14px;
132
+ }
133
+
134
+ .player-compact .player-status,
135
+ .player-compact .player-time {
136
+ font-size: 0.52rem;
137
+ letter-spacing: 0.05em;
138
+ }
139
+
140
+ .player-compact .player-time {
141
+ gap: 0.18rem;
142
+ }
143
+
144
+ .player-wide {
145
+ max-width: 680px;
146
+ }
147
+
148
+ .player-wide__grid {
149
+ min-width: 0;
150
+ }
151
+
152
+ .player-wide__header {
153
+ display: grid;
154
+ grid-template-columns: 96px minmax(0, 1fr);
155
+ align-items: center;
156
+ min-width: 0;
157
+ gap: clamp(0.9rem, 3vw, 1.2rem);
158
+ padding: 0.9rem 1.1rem;
159
+ border-bottom: 1px solid var(--player-faint);
160
+ }
161
+
162
+ .player-wide__artwork {
163
+ width: 96px;
164
+ height: 96px;
165
+ }
166
+
167
+ .player-wide__identity {
168
+ display: grid;
169
+ min-width: 0;
170
+ gap: 0.55rem;
171
+ }
172
+
173
+ .player-wide[data-appearance="light"] .player-wide__identity {
174
+ padding: 0.65rem 0.8rem;
175
+ border: 1px solid var(--player-lcd-rule);
176
+ background: var(--player-lcd);
177
+ }
178
+
179
+ .player-wide__identity .player-title {
180
+ font-size: clamp(1.05rem, 4cqi, 1.42rem);
181
+ font-weight: 350;
182
+ }
183
+
184
+ .player-wide__content {
185
+ display: grid;
186
+ min-width: 0;
187
+ gap: 0.35rem;
188
+ padding: 0.65rem 1.1rem 0.8rem;
189
+ }
190
+
191
+ .player-wide .player-transport {
192
+ padding-top: 0.4rem;
193
+ border-top: 1px solid var(--player-faint);
194
+ }
195
+
196
+ .player-timeline,
197
+ .player-podcast__timeline {
198
+ display: grid;
199
+ grid-template-rows: auto auto auto;
200
+ min-width: 0;
201
+ }
202
+
203
+ .player-timeline > .player-waveform,
204
+ .player-podcast__timeline > .player-waveform {
205
+ grid-row: 1;
206
+ }
207
+
208
+ .player-timeline > .player-seek,
209
+ .player-podcast__timeline > .player-seek {
210
+ grid-row: 2;
211
+ }
212
+
213
+ .player-timeline > .player-wide__timeline-footer,
214
+ .player-podcast__timeline > .player-time {
215
+ grid-row: 3;
216
+ }
217
+
218
+ .player-wide .player-waveform {
219
+ height: 50px;
220
+ margin-block: 0;
221
+ }
222
+
223
+ .player-timeline .player-seek,
224
+ .player-podcast__timeline .player-seek {
225
+ min-height: 30px;
226
+ }
227
+
228
+ .player-wide__timeline-footer {
229
+ display: flex;
230
+ align-items: center;
231
+ justify-content: space-between;
232
+ min-width: 0;
233
+ gap: 1.5rem;
234
+ }
235
+
236
+ .player-wide__timeline-footer .player-time {
237
+ width: min(13rem, 42%);
238
+ }
239
+
240
+ .player-wide__timeline-footer .player-volume {
241
+ justify-content: flex-end;
242
+ }
243
+
244
+ .player-detailed {
245
+ max-width: 720px;
246
+ }
247
+
248
+ .player-detailed__display {
249
+ display: grid;
250
+ grid-template-columns: 170px minmax(0, 1fr) 126px;
251
+ min-width: 0;
252
+ border-bottom: 1px solid var(--player-rule);
253
+ }
254
+
255
+ .player-detailed__artwork {
256
+ width: 170px;
257
+ min-height: 170px;
258
+ }
259
+
260
+ .player-detailed__primary {
261
+ display: grid;
262
+ align-content: center;
263
+ min-width: 0;
264
+ gap: 0.25rem;
265
+ padding: 0.65rem 1.2rem 0.25rem;
266
+ border-right: 1px solid var(--player-faint);
267
+ }
268
+
269
+ .player-detailed[data-appearance="light"] .player-detailed__primary {
270
+ background: var(--player-lcd);
271
+ }
272
+
273
+ .player-detailed__primary .player-title {
274
+ font-size: clamp(1.02rem, 3.2cqi, 1.32rem);
275
+ font-weight: 350;
276
+ }
277
+
278
+ .player-detailed__primary .player-waveform {
279
+ height: 28px;
280
+ }
281
+
282
+ .player-detailed__primary .player-seek {
283
+ min-height: 30px;
284
+ }
285
+
286
+ .player-detailed__numbers {
287
+ display: grid;
288
+ align-content: center;
289
+ min-width: 0;
290
+ gap: 0.55rem;
291
+ padding: 0.95rem;
292
+ }
293
+
294
+ .player-detailed__metric {
295
+ display: grid;
296
+ min-width: 0;
297
+ gap: 0.12rem;
298
+ justify-items: end;
299
+ }
300
+
301
+ .player-detailed__metric-label {
302
+ color: var(--player-muted);
303
+ font-size: 0.5rem;
304
+ letter-spacing: 0.13em;
305
+ text-transform: uppercase;
306
+ }
307
+
308
+ .player-detailed__metric-value {
309
+ color: var(--player-text);
310
+ font-family: var(--player-font-digital);
311
+ font-size: 0.68rem;
312
+ font-variant-numeric: tabular-nums;
313
+ letter-spacing: 0.09em;
314
+ }
315
+
316
+ .player-detailed__transport {
317
+ padding: 0.4rem 1rem;
318
+ border-bottom: 1px solid var(--player-rule);
319
+ }
320
+
321
+ .player-section-heading {
322
+ display: flex;
323
+ align-items: center;
324
+ justify-content: space-between;
325
+ min-height: 38px;
326
+ border-bottom: 1px solid var(--player-faint);
327
+ color: var(--player-muted);
328
+ font-size: 0.67rem;
329
+ letter-spacing: 0.13em;
330
+ text-transform: uppercase;
331
+ }
332
+
333
+ .player-detailed__queue {
334
+ padding: 0 1rem 0.65rem;
335
+ }
336
+
337
+ .player-detailed__queue ol,
338
+ .player-queue-panel ol {
339
+ padding: 0;
340
+ margin: 0;
341
+ list-style: none;
342
+ }
343
+
344
+ .player-detailed__queue li,
345
+ .player-queue-panel li {
346
+ border-bottom: 1px solid var(--player-faint);
347
+ }
348
+
349
+ .player-detailed__queue li:last-child,
350
+ .player-queue-panel li:last-child {
351
+ border-bottom: 0;
352
+ }
353
+
354
+ .player-detailed__queue li[data-current="true"],
355
+ .player-queue-panel li[data-current="true"] {
356
+ background: var(--player-active-wash);
357
+ }
358
+
359
+ .player-detailed__queue li[data-current="true"] .player-queue-number,
360
+ .player-detailed__queue li[data-current="true"] .player-queue-title,
361
+ .player-queue-panel li[data-current="true"] .player-queue-number {
362
+ color: var(--player-brand);
363
+ }
364
+
365
+ .player-detailed__queue li[data-current="true"] .player-queue-title,
366
+ .player-queue-panel li[data-current="true"] .player-queue-copy strong {
367
+ font-weight: 650;
368
+ }
369
+
370
+ .player-detailed__queue li > button {
371
+ display: grid;
372
+ grid-template-columns: 2.25rem minmax(0, 1fr) auto;
373
+ align-items: center;
374
+ width: 100%;
375
+ min-height: 38px;
376
+ padding: 0 0.55rem;
377
+ border: 0;
378
+ background: transparent;
379
+ color: inherit;
380
+ text-align: left;
381
+ cursor: pointer;
382
+ }
383
+
384
+ .player-detailed__queue li > button:hover,
385
+ .player-queue-panel li > button:hover {
386
+ background: var(--player-faint);
387
+ }
388
+
389
+ .player-detailed__queue time,
390
+ .player-queue-panel time {
391
+ color: var(--player-muted);
392
+ font-family: var(--player-font-digital);
393
+ font-size: 0.66rem;
394
+ font-variant-numeric: tabular-nums;
395
+ }
396
+
397
+ .player-queue-title {
398
+ overflow: hidden;
399
+ font-size: 0.76rem;
400
+ text-overflow: ellipsis;
401
+ white-space: nowrap;
402
+ }
403
+
404
+ .player-empty {
405
+ margin: 0;
406
+ padding: 1.4rem 0.6rem;
407
+ color: var(--player-muted);
408
+ font-size: 0.8rem;
409
+ }
410
+
411
+ .player-podcast {
412
+ max-width: 760px;
413
+ }
414
+
415
+ .player-podcast__header {
416
+ display: grid;
417
+ grid-template-columns: 112px minmax(0, 1fr) auto;
418
+ align-items: center;
419
+ min-width: 0;
420
+ gap: clamp(1rem, 4vw, 1.6rem);
421
+ padding: 1.15rem;
422
+ border-bottom: 1px solid var(--player-faint);
423
+ }
424
+
425
+ .player-podcast__artwork {
426
+ width: 112px;
427
+ height: 112px;
428
+ }
429
+
430
+ .player-podcast__header .player-title {
431
+ font-size: clamp(1.05rem, 3.6cqi, 1.4rem);
432
+ font-weight: 350;
433
+ }
434
+
435
+ .player-podcast[data-appearance="light"]
436
+ .player-podcast__header
437
+ > .player-metadata {
438
+ padding: 0.65rem 0.8rem;
439
+ border: 1px solid var(--player-lcd-rule);
440
+ background: var(--player-lcd);
441
+ }
442
+
443
+ .player-podcast__transport {
444
+ display: flex;
445
+ align-items: center;
446
+ justify-content: center;
447
+ gap: clamp(0.15rem, 2vw, 1rem);
448
+ padding: 0.45rem 1rem;
449
+ border-top: 1px solid var(--player-rule);
450
+ }
451
+
452
+ .player-podcast__timeline {
453
+ padding: 0.75rem 1.15rem 1.1rem;
454
+ }
455
+
456
+ .player-podcast__timeline .player-waveform {
457
+ height: 60px;
458
+ }
459
+
460
+ .player-mini {
461
+ max-width: 100%;
462
+ overflow: visible;
463
+ }
464
+
465
+ .player-mini__main {
466
+ display: grid;
467
+ grid-template-columns: 48px minmax(120px, 1fr) auto auto minmax(130px, 0.65fr);
468
+ align-items: center;
469
+ min-width: 0;
470
+ gap: 0.55rem;
471
+ padding: 0.4rem 0.65rem;
472
+ }
473
+
474
+ .player-mini__artwork {
475
+ width: 48px;
476
+ height: 48px;
477
+ }
478
+
479
+ .player-mini__controls {
480
+ display: flex;
481
+ align-items: center;
482
+ gap: 0;
483
+ }
484
+
485
+ .player-mini__timeline {
486
+ display: grid;
487
+ min-width: 0;
488
+ }
489
+
490
+ .player-mini__timeline .player-seek {
491
+ min-height: 24px;
492
+ }
493
+
494
+ .player-queue-panel {
495
+ max-width: 460px;
496
+ }
497
+
498
+ .player-queue-panel > header {
499
+ display: grid;
500
+ grid-template-columns: minmax(0, 1fr) auto auto;
501
+ align-items: center;
502
+ min-height: 60px;
503
+ padding: 0.5rem 0.65rem 0.5rem 1rem;
504
+ border-bottom: 1px solid var(--player-rule);
505
+ }
506
+
507
+ .player-queue-panel h2 {
508
+ margin: 0.12rem 0 0;
509
+ overflow: hidden;
510
+ font-size: 0.92rem;
511
+ font-weight: 600;
512
+ text-overflow: ellipsis;
513
+ white-space: nowrap;
514
+ }
515
+
516
+ .player-queue-panel li > button {
517
+ display: grid;
518
+ grid-template-columns: 2.3rem minmax(0, 1fr) auto;
519
+ align-items: center;
520
+ width: 100%;
521
+ min-height: 48px;
522
+ padding: 0.3rem 0.8rem 0.3rem 0.65rem;
523
+ border: 0;
524
+ background: transparent;
525
+ color: inherit;
526
+ text-align: left;
527
+ cursor: pointer;
528
+ }
529
+
530
+ .player-queue-copy {
531
+ display: grid;
532
+ min-width: 0;
533
+ gap: 0.08rem;
534
+ }
535
+
536
+ .player-queue-copy strong,
537
+ .player-queue-copy small {
538
+ overflow: hidden;
539
+ text-overflow: ellipsis;
540
+ white-space: nowrap;
541
+ }
542
+
543
+ .player-queue-copy strong {
544
+ font-size: 0.78rem;
545
+ font-weight: 540;
546
+ }
547
+
548
+ .player-queue-copy small {
549
+ color: var(--player-muted);
550
+ font-size: 0.66rem;
551
+ }
552
+
553
+ .player-transport .player-icon-button:not(.player-play-button),
554
+ .player-podcast__transport .player-icon-button:not(.player-play-button) {
555
+ color: var(--player-muted);
556
+ }
557
+
558
+ .player-transport .player-icon-button[aria-pressed="true"],
559
+ .player-transport .player-icon-button:hover:not(:disabled),
560
+ .player-podcast__transport .player-icon-button:hover:not(:disabled) {
561
+ color: var(--player-brand);
562
+ }
563
+
564
+ @container player-surface (max-width: 680px) {
565
+ .player-detailed__display {
566
+ grid-template-columns: 104px minmax(0, 1fr);
567
+ }
568
+
569
+ .player-detailed__artwork {
570
+ width: 104px;
571
+ height: 104px;
572
+ min-height: 0;
573
+ align-self: start;
574
+ }
575
+
576
+ .player-detailed__primary {
577
+ padding: 0.75rem;
578
+ border-right: 0;
579
+ }
580
+
581
+ .player-detailed__primary .player-waveform {
582
+ height: 24px;
583
+ }
584
+
585
+ .player-detailed__numbers {
586
+ grid-column: 1 / -1;
587
+ grid-template-columns: repeat(4, minmax(0, 1fr));
588
+ align-items: center;
589
+ padding: 0.5rem 0.75rem;
590
+ border-top: 1px solid var(--player-faint);
591
+ }
592
+
593
+ .player-detailed__metric {
594
+ justify-items: start;
595
+ }
596
+
597
+ .player-detailed__transport {
598
+ padding-inline: 0.5rem;
599
+ }
600
+
601
+ .player-detailed__transport .player-transport {
602
+ width: 100%;
603
+ justify-content: space-between;
604
+ gap: 0;
605
+ }
606
+
607
+ .player-podcast__header {
608
+ grid-template-columns: 86px minmax(0, 1fr);
609
+ gap: 0.85rem;
610
+ padding: 0.85rem;
611
+ }
612
+
613
+ .player-podcast__artwork {
614
+ width: 86px;
615
+ height: 86px;
616
+ }
617
+
618
+ .player-podcast__header > .player-status {
619
+ grid-column: 2;
620
+ }
621
+
622
+ .player-podcast__transport {
623
+ gap: 0;
624
+ padding-inline: 0.3rem;
625
+ }
626
+
627
+ .player-mini__main {
628
+ grid-template-columns: 46px minmax(0, 1fr) auto;
629
+ }
630
+
631
+ .player-mini__controls > .player-volume-popover {
632
+ display: none;
633
+ }
634
+
635
+ .player-mini__artwork {
636
+ width: 46px;
637
+ height: 46px;
638
+ }
639
+
640
+ .player-mini__main > .player-status,
641
+ .player-mini__timeline {
642
+ display: none;
643
+ }
644
+ }
645
+
646
+ @container player-surface (max-width: 440px) {
647
+ .player-compact__main {
648
+ grid-template-areas:
649
+ "play artwork metadata"
650
+ "play artwork signal";
651
+ grid-template-columns: auto 48px minmax(0, 1fr);
652
+ }
653
+
654
+ .player-compact__main > .player-volume-popover {
655
+ display: none;
656
+ }
657
+
658
+ .player-compact__signal {
659
+ grid-template-columns: minmax(48px, 1fr) auto;
660
+ }
661
+
662
+ .player-compact .player-status {
663
+ display: none;
664
+ }
665
+
666
+ .player-wide__header {
667
+ grid-template-columns: 78px minmax(0, 1fr);
668
+ gap: 0.85rem;
669
+ padding: 0.85rem;
670
+ }
671
+
672
+ .player-wide__artwork {
673
+ width: 78px;
674
+ height: 78px;
675
+ }
676
+
677
+ .player-wide__identity {
678
+ gap: 0.55rem;
679
+ }
680
+
681
+ .player-wide__content {
682
+ padding: 0.7rem 0.85rem 1rem;
683
+ }
684
+
685
+ .player-wide__timeline-footer .player-volume {
686
+ display: none;
687
+ }
688
+
689
+ .player-wide__timeline-footer .player-time {
690
+ width: 100%;
691
+ }
692
+
693
+ .player-transport {
694
+ justify-content: space-between;
695
+ }
696
+
697
+ .player-detailed__queue {
698
+ padding-inline: 0.5rem;
699
+ }
700
+
701
+ .player-detailed__transport {
702
+ padding-inline: 0.25rem;
703
+ }
704
+
705
+ .player-queue-panel > header {
706
+ padding-left: 0.65rem;
707
+ }
708
+
709
+ .player-queue-panel li > button {
710
+ grid-template-columns: 1.9rem minmax(0, 1fr) auto;
711
+ padding-inline: 0.45rem;
712
+ }
713
+ }