@videojs/html 10.2.0 → 10.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/dist/default/define/audio/compat-skin.css +72 -5
  2. package/dist/default/define/audio/compat-skin2.js +1 -1
  3. package/dist/default/define/audio/neutral-skin.css +23 -5
  4. package/dist/default/define/audio/neutral-skin2.js +1 -1
  5. package/dist/default/define/audio/scaffold-skin.css +63 -4
  6. package/dist/default/define/audio/scaffold-skin2.js +1 -1
  7. package/dist/default/define/audio/skin.css +21 -5
  8. package/dist/default/define/audio/skin2.js +1 -1
  9. package/dist/default/define/extensions/google-analytics.js +6 -0
  10. package/dist/default/define/live-audio/compat-skin.css +54 -5
  11. package/dist/default/define/live-audio/compat-skin2.js +1 -1
  12. package/dist/default/define/live-audio/neutral-skin.css +8 -4
  13. package/dist/default/define/live-audio/neutral-skin2.js +1 -1
  14. package/dist/default/define/live-audio/scaffold-skin.css +45 -4
  15. package/dist/default/define/live-audio/scaffold-skin2.js +1 -1
  16. package/dist/default/define/live-audio/skin.css +6 -4
  17. package/dist/default/define/live-audio/skin2.js +1 -1
  18. package/dist/default/define/live-video/compat-skin.css +115 -13
  19. package/dist/default/define/live-video/compat-skin2.js +1 -1
  20. package/dist/default/define/live-video/neutral-skin.css +82 -14
  21. package/dist/default/define/live-video/neutral-skin2.js +1 -1
  22. package/dist/default/define/live-video/scaffold-skin.css +95 -13
  23. package/dist/default/define/live-video/scaffold-skin2.js +1 -1
  24. package/dist/default/define/live-video/skin.css +96 -16
  25. package/dist/default/define/live-video/skin2.js +1 -1
  26. package/dist/default/define/media/dailymotion-video.js +11 -0
  27. package/dist/default/define/media/mixcloud-audio.js +11 -0
  28. package/dist/default/define/media/soundcloud-audio.js +11 -0
  29. package/dist/default/define/video/compat-skin.css +115 -13
  30. package/dist/default/define/video/compat-skin2.js +1 -1
  31. package/dist/default/define/video/neutral-skin.css +83 -14
  32. package/dist/default/define/video/neutral-skin2.js +1 -1
  33. package/dist/default/define/video/scaffold-skin.css +95 -13
  34. package/dist/default/define/video/scaffold-skin2.js +1 -1
  35. package/dist/default/define/video/skin.css +94 -16
  36. package/dist/default/define/video/skin2.js +1 -1
  37. package/dist/default/extensions/google-analytics/extension.js +75 -0
  38. package/dist/default/extensions/mux-data/extension.js +7 -2
  39. package/dist/default/internal/skins/compat-audio/skin.css +72 -5
  40. package/dist/default/internal/skins/compat-audio/template.js +1 -1
  41. package/dist/default/internal/skins/compat-live-audio/skin.css +54 -5
  42. package/dist/default/internal/skins/compat-live-video/skin.css +115 -13
  43. package/dist/default/internal/skins/compat-video/skin.css +115 -13
  44. package/dist/default/internal/skins/default-audio/skin.css +21 -5
  45. package/dist/default/internal/skins/default-live-audio/skin.css +6 -4
  46. package/dist/default/internal/skins/default-live-video/skin.css +96 -16
  47. package/dist/default/internal/skins/default-video/skin.css +94 -16
  48. package/dist/default/internal/skins/neutral-audio/skin.css +23 -5
  49. package/dist/default/internal/skins/neutral-live-audio/skin.css +8 -4
  50. package/dist/default/internal/skins/neutral-live-video/skin.css +82 -14
  51. package/dist/default/internal/skins/neutral-video/skin.css +83 -14
  52. package/dist/default/internal/skins/scaffold-audio/skin.css +63 -4
  53. package/dist/default/internal/skins/scaffold-audio/template.js +1 -1
  54. package/dist/default/internal/skins/scaffold-live-audio/skin.css +45 -4
  55. package/dist/default/internal/skins/scaffold-live-video/skin.css +95 -13
  56. package/dist/default/internal/skins/scaffold-video/skin.css +95 -13
  57. package/dist/default/media/dailymotion-video/adapter.js +31 -0
  58. package/dist/default/media/hls-background-video/adapter.js +7 -0
  59. package/dist/default/media/mixcloud-audio/adapter.js +16 -0
  60. package/dist/default/media/soundcloud-audio/adapter.js +16 -0
  61. package/dist/default/player/element.js +1 -5
  62. package/dist/default/presets/background/skin.js +2 -2
  63. package/dist/default/presets/skin.js +4 -3
  64. package/dist/default/ui/dialog/element.js +13 -1
  65. package/dist/default/ui/gesture/element.js +3 -0
  66. package/dist/default/ui/media-button-element.js +10 -1
  67. package/dist/default/ui/playback-rate-button/element.js +7 -2
  68. package/dist/default/ui/playback-rate-radio-group/element.js +10 -3
  69. package/dist/default/ui/radio-options/controller.js +18 -5
  70. package/dist/default/version.js +1 -1
  71. package/dist/dev/define/audio/compat-skin.css +72 -5
  72. package/dist/dev/define/audio/compat-skin2.js +1 -1
  73. package/dist/dev/define/audio/compat-skin2.js.map +1 -1
  74. package/dist/dev/define/audio/neutral-skin.css +23 -5
  75. package/dist/dev/define/audio/neutral-skin2.js +1 -1
  76. package/dist/dev/define/audio/neutral-skin2.js.map +1 -1
  77. package/dist/dev/define/audio/scaffold-skin.css +63 -4
  78. package/dist/dev/define/audio/scaffold-skin2.js +1 -1
  79. package/dist/dev/define/audio/scaffold-skin2.js.map +1 -1
  80. package/dist/dev/define/audio/skin.css +21 -5
  81. package/dist/dev/define/audio/skin2.js +1 -1
  82. package/dist/dev/define/audio/skin2.js.map +1 -1
  83. package/dist/dev/define/extensions/google-analytics.d.ts +11 -0
  84. package/dist/dev/define/extensions/google-analytics.js +8 -0
  85. package/dist/dev/define/extensions/google-analytics.js.map +1 -0
  86. package/dist/dev/define/live-audio/compat-skin.css +54 -5
  87. package/dist/dev/define/live-audio/compat-skin2.js +1 -1
  88. package/dist/dev/define/live-audio/compat-skin2.js.map +1 -1
  89. package/dist/dev/define/live-audio/neutral-skin.css +8 -4
  90. package/dist/dev/define/live-audio/neutral-skin2.js +1 -1
  91. package/dist/dev/define/live-audio/neutral-skin2.js.map +1 -1
  92. package/dist/dev/define/live-audio/scaffold-skin.css +45 -4
  93. package/dist/dev/define/live-audio/scaffold-skin2.js +1 -1
  94. package/dist/dev/define/live-audio/scaffold-skin2.js.map +1 -1
  95. package/dist/dev/define/live-audio/skin.css +6 -4
  96. package/dist/dev/define/live-audio/skin2.js +1 -1
  97. package/dist/dev/define/live-audio/skin2.js.map +1 -1
  98. package/dist/dev/define/live-video/compat-skin.css +115 -13
  99. package/dist/dev/define/live-video/compat-skin2.js +1 -1
  100. package/dist/dev/define/live-video/compat-skin2.js.map +1 -1
  101. package/dist/dev/define/live-video/neutral-skin.css +82 -14
  102. package/dist/dev/define/live-video/neutral-skin2.js +1 -1
  103. package/dist/dev/define/live-video/neutral-skin2.js.map +1 -1
  104. package/dist/dev/define/live-video/scaffold-skin.css +95 -13
  105. package/dist/dev/define/live-video/scaffold-skin2.js +1 -1
  106. package/dist/dev/define/live-video/scaffold-skin2.js.map +1 -1
  107. package/dist/dev/define/live-video/skin.css +96 -16
  108. package/dist/dev/define/live-video/skin2.js +1 -1
  109. package/dist/dev/define/live-video/skin2.js.map +1 -1
  110. package/dist/dev/define/media/dailymotion-video.d.ts +15 -0
  111. package/dist/dev/define/media/dailymotion-video.js +13 -0
  112. package/dist/dev/define/media/dailymotion-video.js.map +1 -0
  113. package/dist/dev/define/media/mixcloud-audio.d.ts +15 -0
  114. package/dist/dev/define/media/mixcloud-audio.js +13 -0
  115. package/dist/dev/define/media/mixcloud-audio.js.map +1 -0
  116. package/dist/dev/define/media/soundcloud-audio.d.ts +15 -0
  117. package/dist/dev/define/media/soundcloud-audio.js +13 -0
  118. package/dist/dev/define/media/soundcloud-audio.js.map +1 -0
  119. package/dist/dev/define/video/compat-skin.css +115 -13
  120. package/dist/dev/define/video/compat-skin2.js +1 -1
  121. package/dist/dev/define/video/compat-skin2.js.map +1 -1
  122. package/dist/dev/define/video/neutral-skin.css +83 -14
  123. package/dist/dev/define/video/neutral-skin2.js +1 -1
  124. package/dist/dev/define/video/neutral-skin2.js.map +1 -1
  125. package/dist/dev/define/video/scaffold-skin.css +95 -13
  126. package/dist/dev/define/video/scaffold-skin2.js +1 -1
  127. package/dist/dev/define/video/scaffold-skin2.js.map +1 -1
  128. package/dist/dev/define/video/skin.css +94 -16
  129. package/dist/dev/define/video/skin2.js +1 -1
  130. package/dist/dev/define/video/skin2.js.map +1 -1
  131. package/dist/dev/extensions/google-analytics/extension.d.ts +52 -0
  132. package/dist/dev/extensions/google-analytics/extension.js +77 -0
  133. package/dist/dev/extensions/google-analytics/extension.js.map +1 -0
  134. package/dist/dev/extensions/google-analytics/index.d.ts +2 -0
  135. package/dist/dev/extensions/mux-data/extension.d.ts +4 -1
  136. package/dist/dev/extensions/mux-data/extension.js +7 -2
  137. package/dist/dev/extensions/mux-data/extension.js.map +1 -1
  138. package/dist/dev/index.d.ts +3 -3
  139. package/dist/dev/internal/skins/compat-audio/skin.css +72 -5
  140. package/dist/dev/internal/skins/compat-audio/template.js +1 -1
  141. package/dist/dev/internal/skins/compat-audio/template.js.map +1 -1
  142. package/dist/dev/internal/skins/compat-live-audio/skin.css +54 -5
  143. package/dist/dev/internal/skins/compat-live-video/skin.css +115 -13
  144. package/dist/dev/internal/skins/compat-video/skin.css +115 -13
  145. package/dist/dev/internal/skins/default-audio/skin.css +21 -5
  146. package/dist/dev/internal/skins/default-live-audio/skin.css +6 -4
  147. package/dist/dev/internal/skins/default-live-video/skin.css +96 -16
  148. package/dist/dev/internal/skins/default-video/skin.css +94 -16
  149. package/dist/dev/internal/skins/neutral-audio/skin.css +23 -5
  150. package/dist/dev/internal/skins/neutral-live-audio/skin.css +8 -4
  151. package/dist/dev/internal/skins/neutral-live-video/skin.css +82 -14
  152. package/dist/dev/internal/skins/neutral-video/skin.css +83 -14
  153. package/dist/dev/internal/skins/scaffold-audio/skin.css +63 -4
  154. package/dist/dev/internal/skins/scaffold-audio/template.js +1 -1
  155. package/dist/dev/internal/skins/scaffold-audio/template.js.map +1 -1
  156. package/dist/dev/internal/skins/scaffold-live-audio/skin.css +45 -4
  157. package/dist/dev/internal/skins/scaffold-live-video/skin.css +95 -13
  158. package/dist/dev/internal/skins/scaffold-video/skin.css +95 -13
  159. package/dist/dev/media/dailymotion-video/adapter.d.ts +17 -0
  160. package/dist/dev/media/dailymotion-video/adapter.js +47 -0
  161. package/dist/dev/media/dailymotion-video/adapter.js.map +1 -0
  162. package/dist/dev/media/dailymotion-video/index.d.ts +2 -0
  163. package/dist/dev/media/hls-background-video/adapter.d.ts +6 -1
  164. package/dist/dev/media/hls-background-video/adapter.js +7 -0
  165. package/dist/dev/media/hls-background-video/adapter.js.map +1 -1
  166. package/dist/dev/media/mixcloud-audio/adapter.d.ts +11 -0
  167. package/dist/dev/media/mixcloud-audio/adapter.js +52 -0
  168. package/dist/dev/media/mixcloud-audio/adapter.js.map +1 -0
  169. package/dist/dev/media/mixcloud-audio/index.d.ts +2 -0
  170. package/dist/dev/media/soundcloud-audio/adapter.d.ts +11 -0
  171. package/dist/dev/media/soundcloud-audio/adapter.js +53 -0
  172. package/dist/dev/media/soundcloud-audio/adapter.js.map +1 -0
  173. package/dist/dev/media/soundcloud-audio/index.d.ts +2 -0
  174. package/dist/dev/player/element.js +1 -5
  175. package/dist/dev/player/element.js.map +1 -1
  176. package/dist/dev/presets/background/skin.d.ts +2 -1
  177. package/dist/dev/presets/background/skin.js +2 -2
  178. package/dist/dev/presets/background/skin.js.map +1 -1
  179. package/dist/dev/presets/skin.d.ts +4 -3
  180. package/dist/dev/presets/skin.js +4 -3
  181. package/dist/dev/presets/skin.js.map +1 -1
  182. package/dist/dev/ui/dialog/element.js +13 -1
  183. package/dist/dev/ui/dialog/element.js.map +1 -1
  184. package/dist/dev/ui/gesture/element.js +3 -0
  185. package/dist/dev/ui/gesture/element.js.map +1 -1
  186. package/dist/dev/ui/media-button-element.d.ts +9 -0
  187. package/dist/dev/ui/media-button-element.js +10 -1
  188. package/dist/dev/ui/media-button-element.js.map +1 -1
  189. package/dist/dev/ui/play-button/element.d.ts +2 -0
  190. package/dist/dev/ui/playback-rate-button/element.d.ts +9 -1
  191. package/dist/dev/ui/playback-rate-button/element.js +7 -2
  192. package/dist/dev/ui/playback-rate-button/element.js.map +1 -1
  193. package/dist/dev/ui/playback-rate-radio-group/element.d.ts +4 -0
  194. package/dist/dev/ui/playback-rate-radio-group/element.js +10 -3
  195. package/dist/dev/ui/playback-rate-radio-group/element.js.map +1 -1
  196. package/dist/dev/ui/radio-options/controller.js +18 -5
  197. package/dist/dev/ui/radio-options/controller.js.map +1 -1
  198. package/dist/dev/version.js +1 -1
  199. package/docs/README.md +1 -1
  200. package/docs/guides/autoplay.md +1 -1
  201. package/docs/guides/browser-support.md +2 -0
  202. package/docs/guides/build-your-own-skin.md +3 -1
  203. package/docs/guides/cdn.md +10 -9
  204. package/docs/guides/content-security-policy.md +3 -0
  205. package/docs/guides/customize-skins.md +4 -2
  206. package/docs/guides/features.md +1 -1
  207. package/docs/guides/google-analytics.md +199 -0
  208. package/docs/guides/installation-cdn.md +4 -4
  209. package/docs/guides/installation-shadcn.md +3 -3
  210. package/docs/guides/installation-svelte.md +4 -4
  211. package/docs/guides/installation-vue.md +4 -4
  212. package/docs/guides/installation.md +4 -4
  213. package/docs/guides/internationalization.md +5 -5
  214. package/docs/guides/keyboard-shortcuts.md +1 -1
  215. package/docs/guides/llms.txt +2 -1
  216. package/docs/guides/media-sources.md +3 -0
  217. package/docs/guides/migrate-from-media-chrome.md +4 -4
  218. package/docs/guides/migrate-from-mux-player.md +9 -9
  219. package/docs/guides/migrate-from-plyr.md +8 -8
  220. package/docs/guides/migrate-from-video-js-8.md +8 -9
  221. package/docs/guides/migrate-from-vidstack.md +8 -8
  222. package/docs/guides/mux-data.md +22 -0
  223. package/docs/guides/presets.md +1 -1
  224. package/docs/guides/self-hosting.md +5 -5
  225. package/docs/guides/skins.md +16 -1
  226. package/docs/guides/ui-components.md +1 -1
  227. package/docs/llms.txt +10 -5
  228. package/docs/reference/api/feature-playback-rate.md +54 -3
  229. package/docs/reference/api/feature-playback.md +5 -1
  230. package/docs/reference/api/html-create-player.md +2 -2
  231. package/docs/reference/api/llms.txt +1 -1
  232. package/docs/reference/api/media-capabilities.md +1 -1
  233. package/docs/reference/api/player-store.md +6 -3
  234. package/docs/reference/api/preset-audio.md +13 -5
  235. package/docs/reference/api/preset-background.md +2 -2
  236. package/docs/reference/api/preset-live-audio.md +13 -5
  237. package/docs/reference/api/preset-live-video.md +13 -5
  238. package/docs/reference/api/preset-video.md +13 -5
  239. package/docs/reference/api/resolve-adapter-type.md +4 -1
  240. package/docs/reference/api/ui-element.md +2 -2
  241. package/docs/reference/components/alert-dialog.md +21 -16
  242. package/docs/reference/components/audio-compat-skin.md +8 -2
  243. package/docs/reference/components/audio-neutral-skin.md +2 -2
  244. package/docs/reference/components/audio-scaffold-skin.md +2 -2
  245. package/docs/reference/components/audio-skin.md +2 -2
  246. package/docs/reference/components/audio-track-radio-group.md +2 -2
  247. package/docs/reference/components/background-video-skin.md +1 -1
  248. package/docs/reference/components/background-video.md +1 -1
  249. package/docs/reference/components/buffering-indicator.md +2 -2
  250. package/docs/reference/components/captions-radio-group.md +2 -2
  251. package/docs/reference/components/cloudflare-video.md +1 -1
  252. package/docs/reference/components/dailymotion-video.md +192 -0
  253. package/docs/reference/components/dash-video.md +2 -1
  254. package/docs/reference/components/dialog.md +49 -22
  255. package/docs/reference/components/error-dialog.md +13 -10
  256. package/docs/reference/components/gesture.md +2 -2
  257. package/docs/reference/components/google-analytics.md +51 -0
  258. package/docs/reference/components/google-cast.md +1 -1
  259. package/docs/reference/components/hls-audio.md +1 -1
  260. package/docs/reference/components/hls-background-video.md +4 -1
  261. package/docs/reference/components/hls-video.md +1 -1
  262. package/docs/reference/components/hlsjs-video.md +3 -1
  263. package/docs/reference/components/hotkey.md +2 -2
  264. package/docs/reference/components/live-audio-compat-skin.md +8 -2
  265. package/docs/reference/components/live-audio-neutral-skin.md +2 -2
  266. package/docs/reference/components/live-audio-scaffold-skin.md +2 -2
  267. package/docs/reference/components/live-audio-skin.md +2 -2
  268. package/docs/reference/components/live-video-compat-skin.md +8 -2
  269. package/docs/reference/components/live-video-neutral-skin.md +2 -2
  270. package/docs/reference/components/live-video-scaffold-skin.md +2 -2
  271. package/docs/reference/components/live-video-skin.md +2 -2
  272. package/docs/reference/components/llms.txt +9 -5
  273. package/docs/reference/components/mixcloud-audio.md +203 -0
  274. package/docs/reference/components/mux-audio.md +3 -1
  275. package/docs/reference/components/mux-background-video.md +1 -1
  276. package/docs/reference/components/mux-data.md +20 -2
  277. package/docs/reference/components/mux-video.md +3 -1
  278. package/docs/reference/components/native-hls-video.md +2 -1
  279. package/docs/reference/components/play-button.md +7 -5
  280. package/docs/reference/components/playback-rate-button.md +26 -7
  281. package/docs/reference/components/playback-rate-radio-group.md +7 -4
  282. package/docs/reference/components/player.md +3 -3
  283. package/docs/reference/components/playerjs-video.md +1 -1
  284. package/docs/reference/components/quality-radio-group.md +2 -2
  285. package/docs/reference/components/shaka-video.md +2 -1
  286. package/docs/reference/components/soundcloud-audio.md +227 -0
  287. package/docs/reference/components/spotify-audio.md +2 -2
  288. package/docs/reference/components/tiktok-video.md +2 -2
  289. package/docs/reference/components/twitch-video.md +2 -3
  290. package/docs/reference/components/video-compat-skin.md +8 -2
  291. package/docs/reference/components/video-neutral-skin.md +2 -2
  292. package/docs/reference/components/video-scaffold-skin.md +2 -2
  293. package/docs/reference/components/video-skin.md +2 -2
  294. package/docs/reference/components/vimeo-video.md +2 -1
  295. package/docs/reference/components/wistia-video.md +1 -1
  296. package/docs/reference/components/youtube-video.md +2 -1
  297. package/package.json +60 -40
@@ -182,7 +182,11 @@
182
182
 
183
183
  :where(.media-skin[data-theme="compat"][data-preset="audio"]) .media-dialog-backdrop {
184
184
  z-index: 40;
185
+ transition-property: opacity;
186
+ transition-duration: .15s;
187
+ transition-duration: var(--media-duration-slower);
185
188
  background-color: #000000bf;
189
+ transition-timing-function: cubic-bezier(0, 0, .2, 1);
186
190
  position: absolute;
187
191
  inset: 0;
188
192
  }
@@ -191,6 +195,18 @@
191
195
  display: none;
192
196
  }
193
197
 
198
+ :where(.media-skin[data-theme="compat"][data-preset="audio"]) .media-dialog-backdrop[data-ending-style] {
199
+ transition-duration: var(--media-duration);
200
+ }
201
+
202
+ :where(.media-skin[data-theme="compat"][data-preset="audio"]) .media-dialog-backdrop[data-scope="document"] {
203
+ position: fixed;
204
+ }
205
+
206
+ :where(.media-skin[data-theme="compat"][data-preset="audio"]) .media-dialog-backdrop:is([data-starting-style], [data-ending-style]) {
207
+ opacity: 0;
208
+ }
209
+
194
210
  :where(.media-skin[data-theme="compat"][data-preset="audio"]) .media-dialog-close {
195
211
  height: calc(var(--media-spacing) * 8);
196
212
  width: auto;
@@ -215,8 +231,12 @@
215
231
  background-color: var(--media-popover);
216
232
  padding: calc(var(--media-spacing) * 5);
217
233
  color: var(--media-popover-foreground);
234
+ transition-property: opacity, scale;
235
+ transition-duration: .15s;
236
+ transition-duration: var(--media-duration-slower);
218
237
  border-radius: .5rem;
219
238
  outline-style: none;
239
+ transition-timing-function: cubic-bezier(0, 0, .2, 1);
220
240
  display: grid;
221
241
  position: absolute;
222
242
  top: 50%;
@@ -236,6 +256,15 @@
236
256
  outline-color: var(--media-ring);
237
257
  }
238
258
 
259
+ :where(.media-skin[data-theme="compat"][data-preset="audio"]) .media-dialog-popup[data-ending-style] {
260
+ transition-duration: var(--media-duration);
261
+ }
262
+
263
+ :where(.media-skin[data-theme="compat"][data-preset="audio"]) .media-dialog-popup[data-scope="document"] {
264
+ max-height: calc(100dvh - 2rem);
265
+ position: fixed;
266
+ }
267
+
239
268
  @media (forced-colors: active) {
240
269
  :where(.media-skin[data-theme="compat"][data-preset="audio"]) .media-dialog-popup {
241
270
  border: 1px solid canvastext;
@@ -248,6 +277,11 @@
248
277
  }
249
278
  }
250
279
 
280
+ :where(.media-skin[data-theme="compat"][data-preset="audio"]) .media-dialog-popup:is([data-starting-style], [data-ending-style]) {
281
+ scale: var(--media-hidden-popup-scale) var(--media-hidden-popup-scale);
282
+ opacity: 0;
283
+ }
284
+
251
285
  :where(.media-skin[data-theme="compat"][data-preset="audio"]) .media-dialog-title {
252
286
  font-size: 1.125rem;
253
287
  font-weight: 700;
@@ -890,7 +924,7 @@
890
924
  :where(.media-skin[data-theme="compat"][data-preset="audio"]) .video-controls-backdrop {
891
925
  pointer-events: none;
892
926
  z-index: 10;
893
- background-image: linear-gradient(to top, #000000b3, #0003, #00000080);
927
+ background-image: var(--media-controls-gradient);
894
928
  position: absolute;
895
929
  inset: 0;
896
930
  }
@@ -1314,6 +1348,10 @@
1314
1348
  outline: 2px solid;
1315
1349
  }
1316
1350
 
1351
+ :where(.media-skin[data-theme="compat"][data-preset="audio"]) .media-menu-radio-item[data-custom] {
1352
+ font-style: italic;
1353
+ }
1354
+
1317
1355
  :where(.media-skin[data-theme="compat"][data-preset="audio"]) .media-menu-radio-item[data-highlighted] {
1318
1356
  background-color: var(--media-button-highlight);
1319
1357
  }
@@ -1336,6 +1374,20 @@
1336
1374
  font-variant-numeric: tabular-nums;
1337
1375
  }
1338
1376
 
1377
+ @supports not (text-fit: shrink) {
1378
+ :where(.media-skin[data-theme="compat"][data-preset="audio"]) .media-playback-rate-button {
1379
+ font-size: min(1em, calc(4em / (var(--media-playback-rate-length, 3) + 1)));
1380
+ }
1381
+ }
1382
+
1383
+ :where(.media-skin[data-theme="compat"][data-preset="audio"]) .media-playback-rate-button-label {
1384
+ text-align: center;
1385
+ white-space: nowrap;
1386
+ text-fit: shrink;
1387
+ width: 80%;
1388
+ min-width: 0;
1389
+ }
1390
+
1339
1391
  :where(.media-skin[data-theme="compat"][data-preset="audio"]) .media-menu-content {
1340
1392
  overscroll-behavior: none;
1341
1393
  max-height: 100%;
@@ -1496,7 +1548,6 @@
1496
1548
  }
1497
1549
 
1498
1550
  :where(.media-skin[data-theme="compat"][data-preset="audio"]) .media-audio, :where(.media-skin[data-theme="compat"][data-preset="audio"]).media-audio {
1499
- aspect-ratio: auto;
1500
1551
  background-color: var(--media-background);
1501
1552
  box-shadow: 0 0 #0000,
1502
1553
  0 0 #0000,
@@ -1509,6 +1560,9 @@
1509
1560
  :where(.media-skin[data-theme="compat"][data-preset="audio"]) .media-container, :where(.media-skin[data-theme="compat"][data-preset="audio"]).media-container {
1510
1561
  border-radius: var(--media-video-border-radius);
1511
1562
  width: 100%;
1563
+ min-width: 0;
1564
+ height: 100%;
1565
+ min-height: 0;
1512
1566
  font-family: var(--media-font-family, "Inter Variable", Inter, ui-sans-serif, system-ui, sans-serif);
1513
1567
  font-size: calc(var(--media-spacing) * 3.25);
1514
1568
  color: var(--media-foreground);
@@ -1538,6 +1592,17 @@
1538
1592
  outline-style: solid;
1539
1593
  outline-color: var(--media-ring);
1540
1594
  }
1595
+
1596
+ .media-container > slot::slotted(video), :scope.media-container > slot::slotted(video) {
1597
+ border-radius: inherit;
1598
+ object-fit: var(--media-object-fit, contain);
1599
+ object-position: var(--media-object-position, center);
1600
+ width: 100%;
1601
+ max-width: 100%;
1602
+ margin: 0;
1603
+ display: block;
1604
+ height: 100% !important;
1605
+ }
1541
1606
  }
1542
1607
 
1543
1608
  @layer utilities;
@@ -1555,7 +1620,7 @@
1555
1620
  --media-accent: var(--media-accent-color, color-mix(in oklab, var(--media-default-accent-color) 10%, transparent));
1556
1621
  --media-accent-foreground: var(--media-accent-text-color, currentColor);
1557
1622
  --media-muted: oklch(100% 0 0 / .15);
1558
- --media-muted-foreground: oklch(100% 0 0 / .65);
1623
+ --media-muted-foreground: color-mix(in oklab, var(--media-foreground) 65%, transparent);
1559
1624
  --media-border: oklch(0% 0 0 / .1);
1560
1625
  --media-ring: oklch(100% 0 0);
1561
1626
  --media-backdrop: oklch(0% 0 0);
@@ -1568,9 +1633,9 @@
1568
1633
  --media-shadow-current-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - .5) * .5), .15));
1569
1634
  --media-shadow-subtle-current-color: color-mix(in oklab, var(--media-shadow-current-color) 40%, transparent);
1570
1635
  --media-text-shadow-dialog: 0 1px 0 #00000040;
1571
- --media-backdrop-filter-surface: blur(16px) saturate(110%);
1636
+ --media-backdrop-filter-surface: blur(16px) saturate(125%);
1572
1637
  --media-backdrop-filter-indicator: blur(8px);
1573
- --media-backdrop-filter-dialog: blur(16px) saturate(110%);
1638
+ --media-backdrop-filter-dialog: blur(16px) saturate(125%);
1574
1639
  --media-control-corner-shape: round;
1575
1640
  --media-control-radius: 99px;
1576
1641
  --media-control-size: calc(var(--media-spacing) * 9);
@@ -1675,6 +1740,7 @@
1675
1740
  --media-controls-foreground: var(--media-foreground);
1676
1741
  --media-popover: var(--media-controls);
1677
1742
  --media-popover-foreground: var(--media-foreground);
1743
+ --media-muted: oklch(0% 0 0 / .1);
1678
1744
  --media-surface-border: oklch(0% 0 0 / .05);
1679
1745
  --media-primary: var(--media-accent-color, var(--media-foreground));
1680
1746
  --media-border: oklch(0% 0 0 / .1);
@@ -1693,6 +1759,7 @@
1693
1759
  --media-foreground: light-dark(oklch(0% 0 0), oklch(100% 0 0));
1694
1760
  --media-controls: light-dark(oklch(100% 0 0 / .5), oklch(0% 0 0 / .4));
1695
1761
  --media-border: light-dark(oklch(0% 0 0 / .1), oklch(100% 0 0 / .1));
1762
+ --media-muted: light-dark(oklch(0% 0 0 / .1), oklch(100% 0 0 / .1));
1696
1763
  --media-default-accent-color: light-dark(oklch(0% 0 0), oklch(100% 0 0));
1697
1764
  --media-default-accent-text-color: light-dark(oklch(100% 0 0), oklch(0% 0 0));
1698
1765
  --media-internal-accent-text-fallback: light-dark(oklch(100% 0 0), oklch(0% 0 0));
@@ -107,7 +107,7 @@ const template = createTemplate(`<media-container class="media-skin media-contai
107
107
  </media-controls-group>
108
108
  <media-controls-group class="video-controls-group">
109
109
  <media-playback-rate-button commandfor="vjs-qLzMuG8D-0-popup" class="media-button media-playback-rate-button" id="vjs-0wiMTNy2-0-4-trigger">
110
- <span data-part="value">
110
+ <span data-part="value" class="media-playback-rate-button-label">
111
111
  </span>
112
112
  </media-playback-rate-button>
113
113
  <media-tooltip trigger="vjs-0wiMTNy2-0-4-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-tooltip-popup">
@@ -182,7 +182,11 @@
182
182
 
183
183
  :where(.media-skin[data-theme="compat"][data-preset="live-audio"]) .media-dialog-backdrop {
184
184
  z-index: 40;
185
+ transition-property: opacity;
186
+ transition-duration: .15s;
187
+ transition-duration: var(--media-duration-slower);
185
188
  background-color: #000000bf;
189
+ transition-timing-function: cubic-bezier(0, 0, .2, 1);
186
190
  position: absolute;
187
191
  inset: 0;
188
192
  }
@@ -191,6 +195,18 @@
191
195
  display: none;
192
196
  }
193
197
 
198
+ :where(.media-skin[data-theme="compat"][data-preset="live-audio"]) .media-dialog-backdrop[data-ending-style] {
199
+ transition-duration: var(--media-duration);
200
+ }
201
+
202
+ :where(.media-skin[data-theme="compat"][data-preset="live-audio"]) .media-dialog-backdrop[data-scope="document"] {
203
+ position: fixed;
204
+ }
205
+
206
+ :where(.media-skin[data-theme="compat"][data-preset="live-audio"]) .media-dialog-backdrop:is([data-starting-style], [data-ending-style]) {
207
+ opacity: 0;
208
+ }
209
+
194
210
  :where(.media-skin[data-theme="compat"][data-preset="live-audio"]) .media-dialog-close {
195
211
  height: calc(var(--media-spacing) * 8);
196
212
  width: auto;
@@ -215,8 +231,12 @@
215
231
  background-color: var(--media-popover);
216
232
  padding: calc(var(--media-spacing) * 5);
217
233
  color: var(--media-popover-foreground);
234
+ transition-property: opacity, scale;
235
+ transition-duration: .15s;
236
+ transition-duration: var(--media-duration-slower);
218
237
  border-radius: .5rem;
219
238
  outline-style: none;
239
+ transition-timing-function: cubic-bezier(0, 0, .2, 1);
220
240
  display: grid;
221
241
  position: absolute;
222
242
  top: 50%;
@@ -236,6 +256,15 @@
236
256
  outline-color: var(--media-ring);
237
257
  }
238
258
 
259
+ :where(.media-skin[data-theme="compat"][data-preset="live-audio"]) .media-dialog-popup[data-ending-style] {
260
+ transition-duration: var(--media-duration);
261
+ }
262
+
263
+ :where(.media-skin[data-theme="compat"][data-preset="live-audio"]) .media-dialog-popup[data-scope="document"] {
264
+ max-height: calc(100dvh - 2rem);
265
+ position: fixed;
266
+ }
267
+
239
268
  @media (forced-colors: active) {
240
269
  :where(.media-skin[data-theme="compat"][data-preset="live-audio"]) .media-dialog-popup {
241
270
  border: 1px solid canvastext;
@@ -248,6 +277,11 @@
248
277
  }
249
278
  }
250
279
 
280
+ :where(.media-skin[data-theme="compat"][data-preset="live-audio"]) .media-dialog-popup:is([data-starting-style], [data-ending-style]) {
281
+ scale: var(--media-hidden-popup-scale) var(--media-hidden-popup-scale);
282
+ opacity: 0;
283
+ }
284
+
251
285
  :where(.media-skin[data-theme="compat"][data-preset="live-audio"]) .media-dialog-title {
252
286
  font-size: 1.125rem;
253
287
  font-weight: 700;
@@ -890,7 +924,7 @@
890
924
  :where(.media-skin[data-theme="compat"][data-preset="live-audio"]) .video-controls-backdrop {
891
925
  pointer-events: none;
892
926
  z-index: 10;
893
- background-image: linear-gradient(to top, #000000b3, #0003, #00000080);
927
+ background-image: var(--media-controls-gradient);
894
928
  position: absolute;
895
929
  inset: 0;
896
930
  }
@@ -1281,7 +1315,6 @@
1281
1315
  }
1282
1316
 
1283
1317
  :where(.media-skin[data-theme="compat"][data-preset="live-audio"]) .media-audio, :where(.media-skin[data-theme="compat"][data-preset="live-audio"]).media-audio {
1284
- aspect-ratio: auto;
1285
1318
  background-color: var(--media-background);
1286
1319
  box-shadow: 0 0 #0000,
1287
1320
  0 0 #0000,
@@ -1294,6 +1327,9 @@
1294
1327
  :where(.media-skin[data-theme="compat"][data-preset="live-audio"]) .media-container, :where(.media-skin[data-theme="compat"][data-preset="live-audio"]).media-container {
1295
1328
  border-radius: var(--media-video-border-radius);
1296
1329
  width: 100%;
1330
+ min-width: 0;
1331
+ height: 100%;
1332
+ min-height: 0;
1297
1333
  font-family: var(--media-font-family, "Inter Variable", Inter, ui-sans-serif, system-ui, sans-serif);
1298
1334
  font-size: calc(var(--media-spacing) * 3.25);
1299
1335
  color: var(--media-foreground);
@@ -1323,6 +1359,17 @@
1323
1359
  outline-style: solid;
1324
1360
  outline-color: var(--media-ring);
1325
1361
  }
1362
+
1363
+ .media-container > slot::slotted(video), :scope.media-container > slot::slotted(video) {
1364
+ border-radius: inherit;
1365
+ object-fit: var(--media-object-fit, contain);
1366
+ object-position: var(--media-object-position, center);
1367
+ width: 100%;
1368
+ max-width: 100%;
1369
+ margin: 0;
1370
+ display: block;
1371
+ height: 100% !important;
1372
+ }
1326
1373
  }
1327
1374
 
1328
1375
  @layer utilities;
@@ -1340,7 +1387,7 @@
1340
1387
  --media-accent: var(--media-accent-color, color-mix(in oklab, var(--media-default-accent-color) 10%, transparent));
1341
1388
  --media-accent-foreground: var(--media-accent-text-color, currentColor);
1342
1389
  --media-muted: oklch(100% 0 0 / .15);
1343
- --media-muted-foreground: oklch(100% 0 0 / .65);
1390
+ --media-muted-foreground: color-mix(in oklab, var(--media-foreground) 65%, transparent);
1344
1391
  --media-border: oklch(0% 0 0 / .1);
1345
1392
  --media-ring: oklch(100% 0 0);
1346
1393
  --media-backdrop: oklch(0% 0 0);
@@ -1353,9 +1400,9 @@
1353
1400
  --media-shadow-current-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - .5) * .5), .15));
1354
1401
  --media-shadow-subtle-current-color: color-mix(in oklab, var(--media-shadow-current-color) 40%, transparent);
1355
1402
  --media-text-shadow-dialog: 0 1px 0 #00000040;
1356
- --media-backdrop-filter-surface: blur(16px) saturate(110%);
1403
+ --media-backdrop-filter-surface: blur(16px) saturate(125%);
1357
1404
  --media-backdrop-filter-indicator: blur(8px);
1358
- --media-backdrop-filter-dialog: blur(16px) saturate(110%);
1405
+ --media-backdrop-filter-dialog: blur(16px) saturate(125%);
1359
1406
  --media-control-corner-shape: round;
1360
1407
  --media-control-radius: 99px;
1361
1408
  --media-control-size: calc(var(--media-spacing) * 9);
@@ -1460,6 +1507,7 @@
1460
1507
  --media-controls-foreground: var(--media-foreground);
1461
1508
  --media-popover: var(--media-controls);
1462
1509
  --media-popover-foreground: var(--media-foreground);
1510
+ --media-muted: oklch(0% 0 0 / .1);
1463
1511
  --media-surface-border: oklch(0% 0 0 / .05);
1464
1512
  --media-primary: var(--media-accent-color, var(--media-foreground));
1465
1513
  --media-border: oklch(0% 0 0 / .1);
@@ -1478,6 +1526,7 @@
1478
1526
  --media-foreground: light-dark(oklch(0% 0 0), oklch(100% 0 0));
1479
1527
  --media-controls: light-dark(oklch(100% 0 0 / .5), oklch(0% 0 0 / .4));
1480
1528
  --media-border: light-dark(oklch(0% 0 0 / .1), oklch(100% 0 0 / .1));
1529
+ --media-muted: light-dark(oklch(0% 0 0 / .1), oklch(100% 0 0 / .1));
1481
1530
  --media-default-accent-color: light-dark(oklch(0% 0 0), oklch(100% 0 0));
1482
1531
  --media-default-accent-text-color: light-dark(oklch(100% 0 0), oklch(0% 0 0));
1483
1532
  --media-internal-accent-text-fallback: light-dark(oklch(100% 0 0), oklch(0% 0 0));
@@ -218,7 +218,11 @@
218
218
 
219
219
  :where(.media-skin[data-theme="compat"][data-preset="live-video"]) .media-dialog-backdrop {
220
220
  z-index: 40;
221
+ transition-property: opacity;
222
+ transition-duration: .15s;
223
+ transition-duration: var(--media-duration-slower);
221
224
  background-color: #000000bf;
225
+ transition-timing-function: cubic-bezier(0, 0, .2, 1);
222
226
  position: absolute;
223
227
  inset: 0;
224
228
  }
@@ -227,6 +231,18 @@
227
231
  display: none;
228
232
  }
229
233
 
234
+ :where(.media-skin[data-theme="compat"][data-preset="live-video"]) .media-dialog-backdrop[data-ending-style] {
235
+ transition-duration: var(--media-duration);
236
+ }
237
+
238
+ :where(.media-skin[data-theme="compat"][data-preset="live-video"]) .media-dialog-backdrop[data-scope="document"] {
239
+ position: fixed;
240
+ }
241
+
242
+ :where(.media-skin[data-theme="compat"][data-preset="live-video"]) .media-dialog-backdrop:is([data-starting-style], [data-ending-style]) {
243
+ opacity: 0;
244
+ }
245
+
230
246
  :where(.media-skin[data-theme="compat"][data-preset="live-video"]) .media-dialog-close {
231
247
  height: calc(var(--media-spacing) * 8);
232
248
  width: auto;
@@ -251,8 +267,12 @@
251
267
  background-color: var(--media-popover);
252
268
  padding: calc(var(--media-spacing) * 5);
253
269
  color: var(--media-popover-foreground);
270
+ transition-property: opacity, scale;
271
+ transition-duration: .15s;
272
+ transition-duration: var(--media-duration-slower);
254
273
  border-radius: .5rem;
255
274
  outline-style: none;
275
+ transition-timing-function: cubic-bezier(0, 0, .2, 1);
256
276
  display: grid;
257
277
  position: absolute;
258
278
  top: 50%;
@@ -272,6 +292,15 @@
272
292
  outline-color: var(--media-ring);
273
293
  }
274
294
 
295
+ :where(.media-skin[data-theme="compat"][data-preset="live-video"]) .media-dialog-popup[data-ending-style] {
296
+ transition-duration: var(--media-duration);
297
+ }
298
+
299
+ :where(.media-skin[data-theme="compat"][data-preset="live-video"]) .media-dialog-popup[data-scope="document"] {
300
+ max-height: calc(100dvh - 2rem);
301
+ position: fixed;
302
+ }
303
+
275
304
  @media (forced-colors: active) {
276
305
  :where(.media-skin[data-theme="compat"][data-preset="live-video"]) .media-dialog-popup {
277
306
  border: 1px solid canvastext;
@@ -284,6 +313,11 @@
284
313
  }
285
314
  }
286
315
 
316
+ :where(.media-skin[data-theme="compat"][data-preset="live-video"]) .media-dialog-popup:is([data-starting-style], [data-ending-style]) {
317
+ scale: var(--media-hidden-popup-scale) var(--media-hidden-popup-scale);
318
+ opacity: 0;
319
+ }
320
+
287
321
  :where(.media-skin[data-theme="compat"][data-preset="live-video"]) .media-dialog-title {
288
322
  font-size: 1.125rem;
289
323
  font-weight: 700;
@@ -541,6 +575,18 @@
541
575
  }
542
576
  }
543
577
 
578
+ .media-poster > slot::slotted(img) {
579
+ object-fit: var(--media-object-fit, contain);
580
+ object-position: var(--media-object-position, center);
581
+ width: 100%;
582
+ display: block;
583
+ height: 100% !important;
584
+ }
585
+
586
+ .media-poster > slot::slotted(img:not([src]):not([srcset])) {
587
+ visibility: hidden;
588
+ }
589
+
544
590
  :where(.media-skin[data-theme="compat"][data-preset="live-video"]) .media-poster {
545
591
  width: 100%;
546
592
  height: 100%;
@@ -773,6 +819,10 @@
773
819
  outline: 2px solid;
774
820
  }
775
821
 
822
+ :where(.media-skin[data-theme="compat"][data-preset="live-video"]) .media-menu-radio-item[data-custom] {
823
+ font-style: italic;
824
+ }
825
+
776
826
  :where(.media-skin[data-theme="compat"][data-preset="live-video"]) .media-menu-radio-item[data-highlighted] {
777
827
  background-color: var(--media-button-highlight);
778
828
  }
@@ -1384,7 +1434,7 @@
1384
1434
  :where(.media-skin[data-theme="compat"][data-preset="live-video"]) .video-controls-backdrop {
1385
1435
  pointer-events: none;
1386
1436
  z-index: 10;
1387
- background-image: linear-gradient(to top, #000000b3, #0003, #00000080);
1437
+ background-image: var(--media-controls-gradient);
1388
1438
  position: absolute;
1389
1439
  inset: 0;
1390
1440
  }
@@ -1821,6 +1871,9 @@
1821
1871
  :where(.media-skin[data-theme="compat"][data-preset="live-video"]) .media-container, :where(.media-skin[data-theme="compat"][data-preset="live-video"]).media-container {
1822
1872
  border-radius: var(--media-video-border-radius);
1823
1873
  width: 100%;
1874
+ min-width: 0;
1875
+ height: 100%;
1876
+ min-height: 0;
1824
1877
  font-family: var(--media-font-family, "Inter Variable", Inter, ui-sans-serif, system-ui, sans-serif);
1825
1878
  font-size: calc(var(--media-spacing) * 3.25);
1826
1879
  color: var(--media-foreground);
@@ -1852,9 +1905,19 @@
1852
1905
  }
1853
1906
 
1854
1907
  :where(.media-skin[data-theme="compat"][data-preset="live-video"]) .media-video, :where(.media-skin[data-theme="compat"][data-preset="live-video"]).media-video {
1855
- aspect-ratio: 16 / 9;
1856
1908
  background-color: #000;
1857
1909
  }
1910
+
1911
+ .media-container > slot::slotted(video), :scope.media-container > slot::slotted(video) {
1912
+ border-radius: inherit;
1913
+ object-fit: var(--media-object-fit, contain);
1914
+ object-position: var(--media-object-position, center);
1915
+ width: 100%;
1916
+ max-width: 100%;
1917
+ margin: 0;
1918
+ display: block;
1919
+ height: 100% !important;
1920
+ }
1858
1921
  }
1859
1922
 
1860
1923
  @layer utilities;
@@ -1872,7 +1935,7 @@
1872
1935
  --media-accent: var(--media-accent-color, color-mix(in oklab, var(--media-default-accent-color) 10%, transparent));
1873
1936
  --media-accent-foreground: var(--media-accent-text-color, currentColor);
1874
1937
  --media-muted: oklch(100% 0 0 / .15);
1875
- --media-muted-foreground: oklch(100% 0 0 / .65);
1938
+ --media-muted-foreground: color-mix(in oklab, var(--media-foreground) 65%, transparent);
1876
1939
  --media-border: oklch(0% 0 0 / .1);
1877
1940
  --media-ring: oklch(100% 0 0);
1878
1941
  --media-backdrop: oklch(0% 0 0);
@@ -1885,9 +1948,9 @@
1885
1948
  --media-shadow-current-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - .5) * .5), .15));
1886
1949
  --media-shadow-subtle-current-color: color-mix(in oklab, var(--media-shadow-current-color) 40%, transparent);
1887
1950
  --media-text-shadow-dialog: 0 1px 0 #00000040;
1888
- --media-backdrop-filter-surface: blur(16px) saturate(110%);
1951
+ --media-backdrop-filter-surface: blur(16px) saturate(125%);
1889
1952
  --media-backdrop-filter-indicator: blur(8px);
1890
- --media-backdrop-filter-dialog: blur(16px) saturate(110%);
1953
+ --media-backdrop-filter-dialog: blur(16px) saturate(125%);
1891
1954
  --media-control-corner-shape: round;
1892
1955
  --media-control-radius: 99px;
1893
1956
  --media-control-size: calc(var(--media-spacing) * 9);
@@ -1987,10 +2050,20 @@
1987
2050
  @layer base.preset {
1988
2051
  .media-skin:is([data-preset="video"], [data-preset="live-video"]) {
1989
2052
  --media-frame-border: var(--media-border-color, #0000001a);
2053
+ --media-controls-gradient-height: max(40%, calc(var(--media-spacing) * 40));
2054
+ --media-controls-bottom-gradient-height: max(50%, calc(var(--media-spacing) * 60));
1990
2055
  --media-controls-gradient: linear-gradient(to top,
1991
- color-mix(in oklab, var(--media-backdrop) 40%, transparent),
1992
- color-mix(in oklab, var(--media-backdrop) 20%, transparent),
1993
- color-mix(in oklab, var(--media-backdrop) 50%, transparent));
2056
+ color-mix(in oklab, var(--media-backdrop) 60%, transparent),
2057
+ color-mix(in oklab, var(--media-backdrop) 50.7%, transparent) 25%,
2058
+ color-mix(in oklab, var(--media-backdrop) 30%, transparent) 50%,
2059
+ color-mix(in oklab, var(--media-backdrop) 9.3%, transparent) 75%,
2060
+ transparent);
2061
+ --media-controls-top-gradient: linear-gradient(to bottom,
2062
+ color-mix(in oklab, var(--media-backdrop) 55%, transparent),
2063
+ color-mix(in oklab, var(--media-backdrop) 46.48%, transparent) 25%,
2064
+ color-mix(in oklab, var(--media-backdrop) 27.5%, transparent) 50%,
2065
+ color-mix(in oklab, var(--media-backdrop) 8.53%, transparent) 75%,
2066
+ transparent);
1994
2067
  --media-caption-controls-y: calc(var(--media-spacing) * -16);
1995
2068
  --media-slider-preview-offset: calc(var(--media-spacing) * 9);
1996
2069
  --media-thumbnail-gradient: linear-gradient(to top,
@@ -2002,9 +2075,17 @@
2002
2075
  @supports (color: oklch(from red l c h)) and (background-image: linear-gradient(in oklab, red, red)) {
2003
2076
  .media-skin:is([data-preset="video"], [data-preset="live-video"]) {
2004
2077
  --media-controls-gradient: linear-gradient(to top in oklab,
2005
- oklch(from var(--media-backdrop) l c h / .4),
2006
- oklch(from var(--media-backdrop) l c h / .2),
2007
- oklch(from var(--media-backdrop) l c h / .5));
2078
+ oklch(from var(--media-backdrop) l c h / .6),
2079
+ oklch(from var(--media-backdrop) l c h / .507) 25%,
2080
+ oklch(from var(--media-backdrop) l c h / .3) 50%,
2081
+ oklch(from var(--media-backdrop) l c h / .093) 75%,
2082
+ transparent);
2083
+ --media-controls-top-gradient: linear-gradient(to bottom in oklab,
2084
+ oklch(from var(--media-backdrop) l c h / .55),
2085
+ oklch(from var(--media-backdrop) l c h / .4647) 25%,
2086
+ oklch(from var(--media-backdrop) l c h / .275) 50%,
2087
+ oklch(from var(--media-backdrop) l c h / .0853) 75%,
2088
+ transparent);
2008
2089
  }
2009
2090
  }
2010
2091
 
@@ -2019,9 +2100,20 @@
2019
2100
 
2020
2101
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="neutral"] {
2021
2102
  --media-frame-border: var(--media-border-color, #00000026);
2103
+ --media-controls-gradient-height: 40%;
2104
+ --media-controls-bottom-gradient-height: 40%;
2022
2105
  --media-controls-gradient: linear-gradient(to top,
2023
2106
  color-mix(in oklab, var(--media-backdrop) 50%, transparent),
2024
- color-mix(in oklab, var(--media-backdrop) 20%, transparent));
2107
+ color-mix(in oklab, var(--media-backdrop) 42.2%, transparent) 25%,
2108
+ color-mix(in oklab, var(--media-backdrop) 25%, transparent) 50%,
2109
+ color-mix(in oklab, var(--media-backdrop) 7.8%, transparent) 75%,
2110
+ transparent);
2111
+ --media-controls-top-gradient: linear-gradient(to bottom,
2112
+ color-mix(in oklab, var(--media-backdrop) 50%, transparent),
2113
+ color-mix(in oklab, var(--media-backdrop) 42.2%, transparent) 25%,
2114
+ color-mix(in oklab, var(--media-backdrop) 25%, transparent) 50%,
2115
+ color-mix(in oklab, var(--media-backdrop) 7.8%, transparent) 75%,
2116
+ transparent);
2025
2117
  --media-indicator-gradient: linear-gradient(to bottom,
2026
2118
  color-mix(in oklab, var(--media-backdrop) 35%, transparent),
2027
2119
  color-mix(in oklab, var(--media-backdrop) 20%, transparent) calc(var(--media-spacing) * 12),
@@ -2031,6 +2123,7 @@
2031
2123
  }
2032
2124
 
2033
2125
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="compat"] {
2126
+ --media-controls-gradient: linear-gradient(to top, #00000080, transparent 40% 60%, #0006);
2034
2127
  --media-caption-controls-y: calc(var(--media-spacing) * -18);
2035
2128
  }
2036
2129
 
@@ -2042,7 +2135,16 @@
2042
2135
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="neutral"] {
2043
2136
  --media-controls-gradient: linear-gradient(to top in oklab,
2044
2137
  oklch(from var(--media-backdrop) l c h / .5),
2045
- oklch(from var(--media-backdrop) l c h / .2));
2138
+ oklch(from var(--media-backdrop) l c h / .422) 25%,
2139
+ oklch(from var(--media-backdrop) l c h / .25) 50%,
2140
+ oklch(from var(--media-backdrop) l c h / .078) 75%,
2141
+ transparent);
2142
+ --media-controls-top-gradient: linear-gradient(to bottom in oklab,
2143
+ oklch(from var(--media-backdrop) l c h / .5),
2144
+ oklch(from var(--media-backdrop) l c h / .422) 25%,
2145
+ oklch(from var(--media-backdrop) l c h / .25) 50%,
2146
+ oklch(from var(--media-backdrop) l c h / .078) 75%,
2147
+ transparent);
2046
2148
  }
2047
2149
  }
2048
2150