/*
 * Copyright 2026 ADM Media Consulting SA
 * SPDX-License-Identifier: Apache-2.0
 *
 * The built stylesheet also includes video-js.css from Video.js
 * (Copyright Video.js contributors, Apache-2.0) and its embedded VideoJS icon
 * font (videojs-font, Apache-2.0). See THIRD_PARTY_NOTICES.txt.
 */
.vjs-svg-icon {
  display: inline-block;
  background-repeat: no-repeat;
  background-position: center;
  fill: currentColor;
  height: 1.8em;
  width: 1.8em;
}
.vjs-svg-icon:before {
  content: none !important;
}

.vjs-svg-icon:hover,
.vjs-control:focus .vjs-svg-icon {
  filter: drop-shadow(0 0 0.25em #fff);
}

.vjs-modal-dialog .vjs-modal-dialog-content, .video-js .vjs-modal-dialog, .vjs-button > .vjs-icon-placeholder:before, .video-js .vjs-big-play-button .vjs-icon-placeholder:before {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.vjs-button > .vjs-icon-placeholder:before, .video-js .vjs-big-play-button .vjs-icon-placeholder:before {
  text-align: center;
}

@font-face {
  font-family: VideoJS;
  src: url(data:application/font-woff;charset=utf-8;base64,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) format("woff");
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-play, .video-js .vjs-play-control .vjs-icon-placeholder, .video-js .vjs-big-play-button .vjs-icon-placeholder:before {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-play:before, .video-js .vjs-play-control .vjs-icon-placeholder:before, .video-js .vjs-big-play-button .vjs-icon-placeholder:before {
  content: "\f101";
}

.vjs-icon-play-circle {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-play-circle:before {
  content: "\f102";
}

.vjs-icon-pause, .video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-pause:before, .video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder:before {
  content: "\f103";
}

.vjs-icon-volume-mute, .video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-volume-mute:before, .video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder:before {
  content: "\f104";
}

.vjs-icon-volume-low, .video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-volume-low:before, .video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder:before {
  content: "\f105";
}

.vjs-icon-volume-mid, .video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-volume-mid:before, .video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder:before {
  content: "\f106";
}

.vjs-icon-volume-high, .video-js .vjs-mute-control .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-volume-high:before, .video-js .vjs-mute-control .vjs-icon-placeholder:before {
  content: "\f107";
}

.vjs-icon-fullscreen-enter, .video-js .vjs-fullscreen-control .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-fullscreen-enter:before, .video-js .vjs-fullscreen-control .vjs-icon-placeholder:before {
  content: "\f108";
}

.vjs-icon-fullscreen-exit, .video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-fullscreen-exit:before, .video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder:before {
  content: "\f109";
}

.vjs-icon-spinner {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-spinner:before {
  content: "\f10a";
}

.vjs-icon-subtitles, .video-js .vjs-subs-caps-button .vjs-icon-placeholder,
.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder,
.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder,
.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder,
.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder, .video-js .vjs-subtitles-button .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-subtitles:before, .video-js .vjs-subs-caps-button .vjs-icon-placeholder:before,
.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder:before,
.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder:before,
.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder:before,
.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder:before, .video-js .vjs-subtitles-button .vjs-icon-placeholder:before {
  content: "\f10b";
}

.vjs-icon-captions, .video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder,
.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder, .video-js .vjs-captions-button .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-captions:before, .video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder:before,
.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder:before, .video-js .vjs-captions-button .vjs-icon-placeholder:before {
  content: "\f10c";
}

.vjs-icon-hd {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-hd:before {
  content: "\f10d";
}

.vjs-icon-chapters, .video-js .vjs-chapters-button .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-chapters:before, .video-js .vjs-chapters-button .vjs-icon-placeholder:before {
  content: "\f10e";
}

.vjs-icon-downloading {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-downloading:before {
  content: "\f10f";
}

.vjs-icon-file-download {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-file-download:before {
  content: "\f110";
}

.vjs-icon-file-download-done {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-file-download-done:before {
  content: "\f111";
}

.vjs-icon-file-download-off {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-file-download-off:before {
  content: "\f112";
}

.vjs-icon-share {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-share:before {
  content: "\f113";
}

.vjs-icon-cog {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-cog:before {
  content: "\f114";
}

.vjs-icon-square {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-square:before {
  content: "\f115";
}

.vjs-icon-circle, .vjs-seek-to-live-control .vjs-icon-placeholder, .video-js .vjs-volume-level, .video-js .vjs-play-progress {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-circle:before, .vjs-seek-to-live-control .vjs-icon-placeholder:before, .video-js .vjs-volume-level:before, .video-js .vjs-play-progress:before {
  content: "\f116";
}

.vjs-icon-circle-outline {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-circle-outline:before {
  content: "\f117";
}

.vjs-icon-circle-inner-circle {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-circle-inner-circle:before {
  content: "\f118";
}

.vjs-icon-cancel, .video-js .vjs-control.vjs-close-button .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-cancel:before, .video-js .vjs-control.vjs-close-button .vjs-icon-placeholder:before {
  content: "\f119";
}

.vjs-icon-repeat {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-repeat:before {
  content: "\f11a";
}

.vjs-icon-replay, .video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-replay:before, .video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder:before {
  content: "\f11b";
}

.vjs-icon-replay-5, .video-js .vjs-skip-backward-5 .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-replay-5:before, .video-js .vjs-skip-backward-5 .vjs-icon-placeholder:before {
  content: "\f11c";
}

.vjs-icon-replay-10, .video-js .vjs-skip-backward-10 .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-replay-10:before, .video-js .vjs-skip-backward-10 .vjs-icon-placeholder:before {
  content: "\f11d";
}

.vjs-icon-replay-30, .video-js .vjs-skip-backward-30 .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-replay-30:before, .video-js .vjs-skip-backward-30 .vjs-icon-placeholder:before {
  content: "\f11e";
}

.vjs-icon-forward-5, .video-js .vjs-skip-forward-5 .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-forward-5:before, .video-js .vjs-skip-forward-5 .vjs-icon-placeholder:before {
  content: "\f11f";
}

.vjs-icon-forward-10, .video-js .vjs-skip-forward-10 .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-forward-10:before, .video-js .vjs-skip-forward-10 .vjs-icon-placeholder:before {
  content: "\f120";
}

.vjs-icon-forward-30, .video-js .vjs-skip-forward-30 .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-forward-30:before, .video-js .vjs-skip-forward-30 .vjs-icon-placeholder:before {
  content: "\f121";
}

.vjs-icon-audio, .video-js .vjs-audio-button .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-audio:before, .video-js .vjs-audio-button .vjs-icon-placeholder:before {
  content: "\f122";
}

.vjs-icon-next-item {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-next-item:before {
  content: "\f123";
}

.vjs-icon-previous-item {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-previous-item:before {
  content: "\f124";
}

.vjs-icon-shuffle {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-shuffle:before {
  content: "\f125";
}

.vjs-icon-cast {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-cast:before {
  content: "\f126";
}

.vjs-icon-picture-in-picture-enter, .video-js .vjs-picture-in-picture-control .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-picture-in-picture-enter:before, .video-js .vjs-picture-in-picture-control .vjs-icon-placeholder:before {
  content: "\f127";
}

.vjs-icon-picture-in-picture-exit, .video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-picture-in-picture-exit:before, .video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder:before {
  content: "\f128";
}

.vjs-icon-facebook {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-facebook:before {
  content: "\f129";
}

.vjs-icon-linkedin {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-linkedin:before {
  content: "\f12a";
}

.vjs-icon-twitter {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-twitter:before {
  content: "\f12b";
}

.vjs-icon-tumblr {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-tumblr:before {
  content: "\f12c";
}

.vjs-icon-pinterest {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-pinterest:before {
  content: "\f12d";
}

.vjs-icon-audio-description, .video-js .vjs-descriptions-button .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-audio-description:before, .video-js .vjs-descriptions-button .vjs-icon-placeholder:before {
  content: "\f12e";
}

.video-js {
  display: inline-block;
  vertical-align: top;
  box-sizing: border-box;
  color: #fff;
  background-color: #000;
  position: relative;
  padding: 0;
  font-size: 10px;
  line-height: 1;
  font-weight: normal;
  font-style: normal;
  font-family: Arial, Helvetica, sans-serif;
  word-break: initial;
}
.video-js:-moz-full-screen {
  position: absolute;
}
.video-js:-webkit-full-screen {
  width: 100% !important;
  height: 100% !important;
}

.video-js[tabindex="-1"] {
  outline: none;
}

.video-js *,
.video-js *:before,
.video-js *:after {
  box-sizing: inherit;
}

.video-js ul {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
  list-style-position: outside;
  margin-left: 0;
  margin-right: 0;
  margin-top: 0;
  margin-bottom: 0;
}

.video-js.vjs-fluid,
.video-js.vjs-16-9,
.video-js.vjs-4-3,
.video-js.vjs-9-16,
.video-js.vjs-1-1 {
  width: 100%;
  max-width: 100%;
}

.video-js.vjs-fluid:not(.vjs-audio-only-mode),
.video-js.vjs-16-9:not(.vjs-audio-only-mode),
.video-js.vjs-4-3:not(.vjs-audio-only-mode),
.video-js.vjs-9-16:not(.vjs-audio-only-mode),
.video-js.vjs-1-1:not(.vjs-audio-only-mode) {
  height: 0;
}

.video-js.vjs-16-9:not(.vjs-audio-only-mode) {
  padding-top: 56.25%;
}

.video-js.vjs-4-3:not(.vjs-audio-only-mode) {
  padding-top: 75%;
}

.video-js.vjs-9-16:not(.vjs-audio-only-mode) {
  padding-top: 177.7777777778%;
}

.video-js.vjs-1-1:not(.vjs-audio-only-mode) {
  padding-top: 100%;
}

.video-js.vjs-fill:not(.vjs-audio-only-mode) {
  width: 100%;
  height: 100%;
}

.video-js .vjs-tech {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.video-js.vjs-audio-only-mode .vjs-tech {
  display: none;
}

body.vjs-full-window,
body.vjs-pip-window {
  padding: 0;
  margin: 0;
  height: 100%;
}

.vjs-full-window .video-js.vjs-fullscreen,
body.vjs-pip-window .video-js {
  position: fixed;
  overflow: hidden;
  z-index: 1000;
  left: 0;
  top: 0;
  bottom: 0;
  right: 0;
}

.video-js.vjs-fullscreen:not(.vjs-ios-native-fs),
body.vjs-pip-window .video-js {
  width: 100% !important;
  height: 100% !important;
  padding-top: 0 !important;
  display: block;
}

.video-js.vjs-fullscreen.vjs-user-inactive {
  cursor: none;
}

.vjs-pip-container .vjs-pip-text {
  position: absolute;
  bottom: 10%;
  font-size: 2em;
  background-color: rgba(0, 0, 0, 0.7);
  padding: 0.5em;
  text-align: center;
  width: 100%;
}

.vjs-layout-tiny.vjs-pip-container .vjs-pip-text,
.vjs-layout-x-small.vjs-pip-container .vjs-pip-text,
.vjs-layout-small.vjs-pip-container .vjs-pip-text {
  bottom: 0;
  font-size: 1.4em;
}

.vjs-hidden {
  display: none !important;
}

.vjs-disabled {
  opacity: 0.5;
  cursor: default;
}

.video-js .vjs-offscreen {
  height: 1px;
  left: -9999px;
  position: absolute;
  top: 0;
  width: 1px;
}

.vjs-lock-showing {
  display: block !important;
  opacity: 1 !important;
  visibility: visible !important;
}

.vjs-no-js {
  padding: 20px;
  color: #fff;
  background-color: #000;
  font-size: 18px;
  font-family: Arial, Helvetica, sans-serif;
  text-align: center;
  width: 300px;
  height: 150px;
  margin: 0px auto;
}

.vjs-no-js a,
.vjs-no-js a:visited {
  color: #66A8CC;
}

.video-js .vjs-big-play-button {
  font-size: 3em;
  line-height: 1.5em;
  height: 1.63332em;
  width: 3em;
  display: block;
  position: absolute;
  top: 50%;
  left: 50%;
  padding: 0;
  margin-top: -0.81666em;
  margin-left: -1.5em;
  cursor: pointer;
  opacity: 1;
  border: 0.06666em solid #fff;
  background-color: #2B333F;
  background-color: rgba(43, 51, 63, 0.7);
  border-radius: 0.3em;
  transition: all 0.4s;
}
.vjs-big-play-button .vjs-svg-icon {
  width: 1em;
  height: 1em;
  position: absolute;
  top: 50%;
  left: 50%;
  line-height: 1;
  transform: translate(-50%, -50%);
}

.video-js:hover .vjs-big-play-button,
.video-js .vjs-big-play-button:focus {
  border-color: #fff;
  background-color: rgb(114.9141509434, 132.7028301887, 159.3858490566);
  background-color: rgba(114.9141509434, 132.7028301887, 159.3858490566, 0.5);
  transition: all 0s;
}

.vjs-controls-disabled .vjs-big-play-button,
.vjs-has-started .vjs-big-play-button,
.vjs-using-native-controls .vjs-big-play-button,
.vjs-error .vjs-big-play-button {
  display: none;
}

.vjs-has-started.vjs-paused.vjs-show-big-play-button-on-pause:not(.vjs-seeking, .vjs-scrubbing, .vjs-error) .vjs-big-play-button {
  display: block;
}

.video-js button {
  background: none;
  border: none;
  color: inherit;
  display: inline-block;
  font-size: inherit;
  line-height: inherit;
  text-transform: none;
  text-decoration: none;
  transition: none;
  -webkit-appearance: none;
  -moz-appearance: none;
       appearance: none;
}

.video-js.vjs-spatial-navigation-enabled .vjs-button:focus {
  outline: 0.0625em solid white;
  box-shadow: none;
}

.vjs-control .vjs-button {
  width: 100%;
  height: 100%;
}

.video-js .vjs-control.vjs-close-button {
  cursor: pointer;
  height: 3em;
  position: absolute;
  right: 0;
  top: 0.5em;
  z-index: 2;
}
.video-js .vjs-modal-dialog {
  background: rgba(0, 0, 0, 0.8);
  background: linear-gradient(180deg, rgba(0, 0, 0, 0.8), rgba(255, 255, 255, 0));
  overflow: auto;
}

.video-js .vjs-modal-dialog > * {
  box-sizing: border-box;
}

.vjs-modal-dialog .vjs-modal-dialog-content {
  font-size: 1.2em;
  line-height: 1.5;
  padding: 20px 24px;
  z-index: 1;
}

.vjs-menu-button {
  cursor: pointer;
}

.vjs-menu-button.vjs-disabled {
  cursor: default;
}

.vjs-workinghover .vjs-menu-button.vjs-disabled:hover .vjs-menu {
  display: none;
}

.vjs-menu .vjs-menu-content {
  display: block;
  padding: 0;
  margin: 0;
  font-family: Arial, Helvetica, sans-serif;
  overflow: auto;
}

.vjs-menu .vjs-menu-content > * {
  box-sizing: border-box;
}

.vjs-scrubbing .vjs-control.vjs-menu-button:hover .vjs-menu {
  display: none;
}

.vjs-menu li {
  display: flex;
  justify-content: center;
  list-style: none;
  margin: 0;
  padding: 0.2em 0;
  line-height: 1.4em;
  font-size: 1.2em;
  text-align: center;
  text-transform: lowercase;
}

.vjs-menu li.vjs-menu-item:focus,
.vjs-menu li.vjs-menu-item:hover,
.js-focus-visible .vjs-menu li.vjs-menu-item:hover {
  background-color: rgb(114.9141509434, 132.7028301887, 159.3858490566);
  background-color: rgba(114.9141509434, 132.7028301887, 159.3858490566, 0.5);
}

.vjs-menu li.vjs-selected,
.vjs-menu li.vjs-selected:focus,
.vjs-menu li.vjs-selected:hover,
.js-focus-visible .vjs-menu li.vjs-selected:hover {
  background-color: #fff;
  color: #2B333F;
}
.vjs-menu li.vjs-selected .vjs-svg-icon,
.vjs-menu li.vjs-selected:focus .vjs-svg-icon,
.vjs-menu li.vjs-selected:hover .vjs-svg-icon,
.js-focus-visible .vjs-menu li.vjs-selected:hover .vjs-svg-icon {
  fill: #000000;
}

.video-js .vjs-menu *:not(.vjs-selected):focus:not(:focus-visible),
.js-focus-visible .vjs-menu *:not(.vjs-selected):focus:not(.focus-visible) {
  background: none;
}

.vjs-menu li.vjs-menu-title {
  text-align: center;
  text-transform: uppercase;
  font-size: 1em;
  line-height: 2em;
  padding: 0;
  margin: 0 0 0.3em 0;
  font-weight: bold;
  cursor: default;
}

.vjs-menu-button-popup .vjs-menu {
  display: none;
  position: absolute;
  bottom: 0;
  width: 10em;
  left: -3em;
  height: 0em;
  margin-bottom: 1.5em;
  border-top-color: rgba(43, 51, 63, 0.7);
}

.vjs-pip-window .vjs-menu-button-popup .vjs-menu {
  left: unset;
  right: 1em;
}

.vjs-menu-button-popup .vjs-menu .vjs-menu-content {
  background-color: #2B333F;
  background-color: rgba(43, 51, 63, 0.7);
  position: absolute;
  width: 100%;
  bottom: 1.5em;
  max-height: 15em;
}

.vjs-layout-tiny .vjs-menu-button-popup .vjs-menu .vjs-menu-content,
.vjs-layout-x-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content {
  max-height: 5em;
}

.vjs-layout-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content {
  max-height: 10em;
}

.vjs-layout-medium .vjs-menu-button-popup .vjs-menu .vjs-menu-content {
  max-height: 14em;
}

.vjs-layout-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content,
.vjs-layout-x-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content,
.vjs-layout-huge .vjs-menu-button-popup .vjs-menu .vjs-menu-content {
  max-height: 25em;
}

.vjs-workinghover .vjs-menu-button-popup.vjs-hover .vjs-menu,
.vjs-menu-button-popup .vjs-menu.vjs-lock-showing {
  display: block;
}

.video-js .vjs-menu-button-inline {
  transition: all 0.4s;
  overflow: hidden;
}

.video-js .vjs-menu-button-inline:before {
  width: 2.222222222em;
}

.video-js .vjs-menu-button-inline:hover,
.video-js .vjs-menu-button-inline:focus,
.video-js .vjs-menu-button-inline.vjs-slider-active {
  width: 12em;
}

.vjs-menu-button-inline .vjs-menu {
  opacity: 0;
  height: 100%;
  width: auto;
  position: absolute;
  left: 4em;
  top: 0;
  padding: 0;
  margin: 0;
  transition: all 0.4s;
}

.vjs-menu-button-inline:hover .vjs-menu,
.vjs-menu-button-inline:focus .vjs-menu,
.vjs-menu-button-inline.vjs-slider-active .vjs-menu {
  display: block;
  opacity: 1;
}

.vjs-menu-button-inline .vjs-menu-content {
  width: auto;
  height: 100%;
  margin: 0;
  overflow: hidden;
}

.video-js .vjs-control-bar {
  display: none;
  width: 100%;
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 3em;
  background-color: #2B333F;
  background-color: rgba(43, 51, 63, 0.7);
}

.video-js.vjs-spatial-navigation-enabled .vjs-control-bar {
  gap: 1px;
}

.video-js:not(.vjs-controls-disabled, .vjs-using-native-controls, .vjs-error) .vjs-control-bar.vjs-lock-showing {
  display: flex !important;
}

.vjs-has-started .vjs-control-bar,
.vjs-audio-only-mode .vjs-control-bar {
  display: flex;
  visibility: visible;
  opacity: 1;
  transition: visibility 0.1s, opacity 0.1s;
}

.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar {
  visibility: visible;
  opacity: 0;
  pointer-events: none;
  transition: visibility 1s, opacity 1s;
}

.vjs-controls-disabled .vjs-control-bar,
.vjs-using-native-controls .vjs-control-bar,
.vjs-error .vjs-control-bar {
  display: none !important;
}

.vjs-audio.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar,
.vjs-audio-only-mode.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.video-js .vjs-control {
  position: relative;
  text-align: center;
  margin: 0;
  padding: 0;
  height: 100%;
  width: 4em;
  flex: none;
}

.video-js .vjs-control.vjs-visible-text {
  width: auto;
  padding-left: 1em;
  padding-right: 1em;
}

.vjs-button > .vjs-icon-placeholder:before {
  font-size: 1.8em;
  line-height: 1.67;
}

.vjs-button > .vjs-icon-placeholder {
  display: block;
}

.vjs-button > .vjs-svg-icon {
  display: inline-block;
}

.video-js .vjs-control:focus:before,
.video-js .vjs-control:hover:before,
.video-js .vjs-control:focus {
  text-shadow: 0em 0em 1em white;
}

.video-js *:not(.vjs-visible-text) > .vjs-control-text {
  border: 0;
  clip: rect(0 0 0 0);
  height: 1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
}

.video-js .vjs-custom-control-spacer {
  display: none;
}

.video-js .vjs-progress-control {
  cursor: pointer;
  flex: auto;
  display: flex;
  align-items: center;
  min-width: 4em;
  touch-action: none;
}

.video-js .vjs-progress-control.disabled {
  cursor: default;
}

.vjs-live .vjs-progress-control {
  display: none;
}

.vjs-liveui .vjs-progress-control {
  display: flex;
  align-items: center;
}

.video-js .vjs-progress-holder {
  flex: auto;
  transition: all 0.2s;
  height: 0.3em;
}

.video-js .vjs-progress-control .vjs-progress-holder {
  margin: 0 10px;
}

.video-js .vjs-progress-control:hover .vjs-progress-holder,
.video-js.vjs-scrubbing.vjs-touch-enabled .vjs-progress-control .vjs-progress-holder {
  font-size: 1.6666666667em;
}

.video-js .vjs-progress-control:hover .vjs-progress-holder.disabled {
  font-size: 1em;
}

.video-js .vjs-progress-holder .vjs-play-progress,
.video-js .vjs-progress-holder .vjs-load-progress,
.video-js .vjs-progress-holder .vjs-load-progress div {
  position: absolute;
  display: block;
  height: 100%;
  margin: 0;
  padding: 0;
  width: 0;
}

.video-js .vjs-play-progress {
  background-color: #fff;
}
.video-js .vjs-play-progress:before {
  font-size: 0.9em;
  position: absolute;
  right: -0.5em;
  line-height: 0.35em;
  z-index: 1;
}

.vjs-svg-icons-enabled .vjs-play-progress:before {
  content: none !important;
}

.vjs-play-progress .vjs-svg-icon {
  position: absolute;
  top: -0.35em;
  right: -0.4em;
  width: 0.9em;
  height: 0.9em;
  pointer-events: none;
  line-height: 0.15em;
  z-index: 1;
}

.video-js .vjs-load-progress {
  background: rgba(114.9141509434, 132.7028301887, 159.3858490566, 0.5);
}

.video-js .vjs-load-progress div {
  background: rgba(114.9141509434, 132.7028301887, 159.3858490566, 0.75);
}

.video-js .vjs-time-tooltip {
  background-color: #fff;
  background-color: rgba(255, 255, 255, 0.8);
  border-radius: 0.3em;
  color: #000;
  float: right;
  font-family: Arial, Helvetica, sans-serif;
  font-size: 1em;
  padding: 6px 8px 8px 8px;
  pointer-events: none;
  position: absolute;
  top: -3.4em;
  visibility: hidden;
  z-index: 1;
}

.video-js .vjs-progress-holder:focus .vjs-time-tooltip {
  display: none;
}

.video-js .vjs-progress-control:hover .vjs-time-tooltip,
.video-js .vjs-progress-control:hover .vjs-progress-holder:focus .vjs-time-tooltip,
.video-js.vjs-scrubbing.vjs-touch-enabled .vjs-progress-control .vjs-time-tooltip {
  display: block;
  font-size: 0.6em;
  visibility: visible;
}

.video-js .vjs-progress-control.disabled:hover .vjs-time-tooltip {
  font-size: 1em;
}

.video-js .vjs-progress-control .vjs-mouse-display {
  display: none;
  position: absolute;
  width: 1px;
  height: 100%;
  background-color: #000;
  z-index: 1;
}

.video-js .vjs-progress-control:hover .vjs-mouse-display {
  display: block;
}

.video-js.vjs-scrubbing.vjs-touch-enabled .vjs-progress-control .vjs-mouse-display {
  display: block;
}

.video-js.vjs-user-inactive .vjs-progress-control .vjs-mouse-display,
.video-js.vjs-touch-enabled:not(.vjs-scrubbing) .vjs-progress-control .vjs-mouse-display {
  visibility: hidden;
  opacity: 0;
  transition: visibility 1s, opacity 1s;
}

.vjs-mouse-display .vjs-time-tooltip {
  color: #fff;
  background-color: #000;
  background-color: rgba(0, 0, 0, 0.8);
}

.video-js .vjs-slider {
  position: relative;
  cursor: pointer;
  padding: 0;
  margin: 0 0.45em 0 0.45em;
  /* iOS Safari */
  -webkit-touch-callout: none;
  /* Safari, and Chrome 53 */
  -webkit-user-select: none;
  /* Non-prefixed version, currently supported by Chrome and Opera */
  -moz-user-select: none;
       user-select: none;
  background-color: rgb(114.9141509434, 132.7028301887, 159.3858490566);
  background-color: rgba(114.9141509434, 132.7028301887, 159.3858490566, 0.5);
}

.video-js .vjs-slider.disabled {
  cursor: default;
}

.video-js .vjs-slider:focus {
  text-shadow: 0em 0em 1em white;
  box-shadow: 0 0 1em #fff;
}

.video-js.vjs-spatial-navigation-enabled .vjs-slider:focus {
  outline: 0.0625em solid white;
}

.video-js .vjs-mute-control {
  cursor: pointer;
  flex: none;
}
.video-js .vjs-volume-control {
  cursor: pointer;
  margin-right: 1em;
  display: flex;
}

.video-js .vjs-volume-control.vjs-volume-horizontal {
  width: 5em;
}

.video-js .vjs-volume-panel .vjs-volume-control {
  visibility: visible;
  opacity: 0;
  width: 1px;
  height: 1px;
  margin-left: -1px;
}

.video-js .vjs-volume-panel {
  transition: width 1s;
}
.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control, .video-js .vjs-volume-panel:active .vjs-volume-control, .video-js .vjs-volume-panel:focus .vjs-volume-control, .video-js .vjs-volume-panel .vjs-volume-control:active, .video-js .vjs-volume-panel.vjs-hover .vjs-mute-control ~ .vjs-volume-control, .video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active {
  visibility: visible;
  opacity: 1;
  position: relative;
  transition: visibility 0.1s, opacity 0.1s, height 0.1s, width 0.1s, left 0s, top 0s;
}
.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-horizontal, .video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-horizontal, .video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-horizontal, .video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-horizontal, .video-js .vjs-volume-panel.vjs-hover .vjs-mute-control ~ .vjs-volume-control.vjs-volume-horizontal, .video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-horizontal {
  width: 5em;
  height: 3em;
  margin-right: 0;
}
.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-vertical, .video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-vertical, .video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-vertical, .video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-vertical, .video-js .vjs-volume-panel.vjs-hover .vjs-mute-control ~ .vjs-volume-control.vjs-volume-vertical, .video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-vertical {
  left: -3.5em;
  transition: left 0s;
}
.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover, .video-js .vjs-volume-panel.vjs-volume-panel-horizontal:active, .video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active {
  width: 10em;
  transition: width 0.1s;
}
.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-mute-toggle-only {
  width: 4em;
}

.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical {
  height: 8em;
  width: 3em;
  left: -3000em;
  transition: visibility 1s, opacity 1s, height 1s 1s, width 1s 1s, left 1s 1s, top 1s 1s;
}

.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal {
  transition: visibility 1s, opacity 1s, height 1s 1s, width 1s, left 1s 1s, top 1s 1s;
}

.video-js .vjs-volume-panel {
  display: flex;
}

.video-js .vjs-volume-bar {
  margin: 1.35em 0.45em;
}

.vjs-volume-bar.vjs-slider-horizontal {
  width: 5em;
  height: 0.3em;
}

.vjs-volume-bar.vjs-slider-vertical {
  width: 0.3em;
  height: 5em;
  margin: 1.35em auto;
}

.video-js .vjs-volume-level {
  position: absolute;
  bottom: 0;
  left: 0;
  background-color: #fff;
}
.video-js .vjs-volume-level:before {
  position: absolute;
  font-size: 0.9em;
  z-index: 1;
}

.vjs-slider-vertical .vjs-volume-level {
  width: 0.3em;
}
.vjs-slider-vertical .vjs-volume-level:before {
  top: -0.5em;
  left: -0.3em;
  z-index: 1;
}

.vjs-svg-icons-enabled .vjs-volume-level:before {
  content: none;
}

.vjs-volume-level .vjs-svg-icon {
  position: absolute;
  width: 0.9em;
  height: 0.9em;
  pointer-events: none;
  z-index: 1;
}

.vjs-slider-horizontal .vjs-volume-level {
  height: 0.3em;
}
.vjs-slider-horizontal .vjs-volume-level:before {
  line-height: 0.35em;
  right: -0.5em;
}

.vjs-slider-horizontal .vjs-volume-level .vjs-svg-icon {
  right: -0.3em;
  transform: translateY(-50%);
}

.vjs-slider-vertical .vjs-volume-level .vjs-svg-icon {
  top: -0.55em;
  transform: translateX(-50%);
}

.video-js .vjs-volume-panel.vjs-volume-panel-vertical {
  width: 4em;
}

.vjs-volume-bar.vjs-slider-vertical .vjs-volume-level {
  height: 100%;
}

.vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level {
  width: 100%;
}

.video-js .vjs-volume-vertical {
  width: 3em;
  height: 8em;
  bottom: 8em;
  background-color: #2B333F;
  background-color: rgba(43, 51, 63, 0.7);
}

.video-js .vjs-volume-horizontal .vjs-menu {
  left: -2em;
}

.video-js .vjs-volume-tooltip {
  background-color: #fff;
  background-color: rgba(255, 255, 255, 0.8);
  border-radius: 0.3em;
  color: #000;
  float: right;
  font-family: Arial, Helvetica, sans-serif;
  font-size: 1em;
  padding: 6px 8px 8px 8px;
  pointer-events: none;
  position: absolute;
  top: -3.4em;
  visibility: hidden;
  z-index: 1;
}

.video-js .vjs-volume-control:hover .vjs-volume-tooltip,
.video-js .vjs-volume-control:hover .vjs-progress-holder:focus .vjs-volume-tooltip {
  display: block;
  font-size: 1em;
  visibility: visible;
}

.video-js .vjs-volume-vertical:hover .vjs-volume-tooltip,
.video-js .vjs-volume-vertical:hover .vjs-progress-holder:focus .vjs-volume-tooltip {
  left: 1em;
  top: -12px;
}

.video-js .vjs-volume-control.disabled:hover .vjs-volume-tooltip {
  font-size: 1em;
}

.video-js .vjs-volume-control .vjs-mouse-display {
  display: none;
  position: absolute;
  width: 100%;
  height: 1px;
  background-color: #000;
  z-index: 1;
}

.video-js .vjs-volume-horizontal .vjs-mouse-display {
  width: 1px;
  height: 100%;
}

.video-js .vjs-volume-control:hover .vjs-mouse-display {
  display: block;
}

.video-js.vjs-user-inactive .vjs-volume-control .vjs-mouse-display {
  visibility: hidden;
  opacity: 0;
  transition: visibility 1s, opacity 1s;
}

.vjs-mouse-display .vjs-volume-tooltip {
  color: #fff;
  background-color: #000;
  background-color: rgba(0, 0, 0, 0.8);
}

.vjs-poster {
  display: inline-block;
  vertical-align: middle;
  cursor: pointer;
  margin: 0;
  padding: 0;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  height: 100%;
}

.vjs-has-started .vjs-poster,
.vjs-using-native-controls .vjs-poster {
  display: none;
}

.vjs-audio.vjs-has-started .vjs-poster,
.vjs-has-started.vjs-audio-poster-mode .vjs-poster,
.vjs-pip-container.vjs-has-started .vjs-poster {
  display: block;
}

.vjs-poster img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.video-js .vjs-live-control {
  display: flex;
  align-items: flex-start;
  flex: auto;
  font-size: 1em;
  line-height: 3em;
}

.video-js:not(.vjs-live) .vjs-live-control,
.video-js.vjs-liveui .vjs-live-control {
  display: none;
}

.video-js .vjs-seek-to-live-control {
  align-items: center;
  cursor: pointer;
  flex: none;
  display: inline-flex;
  height: 100%;
  padding-left: 0.5em;
  padding-right: 0.5em;
  font-size: 1em;
  line-height: 3em;
  width: auto;
  min-width: 4em;
}

.video-js.vjs-live:not(.vjs-liveui) .vjs-seek-to-live-control,
.video-js:not(.vjs-live) .vjs-seek-to-live-control {
  display: none;
}

.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge {
  cursor: auto;
}

.vjs-seek-to-live-control .vjs-icon-placeholder {
  margin-right: 0.5em;
  color: #888;
}

.vjs-svg-icons-enabled .vjs-seek-to-live-control {
  line-height: 0;
}

.vjs-seek-to-live-control .vjs-svg-icon {
  width: 1em;
  height: 1em;
  pointer-events: none;
  fill: #888888;
}

.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge .vjs-icon-placeholder {
  color: red;
}

.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge .vjs-svg-icon {
  fill: red;
}

.video-js .vjs-time-control {
  flex: none;
  font-size: 1em;
  line-height: 3em;
  min-width: 2em;
  width: auto;
  padding-left: 1em;
  padding-right: 1em;
}

.vjs-live .vjs-time-control,
.vjs-live .vjs-time-divider,
.video-js .vjs-current-time,
.video-js .vjs-duration {
  display: none;
}

.vjs-time-divider {
  display: none;
  line-height: 3em;
}

.vjs-normalise-time-controls:not(.vjs-live) .vjs-time-control {
  display: flex;
}

.video-js .vjs-play-control {
  cursor: pointer;
}

.video-js .vjs-play-control .vjs-icon-placeholder {
  flex: none;
}

.vjs-text-track-display {
  position: absolute;
  bottom: 3em;
  left: 0;
  right: 0;
  top: 0;
  pointer-events: none;
}

.vjs-error .vjs-text-track-display {
  display: none;
}

.video-js.vjs-controls-disabled .vjs-text-track-display,
.video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display {
  bottom: 1em;
}

.video-js .vjs-text-track {
  font-size: 1.4em;
  text-align: center;
  margin-bottom: 0.1em;
}

.vjs-subtitles {
  color: #fff;
}

.vjs-captions {
  color: #fc6;
}

.vjs-tt-cue {
  display: block;
}

video::-webkit-media-text-track-display {
  transform: translateY(-3em);
}

.video-js.vjs-controls-disabled video::-webkit-media-text-track-display,
.video-js.vjs-user-inactive.vjs-playing video::-webkit-media-text-track-display {
  transform: translateY(-1.5em);
}

.video-js.vjs-force-center-align-cues .vjs-text-track-cue {
  text-align: center !important;
  width: 80% !important;
}

@supports not (inset: 10px) {
  .video-js .vjs-text-track-display > div {
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
  }
}
.video-js .vjs-picture-in-picture-control {
  cursor: pointer;
  flex: none;
}
.video-js.vjs-audio-only-mode .vjs-picture-in-picture-control,
.vjs-pip-window .vjs-picture-in-picture-control {
  display: none;
}

.video-js .vjs-fullscreen-control {
  cursor: pointer;
  flex: none;
}
.video-js.vjs-audio-only-mode .vjs-fullscreen-control,
.vjs-pip-window .vjs-fullscreen-control {
  display: none;
}

.vjs-playback-rate > .vjs-menu-button,
.vjs-playback-rate .vjs-playback-rate-value {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.vjs-playback-rate .vjs-playback-rate-value {
  pointer-events: none;
  font-size: 1.5em;
  line-height: 2;
  text-align: center;
}

.vjs-playback-rate .vjs-menu {
  width: 4em;
  left: 0em;
}

.vjs-error .vjs-error-display .vjs-modal-dialog-content {
  font-size: 1.4em;
  text-align: center;
}

.vjs-loading-spinner {
  display: none;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  opacity: 0.85;
  text-align: left;
  border: 0.6em solid rgba(43, 51, 63, 0.7);
  box-sizing: border-box;
  background-clip: padding-box;
  width: 5em;
  height: 5em;
  border-radius: 50%;
  visibility: hidden;
}

.vjs-seeking .vjs-loading-spinner,
.vjs-waiting .vjs-loading-spinner {
  display: flex;
  justify-content: center;
  align-items: center;
  animation: vjs-spinner-show 0s linear 0.3s forwards;
}

.vjs-error .vjs-loading-spinner {
  display: none;
}

.vjs-loading-spinner:before,
.vjs-loading-spinner:after {
  content: "";
  position: absolute;
  box-sizing: inherit;
  width: inherit;
  height: inherit;
  border-radius: inherit;
  opacity: 1;
  border: inherit;
  border-color: transparent;
  border-top-color: white;
}

.vjs-seeking .vjs-loading-spinner:before,
.vjs-seeking .vjs-loading-spinner:after,
.vjs-waiting .vjs-loading-spinner:before,
.vjs-waiting .vjs-loading-spinner:after {
  animation: vjs-spinner-spin 1.1s cubic-bezier(0.6, 0.2, 0, 0.8) infinite, vjs-spinner-fade 1.1s linear infinite;
}

.vjs-seeking .vjs-loading-spinner:before,
.vjs-waiting .vjs-loading-spinner:before {
  border-top-color: rgb(255, 255, 255);
}

.vjs-seeking .vjs-loading-spinner:after,
.vjs-waiting .vjs-loading-spinner:after {
  border-top-color: rgb(255, 255, 255);
  animation-delay: 0.44s;
}

@keyframes vjs-spinner-show {
  to {
    visibility: visible;
  }
}
@keyframes vjs-spinner-spin {
  100% {
    transform: rotate(360deg);
  }
}
@keyframes vjs-spinner-fade {
  0% {
    border-top-color: rgb(114.9141509434, 132.7028301887, 159.3858490566);
  }
  20% {
    border-top-color: rgb(114.9141509434, 132.7028301887, 159.3858490566);
  }
  35% {
    border-top-color: white;
  }
  60% {
    border-top-color: rgb(114.9141509434, 132.7028301887, 159.3858490566);
  }
  100% {
    border-top-color: rgb(114.9141509434, 132.7028301887, 159.3858490566);
  }
}
.video-js.vjs-audio-only-mode .vjs-captions-button {
  display: none;
}

.vjs-chapters-button .vjs-menu ul {
  width: 24em;
}

.video-js.vjs-audio-only-mode .vjs-descriptions-button {
  display: none;
}

.vjs-subs-caps-button + .vjs-menu .vjs-captions-menu-item .vjs-svg-icon {
  width: 1.5em;
  height: 1.5em;
}

.video-js .vjs-subs-caps-button + .vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder {
  vertical-align: middle;
  display: inline-block;
  margin-bottom: -0.1em;
}

.video-js .vjs-subs-caps-button + .vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before {
  font-family: VideoJS;
  content: "\f10c";
  font-size: 1.5em;
  line-height: inherit;
}

.video-js.vjs-audio-only-mode .vjs-subs-caps-button {
  display: none;
}

.video-js .vjs-audio-button + .vjs-menu .vjs-descriptions-menu-item .vjs-menu-item-text .vjs-icon-placeholder,
.video-js .vjs-audio-button + .vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder {
  vertical-align: middle;
  display: inline-block;
  margin-bottom: -0.1em;
}

.video-js .vjs-audio-button + .vjs-menu .vjs-description-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before,
.video-js .vjs-audio-button + .vjs-menu .vjs-descriptions-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before,
.video-js .vjs-audio-button + .vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before {
  font-family: VideoJS;
  content: " \f12e";
  font-size: 1.5em;
  line-height: inherit;
}

.video-js.vjs-layout-small .vjs-current-time,
.video-js.vjs-layout-small .vjs-time-divider,
.video-js.vjs-layout-small .vjs-duration,
.video-js.vjs-layout-small .vjs-remaining-time,
.video-js.vjs-layout-small .vjs-playback-rate,
.video-js.vjs-layout-small .vjs-volume-control, .video-js.vjs-layout-x-small .vjs-current-time,
.video-js.vjs-layout-x-small .vjs-time-divider,
.video-js.vjs-layout-x-small .vjs-duration,
.video-js.vjs-layout-x-small .vjs-remaining-time,
.video-js.vjs-layout-x-small .vjs-playback-rate,
.video-js.vjs-layout-x-small .vjs-volume-control, .video-js.vjs-layout-tiny .vjs-current-time,
.video-js.vjs-layout-tiny .vjs-time-divider,
.video-js.vjs-layout-tiny .vjs-duration,
.video-js.vjs-layout-tiny .vjs-remaining-time,
.video-js.vjs-layout-tiny .vjs-playback-rate,
.video-js.vjs-layout-tiny .vjs-volume-control {
  display: none;
}
.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover, .video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:active, .video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active, .video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover, .video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover, .video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:active, .video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active, .video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover, .video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:hover, .video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:active, .video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active, .video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover {
  width: auto;
  width: initial;
}
.video-js.vjs-layout-x-small .vjs-progress-control, .video-js.vjs-layout-tiny .vjs-progress-control {
  display: none;
}
.video-js.vjs-layout-x-small .vjs-custom-control-spacer {
  flex: auto;
  display: block;
}

.vjs-modal-dialog.vjs-text-track-settings {
  background-color: #2B333F;
  background-color: rgba(43, 51, 63, 0.75);
  color: #fff;
  height: 70%;
}
.vjs-spatial-navigation-enabled .vjs-modal-dialog.vjs-text-track-settings {
  height: 80%;
}

.vjs-error .vjs-text-track-settings {
  display: none;
}

.vjs-text-track-settings .vjs-modal-dialog-content {
  display: table;
}

.vjs-text-track-settings .vjs-track-settings-colors,
.vjs-text-track-settings .vjs-track-settings-font,
.vjs-text-track-settings .vjs-track-settings-controls {
  display: table-cell;
}

.vjs-text-track-settings .vjs-track-settings-controls {
  text-align: right;
  vertical-align: bottom;
}

@supports (display: grid) {
  .vjs-text-track-settings .vjs-modal-dialog-content {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: 1fr;
    padding: 20px 24px 0px 24px;
  }
  .vjs-track-settings-controls .vjs-default-button {
    margin-bottom: 20px;
  }
  .vjs-text-track-settings .vjs-track-settings-controls {
    grid-column: 1/-1;
  }
  .vjs-layout-small .vjs-text-track-settings .vjs-modal-dialog-content,
  .vjs-layout-x-small .vjs-text-track-settings .vjs-modal-dialog-content,
  .vjs-layout-tiny .vjs-text-track-settings .vjs-modal-dialog-content {
    grid-template-columns: 1fr;
  }
}
.vjs-text-track-settings select {
  font-size: inherit;
}

.vjs-track-setting > select {
  margin-right: 1em;
  margin-bottom: 0.5em;
}

.vjs-text-track-settings fieldset {
  margin: 10px;
  border: none;
}

.vjs-text-track-settings fieldset span {
  display: inline-block;
  padding: 0 0.6em 0.8em;
}

.vjs-text-track-settings fieldset span > select {
  max-width: 7.3em;
}

.vjs-text-track-settings legend {
  color: #fff;
  font-weight: bold;
  font-size: 1.2em;
}

.vjs-text-track-settings .vjs-label {
  margin: 0 0.5em 0.5em 0;
}

.vjs-track-settings-controls button:focus,
.vjs-track-settings-controls button:active {
  outline-style: solid;
  outline-width: medium;
  background-image: linear-gradient(0deg, #fff 88%, rgb(114.9141509434, 132.7028301887, 159.3858490566) 100%);
}

.vjs-track-settings-controls button:hover {
  color: rgba(43, 51, 63, 0.75);
}

.vjs-track-settings-controls button {
  background-color: #fff;
  background-image: linear-gradient(-180deg, #fff 88%, rgb(114.9141509434, 132.7028301887, 159.3858490566) 100%);
  color: #2B333F;
  cursor: pointer;
  border-radius: 2px;
}

.vjs-track-settings-controls .vjs-default-button {
  margin-right: 1em;
}

.vjs-title-bar {
  background: rgba(0, 0, 0, 0.9);
  background: linear-gradient(180deg, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0.7) 60%, rgba(0, 0, 0, 0) 100%);
  font-size: 1.2em;
  line-height: 1.5;
  transition: opacity 0.1s;
  padding: 0.666em 1.333em 4em;
  pointer-events: none;
  position: absolute;
  top: 0;
  width: 100%;
}

.vjs-error .vjs-title-bar {
  display: none;
}

.vjs-title-bar-title,
.vjs-title-bar-description {
  margin: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.vjs-title-bar-title {
  font-weight: bold;
  margin-bottom: 0.333em;
}

.vjs-playing.vjs-user-inactive .vjs-title-bar {
  opacity: 0;
  transition: opacity 1s;
}

.video-js .vjs-skip-forward-5 {
  cursor: pointer;
}
.video-js .vjs-skip-forward-10 {
  cursor: pointer;
}
.video-js .vjs-skip-forward-30 {
  cursor: pointer;
}
.video-js .vjs-skip-backward-5 {
  cursor: pointer;
}
.video-js .vjs-skip-backward-10 {
  cursor: pointer;
}
.video-js .vjs-skip-backward-30 {
  cursor: pointer;
}
.video-js .vjs-transient-button {
  position: absolute;
  height: 3em;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: rgba(50, 50, 50, 0.5);
  cursor: pointer;
  opacity: 1;
  transition: opacity 1s;
}

.video-js:not(.vjs-has-started) .vjs-transient-button {
  display: none;
}

.video-js.not-hover .vjs-transient-button:not(.force-display),
.video-js.vjs-user-inactive .vjs-transient-button:not(.force-display) {
  opacity: 0;
}

.video-js .vjs-transient-button span {
  padding: 0 0.5em;
}

.video-js .vjs-transient-button.vjs-left {
  left: 1em;
}

.video-js .vjs-transient-button.vjs-right {
  right: 1em;
}

.video-js .vjs-transient-button.vjs-top {
  top: 1em;
}

.video-js .vjs-transient-button.vjs-near-top {
  top: 4em;
}

.video-js .vjs-transient-button.vjs-bottom {
  bottom: 4em;
}

.video-js .vjs-transient-button:hover {
  background-color: rgba(50, 50, 50, 0.9);
}

@media print {
  .video-js > *:not(.vjs-tech):not(.vjs-poster) {
    visibility: hidden;
  }
}
.vjs-resize-manager {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
  z-index: -1000;
}

.js-focus-visible .video-js *:focus:not(.focus-visible) {
  outline: none;
}

.video-js *:focus:not(:focus-visible) {
  outline: none;
}

/* ============================================================
   Design tokens
   ============================================================ */
:root {
  --eve-accent:          #e00;
  --eve-control-bg:      rgba(0, 0, 0, 0.55);
  --eve-control-color:   #fff;
  --eve-radius:          4px;
  --eve-bar-height:      42px;
  --eve-progress-row-height: 7px;
  --eve-progress-dot-size: 12px;
  --eve-volume-dot-size: 10px;
  --eve-control-width:   3em;
  --eve-transition:      0.18s ease;
  --eve-pip-width:       340px;
  --eve-pip-radius:      10px;
  --eve-pip-shadow:      0 12px 40px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(255, 255, 255, 0.08);
}

/* ============================================================
   Layout helpers
   ============================================================ */
.vjsp-widescreen { aspect-ratio: 16 / 9; width: 100%; }

/* With `widescreen` the container is the one size authority: a fixed 16:9
   box. Video.js's root (the container's direct child) must fill it instead of
   sizing itself, otherwise a non-16:9 video breaks the box: in `fluid` mode
   Video.js sets a padding-top from the media's aspect ratio (an empty band
   below a 2.39:1 film), without `fluid` it takes the media's intrinsic pixel
   size (overflow). The picture then letterboxes or pillarboxes in black inside
   the 16:9 frame. The doubled `.video-js` outranks the per-player rule Video.js
   injects (`.vjs_video_N-dimensions.vjs-fluid:not(.vjs-audio-only-mode)`). */
.vjsp-widescreen > .video-js.video-js:not(.vjs-audio-only-mode) {
  width: 100%;
  height: 100%;
  padding-top: 0;
}

/* An audio-only source collapses Video.js to its control bar: let the
   container shrink with it instead of keeping an empty 16:9 box. */
.vjsp-widescreen:has(> .video-js.vjs-audio-only-mode) { aspect-ratio: auto; }

.vjsp-hide-play .vjs-big-play-button { display: none; }

.vjsp-hidden { visibility: hidden; }

/* Decorative background mode: the control bar / big play button / caption
   display are already gone via video.js's own `.vjs-controls-disabled`
   (set from the `controls: false` we pass in for this mode) — but the
   loading spinner and error overlay aren't tied to that class, so they'd
   still pop up over what's meant to be a chromeless backdrop. */
.vjsp-background .vjs-loading-spinner,
.vjsp-background .vjs-error-display {
  display: none;
}

/* ============================================================
   Control bar
   ============================================================ */
/* Base size for every em-sized control (icons, volume slider, menus).
   video.js's own default is 10px; bumped up so the whole control bar reads
   larger without every measurement needing an individual override. */
.video-js {
  font-size: 12px;
}

.video-js .vjs-control-bar {
  background: linear-gradient(to top,
    rgba(0, 0, 0, 0.82) 0%,
    rgba(0, 0, 0, 0.38) 60%,
    transparent         100%
  );
  /* Total height covers the button row (--eve-bar-height) plus a strip on
     top reserved for the progress bar (--eve-progress-row-height), which is
     pulled out of flow and pinned there below — see "Progress / seek bar".
     No `position` override here: the base skin already docks this element
     with `position: absolute; bottom: 0` inside the player, which is also a
     valid containing block for the progress bar's `position: absolute`
     below — overriding it to `relative` pulls the whole control bar out of
     that dock and into normal document flow, rendering it below the player
     instead of inside it. */
  height: calc(var(--eve-bar-height) + var(--eve-progress-row-height));
  padding: var(--eve-progress-row-height) 6px 0;
  align-items: center;
  gap: 2px;
  transition: opacity var(--eve-transition);
}

/* Right-hand control group, forced into a fixed order regardless of the
   order components were added to the control bar in (our custom buttons —
   pip, settings — are appended via `addChild` in EveVideoPlayer.ts, which
   puts them after `fullscreenToggle` in the DOM/default flex order).
   Everything below just needs a higher `order` than the spacer to land
   after it, in this sequence. The settings flyout (`.vjsp-settings-menu`)
   is positioned with a hardcoded `right: 6px` (see that rule below), i.e.
   anchored to the player's right edge rather than to the gear button's own
   bounding rect — so it lines up the same way regardless of where exactly
   the gear sits in this group (which is just left of fullscreen). */
/* Base skin ships this hidden (`display: none`) and only turns it into a
   flexible spacer (`flex: auto`) at the `.vjs-layout-x-small` breakpoint —
   normally the job of pushing trailing controls to the right edge falls to
   `.vjs-progress-control`'s own `flex: auto`, which grows to fill the row.
   Since the progress bar is now `position: absolute` (pulled out of this
   flex row entirely — see "Progress / seek bar" below), nothing is left to
   consume the remaining width, so this has to take over that job instead. */
.video-js .vjs-custom-control-spacer {
  display: block;
  flex: auto;
  order: 1;
}

.video-js .vjs-audio-button {
  order: 2;
}

.video-js .vjs-subs-caps-button {
  order: 3;
}

/* Chapters button — a default control-bar child, so without an explicit order
   it keeps `order: 0` and drifts into the left-hand group. Pin it next to the
   other track menus. */
.video-js .vjs-chapters-button {
  order: 4;
}

.video-js .vjsp-pip-button {
  order: 5;
}

.video-js .vjsp-settings-button {
  order: 6;
}

.video-js .vjs-fullscreen-control {
  order: 7;
}

/* ============================================================
   Buttons (generic)
   ============================================================ */
/* Base skin's `.vjs-control` default is `width: 4em` — narrower controls
   (play, mute, CC, audio track, pip, quality, fullscreen, etc. all share
   this class) read closer to the tighter control-bar spacing of most commercial players. */
.video-js .vjs-control {
  width: var(--eve-control-width);
}

.video-js .vjs-button > .vjs-icon-placeholder::before {
  font-size: 1.9em;
  line-height: var(--eve-bar-height);
}

.video-js .vjs-control:hover,
.video-js .vjs-control:focus-visible {
  color: var(--eve-accent, #e00);
  outline: none;
  text-shadow: none;
}

/* ============================================================
   Button tooltips
   ============================================================ */
/* Video.js already renders a `.vjs-control-text` span inside every
   control-bar button — the native ones, plus our PiP / settings buttons
   which set it via `controlText(...)` in EveVideoPlayer.ts. The base skin
   keeps that span sr-only (clipped to 1px); here we surface it as a small
   bubble above the button on pointer hover / keyboard focus. Native
   buttons with stateful labels (Play/Pause, Mute/Unmute) rewrite the same
   span, so the tooltip text tracks button state for free. Scoped to
   `.vjs-button` so the progress bar and volume slider — which also carry a
   `.vjs-control-text` — are left alone. Mirrors the `.vjsp-bookmark-tooltip`
   pattern below (same tokens, same blur). */
.video-js .vjs-control-bar .vjs-button {
  /* containing block + escape hatch for the absolutely-positioned bubble */
  position: relative;
  overflow: visible;
}

.video-js .vjs-control-bar .vjs-button > .vjs-control-text {
  /* undo the base skin's sr-only clip, re-place as a tooltip */
  clip: auto;
  clip-path: none;
  overflow: visible;
  position: absolute;
  bottom: calc(100% + 6px);
  left: 50%;
  width: auto;
  height: auto;
  margin: 0;
  padding: 4px 8px;
  transform: translateX(-50%) translateY(4px);
  background: var(--eve-control-bg);
  color: var(--eve-control-color);
  font-size: 12px;
  line-height: 1.3;
  white-space: nowrap;
  border-radius: var(--eve-radius);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  pointer-events: none;
  opacity: 0;
  transition: opacity var(--eve-transition), transform var(--eve-transition);
  z-index: 3;
}

.video-js .vjs-control-bar .vjs-button:hover > .vjs-control-text,
.video-js .vjs-control-bar .vjs-button:focus-visible > .vjs-control-text {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* Rightmost button (fullscreen — always last, order: 7): anchor the bubble
   to the button's right edge so it can't spill past the player. */
.video-js .vjs-control-bar .vjs-fullscreen-control > .vjs-control-text {
  left: auto;
  right: 0;
  transform: translateX(0) translateY(4px);
}
.video-js .vjs-control-bar .vjs-fullscreen-control:hover > .vjs-control-text,
.video-js .vjs-control-bar .vjs-fullscreen-control:focus-visible > .vjs-control-text {
  transform: translateX(0) translateY(0);
}

/* Belt-and-braces: never let a tooltip linger once the control bar has
   faded out over a chromeless video (the parent's own opacity would hide
   it anyway, but a hover mid-fade could still flash it). */
.video-js.vjs-user-inactive.vjs-playing .vjs-control-bar .vjs-button > .vjs-control-text {
  opacity: 0 !important;
}

/* Touch devices: no hover intent and tap doesn't raise :focus-visible —
   keep the bubbles out entirely. */
@media (hover: none) {
  .video-js .vjs-control-bar .vjs-button > .vjs-control-text {
    display: none;
  }
}

/* ============================================================
   Big play button
   ============================================================ */
.video-js .vjs-big-play-button {
  width: 78px;
  height: 78px;
  line-height: 74px;
  margin-top: -39px;
  margin-left: -39px;
  border: 2px solid rgba(255, 255, 255, 0.9);
  border-radius: 50%;
  font-size: 2.3em;
  background: rgba(0, 0, 0, 0.28);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  transition: transform var(--eve-transition), background var(--eve-transition);
}

.video-js:hover .vjs-big-play-button,
.video-js .vjs-big-play-button:focus-visible {
  background: rgba(0, 0, 0, 0.50);
  transform: scale(1.08);
  outline: none;
}

/* ============================================================
   Progress / seek bar
   ============================================================ */
/* Pulled out of the control-bar's button row and pinned into the strip
   reserved above it (see .vjs-control-bar's padding-top), so it reads as its
   own row above play/pause, volume, quality, etc. instead of sitting inline
   with them. `position: absolute` only affects layout, not behavior — VHS
   drag/seek logic is unaffected by DOM/visual position. */
.video-js .vjs-progress-control {
  position: absolute;
  top: 0;
  left: 6px;
  /* Explicit width rather than `left` + `right` — this element is also a
     flex item of `.vjs-control-bar` (its `display: flex` comes from the
     base skin and is left as-is so its own children, e.g.
     `.vjs-progress-holder`, keep stretching via their `flex: auto`); with
     both display: flex and position: absolute in play, some engines fell
     back to the `min-width: 4em` from the base skin instead of resolving
     `left`/`right` into a stretched width, shrinking the bar to a short
     stub in the top-left corner instead of spanning the bar. */
  width: calc(100% - 12px);
  height: var(--eve-progress-row-height);
  margin: 0;
  transition: all var(--eve-transition);
}

/* Base skin hides this for `.vjs-live` outright, only bringing it back for
   `.vjs-liveui` (added when LiveTracker considers the stream seekable within
   its DVR window). We want the bar visible at full width for every live
   stream regardless of that DVR-seekable detection, so force it back on. */
.vjs-live .vjs-progress-control {
  display: flex;
}

.video-js .vjs-progress-holder {
  height: 3px;
  background: rgba(255, 255, 255, 0.22);
  border-radius: 2px;
  transition: height var(--eve-transition);
}

.video-js:hover .vjs-progress-holder,
.video-js .vjs-progress-control:hover .vjs-progress-holder {
  height: 5px;
}

.video-js .vjs-load-progress,
.video-js .vjs-load-progress div {
  background: rgba(255, 255, 255, 0.28);
  border-radius: 2px;
}

.video-js .vjs-play-progress {
  background-color: var(--eve-accent, #e00);
  border-radius: 2px;
}

/* Video.js's SeekBar sets this element's `width` as an inline style on every
   `timeupdate` (percent played), so a plain CSS `width` here would only ever
   apply for one frame before JS overwrites it — `!important` is required to
   keep it pinned at 100% for live streams. Purely a visual override: the
   fill always reads as fully "caught up", but the seek bar underneath is
   untouched and remains draggable/seekable exactly as before. There's no
   separate flag in this codebase for a "fake" vs. real live source — both
   get Video.js's `.vjs-live` class the same way, so both get this fill. */
.vjs-live .vjs-play-progress {
  width: 100% !important;
}

/* Scrubber thumb. Hidden by default; shown only when the `showProgressDot`
   option is set (it adds `.vjsp-show-progress-dot` on the container, see
   EvePlayer.ts).

   Drawn as a real box (`content: ''` + `border-radius: 50%`) instead of the
   base skin's VideoJS-font circle glyph. A glyph is positioned by font
   metrics (the base skin fakes it with `line-height: 0.35em` and no `top`),
   so its optical center never lands exactly on a 3px bar that grows to 5px
   on hover; an empty box of known size does, via `top: 50%` +
   `translateY(-50%)`, at any bar height. `right: 0` + `translateX(50%)`
   likewise centers it on the playhead rather than the glyph's own advance
   width. `font-size`/`line-height` are zeroed so the base skin's values
   can't give the (now empty) box height of its own. */
.video-js .vjs-play-progress::before {
  content: '';
  display: none;
  position: absolute;
  top: 50%;
  right: 0;
  width: var(--eve-progress-dot-size);
  height: var(--eve-progress-dot-size);
  border-radius: 50%;
  background-color: var(--eve-accent, #e00);
  font-size: 0;
  line-height: 0;
  transform: translate(50%, -50%);
  transition: transform var(--eve-transition);
}

.vjsp-show-progress-dot .vjs-play-progress::before {
  display: block;
}

.video-js:hover .vjs-play-progress::before {
  transform: translate(50%, -50%) scale(1.3);
}

/* ============================================================
   Volume
   ============================================================ */
/* `.vjs-volume-panel` is `display: flex` with no `align-items` set, so it
   defaults to `stretch` — but `.vjs-volume-control` has an explicit height
   (3em, from the base skin), which stretch can't apply to, so it falls back
   to flex-start and pins the slider to the top of the 44px row instead of
   centering it like every other control. Same underlying issue as the live
   indicator above. */
.video-js .vjs-volume-panel {
  align-items: center;
}

.video-js .vjs-volume-bar.vjs-slider-horizontal {
  background: rgba(255, 255, 255, 0.22);
  border-radius: 2px;
  height: 3px;
}

.video-js .vjs-volume-level {
  background: var(--eve-control-color);
  border-radius: 2px;
}

/* Volume handle. Same construction (and the same reasons) as the scrubber
   thumb above, but note the base skin shows this one by default, so hiding
   it is an actual change of behavior: it appears only with the
   `showVolumeDot` option (which adds `.vjsp-show-volume-dot` on the
   container). It takes the control color rather than the accent, matching
   the bar it rides on. */
.video-js .vjs-volume-level::before {
  content: '';
  display: none;
  position: absolute;
  top: 50%;
  right: 0;
  width: var(--eve-volume-dot-size);
  height: var(--eve-volume-dot-size);
  border-radius: 50%;
  background-color: var(--eve-control-color);
  font-size: 0;
  line-height: 0;
  transform: translate(50%, -50%);
}

/* The volume slider is horizontal in this skin, but video.js can render it
   vertically (`volumePanel: { inline: false }`), where the level fills
   bottom-up and the handle belongs on its top edge. */
.video-js .vjs-slider-vertical .vjs-volume-level::before {
  top: 0;
  right: auto;
  left: 50%;
  transform: translate(-50%, -50%);
}

.vjsp-show-volume-dot .vjs-volume-level::before {
  display: block;
}

/* ============================================================
   Time display
   ============================================================ */
.video-js .vjs-time-control {
  font-size: 13px;
  letter-spacing: 0.4px;
  padding: 0 4px;
  line-height: var(--eve-bar-height);
  min-width: auto;
}

/* video.js hides current-time/duration and shows remaining-time by default.
   Flip that so current/duration display next to the mute button instead —
   they already sit right after volumePanel in the default control-bar child
   order, so no component reordering is needed, just visibility. */
.video-js .vjs-current-time,
.video-js .vjs-duration {
  display: flex;
}

.video-js .vjs-remaining-time {
  display: none;
}

.video-js .vjs-time-divider {
  display: flex;
  min-width: 8px;
  padding: 0 2px;
  line-height: var(--eve-bar-height);
}

/* The base skin already hides current-time/duration/divider for `.vjs-live`
   (they share the `.vjs-time-control` class, targeted by its own
   `.vjs-live .vjs-time-control` rule) — but our unconditional `display: flex`
   rules above have equal selector specificity, so whichever is declared last
   wins ties. This has to stay the last word on all three, current-time,
   duration, AND the divider between them, or the divider is left standing
   on its own once the numbers around it disappear. */
.vjs-live .vjs-current-time,
.vjs-live .vjs-duration,
.vjs-live .vjs-time-divider {
  display: none;
}

/* ============================================================
   Live indicator
   ============================================================ */
/* Video.js's base skin sets `align-items: flex-start` here, which pins the
   "LIVE" text to the top of the control bar row instead of centering it
   like every other control (buttons via the icon-placeholder line-height
   rule above, time displays via their own line-height). `em`, not `rem` —
   every other size in this stylesheet cascades from `.video-js`'s own
   font-size (12px) rather than the page root's, which is why `1rem` here
   previously rendered far too large (it picked up the page's own root
   font-size instead, typically 16px+, ignoring the 12px local baseline). */
.video-js .vjs-live-control {
  align-items: center;
  font-size: 1em;
}

/* Red dot before "LIVE", matching the accent-independent red used by the
   seek-to-live control below (and by consuming apps' own fake-live
   indicators) — the live dot always reads as red, never the theme color. */
.vjs-live-control .vjs-live-display {
  display: flex;
  align-items: center;
  gap: 0.5em;
}

.vjs-live-control .vjs-live-display:before {
  content: '';
  flex-shrink: 0;
  width: 0.5em;
  height: 0.5em;
  border-radius: 50%;
  background-color: #e00;
}

/* Real live sources with a seekable/DVR window get `.vjs-seek-to-live-control`
   instead of the plain `.vjs-live-control` above (video.js swaps between them
   via the `.vjs-liveui` class once `liveTracker` detects a seekable range).
   It ships with zero sizing beyond the video.js default — bump it in step
   with `.vjs-live-control`. The dot itself is drawn via a shared video.js
   rule also used by the volume-level and play-progress scrubber dots, so
   this re-targets its own exact selector (video.js's own rule includes it
   in a comma-list) rather than resizing that shared rule, which would also
   resize those unrelated dots. Colors (red at live edge / gray behind) are
   left as video.js's own hardcoded defaults on purpose — the live indicator
   always reads as red/gray, never the brand accent color. */
.video-js .vjs-seek-to-live-control {
  font-size: 1em;
}

.vjs-seek-to-live-control .vjs-icon-placeholder:before {
  font-size: 1.1em;
}

/* "-M:SS" drift countdown, injected next to the "LIVE" text by EveVideoPlayer.ts
   while behind the live edge; empty (and so invisible) at the live edge. */
.vjsp-live-behind-time {
  margin-left: 0.3em;
  color: var(--eve-control-color);
  opacity: 0.75;
}

/* ============================================================
   Settings menu (gear) — quality + playback speed
   ============================================================ */
/* Gear button: center the injected SVG in the control slot, same as the PiP
   button, and tint it with the accent colour while the flyout is open. */
.vjsp-settings-button .vjs-icon-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
}

.vjsp-settings-button.vjsp-settings-button--open .vjs-icon-placeholder svg {
  color: var(--eve-accent, #e00);
}

/* The flyout is appended as a sibling of the control bar (not a child of the
   gear button), so it's anchored here by fixed offsets from the player's
   bottom-right corner instead of the button-relative positioning video.js's
   native popup menus get for free. Without this it falls back to normal
   document flow and renders pinned to the player's top-left corner.
   Translucent (not a hard blur panel) so the video reads through it. */
.vjsp-settings-menu {
  position: absolute;
  right: 6px;
  bottom: calc(var(--eve-bar-height) + 8px);
  z-index: 2;
  min-width: 15em;
  max-width: 22em;
  padding: 0.4em 0;
  background: rgba(28, 28, 28, 0.82);
  color: var(--eve-control-color);
  border-radius: var(--eve-radius);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
  font-size: 1.1em;
  overflow: hidden;
}

.vjsp-settings-menu--hidden {
  display: none;
}

.vjsp-settings-menu__header {
  display: flex;
  align-items: center;
  gap: 0.4em;
  padding: 0.2em 1em 0.5em;
  margin-bottom: 0.3em;
  border-bottom: 1px solid rgba(255, 255, 255, 0.14);
}

/* `.video-js button` (video.js base reset) is specificity (0,1,1) and forces
   `display: inline-block` on every <button>, which would kill the flex layout
   of these rows (label + right-aligned value). Every button rule below is
   therefore qualified with `.video-js` (0,2,x) to win — the menu is appended
   inside the video.js root element, so the ancestor always matches. */
.video-js .vjsp-settings-menu__back {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 1.7em;
  height: 1.7em;
  padding: 0;
  background: none;
  border: none;
  color: inherit;
  cursor: pointer;
}

.vjsp-settings-menu__back svg {
  width: 1.1em;
  height: 1.1em;
}

.video-js .vjsp-settings-menu__back:hover,
.video-js .vjsp-settings-menu__back:focus-visible {
  color: var(--eve-accent, #e00);
  outline: none;
}

.vjsp-settings-menu__title {
  font-weight: 700;
}

.vjsp-settings-menu__body {
  max-height: 15em;
  overflow-y: auto;
}

.video-js .vjsp-settings-row,
.video-js .vjsp-settings-option {
  display: flex;
  align-items: center;
  width: 100%;
  padding: 0.5em 1em;
  background: none;
  border: none;
  color: inherit;
  font: inherit;
  text-align: left;
  white-space: nowrap;
  cursor: pointer;
}

.vjsp-settings-row__label {
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Push the value to the right edge regardless of label width. `margin-left:
   auto` rather than `justify-content: space-between` so it holds up even if a
   base-skin rule ever re-touches the flex container. */
.vjsp-settings-row__value {
  margin-left: auto;
  padding-left: 1.5em;
  flex-shrink: 0;
  color: rgba(255, 255, 255, 0.7);
}

.video-js .vjsp-settings-row:hover,
.video-js .vjsp-settings-row:focus-visible,
.video-js .vjsp-settings-option:hover,
.video-js .vjsp-settings-option:focus-visible {
  background: rgba(255, 255, 255, 0.12);
  outline: none;
}

.video-js .vjsp-settings-option {
  gap: 0.6em;
}

.vjsp-settings-option__check {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 1.1em;
  color: var(--eve-accent, #e00);
  visibility: hidden;
}

.vjsp-settings-option__check svg {
  width: 1em;
  height: 1em;
}

.video-js .vjsp-settings-option--active {
  font-weight: 700;
}

.vjsp-settings-option--active .vjsp-settings-option__check {
  visibility: visible;
}

/* ============================================================
   Native track menus (audio language / subtitles-captions / chapters)
   ------------------------------------------------------------
   video.js's built-in popup menus for the audio-track, subs/caps and chapters
   buttons are restyled to match `.vjsp-settings-menu`: same translucent dark
   panel, left-aligned rows, hover tint, and an accent checkmark (the same
   Feather glyph, via a mask) on the selected row instead of the base skin's
   solid white block. For the chapters menu the checkmark marks the chapter
   currently playing (video.js re-selects it on every `cuechange`); clicking a
   row seeks to that chapter.

   They are also lifted out of their control-bar button and re-parented as a
   direct child of the player root, tagged `.vjsp-hoisted-menu`
   (EveVideoPlayer._hoistNativeMenus). That does two things at once:
     - anchors every popup to the player's bottom-right corner, exactly where
       the settings flyout opens (one spot for all menus),
       because the menu now shares the player root as its containing block;
     - makes it CLICK-only. The base skin opens these on hover via
       `.vjs-workinghover .vjs-menu-button-popup.vjs-hover .vjs-menu`, a
       descendant selector that no longer matches once the menu isn't inside
       the button. Click still works: it toggles `.vjs-lock-showing` on the
       menu element directly (MenuButton.pressButton), which is all the
       show/hide rules below key off.

   `text-transform: none` matters too: the base skin forces menu items to
   lowercase, which is why native language menus read "english" not "English".
   ============================================================ */
.video-js .vjsp-hoisted-menu {
  position: absolute;
  left: auto;
  /* Same anchor as `.vjsp-settings-menu`. */
  right: 6px;
  bottom: calc(var(--eve-bar-height) + 8px);
  width: 16em;
  height: 0;
  margin: 0;
  z-index: 2;
  display: none;
}

/* Shown only while "locked" open by a click — never on hover. */
.video-js .vjsp-hoisted-menu.vjs-lock-showing {
  display: block;
}

.video-js .vjsp-hoisted-menu .vjs-menu-content {
  /* Base skin floats this `bottom: 1.5em` above the zero-height `.vjs-menu`
     anchor; pin it flush so the panel grows straight up from `bottom` above. */
  position: absolute;
  right: 0;
  bottom: 0;
  width: 100%;
  padding: 0.4em 0;
  max-height: 15em;
  background: rgba(28, 28, 28, 0.82);
  border-radius: var(--eve-radius);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
  overflow: hidden auto;
}

.video-js .vjsp-hoisted-menu li.vjs-menu-item {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  padding: 0.5em 1em 0.5em 2.4em;
  font-size: 1.1em;
  line-height: 1.4;
  text-align: left;
  text-transform: none;
  color: var(--eve-control-color);
  cursor: pointer;
}

.video-js .vjsp-hoisted-menu li.vjs-menu-item:hover,
.video-js .vjsp-hoisted-menu li.vjs-menu-item:focus {
  background-color: rgba(255, 255, 255, 0.12);
  color: var(--eve-control-color);
}

/* video.js ships `.video-js .vjs-menu *:not(.vjs-selected):focus:not(:focus-visible)
   { background: none }` (specificity 0,5,0), which suppresses the hover tint on
   whichever item got programmatic focus when the menu opened — usually the
   first one in the list. Re-assert :hover through `.vjs-menu-content` so it
   carries an extra class and outweighs that rule (0,5,1). */
.video-js .vjsp-hoisted-menu .vjs-menu-content li.vjs-menu-item:hover {
  background-color: rgba(255, 255, 255, 0.12);
  color: var(--eve-control-color);
}

/* Selected row: same treatment as the settings menu's active quality/speed
   option — bold only, NOT recoloured; the checkmark carries the accent. Just
   the base skin's solid white block is neutralised here. (Hover/focus are left
   to the generic rule above so the selected row still highlights on hover.) */
.video-js .vjsp-hoisted-menu li.vjs-selected {
  background-color: transparent;
  color: var(--eve-control-color);
  font-weight: 700;
}

.video-js .vjsp-hoisted-menu li.vjs-selected::before {
  content: '';
  position: absolute;
  left: 1em;
  top: 50%;
  width: 1.1em;
  height: 1.1em;
  transform: translateY(-50%);
  background-color: var(--eve-accent, #e00);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center / contain no-repeat;
}

.video-js .vjsp-hoisted-menu li.vjs-menu-title {
  margin: 0 0 0.3em;
  padding: 0.2em 1em 0.5em;
  border-bottom: 1px solid rgba(255, 255, 255, 0.14);
  font-size: 1.05em;
  line-height: 1.4;
  text-align: left;
  text-transform: none;
  color: var(--eve-control-color);
}

/* Chapters menu: a chapter list is usually longer than an audio/subs menu and
   its labels are full sentences, so give it a taller scroll area and let rows
   wrap instead of clipping. */
.video-js .vjsp-hoisted-menu--chapters {
  width: 20em;
}

.video-js .vjsp-hoisted-menu--chapters .vjs-menu-content {
  max-height: 20em;
}

.video-js .vjsp-hoisted-menu--chapters li.vjs-menu-item {
  white-space: normal;
}

/* ============================================================
   Caption (text-track) settings dialog
   ------------------------------------------------------------
   video.js's native `TextTrackSettings` modal (opened from the "captions
   settings" entry in the subs/caps menu — hidden entirely via the
   `captionSettings: false` player option, which drops the child). The base
   skin renders it as a full-bleed slate overlay with OS-default <select>s and
   gradient buttons; this re-skins it into a centred EVE panel matching
   `.vjsp-settings-menu`: translucent dark card, accent buttons, flat controls.

   The base skin pins `.vjs-modal-dialog-content` to `position: absolute` /
   inset 0 (shared rule, specificity (0,2,0)) and a `@supports (display:grid)`
   block re-pads it — every override here is `.video-js`-qualified (≥(0,3,0))
   so it wins in both directions without `!important`.
   ============================================================ */
.video-js .vjs-modal-dialog.vjs-text-track-settings {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  padding: 2em 1em;
  background: rgba(0, 0, 0, 0.55);
}

.video-js .vjs-text-track-settings .vjs-modal-dialog-content {
  position: relative;
  top: auto;
  left: auto;
  width: auto;
  height: auto;
  max-width: min(680px, 100%);
  max-height: 100%;
  overflow-y: auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: start;
  gap: 0 2.4em;
  padding: 1.2em 1.4em;
  font-size: 1.05em;
  line-height: 1.4;
  color: var(--eve-control-color);
  background: rgba(28, 28, 28, 0.92);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: var(--eve-radius);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}

@media (max-width: 600px) {
  .video-js .vjs-text-track-settings .vjs-modal-dialog-content {
    grid-template-columns: 1fr;
  }
}

/* Close (×) button — now anchored to the card (which is `position: relative`). */
.video-js .vjs-text-track-settings .vjs-close-button {
  top: 0.2em;
  right: 0.2em;
  height: 2em;
  color: rgba(255, 255, 255, 0.7);
  transition: color var(--eve-transition);
}

.video-js .vjs-text-track-settings .vjs-close-button:hover,
.video-js .vjs-text-track-settings .vjs-close-button:focus-visible {
  color: var(--eve-control-color);
  outline: none;
}

/* The base skin splits the sections into two wrapper divs (`…-colors` with the
   three colour fieldsets, `…-font` with the three font fieldsets) and lays
   them out as `display: table-cell`. `display: contents` dissolves both
   wrappers so all six fieldsets become direct items of the grid above, then
   `order` interleaves them into aligned rows:
     Text                    | Font Size
     Text Background          | Text Edge Style
     Caption Area Background  | Font Family
   Each row's two legends start at the same y (`align-items: start`). */
.video-js .vjs-text-track-settings .vjs-track-settings-colors,
.video-js .vjs-text-track-settings .vjs-track-settings-font {
  display: contents;
}

.video-js .vjs-text-track-settings .vjs-fg {
  order: 1;
}
.video-js .vjs-text-track-settings .vjs-font-percent {
  order: 2;
}
.video-js .vjs-text-track-settings .vjs-bg {
  order: 3;
}
.video-js .vjs-text-track-settings .vjs-edge-style {
  order: 4;
}
.video-js .vjs-text-track-settings .vjs-window {
  order: 5;
}
.video-js .vjs-text-track-settings .vjs-font-family {
  order: 6;
}
.video-js .vjs-text-track-settings .vjs-track-settings-controls {
  order: 7;
}

.video-js .vjs-text-track-settings fieldset {
  margin: 0 0 1.1em;
  padding: 0;
  border: none;
}

/* `display: block` + `width: 100%` normalise the browser's special-case
   <legend> rendering — otherwise it floats in the (now removed) border gap
   and reads as detached from its own controls. */
.video-js .vjs-text-track-settings legend {
  display: block;
  width: 100%;
  margin: 0 0 0.6em;
  padding: 0;
  color: var(--eve-control-color);
  font-size: 1em;
  font-weight: 700;
}

/* Colours column: each <span> is a "label + select" pair. Stack the pairs as
   their own rows, with the label given a fixed column so every select lines
   up and sits well clear of its label. */
.video-js .vjs-text-track-settings fieldset span {
  display: flex;
  align-items: center;
  padding: 0;
  margin: 0 0 0.45em;
}

.video-js .vjs-text-track-settings .vjs-label {
  flex: 0 0 auto;
  min-width: 4.5em;
  margin: 0 0.9em 0 0;
  color: rgba(255, 255, 255, 0.7);
}

/* Flat EVE-style controls in place of the OS-default look. `option` is forced
   dark-on-light because the popped-open list is painted by the OS on most
   platforms and would otherwise inherit white text on white. */
.video-js .vjs-text-track-settings select {
  max-width: 100%;
  margin: 0;
  padding: 0.35em 0.5em;
  color: var(--eve-control-color);
  font: inherit;
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.22);
  border-radius: var(--eve-radius);
}

.video-js .vjs-text-track-settings fieldset span > select {
  flex: 1 1 auto;
  max-width: 9em;
}

.video-js .vjs-text-track-settings select:focus-visible {
  outline: none;
  border-color: var(--eve-accent, #e00);
}

.video-js .vjs-text-track-settings select option {
  color: #000;
  background: #fff;
}

/* Reset / Done row — accent-filled Done, ghost Reset, matching the flyout. */
.video-js .vjs-text-track-settings .vjs-track-settings-controls {
  display: block;
  grid-column: 1 / -1;
  margin-top: 0.4em;
  padding-top: 0.8em;
  border-top: 1px solid rgba(255, 255, 255, 0.14);
  text-align: right;
}

.video-js .vjs-track-settings-controls button {
  margin: 0 0 0 0.6em;
  padding: 0.5em 1.3em;
  color: var(--eve-control-color);
  font: inherit;
  background: var(--eve-accent, #e00);
  background-image: none;
  border: none;
  border-radius: var(--eve-radius);
  cursor: pointer;
  transition: background var(--eve-transition), opacity var(--eve-transition);
}

.video-js .vjs-track-settings-controls button:hover {
  color: var(--eve-control-color);
  opacity: 0.85;
}

.video-js .vjs-track-settings-controls button:focus,
.video-js .vjs-track-settings-controls button:focus-visible,
.video-js .vjs-track-settings-controls button:active {
  outline: 2px solid var(--eve-accent, #e00);
  outline-offset: 2px;
  background-image: none;
}

.video-js .vjs-track-settings-controls .vjs-default-button {
  margin-bottom: 0;
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.3);
}

.video-js .vjs-track-settings-controls .vjs-default-button:hover {
  background: rgba(255, 255, 255, 0.12);
  opacity: 1;
}

/* ============================================================
   Picture-in-Picture button
   ============================================================ */
.vjsp-pip-button .vjs-icon-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
}

/* Inherit accent color when PiP is active */
.vjsp-pip-button.vjsp-pip-is-active .vjs-icon-placeholder svg {
  color: var(--eve-accent, #e00);
}

/* ============================================================
   Bookmarks
   ============================================================ */
/* `.video-js button` (video.js's own base reset) has specificity (0,1,1) —
   higher than a bare `.vjsp-bookmark-marker` class (0,1,0) — and resets
   `background`/`transition` to `none`, so this must be qualified with
   `.video-js` (specificity (0,2,0)) to actually win. */
.video-js .vjsp-bookmark-marker {
  position:   absolute;
  top:        0;
  width:      3px;
  height:     100%;
  /* TODO: same accent color as .vjs-play-progress makes markers blend into
     the played portion of the bar — black for now until there's a distinct
     token for this. */
  background: black;
  cursor:     pointer;
  transform:  translateX(-50%);
  border:     none;
  padding:    0;
  border-radius: 1px;
  transition: transform var(--eve-transition);
}

.vjsp-bookmark-marker:hover {
  transform: translateX(-50%) scaleX(1.8);
}

.vjsp-bookmark-tooltip {
  display:        none;
  position:       absolute;
  bottom:         calc(100% + 8px);
  left:           50%;
  transform:      translateX(-50%);
  background:     var(--eve-control-bg);
  color:          var(--eve-control-color);
  font-size:      12px;
  padding:        4px 8px;
  border-radius:  var(--eve-radius);
  white-space:    nowrap;
  pointer-events: none;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

.vjsp-bookmark-marker:hover .vjsp-bookmark-tooltip { display: block; }

/* ============================================================
   Thumbnail-tile hover preview (DASH-IF thumbnail_tile convention)
   ============================================================ */
.vjsp-thumbnail-preview {
  display:         none;
  position:        absolute;
  bottom:          calc(100% + 8px);
  background-repeat: no-repeat;
  border-radius:   var(--eve-radius);
  box-shadow:      0 4px 16px rgba(0, 0, 0, 0.5), 0 0 0 2px rgba(255, 255, 255, 0.15);
  pointer-events:  none;
  z-index:         2;
}

.vjsp-thumbnail-preview--visible { display: block; }

/* ============================================================
   Picture-in-Picture floating overlay
   ============================================================ */
.vjsp-pip-active {
  position:      fixed !important;
  bottom:        24px;
  right:         24px;
  width:         var(--eve-pip-width) !important;
  aspect-ratio:  16 / 9;
  z-index:       9000;
  border-radius: var(--eve-pip-radius);
  overflow:      hidden;
  box-shadow:    var(--eve-pip-shadow);
  cursor:        grab;
  /* Smooth entry */
  animation:     vjsp-pip-in 0.22s cubic-bezier(0.22, 1, 0.36, 1) both;
}

@keyframes vjsp-pip-in {
  from { opacity: 0; transform: scale(0.88) translateY(12px); }
  to   { opacity: 1; transform: scale(1)    translateY(0); }
}

/* While dragging */
.vjsp-pip-active.vjsp-pip-dragging {
  cursor:     grabbing;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(255, 255, 255, 0.14);
  user-select: none;
}

/* Hide the widescreen aspect-ratio override when PiP is active
   (the fixed width + aspect-ratio on .vjsp-pip-active take over) */
.vjsp-pip-active.vjsp-widescreen {
  aspect-ratio: 16 / 9;
}

/* Restore button — shown top-right of the floating window */
.vjsp-pip-restore {
  position:        absolute;
  top:             8px;
  right:           8px;
  z-index:         9001;
  display:         flex;
  align-items:     center;
  justify-content: center;
  width:           28px;
  height:          28px;
  background:      rgba(0, 0, 0, 0.58);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  border:          none;
  border-radius:   50%;
  color:           #fff;
  cursor:          pointer;
  opacity:         0;
  transition:      opacity var(--eve-transition), background var(--eve-transition);
}

.vjsp-pip-active:hover .vjsp-pip-restore {
  opacity: 1;
}

.vjsp-pip-restore:hover {
  background: rgba(0, 0, 0, 0.82);
}

/* In-flow placeholder that holds the player's original space while PiP is
   active. Sized inline (px) from the player's dimensions at activation. */
.vjsp-pip-placeholder {
  display:         flex;
  align-items:     center;
  justify-content: center;
  box-sizing:      border-box;
  max-width:       100%;
  padding:         16px;
  background:      #000;
  border-radius:   var(--eve-radius);
}

.vjsp-pip-placeholder-text {
  max-width:      32ch;
  color:          rgba(255, 255, 255, 0.82);
  font-family:    -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial,
                  sans-serif;
  font-size:      clamp(0.8125rem, 2.4vw, 0.9375rem);
  font-weight:    600;
  line-height:    1.45;
  letter-spacing: 0.01em;
  text-align:     center;
  text-wrap:      balance;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
