PluginProbe
PowerPress Podcasting plugin by Blubrry / 11.17.4
PowerPress Podcasting plugin by Blubrry v11.17.4
11.17.9 11.17.8 11.17.7 11.17.6 11.17.4 11.17.3 11.17.2 11.17.1 11.17 11.16.11 11.16.10 11.16.9 11.16.8 11.16.7 11.16.6 11.16.5 11.16.4 11.16.3 11.16.2 11.16.1 11.9.13 11.9.14 11.9.15 11.9.16 11.9.17 All 383 releases
powerpress / css / components / stats-widget.css

stats-widget.css in PowerPress Podcasting plugin by Blubrry 11.17.4, at css/components/stats-widget.css

966 lines 19.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* ================================
2 PP-STATS-WIDGET Component
3 ================================
4
5 stats display widget for settings welcome and dashboard
6
7 requires: css/variables.css
8
9 TABLE OF CONTENTS
10 -----------------
11 0. ACCESSIBILITY
12 1. CONTAINER
13 2. ERROR STATE
14 3. HEADER
15 4. CHART
16 5. SUMMARY
17 6. FOOTER ACTIONS
18 7. EMPTY STATE
19 8. LOADING STATES
20 9. INLINE SELECTOR
21 10. STACKED LAYOUT
22 11. DASHBOARD OVERRIDES
23
24 BEM Block: .pp-stats-widget
25 Elements: __canvas, __header, __chart, __summary, __error
26 Modifiers: --loading, --skeleton
27
28 ================================ */
29
30
31 /* ===================
32 0. ACCESSIBILITY
33 =================== */
34
35 .pp-screen-reader-text {
36 border: 0;
37 clip: rect(1px, 1px, 1px, 1px);
38 clip-path: inset(50%);
39 height: 1px;
40 margin: -1px;
41 overflow: hidden;
42 padding: 0;
43 position: absolute;
44 width: 1px;
45 word-wrap: normal !important;
46 }
47
48
49 /* ===============
50 1. CONTAINER
51 =============== */
52
53 #pp-stats-widget {
54 position: relative;
55 }
56
57 #pp-stats-widget .spinner {
58 position: absolute;
59 top: 5px;
60 right: 5px;
61 float: none;
62 margin: 0;
63 }
64
65 .pp-stats-row {
66 align-items: center;
67 }
68
69
70 /* ================
71 2. ERROR STATE
72 ================ */
73
74 .pp-stats-error-selector {
75 max-width: 300px;
76 margin-bottom: 15px;
77 }
78
79 .pp-stats-error-selector select {
80 width: 100%;
81 padding: 8px;
82 color: var(--pp-color-primary);
83 font-weight: 600;
84 }
85
86 .pp-stats-error-selector option:disabled {
87 color: var(--pp-color-gray-500);
88 font-style: italic;
89 }
90
91 .pp-stats-error-message {
92 padding: 20px 0;
93 }
94
95
96 /* =============
97 3. HEADER
98 ============= */
99
100 .pp-stats-header {
101 display: flex;
102 flex-wrap: wrap;
103 align-items: center;
104 justify-content: space-between;
105 gap: 8px 16px;
106 padding: 12px 0;
107 margin-bottom: 8px;
108 border-bottom: 1px solid var(--pp-color-gray-200);
109 }
110
111 .pp-stats-header-left {
112 display: flex;
113 align-items: center;
114 gap: 4px;
115 flex-wrap: wrap;
116 position: relative;
117 min-width: 0;
118 }
119
120 .pp-stats-title {
121 margin: 0;
122 font-size: 13px;
123 font-weight: 600;
124 color: var(--pp-color-gray-900);
125 display: flex;
126 align-items: center;
127 flex-wrap: wrap;
128 gap: 0;
129 min-width: 0;
130 }
131
132 .pp-stats-title-text {
133 flex-shrink: 0;
134 }
135
136 /* inline program selector trigger */
137 .pp-program-selector-trigger {
138 display: inline-flex;
139 align-items: center;
140 gap: 2px;
141 margin-left: 6px;
142 padding: 2px 4px;
143 background: none;
144 border: none;
145 border-bottom: 2px solid var(--pp-color-primary);
146 border-radius: 0;
147 font-size: 13px;
148 font-weight: 600;
149 color: var(--pp-color-primary);
150 cursor: pointer;
151 transition: border-color 0.15s, color 0.15s;
152 min-width: 0;
153 max-width: 100%;
154 }
155
156 .pp-program-selector-name {
157 overflow: hidden;
158 text-overflow: ellipsis;
159 white-space: nowrap;
160 }
161
162 .pp-program-selector-trigger:hover {
163 color: var(--pp-color-primary-dark, #5b21b6);
164 border-bottom-color: var(--pp-color-primary-dark, #5b21b6);
165 }
166
167 .pp-program-selector-trigger .dashicons {
168 font-size: 16px;
169 width: 16px;
170 height: 16px;
171 line-height: 16px;
172 transition: transform 0.2s;
173 }
174
175 .pp-program-selector-trigger.pp-open .dashicons {
176 transform: rotate(180deg);
177 }
178
179 /* program selector dropdown */
180 .pp-program-selector-dropdown {
181 position: absolute;
182 top: 100%;
183 left: 0;
184 margin-top: 4px;
185 min-width: 200px;
186 max-width: 300px;
187 max-height: 0;
188 overflow: hidden;
189 background: #fff;
190 border: 1px solid transparent;
191 border-radius: 6px;
192 box-shadow: 0 4px 12px rgba(0, 0, 0, 0);
193 z-index: 100;
194 opacity: 0;
195 transform: translateY(-8px);
196 transition: max-height 0.25s ease, opacity 0.2s ease, transform 0.2s ease,
197 box-shadow 0.2s ease, border-color 0.2s ease;
198 pointer-events: none;
199 }
200
201 .pp-program-selector-dropdown.pp-open {
202 max-height: 300px;
203 overflow-y: auto;
204 opacity: 1;
205 transform: translateY(0);
206 border-color: var(--pp-color-gray-200);
207 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
208 pointer-events: auto;
209 }
210
211 .pp-program-selector-list {
212 list-style: none;
213 margin: 0;
214 padding: 4px 0;
215 }
216
217 .pp-program-selector-item {
218 display: block;
219 width: 100%;
220 padding: 8px 12px;
221 background: none;
222 border: none;
223 text-align: left;
224 font-size: 14px;
225 color: var(--pp-color-gray-800);
226 cursor: pointer;
227 transition: background 0.1s;
228 }
229
230 .pp-program-selector-item:hover {
231 background: var(--pp-color-gray-100);
232 }
233
234 .pp-program-selector-item--active {
235 color: var(--pp-color-primary);
236 font-weight: 600;
237 background: var(--pp-color-primary-light, #f3e8ff);
238 }
239
240 .pp-program-selector-item--disabled {
241 color: var(--pp-color-gray-400);
242 cursor: not-allowed;
243 }
244
245 .pp-program-selector-item-note {
246 display: block;
247 font-size: 11px;
248 color: var(--pp-color-gray-400);
249 font-style: italic;
250 }
251
252 .pp-program-selector-divider {
253 height: 1px;
254 margin: 4px 0;
255 background: var(--pp-color-gray-200);
256 }
257
258 .pp-stats-header-controls {
259 display: flex;
260 flex-wrap: wrap;
261 align-items: center;
262 gap: 6px;
263 }
264
265 /* legacy selector (kept for fallback) */
266 .pp-stats-program-selector {
267 min-width: 140px;
268 max-width: 200px;
269 }
270
271 .pp-stats-program-selector select {
272 width: 100%;
273 padding: 4px 24px 4px 8px;
274 font-size: 13px;
275 text-overflow: ellipsis;
276 overflow: hidden;
277 white-space: nowrap;
278 border: 1px solid var(--pp-color-gray-300);
279 border-radius: 4px;
280 color: var(--pp-color-gray-800);
281 }
282
283 /* Blubrry button base */
284 .pp-stats-btn {
285 display: inline-flex;
286 align-items: center;
287 justify-content: center;
288 gap: 6px;
289 padding: 0 14px;
290 height: 34px;
291 min-height: 34px;
292 background: #fff;
293 color: var(--pp-color-gray-700);
294 border: 1px solid var(--pp-color-gray-300);
295 border-radius: 6px;
296 text-decoration: none;
297 font-size: 13px;
298 font-weight: 500;
299 cursor: pointer;
300 transition: all 0.15s ease;
301 box-sizing: border-box;
302 }
303
304 .pp-stats-btn:hover {
305 background: var(--pp-color-gray-50);
306 border-color: var(--pp-color-gray-400);
307 color: var(--pp-color-gray-900);
308 }
309
310 .pp-stats-btn .dashicons {
311 font-size: 16px;
312 width: 16px;
313 height: 16px;
314 line-height: 16px;
315 }
316
317 /* Primary button (New Episode) */
318 .pp-stats-btn--primary {
319 background: linear-gradient(135deg, #0073aa 0%, #005a87 100%);
320 border: none;
321 color: #fff;
322 font-weight: 600;
323 box-shadow: 0 1px 3px rgba(0, 90, 135, 0.3);
324 }
325
326 .pp-stats-btn--primary:hover {
327 background: linear-gradient(135deg, #005a87 0%, #004466 100%);
328 color: #fff;
329 box-shadow: 0 2px 6px rgba(0, 90, 135, 0.4);
330 }
331
332 .pp-stats-btn--primary .dashicons {
333 color: #fff;
334 }
335
336
337 /* Cog button */
338 .pp-stats-cog-btn {
339 padding: 0;
340 width: 34px;
341 }
342
343 .pp-stats-cog-btn:hover {
344 background: var(--pp-color-gray-100);
345 border-color: var(--pp-color-primary);
346 color: var(--pp-color-primary);
347 }
348
349 .pp-stats-cog-btn:hover .dashicons {
350 transform: rotate(45deg);
351 }
352
353 .pp-stats-cog-btn .dashicons {
354 transition: transform 0.2s ease;
355 }
356
357 .pp-stats-cog-btn.pp-open {
358 background: linear-gradient(135deg, #0073aa 0%, #005a87 100%);
359 border-color: transparent;
360 color: #fff;
361 }
362
363 .pp-stats-cog-btn.pp-open:hover {
364 background: linear-gradient(135deg, #005a87 0%, #004466 100%);
365 color: #fff;
366 }
367
368 .pp-stats-cog-btn.pp-open .dashicons {
369 color: #fff;
370 }
371
372 /* Legacy header button (kept for compatibility) */
373 .pp-stats-header-btn {
374 display: inline-flex;
375 align-items: center;
376 justify-content: center;
377 gap: 4px;
378 padding: 0 10px;
379 height: 32px;
380 min-height: 32px;
381 background: var(--pp-color-gray-100);
382 color: var(--pp-color-gray-900);
383 border: 1px solid var(--pp-wp-border);
384 border-radius: 4px;
385 text-decoration: none;
386 font-size: 13px;
387 font-weight: 500;
388 cursor: pointer;
389 transition: background 0.15s, border-color 0.15s;
390 box-sizing: border-box;
391 }
392
393 .pp-stats-header-btn:hover {
394 background: var(--pp-wp-bg-hover);
395 border-color: var(--pp-wp-border-hover);
396 color: var(--pp-color-gray-900);
397 }
398
399 .pp-stats-header-btn .dashicons {
400 font-size: 18px;
401 width: 18px;
402 height: 18px;
403 line-height: 18px;
404 }
405
406 @media (max-width: 600px) {
407 .pp-stats-header {
408 gap: 6px 10px;
409 }
410 .pp-stats-header-left {
411 flex: 1;
412 }
413 }
414
415 @media (max-width: 480px) {
416 .pp-stats-header {
417 padding-top: 0;
418 margin-bottom: 4px;
419 }
420 }
421
422
423 /* ============
424 4. CHART
425 ============ */
426
427 .pp-stats-chart {
428 position: relative;
429 display: block;
430 width: 100%;
431 height: 220px;
432 padding: 12px;
433 background: linear-gradient(135deg, #e8daff 0%, #d9ebff 100%);
434 border-radius: 8px;
435 }
436
437 /* let Chart.js handle canvas sizing for proper HiDPI rendering */
438 #pp-stats-widget__canvas {
439 display: block;
440 }
441
442 /* inline settings row (expandable) */
443 .pp-stats-settings-row {
444 display: flex;
445 flex-direction: column;
446 gap: 0;
447 padding: 0;
448 border-bottom: 1px solid var(--pp-color-gray-200);
449 animation: pp-slideDown 0.2s ease;
450 }
451
452 @keyframes pp-slideDown {
453 from {
454 opacity: 0;
455 transform: translateY(-8px);
456 }
457 to {
458 opacity: 1;
459 transform: translateY(0);
460 }
461 }
462
463 .pp-stats-settings-line {
464 display: flex;
465 align-items: center;
466 gap: 12px;
467 padding: 8px 12px;
468 border-bottom: 1px solid var(--pp-color-gray-100);
469 }
470
471 .pp-stats-settings-line:last-child {
472 border-bottom: none;
473 }
474
475 /* TOGGLE GROUP */
476
477 .pp-stats-toggle-group {
478 display: inline-flex;
479 border-radius: 6px;
480 overflow: hidden;
481 background: var(--pp-color-gray-100, #f3f4f6);
482 }
483
484 .pp-stats-toggle {
485 display: flex;
486 align-items: center;
487 justify-content: center;
488 min-width: 56px;
489 padding: 5px 12px;
490 min-height: 28px;
491 font-size: 12px;
492 font-weight: 500;
493 color: var(--pp-color-gray-600);
494 cursor: pointer;
495 background: transparent;
496 transition: background 0.15s, color 0.15s;
497 user-select: none;
498 }
499
500 .pp-stats-toggle input {
501 position: absolute;
502 opacity: 0;
503 width: 0;
504 height: 0;
505 }
506
507 /* active state for radios */
508 .pp-stats-toggle:has(input[type="radio"]:checked) {
509 background: var(--pp-color-primary-soft, #6B9AE8);
510 color: #fff;
511 border-radius: 5px;
512 box-shadow: 0 1px 2px rgba(0,0,0,0.08);
513 }
514
515 /* active state for checkboxes */
516 .pp-stats-toggle:has(input[type="checkbox"]:checked) {
517 background: var(--pp-color-primary-soft, #6B9AE8);
518 color: #fff;
519 border-radius: 5px;
520 box-shadow: 0 1px 2px rgba(0,0,0,0.08);
521 }
522
523 /* hover states */
524 .pp-stats-toggle:hover:not(:has(input:checked)) {
525 background: var(--pp-color-gray-200, #e5e7eb);
526 }
527
528 /* checkbox group: same style but with gaps */
529 .pp-stats-toggle-group--checkboxes {
530 gap: 6px;
531 background: transparent;
532 }
533
534 .pp-stats-toggle-group--checkboxes .pp-stats-toggle {
535 background: var(--pp-color-gray-100, #f3f4f6);
536 border-radius: 5px;
537 min-width: 52px;
538 }
539
540 /* MOBILE: larger touch targets */
541 @media (max-width: 782px) {
542 .pp-stats-toggle {
543 min-height: 44px;
544 padding: 10px 14px;
545 font-size: 13px;
546 }
547 .pp-stats-settings-line {
548 flex-wrap: wrap;
549 gap: 8px;
550 }
551 }
552
553 .pp-stats-setting-divider {
554 width: 1px;
555 height: 16px;
556 background: var(--pp-color-gray-300);
557 margin: 0 4px;
558 }
559
560 .pp-stats-setting-group {
561 display: flex;
562 align-items: center;
563 gap: 8px;
564 }
565
566 .pp-stats-setting-label {
567 font-size: 12px;
568 font-weight: 600;
569 color: var(--pp-color-gray-500);
570 text-transform: uppercase;
571 letter-spacing: 0.5px;
572 min-width: 45px;
573 }
574
575 .pp-stats-refresh-btn {
576 display: flex;
577 align-items: center;
578 gap: 6px;
579 padding: 6px 12px;
580 background: none;
581 border: 1px solid var(--pp-color-gray-300);
582 border-radius: 4px;
583 font-size: 13px;
584 color: var(--pp-color-gray-600);
585 cursor: pointer;
586 transition: background 0.15s, border-color 0.15s, color 0.15s;
587 white-space: nowrap;
588 }
589
590 .pp-stats-refresh-btn:hover {
591 background: var(--pp-color-gray-100);
592 border-color: var(--pp-color-gray-400);
593 color: var(--pp-color-gray-800);
594 }
595
596 .pp-stats-refresh-btn .dashicons {
597 font-size: 14px;
598 width: 14px;
599 height: 14px;
600 line-height: 14px;
601 }
602
603 .pp-stats-refresh-btn.pp-refreshing .dashicons {
604 animation: pp-spin 1s linear infinite;
605 }
606
607 .pp-stats-refresh-btn:disabled {
608 color: var(--pp-color-gray-400);
609 border-color: var(--pp-color-gray-300);
610 cursor: not-allowed;
611 pointer-events: none;
612 }
613
614 /* refresh button (legacy, kept for compatibility) */
615 .pp-stats-refresh-circle {
616 display: flex;
617 align-items: center;
618 justify-content: center;
619 width: 28px;
620 height: 28px;
621 padding: 0;
622 border: none;
623 border-radius: 50%;
624 background: transparent;
625 cursor: pointer;
626 color: var(--pp-color-gray-500);
627 transition: color 0.2s, background 0.2s;
628 }
629
630 .pp-stats-refresh-circle:hover {
631 background: var(--pp-color-gray-100);
632 color: var(--pp-color-primary);
633 }
634
635 .pp-stats-refresh-circle:disabled {
636 opacity: 0.5;
637 cursor: not-allowed;
638 }
639
640 .pp-stats-refresh-circle .dashicons {
641 font-size: 16px;
642 width: 16px;
643 height: 16px;
644 line-height: 16px;
645 }
646
647 .pp-stats-refresh-circle.pp-refreshing .dashicons {
648 animation: pp-spin 1s linear infinite;
649 }
650
651 @keyframes pp-spin {
652 from { transform: rotate(0deg); }
653 to { transform: rotate(360deg); }
654 }
655
656
657 /* ==============
658 5. SUMMARY
659 ============== */
660
661 .pp-stats-summary {
662 display: block;
663 width: 100%;
664 }
665
666 .pp-stats-summary__table {
667 width: 100%;
668 background-color: white;
669 border: none;
670 border-radius: 0;
671 margin-bottom: 10px;
672 }
673
674 .pp-stats-summary__item {
675 border-top: 1px solid var(--pp-border-light);
676 line-height: 1.4;
677 }
678
679 .pp-stats-summary__item--first .pp-stats-summary__data {
680 color: var(--pp-stats-today, #AB47BC);
681 }
682
683 .pp-stats-summary__item:nth-child(2) .pp-stats-summary__data {
684 color: var(--pp-stats-average, #42A5F5);
685 }
686
687 .pp-stats-summary__item:nth-child(3) .pp-stats-summary__data {
688 color: var(--pp-stats-total, #66BB6A);
689 }
690
691 .pp-stats-summary__label {
692 color: var(--pp-color-gray-900);
693 font-weight: bold;
694 text-align: left;
695 border: none;
696 font-size: 14px;
697 white-space: nowrap;
698 padding: 8px 12px 8px 0;
699 }
700
701 .pp-stats-summary__data {
702 color: var(--pp-color-navy);
703 text-align: right;
704 font-weight: bold;
705 border: none;
706 font-size: 14px;
707 white-space: nowrap;
708 padding: 8px 0 8px 12px;
709 }
710
711 .pp-stats-summary__icon {
712 display: inline-block;
713 margin-left: 4px;
714 vertical-align: middle;
715 }
716
717 .pp-stats-summary__icon img {
718 width: 14px;
719 height: 14px;
720 }
721
722 @media (max-width: 1200px) {
723 .pp-stats-summary__label,
724 .pp-stats-summary__data {
725 font-size: 13px;
726 }
727 .pp-stats-summary__icon img {
728 width: 12px;
729 height: 12px;
730 }
731 }
732
733 @media (max-width: 960px) {
734 .pp-stats-summary__label,
735 .pp-stats-summary__data {
736 font-size: 12px;
737 }
738 .pp-stats-summary__icon img {
739 width: 11px;
740 height: 11px;
741 }
742 }
743
744 @media (max-width: 782px) {
745 .pp-stats-summary__label,
746 .pp-stats-summary__data {
747 font-size: 11px;
748 }
749 .pp-stats-summary__icon img {
750 width: 10px;
751 height: 10px;
752 }
753 }
754
755 @media (max-width: 480px) {
756 .pp-stats-summary__label,
757 .pp-stats-summary__data {
758 font-size: 14px;
759 }
760 .pp-stats-summary__icon img {
761 width: 12px;
762 height: 12px;
763 }
764 }
765
766
767 /* ==================
768 6. FOOTER ACTIONS
769 ================== */
770
771 /* container for side-by-side buttons */
772 .pp-stats-footer-actions {
773 display: flex;
774 gap: 8px;
775 margin-top: 12px;
776 }
777
778 .pp-stats-footer-actions .pp-stats-btn {
779 flex: 1;
780 text-align: center;
781 height: auto;
782 min-height: 34px;
783 padding: 5px 12px;
784 }
785
786 /* secondary button (outline style matching primary colors) */
787 .pp-stats-btn--secondary {
788 background: var(--pp-color-primary-light, #e8f4fc);
789 border: 1px solid var(--pp-color-primary, #0073aa);
790 color: var(--pp-color-primary, #0073aa);
791 font-weight: 600;
792 }
793
794 .pp-stats-btn--secondary:hover {
795 background: var(--pp-color-primary, #0073aa);
796 color: #fff;
797 border-color: var(--pp-color-primary, #0073aa);
798 }
799
800 /* stack on mobile */
801 @media (max-width: 480px) {
802 .pp-stats-footer-actions {
803 flex-direction: column;
804 }
805
806 /* tap feedback for touch devices */
807 .pp-stats-footer-actions .pp-stats-btn--primary:active {
808 background: linear-gradient(135deg, #005a87 0%, #004466 100%);
809 transform: scale(0.98);
810 }
811
812 .pp-stats-footer-actions .pp-stats-btn--secondary:active {
813 background: var(--pp-color-primary, #0073aa);
814 color: #fff;
815 transform: scale(0.98);
816 }
817 }
818
819
820 /* ================
821 7. EMPTY STATE
822 ================ */
823
824 .pp-stats-empty-message {
825 color: var(--pp-color-gray-600);
826 font-size: 12px;
827 font-style: italic;
828 text-align: center;
829 margin: 8px 0;
830 padding: 0;
831 }
832
833
834 /* ===================
835 8. LOADING STATES
836 =================== */
837
838 .pp-stats-loading {
839 opacity: 0.5;
840 pointer-events: none;
841 }
842
843 .pp-stats-skeleton {
844 opacity: 0.7;
845 }
846
847 .pp-skeleton-chart {
848 width: 100%;
849 height: 200px;
850 background: linear-gradient(90deg, var(--pp-skeleton-light) 25%, var(--pp-skeleton-mid) 50%, var(--pp-skeleton-light) 75%);
851 background-size: 200% 100%;
852 animation: pp-skeleton-shimmer 3.0s infinite;
853 border-radius: 4px;
854 }
855
856 .pp-skeleton-line {
857 height: 20px;
858 margin-bottom: 12px;
859 background: linear-gradient(90deg, var(--pp-skeleton-light) 25%, var(--pp-skeleton-mid) 50%, var(--pp-skeleton-light) 75%);
860 background-size: 200% 100%;
861 animation: pp-skeleton-shimmer 3.0s infinite;
862 border-radius: 4px;
863 }
864
865 .pp-skeleton-line-short {
866 width: 60%;
867 }
868
869 @keyframes pp-skeleton-shimmer {
870 0% {
871 background-position: 200% 0;
872 }
873 100% {
874 background-position: -200% 0;
875 }
876 }
877
878
879 /* ====================
880 9. INLINE SELECTOR
881 ==================== */
882
883 .pp-stats-program-selector-inline {
884 width: 100%;
885 margin-bottom: 10px;
886 }
887
888 .pp-stats-program-selector-inline select {
889 width: 100%;
890 padding: 8px;
891 color: var(--pp-color-primary);
892 font-weight: 600;
893 }
894
895 .pp-stats-program-selector-inline option:disabled {
896 color: var(--pp-color-gray-500);
897 font-style: italic;
898 }
899
900
901 /* ====================
902 10. STACKED LAYOUT
903 ====================
904
905 single-column stacked layout for dashboard widget */
906
907 .pp-stats-stacked {
908 display: flex;
909 flex-direction: column;
910 gap: 12px;
911 }
912
913 .pp-stats-stacked .pp-stats-chart {
914 height: 200px;
915 padding: 10px;
916 }
917
918 .pp-stats-stacked .pp-stats-summary {
919 padding: 0;
920 }
921
922
923 /* ===========================
924 11. DASHBOARD OVERRIDES
925 ===========================
926
927 additional dashboard-specific tweaks */
928
929 #powerpress_dashboard_stats .pp-stats-header {
930 flex-wrap: nowrap;
931 gap: 8px;
932 padding: 8px 0;
933 }
934
935 #powerpress_dashboard_stats .pp-stats-header-left {
936 flex: 1;
937 }
938
939 #powerpress_dashboard_stats .pp-stats-header-controls {
940 flex-shrink: 0;
941 gap: 6px;
942 }
943
944 /* Compact buttons for dashboard */
945 #powerpress_dashboard_stats .pp-stats-btn {
946 height: 28px;
947 min-height: 28px;
948 padding: 0 10px;
949 font-size: 12px;
950 }
951
952 #powerpress_dashboard_stats .pp-stats-cog-btn {
953 width: 28px;
954 }
955
956 #powerpress_dashboard_stats .pp-stats-program-selector {
957 flex: 1;
958 min-width: 0;
959 max-width: none;
960 }
961
962 #powerpress_dashboard_stats .pp-stats-footer-actions {
963 gap: 6px;
964 margin-top: 10px;
965 }
966