2 @use '_variables' as *;
4 @use './_player-variables' as *;
6 .video-js.vjs-peertube-skin .vjs-control-bar {
9 height: $control-bar-height;
10 background: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.6));
11 box-shadow: 0 -15px 40px 10px rgba(0, 0, 0, 0.2);
12 text-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
13 transition: visibility 0.3s, opacity 0.3s !important;
15 &.control-bar-hidden {
16 display: none !important;
19 > button:first-child {
20 @include margin-left($first-control-bar-element-margin-left);
24 @include margin-right($first-control-bar-element-margin-left);
27 .vjs-progress-control,
32 .vjs-resolution-control,
33 .vjs-fullscreen-control,
37 color: pvar(--embedForegroundColor) !important;
39 opacity: $primary-foreground-opacity;
40 transition: opacity .1s;
43 opacity: $primary-foreground-opacity-hover;
50 color: pvar(--embedForegroundColor);
51 opacity: $primary-foreground-opacity;
54 .vjs-progress-control {
55 @include margin-left($progress-margin);
58 top: $control-bar-slider-top;
59 z-index: 100; // On top of the progress bar
60 width: calc(100% - (2 * #{$progress-margin}));
66 background-color: rgba(255, 255, 255, .2);
71 background: pvar(--embedForegroundColor);
73 // Not display the circle if the progress is not hovered
76 transition: opacity 0.1s ease;
90 background: rgba(255, 255, 255, .2);
96 .vjs-progress-control:hover .vjs-slider,
97 .vjs-progress-control .vjs-slider.vjs-sliding {
100 .vjs-play-progress::before {
106 @include disable-outline;
109 width: $control-bar-button-width;
111 .vjs-icon-placeholder::before {
112 font-size: $control-bar-play-font-size;
120 line-height: inherit;
123 @include margin-left(.5em);
125 font-size: $control-bar-font-size;
126 display: inline-block;
129 .vjs-current-time-display {
130 line-height: calc(#{$control-bar-height} - 1px);
133 @include margin(0, 1px, 0, 2px);
141 font-size: $control-bar-font-size;
142 display: inline-block;
145 .vjs-duration-display {
146 line-height: calc(#{$control-bar-height} - 1px);
150 &.vjs-remaining-time {
161 max-width: fit-content;
162 opacity: 1 !important;
167 &.synced-with-live-edge {
171 &:not(.synced-with-live-edge) {
178 @include margin-right(6px);
179 @include margin-left(auto);
181 line-height: $control-bar-height;
184 font-size: $control-bar-font-size;
186 .vjs-peertube-displayed {
190 .vjs-peertube-hidden {
194 .download-speed-number,
195 .upload-speed-number,
198 font-weight: $font-semibold;
201 .download-speed-text,
205 @include margin-right(15px);
209 @include margin-right(2px);
211 display: inline-block;
214 background-size: contain;
215 vertical-align: middle;
216 background-repeat: no-repeat;
221 background-image: url('#{$assets-path}/player/images/arrow-down.svg');
225 background-image: url('#{$assets-path}/player/images/arrow-up.svg');
231 .vjs-previous-video {
232 width: $control-bar-button-width - 4px;
241 mask-image: url('#{$assets-path}/player/images/next.svg');
242 -webkit-mask-image: url('#{$assets-path}/player/images/next.svg');
244 -webkit-mask-size: cover;
246 background-color: #fff;
247 width: $control-bar-next-previous-play-font-size;
248 height: $control-bar-next-previous-play-font-size;
249 display: inline-block;
253 transform: rotate(180deg);
259 @include disable-outline;
262 width: $control-bar-icon-size;
264 .vjs-icon-placeholder {
265 display: inline-block;
266 width: $control-bar-icon-size;
267 height: $control-bar-icon-size;
268 vertical-align: middle;
269 background: url('#{$assets-path}/player/images/volume.svg') no-repeat;
270 background-size: contain;
277 &.vjs-vol-0 .vjs-icon-placeholder {
278 background: url('#{$assets-path}/player/images/volume-mute.svg') no-repeat;
279 background-size: contain;
283 .vjs-volume-control {
284 @include margin(0, 5px, 0, 5px);
286 width: $control-bar-icon-size;
292 background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAcCAQAAACw95UnAAAAMElEQVRIx2NgoBL4n4YKGUYNHkEG4zJg1OCRYDCpBowaPJwMppbLRg0eNXjUYBLEAXWNUA6QNm1lAAAAAElFTkSuQmCC') no-repeat;
293 background-size: $control-bar-icon-size $control-bar-volume-slider-height;
296 max-width: $control-bar-icon-size;
297 max-height: $control-bar-volume-slider-height;
302 background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAcAQAAAAAyhWABAAAAAnRSTlMAAHaTzTgAAAAZSURBVHgBYwAB/g9EUv+JokCqiaT+U4MCAPKPS7WUUOc1AAAAAElFTkSuQmCC') no-repeat;
303 background-size: $control-bar-icon-size $control-bar-volume-slider-height;
304 max-width: $control-bar-icon-size;
306 max-height: $control-bar-volume-slider-height;
320 .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,
321 .vjs-volume-panel.vjs-volume-panel-horizontal:active,
322 .vjs-volume-panel.vjs-volume-panel-horizontal:focus,
323 .vjs-volume-panel.vjs-volume-panel-horizontal:hover {
325 transition-property: none;
328 .vjs-volume-panel .vjs-mute-control:hover ~ .vjs-volume-control.vjs-volume-horizontal {
333 .vjs-volume-panel .vjs-mute-control:hover ~ .vjs-volume-control {
334 transition-property: none;
344 .vjs-volume-control {
345 display: inline-block;
355 @include disable-outline;
358 width: $control-bar-button-width;
360 .vjs-icon-placeholder {
361 display: inline-block;
362 height: $control-bar-icon-size - 5px;
363 width: $control-bar-icon-size - 5px;
364 vertical-align: middle;
365 background: url('#{$assets-path}/player/images/settings.svg') no-repeat;
366 background-size: contain;
375 @include disable-outline;
376 @include disable-default-a-behaviour;
379 text-decoration: none;
380 line-height: $control-bar-height;
381 font-weight: $font-semibold;
386 .vjs-theater-control {
387 @include disable-outline;
389 width: $control-bar-button-width;
392 .vjs-icon-placeholder {
393 transition: transform 0.2s ease;
394 display: inline-block;
395 width: $control-bar-icon-size;
396 height: $control-bar-icon-size;
397 vertical-align: middle;
398 background: url('#{$assets-path}/player/images/theater.svg') no-repeat;
399 background-size: contain;
407 .vjs-fullscreen-control {
408 @include disable-outline;
410 width: $control-bar-button-width;
412 .vjs-icon-placeholder {
413 display: inline-block;
414 width: $control-bar-icon-size;
415 height: $control-bar-icon-size;
416 vertical-align: middle;
417 background: url('#{$assets-path}/player/images/fullscreen.svg') no-repeat;
418 background-size: contain;
426 @media screen and (max-width: $screen-width-750) {
427 .vjs-theater-control {
433 .download-speed-text,
435 display: none !important;
440 @media screen and (max-width: $screen-width-570) {
441 .vjs-volume-control {
446 padding: 0 !important;
448 .vjs-peertube-displayed {
449 display: none !important;
459 display: none !important;
463 display: none !important;
468 @media screen and (max-width: $screen-width-350) {
470 .vjs-previous-video {
471 display: none !important;
475 padding: 0 !important;
478 > button:first-child {
479 @include margin-left($first-control-bar-element-margin-left-small-width);
482 > button:last-child {
483 @include margin-right($first-control-bar-element-margin-left-small-width);
487 @include margin-left(0);
494 display: none !important;