@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
@@ -147,9 +147,9 @@
147
147
  object-position: var(--media-object-position, center);
148
148
  width: 100%;
149
149
  max-width: 100%;
150
- height: 100%;
151
150
  margin: 0;
152
151
  display: block;
152
+ height: 100% !important;
153
153
  }
154
154
 
155
155
  :where(.media-skin[data-theme="default"]) .media-button {
@@ -881,9 +881,19 @@
881
881
  font-variant-numeric: tabular-nums;
882
882
  }
883
883
 
884
+ @supports not (text-fit: shrink) {
885
+ :where(.media-skin[data-theme="default"]) .media-playback-rate-button {
886
+ font-size: min(1em, calc(4em / (var(--media-playback-rate-length, 3) + 1)));
887
+ }
888
+ }
889
+
884
890
  :where(.media-skin[data-theme="default"]) .media-playback-rate-button:after {
891
+ text-align: center;
892
+ white-space: nowrap;
885
893
  content: attr(data-rate) "×";
886
- width: 4ch;
894
+ text-fit: shrink;
895
+ width: 80%;
896
+ min-width: 0;
887
897
  }
888
898
 
889
899
  :where(.media-skin[data-theme="default"]) .media-menu-item-indicator {
@@ -933,6 +943,10 @@
933
943
  opacity: .5;
934
944
  }
935
945
 
946
+ :where(.media-skin[data-theme="default"]) .media-menu-radio-item[data-custom] {
947
+ font-style: italic;
948
+ }
949
+
936
950
  :where(.media-skin[data-theme="default"]) .media-menu-radio-item[data-availability="unavailable"], :where(.media-skin[data-theme="default"]) .media-menu-radio-item[data-availability="unsupported"] {
937
951
  display: none;
938
952
  }
@@ -1479,7 +1493,7 @@
1479
1493
  --media-accent: var(--media-accent-color, color-mix(in oklab, var(--media-default-accent-color) 10%, transparent));
1480
1494
  --media-accent-foreground: var(--media-accent-text-color, currentColor);
1481
1495
  --media-muted: oklch(100% 0 0 / .15);
1482
- --media-muted-foreground: oklch(100% 0 0 / .65);
1496
+ --media-muted-foreground: color-mix(in oklab, var(--media-foreground) 65%, transparent);
1483
1497
  --media-border: oklch(0% 0 0 / .1);
1484
1498
  --media-ring: oklch(100% 0 0);
1485
1499
  --media-backdrop: oklch(0% 0 0);
@@ -1492,9 +1506,9 @@
1492
1506
  --media-shadow-current-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - .5) * .5), .15));
1493
1507
  --media-shadow-subtle-current-color: color-mix(in oklab, var(--media-shadow-current-color) 40%, transparent);
1494
1508
  --media-text-shadow-dialog: 0 1px 0 #00000040;
1495
- --media-backdrop-filter-surface: blur(16px) saturate(110%);
1509
+ --media-backdrop-filter-surface: blur(16px) saturate(125%);
1496
1510
  --media-backdrop-filter-indicator: blur(8px);
1497
- --media-backdrop-filter-dialog: blur(16px) saturate(110%);
1511
+ --media-backdrop-filter-dialog: blur(16px) saturate(125%);
1498
1512
  --media-control-corner-shape: round;
1499
1513
  --media-control-radius: 99px;
1500
1514
  --media-control-size: calc(var(--media-spacing) * 9);
@@ -1599,6 +1613,7 @@
1599
1613
  --media-controls-foreground: var(--media-foreground);
1600
1614
  --media-popover: var(--media-controls);
1601
1615
  --media-popover-foreground: var(--media-foreground);
1616
+ --media-muted: oklch(0% 0 0 / .1);
1602
1617
  --media-surface-border: oklch(0% 0 0 / .05);
1603
1618
  --media-primary: var(--media-accent-color, var(--media-foreground));
1604
1619
  --media-border: oklch(0% 0 0 / .1);
@@ -1617,6 +1632,7 @@
1617
1632
  --media-foreground: light-dark(oklch(0% 0 0), oklch(100% 0 0));
1618
1633
  --media-controls: light-dark(oklch(100% 0 0 / .5), oklch(0% 0 0 / .4));
1619
1634
  --media-border: light-dark(oklch(0% 0 0 / .1), oklch(100% 0 0 / .1));
1635
+ --media-muted: light-dark(oklch(0% 0 0 / .1), oklch(100% 0 0 / .1));
1620
1636
  --media-default-accent-color: light-dark(oklch(0% 0 0), oklch(100% 0 0));
1621
1637
  --media-default-accent-text-color: light-dark(oklch(100% 0 0), oklch(0% 0 0));
1622
1638
  --media-internal-accent-text-fallback: light-dark(oklch(100% 0 0), oklch(0% 0 0));
@@ -147,9 +147,9 @@
147
147
  object-position: var(--media-object-position, center);
148
148
  width: 100%;
149
149
  max-width: 100%;
150
- height: 100%;
151
150
  margin: 0;
152
151
  display: block;
152
+ height: 100% !important;
153
153
  }
154
154
 
155
155
  :where(.media-skin[data-theme="default"]) .media-button {
@@ -977,7 +977,7 @@
977
977
  --media-accent: var(--media-accent-color, color-mix(in oklab, var(--media-default-accent-color) 10%, transparent));
978
978
  --media-accent-foreground: var(--media-accent-text-color, currentColor);
979
979
  --media-muted: oklch(100% 0 0 / .15);
980
- --media-muted-foreground: oklch(100% 0 0 / .65);
980
+ --media-muted-foreground: color-mix(in oklab, var(--media-foreground) 65%, transparent);
981
981
  --media-border: oklch(0% 0 0 / .1);
982
982
  --media-ring: oklch(100% 0 0);
983
983
  --media-backdrop: oklch(0% 0 0);
@@ -990,9 +990,9 @@
990
990
  --media-shadow-current-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - .5) * .5), .15));
991
991
  --media-shadow-subtle-current-color: color-mix(in oklab, var(--media-shadow-current-color) 40%, transparent);
992
992
  --media-text-shadow-dialog: 0 1px 0 #00000040;
993
- --media-backdrop-filter-surface: blur(16px) saturate(110%);
993
+ --media-backdrop-filter-surface: blur(16px) saturate(125%);
994
994
  --media-backdrop-filter-indicator: blur(8px);
995
- --media-backdrop-filter-dialog: blur(16px) saturate(110%);
995
+ --media-backdrop-filter-dialog: blur(16px) saturate(125%);
996
996
  --media-control-corner-shape: round;
997
997
  --media-control-radius: 99px;
998
998
  --media-control-size: calc(var(--media-spacing) * 9);
@@ -1097,6 +1097,7 @@
1097
1097
  --media-controls-foreground: var(--media-foreground);
1098
1098
  --media-popover: var(--media-controls);
1099
1099
  --media-popover-foreground: var(--media-foreground);
1100
+ --media-muted: oklch(0% 0 0 / .1);
1100
1101
  --media-surface-border: oklch(0% 0 0 / .05);
1101
1102
  --media-primary: var(--media-accent-color, var(--media-foreground));
1102
1103
  --media-border: oklch(0% 0 0 / .1);
@@ -1115,6 +1116,7 @@
1115
1116
  --media-foreground: light-dark(oklch(0% 0 0), oklch(100% 0 0));
1116
1117
  --media-controls: light-dark(oklch(100% 0 0 / .5), oklch(0% 0 0 / .4));
1117
1118
  --media-border: light-dark(oklch(0% 0 0 / .1), oklch(100% 0 0 / .1));
1119
+ --media-muted: light-dark(oklch(0% 0 0 / .1), oklch(100% 0 0 / .1));
1118
1120
  --media-default-accent-color: light-dark(oklch(0% 0 0), oklch(100% 0 0));
1119
1121
  --media-default-accent-text-color: light-dark(oklch(100% 0 0), oklch(0% 0 0));
1120
1122
  --media-internal-accent-text-fallback: light-dark(oklch(100% 0 0), oklch(0% 0 0));
@@ -215,6 +215,11 @@
215
215
  transition-duration: var(--media-duration-slower);
216
216
  }
217
217
 
218
+ :where(.media-skin[data-theme="default"]) .media-dialog-backdrop[data-scope="document"] {
219
+ border-radius: 0;
220
+ position: fixed;
221
+ }
222
+
218
223
  :where(.media-skin[data-theme="default"]) .media-dialog-backdrop:is([data-starting-style], [data-ending-style]) {
219
224
  opacity: 0;
220
225
  }
@@ -302,6 +307,11 @@
302
307
  transition-duration: var(--media-duration-slower);
303
308
  }
304
309
 
310
+ :where(.media-skin[data-theme="default"]) .media-dialog-popup[data-scope="document"] {
311
+ max-height: calc(100dvh - 1rem);
312
+ position: fixed;
313
+ }
314
+
305
315
  :where(.media-skin[data-theme="default"]) .media-dialog-popup:is([data-starting-style], [data-ending-style]) {
306
316
  scale: var(--media-hidden-popup-scale) var(--media-hidden-popup-scale);
307
317
  opacity: 0;
@@ -404,8 +414,8 @@
404
414
  pointer-events: none;
405
415
  isolation: isolate;
406
416
  z-index: 20;
407
- min-height: calc(var(--media-control-size) + (calc(var(--media-spacing) * 2)));
408
417
  transform-origin: top;
418
+ grid-template-rows: minmax(calc(var(--media-control-size) - (calc(var(--media-spacing) * .5))), auto);
409
419
  padding-inline: calc(var(--media-spacing) * 6);
410
420
  padding-top: calc(var(--media-spacing) * 2.5);
411
421
  font-size: calc(var(--media-spacing) * 4);
@@ -416,13 +426,13 @@
416
426
  transition-duration: .15s;
417
427
  transition-duration: calc(var(--media-duration-controls) / 2);
418
428
  text-shadow: 0 1px 0 var(--media-shadow-current-color);
419
- inset-inline: 0;
429
+ align-content: flex-start;
420
430
  align-items: center;
421
431
  font-weight: 500;
422
432
  transition-timing-function: cubic-bezier(0, 0, .2, 1);
423
- display: flex;
433
+ display: grid;
424
434
  position: absolute;
425
- top: 0;
435
+ inset: 0;
426
436
  }
427
437
 
428
438
  :where(.media-skin[data-theme="default"]) .media-title:not([data-visible]) {
@@ -440,11 +450,24 @@
440
450
 
441
451
  @container media-root (width >= 28rem) {
442
452
  :where(.media-skin[data-theme="default"]) .media-title {
453
+ grid-template-rows: minmax(calc(var(--media-control-size) - (calc(var(--media-spacing) * 2))), auto);
443
454
  padding-inline: calc(var(--media-spacing) * 6);
444
455
  padding-top: calc(var(--media-spacing) * 4);
445
456
  }
446
457
  }
447
458
 
459
+ @container media-root (width >= 32rem) {
460
+ :where(.media-skin[data-theme="default"]) .media-title:before {
461
+ z-index: -1;
462
+ height: var(--media-controls-gradient-height);
463
+ content: "";
464
+ background-image: var(--media-controls-top-gradient);
465
+ inset-inline: 0;
466
+ position: absolute;
467
+ top: 0;
468
+ }
469
+ }
470
+
448
471
  @container media-root (width < 32rem) {
449
472
  :where(.media-skin[data-theme="default"]) .media-title {
450
473
  padding-right: calc(var(--media-spacing) * 36);
@@ -505,9 +528,9 @@
505
528
  object-position: var(--media-object-position, center);
506
529
  width: 100%;
507
530
  max-width: 100%;
508
- height: 100%;
509
531
  margin: 0;
510
532
  display: block;
533
+ height: 100% !important;
511
534
  }
512
535
 
513
536
  :where(.media-skin[data-theme="default"]) .media-status-announcer {
@@ -1168,6 +1191,10 @@
1168
1191
  opacity: .5;
1169
1192
  }
1170
1193
 
1194
+ :where(.media-skin[data-theme="default"]) .media-menu-radio-item[data-custom] {
1195
+ font-style: italic;
1196
+ }
1197
+
1171
1198
  :where(.media-skin[data-theme="default"]) .media-menu-radio-item[data-availability="unavailable"], :where(.media-skin[data-theme="default"]) .media-menu-radio-item[data-availability="unsupported"] {
1172
1199
  display: none;
1173
1200
  }
@@ -1680,9 +1707,12 @@
1680
1707
  z-index: 10;
1681
1708
  border-radius: inherit;
1682
1709
  background-image: var(--media-controls-gradient);
1710
+ background-size: 100% var(--media-controls-bottom-gradient-height);
1683
1711
  transition-property: opacity;
1684
1712
  transition-duration: .15s;
1685
1713
  transition-duration: var(--media-duration-controls);
1714
+ background-position: bottom;
1715
+ background-repeat: no-repeat;
1686
1716
  transition-timing-function: cubic-bezier(0, 0, .2, 1);
1687
1717
  position: absolute;
1688
1718
  inset: 0;
@@ -1692,6 +1722,17 @@
1692
1722
  opacity: 0;
1693
1723
  }
1694
1724
 
1725
+ @container media-root (width < 32rem) {
1726
+ :where(.media-skin[data-theme="default"][data-preset="live-video"]) .video-controls-backdrop:before {
1727
+ height: var(--media-controls-gradient-height);
1728
+ content: "";
1729
+ background-image: var(--media-controls-top-gradient);
1730
+ inset-inline: 0;
1731
+ position: absolute;
1732
+ top: 0;
1733
+ }
1734
+ }
1735
+
1695
1736
  :where(.media-skin[data-theme="default"][data-preset="live-video"]) .video-controls-content {
1696
1737
  padding: var(--media-spacing);
1697
1738
  color: var(--media-controls-foreground);
@@ -1853,7 +1894,7 @@
1853
1894
  --media-accent: var(--media-accent-color, color-mix(in oklab, var(--media-default-accent-color) 10%, transparent));
1854
1895
  --media-accent-foreground: var(--media-accent-text-color, currentColor);
1855
1896
  --media-muted: oklch(100% 0 0 / .15);
1856
- --media-muted-foreground: oklch(100% 0 0 / .65);
1897
+ --media-muted-foreground: color-mix(in oklab, var(--media-foreground) 65%, transparent);
1857
1898
  --media-border: oklch(0% 0 0 / .1);
1858
1899
  --media-ring: oklch(100% 0 0);
1859
1900
  --media-backdrop: oklch(0% 0 0);
@@ -1866,9 +1907,9 @@
1866
1907
  --media-shadow-current-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - .5) * .5), .15));
1867
1908
  --media-shadow-subtle-current-color: color-mix(in oklab, var(--media-shadow-current-color) 40%, transparent);
1868
1909
  --media-text-shadow-dialog: 0 1px 0 #00000040;
1869
- --media-backdrop-filter-surface: blur(16px) saturate(110%);
1910
+ --media-backdrop-filter-surface: blur(16px) saturate(125%);
1870
1911
  --media-backdrop-filter-indicator: blur(8px);
1871
- --media-backdrop-filter-dialog: blur(16px) saturate(110%);
1912
+ --media-backdrop-filter-dialog: blur(16px) saturate(125%);
1872
1913
  --media-control-corner-shape: round;
1873
1914
  --media-control-radius: 99px;
1874
1915
  --media-control-size: calc(var(--media-spacing) * 9);
@@ -1968,10 +2009,20 @@
1968
2009
  @layer base.preset {
1969
2010
  .media-skin:is([data-preset="video"], [data-preset="live-video"]) {
1970
2011
  --media-frame-border: var(--media-border-color, #0000001a);
2012
+ --media-controls-gradient-height: max(40%, calc(var(--media-spacing) * 40));
2013
+ --media-controls-bottom-gradient-height: max(50%, calc(var(--media-spacing) * 60));
1971
2014
  --media-controls-gradient: linear-gradient(to top,
1972
- color-mix(in oklab, var(--media-backdrop) 40%, transparent),
1973
- color-mix(in oklab, var(--media-backdrop) 20%, transparent),
1974
- color-mix(in oklab, var(--media-backdrop) 50%, transparent));
2015
+ color-mix(in oklab, var(--media-backdrop) 60%, transparent),
2016
+ color-mix(in oklab, var(--media-backdrop) 50.7%, transparent) 25%,
2017
+ color-mix(in oklab, var(--media-backdrop) 30%, transparent) 50%,
2018
+ color-mix(in oklab, var(--media-backdrop) 9.3%, transparent) 75%,
2019
+ transparent);
2020
+ --media-controls-top-gradient: linear-gradient(to bottom,
2021
+ color-mix(in oklab, var(--media-backdrop) 55%, transparent),
2022
+ color-mix(in oklab, var(--media-backdrop) 46.48%, transparent) 25%,
2023
+ color-mix(in oklab, var(--media-backdrop) 27.5%, transparent) 50%,
2024
+ color-mix(in oklab, var(--media-backdrop) 8.53%, transparent) 75%,
2025
+ transparent);
1975
2026
  --media-caption-controls-y: calc(var(--media-spacing) * -16);
1976
2027
  --media-slider-preview-offset: calc(var(--media-spacing) * 9);
1977
2028
  --media-thumbnail-gradient: linear-gradient(to top,
@@ -1983,9 +2034,17 @@
1983
2034
  @supports (color: oklch(from red l c h)) and (background-image: linear-gradient(in oklab, red, red)) {
1984
2035
  .media-skin:is([data-preset="video"], [data-preset="live-video"]) {
1985
2036
  --media-controls-gradient: linear-gradient(to top in oklab,
1986
- oklch(from var(--media-backdrop) l c h / .4),
1987
- oklch(from var(--media-backdrop) l c h / .2),
1988
- oklch(from var(--media-backdrop) l c h / .5));
2037
+ oklch(from var(--media-backdrop) l c h / .6),
2038
+ oklch(from var(--media-backdrop) l c h / .507) 25%,
2039
+ oklch(from var(--media-backdrop) l c h / .3) 50%,
2040
+ oklch(from var(--media-backdrop) l c h / .093) 75%,
2041
+ transparent);
2042
+ --media-controls-top-gradient: linear-gradient(to bottom in oklab,
2043
+ oklch(from var(--media-backdrop) l c h / .55),
2044
+ oklch(from var(--media-backdrop) l c h / .4647) 25%,
2045
+ oklch(from var(--media-backdrop) l c h / .275) 50%,
2046
+ oklch(from var(--media-backdrop) l c h / .0853) 75%,
2047
+ transparent);
1989
2048
  }
1990
2049
  }
1991
2050
 
@@ -2000,9 +2059,20 @@
2000
2059
 
2001
2060
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="neutral"] {
2002
2061
  --media-frame-border: var(--media-border-color, #00000026);
2062
+ --media-controls-gradient-height: 40%;
2063
+ --media-controls-bottom-gradient-height: 40%;
2003
2064
  --media-controls-gradient: linear-gradient(to top,
2004
2065
  color-mix(in oklab, var(--media-backdrop) 50%, transparent),
2005
- color-mix(in oklab, var(--media-backdrop) 20%, transparent));
2066
+ color-mix(in oklab, var(--media-backdrop) 42.2%, transparent) 25%,
2067
+ color-mix(in oklab, var(--media-backdrop) 25%, transparent) 50%,
2068
+ color-mix(in oklab, var(--media-backdrop) 7.8%, transparent) 75%,
2069
+ transparent);
2070
+ --media-controls-top-gradient: linear-gradient(to bottom,
2071
+ color-mix(in oklab, var(--media-backdrop) 50%, transparent),
2072
+ color-mix(in oklab, var(--media-backdrop) 42.2%, transparent) 25%,
2073
+ color-mix(in oklab, var(--media-backdrop) 25%, transparent) 50%,
2074
+ color-mix(in oklab, var(--media-backdrop) 7.8%, transparent) 75%,
2075
+ transparent);
2006
2076
  --media-indicator-gradient: linear-gradient(to bottom,
2007
2077
  color-mix(in oklab, var(--media-backdrop) 35%, transparent),
2008
2078
  color-mix(in oklab, var(--media-backdrop) 20%, transparent) calc(var(--media-spacing) * 12),
@@ -2012,6 +2082,7 @@
2012
2082
  }
2013
2083
 
2014
2084
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="compat"] {
2085
+ --media-controls-gradient: linear-gradient(to top, #00000080, transparent 40% 60%, #0006);
2015
2086
  --media-caption-controls-y: calc(var(--media-spacing) * -18);
2016
2087
  }
2017
2088
 
@@ -2023,7 +2094,16 @@
2023
2094
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="neutral"] {
2024
2095
  --media-controls-gradient: linear-gradient(to top in oklab,
2025
2096
  oklch(from var(--media-backdrop) l c h / .5),
2026
- oklch(from var(--media-backdrop) l c h / .2));
2097
+ oklch(from var(--media-backdrop) l c h / .422) 25%,
2098
+ oklch(from var(--media-backdrop) l c h / .25) 50%,
2099
+ oklch(from var(--media-backdrop) l c h / .078) 75%,
2100
+ transparent);
2101
+ --media-controls-top-gradient: linear-gradient(to bottom in oklab,
2102
+ oklch(from var(--media-backdrop) l c h / .5),
2103
+ oklch(from var(--media-backdrop) l c h / .422) 25%,
2104
+ oklch(from var(--media-backdrop) l c h / .25) 50%,
2105
+ oklch(from var(--media-backdrop) l c h / .078) 75%,
2106
+ transparent);
2027
2107
  }
2028
2108
  }
2029
2109
 
@@ -215,6 +215,11 @@
215
215
  transition-duration: var(--media-duration-slower);
216
216
  }
217
217
 
218
+ :where(.media-skin[data-theme="default"]) .media-dialog-backdrop[data-scope="document"] {
219
+ border-radius: 0;
220
+ position: fixed;
221
+ }
222
+
218
223
  :where(.media-skin[data-theme="default"]) .media-dialog-backdrop:is([data-starting-style], [data-ending-style]) {
219
224
  opacity: 0;
220
225
  }
@@ -302,6 +307,11 @@
302
307
  transition-duration: var(--media-duration-slower);
303
308
  }
304
309
 
310
+ :where(.media-skin[data-theme="default"]) .media-dialog-popup[data-scope="document"] {
311
+ max-height: calc(100dvh - 1rem);
312
+ position: fixed;
313
+ }
314
+
305
315
  :where(.media-skin[data-theme="default"]) .media-dialog-popup:is([data-starting-style], [data-ending-style]) {
306
316
  scale: var(--media-hidden-popup-scale) var(--media-hidden-popup-scale);
307
317
  opacity: 0;
@@ -404,8 +414,8 @@
404
414
  pointer-events: none;
405
415
  isolation: isolate;
406
416
  z-index: 20;
407
- min-height: calc(var(--media-control-size) + (calc(var(--media-spacing) * 2)));
408
417
  transform-origin: top;
418
+ grid-template-rows: minmax(calc(var(--media-control-size) - (calc(var(--media-spacing) * .5))), auto);
409
419
  padding-inline: calc(var(--media-spacing) * 6);
410
420
  padding-top: calc(var(--media-spacing) * 2.5);
411
421
  font-size: calc(var(--media-spacing) * 4);
@@ -416,13 +426,13 @@
416
426
  transition-duration: .15s;
417
427
  transition-duration: calc(var(--media-duration-controls) / 2);
418
428
  text-shadow: 0 1px 0 var(--media-shadow-current-color);
419
- inset-inline: 0;
429
+ align-content: flex-start;
420
430
  align-items: center;
421
431
  font-weight: 500;
422
432
  transition-timing-function: cubic-bezier(0, 0, .2, 1);
423
- display: flex;
433
+ display: grid;
424
434
  position: absolute;
425
- top: 0;
435
+ inset: 0;
426
436
  }
427
437
 
428
438
  :where(.media-skin[data-theme="default"]) .media-title:not([data-visible]) {
@@ -440,11 +450,24 @@
440
450
 
441
451
  @container media-root (width >= 28rem) {
442
452
  :where(.media-skin[data-theme="default"]) .media-title {
453
+ grid-template-rows: minmax(calc(var(--media-control-size) - (calc(var(--media-spacing) * 2))), auto);
443
454
  padding-inline: calc(var(--media-spacing) * 6);
444
455
  padding-top: calc(var(--media-spacing) * 4);
445
456
  }
446
457
  }
447
458
 
459
+ @container media-root (width >= 32rem) {
460
+ :where(.media-skin[data-theme="default"]) .media-title:before {
461
+ z-index: -1;
462
+ height: var(--media-controls-gradient-height);
463
+ content: "";
464
+ background-image: var(--media-controls-top-gradient);
465
+ inset-inline: 0;
466
+ position: absolute;
467
+ top: 0;
468
+ }
469
+ }
470
+
448
471
  @container media-root (width < 32rem) {
449
472
  :where(.media-skin[data-theme="default"]) .media-title {
450
473
  padding-right: calc(var(--media-spacing) * 36);
@@ -505,9 +528,9 @@
505
528
  object-position: var(--media-object-position, center);
506
529
  width: 100%;
507
530
  max-width: 100%;
508
- height: 100%;
509
531
  margin: 0;
510
532
  display: block;
533
+ height: 100% !important;
511
534
  }
512
535
 
513
536
  :where(.media-skin[data-theme="default"]) .media-status-announcer {
@@ -1832,6 +1855,10 @@
1832
1855
  opacity: .5;
1833
1856
  }
1834
1857
 
1858
+ :where(.media-skin[data-theme="default"]) .media-menu-radio-item[data-custom] {
1859
+ font-style: italic;
1860
+ }
1861
+
1835
1862
  :where(.media-skin[data-theme="default"]) .media-menu-radio-item[data-availability="unavailable"], :where(.media-skin[data-theme="default"]) .media-menu-radio-item[data-availability="unsupported"] {
1836
1863
  display: none;
1837
1864
  }
@@ -2245,9 +2272,12 @@
2245
2272
  z-index: 10;
2246
2273
  border-radius: inherit;
2247
2274
  background-image: var(--media-controls-gradient);
2275
+ background-size: 100% var(--media-controls-bottom-gradient-height);
2248
2276
  transition-property: opacity;
2249
2277
  transition-duration: .15s;
2250
2278
  transition-duration: var(--media-duration-controls);
2279
+ background-position: bottom;
2280
+ background-repeat: no-repeat;
2251
2281
  transition-timing-function: cubic-bezier(0, 0, .2, 1);
2252
2282
  position: absolute;
2253
2283
  inset: 0;
@@ -2258,6 +2288,15 @@
2258
2288
  }
2259
2289
 
2260
2290
  @container media-root (width < 32rem) {
2291
+ :where(.media-skin[data-theme="default"][data-preset="video"]) .video-controls-backdrop:before {
2292
+ height: var(--media-controls-gradient-height);
2293
+ content: "";
2294
+ background-image: var(--media-controls-top-gradient);
2295
+ inset-inline: 0;
2296
+ position: absolute;
2297
+ top: 0;
2298
+ }
2299
+
2261
2300
  :where(.media-skin[data-theme="default"][data-preset="video"]) .video-controls-captions-button {
2262
2301
  display: none;
2263
2302
  }
@@ -2542,7 +2581,7 @@
2542
2581
  --media-accent: var(--media-accent-color, color-mix(in oklab, var(--media-default-accent-color) 10%, transparent));
2543
2582
  --media-accent-foreground: var(--media-accent-text-color, currentColor);
2544
2583
  --media-muted: oklch(100% 0 0 / .15);
2545
- --media-muted-foreground: oklch(100% 0 0 / .65);
2584
+ --media-muted-foreground: color-mix(in oklab, var(--media-foreground) 65%, transparent);
2546
2585
  --media-border: oklch(0% 0 0 / .1);
2547
2586
  --media-ring: oklch(100% 0 0);
2548
2587
  --media-backdrop: oklch(0% 0 0);
@@ -2555,9 +2594,9 @@
2555
2594
  --media-shadow-current-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - .5) * .5), .15));
2556
2595
  --media-shadow-subtle-current-color: color-mix(in oklab, var(--media-shadow-current-color) 40%, transparent);
2557
2596
  --media-text-shadow-dialog: 0 1px 0 #00000040;
2558
- --media-backdrop-filter-surface: blur(16px) saturate(110%);
2597
+ --media-backdrop-filter-surface: blur(16px) saturate(125%);
2559
2598
  --media-backdrop-filter-indicator: blur(8px);
2560
- --media-backdrop-filter-dialog: blur(16px) saturate(110%);
2599
+ --media-backdrop-filter-dialog: blur(16px) saturate(125%);
2561
2600
  --media-control-corner-shape: round;
2562
2601
  --media-control-radius: 99px;
2563
2602
  --media-control-size: calc(var(--media-spacing) * 9);
@@ -2657,10 +2696,20 @@
2657
2696
  @layer base.preset {
2658
2697
  .media-skin:is([data-preset="video"], [data-preset="live-video"]) {
2659
2698
  --media-frame-border: var(--media-border-color, #0000001a);
2699
+ --media-controls-gradient-height: max(40%, calc(var(--media-spacing) * 40));
2700
+ --media-controls-bottom-gradient-height: max(50%, calc(var(--media-spacing) * 60));
2660
2701
  --media-controls-gradient: linear-gradient(to top,
2661
- color-mix(in oklab, var(--media-backdrop) 40%, transparent),
2662
- color-mix(in oklab, var(--media-backdrop) 20%, transparent),
2663
- color-mix(in oklab, var(--media-backdrop) 50%, transparent));
2702
+ color-mix(in oklab, var(--media-backdrop) 60%, transparent),
2703
+ color-mix(in oklab, var(--media-backdrop) 50.7%, transparent) 25%,
2704
+ color-mix(in oklab, var(--media-backdrop) 30%, transparent) 50%,
2705
+ color-mix(in oklab, var(--media-backdrop) 9.3%, transparent) 75%,
2706
+ transparent);
2707
+ --media-controls-top-gradient: linear-gradient(to bottom,
2708
+ color-mix(in oklab, var(--media-backdrop) 55%, transparent),
2709
+ color-mix(in oklab, var(--media-backdrop) 46.48%, transparent) 25%,
2710
+ color-mix(in oklab, var(--media-backdrop) 27.5%, transparent) 50%,
2711
+ color-mix(in oklab, var(--media-backdrop) 8.53%, transparent) 75%,
2712
+ transparent);
2664
2713
  --media-caption-controls-y: calc(var(--media-spacing) * -16);
2665
2714
  --media-slider-preview-offset: calc(var(--media-spacing) * 9);
2666
2715
  --media-thumbnail-gradient: linear-gradient(to top,
@@ -2672,9 +2721,17 @@
2672
2721
  @supports (color: oklch(from red l c h)) and (background-image: linear-gradient(in oklab, red, red)) {
2673
2722
  .media-skin:is([data-preset="video"], [data-preset="live-video"]) {
2674
2723
  --media-controls-gradient: linear-gradient(to top in oklab,
2675
- oklch(from var(--media-backdrop) l c h / .4),
2676
- oklch(from var(--media-backdrop) l c h / .2),
2677
- oklch(from var(--media-backdrop) l c h / .5));
2724
+ oklch(from var(--media-backdrop) l c h / .6),
2725
+ oklch(from var(--media-backdrop) l c h / .507) 25%,
2726
+ oklch(from var(--media-backdrop) l c h / .3) 50%,
2727
+ oklch(from var(--media-backdrop) l c h / .093) 75%,
2728
+ transparent);
2729
+ --media-controls-top-gradient: linear-gradient(to bottom in oklab,
2730
+ oklch(from var(--media-backdrop) l c h / .55),
2731
+ oklch(from var(--media-backdrop) l c h / .4647) 25%,
2732
+ oklch(from var(--media-backdrop) l c h / .275) 50%,
2733
+ oklch(from var(--media-backdrop) l c h / .0853) 75%,
2734
+ transparent);
2678
2735
  }
2679
2736
  }
2680
2737
 
@@ -2689,9 +2746,20 @@
2689
2746
 
2690
2747
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="neutral"] {
2691
2748
  --media-frame-border: var(--media-border-color, #00000026);
2749
+ --media-controls-gradient-height: 40%;
2750
+ --media-controls-bottom-gradient-height: 40%;
2692
2751
  --media-controls-gradient: linear-gradient(to top,
2693
2752
  color-mix(in oklab, var(--media-backdrop) 50%, transparent),
2694
- color-mix(in oklab, var(--media-backdrop) 20%, transparent));
2753
+ color-mix(in oklab, var(--media-backdrop) 42.2%, transparent) 25%,
2754
+ color-mix(in oklab, var(--media-backdrop) 25%, transparent) 50%,
2755
+ color-mix(in oklab, var(--media-backdrop) 7.8%, transparent) 75%,
2756
+ transparent);
2757
+ --media-controls-top-gradient: linear-gradient(to bottom,
2758
+ color-mix(in oklab, var(--media-backdrop) 50%, transparent),
2759
+ color-mix(in oklab, var(--media-backdrop) 42.2%, transparent) 25%,
2760
+ color-mix(in oklab, var(--media-backdrop) 25%, transparent) 50%,
2761
+ color-mix(in oklab, var(--media-backdrop) 7.8%, transparent) 75%,
2762
+ transparent);
2695
2763
  --media-indicator-gradient: linear-gradient(to bottom,
2696
2764
  color-mix(in oklab, var(--media-backdrop) 35%, transparent),
2697
2765
  color-mix(in oklab, var(--media-backdrop) 20%, transparent) calc(var(--media-spacing) * 12),
@@ -2701,6 +2769,7 @@
2701
2769
  }
2702
2770
 
2703
2771
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="compat"] {
2772
+ --media-controls-gradient: linear-gradient(to top, #00000080, transparent 40% 60%, #0006);
2704
2773
  --media-caption-controls-y: calc(var(--media-spacing) * -18);
2705
2774
  }
2706
2775
 
@@ -2712,7 +2781,16 @@
2712
2781
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="neutral"] {
2713
2782
  --media-controls-gradient: linear-gradient(to top in oklab,
2714
2783
  oklch(from var(--media-backdrop) l c h / .5),
2715
- oklch(from var(--media-backdrop) l c h / .2));
2784
+ oklch(from var(--media-backdrop) l c h / .422) 25%,
2785
+ oklch(from var(--media-backdrop) l c h / .25) 50%,
2786
+ oklch(from var(--media-backdrop) l c h / .078) 75%,
2787
+ transparent);
2788
+ --media-controls-top-gradient: linear-gradient(to bottom in oklab,
2789
+ oklch(from var(--media-backdrop) l c h / .5),
2790
+ oklch(from var(--media-backdrop) l c h / .422) 25%,
2791
+ oklch(from var(--media-backdrop) l c h / .25) 50%,
2792
+ oklch(from var(--media-backdrop) l c h / .078) 75%,
2793
+ transparent);
2716
2794
  }
2717
2795
  }
2718
2796