@frameset/plex-player 1.0.3 → 1.0.5

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.
@@ -2,8 +2,9 @@
2
2
  PLEX Video Player - Main Styles
3
3
  ===================================================== */
4
4
 
5
- /* CSS Variables */
6
- :root {
5
+ /* CSS Variables - scoped to player */
6
+ .plex-player,
7
+ .plex-player-container {
7
8
  --plex-primary: #e5a00d;
8
9
  --plex-primary-hover: #f5b82e;
9
10
  --plex-bg-dark: #1a1a1a;
@@ -29,20 +30,24 @@
29
30
  --plex-z-toast: 50;
30
31
  }
31
32
 
32
- /* Reset & Base */
33
- *, *::before, *::after {
33
+ /* Scoped Reset - only inside player */
34
+ .plex-player *,
35
+ .plex-player *::before,
36
+ .plex-player *::after {
34
37
  box-sizing: border-box;
35
38
  margin: 0;
36
39
  padding: 0;
37
40
  }
38
41
 
39
- html, body {
42
+ /* Player Container Wrapper */
43
+ .plex-player-container {
44
+ position: relative;
40
45
  width: 100%;
41
- height: 100%;
46
+ aspect-ratio: 16 / 9;
42
47
  background: var(--plex-bg-darker);
43
- font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
44
- color: var(--plex-text-primary);
48
+ border-radius: var(--plex-radius-md);
45
49
  overflow: hidden;
50
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
46
51
  -webkit-font-smoothing: antialiased;
47
52
  -moz-osx-font-smoothing: grayscale;
48
53
  }
@@ -57,15 +62,18 @@ html, body {
57
62
  user-select: none;
58
63
  -webkit-user-select: none;
59
64
  -webkit-tap-highlight-color: transparent;
65
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
66
+ color: var(--plex-text-primary);
60
67
  }
61
68
 
62
- .plex-player.fullscreen {
69
+ .plex-player.plex-fullscreen {
63
70
  position: fixed;
64
71
  top: 0;
65
72
  left: 0;
66
73
  width: 100vw;
67
74
  height: 100vh;
68
75
  z-index: 9999;
76
+ border-radius: 0;
69
77
  }
70
78
 
71
79
  /* Video Container */
@@ -571,56 +579,38 @@ html, body {
571
579
  }
572
580
 
573
581
  /* =====================================================
574
- PLEX Video Player - Controls Styles
582
+ PLEX Video Player - Controls Styles (NPM Package)
575
583
  ===================================================== */
576
584
 
577
- /* Top Controls Bar */
578
- .top-controls {
579
- position: absolute;
580
- top: 0;
581
- left: 0;
585
+ /* Video Element */
586
+ .plex-video {
582
587
  width: 100%;
583
- display: flex;
584
- align-items: center;
585
- justify-content: space-between;
586
- padding: 16px 20px;
587
- background: var(--plex-gradient-top);
588
- z-index: var(--plex-z-controls);
589
- transition: all var(--plex-transition-normal);
590
- }
591
-
592
- .top-left,
593
- .top-right {
594
- display: flex;
595
- align-items: center;
596
- gap: 8px;
597
- }
598
-
599
- .video-title {
600
- font-size: 16px;
601
- font-weight: 600;
602
- color: var(--plex-text-primary);
603
- margin-left: 8px;
604
- max-width: 400px;
605
- white-space: nowrap;
606
- overflow: hidden;
607
- text-overflow: ellipsis;
588
+ height: 100%;
589
+ object-fit: contain;
590
+ background: #000;
608
591
  }
609
592
 
610
- /* Bottom Controls */
611
- .bottom-controls {
593
+ /* Controls Container */
594
+ .plex-controls {
612
595
  position: absolute;
613
596
  bottom: 0;
614
597
  left: 0;
615
- width: 100%;
598
+ right: 0;
616
599
  padding: 0 16px 16px;
617
600
  background: var(--plex-gradient);
618
601
  z-index: var(--plex-z-controls);
619
- transition: all var(--plex-transition-normal);
602
+ transition: opacity var(--plex-transition-normal), visibility var(--plex-transition-normal);
603
+ opacity: 1;
604
+ visibility: visible;
605
+ }
606
+
607
+ .plex-player:not(.plex-controls-visible) .plex-controls {
608
+ opacity: 0;
609
+ visibility: hidden;
620
610
  }
621
611
 
622
612
  /* Progress Container */
623
- .progress-container {
613
+ .plex-progress-container {
624
614
  position: relative;
625
615
  width: 100%;
626
616
  height: 24px;
@@ -630,7 +620,7 @@ html, body {
630
620
  padding: 8px 0;
631
621
  }
632
622
 
633
- .progress-bar {
623
+ .plex-progress-bar {
634
624
  position: relative;
635
625
  width: 100%;
636
626
  height: 4px;
@@ -640,11 +630,11 @@ html, body {
640
630
  transition: height var(--plex-transition-fast);
641
631
  }
642
632
 
643
- .progress-container:hover .progress-bar {
633
+ .plex-progress-container:hover .plex-progress-bar {
644
634
  height: 6px;
645
635
  }
646
636
 
647
- .progress-buffered {
637
+ .plex-progress-buffered {
648
638
  position: absolute;
649
639
  top: 0;
650
640
  left: 0;
@@ -652,9 +642,10 @@ html, body {
652
642
  background: rgba(255, 255, 255, 0.35);
653
643
  border-radius: 2px;
654
644
  pointer-events: none;
645
+ width: 0;
655
646
  }
656
647
 
657
- .progress-played {
648
+ .plex-progress-played {
658
649
  position: absolute;
659
650
  top: 0;
660
651
  left: 0;
@@ -662,9 +653,10 @@ html, body {
662
653
  background: var(--plex-primary);
663
654
  border-radius: 2px;
664
655
  pointer-events: none;
656
+ width: 0;
665
657
  }
666
658
 
667
- .progress-handle {
659
+ .plex-progress-handle {
668
660
  position: absolute;
669
661
  top: 50%;
670
662
  left: 0;
@@ -678,120 +670,63 @@ html, body {
678
670
  pointer-events: none;
679
671
  }
680
672
 
681
- .progress-container:hover .progress-handle,
682
- .progress-container.dragging .progress-handle {
673
+ .plex-progress-container:hover .plex-progress-handle {
683
674
  transform: translate(-50%, -50%) scale(1);
684
675
  }
685
676
 
686
- .progress-container.dragging .progress-bar {
687
- height: 6px;
688
- }
689
-
690
- /* Progress Tooltip */
691
- .progress-tooltip {
677
+ /* Progress Preview */
678
+ .plex-progress-preview {
692
679
  position: absolute;
693
680
  bottom: 100%;
694
681
  left: 0;
682
+ margin-bottom: 8px;
695
683
  padding: 6px 10px;
696
684
  background: var(--plex-bg-dark);
697
685
  border-radius: var(--plex-radius-sm);
698
- font-size: 13px;
699
- font-weight: 500;
700
- white-space: nowrap;
701
686
  opacity: 0;
702
687
  visibility: hidden;
703
- transform: translateX(-50%) translateY(4px);
704
- transition: all var(--plex-transition-fast);
688
+ transform: translateX(-50%);
689
+ transition: opacity var(--plex-transition-fast);
705
690
  pointer-events: none;
706
691
  z-index: 50;
707
692
  }
708
693
 
709
- .progress-container:hover .progress-tooltip {
694
+ .plex-progress-container:hover .plex-progress-preview {
710
695
  opacity: 1;
711
696
  visibility: visible;
712
- transform: translateX(-50%) translateY(-4px);
713
697
  }
714
698
 
715
- /* Hide tooltip when preview is visible */
716
- .progress-container:hover .progress-preview[style*="display: flex"] ~ .progress-tooltip,
717
- .progress-preview:not([style*="display: none"]) + .progress-tooltip {
718
- opacity: 0;
719
- visibility: hidden;
720
- }
721
-
722
- /* Progress Preview (Thumbnail) */
723
- .progress-preview {
724
- position: absolute;
725
- bottom: calc(100% + 16px);
726
- left: 0;
727
- display: none;
728
- flex-direction: column;
729
- align-items: center;
730
- z-index: 100;
731
- pointer-events: none;
732
- background: rgba(0, 0, 0, 0.9);
733
- padding: 4px;
734
- border-radius: var(--plex-radius-sm);
735
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
736
- }
737
-
738
- #preview-canvas {
739
- width: 160px;
740
- height: 90px;
741
- background: var(--plex-bg-dark);
742
- border: 2px solid var(--plex-primary);
743
- border-radius: var(--plex-radius-sm);
744
- object-fit: contain;
745
- }
746
-
747
- .preview-time {
748
- margin-top: 6px;
749
- padding: 4px 10px;
750
- background: var(--plex-primary);
751
- color: #000;
752
- border-radius: var(--plex-radius-sm);
753
- font-size: 12px;
754
- font-weight: 700;
755
- }
756
-
757
- /* Time Display */
758
- .time-display {
759
- display: flex;
760
- align-items: center;
761
- gap: 4px;
762
- padding: 8px 0;
699
+ .plex-preview-time {
763
700
  font-size: 13px;
764
- font-weight: 500;
701
+ font-weight: 600;
765
702
  color: var(--plex-text-primary);
703
+ white-space: nowrap;
766
704
  }
767
705
 
768
- .time-separator {
769
- color: var(--plex-text-secondary);
770
- }
771
-
772
- /* Main Controls Row */
773
- .main-controls {
706
+ /* Controls Bar */
707
+ .plex-controls-bar {
774
708
  display: flex;
775
709
  align-items: center;
776
710
  justify-content: space-between;
777
- margin-top: 4px;
711
+ margin-top: 8px;
778
712
  }
779
713
 
780
- .controls-left,
781
- .controls-right {
714
+ .plex-controls-left,
715
+ .plex-controls-right {
782
716
  display: flex;
783
717
  align-items: center;
784
718
  gap: 4px;
785
719
  }
786
720
 
787
721
  /* Control Button */
788
- .control-btn {
722
+ .plex-btn {
789
723
  position: relative;
790
724
  display: flex;
791
725
  align-items: center;
792
726
  justify-content: center;
793
727
  width: 40px;
794
728
  height: 40px;
729
+ padding: 0;
795
730
  background: transparent;
796
731
  border: none;
797
732
  border-radius: var(--plex-radius-sm);
@@ -800,280 +735,304 @@ html, body {
800
735
  color: var(--plex-text-primary);
801
736
  }
802
737
 
803
- .control-btn:hover {
738
+ .plex-btn:hover {
804
739
  background: rgba(255, 255, 255, 0.1);
805
740
  }
806
741
 
807
- .control-btn:active {
742
+ .plex-btn:active {
808
743
  transform: scale(0.95);
809
744
  }
810
745
 
811
- .control-btn .material-icons {
812
- font-size: 24px;
813
- }
814
-
815
- .control-btn.active {
816
- color: var(--plex-primary);
817
- }
818
-
819
- /* Cast Button */
820
- #cast-btn {
821
- transition: all var(--plex-transition-fast);
746
+ .plex-btn svg {
747
+ width: 24px;
748
+ height: 24px;
749
+ fill: currentColor;
822
750
  }
823
751
 
824
- #cast-btn.active {
825
- color: var(--plex-primary);
826
- animation: pulse-cast 2s ease-in-out infinite;
752
+ .plex-btn:focus-visible {
753
+ outline: 2px solid var(--plex-primary);
754
+ outline-offset: 2px;
827
755
  }
828
756
 
829
- #cast-btn.hidden {
757
+ /* Play Button States */
758
+ .plex-player.plex-playing .plex-play-btn .plex-icon-play {
830
759
  display: none;
831
760
  }
832
761
 
833
- @keyframes pulse-cast {
834
- 0%, 100% { opacity: 1; }
835
- 50% { opacity: 0.6; }
762
+ .plex-player.plex-playing .plex-play-btn .plex-icon-pause {
763
+ display: block;
836
764
  }
837
765
 
838
- /* Play Button (Larger) */
839
- .play-btn {
840
- width: 48px;
841
- height: 48px;
766
+ .plex-player:not(.plex-playing) .plex-play-btn .plex-icon-play {
767
+ display: block;
842
768
  }
843
769
 
844
- .play-btn .material-icons {
845
- font-size: 32px;
846
- }
847
-
848
- /* Speed Text */
849
- .speed-text {
850
- font-size: 14px;
851
- font-weight: 600;
852
- min-width: 28px;
770
+ .plex-player:not(.plex-playing) .plex-play-btn .plex-icon-pause {
771
+ display: none;
853
772
  }
854
773
 
855
- /* Volume Control */
856
- .volume-control {
774
+ /* Volume Container */
775
+ .plex-volume-container {
857
776
  display: flex;
858
777
  align-items: center;
859
778
  gap: 4px;
860
779
  }
861
780
 
862
- .volume-slider-container {
781
+ .plex-volume-slider {
863
782
  position: relative;
864
783
  width: 0;
865
784
  overflow: hidden;
866
785
  transition: width var(--plex-transition-normal);
867
786
  }
868
787
 
869
- .volume-control:hover .volume-slider-container {
788
+ .plex-volume-container:hover .plex-volume-slider {
870
789
  width: 80px;
871
790
  }
872
791
 
873
- .volume-slider {
874
- -webkit-appearance: none;
875
- appearance: none;
792
+ .plex-volume-track {
793
+ position: relative;
876
794
  width: 80px;
877
795
  height: 4px;
878
796
  background: rgba(255, 255, 255, 0.2);
879
797
  border-radius: 2px;
880
- outline: none;
881
798
  cursor: pointer;
882
799
  }
883
800
 
884
- .volume-slider::-webkit-slider-thumb {
885
- -webkit-appearance: none;
886
- appearance: none;
887
- width: 14px;
888
- height: 14px;
801
+ .plex-volume-level {
802
+ position: absolute;
803
+ top: 0;
804
+ left: 0;
805
+ height: 100%;
806
+ background: var(--plex-primary);
807
+ border-radius: 2px;
808
+ pointer-events: none;
809
+ width: 100%;
810
+ }
811
+
812
+ .plex-volume-handle {
813
+ position: absolute;
814
+ top: 50%;
815
+ right: 0;
816
+ width: 12px;
817
+ height: 12px;
889
818
  background: var(--plex-primary);
890
819
  border-radius: 50%;
820
+ transform: translateY(-50%);
891
821
  cursor: pointer;
892
- transition: transform var(--plex-transition-fast);
822
+ opacity: 0;
823
+ transition: opacity var(--plex-transition-fast);
893
824
  }
894
825
 
895
- .volume-slider::-webkit-slider-thumb:hover {
896
- transform: scale(1.2);
826
+ .plex-volume-container:hover .plex-volume-handle {
827
+ opacity: 1;
897
828
  }
898
829
 
899
- .volume-slider::-moz-range-thumb {
900
- width: 14px;
901
- height: 14px;
902
- background: var(--plex-primary);
903
- border: none;
904
- border-radius: 50%;
905
- cursor: pointer;
830
+ /* Volume Button States */
831
+ .plex-player.plex-muted .plex-icon-volume-high,
832
+ .plex-player.plex-muted .plex-icon-volume-low {
833
+ display: none;
906
834
  }
907
835
 
908
- .volume-slider-fill {
909
- position: absolute;
910
- top: 50%;
911
- left: 0;
912
- height: 4px;
913
- background: var(--plex-primary);
914
- border-radius: 2px;
915
- transform: translateY(-50%);
916
- pointer-events: none;
836
+ .plex-player.plex-muted .plex-icon-volume-mute {
837
+ display: block;
917
838
  }
918
839
 
919
- /* Chapters Markers (on progress bar) */
920
- .chapter-marker {
921
- position: absolute;
922
- top: 0;
923
- width: 3px;
924
- height: 100%;
925
- background: rgba(255, 255, 255, 0.8);
926
- border-radius: 1px;
927
- transform: translateX(-50%);
928
- cursor: pointer;
929
- z-index: 2;
840
+ .plex-player:not(.plex-muted) .plex-icon-volume-mute {
841
+ display: none;
930
842
  }
931
843
 
932
- .chapter-marker:hover {
933
- background: var(--plex-primary);
844
+ .plex-player:not(.plex-muted) .plex-icon-volume-high {
845
+ display: block;
846
+ }
847
+
848
+ .plex-player:not(.plex-muted) .plex-icon-volume-low {
849
+ display: none;
934
850
  }
935
851
 
936
- /* Skip Intro Button */
937
- .skip-intro-btn {
852
+ /* Time Display */
853
+ .plex-time {
854
+ display: flex;
855
+ align-items: center;
856
+ gap: 4px;
857
+ margin-left: 8px;
858
+ font-size: 13px;
859
+ font-weight: 500;
860
+ color: var(--plex-text-primary);
861
+ }
862
+
863
+ .plex-time-current,
864
+ .plex-time-duration {
865
+ font-variant-numeric: tabular-nums;
866
+ }
867
+
868
+ .plex-time-separator {
869
+ color: var(--plex-text-secondary);
870
+ }
871
+
872
+ /* Fullscreen Button States */
873
+ .plex-player.plex-fullscreen .plex-icon-fullscreen {
874
+ display: none;
875
+ }
876
+
877
+ .plex-player.plex-fullscreen .plex-icon-fullscreen-exit {
878
+ display: block;
879
+ }
880
+
881
+ .plex-player:not(.plex-fullscreen) .plex-icon-fullscreen {
882
+ display: block;
883
+ }
884
+
885
+ .plex-player:not(.plex-fullscreen) .plex-icon-fullscreen-exit {
886
+ display: none;
887
+ }
888
+
889
+ /* Big Play Button */
890
+ .plex-big-play {
938
891
  position: absolute;
939
- right: 20px;
940
- bottom: 100px;
892
+ top: 50%;
893
+ left: 50%;
894
+ transform: translate(-50%, -50%) scale(1);
895
+ width: 72px;
896
+ height: 72px;
897
+ background: var(--plex-primary);
898
+ border-radius: 50%;
941
899
  display: flex;
942
900
  align-items: center;
943
- gap: 8px;
944
- padding: 12px 20px;
945
- background: rgba(255, 255, 255, 0.9);
946
- color: #000;
947
- border: none;
948
- border-radius: var(--plex-radius-md);
949
- font-size: 14px;
950
- font-weight: 600;
901
+ justify-content: center;
951
902
  cursor: pointer;
952
- z-index: var(--plex-z-controls);
903
+ z-index: var(--plex-z-overlay);
953
904
  transition: all var(--plex-transition-normal);
905
+ box-shadow: 0 4px 30px rgba(229, 160, 13, 0.4);
954
906
  }
955
907
 
956
- .skip-intro-btn:hover {
957
- background: #fff;
958
- transform: scale(1.02);
908
+ .plex-big-play:hover {
909
+ transform: translate(-50%, -50%) scale(1.1);
910
+ background: var(--plex-primary-hover);
959
911
  }
960
912
 
961
- .skip-intro-btn .material-icons {
962
- font-size: 20px;
913
+ .plex-big-play svg {
914
+ width: 40px;
915
+ height: 40px;
916
+ fill: #000;
917
+ margin-left: 4px;
918
+ }
919
+
920
+ .plex-player.plex-playing .plex-big-play {
921
+ opacity: 0;
922
+ visibility: hidden;
923
+ transform: translate(-50%, -50%) scale(0.8);
963
924
  }
964
925
 
965
- /* Double Tap Ripple Effect */
966
- .tap-ripple {
926
+ /* Loader */
927
+ .plex-loader {
967
928
  position: absolute;
968
- width: 100px;
969
- height: 100px;
929
+ top: 50%;
930
+ left: 50%;
931
+ transform: translate(-50%, -50%);
932
+ z-index: var(--plex-z-overlay);
933
+ display: none;
934
+ }
935
+
936
+ .plex-player.plex-loading .plex-loader {
937
+ display: block;
938
+ }
939
+
940
+ .plex-player.plex-loading .plex-big-play {
941
+ display: none;
942
+ }
943
+
944
+ .plex-spinner {
945
+ width: 48px;
946
+ height: 48px;
947
+ border: 4px solid rgba(255, 255, 255, 0.2);
948
+ border-top-color: var(--plex-primary);
970
949
  border-radius: 50%;
971
- background: rgba(255, 255, 255, 0.3);
972
- transform: translate(-50%, -50%) scale(0);
973
- animation: ripple 0.5s ease-out forwards;
974
- pointer-events: none;
950
+ animation: plex-spin 1s linear infinite;
975
951
  }
976
952
 
977
- @keyframes ripple {
953
+ @keyframes plex-spin {
978
954
  to {
979
- transform: translate(-50%, -50%) scale(2);
980
- opacity: 0;
955
+ transform: rotate(360deg);
981
956
  }
982
957
  }
983
958
 
984
- /* Responsive Controls */
959
+ /* Responsive */
985
960
  @media (max-width: 768px) {
986
- .top-controls {
987
- padding: 12px 16px;
988
- }
989
-
990
- .video-title {
991
- font-size: 14px;
992
- max-width: 200px;
993
- }
994
-
995
- .bottom-controls {
961
+ .plex-controls {
996
962
  padding: 0 12px 12px;
997
963
  }
998
964
 
999
- .control-btn {
965
+ .plex-btn {
1000
966
  width: 36px;
1001
967
  height: 36px;
1002
968
  }
1003
969
 
1004
- .control-btn .material-icons {
1005
- font-size: 22px;
1006
- }
1007
-
1008
- .play-btn {
1009
- width: 44px;
1010
- height: 44px;
970
+ .plex-btn svg {
971
+ width: 22px;
972
+ height: 22px;
1011
973
  }
1012
974
 
1013
- .play-btn .material-icons {
1014
- font-size: 28px;
1015
- }
1016
-
1017
- .time-display {
975
+ .plex-time {
1018
976
  font-size: 12px;
1019
977
  }
1020
978
 
1021
- .speed-text {
1022
- font-size: 12px;
979
+ .plex-big-play {
980
+ width: 60px;
981
+ height: 60px;
1023
982
  }
1024
983
 
1025
- #preview-canvas {
1026
- width: 120px;
1027
- height: 68px;
984
+ .plex-big-play svg {
985
+ width: 32px;
986
+ height: 32px;
1028
987
  }
1029
988
  }
1030
989
 
1031
990
  @media (max-width: 480px) {
1032
- .controls-left,
1033
- .controls-right {
991
+ .plex-controls-left,
992
+ .plex-controls-right {
1034
993
  gap: 0;
1035
994
  }
1036
995
 
1037
- .control-btn {
996
+ .plex-btn {
1038
997
  width: 32px;
1039
998
  height: 32px;
1040
999
  }
1041
1000
 
1042
- .control-btn .material-icons {
1043
- font-size: 20px;
1001
+ .plex-btn svg {
1002
+ width: 20px;
1003
+ height: 20px;
1044
1004
  }
1045
1005
 
1046
- .video-title {
1047
- max-width: 140px;
1048
- font-size: 13px;
1006
+ .plex-prev-btn,
1007
+ .plex-next-btn,
1008
+ .plex-cast-btn {
1009
+ display: none;
1049
1010
  }
1050
1011
 
1051
- /* Hide some buttons on very small screens */
1052
- #cast-btn,
1053
- #quality-btn {
1054
- display: none;
1012
+ .plex-big-play {
1013
+ width: 56px;
1014
+ height: 56px;
1015
+ }
1016
+
1017
+ .plex-big-play svg {
1018
+ width: 28px;
1019
+ height: 28px;
1055
1020
  }
1056
1021
  }
1057
1022
 
1058
- /* Hover/Focus States for Accessibility */
1059
- .control-btn:focus-visible {
1060
- outline: 2px solid var(--plex-primary);
1061
- outline-offset: 2px;
1062
- }
1063
-
1064
- .progress-container:focus-visible {
1065
- outline: 2px solid var(--plex-primary);
1066
- outline-offset: 2px;
1023
+ /* Controls Visibility */
1024
+ .plex-player.plex-controls-visible .plex-controls {
1025
+ opacity: 1;
1026
+ visibility: visible;
1067
1027
  }
1068
1028
 
1069
- /* Disabled State */
1070
- .control-btn:disabled {
1071
- opacity: 0.4;
1072
- cursor: not-allowed;
1029
+ /* Cursor hiding when controls hidden */
1030
+ .plex-player:not(.plex-controls-visible) {
1031
+ cursor: none;
1073
1032
  }
1074
1033
 
1075
- .control-btn:disabled:hover {
1076
- background: transparent;
1034
+ .plex-player:not(.plex-controls-visible) .plex-video {
1035
+ cursor: none;
1077
1036
  }
1078
1037
 
1079
1038
  /* =====================================================