@7sage/vidstack
Version:
UI component library for building high-quality, accessible video and audio experiences on the web.
1,238 lines (1,077 loc) • 33.1 kB
CSS
.plyr {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
align-items: center;
direction: ltr;
display: flex;
flex-direction: column;
font-family: var(--plyr-font-family, inherit);
font-variant-numeric: tabular-nums;
font-weight: var(--plyr-font-weight-regular, 400);
line-height: var(--plyr-line-height, 1.7);
pointer-events: none;
max-width: 100%;
min-width: 200px;
text-shadow: none;
transition: box-shadow 0.3s ease;
border-radius: inherit;
z-index: 1;
}
[data-media-player][data-layout='plyr']:not([data-fullscreen]) {
border-radius: var(--plyr-border-radius, 10px);
}
.plyr button,
.plyr [role='button'] {
font: inherit;
line-height: inherit;
width: auto;
pointer-events: auto;
}
.plyr:focus {
outline: 0;
}
.plyr {
box-sizing: border-box;
}
.plyr *,
.plyr *::after,
.plyr *::before {
box-sizing: inherit;
}
.plyr a,
.plyr button,
.plyr [role='button'],
.plyr input,
.plyr [role='slider'],
.plyr label {
touch-action: manipulation;
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Badge
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
.plyr__badge {
background: var(--plyr-badge-background, hsl(216, 15%, 34%));
border-radius: var(--plyr-badge-border-radius, 2px);
color: var(--plyr-badge-text-color, #fff);
font-size: var(--plyr-font-size-badge, 9px);
line-height: 1;
padding: 3px 4px;
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Captions
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
.plyr__captions {
animation: plyr-fade-in 0.3s ease;
bottom: 0;
display: none;
font-size: var(--plyr-font-size-small, 13px);
left: 0;
padding: var(--plyr-control-spacing, 10px);
position: absolute;
text-align: center;
transition: transform 0.4s ease-in-out;
width: 100%;
}
.plyr__captions span:empty {
display: none;
}
@media (min-width: 480px) {
.plyr__captions {
font-size: var(--plyr-font-size-base, 15px);
padding: calc(var(--plyr-control-spacing, 10px) * 2);
}
}
@media (min-width: 768px) {
.plyr__captions {
font-size: var(--plyr-font-size-large, 18px);
}
}
.plyr--captions-active .plyr__captions {
display: block;
}
.plyr:not(.plyr--hide-controls) .plyr__controls:not(:empty) ~ .plyr__captions {
transform: translateY(calc(var(--plyr-control-spacing, 10px) * -4));
}
.plyr__caption {
background: var(--plyr-captions-background, rgba(0, 0, 0, 0.8));
border-radius: 2px;
-webkit-box-decoration-break: clone;
box-decoration-break: clone;
color: var(--plyr-captions-text-color, #fff);
line-height: 185%;
padding: 0.2em 0.5em;
white-space: pre-wrap;
}
.plyr__caption div {
display: inline;
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Controls
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
.plyr__control {
background: transparent;
border: 0;
border-radius: var(--plyr-control-radius, 4px);
contain: layout style;
color: inherit;
cursor: pointer;
flex-shrink: 0;
overflow: visible;
padding: calc(var(--plyr-control-spacing, 10px) * 0.7);
position: relative;
transition: all 0.3s ease;
}
.plyr__control svg {
display: block;
fill: currentColor;
height: var(--plyr-control-icon-size, 18px);
pointer-events: none;
width: var(--plyr-control-icon-size, 18px);
}
.plyr :focus {
outline: 0;
}
.plyr *:focus-visible,
.plyr *[data-focus] {
outline: 2px dashed var(--plyr-focus-visible-color, var(--plyr-color-main, hsl(198, 100%, 50%)));
outline-offset: 2px;
}
a.plyr__control {
text-decoration: none;
}
a.plyr__control::after,
a.plyr__control::before {
display: none;
}
.plyr__control[aria-pressed='false'] .icon--pressed,
.plyr__control[aria-pressed='true'] .icon--not-pressed,
.plyr__control[aria-pressed='false'] .label--pressed,
.plyr__control[aria-pressed='true'] .label--not-pressed {
display: none;
}
.plyr__controls {
align-items: center;
display: flex;
justify-content: flex-end;
text-align: center;
pointer-events: auto;
}
.plyr__controls .plyr__progress__container {
flex: 1 1 0%;
min-width: 0;
}
.plyr__controls .plyr__controls__item {
margin-left: calc(var(--plyr-control-spacing, 10px) / 4);
}
.plyr__controls .plyr__controls__item:first-child {
margin-left: 0;
margin-right: auto;
}
.plyr__controls .plyr__controls__item.plyr__progress__container {
padding-left: calc(var(--plyr-control-spacing, 10px) / 4);
}
.plyr__controls .plyr__controls__item.plyr__time {
padding: 0 calc(var(--plyr-control-spacing, 10px) / 2);
}
.plyr__controls .plyr__controls__item.plyr__progress__container:first-child,
.plyr__controls .plyr__controls__item.plyr__time:first-child,
.plyr__controls .plyr__controls__item.plyr__time + .plyr__time {
padding-left: 0;
}
.plyr__controls:empty {
display: none;
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Menu
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
.plyr__menu {
display: flex;
position: relative;
}
.plyr__menu [aria-disabled='true'],
.plyr__menu [role='menu'][aria-hidden='true'] {
display: none ;
}
.plyr__menu .plyr__control svg {
transition: transform 0.3s ease;
}
.plyr__menu .plyr__control[aria-expanded='true'] svg {
transform: rotate(90deg);
}
.plyr__menu .plyr__control[aria-expanded='true'] .plyr__tooltip {
display: none;
}
.plyr__menu__container {
--media-menu-x-offset: 3px;
--media-menu-y-offset: calc(calc(var(--plyr-control-spacing, 10px) / 2) * 2);
animation: plyr-popup 0.2s ease;
background: var(--plyr-menu-background, rgba(255, 255, 255, 0.9));
border-radius: var(--plyr-menu-radius, 8px);
box-shadow: var(--plyr-menu-shadow, 0 1px 2px rgba(0, 0, 0, 0.15));
color: var(--plyr-menu-color, hsl(216, 15%, 34%));
font-size: var(--plyr-font-size-base, 15px);
text-align: left;
white-space: nowrap;
z-index: 3;
}
.plyr__menu__container > div {
overflow: hidden;
transition:
height 0.35s cubic-bezier(0.4, 0, 0.2, 1),
width 0.35s cubic-bezier(0.4, 0, 0.2, 1);
}
.plyr__menu__container::after {
border: var(--plyr-menu-arrow-size, 4px) solid transparent;
border-top-color: var(--plyr-menu-background, rgba(255, 255, 255, 0.9));
content: '';
height: 0;
position: absolute;
right: calc(
((var(--plyr-control-icon-size, 18px) / 2) + calc(var(--plyr-control-spacing, 10px) * 0.7)) -
(var(--plyr-menu-arrow-size, 4px) / 2)
);
top: 100%;
width: 0;
}
.plyr__menu__container > div > div {
padding: calc(var(--plyr-control-spacing, 10px) * 0.7);
}
.plyr__menu__container [role='menuitem'],
.plyr__menu__container [role='menuitemradio'] {
margin-top: 2px;
}
.plyr__menu__container [role='menuitem']:first-child,
.plyr__menu__container [role='menuitemradio']:first-child {
margin-top: 0;
}
.plyr__menu__container .plyr__control {
align-items: center;
color: var(--plyr-menu-color, hsl(216, 15%, 34%));
display: flex;
font-size: var(--plyr-font-size-menu, var(--plyr-font-size-small, 13px));
padding: calc(calc(var(--plyr-control-spacing, 10px) * 0.7) / 1.5)
calc(calc(var(--plyr-control-spacing, 10px) * 0.7) * 1.5);
-webkit-user-select: none;
user-select: none;
width: 100%;
}
.plyr__menu__container .plyr__control > span {
align-items: inherit;
display: flex;
width: 100%;
}
.plyr__menu__container .plyr__control::after {
border: var(--plyr-menu-item-arrow-size, 4px) solid transparent;
content: '';
position: absolute;
top: 50%;
transform: translateY(-50%);
}
.plyr__menu__container .plyr__control--forward {
padding-right: calc(calc(var(--plyr-control-spacing, 10px) * 0.7) * 4);
}
.plyr__menu__container .plyr__control--forward::after {
border-left-color: var(--plyr-menu-arrow-color, hsl(216, 15%, 52%));
right: calc(
(calc(var(--plyr-control-spacing, 10px) * 0.7) * 1.5) - var(--plyr-menu-item-arrow-size, 4px)
);
}
.plyr__menu__container .plyr__control--forward:focus-visible::after,
.plyr__menu__container .plyr__control--forward[data-focus]::after,
.plyr__menu__container .plyr__control--forward:hover::after {
border-left-color: currentColor;
}
.plyr__menu__container .plyr__control--back {
font-weight: var(--plyr-font-weight-regular, 400);
margin: calc(var(--plyr-control-spacing, 10px) * 0.7);
margin-bottom: calc(calc(var(--plyr-control-spacing, 10px) * 0.7) / 2);
padding-left: calc(calc(var(--plyr-control-spacing, 10px) * 0.7) * 4);
position: relative;
width: calc(100% - (calc(var(--plyr-control-spacing, 10px) * 0.7) * 2));
}
.plyr__menu__container .plyr__control--back::after {
border-right-color: var(--plyr-menu-arrow-color, hsl(216, 15%, 52%));
left: calc(
(calc(var(--plyr-control-spacing, 10px) * 0.7) * 1.5) - var(--plyr-menu-item-arrow-size, 4px)
);
}
.plyr__menu__container .plyr__control--back::before {
background: var(--plyr-menu-back-border-color, hsl(216, 15%, 88%));
box-shadow: 0 1px 0 var(--plyr-menu-back-border-shadow-color, #fff);
content: '';
height: 1px;
left: 0;
margin-top: calc(calc(var(--plyr-control-spacing, 10px) * 0.7) / 2);
overflow: hidden;
position: absolute;
right: 0;
top: 100%;
}
.plyr__menu__container .plyr__control--back:focus-visible::after,
.plyr__menu__container .plyr__control--back[data-focus]::after,
.plyr__menu__container .plyr__control--back:hover::after {
border-right-color: currentColor;
}
.plyr__menu__container .plyr__control[role='menuitemradio'] {
padding-left: calc(var(--plyr-control-spacing, 10px) * 0.7);
}
.plyr__menu__container .plyr__control[role='menuitemradio']::before,
.plyr__menu__container .plyr__control[role='menuitemradio']::after {
border-radius: 100%;
}
.plyr__menu__container .plyr__control[role='menuitemradio']::before {
background: rgba(0, 0, 0, 0.1);
content: '';
display: block;
flex-shrink: 0;
height: 16px;
margin-right: var(--plyr-control-spacing, 10px);
transition: all 0.3s ease;
width: 16px;
}
.plyr__menu__container .plyr__control[role='menuitemradio']::after {
background: #fff;
border: 0;
height: 6px;
left: 12px;
opacity: 0;
top: 50%;
transform: translateY(-50%) scale(0);
transition:
transform 0.3s ease,
opacity 0.3s ease;
width: 6px;
}
.plyr__menu__container .plyr__control[role='menuitemradio'][aria-checked='true']::before {
background: var(
--plyr-control-toggle-checked-background,
var(--plyr-color-main, hsl(198, 100%, 50%))
);
}
.plyr__menu__container .plyr__control[role='menuitemradio'][aria-checked='true']::after {
opacity: 1;
transform: translateY(-50%) scale(1);
}
.plyr__menu__container .plyr__control[role='menuitemradio']:focus-visible::before,
.plyr__menu__container .plyr__control[role='menuitemradio'][data-focus]::before,
.plyr__menu__container .plyr__control[role='menuitemradio']:hover::before {
background: rgba(35, 40, 47, 0.1);
}
.plyr__menu__container .plyr__menu__value {
align-items: center;
display: flex;
margin-left: auto;
margin-right: calc((calc(var(--plyr-control-spacing, 10px) * 0.7) - 2px) * -1);
padding-left: calc(calc(var(--plyr-control-spacing, 10px) * 0.7) * 3.5);
pointer-events: none;
}
.plyr__menu__container .plyr__control[data-open] .plyr__menu__value {
display: none;
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Sliders
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
.plyr .plyr__slider {
--value: var(--slider-fill);
-webkit-appearance: none;
appearance: none;
background: transparent;
border: 0;
border-radius: calc(var(--plyr-range-thumb-height, 13px) * 2);
contain: layout style;
color: var(--plyr-range-fill-background, var(--plyr-color-main, hsl(198, 100%, 50%)));
display: flex;
align-items: center;
justify-content: center;
height: calc(
(var(--plyr-range-thumb-active-shadow-width, 3px) * 2) + var(--plyr-range-thumb-height, 13px)
);
min-width: 0;
pointer-events: auto;
padding: 0;
transition: box-shadow 0.3s ease;
width: 100%;
/** Prevent thumb flowing out of slider. */
margin: 0 calc(var(--plyr-range-thumb-height, 13px) / 2);
}
.plyr .plyr__slider__track {
background: transparent;
border: 0;
border-radius: calc(var(--plyr-range-track-height, 5px) / 2);
height: var(--plyr-range-track-height, 5px);
-webkit-transition: box-shadow 0.3s ease;
transition: box-shadow 0.3s ease;
-webkit-user-select: none;
user-select: none;
background-image: linear-gradient(
to right,
currentColor var(--value, 0%),
transparent var(--value, 0%)
);
width: 100%;
z-index: 1;
}
.plyr .plyr__slider__thumb {
position: absolute;
top: 50%;
left: var(--value);
will-change: left;
background: var(--plyr-range-thumb-background, #fff);
border: 0;
border-radius: 100%;
box-shadow: var(
--plyr-range-thumb-shadow,
0 1px 1px rgba(35, 40, 47, 0.15),
0 0 0 1px rgba(35, 40, 47, 0.2)
);
height: var(--plyr-range-thumb-height, 13px);
-webkit-transition: all 0.2s ease;
transition:
opacity 0.2s ease,
box-shadow 0.2s ease;
transform: translate(-50%, -50%);
width: var(--plyr-range-thumb-height, 13px);
-webkit-appearance: none;
appearance: none;
z-index: 2;
}
.plyr .plyr__slider:focus {
outline: 0;
}
.plyr .plyr__slider:focus-visible .plyr__slider__track,
.plyr .plyr__slider[data-focus] .plyr__slider__track {
outline: 2px dashed var(--plyr-focus-visible-color, var(--plyr-color-main, hsl(198, 100%, 50%)));
outline-offset: 2px;
}
.plyr__volume {
align-items: center;
display: flex;
position: relative;
flex: 1 1 0%;
max-width: 128px;
}
.plyr__volume .plyr__slider {
max-width: 90px;
min-width: 60px;
position: relative;
z-index: 2;
}
.plyr__volume + .plyr__controls__item {
margin-left: calc(var(--plyr-control-spacing, 10px));
}
.plyr__progress .plyr__tooltip {
left: var(--slider-pointer);
max-width: 120px;
overflow-wrap: break-word;
}
.plyr__progress {
left: calc(var(--plyr-range-thumb-height, 13px) * 0.5);
margin-right: var(--plyr-range-thumb-height, 13px);
position: relative;
}
.plyr__progress .plyr__slider {
position: relative;
z-index: 2;
}
[data-live] .plyr__progress .plyr__slider {
color: var(--plyr-progress-live-color, white);
}
[data-live-edge] .plyr__progress .plyr__slider {
color: var(--plyr-progress-live-edge-color, var(--plyr-color-main, hsl(198, 100%, 50%)));
}
.plyr__slider__buffer {
-webkit-appearance: none;
background: transparent;
border: 0;
border-radius: 100px;
height: var(--plyr-range-track-height, 5px);
left: 0;
padding: 0;
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 100%;
}
.plyr--loading .plyr__slider__buffer {
animation: plyr-progress 1s linear infinite;
background-image: linear-gradient(
-45deg,
var(--plyr-progress-loading-background, rgba(35, 40, 47, 0.6)) 25%,
transparent 25%,
transparent 50%,
var(--plyr-progress-loading-background, rgba(35, 40, 47, 0.6)) 50%,
var(--plyr-progress-loading-background, rgba(35, 40, 47, 0.6)) 75%,
transparent 75%,
transparent
);
background-repeat: repeat-x;
background-size: var(--plyr-progress-loading-size, 25px) var(--plyr-progress-loading-size, 25px);
color: transparent;
}
.plyr--video.plyr--loading .plyr__slider__buffer {
background-color: var(--plyr-video-progress-buffered-background, rgba(255, 255, 255, 0.25));
}
.plyr--audio.plyr--loading .plyr__slider__buffer {
background-color: var(--plyr-audio-progress-buffered-background, rgba(193, 200, 209, 0.6));
}
.plyr__progress__marker {
background-color: var(--plyr-progress-marker-background, #fff);
border-radius: 1px;
height: var(--plyr-range-track-height, 5px);
position: absolute;
top: 50%;
transform: translate(-50%, -50%);
width: var(--plyr-progress-marker-width, 3px);
z-index: 3;
}
.plyr__progress__marker-label {
color: #fff;
font-size: var(--plyr-font-size-progress-marker, var(--plyr-font-size-small, 13px));
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Poster
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
.plyr__poster {
background-color: var(--plyr-video-background, var(--plyr-video-background, rgb(0, 0, 0)));
background-position: 50% 50%;
background-repeat: no-repeat;
background-size: contain;
height: 100%;
left: 0;
opacity: 0;
position: absolute;
top: 0;
transition: opacity 0.2s ease;
width: 100%;
z-index: 1;
pointer-events: none;
}
.plyr--stopped.plyr__poster-enabled .plyr__poster,
.plyr__poster[data-remotion-poster][data-visible] {
opacity: 1;
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Time
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
.plyr__time {
font-size: var(--plyr-font-size-time, var(--plyr-font-size-small, 13px));
border-radius: var(--plyr-time-radius, 5px);
pointer-events: auto;
}
.plyr__time:focus {
outline: none;
}
.plyr__time:focus-visible {
outline: 2px dashed var(--plyr-focus-visible-color, var(--plyr-color-main, hsl(198, 100%, 50%)));
}
.plyr__time + .plyr__time::before {
content: '⁄';
margin-right: var(--plyr-control-spacing, 10px);
}
@media (max-width: 767px) {
.plyr__time + .plyr__time {
display: none;
}
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Tooltip
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
.plyr__tooltip {
background: var(--plyr-tooltip-background, #fff);
border-radius: var(--plyr-tooltip-radius, 5px);
bottom: 100%;
box-shadow: var(--plyr-tooltip-shadow, 0 1px 2px rgba(0, 0, 0, 0.15));
color: var(--plyr-tooltip-color, hsl(216, 15%, 34%));
font-size: var(--plyr-font-size-small, 13px);
font-weight: var(--plyr-font-weight-regular, 400);
left: 50%;
line-height: 1.3;
margin-bottom: calc(calc(var(--plyr-control-spacing, 10px) / 2) * 2);
opacity: 0;
padding: calc(var(--plyr-control-spacing, 10px) / 2)
calc(calc(var(--plyr-control-spacing, 10px) / 2) * 1.5);
pointer-events: none;
position: absolute;
transform: translate(-50%, 10px) scale(0.8);
transform-origin: 50% 100%;
transition:
transform 0.2s 0.1s ease,
opacity 0.2s 0.1s ease;
white-space: nowrap;
z-index: 2;
}
.plyr__tooltip::before {
border-left: var(--plyr-tooltip-arrow-size, 4px) solid transparent;
border-right: var(--plyr-tooltip-arrow-size, 4px) solid transparent;
border-top: var(--plyr-tooltip-arrow-size, 4px) solid var(--plyr-tooltip-background, #fff);
bottom: calc(var(--plyr-tooltip-arrow-size, 4px) * -1);
content: '';
height: 0;
left: 50%;
position: absolute;
transform: translateX(-50%);
width: 0;
z-index: 2;
}
.plyr .plyr__control:hover .plyr__tooltip,
.plyr .plyr__control:focus-visible .plyr__tooltip,
.plyr__tooltip--visible,
.plyr__slider[data-active] .plyr__tooltip {
opacity: 1;
transform: translate(-50%, 0) scale(1);
}
.plyr .plyr__control:hover .plyr__tooltip {
z-index: 3;
}
.plyr__controls > .plyr__control:first-child .plyr__tooltip,
.plyr__controls > .plyr__control:first-child + .plyr__control .plyr__tooltip {
left: 0;
transform: translate(0, 10px) scale(0.8);
transform-origin: 0 100%;
}
.plyr__controls > .plyr__control:first-child .plyr__tooltip::before,
.plyr__controls > .plyr__control:first-child + .plyr__control .plyr__tooltip::before {
left: calc(
(var(--plyr-control-icon-size, 18px) / 2) + calc(var(--plyr-control-spacing, 10px) * 0.7)
);
}
.plyr__controls > .plyr__control:last-child .plyr__tooltip {
left: auto;
right: 0;
transform: translate(0, 10px) scale(0.8);
transform-origin: 100% 100%;
}
.plyr__controls > .plyr__control:last-child .plyr__tooltip::before {
left: auto;
right: calc(
(var(--plyr-control-icon-size, 18px) / 2) + calc(var(--plyr-control-spacing, 10px) * 0.7)
);
transform: translateX(50%);
}
.plyr__controls > .plyr__control:first-child:hover .plyr__tooltip,
.plyr__controls > .plyr__control:first-child:focus-visible .plyr__tooltip,
.plyr__controls > .plyr__control:first-child .plyr__tooltip--visible,
.plyr__controls > .plyr__control:first-child + .plyr__control:hover .plyr__tooltip,
.plyr__controls > .plyr__control:first-child + .plyr__control:focus-visible .plyr__tooltip,
.plyr__controls > .plyr__control:first-child + .plyr__control .plyr__tooltip--visible,
.plyr__controls > .plyr__control:last-child:hover .plyr__tooltip,
.plyr__controls > .plyr__control:last-child:focus-visible .plyr__tooltip,
.plyr__controls > .plyr__control:last-child .plyr__tooltip--visible {
transform: translate(0, 0) scale(1);
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Audio Controls
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
.plyr--audio {
display: block;
width: 100%;
}
.plyr--audio .plyr__controls {
background: var(--plyr-audio-controls-background, #fff);
border-radius: inherit;
color: var(--plyr-audio-control-color, hsl(216, 15%, 34%));
padding: var(--plyr-control-spacing, 10px);
border: var(--plyr-audio-border, 1px solid #edecec);
}
.plyr--audio .plyr__control:focus-visible,
.plyr--audio .plyr__control:hover,
.plyr--audio .plyr__control[role='button'][aria-expanded='true'] {
background: var(
--plyr-audio-control-background-hover,
var(--plyr-color-main, hsl(198, 100%, 50%))
);
color: var(--plyr-audio-control-color-hover, #fff);
}
.plyr.plyr--audio .plyr__slider__track {
background-color: var(
--plyr-audio-range-track-background,
var(--plyr-audio-progress-buffered-background, rgba(193, 200, 209, 0.6))
);
}
.plyr.plyr--audio .plyr__slider:active .plyr__slider__thumb,
.plyr.plyr--audio .plyr__slider[data-dragging] .plyr__slider__thumb {
box-shadow:
var(
--plyr-range-thumb-shadow,
0 1px 1px rgba(35, 40, 47, 0.15),
0 0 0 1px rgba(35, 40, 47, 0.2)
),
0 0 0 var(--plyr-range-thumb-active-shadow-width, 3px)
var(--plyr-audio-range-thumb-active-shadow-color, rgba(35, 40, 47, 0.1));
}
.plyr--audio .plyr__slider__buffer {
color: var(--plyr-audio-progress-buffered-background, rgba(193, 200, 209, 0.6));
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Video Controls
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
.plyr--video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
.plyr--video.plyr--menu-open {
overflow: visible;
}
.plyr--video .plyr__controls {
background: var(
--plyr-video-controls-background,
linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.75))
);
border-bottom-left-radius: inherit;
border-bottom-right-radius: inherit;
bottom: 0;
color: var(--plyr-video-control-color, #fff);
left: 0;
padding: calc(var(--plyr-control-spacing, 10px) / 2);
padding-top: calc(var(--plyr-control-spacing, 10px) * 2);
position: absolute;
right: 0;
transition:
opacity 0.4s ease-in-out,
transform 0.4s ease-in-out;
z-index: 3;
}
@media (min-width: 480px) {
.plyr--video .plyr__controls {
padding: var(--plyr-control-spacing, 10px);
padding-top: calc(var(--plyr-control-spacing, 10px) * 3.5);
}
}
.plyr--video.plyr--hide-controls .plyr__controls {
opacity: 0;
pointer-events: none;
transform: translateY(100%);
}
.plyr--video .plyr__control:focus-visible,
.plyr--video .plyr__control:hover,
.plyr--video .plyr__control[data-hocus],
.plyr--video .plyr__control[role='button'][aria-expanded='true'] {
background: var(
--plyr-video-control-background-hover,
var(--plyr-color-main, hsl(198, 100%, 50%))
);
color: var(--plyr-video-control-color-hover, #fff);
}
.plyr__control--overlaid {
background: var(
--plyr-video-control-background-hover,
var(--plyr-color-main, hsl(198, 100%, 50%))
);
border: 0;
border-radius: 100%;
color: var(--plyr-video-control-color, #fff);
display: none;
left: 50%;
opacity: 0.9;
padding: calc(var(--plyr-control-spacing, 10px) * 1.5);
position: absolute;
top: 50%;
transform: translate(-50%, -50%);
transition: 0.3s;
z-index: 2;
}
.plyr__control--overlaid svg {
left: 2px;
position: relative;
}
.plyr__control--overlaid:hover,
.plyr__control--overlaid:focus,
.plyr__control--overlaid[data-hocus] {
opacity: 1;
}
.plyr--playing .plyr__control--overlaid {
opacity: 0;
visibility: hidden;
}
.plyr.plyr--video .plyr__control--overlaid {
display: block;
}
.plyr.plyr--video .plyr__slider__track {
background-color: var(
--plyr-video-range-track-background,
var(--plyr-video-progress-buffered-background, rgba(255, 255, 255, 0.25))
);
}
.plyr.plyr--video .plyr__slider:active .plyr__slider__thumb,
.plyr.plyr--video .plyr__slider[data-dragging] .plyr__slider__thumb {
box-shadow:
var(
--plyr-range-thumb-shadow,
0 1px 1px rgba(35, 40, 47, 0.15),
0 0 0 1px rgba(35, 40, 47, 0.2)
),
0 0 0 var(--plyr-range-thumb-active-shadow-width, 3px)
var(--plyr-audio-range-thumb-active-shadow-color, rgba(255, 255, 255, 0.5));
}
.plyr--video .plyr__slider__buffer {
color: var(--plyr-video-progress-buffered-background, rgba(255, 255, 255, 0.25));
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Fullscreen
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
.plyr.plyr--fullscreen-active {
border-radius: 0 ;
height: 100%;
margin: 0;
width: 100%;
}
.plyr.plyr--fullscreen-active .plyr__control .icon--exit-fullscreen {
display: block;
}
.plyr.plyr--fullscreen-active .plyr__control .icon--exit-fullscreen + svg {
display: none;
}
.plyr.plyr--fullscreen-active.plyr--hide-controls {
cursor: none;
}
@media (min-width: 1024px) {
.plyr.plyr--fullscreen-active .plyr__captions {
font-size: var(--plyr-font-size-xlarge, 21px);
}
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Preview
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
.plyr__slider__preview {
background-color: var(--plyr-tooltip-background, #fff);
border-radius: var(--plyr-menu-radius, 8px);
box-shadow: var(--plyr-tooltip-shadow, 0 1px 2px rgba(0, 0, 0, 0.15));
margin-bottom: calc(calc(var(--plyr-control-spacing, 10px) / 2) * 2);
opacity: 0;
padding: 3px;
pointer-events: none;
transform: scale(0.8);
transition:
transform 0.2s 0.1s ease,
opacity 0.2s 0.1s ease;
z-index: 2;
}
.plyr__slider__preview[data-visible] {
opacity: 1;
transform: scale(1);
}
.plyr__slider__preview::before {
border-left: var(--plyr-tooltip-arrow-size, 4px) solid transparent;
border-right: var(--plyr-tooltip-arrow-size, 4px) solid transparent;
border-top: var(--plyr-tooltip-arrow-size, 4px) solid var(--plyr-tooltip-background, #fff);
bottom: calc(var(--plyr-tooltip-arrow-size, 4px) * -1);
content: '';
height: 0;
left: calc(50% + var(--preview-arrow-offset));
position: absolute;
transform: translateX(-50%);
width: 0;
z-index: 2;
}
.plyr__slider__preview__thumbnail {
--aspect-ratio: calc(var(--plyr-thumbnail-aspect-ratio, 16 / 9));
--min-width: var(--plyr-thumbnail-min-width, 140px);
--max-width: var(--plyr-thumbnail-max-width, 180px);
background: hsl(216, 15%, 79%);
border-radius: calc(var(--plyr-menu-radius, 8px) - 1px);
overflow: hidden;
position: relative;
display: block;
width: var(--thumbnail-width);
height: var(--thumbnail-height);
contain: strict;
z-index: 0;
min-width: var(--min-width);
min-height: var(--plyr-thumbnail-min-height, calc(var(--min-width) / var(--aspect-ratio)));
max-width: var(--max-width);
max-height: var(--plyr-thumbnail-max-height, calc(var(--max-width) / var(--aspect-ratio)));
}
.plyr__slider__preview__thumbnail img,
.plyr__slider__preview__thumbnail::after {
max-height: none;
max-width: none;
object-fit: contain;
will-change: width, height, transform;
}
.plyr__slider__preview__thumbnail::after {
border-radius: inherit;
box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.15);
content: '';
height: 100%;
left: 0;
pointer-events: none;
position: absolute;
top: 0;
width: 100%;
}
.plyr__slider__preview__time-container {
background: var(
--plyr-video-controls-background,
linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.75))
);
border-bottom-left-radius: calc(var(--plyr-menu-radius, 8px) - 1px);
border-bottom-right-radius: calc(var(--plyr-menu-radius, 8px) - 1px);
bottom: 0;
left: 0;
line-height: 1.1;
padding: 20px 6px 6px;
position: absolute;
right: 0;
z-index: 3;
}
.plyr__slider__preview__time {
color: #fff;
font-size: var(--plyr-font-size-time, var(--plyr-font-size-small, 13px));
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Preview Scrubbing
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
.plyr__preview-scrubbing {
bottom: 0;
filter: blur(1px);
left: 0;
margin: auto;
opacity: 0;
contain: strict;
overflow: hidden;
pointer-events: none;
position: absolute;
right: 0;
top: 0;
transition: opacity 0.3s ease;
width: var(--thumbnail-width);
height: var(--thumbnail-height);
min-width: 100%;
min-height: 100%;
z-index: 1;
}
[data-seeking] .plyr__preview-scrubbing {
opacity: 1;
}
.plyr__preview-scrubbing img {
max-height: none;
max-width: none;
object-fit: contain;
will-change: width, height, transform;
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Gesture
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
.plyr__gesture {
contain: content;
display: block;
height: 100%;
inset: 0;
opacity: 0;
pointer-events: none ;
position: absolute;
visibility: hidden;
width: 100%;
z-index: 0;
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Live Button
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
.plyr__live-button {
background-color: unset ;
margin-left: calc(var(--plyr-control-spacing, 10px) * 1.5) ;
}
.plyr__live-button[data-focus] {
outline-offset: -5px;
}
.plyr__live-button[data-edge] {
cursor: unset;
}
.plyr__live-button__text {
background-color: var(--plyr-live-button-bg, #8a8a8a);
border-radius: var(--plyr-live-button-border-radius, 2px);
color: var(--plyr-live-button-color, #161616);
font-family: var(--plyr-font-family, sans-serif);
font-size: var(--plyr-font-size-live-button, 12px);
font-weight: var(--plyr-font-weight-live-button, 600);
letter-spacing: var(--plyr-live-button-letter-spacing, 1.5px);
padding: var(--plyr-live-button-padding, 1px 4px);
transition: color 0.3s ease;
}
.plyr__live-button[data-edge] .plyr__live-button__text {
background-color: var(--plyr-live-button-edge-bg, #dc2626);
color: var(--plyr-live-button-edge-color, #f5f5f5);
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Utils
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
.plyr--no-transition {
transition: none ;
}
.plyr__sr-only {
clip: rect(1px, 1px, 1px, 1px);
overflow: hidden;
border: 0 ;
height: 1px ;
padding: 0 ;
position: absolute ;
width: 1px ;
}
.plyr [hidden],
.plyr [role][aria-hidden='true'] {
display: none ;
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Keyframes
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
@keyframes plyr-progress {
to {
background-position: var(--plyr-progress-loading-size, 25px) 0;
}
}
@keyframes plyr-popup {
0% {
opacity: 0.5;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes plyr-fade-in {
from {
opacity: 0;
}
to {
opacity: 1;
}
}