UNPKG

@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
.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 !important; } .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 !important; 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 !important; position: absolute; visibility: hidden; width: 100%; z-index: 0; } /* * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Live Button * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ .plyr__live-button { background-color: unset !important; margin-left: calc(var(--plyr-control-spacing, 10px) * 1.5) !important; } .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 !important; } .plyr__sr-only { clip: rect(1px, 1px, 1px, 1px); overflow: hidden; border: 0 !important; height: 1px !important; padding: 0 !important; position: absolute !important; width: 1px !important; } .plyr [hidden], .plyr [role][aria-hidden='true'] { display: none !important; } /* * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * 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; } }