// Thanks: https://github.com/zanechua/videojs-sublime-inspired-skin $primary-foreground-color: #fff; $primary-background-color: #000; $font-size: 13px; $control-bar-height: 34px; .video-js.vjs-peertube-skin { font-size: $font-size; color: $primary-foreground-color; .vjs-button > .vjs-icon-placeholder::before { line-height: $control-bar-height; } .vjs-mouse-display:before, .vjs-play-progress:before, .vjs-volume-level:before { content: ''; /* Remove Circle From Progress Bar */ } .vjs-audio-button { display: none; } .vjs-big-play-button { outline: 0; font-size: 8em; $big-play-width: 3em; $big-play-height: 1.5em; border: 0; border-radius: 0.3em; left: 50%; top: 50%; margin-left: -($big-play-width / 2); margin-top: -($big-play-height / 2); background-color: transparent !important; } &.vjs-has-started .vjs-big-play-button { display: block; visibility: hidden; opacity: 0; transition: visibility 0.5s, opacity 0.5s; } .vjs-loading-spinner { display: block; visibility: hidden; opacity: 0; transition-delay: 0.5s; transition: visibility 0.5s, opacity 0.5s; } &.vjs-waiting .vjs-loading-spinner { visibility: visible; opacity: 1; } .vjs-control-bar, .vjs-big-play-button, .vjs-menu-button .vjs-menu-content { background-color: rgba($primary-background-color, 0.5); } $slider-bg-color: lighten($primary-background-color, 33%); .vjs-slider { background-color: rgba(255, 255, 255, .3); border-radius: 2px; height: 5px; } /* The slider bar color is used for the progress bar and the volume bar (the first two can be removed after a fix that's coming) */ .vjs-volume-level, .vjs-play-progress, .vjs-slider-bar { background: $primary-foreground-color; } .vjs-load-progress { background: rgba($slider-bg-color, 0.5); } .vjs-load-progress div { background: rgba($slider-bg-color, 0.75); } .vjs-poster { outline: none; /* Remove Blue Outline on Click*/ outline: 0; } .vjs-control-bar { height: $control-bar-height; .vjs-progress-control { bottom: 34px; width: 100%; position: absolute; height: 5px; .vjs-progress-holder { margin: 0; border-radius: 0; } } .vjs-play-control { font-size: $font-size; padding: 0 17px; margin-right: 5px; } .vjs-time-control { &.vjs-current-time { font-size: $font-size; display: inline-block; padding: 0; .vjs-current-time-display { line-height: calc(#{$control-bar-height} + 1px); &::after { content: "/"; margin: 0 1px 0 2px; } } } &.vjs-duration { font-size: $font-size; display: inline-block; padding: 0; .vjs-duration-display { line-height: calc(#{$control-bar-height} + 1px); } } &.vjs-remaining-time { display: none; } } .vjs-webtorrent { width: 100%; line-height: $control-bar-height; text-align: right; padding-right: 60px; .vjs-webtorrent-displayed { display: block; } .vjs-webtorrent-hidden { display: none; } .download-speed-number, .upload-speed-number, .peers-number { font-weight: $font-semibold; } .download-speed-text, .upload-speed-text, .peers-text { margin-right: 15px; } .icon { display: inline-block; width: 15px; height: 15px; background-size: contain; vertical-align: middle; background-repeat: no-repeat; margin-right: 6px; position: relative; top: -1px; &.icon-download { background-image: url('../assets/player/images/arrow-down.svg'); } &.icon-upload { background-image: url('../assets/player/images/arrow-up.svg'); } } } .vjs-mute-control { .vjs-icon-placeholder { display: inline-block; width: 22px; height: 22px; vertical-align: middle; background: url('../assets/player/images/volume.svg') no-repeat; background-size: contain; &::before { content: ''; } } &.vjs-vol-0 .vjs-icon-placeholder { background: url('../assets/player/images/volume-mute.svg') no-repeat; background-size: contain; } } .vjs-volume-menu-button, .vjs-volume-panel { width: 6em; position: absolute; right: 0; margin-right: 65px; } .vjs-volume-bar { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAcCAQAAACw95UnAAAAMElEQVRIx2NgoBL4n4YKGUYNHkEG4zJg1OCRYDCpBowaPJwMppbLRg0eNXjUYBLEAXWNUA6QNm1lAAAAAElFTkSuQmCC) no-repeat; background-size: 22px 14px; height: 100%; width: 100%; max-width: 22px; max-height: 14px; margin: 7px 4px; border-radius: 0; top: 3px; .vjs-volume-level { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAcAQAAAAAyhWABAAAAAnRSTlMAAHaTzTgAAAAZSURBVHgBYwAB/g9EUv+JokCqiaT+U4MCAPKPS7WUUOc1AAAAAElFTkSuQmCC) no-repeat; background-size: 22px 14px; max-width: 22px; max-height: 14px; height: 100%; } } .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active, .vjs-volume-panel.vjs-volume-panel-horizontal:active, .vjs-volume-panel.vjs-volume-panel-horizontal:focus, .vjs-volume-panel.vjs-volume-panel-horizontal:hover { width: 6em; transition-property: none; } .vjs-volume-panel .vjs-mute-control:hover ~ .vjs-volume-control.vjs-volume-horizontal { width: 3em; height: auto; } .vjs-volume-panel .vjs-mute-control:hover ~ .vjs-volume-control { transition-property: none; } .vjs-volume-panel { .vjs-mute-control { width: 2em; z-index: 1; padding: 0; } .vjs-volume-control { display: inline-block; position: relative; left: 5px; opacity: 1; width: 3em; height: auto; } } .vjs-fullscreen-control { width: 37px; .vjs-icon-placeholder { display: inline-block; width: 22px; height: 22px; vertical-align: middle; background: url('../assets/player/images/fullscreen.svg') no-repeat; background-size: contain; &::before { content: ''; } } } .vjs-menu-button-popup { font-size: 13px; font-weight: $font-semibold; width: 50px; // Thanks: https://github.com/kmoskwiak/videojs-resolution-switcher/pull/92/files .vjs-resolution-button-label { line-height: $control-bar-height; position: absolute; top: 0; left: 4px; width: 100%; height: 100%; text-align: center; box-sizing: inherit; text-align: center; } .vjs-resolution-button { outline: 0 !important; } .vjs-menu { top: 20px; .vjs-menu-content { width: 50px; left: 50%; /* Center the menu, in it's parent */ margin-left: -21px; } li { text-transform: none; font-size: 13px; } } } } @media screen and (max-width: 550px) { .vjs-big-play-button { font-size: 6.5em; } .vjs-webtorrent { padding: 0 !important; .vjs-webtorrent-displayed { display: none !important; } } } @media screen and (max-width: 300px) { .vjs-dock-text { font-size: 1.5em; } .vjs-big-play-button { font-size: 5em; } .vjs-volume-control { display: none !important; } .vjs-volume-panel { width: 26px !important; margin-right: 83px !important; } } } // Thanks: https://projects.lukehaas.me/css-loaders/ .vjs-loading-spinner { left: 50%; font-size: 10px; text-indent: -9999em; border: 0.7em solid rgba(255, 255, 255, 0.2); border-left-color: #ffffff; transform: translateZ(0); animation: spinner 1.4s infinite linear; overflow: hidden; &:before { animation: none !important; } &:after { border-radius: 50%; width: 6em; height: 6em; animation: none !important; } @keyframes spinner { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } }