@keyframes pre-play-hide {
														0% {
															transform: scale(1);
															opacity: 1;
														}

														30% {
															transform: scale(0.7);
														}

														100% {
															transform: scale(1.5);
															opacity: 0;
														}
													}

													:host {
														--_primary-color: var(--media-primary-color, #fff);
														--_secondary-color: var(
															--media-secondary-color,
															transparent
														);
														--_accent-color: var(--media-accent-color, #fa50b5);
														--_text-color: var(--media-text-color, #000);

														--media-icon-color: var(--_primary-color);
														--media-control-background: var(--_secondary-color);
														--media-control-hover-background: var(
															--_accent-color
														);
														--media-time-buffered-color: rgba(
															255,
															255,
															255,
															0.4
														);
														--media-preview-time-text-shadow: none;
														--media-control-height: 14px;
														--media-control-padding: 6px;
														--media-tooltip-container-margin: 6px;
														--media-tooltip-distance: 18px;

														color: var(--_primary-color);
														display: inline-block;
														width: 100%;
														height: 100%;
													}

													:host([audio]) {
														--_secondary-color: var(
															--media-secondary-color,
															black
														);
														--media-preview-time-text-shadow: none;
													}

													:host([audio]) ::slotted([slot='media']) {
														height: 0px;
													}

													:host([audio]) media-loading-indicator {
														display: none;
													}

													:host([audio]) media-controller {
														background: transparent;
													}

													:host([audio])
														media-controller::part(vertical-layer) {
														background: transparent;
													}

													:host([audio]) media-control-bar {
														width: 100%;
														background-color: var(--media-control-background);
													}

													/*
     * 0.433s is the transition duration for VTT Regions.
     * Borrowed here, so the captions don't move too fast.
     */
													media-controller {
														--media-webkit-text-track-transform: translateY(0)
															scale(0.98);
														--media-webkit-text-track-transition: transform
															0.433s ease-out 0.3s;
													}
													media-controller:is(
														[mediapaused],
														:not([userinactive])
													) {
														--media-webkit-text-track-transform: translateY(
																-50px
															)
															scale(0.98);
														--media-webkit-text-track-transition: transform
															0.15s ease;
													}

													/*
     * CSS specific to iOS devices.
     * See: https://stackoverflow.com/questions/30102792/css-media-query-to-target-only-ios-devices/60220757#60220757
     */
													@supports (-webkit-touch-callout: none) {
														/* Disable subtitle adjusting for iOS Safari */
														media-controller[mediaisfullscreen] {
															--media-webkit-text-track-transform: unset;
															--media-webkit-text-track-transition: unset;
														}
													}

													media-time-range {
														--media-box-padding-left: 6px;
														--media-box-padding-right: 6px;
														--media-range-bar-color: var(--_accent-color);
														--media-time-range-buffered-color: var(
															--_primary-color
														);
														--media-range-track-color: transparent;
														--media-range-track-background: rgba(
															255,
															255,
															255,
															0.4
														);
														--media-range-thumb-background: radial-gradient(
															circle,
															#000 0%,
															#000 25%,
															var(--_accent-color) 25%,
															var(--_accent-color)
														);
														--media-range-thumb-width: 12px;
														--media-range-thumb-height: 12px;
														--media-range-thumb-transform: scale(0);
														--media-range-thumb-transition: transform 0.3s;
														--media-range-thumb-opacity: 1;
														--media-preview-background: var(--_primary-color);
														--media-box-arrow-background: var(--_primary-color);
														--media-preview-thumbnail-border: 5px solid
															var(--_primary-color);
														--media-preview-border-radius: 5px;
														--media-text-color: var(--_text-color);
														--media-control-hover-background: transparent;
														--media-preview-chapter-text-shadow: none;
														color: var(--_accent-color);
														padding: 0 6px;
													}

													:host([audio]) media-time-range {
														--media-preview-time-padding: 1.5px 6px;
														--media-preview-box-margin: 0 0 -5px;
													}

													media-time-range:hover {
														--media-range-thumb-transform: scale(1);
													}

													media-preview-thumbnail {
														border-bottom-width: 0;
													}

													[part~='menu'] {
														border-radius: 2px;
														border: 1px solid rgba(0, 0, 0, 0.1);
														bottom: 50px;
														padding: 2.5px 10px;
													}

													[part~='menu']::part(indicator) {
														fill: var(--_accent-color);
													}

													[part~='menu']::part(menu-item) {
														box-sizing: border-box;
														display: flex;
														align-items: center;
														padding: 6px 10px;
														min-height: 34px;
													}

													[part~='menu']::part(checked) {
														font-weight: 700;
													}

													media-captions-menu,
													media-rendition-menu,
													media-audio-track-menu,
													media-playback-rate-menu {
														position: absolute; /* ensure they don't take up space in DOM on load */
														--media-menu-background: var(--_primary-color);
														--media-menu-item-checked-background: transparent;
														--media-text-color: var(--_text-color);
														--media-menu-item-hover-background: transparent;
														--media-menu-item-hover-outline: var(
																--_accent-color
															)
															solid 1px;
													}

													media-rendition-menu {
														min-width: 140px;
													}

													/* The icon is a circle so make it 16px high instead of 14px for more balance. */
													media-audio-track-menu-button {
														--media-control-padding: 5px;
														--media-control-height: 16px;
													}

													media-playback-rate-menu-button {
														--media-control-padding: 6px 3px;
														min-width: 4.4ch;
													}

													media-playback-rate-menu {
														--media-menu-flex-direction: row;
														--media-menu-item-checked-background: var(
															--_accent-color
														);
														--media-menu-item-checked-indicator-display: none;
														margin-right: 6px;
														padding: 0;
														--media-menu-gap: 0.25em;
													}

													media-playback-rate-menu[part~='menu']::part(
															menu-item
														) {
														padding: 6px 6px 6px 8px;
													}

													media-playback-rate-menu[part~='menu']::part(
															checked
														) {
														color: #fff;
													}

													:host(:not([audio])) media-time-range {
														/* Adding px is required here for calc() */
														--media-range-padding: 0px;
														background: transparent;
														z-index: 10;
														height: 10px;
														bottom: -3px;
														width: 100%;
													}

													media-control-bar
														:is([role='button'], [role='switch'], button) {
														line-height: 0;
													}

													media-control-bar
														:is(
															[part*='button'],
															[part*='range'],
															[part*='display']
														) {
														border-radius: 3px;
													}

													.spacer {
														flex-grow: 1;
														background-color: var(
															--media-control-background,
															rgba(20, 20, 30, 0.7)
														);
													}

													media-control-bar[slot~='top-chrome'] {
														min-height: 42px;
														pointer-events: none;
													}

													media-control-bar {
														--gradient-steps:
															hsl(0 0% 0% / 0) 0%, hsl(0 0% 0% / 0.013) 8.1%,
															hsl(0 0% 0% / 0.049) 15.5%,
															hsl(0 0% 0% / 0.104) 22.5%,
															hsl(0 0% 0% / 0.175) 29%,
															hsl(0 0% 0% / 0.259) 35.3%,
															hsl(0 0% 0% / 0.352) 41.2%,
															hsl(0 0% 0% / 0.45) 47.1%,
															hsl(0 0% 0% / 0.55) 52.9%,
															hsl(0 0% 0% / 0.648) 58.8%,
															hsl(0 0% 0% / 0.741) 64.7%,
															hsl(0 0% 0% / 0.825) 71%,
															hsl(0 0% 0% / 0.896) 77.5%,
															hsl(0 0% 0% / 0.951) 84.5%,
															hsl(0 0% 0% / 0.987) 91.9%, hsl(0 0% 0%) 100%;
													}

													:host([title])
														media-control-bar[slot='top-chrome']::before,
													:host([videotitle])
														media-control-bar[slot='top-chrome']::before {
														content: '';
														position: absolute;
														width: 100%;
														padding-bottom: min(100px, 25%);
														background: linear-gradient(
															to top,
															var(--gradient-steps)
														);
														opacity: 0.8;
														pointer-events: none;
													}

													:host(:not([audio]))
														media-control-bar[part~='bottom']::before {
														content: '';
														position: absolute;
														width: 100%;
														bottom: 0;
														left: 0;
														padding-bottom: min(100px, 25%);
														background: linear-gradient(
															to bottom,
															var(--gradient-steps)
														);
														opacity: 0.8;
														z-index: 1;
														pointer-events: none;
													}

													media-control-bar[part~='bottom'] > * {
														z-index: 20;
													}

													media-control-bar[part~='bottom'] {
														padding: 6px 6px;
													}

													media-control-bar[slot~='top-chrome'] > * {
														--media-control-background: transparent;
														--media-control-hover-background: transparent;
														position: relative;
													}

													media-controller::part(vertical-layer) {
														transition: background-color 1s;
													}

													media-controller:is(
															[mediapaused],
															:not([userinactive])
														)::part(vertical-layer) {
														background-color: var(
															--controls-backdrop-color,
															var(--controls, transparent)
														);
														transition: background-color 0.25s;
													}

													.center-controls {
														--media-button-icon-width: 100%;
														--media-button-icon-height: auto;
														--media-tooltip-display: none;
														pointer-events: none;
														width: 100%;
														display: flex;
														flex-flow: row;
														align-items: center;
														justify-content: center;
														paint-order: stroke;
														stroke: rgba(102, 102, 102, 1);
														stroke-width: 0.3px;
														text-shadow:
															0 0 2px rgb(0 0 0 / 0.25),
															0 0 6px rgb(0 0 0 / 0.25);
													}

													.center-controls media-play-button {
														--media-control-background: transparent;
														--media-control-hover-background: transparent;
														--media-control-padding: 0;
														width: 40px;
														filter: drop-shadow(0 0 2px rgb(0 0 0 / 0.25))
															drop-shadow(0 0 6px rgb(0 0 0 / 0.25));
													}

													[breakpointsm] .center-controls media-play-button {
														width: 90px;
														height: 90px;
														border-radius: 50%;
														transition: background 0.4s;
														padding: 24px;
														--media-control-background: #000;
														--media-control-hover-background: var(
															--_accent-color
														);
													}

													.center-controls media-seek-backward-button,
													.center-controls media-seek-forward-button {
														--media-control-background: transparent;
														--media-control-hover-background: transparent;
														padding: 0;
														margin: 0 20px;
														width: max(33px, min(8%, 40px));
														text-shadow:
															0 0 2px rgb(0 0 0 / 0.25),
															0 0 6px rgb(0 0 0 / 0.25);
													}

													[breakpointsm]:not([audio])
														.center-controls.pre-playback {
														display: grid;
														align-items: initial;
														justify-content: initial;
														height: 100%;
														overflow: hidden;
													}

													[breakpointsm]:not([audio])
														.center-controls.pre-playback
														media-play-button {
														place-self: var(--_pre-playback-place, center);
														grid-area: 1 / 1;
														margin: 16px;
													}

													/* Show and hide controls or pre-playback state */

													[breakpointsm]:is(
															[mediahasplayed],
															:not([mediapaused])
														):not([audio])
														.center-controls.pre-playback
														media-play-button {
														/* Using `forwards` would lead to a laggy UI after the animation got in the end state */
														animation: 0.3s linear pre-play-hide;
														opacity: 0;
														pointer-events: none;
													}

													.autoplay-unmute {
														--media-control-hover-background: transparent;
														width: 100%;
														display: flex;
														align-items: center;
														justify-content: center;
														filter: drop-shadow(0 0 2px rgb(0 0 0 / 0.25))
															drop-shadow(0 0 6px rgb(0 0 0 / 0.25));
													}

													.autoplay-unmute-btn {
														--media-control-height: 16px;
														border-radius: 8px;
														background: #000;
														color: var(--_primary-color);
														display: flex;
														align-items: center;
														padding: 8px 16px;
														font-size: 18px;
														font-weight: 500;
														cursor: pointer;
													}

													.autoplay-unmute-btn:hover {
														background: var(--_accent-color);
													}

													[breakpointsm] .autoplay-unmute-btn {
														--media-control-height: 30px;
														padding: 14px 24px;
														font-size: 26px;
													}

													.autoplay-unmute-btn svg {
														margin: 0 6px 0 0;
													}

													[breakpointsm] .autoplay-unmute-btn svg {
														margin: 0 10px 0 0;
													}

													media-controller:not([audio]):not([mediahasplayed])
														*:is(media-control-bar, media-time-range) {
														display: none;
													}

													media-error-dialog:not([mediaerrorcode]) {
														opacity: 0;
													}

													media-loading-indicator {
														--media-loading-icon-width: 100%;
														--media-button-icon-height: auto;
														display: var(
															--media-control-display,
															var(--media-loading-indicator-display, flex)
														);
														pointer-events: none;
														position: absolute;
														width: min(15%, 150px);
														flex-flow: row;
														align-items: center;
														justify-content: center;
													}

													/* Intentionally don't target the div for transition but the children
     of the div. Prevents messing with media-chrome's autohide feature. */
													media-loading-indicator + div * {
														transition: opacity 0.15s;
														opacity: 1;
													}

													media-loading-indicator[medialoading]:not(
															[mediapaused]
														)
														~ div
														> * {
														opacity: 0;
														transition-delay: 400ms;
													}

													media-volume-range {
														width: min(100%, 100px);
														--media-range-padding-left: 10px;
														--media-range-padding-right: 10px;
														--media-range-thumb-width: 12px;
														--media-range-thumb-height: 12px;
														--media-range-thumb-background: radial-gradient(
															circle,
															#000 0%,
															#000 25%,
															var(--_primary-color) 25%,
															var(--_primary-color)
														);
														--media-control-hover-background: none;
													}

													media-time-display {
														white-space: nowrap;
													}

													/* Generic style for explicitly disabled controls */
													media-control-bar[part~='bottom'] [disabled],
													media-control-bar[part~='bottom']
														[aria-disabled='true'] {
														opacity: 60%;
														cursor: not-allowed;
													}

													media-text-display {
														--media-font-size: 16px;
														--media-control-padding: 14px;
														font-weight: 500;
													}

													media-play-button.animated *:is(g, path) {
														transition: all 0.3s;
													}

													media-play-button.animated[mediapaused]
														.pause-icon-pt1 {
														opacity: 0;
													}

													media-play-button.animated[mediapaused]
														.pause-icon-pt2 {
														transform-origin: center center;
														transform: scaleY(0);
													}

													media-play-button.animated[mediapaused] .play-icon {
														clip-path: inset(0 0 0 0);
													}

													media-play-button.animated:not([mediapaused])
														.play-icon {
														clip-path: inset(0 0 0 100%);
													}

													media-seek-forward-button,
													media-seek-backward-button {
														--media-font-weight: 400;
													}

													.mute-icon {
														display: inline-block;
													}

													.mute-icon :is(path, g) {
														transition: opacity 0.5s;
													}

													.muted {
														opacity: 0;
													}

													media-mute-button[mediavolumelevel='low']
														:is(.volume-medium, .volume-high),
													media-mute-button[mediavolumelevel='medium']
														:is(.volume-high) {
														opacity: 0;
													}

													media-mute-button[mediavolumelevel='off'] .unmuted {
														opacity: 0;
													}

													media-mute-button[mediavolumelevel='off'] .muted {
														opacity: 1;
													}

													/**
     * Our defaults for these buttons are to hide them at small sizes
     * users can override this with CSS
     */
													media-controller:not([breakpointsm]):not([audio]) {
														--bottom-play-button: none;
														--bottom-seek-backward-button: none;
														--bottom-seek-forward-button: none;
														--bottom-time-display: none;
														--bottom-playback-rate-menu-button: none;
														--bottom-pip-button: none;
													}

													[part='mux-badge'] {
														position: absolute;
														bottom: 10px;
														right: 10px;
														z-index: 2;
														opacity: 0.6;
														transition:
															opacity 0.2s ease-in-out,
															bottom 0.2s ease-in-out;
													}

													[part='mux-badge']:hover {
														opacity: 1;
													}

													[part='mux-badge'] a {
														font-size: 14px;
														font-family: var(--_font-family);
														color: var(--_primary-color);
														text-decoration: none;
														display: flex;
														align-items: center;
														gap: 5px;
													}

													[part='mux-badge'] .mux-badge-text {
														transition: opacity 0.5s ease-in-out;
														opacity: 0;
													}

													[part='mux-badge'] .mux-badge-logo {
														width: 40px;
														height: auto;
														display: inline-block;
													}

													[part='mux-badge'] .mux-badge-logo svg {
														width: 100%;
														height: 100%;
														fill: white;
													}

													media-controller:not([userinactive]):not(
															[mediahasplayed]
														)
														[part='mux-badge'],
													media-controller:not([userinactive])
														[part='mux-badge'],
													media-controller[mediahasplayed][mediapaused]
														[part='mux-badge'] {
														transition: bottom 0.1s ease-in-out;
													}

													media-controller[userinactive]:not([mediapaused])
														[part='mux-badge'] {
														transition: bottom 0.2s ease-in-out 0.62s;
													}

													media-controller:not([userinactive])
														[part='mux-badge']
														.mux-badge-text,
													media-controller[mediahasplayed][mediapaused]
														[part='mux-badge']
														.mux-badge-text {
														opacity: 1;
													}

													media-controller[userinactive]:not([mediapaused])
														[part='mux-badge']
														.mux-badge-text {
														opacity: 0;
													}

													media-controller[userinactive]:not([mediapaused])
														[part='mux-badge'] {
														bottom: 10px;
													}

													media-controller:not([userinactive]):not(
															[mediahasplayed]
														)
														[part='mux-badge'] {
														bottom: 10px;
													}

													media-controller:not([userinactive])[mediahasplayed]
														[part='mux-badge'],
													media-controller[mediahasplayed][mediapaused]
														[part='mux-badge'] {
														bottom: calc(
															28px + var(--media-control-height, 0px) +
																var(--media-control-padding, 0px) * 2
														);
													}
