3 @import '_bootstrap-variables';
6 $player-factor: 1.7; // 16/9
7 $video-info-margin-left: 44px;
9 @function getPlayerHeight($width){
10 @return calc(#{$width} / #{$player-factor})
13 @function getPlayerWidth($height){
14 @return calc(#{$height} * #{$player-factor})
17 @mixin playlist-below-player {
18 width: 100% !important;
19 height: auto !important;
20 max-height: 300px !important;
22 border-bottom: 1px solid $separator-border-color !important;
26 &.theater-enabled #video-wrapper {
27 flex-direction: column;
28 justify-content: center;
35 $height: calc(100vh - #{$header-height} - #{$theater-bottom-space});
42 my-video-watch-playlist ::ng-deep .playlist {
43 @include playlist-below-player;
49 font-weight: $font-semibold;
55 background-color: #000;
57 justify-content: center;
61 justify-content: center;
63 height: $video-height;
69 flex-direction: column;
72 justify-content: center;
73 background-color: #141313;
78 @media screen and (max-width: 1000px) {
82 @media screen and (max-width: 600px) {
89 max-width: getPlayerWidth(66vh);
90 height: $video-height;
92 // VideoJS create an inner video player
95 position: relative !important;
99 @media screen and (max-width: 600px) {
101 ::ng-deep .video-js {
103 height: getPlayerHeight(100vw)
113 .flex-direction-column {
114 flex-direction: column;
122 font-weight: $font-semibold;
132 // Set min width for flex item
136 .video-info-first-row {
139 & > div:first-child {
145 min-height: 40px; // Align with the action buttons
147 font-weight: $font-semibold;
151 .video-info-first-row-bottom {
158 .video-info-date-views {
165 .video-info-channel {
166 font-weight: $font-semibold;
170 @include disable-default-a-behaviour;
172 color: pvar(--mainForegroundColor);
179 @include avatar(18px);
181 margin: -2px 5px 0 0;
185 .video-info-channel-left {
188 .video-info-channel-left-links {
190 flex-direction: column;
205 my-subscribe-button {
215 .video-actions-rates {
222 height: 40px; // Align with the title
226 .action-button:not(:first-child),
228 my-video-actions-dropdown {
232 ::ng-deep.action-button {
233 @include peertube-button;
234 @include button-with-icon(21px, 0, -1px);
235 @include apply-svg-color(pvar(--actionButtonColor));
238 font-weight: $font-semibold;
239 display: inline-block;
240 padding: 0 10px 0 10px;
242 background-color: transparent !important;
243 color: pvar(--actionButtonColor);
244 text-transform: uppercase;
254 &.action-button-like,
255 &.action-button-dislike {
256 filter: brightness(120%);
263 &.action-button-like.activated {
265 color: pvar(--activatedActionButtonColor);
269 @include apply-svg-color(pvar(--activatedActionButtonColor));
273 &.action-button-dislike.activated {
275 color: pvar(--activatedActionButtonColor);
279 @include apply-svg-color(pvar(--activatedActionButtonColor));
283 &.action-button-support {
284 color: pvar(--supportButtonColor);
287 @include apply-svg-color(pvar(--supportButtonColor));
291 &.action-button-support {
293 ::ng-deep path:first-child {
294 fill: pvar(--supportButtonHeartColor) !important;
299 &.action-button-save {
312 .video-info-likes-dislikes-bar-outer-container {
316 .video-info-likes-dislikes-bar-inner-container {
321 .video-info-likes-dislikes-bar {
322 $likes-bar-height: 2px;
323 height: $likes-bar-height;
324 margin-top: -$likes-bar-height;
326 background-color: #ccc;
332 background-color: #909090;
335 background-color: pvar(--activatedActionButtonColor);
342 .video-info-description {
344 margin-left: $video-info-margin-left;
347 .video-info-description-html {
348 @include peertube-word-wrap;
351 text-decoration: none;
355 .glyphicon, .description-loading {
359 .description-loading {
360 display: inline-block;
363 .video-info-description-more {
365 font-weight: $font-semibold;
366 color: pvar(--greyForegroundColor);
377 margin-left: $video-info-margin-left;
380 .video-attributes .video-attribute {
385 .video-attribute-label {
388 display: inline-block;
389 color: pvar(--greyForegroundColor);
390 font-weight: $font-bold;
393 a.video-attribute-value {
394 @include disable-default-a-behaviour;
395 color: pvar(--mainForegroundColor);
402 &.video-attribute-tags {
403 .video-attribute-value:not(:nth-child(2)) {
412 ::ng-deep .other-videos {
414 min-width: $video-miniature-width;
416 @media screen and (min-width: 1800px - (3* $video-miniature-width)) {
421 margin: 0 !important;
428 padding-bottom: 20px;
433 @media screen and (max-width: 1800px - (3* $video-miniature-width)) {
436 @media screen and (max-width: 500px) {
445 display: inline-block;
450 // If the view is not expanded, take into account the menu
452 z-index: z(dropdown) + 1;
453 width: calc(100% - #{$menu-width});
456 @media screen and (max-width: $small-view) {
458 margin-left: $menu-width - 15px; // Menu is absolute
462 :host-context(.expanded) {
472 z-index: z(privacymsg);
479 justify-content: space-between;
480 background-color: rgba(0, 0, 0, 0.9);
483 .privacy-concerns-text {
488 @include disable-default-a-behaviour;
490 color: pvar(--mainColor);
491 transition: color 0.3s;
498 .privacy-concerns-button {
499 padding: 5px 8px 5px 7px;
504 transition: background-color 0.3s;
505 font-weight: $font-semibold;
508 background-color: #000;
512 .privacy-concerns-okay {
513 background-color: pvar(--mainColor);
518 @media screen and (max-width: 1600px) {
519 .video-bottom .video-info .video-attributes .video-attribute {
524 @media screen and (max-width: 1300px) {
529 .privacy-concerns-text {
535 @media screen and (max-width: 1100px) {
537 flex-direction: column;
538 justify-content: center;
540 my-video-watch-playlist ::ng-deep .playlist {
541 @include playlist-below-player;
546 flex-direction: column;
548 ::ng-deep .other-videos {
549 padding-left: 0 !important;
551 ::ng-deep .video-miniature {
559 @media screen and (max-width: 600px) {
561 margin-top: 20px !important;
562 padding-bottom: 20px !important;
567 .video-info-first-row {
577 ::ng-deep .other-videos .video-miniature {
578 flex-direction: column;
586 @media screen and (max-width: 450px) {
588 .action-button .icon-text {
589 display: none !important;
592 .video-info .video-info-first-row {
597 .video-info-date-views {
601 .video-actions-rates {
606 .video-info-description {
607 font-size: 14px !important;
613 // Special case for iOS, that takes into account the width for fullscreens
614 #video-wrapper ::ng-deep .video-js.vjs-fullscreen {