@jjlmoya/utils-streaming 1.20.0 → 1.22.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 (45) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +3 -1
  3. package/src/entries.ts +2 -0
  4. package/src/tests/locale_completeness.test.ts +1 -1
  5. package/src/tests/seo_component_contract.test.ts +22 -0
  6. package/src/tests/seo_translation_completeness.test.ts +69 -0
  7. package/src/tests/tool_validation.test.ts +1 -1
  8. package/src/tool/streamSceneCountdownClock/bibliography.astro +6 -0
  9. package/src/tool/streamSceneCountdownClock/bibliography.ts +12 -0
  10. package/src/tool/streamSceneCountdownClock/component.astro +180 -0
  11. package/src/tool/streamSceneCountdownClock/controller.ts +271 -0
  12. package/src/tool/streamSceneCountdownClock/design-state.ts +81 -0
  13. package/src/tool/streamSceneCountdownClock/dom-views.ts +53 -0
  14. package/src/tool/streamSceneCountdownClock/entry.ts +29 -0
  15. package/src/tool/streamSceneCountdownClock/evaluator.ts +28 -0
  16. package/src/tool/streamSceneCountdownClock/i18n/de.ts +47 -0
  17. package/src/tool/streamSceneCountdownClock/i18n/en.ts +253 -0
  18. package/src/tool/streamSceneCountdownClock/i18n/es.ts +47 -0
  19. package/src/tool/streamSceneCountdownClock/i18n/fr.ts +47 -0
  20. package/src/tool/streamSceneCountdownClock/i18n/id.ts +47 -0
  21. package/src/tool/streamSceneCountdownClock/i18n/it.ts +44 -0
  22. package/src/tool/streamSceneCountdownClock/i18n/ja.ts +44 -0
  23. package/src/tool/streamSceneCountdownClock/i18n/ko.ts +44 -0
  24. package/src/tool/streamSceneCountdownClock/i18n/locale-factory.ts +50 -0
  25. package/src/tool/streamSceneCountdownClock/i18n/nl.ts +44 -0
  26. package/src/tool/streamSceneCountdownClock/i18n/pl.ts +44 -0
  27. package/src/tool/streamSceneCountdownClock/i18n/pt.ts +44 -0
  28. package/src/tool/streamSceneCountdownClock/i18n/ru.ts +44 -0
  29. package/src/tool/streamSceneCountdownClock/i18n/sv.ts +44 -0
  30. package/src/tool/streamSceneCountdownClock/i18n/tr.ts +44 -0
  31. package/src/tool/streamSceneCountdownClock/i18n/zh.ts +44 -0
  32. package/src/tool/streamSceneCountdownClock/index.ts +13 -0
  33. package/src/tool/streamSceneCountdownClock/logic.test.ts +51 -0
  34. package/src/tool/streamSceneCountdownClock/logic.ts +108 -0
  35. package/src/tool/streamSceneCountdownClock/seo.astro +15 -0
  36. package/src/tool/streamSceneCountdownClock/settings-state.ts +24 -0
  37. package/src/tool/streamSceneCountdownClock/storage.ts +32 -0
  38. package/src/tool/streamSceneCountdownClock/stream-scene-countdown-clock.css +1745 -0
  39. package/src/tool/streamSceneCountdownClock/stream-url-view.ts +32 -0
  40. package/src/tool/streamSceneCountdownClock/text-input-state.ts +31 -0
  41. package/src/tool/streamSceneCountdownClock/ui.ts +69 -0
  42. package/src/tool/streamSceneCountdownClock/url-state.test.ts +48 -0
  43. package/src/tool/streamSceneCountdownClock/url-state.ts +118 -0
  44. package/src/tool/videoBitratePlanner/seo.astro +7 -4
  45. package/src/tools.ts +2 -0
@@ -0,0 +1,1745 @@
1
+ :root {
2
+ --n-clock-paper: #f5efe6;
3
+ --n-clock-surface: #fffaf2;
4
+ --n-clock-surface-strong: #fff;
5
+ --n-clock-ink: #2c2925;
6
+ --n-clock-muted: #716b62;
7
+ --n-clock-line: #d8cfc1;
8
+ --n-clock-accent: #d5663f;
9
+ --n-clock-accent-strong: #a83f2c;
10
+ --n-clock-accent-soft: #f5d8c8;
11
+ --n-clock-blue: #2c6973;
12
+ --n-clock-blue-soft: #d4e7e4;
13
+ --n-clock-success: #2d7655;
14
+ --n-clock-success-soft: #d9ebdf;
15
+ --n-clock-warning: #8a5b24;
16
+ --n-clock-warning-soft: #f4e4c2;
17
+ --n-clock-stage: #262523;
18
+ --n-clock-stage-soft: #393733;
19
+ --n-clock-stage-ink: #fffaf2;
20
+ --n-clock-stage-muted: #c9c0b3;
21
+ --n-clock-shadow: rgba(69, 48, 31, .14);
22
+ }
23
+
24
+ .theme-dark {
25
+ --n-clock-paper: #171615;
26
+ --n-clock-surface: #22201e;
27
+ --n-clock-surface-strong: #2b2825;
28
+ --n-clock-ink: #f7efe5;
29
+ --n-clock-muted: #c1b7aa;
30
+ --n-clock-line: #4a423a;
31
+ --n-clock-accent: #f0845a;
32
+ --n-clock-accent-strong: #ff9a6d;
33
+ --n-clock-accent-soft: #503126;
34
+ --n-clock-blue: #8ed0cf;
35
+ --n-clock-blue-soft: #1f4649;
36
+ --n-clock-success: #88d4a8;
37
+ --n-clock-success-soft: #204634;
38
+ --n-clock-warning: #f1c476;
39
+ --n-clock-warning-soft: #4b3820;
40
+ --n-clock-stage: #111110;
41
+ --n-clock-stage-soft: #292725;
42
+ --n-clock-stage-ink: #fffaf2;
43
+ --n-clock-stage-muted: #c7bbae;
44
+ --n-clock-shadow: rgba(0, 0, 0, .32);
45
+ }
46
+
47
+ .ssc-root {
48
+ --n-paper: var(--n-clock-paper);
49
+ --n-surface: var(--n-clock-surface);
50
+ --n-surface-strong: var(--n-clock-surface-strong);
51
+ --n-ink: var(--n-clock-ink);
52
+ --n-muted: var(--n-clock-muted);
53
+ --n-line: var(--n-clock-line);
54
+ --n-accent: var(--n-clock-accent);
55
+ --n-accent-strong: var(--n-clock-accent-strong);
56
+ --n-accent-soft: var(--n-clock-accent-soft);
57
+ --n-blue: var(--n-clock-blue);
58
+ --n-blue-soft: var(--n-clock-blue-soft);
59
+ --n-success: var(--n-clock-success);
60
+ --n-success-soft: var(--n-clock-success-soft);
61
+ --n-warning: var(--n-clock-warning);
62
+ --n-warning-soft: var(--n-clock-warning-soft);
63
+ --n-stage: var(--n-clock-stage);
64
+ --n-stage-soft: var(--n-clock-stage-soft);
65
+ --n-stage-ink: var(--n-clock-stage-ink);
66
+ --n-stage-muted: var(--n-clock-stage-muted);
67
+ --n-shadow: var(--n-clock-shadow);
68
+
69
+ color: var(--n-ink);
70
+ }
71
+
72
+ .ssc-panel {
73
+ display: grid;
74
+ grid-template-columns: minmax(18rem, .74fr) minmax(22rem, 1.26fr);
75
+ overflow: hidden;
76
+ border: 1px solid var(--n-line);
77
+ border-radius: 1.4rem;
78
+ background: var(--n-surface);
79
+ box-shadow: 0 .9rem 2.3rem var(--n-shadow);
80
+ }
81
+
82
+ .ssc-root:fullscreen {
83
+ min-height: 100vh;
84
+ padding: clamp(1rem, 4vw, 3rem);
85
+ background: var(--n-paper);
86
+ }
87
+
88
+ .ssc-root:fullscreen .ssc-panel {
89
+ width: 100%;
90
+ min-height: 100%;
91
+ }
92
+
93
+ html[data-ssc-streaming='true'] [data-ssc-hidden='true'] {
94
+ display: none;
95
+ }
96
+
97
+ html[data-ssc-streaming='true'] [data-ssc-container='true'] {
98
+ width: 100%;
99
+ min-height: 100vh;
100
+ }
101
+
102
+ html[data-ssc-streaming='true'],
103
+ html[data-ssc-streaming='true'] body {
104
+ margin: 0;
105
+ overflow: hidden;
106
+ scrollbar-width: none;
107
+ }
108
+
109
+ html[data-ssc-streaming='true']::-webkit-scrollbar,
110
+ html[data-ssc-streaming='true'] body::-webkit-scrollbar,
111
+ .ssc-root[data-streaming='true']::-webkit-scrollbar {
112
+ display: none;
113
+ }
114
+
115
+ html[data-ssc-streaming='true'] astro-dev-toolbar {
116
+ display: none;
117
+ }
118
+
119
+ .ssc-root[data-streaming='true'] {
120
+ position: fixed;
121
+ inset: 0;
122
+ z-index: 9999;
123
+ box-sizing: border-box;
124
+ width: 100vw;
125
+ height: 100vh;
126
+ overflow: hidden;
127
+ min-height: 100vh;
128
+ background: var(--n-stage);
129
+ scrollbar-width: none;
130
+ }
131
+
132
+ .ssc-root[data-streaming='true'] .ssc-panel {
133
+ grid-template-columns: 1fr;
134
+ min-height: 100vh;
135
+ border: 0;
136
+ border-radius: 0;
137
+ background: var(--n-stage);
138
+ }
139
+
140
+ .ssc-root[data-streaming='true'] .ssc-controls,
141
+ .ssc-root[data-streaming='true'] .ssc-notes {
142
+ display: none;
143
+ }
144
+
145
+ .ssc-root[data-streaming='true'] .ssc-stage {
146
+ justify-content: center;
147
+ min-height: 100vh;
148
+ padding: clamp(1.5rem, 6vw, 5rem);
149
+ }
150
+
151
+ .ssc-root[data-streaming='true'] .ssc-stage-main {
152
+ width: min(100%, 72rem);
153
+ margin: auto;
154
+ grid-template-columns: minmax(20rem, .9fr) minmax(16rem, 1fr);
155
+ gap: clamp(2rem, 7vw, 7rem);
156
+ }
157
+
158
+ .ssc-root[data-streaming='true'] .ssc-dial-wrap {
159
+ width: min(100%, 31rem);
160
+ }
161
+
162
+ .ssc-root[data-streaming='true'] .ssc-clock {
163
+ font-size: clamp(3rem, 8vw, 7rem);
164
+ }
165
+
166
+ .ssc-root[data-streaming='true'] .ssc-stage-message {
167
+ font-size: clamp(1.6rem, 4vw, 3rem);
168
+ }
169
+
170
+ .ssc-root[data-streaming='true'] .ssc-stage-footer {
171
+ width: min(100%, 72rem);
172
+ margin: 0 auto;
173
+ }
174
+
175
+ .ssc-root:is([data-focus='true'], :fullscreen) {
176
+ position: fixed;
177
+ inset: 0;
178
+ z-index: 9999;
179
+ box-sizing: border-box;
180
+ width: 100vw;
181
+ height: 100vh;
182
+ min-height: 100vh;
183
+ overflow: hidden;
184
+ padding: 0;
185
+ background: var(--n-stage);
186
+ scrollbar-width: none;
187
+ }
188
+
189
+ .ssc-root:is([data-focus='true'], :fullscreen) .ssc-panel {
190
+ grid-template-columns: 1fr;
191
+ min-height: 100vh;
192
+ border: 0;
193
+ border-radius: 0;
194
+ background: var(--n-stage);
195
+ }
196
+
197
+ .ssc-root:is([data-focus='true'], :fullscreen) .ssc-controls,
198
+ .ssc-root:is([data-focus='true'], :fullscreen) .ssc-notes {
199
+ display: none;
200
+ }
201
+
202
+ .ssc-root:is([data-focus='true'], :fullscreen) .ssc-stage {
203
+ justify-content: center;
204
+ min-height: 100vh;
205
+ padding: clamp(1.5rem, 6vw, 5rem);
206
+ }
207
+
208
+ .ssc-root:is([data-focus='true'], :fullscreen) .ssc-stage-main {
209
+ width: min(100%, 72rem);
210
+ margin: auto;
211
+ grid-template-columns: minmax(20rem, .9fr) minmax(16rem, 1fr);
212
+ gap: clamp(2rem, 7vw, 7rem);
213
+ }
214
+
215
+ .ssc-root:is([data-focus='true'], :fullscreen) .ssc-dial-wrap {
216
+ width: min(100%, 31rem);
217
+ }
218
+
219
+ .ssc-root:is([data-focus='true'], :fullscreen) .ssc-clock {
220
+ font-size: clamp(3rem, 8vw, 7rem);
221
+ }
222
+
223
+ .ssc-root:is([data-focus='true'], :fullscreen) .ssc-stage-message {
224
+ font-size: clamp(1.6rem, 4vw, 3rem);
225
+ }
226
+
227
+ .ssc-root:is([data-focus='true'], :fullscreen) .ssc-stage-footer {
228
+ width: min(100%, 72rem);
229
+ margin: 0 auto;
230
+ }
231
+
232
+ .ssc-controls,
233
+ .ssc-stage {
234
+ min-width: 0;
235
+ padding: clamp(1.2rem, 3vw, 2.25rem);
236
+ }
237
+
238
+ .ssc-controls {
239
+ display: flex;
240
+ flex-direction: column;
241
+ gap: 1.35rem;
242
+ background: var(--n-paper);
243
+ }
244
+
245
+ .ssc-stage {
246
+ display: flex;
247
+ flex-direction: column;
248
+ gap: 1.5rem;
249
+ background: var(--n-stage);
250
+ color: var(--n-stage-ink);
251
+ }
252
+
253
+ .ssc-route,
254
+ .ssc-label,
255
+ .ssc-eyebrow,
256
+ .ssc-clock-label,
257
+ .ssc-stage-footer span {
258
+ color: var(--n-muted);
259
+ font-size: .72rem;
260
+ font-weight: 750;
261
+ letter-spacing: .09em;
262
+ line-height: 1.35;
263
+ text-transform: uppercase;
264
+ }
265
+
266
+ .ssc-route {
267
+ max-width: 28rem;
268
+ margin: 0;
269
+ color: var(--n-ink);
270
+ font-size: .86rem;
271
+ letter-spacing: 0;
272
+ line-height: 1.55;
273
+ text-transform: none;
274
+ }
275
+
276
+ .ssc-control-block,
277
+ .ssc-field {
278
+ display: flex;
279
+ flex-direction: column;
280
+ gap: .65rem;
281
+ }
282
+
283
+ .ssc-scene-list,
284
+ .ssc-duration-row,
285
+ .ssc-start-row,
286
+ .ssc-actions {
287
+ display: flex;
288
+ flex-wrap: wrap;
289
+ gap: .5rem;
290
+ }
291
+
292
+ .ssc-choice,
293
+ .ssc-secondary,
294
+ .ssc-primary,
295
+ .ssc-number-wrap,
296
+ .ssc-time-wrap,
297
+ .ssc-field input {
298
+ min-height: 2.7rem;
299
+ border: 1px solid var(--n-line);
300
+ border-radius: .75rem;
301
+ background: var(--n-surface-strong);
302
+ color: var(--n-ink);
303
+ font: inherit;
304
+ }
305
+
306
+ .ssc-choice,
307
+ .ssc-secondary,
308
+ .ssc-primary {
309
+ padding: .65rem .85rem;
310
+ cursor: pointer;
311
+ font-size: .86rem;
312
+ font-weight: 700;
313
+ transition: border-color .18s ease, background .18s ease, color .18s ease, transform .18s ease;
314
+ }
315
+
316
+ .ssc-choice:hover,
317
+ .ssc-choice:focus-visible,
318
+ .ssc-secondary:hover,
319
+ .ssc-secondary:focus-visible {
320
+ border-color: var(--n-accent);
321
+ }
322
+
323
+ .ssc-choice:active,
324
+ .ssc-primary:active,
325
+ .ssc-secondary:active {
326
+ transform: translateY(1px);
327
+ }
328
+
329
+ .ssc-choice.is-active {
330
+ border-color: var(--n-accent-strong);
331
+ background: var(--n-accent-soft);
332
+ color: var(--n-ink);
333
+ }
334
+
335
+ .ssc-field input,
336
+ .ssc-number-wrap input,
337
+ .ssc-time-wrap input {
338
+ width: 100%;
339
+ padding: .65rem .8rem;
340
+ outline: 0;
341
+ }
342
+
343
+ .ssc-field input:focus,
344
+ .ssc-number-wrap input:focus,
345
+ .ssc-time-wrap input:focus {
346
+ border-color: var(--n-accent);
347
+ box-shadow: 0 0 0 .18rem var(--n-accent-soft);
348
+ }
349
+
350
+ .ssc-field select {
351
+ min-height: 2.7rem;
352
+ padding: .65rem .8rem;
353
+ border: 1px solid var(--n-line);
354
+ border-radius: .75rem;
355
+ background: var(--n-surface-strong);
356
+ color: var(--n-ink);
357
+ font: inherit;
358
+ }
359
+
360
+ .ssc-field select:focus {
361
+ border-color: var(--n-accent);
362
+ outline: 0;
363
+ box-shadow: 0 0 0 .18rem var(--n-accent-soft);
364
+ }
365
+
366
+ .ssc-custom-select {
367
+ position: relative;
368
+ }
369
+
370
+ .ssc-select-trigger {
371
+ position: relative;
372
+ width: 100%;
373
+ min-height: 2.7rem;
374
+ padding: .65rem 2.4rem .65rem .8rem;
375
+ border: 1px solid var(--n-line);
376
+ border-radius: .75rem;
377
+ background: var(--n-surface-strong);
378
+ color: var(--n-ink);
379
+ cursor: pointer;
380
+ font: inherit;
381
+ text-align: left;
382
+ }
383
+
384
+ .ssc-select-trigger::after {
385
+ position: absolute;
386
+ top: 50%;
387
+ right: .85rem;
388
+ color: var(--n-accent-strong);
389
+ content: '⌄';
390
+ font-size: 1.1rem;
391
+ font-weight: 800;
392
+ line-height: 1;
393
+ transform: translateY(-58%);
394
+ }
395
+
396
+ .ssc-select-trigger[aria-expanded='true'] {
397
+ border-color: var(--n-accent);
398
+ box-shadow: 0 0 0 .18rem var(--n-accent-soft);
399
+ }
400
+
401
+ .ssc-select-trigger[aria-expanded='true']::after {
402
+ content: '⌃';
403
+ }
404
+
405
+ .ssc-select-options {
406
+ position: absolute;
407
+ z-index: 20;
408
+ top: calc(100% + .4rem);
409
+ right: 0;
410
+ left: 0;
411
+ display: grid;
412
+ gap: .25rem;
413
+ padding: .35rem;
414
+ border: 1px solid var(--n-accent);
415
+ border-radius: .8rem;
416
+ background: var(--n-surface-strong);
417
+ box-shadow: 0 .7rem 1.2rem var(--n-shadow);
418
+ }
419
+
420
+ .ssc-select-options[hidden] {
421
+ display: none;
422
+ }
423
+
424
+ .ssc-select-option {
425
+ width: 100%;
426
+ padding: .6rem .65rem;
427
+ border: 0;
428
+ border-radius: .55rem;
429
+ background: transparent;
430
+ color: var(--n-ink);
431
+ cursor: pointer;
432
+ font: inherit;
433
+ text-align: left;
434
+ }
435
+
436
+ .ssc-select-option:hover,
437
+ .ssc-select-option:focus-visible,
438
+ .ssc-select-option.is-active {
439
+ background: var(--n-accent-soft);
440
+ color: var(--n-ink);
441
+ }
442
+
443
+ .ssc-number-wrap {
444
+ display: inline-flex;
445
+ align-items: center;
446
+ gap: .35rem;
447
+ padding-left: .7rem;
448
+ }
449
+
450
+ .ssc-number-wrap input {
451
+ width: 5.5rem;
452
+ border: 0;
453
+ background: var(--n-surface-strong);
454
+ color: var(--n-ink);
455
+ }
456
+
457
+ .ssc-number-wrap span:last-child {
458
+ padding-right: .7rem;
459
+ color: var(--n-muted);
460
+ font-size: .76rem;
461
+ white-space: nowrap;
462
+ }
463
+
464
+ .ssc-time-wrap {
465
+ display: inline-flex;
466
+ align-items: center;
467
+ padding: 0 .25rem;
468
+ }
469
+
470
+ .ssc-time-wrap input {
471
+ min-width: 8rem;
472
+ border: 0;
473
+ background: var(--n-surface-strong);
474
+ color: var(--n-ink);
475
+ }
476
+
477
+ .ssc-time-wrap[hidden] {
478
+ display: none;
479
+ }
480
+
481
+ .ssc-actions {
482
+ padding-top: .35rem;
483
+ }
484
+
485
+ .ssc-primary {
486
+ border-color: var(--n-accent);
487
+ background: var(--n-accent);
488
+ color: var(--n-accent-ink, var(--n-stage-ink));
489
+ }
490
+
491
+ .ssc-primary:hover,
492
+ .ssc-primary:focus-visible {
493
+ border-color: var(--n-accent-strong);
494
+ background: var(--n-accent-strong);
495
+ }
496
+
497
+ .ssc-secondary {
498
+ background: var(--n-surface);
499
+ }
500
+
501
+ .ssc-error {
502
+ min-height: 1.2rem;
503
+ margin: 0;
504
+ color: var(--n-accent-strong);
505
+ font-size: .78rem;
506
+ }
507
+
508
+ .ssc-stage-heading,
509
+ .ssc-stage-footer,
510
+ .ssc-stage-footer div {
511
+ display: flex;
512
+ align-items: center;
513
+ }
514
+
515
+ .ssc-stage-heading {
516
+ justify-content: space-between;
517
+ gap: 1rem;
518
+ }
519
+
520
+ .ssc-eyebrow,
521
+ .ssc-clock-label,
522
+ .ssc-stage-footer span {
523
+ color: var(--n-stage-muted);
524
+ }
525
+
526
+ .ssc-status-badge {
527
+ padding: .35rem .65rem;
528
+ border: 1px solid var(--n-stage-soft);
529
+ border-radius: 999px;
530
+ color: var(--n-stage-muted);
531
+ font-size: .72rem;
532
+ font-weight: 800;
533
+ letter-spacing: .08em;
534
+ text-transform: uppercase;
535
+ }
536
+
537
+ .ssc-root[data-status='waiting'] .ssc-status-badge {
538
+ border-color: var(--n-blue);
539
+ color: var(--n-blue);
540
+ }
541
+
542
+ .ssc-root[data-status='live'] .ssc-status-badge {
543
+ border-color: var(--n-success);
544
+ color: var(--n-success);
545
+ }
546
+
547
+ .ssc-root[data-status='ended'] .ssc-status-badge {
548
+ border-color: var(--n-warning);
549
+ color: var(--n-warning);
550
+ }
551
+
552
+ .ssc-stage-main {
553
+ display: grid;
554
+ grid-template-columns: minmax(12rem, .8fr) minmax(11rem, 1fr);
555
+ align-items: center;
556
+ gap: clamp(1rem, 3vw, 2.3rem);
557
+ min-height: 18rem;
558
+ }
559
+
560
+ .ssc-dial-wrap {
561
+ position: relative;
562
+ width: min(100%, 19rem);
563
+ aspect-ratio: 1;
564
+ margin: auto;
565
+ }
566
+
567
+ .ssc-dial {
568
+ display: block;
569
+ width: 100%;
570
+ height: 100%;
571
+ transform: rotate(-90deg);
572
+ }
573
+
574
+ .ssc-dial-track,
575
+ .ssc-dial-progress {
576
+ fill: none;
577
+ stroke-width: 5;
578
+ }
579
+
580
+ .ssc-dial-track {
581
+ stroke: var(--n-stage-soft);
582
+ }
583
+
584
+ .ssc-dial-progress {
585
+ stroke: var(--n-accent);
586
+ stroke-dasharray: 314.16;
587
+ stroke-dashoffset: 314.16;
588
+ stroke-linecap: round;
589
+ transition: stroke-dashoffset .25s linear;
590
+ }
591
+
592
+ .ssc-dial-pin {
593
+ fill: var(--n-accent);
594
+ }
595
+
596
+ .ssc-dial-content {
597
+ position: absolute;
598
+ inset: 0;
599
+ display: flex;
600
+ flex-direction: column;
601
+ align-items: center;
602
+ justify-content: center;
603
+ gap: .35rem;
604
+ padding: 1rem;
605
+ text-align: center;
606
+ }
607
+
608
+ .ssc-scene-name {
609
+ max-width: 12rem;
610
+ color: var(--n-stage-muted);
611
+ font-size: .8rem;
612
+ font-weight: 800;
613
+ letter-spacing: .08em;
614
+ text-transform: uppercase;
615
+ }
616
+
617
+ .ssc-clock {
618
+ color: var(--n-stage-ink);
619
+ font-size: clamp(2.05rem, 5vw, 3.7rem);
620
+ font-variant-numeric: tabular-nums;
621
+ font-weight: 800;
622
+ letter-spacing: -.07em;
623
+ line-height: 1;
624
+ white-space: nowrap;
625
+ }
626
+
627
+ .ssc-stage-copy {
628
+ align-self: center;
629
+ }
630
+
631
+ .ssc-stage-caption,
632
+ .ssc-stage-message,
633
+ .ssc-status-copy {
634
+ margin: 0;
635
+ }
636
+
637
+ .ssc-stage-caption {
638
+ color: var(--n-stage-muted);
639
+ font-size: .9rem;
640
+ line-height: 1.45;
641
+ }
642
+
643
+ .ssc-stage-message {
644
+ margin-top: .6rem;
645
+ color: var(--n-stage-ink);
646
+ font-size: clamp(1.25rem, 3vw, 1.75rem);
647
+ font-weight: 750;
648
+ line-height: 1.15;
649
+ overflow-wrap: anywhere;
650
+ }
651
+
652
+ .ssc-status-copy {
653
+ max-width: 25rem;
654
+ margin-top: 1rem;
655
+ color: var(--n-stage-muted);
656
+ font-size: .9rem;
657
+ line-height: 1.55;
658
+ }
659
+
660
+ .ssc-stage-footer {
661
+ justify-content: space-between;
662
+ gap: .8rem;
663
+ padding-top: 1.15rem;
664
+ border-top: 1px solid var(--n-stage-soft);
665
+ }
666
+
667
+ .ssc-stage-footer div {
668
+ flex-direction: column;
669
+ align-items: flex-start;
670
+ gap: .25rem;
671
+ }
672
+
673
+ .ssc-stage-footer strong {
674
+ color: var(--n-stage-ink);
675
+ font-size: .95rem;
676
+ font-variant-numeric: tabular-nums;
677
+ }
678
+
679
+ .ssc-notes {
680
+ display: grid;
681
+ grid-template-columns: 1fr 1fr;
682
+ gap: 1rem;
683
+ padding-top: .1rem;
684
+ }
685
+
686
+ .ssc-notes details,
687
+ .ssc-warning {
688
+ margin: 0;
689
+ padding: .8rem .9rem;
690
+ border: 1px solid var(--n-stage-soft);
691
+ border-radius: .7rem;
692
+ color: var(--n-stage-muted);
693
+ font-size: .76rem;
694
+ line-height: 1.5;
695
+ }
696
+
697
+ .ssc-notes summary {
698
+ color: var(--n-stage-ink);
699
+ cursor: pointer;
700
+ font-weight: 750;
701
+ }
702
+
703
+ .ssc-notes details p {
704
+ margin: .6rem 0 0;
705
+ }
706
+
707
+ .ssc-warning strong {
708
+ color: var(--n-warning);
709
+ }
710
+
711
+ .sr-only {
712
+ position: absolute;
713
+ width: 1px;
714
+ height: 1px;
715
+ overflow: hidden;
716
+ padding: 0;
717
+ margin: -1px;
718
+ clip-path: inset(50%);
719
+ white-space: nowrap;
720
+ border: 0;
721
+ }
722
+
723
+ button:focus-visible,
724
+ input:focus-visible,
725
+ summary:focus-visible {
726
+ outline: 2px solid var(--n-accent);
727
+ outline-offset: 3px;
728
+ }
729
+
730
+ @media (max-width: 800px) {
731
+ .ssc-panel,
732
+ .ssc-stage-main {
733
+ grid-template-columns: 1fr;
734
+ }
735
+
736
+ .ssc-stage-main {
737
+ gap: 1rem;
738
+ }
739
+
740
+ .ssc-root[data-streaming='true'] .ssc-stage-main {
741
+ grid-template-columns: 1fr;
742
+ gap: 1.5rem;
743
+ }
744
+
745
+ .ssc-dial-wrap {
746
+ width: min(100%, 16rem);
747
+ }
748
+
749
+ .ssc-stage-copy {
750
+ text-align: center;
751
+ }
752
+
753
+ .ssc-status-copy {
754
+ margin-right: auto;
755
+ margin-left: auto;
756
+ }
757
+ }
758
+
759
+ .ssc-root:not([data-streaming='true'], [data-focus='true'], :fullscreen)[data-design] .ssc-alt-progress {
760
+ display: none;
761
+ }
762
+
763
+ .ssc-root:not([data-streaming='true'], [data-focus='true'], :fullscreen)[data-design] .ssc-dial-wrap {
764
+ width: min(100%, 19rem);
765
+ aspect-ratio: 1;
766
+ filter: none;
767
+ }
768
+
769
+ .ssc-root:not([data-streaming='true'], [data-focus='true'], :fullscreen)[data-design] .ssc-dial {
770
+ display: block;
771
+ }
772
+
773
+ .ssc-root:not([data-streaming='true'], [data-focus='true'], :fullscreen)[data-design] .ssc-dial-content {
774
+ position: absolute;
775
+ padding: 1rem;
776
+ }
777
+
778
+ .ssc-root:not([data-streaming='true'], [data-focus='true'], :fullscreen)[data-design] .ssc-clock {
779
+ display: block;
780
+ font-size: clamp(2.05rem, 5vw, 3.7rem);
781
+ letter-spacing: -.07em;
782
+ line-height: 1;
783
+ text-shadow: none;
784
+ }
785
+
786
+ .ssc-root:not([data-streaming='true'], [data-focus='true'], :fullscreen) .ssc-stage {
787
+ gap: 1.1rem;
788
+ }
789
+
790
+ .ssc-root:not([data-streaming='true'], [data-focus='true'], :fullscreen) .ssc-preview-strip {
791
+ margin-top: 0;
792
+ }
793
+
794
+ @media (max-width: 500px) {
795
+ .ssc-controls,
796
+ .ssc-stage {
797
+ padding: 1rem;
798
+ }
799
+
800
+ .ssc-stage-footer,
801
+ .ssc-notes {
802
+ grid-template-columns: 1fr;
803
+ }
804
+
805
+ .ssc-stage-footer {
806
+ display: grid;
807
+ grid-template-columns: repeat(3, 1fr);
808
+ }
809
+
810
+ .ssc-stage-footer strong {
811
+ font-size: .82rem;
812
+ }
813
+
814
+ .ssc-notes {
815
+ display: grid;
816
+ }
817
+ }
818
+
819
+ .ssc-root[data-focus='true'] .ssc-panel,
820
+ .ssc-root:fullscreen .ssc-panel {
821
+ grid-template-columns: 1fr;
822
+ min-height: 100vh;
823
+ border: 0;
824
+ border-radius: 0;
825
+ background: var(--n-stage);
826
+ }
827
+
828
+ .ssc-root[data-focus='true'] .ssc-controls,
829
+ .ssc-root[data-focus='true'] .ssc-notes,
830
+ .ssc-root:fullscreen .ssc-controls,
831
+ .ssc-root:fullscreen .ssc-notes {
832
+ display: none;
833
+ }
834
+
835
+ .ssc-root[data-focus='true'] .ssc-stage,
836
+ .ssc-root:fullscreen .ssc-stage {
837
+ justify-content: center;
838
+ min-height: 100vh;
839
+ padding: clamp(1.5rem, 6vw, 5rem);
840
+ }
841
+
842
+ .ssc-root[data-focus='true'] .ssc-stage-main,
843
+ .ssc-root:fullscreen .ssc-stage-main {
844
+ width: min(100%, 72rem);
845
+ margin: auto;
846
+ grid-template-columns: minmax(20rem, .9fr) minmax(16rem, 1fr);
847
+ gap: clamp(2rem, 7vw, 7rem);
848
+ }
849
+
850
+ .ssc-root[data-focus='true'] .ssc-dial-wrap,
851
+ .ssc-root:fullscreen .ssc-dial-wrap {
852
+ width: min(100%, 31rem);
853
+ }
854
+
855
+ .ssc-root[data-focus='true'] .ssc-clock,
856
+ .ssc-root:fullscreen .ssc-clock {
857
+ font-size: clamp(3rem, 8vw, 7rem);
858
+ }
859
+
860
+ .ssc-root[data-focus='true'] .ssc-stage-message,
861
+ .ssc-root:fullscreen .ssc-stage-message {
862
+ font-size: clamp(1.6rem, 4vw, 3rem);
863
+ }
864
+
865
+ .ssc-root[data-focus='true'] .ssc-stage-footer,
866
+ .ssc-root:fullscreen .ssc-stage-footer {
867
+ width: min(100%, 72rem);
868
+ margin: 0 auto;
869
+ }
870
+
871
+ @media (max-width: 800px) {
872
+ .ssc-root[data-focus='true'] .ssc-stage-main,
873
+ .ssc-root:fullscreen .ssc-stage-main {
874
+ grid-template-columns: 1fr;
875
+ gap: 1.5rem;
876
+ }
877
+ }
878
+
879
+ .ssc-root[data-streaming='true'],
880
+ .ssc-root[data-focus='true'],
881
+ .ssc-root:fullscreen {
882
+ --n-scene-glow: rgba(255, 107, 61, .28);
883
+ --n-scene-cyan: #73e0da;
884
+ --n-scene-secondary: rgba(115, 224, 218, .1);
885
+
886
+ background: #090b13;
887
+ height: 100vh;
888
+ min-height: 100vh;
889
+ }
890
+
891
+ .ssc-root[data-streaming='true'] .ssc-stage,
892
+ .ssc-root[data-focus='true'] .ssc-stage,
893
+ .ssc-root:fullscreen .ssc-stage {
894
+ position: relative;
895
+ isolation: isolate;
896
+ overflow: visible;
897
+ justify-content: center;
898
+ box-sizing: border-box;
899
+ height: 100vh;
900
+ min-height: 100vh;
901
+ padding: clamp(1.5rem, 5vw, 4.5rem);
902
+ background:
903
+ radial-gradient(circle at 50% 42%, var(--n-scene-glow), transparent 31rem),
904
+ radial-gradient(circle at 12% 88%, var(--n-scene-secondary), transparent 28rem),
905
+ #090b13;
906
+ }
907
+
908
+ .ssc-root[data-streaming='true'] .ssc-stage::before,
909
+ .ssc-root[data-focus='true'] .ssc-stage::before,
910
+ .ssc-root:fullscreen .ssc-stage::before {
911
+ position: absolute;
912
+ z-index: -2;
913
+ inset: -25%;
914
+ content: '';
915
+ background:
916
+ radial-gradient(circle at 50% 44%, var(--n-scene-glow), transparent 21%),
917
+ radial-gradient(circle at 74% 20%, var(--n-scene-secondary), transparent 18%);
918
+ filter: blur(2.5rem);
919
+ animation: ssc-breathe 7s ease-in-out infinite alternate;
920
+ }
921
+
922
+ .ssc-root[data-streaming='true'] .ssc-stage::after,
923
+ .ssc-root[data-focus='true'] .ssc-stage::after,
924
+ .ssc-root:fullscreen .ssc-stage::after {
925
+ position: absolute;
926
+ z-index: -1;
927
+ inset: -8rem;
928
+ content: '';
929
+ background:
930
+ radial-gradient(ellipse at 50% 42%, rgba(255, 255, 255, .055), transparent 27rem),
931
+ radial-gradient(ellipse at 15% 78%, var(--n-scene-glow), transparent 22rem),
932
+ radial-gradient(ellipse at 88% 18%, var(--n-scene-secondary), transparent 20rem);
933
+ filter: blur(1.25rem);
934
+ mask-image: radial-gradient(ellipse at center, black 24%, transparent 78%);
935
+ opacity: .8;
936
+ }
937
+
938
+ .ssc-root[data-streaming='true'] .ssc-stage-heading,
939
+ .ssc-root[data-focus='true'] .ssc-stage-heading,
940
+ .ssc-root:fullscreen .ssc-stage-heading {
941
+ position: absolute;
942
+ z-index: 2;
943
+ top: clamp(1.5rem, 4vw, 3rem);
944
+ right: clamp(1.5rem, 5vw, 4.5rem);
945
+ left: clamp(1.5rem, 5vw, 4.5rem);
946
+ }
947
+
948
+ .ssc-root[data-streaming='true'] .ssc-stage-main,
949
+ .ssc-root[data-focus='true'] .ssc-stage-main,
950
+ .ssc-root:fullscreen .ssc-stage-main {
951
+ position: relative;
952
+ z-index: 1;
953
+ display: flex;
954
+ width: min(100%, 58rem);
955
+ min-height: 0;
956
+ margin: auto;
957
+ flex-direction: column;
958
+ align-items: center;
959
+ justify-content: center;
960
+ gap: clamp(.8rem, 2.4vh, 1.5rem);
961
+ text-align: center;
962
+ }
963
+
964
+ .ssc-root[data-streaming='true'] .ssc-dial-wrap,
965
+ .ssc-root[data-focus='true'] .ssc-dial-wrap,
966
+ .ssc-root:fullscreen .ssc-dial-wrap {
967
+ width: min(72vw, 34rem, 58vh);
968
+ filter: drop-shadow(0 0 1.5rem var(--n-scene-glow));
969
+ }
970
+
971
+ .ssc-root[data-streaming='true'] .ssc-dial-wrap::before,
972
+ .ssc-root[data-focus='true'] .ssc-dial-wrap::before,
973
+ .ssc-root:fullscreen .ssc-dial-wrap::before {
974
+ position: absolute;
975
+ inset: 5%;
976
+ border: 1px solid rgba(115, 224, 218, .18);
977
+ border-radius: 50%;
978
+ content: '';
979
+ animation: ssc-orbit 18s linear infinite;
980
+ }
981
+
982
+ .ssc-root[data-streaming='true'] .ssc-dial-track,
983
+ .ssc-root[data-focus='true'] .ssc-dial-track,
984
+ .ssc-root:fullscreen .ssc-dial-track {
985
+ stroke: rgba(255, 255, 255, .1);
986
+ stroke-width: 6;
987
+ }
988
+
989
+ .ssc-root[data-streaming='true'] .ssc-dial-progress,
990
+ .ssc-root[data-focus='true'] .ssc-dial-progress,
991
+ .ssc-root:fullscreen .ssc-dial-progress {
992
+ stroke: var(--n-accent);
993
+ stroke-width: 6;
994
+ filter: drop-shadow(0 0 .45rem var(--n-accent));
995
+ }
996
+
997
+ .ssc-root[data-streaming='true'] .ssc-dial-pin,
998
+ .ssc-root[data-focus='true'] .ssc-dial-pin,
999
+ .ssc-root:fullscreen .ssc-dial-pin {
1000
+ fill: var(--n-scene-cyan);
1001
+ filter: drop-shadow(0 0 .35rem var(--n-scene-cyan));
1002
+ }
1003
+
1004
+ .ssc-root[data-streaming='true'] .ssc-scene-name,
1005
+ .ssc-root[data-focus='true'] .ssc-scene-name,
1006
+ .ssc-root:fullscreen .ssc-scene-name {
1007
+ color: var(--n-scene-cyan);
1008
+ font-size: clamp(.8rem, 1.2vw, 1rem);
1009
+ letter-spacing: .18em;
1010
+ }
1011
+
1012
+ .ssc-root[data-streaming='true'] .ssc-clock,
1013
+ .ssc-root[data-focus='true'] .ssc-clock,
1014
+ .ssc-root:fullscreen .ssc-clock {
1015
+ color: #fffaf4;
1016
+ font-size: clamp(3.5rem, 8.5vw, 8.5rem);
1017
+ font-weight: 850;
1018
+ letter-spacing: -.1em;
1019
+ text-shadow: 0 .15rem 1.2rem rgba(255, 122, 74, .22);
1020
+ }
1021
+
1022
+ .ssc-root[data-streaming='true'] .ssc-clock-label,
1023
+ .ssc-root[data-focus='true'] .ssc-clock-label,
1024
+ .ssc-root:fullscreen .ssc-clock-label {
1025
+ color: rgba(255, 250, 244, .55);
1026
+ font-size: .65rem;
1027
+ letter-spacing: .24em;
1028
+ }
1029
+
1030
+ .ssc-root[data-streaming='true'] .ssc-stage-copy,
1031
+ .ssc-root[data-focus='true'] .ssc-stage-copy,
1032
+ .ssc-root:fullscreen .ssc-stage-copy {
1033
+ max-width: 52rem;
1034
+ text-align: center;
1035
+ }
1036
+
1037
+ .ssc-root[data-streaming='true'] .ssc-stage-caption,
1038
+ .ssc-root[data-streaming='true'] .ssc-status-copy,
1039
+ .ssc-root[data-streaming='true'] .ssc-stage-footer,
1040
+ .ssc-root[data-streaming='true'] .ssc-stage-heading,
1041
+ .ssc-root[data-streaming='true'] .ssc-clock-label,
1042
+ .ssc-root[data-focus='true'] .ssc-stage-caption,
1043
+ .ssc-root[data-focus='true'] .ssc-status-copy,
1044
+ .ssc-root[data-focus='true'] .ssc-stage-footer,
1045
+ .ssc-root[data-focus='true'] .ssc-stage-heading,
1046
+ .ssc-root[data-focus='true'] .ssc-clock-label,
1047
+ .ssc-root:fullscreen .ssc-stage-caption,
1048
+ .ssc-root:fullscreen .ssc-status-copy,
1049
+ .ssc-root:fullscreen .ssc-stage-footer,
1050
+ .ssc-root:fullscreen .ssc-stage-heading,
1051
+ .ssc-root:fullscreen .ssc-clock-label {
1052
+ display: none;
1053
+ }
1054
+
1055
+ .ssc-root[data-streaming='true'] .ssc-stage-message,
1056
+ .ssc-root[data-focus='true'] .ssc-stage-message,
1057
+ .ssc-root:fullscreen .ssc-stage-message {
1058
+ margin: 0;
1059
+ color: #fffaf4;
1060
+ font-size: clamp(1.15rem, 2.8vw, 2.2rem);
1061
+ font-weight: 720;
1062
+ letter-spacing: -.03em;
1063
+ line-height: 1.1;
1064
+ text-wrap: balance;
1065
+ }
1066
+
1067
+ .ssc-root[data-streaming='true'] .ssc-panel,
1068
+ .ssc-root[data-focus='true'] .ssc-panel,
1069
+ .ssc-root:fullscreen .ssc-panel {
1070
+ overflow: visible;
1071
+ }
1072
+
1073
+ @keyframes ssc-breathe {
1074
+ from {
1075
+ transform: scale(.92);
1076
+ opacity: .65;
1077
+ }
1078
+
1079
+ to {
1080
+ transform: scale(1.08);
1081
+ opacity: 1;
1082
+ }
1083
+ }
1084
+
1085
+ @keyframes ssc-orbit {
1086
+ to {
1087
+ transform: rotate(360deg);
1088
+ }
1089
+ }
1090
+
1091
+ @media (max-width: 800px) {
1092
+ .ssc-root[data-streaming='true'] .ssc-dial-wrap,
1093
+ .ssc-root[data-focus='true'] .ssc-dial-wrap,
1094
+ .ssc-root:fullscreen .ssc-dial-wrap {
1095
+ width: min(76vw, 23rem, 58vh);
1096
+ }
1097
+
1098
+ .ssc-root[data-streaming='true'] .ssc-clock,
1099
+ .ssc-root[data-focus='true'] .ssc-clock,
1100
+ .ssc-root:fullscreen .ssc-clock {
1101
+ font-size: clamp(2.9rem, 11vw, 5.4rem);
1102
+ }
1103
+ }
1104
+
1105
+ @media (prefers-reduced-motion: reduce) {
1106
+ .ssc-root[data-streaming='true'] .ssc-stage::before,
1107
+ .ssc-root[data-streaming='true'] .ssc-dial-wrap::before,
1108
+ .ssc-root[data-focus='true'] .ssc-stage::before,
1109
+ .ssc-root[data-focus='true'] .ssc-dial-wrap::before,
1110
+ .ssc-root:fullscreen .ssc-stage::before,
1111
+ .ssc-root:fullscreen .ssc-dial-wrap::before {
1112
+ animation: none;
1113
+ }
1114
+ }
1115
+
1116
+ .ssc-obs-card {
1117
+ display: flex;
1118
+ flex-direction: column;
1119
+ gap: .7rem;
1120
+ margin-top: auto;
1121
+ padding: 1rem;
1122
+ border: 1px solid var(--n-line);
1123
+ border-radius: 1rem;
1124
+ background: var(--n-surface);
1125
+ }
1126
+
1127
+ .ssc-obs-heading,
1128
+ .ssc-obs-actions {
1129
+ display: flex;
1130
+ align-items: center;
1131
+ justify-content: space-between;
1132
+ gap: .75rem;
1133
+ }
1134
+
1135
+ .ssc-obs-mark {
1136
+ padding: .25rem .45rem;
1137
+ border: 1px solid var(--n-accent);
1138
+ border-radius: .35rem;
1139
+ color: var(--n-accent-strong);
1140
+ font-size: .65rem;
1141
+ font-weight: 850;
1142
+ letter-spacing: .08em;
1143
+ }
1144
+
1145
+ .ssc-obs-card p {
1146
+ margin: 0;
1147
+ color: var(--n-muted);
1148
+ font-size: .78rem;
1149
+ line-height: 1.5;
1150
+ }
1151
+
1152
+ .ssc-obs-steps {
1153
+ display: grid;
1154
+ gap: .35rem;
1155
+ margin: 0;
1156
+ padding: 0 0 0 1.2rem;
1157
+ color: var(--n-ink);
1158
+ font-size: .74rem;
1159
+ line-height: 1.4;
1160
+ }
1161
+
1162
+ .ssc-obs-steps li::marker {
1163
+ color: var(--n-accent);
1164
+ font-weight: 800;
1165
+ }
1166
+
1167
+ .ssc-stream-url {
1168
+ display: block;
1169
+ max-height: 3.3rem;
1170
+ overflow: auto;
1171
+ padding: .65rem .7rem;
1172
+ border-radius: .55rem;
1173
+ background: var(--n-paper);
1174
+ color: var(--n-blue);
1175
+ font-size: .7rem;
1176
+ line-height: 1.45;
1177
+ overflow-wrap: anywhere;
1178
+ text-decoration: none;
1179
+ }
1180
+
1181
+ .ssc-stream-url:hover,
1182
+ .ssc-stream-url:focus-visible {
1183
+ text-decoration: underline;
1184
+ }
1185
+
1186
+ .ssc-copy-state {
1187
+ min-height: 1.2rem;
1188
+ color: var(--n-success);
1189
+ font-size: .72rem;
1190
+ font-weight: 700;
1191
+ }
1192
+
1193
+ .ssc-root[data-design='aurora'] {
1194
+ --n-accent: var(--n-user-accent, #a78bfa);
1195
+ --n-accent-strong: var(--n-user-accent, #7c3aed);
1196
+ --n-accent-soft: color-mix(in srgb, var(--n-user-accent, #a78bfa) 18%, white);
1197
+ --n-scene-glow: color-mix(in srgb, var(--n-user-glow, #8ff5d7) 26%, transparent);
1198
+ --n-scene-cyan: var(--n-user-glow, #8ff5d7);
1199
+ --n-scene-secondary: color-mix(in srgb, var(--n-user-accent, #a78bfa) 12%, transparent);
1200
+ }
1201
+
1202
+ .ssc-root[data-design='type'] {
1203
+ --n-accent: var(--n-user-accent, #ffb84d);
1204
+ --n-accent-strong: var(--n-user-accent, #e58d1b);
1205
+ --n-accent-soft: color-mix(in srgb, var(--n-user-accent, #ffb84d) 18%, white);
1206
+ --n-scene-glow: color-mix(in srgb, var(--n-user-glow, #ff5f91) 25%, transparent);
1207
+ --n-scene-cyan: var(--n-user-glow, #ff5f91);
1208
+ --n-scene-secondary: color-mix(in srgb, var(--n-user-accent, #ffb84d) 13%, transparent);
1209
+ }
1210
+
1211
+ .ssc-root[data-design='pulse'] {
1212
+ --n-accent: var(--n-user-accent, #ff6b9d);
1213
+ --n-accent-strong: var(--n-user-accent, #e63c78);
1214
+ --n-accent-soft: color-mix(in srgb, var(--n-user-accent, #ff6b9d) 18%, white);
1215
+ --n-scene-glow: color-mix(in srgb, var(--n-user-glow, #9d7bff) 28%, transparent);
1216
+ --n-scene-cyan: var(--n-user-glow, #9d7bff);
1217
+ --n-scene-secondary: color-mix(in srgb, var(--n-user-accent, #ff6b9d) 12%, transparent);
1218
+ }
1219
+
1220
+ .ssc-root[data-design='glitch'] {
1221
+ --n-accent: var(--n-user-accent, #d8ff3e);
1222
+ --n-accent-strong: var(--n-user-accent, #a8d20e);
1223
+ --n-accent-soft: color-mix(in srgb, var(--n-user-accent, #d8ff3e) 18%, white);
1224
+ --n-scene-glow: color-mix(in srgb, var(--n-user-glow, #5ee7ff) 25%, transparent);
1225
+ --n-scene-cyan: var(--n-user-glow, #5ee7ff);
1226
+ --n-scene-secondary: color-mix(in srgb, var(--n-user-accent, #d8ff3e) 12%, transparent);
1227
+ }
1228
+
1229
+ .ssc-root[data-design='sunset'] {
1230
+ --n-accent: var(--n-user-accent, #ff6b4a);
1231
+ --n-accent-strong: var(--n-user-accent, #d8442d);
1232
+ --n-accent-soft: color-mix(in srgb, var(--n-user-accent, #ff6b4a) 18%, white);
1233
+ --n-scene-glow: color-mix(in srgb, var(--n-user-glow, #ffc36b) 28%, transparent);
1234
+ --n-scene-cyan: var(--n-user-glow, #ffc36b);
1235
+ --n-scene-secondary: color-mix(in srgb, var(--n-user-accent, #ff6b4a) 13%, transparent);
1236
+ }
1237
+
1238
+ @media (max-width: 800px) and (max-height: 760px) {
1239
+ .ssc-root[data-streaming='true'] .ssc-stage,
1240
+ .ssc-root[data-focus='true'] .ssc-stage,
1241
+ .ssc-root:fullscreen .ssc-stage {
1242
+ padding: 1rem;
1243
+ }
1244
+
1245
+ .ssc-root[data-streaming='true'] .ssc-dial-wrap,
1246
+ .ssc-root[data-focus='true'] .ssc-dial-wrap,
1247
+ .ssc-root:fullscreen .ssc-dial-wrap {
1248
+ width: min(76vw, 20rem, 44vh);
1249
+ }
1250
+
1251
+ .ssc-root[data-streaming='true'] .ssc-stage-main,
1252
+ .ssc-root[data-focus='true'] .ssc-stage-main,
1253
+ .ssc-root:fullscreen .ssc-stage-main {
1254
+ gap: .75rem;
1255
+ }
1256
+ }
1257
+
1258
+ .ssc-color-row {
1259
+ display: grid;
1260
+ grid-template-columns: 1fr 1fr;
1261
+ gap: .6rem;
1262
+ }
1263
+
1264
+ .ssc-color-field {
1265
+ display: flex;
1266
+ align-items: center;
1267
+ justify-content: space-between;
1268
+ gap: .5rem;
1269
+ }
1270
+
1271
+ .ssc-color-field input[type='color'] {
1272
+ width: 2.8rem;
1273
+ min-height: 2.35rem;
1274
+ padding: .2rem;
1275
+ border: 1px solid var(--n-line);
1276
+ border-radius: .65rem;
1277
+ background: var(--n-surface-strong);
1278
+ cursor: pointer;
1279
+ }
1280
+
1281
+ .ssc-preview-strip {
1282
+ display: flex;
1283
+ flex-direction: column;
1284
+ gap: .65rem;
1285
+ margin-top: auto;
1286
+ }
1287
+
1288
+ .ssc-preview-heading {
1289
+ display: flex;
1290
+ align-items: baseline;
1291
+ justify-content: space-between;
1292
+ gap: .75rem;
1293
+ color: var(--n-stage-muted);
1294
+ font-size: .7rem;
1295
+ }
1296
+
1297
+ .ssc-preview-heading .ssc-label {
1298
+ color: var(--n-stage-ink);
1299
+ }
1300
+
1301
+ .ssc-design-gallery {
1302
+ display: grid;
1303
+ grid-template-columns: repeat(5, minmax(0, 1fr));
1304
+ gap: .45rem;
1305
+ }
1306
+
1307
+ .ssc-design-thumb {
1308
+ display: flex;
1309
+ min-width: 0;
1310
+ flex-direction: column;
1311
+ gap: .35rem;
1312
+ padding: .3rem;
1313
+ border: 1px solid transparent;
1314
+ border-radius: .65rem;
1315
+ background: transparent;
1316
+ color: var(--n-stage-muted);
1317
+ cursor: pointer;
1318
+ font: inherit;
1319
+ font-size: .61rem;
1320
+ text-align: left;
1321
+ transition: border-color .18s ease, background .18s ease, color .18s ease, transform .18s ease;
1322
+ }
1323
+
1324
+ .ssc-design-thumb:hover,
1325
+ .ssc-design-thumb:focus-visible,
1326
+ .ssc-design-thumb.is-active {
1327
+ border-color: var(--n-accent);
1328
+ background: color-mix(in srgb, var(--n-accent) 9%, transparent);
1329
+ color: var(--n-stage-ink);
1330
+ }
1331
+
1332
+ .ssc-design-thumb:active {
1333
+ transform: translateY(1px);
1334
+ }
1335
+
1336
+ .ssc-mini-art {
1337
+ position: relative;
1338
+ display: flex;
1339
+ min-width: 0;
1340
+ aspect-ratio: 1.55;
1341
+ align-items: center;
1342
+ justify-content: center;
1343
+ overflow: hidden;
1344
+ border-radius: .45rem;
1345
+ background: #090b13;
1346
+ color: #fffaf4;
1347
+ font-size: .7rem;
1348
+ font-weight: 850;
1349
+ letter-spacing: -.06em;
1350
+ }
1351
+
1352
+ .ssc-mini-art > span {
1353
+ position: relative;
1354
+ z-index: 1;
1355
+ }
1356
+
1357
+ .ssc-mini-art-aurora::before {
1358
+ position: absolute;
1359
+ width: 70%;
1360
+ aspect-ratio: 1;
1361
+ border: 2px solid #a78bfa;
1362
+ border-radius: 50%;
1363
+ box-shadow: 0 0 .8rem #8ff5d7;
1364
+ content: '';
1365
+ }
1366
+
1367
+ .ssc-mini-art-type {
1368
+ align-items: flex-end;
1369
+ justify-content: flex-start;
1370
+ padding: .35rem .45rem;
1371
+ background: linear-gradient(145deg, #251a2b, #10141d);
1372
+ color: #ffb84d;
1373
+ font-size: .85rem;
1374
+ letter-spacing: -.14em;
1375
+ }
1376
+
1377
+ .ssc-mini-art-type::after {
1378
+ position: absolute;
1379
+ right: .35rem;
1380
+ bottom: .35rem;
1381
+ left: .35rem;
1382
+ height: 2px;
1383
+ background: #ff5f91;
1384
+ box-shadow: 0 0 .45rem #ff5f91;
1385
+ content: '';
1386
+ }
1387
+
1388
+ .ssc-mini-art-pulse::before {
1389
+ position: absolute;
1390
+ width: 55%;
1391
+ aspect-ratio: 1;
1392
+ border: 3px solid #ff6b9d;
1393
+ border-radius: 50%;
1394
+ box-shadow: 0 0 0 .3rem rgba(157, 123, 255, .25), 0 0 1rem #ff6b9d;
1395
+ content: '';
1396
+ }
1397
+
1398
+ .ssc-mini-art-pulse::after {
1399
+ position: absolute;
1400
+ width: 76%;
1401
+ aspect-ratio: 1;
1402
+ border: 1px solid rgba(157, 123, 255, .6);
1403
+ border-radius: 50%;
1404
+ content: '';
1405
+ }
1406
+
1407
+ .ssc-mini-art-glitch {
1408
+ background: repeating-linear-gradient(125deg, #d8ff3e 0 3px, #132126 3px 8px, #5ee7ff 8px 10px, #10131d 10px 15px);
1409
+ color: #10131d;
1410
+ clip-path: polygon(0 12%, 94% 12%, 100% 35%, 96% 86%, 5% 86%, 0 68%);
1411
+ }
1412
+
1413
+ .ssc-mini-art-glitch > span {
1414
+ padding: .08rem .25rem;
1415
+ background: #d8ff3e;
1416
+ }
1417
+
1418
+ .ssc-mini-art-sunset {
1419
+ align-items: flex-end;
1420
+ justify-content: flex-start;
1421
+ padding: .35rem .45rem;
1422
+ background: radial-gradient(circle at 76% 28%, #ffc36b, transparent 22%), linear-gradient(145deg, #5a1e33, #1a101c 72%);
1423
+ color: #fff1d0;
1424
+ }
1425
+
1426
+ .ssc-mini-art-sunset::after {
1427
+ position: absolute;
1428
+ right: -.1rem;
1429
+ bottom: .3rem;
1430
+ left: 0;
1431
+ height: .3rem;
1432
+ background: #ff6b4a;
1433
+ box-shadow: 0 -.35rem 0 rgba(255, 195, 107, .65), 0 -.7rem 0 rgba(255, 107, 74, .35);
1434
+ content: '';
1435
+ transform: skewY(-5deg);
1436
+ }
1437
+
1438
+ .ssc-alt-progress {
1439
+ display: none;
1440
+ }
1441
+
1442
+ .ssc-root[data-streaming='true'] .ssc-preview-strip,
1443
+ .ssc-root[data-focus='true'] .ssc-preview-strip,
1444
+ .ssc-root:fullscreen .ssc-preview-strip {
1445
+ display: none;
1446
+ }
1447
+
1448
+ .ssc-clock-part,
1449
+ .ssc-clock-separator {
1450
+ display: inline-block;
1451
+ }
1452
+
1453
+ .ssc-root[data-design='type'] .ssc-dial-wrap,
1454
+ .ssc-root[data-design='glitch'] .ssc-dial-wrap,
1455
+ .ssc-root[data-design='sunset'] .ssc-dial-wrap {
1456
+ width: auto;
1457
+ aspect-ratio: auto;
1458
+ filter: none;
1459
+ }
1460
+
1461
+ .ssc-root[data-design='type'] .ssc-dial,
1462
+ .ssc-root[data-design='pulse'] .ssc-dial,
1463
+ .ssc-root[data-design='glitch'] .ssc-dial,
1464
+ .ssc-root[data-design='sunset'] .ssc-dial {
1465
+ display: none;
1466
+ }
1467
+
1468
+ .ssc-root[data-design='type'] .ssc-dial-wrap::before,
1469
+ .ssc-root[data-design='pulse'] .ssc-dial-wrap::before,
1470
+ .ssc-root[data-design='glitch'] .ssc-dial-wrap::before,
1471
+ .ssc-root[data-design='sunset'] .ssc-dial-wrap::before {
1472
+ display: none;
1473
+ }
1474
+
1475
+ .ssc-root[data-design='type'] .ssc-dial-content,
1476
+ .ssc-root[data-design='glitch'] .ssc-dial-content,
1477
+ .ssc-root[data-design='sunset'] .ssc-dial-content {
1478
+ position: static;
1479
+ padding: 0;
1480
+ }
1481
+
1482
+ .ssc-root[data-design='type'] .ssc-clock-separator {
1483
+ display: none;
1484
+ }
1485
+
1486
+ .ssc-root[data-design='type'] .ssc-clock {
1487
+ display: flex;
1488
+ align-items: baseline;
1489
+ justify-content: center;
1490
+ gap: .04em;
1491
+ font-size: clamp(5rem, 15vw, 12rem);
1492
+ font-weight: 900;
1493
+ letter-spacing: -.16em;
1494
+ line-height: .78;
1495
+ text-shadow: .08em .08em 0 color-mix(in srgb, var(--n-scene-cyan) 35%, transparent), 0 0 1.8rem var(--n-scene-glow);
1496
+ }
1497
+
1498
+ .ssc-root[data-design='type'] .ssc-clock-part:nth-child(1) {
1499
+ color: var(--n-scene-cyan);
1500
+ font-size: .62em;
1501
+ transform: translateY(-.08em);
1502
+ }
1503
+
1504
+ .ssc-root[data-design='type'] .ssc-clock-part:nth-child(3) {
1505
+ color: var(--n-stage-ink);
1506
+ }
1507
+
1508
+ .ssc-root[data-design='type'] .ssc-clock-part:nth-child(5) {
1509
+ color: var(--n-accent);
1510
+ font-size: .75em;
1511
+ transform: translateY(.11em);
1512
+ }
1513
+
1514
+ .ssc-root[data-design='type'] .ssc-alt-progress {
1515
+ position: relative;
1516
+ display: block;
1517
+ width: min(68vw, 47rem);
1518
+ height: .28rem;
1519
+ overflow: hidden;
1520
+ border-radius: 999px;
1521
+ background: rgba(255, 255, 255, .12);
1522
+ box-shadow: 0 0 1.2rem var(--n-scene-glow);
1523
+ }
1524
+
1525
+ .ssc-root[data-design='type'] .ssc-alt-progress span {
1526
+ display: block;
1527
+ width: 100%;
1528
+ height: 100%;
1529
+ border-radius: inherit;
1530
+ background: linear-gradient(90deg, var(--n-accent), var(--n-scene-cyan));
1531
+ transform-origin: left center;
1532
+ }
1533
+
1534
+ .ssc-root[data-design='type'] .ssc-stage-message {
1535
+ color: var(--n-scene-cyan);
1536
+ font-size: clamp(1rem, 2.3vw, 1.7rem);
1537
+ letter-spacing: .08em;
1538
+ text-transform: uppercase;
1539
+ }
1540
+
1541
+ .ssc-root[data-design='pulse'] .ssc-alt-progress {
1542
+ position: absolute;
1543
+ top: 50%;
1544
+ left: 50%;
1545
+ display: block;
1546
+ width: min(72vw, 34rem, 58vh);
1547
+ aspect-ratio: 1;
1548
+ border: 1px solid rgba(255, 255, 255, .12);
1549
+ border-radius: 50%;
1550
+ background: conic-gradient(var(--n-accent) 0 calc(var(--n-progress) * 100%), rgba(255, 255, 255, .08) 0);
1551
+ box-shadow: 0 0 2rem var(--n-scene-glow), inset 0 0 2rem rgba(255, 255, 255, .06);
1552
+ transform: translate(-50%, -50%);
1553
+ }
1554
+
1555
+ .ssc-root[data-design='pulse'] .ssc-alt-progress::before,
1556
+ .ssc-root[data-design='pulse'] .ssc-alt-progress::after {
1557
+ position: absolute;
1558
+ inset: 9%;
1559
+ border: 1px solid color-mix(in srgb, var(--n-scene-cyan) 75%, transparent);
1560
+ border-radius: 50%;
1561
+ content: '';
1562
+ animation: ssc-wave 3.4s ease-out infinite;
1563
+ }
1564
+
1565
+ .ssc-root[data-design='pulse'] .ssc-alt-progress::after {
1566
+ animation-delay: 1.7s;
1567
+ }
1568
+
1569
+ .ssc-root[data-design='pulse'] .ssc-dial-wrap {
1570
+ width: min(72vw, 34rem, 58vh);
1571
+ aspect-ratio: 1;
1572
+ }
1573
+
1574
+ .ssc-root[data-design='pulse'] .ssc-dial-content {
1575
+ z-index: 2;
1576
+ }
1577
+
1578
+ .ssc-root[data-design='pulse'] .ssc-clock {
1579
+ color: var(--n-stage-ink);
1580
+ text-shadow: 0 0 1rem var(--n-scene-glow), .06em .06em 0 color-mix(in srgb, var(--n-accent) 45%, transparent);
1581
+ }
1582
+
1583
+ .ssc-root[data-design='pulse'] .ssc-scene-name {
1584
+ color: var(--n-scene-cyan);
1585
+ }
1586
+
1587
+ .ssc-root[data-design='glitch'] .ssc-stage-main {
1588
+ gap: clamp(1.2rem, 4vh, 2.8rem);
1589
+ }
1590
+
1591
+ .ssc-root[data-design='glitch'] .ssc-clock {
1592
+ position: relative;
1593
+ padding: .18em .3em .12em;
1594
+ border: 1px solid var(--n-accent);
1595
+ background: repeating-linear-gradient(0deg, rgba(216, 255, 62, .09) 0 1px, transparent 1px 5px), rgba(9, 11, 19, .86);
1596
+ color: var(--n-stage-ink);
1597
+ font-size: clamp(3.7rem, 10vw, 9rem);
1598
+ letter-spacing: -.13em;
1599
+ line-height: .86;
1600
+ text-shadow: .08em 0 0 var(--n-scene-cyan), -.05em 0 0 var(--n-accent);
1601
+ transform: skewX(-5deg);
1602
+ }
1603
+
1604
+ .ssc-root[data-design='glitch'] .ssc-clock-part:nth-child(3) {
1605
+ color: var(--n-accent);
1606
+ }
1607
+
1608
+ .ssc-root[data-design='glitch'] .ssc-clock-separator {
1609
+ color: var(--n-scene-cyan);
1610
+ }
1611
+
1612
+ .ssc-root[data-design='glitch'] .ssc-alt-progress {
1613
+ position: relative;
1614
+ display: block;
1615
+ width: min(76vw, 53rem);
1616
+ height: .85rem;
1617
+ border: 1px solid var(--n-scene-cyan);
1618
+ background: rgba(94, 231, 255, .12);
1619
+ clip-path: polygon(0 0, 100% 0, 98% 100%, 2% 100%);
1620
+ }
1621
+
1622
+ .ssc-root[data-design='glitch'] .ssc-alt-progress span {
1623
+ display: block;
1624
+ width: 100%;
1625
+ height: 100%;
1626
+ background: repeating-linear-gradient(90deg, var(--n-accent) 0 .7rem, var(--n-scene-cyan) .7rem 1rem, transparent 1rem 1.35rem);
1627
+ transform-origin: left center;
1628
+ }
1629
+
1630
+ .ssc-root[data-design='glitch'] .ssc-stage-message {
1631
+ padding: .3rem .65rem;
1632
+ border-left: .3rem solid var(--n-accent);
1633
+ color: var(--n-accent);
1634
+ font-size: clamp(1rem, 2.5vw, 1.65rem);
1635
+ letter-spacing: .06em;
1636
+ text-transform: uppercase;
1637
+ }
1638
+
1639
+ .ssc-root[data-design='sunset'] .ssc-stage {
1640
+ background:
1641
+ radial-gradient(circle at 76% 30%, color-mix(in srgb, var(--n-scene-cyan) 28%, transparent), transparent 22rem),
1642
+ linear-gradient(145deg, #1b101d 0%, #0b0d16 62%, #29131d 100%);
1643
+ }
1644
+
1645
+ .ssc-root[data-design='sunset'] .ssc-stage-main {
1646
+ width: min(100%, 68rem);
1647
+ align-items: flex-start;
1648
+ gap: clamp(1rem, 4vh, 2.5rem);
1649
+ text-align: left;
1650
+ }
1651
+
1652
+ .ssc-root[data-design='sunset'] .ssc-dial-content {
1653
+ align-items: flex-start;
1654
+ text-align: left;
1655
+ }
1656
+
1657
+ .ssc-root[data-design='sunset'] .ssc-scene-name {
1658
+ max-width: none;
1659
+ color: var(--n-scene-cyan);
1660
+ font-size: clamp(.85rem, 1.5vw, 1.1rem);
1661
+ letter-spacing: .28em;
1662
+ }
1663
+
1664
+ .ssc-root[data-design='sunset'] .ssc-clock {
1665
+ color: #fff1d0;
1666
+ font-size: clamp(5rem, 14vw, 12rem);
1667
+ font-weight: 900;
1668
+ letter-spacing: -.14em;
1669
+ line-height: .8;
1670
+ text-shadow: 0 .08em 0 #7d2943, 0 0 1.5rem var(--n-scene-glow);
1671
+ }
1672
+
1673
+ .ssc-root[data-design='sunset'] .ssc-clock-part:nth-child(3) {
1674
+ color: var(--n-accent);
1675
+ }
1676
+
1677
+ .ssc-root[data-design='sunset'] .ssc-alt-progress {
1678
+ position: relative;
1679
+ display: block;
1680
+ width: min(82vw, 61rem);
1681
+ height: 1rem;
1682
+ overflow: hidden;
1683
+ background: rgba(255, 241, 208, .12);
1684
+ clip-path: polygon(0 26%, 100% 0, 98% 74%, 2% 100%);
1685
+ }
1686
+
1687
+ .ssc-root[data-design='sunset'] .ssc-alt-progress span {
1688
+ display: block;
1689
+ width: 100%;
1690
+ height: 100%;
1691
+ background: linear-gradient(90deg, var(--n-accent), var(--n-scene-cyan), #fff1d0);
1692
+ transform-origin: left center;
1693
+ }
1694
+
1695
+ .ssc-root[data-design='sunset'] .ssc-stage-copy {
1696
+ max-width: 48rem;
1697
+ text-align: left;
1698
+ }
1699
+
1700
+ .ssc-root[data-design='sunset'] .ssc-stage-message {
1701
+ color: #fff1d0;
1702
+ font-size: clamp(1.3rem, 3.3vw, 2.5rem);
1703
+ }
1704
+
1705
+ @keyframes ssc-wave {
1706
+ 0% {
1707
+ opacity: .75;
1708
+ transform: scale(.72);
1709
+ }
1710
+
1711
+ 75%,
1712
+ 100% {
1713
+ opacity: 0;
1714
+ transform: scale(1.14);
1715
+ }
1716
+ }
1717
+
1718
+ @media (prefers-reduced-motion: reduce) {
1719
+ .ssc-root[data-design='pulse'] .ssc-alt-progress::before,
1720
+ .ssc-root[data-design='pulse'] .ssc-alt-progress::after {
1721
+ animation: none;
1722
+ }
1723
+ }
1724
+
1725
+ @media (max-width: 800px) {
1726
+ .ssc-design-gallery {
1727
+ grid-template-columns: repeat(5, minmax(4rem, 1fr));
1728
+ overflow-x: auto;
1729
+ }
1730
+
1731
+ .ssc-preview-strip {
1732
+ margin-top: .5rem;
1733
+ }
1734
+
1735
+ .ssc-root[data-design='sunset'] .ssc-stage-main {
1736
+ align-items: center;
1737
+ text-align: center;
1738
+ }
1739
+
1740
+ .ssc-root[data-design='sunset'] .ssc-dial-content,
1741
+ .ssc-root[data-design='sunset'] .ssc-stage-copy {
1742
+ align-items: center;
1743
+ text-align: center;
1744
+ }
1745
+ }