@videojs/html 10.0.0-beta.27 → 10.0.0-beta.28
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.
- package/cdn/audio-headless.dev.js +1 -1
- package/cdn/audio-headless.js +1 -1
- package/cdn/audio-minimal-ui.dev.js +1 -1
- package/cdn/audio-minimal-ui.js +1 -1
- package/cdn/audio-minimal.dev.js +4 -4
- package/cdn/audio-minimal.dev.js.map +1 -1
- package/cdn/audio-minimal.js +1 -1
- package/cdn/audio-minimal.js.map +1 -1
- package/cdn/audio-ui.dev.js +1 -1
- package/cdn/audio-ui.js +1 -1
- package/cdn/audio.dev.js +4 -4
- package/cdn/audio.dev.js.map +1 -1
- package/cdn/audio.js +1 -1
- package/cdn/audio.js.map +1 -1
- package/cdn/background-video-WKumpp49.js +59 -0
- package/cdn/background-video-WKumpp49.js.map +1 -0
- package/cdn/background-video-YHY_3-lX.js +2 -0
- package/cdn/background-video-YHY_3-lX.js.map +1 -0
- package/cdn/background.dev.js +3 -56
- package/cdn/background.dev.js.map +1 -1
- package/cdn/background.js +1 -1
- package/cdn/background.js.map +1 -1
- package/cdn/bn-CcLIScl6.js +108 -0
- package/cdn/bn-CcLIScl6.js.map +1 -0
- package/cdn/bn-KcCmQhYd.js +2 -0
- package/cdn/bn-KcCmQhYd.js.map +1 -0
- package/cdn/compounds-BEO1d3ZM.js +8 -0
- package/cdn/compounds-BEO1d3ZM.js.map +1 -0
- package/cdn/{compounds-CCvdpvge.js → compounds-nk9RJtBK.js} +8 -15
- package/cdn/compounds-nk9RJtBK.js.map +1 -0
- package/cdn/container-element-Dd0ZCdhK.js +14 -0
- package/cdn/container-element-Dd0ZCdhK.js.map +1 -0
- package/cdn/container-element-HHK_KZOE.js +376 -0
- package/cdn/container-element-HHK_KZOE.js.map +1 -0
- package/cdn/{create-player-BHFyOnWi.js → create-player-DK9WOywd.js} +19 -379
- package/cdn/create-player-DK9WOywd.js.map +1 -0
- package/cdn/create-player-hSdQMP5p.js +2 -0
- package/cdn/create-player-hSdQMP5p.js.map +1 -0
- package/cdn/embed-params-D2e8u0d4.js +2 -0
- package/cdn/embed-params-D2e8u0d4.js.map +1 -0
- package/cdn/embed-params-W6T88S8x.js +39 -0
- package/cdn/embed-params-W6T88S8x.js.map +1 -0
- package/cdn/{gesture-element-CG-Sx_5t.js → gesture-element-6Ld1YwIL.js} +3 -3
- package/cdn/{gesture-element-CG-Sx_5t.js.map → gesture-element-6Ld1YwIL.js.map} +1 -1
- package/cdn/gesture-element-BC48ucj9.js +2 -0
- package/cdn/{gesture-element-BNfMI8eh.js.map → gesture-element-BC48ucj9.js.map} +1 -1
- package/cdn/{hls-js-g1zdcyvE.js → hls-js-BEuVm0u9.js} +3 -2
- package/cdn/{hls-js-g1zdcyvE.js.map → hls-js-BEuVm0u9.js.map} +1 -1
- package/cdn/hls-js-C4P_b2tT.js +2 -0
- package/cdn/{hls-js-6lW7L4th.js.map → hls-js-C4P_b2tT.js.map} +1 -1
- package/cdn/hls-js-CATW7NBm.js +2 -0
- package/cdn/{hls-js-DCQzjzB5.js.map → hls-js-CATW7NBm.js.map} +1 -1
- package/cdn/{hls-js-Cwj8UBx9.js → hls-js-WCNy9MVh.js} +3 -2
- package/cdn/{hls-js-Cwj8UBx9.js.map → hls-js-WCNy9MVh.js.map} +1 -1
- package/cdn/i18n-CE4KxKuj.js +2 -0
- package/cdn/i18n-CE4KxKuj.js.map +1 -0
- package/cdn/{i18n-Mtlmj1AA.js → i18n-Ch4t6EjV.js} +2 -2
- package/cdn/{i18n-Mtlmj1AA.js.map → i18n-Ch4t6EjV.js.map} +1 -1
- package/cdn/i18n-Dc7WM2xd.js +2 -0
- package/cdn/{i18n-DfKGl5Rh.js.map → i18n-Dc7WM2xd.js.map} +1 -1
- package/cdn/i18n-DyF_NfCk.js +157 -0
- package/cdn/i18n-DyF_NfCk.js.map +1 -0
- package/cdn/i18n.dev.js +3 -152
- package/cdn/i18n.dev.js.map +1 -1
- package/cdn/i18n.js +1 -1
- package/cdn/i18n.js.map +1 -1
- package/cdn/{live-button-element-B_y-ZJBy.js → live-button-element-Bae44kBN.js} +5 -4
- package/cdn/live-button-element-Bae44kBN.js.map +1 -0
- package/cdn/live-button-element-DaHgnYdw.js +2 -0
- package/cdn/{live-button-element-CWfkQUoy.js.map → live-button-element-DaHgnYdw.js.map} +1 -1
- package/cdn/live-video-minimal.dev.js +8 -8
- package/cdn/live-video-minimal.dev.js.map +1 -1
- package/cdn/live-video-minimal.js +1 -1
- package/cdn/live-video-minimal.js.map +1 -1
- package/cdn/live-video.dev.js +9 -9
- package/cdn/live-video.dev.js.map +1 -1
- package/cdn/live-video.js +1 -1
- package/cdn/live-video.js.map +1 -1
- package/cdn/locales/bn.dev.js +1 -1
- package/cdn/locales/bn.js +1 -1
- package/cdn/media/background-video.dev.d.ts +1 -0
- package/cdn/media/background-video.dev.js +3 -0
- package/cdn/media/background-video.js +1 -0
- package/cdn/media/cloudflare-video.dev.d.ts +1 -0
- package/cdn/media/cloudflare-video.dev.js +668 -0
- package/cdn/media/cloudflare-video.dev.js.map +1 -0
- package/cdn/media/cloudflare-video.js +2 -0
- package/cdn/media/cloudflare-video.js.map +1 -0
- package/cdn/media/container.dev.d.ts +1 -0
- package/cdn/media/container.dev.js +8 -0
- package/cdn/media/container.dev.js.map +1 -0
- package/cdn/media/container.js +2 -0
- package/cdn/media/container.js.map +1 -0
- package/cdn/media/dash-video.dev.js +2 -1
- package/cdn/media/dash-video.js +2 -2
- package/cdn/media/dash-video.js.map +1 -1
- package/cdn/media/google-cast.dev.js +2 -31
- package/cdn/media/google-cast.dev.js.map +1 -1
- package/cdn/media/google-cast.js +3 -3
- package/cdn/media/google-cast.js.map +1 -1
- package/cdn/media/hls-audio.dev.js +1 -0
- package/cdn/media/hls-audio.js +1 -1
- package/cdn/media/hls-audio.js.map +1 -1
- package/cdn/media/hls-background-video.dev.js +2 -1
- package/cdn/media/hls-background-video.js +1 -1
- package/cdn/media/hls-background-video.js.map +1 -1
- package/cdn/media/hls-video.dev.js +2 -1
- package/cdn/media/hls-video.js +1 -1
- package/cdn/media/hls-video.js.map +1 -1
- package/cdn/media/hlsjs-video.dev.js +2 -1
- package/cdn/media/hlsjs-video.js +1 -1
- package/cdn/media/hlsjs-video.js.map +1 -1
- package/cdn/media/mux-audio/hls-js.dev.js +3 -1
- package/cdn/media/mux-audio/hls-js.js +1 -1
- package/cdn/media/mux-audio/spf.dev.js +1 -0
- package/cdn/media/mux-audio/spf.js +1 -1
- package/cdn/media/mux-audio/spf.js.map +1 -1
- package/cdn/media/mux-audio.dev.js +3 -1
- package/cdn/media/mux-audio.js +1 -1
- package/cdn/media/mux-background-video.dev.js +2 -1
- package/cdn/media/mux-background-video.js +1 -1
- package/cdn/media/mux-background-video.js.map +1 -1
- package/cdn/media/mux-data.dev.js +2 -1
- package/cdn/media/mux-data.dev.js.map +1 -1
- package/cdn/media/mux-data.js +2 -2
- package/cdn/media/mux-data.js.map +1 -1
- package/cdn/media/mux-video/hls-js.dev.js +3 -1
- package/cdn/media/mux-video/hls-js.js +1 -1
- package/cdn/media/mux-video/spf.dev.js +2 -1
- package/cdn/media/mux-video/spf.js +1 -1
- package/cdn/media/mux-video/spf.js.map +1 -1
- package/cdn/media/mux-video.dev.js +3 -1
- package/cdn/media/mux-video.js +1 -1
- package/cdn/media/native-hls-video.dev.js +1 -0
- package/cdn/media/native-hls-video.js +1 -1
- package/cdn/media/native-hls-video.js.map +1 -1
- package/cdn/media/spotify-audio.dev.d.ts +1 -0
- package/cdn/media/spotify-audio.dev.js +605 -0
- package/cdn/media/spotify-audio.dev.js.map +1 -0
- package/cdn/media/spotify-audio.js +2 -0
- package/cdn/media/spotify-audio.js.map +1 -0
- package/cdn/media/tiktok-video.dev.d.ts +1 -0
- package/cdn/media/tiktok-video.dev.js +636 -0
- package/cdn/media/tiktok-video.dev.js.map +1 -0
- package/cdn/media/tiktok-video.js +2 -0
- package/cdn/media/tiktok-video.js.map +1 -0
- package/cdn/media/twitch-video.dev.d.ts +1 -0
- package/cdn/media/twitch-video.dev.js +627 -0
- package/cdn/media/twitch-video.dev.js.map +1 -0
- package/cdn/media/twitch-video.js +2 -0
- package/cdn/media/twitch-video.js.map +1 -0
- package/cdn/media/vimeo-video.dev.d.ts +1 -0
- package/cdn/media/vimeo-video.dev.js +2989 -0
- package/cdn/media/vimeo-video.dev.js.map +1 -0
- package/cdn/media/vimeo-video.js +16 -0
- package/cdn/media/vimeo-video.js.map +1 -0
- package/cdn/media/youtube-video.dev.d.ts +1 -0
- package/cdn/media/youtube-video.dev.js +713 -0
- package/cdn/media/youtube-video.dev.js.map +1 -0
- package/cdn/media/youtube-video.js +2 -0
- package/cdn/media/youtube-video.js.map +1 -0
- package/cdn/{media-Cp3acYc8.js → media-BavrGKqa.js} +274 -5
- package/cdn/media-BavrGKqa.js.map +1 -0
- package/cdn/media-Bmablv4g.js +2 -0
- package/cdn/media-Bmablv4g.js.map +1 -0
- package/cdn/{media-B_gQXwri.js → media-COIe3uI5.js} +12 -3
- package/cdn/media-COIe3uI5.js.map +1 -0
- package/cdn/{media-CbWsJJhU.js → media-CPVSKLdk.js} +2 -2
- package/cdn/{media-CbWsJJhU.js.map → media-CPVSKLdk.js.map} +1 -1
- package/cdn/media-CanBm0Jh.js +41 -0
- package/cdn/media-CanBm0Jh.js.map +1 -0
- package/cdn/{media-Dq4zmIJa2.js → media-Dq4zmIJa.js} +1 -1
- package/cdn/media-Dq4zmIJa.js.map +1 -0
- package/cdn/{media-DRo3n8tM.js → media-oa3nyL2o.js} +3 -3
- package/cdn/{media-DRo3n8tM.js.map → media-oa3nyL2o.js.map} +1 -1
- package/cdn/media-played-ranges-CM2zeOGr.js +2 -0
- package/cdn/media-played-ranges-CM2zeOGr.js.map +1 -0
- package/cdn/media-played-ranges-Yd9acuMt.js +156 -0
- package/cdn/media-played-ranges-Yd9acuMt.js.map +1 -0
- package/cdn/{media-suYcjCG22.js → media-suYcjCG2.js} +1 -1
- package/cdn/media-suYcjCG2.js.map +1 -0
- package/cdn/minimal-ui-8iRZf_72.js +2 -0
- package/cdn/{minimal-ui-AFk6Ut5f.js.map → minimal-ui-8iRZf_72.js.map} +1 -1
- package/cdn/{minimal-ui--JsmpU2q.js → minimal-ui-BpHxIo4z.js} +5 -5
- package/cdn/{minimal-ui--JsmpU2q.js.map → minimal-ui-BpHxIo4z.js.map} +1 -1
- package/cdn/{minimal-ui-Bxcpf5Mb.js → minimal-ui-CRKvUmB8.js} +9 -9
- package/cdn/{minimal-ui-Bxcpf5Mb.js.map → minimal-ui-CRKvUmB8.js.map} +1 -1
- package/cdn/minimal-ui-Et2Wcn7r.js +2 -0
- package/cdn/{minimal-ui-BVKu9LWj.js.map → minimal-ui-Et2Wcn7r.js.map} +1 -1
- package/cdn/mixin-BqN0V06a.js +2 -0
- package/cdn/{mixin-DiB7dIef.js.map → mixin-BqN0V06a.js.map} +1 -1
- package/cdn/{mixin-CkNZwQXF.js → mixin-C193v40v.js} +67 -67
- package/cdn/mixin-C193v40v.js.map +1 -0
- package/cdn/noop-BxkeRIz9.js +6 -0
- package/cdn/noop-BxkeRIz9.js.map +1 -0
- package/cdn/noop-Ch0IHcOP.js +2 -0
- package/cdn/noop-Ch0IHcOP.js.map +1 -0
- package/cdn/{player-D4fdOLLk.js → player-B2oraRyD.js} +3 -2
- package/cdn/{player-D4fdOLLk.js.map → player-B2oraRyD.js.map} +1 -1
- package/cdn/player-BRQLp5bX.js +2 -0
- package/cdn/{player-srq1RGTj.js.map → player-BRQLp5bX.js.map} +1 -1
- package/cdn/player-BloX4l6F.js +2 -0
- package/cdn/{player-iIewo8Y9.js.map → player-BloX4l6F.js.map} +1 -1
- package/cdn/{player-B0qnepD5.js → player-CKTAtwit.js} +3 -2
- package/cdn/{player-B0qnepD5.js.map → player-CKTAtwit.js.map} +1 -1
- package/cdn/{player-C4ix6TQq.js → player-DM9rUXg-.js} +3 -2
- package/cdn/{player-C4ix6TQq.js.map → player-DM9rUXg-.js.map} +1 -1
- package/cdn/player-rCFqzWrA.js +2 -0
- package/cdn/{player-B0ccW5-n.js.map → player-rCFqzWrA.js.map} +1 -1
- package/cdn/{poster-element-BP1Ypgbf.js → poster-element-BGr1VQJB.js} +16 -4
- package/cdn/poster-element-BGr1VQJB.js.map +1 -0
- package/cdn/poster-element-DBmgOyep.js +2 -0
- package/cdn/poster-element-DBmgOyep.js.map +1 -0
- package/cdn/script-D3ZkiqwO.js +2 -0
- package/cdn/script-D3ZkiqwO.js.map +1 -0
- package/cdn/script-erPJaaTz.js +33 -0
- package/cdn/script-erPJaaTz.js.map +1 -0
- package/cdn/seek-button-element-FlgBVoGM.js +2 -0
- package/cdn/seek-button-element-FlgBVoGM.js.map +1 -0
- package/cdn/{seek-button-element-TErrbilI.js → seek-button-element-XMTLIxZj.js} +6 -5
- package/cdn/seek-button-element-XMTLIxZj.js.map +1 -0
- package/cdn/{skin-element-wPSb4AAs.js → skin-element-DL-Kqa5f.js} +2 -2
- package/cdn/{skin-element-wPSb4AAs.js.map → skin-element-DL-Kqa5f.js.map} +1 -1
- package/cdn/{skin-element-1_MG2zgS.js → skin-element-DNytI-uu.js} +2 -2
- package/cdn/{skin-element-1_MG2zgS.js.map → skin-element-DNytI-uu.js.map} +1 -1
- package/cdn/{text-element-DTB9_2HX.js → text-element-D88ArbZz.js} +3 -3
- package/cdn/{text-element-DTB9_2HX.js.map → text-element-D88ArbZz.js.map} +1 -1
- package/cdn/text-element-DeWBNKXb.js +2 -0
- package/cdn/{text-element-Bsyglab8.js.map → text-element-DeWBNKXb.js.map} +1 -1
- package/cdn/{time-slider-chapters-element-DPgaLdBt.js → time-slider-chapters-element-DJ0abZXI.js} +5 -4
- package/cdn/time-slider-chapters-element-DJ0abZXI.js.map +1 -0
- package/cdn/time-slider-chapters-element-DW8YyJn8.js +2 -0
- package/cdn/{time-slider-chapters-element-MdlcovBu.js.map → time-slider-chapters-element-DW8YyJn8.js.map} +1 -1
- package/cdn/{translate-text-DP0CzUCC.js → translate-text-BWvoW5-r.js} +2 -7
- package/cdn/translate-text-BWvoW5-r.js.map +1 -0
- package/cdn/translate-text-TzSgu_oe.js +2 -0
- package/cdn/translate-text-TzSgu_oe.js.map +1 -0
- package/cdn/{ui-D0AokGxw.js → ui-BU3_2gDQ.js} +8 -8
- package/cdn/{ui-D0AokGxw.js.map → ui-BU3_2gDQ.js.map} +1 -1
- package/cdn/{ui-p36Szn71.js → ui-BsaWWE4y.js} +10 -10
- package/cdn/{ui-p36Szn71.js.map → ui-BsaWWE4y.js.map} +1 -1
- package/cdn/ui-C0isALTQ.js +2 -0
- package/cdn/{ui-CecDxhTX.js.map → ui-C0isALTQ.js.map} +1 -1
- package/cdn/ui-DVpkE1MN.js +2 -0
- package/cdn/{ui-ChWM6Xz2.js.map → ui-DVpkE1MN.js.map} +1 -1
- package/cdn/video-headless.dev.js +1 -1
- package/cdn/video-headless.js +1 -1
- package/cdn/video-minimal-ui.dev.js +1 -1
- package/cdn/video-minimal-ui.js +1 -1
- package/cdn/video-minimal.dev.js +4 -4
- package/cdn/video-minimal.dev.js.map +1 -1
- package/cdn/video-minimal.js +1 -1
- package/cdn/video-minimal.js.map +1 -1
- package/cdn/video-ui.dev.js +1 -1
- package/cdn/video-ui.js +1 -1
- package/cdn/video.dev.js +5 -5
- package/cdn/video.dev.js.map +1 -1
- package/cdn/video.js +1 -1
- package/cdn/video.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-video/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/live-video/skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
- package/dist/default/define/audio/minimal-skin.css +16 -19
- package/dist/default/define/audio/skin.css +27 -30
- package/dist/default/define/live-audio/minimal-skin.css +16 -19
- package/dist/default/define/live-audio/skin.css +27 -30
- package/dist/default/define/live-video/minimal-skin.css +20 -19
- package/dist/default/define/live-video/skin.css +31 -30
- package/dist/default/define/video/minimal-skin.css +20 -19
- package/dist/default/define/video/skin.css +31 -30
- package/dist/default/media/tiktok-video/media.js +3 -2
- package/dist/default/media/tiktok-video/media.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js +6 -6
- package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +4 -4
- package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/ui/playback-rate-button/playback-rate-button-element.js +1 -2
- package/dist/default/ui/playback-rate-button/playback-rate-button-element.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-audio/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-audio/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-video/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-video/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/live-video/skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
- package/dist/dev/define/audio/minimal-skin.css +16 -19
- package/dist/dev/define/audio/skin.css +27 -30
- package/dist/dev/define/live-audio/minimal-skin.css +16 -19
- package/dist/dev/define/live-audio/skin.css +27 -30
- package/dist/dev/define/live-video/minimal-skin.css +20 -19
- package/dist/dev/define/live-video/skin.css +31 -30
- package/dist/dev/define/video/minimal-skin.css +20 -19
- package/dist/dev/define/video/skin.css +31 -30
- package/dist/dev/media/tiktok-video/media.d.ts.map +1 -1
- package/dist/dev/media/tiktok-video/media.js +10 -7
- package/dist/dev/media/tiktok-video/media.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/slider.js +6 -6
- package/dist/dev/packages/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/video.tailwind.js +1 -1
- package/dist/dev/packages/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/slider.js +4 -4
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/video.tailwind.js +1 -1
- package/dist/dev/packages/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/ui/playback-rate-button/playback-rate-button-element.d.ts.map +1 -1
- package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js +1 -2
- package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js.map +1 -1
- package/docs/README.md +1 -1
- package/docs/concepts/features.md +2 -2
- package/docs/concepts/media-sources.md +79 -1
- package/docs/concepts/skins.md +31 -30
- package/docs/how-to/build-your-own-component.md +1 -1
- package/docs/how-to/customize-skins.md +94 -98
- package/docs/how-to/migrate-from-media-chrome.md +359 -0
- package/docs/how-to/migrate-from-mux-player.md +535 -0
- package/docs/how-to/migrate-from-plyr.md +394 -0
- package/docs/how-to/migrate-from-video-js-8.md +594 -0
- package/docs/llms.txt +9 -0
- package/docs/reference/feature-volume.md +3 -1
- package/docs/reference/mute-button.md +34 -0
- package/docs/reference/volume-slider.md +1 -1
- package/package.json +10 -9
- package/cdn/bn-DdelKD_n.js +0 -108
- package/cdn/bn-DdelKD_n.js.map +0 -1
- package/cdn/bn-YS8ruMcO.js +0 -2
- package/cdn/bn-YS8ruMcO.js.map +0 -1
- package/cdn/compounds-CCvdpvge.js.map +0 -1
- package/cdn/compounds-CJ6SbYAh.js +0 -8
- package/cdn/compounds-CJ6SbYAh.js.map +0 -1
- package/cdn/create-player-BHFyOnWi.js.map +0 -1
- package/cdn/create-player-CbpxjDaZ.js +0 -14
- package/cdn/create-player-CbpxjDaZ.js.map +0 -1
- package/cdn/gesture-element-BNfMI8eh.js +0 -2
- package/cdn/hls-js-6lW7L4th.js +0 -2
- package/cdn/hls-js-DCQzjzB5.js +0 -2
- package/cdn/i18n-DfKGl5Rh.js +0 -2
- package/cdn/live-button-element-B_y-ZJBy.js.map +0 -1
- package/cdn/live-button-element-CWfkQUoy.js +0 -2
- package/cdn/media-5ODYtX1-.js +0 -2
- package/cdn/media-5ODYtX1-.js.map +0 -1
- package/cdn/media-B_gQXwri.js.map +0 -1
- package/cdn/media-CPWNSZFX.js +0 -41
- package/cdn/media-CPWNSZFX.js.map +0 -1
- package/cdn/media-Cp3acYc8.js.map +0 -1
- package/cdn/media-Dq4zmIJa2.js.map +0 -1
- package/cdn/media-suYcjCG22.js.map +0 -1
- package/cdn/minimal-ui-AFk6Ut5f.js +0 -2
- package/cdn/minimal-ui-BVKu9LWj.js +0 -2
- package/cdn/mixin-CkNZwQXF.js.map +0 -1
- package/cdn/mixin-DiB7dIef.js +0 -2
- package/cdn/player-B0ccW5-n.js +0 -2
- package/cdn/player-iIewo8Y9.js +0 -2
- package/cdn/player-srq1RGTj.js +0 -2
- package/cdn/poster-element-BP1Ypgbf.js.map +0 -1
- package/cdn/poster-element-S-rr412t.js +0 -2
- package/cdn/poster-element-S-rr412t.js.map +0 -1
- package/cdn/seek-button-element-DxLmm58Y.js +0 -2
- package/cdn/seek-button-element-DxLmm58Y.js.map +0 -1
- package/cdn/seek-button-element-TErrbilI.js.map +0 -1
- package/cdn/text-element-Bsyglab8.js +0 -2
- package/cdn/time-slider-chapters-element-DPgaLdBt.js.map +0 -1
- package/cdn/time-slider-chapters-element-MdlcovBu.js +0 -2
- package/cdn/translate-text-BPMWpzFm.js +0 -2
- package/cdn/translate-text-BPMWpzFm.js.map +0 -1
- package/cdn/translate-text-DP0CzUCC.js.map +0 -1
- package/cdn/ui-CecDxhTX.js +0 -2
- package/cdn/ui-ChWM6Xz2.js +0 -2
package/cdn/live-video.dev.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { i as MediaContainerElement } from "./create-player-BHFyOnWi.js";
|
|
1
|
+
import { Q as createTemplate, a as defineSliders, c as defineTooltip, d as PopoverElement, f as PlayButtonElement, h as BufferingIndicatorElement, i as defineMenu, m as HotkeyElement, n as defineErrorDialog, o as defineTime, p as MuteButtonElement, r as defineInputIndicators, t as defineControls } from "./compounds-nk9RJtBK.js";
|
|
3
2
|
import { i as safeDefine } from "./context-OhQY847V.js";
|
|
4
|
-
import {
|
|
3
|
+
import { t as MediaContainerElement } from "./container-element-HHK_KZOE.js";
|
|
4
|
+
import { n as I18nProviderElement, t as TextElement } from "./text-element-D88ArbZz.js";
|
|
5
5
|
import { n as createShadowStyle } from "./shadow-styles-BkjnRJ4e.js";
|
|
6
6
|
import { t as renderIcon } from "./default-I2LasfxC.js";
|
|
7
|
-
import { t as SkinElement } from "./skin-element-
|
|
8
|
-
import { t as GestureElement } from "./gesture-element-
|
|
9
|
-
import { a as CaptionsRadioGroupElement, i as CastButtonElement, n as PiPButtonElement, o as CaptionsButtonElement, r as FullscreenButtonElement, s as AirPlayButtonElement, t as PosterElement } from "./poster-element-
|
|
10
|
-
import { t as LiveButtonElement } from "./live-button-element-
|
|
11
|
-
import { t as LiveVideoPlayerElement } from "./player-
|
|
7
|
+
import { t as SkinElement } from "./skin-element-DNytI-uu.js";
|
|
8
|
+
import { t as GestureElement } from "./gesture-element-6Ld1YwIL.js";
|
|
9
|
+
import { a as CaptionsRadioGroupElement, i as CastButtonElement, n as PiPButtonElement, o as CaptionsButtonElement, r as FullscreenButtonElement, s as AirPlayButtonElement, t as PosterElement } from "./poster-element-BGr1VQJB.js";
|
|
10
|
+
import { t as LiveButtonElement } from "./live-button-element-Bae44kBN.js";
|
|
11
|
+
import { t as LiveVideoPlayerElement } from "./player-DM9rUXg-.js";
|
|
12
12
|
|
|
13
13
|
//#region inline-css:src/define/live-video/skin.js
|
|
14
|
-
var skin_default = "/* -------------------------------------------------------------------------- */\n/* Global styles for the host document, outside of the Shadow DOM */\n/* -------------------------------------------------------------------------- */\n\nvideo-player,\nlive-video-player,\nmedia-i18n {\n display: contents;\n}\n\n/*\nRequired to override any default video and image styles (such as\nTailwind's CSS reset) and ensure they fill the container as expected.\n*/\nvideo-player video,\nvideo-player [slot=\"poster\"],\nlive-video-player video,\nlive-video-player [slot=\"poster\"] {\n display: block;\n width: 100%;\n height: 100%;\n}\n\nvideo-player video::-webkit-media-text-track-container,\nlive-video-player video::-webkit-media-text-track-container {\n z-index: 1;\n font-family: inherit;\n scale: 0.98;\n translate: 0 var(--media-caption-track-y, 0);\n transition: translate var(--media-caption-track-duration, 0) ease-out;\n transition-delay: var(--media-caption-track-delay, 0);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Shared styles for all HTML skins */\n/* -------------------------------------------------------------------------- */\n\nmedia-tooltip-group {\n display: contents;\n}\n\n:host {\n /* `display:grid` fixes a weird issue with Safari when setting aspect-ratio */\n display: grid;\n width: 100%;\n}\n\nmedia-container {\n min-width: 0;\n min-height: 0;\n}\n\n/* Hide the volume popover when its slider is unavailable. */\n.media-popover--volume:has(media-volume-slider[data-hidden]) {\n display: none;\n}\n\n.media-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n white-space: nowrap;\n border: 0;\n clip: rect(0, 0, 0, 0);\n}\n\n\n.media-default-skin *,\n.media-default-skin *::before,\n.media-default-skin *::after {\n box-sizing: border-box;\n}\n.media-default-skin img,\n.media-default-skin video,\n.media-default-skin svg {\n display: block;\n max-width: 100%;\n}\n.media-default-skin button {\n font: inherit;\n}\n.media-default-skin [hidden][hidden] {\n /* Keep authored templates hidden even when component classes set display. */\n display: none;\n}\n@media (prefers-reduced-motion: no-preference) {\n .media-default-skin {\n interpolate-size: allow-keywords;\n }\n}\n\n.media-default-skin {\n /* Colors */\n --accent-color: var(--media-accent-color, var(--default-accent-color));\n --accent-contrast-color: contrast-color(var(--accent-color));\n --accent-background-color: var(\n --media-accent-color,\n oklch(from var(--default-accent-color) l c h / calc(alpha * 0.1))\n );\n --accent-text-color: var(--media-accent-text-color, contrast-color(var(--media-accent-color, oklch(0 0 0))));\n --shadow-current-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.15));\n --shadow-subtle-current-color: oklch(from var(--shadow-current-color) l c h / calc(alpha * 0.4));\n --scrollbar-thumb-color: oklch(from currentColor l c h / 0.3);\n\n /* Scaling - used in video fullscreen to scale the UI. */\n --scale: 1;\n /* Fixed scaling unit to avoid inheriting the document's root font size. This must be a CSS <length>. */\n --scale-unit: var(--media-scale-unit, 16px);\n --size: calc(var(--scale-unit) * var(--scale));\n /* Create a Tailwind-like spacing unit where 1 equals 4px with default scaling. */\n --spacing: calc(var(--size) / 4);\n\n /* Font sizes */\n --font-size-medium: calc(0.9375 * var(--size)); /* 15px */\n --font-size-base: calc(0.8125 * var(--size)); /* 13px */\n --font-size-small: calc(0.6875 * var(--size)); /* 11px */\n --font-size-tiny: calc(0.5625 * var(--size)); /* 9px */\n --media-icon-size: calc(1.125 * var(--size)); /* 18px */\n\n /* Radii */\n --container-border-radius: var(--media-border-radius, 1.75rem);\n\n position: relative;\n display: block;\n width: 100%;\n height: 100%;\n container: media-root / inline-size;\n font-family:\n Inter Variable,\n Inter,\n ui-sans-serif,\n system-ui,\n sans-serif;\n font-size: var(--font-size-base);\n -webkit-font-smoothing: auto;\n -moz-osx-font-smoothing: auto;\n line-height: 1.5;\n letter-spacing: normal;\n outline: 2px solid transparent;\n outline-offset: -4px;\n scrollbar-color: var(--scrollbar-thumb-color) transparent;\n scrollbar-width: thin;\n border-radius: var(--container-border-radius, 1.75rem);\n isolation: isolate;\n transition-timing-function: ease-out;\n transition-duration: 100ms;\n transition-property: outline-offset, outline-color;\n\n &:focus-visible {\n outline-color: var(--focus-ring-color);\n outline-offset: 2px;\n }\n\n &::-webkit-scrollbar-thumb {\n background: var(--scrollbar-thumb-color);\n border-radius: 9999px;\n }\n\n @media (prefers-reduced-transparency: reduce) or (prefers-contrast: more) {\n --scrollbar-thumb-color: oklch(from currentColor l c h / 0.8);\n scrollbar-width: auto;\n }\n}\n\n.media-default-skin .media-surface {\n background-color: var(--surface-background-color);\n box-shadow:\n 0 0 0 1px var(--surface-outer-border-color),\n 0 1px 3px 0 var(--surface-shadow-color),\n 0 1px 2px -1px var(--surface-shadow-color);\n backdrop-filter: var(--surface-backdrop-filter);\n\n /* Inner border ring */\n &::after {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none;\n content: \"\";\n border-radius: inherit;\n box-shadow:\n inset 0 1px 0 0 var(--surface-inner-border-color),\n inset 0 0 0 1px oklch(from var(--surface-inner-border-color) l c h / calc(alpha * 0.5));\n }\n}\n\n.media-default-skin ::slotted(video),\n.media-default-skin video {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: var(--media-object-fit, contain);\n object-position: var(--media-object-position, center);\n}\n.media-default-skin ::slotted(video) {\n border-radius: var(--container-border-radius);\n}\n.media-default-skin video {\n border-radius: inherit;\n}\n\n.media-default-skin:fullscreen ::slotted(video),\n.media-default-skin:fullscreen video {\n object-fit: contain;\n}\n\n.media-default-skin .media-overlay {\n position: absolute;\n inset: 0;\n pointer-events: none;\n background-image: linear-gradient(to top, oklch(0 0 0 / 0.5), oklch(0 0 0 / 0.3) 25%, oklch(0 0 0 / 0));\n border-radius: inherit;\n opacity: 0;\n backdrop-filter: blur(0) saturate(1);\n transition-timing-function: ease-out;\n transition-duration: var(--controls-transition-duration);\n transition-property: opacity, backdrop-filter;\n}\n\n.media-default-skin .media-error ~ .media-overlay {\n transition-delay: var(--error-dialog-transition-delay);\n transition-duration: var(--error-dialog-transition-duration);\n}\n\n.media-default-skin .media-controls[data-visible] ~ .media-overlay,\n.media-default-skin .media-error[data-open] ~ .media-overlay {\n opacity: 1;\n}\n\n.media-default-skin .media-buffering-indicator[data-visible] ~ .media-overlay {\n background: oklch(0 0 0 / 0.35);\n opacity: 1;\n backdrop-filter: blur(8px);\n}\n\n.media-default-skin .media-error[data-open] ~ .media-overlay {\n backdrop-filter: blur(16px) saturate(1.5);\n}\n\n.media-default-skin .media-buffering-indicator {\n position: absolute;\n inset: 0;\n z-index: 10;\n display: none;\n place-content: center;\n color: oklch(1 0 0);\n pointer-events: none;\n\n &:not([data-visible]) {\n --media-spinner-animation: none;\n }\n\n &[data-visible] {\n display: grid;\n }\n\n @media (prefers-reduced-motion: reduce) {\n --media-spinner-animation: none;\n }\n}\n\n.media-default-skin .media-error {\n outline: none;\n}\n\n.media-default-skin .media-error:not([data-open]) {\n display: none;\n}\n\n.media-default-skin .media-error__title {\n font-weight: 600;\n line-height: 1.25;\n}\n\n.media-default-skin .media-error__description {\n overflow-wrap: anywhere;\n opacity: 0.7;\n}\n\n.media-default-skin .media-error__actions {\n display: flex;\n gap: calc(var(--spacing) * 2);\n\n > * {\n flex: 1;\n }\n}\n\n.media-default-skin .media-error[data-open] ~ .media-controls * {\n visibility: hidden;\n}\n\n.media-default-skin .media-controls {\n --media-popover-side-offset: calc(var(--spacing) * (var(--base-side-offset, 2) + 1));\n --media-tooltip-side-offset: var(--media-popover-side-offset);\n --media-popover-boundary-offset: calc(var(--spacing) * var(--base-boundary-offset, 2));\n --media-tooltip-boundary-offset: var(--media-popover-boundary-offset);\n\n display: flex;\n align-items: center;\n padding: calc(var(--spacing) * 1);\n container: media-controls / inline-size;\n text-shadow: 0 1px 0 var(--shadow-current-color);\n border-radius: calc(Infinity * 1px);\n}\n\n.media-default-skin .media-time-controls {\n display: flex;\n flex: 1;\n gap: calc(var(--spacing) * 2.5);\n align-items: center;\n container: media-time-controls / inline-size;\n\n > .media-time:last-child {\n @container media-time-controls (width < 16rem) {\n display: none;\n }\n }\n}\n\n.media-default-skin .media-time {\n font-variant-numeric: tabular-nums;\n}\n\n.media-default-skin .media-time[role=\"button\"] {\n cursor: pointer;\n outline: 2px solid transparent;\n outline-offset: -2px;\n border-radius: calc(var(--spacing) * 1);\n transition-timing-function: ease-out;\n transition-duration: 100ms;\n transition-property: outline-color, outline-offset;\n\n &:focus-visible {\n outline-color: var(--focus-ring-color);\n outline-offset: 2px;\n }\n}\n\n/* Base button */\n.media-default-skin .media-button {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n height: calc(var(--spacing) * 9);\n min-height: 0;\n padding: calc(var(--spacing) * 2) calc(var(--spacing) * 4);\n text-align: center;\n touch-action: manipulation;\n cursor: pointer;\n user-select: none;\n outline: 2px solid transparent;\n outline-offset: -2px;\n border: none;\n border-radius: calc(Infinity * 1px);\n transition-timing-function: ease-out;\n transition-duration: 150ms;\n transition-property: background-color, color, outline-offset, scale;\n /* Fix weird jumping when clicking on the buttons in Safari. */\n will-change: scale;\n\n &:focus-visible {\n outline-color: var(--focus-ring-color);\n outline-offset: 2px;\n }\n\n &:active:not([aria-disabled=\"true\"]) {\n scale: 0.97;\n }\n\n &[aria-disabled=\"true\"] {\n cursor: not-allowed;\n opacity: 0.5;\n }\n}\n\n/* Primary button variant */\n.media-default-skin .media-button--primary {\n font-weight: 500;\n color: var(--accent-contrast-color);\n text-shadow: none;\n background: var(--accent-color);\n}\n\n/* Subtle button variant */\n.media-default-skin .media-button--subtle {\n color: inherit;\n text-shadow: inherit;\n background: transparent;\n\n &:not([aria-disabled=\"true\"]) {\n &:hover,\n &:focus-visible,\n &[aria-expanded=\"true\"] {\n color: var(--accent-text-color);\n text-decoration: none;\n background-color: var(--accent-background-color);\n }\n }\n}\n\n/* Icon button variant */\n.media-default-skin .media-button--icon {\n display: grid;\n aspect-ratio: 1;\n padding: 0;\n\n &:active:not([aria-disabled=\"true\"]) {\n scale: 0.97;\n }\n\n .media-icon__container {\n display: grid;\n }\n\n .media-icon {\n grid-area: 1 / 1;\n filter: drop-shadow(0 1px 0 var(--shadow-current-color));\n transition-timing-function: ease-out;\n transition-duration: 150ms;\n transition-property: opacity, scale;\n }\n}\n\n/* Seek button */\n.media-default-skin .media-button--seek {\n .media-icon__label {\n position: absolute;\n right: -1px;\n bottom: -3px;\n font-size: 0.715em; /* 10px */\n font-weight: 500;\n font-variant-numeric: tabular-nums;\n letter-spacing: -0.05em;\n }\n\n &:has(.media-icon--flipped) .media-icon__label {\n right: unset;\n left: -1px;\n }\n}\n\n/* Playback rate button */\n.media-default-skin .media-button--playback-rate {\n padding: 0;\n font-variant-numeric: tabular-nums;\n\n &::after {\n width: 4ch;\n content: attr(data-rate) \"\\00D7\";\n }\n\n &[data-inline-rate-label]::after {\n content: none;\n }\n}\n\n/* Settings button */\n.media-default-skin .media-button--settings {\n .media-icon--settings {\n transition: transform 150ms ease-in-out;\n\n @media (prefers-reduced-motion: reduce) {\n transition-duration: 0ms;\n }\n }\n\n &[aria-expanded=\"true\"] .media-icon--settings {\n transform: rotate(90deg);\n }\n}\n\n/* Live button — wide pill button with a status dot (gray → red at the live\n edge) rendered via ::before, and \"LIVE\" text rendered as the button's own\n text content. */\n.media-default-skin .media-button--live {\n display: inline-flex;\n gap: calc(var(--spacing) * 1.5);\n align-items: center;\n width: auto;\n aspect-ratio: auto;\n padding: calc(var(--spacing) * 2) calc(var(--spacing) * 3);\n font-size: var(--font-size-small);\n font-weight: 600;\n line-height: 1;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n\n &::before {\n display: inline-block;\n flex-shrink: 0;\n width: calc(var(--spacing) * 2);\n height: calc(var(--spacing) * 2);\n content: \"\";\n background-color: oklch(from currentColor l c h / 0.4);\n border-radius: 50%;\n transition: background-color 150ms ease-out;\n }\n\n &[data-live-edge]::before {\n background-color: oklch(0.65 0.22 27);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .media-default-skin .media-button {\n scale: 1;\n transition-property: background-color, color, outline-offset;\n will-change: auto;\n }\n}\n\n.media-default-skin .media-button-group {\n display: flex;\n gap: 1px;\n align-items: center;\n}\n\n.media-default-skin .media-badge {\n padding: calc(var(--spacing) * 0.5) calc(var(--spacing) * 1.5);\n font-size: var(--font-size-small);\n font-weight: 500;\n line-height: 1;\n color: oklch(from currentColor l c h / 0.85);\n white-space: nowrap;\n background-color: oklch(from currentColor l c h / 0.1);\n border-radius: calc(Infinity * 1px);\n}\n\n.media-default-skin .media-icon__container {\n position: relative;\n}\n\n.media-default-skin .media-icon {\n flex-shrink: 0;\n width: var(--media-icon-size);\n height: var(--media-icon-size);\n}\n.media-default-skin .media-icon--flipped {\n scale: -1 1;\n}\n\n.media-default-skin media-poster,\n.media-default-skin > img {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n transition: opacity 0.25s;\n}\n.media-default-skin media-poster:not([data-visible]),\n.media-default-skin > img:not([data-visible]),\n.media-default-skin > img[data-visible]:not([data-loaded]) {\n opacity: 0;\n}\n.media-default-skin media-poster ::slotted(img),\n.media-default-skin media-poster img {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: var(--media-object-fit, contain);\n object-position: var(--media-object-position, center);\n border-radius: var(--container-border-radius);\n}\n.media-default-skin > img {\n object-fit: var(--media-object-fit, contain);\n object-position: var(--media-object-position, center);\n border-radius: inherit;\n}\n\n/* Blurred placeholder: HTML path targets media-poster::before, React path targets the skin container::before */\n.media-default-skin media-poster::before,\n.media-default-skin::before {\n position: absolute;\n inset: 0;\n pointer-events: none;\n content: \"\";\n background-image: var(--media-poster-placeholder, none);\n background-repeat: no-repeat;\n background-position: var(--media-object-position, center);\n background-size: var(--media-object-fit, contain);\n filter: blur(var(--media-poster-placeholder-blur, 20px));\n}\n\n/* React path: hidden by default, transitions in while poster loads */\n.media-default-skin::before {\n opacity: 0;\n transition: opacity 0.25s;\n}\n/* Show placeholder while the poster is visible but not yet loaded */\n.media-default-skin:has(img[data-visible]:not([data-loaded]))::before {\n opacity: 1;\n}\n\n.media-default-skin:fullscreen media-poster ::slotted(img),\n.media-default-skin:fullscreen media-poster img,\n.media-default-skin:fullscreen > img {\n object-fit: contain;\n}\n\n.media-default-skin .media-thumbnail {\n position: relative;\n pointer-events: none;\n background-color: oklch(0 0 0 / 0.9);\n border-radius: calc(var(--spacing) * 3);\n\n .media-thumbnail__image {\n position: relative;\n display: block;\n max-width: var(--thumbnail-max-width);\n max-height: var(--max-height);\n overflow: clip;\n border-radius: inherit;\n\n &::after {\n position: absolute;\n inset: 0;\n content: \"\";\n background-image: linear-gradient(to top, oklch(0 0 0 / 0.5), oklch(0 0 0 / 0.1), oklch(0 0 0 / 0));\n border-radius: inherit;\n }\n }\n\n .media-thumbnail__spinner {\n position: absolute;\n top: 50%;\n left: 50%;\n opacity: 0;\n translate: -50% -50%;\n }\n\n .media-thumbnail__image,\n .media-thumbnail__spinner {\n transition: opacity 150ms ease-out;\n }\n\n &:not(:has(.media-thumbnail__image[data-loading])) {\n .media-thumbnail__spinner {\n --media-spinner-animation: none;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n --media-spinner-animation: none;\n }\n\n &:has(.media-thumbnail__image[data-loading]) {\n width: var(--thumbnail-max-width);\n max-width: 100%;\n aspect-ratio: 16 / 9;\n overflow: hidden;\n\n .media-thumbnail__image {\n opacity: 0;\n }\n .media-thumbnail__spinner {\n opacity: 1;\n }\n }\n}\n\n.media-default-skin .media-slider {\n --thumb-size: calc(var(--spacing) * 2.5);\n --thumb-active-size: calc(var(--spacing) * 3);\n --track-border-radius: calc(Infinity * 1px);\n\n position: relative;\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n outline: none;\n\n &[data-orientation=\"horizontal\"] {\n width: var(--slider-width, 100%);\n min-width: calc(var(--spacing) * 20);\n height: var(--slider-height, calc(var(--spacing) * 8));\n }\n &[data-orientation=\"vertical\"] {\n width: var(--slider-width, calc(var(--spacing) * 8));\n height: var(--slider-height, calc(var(--spacing) * 20));\n }\n\n /* Track */\n .media-slider__track {\n position: relative;\n overflow: hidden;\n user-select: none;\n background-color: oklch(from currentColor l c h / 0.2);\n border-radius: var(--track-border-radius);\n isolation: isolate;\n\n &[data-orientation=\"horizontal\"] {\n width: 100%;\n height: calc(var(--spacing) * 1);\n }\n &[data-orientation=\"vertical\"] {\n width: calc(var(--spacing) * 1);\n height: 100%;\n }\n }\n\n /* Shared track fills */\n .media-slider__buffer,\n .media-slider__fill {\n position: absolute;\n pointer-events: none;\n border-radius: inherit;\n\n &[data-orientation=\"horizontal\"] {\n inset-block: 0;\n left: 0;\n width: 100%;\n transition-property: clip-path;\n }\n &[data-orientation=\"vertical\"] {\n inset-inline: 0;\n bottom: 0;\n height: 100%;\n transition-property: clip-path;\n }\n }\n\n /* Buffer */\n .media-slider__buffer {\n background-color: oklch(from currentColor l c h / 0.2);\n\n &[data-orientation=\"horizontal\"] {\n clip-path: inset(0 calc(100% - var(--media-slider-buffer)) 0 0 round var(--track-border-radius));\n }\n &[data-orientation=\"vertical\"] {\n clip-path: inset(calc(100% - var(--media-slider-buffer)) 0 0 0 round var(--track-border-radius));\n }\n }\n\n /* Fill */\n .media-slider__fill {\n background-color: var(--accent-color);\n\n &[data-orientation=\"horizontal\"] {\n clip-path: inset(0 calc(100% - var(--media-slider-fill)) 0 0 round var(--track-border-radius));\n }\n &[data-orientation=\"vertical\"] {\n clip-path: inset(calc(100% - var(--media-slider-fill)) 0 0 0 round var(--track-border-radius));\n }\n }\n\n /* Chapters */\n .media-slider__chapters {\n position: relative;\n display: flex;\n flex: 1;\n align-items: center;\n min-width: 0;\n min-height: 0;\n border-radius: inherit;\n\n &[data-orientation=\"horizontal\"] {\n width: 100%;\n height: 100%;\n }\n &[data-orientation=\"vertical\"] {\n flex-direction: column-reverse;\n width: 100%;\n height: 100%;\n }\n }\n\n .media-slider__chapter {\n --chapter-gap: calc(var(--spacing) * 1);\n --chapter-inset-start: 0.5;\n --chapter-inset-end: 0.5;\n\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 0;\n min-height: 0;\n border-radius: inherit;\n\n &:first-child {\n --chapter-inset-start: 0;\n }\n &:last-child {\n --chapter-inset-end: 0;\n }\n\n .media-slider__chapter-track {\n --chapter-track-size: calc(var(--spacing) * 1);\n --chapter-track-highlighted-size: calc(var(--spacing) * 1.75);\n\n border-radius: inherit;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: 200ms ease-out;\n transition-property: height, width;\n }\n }\n\n &[data-orientation=\"horizontal\"] {\n clip-path: inset(0 calc(100% - var(--media-slider-chapter-end)) 0 var(--media-slider-chapter-start));\n\n .media-slider__chapter-track {\n height: var(--chapter-track-size);\n clip-path: inset(\n 0 calc(100% - var(--media-slider-chapter-end) + var(--chapter-gap) * var(--chapter-inset-end)) 0\n calc(var(--media-slider-chapter-start) + var(--chapter-gap) * var(--chapter-inset-start)) round\n var(--track-border-radius)\n );\n }\n\n &[data-highlighted] .media-slider__chapter-track {\n height: var(--chapter-track-highlighted-size);\n }\n }\n\n &[data-orientation=\"vertical\"] {\n clip-path: inset(calc(100% - var(--media-slider-chapter-end)) 0 var(--media-slider-chapter-start) 0);\n\n .media-slider__chapter-track {\n width: var(--chapter-track-size);\n clip-path: inset(\n calc(100% - var(--media-slider-chapter-end) + var(--chapter-gap) * var(--chapter-inset-end)) 0\n calc(var(--media-slider-chapter-start) + var(--chapter-gap) * var(--chapter-inset-start)) 0 round\n var(--track-border-radius)\n );\n }\n\n &[data-highlighted] .media-slider__chapter-track {\n width: var(--chapter-track-highlighted-size);\n }\n }\n }\n\n /* Dragging — thumb and fill follow the pointer position */\n &[data-dragging] {\n .media-slider__thumb[data-orientation=\"horizontal\"] {\n left: var(--media-slider-pointer);\n }\n .media-slider__thumb[data-orientation=\"vertical\"] {\n top: calc(100% - var(--media-slider-pointer));\n }\n .media-slider__fill[data-orientation=\"horizontal\"] {\n clip-path: inset(0 calc(100% - var(--media-slider-pointer)) 0 0 round var(--track-border-radius));\n }\n .media-slider__fill[data-orientation=\"vertical\"] {\n clip-path: inset(calc(100% - var(--media-slider-pointer)) 0 0 0 round var(--track-border-radius));\n }\n }\n\n @media (prefers-reduced-motion: no-preference) {\n .media-slider__thumb {\n transition-property: opacity, height, width, outline-offset, left, top;\n }\n .media-slider__fill {\n transition-timing-function: linear;\n transition-duration: 200ms;\n }\n .media-slider__buffer {\n transition-timing-function: ease-out;\n transition-duration: 250ms;\n }\n }\n\n &[data-dragging],\n &[data-seeking] {\n .media-slider__thumb,\n .media-slider__fill,\n .media-slider__buffer {\n transition-duration: 0ms;\n }\n }\n\n /* Thumb */\n .media-slider__thumb {\n position: absolute;\n z-index: 10;\n width: var(--thumb-size);\n height: var(--thumb-size);\n user-select: none;\n outline: 4px solid transparent;\n outline-offset: -4px;\n background-color: currentColor;\n border-radius: calc(Infinity * 1px);\n box-shadow:\n 0 0 0 1px var(--shadow-current-color, oklch(0 0 0 / 0.1)),\n 0 1px 3px 0 oklch(0 0 0 / 0.35),\n 0 1px 2px -1px oklch(0 0 0 / 0.35);\n opacity: 0;\n translate: -50% -50%;\n transition-timing-function: ease-out;\n transition-duration: 150ms;\n transition-property: opacity, height, width, outline-offset;\n\n &[data-orientation=\"horizontal\"] {\n top: 50%;\n left: var(--media-slider-fill);\n }\n &[data-orientation=\"vertical\"] {\n top: calc(100% - var(--media-slider-fill));\n left: 50%;\n }\n\n &:focus-visible {\n outline-color: oklch(from currentColor l c h / 0.15);\n outline-offset: 0;\n opacity: 1;\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n outline-color: oklch(from currentColor l c h / 0.15);\n outline-offset: 0;\n }\n }\n\n &::after {\n position: absolute;\n inset: -4px;\n content: \"\";\n border-radius: inherit;\n box-shadow: 0 0 0 2px currentColor;\n transition-timing-function: ease-out;\n transition-duration: 150ms;\n transition-property: opacity, scale;\n }\n\n &:not(:focus-visible)::after {\n opacity: 0;\n scale: 0.5;\n }\n\n &.media-slider__thumb--persistent {\n width: var(--thumb-active-size);\n height: var(--thumb-active-size);\n opacity: 1;\n }\n }\n\n &:active .media-slider__thumb,\n &:focus-within .media-slider__thumb {\n width: var(--thumb-active-size);\n height: var(--thumb-active-size);\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover .media-slider__thumb {\n opacity: 1;\n }\n }\n\n /* Preview */\n .media-slider__preview {\n --max-width: min(calc(var(--spacing) * 48), 100cqi);\n --max-height: calc(var(--spacing) * 32);\n\n min-width: var(--max-width);\n height: calc(var(--spacing) * 1);\n\n .media-slider__thumbnail,\n .media-slider__value {\n position: absolute;\n left: 50%;\n max-width: var(--max-width);\n opacity: 0;\n filter: blur(8px);\n transform-origin: bottom;\n scale: 0.8;\n translate: -50% calc(var(--spacing) * 2);\n transition-timing-function: ease-out;\n transition-duration: 150ms;\n }\n\n .media-slider__thumbnail {\n --thumbnail-max-width: var(--max-width);\n bottom: calc(100% + (var(--spacing) * 9));\n }\n\n .media-slider__value {\n bottom: calc(100% + (var(--spacing) * 10.5));\n display: flex;\n flex-direction: column;\n align-items: center;\n text-shadow: 0 1px 0 var(--shadow-current-color);\n }\n\n .media-slider__chapter-title {\n min-width: 0;\n max-width: var(--max-width);\n padding-inline: calc(var(--spacing) * 3);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &:empty {\n display: none;\n }\n }\n\n &::before {\n position: absolute;\n top: 50%;\n left: 50%;\n z-index: 1;\n width: calc(var(--spacing) * 1);\n height: calc(var(--spacing) * 1);\n pointer-events: none;\n content: \"\";\n background-color: currentColor;\n border-radius: 100%;\n box-shadow:\n 0 0 0 1px var(--shadow-current-color, oklch(0 0 0 / 0.15)),\n 0 1px 2px 0 oklch(0 0 0 / 0.35);\n opacity: 0;\n scale: 0.5;\n translate: -50% -50%;\n transition-timing-function: ease-out;\n transition-duration: 200ms;\n transition-property: opacity, scale;\n }\n\n &[data-pointing]:not([data-dragging])::before,\n &[data-pointing] :is(.media-slider__thumbnail, .media-slider__value),\n &[data-interactive]:not([data-pointing]):not([data-dragging]) :is(.media-slider__value, .media-slider__thumbnail) {\n opacity: 1;\n filter: blur(0);\n scale: 1;\n }\n }\n}\n\n.media-default-skin {\n --popup-transition:\n opacity var(--popup-transition-timing-function) var(--popup-transition-duration),\n filter var(--popup-transition-timing-function) var(--popup-transition-duration),\n transform var(--popup-transition-timing-function) var(--popup-transition-duration),\n scale var(--popup-transition-timing-function) var(--popup-transition-duration);\n}\n\n.media-default-skin .media-popover,\n.media-default-skin .media-tooltip {\n --popup-translate-distance: calc(0.5 * var(--scale-unit));\n margin: 0;\n overflow: visible;\n color: inherit;\n border: 0;\n transition: var(--popup-transition);\n\n &[data-starting-style],\n &[data-ending-style] {\n opacity: 0;\n filter: blur(4px);\n /* We have to use transform here for translate as the translate property is used for positioning by core. */\n transform: translate(var(--popup-translate-x-distance, 0), var(--popup-translate-y-distance, 0));\n scale: 0.95;\n }\n\n &[data-ending-style] {\n transform: none;\n /* Speed up the exit transition. */\n transition-duration: max(0ms, calc(var(--popup-transition-duration) - 50ms));\n }\n\n &[data-side=\"top\"] {\n --popup-translate-y-distance: var(--popup-translate-distance);\n transform-origin: bottom;\n }\n &[data-side=\"bottom\"] {\n --popup-translate-y-distance: calc(var(--popup-translate-distance) * -1);\n transform-origin: top;\n }\n &[data-side=\"left\"] {\n --popup-translate-x-distance: var(--popup-translate-distance);\n transform-origin: right;\n }\n &[data-side=\"right\"] {\n --popup-translate-x-distance: calc(var(--popup-translate-distance) * -1);\n transform-origin: left;\n }\n\n /* Safe area between trigger and popup */\n &::before {\n position: absolute;\n pointer-events: inherit;\n content: \"\";\n }\n\n &[data-side=\"top\"]::before,\n &[data-side=\"bottom\"]::before {\n inset-inline: 0;\n width: 100%;\n }\n &[data-side=\"top\"]::before {\n top: 100%;\n }\n &[data-side=\"bottom\"]::before {\n bottom: 100%;\n }\n\n &[data-side=\"left\"]::before,\n &[data-side=\"right\"]::before {\n inset-block: 0;\n height: 100%;\n }\n &[data-side=\"left\"]::before {\n left: 100%;\n }\n &[data-side=\"right\"]::before {\n right: 100%;\n }\n}\n\n.media-default-skin .media-popover {\n &[data-side=\"top\"]::before,\n &[data-side=\"bottom\"]::before {\n height: var(--media-popover-side-offset);\n }\n &[data-side=\"left\"]::before,\n &[data-side=\"right\"]::before {\n width: var(--media-popover-side-offset);\n }\n}\n.media-default-skin .media-popover--volume {\n padding: calc(var(--spacing) * 3) 0;\n border-radius: calc(Infinity * 1px);\n\n &:has(media-volume-slider[data-hidden]) {\n display: none;\n }\n}\n\n.media-default-skin .media-tooltip {\n padding: calc(var(--spacing) * 1) calc(var(--spacing) * 2.5);\n font-size: var(--font-size-base);\n white-space: nowrap;\n border-radius: calc(Infinity * 1px);\n\n /* `display: flex` must not apply while closed — it overrides UA `[popover]` hiding. */\n &[data-open] {\n display: flex;\n column-gap: calc(var(--spacing) * 1);\n align-items: center;\n }\n\n &[data-side=\"top\"]::before,\n &[data-side=\"bottom\"]::before {\n height: var(--media-tooltip-side-offset);\n }\n &[data-side=\"left\"]::before,\n &[data-side=\"right\"]::before {\n width: var(--media-tooltip-side-offset);\n }\n\n .media-tooltip__kbd {\n min-width: 1.5em;\n padding: 0.1em;\n font-family: inherit;\n font-size: var(--font-size-small);\n font-weight: 600;\n line-height: 1.25;\n text-align: center;\n background-color: oklch(from currentColor l c h / 0.3);\n border-radius: calc(var(--spacing) * 1);\n }\n}\n\n.media-default-skin .media-menu {\n --menu-transition-duration: 250ms;\n --menu-max-height: calc(var(--spacing) * 56);\n --menu-padding: calc(var(--spacing) * 1);\n --menu-border-radius: calc(var(--spacing) * 3);\n --menu-item-border-radius: calc(var(--menu-border-radius) - var(--menu-padding));\n box-sizing: border-box;\n min-width: max-content;\n max-width: var(--media-popover-available-width, none);\n max-height: min(var(--media-popover-available-height, var(--menu-max-height)), var(--menu-max-height));\n padding: var(--menu-padding);\n overflow: auto;\n overscroll-behavior: none;\n border-radius: var(--menu-border-radius);\n\n @media (prefers-reduced-motion: reduce) {\n --menu-transition-duration: 0ms;\n }\n\n & > .media-menu__panel {\n position: absolute;\n inset-inline: 0;\n top: 0;\n z-index: 10;\n max-height: inherit;\n padding: var(--menu-padding);\n overflow: auto;\n overscroll-behavior: none;\n outline: none;\n translate: 0 0;\n transition-timing-function: ease-out;\n transition-duration: var(--menu-transition-duration);\n transition-property: translate, filter;\n will-change: translate, filter;\n\n &:where([data-starting-style], [data-ending-style]) {\n overflow: hidden;\n pointer-events: none;\n filter: blur(8px);\n translate: 100% 0;\n }\n }\n\n .media-menu__separator {\n margin-block: calc(var(--spacing) * 1);\n border-bottom: 1px solid oklch(0 0 0 / 0.1);\n box-shadow: 0 1px 0 0 oklch(1 0 0 / 0.075);\n }\n\n .media-menu__group {\n anchor-scope: --menu-item-highlight-anchor;\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 0.5);\n\n @supports (top: anchor(top)) {\n &::before {\n position: absolute;\n position-anchor: --menu-item-highlight-anchor;\n inset: anchor(inside);\n /* Firefox treats the moving highlight as a content shift and re-scrolls\n the menu while hovering. Exclude it from scroll anchoring. */\n overflow-anchor: none;\n pointer-events: none;\n content: \"\";\n background-color: var(--accent-background-color);\n border-radius: var(--menu-item-border-radius);\n transition: inset 100ms ease-in-out;\n }\n\n &:has([data-highlighted=\"\"])::before {\n transition-duration: 0ms;\n }\n }\n }\n\n .media-menu__item,\n .media-menu__back {\n position: relative;\n display: flex;\n gap: calc(var(--spacing) * 1.5);\n align-items: center;\n padding: calc(var(--spacing) * 1.5) calc(var(--spacing) * 2);\n text-align: left;\n text-shadow: 0 1px 0 var(--shadow-current-color);\n cursor: pointer;\n user-select: none;\n outline: 2px solid transparent;\n outline-offset: -2px;\n border-radius: var(--menu-item-border-radius);\n transition: background-color, color;\n transition-timing-function: ease-in-out;\n transition-duration: 100ms;\n\n .media-icon {\n flex-shrink: 0;\n color: oklch(from currentColor l c h / 0.65);\n filter: drop-shadow(0 1px 0 var(--shadow-current-color));\n }\n\n &:focus-visible {\n outline-color: var(--focus-ring-color);\n outline-offset: 2px;\n }\n\n &:hover,\n &[data-highlighted] {\n color: var(--accent-text-color);\n background-color: var(--accent-background-color);\n\n .media-icon {\n color: inherit;\n }\n }\n\n @supports (top: anchor(top)) {\n transition-duration: 50ms;\n\n &:hover,\n &[data-highlighted] {\n transition-duration: 200ms;\n }\n }\n }\n\n .media-menu__indicator {\n flex-shrink: 0;\n margin-right: calc(var(--spacing) * -1);\n margin-left: auto;\n opacity: 0;\n\n .media-icon {\n filter: drop-shadow(0 1px 0 var(--shadow-current-color));\n }\n }\n\n .media-menu__item {\n justify-content: space-between;\n font-variant-numeric: tabular-nums;\n color: inherit;\n\n &[aria-disabled=\"true\"] {\n pointer-events: none;\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n &[aria-checked=\"true\"] .media-menu__indicator {\n opacity: 1;\n }\n\n &[data-availability=\"unavailable\"],\n &[data-availability=\"unsupported\"] {\n display: none;\n }\n\n &[data-highlighted] {\n @supports (top: anchor(top)) {\n anchor-name: --menu-item-highlight-anchor;\n background-color: transparent;\n }\n }\n }\n\n .media-menu__tier {\n padding-top: 1px;\n padding-left: calc(var(--spacing) * 0.5);\n font-size: var(--font-size-tiny);\n font-weight: 600;\n line-height: 1;\n color: oklch(from currentColor l c h / 0.7);\n }\n\n .media-menu__back {\n width: 100%;\n margin-bottom: calc(var(--spacing) * 0.5);\n }\n\n .media-menu__hint {\n display: inline-flex;\n gap: calc(var(--spacing) * 1);\n align-items: center;\n min-width: 0;\n padding-left: calc(var(--spacing) * 2);\n margin-left: auto;\n color: oklch(from currentColor l c h / 0.65);\n }\n\n .media-menu__hint-label {\n max-width: calc(var(--spacing) * 24);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .media-menu__chevron {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n\n /* Settings menu */\n &.media-menu--settings {\n width: var(--media-menu-width);\n min-width: calc(var(--spacing) * 48);\n height: var(--media-menu-height);\n overflow: hidden;\n /* Only the menu size changes between panels. */\n transition:\n var(--popup-transition),\n width var(--popup-transition-timing-function) var(--menu-transition-duration),\n height var(--popup-transition-timing-function) var(--menu-transition-duration);\n\n & > :not([data-submenu]) {\n translate: 0 0;\n transition:\n translate var(--menu-transition-duration) ease-out,\n filter var(--menu-transition-duration) ease-out;\n will-change: translate, filter;\n }\n\n &[data-submenu-expanded=\"true\"] > :not([data-submenu]) {\n filter: blur(8px);\n translate: -100% 0;\n }\n\n /* WebKit can restart the covered-content transition while the\n anchor-positioned highlight remains active. */\n &[data-submenu-expanded] > :not([data-submenu])::before {\n display: none;\n }\n\n /* Don't transition size on open/close. */\n &[data-starting-style],\n &[data-ending-style] {\n transition: var(--popup-transition);\n }\n }\n}\n\n.media-default-skin {\n --media-caption-track-duration: var(--controls-transition-duration);\n --media-caption-track-delay: 25ms;\n --media-caption-track-y: calc(var(--spacing) * -2);\n\n &:has(.media-controls[data-visible]) {\n --media-caption-track-y: calc(var(--spacing) * -14);\n }\n}\n\n.media-default-skin video::-webkit-media-text-track-container {\n z-index: 1;\n font-family: inherit;\n scale: 0.98;\n translate: 0 var(--media-caption-track-y);\n transition: translate var(--media-caption-track-duration) ease-out;\n transition-delay: var(--media-caption-track-delay);\n}\n\n.media-default-skin .media-input-indicator-overlay {\n position: absolute;\n inset: 0;\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n align-items: center;\n justify-items: center;\n color: oklch(1 0 0);\n pointer-events: none;\n}\n\n.media-default-skin {\n .media-volume-indicator,\n .media-status-indicator--state {\n --surface-background-color: oklch(0 0 0 / 0.25);\n position: absolute;\n top: calc(var(--spacing) * 3);\n font-weight: 500;\n color: inherit;\n pointer-events: none;\n border-radius: calc(Infinity * 1px);\n transform-origin: top center;\n transition-timing-function: ease-out;\n transition-duration: 100ms;\n\n .media-volume-indicator__content,\n .media-status-indicator__content {\n display: flex;\n gap: calc(var(--spacing) * 2);\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: calc(var(--spacing) * 1) calc(var(--spacing) * 2.5);\n\n * {\n mix-blend-mode: difference;\n }\n }\n\n .media-icon {\n display: none;\n flex-shrink: 0;\n }\n\n .media-volume-indicator__value,\n .media-status-indicator__value {\n margin-left: auto;\n }\n\n @media (pointer: coarse) {\n transition-property: scale, translate, opacity;\n will-change: scale, translate, opacity;\n }\n\n @media (pointer: fine) and (prefers-reduced-motion: no-preference) {\n transition-property: scale, translate, filter, opacity;\n will-change: scale, translate, filter, opacity;\n }\n\n @media (prefers-reduced-transparency: reduce) or (prefers-contrast: more) {\n --surface-background-color: oklch(0 0 0);\n }\n\n &[data-starting-style],\n &[data-ending-style] {\n opacity: 0;\n transition-timing-function: ease-in;\n transition-duration: 250ms;\n\n @media (pointer: fine) and (prefers-reduced-motion: no-preference) {\n filter: blur(8px);\n scale: 0.9;\n }\n }\n\n &[data-ending-style] {\n @media (prefers-reduced-motion: no-preference) {\n translate: 0 -25%;\n }\n }\n }\n\n .media-seek-indicator,\n .media-status-indicator--playback {\n display: grid;\n grid-row: 1;\n grid-column: 2;\n place-content: center;\n padding: calc(var(--spacing) * 4);\n text-align: center;\n }\n}\n\n.media-default-skin .media-volume-indicator {\n width: min(80%, calc(var(--spacing) * 48));\n transform: translateX(0);\n\n .media-volume-indicator__content {\n background-image: linear-gradient(currentColor, currentColor);\n background-repeat: no-repeat;\n background-position: left;\n background-size: var(--media-volume-fill, 0%) 100%;\n border-radius: inherit;\n transition: background-size 200ms linear;\n }\n\n &[data-level=\"high\"] .media-icon--volume-high,\n &[data-level=\"low\"] .media-icon--volume-low,\n &[data-level=\"off\"] .media-icon--volume-off {\n display: block;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n &[data-min]:not([data-starting-style], [data-ending-style]),\n &[data-max]:not([data-starting-style], [data-ending-style]) {\n transform: translateX(0.25px);\n transition: transform 300ms linear(0, -24 20%, 16 40%, -8 60%, 4 80%, 1);\n }\n }\n}\n\n.media-default-skin .media-status-indicator--state {\n &[data-status=\"captions-on\"] .media-icon--captions-on,\n &[data-status=\"captions-off\"] .media-icon--captions-off,\n &[data-status=\"fullscreen\"] .media-icon--fullscreen-enter,\n &[data-status=\"exit-fullscreen\"] .media-icon--fullscreen-exit,\n &[data-status=\"pip\"] .media-icon--pip-enter,\n &[data-status=\"exit-pip\"] .media-icon--pip-exit {\n display: block;\n }\n}\n\n.media-default-skin .media-status-indicator--playback {\n background: oklch(0 0 0 / 0.35);\n border-radius: 100%;\n backdrop-filter: blur(8px);\n transition-timing-function: ease-out;\n transition-duration: 200ms;\n transition-property: opacity, scale;\n\n .media-icon {\n grid-area: 1 / 1;\n width: calc(var(--media-icon-size) * 1.5);\n height: calc(var(--media-icon-size) * 1.5);\n opacity: 0;\n scale: 0;\n transition-timing-function: ease-out;\n transition-duration: 150ms;\n transition-property: opacity, scale;\n\n &.media-icon--play {\n translate: 1px 0;\n }\n }\n\n &[data-status=\"pause\"] .media-icon--pause,\n &[data-status=\"play\"] .media-icon--play {\n opacity: 1;\n scale: 1;\n }\n\n &[data-starting-style],\n &[data-ending-style] {\n opacity: 0;\n scale: 0.85;\n }\n\n &[data-ending-style] {\n transition-timing-function: ease-in;\n transition-duration: 100ms;\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition-duration: 50ms;\n transition-property: opacity;\n\n &[data-starting-style],\n &[data-ending-style],\n .media-icon {\n scale: 1;\n }\n\n .media-icon {\n transition-duration: 50ms;\n transition-property: opacity;\n }\n }\n}\n\n.media-default-skin .media-seek-indicator {\n gap: calc(var(--spacing) * 1);\n\n .media-seek-indicator__value {\n font-variant-numeric: tabular-nums;\n }\n\n @container media-root (width > 24rem) {\n padding: calc(var(--spacing) * 6);\n }\n\n &[data-direction=\"backward\"] {\n grid-column: 1;\n justify-self: left;\n }\n\n &[data-direction=\"forward\"] {\n grid-column: 3;\n justify-self: right;\n }\n\n .media-icon--seek {\n display: block;\n width: calc(var(--media-icon-size) * 1.5);\n height: calc(var(--media-icon-size) * 1.5);\n }\n\n &[data-direction=\"backward\"] .media-icon--seek {\n scale: -1 1;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n .media-icon--seek {\n transition-timing-function: ease-in-out;\n transition-duration: 200ms;\n transition-property: translate, opacity;\n }\n\n &[data-starting-style] .media-icon--seek,\n &[data-ending-style] .media-icon--seek {\n opacity: 0;\n }\n\n &[data-direction=\"forward\"][data-starting-style] .media-icon--seek {\n translate: -60% 0;\n }\n\n &[data-direction=\"backward\"][data-starting-style] .media-icon--seek {\n translate: 60% 0;\n }\n }\n}\n\n/* ==========================================================================\n Icon State Visibility for Video Skins\n\n Data-attribute-driven visibility rules for multi-state icon buttons shared\n by the HTML and React skins.\n ========================================================================== */\n\n/* --- All icons hidden by default --- */\n\n.media-button--play .media-icon,\n.media-button--mute .media-icon,\n.media-button--fullscreen .media-icon,\n.media-button--pip .media-icon,\n.media-button--cast .media-icon,\n.media-button--airplay .media-icon,\n.media-button--captions .media-icon {\n opacity: 0;\n}\n.media-button--play .media-icon {\n scale: 0;\n}\n\n/* --- Active icon per state --- */\n\n/* Play: ended → restart */\n.media-button--play[data-ended] .media-icon--restart,\n/* Play: paused or not yet started (not ended) → play */\n.media-button--play:not([data-ended])[data-paused] .media-icon--play,\n.media-button--play:not([data-ended]):not([data-started]) .media-icon--play,\n/* Play: started and not paused/ended → pause */\n.media-button--play[data-started]:not([data-paused]):not([data-ended]) .media-icon--pause,\n/* Mute: muted → volume off */\n.media-button--mute[data-muted] .media-icon--volume-off,\n/* Mute: volume low (not muted) → volume low */\n.media-button--mute:not([data-muted])[data-volume-level=\"low\"] .media-icon--volume-low,\n/* Mute: volume high (not muted, not low) → volume high */\n.media-button--mute:not([data-muted]):not([data-volume-level=\"low\"]) .media-icon--volume-high,\n/* Fullscreen: not fullscreen → enter */\n.media-button--fullscreen:not([data-fullscreen]) .media-icon--fullscreen-enter,\n/* Fullscreen: fullscreen → exit */\n.media-button--fullscreen[data-fullscreen] .media-icon--fullscreen-exit,\n/* Picture-in-Picture: not active → enter */\n.media-button--pip:not([data-pip]) .media-icon--pip-enter,\n/* Picture-in-Picture: active → exit */\n.media-button--pip[data-pip] .media-icon--pip-exit,\n/* Cast: not connected → enter */\n.media-button--cast:not([data-cast-state=\"connected\"]) .media-icon--cast-enter,\n/* Cast: connected → exit */\n.media-button--cast[data-cast-state=\"connected\"] .media-icon--cast-exit,\n/* AirPlay: not connected → enter */\n.media-button--airplay:not([data-airplay-state=\"connected\"]) .media-icon--airplay-enter,\n/* AirPlay: connected → exit */\n.media-button--airplay[data-airplay-state=\"connected\"] .media-icon--airplay-exit,\n/* Captions: not active → captions off */\n.media-button--captions:not([data-active]) .media-icon--captions-off,\n/* Captions: active → captions on */\n.media-button--captions[data-active] .media-icon--captions-on {\n opacity: 1;\n scale: 1;\n}\n\n/* --- Pause keyframe animations on inactive icons --- */\n\n/* The airplay-exit SVG defines its keyframes against CSS variables (mirroring\n the spinner pattern). When the AirPlay session isn't active the SVG is\n still in the DOM — just `display: none` — so its animations would keep\n running. Set the variables to `none` to short-circuit the keyframes. */\n.media-button--airplay:not([data-airplay-state=\"connected\"]) {\n --media-icon--airplay__fill-animation: none;\n --media-icon--airplay__triangle-animation: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .media-button--airplay {\n --media-icon--airplay__fill-animation: none;\n --media-icon--airplay__triangle-animation: none;\n }\n}\n\n\n/* Video-specific container styles */\n\n.media-default-skin--video {\n --default-accent-color: oklch(1 0 0);\n --border-color: light-dark(oklch(0 0 0 / 0.1), oklch(1 0 0 / 0.15));\n --focus-ring-color: light-dark(oklch(0 0 0), oklch(1 0 0));\n --media-video-border-radius: var(--container-border-radius);\n\n --surface-background-color: oklch(1 0 0 / 0.1);\n --surface-inner-border-color: oklch(1 0 0 / 0.1);\n --surface-outer-border-color: oklch(0 0 0 / 0.1);\n --surface-shadow-color: oklch(0 0 0 / 0.15);\n --surface-backdrop-filter: blur(16px) saturate(1.5);\n\n --controls-transition-duration: 100ms;\n --controls-transition-timing-function: ease-out;\n\n --error-dialog-transition-duration: 350ms;\n --error-dialog-transition-delay: 100ms;\n --error-dialog-transition-timing-function: ease-out;\n\n --popup-transition-duration: 100ms;\n --popup-transition-timing-function: ease-out;\n\n overflow: clip;\n background: oklch(0 0 0);\n\n @media (prefers-reduced-motion: reduce) {\n --error-dialog-transition-duration: 50ms;\n --error-dialog-transition-delay: 0ms;\n --popup-transition-duration: 0ms;\n\n .media-error__dialog {\n scale: 1;\n transition-property: opacity;\n }\n }\n\n @media (prefers-reduced-transparency: reduce) or (prefers-contrast: more) {\n --surface-background-color: oklch(0 0 0);\n --surface-inner-border-color: oklch(1 0 0 / 0.25);\n --surface-outer-border-color: transparent;\n }\n\n &:has(.media-controls--root:not([data-visible])) {\n /* Slight delay to hide controls on non-touch devices after interaction */\n @media (pointer: fine) {\n --controls-transition-duration: 300ms;\n }\n @media (pointer: coarse) {\n --controls-transition-duration: 150ms;\n }\n @media (prefers-reduced-motion: reduce) {\n --controls-transition-duration: 50ms;\n }\n }\n\n /* Inner border ring */\n &::after {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none;\n content: \"\";\n border-radius: inherit;\n box-shadow: inset 0 0 0 1px var(--border-color);\n }\n\n &:fullscreen {\n --container-border-radius: 0;\n\n &::after {\n display: none;\n }\n\n @media (width >= 1280px) {\n --scale: 1.25;\n }\n @media (width >= 1536px) {\n --scale: 1.5;\n }\n @media (width >= 1920px) {\n --scale: 1.75;\n }\n }\n}\n\n/* Error Dialog */\n\n.media-default-skin--video .media-error {\n position: absolute;\n inset: 0;\n z-index: 20;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.media-default-skin--video .media-error__dialog {\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 3);\n width: 100%;\n max-width: calc(var(--spacing) * 72);\n padding: calc(var(--spacing) * 3);\n color: oklch(1 0 0);\n text-shadow: 0 1px 0 oklch(0 0 0 / 0.25);\n border-radius: calc(var(--spacing) * 7);\n transition-delay: var(--error-dialog-transition-delay);\n transition-timing-function: var(--error-dialog-transition-timing-function);\n transition-duration: var(--error-dialog-transition-duration);\n transition-property: opacity, scale;\n}\n\n.media-default-skin--video .media-error[data-starting-style] .media-error__dialog,\n.media-default-skin--video .media-error[data-ending-style] .media-error__dialog {\n opacity: 0;\n scale: 0.95;\n}\n.media-default-skin--video .media-error[data-ending-style] .media-error__dialog {\n transition-delay: 0ms;\n}\n\n.media-default-skin--video .media-error__content {\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2);\n padding: calc(var(--spacing) * 2) calc(var(--spacing) * 2) calc(var(--spacing) * 1.5);\n text-shadow: inherit;\n}\n\n.media-default-skin--video .media-error__title {\n font-size: var(--font-size-medium);\n}\n\n/* Controls (hide/show behavior) */\n\n.media-default-skin--video .media-controls--root {\n --inset-factor: 2;\n --inset: calc(var(--spacing) * var(--inset-factor));\n --base-boundary-offset: var(--inset-factor);\n\n z-index: 10;\n display: contents;\n color: oklch(1 0 0);\n transition-timing-function: var(--controls-transition-timing-function);\n /* Speed up the entry transition */\n transition-duration: calc(var(--controls-transition-duration) / 2);\n\n .media-controls--primary,\n .media-controls--secondary {\n position: absolute;\n z-index: 10;\n }\n\n .media-controls--primary {\n inset-inline: var(--inset);\n bottom: var(--inset);\n transform-origin: bottom;\n }\n\n .media-controls--secondary {\n top: var(--inset);\n right: var(--inset);\n container-type: normal;\n transform-origin: top;\n }\n\n @container media-root (width < 32rem) {\n .media-controls--primary,\n .media-controls--secondary {\n transition-timing-function: inherit;\n transition-duration: inherit;\n\n @media (pointer: fine) {\n transition-property: filter, opacity, scale, translate;\n will-change: filter, opacity, scale, translate;\n }\n\n @media (pointer: coarse) {\n transition-property: opacity, scale, translate;\n will-change: opacity, scale, translate;\n }\n }\n\n &:after {\n display: none;\n }\n\n &:not([data-visible]) {\n .media-controls--primary,\n .media-controls--secondary {\n pointer-events: none;\n opacity: 0;\n scale: 0.95;\n transition-duration: var(--controls-transition-duration);\n\n @media (pointer: fine) and (prefers-reduced-motion: no-preference) {\n filter: blur(8px);\n }\n\n @media (prefers-reduced-motion: reduce) {\n scale: 1;\n }\n }\n\n .media-controls--primary {\n @media (prefers-reduced-motion: no-preference) {\n translate: 0 4px;\n }\n }\n\n .media-controls--secondary {\n @media (prefers-reduced-motion: no-preference) {\n translate: 0 -4px;\n }\n }\n }\n }\n\n @container media-root (width >= 32rem) {\n position: absolute;\n inset-inline: var(--inset);\n bottom: var(--inset);\n display: flex;\n transform-origin: bottom;\n\n .media-controls--primary,\n .media-controls--secondary {\n display: contents;\n\n &::after {\n display: none;\n }\n }\n\n &:not([data-visible]) {\n pointer-events: none;\n opacity: 0;\n scale: 0.95;\n transition-duration: var(--controls-transition-duration);\n\n @media (pointer: fine) and (prefers-reduced-motion: no-preference) {\n filter: blur(8px);\n }\n\n @media (prefers-reduced-motion: reduce) {\n scale: 1;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n translate: 0 4px;\n }\n }\n }\n\n .media-time-controls {\n flex: 1;\n padding-inline: calc(var(--spacing) * 3);\n }\n\n @media (pointer: fine) {\n transition-property: filter, opacity, scale, translate;\n will-change: filter, opacity, scale, translate;\n }\n\n @media (pointer: coarse) {\n transition-property: opacity, scale, translate;\n will-change: opacity, scale, translate;\n }\n\n @container media-root (width > 42rem) {\n --inset-factor: 3;\n }\n}\n\n.media-default-skin--video .media-error[data-open] ~ .media-controls {\n display: none;\n}\n\n/* Hide cursor when controls are hidden */\n.media-default-skin--video:has(.media-controls--root:not([data-visible])) {\n cursor: none;\n}\n\n/* Sliders */\n\n.media-default-skin--video .media-slider__track {\n background-color: oklch(1 0 0 / 0.2);\n}\n\n";
|
|
14
|
+
var skin_default = "/* -------------------------------------------------------------------------- */\n/* Global styles for the host document, outside of the Shadow DOM */\n/* -------------------------------------------------------------------------- */\n\nvideo-player,\nlive-video-player,\nmedia-i18n {\n display: contents;\n}\n\n/*\nRequired to override any default video and image styles (such as\nTailwind's CSS reset) and ensure they fill the container as expected.\n*/\nvideo-player video,\nvideo-player [slot=\"poster\"],\nlive-video-player video,\nlive-video-player [slot=\"poster\"] {\n display: block;\n width: 100%;\n height: 100%;\n}\n\nvideo-player video::-webkit-media-text-track-container,\nlive-video-player video::-webkit-media-text-track-container {\n z-index: 1;\n font-family: inherit;\n scale: 0.98;\n translate: 0 var(--media-caption-track-y, 0);\n transition: translate var(--media-caption-track-duration, 0) ease-out;\n transition-delay: var(--media-caption-track-delay, 0);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Shared styles for all HTML skins */\n/* -------------------------------------------------------------------------- */\n\nmedia-tooltip-group {\n display: contents;\n}\n\n:host {\n /* `display:grid` fixes a weird issue with Safari when setting aspect-ratio */\n display: grid;\n width: 100%;\n}\n\nmedia-container {\n min-width: 0;\n min-height: 0;\n}\n\n/* Hide the volume popover when its slider is unavailable. */\n.media-popover--volume:has(media-volume-slider[data-hidden]) {\n display: none;\n}\n\n.media-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n white-space: nowrap;\n border: 0;\n clip: rect(0, 0, 0, 0);\n}\n\n\n.media-default-skin *,\n.media-default-skin *::before,\n.media-default-skin *::after {\n box-sizing: border-box;\n}\n.media-default-skin img,\n.media-default-skin video,\n.media-default-skin svg {\n display: block;\n max-width: 100%;\n}\n.media-default-skin button {\n font: inherit;\n}\n.media-default-skin [hidden][hidden] {\n /* Keep authored templates hidden even when component classes set display. */\n display: none;\n}\n@media (prefers-reduced-motion: no-preference) {\n .media-default-skin {\n interpolate-size: allow-keywords;\n }\n}\n\n.media-default-skin {\n /* Colors */\n --accent-color: var(--media-accent-color, var(--default-accent-color));\n --accent-contrast-color: contrast-color(var(--accent-color));\n --accent-background-color: var(\n --media-accent-color,\n oklch(from var(--default-accent-color) l c h / calc(alpha * 0.1))\n );\n --accent-text-color: var(--media-accent-text-color, contrast-color(var(--media-accent-color, oklch(0 0 0))));\n --shadow-current-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.15));\n --shadow-subtle-current-color: oklch(from var(--shadow-current-color) l c h / calc(alpha * 0.4));\n --scrollbar-thumb-color: oklch(from currentColor l c h / 0.3);\n\n /* Scaling - used in video fullscreen to scale the UI. */\n --scale: 1;\n /* Fixed scaling unit to avoid inheriting the document's root font size. This must be a CSS <length>. */\n --scale-unit: var(--media-scale-unit, 16px);\n --size: calc(var(--scale-unit) * var(--scale));\n /* Create a Tailwind-like spacing unit where 1 equals 4px with default scaling. */\n --spacing: calc(var(--size) / 4);\n\n /* Font sizes */\n --font-size-medium: calc(0.9375 * var(--size)); /* 15px */\n --font-size-base: calc(0.8125 * var(--size)); /* 13px */\n --font-size-small: calc(0.6875 * var(--size)); /* 11px */\n --font-size-tiny: calc(0.5625 * var(--size)); /* 9px */\n --media-icon-size: calc(1.125 * var(--size)); /* 18px */\n\n /* Radii */\n --container-border-radius: var(--media-border-radius, 1.75rem);\n\n position: relative;\n display: block;\n width: 100%;\n height: 100%;\n container: media-root / inline-size;\n font-family:\n Inter Variable,\n Inter,\n ui-sans-serif,\n system-ui,\n sans-serif;\n font-size: var(--font-size-base);\n -webkit-font-smoothing: auto;\n -moz-osx-font-smoothing: auto;\n line-height: 1.5;\n letter-spacing: normal;\n outline: 2px solid transparent;\n outline-offset: -4px;\n scrollbar-color: var(--scrollbar-thumb-color) transparent;\n scrollbar-width: thin;\n border-radius: var(--container-border-radius, 1.75rem);\n isolation: isolate;\n transition-timing-function: ease-out;\n transition-duration: 100ms;\n transition-property: outline-offset, outline-color;\n\n &:focus-visible {\n outline-color: var(--focus-ring-color);\n outline-offset: 2px;\n }\n\n &::-webkit-scrollbar-thumb {\n background: var(--scrollbar-thumb-color);\n border-radius: 9999px;\n }\n\n @media (prefers-reduced-transparency: reduce) or (prefers-contrast: more) {\n --scrollbar-thumb-color: oklch(from currentColor l c h / 0.8);\n scrollbar-width: auto;\n }\n}\n\n.media-default-skin .media-surface {\n background-color: var(--surface-background-color);\n box-shadow:\n 0 0 0 1px var(--surface-outer-border-color),\n 0 1px 3px 0 var(--surface-shadow-color),\n 0 1px 2px -1px var(--surface-shadow-color);\n backdrop-filter: var(--surface-backdrop-filter);\n\n /* Inner border ring */\n &::after {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none;\n content: \"\";\n border-radius: inherit;\n box-shadow:\n inset 0 1px 0 0 var(--surface-inner-border-color),\n inset 0 0 0 1px oklch(from var(--surface-inner-border-color) l c h / calc(alpha * 0.5));\n }\n}\n\n.media-default-skin ::slotted(video),\n.media-default-skin video {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: var(--media-object-fit, contain);\n object-position: var(--media-object-position, center);\n}\n.media-default-skin ::slotted(video) {\n border-radius: var(--container-border-radius);\n}\n.media-default-skin video {\n border-radius: inherit;\n}\n\n.media-default-skin:fullscreen ::slotted(video),\n.media-default-skin:fullscreen video {\n object-fit: contain;\n}\n\n.media-default-skin .media-overlay {\n position: absolute;\n inset: 0;\n pointer-events: none;\n background-image: linear-gradient(to top, oklch(0 0 0 / 0.5), oklch(0 0 0 / 0.3) 25%, oklch(0 0 0 / 0));\n border-radius: inherit;\n opacity: 0;\n backdrop-filter: blur(0) saturate(1);\n transition-timing-function: ease-out;\n transition-duration: var(--controls-transition-duration);\n transition-property: opacity, backdrop-filter;\n}\n\n.media-default-skin .media-error ~ .media-overlay {\n transition-delay: var(--error-dialog-transition-delay);\n transition-duration: var(--error-dialog-transition-duration);\n}\n\n.media-default-skin .media-controls[data-visible] ~ .media-overlay,\n.media-default-skin .media-error[data-open] ~ .media-overlay {\n opacity: 1;\n}\n\n.media-default-skin .media-buffering-indicator[data-visible] ~ .media-overlay {\n background: oklch(0 0 0 / 0.35);\n opacity: 1;\n backdrop-filter: blur(8px);\n}\n\n.media-default-skin .media-error[data-open] ~ .media-overlay {\n backdrop-filter: blur(16px) saturate(1.5);\n}\n\n.media-default-skin .media-buffering-indicator {\n position: absolute;\n inset: 0;\n z-index: 10;\n display: none;\n place-content: center;\n color: oklch(1 0 0);\n pointer-events: none;\n\n &:not([data-visible]) {\n --media-spinner-animation: none;\n }\n\n &[data-visible] {\n display: grid;\n }\n\n @media (prefers-reduced-motion: reduce) {\n --media-spinner-animation: none;\n }\n}\n\n.media-default-skin .media-error {\n outline: none;\n}\n\n.media-default-skin .media-error:not([data-open]) {\n display: none;\n}\n\n.media-default-skin .media-error__title {\n font-weight: 600;\n line-height: 1.25;\n}\n\n.media-default-skin .media-error__description {\n overflow-wrap: anywhere;\n opacity: 0.7;\n}\n\n.media-default-skin .media-error__actions {\n display: flex;\n gap: calc(var(--spacing) * 2);\n\n > * {\n flex: 1;\n }\n}\n\n.media-default-skin .media-error[data-open] ~ .media-controls * {\n visibility: hidden;\n}\n\n.media-default-skin .media-controls {\n --media-popover-side-offset: calc(var(--spacing) * (var(--base-side-offset, 2) + 1));\n --media-tooltip-side-offset: var(--media-popover-side-offset);\n --media-popover-boundary-offset: calc(var(--spacing) * var(--base-boundary-offset, 2));\n --media-tooltip-boundary-offset: var(--media-popover-boundary-offset);\n\n display: flex;\n align-items: center;\n padding: calc(var(--spacing) * 1);\n container: media-controls / inline-size;\n text-shadow: 0 1px 0 var(--shadow-current-color);\n border-radius: calc(Infinity * 1px);\n}\n\n.media-default-skin .media-time-controls {\n display: flex;\n flex: 1;\n gap: calc(var(--spacing) * 2.5);\n align-items: center;\n container: media-time-controls / inline-size;\n\n > .media-time:last-child {\n @container media-time-controls (width < 16rem) {\n display: none;\n }\n }\n}\n\n.media-default-skin .media-time {\n font-variant-numeric: tabular-nums;\n}\n\n.media-default-skin .media-time[role=\"button\"] {\n cursor: pointer;\n outline: 2px solid transparent;\n outline-offset: -2px;\n border-radius: calc(var(--spacing) * 1);\n transition-timing-function: ease-out;\n transition-duration: 100ms;\n transition-property: outline-color, outline-offset;\n\n &:focus-visible {\n outline-color: var(--focus-ring-color);\n outline-offset: 2px;\n }\n}\n\n/* Base button */\n.media-default-skin .media-button {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n height: calc(var(--spacing) * 9);\n min-height: 0;\n padding: calc(var(--spacing) * 2) calc(var(--spacing) * 4);\n text-align: center;\n touch-action: manipulation;\n cursor: pointer;\n user-select: none;\n outline: 2px solid transparent;\n outline-offset: -2px;\n border: none;\n border-radius: calc(Infinity * 1px);\n transition-timing-function: ease-out;\n transition-duration: 150ms;\n transition-property: background-color, color, outline-offset, scale;\n /* Fix weird jumping when clicking on the buttons in Safari. */\n will-change: scale;\n\n &:focus-visible {\n outline-color: var(--focus-ring-color);\n outline-offset: 2px;\n }\n\n &:active:not([aria-disabled=\"true\"]) {\n scale: 0.97;\n }\n\n &[aria-disabled=\"true\"] {\n cursor: not-allowed;\n opacity: 0.5;\n }\n}\n\n/* Primary button variant */\n.media-default-skin .media-button--primary {\n font-weight: 500;\n color: var(--accent-contrast-color);\n text-shadow: none;\n background: var(--accent-color);\n}\n\n/* Subtle button variant */\n.media-default-skin .media-button--subtle {\n color: inherit;\n text-shadow: inherit;\n background: transparent;\n\n &:not([aria-disabled=\"true\"]) {\n &:hover,\n &:focus-visible,\n &[aria-expanded=\"true\"] {\n color: var(--accent-text-color);\n text-decoration: none;\n background-color: var(--accent-background-color);\n }\n }\n}\n\n/* Icon button variant */\n.media-default-skin .media-button--icon {\n display: grid;\n aspect-ratio: 1;\n padding: 0;\n\n &:active:not([aria-disabled=\"true\"]) {\n scale: 0.97;\n }\n\n .media-icon__container {\n display: grid;\n }\n\n .media-icon {\n grid-area: 1 / 1;\n filter: drop-shadow(0 1px 0 var(--shadow-current-color));\n transition-timing-function: ease-out;\n transition-duration: 150ms;\n transition-property: opacity, scale;\n }\n}\n\n/* Seek button */\n.media-default-skin .media-button--seek {\n .media-icon__label {\n position: absolute;\n right: -1px;\n bottom: -3px;\n font-size: 0.715em; /* 10px */\n font-weight: 500;\n font-variant-numeric: tabular-nums;\n letter-spacing: -0.05em;\n }\n\n &:has(.media-icon--flipped) .media-icon__label {\n right: unset;\n left: -1px;\n }\n}\n\n/* Playback rate button */\n.media-default-skin .media-button--playback-rate {\n padding: 0;\n font-variant-numeric: tabular-nums;\n\n &::after {\n width: 4ch;\n content: attr(data-rate) \"\\00D7\";\n }\n\n &[data-inline-rate-label]::after {\n content: none;\n }\n}\n\n/* Settings button */\n.media-default-skin .media-button--settings {\n .media-icon--settings {\n transition: transform 150ms ease-in-out;\n\n @media (prefers-reduced-motion: reduce) {\n transition-duration: 0ms;\n }\n }\n\n &[aria-expanded=\"true\"] .media-icon--settings {\n transform: rotate(90deg);\n }\n}\n\n/* Live button — wide pill button with a status dot (gray → red at the live\n edge) rendered via ::before, and \"LIVE\" text rendered as the button's own\n text content. */\n.media-default-skin .media-button--live {\n display: inline-flex;\n gap: calc(var(--spacing) * 1.5);\n align-items: center;\n width: auto;\n aspect-ratio: auto;\n padding: calc(var(--spacing) * 2) calc(var(--spacing) * 3);\n font-size: var(--font-size-small);\n font-weight: 600;\n line-height: 1;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n\n &::before {\n display: inline-block;\n flex-shrink: 0;\n width: calc(var(--spacing) * 2);\n height: calc(var(--spacing) * 2);\n content: \"\";\n background-color: oklch(from currentColor l c h / 0.4);\n border-radius: 50%;\n transition: background-color 150ms ease-out;\n }\n\n &[data-live-edge]::before {\n background-color: oklch(0.65 0.22 27);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .media-default-skin .media-button {\n scale: 1;\n transition-property: background-color, color, outline-offset;\n will-change: auto;\n }\n}\n\n.media-default-skin .media-button-group {\n display: flex;\n gap: 1px;\n align-items: center;\n}\n\n.media-default-skin .media-badge {\n padding: calc(var(--spacing) * 0.5) calc(var(--spacing) * 1.5);\n font-size: var(--font-size-small);\n font-weight: 500;\n line-height: 1;\n color: oklch(from currentColor l c h / 0.85);\n white-space: nowrap;\n background-color: oklch(from currentColor l c h / 0.1);\n border-radius: calc(Infinity * 1px);\n}\n\n.media-default-skin .media-icon__container {\n position: relative;\n}\n\n.media-default-skin .media-icon {\n flex-shrink: 0;\n width: var(--media-icon-size);\n height: var(--media-icon-size);\n}\n.media-default-skin .media-icon--flipped {\n scale: -1 1;\n}\n\n.media-default-skin media-poster,\n.media-default-skin > img {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n transition: opacity 0.25s;\n}\n.media-default-skin media-poster:not([data-visible]),\n.media-default-skin > img:not([data-visible]),\n.media-default-skin > img[data-visible]:not([data-loaded]) {\n opacity: 0;\n}\n.media-default-skin media-poster ::slotted(img),\n.media-default-skin media-poster img {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: var(--media-object-fit, contain);\n object-position: var(--media-object-position, center);\n border-radius: var(--container-border-radius);\n}\n.media-default-skin > img {\n object-fit: var(--media-object-fit, contain);\n object-position: var(--media-object-position, center);\n border-radius: inherit;\n}\n\n/* Blurred placeholder: HTML path targets media-poster::before, React path targets the skin container::before */\n.media-default-skin media-poster::before,\n.media-default-skin::before {\n position: absolute;\n inset: 0;\n pointer-events: none;\n content: \"\";\n background-image: var(--media-poster-placeholder, none);\n background-repeat: no-repeat;\n background-position: var(--media-object-position, center);\n background-size: var(--media-object-fit, contain);\n filter: blur(var(--media-poster-placeholder-blur, 20px));\n}\n\n/* React path: hidden by default, transitions in while poster loads */\n.media-default-skin::before {\n opacity: 0;\n transition: opacity 0.25s;\n}\n/* Show placeholder while the poster is visible but not yet loaded */\n.media-default-skin:has(img[data-visible]:not([data-loaded]))::before {\n opacity: 1;\n}\n\n.media-default-skin:fullscreen media-poster ::slotted(img),\n.media-default-skin:fullscreen media-poster img,\n.media-default-skin:fullscreen > img {\n object-fit: contain;\n}\n\n.media-default-skin .media-thumbnail {\n position: relative;\n pointer-events: none;\n background-color: oklch(0 0 0 / 0.9);\n border-radius: calc(var(--spacing) * 3);\n\n .media-thumbnail__image {\n position: relative;\n display: block;\n max-width: var(--thumbnail-max-width);\n max-height: var(--max-height);\n overflow: clip;\n border-radius: inherit;\n\n &::after {\n position: absolute;\n inset: 0;\n content: \"\";\n background-image: linear-gradient(to top, oklch(0 0 0 / 0.5), oklch(0 0 0 / 0.1), oklch(0 0 0 / 0));\n border-radius: inherit;\n }\n }\n\n .media-thumbnail__spinner {\n position: absolute;\n top: 50%;\n left: 50%;\n opacity: 0;\n translate: -50% -50%;\n }\n\n .media-thumbnail__image,\n .media-thumbnail__spinner {\n transition: opacity 150ms ease-out;\n }\n\n &:not(:has(.media-thumbnail__image[data-loading])) {\n .media-thumbnail__spinner {\n --media-spinner-animation: none;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n --media-spinner-animation: none;\n }\n\n &:has(.media-thumbnail__image[data-loading]) {\n width: var(--thumbnail-max-width);\n max-width: 100%;\n aspect-ratio: 16 / 9;\n overflow: hidden;\n\n .media-thumbnail__image {\n opacity: 0;\n }\n .media-thumbnail__spinner {\n opacity: 1;\n }\n }\n}\n\n.media-default-skin .media-slider {\n --track-size: calc(var(--spacing) * 1);\n --track-highlighted-size: calc(var(--spacing) * 1.75);\n --track-border-radius: 99px;\n --thumb-size: calc(var(--spacing) * 2.5);\n --thumb-active-size: calc(var(--spacing) * 3);\n --chapter-gap: calc(var(--spacing) * 1);\n --chapter-inset-start: calc(var(--chapter-gap) / 2);\n --chapter-inset-end: calc(var(--chapter-gap) / 2);\n\n position: relative;\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n outline: none;\n\n &[data-orientation=\"horizontal\"] {\n width: var(--slider-width, 100%);\n min-width: calc(var(--spacing) * 20);\n height: var(--slider-height, calc(var(--spacing) * 8));\n }\n &[data-orientation=\"vertical\"] {\n width: var(--slider-width, calc(var(--spacing) * 8));\n height: var(--slider-height, calc(var(--spacing) * 20));\n }\n\n /* Track */\n .media-slider__track {\n position: relative;\n overflow: hidden;\n user-select: none;\n background-color: oklch(from currentColor l c h / 0.2);\n border-radius: var(--track-border-radius);\n isolation: isolate;\n\n &[data-orientation=\"horizontal\"] {\n width: 100%;\n height: var(--track-size);\n }\n &[data-orientation=\"vertical\"] {\n width: var(--track-size);\n height: 100%;\n }\n }\n\n /* Shared track fills */\n .media-slider__buffer,\n .media-slider__fill {\n position: absolute;\n pointer-events: none;\n border-radius: inherit;\n\n &[data-orientation=\"horizontal\"] {\n inset-block: 0;\n left: 0;\n width: 100%;\n transition-property: clip-path;\n }\n &[data-orientation=\"vertical\"] {\n inset-inline: 0;\n bottom: 0;\n height: 100%;\n transition-property: clip-path;\n }\n }\n\n /* Buffer */\n .media-slider__buffer {\n background-color: oklch(from currentColor l c h / 0.2);\n\n &[data-orientation=\"horizontal\"] {\n clip-path: inset(0 calc(100% - var(--media-slider-buffer)) 0 0 round var(--track-border-radius));\n }\n &[data-orientation=\"vertical\"] {\n clip-path: inset(calc(100% - var(--media-slider-buffer)) 0 0 0 round var(--track-border-radius));\n }\n }\n\n /* Fill */\n .media-slider__fill {\n background-color: var(--accent-color);\n\n &[data-orientation=\"horizontal\"] {\n clip-path: inset(0 calc(100% - var(--media-slider-fill)) 0 0 round var(--track-border-radius));\n }\n &[data-orientation=\"vertical\"] {\n clip-path: inset(calc(100% - var(--media-slider-fill)) 0 0 0 round var(--track-border-radius));\n }\n }\n\n /* Chapters */\n .media-slider__chapters {\n position: relative;\n display: flex;\n flex: 1;\n align-items: center;\n min-width: 0;\n min-height: 0;\n border-radius: inherit;\n\n &[data-orientation=\"horizontal\"] {\n width: 100%;\n height: 100%;\n }\n &[data-orientation=\"vertical\"] {\n flex-direction: column-reverse;\n width: 100%;\n height: 100%;\n }\n }\n\n .media-slider__chapter {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 0;\n min-height: 0;\n border-radius: inherit;\n\n &:first-child {\n --chapter-inset-start: 0px;\n }\n &:last-child {\n --chapter-inset-end: 0px;\n }\n\n .media-slider__chapter-track {\n border-radius: inherit;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: 200ms ease-out;\n transition-property: height, width;\n }\n }\n\n &[data-orientation=\"horizontal\"] {\n clip-path: inset(0 calc(100% - var(--media-slider-chapter-end)) 0 var(--media-slider-chapter-start));\n\n .media-slider__chapter-track {\n height: var(--track-size);\n clip-path: inset(\n 0 calc(100% - var(--media-slider-chapter-end) + var(--chapter-inset-end)) 0\n calc(var(--media-slider-chapter-start) + var(--chapter-inset-start)) round var(--track-border-radius)\n );\n }\n\n &[data-highlighted] .media-slider__chapter-track {\n height: var(--track-highlighted-size);\n }\n }\n\n &[data-orientation=\"vertical\"] {\n clip-path: inset(calc(100% - var(--media-slider-chapter-end)) 0 var(--media-slider-chapter-start) 0);\n\n .media-slider__chapter-track {\n width: var(--track-size);\n clip-path: inset(\n calc(100% - var(--media-slider-chapter-end) + var(--chapter-inset-end)) 0\n calc(var(--media-slider-chapter-start) + var(--chapter-inset-start)) 0 round var(--track-border-radius)\n );\n }\n\n &[data-highlighted] .media-slider__chapter-track {\n width: var(--track-highlighted-size);\n }\n }\n }\n\n /* Dragging — thumb and fill follow the pointer position */\n &[data-dragging] {\n .media-slider__thumb[data-orientation=\"horizontal\"] {\n left: var(--media-slider-pointer);\n }\n .media-slider__thumb[data-orientation=\"vertical\"] {\n top: calc(100% - var(--media-slider-pointer));\n }\n .media-slider__fill[data-orientation=\"horizontal\"] {\n clip-path: inset(0 calc(100% - var(--media-slider-pointer)) 0 0 round var(--track-border-radius));\n }\n .media-slider__fill[data-orientation=\"vertical\"] {\n clip-path: inset(calc(100% - var(--media-slider-pointer)) 0 0 0 round var(--track-border-radius));\n }\n }\n\n @media (prefers-reduced-motion: no-preference) {\n .media-slider__thumb {\n transition-property: opacity, height, width, outline-offset, left, top;\n }\n .media-slider__fill {\n transition-timing-function: linear;\n transition-duration: 200ms;\n }\n .media-slider__buffer {\n transition-timing-function: ease-out;\n transition-duration: 250ms;\n }\n }\n\n &[data-dragging],\n &[data-seeking] {\n .media-slider__thumb,\n .media-slider__fill,\n .media-slider__buffer {\n transition-duration: 0ms;\n }\n }\n\n /* Thumb */\n .media-slider__thumb {\n position: absolute;\n z-index: 10;\n width: var(--thumb-size);\n height: var(--thumb-size);\n user-select: none;\n outline: 4px solid transparent;\n outline-offset: -4px;\n background-color: currentColor;\n border-radius: calc(Infinity * 1px);\n box-shadow:\n 0 0 0 1px var(--shadow-current-color, oklch(0 0 0 / 0.1)),\n 0 1px 3px 0 oklch(0 0 0 / 0.35),\n 0 1px 2px -1px oklch(0 0 0 / 0.35);\n opacity: 0;\n translate: -50% -50%;\n transition-timing-function: ease-out;\n transition-duration: 150ms;\n transition-property: opacity, height, width, outline-offset;\n\n &[data-orientation=\"horizontal\"] {\n top: 50%;\n left: var(--media-slider-fill);\n }\n &[data-orientation=\"vertical\"] {\n top: calc(100% - var(--media-slider-fill));\n left: 50%;\n }\n\n &:focus-visible {\n outline-color: oklch(from currentColor l c h / 0.15);\n outline-offset: 0;\n opacity: 1;\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n outline-color: oklch(from currentColor l c h / 0.15);\n outline-offset: 0;\n }\n }\n\n &::after {\n position: absolute;\n inset: -4px;\n content: \"\";\n border-radius: inherit;\n box-shadow: 0 0 0 2px currentColor;\n transition-timing-function: ease-out;\n transition-duration: 150ms;\n transition-property: opacity, scale;\n }\n\n &:not(:focus-visible)::after {\n opacity: 0;\n scale: 0.5;\n }\n\n &.media-slider__thumb--persistent {\n width: var(--thumb-active-size);\n height: var(--thumb-active-size);\n opacity: 1;\n }\n }\n\n &:active .media-slider__thumb,\n &:focus-within .media-slider__thumb {\n width: var(--thumb-active-size);\n height: var(--thumb-active-size);\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover .media-slider__thumb {\n opacity: 1;\n }\n }\n\n /* Preview */\n .media-slider__preview {\n --max-width: min(calc(var(--spacing) * 48), 100cqi);\n --max-height: calc(var(--spacing) * 32);\n\n min-width: var(--max-width);\n height: calc(var(--spacing) * 1);\n\n .media-slider__thumbnail,\n .media-slider__value {\n position: absolute;\n left: 50%;\n max-width: var(--max-width);\n opacity: 0;\n filter: blur(8px);\n transform-origin: bottom;\n scale: 0.8;\n translate: -50% calc(var(--spacing) * 2);\n transition-timing-function: ease-out;\n transition-duration: 150ms;\n }\n\n .media-slider__thumbnail {\n --thumbnail-max-width: var(--max-width);\n bottom: calc(100% + (var(--spacing) * 9));\n }\n\n .media-slider__value {\n bottom: calc(100% + (var(--spacing) * 10.5));\n display: flex;\n flex-direction: column;\n align-items: center;\n text-shadow: 0 1px 0 var(--shadow-current-color);\n }\n\n .media-slider__chapter-title {\n min-width: 0;\n max-width: var(--max-width);\n padding-inline: calc(var(--spacing) * 6);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &:empty {\n display: none;\n }\n }\n\n &::before {\n position: absolute;\n top: 50%;\n left: 50%;\n z-index: 1;\n width: calc(var(--spacing) * 1);\n height: calc(var(--spacing) * 1);\n pointer-events: none;\n content: \"\";\n background-color: currentColor;\n border-radius: 100%;\n box-shadow:\n 0 0 0 1px var(--shadow-current-color, oklch(0 0 0 / 0.15)),\n 0 1px 2px 0 oklch(0 0 0 / 0.35);\n opacity: 0;\n scale: 0.5;\n translate: -50% -50%;\n transition-timing-function: ease-out;\n transition-duration: 200ms;\n transition-property: opacity, scale;\n }\n }\n\n &:is([data-pointing], :has(:focus-visible))\n .media-slider__preview\n :is(.media-slider__value, .media-slider__thumbnail),\n .media-slider__preview[data-pointing]:not([data-dragging])::before {\n opacity: 1;\n filter: blur(0);\n scale: 1;\n }\n}\n\n.media-default-skin {\n --popup-transition:\n opacity var(--popup-transition-timing-function) var(--popup-transition-duration),\n filter var(--popup-transition-timing-function) var(--popup-transition-duration),\n transform var(--popup-transition-timing-function) var(--popup-transition-duration),\n scale var(--popup-transition-timing-function) var(--popup-transition-duration);\n}\n\n.media-default-skin .media-popover,\n.media-default-skin .media-tooltip {\n --popup-translate-distance: calc(0.5 * var(--scale-unit));\n margin: 0;\n overflow: visible;\n color: inherit;\n border: 0;\n transition: var(--popup-transition);\n\n &[data-starting-style],\n &[data-ending-style] {\n opacity: 0;\n filter: blur(4px);\n /* We have to use transform here for translate as the translate property is used for positioning by core. */\n transform: translate(var(--popup-translate-x-distance, 0), var(--popup-translate-y-distance, 0));\n scale: 0.95;\n }\n\n &[data-ending-style] {\n transform: none;\n /* Speed up the exit transition. */\n transition-duration: max(0ms, calc(var(--popup-transition-duration) - 50ms));\n }\n\n &[data-side=\"top\"] {\n --popup-translate-y-distance: var(--popup-translate-distance);\n transform-origin: bottom;\n }\n &[data-side=\"bottom\"] {\n --popup-translate-y-distance: calc(var(--popup-translate-distance) * -1);\n transform-origin: top;\n }\n &[data-side=\"left\"] {\n --popup-translate-x-distance: var(--popup-translate-distance);\n transform-origin: right;\n }\n &[data-side=\"right\"] {\n --popup-translate-x-distance: calc(var(--popup-translate-distance) * -1);\n transform-origin: left;\n }\n\n /* Safe area between trigger and popup */\n &::before {\n position: absolute;\n pointer-events: inherit;\n content: \"\";\n }\n\n &[data-side=\"top\"]::before,\n &[data-side=\"bottom\"]::before {\n inset-inline: 0;\n width: 100%;\n }\n &[data-side=\"top\"]::before {\n top: 100%;\n }\n &[data-side=\"bottom\"]::before {\n bottom: 100%;\n }\n\n &[data-side=\"left\"]::before,\n &[data-side=\"right\"]::before {\n inset-block: 0;\n height: 100%;\n }\n &[data-side=\"left\"]::before {\n left: 100%;\n }\n &[data-side=\"right\"]::before {\n right: 100%;\n }\n}\n\n.media-default-skin .media-popover {\n &[data-side=\"top\"]::before,\n &[data-side=\"bottom\"]::before {\n height: var(--media-popover-side-offset);\n }\n &[data-side=\"left\"]::before,\n &[data-side=\"right\"]::before {\n width: var(--media-popover-side-offset);\n }\n}\n.media-default-skin .media-popover--volume {\n padding: calc(var(--spacing) * 3) 0;\n border-radius: calc(Infinity * 1px);\n\n &:has(media-volume-slider[data-hidden]) {\n display: none;\n }\n}\n\n.media-default-skin .media-tooltip {\n padding: calc(var(--spacing) * 1) calc(var(--spacing) * 2.5);\n font-size: var(--font-size-base);\n white-space: nowrap;\n border-radius: calc(Infinity * 1px);\n\n /* `display: flex` must not apply while closed — it overrides UA `[popover]` hiding. */\n &[data-open] {\n display: flex;\n column-gap: calc(var(--spacing) * 1);\n align-items: center;\n }\n\n &[data-side=\"top\"]::before,\n &[data-side=\"bottom\"]::before {\n height: var(--media-tooltip-side-offset);\n }\n &[data-side=\"left\"]::before,\n &[data-side=\"right\"]::before {\n width: var(--media-tooltip-side-offset);\n }\n\n .media-tooltip__kbd {\n min-width: 1.5em;\n padding: 0.1em;\n font-family: inherit;\n font-size: var(--font-size-small);\n font-weight: 600;\n line-height: 1.25;\n text-align: center;\n background-color: oklch(from currentColor l c h / 0.3);\n border-radius: calc(var(--spacing) * 1);\n }\n}\n\n.media-default-skin .media-menu {\n --menu-transition-duration: 250ms;\n --menu-max-height: calc(var(--spacing) * 56);\n --menu-padding: calc(var(--spacing) * 1);\n --menu-border-radius: calc(var(--spacing) * 3);\n --menu-item-border-radius: calc(var(--menu-border-radius) - var(--menu-padding));\n box-sizing: border-box;\n min-width: max-content;\n max-width: var(--media-popover-available-width, none);\n max-height: min(var(--media-popover-available-height, var(--menu-max-height)), var(--menu-max-height));\n padding: var(--menu-padding);\n overflow: auto;\n overscroll-behavior: none;\n border-radius: var(--menu-border-radius);\n\n @media (prefers-reduced-motion: reduce) {\n --menu-transition-duration: 0ms;\n }\n\n & > .media-menu__panel {\n position: absolute;\n inset-inline: 0;\n top: 0;\n z-index: 10;\n max-height: inherit;\n padding: var(--menu-padding);\n overflow: auto;\n overscroll-behavior: none;\n outline: none;\n translate: 0 0;\n transition-timing-function: ease-out;\n transition-duration: var(--menu-transition-duration);\n transition-property: translate, filter;\n will-change: translate, filter;\n\n &:where([data-starting-style], [data-ending-style]) {\n overflow: hidden;\n pointer-events: none;\n filter: blur(8px);\n translate: 100% 0;\n }\n }\n\n .media-menu__separator {\n margin-block: calc(var(--spacing) * 1);\n border-bottom: 1px solid oklch(0 0 0 / 0.1);\n box-shadow: 0 1px 0 0 oklch(1 0 0 / 0.075);\n }\n\n .media-menu__group {\n anchor-scope: --menu-item-highlight-anchor;\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 0.5);\n\n @supports (top: anchor(top)) {\n &::before {\n position: absolute;\n position-anchor: --menu-item-highlight-anchor;\n inset: anchor(inside);\n /* Firefox treats the moving highlight as a content shift and re-scrolls\n the menu while hovering. Exclude it from scroll anchoring. */\n overflow-anchor: none;\n pointer-events: none;\n content: \"\";\n background-color: var(--accent-background-color);\n border-radius: var(--menu-item-border-radius);\n transition: inset 100ms ease-in-out;\n }\n\n &:has([data-highlighted=\"\"])::before {\n transition-duration: 0ms;\n }\n }\n }\n\n .media-menu__item,\n .media-menu__back {\n position: relative;\n display: flex;\n gap: calc(var(--spacing) * 1.5);\n align-items: center;\n padding: calc(var(--spacing) * 1.5) calc(var(--spacing) * 2);\n text-align: left;\n text-shadow: 0 1px 0 var(--shadow-current-color);\n cursor: pointer;\n user-select: none;\n outline: 2px solid transparent;\n outline-offset: -2px;\n border-radius: var(--menu-item-border-radius);\n transition: background-color, color;\n transition-timing-function: ease-in-out;\n transition-duration: 100ms;\n\n .media-icon {\n flex-shrink: 0;\n color: oklch(from currentColor l c h / 0.65);\n filter: drop-shadow(0 1px 0 var(--shadow-current-color));\n }\n\n &:focus-visible {\n outline-color: var(--focus-ring-color);\n outline-offset: 2px;\n }\n\n &:hover,\n &[data-highlighted] {\n color: var(--accent-text-color);\n background-color: var(--accent-background-color);\n\n .media-icon {\n color: inherit;\n }\n }\n\n @supports (top: anchor(top)) {\n transition-duration: 50ms;\n\n &:hover,\n &[data-highlighted] {\n transition-duration: 200ms;\n }\n }\n }\n\n .media-menu__indicator {\n flex-shrink: 0;\n margin-right: calc(var(--spacing) * -1);\n margin-left: auto;\n opacity: 0;\n\n .media-icon {\n filter: drop-shadow(0 1px 0 var(--shadow-current-color));\n }\n }\n\n .media-menu__item {\n justify-content: space-between;\n font-variant-numeric: tabular-nums;\n color: inherit;\n\n &[aria-disabled=\"true\"] {\n pointer-events: none;\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n &[aria-checked=\"true\"] .media-menu__indicator {\n opacity: 1;\n }\n\n &[data-availability=\"unavailable\"],\n &[data-availability=\"unsupported\"] {\n display: none;\n }\n\n &[data-highlighted] {\n @supports (top: anchor(top)) {\n anchor-name: --menu-item-highlight-anchor;\n background-color: transparent;\n }\n }\n }\n\n .media-menu__tier {\n padding-top: 1px;\n padding-left: calc(var(--spacing) * 0.5);\n font-size: var(--font-size-tiny);\n font-weight: 600;\n line-height: 1;\n color: oklch(from currentColor l c h / 0.7);\n }\n\n .media-menu__back {\n width: 100%;\n margin-bottom: calc(var(--spacing) * 0.5);\n }\n\n .media-menu__hint {\n display: inline-flex;\n gap: calc(var(--spacing) * 1);\n align-items: center;\n min-width: 0;\n padding-left: calc(var(--spacing) * 2);\n margin-left: auto;\n color: oklch(from currentColor l c h / 0.65);\n }\n\n .media-menu__hint-label {\n max-width: calc(var(--spacing) * 24);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .media-menu__chevron {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n\n /* Settings menu */\n &.media-menu--settings {\n width: var(--media-menu-width);\n min-width: calc(var(--spacing) * 48);\n height: var(--media-menu-height);\n overflow: hidden;\n /* Only the menu size changes between panels. */\n transition:\n var(--popup-transition),\n width var(--popup-transition-timing-function) var(--menu-transition-duration),\n height var(--popup-transition-timing-function) var(--menu-transition-duration);\n\n & > :not([data-submenu]) {\n translate: 0 0;\n transition:\n translate var(--menu-transition-duration) ease-out,\n filter var(--menu-transition-duration) ease-out;\n will-change: translate, filter;\n }\n\n &[data-submenu-expanded=\"true\"] > :not([data-submenu]) {\n filter: blur(8px);\n translate: -100% 0;\n }\n\n /* WebKit can restart the covered-content transition while the\n anchor-positioned highlight remains active. */\n &[data-submenu-expanded] > :not([data-submenu])::before {\n display: none;\n }\n\n /* Don't transition size on open/close. */\n &[data-starting-style],\n &[data-ending-style] {\n transition: var(--popup-transition);\n }\n }\n}\n\n.media-default-skin {\n --media-caption-track-duration: var(--controls-transition-duration);\n --media-caption-track-delay: 25ms;\n --media-caption-track-y: calc(var(--spacing) * -2);\n\n &:has(.media-controls[data-visible]) {\n --media-caption-track-y: calc(var(--spacing) * -14);\n }\n}\n\n.media-default-skin video::-webkit-media-text-track-container {\n z-index: 1;\n font-family: inherit;\n scale: 0.98;\n translate: 0 var(--media-caption-track-y);\n transition: translate var(--media-caption-track-duration) ease-out;\n transition-delay: var(--media-caption-track-delay);\n}\n\n.media-default-skin .media-input-indicator-overlay {\n position: absolute;\n inset: 0;\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n align-items: center;\n justify-items: center;\n color: oklch(1 0 0);\n pointer-events: none;\n}\n\n.media-default-skin {\n .media-volume-indicator,\n .media-status-indicator--state {\n --surface-background-color: oklch(0 0 0 / 0.25);\n position: absolute;\n top: calc(var(--spacing) * 3);\n font-weight: 500;\n color: inherit;\n pointer-events: none;\n border-radius: calc(Infinity * 1px);\n transform-origin: top center;\n transition-timing-function: ease-out;\n transition-duration: 100ms;\n\n .media-volume-indicator__content,\n .media-status-indicator__content {\n display: flex;\n gap: calc(var(--spacing) * 2);\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: calc(var(--spacing) * 1) calc(var(--spacing) * 2.5);\n\n * {\n mix-blend-mode: difference;\n }\n }\n\n .media-icon {\n display: none;\n flex-shrink: 0;\n }\n\n .media-volume-indicator__value,\n .media-status-indicator__value {\n margin-left: auto;\n }\n\n @media (pointer: coarse) {\n transition-property: scale, translate, opacity;\n will-change: scale, translate, opacity;\n }\n\n @media (pointer: fine) and (prefers-reduced-motion: no-preference) {\n transition-property: scale, translate, filter, opacity;\n will-change: scale, translate, filter, opacity;\n }\n\n @media (prefers-reduced-transparency: reduce) or (prefers-contrast: more) {\n --surface-background-color: oklch(0 0 0);\n }\n\n &[data-starting-style],\n &[data-ending-style] {\n opacity: 0;\n transition-timing-function: ease-in;\n transition-duration: 250ms;\n\n @media (pointer: fine) and (prefers-reduced-motion: no-preference) {\n filter: blur(8px);\n scale: 0.9;\n }\n }\n\n &[data-ending-style] {\n @media (prefers-reduced-motion: no-preference) {\n translate: 0 -25%;\n }\n }\n }\n\n .media-seek-indicator,\n .media-status-indicator--playback {\n display: grid;\n grid-row: 1;\n grid-column: 2;\n place-content: center;\n padding: calc(var(--spacing) * 4);\n text-align: center;\n }\n}\n\n.media-default-skin .media-volume-indicator {\n width: min(80%, calc(var(--spacing) * 48));\n transform: translateX(0);\n\n .media-volume-indicator__content {\n background-image: linear-gradient(currentColor, currentColor);\n background-repeat: no-repeat;\n background-position: left;\n background-size: var(--media-volume-fill, 0%) 100%;\n border-radius: inherit;\n transition: background-size 200ms linear;\n }\n\n &[data-level=\"high\"] .media-icon--volume-high,\n &[data-level=\"low\"] .media-icon--volume-low,\n &[data-level=\"off\"] .media-icon--volume-off {\n display: block;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n &[data-min]:not([data-starting-style], [data-ending-style]),\n &[data-max]:not([data-starting-style], [data-ending-style]) {\n transform: translateX(0.25px);\n transition: transform 300ms linear(0, -24 20%, 16 40%, -8 60%, 4 80%, 1);\n }\n }\n}\n\n.media-default-skin .media-status-indicator--state {\n &[data-status=\"captions-on\"] .media-icon--captions-on,\n &[data-status=\"captions-off\"] .media-icon--captions-off,\n &[data-status=\"fullscreen\"] .media-icon--fullscreen-enter,\n &[data-status=\"exit-fullscreen\"] .media-icon--fullscreen-exit,\n &[data-status=\"pip\"] .media-icon--pip-enter,\n &[data-status=\"exit-pip\"] .media-icon--pip-exit {\n display: block;\n }\n}\n\n.media-default-skin .media-status-indicator--playback {\n background: oklch(0 0 0 / 0.35);\n border-radius: 100%;\n backdrop-filter: blur(8px);\n transition-timing-function: ease-out;\n transition-duration: 200ms;\n transition-property: opacity, scale;\n\n .media-icon {\n grid-area: 1 / 1;\n width: calc(var(--media-icon-size) * 1.5);\n height: calc(var(--media-icon-size) * 1.5);\n opacity: 0;\n scale: 0;\n transition-timing-function: ease-out;\n transition-duration: 150ms;\n transition-property: opacity, scale;\n\n &.media-icon--play {\n translate: 1px 0;\n }\n }\n\n &[data-status=\"pause\"] .media-icon--pause,\n &[data-status=\"play\"] .media-icon--play {\n opacity: 1;\n scale: 1;\n }\n\n &[data-starting-style],\n &[data-ending-style] {\n opacity: 0;\n scale: 0.85;\n }\n\n &[data-ending-style] {\n transition-timing-function: ease-in;\n transition-duration: 100ms;\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition-duration: 50ms;\n transition-property: opacity;\n\n &[data-starting-style],\n &[data-ending-style],\n .media-icon {\n scale: 1;\n }\n\n .media-icon {\n transition-duration: 50ms;\n transition-property: opacity;\n }\n }\n}\n\n.media-default-skin .media-seek-indicator {\n gap: calc(var(--spacing) * 1);\n\n .media-seek-indicator__value {\n font-variant-numeric: tabular-nums;\n }\n\n @container media-root (width > 24rem) {\n padding: calc(var(--spacing) * 6);\n }\n\n &[data-direction=\"backward\"] {\n grid-column: 1;\n justify-self: left;\n }\n\n &[data-direction=\"forward\"] {\n grid-column: 3;\n justify-self: right;\n }\n\n .media-icon--seek {\n display: block;\n width: calc(var(--media-icon-size) * 1.5);\n height: calc(var(--media-icon-size) * 1.5);\n }\n\n &[data-direction=\"backward\"] .media-icon--seek {\n scale: -1 1;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n .media-icon--seek {\n transition-timing-function: ease-in-out;\n transition-duration: 200ms;\n transition-property: translate, opacity;\n }\n\n &[data-starting-style] .media-icon--seek,\n &[data-ending-style] .media-icon--seek {\n opacity: 0;\n }\n\n &[data-direction=\"forward\"][data-starting-style] .media-icon--seek {\n translate: -60% 0;\n }\n\n &[data-direction=\"backward\"][data-starting-style] .media-icon--seek {\n translate: 60% 0;\n }\n }\n}\n\n/* ==========================================================================\n Icon State Visibility for Video Skins\n\n Data-attribute-driven visibility rules for multi-state icon buttons shared\n by the HTML and React skins.\n ========================================================================== */\n\n/* --- All icons hidden by default --- */\n\n.media-button--play .media-icon,\n.media-button--mute .media-icon,\n.media-button--fullscreen .media-icon,\n.media-button--pip .media-icon,\n.media-button--cast .media-icon,\n.media-button--airplay .media-icon,\n.media-button--captions .media-icon {\n opacity: 0;\n}\n.media-button--play .media-icon {\n scale: 0;\n}\n\n/* --- Active icon per state --- */\n\n/* Play: ended → restart */\n.media-button--play[data-ended] .media-icon--restart,\n/* Play: paused or not yet started (not ended) → play */\n.media-button--play:not([data-ended])[data-paused] .media-icon--play,\n.media-button--play:not([data-ended]):not([data-started]) .media-icon--play,\n/* Play: started and not paused/ended → pause */\n.media-button--play[data-started]:not([data-paused]):not([data-ended]) .media-icon--pause,\n/* Mute: muted → volume off */\n.media-button--mute[data-muted] .media-icon--volume-off,\n/* Mute: volume low (not muted) → volume low */\n.media-button--mute:not([data-muted])[data-volume-level=\"low\"] .media-icon--volume-low,\n/* Mute: volume high (not muted, not low) → volume high */\n.media-button--mute:not([data-muted]):not([data-volume-level=\"low\"]) .media-icon--volume-high,\n/* Fullscreen: not fullscreen → enter */\n.media-button--fullscreen:not([data-fullscreen]) .media-icon--fullscreen-enter,\n/* Fullscreen: fullscreen → exit */\n.media-button--fullscreen[data-fullscreen] .media-icon--fullscreen-exit,\n/* Picture-in-Picture: not active → enter */\n.media-button--pip:not([data-pip]) .media-icon--pip-enter,\n/* Picture-in-Picture: active → exit */\n.media-button--pip[data-pip] .media-icon--pip-exit,\n/* Cast: not connected → enter */\n.media-button--cast:not([data-cast-state=\"connected\"]) .media-icon--cast-enter,\n/* Cast: connected → exit */\n.media-button--cast[data-cast-state=\"connected\"] .media-icon--cast-exit,\n/* AirPlay: not connected → enter */\n.media-button--airplay:not([data-airplay-state=\"connected\"]) .media-icon--airplay-enter,\n/* AirPlay: connected → exit */\n.media-button--airplay[data-airplay-state=\"connected\"] .media-icon--airplay-exit,\n/* Captions: not active → captions off */\n.media-button--captions:not([data-active]) .media-icon--captions-off,\n/* Captions: active → captions on */\n.media-button--captions[data-active] .media-icon--captions-on {\n opacity: 1;\n scale: 1;\n}\n\n/* --- Pause keyframe animations on inactive icons --- */\n\n/* The airplay-exit SVG defines its keyframes against CSS variables (mirroring\n the spinner pattern). When the AirPlay session isn't active the SVG is\n still in the DOM — just `display: none` — so its animations would keep\n running. Set the variables to `none` to short-circuit the keyframes. */\n.media-button--airplay:not([data-airplay-state=\"connected\"]) {\n --media-icon--airplay__fill-animation: none;\n --media-icon--airplay__triangle-animation: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .media-button--airplay {\n --media-icon--airplay__fill-animation: none;\n --media-icon--airplay__triangle-animation: none;\n }\n}\n\n\n/* Video-specific container styles */\n\n.media-default-skin--video {\n --default-accent-color: oklch(1 0 0);\n --border-color: light-dark(oklch(0 0 0 / 0.1), oklch(1 0 0 / 0.15));\n --focus-ring-color: light-dark(oklch(0 0 0), oklch(1 0 0));\n --media-video-border-radius: var(--container-border-radius);\n\n --surface-background-color: oklch(1 0 0 / 0.1);\n --surface-inner-border-color: oklch(1 0 0 / 0.1);\n --surface-outer-border-color: oklch(0 0 0 / 0.1);\n --surface-shadow-color: oklch(0 0 0 / 0.15);\n --surface-backdrop-filter: blur(16px) saturate(1.5);\n\n --controls-transition-duration: 100ms;\n --controls-transition-timing-function: ease-out;\n\n --error-dialog-transition-duration: 350ms;\n --error-dialog-transition-delay: 100ms;\n --error-dialog-transition-timing-function: ease-out;\n\n --popup-transition-duration: 100ms;\n --popup-transition-timing-function: ease-out;\n\n overflow: clip;\n background: oklch(0 0 0);\n\n @media (prefers-reduced-motion: reduce) {\n --error-dialog-transition-duration: 50ms;\n --error-dialog-transition-delay: 0ms;\n --popup-transition-duration: 0ms;\n\n .media-error__dialog {\n scale: 1;\n transition-property: opacity;\n }\n }\n\n @media (prefers-reduced-transparency: reduce) or (prefers-contrast: more) {\n --surface-background-color: oklch(0 0 0);\n --surface-inner-border-color: oklch(1 0 0 / 0.25);\n --surface-outer-border-color: transparent;\n }\n\n &:has(.media-controls--root:not([data-visible])) {\n /* Slight delay to hide controls on non-touch devices after interaction */\n @media (pointer: fine) {\n --controls-transition-duration: 300ms;\n }\n @media (pointer: coarse) {\n --controls-transition-duration: 150ms;\n }\n @media (prefers-reduced-motion: reduce) {\n --controls-transition-duration: 50ms;\n }\n }\n\n /* Inner border ring */\n &::after {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none;\n content: \"\";\n border-radius: inherit;\n box-shadow: inset 0 0 0 1px var(--border-color);\n }\n\n &:fullscreen {\n --container-border-radius: 0;\n\n &::after {\n display: none;\n }\n\n @media (width >= 1280px) {\n --scale: 1.25;\n }\n @media (width >= 1536px) {\n --scale: 1.5;\n }\n @media (width >= 1920px) {\n --scale: 1.75;\n }\n }\n\n * {\n --focus-ring-color: oklch(1 0 0);\n }\n}\n\n/* Error Dialog */\n\n.media-default-skin--video .media-error {\n position: absolute;\n inset: 0;\n z-index: 20;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.media-default-skin--video .media-error__dialog {\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 3);\n width: 100%;\n max-width: calc(var(--spacing) * 72);\n padding: calc(var(--spacing) * 3);\n color: oklch(1 0 0);\n text-shadow: 0 1px 0 oklch(0 0 0 / 0.25);\n border-radius: calc(var(--spacing) * 7);\n transition-delay: var(--error-dialog-transition-delay);\n transition-timing-function: var(--error-dialog-transition-timing-function);\n transition-duration: var(--error-dialog-transition-duration);\n transition-property: opacity, scale;\n}\n\n.media-default-skin--video .media-error[data-starting-style] .media-error__dialog,\n.media-default-skin--video .media-error[data-ending-style] .media-error__dialog {\n opacity: 0;\n scale: 0.95;\n}\n.media-default-skin--video .media-error[data-ending-style] .media-error__dialog {\n transition-delay: 0ms;\n}\n\n.media-default-skin--video .media-error__content {\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2);\n padding: calc(var(--spacing) * 2) calc(var(--spacing) * 2) calc(var(--spacing) * 1.5);\n text-shadow: inherit;\n}\n\n.media-default-skin--video .media-error__title {\n font-size: var(--font-size-medium);\n}\n\n/* Controls (hide/show behavior) */\n\n.media-default-skin--video .media-controls--root {\n --inset-factor: 2;\n --inset: calc(var(--spacing) * var(--inset-factor));\n --base-boundary-offset: var(--inset-factor);\n\n z-index: 10;\n display: contents;\n color: oklch(1 0 0);\n transition-timing-function: var(--controls-transition-timing-function);\n /* Speed up the entry transition */\n transition-duration: calc(var(--controls-transition-duration) / 2);\n\n .media-controls--primary,\n .media-controls--secondary {\n position: absolute;\n z-index: 10;\n }\n\n .media-controls--primary {\n inset-inline: var(--inset);\n bottom: var(--inset);\n transform-origin: bottom;\n }\n\n .media-controls--secondary {\n top: var(--inset);\n right: var(--inset);\n container-type: normal;\n transform-origin: top;\n }\n\n @container media-root (width < 32rem) {\n .media-controls--primary,\n .media-controls--secondary {\n transition-timing-function: inherit;\n transition-duration: inherit;\n\n @media (pointer: fine) {\n transition-property: filter, opacity, scale, translate;\n will-change: filter, opacity, scale, translate;\n }\n\n @media (pointer: coarse) {\n transition-property: opacity, scale, translate;\n will-change: opacity, scale, translate;\n }\n }\n\n &:after {\n display: none;\n }\n\n &:not([data-visible]) {\n .media-controls--primary,\n .media-controls--secondary {\n pointer-events: none;\n opacity: 0;\n scale: 0.95;\n transition-duration: var(--controls-transition-duration);\n\n @media (pointer: fine) and (prefers-reduced-motion: no-preference) {\n filter: blur(8px);\n }\n\n @media (prefers-reduced-motion: reduce) {\n scale: 1;\n }\n }\n\n .media-controls--primary {\n @media (prefers-reduced-motion: no-preference) {\n translate: 0 4px;\n }\n }\n\n .media-controls--secondary {\n @media (prefers-reduced-motion: no-preference) {\n translate: 0 -4px;\n }\n }\n }\n }\n\n @container media-root (width >= 32rem) {\n position: absolute;\n inset-inline: var(--inset);\n bottom: var(--inset);\n display: flex;\n transform-origin: bottom;\n\n .media-controls--primary,\n .media-controls--secondary {\n display: contents;\n\n &::after {\n display: none;\n }\n }\n\n &:not([data-visible]) {\n pointer-events: none;\n opacity: 0;\n scale: 0.95;\n transition-duration: var(--controls-transition-duration);\n\n @media (pointer: fine) and (prefers-reduced-motion: no-preference) {\n filter: blur(8px);\n }\n\n @media (prefers-reduced-motion: reduce) {\n scale: 1;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n translate: 0 4px;\n }\n }\n }\n\n .media-time-controls {\n flex: 1;\n padding-inline: calc(var(--spacing) * 3);\n }\n\n @media (pointer: fine) {\n transition-property: filter, opacity, scale, translate;\n will-change: filter, opacity, scale, translate;\n }\n\n @media (pointer: coarse) {\n transition-property: opacity, scale, translate;\n will-change: opacity, scale, translate;\n }\n\n @container media-root (width > 42rem) {\n --inset-factor: 3;\n }\n}\n\n.media-default-skin--video .media-error[data-open] ~ .media-controls {\n display: none;\n}\n\n/* Hide cursor when controls are hidden */\n.media-default-skin--video:has(.media-controls--root:not([data-visible])) {\n cursor: none;\n}\n\n/* Sliders */\n\n.media-default-skin--video .media-slider__track {\n background-color: oklch(1 0 0 / 0.2);\n}\n\n";
|
|
15
15
|
|
|
16
16
|
//#endregion
|
|
17
17
|
//#region src/define/live-video/ui.ts
|