PluginProbe
StreamCast – bring live radio to your site with a sleek player / trunk
StreamCast – bring live radio to your site with a sleek player vtrunk
2.4.5 2.4.4 trunk 1.0 1.1 2.0.0 2.1.10 2.1.2 2.1.4 2.1.5 2.1.8 2.2.1 2.2.3 2.2.4 2.2.5 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 All 29 releases
streamcast / assets / admin.css

admin.css in StreamCast – bring live radio to your site with a sleek player trunk, at assets/admin.css

697 lines 15.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* Upgrade menu item */
2 .fs-submenu-item.streamcast.pricing.upgrade-mode {
3 background: #39920D;
4 border-radius: 0;
5 color: #ffffff;
6 display: inline-block;
7 padding: 6px 40px 6px 15px;
8 }
9
10 /* ============================================================
11 The edit screen, as one system: the side column cards (Where
12 It Plays / Pro tuner), the shortcode rail under the title, and
13 the locked-in-free bank inside the settings form.
14
15 Three voices, ranked loudest to quietest: the side column's
16 solid head bar, the rail's single blue button, the bank's pale
17 chip header. Same 3px radius on the same hairline throughout,
18 same monospace label at the same tracking.
19
20 The side column cards draw their own surface, so the postbox
21 chrome is stripped. Hiding .postbox-header also removes the
22 toggle and drag handle, which keeps them open and in place.
23
24 Every surface reads from a custom property, so recoloring the
25 whole family is a matter of editing the token block below and
26 nothing else. Current palette: Blue Bar (#226DF5).
27 ============================================================ */
28
29 .streamcast-bay,
30 .streamcast-tuner,
31 .streamcast-tuner__body,
32 .streamcast-rail,
33 .streamcast-marquee {
34 --sc-head-bg: #226df5;
35 --sc-head-fg: #ffffff;
36 --sc-head-count: #ffffff;
37 --sc-head-line: #1a56c4;
38 --sc-card-line: #c3c4c7;
39 --sc-native-bg: #ffffff;
40 --sc-native-fg: #1d2327;
41 --sc-native-sub: #226df5;
42 --sc-native-line: #e6e6e8;
43 --sc-jack: #226df5;
44 --sc-jack-glow: rgba(34, 109, 245, 0.3);
45 --sc-jack-sm: #a7b0bd;
46 --sc-chip-bg: #e8f0fe;
47 --sc-chip-fg: #1a4fb0;
48 --sc-chip-line: #cfe0fd;
49 --sc-mq-from: #1b5fdd;
50 --sc-mq-mid: #2a76fa;
51 --sc-mq-to: #3a80f7;
52 --sc-mq-line: rgba(255, 255, 255, 0.22);
53 --sc-mq-fg: #ffffff;
54 --sc-mq-sub: rgba(255, 255, 255, 0.85);
55 --sc-mq-chip-bg: rgba(255, 255, 255, 0.16);
56 --sc-mq-chip-line: rgba(255, 255, 255, 0.24);
57 --sc-rail-bg: #f6f7f7;
58 --sc-rail-fg: #1d2327;
59 --sc-rail-line: #dcdcde;
60 --sc-rail-arrow: #8c8f94;
61 --sc-rail-copied: #007017;
62 --sc-scale-bg: #226df5;
63 --sc-scale-line: #1a56c4;
64 --sc-tick: rgba(255, 255, 255, 0.32);
65 --sc-tick-major: rgba(255, 255, 255, 0.72);
66 --sc-needle: #ffd166;
67 --sc-needle-glow: rgba(255, 209, 102, 0.7);
68 --sc-scale-fg: #ffffff;
69 --sc-scale-on: #ffffff;
70 --sc-cta-bg: #226df5;
71 --sc-cta-bg-hover: #1a56c4;
72 --sc-cta-fg: #ffffff;
73 }
74
75 #poststuff .streamcast-flat-box {
76 border: none;
77 background: transparent;
78 box-shadow: none;
79 margin-bottom: 16px;
80 }
81
82 #poststuff .streamcast-flat-box .postbox-header {
83 display: none;
84 }
85
86 #poststuff .streamcast-flat-box .inside {
87 margin: 0;
88 padding: 0;
89 }
90
91 /* ---------- Where It Plays ---------- */
92
93 .streamcast-bay {
94 border: 1px solid var(--sc-card-line);
95 border-radius: 3px;
96 overflow: hidden;
97 background: #ffffff;
98 }
99
100 .streamcast-bay__top {
101 display: flex;
102 align-items: center;
103 gap: 8px;
104 padding: 9px 11px;
105 background: var(--sc-head-bg);
106 border-bottom: 1px solid var(--sc-head-line);
107 }
108
109 .streamcast-bay__lbl {
110 font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
111 font-size: 9.5px;
112 font-weight: 600;
113 letter-spacing: 0.16em;
114 text-transform: uppercase;
115 color: var(--sc-head-fg);
116 }
117
118 .streamcast-bay__count {
119 margin-left: auto;
120 font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
121 font-size: 10px;
122 font-weight: 400;
123 font-variant-numeric: tabular-nums;
124 color: var(--sc-head-count);
125 }
126
127 /* The patch jack: shared by the bay, the shortcode rail, and the builder grid. */
128
129 .streamcast-jack {
130 display: block;
131 width: 13px;
132 height: 13px;
133 border-radius: 50%;
134 flex: none;
135 background: #ffffff;
136 border: 2px solid var(--sc-jack);
137 box-shadow: 0 0 0 3px var(--sc-jack-glow);
138 }
139
140 .streamcast-jack--sm {
141 width: 9px;
142 height: 9px;
143 border-width: 1.5px;
144 border-color: var(--sc-jack-sm);
145 box-shadow: none;
146 }
147
148 .streamcast-bay__native {
149 display: flex;
150 align-items: center;
151 gap: 10px;
152 padding: 10px 11px;
153 background: var(--sc-native-bg);
154 border-bottom: 1px solid var(--sc-native-line);
155 }
156
157 .streamcast-bay__names {
158 display: block;
159 min-width: 0;
160 }
161
162 .streamcast-bay__n1 {
163 display: block;
164 font-size: 12.5px;
165 font-weight: 600;
166 line-height: 1.3;
167 color: var(--sc-native-fg);
168 }
169
170 .streamcast-bay__n2 {
171 display: block;
172 font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
173 font-size: 9px;
174 letter-spacing: 0.12em;
175 text-transform: uppercase;
176 color: var(--sc-native-sub);
177 margin-top: 1px;
178 }
179
180 .streamcast-bay__chip {
181 margin-left: auto;
182 font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
183 font-size: 8.5px;
184 font-weight: 600;
185 letter-spacing: 0.1em;
186 text-transform: uppercase;
187 color: var(--sc-chip-fg);
188 background: var(--sc-chip-bg);
189 padding: 3px 6px;
190 border-radius: 2px;
191 white-space: nowrap;
192 }
193
194 .streamcast-bay__rail {
195 display: flex;
196 align-items: center;
197 gap: 7px;
198 width: 100%;
199 margin: 0;
200 padding: 7px 11px;
201 background: var(--sc-rail-bg);
202 border: none;
203 border-bottom: 1px solid var(--sc-rail-line);
204 border-radius: 0;
205 cursor: pointer;
206 text-align: left;
207 transition: background 0.15s ease-in-out;
208 }
209
210 .streamcast-bay__rail:hover,
211 .streamcast-bay__rail:focus {
212 background: #eef1f3;
213 outline: none;
214 }
215
216 .streamcast-bay__rail:focus-visible {
217 box-shadow: inset 0 0 0 2px var(--sc-jack);
218 }
219
220 .streamcast-bay__code {
221 flex: 1;
222 min-width: 0;
223 font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
224 font-size: 10.5px;
225 color: var(--sc-rail-fg);
226 white-space: nowrap;
227 overflow: hidden;
228 text-overflow: ellipsis;
229 }
230
231 .streamcast-bay__rail.copied .streamcast-bay__code {
232 color: var(--sc-rail-copied);
233 font-weight: 600;
234 }
235
236 .streamcast-bay__arrow {
237 flex: none;
238 font-size: 11px;
239 line-height: 1;
240 color: var(--sc-rail-arrow);
241 }
242
243 .streamcast-bay__grid {
244 display: grid;
245 grid-template-columns: 1fr 1fr;
246 gap: 1px;
247 background: #e6e6e8;
248 }
249
250 .streamcast-bay__grid > span {
251 display: flex;
252 align-items: center;
253 gap: 7px;
254 padding: 8px 10px;
255 background: #ffffff;
256 font-size: 11.5px;
257 line-height: 1.3;
258 color: #2c3338;
259 }
260
261 .streamcast-bay__foot {
262 margin: 0;
263 padding: 9px 11px;
264 background: #f6f7f7;
265 border-top: 1px solid #e6e6e8;
266 font-size: 10.5px;
267 line-height: 1.45;
268 color: #646970;
269 }
270
271 /* ---------- Pro tuner ---------- */
272
273 .streamcast-tuner {
274 padding: 12px 12px 9px;
275 background: var(--sc-scale-bg);
276 border: 1px solid var(--sc-card-line);
277 border-bottom: 1px solid var(--sc-scale-line);
278 border-radius: 3px 3px 0 0;
279 }
280
281 .streamcast-tuner__scale {
282 position: relative;
283 height: 24px;
284 }
285
286 .streamcast-tuner__ticks {
287 display: flex;
288 align-items: flex-end;
289 height: 14px;
290 }
291
292 .streamcast-tuner__ticks i {
293 flex: 1;
294 height: 5px;
295 margin-right: 2px;
296 background: var(--sc-tick);
297 }
298
299 .streamcast-tuner__ticks i:nth-child(4n + 1) {
300 height: 11px;
301 background: var(--sc-tick-major);
302 }
303
304 .streamcast-tuner__needle {
305 position: absolute;
306 top: -3px;
307 left: 22%;
308 width: 2px;
309 height: 20px;
310 background: var(--sc-needle);
311 box-shadow: 0 0 8px var(--sc-needle-glow);
312 animation: streamcastSweep 6s ease-in-out infinite alternate;
313 }
314
315 @keyframes streamcastSweep {
316 0% {
317 left: 20%;
318 }
319 100% {
320 left: 26%;
321 }
322 }
323
324 @media (prefers-reduced-motion: reduce) {
325 .streamcast-tuner__needle {
326 animation: none;
327 }
328 }
329
330 .streamcast-tuner__lbl {
331 display: flex;
332 justify-content: space-between;
333 font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
334 font-size: 8.5px;
335 letter-spacing: 0.12em;
336 text-transform: uppercase;
337 font-weight: 400;
338 color: var(--sc-scale-fg);
339 margin-top: 4px;
340 }
341
342 .streamcast-tuner__lbl .on {
343 color: var(--sc-scale-on);
344 font-weight: 600;
345 }
346
347 .streamcast-tuner__body {
348 padding: 12px;
349 background: #ffffff;
350 border: 1px solid var(--sc-card-line);
351 border-top: none;
352 border-radius: 0 0 3px 3px;
353 }
354
355 .streamcast-tuner__body h4 {
356 margin: 0 0 8px;
357 font-size: 13px;
358 font-weight: 600;
359 line-height: 1.35;
360 color: #1d2327;
361 }
362
363 .streamcast-tuner__locks {
364 margin: 0 0 12px;
365 padding: 0;
366 list-style: none;
367 }
368
369 .streamcast-tuner__locks li {
370 display: flex;
371 align-items: center;
372 gap: 7px;
373 padding: 4px 0;
374 font-size: 11.5px;
375 line-height: 1.35;
376 color: #50575e;
377 }
378
379 .streamcast-tuner__locks svg {
380 flex: none;
381 color: #8c8f94;
382 }
383
384 .streamcast-tuner__cta {
385 display: block;
386 padding: 8px;
387 background: var(--sc-cta-bg);
388 border-radius: 2px;
389 color: var(--sc-cta-fg);
390 font-size: 12px;
391 font-weight: 600;
392 text-align: center;
393 text-decoration: none;
394 }
395
396 .streamcast-tuner__cta:hover,
397 .streamcast-tuner__cta:focus {
398 background: var(--sc-cta-bg-hover);
399 color: var(--sc-cta-fg);
400 box-shadow: none;
401 }
402
403 .streamcast-tuner__foot {
404 margin: 7px 0 0;
405 font-size: 10.5px;
406 text-align: center;
407 color: #787c82;
408 }
409
410 /* ---------- Shortcode rail (edit_form_after_title) ---------- */
411
412 .streamcast-rail-box {
413 margin-top: 12px;
414 }
415
416 .streamcast-rail {
417 display: flex;
418 align-items: stretch;
419 background: #ffffff;
420 border: 1px solid var(--sc-card-line);
421 border-radius: 3px;
422 overflow: hidden;
423 }
424
425 .streamcast-rail__slot {
426 display: flex;
427 align-items: center;
428 gap: 8px;
429 flex: none;
430 padding: 0 13px;
431 background: var(--sc-rail-bg);
432 border-right: 1px solid var(--sc-rail-line);
433 }
434
435 .streamcast-rail__lbl {
436 font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
437 font-size: 9.5px;
438 font-weight: 600;
439 letter-spacing: 0.16em;
440 text-transform: uppercase;
441 color: #50575e;
442 white-space: nowrap;
443 }
444
445 /* The margin and ground reset are core's `code` styles, which would
446 otherwise put a grey chip around the shortcode. */
447 .streamcast-rail__code {
448 flex: 1;
449 min-width: 0;
450 display: flex;
451 align-items: center;
452 margin: 0;
453 padding: 10px 14px;
454 background: #ffffff;
455 font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
456 font-size: 13px;
457 color: var(--sc-rail-fg);
458 white-space: nowrap;
459 overflow: hidden;
460 text-overflow: ellipsis;
461 -webkit-user-select: all;
462 user-select: all;
463 }
464
465 .streamcast-rail__copy {
466 display: flex;
467 align-items: center;
468 gap: 7px;
469 flex: none;
470 margin: 0;
471 padding: 0 16px;
472 background: var(--sc-cta-bg);
473 border: none;
474 border-left: 1px solid var(--sc-head-line);
475 border-radius: 0;
476 color: var(--sc-cta-fg);
477 font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
478 font-size: 10px;
479 font-weight: 600;
480 letter-spacing: 0.12em;
481 text-transform: uppercase;
482 cursor: pointer;
483 transition: background 0.15s ease-in-out;
484 }
485
486 .streamcast-rail__copy:hover,
487 .streamcast-rail__copy:focus {
488 background: var(--sc-cta-bg-hover);
489 color: var(--sc-cta-fg);
490 }
491
492 .streamcast-rail__copy:focus-visible {
493 outline: 2px solid #1d2327;
494 outline-offset: -4px;
495 }
496
497 .streamcast-rail__copy svg {
498 flex: none;
499 }
500
501 /* Set by assets/admin.js, which also swaps the .copy-text label. */
502 .streamcast-rail__copy.copied {
503 background: var(--sc-rail-copied);
504 border-left-color: #005c13;
505 }
506
507 .streamcast-rail__hint {
508 margin: 6px 0 0;
509 padding-left: 2px;
510 font-size: 11.5px;
511 line-height: 1.45;
512 color: #646970;
513 }
514
515 /* ---------- Shut marquee (inside the settings form) ----------
516 Three panels across one blue field: the count as a large amber numeral,
517 the headline plus the setting names as chips, then the call to action.
518
519 The amber is --sc-needle, the same #FFD166 as the side column's tuner
520 needle and the only warm colour in the palette -- which is what lets the
521 numeral carry at a glance without adding a second accent. The vertical
522 pinstripe is the tuner dial's tick rhythm reused as texture.
523
524 Headline and label are divs, not p/h4: #poststuff carries ID-level rules
525 for those elements that would outrank a class selector here. */
526
527 .streamcast-marquee {
528 position: relative;
529 display: flex;
530 align-items: stretch;
531 flex-wrap: wrap;
532 overflow: hidden;
533 border: 1px solid var(--sc-head-line);
534 border-radius: 3px;
535 background: linear-gradient(105deg, var(--sc-mq-from) 0%, var(--sc-mq-mid) 58%, var(--sc-mq-to) 100%);
536 }
537
538 .streamcast-marquee::before {
539 content: "";
540 position: absolute;
541 inset: 0;
542 background: repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.1) 0 1px, transparent 1px 14px);
543 pointer-events: none;
544 }
545
546 /* lift the panels above the pinstripe */
547 .streamcast-marquee > div {
548 position: relative;
549 }
550
551 .streamcast-marquee__count {
552 flex: none;
553 width: 148px;
554 padding: 18px 16px;
555 display: flex;
556 flex-direction: column;
557 justify-content: center;
558 border-right: 1px solid var(--sc-mq-line);
559 }
560
561 .streamcast-marquee__count b {
562 font-size: 52px;
563 font-weight: 800;
564 line-height: 0.9;
565 letter-spacing: -0.04em;
566 color: var(--sc-needle);
567 font-variant-numeric: tabular-nums;
568 }
569
570 .streamcast-marquee__count span {
571 margin-top: 6px;
572 font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
573 font-size: 9px;
574 font-weight: 600;
575 letter-spacing: 0.16em;
576 text-transform: uppercase;
577 color: var(--sc-mq-sub);
578 }
579
580 .streamcast-marquee__body {
581 flex: 1;
582 min-width: 260px;
583 padding: 16px 18px;
584 display: flex;
585 flex-direction: column;
586 gap: 11px;
587 justify-content: center;
588 }
589
590 .streamcast-marquee__hl {
591 font-size: 17px;
592 font-weight: 700;
593 line-height: 1.25;
594 color: var(--sc-mq-fg);
595 }
596
597 .streamcast-marquee__chips {
598 display: flex;
599 flex-wrap: wrap;
600 gap: 6px;
601 }
602
603 .streamcast-marquee__chips span {
604 display: inline-flex;
605 align-items: center;
606 gap: 5px;
607 padding: 3px 8px;
608 background: var(--sc-mq-chip-bg);
609 border: 1px solid var(--sc-mq-chip-line);
610 border-radius: 2px;
611 font-size: 11.5px;
612 line-height: 1.45;
613 color: var(--sc-mq-fg);
614 }
615
616 .streamcast-marquee__chips svg {
617 flex: none;
618 }
619
620 .streamcast-marquee__cta {
621 flex: none;
622 display: flex;
623 align-items: center;
624 padding: 16px 20px;
625 border-left: 1px solid var(--sc-mq-line);
626 }
627
628 .streamcast-marquee__cta a {
629 display: inline-flex;
630 flex-direction: column;
631 align-items: center;
632 gap: 3px;
633 padding: 10px 18px;
634 background: #ffffff;
635 border-radius: 2px;
636 color: var(--sc-chip-fg);
637 font-size: 13px;
638 font-weight: 700;
639 text-align: center;
640 text-decoration: none;
641 transition: background 0.15s ease-in-out;
642 }
643
644 .streamcast-marquee__cta a:hover,
645 .streamcast-marquee__cta a:focus {
646 background: #f0f6ff;
647 color: var(--sc-chip-fg);
648 box-shadow: none;
649 }
650
651 .streamcast-marquee__cta a:focus-visible {
652 outline: 2px solid #ffffff;
653 outline-offset: 2px;
654 }
655
656 .streamcast-marquee__cta a em {
657 font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
658 font-size: 8.5px;
659 font-weight: 600;
660 font-style: normal;
661 letter-spacing: 0.12em;
662 text-transform: uppercase;
663 color: #646970;
664 }
665
666 /* A narrow main column -- WordPress drops the edit screen to one column at
667 this width -- stacks the three panels and shrinks the numeral. */
668 @media screen and (max-width: 850px) {
669 .streamcast-marquee__count {
670 width: 100%;
671 flex-direction: row;
672 align-items: baseline;
673 gap: 10px;
674 padding: 12px 16px;
675 border-right: none;
676 border-bottom: 1px solid var(--sc-mq-line);
677 }
678
679 .streamcast-marquee__count b {
680 font-size: 34px;
681 }
682
683 .streamcast-marquee__count span {
684 margin-top: 0;
685 }
686
687 .streamcast-marquee__cta {
688 width: 100%;
689 padding: 0 16px 16px;
690 border-left: none;
691 }
692
693 .streamcast-marquee__cta a {
694 width: 100%;
695 }
696 }
697