@hopeplayer/core 1.0.16 → 1.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +24 -14
  2. package/dist/HopePlayerElement.d.ts +3 -0
  3. package/dist/HopePlayerElement.d.ts.map +1 -1
  4. package/dist/chunks/{index-CWLyz1fp.js → adTriggers-DXmtF4t2.js} +113 -118
  5. package/dist/chunks/adTriggers-DXmtF4t2.js.map +1 -0
  6. package/dist/chunks/{index-DITXYcHx.js → ads-MCG5a6eK.js} +130 -125
  7. package/dist/chunks/ads-MCG5a6eK.js.map +1 -0
  8. package/dist/chunks/{index-BeJNpAyx.js → audio-LkYgd5Wq.js} +7 -7
  9. package/dist/chunks/audio-LkYgd5Wq.js.map +1 -0
  10. package/dist/chunks/{ScratchSound-0XKHUcJK.js → audioScratchSound-7XkwCCDm.js} +1 -1
  11. package/dist/chunks/audioScratchSound-7XkwCCDm.js.map +1 -0
  12. package/dist/chunks/{index-Miba3PD_.js → cast-bMrkGGuD.js} +70 -66
  13. package/dist/chunks/cast-bMrkGGuD.js.map +1 -0
  14. package/dist/chunks/{index-rENB3n9O.js → countdownScreen-CI-u6jjA.js} +1 -1
  15. package/dist/chunks/countdownScreen-CI-u6jjA.js.map +1 -0
  16. package/dist/chunks/{index-Q8FMOHj0.js → dai-B9Tth1Iv.js} +1 -1
  17. package/dist/chunks/dai-B9Tth1Iv.js.map +1 -0
  18. package/dist/chunks/{index-DCXX1ZJG.js → debugPanel-Bnc_7GOn.js} +1 -1
  19. package/dist/chunks/debugPanel-Bnc_7GOn.js.map +1 -0
  20. package/dist/chunks/{index-DXWK4EFa.js → dubbing-kNMPpyHl.js} +1 -1
  21. package/dist/chunks/dubbing-kNMPpyHl.js.map +1 -0
  22. package/dist/chunks/{index-BBmuCtKu.js → geoChecker-BRtvHwI-.js} +1 -1
  23. package/dist/chunks/geoChecker-BRtvHwI-.js.map +1 -0
  24. package/dist/chunks/{index-Ca8hocby.js → gesture-BzPCgi87.js} +1 -1
  25. package/dist/chunks/gesture-BzPCgi87.js.map +1 -0
  26. package/dist/chunks/{loadGpt-CmiAy366.js → gpt-CGXHTG_H.js} +1 -1
  27. package/dist/chunks/gpt-CGXHTG_H.js.map +1 -0
  28. package/dist/chunks/{index-3QALpwsf.js → inViewAutoplay-CRJe7GA4.js} +1 -1
  29. package/dist/chunks/inViewAutoplay-CRJe7GA4.js.map +1 -0
  30. package/dist/chunks/{index-7IBf8Y-R.js → liveWallClock-ChUTtzLD.js} +1 -1
  31. package/dist/chunks/liveWallClock-ChUTtzLD.js.map +1 -0
  32. package/dist/chunks/{index-f0vSgRIK.js → loopSection-CvF4l5uf.js} +1 -1
  33. package/dist/chunks/loopSection-CvF4l5uf.js.map +1 -0
  34. package/dist/chunks/{index-e00_M05B.js → markers-BhMJLPqj.js} +2 -2
  35. package/dist/chunks/markers-BhMJLPqj.js.map +1 -0
  36. package/dist/chunks/{index-CDPrkLq0.js → pauseAd-BQQe21X4.js} +2 -2
  37. package/dist/chunks/pauseAd-BQQe21X4.js.map +1 -0
  38. package/dist/chunks/{index-DEv3YqLg.js → player-DW5iWvPs.js} +939 -880
  39. package/dist/chunks/player-DW5iWvPs.js.map +1 -0
  40. package/dist/chunks/{index-D3Z7ZDLJ.js → playlist-DYGbJ5wz.js} +24 -24
  41. package/dist/chunks/playlist-DYGbJ5wz.js.map +1 -0
  42. package/dist/chunks/{VideoPrebid-CpckFzSq.js → prebid-CRY3i2OT.js} +1 -1
  43. package/dist/chunks/prebid-CRY3i2OT.js.map +1 -0
  44. package/dist/chunks/{index-DT8-oMPm.js → qrResume-DXwD3oSA.js} +29 -30
  45. package/dist/chunks/qrResume-DXwD3oSA.js.map +1 -0
  46. package/dist/chunks/redirectScreen-CSjrS8Kg.js +208 -0
  47. package/dist/chunks/redirectScreen-CSjrS8Kg.js.map +1 -0
  48. package/dist/chunks/{index-BbRYOSvk.js → rewardedUnlock-DZ_qPcDG.js} +22 -19
  49. package/dist/chunks/rewardedUnlock-DZ_qPcDG.js.map +1 -0
  50. package/dist/chunks/seekWhenReady-Clzne3-S.js +32 -0
  51. package/dist/chunks/seekWhenReady-Clzne3-S.js.map +1 -0
  52. package/dist/chunks/{index-CBX7bn-G.js → segments-LsZPlbYi.js} +2 -2
  53. package/dist/chunks/segments-LsZPlbYi.js.map +1 -0
  54. package/dist/chunks/{index-Ch3ep-eJ.js → sponsorship-BT21uwN5.js} +36 -41
  55. package/dist/chunks/sponsorship-BT21uwN5.js.map +1 -0
  56. package/dist/chunks/{index-BXSND_xN.js → spriteThumbnails-BQkEBRu-.js} +2 -2
  57. package/dist/chunks/spriteThumbnails-BQkEBRu-.js.map +1 -0
  58. package/dist/chunks/{index-DGtpFgHV.js → statsPanel-DSClIwA3.js} +1 -1
  59. package/dist/chunks/statsPanel-DSClIwA3.js.map +1 -0
  60. package/dist/chunks/{index-CDDke5rz.js → sticky-D_eLCNFk.js} +1 -1
  61. package/dist/chunks/sticky-D_eLCNFk.js.map +1 -0
  62. package/dist/chunks/{index-C3BQGcT3.js → story-H6f7gSoX.js} +27 -15
  63. package/dist/chunks/story-H6f7gSoX.js.map +1 -0
  64. package/dist/chunks/{index-C5oGMHF_.js → tapGestures-DrC42DiI.js} +1 -1
  65. package/dist/chunks/tapGestures-DrC42DiI.js.map +1 -0
  66. package/dist/chunks/trackingPixel-D2wxdCEz.js +20 -0
  67. package/dist/chunks/trackingPixel-D2wxdCEz.js.map +1 -0
  68. package/dist/controls/SeekBar.d.ts.map +1 -1
  69. package/dist/hls/SourceManager.d.ts.map +1 -1
  70. package/dist/hope-player.js +1 -1
  71. package/dist/i18n/locales/en.d.ts.map +1 -1
  72. package/dist/i18n/locales/tr.d.ts.map +1 -1
  73. package/dist/i18n/types.d.ts +3 -0
  74. package/dist/i18n/types.d.ts.map +1 -1
  75. package/dist/index.d.ts +1 -1
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/keyboard/KeyboardController.d.ts.map +1 -1
  78. package/dist/plugins/ad-triggers/AdTriggers.d.ts.map +1 -1
  79. package/dist/plugins/ads/AdsController.d.ts.map +1 -1
  80. package/dist/plugins/ads/generateVastUrl.d.ts +10 -0
  81. package/dist/plugins/ads/generateVastUrl.d.ts.map +1 -1
  82. package/dist/plugins/cast/CastController.d.ts.map +1 -1
  83. package/dist/plugins/playlist/PlaylistRunner.d.ts.map +1 -1
  84. package/dist/plugins/qr-resume/QrResume.d.ts.map +1 -1
  85. package/dist/plugins/redirect-screen/RedirectScreen.d.ts +26 -3
  86. package/dist/plugins/redirect-screen/RedirectScreen.d.ts.map +1 -1
  87. package/dist/plugins/rewarded/RewardedUnlock.d.ts +0 -5
  88. package/dist/plugins/rewarded/RewardedUnlock.d.ts.map +1 -1
  89. package/dist/plugins/shared/seekWhenReady.d.ts +22 -0
  90. package/dist/plugins/shared/seekWhenReady.d.ts.map +1 -0
  91. package/dist/plugins/shared/trackingPixel.d.ts +8 -0
  92. package/dist/plugins/shared/trackingPixel.d.ts.map +1 -0
  93. package/dist/plugins/sponsorship/SponsorshipLayer.d.ts.map +1 -1
  94. package/dist/plugins/story/HopeStory.d.ts +2 -0
  95. package/dist/plugins/story/HopeStory.d.ts.map +1 -1
  96. package/dist/screens/ErrorScreen.d.ts +7 -0
  97. package/dist/screens/ErrorScreen.d.ts.map +1 -1
  98. package/dist/types/index.d.ts +49 -1
  99. package/dist/types/index.d.ts.map +1 -1
  100. package/dist/utils/media-error.d.ts +10 -0
  101. package/dist/utils/media-error.d.ts.map +1 -0
  102. package/dist/utils/seek-by.d.ts +8 -0
  103. package/dist/utils/seek-by.d.ts.map +1 -1
  104. package/package.json +4 -1
  105. package/dist/chunks/ScratchSound-0XKHUcJK.js.map +0 -1
  106. package/dist/chunks/VideoPrebid-CpckFzSq.js.map +0 -1
  107. package/dist/chunks/index-3QALpwsf.js.map +0 -1
  108. package/dist/chunks/index-7IBf8Y-R.js.map +0 -1
  109. package/dist/chunks/index-BBmuCtKu.js.map +0 -1
  110. package/dist/chunks/index-BXSND_xN.js.map +0 -1
  111. package/dist/chunks/index-BbRYOSvk.js.map +0 -1
  112. package/dist/chunks/index-BeJNpAyx.js.map +0 -1
  113. package/dist/chunks/index-C3BQGcT3.js.map +0 -1
  114. package/dist/chunks/index-C5oGMHF_.js.map +0 -1
  115. package/dist/chunks/index-CBX7bn-G.js.map +0 -1
  116. package/dist/chunks/index-CDDke5rz.js.map +0 -1
  117. package/dist/chunks/index-CDPrkLq0.js.map +0 -1
  118. package/dist/chunks/index-CWLyz1fp.js.map +0 -1
  119. package/dist/chunks/index-Ca8hocby.js.map +0 -1
  120. package/dist/chunks/index-Ch3ep-eJ.js.map +0 -1
  121. package/dist/chunks/index-D3Z7ZDLJ.js.map +0 -1
  122. package/dist/chunks/index-D6r-BGAV.js +0 -77
  123. package/dist/chunks/index-D6r-BGAV.js.map +0 -1
  124. package/dist/chunks/index-DCXX1ZJG.js.map +0 -1
  125. package/dist/chunks/index-DEv3YqLg.js.map +0 -1
  126. package/dist/chunks/index-DGtpFgHV.js.map +0 -1
  127. package/dist/chunks/index-DITXYcHx.js.map +0 -1
  128. package/dist/chunks/index-DT8-oMPm.js.map +0 -1
  129. package/dist/chunks/index-DXWK4EFa.js.map +0 -1
  130. package/dist/chunks/index-Miba3PD_.js.map +0 -1
  131. package/dist/chunks/index-Q8FMOHj0.js.map +0 -1
  132. package/dist/chunks/index-e00_M05B.js.map +0 -1
  133. package/dist/chunks/index-f0vSgRIK.js.map +0 -1
  134. package/dist/chunks/index-rENB3n9O.js.map +0 -1
  135. package/dist/chunks/loadGpt-CmiAy366.js.map +0 -1
@@ -1,34 +1,40 @@
1
- var Le = Object.defineProperty;
2
- var Pe = (n, t, e) => t in n ? Le(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e;
3
- var r = (n, t, e) => Pe(n, typeof t != "symbol" ? t + "" : t, e);
4
- const Me = '/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial}}}@layer theme{:root,:host{--hp-font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--hp-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--hp-color-black:#000;--hp-color-white:#fff;--hp-spacing:.25rem;--hp-container-xs:20rem;--hp-text-xs:.75rem;--hp-text-xs--line-height:calc(1 / .75);--hp-text-sm:.875rem;--hp-text-sm--line-height:calc(1.25 / .875);--hp-text-base:1rem;--hp-text-base--line-height: 1.5 ;--hp-text-lg:1.125rem;--hp-text-lg--line-height:calc(1.75 / 1.125);--hp-text-xl:1.25rem;--hp-text-xl--line-height:calc(1.75 / 1.25);--hp-text-2xl:1.5rem;--hp-text-2xl--line-height:calc(2 / 1.5);--hp-font-weight-medium:500;--hp-font-weight-semibold:600;--hp-radius-lg:.5rem;--hp-animate-spin:spin 1s linear infinite;--hp-aspect-video:16 / 9;--hp-default-transition-duration:.15s;--hp-default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--hp-default-font-family:var(--hp-font-sans);--hp-default-mono-font-family:var(--hp-font-mono);--hp-color-accent:#fff;--hp-color-on-accent:#0a0a0a;--hp-color-surface:#0a0a0a;--hp-color-surface-elev:#1a1a1a;--hp-color-on-surface:#fff;--hp-color-on-surface-muted:#a3a3a3}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--hp-default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--hp-default-font-feature-settings,normal);font-variation-settings:var(--hp-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--hp-default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--hp-default-mono-font-feature-settings,normal);font-variation-settings:var(--hp-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.hp\\:pointer-events-auto{pointer-events:auto}.hp\\:pointer-events-none{pointer-events:none}.hp\\:absolute{position:absolute}.hp\\:relative{position:relative}.hp\\:sticky{position:sticky}.hp\\:inset-0{top:0;right:0;bottom:0;left:0}.hp\\:inset-x-0{inset-inline:0}.hp\\:inset-y-0{inset-block:0}.hp\\:top-0{top:0}.hp\\:top-1{top:var(--hp-spacing)}.hp\\:top-1\\/2{top:50%}.hp\\:right-0{right:0}.hp\\:right-1{right:var(--hp-spacing)}.hp\\:right-2{right:calc(var(--hp-spacing) * 2)}.hp\\:bottom-0{bottom:0}.hp\\:bottom-full{bottom:100%}.hp\\:left-1\\/2{left:50%}.hp\\:z-10{z-index:10}.hp\\:z-20{z-index:20}.hp\\:z-30{z-index:30}.hp\\:z-40{z-index:40}.hp\\:m-0{margin:0}.hp\\:my-1{margin-block:var(--hp-spacing)}.hp\\:mt-0\\.5{margin-top:calc(var(--hp-spacing) * .5)}.hp\\:mt-1{margin-top:var(--hp-spacing)}.hp\\:mt-2{margin-top:calc(var(--hp-spacing) * 2)}.hp\\:mt-8{margin-top:calc(var(--hp-spacing) * 8)}.hp\\:mb-1{margin-bottom:var(--hp-spacing)}.hp\\:mb-2{margin-bottom:calc(var(--hp-spacing) * 2)}.hp\\:mb-16{margin-bottom:calc(var(--hp-spacing) * 16)}.hp\\:ml-1{margin-left:var(--hp-spacing)}.hp\\:block{display:block}.hp\\:flex{display:flex}.hp\\:grid{display:grid}.hp\\:hidden{display:none}.hp\\:inline-block{display:inline-block}.hp\\:aspect-\\[9\\/16\\]{aspect-ratio:9/16}.hp\\:aspect-video{aspect-ratio:var(--hp-aspect-video)}.hp\\:h-0\\.5{height:calc(var(--hp-spacing) * .5)}.hp\\:h-1{height:var(--hp-spacing)}.hp\\:h-1\\/3{height:33.3333%}.hp\\:h-3{height:calc(var(--hp-spacing) * 3)}.hp\\:h-6{height:calc(var(--hp-spacing) * 6)}.hp\\:h-7{height:calc(var(--hp-spacing) * 7)}.hp\\:h-8{height:calc(var(--hp-spacing) * 8)}.hp\\:h-9{height:calc(var(--hp-spacing) * 9)}.hp\\:h-10{height:calc(var(--hp-spacing) * 10)}.hp\\:h-16{height:calc(var(--hp-spacing) * 16)}.hp\\:h-20{height:calc(var(--hp-spacing) * 20)}.hp\\:h-\\[var\\(--hp-ctrl-btn-size\\)\\]{height:var(--hp-ctrl-btn-size)}.hp\\:h-\\[var\\(--hp-seek-hit-h\\)\\]{height:var(--hp-seek-hit-h)}.hp\\:h-\\[var\\(--hp-seek-track-h\\)\\]{height:var(--hp-seek-track-h)}.hp\\:h-full{height:100%}.hp\\:max-h-64{max-height:calc(var(--hp-spacing) * 64)}.hp\\:max-h-80{max-height:calc(var(--hp-spacing) * 80)}.hp\\:w-0{width:0}.hp\\:w-0\\.5{width:calc(var(--hp-spacing) * .5)}.hp\\:w-1{width:var(--hp-spacing)}.hp\\:w-1\\.5{width:calc(var(--hp-spacing) * 1.5)}.hp\\:w-3{width:calc(var(--hp-spacing) * 3)}.hp\\:w-6{width:calc(var(--hp-spacing) * 6)}.hp\\:w-7{width:calc(var(--hp-spacing) * 7)}.hp\\:w-8{width:calc(var(--hp-spacing) * 8)}.hp\\:w-9{width:calc(var(--hp-spacing) * 9)}.hp\\:w-10{width:calc(var(--hp-spacing) * 10)}.hp\\:w-14{width:calc(var(--hp-spacing) * 14)}.hp\\:w-16{width:calc(var(--hp-spacing) * 16)}.hp\\:w-48{width:calc(var(--hp-spacing) * 48)}.hp\\:w-72{width:calc(var(--hp-spacing) * 72)}.hp\\:w-\\[var\\(--hp-ctrl-btn-size\\)\\]{width:var(--hp-ctrl-btn-size)}.hp\\:w-full{width:100%}.hp\\:max-w-\\[50\\%\\]{max-width:50%}.hp\\:max-w-\\[80\\%\\]{max-width:80%}.hp\\:max-w-\\[85\\%\\]{max-width:85%}.hp\\:max-w-full{max-width:100%}.hp\\:max-w-xs{max-width:var(--hp-container-xs)}.hp\\:min-w-0{min-width:0}.hp\\:flex-1{flex:1}.hp\\:flex-shrink-0,.hp\\:shrink-0{flex-shrink:0}.hp\\:animate-spin{animation:var(--hp-animate-spin)}.hp\\:cursor-pointer{cursor:pointer}.hp\\:touch-none{touch-action:none}.hp\\:list-none{list-style-type:none}.hp\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.hp\\:flex-col{flex-direction:column}.hp\\:flex-wrap{flex-wrap:wrap}.hp\\:items-center{align-items:center}.hp\\:items-end{align-items:flex-end}.hp\\:justify-between{justify-content:space-between}.hp\\:justify-center{justify-content:center}.hp\\:gap-0\\.5{gap:calc(var(--hp-spacing) * .5)}.hp\\:gap-1{gap:var(--hp-spacing)}.hp\\:gap-1\\.5{gap:calc(var(--hp-spacing) * 1.5)}.hp\\:gap-2{gap:calc(var(--hp-spacing) * 2)}.hp\\:gap-3{gap:calc(var(--hp-spacing) * 3)}.hp\\:self-end{align-self:flex-end}.hp\\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hp\\:overflow-hidden{overflow:hidden}.hp\\:overflow-y-auto{overflow-y:auto}.hp\\:rounded{border-radius:.25rem}.hp\\:rounded-full{border-radius:3.40282e38px}.hp\\:rounded-lg{border-radius:var(--hp-radius-lg)}.hp\\:border{border-style:var(--tw-border-style);border-width:1px}.hp\\:border-0{border-style:var(--tw-border-style);border-width:0}.hp\\:border-2{border-style:var(--tw-border-style);border-width:2px}.hp\\:border-\\[3px\\]{border-style:var(--tw-border-style);border-width:3px}.hp\\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.hp\\:border-on-surface\\/10{border-color:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp\\:border-on-surface\\/10{border-color:color-mix(in oklab,var(--hp-color-on-surface) 10%,transparent)}}.hp\\:border-on-surface\\/20{border-color:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp\\:border-on-surface\\/20{border-color:color-mix(in oklab,var(--hp-color-on-surface) 20%,transparent)}}.hp\\:border-on-surface\\/30{border-color:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp\\:border-on-surface\\/30{border-color:color-mix(in oklab,var(--hp-color-on-surface) 30%,transparent)}}.hp\\:border-t-accent{border-top-color:var(--hp-color-accent)}.hp\\:bg-accent,.hp\\:bg-accent\\/15{background-color:var(--hp-color-accent)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-accent\\/15{background-color:color-mix(in oklab,var(--hp-color-accent) 15%,transparent)}}.hp\\:bg-black,.hp\\:bg-black\\/30{background-color:var(--hp-color-black)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-black\\/30{background-color:color-mix(in oklab,var(--hp-color-black) 30%,transparent)}}.hp\\:bg-black\\/40{background-color:var(--hp-color-black)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-black\\/40{background-color:color-mix(in oklab,var(--hp-color-black) 40%,transparent)}}.hp\\:bg-black\\/60{background-color:var(--hp-color-black)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-black\\/60{background-color:color-mix(in oklab,var(--hp-color-black) 60%,transparent)}}.hp\\:bg-black\\/70{background-color:var(--hp-color-black)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-black\\/70{background-color:color-mix(in oklab,var(--hp-color-black) 70%,transparent)}}.hp\\:bg-black\\/85{background-color:var(--hp-color-black)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-black\\/85{background-color:color-mix(in oklab,var(--hp-color-black) 85%,transparent)}}.hp\\:bg-on-surface,.hp\\:bg-on-surface\\/20{background-color:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-on-surface\\/20{background-color:color-mix(in oklab,var(--hp-color-on-surface) 20%,transparent)}}.hp\\:bg-on-surface\\/25{background-color:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-on-surface\\/25{background-color:color-mix(in oklab,var(--hp-color-on-surface) 25%,transparent)}}.hp\\:bg-on-surface\\/40{background-color:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-on-surface\\/40{background-color:color-mix(in oklab,var(--hp-color-on-surface) 40%,transparent)}}.hp\\:bg-surface{background-color:var(--hp-color-surface)}.hp\\:bg-surface-elev{background-color:var(--hp-color-surface-elev)}.hp\\:bg-transparent{background-color:#0000}.hp\\:bg-white,.hp\\:bg-white\\/15{background-color:var(--hp-color-white)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-white\\/15{background-color:color-mix(in oklab,var(--hp-color-white) 15%,transparent)}}.hp\\:bg-white\\/30{background-color:var(--hp-color-white)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-white\\/30{background-color:color-mix(in oklab,var(--hp-color-white) 30%,transparent)}}.hp\\:bg-white\\/40{background-color:var(--hp-color-white)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-white\\/40{background-color:color-mix(in oklab,var(--hp-color-white) 40%,transparent)}}.hp\\:bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.hp\\:from-black\\/80{--tw-gradient-from:var(--hp-color-black)}@supports (color:color-mix(in lab,red,red)){.hp\\:from-black\\/80{--tw-gradient-from:color-mix(in oklab, var(--hp-color-black) 80%, transparent)}}.hp\\:from-black\\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hp\\:to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hp\\:bg-cover{background-size:cover}.hp\\:bg-center{background-position:50%}.hp\\:object-cover{object-fit:cover}.hp\\:p-0{padding:0}.hp\\:p-1\\.5{padding:calc(var(--hp-spacing) * 1.5)}.hp\\:p-2{padding:calc(var(--hp-spacing) * 2)}.hp\\:p-3{padding:calc(var(--hp-spacing) * 3)}.hp\\:p-4{padding:calc(var(--hp-spacing) * 4)}.hp\\:px-1{padding-inline:var(--hp-spacing)}.hp\\:px-1\\.5{padding-inline:calc(var(--hp-spacing) * 1.5)}.hp\\:px-2{padding-inline:calc(var(--hp-spacing) * 2)}.hp\\:px-3{padding-inline:calc(var(--hp-spacing) * 3)}.hp\\:px-4{padding-inline:calc(var(--hp-spacing) * 4)}.hp\\:py-1{padding-block:var(--hp-spacing)}.hp\\:py-1\\.5{padding-block:calc(var(--hp-spacing) * 1.5)}.hp\\:py-2{padding-block:calc(var(--hp-spacing) * 2)}.hp\\:pt-6{padding-top:calc(var(--hp-spacing) * 6)}.hp\\:pb-2{padding-bottom:calc(var(--hp-spacing) * 2)}.hp\\:text-center{text-align:center}.hp\\:text-left{text-align:left}.hp\\:font-mono{font-family:var(--hp-font-mono)}.hp\\:text-2xl{font-size:var(--hp-text-2xl);line-height:var(--tw-leading,var(--hp-text-2xl--line-height))}.hp\\:text-base{font-size:var(--hp-text-base);line-height:var(--tw-leading,var(--hp-text-base--line-height))}.hp\\:text-lg{font-size:var(--hp-text-lg);line-height:var(--tw-leading,var(--hp-text-lg--line-height))}.hp\\:text-sm{font-size:var(--hp-text-sm);line-height:var(--tw-leading,var(--hp-text-sm--line-height))}.hp\\:text-xl{font-size:var(--hp-text-xl);line-height:var(--tw-leading,var(--hp-text-xl--line-height))}.hp\\:text-xs{font-size:var(--hp-text-xs);line-height:var(--tw-leading,var(--hp-text-xs--line-height))}.hp\\:text-\\[length\\:var\\(--hp-ctrl-icon-size\\)\\]{font-size:var(--hp-ctrl-icon-size)}.hp\\:leading-none{--tw-leading:1;line-height:1}.hp\\:font-medium{--tw-font-weight:var(--hp-font-weight-medium);font-weight:var(--hp-font-weight-medium)}.hp\\:font-semibold{--tw-font-weight:var(--hp-font-weight-semibold);font-weight:var(--hp-font-weight-semibold)}.hp\\:whitespace-nowrap{white-space:nowrap}.hp\\:text-accent{color:var(--hp-color-accent)}.hp\\:text-on-accent{color:var(--hp-color-on-accent)}.hp\\:text-on-surface{color:var(--hp-color-on-surface)}.hp\\:text-on-surface-muted{color:var(--hp-color-on-surface-muted)}.hp\\:text-white{color:var(--hp-color-white)}.hp\\:tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.hp\\:no-underline{text-decoration-line:none}.hp\\:underline{text-decoration-line:underline}.hp\\:opacity-0{opacity:0}.hp\\:opacity-60{opacity:.6}.hp\\:opacity-70{opacity:.7}.hp\\:opacity-80{opacity:.8}.hp\\:opacity-90{opacity:.9}.hp\\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hp\\:shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hp\\:drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.hp\\:transition-\\[height\\]{transition-property:height;transition-timing-function:var(--tw-ease,var(--hp-default-transition-timing-function));transition-duration:var(--tw-duration,var(--hp-default-transition-duration))}.hp\\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--hp-default-transition-timing-function));transition-duration:var(--tw-duration,var(--hp-default-transition-duration))}.hp\\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--hp-default-transition-timing-function));transition-duration:var(--tw-duration,var(--hp-default-transition-duration))}.hp\\:duration-100{--tw-duration:.1s;transition-duration:.1s}.hp\\:duration-150{--tw-duration:.15s;transition-duration:.15s}.hp\\:duration-200{--tw-duration:.2s;transition-duration:.2s}.hp\\:duration-300{--tw-duration:.3s;transition-duration:.3s}.hp\\:will-change-\\[opacity\\]{will-change:opacity}.hp\\:select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.hp\\:group-hover\\:h-\\[var\\(--hp-seek-track-h-hover\\)\\]:is(:where(.hp\\:group):hover *){height:var(--hp-seek-track-h-hover)}.hp\\:hover\\:bg-on-surface\\/5:hover{background-color:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp\\:hover\\:bg-on-surface\\/5:hover{background-color:color-mix(in oklab,var(--hp-color-on-surface) 5%,transparent)}}.hp\\:hover\\:bg-on-surface\\/10:hover{background-color:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp\\:hover\\:bg-on-surface\\/10:hover{background-color:color-mix(in oklab,var(--hp-color-on-surface) 10%,transparent)}}.hp\\:hover\\:opacity-80:hover{opacity:.8}}.hp\\:focus-visible\\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hp\\:focus-visible\\:ring-accent:focus-visible{--tw-ring-color:var(--hp-color-accent)}.hp\\:focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.hp\\:data-\\[active\\=true\\]\\:bg-accent\\/15[data-active=true]{background-color:var(--hp-color-accent)}@supports (color:color-mix(in lab,red,red)){.hp\\:data-\\[active\\=true\\]\\:bg-accent\\/15[data-active=true]{background-color:color-mix(in oklab,var(--hp-color-accent) 15%,transparent)}}.hp\\:data-\\[active\\=true\\]\\:text-on-surface[data-active=true]{color:var(--hp-color-on-surface)}}.hp-icon{font-variant:normal;text-transform:none;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:hope-icons;font-style:normal;font-weight:400;line-height:1}.hp-icon-airplay:before{content:""}.hp-icon-cast-connected:before{content:""}.hp-icon-cast:before{content:""}.hp-icon-check:before{content:""}.hp-icon-chevron-left:before{content:""}.hp-icon-close:before{content:""}.hp-icon-fullscreen-enter:before{content:""}.hp-icon-fullscreen-exit:before{content:""}.hp-icon-grid:before{content:""}.hp-icon-loop:before{content:""}.hp-icon-pause:before{content:""}.hp-icon-pip:before{content:""}.hp-icon-play:before{content:""}.hp-icon-settings:before{content:""}.hp-icon-skip-back:before{content:""}.hp-icon-skip-forward:before{content:""}.hp-icon-volume-high:before{content:""}.hp-icon-volume-low:before{content:""}.hp-icon-volume-muted:before{content:""}.hp-icon-warning:before{content:""}:host{--hp-radius:8px;--hp-chip-bg:#ffffff14;--hp-chip-bg-hover:#ffffff2e;--hp-chip-bg-active:#ffffff42;--hp-chip-border:#ffffff29;--hp-chip-border-hover:#ffffff4d;--hp-chip-blur:14px;--hp-chip-shadow:0 4px 18px #00000047, inset 0 1px 0 #ffffff12;--hp-chip-radius:10px;--hp-chip-text:var(--hp-color-on-surface,#fff);--hp-chrome-scrim:linear-gradient(to top, #00000080 0%, #0000003d 50%, #0000 100%);--hp-chrome-scrim-height:min(150px, 45%);--hp-chip-backdrop-brightness:.78;--hp-ctrl-shadow:drop-shadow(0 1px 1.5px #0000008c);--hp-panel-bg:#ffffffb8;--hp-panel-blur:26px;--hp-panel-border:#0f11171a;--hp-panel-text:#15171c;--hp-panel-text-muted:#5b6270;--hp-panel-text-shadow:none;--hp-ctrl-btn-size:32px;--hp-ctrl-icon-size:16px;--hp-seek-hit-h:16px;--hp-seek-track-h:4px;--hp-seek-track-h-hover:6px;--hp-seek-thumb-size:12px;--hp-tooltip-bg:#ffffffe6;--hp-tooltip-text:#15171c;--hp-tooltip-key-bg:#0f11171a;--hp-tooltip-key-text:#15171c;--hp-caption-font-size:16px;--hp-caption-bg:#000000bf;--hp-caption-text:#fff;--hp-caption-radius:4px;background:var(--hp-color-surface,#0a0a0a);width:100%;color:var(--hp-color-on-surface,#fff);border-radius:var(--hp-radius);font-family:system-ui,-apple-system,sans-serif;line-height:1;display:block}.hp-chip{background:var(--hp-chip-bg);border:1px solid var(--hp-chip-border);border-radius:var(--hp-chip-radius);-webkit-backdrop-filter:blur(var(--hp-chip-blur)) saturate(160%);box-shadow:var(--hp-chip-shadow);color:var(--hp-chip-text);transition:background-color .16s,border-color .16s,box-shadow .16s,transform .12s}.hp-chip:hover{background:var(--hp-chip-bg-hover);border-color:var(--hp-chip-border-hover)}button.hp-chip:active{background:var(--hp-chip-bg-active);transform:scale(.94)}.hp-chip:focus-visible{outline:2px solid var(--hp-color-accent,#fff);outline-offset:2px}.hp-chip-panel,.hp-chip-panel:hover{background:var(--hp-panel-bg);border-color:var(--hp-panel-border);-webkit-backdrop-filter:blur(var(--hp-panel-blur)) saturate(160%);text-shadow:var(--hp-panel-text-shadow,none)}.hp-chip-panel{--hp-color-on-surface:var(--hp-panel-text);--hp-color-on-surface-muted:var(--hp-panel-text-muted);color:var(--hp-panel-text)}.hp-tooltip{background:var(--hp-tooltip-bg);color:var(--hp-tooltip-text);border-radius:calc(var(--hp-radius) * .75);-webkit-backdrop-filter:blur(12px)saturate(160%);font-weight:500;box-shadow:0 4px 14px #00000059}.hp-tooltip-key{background:var(--hp-tooltip-key-bg);min-width:16px;height:16px;color:var(--hp-tooltip-key-text);text-transform:uppercase;border-radius:4px;justify-content:center;align-items:center;padding:0 4px;font-size:10px;font-weight:700;line-height:16px;display:inline-flex}.hp-group{background:var(--hp-chip-bg);border:1px solid var(--hp-chip-border);-webkit-backdrop-filter:blur(var(--hp-chip-blur)) saturate(160%) brightness(var(--hp-chip-backdrop-brightness,1));box-shadow:var(--hp-chip-shadow);border-radius:9999px}.hp-group-left{position:relative}.hp-loading-ring{border-radius:inherit;pointer-events:none;opacity:0;filter:drop-shadow(0 0 3px var(--hp-color-accent,#fff));transition:opacity .22s;position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px}@supports (color:color-mix(in lab,red,red)){.hp-loading-ring{filter:drop-shadow(0 0 3px color-mix(in srgb,var(--hp-color-accent,#fff) 70%,transparent))}}.hp-loading-ring-mask{border-radius:inherit;-webkit-mask-composite:xor;padding:2px;position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.hp-loading-ring-mask>span{aspect-ratio:1;background:conic-gradient(from 0deg,transparent 0deg 150deg,var(--hp-color-accent,#fff) 260deg,var(--hp-color-accent,#fff) 340deg,transparent 360deg);width:max(100%,160px);position:absolute;top:50%;left:50%;translate:-50% -50%}@supports (color:color-mix(in lab,red,red)){.hp-loading-ring-mask>span{background:conic-gradient(from 0deg,transparent 0deg 150deg,color-mix(in srgb,var(--hp-color-accent,#fff) 30%,transparent) 260deg,var(--hp-color-accent,#fff) 340deg,transparent 360deg)}}.hp-loading-ring-mask>span{animation:1.1s linear infinite paused hp-loading-ring-spin}.hp-group-left[data-loading]>.hp-loading-ring{opacity:1}.hp-group-left[data-loading]>.hp-loading-ring .hp-loading-ring-mask>span{animation-play-state:running}@keyframes hp-loading-ring-spin{to{rotate:360deg}}@media(prefers-reduced-motion:reduce){.hp-loading-ring-mask>span{background:var(--hp-color-accent,#fff);animation:none}.hp-group-left[data-loading]>.hp-loading-ring{animation:1.6s ease-in-out infinite hp-loading-ring-pulse}}@keyframes hp-loading-ring-pulse{50%{opacity:.35}}.hp-center-play>.hp-chip{-webkit-backdrop-filter:blur(var(--hp-chip-blur)) saturate(160%) brightness(var(--hp-chip-backdrop-brightness,1))}.hp-group .hp-icon,.hp-group [part=time-display],.hp-group .hp-live-badge,.hp-group [part=live-clock],.hp-group .hp-skip-num,.hp-center-play .hp-icon{filter:var(--hp-ctrl-shadow,none)}.hp-chrome:before{content:"";height:var(--hp-chrome-scrim-height);background:var(--hp-chrome-scrim);pointer-events:none;position:absolute;bottom:0;left:0;right:0}.video-area[data-compact]>.hp-chrome:after{content:"";background:var(--hp-chrome-scrim);opacity:.7;pointer-events:none;height:min(90px,30%);position:absolute;top:0;left:0;right:0;transform:scaleY(-1)}.hp-group button.hp-chip{box-shadow:none;-webkit-backdrop-filter:none;background:0 0;border-color:#0000}.hp-group button.hp-chip:hover{background:var(--hp-chip-bg-hover)}.hp-group button.hp-chip:active{background:var(--hp-chip-bg-active)}:host([data-theme=glass-dark]),:host([data-theme=neo-dark]),:host([data-theme=mono]){--hp-panel-bg:#0a0a0e8c;--hp-panel-border:#ffffff1a;--hp-panel-text:#fff;--hp-panel-text-muted:#a3a3a3;--hp-panel-text-shadow:0 1px 3px #000000a6;--hp-tooltip-bg:#0a0a0aeb;--hp-tooltip-text:#fff;--hp-tooltip-key-bg:#ffffff2e;--hp-tooltip-key-text:#fff}:host([data-theme=glass-dark]){--hp-chip-bg:#0a0a0e73;--hp-chip-bg-hover:#0a0a0e9e;--hp-chip-bg-active:#0a0a0ebf;--hp-chip-border:#ffffff14;--hp-chip-border-hover:#ffffff29;--hp-chip-shadow:0 4px 18px #0006, inset 0 1px 0 #ffffff0a;--hp-panel-bg:#08080cb8;--hp-chip-backdrop-brightness:1}:host([data-theme=neo-dark]){--hp-chip-bg:#24242a;--hp-chip-bg-hover:#2a2a31;--hp-chip-bg-active:#1e1e23;--hp-chip-border:transparent;--hp-chip-border-hover:transparent;--hp-chip-blur:0px;--hp-chip-shadow:5px 5px 10px #00000080, -4px -4px 9px #ffffff09;--hp-chip-radius:12px;--hp-color-surface:#1b1b20;--hp-panel-bg:#1e1e23;--hp-panel-text-shadow:none;--hp-chrome-scrim:none;--hp-chip-backdrop-brightness:1;--hp-ctrl-shadow:none}:host([data-theme=neo-dark]) button.hp-chip:active{box-shadow:inset 3px 3px 6px #00000080,inset -2px -2px 5px #ffffff08}:host([data-theme=mono]){--hp-chip-bg:#ffffff0a;--hp-chip-bg-hover:#ffffff1a;--hp-chip-border:#ffffff14;--hp-chip-border-hover:#ffffff24;--hp-chip-blur:0px;--hp-chip-shadow:none;--hp-panel-bg:#0a0a0aeb;--hp-panel-text-shadow:none}@media(pointer:coarse){:host{--hp-ctrl-btn-size:40px;--hp-ctrl-icon-size:18px;--hp-seek-hit-h:22px;--hp-seek-track-h:5px;--hp-seek-track-h-hover:7px;--hp-seek-thumb-size:14px;--hp-caption-font-size:19px}}:host(:fullscreen),:host(:-webkit-full-screen){--hp-ctrl-btn-size:44px;--hp-ctrl-icon-size:20px;--hp-seek-hit-h:26px;--hp-seek-track-h:6px;--hp-seek-track-h-hover:8px;--hp-seek-thumb-size:18px;--hp-caption-font-size:22px}:host(:fullscreen) [part=control-bar],:host(:-webkit-full-screen) [part=control-bar]{padding:28px 20px 18px}.video-area{width:100%;aspect-ratio:var(--hp-aspect-ratio,16 / 9);border-radius:var(--hp-radius);background:var(--hp-color-surface,#0a0a0a);position:relative;overflow:hidden}.video-area[data-compact]{--hp-caption-font-size:13px}.video-area[data-story]{aspect-ratio:9/16;max-width:49.5vh;max-height:88vh;margin:0 auto}:host(:fullscreen),:host(:-webkit-full-screen){background:#000;border-radius:0}:host(:fullscreen) .hp-root,:host(:-webkit-full-screen) .hp-root{height:100%}:host(:fullscreen) .video-area,:host(:-webkit-full-screen) .video-area{aspect-ratio:auto;background:#000;border-radius:0;width:100%;height:100%}:host(:fullscreen) .video-area[data-story],:host(:-webkit-full-screen) .video-area[data-story]{aspect-ratio:9/16;width:auto;max-width:100%;height:100%;max-height:none;margin:0 auto}.media-layer{position:absolute;top:0;right:0;bottom:0;left:0}.media-layer video{object-fit:contain;background:#000;width:100%;height:100%}.hp-center-x{transform:translate(-50%)}.hp-center-y{transform:translateY(-50%)}.hp-chip-panel[data-drop]{margin-top:8px;margin-bottom:0;top:100%;bottom:auto}.hp-top-bar{pointer-events:none;display:flex;position:absolute;top:8px;right:8px}.hp-top-bar>*{pointer-events:auto}.hp-story-list-btn{top:calc(8px + var(--hp-ctrl-btn-size) + 18px);right:12px}:host([data-cursor-hidden]),:host([data-cursor-hidden]) *{cursor:none!important}.hp-unmute-badge{z-index:25;background:var(--hp-tooltip-bg);color:var(--hp-tooltip-text);-webkit-backdrop-filter:blur(12px)saturate(160%);font:inherit;cursor:pointer;border:0;border-radius:9999px;align-items:center;gap:6px;padding:6px 12px 6px 10px;font-size:13px;font-weight:600;display:none;position:absolute;top:10px;left:10px;box-shadow:0 4px 14px #00000059}@media(hover:none)and (pointer:coarse){.hp-volume{display:none!important}.hp-unmute-badge[data-visible]{display:inline-flex}}.hp-error-screen{z-index:30;background:var(--hp-color-surface);justify-content:center;align-items:center;padding:12px;display:none;position:absolute;top:0;right:0;bottom:0;left:0}@supports (color:color-mix(in lab,red,red)){.hp-error-screen{background:color-mix(in srgb,var(--hp-color-surface) 94%,transparent)}}.hp-error-screen{-webkit-backdrop-filter:blur(16px)saturate(140%);color:var(--hp-color-on-surface);text-align:center;container-type:size}.hp-error-screen[data-visible]{animation:.22s hp-error-in;display:flex}@keyframes hp-error-in{0%{opacity:0}}.hp-error-card{flex-direction:column;align-items:center;gap:10px;max-width:340px;display:flex}.hp-error-icon{border:1px solid var(--hp-color-on-surface);border-radius:9999px;place-items:center;width:48px;height:48px;display:grid}@supports (color:color-mix(in lab,red,red)){.hp-error-icon{border:1px solid color-mix(in srgb,var(--hp-color-on-surface) 18%,transparent)}}.hp-error-icon{background:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp-error-icon{background:color-mix(in srgb,var(--hp-color-on-surface) 8%,transparent)}}.hp-error-icon{margin-bottom:2px;font-size:22px}.hp-error-message{margin:0;font-size:14px;font-weight:600;line-height:1.45}.hp-error-code{color:var(--hp-color-on-surface-muted);font-variant-numeric:tabular-nums;margin:-4px 0 0;font-size:12px}.hp-error-retry{border:1px solid var(--hp-chip-border);background:var(--hp-chip-bg);color:var(--hp-color-on-surface);font:inherit;cursor:pointer;border-radius:9999px;align-items:center;gap:6px;margin-top:6px;padding:7px 14px 7px 12px;font-size:13px;font-weight:600;transition:background-color .15s,border-color .15s;display:inline-flex}.hp-error-retry:hover{background:var(--hp-chip-bg-hover);border-color:var(--hp-chip-border-hover)}.hp-error-retry:focus-visible{outline:2px solid var(--hp-color-accent);outline-offset:2px}@container (max-height:240px){.hp-error-card{gap:6px}.hp-error-icon{width:36px;height:36px;margin-bottom:0;font-size:16px}.hp-error-message{font-size:13px}.hp-error-code{margin-top:-2px;font-size:11px}.hp-error-retry{margin-top:2px;padding:5px 12px 5px 10px;font-size:12px}}.hp-context-menu,.hp-stats,.hp-debug{border:1px solid var(--hp-panel-border);background:var(--hp-panel-bg);-webkit-backdrop-filter:blur(var(--hp-panel-blur)) saturate(160%);color:var(--hp-panel-text);text-shadow:var(--hp-panel-text-shadow,none);border-radius:10px;position:absolute;box-shadow:0 8px 28px #00000059}.hp-context-menu{z-index:40;min-width:200px;padding:4px;font-size:13px;display:none}.hp-context-menu[data-open]{animation:.12s hp-context-menu-in;display:block}@keyframes hp-context-menu-in{0%{opacity:0;transform:scale(.97)}}.hp-context-menu-item{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:space-between;align-items:center;gap:16px;padding:8px 10px;display:flex}.hp-context-menu-item[data-info]{cursor:default;font-weight:600}button.hp-context-menu-item:hover,button.hp-context-menu-item:focus-visible{background:var(--hp-panel-text)}@supports (color:color-mix(in lab,red,red)){button.hp-context-menu-item:hover,button.hp-context-menu-item:focus-visible{background:color-mix(in srgb,var(--hp-panel-text) 10%,transparent)}}button.hp-context-menu-item:hover,button.hp-context-menu-item:focus-visible{outline:none}.hp-context-menu-item+.hp-context-menu-item{margin-top:2px}.hp-context-menu-meta{color:var(--hp-panel-text-muted);font-variant-numeric:tabular-nums;font-weight:500}.hp-stats{z-index:28;width:min(360px,100% - 20px);max-height:calc(100% - 20px);padding:8px 12px 10px;font-size:11.5px;top:10px;left:10px;overflow:auto}.hp-stats-header{justify-content:space-between;align-items:center;margin-bottom:6px;font-size:12px;font-weight:700;display:flex}.hp-stats-close{color:inherit;cursor:pointer;background:0 0;border:0;border-radius:9999px;padding:4px;display:inline-flex}.hp-stats-close:hover{background:var(--hp-panel-text)}@supports (color:color-mix(in lab,red,red)){.hp-stats-close:hover{background:color-mix(in srgb,var(--hp-panel-text) 12%,transparent)}}.hp-stats-body{grid-template-columns:auto 1fr;gap:3px 12px;margin:0;display:grid}.hp-stats-body dt{color:var(--hp-panel-text-muted);white-space:nowrap}.hp-stats-body dd{text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums;margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow:hidden}.hp-seek-fb{z-index:8;border:1px solid var(--hp-chip-border);background:var(--hp-chip-bg);-webkit-backdrop-filter:blur(var(--hp-chip-blur)) saturate(160%);box-shadow:var(--hp-chip-shadow);color:var(--hp-chip-text);pointer-events:none;opacity:0;border-radius:9999px;align-items:center;gap:10px;padding:12px 20px 12px 16px;transition:opacity .18s,translate .22s cubic-bezier(.2,.8,.2,1);display:flex;position:absolute;top:50%}.hp-seek-fb[data-side=forward]{right:7%;translate:14px -50%}.hp-seek-fb[data-side=back]{flex-direction:row-reverse;padding:12px 16px 12px 20px;left:7%;translate:-14px -50%}.hp-seek-fb[data-visible]{opacity:1;translate:0 -50%}.hp-seek-fb-chevrons{display:flex}.hp-seek-fb-chevrons svg{fill:currentColor;opacity:.25;width:16px;height:16px;margin:0 -3px;animation:.9s ease-in-out infinite hp-seek-fb-chevron}.hp-seek-fb[data-side=back] .hp-seek-fb-chevrons{transform:scaleX(-1)}.hp-seek-fb-chevrons svg:nth-child(2){animation-delay:.15s}.hp-seek-fb-chevrons svg:nth-child(3){animation-delay:.3s}@keyframes hp-seek-fb-chevron{0%,to{opacity:.25}40%{opacity:1}}.hp-seek-fb-value{white-space:nowrap;align-items:baseline;gap:3px;display:flex}.hp-seek-fb-num{font-variant-numeric:tabular-nums;font-size:20px;font-weight:700;line-height:1;display:inline-block}.hp-seek-fb-unit{opacity:.75;font-size:12px;font-weight:600}.hp-seek-fb-bump{animation:.26s cubic-bezier(.2,.8,.2,1) hp-seek-fb-bump}@keyframes hp-seek-fb-bump{0%{transform:scale(1.25)}to{transform:scale(1)}}.video-area[data-compact] .hp-seek-fb{padding:8px 12px}.video-area[data-compact] .hp-seek-fb[data-side=forward]{right:4%}.video-area[data-compact] .hp-seek-fb[data-side=back]{padding:8px 12px;left:4%}.video-area[data-compact] .hp-seek-fb-chevrons{display:none}.video-area[data-compact] .hp-seek-fb-num{font-size:16px}.hp-sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media(prefers-reduced-motion:reduce){.hp-seek-fb,.hp-seek-fb-chevrons svg,.hp-seek-fb-bump{transition:none;animation:none}.hp-seek-fb-chevrons svg{opacity:.8}}.hp-skip-btn{position:relative}.hp-skip-btn>.hp-icon{font-size:calc(var(--hp-ctrl-icon-size) * 1.45)}.hp-skip-num{padding-top:calc(var(--hp-ctrl-icon-size) * .14);font-size:calc(var(--hp-ctrl-icon-size) * .56);letter-spacing:-.02em;font-variant-numeric:tabular-nums;pointer-events:none;justify-content:center;align-items:center;font-weight:700;line-height:1;display:flex;position:absolute;top:0;right:0;bottom:0;left:0}.hp-skip-num[data-long]{font-size:calc(var(--hp-ctrl-icon-size) * .42)}.hp-skip-btn:disabled{opacity:.4;cursor:default}.hp-center-play>.hp-chip{z-index:7;position:relative}.video-area[data-center-play-shifted] .hp-center-play>.hp-chip{width:var(--hp-center-play-size);height:var(--hp-center-play-size);translate:var(--hp-center-play-shift-x,0px) var(--hp-center-play-shift)}.video-area[data-pause-ad-ready]>:is(.media-layer,.hp-chrome,.hp-center-play,.hp-caption-layer,.hp-error-screen,.hp-mini-progress){right:var(--hp-pause-ad-w,0px);transition:right .38s cubic-bezier(.2,.8,.2,1),opacity .2s}.video-area[data-pause-ad] .media-layer video{object-fit:cover}.hp-pause-ad{z-index:25;width:var(--hp-pause-ad-panel-w,332px);box-sizing:border-box;background:var(--hp-color-surface,#0a0a0a);color:var(--hp-color-on-surface,#fff);visibility:hidden;flex-direction:column;justify-content:center;gap:10px;padding:12px 16px;transition:transform .38s cubic-bezier(.2,.8,.2,1),visibility 0s linear .38s;display:flex;position:absolute;top:0;bottom:0;right:0;transform:translate(100%)}.hp-pause-ad[data-open]{visibility:visible;transition:transform .38s cubic-bezier(.2,.8,.2,1);transform:none}.hp-pause-ad-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.hp-pause-ad-label{color:var(--hp-color-on-surface-muted,#ffffffb3);font-size:13px;font-weight:600}.hp-pause-ad-close{width:28px;height:28px;color:var(--hp-color-on-surface,#fff);cursor:pointer;background:0 0;border:0;border-radius:9999px;justify-content:center;align-items:center;padding:0;transition:background-color .15s;display:inline-flex}.hp-pause-ad-close:hover{background:var(--hp-chip-bg-hover)}.hp-pause-ad-body{border-radius:8px;justify-content:center;display:flex;overflow:hidden}.hp-pause-ad-resume{border:1px solid var(--hp-chip-border);background:var(--hp-chip-bg);color:var(--hp-color-on-surface,#fff);font:inherit;cursor:pointer;border-radius:9999px;align-self:stretch;padding:9px 14px;font-size:13px;font-weight:600;transition:background-color .15s,border-color .15s}.hp-pause-ad-resume:hover{background:var(--hp-chip-bg-hover);border-color:var(--hp-chip-border-hover)}.hp-pause-ad-close:focus-visible,.hp-pause-ad-resume:focus-visible{outline:2px solid var(--hp-color-accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){.video-area[data-pause-ad-ready]>:is(.media-layer,.hp-chrome,.hp-center-play,.hp-caption-layer,.hp-error-screen,.hp-mini-progress),.hp-pause-ad,.hp-pause-ad[data-open]{transition:none}}.hp-seek-thumb{width:var(--hp-seek-thumb-size);height:var(--hp-seek-thumb-size);background:var(--hp-color-accent);will-change:translate,scale;pointer-events:none;z-index:2;border-radius:9999px;transition:scale .15s;position:absolute;left:0;scale:.5}.hp-seekbar:hover .hp-seek-thumb,.hp-seekbar:active .hp-seek-thumb,.hp-seekbar:focus-visible .hp-seek-thumb{scale:1}.hp-seekbar[data-no-duration] .hp-seek-thumb{display:none}.hp-seek-hover-dot{width:var(--hp-seek-track-h-hover);height:var(--hp-seek-track-h-hover);background:var(--hp-color-on-surface);opacity:0;pointer-events:none;z-index:1;border-radius:9999px;transition:opacity .12s;position:absolute;top:50%;left:0;box-shadow:0 0 0 1px #00000073}.hp-seek-hover-dot[data-visible]{opacity:.9}.hp-mini-progress{z-index:6;pointer-events:none;background:var(--hp-color-on-surface);height:1px;position:absolute;bottom:0;left:0;right:0}@supports (color:color-mix(in lab,red,red)){.hp-mini-progress{background:color-mix(in srgb,var(--hp-color-on-surface) 25%,transparent)}}.hp-mini-progress{opacity:0;transition:opacity .2s}.hp-mini-progress[data-visible]:not([data-disabled]){opacity:1}.hp-mini-progress-fill{transform-origin:0;will-change:transform;position:absolute;top:0;right:0;bottom:0;left:0;transform:scaleX(0)}.hp-mini-progress-buffered{background:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp-mini-progress-buffered{background:color-mix(in srgb,var(--hp-color-on-surface) 40%,transparent)}}.hp-mini-progress-played{background:var(--hp-color-accent)}.hp-seek-time{border-radius:calc(var(--hp-radius) * .75);background:var(--hp-tooltip-bg);color:var(--hp-tooltip-text);-webkit-backdrop-filter:blur(12px)saturate(160%);font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none;visibility:hidden;z-index:20;padding:3px 7px;font-size:12px;font-weight:500;position:absolute;bottom:calc(100% + 8px);left:0;box-shadow:0 4px 14px #00000059}.hp-seek-time[data-visible]{visibility:visible}.hp-sprite-tooltip{pointer-events:none;visibility:hidden;z-index:20;flex-direction:column;align-items:center;gap:4px;display:flex;position:absolute;bottom:calc(100% + 8px);left:0}.hp-sprite-tooltip[data-visible]{visibility:visible}.hp-sprite-image{border-radius:calc(var(--hp-radius) * .75);border:2px solid var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp-sprite-image{border:2px solid color-mix(in srgb,var(--hp-color-on-surface) 85%,transparent)}}.hp-sprite-image{background-color:#000;background-repeat:no-repeat;box-shadow:0 4px 14px #00000059}.hp-sprite-time{background:var(--hp-tooltip-bg);color:var(--hp-tooltip-text);font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:4px;padding:2px 6px;font-size:12px}.hp-live-badge{height:var(--hp-ctrl-btn-size);color:var(--hp-color-on-surface);font:inherit;letter-spacing:.04em;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:9999px;align-items:center;gap:6px;padding:0 8px;font-size:12px;font-weight:600;display:inline-flex}.hp-live-badge:hover{background:var(--hp-chip-bg-hover)}.hp-live-badge:focus-visible{outline:2px solid var(--hp-color-accent);outline-offset:2px}.hp-live-dot{background:var(--hp-live-color,red);border-radius:50%;width:8px;height:8px;transition:background-color .16s}.hp-live-badge[data-behind]{color:var(--hp-color-on-surface-muted)}.hp-live-badge[data-behind] .hp-live-dot{background:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp-live-badge[data-behind] .hp-live-dot{background:color-mix(in srgb,var(--hp-color-on-surface) 45%,transparent)}}.hp-chapters{pointer-events:none;inset-inline:0;align-items:center;gap:2px;display:flex;position:absolute;top:0;bottom:0}.hp-chapter{min-width:1px;height:var(--hp-seek-track-h);background:var(--hp-color-on-surface);border-radius:1px;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.hp-chapter{background:color-mix(in srgb,var(--hp-color-on-surface) 25%,transparent)}}.hp-chapter{transition:height .15s}.hp-seekbar:hover .hp-chapter{height:var(--hp-seek-track-h-hover)}.hp-seekbar .hp-chapter[data-hover]{height:calc(var(--hp-seek-track-h-hover) * 1.6)}.hp-chapter-fill{transform-origin:0;will-change:transform;position:absolute;top:0;right:0;bottom:0;left:0;transform:scaleX(0)}.hp-chapter-buffered{background:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp-chapter-buffered{background:color-mix(in srgb,var(--hp-color-on-surface) 40%,transparent)}}.hp-chapter-played{background:var(--hp-color-accent)}.hp-chapter-tooltip{background:var(--hp-tooltip-bg);max-width:240px;color:var(--hp-tooltip-text);border-radius:calc(var(--hp-radius) * .75);-webkit-backdrop-filter:blur(12px)saturate(160%);text-align:center;pointer-events:none;white-space:nowrap;visibility:hidden;z-index:40;flex-direction:column;align-items:center;gap:2px;padding:4px 8px;font-size:12px;line-height:1.3;display:flex;position:absolute;bottom:calc(100% + 6px);left:0;box-shadow:0 4px 14px #00000059}.hp-chapter-tooltip[data-visible]{visibility:visible}.hp-chapter-tooltip-title{text-overflow:ellipsis;max-width:100%;font-weight:600;overflow:hidden}.hp-chapter-tooltip-time{opacity:.75;font-variant-numeric:tabular-nums}:host([data-sticky]){z-index:2147483000;border-radius:var(--hp-radius);box-shadow:0 8px 28px #00000073;width:min(360px,92vw)!important;aspect-ratio:var(--hp-aspect-ratio,16 / 9)!important;position:fixed!important}:host([data-sticky][data-sticky-corner=br]){inset:auto 16px 16px auto}:host([data-sticky][data-sticky-corner=bl]){inset:auto auto 16px 16px}:host([data-sticky][data-sticky-corner=tr]){inset:16px 16px auto auto}:host([data-sticky][data-sticky-corner=tl]){inset:16px auto auto 16px}.hp-caption-layer{z-index:5;pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0}.hp-caption-bubble{background:var(--hp-caption-bg);width:max-content;max-width:86%;color:var(--hp-caption-text);border-radius:var(--hp-caption-radius);font-size:calc(var(--hp-caption-font-size) * var(--hp-caption-size-multiplier,1));text-align:center;white-space:pre-line;cursor:grab;pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;padding:.3em .6em;line-height:1.4;transition:transform .24s cubic-bezier(.25,.8,.25,1);display:none;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.hp-caption-bubble.hp-caption-visible{display:inline-block}.hp-caption-bubble.hp-caption-dragging,.hp-caption-bubble.hp-caption-no-transition{transition:none}.hp-caption-bubble.hp-caption-dragging{cursor:grabbing}[part=ad-layer][data-nonlinear]{top:auto;bottom:var(--hp-nonlinear-ad-offset,72px);height:var(--hp-nonlinear-ad-height,33%);pointer-events:none}[part=ad-layer][data-nonlinear] *{pointer-events:none}[part=ad-layer][data-nonlinear] :is(iframe,img,a,button){pointer-events:auto}.hp-debug{--hp-panel-text:#f1f1f4;--hp-panel-text-muted:#f1f1f49e;--hp-panel-border:#ffffff1f;text-shadow:none;z-index:30;background:#0e0e12f2;flex-direction:column;min-width:0;font-size:12px;line-height:1.45;display:flex;top:8px;right:8px;bottom:8px;left:8px;overflow:hidden}.hp-debug:focus{outline:none}.hp-debug-header{border-bottom:1px solid var(--hp-panel-border);flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;padding:8px 8px 8px 12px;display:flex}.hp-debug-title{white-space:nowrap;align-items:center;gap:8px;min-width:0;font-size:13px;font-weight:700;display:flex}.hp-debug-count{font-variant-numeric:tabular-nums;background:#f8717138;border-radius:9999px;padding:1px 7px;font-size:11px}.hp-debug-count:empty{display:none}.hp-debug-actions{flex-shrink:0;align-items:center;gap:4px;display:flex}.hp-debug-btn{border:1px solid var(--hp-panel-border);color:inherit;font:inherit;cursor:pointer;background:0 0;border-radius:9999px;padding:4px 10px;font-size:11.5px}.hp-debug-btn:hover:not(:disabled){background:var(--hp-panel-text)}@supports (color:color-mix(in lab,red,red)){.hp-debug-btn:hover:not(:disabled){background:color-mix(in srgb,var(--hp-panel-text) 12%,transparent)}}.hp-debug-btn:disabled{opacity:.45;cursor:default}.hp-debug-list{overscroll-behavior:contain;flex:1;min-height:0;margin:0;padding:6px 12px 10px;list-style:none;overflow:hidden auto}.hp-debug-row{border-left:2px solid var(--hp-panel-text);padding:8px 0 8px 10px}@supports (color:color-mix(in lab,red,red)){.hp-debug-row{border-left:2px solid color-mix(in srgb,var(--hp-panel-text) 25%,transparent)}}.hp-debug-row{min-width:0}.hp-debug-row+.hp-debug-row{margin-top:6px}.hp-debug-row[data-fatal]{border-left-color:#f87171}.hp-debug-row-head{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:2px;display:flex}.hp-debug-time{color:var(--hp-panel-text-muted);font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.hp-debug-source,.hp-debug-fatal{background:var(--hp-panel-text);border-radius:9999px;padding:1px 7px;font-size:10.5px;font-weight:600}@supports (color:color-mix(in lab,red,red)){.hp-debug-source,.hp-debug-fatal{background:color-mix(in srgb,var(--hp-panel-text) 12%,transparent)}}.hp-debug-source[data-source=ads]{background:#f5c4513d}.hp-debug-source[data-source=stream],.hp-debug-source[data-source=media]{background:#60a5fa3d}.hp-debug-fatal{background:#f8717147}.hp-debug-message{overflow-wrap:anywhere;font-weight:600}.hp-debug-repeat{color:var(--hp-panel-text-muted);font-weight:500}.hp-debug-details{grid-template-columns:max-content minmax(0,1fr);gap:1px 10px;margin:4px 0 0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;display:grid}.hp-debug-details dt{color:var(--hp-panel-text-muted)}.hp-debug-details dd{overflow-wrap:anywhere;min-width:0;margin:0}.hp-debug-empty{color:var(--hp-panel-text-muted);margin:auto;padding:16px}.hp-debug-empty[hidden]{display:none}.hp-ad-return{z-index:25;color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;background:#0e0e12d1;border:1px solid #ffffff40;border-radius:999px;padding:10px 16px;font:600 14px/1.2 system-ui,-apple-system,sans-serif;animation:.2s ease-out hp-ad-return-in;position:absolute;bottom:64px;right:12px}@keyframes hp-ad-return-in{0%{opacity:0;transform:translateY(6px)}}:host([data-audio]) .hp-center-play{display:none}.hp-audio{z-index:1;text-align:left;pointer-events:none;color:#fff;background:linear-gradient(160deg,#2a1f2b,#0c0c10);background:radial-gradient(80% 90% at 20% 10%,var(--hp-color-accent,#e5484d),transparent 70%),linear-gradient(160deg,#1d1d24,#0c0c10);position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.hp-audio{background:radial-gradient(80% 90% at 20% 10%,color-mix(in srgb,var(--hp-color-accent,#e5484d) 38%,transparent),transparent 70%),linear-gradient(160deg,#1d1d24,#0c0c10)}}.hp-audio-backdrop{position:absolute;top:-8%;right:-8%;bottom:-8%;left:-8%}.hp-audio-backdrop img{object-fit:cover;filter:blur(28px)saturate(1.3)brightness(.55);width:100%;height:100%;transform:scale(1.08)}.hp-audio:not([data-cover]) .hp-audio-backdrop,.hp-audio:not([data-cover]) .hp-audio-sleeve img{display:none}.hp-audio-meta{z-index:3;text-shadow:0 1px 6px #0009;line-height:1.25;display:none;position:absolute;top:12px;left:14px;right:64px}.hp-audio[data-meta] .hp-audio-meta{display:block}.hp-audio-title{white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:700;overflow:hidden}.hp-audio-artist{opacity:.8;white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:12.5px;overflow:hidden}.hp-audio-area{inset:0 0 var(--hp-audio-bottom-space,66px) 0;justify-content:center;align-items:center;display:flex;position:absolute}.hp-audio[data-meta] .hp-audio-area{top:44px}.hp-audio-deck{height:var(--hp-deck-h,0px);flex:none;align-items:center;display:flex;position:relative}.hp-audio[data-position=left] .hp-audio-deck{flex-direction:row-reverse}.hp-audio-sleeve{z-index:2;width:var(--hp-deck-h,0px);height:var(--hp-deck-h,0px);background:radial-gradient(70% 70% at 30% 25%,#e5484d,#0000 75%),#26262d;background:radial-gradient(70% 70% at 30% 25%,var(--hp-color-accent,#e5484d),transparent 75%),#26262d;border-radius:6px;flex:none;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.hp-audio-sleeve{background:radial-gradient(70% 70% at 30% 25%,color-mix(in srgb,var(--hp-color-accent,#e5484d) 70%,#fff 0%),transparent 75%),#26262d}}.hp-audio-sleeve{box-shadow:0 18px 40px -12px #000000bf,0 0 0 1px #ffffff14}.hp-audio-sleeve img{object-fit:cover;width:100%;height:100%;display:block}.hp-audio-sleeve[hidden],.hp-vinyl[hidden],.hp-tonearm-holder[hidden]{display:none}.hp-vinyl{z-index:1;width:calc(var(--hp-deck-h,0px) * .96);height:calc(var(--hp-deck-h,0px) * .96);pointer-events:auto;touch-action:none;-webkit-tap-highlight-color:transparent;filter:drop-shadow(0 14px 26px #0009);border-radius:50%;outline:none;flex:none;transition:margin .45s cubic-bezier(.2,.8,.2,1);position:relative}.hp-audio[data-position=right] .hp-vinyl{margin-left:calc(var(--hp-deck-h) * -.56)}.hp-audio[data-position=left] .hp-vinyl{margin-right:calc(var(--hp-deck-h) * -.56)}.hp-audio[data-position=right][data-playing] .hp-vinyl{margin-left:calc(var(--hp-deck-h) * -.46)}.hp-audio[data-position=left][data-playing] .hp-vinyl{margin-right:calc(var(--hp-deck-h) * -.46)}.hp-audio:not([data-laid-out]) .hp-vinyl{transition:none}.hp-vinyl[data-scratch]:not([data-live]){cursor:grab}.hp-audio[data-scratching] .hp-vinyl{cursor:grabbing}.hp-vinyl:focus-visible{box-shadow:0 0 0 3px #ffffffb3;box-shadow:0 0 0 3px var(--hp-color-accent,#e5484d)}@supports (color:color-mix(in lab,red,red)){.hp-vinyl:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb,var(--hp-color-accent,#e5484d) 80%,transparent)}}.hp-vinyl-disc{will-change:transform;position:absolute;top:0;right:0;bottom:0;left:0}.hp-vinyl-disc svg,.hp-tonearm svg{width:100%;height:100%;display:block}.hp-vinyl-sheen{pointer-events:none;background:conic-gradient(from 200deg,#0000,#ffffff21 22deg,#0000 48deg,#0000 180deg,#ffffff17 205deg,#0000 232deg);border-radius:50%;position:absolute;top:0;right:0;bottom:0;left:0;-webkit-mask:radial-gradient(circle,#0000 0 35%,#000 36% 99%,#0000 100%);mask:radial-gradient(circle,#0000 0 35%,#000 36% 99%,#0000 100%)}.hp-tonearm-holder{pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0}.hp-audio[data-position=left] .hp-tonearm-holder{transform:scaleX(-1)}.hp-tonearm{transform-origin:70% 11%;filter:drop-shadow(0 6px 8px #00000080);width:46%;height:92%;transition:transform .6s cubic-bezier(.3,.7,.2,1);position:absolute;top:-6%;right:-14%;transform:rotate(-26deg)}.hp-audio[data-playing] .hp-tonearm{transform:rotate(0)}@media(prefers-reduced-motion:reduce){.hp-vinyl,.hp-tonearm{transition:none}}.hp-audio[data-short][data-meta] .hp-audio-meta{display:none}.hp-audio[data-short][data-meta] .hp-audio-area{top:6px}[part=ad-layer][data-audio-ad]{background:0 0}[part=ad-layer][data-audio-ad] video{opacity:0}.hp-audio:after{content:"";pointer-events:none;z-index:2;background:linear-gradient(#0000,#00000047 45%,#0000009e);height:min(140px,45%);position:absolute;bottom:0;left:0;right:0}:host([data-audio-compact]) .video-area{aspect-ratio:auto;height:var(--hp-audio-bar-height,84px);overflow:visible}:host([data-audio-compact]) .hp-audio{border-radius:var(--hp-radius);background:linear-gradient(120deg,#24242c,#141418);background:linear-gradient(120deg,var(--hp-color-accent,#e5484d),transparent 60%),var(--hp-color-surface,#141418)}@supports (color:color-mix(in lab,red,red)){:host([data-audio-compact]) .hp-audio{background:linear-gradient(120deg,color-mix(in srgb,var(--hp-color-accent,#e5484d) 16%,transparent),transparent 60%),var(--hp-color-surface,#141418)}}:host([data-audio-compact]) .hp-audio>*,:host([data-audio-compact]) .hp-audio:after,:host([data-audio-compact]) .hp-caption-layer,:host([data-audio-compact]) .hp-loading-spinner,:host([data-audio-compact]) .hp-chrome:before,:host([data-audio-compact]) .hp-chrome:after{display:none}.hp-bar-meta{min-width:0;color:var(--hp-color-on-surface,#fff);pointer-events:none;align-items:center;gap:10px;padding:0 6px;display:flex}.hp-bar-meta[data-empty] .hp-bar-text{display:none}.hp-bar-text{flex-direction:column;min-width:0;line-height:1.25;display:flex}.hp-bar-title{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:700;overflow:hidden}.hp-bar-sub{opacity:.72;white-space:nowrap;text-overflow:ellipsis;font-size:11.5px;overflow:hidden}.hp-bar-sub:empty{display:none}.hp-bar-eq{flex:none;align-items:flex-end;gap:2px;width:14px;height:14px;display:inline-flex}.hp-bar-eq i{background:var(--hp-color-accent,#fff);border-radius:1px;flex:1;height:30%;transition:height .2s}.hp-bar-meta[data-playing] .hp-bar-eq i{animation:.9s ease-in-out infinite alternate hp-bar-eq}.hp-bar-meta[data-playing] .hp-bar-eq i:nth-child(2){animation-duration:.7s;animation-delay:-.3s}.hp-bar-meta[data-playing] .hp-bar-eq i:nth-child(3){animation-duration:1.1s;animation-delay:-.6s}@keyframes hp-bar-eq{0%{height:25%}to{height:100%}}@media(prefers-reduced-motion:reduce){.hp-bar-meta[data-playing] .hp-bar-eq i{height:70%;animation:none}}.hp-lock{vertical-align:-2px;display:inline-block}.hp-rw-button{color:#fff;cursor:pointer;pointer-events:auto;-webkit-tap-highlight-color:transparent;background:#0c0c10b8;border:1px solid #ffffff38;border-radius:999px;align-items:center;gap:6px;padding:7px 12px;font:600 12.5px/1 system-ui,-apple-system,sans-serif;display:inline-flex;position:absolute;top:12px;left:12px;box-shadow:0 6px 18px -8px #000000b3}.hp-rw-button:hover{background:#0c0c10e0}.hp-rw-button[hidden]{display:none}.hp-rw-button .hp-lock{color:var(--hp-color-accent,#fff)}.hp-rw-dialog{z-index:45;color:#fff;text-align:center;background:#0000009e;justify-content:center;align-items:center;padding:12px;animation:.18s ease-out hp-rw-fade;display:flex;position:absolute;top:0;right:0;bottom:0;left:0}.hp-rw-card{background:#14141af5;border:1px solid #ffffff24;border-radius:14px;width:min(360px,100%);max-height:100%;padding:18px 18px 16px;overflow:auto;box-shadow:0 20px 50px -20px #000c}.hp-rw-icon{color:var(--hp-color-accent,#fff);background:#ffffff14;border-radius:50%;padding:9px;display:inline-flex}.hp-rw-icon .hp-lock{width:18px;height:18px}.hp-rw-title{margin-top:10px;font-size:15px;font-weight:700}.hp-rw-text{opacity:.82;margin-top:6px;font-size:13px;line-height:1.45}.hp-rw-actions{justify-content:center;gap:8px;margin-top:14px;display:flex}.hp-rw-actions:empty{display:none}.hp-rw-btn{color:#fff;cursor:pointer;background:0 0;border:1px solid #fff3;border-radius:999px;padding:8px 14px;font:600 13px/1 system-ui,-apple-system,sans-serif}.hp-rw-btn-primary{background:var(--hp-color-accent,#fff);color:var(--hp-color-on-accent,#0a0a0a);border-color:#0000}.hp-rw-spinner{border:2px solid #ffffff40;border-top-color:#fff;border-radius:50%;width:22px;height:22px;margin:4px auto 0;animation:.8s linear infinite hp-rw-spin}.hp-rw-toast{z-index:45;color:#fff;pointer-events:none;background:#0c0c10d9;border-radius:999px;padding:8px 14px;font:600 13px/1 system-ui,-apple-system,sans-serif;animation:.2s ease-out hp-rw-fade;position:absolute;top:12px;left:50%;transform:translate(-50%)}@keyframes hp-rw-fade{0%{opacity:0}}@keyframes hp-rw-spin{to{transform:rotate(360deg)}}.hp-settings-panel [data-locked],.hp-chip-panel [data-locked]{opacity:.85}.hp-sponsor-logo{z-index:21;width:var(--hp-sponsor-logo-w,96px);color:#fff;filter:drop-shadow(0 2px 6px #0000008c);flex-direction:column;align-items:center;gap:4px;text-decoration:none;transition:opacity .25s,right .35s cubic-bezier(.2,.8,.2,1),bottom .35s cubic-bezier(.2,.8,.2,1);animation:.4s ease-out hp-rw-fade;display:flex;position:absolute}.hp-sponsor-logo[data-position=top-left]{top:12px;left:12px}.hp-sponsor-logo[data-position=top-right]{top:12px;right:var(--hp-sponsor-avoid-right,12px)}.hp-sponsor-logo[data-position=bottom-left]{bottom:var(--hp-sponsor-avoid-bottom,76px);left:12px}.hp-sponsor-logo[data-position=bottom-right]{bottom:var(--hp-sponsor-avoid-bottom,76px);right:12px}.video-area[data-chrome-hidden] .hp-sponsor-logo[data-position=top-right]{right:12px}.video-area[data-chrome-hidden] .hp-sponsor-logo[data-position=bottom-left],.video-area[data-chrome-hidden] .hp-sponsor-logo[data-position=bottom-right]{bottom:12px}.hp-sponsor-logo img{width:100%;height:auto;display:block}.hp-sponsor-label{text-align:center;white-space:nowrap;text-overflow:ellipsis;letter-spacing:.08em;text-transform:uppercase;opacity:.85;max-width:100%;font:600 10px/1 system-ui,-apple-system,sans-serif;overflow:hidden}.video-area:has(.hp-rw-button:not([hidden])) .hp-sponsor-logo[data-position=top-left]{top:52px}.hp-sponsor-intro{z-index:22;color:#fff;pointer-events:none;background:#0c0c10d1;border-radius:999px;align-items:center;gap:10px;max-width:calc(100% - 32px);padding:8px 16px 8px 8px;font:600 14px/1.2 system-ui,-apple-system,sans-serif;transition:opacity .35s,transform .35s;animation:.45s cubic-bezier(.2,.8,.2,1) hp-sponsor-in;display:flex;position:absolute;bottom:84px;left:50%;transform:translate(-50%);box-shadow:0 12px 30px -12px #000c}.hp-sponsor-intro[data-leaving]{opacity:0;transform:translate(-50%,8px)}.hp-sponsor-intro img{border-radius:6px;width:auto;max-width:96px;height:28px}.hp-sponsor-intro span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}@keyframes hp-sponsor-in{0%{opacity:0;transform:translate(-50%,12px)scale(.96)}}:host([data-sponsor-hidden]) .hp-sponsor-logo,:host([data-sponsor-hidden]) .hp-sponsor-intro{display:none}.hp-adtrigger{z-index:26;box-sizing:border-box;pointer-events:none;justify-content:center;align-items:center;padding:12px;display:none;position:absolute;top:0;right:0;bottom:0;left:0}.hp-adtrigger[data-open]{animation:.3s ease-out hp-adtrigger-in;display:flex}.hp-adtrigger[data-backdrop]{pointer-events:auto;background:#0000009e}.hp-adtrigger[data-layout=full]{padding:0}.hp-adtrigger[data-layout=none]{justify-content:flex-start;align-items:flex-start;padding:0}.hp-adtrigger[data-layout=none] .hp-adtrigger-frame{position:static}.hp-adtrigger[data-layout=top]{align-items:flex-start}.hp-adtrigger[data-layout=bottom]{align-items:flex-end;padding-bottom:72px}.hp-adtrigger[data-layout=top-left]{justify-content:flex-start;align-items:flex-start}.hp-adtrigger[data-layout=top-right]{justify-content:flex-end;align-items:flex-start}.hp-adtrigger[data-layout=bottom-left]{justify-content:flex-start;align-items:flex-end;padding-bottom:72px}.hp-adtrigger[data-layout=bottom-right]{justify-content:flex-end;align-items:flex-end;padding-bottom:72px}.hp-adtrigger-frame{pointer-events:auto;max-width:100%;max-height:100%;position:relative}.hp-adtrigger[data-layout=full] .hp-adtrigger-frame{width:100%;height:100%}.hp-adtrigger-frame[data-sized]{width:min(var(--hp-adtrigger-w),100%);height:min(var(--hp-adtrigger-h),100%)}.hp-adtrigger[data-layout=full] ::slotted(*),.hp-adtrigger-frame[data-sized] ::slotted(*){width:100%;height:100%;display:block}.hp-adtrigger-label{z-index:1;color:#fff;letter-spacing:.08em;text-transform:uppercase;pointer-events:none;background:#000000a8;border-radius:4px;padding:3px 7px;font:600 10px/1 system-ui,-apple-system,sans-serif;position:absolute;top:8px;left:8px}.hp-adtrigger-close{z-index:2;color:#fff;cursor:pointer;background:#000000b8;border:0;border-radius:999px;place-items:center;width:30px;height:30px;padding:0;display:grid;position:absolute;top:6px;right:6px}.hp-adtrigger-close[hidden]{display:none}.hp-adtrigger-close:focus-visible{outline:2px solid var(--hp-color-accent,#fff);outline-offset:2px}.hp-cast-overlay{z-index:12;color:#fff;text-align:center;pointer-events:none;background:radial-gradient(#14141adb,#060609f5);flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:16px;font:600 15px/1.3 system-ui,-apple-system,sans-serif;display:none;position:absolute;top:0;right:0;bottom:0;left:0}.hp-cast-overlay[data-open]{display:flex}.hp-cast-overlay .hp-icon{color:var(--hp-color-accent,#fff);font-size:44px}.hp-cast-overlay-ad{background:#ffffff24;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:600;display:none}.hp-cast-overlay[data-break] .hp-cast-overlay-ad{display:inline-block}.video-area[data-casting] video{visibility:hidden}[part=cast-button][data-connecting] .hp-icon{animation:1s ease-in-out infinite hp-cast-pulse}@keyframes hp-cast-pulse{50%{opacity:.35}}@keyframes hp-adtrigger-in{0%{opacity:0}}@media(prefers-reduced-motion:reduce){.hp-sponsor-intro,.hp-rw-dialog,.hp-rw-toast{animation:none}}@media(hover:none)and (pointer:coarse){.video-area:has(.hp-unmute-badge[data-visible]) .hp-rw-button,.video-area:has(.hp-unmute-badge[data-visible]) .hp-sponsor-logo[data-position=top-left]{top:52px}.video-area:has(.hp-unmute-badge[data-visible]):has(.hp-rw-button:not([hidden])) .hp-sponsor-logo[data-position=top-left]{top:92px}}.video-area[data-compact] .hp-rw-icon{display:none}.video-area[data-compact] .hp-rw-card{padding:12px 14px}.video-area[data-compact] .hp-rw-title{margin-top:0;font-size:14px}.video-area[data-compact] .hp-rw-text{font-size:12px;line-height:1.4}.video-area[data-compact] .hp-rw-actions{margin-top:10px}.hp-sponsor-logo[data-compact]{width:min(var(--hp-sponsor-logo-w,96px),48px);gap:2px}.hp-sponsor-logo[data-compact] .hp-sponsor-label{font-size:8.5px}:host([data-sponsor-intro]) .hp-sponsor-logo{pointer-events:none;opacity:0!important}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}';
5
- function W() {
1
+ var Re = Object.defineProperty;
2
+ var ze = (n, t, e) => t in n ? Re(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e;
3
+ var s = (n, t, e) => ze(n, typeof t != "symbol" ? t + "" : t, e);
4
+ const Oe = '/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial}}}@layer theme{:root,:host{--hp-font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--hp-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--hp-color-black:#000;--hp-color-white:#fff;--hp-spacing:.25rem;--hp-container-xs:20rem;--hp-text-xs:.75rem;--hp-text-xs--line-height:calc(1 / .75);--hp-text-sm:.875rem;--hp-text-sm--line-height:calc(1.25 / .875);--hp-text-base:1rem;--hp-text-base--line-height: 1.5 ;--hp-text-lg:1.125rem;--hp-text-lg--line-height:calc(1.75 / 1.125);--hp-text-xl:1.25rem;--hp-text-xl--line-height:calc(1.75 / 1.25);--hp-text-2xl:1.5rem;--hp-text-2xl--line-height:calc(2 / 1.5);--hp-font-weight-medium:500;--hp-font-weight-semibold:600;--hp-radius-lg:.5rem;--hp-animate-spin:spin 1s linear infinite;--hp-aspect-video:16 / 9;--hp-default-transition-duration:.15s;--hp-default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--hp-default-font-family:var(--hp-font-sans);--hp-default-mono-font-family:var(--hp-font-mono);--hp-color-accent:#fff;--hp-color-on-accent:#0a0a0a;--hp-color-surface:#0a0a0a;--hp-color-surface-elev:#1a1a1a;--hp-color-on-surface:#fff;--hp-color-on-surface-muted:#a3a3a3}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--hp-default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--hp-default-font-feature-settings,normal);font-variation-settings:var(--hp-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--hp-default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--hp-default-mono-font-feature-settings,normal);font-variation-settings:var(--hp-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.hp\\:pointer-events-auto{pointer-events:auto}.hp\\:pointer-events-none{pointer-events:none}.hp\\:absolute{position:absolute}.hp\\:relative{position:relative}.hp\\:sticky{position:sticky}.hp\\:inset-0{top:0;right:0;bottom:0;left:0}.hp\\:inset-x-0{inset-inline:0}.hp\\:inset-y-0{inset-block:0}.hp\\:top-0{top:0}.hp\\:top-1{top:var(--hp-spacing)}.hp\\:top-1\\/2{top:50%}.hp\\:right-0{right:0}.hp\\:right-1{right:var(--hp-spacing)}.hp\\:right-2{right:calc(var(--hp-spacing) * 2)}.hp\\:bottom-0{bottom:0}.hp\\:bottom-full{bottom:100%}.hp\\:left-1\\/2{left:50%}.hp\\:z-10{z-index:10}.hp\\:z-20{z-index:20}.hp\\:z-30{z-index:30}.hp\\:z-40{z-index:40}.hp\\:m-0{margin:0}.hp\\:my-1{margin-block:var(--hp-spacing)}.hp\\:mt-0\\.5{margin-top:calc(var(--hp-spacing) * .5)}.hp\\:mt-1{margin-top:var(--hp-spacing)}.hp\\:mt-2{margin-top:calc(var(--hp-spacing) * 2)}.hp\\:mt-8{margin-top:calc(var(--hp-spacing) * 8)}.hp\\:mb-1{margin-bottom:var(--hp-spacing)}.hp\\:mb-2{margin-bottom:calc(var(--hp-spacing) * 2)}.hp\\:mb-16{margin-bottom:calc(var(--hp-spacing) * 16)}.hp\\:ml-1{margin-left:var(--hp-spacing)}.hp\\:block{display:block}.hp\\:flex{display:flex}.hp\\:hidden{display:none}.hp\\:inline-block{display:inline-block}.hp\\:aspect-\\[9\\/16\\]{aspect-ratio:9/16}.hp\\:aspect-video{aspect-ratio:var(--hp-aspect-video)}.hp\\:h-0\\.5{height:calc(var(--hp-spacing) * .5)}.hp\\:h-1{height:var(--hp-spacing)}.hp\\:h-1\\/3{height:33.3333%}.hp\\:h-3{height:calc(var(--hp-spacing) * 3)}.hp\\:h-6{height:calc(var(--hp-spacing) * 6)}.hp\\:h-7{height:calc(var(--hp-spacing) * 7)}.hp\\:h-8{height:calc(var(--hp-spacing) * 8)}.hp\\:h-9{height:calc(var(--hp-spacing) * 9)}.hp\\:h-10{height:calc(var(--hp-spacing) * 10)}.hp\\:h-16{height:calc(var(--hp-spacing) * 16)}.hp\\:h-20{height:calc(var(--hp-spacing) * 20)}.hp\\:h-\\[var\\(--hp-ctrl-btn-size\\)\\]{height:var(--hp-ctrl-btn-size)}.hp\\:h-\\[var\\(--hp-seek-hit-h\\)\\]{height:var(--hp-seek-hit-h)}.hp\\:h-\\[var\\(--hp-seek-track-h\\)\\]{height:var(--hp-seek-track-h)}.hp\\:h-full{height:100%}.hp\\:max-h-64{max-height:calc(var(--hp-spacing) * 64)}.hp\\:max-h-80{max-height:calc(var(--hp-spacing) * 80)}.hp\\:w-0{width:0}.hp\\:w-0\\.5{width:calc(var(--hp-spacing) * .5)}.hp\\:w-1{width:var(--hp-spacing)}.hp\\:w-1\\.5{width:calc(var(--hp-spacing) * 1.5)}.hp\\:w-3{width:calc(var(--hp-spacing) * 3)}.hp\\:w-6{width:calc(var(--hp-spacing) * 6)}.hp\\:w-7{width:calc(var(--hp-spacing) * 7)}.hp\\:w-8{width:calc(var(--hp-spacing) * 8)}.hp\\:w-9{width:calc(var(--hp-spacing) * 9)}.hp\\:w-10{width:calc(var(--hp-spacing) * 10)}.hp\\:w-14{width:calc(var(--hp-spacing) * 14)}.hp\\:w-16{width:calc(var(--hp-spacing) * 16)}.hp\\:w-48{width:calc(var(--hp-spacing) * 48)}.hp\\:w-72{width:calc(var(--hp-spacing) * 72)}.hp\\:w-\\[var\\(--hp-ctrl-btn-size\\)\\]{width:var(--hp-ctrl-btn-size)}.hp\\:w-full{width:100%}.hp\\:max-w-\\[80\\%\\]{max-width:80%}.hp\\:max-w-\\[85\\%\\]{max-width:85%}.hp\\:max-w-full{max-width:100%}.hp\\:max-w-xs{max-width:var(--hp-container-xs)}.hp\\:min-w-0{min-width:0}.hp\\:flex-1{flex:1}.hp\\:flex-shrink-0,.hp\\:shrink-0{flex-shrink:0}.hp\\:animate-spin{animation:var(--hp-animate-spin)}.hp\\:cursor-pointer{cursor:pointer}.hp\\:touch-none{touch-action:none}.hp\\:list-none{list-style-type:none}.hp\\:flex-col{flex-direction:column}.hp\\:flex-wrap{flex-wrap:wrap}.hp\\:items-center{align-items:center}.hp\\:items-end{align-items:flex-end}.hp\\:justify-between{justify-content:space-between}.hp\\:justify-center{justify-content:center}.hp\\:gap-0\\.5{gap:calc(var(--hp-spacing) * .5)}.hp\\:gap-1{gap:var(--hp-spacing)}.hp\\:gap-1\\.5{gap:calc(var(--hp-spacing) * 1.5)}.hp\\:gap-2{gap:calc(var(--hp-spacing) * 2)}.hp\\:gap-3{gap:calc(var(--hp-spacing) * 3)}.hp\\:self-end{align-self:flex-end}.hp\\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hp\\:overflow-hidden{overflow:hidden}.hp\\:overflow-y-auto{overflow-y:auto}.hp\\:rounded{border-radius:.25rem}.hp\\:rounded-full{border-radius:3.40282e38px}.hp\\:rounded-lg{border-radius:var(--hp-radius-lg)}.hp\\:border{border-style:var(--tw-border-style);border-width:1px}.hp\\:border-0{border-style:var(--tw-border-style);border-width:0}.hp\\:border-2{border-style:var(--tw-border-style);border-width:2px}.hp\\:border-\\[3px\\]{border-style:var(--tw-border-style);border-width:3px}.hp\\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.hp\\:border-on-surface\\/10{border-color:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp\\:border-on-surface\\/10{border-color:color-mix(in oklab,var(--hp-color-on-surface) 10%,transparent)}}.hp\\:border-on-surface\\/20{border-color:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp\\:border-on-surface\\/20{border-color:color-mix(in oklab,var(--hp-color-on-surface) 20%,transparent)}}.hp\\:border-on-surface\\/30{border-color:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp\\:border-on-surface\\/30{border-color:color-mix(in oklab,var(--hp-color-on-surface) 30%,transparent)}}.hp\\:border-t-accent{border-top-color:var(--hp-color-accent)}.hp\\:bg-accent,.hp\\:bg-accent\\/15{background-color:var(--hp-color-accent)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-accent\\/15{background-color:color-mix(in oklab,var(--hp-color-accent) 15%,transparent)}}.hp\\:bg-black,.hp\\:bg-black\\/30{background-color:var(--hp-color-black)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-black\\/30{background-color:color-mix(in oklab,var(--hp-color-black) 30%,transparent)}}.hp\\:bg-black\\/40{background-color:var(--hp-color-black)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-black\\/40{background-color:color-mix(in oklab,var(--hp-color-black) 40%,transparent)}}.hp\\:bg-black\\/60{background-color:var(--hp-color-black)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-black\\/60{background-color:color-mix(in oklab,var(--hp-color-black) 60%,transparent)}}.hp\\:bg-black\\/70{background-color:var(--hp-color-black)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-black\\/70{background-color:color-mix(in oklab,var(--hp-color-black) 70%,transparent)}}.hp\\:bg-black\\/85{background-color:var(--hp-color-black)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-black\\/85{background-color:color-mix(in oklab,var(--hp-color-black) 85%,transparent)}}.hp\\:bg-on-surface,.hp\\:bg-on-surface\\/20{background-color:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-on-surface\\/20{background-color:color-mix(in oklab,var(--hp-color-on-surface) 20%,transparent)}}.hp\\:bg-on-surface\\/25{background-color:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-on-surface\\/25{background-color:color-mix(in oklab,var(--hp-color-on-surface) 25%,transparent)}}.hp\\:bg-on-surface\\/40{background-color:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-on-surface\\/40{background-color:color-mix(in oklab,var(--hp-color-on-surface) 40%,transparent)}}.hp\\:bg-surface{background-color:var(--hp-color-surface)}.hp\\:bg-surface-elev{background-color:var(--hp-color-surface-elev)}.hp\\:bg-transparent{background-color:#0000}.hp\\:bg-white,.hp\\:bg-white\\/15{background-color:var(--hp-color-white)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-white\\/15{background-color:color-mix(in oklab,var(--hp-color-white) 15%,transparent)}}.hp\\:bg-white\\/30{background-color:var(--hp-color-white)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-white\\/30{background-color:color-mix(in oklab,var(--hp-color-white) 30%,transparent)}}.hp\\:bg-white\\/40{background-color:var(--hp-color-white)}@supports (color:color-mix(in lab,red,red)){.hp\\:bg-white\\/40{background-color:color-mix(in oklab,var(--hp-color-white) 40%,transparent)}}.hp\\:bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.hp\\:from-black\\/80{--tw-gradient-from:var(--hp-color-black)}@supports (color:color-mix(in lab,red,red)){.hp\\:from-black\\/80{--tw-gradient-from:color-mix(in oklab, var(--hp-color-black) 80%, transparent)}}.hp\\:from-black\\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hp\\:to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hp\\:bg-cover{background-size:cover}.hp\\:bg-center{background-position:50%}.hp\\:object-cover{object-fit:cover}.hp\\:p-0{padding:0}.hp\\:p-1\\.5{padding:calc(var(--hp-spacing) * 1.5)}.hp\\:p-2{padding:calc(var(--hp-spacing) * 2)}.hp\\:p-3{padding:calc(var(--hp-spacing) * 3)}.hp\\:p-4{padding:calc(var(--hp-spacing) * 4)}.hp\\:px-1{padding-inline:var(--hp-spacing)}.hp\\:px-1\\.5{padding-inline:calc(var(--hp-spacing) * 1.5)}.hp\\:px-2{padding-inline:calc(var(--hp-spacing) * 2)}.hp\\:px-3{padding-inline:calc(var(--hp-spacing) * 3)}.hp\\:px-4{padding-inline:calc(var(--hp-spacing) * 4)}.hp\\:py-1{padding-block:var(--hp-spacing)}.hp\\:py-1\\.5{padding-block:calc(var(--hp-spacing) * 1.5)}.hp\\:py-2{padding-block:calc(var(--hp-spacing) * 2)}.hp\\:pt-6{padding-top:calc(var(--hp-spacing) * 6)}.hp\\:pb-2{padding-bottom:calc(var(--hp-spacing) * 2)}.hp\\:text-center{text-align:center}.hp\\:text-left{text-align:left}.hp\\:font-mono{font-family:var(--hp-font-mono)}.hp\\:text-2xl{font-size:var(--hp-text-2xl);line-height:var(--tw-leading,var(--hp-text-2xl--line-height))}.hp\\:text-base{font-size:var(--hp-text-base);line-height:var(--tw-leading,var(--hp-text-base--line-height))}.hp\\:text-lg{font-size:var(--hp-text-lg);line-height:var(--tw-leading,var(--hp-text-lg--line-height))}.hp\\:text-sm{font-size:var(--hp-text-sm);line-height:var(--tw-leading,var(--hp-text-sm--line-height))}.hp\\:text-xl{font-size:var(--hp-text-xl);line-height:var(--tw-leading,var(--hp-text-xl--line-height))}.hp\\:text-xs{font-size:var(--hp-text-xs);line-height:var(--tw-leading,var(--hp-text-xs--line-height))}.hp\\:text-\\[length\\:var\\(--hp-ctrl-icon-size\\)\\]{font-size:var(--hp-ctrl-icon-size)}.hp\\:leading-none{--tw-leading:1;line-height:1}.hp\\:font-medium{--tw-font-weight:var(--hp-font-weight-medium);font-weight:var(--hp-font-weight-medium)}.hp\\:font-semibold{--tw-font-weight:var(--hp-font-weight-semibold);font-weight:var(--hp-font-weight-semibold)}.hp\\:whitespace-nowrap{white-space:nowrap}.hp\\:text-accent{color:var(--hp-color-accent)}.hp\\:text-on-accent{color:var(--hp-color-on-accent)}.hp\\:text-on-surface{color:var(--hp-color-on-surface)}.hp\\:text-on-surface-muted{color:var(--hp-color-on-surface-muted)}.hp\\:text-white{color:var(--hp-color-white)}.hp\\:tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.hp\\:underline{text-decoration-line:underline}.hp\\:opacity-0{opacity:0}.hp\\:opacity-60{opacity:.6}.hp\\:opacity-70{opacity:.7}.hp\\:opacity-80{opacity:.8}.hp\\:opacity-90{opacity:.9}.hp\\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hp\\:shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hp\\:drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.hp\\:transition-\\[height\\]{transition-property:height;transition-timing-function:var(--tw-ease,var(--hp-default-transition-timing-function));transition-duration:var(--tw-duration,var(--hp-default-transition-duration))}.hp\\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--hp-default-transition-timing-function));transition-duration:var(--tw-duration,var(--hp-default-transition-duration))}.hp\\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--hp-default-transition-timing-function));transition-duration:var(--tw-duration,var(--hp-default-transition-duration))}.hp\\:duration-100{--tw-duration:.1s;transition-duration:.1s}.hp\\:duration-150{--tw-duration:.15s;transition-duration:.15s}.hp\\:duration-200{--tw-duration:.2s;transition-duration:.2s}.hp\\:duration-300{--tw-duration:.3s;transition-duration:.3s}.hp\\:will-change-\\[opacity\\]{will-change:opacity}.hp\\:select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.hp\\:group-hover\\:h-\\[var\\(--hp-seek-track-h-hover\\)\\]:is(:where(.hp\\:group):hover *){height:var(--hp-seek-track-h-hover)}.hp\\:hover\\:bg-on-surface\\/5:hover{background-color:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp\\:hover\\:bg-on-surface\\/5:hover{background-color:color-mix(in oklab,var(--hp-color-on-surface) 5%,transparent)}}.hp\\:hover\\:bg-on-surface\\/10:hover{background-color:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp\\:hover\\:bg-on-surface\\/10:hover{background-color:color-mix(in oklab,var(--hp-color-on-surface) 10%,transparent)}}.hp\\:hover\\:opacity-80:hover{opacity:.8}}.hp\\:data-\\[active\\=true\\]\\:bg-accent\\/15[data-active=true]{background-color:var(--hp-color-accent)}@supports (color:color-mix(in lab,red,red)){.hp\\:data-\\[active\\=true\\]\\:bg-accent\\/15[data-active=true]{background-color:color-mix(in oklab,var(--hp-color-accent) 15%,transparent)}}.hp\\:data-\\[active\\=true\\]\\:text-on-surface[data-active=true]{color:var(--hp-color-on-surface)}}.hp-icon{font-variant:normal;text-transform:none;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:hope-icons;font-style:normal;font-weight:400;line-height:1}.hp-icon-airplay:before{content:""}.hp-icon-cast-connected:before{content:""}.hp-icon-cast:before{content:""}.hp-icon-check:before{content:""}.hp-icon-chevron-left:before{content:""}.hp-icon-close:before{content:""}.hp-icon-fullscreen-enter:before{content:""}.hp-icon-fullscreen-exit:before{content:""}.hp-icon-grid:before{content:""}.hp-icon-loop:before{content:""}.hp-icon-pause:before{content:""}.hp-icon-pip:before{content:""}.hp-icon-play:before{content:""}.hp-icon-settings:before{content:""}.hp-icon-skip-back:before{content:""}.hp-icon-skip-forward:before{content:""}.hp-icon-volume-high:before{content:""}.hp-icon-volume-low:before{content:""}.hp-icon-volume-muted:before{content:""}.hp-icon-warning:before{content:""}:host{--hp-radius:8px;--hp-chip-bg:#ffffff14;--hp-chip-bg-hover:#ffffff2e;--hp-chip-bg-active:#ffffff42;--hp-chip-border:#ffffff29;--hp-chip-border-hover:#ffffff4d;--hp-chip-blur:14px;--hp-chip-shadow:0 4px 18px #00000047, inset 0 1px 0 #ffffff12;--hp-chip-radius:10px;--hp-chip-text:var(--hp-color-on-surface,#fff);--hp-chrome-scrim:linear-gradient(to top, #00000080 0%, #0000003d 50%, #0000 100%);--hp-chrome-scrim-height:min(150px, 45%);--hp-chip-backdrop-brightness:.78;--hp-ctrl-shadow:drop-shadow(0 1px 1.5px #0000008c);--hp-panel-bg:#ffffffb8;--hp-panel-blur:26px;--hp-panel-border:#0f11171a;--hp-panel-text:#15171c;--hp-panel-text-muted:#5b6270;--hp-panel-text-shadow:none;--hp-ctrl-btn-size:32px;--hp-ctrl-icon-size:16px;--hp-seek-hit-h:16px;--hp-seek-track-h:4px;--hp-seek-track-h-hover:6px;--hp-seek-thumb-size:12px;--hp-tooltip-bg:#ffffffe6;--hp-tooltip-text:#15171c;--hp-tooltip-key-bg:#0f11171a;--hp-tooltip-key-text:#15171c;--hp-caption-font-size:16px;--hp-caption-bg:#000000bf;--hp-caption-text:#fff;--hp-caption-radius:4px;background:var(--hp-color-surface,#0a0a0a);width:100%;color:var(--hp-color-on-surface,#fff);border-radius:var(--hp-radius);font-family:system-ui,-apple-system,sans-serif;line-height:1;display:block}.hp-chip{background:var(--hp-chip-bg);border:1px solid var(--hp-chip-border);border-radius:var(--hp-chip-radius);-webkit-backdrop-filter:blur(var(--hp-chip-blur)) saturate(160%);box-shadow:var(--hp-chip-shadow);color:var(--hp-chip-text);transition:background-color .16s,border-color .16s,box-shadow .16s,transform .12s}.hp-chip:hover{background:var(--hp-chip-bg-hover);border-color:var(--hp-chip-border-hover)}button.hp-chip:active{background:var(--hp-chip-bg-active);transform:scale(.94)}.hp-chip:focus-visible{outline:2px solid var(--hp-color-accent,#fff);outline-offset:2px}.hp-chip-panel,.hp-chip-panel:hover{background:var(--hp-panel-bg);border-color:var(--hp-panel-border);-webkit-backdrop-filter:blur(var(--hp-panel-blur)) saturate(160%);text-shadow:var(--hp-panel-text-shadow,none)}.hp-chip-panel{--hp-color-on-surface:var(--hp-panel-text);--hp-color-on-surface-muted:var(--hp-panel-text-muted);color:var(--hp-panel-text)}.hp-tooltip{background:var(--hp-tooltip-bg);color:var(--hp-tooltip-text);border-radius:calc(var(--hp-radius) * .75);-webkit-backdrop-filter:blur(12px)saturate(160%);font-weight:500;box-shadow:0 4px 14px #00000059}.hp-tooltip-key{background:var(--hp-tooltip-key-bg);min-width:16px;height:16px;color:var(--hp-tooltip-key-text);text-transform:uppercase;border-radius:4px;justify-content:center;align-items:center;padding:0 4px;font-size:10px;font-weight:700;line-height:16px;display:inline-flex}.hp-group{background:var(--hp-chip-bg);border:1px solid var(--hp-chip-border);-webkit-backdrop-filter:blur(var(--hp-chip-blur)) saturate(160%) brightness(var(--hp-chip-backdrop-brightness,1));box-shadow:var(--hp-chip-shadow);border-radius:9999px}.hp-group-left{position:relative}.hp-loading-ring{border-radius:inherit;pointer-events:none;opacity:0;filter:drop-shadow(0 0 3px var(--hp-color-accent,#fff));transition:opacity .22s;position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px}@supports (color:color-mix(in lab,red,red)){.hp-loading-ring{filter:drop-shadow(0 0 3px color-mix(in srgb,var(--hp-color-accent,#fff) 70%,transparent))}}.hp-loading-ring-mask{border-radius:inherit;-webkit-mask-composite:xor;padding:2px;position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.hp-loading-ring-mask>span{aspect-ratio:1;background:conic-gradient(from 0deg,transparent 0deg 150deg,var(--hp-color-accent,#fff) 260deg,var(--hp-color-accent,#fff) 340deg,transparent 360deg);width:max(100%,160px);position:absolute;top:50%;left:50%;translate:-50% -50%}@supports (color:color-mix(in lab,red,red)){.hp-loading-ring-mask>span{background:conic-gradient(from 0deg,transparent 0deg 150deg,color-mix(in srgb,var(--hp-color-accent,#fff) 30%,transparent) 260deg,var(--hp-color-accent,#fff) 340deg,transparent 360deg)}}.hp-loading-ring-mask>span{animation:1.1s linear infinite paused hp-loading-ring-spin}.hp-group-left[data-loading]>.hp-loading-ring{opacity:1}.hp-group-left[data-loading]>.hp-loading-ring .hp-loading-ring-mask>span{animation-play-state:running}@keyframes hp-loading-ring-spin{to{rotate:360deg}}@media(prefers-reduced-motion:reduce){.hp-loading-ring-mask>span{background:var(--hp-color-accent,#fff);animation:none}.hp-group-left[data-loading]>.hp-loading-ring{animation:1.6s ease-in-out infinite hp-loading-ring-pulse}}@keyframes hp-loading-ring-pulse{50%{opacity:.35}}.hp-center-play>.hp-chip{-webkit-backdrop-filter:blur(var(--hp-chip-blur)) saturate(160%) brightness(var(--hp-chip-backdrop-brightness,1))}.hp-group .hp-icon,.hp-group [part=time-display],.hp-group .hp-live-badge,.hp-group [part=live-clock],.hp-group .hp-skip-num,.hp-center-play .hp-icon{filter:var(--hp-ctrl-shadow,none)}.hp-chrome:before{content:"";height:var(--hp-chrome-scrim-height);background:var(--hp-chrome-scrim);pointer-events:none;position:absolute;bottom:0;left:0;right:0}.video-area[data-compact]>.hp-chrome:after{content:"";background:var(--hp-chrome-scrim);opacity:.7;pointer-events:none;height:min(90px,30%);position:absolute;top:0;left:0;right:0;transform:scaleY(-1)}.hp-group button.hp-chip{box-shadow:none;-webkit-backdrop-filter:none;background:0 0;border-color:#0000}.hp-group button.hp-chip:hover{background:var(--hp-chip-bg-hover)}.hp-group button.hp-chip:active{background:var(--hp-chip-bg-active)}:host([data-theme=glass-dark]),:host([data-theme=neo-dark]),:host([data-theme=mono]){--hp-panel-bg:#0a0a0e8c;--hp-panel-border:#ffffff1a;--hp-panel-text:#fff;--hp-panel-text-muted:#a3a3a3;--hp-panel-text-shadow:0 1px 3px #000000a6;--hp-tooltip-bg:#0a0a0aeb;--hp-tooltip-text:#fff;--hp-tooltip-key-bg:#ffffff2e;--hp-tooltip-key-text:#fff}:host([data-theme=glass-dark]){--hp-chip-bg:#0a0a0e73;--hp-chip-bg-hover:#0a0a0e9e;--hp-chip-bg-active:#0a0a0ebf;--hp-chip-border:#ffffff14;--hp-chip-border-hover:#ffffff29;--hp-chip-shadow:0 4px 18px #0006, inset 0 1px 0 #ffffff0a;--hp-panel-bg:#08080cb8;--hp-chip-backdrop-brightness:1}:host([data-theme=neo-dark]){--hp-chip-bg:#24242a;--hp-chip-bg-hover:#2a2a31;--hp-chip-bg-active:#1e1e23;--hp-chip-border:transparent;--hp-chip-border-hover:transparent;--hp-chip-blur:0px;--hp-chip-shadow:5px 5px 10px #00000080, -4px -4px 9px #ffffff09;--hp-chip-radius:12px;--hp-color-surface:#1b1b20;--hp-panel-bg:#1e1e23;--hp-panel-text-shadow:none;--hp-chrome-scrim:none;--hp-chip-backdrop-brightness:1;--hp-ctrl-shadow:none}:host([data-theme=neo-dark]) button.hp-chip:active{box-shadow:inset 3px 3px 6px #00000080,inset -2px -2px 5px #ffffff08}:host([data-theme=mono]){--hp-chip-bg:#ffffff0a;--hp-chip-bg-hover:#ffffff1a;--hp-chip-border:#ffffff14;--hp-chip-border-hover:#ffffff24;--hp-chip-blur:0px;--hp-chip-shadow:none;--hp-panel-bg:#0a0a0aeb;--hp-panel-text-shadow:none}@media(pointer:coarse){:host{--hp-ctrl-btn-size:40px;--hp-ctrl-icon-size:18px;--hp-seek-hit-h:22px;--hp-seek-track-h:5px;--hp-seek-track-h-hover:7px;--hp-seek-thumb-size:14px;--hp-caption-font-size:19px}}:host(:is(:fullscreen,:-webkit-full-screen)){--hp-ctrl-btn-size:44px;--hp-ctrl-icon-size:20px;--hp-seek-hit-h:26px;--hp-seek-track-h:6px;--hp-seek-track-h-hover:8px;--hp-seek-thumb-size:18px;--hp-caption-font-size:22px}:host(:is(:fullscreen,:-webkit-full-screen)) [part=control-bar]{padding:28px 20px 18px}.video-area{width:100%;aspect-ratio:var(--hp-aspect-ratio,16 / 9);border-radius:var(--hp-radius);background:var(--hp-color-surface,#0a0a0a);position:relative;overflow:hidden}.video-area[data-compact]{--hp-caption-font-size:13px}.video-area[data-story]{aspect-ratio:9/16;max-width:49.5vh;max-height:88vh;margin:0 auto}:host(:is(:fullscreen,:-webkit-full-screen)){background:#000;border-radius:0}:host(:is(:fullscreen,:-webkit-full-screen)) .hp-root{height:100%}:host(:is(:fullscreen,:-webkit-full-screen)) .video-area{aspect-ratio:auto;background:#000;border-radius:0;width:100%;height:100%}:host(:is(:fullscreen,:-webkit-full-screen)) .video-area[data-story]{aspect-ratio:9/16;width:auto;max-width:100%;height:100%;max-height:none;margin:0 auto}.media-layer{position:absolute;top:0;right:0;bottom:0;left:0}.media-layer video{object-fit:contain;background:#000;width:100%;height:100%}.hp-center-x{transform:translate(-50%)}.hp-center-y{transform:translateY(-50%)}.hp-chip-panel[data-drop]{margin-top:8px;margin-bottom:0;top:100%;bottom:auto}.hp-top-bar{pointer-events:none;display:flex;position:absolute;top:8px;right:8px}.hp-top-bar>*{pointer-events:auto}.hp-story-list-btn{top:calc(8px + var(--hp-ctrl-btn-size) + 18px);right:12px}:host([data-cursor-hidden]),:host([data-cursor-hidden]) *{cursor:none!important}.hp-unmute-badge{z-index:25;background:var(--hp-tooltip-bg);color:var(--hp-tooltip-text);-webkit-backdrop-filter:blur(12px)saturate(160%);font:inherit;cursor:pointer;border:0;border-radius:9999px;align-items:center;gap:6px;padding:6px 12px 6px 10px;font-size:13px;font-weight:600;display:none;position:absolute;top:10px;left:10px;box-shadow:0 4px 14px #00000059}@media(hover:none)and (pointer:coarse){.hp-volume{display:none!important}.hp-unmute-badge[data-visible]{display:inline-flex}}.hp-error-screen{z-index:30;background:var(--hp-color-surface);justify-content:center;align-items:center;padding:12px;display:none;position:absolute;top:0;right:0;bottom:0;left:0}@supports (color:color-mix(in lab,red,red)){.hp-error-screen{background:color-mix(in srgb,var(--hp-color-surface) 94%,transparent)}}.hp-error-screen{-webkit-backdrop-filter:blur(16px)saturate(140%);color:var(--hp-color-on-surface);text-align:center;container-type:size}.hp-error-screen[data-visible]{animation:.22s hp-error-in;display:flex}@keyframes hp-error-in{0%{opacity:0}}.hp-error-card{flex-direction:column;align-items:center;gap:10px;max-width:340px;display:flex}.hp-error-icon{border:1px solid var(--hp-color-on-surface);border-radius:9999px;place-items:center;width:48px;height:48px;display:grid}@supports (color:color-mix(in lab,red,red)){.hp-error-icon{border:1px solid color-mix(in srgb,var(--hp-color-on-surface) 18%,transparent)}}.hp-error-icon{background:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp-error-icon{background:color-mix(in srgb,var(--hp-color-on-surface) 8%,transparent)}}.hp-error-icon{margin-bottom:2px;font-size:22px}.hp-error-message{margin:0;font-size:14px;font-weight:600;line-height:1.45}.hp-error-code{color:var(--hp-color-on-surface-muted);font-variant-numeric:tabular-nums;margin:-4px 0 0;font-size:12px}.hp-error-retry{border:1px solid var(--hp-chip-border);background:var(--hp-chip-bg);color:var(--hp-color-on-surface);font:inherit;cursor:pointer;border-radius:9999px;align-items:center;gap:6px;margin-top:6px;padding:7px 14px 7px 12px;font-size:13px;font-weight:600;transition:background-color .15s,border-color .15s;display:inline-flex}.hp-error-retry:hover{background:var(--hp-chip-bg-hover);border-color:var(--hp-chip-border-hover)}.hp-error-retry:focus-visible{outline:2px solid var(--hp-color-accent);outline-offset:2px}@container (max-height:240px){.hp-error-card{gap:6px}.hp-error-icon{width:36px;height:36px;margin-bottom:0;font-size:16px}.hp-error-message{font-size:13px}.hp-error-code{margin-top:-2px;font-size:11px}.hp-error-retry{margin-top:2px;padding:5px 12px 5px 10px;font-size:12px}}.hp-context-menu,.hp-stats,.hp-debug{border:1px solid var(--hp-panel-border);background:var(--hp-panel-bg);-webkit-backdrop-filter:blur(var(--hp-panel-blur)) saturate(160%);color:var(--hp-panel-text);text-shadow:var(--hp-panel-text-shadow,none);border-radius:10px;position:absolute;box-shadow:0 8px 28px #00000059}.hp-context-menu{z-index:40;min-width:200px;padding:4px;font-size:13px;display:none}.hp-context-menu[data-open]{animation:.12s hp-context-menu-in;display:block}@keyframes hp-context-menu-in{0%{opacity:0;transform:scale(.97)}}.hp-context-menu-item{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:space-between;align-items:center;gap:16px;padding:8px 10px;display:flex}.hp-context-menu-item[data-info]{cursor:default;font-weight:600}button.hp-context-menu-item:hover,button.hp-context-menu-item:focus-visible{background:var(--hp-panel-text)}@supports (color:color-mix(in lab,red,red)){button.hp-context-menu-item:hover,button.hp-context-menu-item:focus-visible{background:color-mix(in srgb,var(--hp-panel-text) 10%,transparent)}}button.hp-context-menu-item:hover,button.hp-context-menu-item:focus-visible{outline:none}.hp-context-menu-item+.hp-context-menu-item{margin-top:2px}.hp-context-menu-meta{color:var(--hp-panel-text-muted);font-variant-numeric:tabular-nums;font-weight:500}.hp-stats{z-index:28;width:min(360px,100% - 20px);max-height:calc(100% - 20px);padding:8px 12px 10px;font-size:11.5px;top:10px;left:10px;overflow:auto}.hp-stats-header{justify-content:space-between;align-items:center;margin-bottom:6px;font-size:12px;font-weight:700;display:flex}.hp-stats-close{color:inherit;cursor:pointer;background:0 0;border:0;border-radius:9999px;padding:4px;display:inline-flex}.hp-stats-close:hover{background:var(--hp-panel-text)}@supports (color:color-mix(in lab,red,red)){.hp-stats-close:hover{background:color-mix(in srgb,var(--hp-panel-text) 12%,transparent)}}.hp-stats-body{grid-template-columns:auto 1fr;gap:3px 12px;margin:0;display:grid}.hp-stats-body dt{color:var(--hp-panel-text-muted);white-space:nowrap}.hp-stats-body dd{text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums;margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow:hidden}.hp-seek-fb{z-index:8;border:1px solid var(--hp-chip-border);background:var(--hp-chip-bg);-webkit-backdrop-filter:blur(var(--hp-chip-blur)) saturate(160%);box-shadow:var(--hp-chip-shadow);color:var(--hp-chip-text);pointer-events:none;opacity:0;border-radius:9999px;align-items:center;gap:10px;padding:12px 20px 12px 16px;transition:opacity .18s,translate .22s cubic-bezier(.2,.8,.2,1);display:flex;position:absolute;top:50%}.hp-seek-fb[data-side=forward]{right:7%;translate:14px -50%}.hp-seek-fb[data-side=back]{flex-direction:row-reverse;padding:12px 16px 12px 20px;left:7%;translate:-14px -50%}.hp-seek-fb[data-visible]{opacity:1;translate:0 -50%}.hp-seek-fb-chevrons{display:flex}.hp-seek-fb-chevrons svg{fill:currentColor;opacity:.25;width:16px;height:16px;margin:0 -3px;animation:.9s ease-in-out infinite hp-seek-fb-chevron}.hp-seek-fb[data-side=back] .hp-seek-fb-chevrons{transform:scaleX(-1)}.hp-seek-fb-chevrons svg:nth-child(2){animation-delay:.15s}.hp-seek-fb-chevrons svg:nth-child(3){animation-delay:.3s}@keyframes hp-seek-fb-chevron{0%,to{opacity:.25}40%{opacity:1}}.hp-seek-fb-value{white-space:nowrap;align-items:baseline;gap:3px;display:flex}.hp-seek-fb-num{font-variant-numeric:tabular-nums;font-size:20px;font-weight:700;line-height:1;display:inline-block}.hp-seek-fb-unit{opacity:.75;font-size:12px;font-weight:600}.hp-seek-fb-bump{animation:.26s cubic-bezier(.2,.8,.2,1) hp-seek-fb-bump}@keyframes hp-seek-fb-bump{0%{transform:scale(1.25)}to{transform:scale(1)}}.video-area[data-compact] .hp-seek-fb{padding:8px 12px}.video-area[data-compact] .hp-seek-fb[data-side=forward]{right:4%}.video-area[data-compact] .hp-seek-fb[data-side=back]{padding:8px 12px;left:4%}.video-area[data-compact] .hp-seek-fb-chevrons{display:none}.video-area[data-compact] .hp-seek-fb-num{font-size:16px}.hp-sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media(prefers-reduced-motion:reduce){.hp-seek-fb,.hp-seek-fb-chevrons svg,.hp-seek-fb-bump{transition:none;animation:none}.hp-seek-fb-chevrons svg{opacity:.8}}.hp-skip-btn{position:relative}.hp-skip-btn>.hp-icon{font-size:calc(var(--hp-ctrl-icon-size) * 1.45)}.hp-skip-num{padding-top:calc(var(--hp-ctrl-icon-size) * .14);font-size:calc(var(--hp-ctrl-icon-size) * .56);letter-spacing:-.02em;font-variant-numeric:tabular-nums;pointer-events:none;justify-content:center;align-items:center;font-weight:700;line-height:1;display:flex;position:absolute;top:0;right:0;bottom:0;left:0}.hp-skip-num[data-long]{font-size:calc(var(--hp-ctrl-icon-size) * .42)}.hp-skip-btn:disabled{opacity:.4;cursor:default}.hp-center-play>.hp-chip{z-index:7;position:relative}.video-area[data-center-play-shifted] .hp-center-play>.hp-chip{width:var(--hp-center-play-size);height:var(--hp-center-play-size);translate:var(--hp-center-play-shift-x,0px) var(--hp-center-play-shift)}.video-area[data-pause-ad-ready]>:is(.media-layer,.hp-chrome,.hp-center-play,.hp-caption-layer,.hp-error-screen,.hp-mini-progress){right:var(--hp-pause-ad-w,0px);transition:right .38s cubic-bezier(.2,.8,.2,1),opacity .2s}.video-area[data-pause-ad] .media-layer video{object-fit:cover}.hp-pause-ad{z-index:25;width:var(--hp-pause-ad-panel-w,332px);box-sizing:border-box;background:var(--hp-color-surface,#0a0a0a);color:var(--hp-color-on-surface,#fff);visibility:hidden;flex-direction:column;justify-content:center;gap:10px;padding:12px 16px;transition:transform .38s cubic-bezier(.2,.8,.2,1),visibility 0s linear .38s;display:flex;position:absolute;top:0;bottom:0;right:0;transform:translate(100%)}.hp-pause-ad[data-open]{visibility:visible;transition:transform .38s cubic-bezier(.2,.8,.2,1);transform:none}.hp-pause-ad-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.hp-pause-ad-label{color:var(--hp-color-on-surface-muted,#ffffffb3);font-size:13px;font-weight:600}.hp-pause-ad-close{width:28px;height:28px;color:var(--hp-color-on-surface,#fff);cursor:pointer;background:0 0;border:0;border-radius:9999px;justify-content:center;align-items:center;padding:0;transition:background-color .15s;display:inline-flex}.hp-pause-ad-close:hover{background:var(--hp-chip-bg-hover)}.hp-pause-ad-body{border-radius:8px;justify-content:center;display:flex;overflow:hidden}.hp-pause-ad-resume{border:1px solid var(--hp-chip-border);background:var(--hp-chip-bg);color:var(--hp-color-on-surface,#fff);font:inherit;cursor:pointer;border-radius:9999px;align-self:stretch;padding:9px 14px;font-size:13px;font-weight:600;transition:background-color .15s,border-color .15s}.hp-pause-ad-resume:hover{background:var(--hp-chip-bg-hover);border-color:var(--hp-chip-border-hover)}.hp-pause-ad-close:focus-visible,.hp-pause-ad-resume:focus-visible{outline:2px solid var(--hp-color-accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){.video-area[data-pause-ad-ready]>:is(.media-layer,.hp-chrome,.hp-center-play,.hp-caption-layer,.hp-error-screen,.hp-mini-progress),.hp-pause-ad,.hp-pause-ad[data-open]{transition:none}}.hp-seek-thumb{width:var(--hp-seek-thumb-size);height:var(--hp-seek-thumb-size);background:var(--hp-color-accent);will-change:translate,scale;pointer-events:none;z-index:2;border-radius:9999px;transition:scale .15s;position:absolute;left:0;scale:.5}.hp-seekbar:hover .hp-seek-thumb,.hp-seekbar:active .hp-seek-thumb,.hp-seekbar:focus-visible .hp-seek-thumb{scale:1}.hp-seekbar[data-no-duration] .hp-seek-thumb{display:none}.hp-seek-hover-dot{width:var(--hp-seek-track-h-hover);height:var(--hp-seek-track-h-hover);background:var(--hp-color-on-surface);opacity:0;pointer-events:none;z-index:1;border-radius:9999px;transition:opacity .12s;position:absolute;top:50%;left:0;box-shadow:0 0 0 1px #00000073}.hp-seek-hover-dot[data-visible]{opacity:.9}.hp-mini-progress{z-index:6;pointer-events:none;background:var(--hp-color-on-surface);height:1px;position:absolute;bottom:0;left:0;right:0}@supports (color:color-mix(in lab,red,red)){.hp-mini-progress{background:color-mix(in srgb,var(--hp-color-on-surface) 25%,transparent)}}.hp-mini-progress{opacity:0;transition:opacity .2s}.hp-mini-progress[data-visible]:not([data-disabled]){opacity:1}.hp-mini-progress-fill{transform-origin:0;will-change:transform;position:absolute;top:0;right:0;bottom:0;left:0;transform:scaleX(0)}.hp-mini-progress-buffered{background:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp-mini-progress-buffered{background:color-mix(in srgb,var(--hp-color-on-surface) 40%,transparent)}}.hp-mini-progress-played{background:var(--hp-color-accent)}.hp-seek-time{border-radius:calc(var(--hp-radius) * .75);background:var(--hp-tooltip-bg);color:var(--hp-tooltip-text);-webkit-backdrop-filter:blur(12px)saturate(160%);font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none;visibility:hidden;z-index:20;padding:3px 7px;font-size:12px;font-weight:500;position:absolute;bottom:calc(100% + 8px);left:0;box-shadow:0 4px 14px #00000059}.hp-seek-time[data-visible]{visibility:visible}.hp-sprite-tooltip{pointer-events:none;visibility:hidden;z-index:20;flex-direction:column;align-items:center;gap:4px;display:flex;position:absolute;bottom:calc(100% + 8px);left:0}.hp-sprite-tooltip[data-visible]{visibility:visible}.hp-sprite-image{border-radius:calc(var(--hp-radius) * .75);border:2px solid var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp-sprite-image{border:2px solid color-mix(in srgb,var(--hp-color-on-surface) 85%,transparent)}}.hp-sprite-image{background-color:#000;background-repeat:no-repeat;box-shadow:0 4px 14px #00000059}.hp-sprite-time{background:var(--hp-tooltip-bg);color:var(--hp-tooltip-text);font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:4px;padding:2px 6px;font-size:12px}.hp-live-badge{height:var(--hp-ctrl-btn-size);color:var(--hp-color-on-surface);font:inherit;letter-spacing:.04em;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:9999px;align-items:center;gap:6px;padding:0 8px;font-size:12px;font-weight:600;display:inline-flex}.hp-live-badge:hover{background:var(--hp-chip-bg-hover)}.hp-live-badge:focus-visible,[part=time-display]:focus-visible{outline:2px solid var(--hp-color-accent,#fff);outline-offset:2px}.hp-live-dot{background:var(--hp-live-color,red);border-radius:50%;width:8px;height:8px;transition:background-color .16s}.hp-live-badge[data-behind]{color:var(--hp-color-on-surface-muted)}.hp-live-badge[data-behind] .hp-live-dot{background:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp-live-badge[data-behind] .hp-live-dot{background:color-mix(in srgb,var(--hp-color-on-surface) 45%,transparent)}}.hp-chapters{pointer-events:none;inset-inline:0;align-items:center;gap:2px;display:flex;position:absolute;top:0;bottom:0}.hp-chapter{min-width:1px;height:var(--hp-seek-track-h);background:var(--hp-color-on-surface);border-radius:1px;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.hp-chapter{background:color-mix(in srgb,var(--hp-color-on-surface) 25%,transparent)}}.hp-chapter{transition:height .15s}.hp-seekbar:hover .hp-chapter{height:var(--hp-seek-track-h-hover)}.hp-seekbar .hp-chapter[data-hover]{height:calc(var(--hp-seek-track-h-hover) * 1.6)}.hp-chapter-fill{transform-origin:0;will-change:transform;position:absolute;top:0;right:0;bottom:0;left:0;transform:scaleX(0)}.hp-chapter-buffered{background:var(--hp-color-on-surface)}@supports (color:color-mix(in lab,red,red)){.hp-chapter-buffered{background:color-mix(in srgb,var(--hp-color-on-surface) 40%,transparent)}}.hp-chapter-played{background:var(--hp-color-accent)}.hp-chapter-tooltip{background:var(--hp-tooltip-bg);max-width:240px;color:var(--hp-tooltip-text);border-radius:calc(var(--hp-radius) * .75);-webkit-backdrop-filter:blur(12px)saturate(160%);text-align:center;pointer-events:none;white-space:nowrap;visibility:hidden;z-index:40;flex-direction:column;align-items:center;gap:2px;padding:4px 8px;font-size:12px;line-height:1.3;display:flex;position:absolute;bottom:calc(100% + 6px);left:0;box-shadow:0 4px 14px #00000059}.hp-chapter-tooltip[data-visible]{visibility:visible}.hp-chapter-tooltip-title{text-overflow:ellipsis;max-width:100%;font-weight:600;overflow:hidden}.hp-chapter-tooltip-time{opacity:.75;font-variant-numeric:tabular-nums}:host([data-sticky]){z-index:2147483000;border-radius:var(--hp-radius);box-shadow:0 8px 28px #00000073;width:min(360px,92vw)!important;aspect-ratio:var(--hp-aspect-ratio,16 / 9)!important;position:fixed!important}:host([data-sticky][data-sticky-corner=br]){inset:auto 16px 16px auto}:host([data-sticky][data-sticky-corner=bl]){inset:auto auto 16px 16px}:host([data-sticky][data-sticky-corner=tr]){inset:16px 16px auto auto}:host([data-sticky][data-sticky-corner=tl]){inset:16px auto auto 16px}.hp-caption-layer{z-index:5;pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0}.hp-caption-bubble{background:var(--hp-caption-bg);width:max-content;max-width:86%;color:var(--hp-caption-text);border-radius:var(--hp-caption-radius);font-size:calc(var(--hp-caption-font-size) * var(--hp-caption-size-multiplier,1));text-align:center;white-space:pre-line;cursor:grab;pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;padding:.3em .6em;line-height:1.4;transition:transform .24s cubic-bezier(.25,.8,.25,1);display:none;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.hp-caption-bubble.hp-caption-visible{display:inline-block}.hp-caption-bubble.hp-caption-dragging,.hp-caption-bubble.hp-caption-no-transition{transition:none}.hp-caption-bubble.hp-caption-dragging{cursor:grabbing}[part=ad-layer][data-nonlinear]{top:auto;bottom:var(--hp-nonlinear-ad-offset,72px);height:var(--hp-nonlinear-ad-height,33%);pointer-events:none}[part=ad-layer][data-nonlinear] *{pointer-events:none}[part=ad-layer][data-nonlinear] :is(iframe,img,a,button){pointer-events:auto}.hp-debug{--hp-panel-text:#f1f1f4;--hp-panel-text-muted:#f1f1f49e;--hp-panel-border:#ffffff1f;text-shadow:none;z-index:30;background:#0e0e12f2;flex-direction:column;min-width:0;font-size:12px;line-height:1.45;display:flex;top:8px;right:8px;bottom:8px;left:8px;overflow:hidden}.hp-debug:focus{outline:none}.hp-debug-header{border-bottom:1px solid var(--hp-panel-border);flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;padding:8px 8px 8px 12px;display:flex}.hp-debug-title{white-space:nowrap;align-items:center;gap:8px;min-width:0;font-size:13px;font-weight:700;display:flex}.hp-debug-count{font-variant-numeric:tabular-nums;background:#f8717138;border-radius:9999px;padding:1px 7px;font-size:11px}.hp-debug-count:empty{display:none}.hp-debug-actions{flex-shrink:0;align-items:center;gap:4px;display:flex}.hp-debug-btn{border:1px solid var(--hp-panel-border);color:inherit;font:inherit;cursor:pointer;background:0 0;border-radius:9999px;padding:4px 10px;font-size:11.5px}.hp-debug-btn:hover:not(:disabled){background:var(--hp-panel-text)}@supports (color:color-mix(in lab,red,red)){.hp-debug-btn:hover:not(:disabled){background:color-mix(in srgb,var(--hp-panel-text) 12%,transparent)}}.hp-debug-btn:disabled{opacity:.45;cursor:default}.hp-debug-list{overscroll-behavior:contain;flex:1;min-height:0;margin:0;padding:6px 12px 10px;list-style:none;overflow:hidden auto}.hp-debug-row{border-left:2px solid var(--hp-panel-text);padding:8px 0 8px 10px}@supports (color:color-mix(in lab,red,red)){.hp-debug-row{border-left:2px solid color-mix(in srgb,var(--hp-panel-text) 25%,transparent)}}.hp-debug-row{min-width:0}.hp-debug-row+.hp-debug-row{margin-top:6px}.hp-debug-row[data-fatal]{border-left-color:#f87171}.hp-debug-row-head{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:2px;display:flex}.hp-debug-time{color:var(--hp-panel-text-muted);font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.hp-debug-source,.hp-debug-fatal{background:var(--hp-panel-text);border-radius:9999px;padding:1px 7px;font-size:10.5px;font-weight:600}@supports (color:color-mix(in lab,red,red)){.hp-debug-source,.hp-debug-fatal{background:color-mix(in srgb,var(--hp-panel-text) 12%,transparent)}}.hp-debug-source[data-source=ads]{background:#f5c4513d}.hp-debug-source[data-source=stream],.hp-debug-source[data-source=media]{background:#60a5fa3d}.hp-debug-fatal{background:#f8717147}.hp-debug-message{overflow-wrap:anywhere;font-weight:600}.hp-debug-repeat{color:var(--hp-panel-text-muted);font-weight:500}.hp-debug-details{grid-template-columns:max-content minmax(0,1fr);gap:1px 10px;margin:4px 0 0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;display:grid}.hp-debug-details dt{color:var(--hp-panel-text-muted)}.hp-debug-details dd{overflow-wrap:anywhere;min-width:0;margin:0}.hp-debug-empty{color:var(--hp-panel-text-muted);margin:auto;padding:16px}.hp-debug-empty[hidden]{display:none}.hp-ad-return{z-index:25;color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;background:#0e0e12d1;border:1px solid #ffffff40;border-radius:999px;padding:10px 16px;font:600 14px/1.2 system-ui,-apple-system,sans-serif;animation:.2s ease-out hp-ad-return-in;position:absolute;bottom:64px;right:12px}@keyframes hp-ad-return-in{0%{opacity:0;transform:translateY(6px)}}:host([data-audio]) .hp-center-play{display:none}.hp-audio{z-index:1;text-align:left;pointer-events:none;color:#fff;background:linear-gradient(160deg,#2a1f2b,#0c0c10);background:radial-gradient(80% 90% at 20% 10%,var(--hp-color-accent,#e5484d),transparent 70%),linear-gradient(160deg,#1d1d24,#0c0c10);position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.hp-audio{background:radial-gradient(80% 90% at 20% 10%,color-mix(in srgb,var(--hp-color-accent,#e5484d) 38%,transparent),transparent 70%),linear-gradient(160deg,#1d1d24,#0c0c10)}}.hp-audio-backdrop{position:absolute;top:-8%;right:-8%;bottom:-8%;left:-8%}.hp-audio-backdrop img{object-fit:cover;filter:blur(28px)saturate(1.3)brightness(.55);width:100%;height:100%;transform:scale(1.08)}.hp-audio:not([data-cover]) .hp-audio-backdrop,.hp-audio:not([data-cover]) .hp-audio-sleeve img{display:none}.hp-audio-meta{z-index:3;text-shadow:0 1px 6px #0009;line-height:1.25;display:none;position:absolute;top:12px;left:14px;right:64px}.hp-audio[data-meta] .hp-audio-meta{display:block}.hp-audio-title{white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:700;overflow:hidden}.hp-audio-artist{opacity:.8;white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:12.5px;overflow:hidden}.hp-audio-area{inset:0 0 var(--hp-audio-bottom-space,66px) 0;justify-content:center;align-items:center;display:flex;position:absolute}.hp-audio[data-meta] .hp-audio-area{top:44px}.hp-audio-deck{height:var(--hp-deck-h,0px);flex:none;align-items:center;display:flex;position:relative}.hp-audio[data-position=left] .hp-audio-deck{flex-direction:row-reverse}.hp-audio-sleeve{z-index:2;width:var(--hp-deck-h,0px);height:var(--hp-deck-h,0px);background:radial-gradient(70% 70% at 30% 25%,#e5484d,#0000 75%),#26262d;background:radial-gradient(70% 70% at 30% 25%,var(--hp-color-accent,#e5484d),transparent 75%),#26262d;border-radius:6px;flex:none;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.hp-audio-sleeve{background:radial-gradient(70% 70% at 30% 25%,color-mix(in srgb,var(--hp-color-accent,#e5484d) 70%,#fff 0%),transparent 75%),#26262d}}.hp-audio-sleeve{box-shadow:0 18px 40px -12px #000000bf,0 0 0 1px #ffffff14}.hp-audio-sleeve img{object-fit:cover;width:100%;height:100%;display:block}.hp-audio-sleeve[hidden],.hp-vinyl[hidden],.hp-tonearm-holder[hidden]{display:none}.hp-vinyl{z-index:1;width:calc(var(--hp-deck-h,0px) * .96);height:calc(var(--hp-deck-h,0px) * .96);pointer-events:auto;touch-action:none;-webkit-tap-highlight-color:transparent;filter:drop-shadow(0 14px 26px #0009);border-radius:50%;outline:none;flex:none;transition:margin .45s cubic-bezier(.2,.8,.2,1);position:relative}.hp-audio[data-position=right] .hp-vinyl{margin-left:calc(var(--hp-deck-h) * -.56)}.hp-audio[data-position=left] .hp-vinyl{margin-right:calc(var(--hp-deck-h) * -.56)}.hp-audio[data-position=right][data-playing] .hp-vinyl{margin-left:calc(var(--hp-deck-h) * -.46)}.hp-audio[data-position=left][data-playing] .hp-vinyl{margin-right:calc(var(--hp-deck-h) * -.46)}.hp-audio:not([data-laid-out]) .hp-vinyl{transition:none}.hp-vinyl[data-scratch]:not([data-live]){cursor:grab}.hp-audio[data-scratching] .hp-vinyl{cursor:grabbing}.hp-vinyl:focus-visible{box-shadow:0 0 0 3px #ffffffb3;box-shadow:0 0 0 3px var(--hp-color-accent,#e5484d)}@supports (color:color-mix(in lab,red,red)){.hp-vinyl:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb,var(--hp-color-accent,#e5484d) 80%,transparent)}}.hp-vinyl-disc{will-change:transform;position:absolute;top:0;right:0;bottom:0;left:0}.hp-vinyl-disc svg,.hp-tonearm svg{width:100%;height:100%;display:block}.hp-vinyl-sheen{pointer-events:none;background:conic-gradient(from 200deg,#0000,#ffffff21 22deg,#0000 48deg,#0000 180deg,#ffffff17 205deg,#0000 232deg);border-radius:50%;position:absolute;top:0;right:0;bottom:0;left:0;-webkit-mask:radial-gradient(circle,#0000 0 35%,#000 36% 99%,#0000 100%);mask:radial-gradient(circle,#0000 0 35%,#000 36% 99%,#0000 100%)}.hp-tonearm-holder{pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0}.hp-audio[data-position=left] .hp-tonearm-holder{transform:scaleX(-1)}.hp-tonearm{transform-origin:70% 11%;filter:drop-shadow(0 6px 8px #00000080);width:46%;height:92%;transition:transform .6s cubic-bezier(.3,.7,.2,1);position:absolute;top:-6%;right:-14%;transform:rotate(-26deg)}.hp-audio[data-playing] .hp-tonearm{transform:rotate(0)}@media(prefers-reduced-motion:reduce){.hp-vinyl,.hp-tonearm{transition:none}}.hp-audio[data-short][data-meta] .hp-audio-meta{display:none}.hp-audio[data-short][data-meta] .hp-audio-area{top:6px}[part=ad-layer][data-audio-ad]{background:0 0}[part=ad-layer][data-audio-ad] video{opacity:0}.hp-audio:after{content:"";pointer-events:none;z-index:2;background:linear-gradient(#0000,#00000047 45%,#0000009e);height:min(140px,45%);position:absolute;bottom:0;left:0;right:0}:host([data-audio-compact]) .video-area{aspect-ratio:auto;height:var(--hp-audio-bar-height,84px);overflow:visible}:host([data-audio-compact]) .hp-audio{border-radius:var(--hp-radius);background:linear-gradient(120deg,#24242c,#141418);background:linear-gradient(120deg,var(--hp-color-accent,#e5484d),transparent 60%),var(--hp-color-surface,#141418)}@supports (color:color-mix(in lab,red,red)){:host([data-audio-compact]) .hp-audio{background:linear-gradient(120deg,color-mix(in srgb,var(--hp-color-accent,#e5484d) 16%,transparent),transparent 60%),var(--hp-color-surface,#141418)}}:host([data-audio-compact]) .hp-audio>*,:host([data-audio-compact]) .hp-audio:after,:host([data-audio-compact]) .hp-caption-layer,:host([data-audio-compact]) .hp-loading-spinner,:host([data-audio-compact]) .hp-chrome:before,:host([data-audio-compact]) .hp-chrome:after{display:none}.hp-bar-meta{min-width:0;color:var(--hp-color-on-surface,#fff);pointer-events:none;align-items:center;gap:10px;padding:0 6px;display:flex}.hp-bar-meta[data-empty] .hp-bar-text{display:none}.hp-bar-text{flex-direction:column;min-width:0;line-height:1.25;display:flex}.hp-bar-title{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:700;overflow:hidden}.hp-bar-sub{opacity:.72;white-space:nowrap;text-overflow:ellipsis;font-size:11.5px;overflow:hidden}.hp-bar-sub:empty{display:none}.hp-bar-eq{flex:none;align-items:flex-end;gap:2px;width:14px;height:14px;display:inline-flex}.hp-bar-eq i{background:var(--hp-color-accent,#fff);border-radius:1px;flex:1;height:30%;transition:height .2s}.hp-bar-meta[data-playing] .hp-bar-eq i{animation:.9s ease-in-out infinite alternate hp-bar-eq}.hp-bar-meta[data-playing] .hp-bar-eq i:nth-child(2){animation-duration:.7s;animation-delay:-.3s}.hp-bar-meta[data-playing] .hp-bar-eq i:nth-child(3){animation-duration:1.1s;animation-delay:-.6s}@keyframes hp-bar-eq{0%{height:25%}to{height:100%}}@media(prefers-reduced-motion:reduce){.hp-bar-meta[data-playing] .hp-bar-eq i{height:70%;animation:none}}.hp-lock{vertical-align:-2px;display:inline-block}.hp-rw-button{color:#fff;cursor:pointer;pointer-events:auto;-webkit-tap-highlight-color:transparent;background:#0c0c10b8;border:1px solid #ffffff38;border-radius:999px;align-items:center;gap:6px;padding:7px 12px;font:600 12.5px/1 system-ui,-apple-system,sans-serif;display:inline-flex;position:absolute;top:12px;left:12px;box-shadow:0 6px 18px -8px #000000b3}.hp-rw-button:hover{background:#0c0c10e0}.hp-rw-button[hidden]{display:none}.hp-rw-button .hp-lock{color:var(--hp-color-accent,#fff)}.hp-rw-dialog{z-index:45;color:#fff;text-align:center;background:#0000009e;justify-content:center;align-items:center;padding:12px;animation:.18s ease-out hp-rw-fade;display:flex;position:absolute;top:0;right:0;bottom:0;left:0}.hp-rw-card{background:#14141af5;border:1px solid #ffffff24;border-radius:14px;width:min(360px,100%);max-height:100%;padding:18px 18px 16px;overflow:auto;box-shadow:0 20px 50px -20px #000c}.hp-rw-icon{color:var(--hp-color-accent,#fff);background:#ffffff14;border-radius:50%;padding:9px;display:inline-flex}.hp-rw-icon .hp-lock{width:18px;height:18px}.hp-rw-title{margin-top:10px;font-size:15px;font-weight:700}.hp-rw-text{opacity:.82;margin-top:6px;font-size:13px;line-height:1.45}.hp-rw-actions{justify-content:center;gap:8px;margin-top:14px;display:flex}.hp-rw-actions:empty{display:none}.hp-rw-btn{color:#fff;cursor:pointer;background:0 0;border:1px solid #fff3;border-radius:999px;padding:8px 14px;font:600 13px/1 system-ui,-apple-system,sans-serif}.hp-rw-btn-primary{background:var(--hp-color-accent,#fff);color:var(--hp-color-on-accent,#0a0a0a);border-color:#0000}.hp-rw-spinner{border:2px solid #ffffff40;border-top-color:#fff;border-radius:50%;width:22px;height:22px;margin:4px auto 0;animation:.8s linear infinite hp-rw-spin}.hp-rw-toast{z-index:45;color:#fff;pointer-events:none;background:#0c0c10d9;border-radius:999px;padding:8px 14px;font:600 13px/1 system-ui,-apple-system,sans-serif;animation:.2s ease-out hp-rw-fade;position:absolute;top:12px;left:50%;transform:translate(-50%)}@keyframes hp-rw-fade{0%{opacity:0}}@keyframes hp-rw-spin{to{transform:rotate(360deg)}}.hp-settings-panel [data-locked],.hp-chip-panel [data-locked]{opacity:.85}.hp-sponsor-logo{z-index:21;width:var(--hp-sponsor-logo-w,96px);color:#fff;filter:drop-shadow(0 2px 6px #0000008c);flex-direction:column;align-items:center;gap:4px;text-decoration:none;transition:opacity .25s,right .35s cubic-bezier(.2,.8,.2,1),bottom .35s cubic-bezier(.2,.8,.2,1);animation:.4s ease-out hp-rw-fade;display:flex;position:absolute}.hp-sponsor-logo[data-position=top-left]{top:12px;left:12px}.hp-sponsor-logo[data-position=top-right]{top:12px;right:var(--hp-sponsor-avoid-right,12px)}.hp-sponsor-logo[data-position=bottom-left]{bottom:var(--hp-sponsor-avoid-bottom,76px);left:12px}.hp-sponsor-logo[data-position=bottom-right]{bottom:var(--hp-sponsor-avoid-bottom,76px);right:12px}.video-area[data-chrome-hidden] .hp-sponsor-logo[data-position=top-right]{right:12px}.video-area[data-chrome-hidden] .hp-sponsor-logo[data-position=bottom-left],.video-area[data-chrome-hidden] .hp-sponsor-logo[data-position=bottom-right]{bottom:12px}.hp-sponsor-logo img{width:100%;height:auto;display:block}.hp-sponsor-label{text-align:center;white-space:nowrap;text-overflow:ellipsis;letter-spacing:.08em;text-transform:uppercase;opacity:.85;max-width:100%;font:600 10px/1 system-ui,-apple-system,sans-serif;overflow:hidden}.video-area:has(.hp-rw-button:not([hidden])) .hp-sponsor-logo[data-position=top-left]{top:52px}.hp-sponsor-intro{z-index:22;color:#fff;pointer-events:none;background:#0c0c10d1;border-radius:999px;align-items:center;gap:10px;max-width:calc(100% - 32px);padding:8px 16px 8px 8px;font:600 14px/1.2 system-ui,-apple-system,sans-serif;transition:opacity .35s,transform .35s;animation:.45s cubic-bezier(.2,.8,.2,1) hp-sponsor-in;display:flex;position:absolute;bottom:84px;left:50%;transform:translate(-50%);box-shadow:0 12px 30px -12px #000c}.hp-sponsor-intro[data-leaving]{opacity:0;transform:translate(-50%,8px)}.hp-sponsor-intro img{border-radius:6px;width:auto;max-width:96px;height:28px}.hp-sponsor-intro span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}@keyframes hp-sponsor-in{0%{opacity:0;transform:translate(-50%,12px)scale(.96)}}:host([data-sponsor-hidden]) .hp-sponsor-logo,:host([data-sponsor-hidden]) .hp-sponsor-intro{display:none}.hp-adtrigger{z-index:26;box-sizing:border-box;pointer-events:none;justify-content:center;align-items:center;padding:12px;display:none;position:absolute;top:0;right:0;bottom:0;left:0}.hp-adtrigger[data-open]{animation:.3s ease-out hp-adtrigger-in;display:flex}.hp-adtrigger[data-backdrop]{pointer-events:auto;background:#0000009e}.hp-adtrigger[data-layout=full]{padding:0}.hp-adtrigger[data-layout=none]{justify-content:flex-start;align-items:flex-start;padding:0}.hp-adtrigger[data-layout=none] .hp-adtrigger-frame{position:static}.hp-adtrigger[data-layout=top]{align-items:flex-start}.hp-adtrigger[data-layout=bottom]{align-items:flex-end;padding-bottom:72px}.hp-adtrigger[data-layout=top-left]{justify-content:flex-start;align-items:flex-start}.hp-adtrigger[data-layout=top-right]{justify-content:flex-end;align-items:flex-start}.hp-adtrigger[data-layout=bottom-left]{justify-content:flex-start;align-items:flex-end;padding-bottom:72px}.hp-adtrigger[data-layout=bottom-right]{justify-content:flex-end;align-items:flex-end;padding-bottom:72px}.hp-adtrigger-frame{pointer-events:auto;max-width:100%;max-height:100%;position:relative}.hp-adtrigger[data-layout=full] .hp-adtrigger-frame{width:100%;height:100%}.hp-adtrigger-frame[data-sized]{width:min(var(--hp-adtrigger-w),100%);height:min(var(--hp-adtrigger-h),100%)}.hp-adtrigger[data-layout=full] ::slotted(*),.hp-adtrigger-frame[data-sized] ::slotted(*){width:100%;height:100%;display:block}.hp-adtrigger-label{z-index:1;color:#fff;letter-spacing:.08em;text-transform:uppercase;pointer-events:none;background:#000000a8;border-radius:4px;padding:3px 7px;font:600 10px/1 system-ui,-apple-system,sans-serif;position:absolute;top:8px;left:8px}.hp-adtrigger-close{z-index:2;color:#fff;cursor:pointer;background:#000000b8;border:0;border-radius:999px;place-items:center;width:30px;height:30px;padding:0;display:grid;position:absolute;top:6px;right:6px}.hp-adtrigger-close[hidden]{display:none}.hp-adtrigger-close:focus-visible{outline:2px solid var(--hp-color-accent,#fff);outline-offset:2px}.hp-cast-overlay{z-index:12;color:#fff;text-align:center;pointer-events:none;background:radial-gradient(#14141adb,#060609f5);flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:16px;font:600 15px/1.3 system-ui,-apple-system,sans-serif;display:none;position:absolute;top:0;right:0;bottom:0;left:0}.hp-cast-overlay[data-open]{display:flex}.hp-cast-overlay .hp-icon{color:var(--hp-color-accent,#fff);font-size:44px}.hp-cast-overlay-ad{background:#ffffff24;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:600;display:none}.hp-cast-overlay[data-break] .hp-cast-overlay-ad{display:inline-block}.video-area[data-casting] video{visibility:hidden}[part=cast-button][data-connecting] .hp-icon{animation:1s ease-in-out infinite hp-cast-pulse}@keyframes hp-cast-pulse{50%{opacity:.35}}@keyframes hp-adtrigger-in{0%{opacity:0}}@media(prefers-reduced-motion:reduce){.hp-sponsor-intro,.hp-rw-dialog,.hp-rw-toast{animation:none}}@media(hover:none)and (pointer:coarse){.video-area:has(.hp-unmute-badge[data-visible]) .hp-rw-button,.video-area:has(.hp-unmute-badge[data-visible]) .hp-sponsor-logo[data-position=top-left]{top:52px}.video-area:has(.hp-unmute-badge[data-visible]):has(.hp-rw-button:not([hidden])) .hp-sponsor-logo[data-position=top-left]{top:92px}}.video-area[data-compact] .hp-rw-icon{display:none}.video-area[data-compact] .hp-rw-card{padding:12px 14px}.video-area[data-compact] .hp-rw-title{margin-top:0;font-size:14px}.video-area[data-compact] .hp-rw-text{font-size:12px;line-height:1.4}.video-area[data-compact] .hp-rw-actions{margin-top:10px}.hp-sponsor-logo[data-compact]{width:min(var(--hp-sponsor-logo-w,96px),48px);gap:2px}.hp-sponsor-logo[data-compact] .hp-sponsor-label{font-size:8.5px}:host([data-sponsor-intro]) .hp-sponsor-logo{pointer-events:none;opacity:0!important}.hp-redirect-thumb{aspect-ratio:16/9;background:#111;border-radius:8px;flex:none;display:block;position:relative;overflow:hidden}.hp-redirect-thumb img{object-fit:cover;width:100%;height:100%;transition:transform .3s;position:absolute;top:0;right:0;bottom:0;left:0}.hp-redirect-ring{filter:drop-shadow(0 2px 6px #0009);width:44px;height:44px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-90deg)}.hp-redirect-ring-track{fill:#00000073;stroke:#ffffff47;stroke-width:3px}.hp-redirect-ring-bar{fill:none;stroke:var(--hp-color-accent,#fff);stroke-width:3px;stroke-linecap:round;transition:stroke-dashoffset .3s linear}.hp-redirect-play{color:#fff;font-size:18px;line-height:1;position:absolute;top:50%;left:50%;transform:translate(-45%,-50%)}.hp-redirect-duration{color:#fff;background:#000000c7;border-radius:4px;padding:1px 5px;font:600 10px/1.4 system-ui,-apple-system,sans-serif;position:absolute;bottom:5px;right:5px}.hp-redirect-label{color:var(--hp-color-accent,#fff);letter-spacing:.1em;text-transform:uppercase;font:700 10px/1.2 system-ui,-apple-system,sans-serif}.hp-redirect-title{-webkit-line-clamp:2;-webkit-box-orient:vertical;font:600 13px/1.3 system-ui,-apple-system,sans-serif;display:-webkit-box;overflow:hidden}.hp-redirect-sub{white-space:nowrap;text-overflow:ellipsis;opacity:.7;font:500 11px/1.3 system-ui,-apple-system,sans-serif;overflow:hidden}.hp-redirect-card{z-index:24;color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0e0e12e6;border-radius:12px;align-items:stretch;width:min(340px,100% - 24px);transition:bottom .25s,top .25s;animation:.35s cubic-bezier(.2,.8,.2,1) hp-redirect-in;display:flex;position:absolute;box-shadow:0 16px 36px -14px #000000d9}.hp-redirect-card[data-position=bottom-right]{bottom:76px;right:12px}.hp-redirect-card[data-position=bottom-left]{bottom:76px;left:12px}.hp-redirect-card[data-position=top-right]{top:12px;right:12px}.hp-redirect-card[data-position=top-left]{top:12px;left:12px}.video-area[data-chrome-hidden] .hp-redirect-card[data-position^=bottom]{bottom:12px}.hp-redirect-card-main{min-width:0;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;flex:1;align-items:center;gap:10px;padding:8px;display:flex}.hp-redirect-card-main .hp-redirect-thumb{width:42%}.hp-redirect-card-main:hover .hp-redirect-thumb img{transform:scale(1.04)}.hp-redirect-text{flex-direction:column;gap:3px;min-width:0;padding-right:22px;display:flex}.hp-redirect-close{color:#fff;cursor:pointer;background:#ffffff1f;border:0;border-radius:999px;place-items:center;width:24px;height:24px;padding:0;font-size:13px;display:grid;position:absolute;top:6px;right:6px}.hp-redirect-close:hover{background:#ffffff3d}.hp-redirect-card-main:focus-visible,.hp-redirect-close:focus-visible,.hp-redirect-poster:focus-visible,.hp-redirect-btn:focus-visible{outline:2px solid var(--hp-color-accent,#fff);outline-offset:2px}.video-area[data-compact] .hp-redirect-card{width:min(260px,100% - 16px)}.video-area[data-compact] .hp-redirect-card[data-position^=bottom]{bottom:56px}.video-area[data-compact][data-chrome-hidden] .hp-redirect-card[data-position^=bottom]{bottom:8px}.video-area[data-compact] .hp-redirect-card .hp-redirect-sub{display:none}.video-area[data-compact] .hp-redirect-card .hp-redirect-ring{width:34px;height:34px}.hp-redirect-screen{z-index:30;color:#fff;text-align:center;background:#060609e6;justify-content:center;align-items:center;padding:16px;animation:.3s ease-out hp-redirect-fade;display:flex;position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.hp-redirect-bg{object-fit:cover;opacity:.35;filter:blur(18px)saturate(1.2);width:calc(100% + 40px);height:calc(100% + 40px);position:absolute;top:-20px;right:-20px;bottom:-20px;left:-20px}.hp-redirect-panel{flex-direction:column;align-items:center;gap:8px;width:min(420px,100%);display:flex;position:relative}.hp-redirect-poster{cursor:pointer;background:0 0;border:0;border-radius:10px;width:min(320px,70%);padding:0;box-shadow:0 18px 40px -16px #000000e6}.hp-redirect-poster .hp-redirect-thumb{border-radius:10px;width:100%}.hp-redirect-poster .hp-redirect-ring{width:64px;height:64px}.hp-redirect-poster .hp-redirect-play{font-size:24px}.hp-redirect-screen .hp-redirect-title{font-size:16px}.hp-redirect-counter{opacity:.75;font:500 12px/1.4 system-ui,-apple-system,sans-serif}.hp-redirect-actions{gap:8px;margin-top:4px;display:flex}.hp-redirect-btn{color:#fff;cursor:pointer;background:#ffffff24;border:0;border-radius:999px;padding:7px 16px;font:600 13px/1 system-ui,-apple-system,sans-serif}.hp-redirect-btn:hover{background:#ffffff3d}.hp-redirect-btn-primary,.hp-redirect-btn-primary:hover{background:var(--hp-color-accent,#fff);color:var(--hp-color-on-accent,#000)}.video-area[data-compact] .hp-redirect-poster{width:min(200px,55%)}.video-area[data-compact] .hp-redirect-screen .hp-redirect-sub,.video-area[data-compact] .hp-redirect-counter{display:none}.hp-redirect-suggestions{z-index:30;background:#060609eb;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));align-content:center;gap:12px;padding:16px;display:grid;position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto}.hp-redirect-suggestion{color:#fff;flex-direction:column;gap:6px;text-decoration:none;display:flex}.hp-redirect-suggestion .hp-redirect-play{opacity:0;font-size:22px;transition:opacity .2s}.hp-redirect-suggestion:hover .hp-redirect-play,.hp-redirect-suggestion:focus-visible .hp-redirect-play{opacity:1}.hp-redirect-suggestion:hover .hp-redirect-thumb,.hp-redirect-suggestion:focus-visible .hp-redirect-thumb{outline:2px solid var(--hp-color-accent,#fff)}@keyframes hp-redirect-in{0%{opacity:0;transform:translateY(10px)scale(.97)}}@keyframes hp-redirect-fade{0%{opacity:0}}@media(prefers-reduced-motion:reduce){.hp-redirect-card,.hp-redirect-screen{animation:none}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}';
5
+ function K(n) {
6
+ return !!n && /MediaSinkAudio/i.test(n.message || "");
7
+ }
8
+ function Ne(n) {
9
+ return !!n.error && !K(n.error);
10
+ }
11
+ function J() {
6
12
  if (typeof navigator > "u") return !1;
7
13
  const n = navigator.userAgent, t = /iP(hone|od|ad)/.test(n) || navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1, e = /^((?!chrome|chromium|android|crios|fxios|edg|opr).)*safari/i.test(n);
8
14
  return t || e;
9
15
  }
10
- function X() {
16
+ function Z() {
11
17
  const n = window;
12
18
  return typeof n.MediaSource < "u" || typeof n.ManagedMediaSource < "u";
13
19
  }
14
- function be(n, t) {
20
+ function xe(n, t) {
15
21
  var i;
16
22
  const e = (i = t == null ? void 0 : t.split(";")[0]) == null ? void 0 : i.trim().toLowerCase();
17
23
  return e === "application/vnd.apple.mpegurl" || e === "application/x-mpegurl" || /\.m3u8(?:$|[?#])/i.test(n) ? "hls" : e === "video/mp4" || /\.mp4(?:$|[?#])/i.test(n) ? "mp4" : "unknown";
18
24
  }
19
- class Be {
25
+ class Ie {
20
26
  constructor(t, e) {
21
- r(this, "hls", null);
22
- r(this, "video");
27
+ s(this, "hls", null);
28
+ s(this, "video");
23
29
  /** Son yüklenen kaynak — `reload()` (hata ekranındaki "Tekrar dene") için. */
24
- r(this, "last", null);
30
+ s(this, "last", null);
25
31
  /** Native HLS denemesi sürerken (ilk loadedmetadata'ya kadar) — başarısız olursa hls.js'e geçilir. */
26
- r(this, "nativeHlsProbe", null);
27
- r(this, "engineInfo", { engine: "native" });
28
- r(this, "hlsOptions", {});
29
- r(this, "streamTextTracks", /* @__PURE__ */ new Map());
32
+ s(this, "nativeHlsProbe", null);
33
+ s(this, "engineInfo", { engine: "native" });
34
+ s(this, "hlsOptions", {});
35
+ s(this, "streamTextTracks", /* @__PURE__ */ new Map());
30
36
  /** Safari native HLS ses izi dinleyicilerini kaldırır. */
31
- r(this, "nativeAudioCleanup", null);
37
+ s(this, "nativeAudioCleanup", null);
32
38
  this.callbacks = e, this.video = t;
33
39
  }
34
40
  /** `options.hls` — sonraki `load()`'da uygulanır. */
@@ -37,22 +43,22 @@ class Be {
37
43
  }
38
44
  /** Bu kaynak zaten yüklü ve hatasız mı — aynı kaynak için yeniden yükleme (başa sarma) gerekmez. */
39
45
  isLoaded(t, e) {
40
- return !!this.last && this.last.src === t && this.last.type === e && !this.video.error && this.video.readyState > 0;
46
+ return !!this.last && this.last.src === t && this.last.type === e && !Ne(this.video) && this.video.readyState > 0;
41
47
  }
42
48
  async load(t, e) {
43
49
  this.last = { src: t, type: e }, this.destroy(), this.video.pause();
44
- const i = be(t, e);
50
+ const i = xe(t, e);
45
51
  if (this.callbacks.onLevelsChanged([], -1), this.callbacks.onAudioTracksChanged([], -1), this.streamTextTracks.clear(), this.callbacks.onTextTracksFound([]), i !== "hls") {
46
52
  this.engineInfo = { engine: "native" }, this.video.src = t;
47
53
  return;
48
54
  }
49
- const s = this.hlsOptions.engine ?? "auto", o = this.video.canPlayType("application/vnd.apple.mpegurl") !== "";
50
- if (s === "native" && o) {
55
+ const r = this.hlsOptions.engine ?? "auto", o = this.video.canPlayType("application/vnd.apple.mpegurl") !== "";
56
+ if (r === "native" && o) {
51
57
  this.loadNativeHls(t, "option");
52
58
  return;
53
59
  }
54
- if (s !== "hls.js" && o && (W() || !X())) {
55
- this.loadNativeHls(t, W() ? "apple-native" : "no-mse");
60
+ if (r !== "hls.js" && o && (J() || !Z())) {
61
+ this.loadNativeHls(t, J() ? "apple-native" : "no-mse");
56
62
  return;
57
63
  }
58
64
  await this.attachHlsJs(t);
@@ -77,23 +83,23 @@ class Be {
77
83
  * İlk metadata'dan önce kod 4 gelirse ve MSE varsa hls.js'e geç.
78
84
  */
79
85
  probeNativeHls(t) {
80
- if (!X() || this.engineInfo.reason === "hlsjs-failed" || this.engineInfo.reason === "option") return;
81
- const e = () => s(), i = () => {
86
+ if (!Z() || this.engineInfo.reason === "hlsjs-failed" || this.engineInfo.reason === "option") return;
87
+ const e = () => r(), i = () => {
82
88
  var a, l;
83
89
  const o = ((a = this.video.error) == null ? void 0 : a.code) === 4;
84
- s(), o && ((l = this.nativeAudioCleanup) == null || l.call(this), this.attachHlsJs(t));
85
- }, s = () => {
90
+ r(), o && ((l = this.nativeAudioCleanup) == null || l.call(this), this.attachHlsJs(t));
91
+ }, r = () => {
86
92
  this.video.removeEventListener("loadedmetadata", e), this.video.removeEventListener("error", i), this.nativeHlsProbe = null;
87
93
  };
88
- this.video.addEventListener("loadedmetadata", e), this.video.addEventListener("error", i), this.nativeHlsProbe = s;
94
+ this.video.addEventListener("loadedmetadata", e), this.video.addEventListener("error", i), this.nativeHlsProbe = r;
89
95
  }
90
96
  /** Safari native HLS: alternatif ses izleri `video.audioTracks`'te (diğer tarayıcılarda bu API yok). */
91
97
  watchNativeAudioTracks() {
92
98
  const t = this.video.audioTracks;
93
99
  if (!t) return;
94
100
  const e = () => {
95
- const i = Array.from(t, (s, o) => ({ index: o, label: s.label || s.language || `${o + 1}`, lang: s.language }));
96
- this.callbacks.onAudioTracksChanged(i, Array.from(t).findIndex((s) => s.enabled));
101
+ const i = Array.from(t, (r, o) => ({ index: o, label: r.label || r.language || `${o + 1}`, lang: r.language }));
102
+ this.callbacks.onAudioTracksChanged(i, Array.from(t).findIndex((r) => r.enabled));
97
103
  };
98
104
  for (const i of ["addtrack", "removetrack", "change"]) t.addEventListener(i, e);
99
105
  this.nativeAudioCleanup = () => {
@@ -111,23 +117,23 @@ class Be {
111
117
  }
112
118
  const i = new e(this.buildHlsConfig());
113
119
  this.hls = i, this.engineInfo = { engine: "hls.js" };
114
- let s = !1, o = !1;
120
+ let r = !1, o = !1;
115
121
  i.on(e.Events.ERROR, (c, p) => {
116
- var m, f, v, x, d, u;
122
+ var u, f, y, x, k, w;
117
123
  if (this.hls === i) {
118
- const b = p;
119
- (u = (d = this.callbacks).onStreamError) == null || u.call(d, {
124
+ const d = p;
125
+ (w = (k = this.callbacks).onStreamError) == null || w.call(k, {
120
126
  type: String(p.type),
121
127
  details: String(p.details),
122
128
  fatal: !!p.fatal,
123
- url: b.url ?? ((m = b.frag) == null ? void 0 : m.url) ?? ((f = b.context) == null ? void 0 : f.url),
124
- httpStatus: (v = b.response) == null ? void 0 : v.code,
125
- reason: b.reason ?? ((x = b.error) == null ? void 0 : x.message)
129
+ url: d.url ?? ((u = d.frag) == null ? void 0 : u.url) ?? ((f = d.context) == null ? void 0 : f.url),
130
+ httpStatus: (y = d.response) == null ? void 0 : y.code,
131
+ reason: d.reason ?? ((x = d.error) == null ? void 0 : x.message)
126
132
  });
127
133
  }
128
134
  if (!p.fatal || this.hls !== i) return;
129
- const g = [e.ErrorDetails.MANIFEST_LOAD_ERROR, e.ErrorDetails.MANIFEST_LOAD_TIMEOUT].includes(p.details);
130
- if (!s && g && this.video.canPlayType("application/vnd.apple.mpegurl") !== "") {
135
+ const m = [e.ErrorDetails.MANIFEST_LOAD_ERROR, e.ErrorDetails.MANIFEST_LOAD_TIMEOUT].includes(p.details);
136
+ if (!r && m && this.video.canPlayType("application/vnd.apple.mpegurl") !== "") {
131
137
  i.destroy(), this.hls = null, this.loadNativeHls(t, "hlsjs-failed");
132
138
  return;
133
139
  }
@@ -139,30 +145,30 @@ class Be {
139
145
  });
140
146
  const a = () => i.levels.map((c, p) => ({ index: p, height: c.height, bitrate: c.bitrate }));
141
147
  i.on(e.Events.MANIFEST_PARSED, () => {
142
- s = !0, this.callbacks.onLevelsChanged(a(), i.currentLevel);
148
+ r = !0, this.callbacks.onLevelsChanged(a(), i.currentLevel);
143
149
  }), i.on(e.Events.LEVEL_SWITCHED, (c, p) => {
144
150
  this.callbacks.onLevelsChanged(a(), i.autoLevelEnabled ? -1 : p.level);
145
151
  });
146
152
  const l = () => i.audioTracks.map((c, p) => ({ index: p, label: c.name || c.lang || `${p + 1}`, lang: c.lang ?? "" }));
147
153
  i.on(e.Events.AUDIO_TRACKS_UPDATED, () => this.callbacks.onAudioTracksChanged(l(), i.audioTrack)), i.on(e.Events.AUDIO_TRACK_SWITCHED, (c, p) => this.callbacks.onAudioTracksChanged(l(), p.id)), i.on(e.Events.NON_NATIVE_TEXT_TRACKS_FOUND, (c, p) => {
148
- var g;
149
- for (const m of p.tracks) {
150
- const f = m.subtitleTrack, v = f ? `sub:${f.id}` : `cc:${m._id ?? m.label}`, x = m.kind === "captions" ? "captions" : "subtitles";
151
- this.streamTextTracks.set(v, { id: v, kind: x, label: m.label, lang: (f == null ? void 0 : f.lang) ?? ((g = m.closedCaptions) == null ? void 0 : g.lang) ?? "" });
154
+ var m;
155
+ for (const u of p.tracks) {
156
+ const f = u.subtitleTrack, y = f ? `sub:${f.id}` : `cc:${u._id ?? u.label}`, x = u.kind === "captions" ? "captions" : "subtitles";
157
+ this.streamTextTracks.set(y, { id: y, kind: x, label: u.label, lang: (f == null ? void 0 : f.lang) ?? ((m = u.closedCaptions) == null ? void 0 : m.lang) ?? "" });
152
158
  }
153
159
  this.callbacks.onTextTracksFound([...this.streamTextTracks.values()]);
154
160
  }), i.on(e.Events.CUES_PARSED, (c, p) => {
155
- const g = p.type === "subtitles" && p.subtitleTrack ? `sub:${p.subtitleTrack.id}` : `cc:${p.track}`;
156
- this.callbacks.onCues(g, p.cues);
161
+ const m = p.type === "subtitles" && p.subtitleTrack ? `sub:${p.subtitleTrack.id}` : `cc:${p.track}`;
162
+ this.callbacks.onCues(m, p.cues);
157
163
  }), i.attachMedia(this.video), i.loadSource(t);
158
164
  }
159
165
  buildHlsConfig() {
160
166
  const t = this.hlsOptions.config ?? {}, e = { enableWorker: !0, renderTextTracksNatively: !1, liveDurationInfinity: !0, ...t };
161
167
  if (this.hlsOptions.withCredentials) {
162
- const { xhrSetup: i, fetchSetup: s } = t;
168
+ const { xhrSetup: i, fetchSetup: r } = t;
163
169
  e.xhrSetup = (o, a, l) => (o.withCredentials = !0, i == null ? void 0 : i(o, a, l)), e.fetchSetup = (o, a) => {
164
170
  const l = { ...a, credentials: "include" };
165
- return s ? s(o, l) : new Request(o.url, l);
171
+ return r ? r(o, l) : new Request(o.url, l);
166
172
  };
167
173
  }
168
174
  return e;
@@ -190,8 +196,8 @@ class Be {
190
196
  return;
191
197
  }
192
198
  const e = this.video.audioTracks;
193
- e && (e[t] && (e[t].enabled = !0), Array.from(e).forEach((i, s) => {
194
- s !== t && (i.enabled = !1);
199
+ e && (e[t] && (e[t].enabled = !0), Array.from(e).forEach((i, r) => {
200
+ r !== t && (i.enabled = !1);
195
201
  }));
196
202
  }
197
203
  /**
@@ -208,7 +214,7 @@ class Be {
208
214
  (t = this.nativeHlsProbe) == null || t.call(this), (e = this.nativeAudioCleanup) == null || e.call(this), this.hls && (this.hls.destroy(), this.hls = null);
209
215
  }
210
216
  }
211
- const V = {
217
+ const _ = {
212
218
  mp4: "video/mp4",
213
219
  m4v: "video/mp4",
214
220
  webm: "video/webm",
@@ -221,118 +227,127 @@ const V = {
221
227
  wav: "audio/wav",
222
228
  flac: "audio/flac"
223
229
  };
224
- function fe(n) {
225
- var s, o;
226
- const t = be(n.src, n.type);
230
+ function ke(n) {
231
+ var r, o;
232
+ const t = xe(n.src, n.type);
227
233
  if (t !== "unknown") return t;
228
- const e = (o = (s = n.type) == null ? void 0 : s.split(";")[0]) == null ? void 0 : o.trim().toLowerCase();
234
+ const e = (o = (r = n.type) == null ? void 0 : r.split(";")[0]) == null ? void 0 : o.trim().toLowerCase();
229
235
  if (e) {
230
- const a = Object.keys(V).find((l) => V[l] === e);
236
+ const a = Object.keys(_).find((l) => _[l] === e);
231
237
  if (a) return a;
232
238
  }
233
239
  const i = /\.([a-z0-9]{2,5})(?:$|[?#])/i.exec(n.src);
234
240
  return i ? i[1].toLowerCase() : "other";
235
241
  }
236
- function Re(n, t) {
242
+ function Fe(n, t) {
237
243
  const e = [];
238
- for (const s of n) {
239
- const o = fe(s), a = e.find((l) => l.format === o);
240
- a ? a.sources.push(s) : e.push({ format: o, sources: [s] });
244
+ for (const r of n) {
245
+ const o = ke(r), a = e.find((l) => l.format === o);
246
+ a ? a.sources.push(r) : e.push({ format: o, sources: [r] });
241
247
  }
242
248
  if (!(t != null && t.length)) return e;
243
- const i = (s) => {
244
- const o = t.findIndex((a) => a.toLowerCase() === s);
249
+ const i = (r) => {
250
+ const o = t.findIndex((a) => a.toLowerCase() === r);
245
251
  return o === -1 ? t.length : o;
246
252
  };
247
- return e.sort((s, o) => i(s.format) - i(o.format));
253
+ return e.sort((r, o) => i(r.format) - i(o.format));
248
254
  }
249
- function ze(n, t) {
255
+ function De(n, t) {
250
256
  var i;
251
257
  if (n.format === "hls") {
252
- const s = window;
253
- return !(typeof s.MediaSource < "u" || typeof s.ManagedMediaSource < "u") && t.canPlayType("application/vnd.apple.mpegurl") === "";
258
+ const r = window;
259
+ return !(typeof r.MediaSource < "u" || typeof r.ManagedMediaSource < "u") && t.canPlayType("application/vnd.apple.mpegurl") === "";
254
260
  }
255
- const e = ((i = n.sources.find((s) => s.type)) == null ? void 0 : i.type) ?? V[n.format];
261
+ const e = ((i = n.sources.find((r) => r.type)) == null ? void 0 : i.type) ?? _[n.format];
256
262
  return !!e && t.canPlayType(e) === "";
257
263
  }
258
- function T(n) {
264
+ function A(n) {
259
265
  if (!Number.isFinite(n) || n < 0) return "0:00";
260
- const t = Math.floor(n), e = Math.floor(t / 3600), i = Math.floor(t % 3600 / 60), s = t % 60, o = e > 0 ? String(i).padStart(2, "0") : String(i), a = String(s).padStart(2, "0");
266
+ const t = Math.floor(n), e = Math.floor(t / 3600), i = Math.floor(t % 3600 / 60), r = t % 60, o = e > 0 ? String(i).padStart(2, "0") : String(i), a = String(r).padStart(2, "0");
261
267
  return e > 0 ? `${e}:${o}:${a}` : `${o}:${a}`;
262
268
  }
263
- const Oe = 10, Ne = 1;
264
- class Ie {
269
+ const ee = 0.05;
270
+ function D(n, t) {
271
+ const e = n.duration;
272
+ return !Number.isFinite(e) || e <= ee * 2 ? t : Math.min(t, e - ee);
273
+ }
274
+ function we(n, t) {
275
+ const e = n.seekable.length ? n.seekable.start(0) : 0, i = Number.isFinite(n.duration) ? n.duration : n.seekable.length ? n.seekable.end(n.seekable.length - 1) : n.currentTime;
276
+ n.currentTime = D(n, Math.max(e, Math.min(i, n.currentTime + t)));
277
+ }
278
+ const He = 10, Ge = 1;
279
+ class Ve {
265
280
  constructor(t, e) {
266
- r(this, "el");
267
- r(this, "trackEl");
268
- r(this, "chaptersEl", null);
269
- r(this, "chapters", []);
281
+ s(this, "el");
282
+ s(this, "trackEl");
283
+ s(this, "chaptersEl", null);
284
+ s(this, "chapters", []);
270
285
  /** İmlecin üstündeki zaman (varsayılan, plugin gerektirmez) — kendi zamanını gösteren plugin'ler `suppressHoverTime` ile gizler. */
271
- r(this, "hoverTimeEl");
272
- r(this, "hoverTimeSuppressors", /* @__PURE__ */ new Set());
273
- r(this, "playedEl");
274
- r(this, "bufferedEl");
275
- r(this, "thumbEl");
276
- r(this, "hoverDotEl");
277
- r(this, "video");
278
- r(this, "labels");
279
- r(this, "dragging", !1);
280
- r(this, "markerEls", []);
281
- r(this, "trackWidth", 0);
282
- r(this, "resizeObserver");
283
- r(this, "rafId", null);
286
+ s(this, "hoverTimeEl");
287
+ s(this, "hoverTimeSuppressors", /* @__PURE__ */ new Set());
288
+ s(this, "playedEl");
289
+ s(this, "bufferedEl");
290
+ s(this, "thumbEl");
291
+ s(this, "hoverDotEl");
292
+ s(this, "video");
293
+ s(this, "labels");
294
+ s(this, "dragging", !1);
295
+ s(this, "markerEls", []);
296
+ s(this, "trackWidth", 0);
297
+ s(this, "resizeObserver");
298
+ s(this, "rafId", null);
284
299
  /** Canlıda hover zamanını başka bir bileşen gösteriyor mu (live-wall-clock tooltip'i) — üst üste binmesin. */
285
- r(this, "liveHoverHandled", !1);
286
- r(this, "onHoverMove", (t) => {
300
+ s(this, "liveHoverHandled", !1);
301
+ s(this, "onHoverMove", (t) => {
287
302
  const e = this.timeline(), i = this.ratioAtClientX(t.clientX);
288
303
  if (e && !this.dragging ? (this.hoverDotEl.style.transform = `translate(${this.xAtRatio(i)}px, -50%) translateX(-50%)`, this.hoverDotEl.setAttribute("data-visible", "")) : this.hoverDotEl.removeAttribute("data-visible"), this.hoverTimeSuppressors.size || !e || e.live && this.liveHoverHandled) {
289
304
  this.hoverTimeEl.removeAttribute("data-visible");
290
305
  return;
291
306
  }
292
- const s = e.start + i * (e.end - e.start);
293
- this.hoverTimeEl.textContent = e.live ? `-${T(e.end - s)}` : T(s), this.hoverTimeEl.setAttribute("data-visible", "");
307
+ const r = e.start + i * (e.end - e.start);
308
+ this.hoverTimeEl.textContent = e.live ? `-${A(e.end - r)}` : A(r), this.hoverTimeEl.setAttribute("data-visible", "");
294
309
  const o = this.hoverTimeEl.offsetWidth, a = Math.min(Math.max(this.layoutXAtClientX(t.clientX) - o / 2, 0), Math.max(this.trackWidth - o, 0));
295
310
  this.hoverTimeEl.style.transform = `translateX(${a}px)`;
296
311
  });
297
- r(this, "onHoverLeave", () => {
312
+ s(this, "onHoverLeave", () => {
298
313
  this.hoverTimeEl.removeAttribute("data-visible"), this.hoverDotEl.removeAttribute("data-visible");
299
314
  });
300
- r(this, "onPointerDown", (t) => {
315
+ s(this, "onPointerDown", (t) => {
301
316
  this.dragging = !0, this.hoverDotEl.removeAttribute("data-visible"), this.el.setPointerCapture(t.pointerId), this.seekToRatio(this.ratioFromEvent(t)), this.el.addEventListener("pointermove", this.onPointerMove), this.el.addEventListener("pointerup", this.onPointerUp);
302
317
  });
303
- r(this, "onPointerMove", (t) => {
318
+ s(this, "onPointerMove", (t) => {
304
319
  this.dragging && this.seekToRatio(this.ratioFromEvent(t));
305
320
  });
306
- r(this, "onPointerUp", (t) => {
321
+ s(this, "onPointerUp", (t) => {
307
322
  this.dragging = !1, this.el.releasePointerCapture(t.pointerId), this.el.removeEventListener("pointermove", this.onPointerMove), this.el.removeEventListener("pointerup", this.onPointerUp);
308
323
  });
309
324
  /** Odaktayken ←/→ sarma süresi (sn) — player'ın klavye kısayoluyla aynı (options.keyboardSeekStep). */
310
- r(this, "keyboardStep", 5);
325
+ s(this, "keyboardStep", 5);
311
326
  /** Odaktayken ok tuşuyla sarıldığında (sn, negatif = geri) — sarma bildirimi için. */
312
- r(this, "onKeyboardSeek", null);
313
- r(this, "onKeyDown", (t) => {
314
- var i, s;
327
+ s(this, "onKeyboardSeek", null);
328
+ s(this, "onKeyDown", (t) => {
329
+ var i, r;
315
330
  const e = this.timeline();
316
- e && (t.key === "ArrowRight" ? (this.video.currentTime = Math.min(e.end, this.video.currentTime + this.keyboardStep), (i = this.onKeyboardSeek) == null || i.call(this, this.keyboardStep), t.preventDefault()) : t.key === "ArrowLeft" && (this.video.currentTime = Math.max(e.start, this.video.currentTime - this.keyboardStep), (s = this.onKeyboardSeek) == null || s.call(this, -this.keyboardStep), t.preventDefault()));
331
+ e && (t.key === "ArrowRight" ? (this.video.currentTime = D(this.video, Math.min(e.end, this.video.currentTime + this.keyboardStep)), (i = this.onKeyboardSeek) == null || i.call(this, this.keyboardStep), t.preventDefault()) : t.key === "ArrowLeft" && (this.video.currentTime = Math.max(e.start, this.video.currentTime - this.keyboardStep), (r = this.onKeyboardSeek) == null || r.call(this, -this.keyboardStep), t.preventDefault()));
317
332
  });
318
- r(this, "startLoop", () => {
333
+ s(this, "startLoop", () => {
319
334
  if (this.rafId !== null) return;
320
335
  const t = () => {
321
336
  this.render(), this.rafId = requestAnimationFrame(t);
322
337
  };
323
338
  this.rafId = requestAnimationFrame(t);
324
339
  });
325
- r(this, "stopLoop", () => {
340
+ s(this, "stopLoop", () => {
326
341
  this.rafId !== null && (cancelAnimationFrame(this.rafId), this.rafId = null), this.render();
327
342
  });
328
- r(this, "render", () => {
343
+ s(this, "render", () => {
329
344
  const t = this.timeline();
330
345
  if (this.el.toggleAttribute("data-no-duration", !t), this.el.toggleAttribute("data-live", !!(t != null && t.live)), !t) {
331
346
  this.hoverTimeEl.removeAttribute("data-visible"), this.hoverDotEl.removeAttribute("data-visible"), this.playedEl.style.transform = "scaleX(0)", this.thumbEl.style.translate = "-50% 0", this.bufferedEl.style.transform = "scaleX(0)";
332
347
  return;
333
348
  }
334
- const e = t.end - t.start, i = (l) => Math.min(1, Math.max(0, (l - t.start) / e)), s = i(this.video.currentTime);
335
- this.thumbEl.style.translate = `calc(${this.xAtRatio(s)}px - 50%) 0`;
349
+ const e = t.end - t.start, i = (l) => Math.min(1, Math.max(0, (l - t.start) / e)), r = i(this.video.currentTime);
350
+ this.thumbEl.style.translate = `calc(${this.xAtRatio(r)}px - 50%) 0`;
336
351
  let o = 0;
337
352
  for (let l = 0; l < this.video.buffered.length; l++)
338
353
  this.video.buffered.start(l) <= this.video.currentTime && (o = Math.max(o, this.video.buffered.end(l)));
@@ -340,10 +355,10 @@ class Ie {
340
355
  if (this.chapters.length)
341
356
  for (const l of this.chapters) {
342
357
  const h = l.end - l.start, c = (p) => h > 0 ? Math.min(1, Math.max(0, (p - l.start) / h)) : 0;
343
- l.playedEl.style.transform = `scaleX(${c(s)})`, l.bufferedEl.style.transform = `scaleX(${c(a)})`;
358
+ l.playedEl.style.transform = `scaleX(${c(r)})`, l.bufferedEl.style.transform = `scaleX(${c(a)})`;
344
359
  }
345
360
  else
346
- this.playedEl.style.transform = `scaleX(${s})`, this.bufferedEl.style.transform = `scaleX(${a})`;
361
+ this.playedEl.style.transform = `scaleX(${r})`, this.bufferedEl.style.transform = `scaleX(${a})`;
347
362
  this.el.setAttribute("aria-valuemin", String(Math.floor(t.start))), this.el.setAttribute("aria-valuemax", String(Math.floor(t.end))), this.el.setAttribute("aria-valuenow", String(Math.floor(this.video.currentTime)));
348
363
  });
349
364
  this.video = t, this.labels = e, this.el = document.createElement("div"), this.el.setAttribute("part", "seek-bar"), this.el.className = "hp-seekbar hp:relative hp:h-[var(--hp-seek-hit-h)] hp:flex hp:items-center hp:cursor-pointer hp:group hp:touch-none", this.el.setAttribute("role", "slider"), this.el.setAttribute("tabindex", "0"), this.el.setAttribute("aria-label", e.seekBar), this.el.setAttribute("aria-valuemin", "0");
@@ -362,8 +377,8 @@ class Ie {
362
377
  if (t !== 1 / 0) return null;
363
378
  const { seekable: e } = this.video;
364
379
  if (!e.length) return null;
365
- const i = e.start(0), s = e.end(e.length - 1);
366
- return s - i >= Oe ? { start: i, end: s, live: !0 } : null;
380
+ const i = e.start(0), r = e.end(e.length - 1);
381
+ return r - i >= He ? { start: i, end: r, live: !0 } : null;
367
382
  }
368
383
  /** Kendi zamanını gösteren plugin'ler (sprite/segments) varsayılan hover zamanını gizler — keyed set. */
369
384
  suppressHoverTime(t, e) {
@@ -377,10 +392,10 @@ class Ie {
377
392
  const e = this.layoutXAtClientX(t);
378
393
  if (!this.chapters.length) return this.trackWidth > 0 ? Math.min(1, Math.max(0, e / this.trackWidth)) : 0;
379
394
  for (let i = 0; i < this.chapters.length; i++) {
380
- const s = this.chapters[i], o = this.chapters[i + 1], a = o ? o.left : 1 / 0;
395
+ const r = this.chapters[i], o = this.chapters[i + 1], a = o ? o.left : 1 / 0;
381
396
  if (e < a || !o) {
382
- const l = s.width > 0 ? Math.min(1, Math.max(0, (e - s.left) / s.width)) : 0;
383
- return s.start + l * (s.end - s.start);
397
+ const l = r.width > 0 ? Math.min(1, Math.max(0, (e - r.left) / r.width)) : 0;
398
+ return r.start + l * (r.end - r.start);
384
399
  }
385
400
  }
386
401
  return 1;
@@ -388,20 +403,20 @@ class Ie {
388
403
  /** 0–1 zaman oranının seek bar üzerindeki px konumu (thumb için). */
389
404
  xAtRatio(t) {
390
405
  if (!this.chapters.length) return t * this.trackWidth;
391
- const e = this.chapters.find((o) => t < o.end) ?? this.chapters[this.chapters.length - 1], i = e.end - e.start, s = i > 0 ? Math.min(1, Math.max(0, (t - e.start) / i)) : 0;
392
- return e.left + s * e.width;
406
+ const e = this.chapters.find((o) => t < o.end) ?? this.chapters[this.chapters.length - 1], i = e.end - e.start, r = i > 0 ? Math.min(1, Math.max(0, (t - e.start) / i)) : 0;
407
+ return e.left + r * e.width;
393
408
  }
394
409
  /** Track'i sıralı, 0→1'i kesintisiz kapsayan oran aralıklarına göre ayrı parçalara böler. */
395
410
  setChapters(t) {
396
411
  if (this.clearChapters(), !t.length) return [];
397
412
  const e = document.createElement("div");
398
413
  return e.className = "hp-chapters", this.chapters = t.map((i) => {
399
- const s = document.createElement("div");
400
- s.className = "hp-chapter", s.setAttribute("part", "segment-band"), s.style.flex = `${Math.max(i.end - i.start, 0)} 1 0px`;
414
+ const r = document.createElement("div");
415
+ r.className = "hp-chapter", r.setAttribute("part", "segment-band"), r.style.flex = `${Math.max(i.end - i.start, 0)} 1 0px`;
401
416
  const o = document.createElement("div");
402
417
  o.className = "hp-chapter-fill hp-chapter-buffered";
403
418
  const a = document.createElement("div");
404
- return a.className = "hp-chapter-fill hp-chapter-played", i.color && (a.style.background = i.color), s.append(o, a), e.appendChild(s), { ...i, el: s, bufferedEl: o, playedEl: a, left: 0, width: 0 };
419
+ return a.className = "hp-chapter-fill hp-chapter-played", i.color && (a.style.background = i.color), r.append(o, a), e.appendChild(r), { ...i, el: r, bufferedEl: o, playedEl: a, left: 0, width: 0 };
405
420
  }), this.trackEl.style.display = "none", this.trackEl.after(e), this.chaptersEl = e, this.measureChapters(), this.render(), this.chapters.map((i) => i.el);
406
421
  }
407
422
  clearChapters() {
@@ -425,15 +440,15 @@ class Ie {
425
440
  if (!this.chapters.length) return;
426
441
  const t = this.el.getBoundingClientRect(), e = t.width > 0 ? this.trackWidth / t.width : 1;
427
442
  for (const i of this.chapters) {
428
- const s = i.el.getBoundingClientRect();
429
- i.left = (s.left - t.left) * e, i.width = s.width * e;
443
+ const r = i.el.getBoundingClientRect();
444
+ i.left = (r.left - t.left) * e, i.width = r.width * e;
430
445
  }
431
446
  }
432
447
  seekToRatio(t) {
433
448
  const e = this.timeline();
434
449
  if (!e) return;
435
450
  const i = e.start + t * (e.end - e.start);
436
- this.video.currentTime = e.live ? Math.min(i, e.end - Ne) : i, this.render();
451
+ this.video.currentTime = e.live ? Math.min(i, e.end - Ge) : D(this.video, i), this.render();
437
452
  }
438
453
  /** 0–1 arası oranda, seek bar üzerine ince bir işaret çizgisi ekler (ör. loop A/B noktaları). */
439
454
  addMarker(t, e = "") {
@@ -451,63 +466,63 @@ class Ie {
451
466
  this.rafId !== null && cancelAnimationFrame(this.rafId), this.resizeObserver.disconnect(), this.el.removeEventListener("pointermove", this.onHoverMove), this.el.removeEventListener("pointerleave", this.onHoverLeave), this.video.removeEventListener("play", this.startLoop), this.video.removeEventListener("pause", this.stopLoop), this.video.removeEventListener("ended", this.stopLoop), this.video.removeEventListener("timeupdate", this.render), this.video.removeEventListener("progress", this.render), this.video.removeEventListener("loadedmetadata", this.render), this.clearMarkers(), (t = this.chaptersEl) == null || t.remove();
452
467
  }
453
468
  }
454
- function S(n, t = "") {
469
+ function L(n, t = "") {
455
470
  const e = document.createElement("i");
456
471
  return e.className = `hp-icon hp-icon-${n}${t ? ` ${t}` : ""}`, e.setAttribute("aria-hidden", "true"), e;
457
472
  }
458
- function B(n, t) {
473
+ function R(n, t) {
459
474
  n.className = n.className.replace(/hp-icon-[\w-]+/, `hp-icon-${t}`);
460
475
  }
461
- const z = 0.05, Fe = 150;
462
- class De {
476
+ const O = 0.05, Ue = 150;
477
+ class _e {
463
478
  constructor(t, e, i) {
464
- r(this, "el");
479
+ s(this, "el");
465
480
  /** Dokunmatikte ses butonu gizli; sessiz oynarken görünen "Sesi aç" rozeti (chrome dışında monte edilir, otomatik gizlenmez). */
466
- r(this, "unmuteBadge");
467
- r(this, "unmuteText");
468
- r(this, "button");
469
- r(this, "iconEl");
470
- r(this, "slider");
471
- r(this, "sliderFill");
472
- r(this, "video");
473
- r(this, "labels");
474
- r(this, "adHooks");
475
- r(this, "dragging", !1);
476
- r(this, "hideTimer", null);
477
- r(this, "openNow", () => {
481
+ s(this, "unmuteBadge");
482
+ s(this, "unmuteText");
483
+ s(this, "button");
484
+ s(this, "iconEl");
485
+ s(this, "slider");
486
+ s(this, "sliderFill");
487
+ s(this, "video");
488
+ s(this, "labels");
489
+ s(this, "adHooks");
490
+ s(this, "dragging", !1);
491
+ s(this, "hideTimer", null);
492
+ s(this, "openNow", () => {
478
493
  this.hideTimer && (clearTimeout(this.hideTimer), this.hideTimer = null), this.slider.style.opacity = "1", this.slider.style.pointerEvents = "auto";
479
494
  });
480
- r(this, "scheduleHide", () => {
495
+ s(this, "scheduleHide", () => {
481
496
  this.hideTimer && clearTimeout(this.hideTimer), this.hideTimer = setTimeout(() => {
482
497
  this.hideTimer = null, this.slider.style.opacity = "0", this.slider.style.pointerEvents = "none";
483
- }, Fe);
498
+ }, Ue);
484
499
  });
485
- r(this, "onWheel", (t) => {
500
+ s(this, "onWheel", (t) => {
486
501
  if (t.preventDefault(), this.adHooks.isAdActive()) {
487
- const s = this.adHooks.getVolume();
488
- this.adHooks.setVolume(Math.min(1, Math.max(0, s + (t.deltaY < 0 ? z : -z)))), this.render();
502
+ const r = this.adHooks.getVolume();
503
+ this.adHooks.setVolume(Math.min(1, Math.max(0, r + (t.deltaY < 0 ? O : -O)))), this.render();
489
504
  return;
490
505
  }
491
- const e = this.video.muted ? 0 : this.video.volume, i = Math.min(1, Math.max(0, e + (t.deltaY < 0 ? z : -z)));
506
+ const e = this.video.muted ? 0 : this.video.volume, i = Math.min(1, Math.max(0, e + (t.deltaY < 0 ? O : -O)));
492
507
  this.video.volume = i, this.video.muted = i === 0;
493
508
  });
494
- r(this, "onToggleMute", () => {
509
+ s(this, "onToggleMute", () => {
495
510
  if (this.adHooks.isAdActive()) {
496
511
  this.adHooks.toggleMute(), this.render();
497
512
  return;
498
513
  }
499
514
  this.video.muted = !this.video.muted, !this.video.muted && this.video.volume === 0 && (this.video.volume = 0.5);
500
515
  });
501
- r(this, "onSliderPointerDown", (t) => {
516
+ s(this, "onSliderPointerDown", (t) => {
502
517
  this.dragging = !0, this.slider.setPointerCapture(t.pointerId), this.setFromClientY(t.clientY), this.slider.addEventListener("pointermove", this.onSliderPointerMove), this.slider.addEventListener("pointerup", this.onSliderPointerUp);
503
518
  });
504
- r(this, "onSliderPointerMove", (t) => {
519
+ s(this, "onSliderPointerMove", (t) => {
505
520
  this.dragging && this.setFromClientY(t.clientY);
506
521
  });
507
- r(this, "onSliderPointerUp", (t) => {
522
+ s(this, "onSliderPointerUp", (t) => {
508
523
  this.dragging = !1, this.slider.releasePointerCapture(t.pointerId), this.slider.removeEventListener("pointermove", this.onSliderPointerMove), this.slider.removeEventListener("pointerup", this.onSliderPointerUp);
509
524
  });
510
- r(this, "onSliderKeyDown", (t) => {
525
+ s(this, "onSliderKeyDown", (t) => {
511
526
  if (this.adHooks.isAdActive()) {
512
527
  if (t.key === "ArrowUp")
513
528
  this.adHooks.setVolume(Math.min(1, this.adHooks.getVolume() + 0.1)), t.preventDefault();
@@ -520,19 +535,19 @@ class De {
520
535
  }
521
536
  t.key === "ArrowUp" ? (this.video.volume = Math.min(1, this.video.volume + 0.1), this.video.muted = !1, t.preventDefault()) : t.key === "ArrowDown" && (this.video.volume = Math.max(0, this.video.volume - 0.1), t.preventDefault());
522
537
  });
523
- r(this, "render", () => {
538
+ s(this, "render", () => {
524
539
  const t = this.adHooks.isAdActive() ? this.adHooks.getVolume() : this.video.muted ? 0 : this.video.volume;
525
540
  this.sliderFill.style.height = `${t * 100}%`, this.slider.setAttribute("aria-valuenow", String(Math.round(t * 100)));
526
541
  const e = t === 0 ? this.labels.unmute : this.labels.mute;
527
542
  this.button.setAttribute("aria-label", e);
528
543
  const i = this.adHooks.isAdActive() || !this.video.paused;
529
- this.unmuteBadge.toggleAttribute("data-visible", t === 0 && i), this.unmuteText.textContent = this.labels.unmute, t === 0 ? B(this.iconEl, "volume-muted") : t < 0.5 ? B(this.iconEl, "volume-low") : B(this.iconEl, "volume-high");
544
+ this.unmuteBadge.toggleAttribute("data-visible", t === 0 && i), this.unmuteText.textContent = this.labels.unmute, t === 0 ? R(this.iconEl, "volume-muted") : t < 0.5 ? R(this.iconEl, "volume-low") : R(this.iconEl, "volume-high");
530
545
  });
531
- this.video = t, this.labels = e, this.adHooks = i, this.el = document.createElement("div"), this.el.className = "hp-volume hp:relative hp:flex hp:items-center", this.unmuteBadge = document.createElement("button"), this.unmuteBadge.type = "button", this.unmuteBadge.className = "hp-unmute-badge", this.unmuteBadge.setAttribute("part", "unmute-badge"), this.unmuteBadge.appendChild(S("volume-muted", "hp:text-base")), this.unmuteText = document.createElement("span"), this.unmuteText.textContent = e.unmute, this.unmuteBadge.appendChild(this.unmuteText), this.unmuteBadge.addEventListener("pointerdown", (o) => o.stopPropagation()), this.unmuteBadge.addEventListener("click", (o) => {
546
+ this.video = t, this.labels = e, this.adHooks = i, this.el = document.createElement("div"), this.el.className = "hp-volume hp:relative hp:flex hp:items-center", this.unmuteBadge = document.createElement("button"), this.unmuteBadge.type = "button", this.unmuteBadge.className = "hp-unmute-badge", this.unmuteBadge.setAttribute("part", "unmute-badge"), this.unmuteBadge.appendChild(L("volume-muted", "hp:text-base")), this.unmuteText = document.createElement("span"), this.unmuteText.textContent = e.unmute, this.unmuteBadge.appendChild(this.unmuteText), this.unmuteBadge.addEventListener("pointerdown", (o) => o.stopPropagation()), this.unmuteBadge.addEventListener("click", (o) => {
532
547
  o.stopPropagation(), this.unmute();
533
- }), this.button = document.createElement("button"), this.button.type = "button", this.button.setAttribute("part", "volume-button"), this.button.className = "hp-chip hp:flex hp:items-center hp:justify-center hp:w-[var(--hp-ctrl-btn-size)] hp:h-[var(--hp-ctrl-btn-size)] hp:cursor-pointer", this.button.setAttribute("aria-label", e.mute), this.button.dataset.shortcut = "M", this.iconEl = S("volume-high", "hp:text-[length:var(--hp-ctrl-icon-size)]"), this.button.appendChild(this.iconEl), this.el.appendChild(this.button), this.slider = document.createElement("div"), this.slider.setAttribute("part", "volume-slider"), this.slider.className = "hp-chip hp:absolute hp:bottom-full hp:left-1/2 hp-center-x hp:mb-2 hp:w-7 hp:h-20 hp:rounded-full hp:cursor-pointer hp:flex hp:items-end hp:justify-center hp:p-1.5 hp:pointer-events-none hp:transition-opacity hp:duration-150 hp:will-change-[opacity]", this.slider.style.opacity = "0", this.slider.style.borderRadius = "9999px", this.slider.setAttribute("role", "slider"), this.slider.setAttribute("tabindex", "0"), this.slider.setAttribute("aria-label", e.volume), this.slider.setAttribute("aria-orientation", "vertical"), this.slider.setAttribute("aria-valuemin", "0"), this.slider.setAttribute("aria-valuemax", "100");
534
- const s = document.createElement("div");
535
- s.className = "hp:relative hp:w-1.5 hp:h-full hp:rounded-full hp:bg-on-surface/25 hp:overflow-hidden", this.slider.appendChild(s), this.sliderFill = document.createElement("div"), this.sliderFill.className = "hp:absolute hp:inset-x-0 hp:bottom-0 hp:bg-accent", s.appendChild(this.sliderFill), this.el.appendChild(this.slider), this.button.addEventListener("click", this.onToggleMute), this.slider.addEventListener("pointerdown", this.onSliderPointerDown), this.slider.addEventListener("keydown", this.onSliderKeyDown), this.el.addEventListener("mouseenter", this.openNow), this.el.addEventListener("mouseleave", this.scheduleHide), this.el.addEventListener("focusin", this.openNow), this.el.addEventListener("focusout", this.scheduleHide), this.el.addEventListener("wheel", this.onWheel, { passive: !1 }), t.addEventListener("volumechange", this.render), t.addEventListener("play", this.render), t.addEventListener("pause", this.render), this.render();
548
+ }), this.button = document.createElement("button"), this.button.type = "button", this.button.setAttribute("part", "volume-button"), this.button.className = "hp-chip hp:flex hp:items-center hp:justify-center hp:w-[var(--hp-ctrl-btn-size)] hp:h-[var(--hp-ctrl-btn-size)] hp:cursor-pointer", this.button.setAttribute("aria-label", e.mute), this.button.dataset.shortcut = "M", this.iconEl = L("volume-high", "hp:text-[length:var(--hp-ctrl-icon-size)]"), this.button.appendChild(this.iconEl), this.el.appendChild(this.button), this.slider = document.createElement("div"), this.slider.setAttribute("part", "volume-slider"), this.slider.className = "hp-chip hp:absolute hp:bottom-full hp:left-1/2 hp-center-x hp:mb-2 hp:w-7 hp:h-20 hp:rounded-full hp:cursor-pointer hp:flex hp:items-end hp:justify-center hp:p-1.5 hp:pointer-events-none hp:transition-opacity hp:duration-150 hp:will-change-[opacity]", this.slider.style.opacity = "0", this.slider.style.borderRadius = "9999px", this.slider.setAttribute("role", "slider"), this.slider.setAttribute("tabindex", "0"), this.slider.setAttribute("aria-label", e.volume), this.slider.setAttribute("aria-orientation", "vertical"), this.slider.setAttribute("aria-valuemin", "0"), this.slider.setAttribute("aria-valuemax", "100");
549
+ const r = document.createElement("div");
550
+ r.className = "hp:relative hp:w-1.5 hp:h-full hp:rounded-full hp:bg-on-surface/25 hp:overflow-hidden", this.slider.appendChild(r), this.sliderFill = document.createElement("div"), this.sliderFill.className = "hp:absolute hp:inset-x-0 hp:bottom-0 hp:bg-accent", r.appendChild(this.sliderFill), this.el.appendChild(this.slider), this.button.addEventListener("click", this.onToggleMute), this.slider.addEventListener("pointerdown", this.onSliderPointerDown), this.slider.addEventListener("keydown", this.onSliderKeyDown), this.el.addEventListener("mouseenter", this.openNow), this.el.addEventListener("mouseleave", this.scheduleHide), this.el.addEventListener("focusin", this.openNow), this.el.addEventListener("focusout", this.scheduleHide), this.el.addEventListener("wheel", this.onWheel, { passive: !1 }), t.addEventListener("volumechange", this.render), t.addEventListener("play", this.render), t.addEventListener("pause", this.render), this.render();
536
551
  }
537
552
  /** "Sesi aç" rozeti: yalnızca AÇAR (toggle değil) — reklam sırasında reklamın sesini. */
538
553
  unmute() {
@@ -562,32 +577,32 @@ class De {
562
577
  this.hideTimer && clearTimeout(this.hideTimer), this.el.removeEventListener("mouseenter", this.openNow), this.el.removeEventListener("mouseleave", this.scheduleHide), this.el.removeEventListener("focusin", this.openNow), this.el.removeEventListener("focusout", this.scheduleHide), this.el.removeEventListener("wheel", this.onWheel), this.video.removeEventListener("volumechange", this.render), this.video.removeEventListener("play", this.render), this.video.removeEventListener("pause", this.render), this.unmuteBadge.remove();
563
578
  }
564
579
  }
565
- const He = '<svg class="hp-lock" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true"><path fill="currentColor" d="M12 2a5 5 0 0 0-5 5v3H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8a2 2 0 0 0-2-2h-1V7a5 5 0 0 0-5-5Zm-3 8V7a3 3 0 1 1 6 0v3H9Z"/></svg>', D = 8, A = 8, Y = 100, O = 256;
566
- class Ge {
580
+ const qe = '<svg class="hp-lock" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true"><path fill="currentColor" d="M12 2a5 5 0 0 0-5 5v3H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8a2 2 0 0 0-2-2h-1V7a5 5 0 0 0-5-5Zm-3 8V7a3 3 0 1 1 6 0v3H9Z"/></svg>', G = 8, P = 8, te = 100, N = 256;
581
+ class je {
567
582
  constructor(t, e, i) {
568
- r(this, "el");
569
- r(this, "button");
570
- r(this, "panel");
571
- r(this, "video");
572
- r(this, "playbackRates");
573
- r(this, "labels");
574
- r(this, "qualities", []);
575
- r(this, "activeQualityLabel");
576
- r(this, "captions", []);
577
- r(this, "activeCaptionLabel");
578
- r(this, "captionAppearance", null);
579
- r(this, "qrResumeToggle", null);
580
- r(this, "open", !1);
583
+ s(this, "el");
584
+ s(this, "button");
585
+ s(this, "panel");
586
+ s(this, "video");
587
+ s(this, "playbackRates");
588
+ s(this, "labels");
589
+ s(this, "qualities", []);
590
+ s(this, "activeQualityLabel");
591
+ s(this, "captions", []);
592
+ s(this, "activeCaptionLabel");
593
+ s(this, "captionAppearance", null);
594
+ s(this, "qrResumeToggle", null);
595
+ s(this, "open", !1);
581
596
  /** Menü açılıp kapanınca — HopePlayerElement açıkken kontrolleri otomatik gizlemez. */
582
- r(this, "onOpenChange", null);
583
- r(this, "panelObserver");
584
- r(this, "currentPanel", "main");
585
- r(this, "submenus", []);
597
+ s(this, "onOpenChange", null);
598
+ s(this, "panelObserver");
599
+ s(this, "currentPanel", "main");
600
+ s(this, "submenus", []);
586
601
  /**
587
602
  * Yön + yükseklik player'a göre: kompakt düzende (buton üst bardaysa) aşağı açılır; her iki yönde de
588
603
  * yükseklik player içinde kalan alanla sınırlı — küçük player'da menü dışarı taşmaz, kendi içinde kayar.
589
604
  */
590
- r(this, "fitToPlayer", () => {
605
+ s(this, "fitToPlayer", () => {
591
606
  var h;
592
607
  if (!this.open) return;
593
608
  const t = this.el.closest(".video-area");
@@ -596,23 +611,23 @@ class Ge {
596
611
  this.fitToViewport();
597
612
  return;
598
613
  }
599
- const e = t.getBoundingClientRect(), i = this.button.getBoundingClientRect(), s = this.el.getBoundingClientRect(), o = !!this.el.closest(".hp-top-bar");
614
+ const e = t.getBoundingClientRect(), i = this.button.getBoundingClientRect(), r = this.el.getBoundingClientRect(), o = !!this.el.closest(".hp-top-bar");
600
615
  this.panel.toggleAttribute("data-drop", o), Object.assign(this.panel.style, { top: "", bottom: "", marginTop: "", marginBottom: "" });
601
- const a = this.panel.scrollHeight, l = (o ? e.bottom - i.bottom : i.top - e.top) - D - A;
602
- if (a <= l || l >= Y) {
603
- this.panel.style.maxHeight = `${Math.min(O, l)}px`;
616
+ const a = this.panel.scrollHeight, l = (o ? e.bottom - i.bottom : i.top - e.top) - G - P;
617
+ if (a <= l || l >= te) {
618
+ this.panel.style.maxHeight = `${Math.min(N, l)}px`;
604
619
  return;
605
620
  }
606
- this.panel.style.maxHeight = `${Math.min(O, e.height - 2 * A)}px`, o ? Object.assign(this.panel.style, { top: `${e.top + A - s.top}px`, marginTop: "0" }) : Object.assign(this.panel.style, { bottom: `${s.bottom - (e.bottom - A)}px`, marginBottom: "0" });
621
+ this.panel.style.maxHeight = `${Math.min(N, e.height - 2 * P)}px`, o ? Object.assign(this.panel.style, { top: `${e.top + P - r.top}px`, marginTop: "0" }) : Object.assign(this.panel.style, { bottom: `${r.bottom - (e.bottom - P)}px`, marginBottom: "0" });
607
622
  });
608
- r(this, "onDocumentClick", (t) => {
623
+ s(this, "onDocumentClick", (t) => {
609
624
  this.open && !t.composedPath().includes(this.el) && this.close();
610
625
  });
611
- r(this, "backToCaptionSettings", () => {
626
+ s(this, "backToCaptionSettings", () => {
612
627
  this.currentPanel = "captions-settings", this.renderCaptionSettings();
613
628
  });
614
- this.video = t, this.playbackRates = e, this.labels = i, this.activeQualityLabel = i.autoQuality, this.activeCaptionLabel = i.captionsOff, this.el = document.createElement("div"), this.el.className = "hp:relative", this.button = document.createElement("button"), this.button.type = "button", this.button.setAttribute("aria-label", i.settings), this.button.className = "hp-chip hp:flex hp:items-center hp:justify-center hp:w-[var(--hp-ctrl-btn-size)] hp:h-[var(--hp-ctrl-btn-size)] hp:cursor-pointer", this.button.appendChild(S("settings", "hp:text-[length:var(--hp-ctrl-icon-size)]")), this.panel = document.createElement("div"), this.panel.className = "hp-chip hp-chip-panel hp:hidden hp:absolute hp:bottom-full hp:right-0 hp:mb-2 hp:w-48 hp:max-h-64 hp:overflow-y-auto hp:text-sm hp:py-1", this.panelObserver = new MutationObserver(this.fitToPlayer), this.panelObserver.observe(this.panel, { childList: !0 }), this.el.appendChild(this.button), this.el.appendChild(this.panel), this.button.addEventListener("click", (s) => {
615
- s.stopPropagation(), this.toggle();
629
+ this.video = t, this.playbackRates = e, this.labels = i, this.activeQualityLabel = i.autoQuality, this.activeCaptionLabel = i.captionsOff, this.el = document.createElement("div"), this.el.className = "hp:relative", this.button = document.createElement("button"), this.button.type = "button", this.button.setAttribute("aria-label", i.settings), this.button.className = "hp-chip hp:flex hp:items-center hp:justify-center hp:w-[var(--hp-ctrl-btn-size)] hp:h-[var(--hp-ctrl-btn-size)] hp:cursor-pointer", this.button.appendChild(L("settings", "hp:text-[length:var(--hp-ctrl-icon-size)]")), this.panel = document.createElement("div"), this.panel.className = "hp-chip hp-chip-panel hp:hidden hp:absolute hp:bottom-full hp:right-0 hp:mb-2 hp:w-48 hp:max-h-64 hp:overflow-y-auto hp:text-sm hp:py-1", this.panelObserver = new MutationObserver(this.fitToPlayer), this.panelObserver.observe(this.panel, { childList: !0 }), this.el.appendChild(this.button), this.el.appendChild(this.panel), this.button.addEventListener("click", (r) => {
630
+ r.stopPropagation(), this.toggle();
616
631
  }), document.addEventListener("click", this.onDocumentClick, !0), this.renderMain();
617
632
  }
618
633
  setQualities(t, e) {
@@ -657,8 +672,8 @@ class Ge {
657
672
  fitToViewport() {
658
673
  const t = this.button.getBoundingClientRect();
659
674
  Object.assign(this.panel.style, { top: "", bottom: "", marginTop: "", marginBottom: "" });
660
- const e = this.panel.scrollHeight, i = t.top - D - A, s = window.innerHeight - t.bottom - D - A, o = i < Math.min(e, O) && s > i;
661
- this.panel.toggleAttribute("data-drop", o), this.panel.style.maxHeight = `${Math.max(Y, Math.min(O, o ? s : i))}px`;
675
+ const e = this.panel.scrollHeight, i = t.top - G - P, r = window.innerHeight - t.bottom - G - P, o = i < Math.min(e, N) && r > i;
676
+ this.panel.toggleAttribute("data-drop", o), this.panel.style.maxHeight = `${Math.max(te, Math.min(N, o ? r : i))}px`;
662
677
  }
663
678
  /** Düzen değişince (ör. kompakt ↔ normal) açık menüyü kapat — eski konumunda asılı kalmasın. */
664
679
  closeMenu() {
@@ -669,14 +684,14 @@ class Ge {
669
684
  this.open = !1, this.panel.classList.add("hp:hidden"), (t = this.onOpenChange) == null || t.call(this, !1);
670
685
  }
671
686
  row(t, e, i) {
672
- const s = document.createElement("button");
673
- return s.type = "button", s.className = "hp:flex hp:items-center hp:justify-between hp:w-full hp:px-3 hp:py-2 hp:text-left hp:bg-transparent hp:border-0 hp:cursor-pointer hp:text-on-surface hp:hover:bg-on-surface/10", s.innerHTML = `<span>${t}</span><span class="hp:text-on-surface-muted hp:text-xs hp:flex hp:items-center hp:gap-1">${e}</span>`, s.addEventListener("click", i), s;
687
+ const r = document.createElement("button");
688
+ return r.type = "button", r.className = "hp:flex hp:items-center hp:justify-between hp:w-full hp:px-3 hp:py-2 hp:text-left hp:bg-transparent hp:border-0 hp:cursor-pointer hp:text-on-surface hp:hover:bg-on-surface/10", r.innerHTML = `<span>${t}</span><span class="hp:text-on-surface-muted hp:text-xs hp:flex hp:items-center hp:gap-1">${e}</span>`, r.addEventListener("click", i), r;
674
689
  }
675
690
  backRow(t, e) {
676
691
  const i = document.createElement("button");
677
- i.type = "button", i.className = "hp:flex hp:items-center hp:gap-2 hp:w-full hp:px-3 hp:py-2 hp:text-left hp:bg-transparent hp:border-0 hp:cursor-pointer hp:text-on-surface hp:font-medium hp:hover:bg-on-surface/10", i.appendChild(S("chevron-left", "hp:text-sm"));
678
- const s = document.createElement("span");
679
- return s.textContent = t, i.appendChild(s), i.addEventListener("click", e), i;
692
+ i.type = "button", i.className = "hp:flex hp:items-center hp:gap-2 hp:w-full hp:px-3 hp:py-2 hp:text-left hp:bg-transparent hp:border-0 hp:cursor-pointer hp:text-on-surface hp:font-medium hp:hover:bg-on-surface/10", i.appendChild(L("chevron-left", "hp:text-sm"));
693
+ const r = document.createElement("span");
694
+ return r.textContent = t, i.appendChild(r), i.addEventListener("click", e), i;
680
695
  }
681
696
  render() {
682
697
  if (this.currentPanel === "main") this.renderMain();
@@ -742,7 +757,7 @@ class Ge {
742
757
  renderQuality() {
743
758
  this.panel.innerHTML = "", this.panel.appendChild(this.backRow(this.labels.quality, () => this.renderMain()));
744
759
  for (const t of this.qualities) {
745
- const e = t.label === this.activeQualityLabel, i = this.row(t.label, t.locked ? He : e ? '<i class="hp-icon hp-icon-check"></i>' : "", () => {
760
+ const e = t.label === this.activeQualityLabel, i = this.row(t.label, t.locked ? qe : e ? '<i class="hp-icon hp-icon-check"></i>' : "", () => {
746
761
  t.onSelect(), this.close();
747
762
  });
748
763
  t.locked && i.setAttribute("data-locked", ""), this.panel.appendChild(i);
@@ -769,7 +784,7 @@ class Ge {
769
784
  }
770
785
  /** Altyazı → Altyazı ayarları: boyut, arka plan / yazı rengi, konumu sıfırla — her satırda o anki değer. */
771
786
  renderCaptionSettings() {
772
- var i, s, o;
787
+ var i, r, o;
773
788
  this.panel.innerHTML = "", this.panel.appendChild(
774
789
  this.backRow(this.labels.captionSettings, () => {
775
790
  this.currentPanel = "captions", this.renderCaptions();
@@ -783,7 +798,7 @@ class Ge {
783
798
  this.currentPanel = "captions-size", this.renderCaptionsSize();
784
799
  })
785
800
  ), this.panel.appendChild(
786
- this.row(t.bgColorLabel, e((s = t.getBgColorOptions().find((a) => a.active)) == null ? void 0 : s.value), () => {
801
+ this.row(t.bgColorLabel, e((r = t.getBgColorOptions().find((a) => a.active)) == null ? void 0 : r.value), () => {
787
802
  this.currentPanel = "captions-bg", this.renderCaptionColorPanel("bg");
788
803
  })
789
804
  ), this.panel.appendChild(
@@ -812,16 +827,16 @@ class Ge {
812
827
  this.panel.innerHTML = "";
813
828
  const e = this.captionAppearance, i = t === "bg" ? (e == null ? void 0 : e.bgColorLabel) ?? this.labels.captionBgColor : (e == null ? void 0 : e.textColorLabel) ?? this.labels.captionTextColor;
814
829
  if (this.panel.appendChild(this.backRow(i, this.backToCaptionSettings)), !e) return;
815
- const s = document.createElement("div");
816
- s.className = "hp:flex hp:flex-wrap hp:gap-2 hp:px-3 hp:py-2";
830
+ const r = document.createElement("div");
831
+ r.className = "hp:flex hp:flex-wrap hp:gap-2 hp:px-3 hp:py-2";
817
832
  const o = t === "bg" ? e.getBgColorOptions() : e.getTextColorOptions();
818
833
  for (const a of o) {
819
834
  const l = document.createElement("button");
820
835
  l.type = "button", l.setAttribute("aria-label", a.ariaLabel), l.className = "hp:w-7 hp:h-7 hp:rounded-full hp:cursor-pointer hp:flex-shrink-0 hp:border hp:border-on-surface/20", l.style.background = a.value, l.style.outline = a.active ? "2px solid currentColor" : "2px solid transparent", l.style.outlineOffset = "2px", l.addEventListener("click", () => {
821
836
  a.onSelect(), this.render();
822
- }), s.appendChild(l);
837
+ }), r.appendChild(l);
823
838
  }
824
- this.panel.appendChild(s);
839
+ this.panel.appendChild(r);
825
840
  }
826
841
  /** Dil sonradan değişince statik buton etiketini tazeler + mevcut panel zaten güncel `this.labels`'ı okuyarak yeniden render edilir. */
827
842
  refreshLabels() {
@@ -831,116 +846,112 @@ class Ge {
831
846
  document.removeEventListener("click", this.onDocumentClick, !0), this.panelObserver.disconnect();
832
847
  }
833
848
  }
834
- function ve(n, t) {
835
- const e = n.seekable.length ? n.seekable.start(0) : 0, i = Number.isFinite(n.duration) ? n.duration : n.seekable.length ? n.seekable.end(n.seekable.length - 1) : n.currentTime;
836
- n.currentTime = Math.max(e, Math.min(i, n.currentTime + t));
837
- }
838
- const Ve = 15, _e = 480, Ue = 150, J = ["waiting", "seeking"], Z = ["playing", "canplay", "canplaythrough", "seeked", "pause", "error", "emptied"];
839
- function ee(n, t) {
840
- const { btn: e } = M("", `skip-${n}`);
849
+ const $e = 15, Ke = 480, Qe = 150, ie = ["waiting", "seeking"], re = ["playing", "canplay", "canplaythrough", "seeked", "pause", "error", "emptied"];
850
+ function se(n, t) {
851
+ const { btn: e } = B("", `skip-${n}`);
841
852
  e.classList.add("hp-skip-btn"), e.setAttribute("part", t);
842
853
  const i = document.createElement("span");
843
854
  return i.className = "hp-skip-num", i.setAttribute("aria-hidden", "true"), e.appendChild(i), e.style.display = "none", { btn: e, num: i };
844
855
  }
845
- function L(n, t) {
856
+ function M(n, t) {
846
857
  n.setAttribute("aria-label", t);
847
858
  }
848
- function M(n, t, e) {
859
+ function B(n, t, e) {
849
860
  const i = document.createElement("button");
850
- i.type = "button", L(i, n), e && (i.dataset.shortcut = e), i.className = "hp-chip hp:flex hp:items-center hp:justify-center hp:w-[var(--hp-ctrl-btn-size)] hp:h-[var(--hp-ctrl-btn-size)] hp:cursor-pointer hp:shrink-0";
851
- const s = S(t, "hp:text-[length:var(--hp-ctrl-icon-size)]");
852
- return i.appendChild(s), { btn: i, icon: s };
861
+ i.type = "button", M(i, n), e && (i.dataset.shortcut = e), i.className = "hp-chip hp:flex hp:items-center hp:justify-center hp:w-[var(--hp-ctrl-btn-size)] hp:h-[var(--hp-ctrl-btn-size)] hp:cursor-pointer hp:shrink-0";
862
+ const r = L(t, "hp:text-[length:var(--hp-ctrl-icon-size)]");
863
+ return i.appendChild(r), { btn: i, icon: r };
853
864
  }
854
- class qe {
855
- constructor(t, e, i, s) {
856
- r(this, "el");
857
- r(this, "seekBar");
858
- r(this, "volumePanel");
859
- r(this, "settingsMenu");
860
- r(this, "video");
861
- r(this, "labels");
862
- r(this, "playButton");
863
- r(this, "playIcon");
864
- r(this, "pipButton");
865
- r(this, "skipBack");
866
- r(this, "skipForward");
865
+ class We {
866
+ constructor(t, e, i, r) {
867
+ s(this, "el");
868
+ s(this, "seekBar");
869
+ s(this, "volumePanel");
870
+ s(this, "settingsMenu");
871
+ s(this, "video");
872
+ s(this, "labels");
873
+ s(this, "playButton");
874
+ s(this, "playIcon");
875
+ s(this, "pipButton");
876
+ s(this, "skipBack");
877
+ s(this, "skipForward");
867
878
  /** Etkin sarma süreleri (sn); null = buton gizli. */
868
- r(this, "skipSeconds", { back: null, forward: null });
869
- r(this, "seekingEnabled", !0);
870
- r(this, "leftGroup");
871
- r(this, "loadingTimer", null);
879
+ s(this, "skipSeconds", { back: null, forward: null });
880
+ s(this, "seekingEnabled", !0);
881
+ s(this, "leftGroup");
882
+ s(this, "loadingTimer", null);
872
883
  /** Halkayı açık tutan sebepler: 'media' (buffer bekleniyor) ve player'ın verdikleri (ör. 'preroll'). */
873
- r(this, "loadingReasons", /* @__PURE__ */ new Set());
884
+ s(this, "loadingReasons", /* @__PURE__ */ new Set());
874
885
  /** Preroll beklenirken video duraklatılmış olsa da kullanıcı oynatmak istedi — buton "duraklat" görünür. */
875
- r(this, "pendingPlay", !1);
886
+ s(this, "pendingPlay", !1);
876
887
  /** Sarma butonuyla sarıldığında (sn, negatif = geri) — sarma bildirimi için. */
877
- r(this, "onSkip", null);
878
- r(this, "fullscreenButton");
879
- r(this, "fullscreenIcon");
880
- r(this, "timeLabel");
888
+ s(this, "onSkip", null);
889
+ s(this, "fullscreenButton");
890
+ s(this, "fullscreenIcon");
891
+ s(this, "timeLabel");
881
892
  /** Reklam sırasında süre etiketinin yerinde: "Reklam 2/3 · 0:12". */
882
- r(this, "adInfoEl");
883
- r(this, "showRemaining", !1);
893
+ s(this, "adInfoEl");
894
+ s(this, "showRemaining", !1);
884
895
  /** Kompakt düzende (player < 480px) sağ grubun taşındığı üst bar; tam ekran altta kalır. */
885
- r(this, "topEl");
886
- r(this, "bottomRow");
887
- r(this, "rightGroup");
888
- r(this, "fullscreenSlot");
889
- r(this, "compact", !1);
896
+ s(this, "topEl");
897
+ s(this, "bottomRow");
898
+ s(this, "rightGroup");
899
+ s(this, "fullscreenSlot");
900
+ s(this, "compact", !1);
890
901
  /** İnce ses çubuğu (audio.layout: 'compact'): dar ekranda da tek satır — üst bar yok. */
891
- r(this, "forceInline", !1);
902
+ s(this, "forceInline", !1);
892
903
  /** İnce ses çubuğunda başlık / sanatçı (+ çalarken ekolayzır) — boşluk elemanının içinde. */
893
- r(this, "barMetaEl", null);
894
- r(this, "spacerEl");
895
- r(this, "resizeObserver");
896
- r(this, "liveBadge");
897
- r(this, "liveText");
898
- r(this, "adMode", !1);
904
+ s(this, "barMetaEl", null);
905
+ s(this, "spacerEl");
906
+ s(this, "resizeObserver");
907
+ s(this, "liveBadge");
908
+ s(this, "liveText");
909
+ s(this, "adMode", !1);
899
910
  /** Ses modu: tam ekran / PiP yok — dar düzende tam ekran kutusu da boş kalmasın. */
900
- r(this, "audioMode", !1);
901
- r(this, "callbacks");
902
- r(this, "row");
903
- r(this, "extraButtonAnchor");
911
+ s(this, "audioMode", !1);
912
+ s(this, "callbacks");
913
+ s(this, "row");
914
+ s(this, "extraButtonAnchor");
904
915
  /** Süre etiketine tıklama: geçen süre ↔ kalan süre. */
905
- r(this, "onTimeClick", (t) => {
916
+ s(this, "onTimeClick", (t) => {
906
917
  t.stopPropagation(), this.toggleTimeMode();
907
918
  });
908
- r(this, "renderPlayState", () => {
919
+ s(this, "renderPlayState", () => {
909
920
  var e;
910
921
  const t = this.callbacks.isAdActive() ? this.callbacks.adIsPaused() : this.video.paused && !this.pendingPlay;
911
- B(this.playIcon, t ? "play" : "pause"), L(this.playButton, t ? this.labels.play : this.labels.pause), (e = this.barMetaEl) == null || e.toggleAttribute("data-playing", !t && !this.callbacks.isAdActive());
922
+ R(this.playIcon, t ? "play" : "pause"), M(this.playButton, t ? this.labels.play : this.labels.pause), (e = this.barMetaEl) == null || e.toggleAttribute("data-playing", !t && !this.callbacks.isAdActive());
912
923
  });
913
- r(this, "renderTime", () => {
914
- var s, o;
924
+ s(this, "renderTime", () => {
925
+ var r, o;
915
926
  const t = this.video.duration === 1 / 0;
916
927
  if (this.timeLabel.style.display = this.adMode || t ? "none" : "", this.liveBadge.style.display = !this.adMode && t ? "" : "none", !t) {
917
928
  const a = this.video.duration, l = this.video.currentTime;
918
929
  if (this.showRemaining) {
919
930
  const h = Number.isFinite(a) ? Math.floor(a) : 0, c = Math.max(0, h - Math.floor(l));
920
- this.timeLabel.textContent = `-${T(c)} / ${T(a)}`;
931
+ this.timeLabel.textContent = `-${A(c)} / ${A(a)}`;
921
932
  } else
922
- this.timeLabel.textContent = `${T(l)} / ${T(a)}`;
933
+ this.timeLabel.textContent = `${A(l)} / ${A(a)}`;
923
934
  return;
924
935
  }
925
- const e = ((o = (s = this.callbacks).liveSyncPosition) == null ? void 0 : o.call(s)) ?? this.liveEdge(), i = e !== null && e - this.video.currentTime > Ve;
936
+ const e = ((o = (r = this.callbacks).liveSyncPosition) == null ? void 0 : o.call(r)) ?? this.liveEdge(), i = e !== null && e - this.video.currentTime > $e;
926
937
  this.liveBadge.toggleAttribute("data-behind", i);
927
938
  });
928
939
  /** Buffer bekleniyor (oynarken takılma ya da buffer'lanmamış bir yere atlama). */
929
- r(this, "onLoadingStart", (t) => {
940
+ s(this, "onLoadingStart", (t) => {
930
941
  t.type === "seeking" && this.video.readyState >= HTMLMediaElement.HAVE_FUTURE_DATA || this.loadingTimer || this.loadingReasons.has("media") || (this.loadingTimer = setTimeout(() => {
931
942
  this.loadingTimer = null, this.setLoading("media", !0);
932
- }, Ue));
943
+ }, Qe));
933
944
  });
934
- r(this, "onLoadingEnd", (t) => {
945
+ s(this, "onLoadingEnd", (t) => {
935
946
  t.type === "seeked" && this.video.readyState < HTMLMediaElement.HAVE_FUTURE_DATA && !this.video.paused || (this.loadingTimer && clearTimeout(this.loadingTimer), this.loadingTimer = null, this.setLoading("media", !1));
936
947
  });
937
- r(this, "goToLive", () => {
938
- var i, s;
939
- const t = (s = (i = this.callbacks).liveSyncPosition) == null ? void 0 : s.call(i), e = this.liveEdge();
948
+ s(this, "goToLive", () => {
949
+ var i, r;
950
+ const t = (r = (i = this.callbacks).liveSyncPosition) == null ? void 0 : r.call(i), e = this.liveEdge();
940
951
  e === null && t == null || (this.video.currentTime = t ?? Math.max(0, e - 1), this.video.paused && this.video.play().catch(() => {
941
952
  }), this.renderTime());
942
953
  });
943
- this.video = t, this.callbacks = i, this.labels = s, this.el = document.createElement("div"), this.el.setAttribute("part", "control-bar"), this.el.className = "hp:absolute hp:inset-x-0 hp:bottom-0 hp:flex hp:flex-col hp:gap-1 hp:px-3 hp:pb-2 hp:pt-6 hp:pointer-events-none hp:transition-opacity hp:duration-200", this.seekBar = new Ie(t, s), this.seekBar.el.classList.add("hp:pointer-events-auto"), this.el.appendChild(this.seekBar.el);
954
+ this.video = t, this.callbacks = i, this.labels = r, this.el = document.createElement("div"), this.el.setAttribute("part", "control-bar"), this.el.className = "hp:absolute hp:inset-x-0 hp:bottom-0 hp:flex hp:flex-col hp:gap-1 hp:px-3 hp:pb-2 hp:pt-6 hp:pointer-events-none hp:transition-opacity hp:duration-200", this.seekBar = new Ve(t, r), this.seekBar.el.classList.add("hp:pointer-events-auto"), this.el.appendChild(this.seekBar.el);
944
955
  const o = document.createElement("div");
945
956
  o.className = "hp:flex hp:items-center hp:gap-2", this.el.appendChild(o), this.bottomRow = o;
946
957
  const a = document.createElement("div");
@@ -949,20 +960,20 @@ class qe {
949
960
  l.className = "hp-loading-ring", l.setAttribute("aria-hidden", "true");
950
961
  const h = document.createElement("span");
951
962
  h.className = "hp-loading-ring-mask", h.appendChild(document.createElement("span")), l.appendChild(h), a.appendChild(l);
952
- const c = M(s.play, "play", "K");
953
- this.playButton = c.btn, this.playIcon = c.icon, this.playButton.setAttribute("part", "play-pause-button"), this.playButton.addEventListener("click", () => this.togglePlay()), a.appendChild(this.playButton), this.skipBack = ee("back", "skip-back-button"), this.skipBack.btn.addEventListener("click", () => this.skip(-(this.skipSeconds.back ?? 0))), this.skipForward = ee("forward", "skip-forward-button"), this.skipForward.btn.addEventListener("click", () => this.skip(this.skipSeconds.forward ?? 0)), a.append(this.skipBack.btn, this.skipForward.btn), this.volumePanel = new De(t, s, i.adVolume), a.appendChild(this.volumePanel.el), this.timeLabel = document.createElement("button"), this.timeLabel.type = "button", this.timeLabel.setAttribute("part", "time-display"), this.timeLabel.className = "hp:text-xs hp:text-on-surface hp:tabular-nums hp:whitespace-nowrap hp:px-1 hp:bg-transparent hp:border-0 hp:cursor-pointer hp:select-none hp:p-0 hp:hover:opacity-80 hp:transition-opacity hp:focus-visible:outline-none hp:focus-visible:ring-1 hp:focus-visible:ring-accent hp:rounded", this.timeLabel.textContent = "0:00 / 0:00", this.timeLabel.addEventListener("click", this.onTimeClick), a.appendChild(this.timeLabel), this.adInfoEl = document.createElement("span"), this.adInfoEl.setAttribute("part", "ad-countdown"), this.adInfoEl.className = "hp:text-xs hp:text-on-surface hp:tabular-nums hp:whitespace-nowrap hp:px-1 hp:select-none", this.adInfoEl.setAttribute("aria-live", "off"), this.adInfoEl.style.display = "none", this.liveBadge = document.createElement("button"), this.liveBadge.type = "button", this.liveBadge.className = "hp-live-badge", this.liveBadge.setAttribute("part", "live-badge"), this.liveBadge.setAttribute("aria-label", s.goToLive);
963
+ const c = B(r.play, "play", "K");
964
+ this.playButton = c.btn, this.playIcon = c.icon, this.playButton.setAttribute("part", "play-pause-button"), this.playButton.addEventListener("click", () => this.togglePlay()), a.appendChild(this.playButton), this.skipBack = se("back", "skip-back-button"), this.skipBack.btn.addEventListener("click", () => this.skip(-(this.skipSeconds.back ?? 0))), this.skipForward = se("forward", "skip-forward-button"), this.skipForward.btn.addEventListener("click", () => this.skip(this.skipSeconds.forward ?? 0)), a.append(this.skipBack.btn, this.skipForward.btn), this.volumePanel = new _e(t, r, i.adVolume), a.appendChild(this.volumePanel.el), this.timeLabel = document.createElement("button"), this.timeLabel.type = "button", this.timeLabel.setAttribute("part", "time-display"), this.timeLabel.className = "hp:text-xs hp:text-on-surface hp:tabular-nums hp:whitespace-nowrap hp:px-1 hp:bg-transparent hp:border-0 hp:cursor-pointer hp:select-none hp:p-0 hp:hover:opacity-80 hp:transition-opacity hp:rounded", this.timeLabel.textContent = "0:00 / 0:00", this.timeLabel.addEventListener("click", this.onTimeClick), a.appendChild(this.timeLabel), this.adInfoEl = document.createElement("span"), this.adInfoEl.setAttribute("part", "ad-countdown"), this.adInfoEl.className = "hp:text-xs hp:text-on-surface hp:tabular-nums hp:whitespace-nowrap hp:px-1 hp:select-none", this.adInfoEl.setAttribute("aria-live", "off"), this.adInfoEl.style.display = "none", this.liveBadge = document.createElement("button"), this.liveBadge.type = "button", this.liveBadge.className = "hp-live-badge", this.liveBadge.setAttribute("part", "live-badge"), this.liveBadge.setAttribute("aria-label", r.goToLive);
954
965
  const p = document.createElement("span");
955
- p.className = "hp-live-dot", this.liveText = document.createElement("span"), this.liveText.textContent = s.live, this.liveBadge.append(p, this.liveText), this.liveBadge.style.display = "none", this.liveBadge.addEventListener("click", this.goToLive), a.appendChild(this.liveBadge), a.appendChild(this.adInfoEl);
956
- const g = document.createElement("div");
957
- g.className = "hp:flex-1 hp:min-w-0", o.appendChild(g), this.spacerEl = g;
966
+ p.className = "hp-live-dot", this.liveText = document.createElement("span"), this.liveText.textContent = r.live, this.liveBadge.append(p, this.liveText), this.liveBadge.style.display = "none", this.liveBadge.addEventListener("click", this.goToLive), a.appendChild(this.liveBadge), a.appendChild(this.adInfoEl);
958
967
  const m = document.createElement("div");
959
- m.className = "hp-group hp:flex hp:items-center hp:gap-1 hp:px-1.5 hp:py-1 hp:shrink-0 hp:pointer-events-auto", o.appendChild(m), this.rightGroup = m, this.settingsMenu = new Ge(t, e, s), m.appendChild(this.settingsMenu.el), this.extraButtonAnchor = this.settingsMenu.el, this.row = m;
960
- const f = M(s.pip, "pip");
961
- this.pipButton = f.btn, this.pipButton.addEventListener("click", () => this.togglePip()), document.pictureInPictureEnabled || (this.pipButton.style.display = "none"), m.appendChild(this.pipButton);
962
- const v = M(s.fullscreenEnter, "fullscreen-enter", "F");
963
- this.fullscreenButton = v.btn, this.fullscreenIcon = v.icon, this.fullscreenButton.addEventListener("click", () => this.toggleFullscreen()), m.appendChild(this.fullscreenButton), this.topEl = document.createElement("div"), this.topEl.className = "hp-top-bar", this.topEl.setAttribute("part", "top-bar"), this.fullscreenSlot = document.createElement("div"), this.fullscreenSlot.className = "hp-group hp:items-center hp:px-1.5 hp:py-1 hp:shrink-0 hp:pointer-events-auto", this.fullscreenSlot.style.display = "none", o.appendChild(this.fullscreenSlot), this.resizeObserver = new ResizeObserver(() => this.updateLayout()), this.resizeObserver.observe(this.el), t.addEventListener("play", this.renderPlayState), t.addEventListener("pause", this.renderPlayState), t.addEventListener("timeupdate", this.renderTime), t.addEventListener("loadedmetadata", this.renderTime), t.addEventListener("durationchange", this.renderTime), t.addEventListener("progress", this.renderTime), t.addEventListener("emptied", this.renderTime);
964
- for (const x of J) t.addEventListener(x, this.onLoadingStart);
965
- for (const x of Z) t.addEventListener(x, this.onLoadingEnd);
968
+ m.className = "hp:flex-1 hp:min-w-0", o.appendChild(m), this.spacerEl = m;
969
+ const u = document.createElement("div");
970
+ u.className = "hp-group hp:flex hp:items-center hp:gap-1 hp:px-1.5 hp:py-1 hp:shrink-0 hp:pointer-events-auto", o.appendChild(u), this.rightGroup = u, this.settingsMenu = new je(t, e, r), u.appendChild(this.settingsMenu.el), this.extraButtonAnchor = this.settingsMenu.el, this.row = u;
971
+ const f = B(r.pip, "pip");
972
+ this.pipButton = f.btn, this.pipButton.addEventListener("click", () => this.togglePip()), document.pictureInPictureEnabled || (this.pipButton.style.display = "none"), u.appendChild(this.pipButton);
973
+ const y = B(r.fullscreenEnter, "fullscreen-enter", "F");
974
+ this.fullscreenButton = y.btn, this.fullscreenIcon = y.icon, this.fullscreenButton.addEventListener("click", () => this.toggleFullscreen()), u.appendChild(this.fullscreenButton), this.topEl = document.createElement("div"), this.topEl.className = "hp-top-bar", this.topEl.setAttribute("part", "top-bar"), this.fullscreenSlot = document.createElement("div"), this.fullscreenSlot.className = "hp-group hp:items-center hp:px-1.5 hp:py-1 hp:shrink-0 hp:pointer-events-auto", this.fullscreenSlot.style.display = "none", o.appendChild(this.fullscreenSlot), this.resizeObserver = new ResizeObserver(() => this.updateLayout()), this.resizeObserver.observe(this.el), t.addEventListener("play", this.renderPlayState), t.addEventListener("pause", this.renderPlayState), t.addEventListener("timeupdate", this.renderTime), t.addEventListener("loadedmetadata", this.renderTime), t.addEventListener("durationchange", this.renderTime), t.addEventListener("progress", this.renderTime), t.addEventListener("emptied", this.renderTime);
975
+ for (const x of ie) t.addEventListener(x, this.onLoadingStart);
976
+ for (const x of re) t.addEventListener(x, this.onLoadingEnd);
966
977
  this.renderPlayState(), this.renderTime();
967
978
  }
968
979
  /** Player genişliğine göre normal / kompakt (mobil) düzen arasında geçiş — yalnızca eşik geçilince DOM taşınır. */
@@ -970,7 +981,7 @@ class qe {
970
981
  var i;
971
982
  const t = this.el.getBoundingClientRect().width;
972
983
  if (t === 0) return;
973
- const e = !this.forceInline && t < _e;
984
+ const e = !this.forceInline && t < Ke;
974
985
  e !== this.compact && (this.compact = e, this.settingsMenu.closeMenu(), this.el.toggleAttribute("data-compact", e), (i = this.el.closest(".video-area")) == null || i.toggleAttribute("data-compact", e), e ? (this.fullscreenSlot.appendChild(this.fullscreenButton), this.fullscreenSlot.style.display = this.adMode || this.audioMode ? "none" : "flex", this.topEl.appendChild(this.rightGroup)) : (this.rightGroup.appendChild(this.fullscreenButton), this.bottomRow.insertBefore(this.rightGroup, this.fullscreenSlot), this.fullscreenSlot.style.display = "none"));
975
986
  }
976
987
  /**
@@ -994,7 +1005,7 @@ class qe {
994
1005
  this.audioMode = t, this.fullscreenButton.style.display = t ? "none" : "", this.compact && (this.fullscreenSlot.style.display = t || this.adMode ? "none" : "flex"), this.pipButton.style.display = t || !document.pictureInPictureEnabled ? "none" : "";
995
1006
  }
996
1007
  setFullscreenState(t) {
997
- B(this.fullscreenIcon, t ? "fullscreen-exit" : "fullscreen-enter"), L(this.fullscreenButton, t ? this.labels.fullscreenExit : this.labels.fullscreenEnter);
1008
+ R(this.fullscreenIcon, t ? "fullscreen-exit" : "fullscreen-enter"), M(this.fullscreenButton, t ? this.labels.fullscreenExit : this.labels.fullscreenEnter);
998
1009
  }
999
1010
  /** Dil sonradan değişince (`options.locale`/`labels`) statik (reaktif olarak yeniden render edilmeyen) etiketleri tazeler. */
1000
1011
  /** Geri/ileri sarma butonları — `null` süre o butonu gizler. */
@@ -1006,17 +1017,17 @@ class qe {
1006
1017
  this.seekingEnabled = t, this.skipBack.btn.disabled = !t, this.skipForward.btn.disabled = !t;
1007
1018
  }
1008
1019
  renderSkipButtons() {
1009
- const t = (e, i, s) => {
1010
- e.btn.style.display = i === null || this.adMode ? "none" : "", i !== null && (e.num.textContent = String(i), e.num.toggleAttribute("data-long", String(i).length > 2), L(e.btn, s(i)));
1020
+ const t = (e, i, r) => {
1021
+ e.btn.style.display = i === null || this.adMode ? "none" : "", i !== null && (e.num.textContent = String(i), e.num.toggleAttribute("data-long", String(i).length > 2), M(e.btn, r(i)));
1011
1022
  };
1012
1023
  t(this.skipBack, this.skipSeconds.back, this.labels.skipBack), t(this.skipForward, this.skipSeconds.forward, this.labels.skipForward);
1013
1024
  }
1014
1025
  skip(t) {
1015
1026
  var e;
1016
- !t || !this.seekingEnabled || (ve(this.video, t), (e = this.onSkip) == null || e.call(this, t));
1027
+ !t || !this.seekingEnabled || (we(this.video, t), (e = this.onSkip) == null || e.call(this, t));
1017
1028
  }
1018
1029
  refreshLabels() {
1019
- this.renderPlayState(), this.renderSkipButtons(), L(this.pipButton, this.labels.pip), L(this.liveBadge, this.labels.goToLive), this.liveText.textContent = this.labels.live, this.setFullscreenState(this.callbacks.isFullscreen()), this.seekBar.refreshLabels(), this.volumePanel.refreshLabels(), this.settingsMenu.refreshLabels();
1030
+ this.renderPlayState(), this.renderSkipButtons(), M(this.pipButton, this.labels.pip), M(this.liveBadge, this.labels.goToLive), this.liveText.textContent = this.labels.live, this.setFullscreenState(this.callbacks.isFullscreen()), this.seekBar.refreshLabels(), this.volumePanel.refreshLabels(), this.settingsMenu.refreshLabels();
1020
1031
  }
1021
1032
  /** Reklam modu: seek bar, süre ve sağ grup gizlenir; oynat/duraklat + ses kalır. */
1022
1033
  setAdMode(t) {
@@ -1032,7 +1043,7 @@ class qe {
1032
1043
  this.adInfoEl.style.display = "none", this.adInfoEl.textContent = "";
1033
1044
  return;
1034
1045
  }
1035
- const e = t.total > 1 ? ` ${t.position}/${t.total}` : "", i = t.remaining >= 0 ? ` · ${T(Math.ceil(t.remaining))}` : "";
1046
+ const e = t.total > 1 ? ` ${t.position}/${t.total}` : "", i = t.remaining >= 0 ? ` · ${A(Math.ceil(t.remaining))}` : "";
1036
1047
  this.adInfoEl.textContent = `${this.labels.adLabel}${e}${i}`, this.adInfoEl.style.display = "";
1037
1048
  }
1038
1049
  /** `AdsController`'ın IMA'nın KENDİ UI'ı üzerinden (ör. reklam video'suna tıklama) gelen PAUSED/RESUMED event'leri için — oynat/duraklat ikonunu tazeler. */
@@ -1047,8 +1058,8 @@ class qe {
1047
1058
  }
1048
1059
  /** Plugin'lerin (loop-section vb.) kontrol çubuğuna kendi butonlarını eklemesi için — ayarlar menüsünden önce yerleştirilir. */
1049
1060
  addButton(t, e, i) {
1050
- const { btn: s, icon: o } = M(t, e);
1051
- return s.addEventListener("click", i), this.row.insertBefore(s, this.extraButtonAnchor), { btn: s, icon: o };
1061
+ const { btn: r, icon: o } = B(t, e);
1062
+ return r.addEventListener("click", i), this.row.insertBefore(r, this.extraButtonAnchor), { btn: r, icon: o };
1052
1063
  }
1053
1064
  toggleTimeMode() {
1054
1065
  this.showRemaining = !this.showRemaining, this.renderTime();
@@ -1107,45 +1118,45 @@ class qe {
1107
1118
  }
1108
1119
  destroy() {
1109
1120
  this.timeLabel.removeEventListener("click", this.onTimeClick), this.video.removeEventListener("play", this.renderPlayState), this.video.removeEventListener("pause", this.renderPlayState), this.video.removeEventListener("timeupdate", this.renderTime), this.video.removeEventListener("loadedmetadata", this.renderTime), this.video.removeEventListener("durationchange", this.renderTime), this.video.removeEventListener("progress", this.renderTime), this.video.removeEventListener("emptied", this.renderTime);
1110
- for (const t of J) this.video.removeEventListener(t, this.onLoadingStart);
1111
- for (const t of Z) this.video.removeEventListener(t, this.onLoadingEnd);
1121
+ for (const t of ie) this.video.removeEventListener(t, this.onLoadingStart);
1122
+ for (const t of re) this.video.removeEventListener(t, this.onLoadingEnd);
1112
1123
  this.loadingTimer && clearTimeout(this.loadingTimer), this.resizeObserver.disconnect(), this.topEl.remove(), this.seekBar.destroy(), this.settingsMenu.destroy();
1113
1124
  }
1114
1125
  }
1115
- const je = 450, $e = 60, te = 8, H = 6, Qe = /* @__PURE__ */ new Set(["seek-bar", "time-display"]);
1116
- function Ke() {
1126
+ const Xe = 450, Ye = 60, oe = 8, V = 6, Je = /* @__PURE__ */ new Set(["seek-bar", "time-display"]);
1127
+ function Ze() {
1117
1128
  return typeof window.matchMedia != "function" || window.matchMedia("(hover: hover)").matches;
1118
1129
  }
1119
- class We {
1130
+ class et {
1120
1131
  constructor(t) {
1121
- r(this, "el");
1122
- r(this, "labelEl");
1123
- r(this, "keyEl");
1124
- r(this, "showTimer", null);
1125
- r(this, "hideTimer", null);
1126
- r(this, "currentTarget", null);
1127
- r(this, "isOccluded", null);
1132
+ s(this, "el");
1133
+ s(this, "labelEl");
1134
+ s(this, "keyEl");
1135
+ s(this, "showTimer", null);
1136
+ s(this, "hideTimer", null);
1137
+ s(this, "currentTarget", null);
1138
+ s(this, "isOccluded", null);
1128
1139
  /** Gösterim gecikmesi (SHOW_DELAY_MS) içinde bekleyen hedef — `currentTarget` yalnızca gerçekten gösterilince set ediliyor. */
1129
- r(this, "pendingTarget", null);
1130
- r(this, "onMouseOver", (t) => {
1140
+ s(this, "pendingTarget", null);
1141
+ s(this, "onMouseOver", (t) => {
1131
1142
  const e = this.matchTarget(t.target);
1132
1143
  !e || e === this.currentTarget || this.scheduleShow(e);
1133
1144
  });
1134
- r(this, "onMouseOut", (t) => {
1145
+ s(this, "onMouseOut", (t) => {
1135
1146
  const e = this.matchTarget(t.target);
1136
1147
  if (!e || e !== this.currentTarget && e !== this.pendingTarget) return;
1137
1148
  const i = t.relatedTarget;
1138
1149
  i && e.contains(i) || this.scheduleHide();
1139
1150
  });
1140
- r(this, "onFocusIn", (t) => {
1151
+ s(this, "onFocusIn", (t) => {
1141
1152
  const e = this.matchTarget(t.target);
1142
1153
  e && this.show(e);
1143
1154
  });
1144
- r(this, "onFocusOut", (t) => {
1155
+ s(this, "onFocusOut", (t) => {
1145
1156
  const e = this.matchTarget(t.target);
1146
1157
  !e || e !== this.currentTarget || this.hideNow();
1147
1158
  });
1148
- r(this, "hideNow", () => {
1159
+ s(this, "hideNow", () => {
1149
1160
  this.showTimer && (clearTimeout(this.showTimer), this.showTimer = null), this.pendingTarget = null, this.hideTimer && (clearTimeout(this.hideTimer), this.hideTimer = null), this.currentTarget && (this.currentTarget = null, this.el.style.opacity = "0", this.el.style.visibility = "hidden");
1150
1161
  });
1151
1162
  this.mountEl = t, this.el = document.createElement("div"), this.el.setAttribute("part", "tooltip"), this.el.setAttribute("role", "tooltip"), this.el.className = "hp-tooltip hp:absolute hp:z-40 hp:flex hp:items-center hp:gap-1.5 hp:px-2 hp:py-1 hp:rounded hp:text-xs hp:whitespace-nowrap hp:pointer-events-none hp:opacity-0 hp:transition-opacity hp:duration-100", this.el.style.visibility = "hidden", this.labelEl = document.createElement("span"), this.el.appendChild(this.labelEl), this.keyEl = document.createElement("span"), this.keyEl.className = "hp-tooltip-key", this.el.appendChild(this.keyEl), t.appendChild(this.el), t.addEventListener("mouseover", this.onMouseOver), t.addEventListener("mouseout", this.onMouseOut), t.addEventListener("focusin", this.onFocusIn), t.addEventListener("focusout", this.onFocusOut), t.addEventListener("pointerdown", this.hideNow);
@@ -1169,50 +1180,50 @@ class We {
1169
1180
  var o;
1170
1181
  const e = t, i = (o = e == null ? void 0 : e.closest) == null ? void 0 : o.call(e, 'button[aria-label], [role="slider"][aria-label]');
1171
1182
  if (!i) return null;
1172
- const s = i.getAttribute("part");
1173
- return s && Qe.has(s) || i.offsetParent === null && i !== document.activeElement ? null : i;
1183
+ const r = i.getAttribute("part");
1184
+ return r && Je.has(r) || i.offsetParent === null && i !== document.activeElement ? null : i;
1174
1185
  }
1175
1186
  scheduleShow(t) {
1176
1187
  this.hideTimer && (clearTimeout(this.hideTimer), this.hideTimer = null), this.showTimer && clearTimeout(this.showTimer), this.pendingTarget = t, this.showTimer = setTimeout(() => {
1177
1188
  this.showTimer = null, this.pendingTarget = null, this.show(t);
1178
- }, je);
1189
+ }, Xe);
1179
1190
  }
1180
1191
  scheduleHide() {
1181
- this.showTimer && (clearTimeout(this.showTimer), this.showTimer = null), this.pendingTarget = null, this.hideTimer && clearTimeout(this.hideTimer), this.hideTimer = setTimeout(() => this.hideNow(), $e);
1192
+ this.showTimer && (clearTimeout(this.showTimer), this.showTimer = null), this.pendingTarget = null, this.hideTimer && clearTimeout(this.hideTimer), this.hideTimer = setTimeout(() => this.hideNow(), Ye);
1182
1193
  }
1183
1194
  show(t) {
1184
- if (!Ke()) return;
1195
+ if (!Ze()) return;
1185
1196
  const e = t.getAttribute("aria-label");
1186
1197
  if (!e) return;
1187
1198
  this.currentTarget = t, this.labelEl.textContent = e;
1188
1199
  const i = t.dataset.shortcut;
1189
1200
  i ? (this.keyEl.textContent = i, this.keyEl.style.display = "") : (this.keyEl.textContent = "", this.keyEl.style.display = "none"), this.el.style.visibility = "hidden", this.el.style.opacity = "0", this.el.style.left = "0px", this.el.style.top = "0px", requestAnimationFrame(() => {
1190
- var s;
1191
- this.currentTarget === t && (this.position(t), !((s = this.isOccluded) != null && s.call(this, this.el.getBoundingClientRect())) && (this.el.style.visibility = "visible", this.el.style.opacity = "1"));
1201
+ var r;
1202
+ this.currentTarget === t && (this.position(t), !((r = this.isOccluded) != null && r.call(this, this.el.getBoundingClientRect())) && (this.el.style.visibility = "visible", this.el.style.opacity = "1"));
1192
1203
  });
1193
1204
  }
1194
1205
  position(t) {
1195
- const e = this.mountEl.getBoundingClientRect(), i = t.getBoundingClientRect(), s = this.el.getBoundingClientRect();
1196
- let o = i.top - e.top - s.height - te;
1197
- o < H && (o = i.bottom - e.top + te);
1198
- let a = i.left - e.left + i.width / 2 - s.width / 2;
1199
- const l = e.width - s.width - H;
1200
- a = Math.max(H, Math.min(a, l)), this.el.style.top = `${o}px`, this.el.style.left = `${a}px`;
1206
+ const e = this.mountEl.getBoundingClientRect(), i = t.getBoundingClientRect(), r = this.el.getBoundingClientRect();
1207
+ let o = i.top - e.top - r.height - oe;
1208
+ o < V && (o = i.bottom - e.top + oe);
1209
+ let a = i.left - e.left + i.width / 2 - r.width / 2;
1210
+ const l = e.width - r.width - V;
1211
+ a = Math.max(V, Math.min(a, l)), this.el.style.top = `${o}px`, this.el.style.left = `${a}px`;
1201
1212
  }
1202
1213
  }
1203
- class Xe {
1214
+ class tt {
1204
1215
  constructor(t, e, i) {
1205
- r(this, "host");
1206
- r(this, "video");
1207
- r(this, "toggleFullscreen");
1216
+ s(this, "host");
1217
+ s(this, "video");
1218
+ s(this, "toggleFullscreen");
1208
1219
  /** ←/→ ve J/L ile sarma süresi (sn) — options.keyboardSeekStep. */
1209
- r(this, "seekStep", 5);
1220
+ s(this, "seekStep", 5);
1210
1221
  /** Klavyeyle sarıldığında (sn, negatif = geri) — sarma bildirimi için. */
1211
- r(this, "onSeek", null);
1222
+ s(this, "onSeek", null);
1212
1223
  /** Space/K'den önce sorulur — true dönerse işlenmiştir (ör. preroll beklemesini iptal). */
1213
- r(this, "interceptTogglePlay", null);
1214
- r(this, "onKeyDown", (t) => {
1215
- var s, o, a;
1224
+ s(this, "interceptTogglePlay", null);
1225
+ s(this, "onKeyDown", (t) => {
1226
+ var r, o, a;
1216
1227
  if (t.defaultPrevented) return;
1217
1228
  const e = t.composedPath()[0];
1218
1229
  if ((t.key === " " || t.key === "Enter") && e instanceof HTMLButtonElement) return;
@@ -1220,7 +1231,7 @@ class Xe {
1220
1231
  switch (t.key) {
1221
1232
  case " ":
1222
1233
  case "k":
1223
- if ((s = this.interceptTogglePlay) != null && s.call(this)) {
1234
+ if ((r = this.interceptTogglePlay) != null && r.call(this)) {
1224
1235
  t.preventDefault();
1225
1236
  break;
1226
1237
  }
@@ -1228,7 +1239,7 @@ class Xe {
1228
1239
  break;
1229
1240
  case "ArrowRight":
1230
1241
  case "l":
1231
- Number.isFinite(i) && (this.video.currentTime = Math.min(i, this.video.currentTime + this.seekStep), (o = this.onSeek) == null || o.call(this, this.seekStep)), t.preventDefault();
1242
+ Number.isFinite(i) && (this.video.currentTime = D(this.video, Math.min(i, this.video.currentTime + this.seekStep)), (o = this.onSeek) == null || o.call(this, this.seekStep)), t.preventDefault();
1232
1243
  break;
1233
1244
  case "ArrowLeft":
1234
1245
  case "j":
@@ -1254,40 +1265,42 @@ class Xe {
1254
1265
  this.host.removeEventListener("keydown", this.onKeyDown);
1255
1266
  }
1256
1267
  }
1257
- class Ye {
1268
+ class it {
1258
1269
  constructor(t) {
1259
- r(this, "el");
1260
- r(this, "video");
1261
- r(this, "show", () => this.el.classList.remove("hp:hidden"));
1262
- r(this, "hide", () => this.el.classList.add("hp:hidden"));
1270
+ s(this, "el");
1271
+ s(this, "video");
1272
+ s(this, "show", () => this.el.classList.remove("hp:hidden"));
1273
+ s(this, "hide", () => this.el.classList.add("hp:hidden"));
1263
1274
  this.video = t, this.el = document.createElement("div"), this.el.className = "hp-loading-spinner hp:absolute hp:inset-0 hp:flex hp:items-center hp:justify-center hp:pointer-events-none hp:hidden", this.el.innerHTML = '<div class="hp:w-10 hp:h-10 hp:border-[3px] hp:border-on-surface/30 hp:border-t-accent hp:rounded-full hp:animate-spin"></div>', t.addEventListener("waiting", this.show), t.addEventListener("playing", this.hide), t.addEventListener("canplay", this.hide), t.addEventListener("pause", this.hide);
1264
1275
  }
1265
1276
  destroy() {
1266
1277
  this.video.removeEventListener("waiting", this.show), this.video.removeEventListener("playing", this.hide), this.video.removeEventListener("canplay", this.hide), this.video.removeEventListener("pause", this.hide);
1267
1278
  }
1268
1279
  }
1269
- const Je = '<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 11a8 8 0 1 0-2.3 5.7"/><path d="M20 4v7h-7"/></svg>';
1270
- class Ze {
1280
+ const rt = '<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 11a8 8 0 1 0-2.3 5.7"/><path d="M20 4v7h-7"/></svg>';
1281
+ class st {
1271
1282
  constructor(t, e) {
1272
- r(this, "el");
1273
- r(this, "video");
1274
- r(this, "labels");
1275
- r(this, "messageEl");
1276
- r(this, "codeEl");
1277
- r(this, "retryBtn");
1278
- r(this, "retryText");
1279
- r(this, "onRetry", null);
1280
- r(this, "shouldShow", () => !0);
1283
+ s(this, "el");
1284
+ s(this, "video");
1285
+ s(this, "labels");
1286
+ s(this, "messageEl");
1287
+ s(this, "codeEl");
1288
+ s(this, "retryBtn");
1289
+ s(this, "retryText");
1290
+ s(this, "onRetry", null);
1291
+ /** Ekran gerçekten açıldı (hp:error için) — kurtarılan hatalarda (yedek kaynak, native → hls.js) çağrılmaz. */
1292
+ s(this, "onShown", null);
1293
+ s(this, "shouldShow", () => !0);
1281
1294
  /** showStreamError ile açılan hatanın kodu (video.error yokken). */
1282
- r(this, "streamErrorCode", 0);
1283
- r(this, "show", () => {
1284
- !this.video.getAttribute("src") && !this.video.querySelector("source") || this.shouldShow() && (this.render(), this.el.setAttribute("data-visible", ""));
1295
+ s(this, "streamErrorCode", 0);
1296
+ s(this, "show", () => {
1297
+ !this.video.getAttribute("src") && !this.video.querySelector("source") || K(this.video.error) || this.shouldShow() && this.open();
1285
1298
  });
1286
1299
  this.video = t, this.labels = e, this.el = document.createElement("div"), this.el.setAttribute("part", "error-screen"), this.el.setAttribute("role", "alert"), this.el.className = "hp-error-screen";
1287
1300
  const i = document.createElement("div");
1288
1301
  i.className = "hp-error-card";
1289
- const s = document.createElement("div");
1290
- s.className = "hp-error-icon", s.appendChild(S("warning")), i.appendChild(s), this.messageEl = document.createElement("p"), this.messageEl.className = "hp-error-message", i.appendChild(this.messageEl), this.codeEl = document.createElement("p"), this.codeEl.className = "hp-error-code", i.appendChild(this.codeEl), this.retryBtn = document.createElement("button"), this.retryBtn.type = "button", this.retryBtn.className = "hp-error-retry", this.retryBtn.innerHTML = Je, this.retryText = document.createElement("span"), this.retryText.textContent = e.retry, this.retryBtn.appendChild(this.retryText), this.retryBtn.addEventListener("click", () => {
1302
+ const r = document.createElement("div");
1303
+ r.className = "hp-error-icon", r.appendChild(L("warning")), i.appendChild(r), this.messageEl = document.createElement("p"), this.messageEl.className = "hp-error-message", i.appendChild(this.messageEl), this.codeEl = document.createElement("p"), this.codeEl.className = "hp-error-code", i.appendChild(this.codeEl), this.retryBtn = document.createElement("button"), this.retryBtn.type = "button", this.retryBtn.className = "hp-error-retry", this.retryBtn.innerHTML = rt, this.retryText = document.createElement("span"), this.retryText.textContent = e.retry, this.retryBtn.appendChild(this.retryText), this.retryBtn.addEventListener("click", () => {
1291
1304
  var o;
1292
1305
  this.dismiss(), (o = this.onRetry) == null || o.call(this);
1293
1306
  }), i.appendChild(this.retryBtn), this.el.appendChild(i), t.addEventListener("error", this.show);
@@ -1295,6 +1308,14 @@ class Ze {
1295
1308
  setOnRetry(t) {
1296
1309
  this.onRetry = t;
1297
1310
  }
1311
+ setOnShown(t) {
1312
+ this.onShown = t;
1313
+ }
1314
+ open() {
1315
+ var e, i;
1316
+ const t = this.visible;
1317
+ this.render(), this.el.setAttribute("data-visible", ""), t || (i = this.onShown) == null || i.call(this, { code: ((e = this.video.error) == null ? void 0 : e.code) ?? this.streamErrorCode, message: this.messageEl.textContent ?? "" });
1318
+ }
1298
1319
  /** false dönerse hata gösterilmez (ör. SourceManager native HLS'ten hls.js'e geçerken). */
1299
1320
  setShouldShow(t) {
1300
1321
  this.shouldShow = t;
@@ -1304,7 +1325,7 @@ class Ze {
1304
1325
  * `code`: MediaError kodu (2 = ağ, 3 = çözümleme).
1305
1326
  */
1306
1327
  showStreamError(t) {
1307
- this.shouldShow() && (this.streamErrorCode = t, this.render(), this.el.setAttribute("data-visible", ""));
1328
+ this.shouldShow() && (this.streamErrorCode = t, this.open());
1308
1329
  }
1309
1330
  /** Yeni kaynak yüklenirken önceki hatayı kapat. */
1310
1331
  dismiss() {
@@ -1333,120 +1354,120 @@ class Ze {
1333
1354
  this.video.removeEventListener("error", this.show);
1334
1355
  }
1335
1356
  }
1336
- const _ = /* @__PURE__ */ new WeakMap(), ye = /* @__PURE__ */ new WeakSet(), F = /* @__PURE__ */ new WeakMap();
1337
- function et(n) {
1338
- return ye.has(n);
1357
+ const q = /* @__PURE__ */ new WeakMap(), Ee = /* @__PURE__ */ new WeakSet(), H = /* @__PURE__ */ new WeakMap();
1358
+ function ot(n) {
1359
+ return Ee.has(n);
1339
1360
  }
1340
- function xe(n, t, e, i, s) {
1341
- let o = _.get(n);
1342
- o || _.set(n, o = /* @__PURE__ */ new Map());
1343
- const a = `${t}\0${e}\0${i}\0${s}`;
1361
+ function Ce(n, t, e, i, r) {
1362
+ let o = q.get(n);
1363
+ o || q.set(n, o = /* @__PURE__ */ new Map());
1364
+ const a = `${t}\0${e}\0${i}\0${r}`;
1344
1365
  let l = o.get(a);
1345
- return l || (l = n.addTextTrack(e, i, s), ye.add(l), o.set(a, l)), l;
1366
+ return l || (l = n.addTextTrack(e, i, r), Ee.add(l), o.set(a, l)), l;
1346
1367
  }
1347
- function ke(n, t) {
1348
- for (const [e, i] of _.get(n) ?? [])
1368
+ function Te(n, t) {
1369
+ for (const [e, i] of q.get(n) ?? [])
1349
1370
  if (e.startsWith(`${t}\0`)) {
1350
1371
  i.mode = "hidden";
1351
- for (const s of Array.from(i.cues ?? [])) i.removeCue(s);
1372
+ for (const r of Array.from(i.cues ?? [])) i.removeCue(r);
1352
1373
  i.mode = "disabled";
1353
1374
  }
1354
1375
  }
1355
- function tt(n, t) {
1356
- we(n);
1357
- const e = F.get(n), i = [];
1358
- for (const s of t) {
1359
- const o = xe(n, "options", "subtitles", s.label, s.srclang);
1360
- o.mode = s.default ? "hidden" : "disabled", i.push({ label: s.label, track: o }), st(n, o, s.src, e);
1376
+ function at(n, t) {
1377
+ Se(n);
1378
+ const e = H.get(n), i = [];
1379
+ for (const r of t) {
1380
+ const o = Ce(n, "options", "subtitles", r.label, r.srclang);
1381
+ o.mode = r.default ? "hidden" : "disabled", i.push({ label: r.label, track: o }), lt(n, o, r.src, e);
1361
1382
  }
1362
1383
  return i;
1363
1384
  }
1364
- function we(n) {
1365
- F.set(n, (F.get(n) ?? 0) + 1), ke(n, "options");
1385
+ function Se(n) {
1386
+ H.set(n, (H.get(n) ?? 0) + 1), Te(n, "options");
1366
1387
  }
1367
- function it(n, t) {
1388
+ function nt(n, t) {
1368
1389
  let e = null;
1369
- for (const { label: i, track: s } of n) {
1390
+ for (const { label: i, track: r } of n) {
1370
1391
  const o = i === t;
1371
- s.mode = o ? "hidden" : "disabled", o && (e = s);
1392
+ r.mode = o ? "hidden" : "disabled", o && (e = r);
1372
1393
  }
1373
1394
  return e;
1374
1395
  }
1375
- async function st(n, t, e, i) {
1376
- let s;
1396
+ async function lt(n, t, e, i) {
1397
+ let r;
1377
1398
  try {
1378
1399
  const o = await fetch(e);
1379
1400
  if (!o.ok) throw new Error(`HTTP ${o.status}`);
1380
- s = await o.text();
1401
+ r = await o.text();
1381
1402
  } catch (o) {
1382
1403
  console.warn("[HopePlayer] altyazı yüklenemedi:", e, o), n.dispatchEvent(new CustomEvent("hp-internal:subtitle-error", { detail: { src: e, message: String(o) } }));
1383
1404
  return;
1384
1405
  }
1385
- if (!(F.get(n) !== i || typeof VTTCue != "function"))
1386
- for (const o of ot(s)) {
1406
+ if (!(H.get(n) !== i || typeof VTTCue != "function"))
1407
+ for (const o of pt(r)) {
1387
1408
  const a = new VTTCue(o.start, o.end, o.text);
1388
- at(a, o.settings), t.addCue(a);
1409
+ dt(a, o.settings), t.addCue(a);
1389
1410
  }
1390
1411
  }
1391
- const ie = "(?:\\d+:)?\\d{1,2}:\\d{2}(?:[.,]\\d{1,3})?", rt = new RegExp(`^(${ie})\\s+-->\\s+(${ie})(.*)$`);
1392
- function se(n) {
1412
+ const ae = "(?:\\d+:)?\\d{1,2}:\\d{2}(?:[.,]\\d{1,3})?", ht = new RegExp(`^(${ae})\\s+-->\\s+(${ae})(.*)$`);
1413
+ function ne(n) {
1393
1414
  return n.replace(",", ".").split(":").reduce((t, e) => t * 60 + Number(e), 0);
1394
1415
  }
1395
- function ot(n) {
1416
+ function pt(n) {
1396
1417
  const t = [], e = n.replace(/^/, "").replace(/\r\n?/g, `
1397
1418
  `).split(/\n{2,}/);
1398
1419
  for (const i of e) {
1399
- const s = i.split(`
1400
- `), o = s.findIndex((h) => h.includes("-->"));
1420
+ const r = i.split(`
1421
+ `), o = r.findIndex((h) => h.includes("-->"));
1401
1422
  if (o < 0) continue;
1402
- const a = rt.exec(s[o].trim());
1423
+ const a = ht.exec(r[o].trim());
1403
1424
  if (!a) continue;
1404
- const l = s.slice(o + 1).join(`
1425
+ const l = r.slice(o + 1).join(`
1405
1426
  `);
1406
- l.trim() && t.push({ start: se(a[1]), end: se(a[2]), settings: a[3].trim(), text: l });
1427
+ l.trim() && t.push({ start: ne(a[1]), end: ne(a[2]), settings: a[3].trim(), text: l });
1407
1428
  }
1408
1429
  return t;
1409
1430
  }
1410
- function at(n, t) {
1431
+ function dt(n, t) {
1411
1432
  for (const e of t.split(/\s+/)) {
1412
- const [i, s] = e.split(":");
1413
- if (!i || !s) continue;
1414
- const [o] = s.split(",");
1433
+ const [i, r] = e.split(":");
1434
+ if (!i || !r) continue;
1435
+ const [o] = r.split(",");
1415
1436
  try {
1416
1437
  i === "align" ? n.align = o : i === "vertical" ? n.vertical = o : i === "size" ? n.size = parseFloat(o) : i === "position" ? n.position = parseFloat(o) : i === "line" && (n.snapToLines = !o.endsWith("%"), n.line = parseFloat(o));
1417
1438
  } catch {
1418
1439
  }
1419
1440
  }
1420
1441
  }
1421
- const I = 6, nt = 20, lt = 14, ht = 6, pt = 10, dt = 3, Ee = "hope-caption-row", Ce = "hope-caption-font-size", re = "hope-caption-bg-color", oe = "hope-caption-text-color", ct = {
1442
+ const F = 6, ct = 20, ut = 14, mt = 6, gt = 10, ft = 3, Ae = "hope-caption-row", Le = "hope-caption-font-size", le = "hope-caption-bg-color", he = "hope-caption-text-color", bt = {
1422
1443
  small: 0.78,
1423
1444
  normal: 1,
1424
1445
  large: 1.35
1425
- }, ae = [
1446
+ }, pe = [
1426
1447
  "rgba(0, 0, 0, 0.75)",
1427
1448
  "rgba(0, 0, 0, 0)",
1428
1449
  "rgba(255, 255, 255, 0.85)",
1429
1450
  "rgba(183, 28, 28, 0.8)",
1430
1451
  "rgba(13, 71, 161, 0.8)",
1431
1452
  "rgba(27, 94, 32, 0.8)"
1432
- ], ne = ["#ffffff", "#000000", "#ffeb3b", "#ff5252", "#18ffff", "#69f0ae"];
1433
- function ut() {
1453
+ ], de = ["#ffffff", "#000000", "#ffeb3b", "#ff5252", "#18ffff", "#69f0ae"];
1454
+ function vt() {
1434
1455
  try {
1435
- const n = window.localStorage.getItem(Ee), t = n === null ? 0 : Number(n);
1436
- return Number.isFinite(t) && t >= 0 && t < I ? t : 0;
1456
+ const n = window.localStorage.getItem(Ae), t = n === null ? 0 : Number(n);
1457
+ return Number.isFinite(t) && t >= 0 && t < F ? t : 0;
1437
1458
  } catch {
1438
1459
  return 0;
1439
1460
  }
1440
1461
  }
1441
- function gt() {
1462
+ function yt() {
1442
1463
  try {
1443
- const n = window.localStorage.getItem(Ce);
1464
+ const n = window.localStorage.getItem(Le);
1444
1465
  return n === "small" || n === "normal" || n === "large" ? n : "normal";
1445
1466
  } catch {
1446
1467
  return "normal";
1447
1468
  }
1448
1469
  }
1449
- function le(n, t) {
1470
+ function ce(n, t) {
1450
1471
  const e = t[0] ?? "";
1451
1472
  try {
1452
1473
  const i = window.localStorage.getItem(n);
@@ -1455,28 +1476,28 @@ function le(n, t) {
1455
1476
  return e;
1456
1477
  }
1457
1478
  }
1458
- class R {
1459
- constructor(t, e, i, s) {
1460
- r(this, "layerEl");
1461
- r(this, "bubbleEl");
1462
- r(this, "videoArea");
1463
- r(this, "seekBarEl");
1464
- r(this, "labels");
1465
- r(this, "activeTrack", null);
1466
- r(this, "fontSize", gt());
1467
- r(this, "bgColor", le(re, ae));
1468
- r(this, "textColor", le(oe, ne));
1469
- r(this, "rowIndex", ut());
1470
- r(this, "dragging", !1);
1479
+ class z {
1480
+ constructor(t, e, i, r) {
1481
+ s(this, "layerEl");
1482
+ s(this, "bubbleEl");
1483
+ s(this, "videoArea");
1484
+ s(this, "seekBarEl");
1485
+ s(this, "labels");
1486
+ s(this, "activeTrack", null);
1487
+ s(this, "fontSize", yt());
1488
+ s(this, "bgColor", ce(le, pe));
1489
+ s(this, "textColor", ce(he, de));
1490
+ s(this, "rowIndex", vt());
1491
+ s(this, "dragging", !1);
1471
1492
  /** Kontrol çubuğu görünür mü — görünürken altyazı seek bar'ın üstünde, değilken en altta. */
1472
- r(this, "chromeVisible", !0);
1473
- r(this, "dragStartClientY", 0);
1474
- r(this, "dragStartBottomPx", 0);
1475
- r(this, "dragMoved", !1);
1476
- r(this, "rafId", null);
1477
- r(this, "pendingDeltaPx", 0);
1478
- r(this, "resizeObserver");
1479
- r(this, "onCueChange", () => {
1493
+ s(this, "chromeVisible", !0);
1494
+ s(this, "dragStartClientY", 0);
1495
+ s(this, "dragStartBottomPx", 0);
1496
+ s(this, "dragMoved", !1);
1497
+ s(this, "rafId", null);
1498
+ s(this, "pendingDeltaPx", 0);
1499
+ s(this, "resizeObserver");
1500
+ s(this, "onCueChange", () => {
1480
1501
  var e;
1481
1502
  const t = (e = this.activeTrack) == null ? void 0 : e.activeCues;
1482
1503
  if (!this.activeTrack || !t || t.length === 0) {
@@ -1486,28 +1507,28 @@ class R {
1486
1507
  this.bubbleEl.textContent = "";
1487
1508
  for (let i = 0; i < t.length; i++) {
1488
1509
  i > 0 && this.bubbleEl.appendChild(document.createElement("br"));
1489
- const s = t[i];
1490
- typeof s.getCueAsHTML == "function" ? this.bubbleEl.appendChild(s.getCueAsHTML()) : this.bubbleEl.appendChild(document.createTextNode(s.text ?? ""));
1510
+ const r = t[i];
1511
+ typeof r.getCueAsHTML == "function" ? this.bubbleEl.appendChild(r.getCueAsHTML()) : this.bubbleEl.appendChild(document.createTextNode(r.text ?? ""));
1491
1512
  }
1492
1513
  this.bubbleEl.classList.add("hp-caption-visible");
1493
1514
  });
1494
- r(this, "onPointerDown", (t) => {
1515
+ s(this, "onPointerDown", (t) => {
1495
1516
  t.button !== 0 && t.pointerType === "mouse" || (t.preventDefault(), this.dragging = !0, this.dragMoved = !1, this.dragStartClientY = t.clientY, this.dragStartBottomPx = this.pxForRow(this.rowIndex), this.bubbleEl.setPointerCapture(t.pointerId), this.bubbleEl.classList.add("hp-caption-dragging"), this.bubbleEl.addEventListener("pointermove", this.onPointerMove), this.bubbleEl.addEventListener("pointerup", this.onPointerUp), this.bubbleEl.addEventListener("pointercancel", this.onPointerUp));
1496
1517
  });
1497
- r(this, "onPointerMove", (t) => {
1498
- this.dragging && (this.pendingDeltaPx = t.clientY - this.dragStartClientY, Math.abs(this.pendingDeltaPx) > dt && (this.dragMoved = !0), this.rafId === null && (this.rafId = requestAnimationFrame(this.applyPendingDrag)));
1518
+ s(this, "onPointerMove", (t) => {
1519
+ this.dragging && (this.pendingDeltaPx = t.clientY - this.dragStartClientY, Math.abs(this.pendingDeltaPx) > ft && (this.dragMoved = !0), this.rafId === null && (this.rafId = requestAnimationFrame(this.applyPendingDrag)));
1499
1520
  });
1500
- r(this, "applyPendingDrag", () => {
1521
+ s(this, "applyPendingDrag", () => {
1501
1522
  if (this.rafId = null, !this.dragging) return;
1502
- const { min: t, max: e } = this.bounds(), i = Math.min(e, Math.max(t, this.dragStartBottomPx - this.pendingDeltaPx)), s = this.dragStartBottomPx - i;
1503
- this.bubbleEl.style.transform = `translateX(-50%) translateY(${s}px)`;
1523
+ const { min: t, max: e } = this.bounds(), i = Math.min(e, Math.max(t, this.dragStartBottomPx - this.pendingDeltaPx)), r = this.dragStartBottomPx - i;
1524
+ this.bubbleEl.style.transform = `translateX(-50%) translateY(${r}px)`;
1504
1525
  });
1505
- r(this, "onPointerUp", (t) => {
1526
+ s(this, "onPointerUp", (t) => {
1506
1527
  if (!this.dragging || (this.dragging = !1, this.bubbleEl.releasePointerCapture(t.pointerId), this.bubbleEl.removeEventListener("pointermove", this.onPointerMove), this.bubbleEl.removeEventListener("pointerup", this.onPointerUp), this.bubbleEl.removeEventListener("pointercancel", this.onPointerUp), this.rafId !== null && (cancelAnimationFrame(this.rafId), this.rafId = null), this.bubbleEl.classList.remove("hp-caption-dragging"), !this.dragMoved)) return;
1507
- const { min: e, max: i } = this.bounds(), s = Math.min(i, Math.max(e, this.dragStartBottomPx - this.pendingDeltaPx)), o = i > e ? (s - e) / (i - e) : 0, a = Math.round(o * (I - 1));
1528
+ const { min: e, max: i } = this.bounds(), r = Math.min(i, Math.max(e, this.dragStartBottomPx - this.pendingDeltaPx)), o = i > e ? (r - e) / (i - e) : 0, a = Math.round(o * (F - 1));
1508
1529
  this.setRowIndex(a, !0);
1509
1530
  });
1510
- this.videoArea = e, this.seekBarEl = i, this.labels = s, this.layerEl = document.createElement("div"), this.layerEl.className = "hp-caption-layer", this.layerEl.setAttribute("part", "caption-layer"), this.bubbleEl = document.createElement("div"), this.bubbleEl.className = "hp-caption-bubble", this.bubbleEl.setAttribute("part", "caption-bubble"), this.bubbleEl.setAttribute("role", "note"), this.bubbleEl.setAttribute("aria-label", s.captionDragHandle), this.bubbleEl.tabIndex = -1, this.applyFontSizeVar(), this.bubbleEl.style.setProperty("--hp-caption-bg", this.bgColor), this.bubbleEl.style.setProperty("--hp-caption-text", this.textColor), this.layerEl.appendChild(this.bubbleEl), this.bubbleEl.addEventListener("pointerdown", this.onPointerDown), this.resizeObserver = new ResizeObserver(() => this.recomputePosition()), this.resizeObserver.observe(this.videoArea), this.recomputePosition();
1531
+ this.videoArea = e, this.seekBarEl = i, this.labels = r, this.layerEl = document.createElement("div"), this.layerEl.className = "hp-caption-layer", this.layerEl.setAttribute("part", "caption-layer"), this.bubbleEl = document.createElement("div"), this.bubbleEl.className = "hp-caption-bubble", this.bubbleEl.setAttribute("part", "caption-bubble"), this.bubbleEl.setAttribute("role", "note"), this.bubbleEl.setAttribute("aria-label", r.captionDragHandle), this.bubbleEl.tabIndex = -1, this.applyFontSizeVar(), this.bubbleEl.style.setProperty("--hp-caption-bg", this.bgColor), this.bubbleEl.style.setProperty("--hp-caption-text", this.textColor), this.layerEl.appendChild(this.bubbleEl), this.bubbleEl.addEventListener("pointerdown", this.onPointerDown), this.resizeObserver = new ResizeObserver(() => this.recomputePosition()), this.resizeObserver.observe(this.videoArea), this.recomputePosition();
1511
1532
  }
1512
1533
  /** `applyOptions()`'tan — hangi track aktif (ya da null = kapalı). */
1513
1534
  setActiveTrack(t) {
@@ -1519,7 +1540,7 @@ class R {
1519
1540
  setFontSize(t) {
1520
1541
  this.fontSize = t, this.applyFontSizeVar(), this.recomputePosition();
1521
1542
  try {
1522
- window.localStorage.setItem(Ce, t);
1543
+ window.localStorage.setItem(Le, t);
1523
1544
  } catch {
1524
1545
  }
1525
1546
  }
@@ -1529,7 +1550,7 @@ class R {
1529
1550
  setBgColor(t) {
1530
1551
  this.bgColor = t, this.bubbleEl.style.setProperty("--hp-caption-bg", t);
1531
1552
  try {
1532
- window.localStorage.setItem(re, t);
1553
+ window.localStorage.setItem(le, t);
1533
1554
  } catch {
1534
1555
  }
1535
1556
  }
@@ -1539,7 +1560,7 @@ class R {
1539
1560
  setTextColor(t) {
1540
1561
  this.textColor = t, this.bubbleEl.style.setProperty("--hp-caption-text", t);
1541
1562
  try {
1542
- window.localStorage.setItem(oe, t);
1563
+ window.localStorage.setItem(he, t);
1543
1564
  } catch {
1544
1565
  }
1545
1566
  }
@@ -1552,15 +1573,15 @@ class R {
1552
1573
  this.labels = t, this.bubbleEl.setAttribute("aria-label", t.captionDragHandle);
1553
1574
  }
1554
1575
  applyFontSizeVar() {
1555
- this.bubbleEl.style.setProperty("--hp-caption-size-multiplier", String(ct[this.fontSize]));
1576
+ this.bubbleEl.style.setProperty("--hp-caption-size-multiplier", String(bt[this.fontSize]));
1556
1577
  }
1557
1578
  bounds() {
1558
- const t = this.videoArea.getBoundingClientRect(), e = this.seekBarEl.getBoundingClientRect(), s = (this.bubbleEl.getBoundingClientRect().height || 32) + nt, o = Math.max(pt, Math.round(t.height * 0.04)), a = this.chromeVisible && e.height > 0 ? Math.max(0, Math.round(t.bottom - e.top + (this.videoArea.hasAttribute("data-compact") ? ht : lt))) : o, l = Math.max(a, Math.round(t.height - s));
1579
+ const t = this.videoArea.getBoundingClientRect(), e = this.seekBarEl.getBoundingClientRect(), r = (this.bubbleEl.getBoundingClientRect().height || 32) + ct, o = Math.max(gt, Math.round(t.height * 0.04)), a = this.chromeVisible && e.height > 0 ? Math.max(0, Math.round(t.bottom - e.top + (this.videoArea.hasAttribute("data-compact") ? mt : ut))) : o, l = Math.max(a, Math.round(t.height - r));
1559
1580
  return { min: a, max: l };
1560
1581
  }
1561
1582
  pxForRow(t) {
1562
- const { min: e, max: i } = this.bounds(), s = t / (I - 1);
1563
- return Math.round(e + s * (i - e));
1583
+ const { min: e, max: i } = this.bounds(), r = t / (F - 1);
1584
+ return Math.round(e + r * (i - e));
1564
1585
  }
1565
1586
  /**
1566
1587
  * Balonun EKRANDA şu an durduğu konum (bottom, px): yazılı `bottom` + o anki transform'un dikey kayması.
@@ -1578,11 +1599,11 @@ class R {
1578
1599
  }
1579
1600
  /** FLIP: bottom anında yazılır, yalnızca transform animasyonlanır — bottom'u animasyonlamak bırakınca zıplatıyordu. */
1580
1601
  setRowIndex(t, e) {
1581
- this.rowIndex = Math.min(I - 1, Math.max(0, t));
1582
- const i = this.pxForRow(this.rowIndex), s = this.visualBottomPx();
1583
- e && Math.abs(s - i) > 0.5 ? (this.bubbleEl.classList.add("hp-caption-no-transition"), this.bubbleEl.style.bottom = `${i}px`, this.bubbleEl.style.transform = `translateX(-50%) translateY(${i - s}px)`, this.bubbleEl.offsetHeight, this.bubbleEl.classList.remove("hp-caption-no-transition"), this.bubbleEl.style.transform = "translateX(-50%)") : (this.bubbleEl.classList.add("hp-caption-no-transition"), this.bubbleEl.style.transform = "translateX(-50%)", this.bubbleEl.style.bottom = `${i}px`, this.bubbleEl.offsetHeight, this.bubbleEl.classList.remove("hp-caption-no-transition"));
1602
+ this.rowIndex = Math.min(F - 1, Math.max(0, t));
1603
+ const i = this.pxForRow(this.rowIndex), r = this.visualBottomPx();
1604
+ e && Math.abs(r - i) > 0.5 ? (this.bubbleEl.classList.add("hp-caption-no-transition"), this.bubbleEl.style.bottom = `${i}px`, this.bubbleEl.style.transform = `translateX(-50%) translateY(${i - r}px)`, this.bubbleEl.offsetHeight, this.bubbleEl.classList.remove("hp-caption-no-transition"), this.bubbleEl.style.transform = "translateX(-50%)") : (this.bubbleEl.classList.add("hp-caption-no-transition"), this.bubbleEl.style.transform = "translateX(-50%)", this.bubbleEl.style.bottom = `${i}px`, this.bubbleEl.offsetHeight, this.bubbleEl.classList.remove("hp-caption-no-transition"));
1584
1605
  try {
1585
- window.localStorage.setItem(Ee, String(this.rowIndex));
1606
+ window.localStorage.setItem(Ae, String(this.rowIndex));
1586
1607
  } catch {
1587
1608
  }
1588
1609
  }
@@ -1598,26 +1619,26 @@ class R {
1598
1619
  this.activeTrack && this.activeTrack.removeEventListener("cuechange", this.onCueChange), this.resizeObserver.disconnect(), this.rafId !== null && cancelAnimationFrame(this.rafId), this.bubbleEl.removeEventListener("pointerdown", this.onPointerDown);
1599
1620
  }
1600
1621
  }
1601
- r(R, "BG_COLOR_PRESETS", ae), r(R, "TEXT_COLOR_PRESETS", ne);
1602
- class mt {
1622
+ s(z, "BG_COLOR_PRESETS", pe), s(z, "TEXT_COLOR_PRESETS", de);
1623
+ class xt {
1603
1624
  constructor(t) {
1604
- r(this, "el");
1605
- r(this, "bufferedEl");
1606
- r(this, "playedEl");
1607
- r(this, "visible", !1);
1608
- r(this, "rafId", null);
1609
- r(this, "sync", () => {
1625
+ s(this, "el");
1626
+ s(this, "bufferedEl");
1627
+ s(this, "playedEl");
1628
+ s(this, "visible", !1);
1629
+ s(this, "rafId", null);
1630
+ s(this, "sync", () => {
1610
1631
  this.render(), this.visible && !this.video.paused ? this.start() : this.stop();
1611
1632
  });
1612
- r(this, "render", () => {
1633
+ s(this, "render", () => {
1613
1634
  const t = this.video.duration, e = Number.isFinite(t) && t > 0;
1614
1635
  if (this.el.toggleAttribute("data-disabled", !e), !this.visible || !e) return;
1615
1636
  this.playedEl.style.transform = `scaleX(${Math.min(1, this.video.currentTime / t)})`;
1616
1637
  const { buffered: i } = this.video;
1617
- let s = 0;
1638
+ let r = 0;
1618
1639
  for (let o = 0; o < i.length; o++)
1619
- i.start(o) <= this.video.currentTime && (s = Math.max(s, i.end(o)));
1620
- this.bufferedEl.style.transform = `scaleX(${Math.min(1, s / t)})`;
1640
+ i.start(o) <= this.video.currentTime && (r = Math.max(r, i.end(o)));
1641
+ this.bufferedEl.style.transform = `scaleX(${Math.min(1, r / t)})`;
1621
1642
  });
1622
1643
  this.video = t, this.el = document.createElement("div"), this.el.className = "hp-mini-progress", this.el.setAttribute("part", "mini-progress"), this.el.setAttribute("aria-hidden", "true"), this.bufferedEl = document.createElement("div"), this.bufferedEl.className = "hp-mini-progress-fill hp-mini-progress-buffered", this.playedEl = document.createElement("div"), this.playedEl.className = "hp-mini-progress-fill hp-mini-progress-played", this.el.append(this.bufferedEl, this.playedEl), t.addEventListener("play", this.sync), t.addEventListener("pause", this.sync), t.addEventListener("timeupdate", this.render), t.addEventListener("progress", this.render), t.addEventListener("durationchange", this.render);
1623
1644
  }
@@ -1638,19 +1659,19 @@ class mt {
1638
1659
  this.rafId !== null && cancelAnimationFrame(this.rafId), this.rafId = null;
1639
1660
  }
1640
1661
  }
1641
- const bt = 1e3, ft = 800, vt = '<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9.3 5.3a1.2 1.2 0 0 1 1.7 0l5.8 5.8a1.2 1.2 0 0 1 0 1.8l-5.8 5.8a1.2 1.2 0 0 1-1.7-1.7l4.9-5-4.9-5a1.2 1.2 0 0 1 0-1.7z"/></svg>';
1642
- class yt {
1662
+ const kt = 1e3, wt = 800, Et = '<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9.3 5.3a1.2 1.2 0 0 1 1.7 0l5.8 5.8a1.2 1.2 0 0 1 0 1.8l-5.8 5.8a1.2 1.2 0 0 1-1.7-1.7l4.9-5-4.9-5a1.2 1.2 0 0 1 0-1.7z"/></svg>';
1663
+ class Ct {
1643
1664
  constructor(t) {
1644
- r(this, "el");
1645
- r(this, "valueEl");
1646
- r(this, "unitEl");
1647
- r(this, "liveEl");
1648
- r(this, "total", 0);
1649
- r(this, "lastAt", 0);
1650
- r(this, "hideTimer", null);
1665
+ s(this, "el");
1666
+ s(this, "valueEl");
1667
+ s(this, "unitEl");
1668
+ s(this, "liveEl");
1669
+ s(this, "total", 0);
1670
+ s(this, "lastAt", 0);
1671
+ s(this, "hideTimer", null);
1651
1672
  this.labels = t, this.el = document.createElement("div"), this.el.className = "hp-seek-fb", this.el.setAttribute("part", "seek-feedback");
1652
1673
  const e = document.createElement("span");
1653
- e.className = "hp-seek-fb-chevrons", e.innerHTML = vt.repeat(3);
1674
+ e.className = "hp-seek-fb-chevrons", e.innerHTML = Et.repeat(3);
1654
1675
  const i = document.createElement("span");
1655
1676
  i.className = "hp-seek-fb-value", this.valueEl = document.createElement("span"), this.valueEl.className = "hp-seek-fb-num", this.unitEl = document.createElement("span"), this.unitEl.className = "hp-seek-fb-unit", i.append(this.valueEl, this.unitEl), this.liveEl = document.createElement("span"), this.liveEl.className = "hp-sr-only", this.liveEl.setAttribute("aria-live", "polite"), this.el.append(e, i, this.liveEl);
1656
1677
  }
@@ -1658,27 +1679,27 @@ class yt {
1658
1679
  show(t) {
1659
1680
  if (!t) return;
1660
1681
  const e = Date.now(), i = Math.sign(t) === Math.sign(this.total);
1661
- this.total = i && e - this.lastAt < bt ? this.total + t : t, this.lastAt = e;
1662
- const s = Math.round(Math.abs(this.total) * 10) / 10, o = this.total > 0;
1663
- this.el.dataset.side = o ? "forward" : "back", this.valueEl.textContent = `${o ? "+" : "−"}${s}`, this.unitEl.textContent = this.labels.secondsShort, this.liveEl.textContent = (o ? this.labels.skipForward : this.labels.skipBack)(s), this.valueEl.classList.remove("hp-seek-fb-bump"), this.valueEl.offsetWidth, this.valueEl.classList.add("hp-seek-fb-bump"), this.el.setAttribute("data-visible", ""), this.hideTimer && clearTimeout(this.hideTimer), this.hideTimer = setTimeout(() => {
1682
+ this.total = i && e - this.lastAt < kt ? this.total + t : t, this.lastAt = e;
1683
+ const r = Math.round(Math.abs(this.total) * 10) / 10, o = this.total > 0;
1684
+ this.el.dataset.side = o ? "forward" : "back", this.valueEl.textContent = `${o ? "+" : "−"}${r}`, this.unitEl.textContent = this.labels.secondsShort, this.liveEl.textContent = (o ? this.labels.skipForward : this.labels.skipBack)(r), this.valueEl.classList.remove("hp-seek-fb-bump"), this.valueEl.offsetWidth, this.valueEl.classList.add("hp-seek-fb-bump"), this.el.setAttribute("data-visible", ""), this.hideTimer && clearTimeout(this.hideTimer), this.hideTimer = setTimeout(() => {
1664
1685
  this.el.removeAttribute("data-visible"), this.total = 0;
1665
- }, ft);
1686
+ }, wt);
1666
1687
  }
1667
1688
  destroy() {
1668
1689
  this.hideTimer && clearTimeout(this.hideTimer), this.el.remove();
1669
1690
  }
1670
1691
  }
1671
- class xt {
1692
+ class Tt {
1672
1693
  constructor(t) {
1673
- r(this, "el");
1674
- r(this, "open", !1);
1675
- r(this, "close", () => {
1694
+ s(this, "el");
1695
+ s(this, "open", !1);
1696
+ s(this, "close", () => {
1676
1697
  this.open && (this.open = !1, this.el.removeAttribute("data-open"), document.removeEventListener("pointerdown", this.onOutside, !0), document.removeEventListener("keydown", this.onKeyDown, !0), window.removeEventListener("blur", this.close), window.removeEventListener("resize", this.close), window.removeEventListener("scroll", this.close, !0));
1677
1698
  });
1678
- r(this, "onOutside", (t) => {
1699
+ s(this, "onOutside", (t) => {
1679
1700
  t.composedPath().includes(this.el) || this.close();
1680
1701
  });
1681
- r(this, "onKeyDown", (t) => {
1702
+ s(this, "onKeyDown", (t) => {
1682
1703
  t.key === "Escape" && (t.stopPropagation(), this.close());
1683
1704
  });
1684
1705
  this.container = t, this.el = document.createElement("div"), this.el.className = "hp-context-menu", this.el.setAttribute("part", "context-menu"), this.el.setAttribute("role", "menu"), this.el.addEventListener("contextmenu", (e) => e.preventDefault()), t.appendChild(this.el);
@@ -1691,43 +1712,43 @@ class xt {
1691
1712
  var c;
1692
1713
  this.el.replaceChildren(
1693
1714
  ...i.map((p) => {
1694
- const g = document.createElement(p.onSelect ? "button" : "div");
1695
- g.className = "hp-context-menu-item", p.onSelect ? (g.type = "button", g.setAttribute("role", "menuitem"), g.addEventListener("click", () => {
1715
+ const m = document.createElement(p.onSelect ? "button" : "div");
1716
+ m.className = "hp-context-menu-item", p.onSelect ? (m.type = "button", m.setAttribute("role", "menuitem"), m.addEventListener("click", () => {
1696
1717
  this.close(), p.onSelect();
1697
- })) : g.setAttribute("data-info", "");
1698
- const m = document.createElement("span");
1699
- if (m.textContent = p.label, g.appendChild(m), p.meta) {
1718
+ })) : m.setAttribute("data-info", "");
1719
+ const u = document.createElement("span");
1720
+ if (u.textContent = p.label, m.appendChild(u), p.meta) {
1700
1721
  const f = document.createElement("span");
1701
- f.className = "hp-context-menu-meta", f.textContent = p.meta, g.appendChild(f);
1722
+ f.className = "hp-context-menu-meta", f.textContent = p.meta, m.appendChild(f);
1702
1723
  }
1703
- return g;
1724
+ return m;
1704
1725
  })
1705
1726
  ), this.el.setAttribute("data-open", ""), this.open = !0;
1706
- const s = this.container.getBoundingClientRect(), { width: o, height: a } = this.el.getBoundingClientRect(), l = Math.max(4, Math.min(t - s.left, s.width - o - 4)), h = Math.max(4, Math.min(e - s.top, s.height - a - 4));
1727
+ const r = this.container.getBoundingClientRect(), { width: o, height: a } = this.el.getBoundingClientRect(), l = Math.max(4, Math.min(t - r.left, r.width - o - 4)), h = Math.max(4, Math.min(e - r.top, r.height - a - 4));
1707
1728
  this.el.style.left = `${l}px`, this.el.style.top = `${h}px`, (c = this.el.querySelector("button")) == null || c.focus({ preventScroll: !0 }), document.addEventListener("pointerdown", this.onOutside, !0), document.addEventListener("keydown", this.onKeyDown, !0), window.addEventListener("blur", this.close), window.addEventListener("resize", this.close), window.addEventListener("scroll", this.close, !0);
1708
1729
  }
1709
1730
  destroy() {
1710
1731
  this.close(), this.el.remove();
1711
1732
  }
1712
1733
  }
1713
- const kt = 3e3, he = 200;
1714
- class wt {
1734
+ const St = 3e3, ue = 200;
1735
+ class At {
1715
1736
  constructor() {
1716
- r(this, "list", []);
1737
+ s(this, "list", []);
1717
1738
  /** Kayıt eklenince / temizlenince (açık panel canlı güncellenir). */
1718
- r(this, "onChange", null);
1739
+ s(this, "onChange", null);
1719
1740
  }
1720
1741
  get entries() {
1721
1742
  return this.list;
1722
1743
  }
1723
1744
  add(t) {
1724
- var s, o;
1745
+ var r, o;
1725
1746
  const e = Date.now(), i = this.list[this.list.length - 1];
1726
- if (i && e - i.time < kt && i.source === t.source && i.message === t.message && JSON.stringify(i.details ?? {}) === JSON.stringify(t.details ?? {})) {
1727
- i.count = (i.count ?? 1) + 1, i.time = e, (s = this.onChange) == null || s.call(this);
1747
+ if (i && e - i.time < St && i.source === t.source && i.message === t.message && JSON.stringify(i.details ?? {}) === JSON.stringify(t.details ?? {})) {
1748
+ i.count = (i.count ?? 1) + 1, i.time = e, (r = this.onChange) == null || r.call(this);
1728
1749
  return;
1729
1750
  }
1730
- this.list.push({ time: e, ...t }), this.list.length > he && this.list.splice(0, this.list.length - he), (o = this.onChange) == null || o.call(this);
1751
+ this.list.push({ time: e, ...t }), this.list.length > ue && this.list.splice(0, this.list.length - ue), (o = this.onChange) == null || o.call(this);
1731
1752
  }
1732
1753
  clear() {
1733
1754
  var t;
@@ -1736,34 +1757,34 @@ class wt {
1736
1757
  /** Destek ekibine yapıştırılabilir düz metin. */
1737
1758
  toText() {
1738
1759
  return this.list.map((t) => {
1739
- const e = Object.entries(t.details ?? {}).filter(([, s]) => s !== void 0 && s !== "").map(([s, o]) => `${s}=${o}`).join(" "), i = t.count && t.count > 1 ? ` (x${t.count})` : "";
1760
+ const e = Object.entries(t.details ?? {}).filter(([, r]) => r !== void 0 && r !== "").map(([r, o]) => `${r}=${o}`).join(" "), i = t.count && t.count > 1 ? ` (x${t.count})` : "";
1740
1761
  return `${new Date(t.time).toISOString()} [${t.source}]${t.fatal ? " [fatal]" : ""} ${t.message}${i}${e ? ` | ${e}` : ""}`;
1741
1762
  }).join(`
1742
1763
  `);
1743
1764
  }
1744
1765
  }
1745
- const Et = '@font-face{font-family:hope-icons;src:url(data:font/woff2;base64,d09GMgABAAAAAAuMAAsAAAAAIuAAAAs8AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACEegq1PK4ZATYCJANUCywABCAFhC4HggobTB4jESaVTgwydRbGzrR7EFKamp4EGD6+83WPOlVtFufKNoQP3FMw3+XD4QURPF85y/cFhm57sFsyDKE9ixwGQaUcQJ7ZIC+eQ8xnVOhGN8/3btY0zAxpnZKEriMToI4M0DphaJ13gQpdD9QMOzX/XVPOfcV/T/yaqq5tmHwMC1LiMW2M97StYfS0oH8OXi4E3rrH67vHaIoxiv5vLbUMRfxFY8K64ExmZwJ7cxtC3H3Z4wmC7KsikMCsgIVilHUVpsLGnRG+BsOtHVjBqsXBGhPUj7waBFAsZD3OLrsNDoOOU49i7NXwYEMF0upy6klW9QrzCLyK6kIBISd7TPlNbsMH2UWOB3YPX/k/VLkKHHwXdk4HHN81AV7PyHrl9fbrzJe/2aE7EfbuAD7gAjOKRcnF1Qnn4sb8TEgVL8FjD7p7D4Gst92GDB+rvSsQHFw8/Pl/8/IUKKLQlCjTQSdddNNDLwYkBxtcgltRaCDDBQQywIEMraPIAHiQAT5kQA4yIA8Z2kSRAShCBijIAA0ZUIIMKEMGdEAGdEIGdEEGdEMG9EAG9EIWgYG53XcDuAzUNaDHLMu7Exx8Y+LmFQ0Gny4D48WP8/C2nFvbdSu+yqveXpKqPK/CiEccUV4+iZ0pm2EUkqiKDXcd9PfPrB0YfnXh4qqKcW16GxGVhuMH0vYtGw6G4nLSKt1wP87cA1qLcsuOQt/4kLgbH1yC3vhqwo0fPBEd49tvjynxwTeL9NHc+M03BdRkMFrEDZxQ1HNsByFJ3d2k8dokTtujRGBuSgXmoZmNiDmoN5iwpLJ5J0Tr41F3pErSxE5r7YjXSQQscVd8q5terDHDs8Q8PgHLMj5LRBqlokk06lyJCkQ1ojKL8GTJbp+pRqUoUU3YINumkliJTsEUYbtUoiPRaLAIFK1z5cVTJ2ReUwR8/dQIb8cIaoW8a8qZCqJqhSxKWynJ4ylmWJAAS2N8Otkda/XeYRjsFyhj0rDRyoBBQSSChuwAMUpBS7oUr8QQgwZPTvyG6TaD70XE080iPLU+2UK0IxcuwsaqY13JWdvYED0erfTCAq89174mlFHPyjRL7uUwQdC6Trpcd+b0iOi29xiWL3InU0LkCsvsy6G9BA4lMzQOpQ8PBCjHTWhMMNGKKnOOoWJYhYrB2moLyoq2bngiCJQZM8R5IkifCJQ5goTQ5HlFwrAehhLUAupcD9ProQQUUUSfV2trx63V4WRIncdt+rjVIUUU0ecBYyrGYKuWLlNNAvfGvXUfXmTL52uuru/v7+ubca6k1O9vacwfGBgcXDDtrFSq1uzpaVl2zK5t1us1m8YES1N7ZGmJ1aCgJyYqtEUo6tqiYiGb1g02x7EmzTWBADFed7EHi/aCejQCJkJqXAo9F9IGgrPA18xCDZFjbGvRpqFhTCs+G8h5j++UWiY24kRj5t/5hLBemwd0qqZHf6ydh5oGW72xM1nxScV3a7RaScghJ5eiSkooPGUSol8PCjVLIA5YN0o9FVFaL3Y+a5idfc3M9VzXQ7dbJm7EYA4/tfK6bnB72X+HHeq71KJGf+n1/ua0g+3iSDY1Rn86/LDOC2c3NZeOeT1xWrvD+vlTXsJdzevs0NxhrrGpuSnhG3V7eG32QPcvb+iu61Tczs57l6Tb/uRmmtisNR96nzl3acMykuhQDOtjLCwhLIZZTFNjQ1RMTmDZxxKqFmU+GWGZhqOamghT+dB+JEnY6jEnjRraqlppEURabryN0YjkbUH5d5/AImVJfjkqY2Sn8jZJln/DPVimfaBMjqzXywJpN92LJHBqDKJ2REqL4L6B334DTt0UEimLqqpSfk+EBMoUVY0yKvz+b0YHUfpzE7MryTECgsHCr/9mtJFAPdD7v9agSRd4z9+LZRKKYRwLERmnLBt4vdmKpmEzFW2FXSB57eqpxzLFa9sNCvrqlNMDq31Vk3U1wsHWtoynt7uIK9EZc55RXHDa0dJjYzSKO25OG1+Hek2oHOjv57Gs4XctpvERXksqjMoi1kf0WCKUhRJaKpLSojFGBTvmr+cAB8u9BUbg1hXAO7Aei/KSJuspYpoeJuOkIrYLlMWixCYR2mwiYf3BSw8ZjtTv+eBg34Yj4zwZMPhOuCZsGzL8aKjs/qT2kxIV4efwKGow6iEEYWLzRoOq4vUKHTw74pnhoULdXpQQERAUSEixevMJnP54oFgsrgpQADMQgApOUbyMIFu4KKhCZ786rHvsvk9CtU2QTHrzETr4glMVFgNBBTRMx3JaVq71YATjOeUtwy4lF4erT6zOjdtleCvy6eMVAVuCALlfH9TIpauae+OT19779i7rrrfvvXYy3tu8qvR9zgffi6DDZnFfY3dda7EZqz7OfQ/05CSEdqvFkl5wJS1WzjSIrIvSmSB4uobXi8SjYDWTfWs2N+wjEBLfcG72lGQzKlY8RNTz4JudugpTpdutHXnbbDC80urqbLt8AtQFfs5ndVAZKvG4dK58zsDBNQ1Go8Uc/OTutMVoxA2rONFF39W5PCVDyuRs2WuBXMG3y6Zjca/1GGTSjrjdlQ2MdkXHf5KKh5DeEejunpjIZlJXXZXKZCcmursDjjzP8+4T+H8zL4jbQvuber5I5Ml85vxv6XXvC47pY+lz/LbI2svPdN2d//zIoTcnCh+LNDz218iT+SNd2CAk+oTTbnLNazuv99/CbMJRi8GGbIZhv8KZC8QlZLRwXAz87zmSf3Lkr8caIo8VTrx56Mjn+bu7zly+j2zjz6WPTTte8L4ubT4/M0/yiS96mvaHtokLufN60kEjqHR+g7ExRfM7IWiudeCmQrPCWcBwZQUzp0QpU+HkGOg8inUOqzXjcj515Lrrg/6cucK25SQU3kFzLui//rojar0rY7U6dLh4loZn51vrSkrq1shzN9OPLGN91Zvqvls6z84Oo0yEBNtZp3kFkJ6SwcnBdKYgrNSuHe88dNFFs6G/v7W2toT5+UGt6e9mbvZ60UNPvT8av1N1VnFclVO9Mz76fuNVHAU4jc5yTJ6PGofMXTW3tPSjw9Lxehm0nEUHpfeQrm/inU5vLd4EcHxjvCusBINKuCv+sr3XjiH0epKpwtHCVNLjhRCXb9LrY9BEWIpPMWJKS4Sl+TQjlYWuFyGxMXcUoaib2Qj0oPxPgDSZbf8PtH+XP2QjtNvhUiCPydpxiZww7i6Jln9eLhz3rJw/7mlpjbtUknHfyim72iT7QvsX+VG2W/x/MvRGmD2FuzDfVzgFll/mfyLnINPvBJsOuOzhIzrX/lrQDgCXjr81h721f5E/ZDtQ4FiCwL88AVl9f2z9f2k3JsdtggBWdvg1P88BlJ0NbVhSF++qQYVL0jiH/JyAd2OhG6aeZR18NOOQQ7EQFE1WH1vTy3FcxCsiGC60wKGDm8DFsN3Us3wUfALehByG70GR8Od30kzITu9wlEB6TVjewHZR5YKIPM8X5OIJxf1814GHcQSErBgacfqiPHtgNsIMteKVkCFGEmkogObKMaeHujbLv3Slqe05JAGSpxFUvPWA1YmUXNlqueFXD2SF326+sIjKnZTpkaLk4goDzZUf7UY4x5l1gDFDOF5GWsJuzTjkRRHN6Jn8PQVAYxXXIC95UNv6jCytBhZazV0F8GHPhBVHXPHEl5zkpSBFUaKlJGXpkE7pkm7pkV4xYiUgf1TlFNVto6Ow1IQImqEZZcuO9QL9v/LrnDOhjGCKP+hQgZ25MRadAVACMuTt7LSvnkd2fDOKTWmcoiswTJVGfRx6VpLZoy3zsn2SJ9U1js/JUL6o3CzPHbsWpPPWLeZZkS6rSZm2Y2imQjw2D+/1AAAAAA==) format("woff2");font-weight:400;font-style:normal;font-display:block}', pe = "hope-player-icon-font";
1746
- function Ct() {
1747
- if (typeof document > "u" || document.getElementById(pe)) return;
1766
+ const Lt = '@font-face{font-family:hope-icons;src:url(data:font/woff2;base64,d09GMgABAAAAAAuMAAsAAAAAIuAAAAs8AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACEegq1PK4ZATYCJANUCywABCAFhC4HggobTB4jESaVTgwydRbGzrR7EFKamp4EGD6+83WPOlVtFufKNoQP3FMw3+XD4QURPF85y/cFhm57sFsyDKE9ixwGQaUcQJ7ZIC+eQ8xnVOhGN8/3btY0zAxpnZKEriMToI4M0DphaJ13gQpdD9QMOzX/XVPOfcV/T/yaqq5tmHwMC1LiMW2M97StYfS0oH8OXi4E3rrH67vHaIoxiv5vLbUMRfxFY8K64ExmZwJ7cxtC3H3Z4wmC7KsikMCsgIVilHUVpsLGnRG+BsOtHVjBqsXBGhPUj7waBFAsZD3OLrsNDoOOU49i7NXwYEMF0upy6klW9QrzCLyK6kIBISd7TPlNbsMH2UWOB3YPX/k/VLkKHHwXdk4HHN81AV7PyHrl9fbrzJe/2aE7EfbuAD7gAjOKRcnF1Qnn4sb8TEgVL8FjD7p7D4Gst92GDB+rvSsQHFw8/Pl/8/IUKKLQlCjTQSdddNNDLwYkBxtcgltRaCDDBQQywIEMraPIAHiQAT5kQA4yIA8Z2kSRAShCBijIAA0ZUIIMKEMGdEAGdEIGdEEGdEMG9EAG9EIWgYG53XcDuAzUNaDHLMu7Exx8Y+LmFQ0Gny4D48WP8/C2nFvbdSu+yqveXpKqPK/CiEccUV4+iZ0pm2EUkqiKDXcd9PfPrB0YfnXh4qqKcW16GxGVhuMH0vYtGw6G4nLSKt1wP87cA1qLcsuOQt/4kLgbH1yC3vhqwo0fPBEd49tvjynxwTeL9NHc+M03BdRkMFrEDZxQ1HNsByFJ3d2k8dokTtujRGBuSgXmoZmNiDmoN5iwpLJ5J0Tr41F3pErSxE5r7YjXSQQscVd8q5terDHDs8Q8PgHLMj5LRBqlokk06lyJCkQ1ojKL8GTJbp+pRqUoUU3YINumkliJTsEUYbtUoiPRaLAIFK1z5cVTJ2ReUwR8/dQIb8cIaoW8a8qZCqJqhSxKWynJ4ylmWJAAS2N8Otkda/XeYRjsFyhj0rDRyoBBQSSChuwAMUpBS7oUr8QQgwZPTvyG6TaD70XE080iPLU+2UK0IxcuwsaqY13JWdvYED0erfTCAq89174mlFHPyjRL7uUwQdC6Trpcd+b0iOi29xiWL3InU0LkCsvsy6G9BA4lMzQOpQ8PBCjHTWhMMNGKKnOOoWJYhYrB2moLyoq2bngiCJQZM8R5IkifCJQ5goTQ5HlFwrAehhLUAupcD9ProQQUUUSfV2trx63V4WRIncdt+rjVIUUU0ecBYyrGYKuWLlNNAvfGvXUfXmTL52uuru/v7+ubca6k1O9vacwfGBgcXDDtrFSq1uzpaVl2zK5t1us1m8YES1N7ZGmJ1aCgJyYqtEUo6tqiYiGb1g02x7EmzTWBADFed7EHi/aCejQCJkJqXAo9F9IGgrPA18xCDZFjbGvRpqFhTCs+G8h5j++UWiY24kRj5t/5hLBemwd0qqZHf6ydh5oGW72xM1nxScV3a7RaScghJ5eiSkooPGUSol8PCjVLIA5YN0o9FVFaL3Y+a5idfc3M9VzXQ7dbJm7EYA4/tfK6bnB72X+HHeq71KJGf+n1/ua0g+3iSDY1Rn86/LDOC2c3NZeOeT1xWrvD+vlTXsJdzevs0NxhrrGpuSnhG3V7eG32QPcvb+iu61Tczs57l6Tb/uRmmtisNR96nzl3acMykuhQDOtjLCwhLIZZTFNjQ1RMTmDZxxKqFmU+GWGZhqOamghT+dB+JEnY6jEnjRraqlppEURabryN0YjkbUH5d5/AImVJfjkqY2Sn8jZJln/DPVimfaBMjqzXywJpN92LJHBqDKJ2REqL4L6B334DTt0UEimLqqpSfk+EBMoUVY0yKvz+b0YHUfpzE7MryTECgsHCr/9mtJFAPdD7v9agSRd4z9+LZRKKYRwLERmnLBt4vdmKpmEzFW2FXSB57eqpxzLFa9sNCvrqlNMDq31Vk3U1wsHWtoynt7uIK9EZc55RXHDa0dJjYzSKO25OG1+Hek2oHOjv57Gs4XctpvERXksqjMoi1kf0WCKUhRJaKpLSojFGBTvmr+cAB8u9BUbg1hXAO7Aei/KSJuspYpoeJuOkIrYLlMWixCYR2mwiYf3BSw8ZjtTv+eBg34Yj4zwZMPhOuCZsGzL8aKjs/qT2kxIV4efwKGow6iEEYWLzRoOq4vUKHTw74pnhoULdXpQQERAUSEixevMJnP54oFgsrgpQADMQgApOUbyMIFu4KKhCZ786rHvsvk9CtU2QTHrzETr4glMVFgNBBTRMx3JaVq71YATjOeUtwy4lF4erT6zOjdtleCvy6eMVAVuCALlfH9TIpauae+OT19779i7rrrfvvXYy3tu8qvR9zgffi6DDZnFfY3dda7EZqz7OfQ/05CSEdqvFkl5wJS1WzjSIrIvSmSB4uobXi8SjYDWTfWs2N+wjEBLfcG72lGQzKlY8RNTz4JudugpTpdutHXnbbDC80urqbLt8AtQFfs5ndVAZKvG4dK58zsDBNQ1Go8Uc/OTutMVoxA2rONFF39W5PCVDyuRs2WuBXMG3y6Zjca/1GGTSjrjdlQ2MdkXHf5KKh5DeEejunpjIZlJXXZXKZCcmursDjjzP8+4T+H8zL4jbQvuber5I5Ml85vxv6XXvC47pY+lz/LbI2svPdN2d//zIoTcnCh+LNDz218iT+SNd2CAk+oTTbnLNazuv99/CbMJRi8GGbIZhv8KZC8QlZLRwXAz87zmSf3Lkr8caIo8VTrx56Mjn+bu7zly+j2zjz6WPTTte8L4ubT4/M0/yiS96mvaHtokLufN60kEjqHR+g7ExRfM7IWiudeCmQrPCWcBwZQUzp0QpU+HkGOg8inUOqzXjcj515Lrrg/6cucK25SQU3kFzLui//rojar0rY7U6dLh4loZn51vrSkrq1shzN9OPLGN91Zvqvls6z84Oo0yEBNtZp3kFkJ6SwcnBdKYgrNSuHe88dNFFs6G/v7W2toT5+UGt6e9mbvZ60UNPvT8av1N1VnFclVO9Mz76fuNVHAU4jc5yTJ6PGofMXTW3tPSjw9Lxehm0nEUHpfeQrm/inU5vLd4EcHxjvCusBINKuCv+sr3XjiH0epKpwtHCVNLjhRCXb9LrY9BEWIpPMWJKS4Sl+TQjlYWuFyGxMXcUoaib2Qj0oPxPgDSZbf8PtH+XP2QjtNvhUiCPydpxiZww7i6Jln9eLhz3rJw/7mlpjbtUknHfyim72iT7QvsX+VG2W/x/MvRGmD2FuzDfVzgFll/mfyLnINPvBJsOuOzhIzrX/lrQDgCXjr81h721f5E/ZDtQ4FiCwL88AVl9f2z9f2k3JsdtggBWdvg1P88BlJ0NbVhSF++qQYVL0jiH/JyAd2OhG6aeZR18NOOQQ7EQFE1WH1vTy3FcxCsiGC60wKGDm8DFsN3Us3wUfALehByG70GR8Od30kzITu9wlEB6TVjewHZR5YKIPM8X5OIJxf1814GHcQSErBgacfqiPHtgNsIMteKVkCFGEmkogObKMaeHujbLv3Slqe05JAGSpxFUvPWA1YmUXNlqueFXD2SF326+sIjKnZTpkaLk4goDzZUf7UY4x5l1gDFDOF5GWsJuzTjkRRHN6Jn8PQVAYxXXIC95UNv6jCytBhZazV0F8GHPhBVHXPHEl5zkpSBFUaKlJGXpkE7pkm7pkV4xYiUgf1TlFNVto6Ow1IQImqEZZcuO9QL9v/LrnDOhjGCKP+hQgZ25MRadAVACMuTt7LSvnkd2fDOKTWmcoiswTJVGfRx6VpLZoy3zsn2SJ9U1js/JUL6o3CzPHbsWpPPWLeZZkS6rSZm2Y2imQjw2D+/1AAAAAA==) format("woff2");font-weight:400;font-style:normal;font-display:block}', me = "hope-player-icon-font";
1767
+ function Pt() {
1768
+ if (typeof document > "u" || document.getElementById(me)) return;
1748
1769
  const n = document.createElement("style");
1749
- n.id = pe, n.textContent = Et, document.head.appendChild(n);
1770
+ n.id = me, n.textContent = Lt, document.head.appendChild(n);
1750
1771
  }
1751
- function Tt() {
1772
+ function Mt() {
1752
1773
  var i;
1753
1774
  const t = (i = window.adTaxonomy) == null ? void 0 : i.keyValues;
1754
1775
  if (!t || typeof t != "object") return "";
1755
1776
  const e = [];
1756
- for (const [s, o] of Object.entries(t))
1757
- o == null || o === "" || e.push(`${s}=${o}`);
1777
+ for (const [r, o] of Object.entries(t))
1778
+ o == null || o === "" || e.push(`${r}=${o}`);
1758
1779
  return e.join("&");
1759
1780
  }
1760
- function G(n, t = {}) {
1761
- const e = encodeURIComponent(document.referrer || window.location.href), i = encodeURIComponent(window.location.href), s = Date.now();
1781
+ function U(n, t = {}) {
1782
+ const e = encodeURIComponent(document.referrer || window.location.href), i = encodeURIComponent(window.location.href), r = Date.now();
1762
1783
  let o = n;
1763
1784
  const a = {
1764
1785
  referrer_url: e,
1765
1786
  description_url: i,
1766
- timestamp: s
1787
+ timestamp: r
1767
1788
  };
1768
1789
  for (const [l, h] of Object.entries(a)) {
1769
1790
  const c = `[${l}]`;
@@ -1779,17 +1800,37 @@ function G(n, t = {}) {
1779
1800
  if (l.pathname.includes("/vmap/")) return n;
1780
1801
  const c = [];
1781
1802
  t.includeRefreshCount && c.push(`adrefreshCount=${t.adRefreshCount ?? 0}`);
1782
- const p = Tt();
1803
+ const p = Mt();
1783
1804
  if (p && c.push(p), c.length) {
1784
- const g = l.searchParams.get("cust_params");
1785
- l.searchParams.set("cust_params", g ? `${g}&${c.join("&")}` : c.join("&"));
1805
+ const m = l.searchParams.get("cust_params");
1806
+ l.searchParams.set("cust_params", m ? `${m}&${c.join("&")}` : c.join("&"));
1786
1807
  }
1787
1808
  return l.toString();
1788
1809
  } catch {
1789
1810
  return o;
1790
1811
  }
1791
1812
  }
1792
- const Te = {
1813
+ function j(n) {
1814
+ const t = {};
1815
+ if (!n) return t;
1816
+ const e = typeof n == "string" ? [...new URLSearchParams(n.trim().replace(/^\?/, "")).entries()].map(([i, r]) => [i, r.split(",")]) : Object.entries(n);
1817
+ for (const [i, r] of e) {
1818
+ const o = (Array.isArray(r) ? r : [r]).filter((a) => a != null && a !== "").map(String);
1819
+ i && o.length && (t[i] = o);
1820
+ }
1821
+ return t;
1822
+ }
1823
+ function Bt(n, t) {
1824
+ const e = Object.entries(j(t)).filter(([i]) => !i.startsWith("hb_")).map(([i, r]) => `${encodeURIComponent(i)}=${r.map(encodeURIComponent).join(",")}`);
1825
+ if (!e.length) return n;
1826
+ try {
1827
+ const i = new URL(n), r = new Set(e.map((a) => a.slice(0, a.indexOf("=")))), o = (i.searchParams.get("cust_params") ?? "").split("&").filter((a) => a && !r.has(a.split("=")[0]));
1828
+ return i.searchParams.set("cust_params", [...o, ...e].join("&")), i.toString();
1829
+ } catch {
1830
+ return n;
1831
+ }
1832
+ }
1833
+ const Pe = {
1793
1834
  play: "Oynat",
1794
1835
  pause: "Duraklat",
1795
1836
  mute: "Sessize al",
@@ -1878,6 +1919,8 @@ const Te = {
1878
1919
  redirectPlayNow: "Şimdi Oynat",
1879
1920
  redirectCountdown: (n) => `Sıradaki video ${n} saniye içinde oynatılacak.`,
1880
1921
  redirectNowPlaying: "Video oynatılıyor...",
1922
+ redirectUpNext: "Sıradaki",
1923
+ redirectCancelCard: "Sıradakini iptal et",
1881
1924
  qrResumeTitle: "Devam etmek için kodu telefonunuzla okutun",
1882
1925
  qrResumeDontShowAgain: "Bir daha gösterme",
1883
1926
  qrResumeContinue: "Devam Et",
@@ -1907,7 +1950,7 @@ const Te = {
1907
1950
  liveClock: "Canlı saat",
1908
1951
  live: "CANLI",
1909
1952
  goToLive: "Canlıya git"
1910
- }, St = {
1953
+ }, Rt = {
1911
1954
  play: "Play",
1912
1955
  pause: "Pause",
1913
1956
  mute: "Mute",
@@ -1995,6 +2038,8 @@ const Te = {
1995
2038
  redirectCancel: "Cancel",
1996
2039
  redirectPlayNow: "Play now",
1997
2040
  redirectCountdown: (n) => `Next video will play in ${n} seconds.`,
2041
+ redirectUpNext: "Up next",
2042
+ redirectCancelCard: "Cancel up next",
1998
2043
  redirectNowPlaying: "Now playing...",
1999
2044
  qrResumeTitle: "Scan to continue watching on your phone",
2000
2045
  qrResumeDontShowAgain: "Don't show again",
@@ -2025,38 +2070,38 @@ const Te = {
2025
2070
  liveClock: "Live clock",
2026
2071
  live: "LIVE",
2027
2072
  goToLive: "Go to live"
2028
- }, At = { tr: Te, en: St };
2029
- function Se(n, t) {
2030
- return { ...At[n ?? "tr"] ?? Te, ...t };
2073
+ }, zt = { tr: Pe, en: Rt };
2074
+ function Me(n, t) {
2075
+ return { ...zt[n ?? "tr"] ?? Pe, ...t };
2031
2076
  }
2032
- function Lt(n, t, e) {
2033
- Object.assign(n, Se(t, e));
2077
+ function Ot(n, t, e) {
2078
+ Object.assign(n, Me(t, e));
2034
2079
  }
2035
- const U = 8e3;
2036
- function Pt(n) {
2080
+ const $ = 8e3;
2081
+ function Nt(n) {
2037
2082
  var t;
2038
2083
  return (t = n.live) != null && t.scte35 && !n.adTagPreroll && !n.adTagVmap ? !1 : !!(n.adTagPreroll || n.adTagVmap);
2039
2084
  }
2040
- class Mt {
2085
+ class It {
2041
2086
  constructor(t) {
2042
2087
  /** Kapı kurulu (preroll bekleniyor) mu. */
2043
- r(this, "armed", !1);
2088
+ s(this, "armed", !1);
2044
2089
  /** Kapı kuruluyken kullanıcı / autoplay oynatmak istedi mi. */
2045
- r(this, "playIntent", !1);
2090
+ s(this, "playIntent", !1);
2046
2091
  /** Kapının kendi pause() çağrısının ürettiği 'pause' olayı yutulsun. */
2047
- r(this, "swallowNextPause", !1);
2048
- r(this, "timeoutMs", U);
2049
- r(this, "timer", null);
2092
+ s(this, "swallowNextPause", !1);
2093
+ s(this, "timeoutMs", $);
2094
+ s(this, "timer", null);
2050
2095
  /** İlk oynatma isteği (reklam plugin'i bekleyen preroll'u başlatır). */
2051
- r(this, "onPlayIntent", null);
2096
+ s(this, "onPlayIntent", null);
2052
2097
  /** Zaman aşımı — reklam plugin'i geç gelecek cevabı iptal eder. Kapı bundan sonra içeriği başlatarak açılır. */
2053
- r(this, "onTimeout", null);
2098
+ s(this, "onTimeout", null);
2054
2099
  /** "Preroll bekleniyor" durumu değişti (UI: yükleme halkası, merkez buton). */
2055
- r(this, "onWaitChange", null);
2056
- r(this, "onPlay", (t) => {
2100
+ s(this, "onWaitChange", null);
2101
+ s(this, "onPlay", (t) => {
2057
2102
  this.armed && (t.stopImmediatePropagation(), this.swallowNextPause = !0, this.video.pause(), this.registerIntent());
2058
2103
  });
2059
- r(this, "onPause", (t) => {
2104
+ s(this, "onPause", (t) => {
2060
2105
  this.swallowNextPause && (this.swallowNextPause = !1, t.stopImmediatePropagation());
2061
2106
  });
2062
2107
  this.video = t, t.addEventListener("play", this.onPlay), t.addEventListener("pause", this.onPause);
@@ -2071,7 +2116,7 @@ class Mt {
2071
2116
  get hasPlayIntent() {
2072
2117
  return this.playIntent;
2073
2118
  }
2074
- arm(t = U) {
2119
+ arm(t = $) {
2075
2120
  this.clearTimer(), this.armed = !0, this.playIntent = !1, this.timeoutMs = t;
2076
2121
  }
2077
2122
  /**
@@ -2108,24 +2153,24 @@ class Mt {
2108
2153
  this.timer && clearTimeout(this.timer), this.timer = null;
2109
2154
  }
2110
2155
  }
2111
- const Bt = [
2156
+ const Ft = [
2112
2157
  "https://imasdk.googleapis.com",
2113
2158
  "https://pubads.g.doubleclick.net",
2114
2159
  "https://securepubads.g.doubleclick.net",
2115
2160
  "https://pagead2.googlesyndication.com"
2116
2161
  ];
2117
- let de = !1;
2118
- function Rt() {
2119
- if (!(de || typeof document > "u")) {
2120
- de = !0;
2121
- for (const n of Bt) {
2162
+ let ge = !1;
2163
+ function Dt() {
2164
+ if (!(ge || typeof document > "u")) {
2165
+ ge = !0;
2166
+ for (const n of Ft) {
2122
2167
  if (document.head.querySelector(`link[rel="preconnect"][href="${n}"]`)) continue;
2123
2168
  const t = document.createElement("link");
2124
2169
  t.rel = "preconnect", t.href = n, document.head.appendChild(t);
2125
2170
  }
2126
2171
  }
2127
2172
  }
2128
- const zt = [0.5, 0.75, 1, 1.25, 1.5, 2], ce = 1200, Ot = 3e3, ue = 5e3, Nt = 10, ge = 10, It = 5, me = "stream-audio", N = "1.0.16", Ft = {
2173
+ const Ht = [0.5, 0.75, 1, 1.25, 1.5, 2], fe = 1200, Gt = 3e3, be = 5e3, Vt = 10, ve = 10, Ut = 5, ye = "stream-audio", I = "1.0.18", _t = {
2129
2174
  hls: "application/x-mpegurl",
2130
2175
  mp4: "video/mp4",
2131
2176
  webm: "video/webm",
@@ -2135,7 +2180,7 @@ const zt = [0.5, 0.75, 1, 1.25, 1.5, 2], ce = 1200, Ot = 3e3, ue = 5e3, Nt = 10,
2135
2180
  ogg: "audio/ogg",
2136
2181
  wav: "audio/wav",
2137
2182
  flac: "audio/flac"
2138
- }, Dt = (
2183
+ }, qt = (
2139
2184
  /* html */
2140
2185
  `
2141
2186
  <div class="video-area">
@@ -2146,223 +2191,225 @@ const zt = [0.5, 0.75, 1, 1.25, 1.5, 2], ce = 1200, Ot = 3e3, ue = 5e3, Nt = 10,
2146
2191
  </div>
2147
2192
  `
2148
2193
  );
2149
- function Ht(n) {
2194
+ function jt(n) {
2150
2195
  if (typeof n == "number") return Number.isFinite(n) && n > 0 ? String(n) : null;
2151
2196
  if (typeof n != "string") return null;
2152
2197
  const t = n.trim().match(/^(\d+(?:\.\d+)?)\s*(?:[:/]\s*(\d+(?:\.\d+)?))?$/);
2153
2198
  return !t || Number(t[1]) <= 0 || t[2] !== void 0 && Number(t[2]) <= 0 ? null : t[2] !== void 0 ? `${t[1]} / ${t[2]}` : t[1];
2154
2199
  }
2155
- class Ae extends HTMLElement {
2200
+ class Be extends HTMLElement {
2156
2201
  constructor() {
2157
2202
  super();
2158
- r(this, "root");
2159
- r(this, "videoArea");
2160
- r(this, "videoEl");
2161
- r(this, "adLayerEl");
2162
- r(this, "chromeEl");
2163
- r(this, "centerPlayButton");
2164
- r(this, "captionRenderer");
2203
+ s(this, "root");
2204
+ s(this, "videoArea");
2205
+ s(this, "videoEl");
2206
+ s(this, "adLayerEl");
2207
+ s(this, "chromeEl");
2208
+ s(this, "centerPlayButton");
2209
+ s(this, "captionRenderer");
2165
2210
  /** options.miniProgress açıkken kurulur. */
2166
- r(this, "miniProgress", null);
2167
- r(this, "chromeVisible", !0);
2168
- r(this, "sourceManager");
2169
- r(this, "controlBar");
2170
- r(this, "tooltip");
2171
- r(this, "keyboard");
2172
- r(this, "loadingSpinner");
2211
+ s(this, "miniProgress", null);
2212
+ s(this, "chromeVisible", !0);
2213
+ s(this, "sourceManager");
2214
+ s(this, "controlBar");
2215
+ s(this, "tooltip");
2216
+ s(this, "keyboard");
2217
+ s(this, "loadingSpinner");
2173
2218
  /**
2174
2219
  * Preroll kapısı — reklam plugin'i yüklenmeden önce kurulur ki autoplay / ilk play araya kaçmasın.
2175
2220
  * Video'nun 'play'/'pause' dinleyicilerinin İLKİ olmalı (yuttuğu olayları UI ve hp:play görmesin).
2176
2221
  */
2177
- r(this, "prerollGate");
2222
+ s(this, "prerollGate");
2178
2223
  /** Ads plugin kurulumu sürüyor — erken başlatılan kurulum ile sonraki bekleme aynı promise'i paylaşır. */
2179
- r(this, "adsInstall", null);
2224
+ s(this, "adsInstall", null);
2180
2225
  /** Yükleme halkası açık (medya takıldı / preroll bekleniyor) — kontroller bu sırada otomatik gizlenmez. */
2181
- r(this, "loadingActive", !1);
2182
- r(this, "errorScreen");
2226
+ s(this, "loadingActive", !1);
2227
+ s(this, "errorScreen");
2183
2228
  /** İleri/geri sarmada sağda/solda beliren anlık bildirim. */
2184
- r(this, "seekFeedback");
2185
- r(this, "contextMenu");
2229
+ s(this, "seekFeedback");
2230
+ s(this, "contextMenu");
2186
2231
  /** options.contextMenu çözülmüş hali — null = kapalı (tarayıcının kendi menüsü). */
2187
- r(this, "contextMenuConfig", { stats: !1 });
2232
+ s(this, "contextMenuConfig", { stats: !1 });
2188
2233
  /** İlk açılışta yüklenir (plugins/stats). */
2189
- r(this, "statsPanel", null);
2190
- r(this, "debugPanel", null);
2234
+ s(this, "statsPanel", null);
2235
+ s(this, "debugPanel", null);
2191
2236
  /** options.debug — sağ tık menüsündeki "Hata ayıklama" girişini açar. */
2192
- r(this, "debugEnabled", !1);
2237
+ s(this, "debugEnabled", !1);
2193
2238
  /** Player'ın tüm hataları (medya, yayın, reklam, altyazı) — her zaman tutulur; bkz. `errorLog`. */
2194
- r(this, "log", new wt());
2239
+ s(this, "log", new At());
2195
2240
  /** Son basılan işaretçi türü — sağ tık menüsü yalnızca fareyle (dokunmatikte uzun basma gesture'a ait). */
2196
- r(this, "lastPointerType", "mouse");
2241
+ s(this, "lastPointerType", "mouse");
2197
2242
  /** options.tapGestures kuruluysa (plugins/tap-gestures). */
2198
- r(this, "tapGestures", null);
2243
+ s(this, "tapGestures", null);
2199
2244
  /** Dokunmadan sonra tarayıcının ürettiği uyumluluk mouse olayları ikinci bir dokunuş sayılmasın. */
2200
- r(this, "lastTouchEndAt", 0);
2245
+ s(this, "lastTouchEndAt", 0);
2201
2246
  /** Video alanı boyutu değişince merkez play butonunun yerini yeniden hesaplar. */
2202
- r(this, "centerPlayObserver", null);
2203
- r(this, "tapToPlay", "auto");
2204
- r(this, "adsController", null);
2205
- r(this, "gestureControls", null);
2206
- r(this, "loopSection", null);
2207
- r(this, "audioStage", null);
2247
+ s(this, "centerPlayObserver", null);
2248
+ s(this, "tapToPlay", "auto");
2249
+ s(this, "adsController", null);
2250
+ s(this, "gestureControls", null);
2251
+ s(this, "loopSection", null);
2252
+ s(this, "audioStage", null);
2208
2253
  /** Kalite kilidi (rewardedUnlock eklentisi) — kilitliyse yüksek kaliteler menüde kilitli, HLS'te üst sınır var. */
2209
- r(this, "qualityGate", null);
2210
- r(this, "rewardedUnlock", null);
2211
- r(this, "sponsorship", null);
2254
+ s(this, "qualityGate", null);
2255
+ s(this, "rewardedUnlock", null);
2256
+ s(this, "sponsorship", null);
2212
2257
  /** Son uygulanan MP4 kaynak listesi ve seçili etiket — kilit açılınca menü yeniden kurulur. */
2213
2258
  /** Çalan biçim grubunun kaynakları (kalite menüsü bunlar) — bkz. `sourceGroups`. */
2214
- r(this, "currentSources", []);
2259
+ s(this, "currentSources", []);
2215
2260
  /** `sources` biçime göre gruplu, `sourcePriority` sırasıyla; ölümcül hatada sıradakine geçilir. */
2216
- r(this, "sourceGroups", []);
2217
- r(this, "activeGroup", 0);
2261
+ s(this, "sourceGroups", []);
2262
+ s(this, "activeGroup", 0);
2218
2263
  /** Sıradaki gruba geçiş başladı — aynı arızanın ikinci hata olayı hata ekranı açmasın. */
2219
- r(this, "fallbackPending", !1);
2264
+ s(this, "fallbackPending", !1);
2220
2265
  /** hls.js ölümcül hatasının MediaError karşılığı (video.error oluşmaz) — hp:sourcefallback detayı için. */
2221
- r(this, "streamErrorCode");
2222
- r(this, "activeSourceLabel", "");
2223
- r(this, "lastHlsLevels", []);
2224
- r(this, "lastHlsActive", -1);
2266
+ s(this, "streamErrorCode");
2267
+ s(this, "activeSourceLabel", "");
2268
+ s(this, "lastHlsLevels", []);
2269
+ s(this, "lastHlsActive", -1);
2225
2270
  /** options.audio — kapak + plak sahnesi, kontroller hep görünür, tam ekran yok. */
2226
- r(this, "audioMode", !1);
2227
- r(this, "inViewAutoplay", null);
2228
- r(this, "unregisterSticky", null);
2229
- r(this, "playlistRunner", null);
2230
- r(this, "hopeStory", null);
2231
- r(this, "markProgress", null);
2232
- r(this, "segments", null);
2233
- r(this, "spriteThumbnails", null);
2234
- r(this, "countdownScreen", null);
2235
- r(this, "geoChecker", null);
2236
- r(this, "redirectScreen", null);
2237
- r(this, "qrResume", null);
2238
- r(this, "pauseAd", null);
2239
- r(this, "adTriggers", null);
2240
- r(this, "castController", null);
2271
+ s(this, "audioMode", !1);
2272
+ s(this, "inViewAutoplay", null);
2273
+ s(this, "unregisterSticky", null);
2274
+ s(this, "playlistRunner", null);
2275
+ s(this, "hopeStory", null);
2276
+ s(this, "markProgress", null);
2277
+ s(this, "segments", null);
2278
+ s(this, "spriteThumbnails", null);
2279
+ s(this, "countdownScreen", null);
2280
+ s(this, "geoChecker", null);
2281
+ s(this, "redirectScreen", null);
2282
+ s(this, "redirectKey", "");
2283
+ s(this, "qrResume", null);
2284
+ s(this, "pauseAd", null);
2285
+ s(this, "adTriggers", null);
2286
+ s(this, "castController", null);
2241
2287
  /** İçerik Chromecast'te oynuyor (player kumanda) — yerel reklam / otomatik oynatma devre dışı. */
2242
- r(this, "casting", !1);
2243
- r(this, "dubbing", null);
2244
- r(this, "liveWallClock", null);
2245
- r(this, "daiController", null);
2246
- r(this, "instanceKey");
2247
- r(this, "subtitleTracks", []);
2288
+ s(this, "casting", !1);
2289
+ s(this, "dubbing", null);
2290
+ s(this, "liveWallClock", null);
2291
+ s(this, "daiController", null);
2292
+ s(this, "instanceKey");
2293
+ s(this, "subtitleTracks", []);
2248
2294
  /** Altyazı seçiminin tek giriş noktası — iOS native tam ekrandan dönüşte de kullanılır. */
2249
- r(this, "selectCaption", null);
2295
+ s(this, "selectCaption", null);
2250
2296
  /** `applyOptions()`'ta aktif bir altyazı track'i seçiliyken `true` — dil değişince Boyut/Konum görünümünü tazelemek için. */
2251
- r(this, "captionTrackActive", !1);
2297
+ s(this, "captionTrackActive", !1);
2252
2298
  /** `options.subtitles` izleri. */
2253
- r(this, "optionTracks", []);
2299
+ s(this, "optionTracks", []);
2254
2300
  /** Yayının izleri: hls.js'ten (havuzda, `sub:`/`cc:`) ya da tarayıcının native HLS in-band izleri (`native:`). */
2255
- r(this, "streamTracks", []);
2301
+ s(this, "streamTracks", []);
2256
2302
  /** hls.js aynı cue'yu (seek sonrası) yeniden gönderebilir — iz başına eklenenler. */
2257
- r(this, "streamCueKeys", /* @__PURE__ */ new Map());
2303
+ s(this, "streamCueKeys", /* @__PURE__ */ new Map());
2258
2304
  /** Seçili altyazı — yayın izleri sonradan gelince seçim korunur. */
2259
- r(this, "activeCaptionLabel", null);
2260
- r(this, "streamAudio", { tracks: [], active: -1 });
2305
+ s(this, "activeCaptionLabel", null);
2306
+ s(this, "streamAudio", { tracks: [], active: -1 });
2261
2307
  /**
2262
2308
  * countdownScreen varken gerçek init (kaynak + içerik plugin'leri) ertelenir; en güncel options snapshot'ı.
2263
2309
  * onComplete kaydı tek sefer yapılır (bkz. playbackInitRegistered) — init birden fazla kez tetiklenmesin.
2264
2310
  */
2265
- r(this, "pendingPlaybackOptions", null);
2266
- r(this, "playbackInitRegistered", !1);
2311
+ s(this, "pendingPlaybackOptions", null);
2312
+ s(this, "playbackInitRegistered", !1);
2267
2313
  /**
2268
2314
  * countdownScreen gibi alanlar yalnızca .options ile gelir. connectedCallback'teki ilk (options'suz) geçiş chrome'u
2269
2315
  * bir an açıp player'ı gösteriyordu; 'boot' bloklayıcısı gerçek options gelene kadar bekletir.
2270
2316
  */
2271
- r(this, "bootResolved", !1);
2272
- r(this, "bootGraceTimer", null);
2317
+ s(this, "bootResolved", !1);
2318
+ s(this, "bootGraceTimer", null);
2273
2319
  /**
2274
2320
  * Son uygulanan `.options` nesnesi + attribute'lar. `.options` element sayfaya eklenmeden önce verilince
2275
2321
  * connectedCallback AYNI seçenekleri yeniden uyguluyordu; değişen bir şey yoksa bu ikinci geçiş atlanır.
2276
2322
  */
2277
- r(this, "lastSynced", null);
2323
+ s(this, "lastSynced", null);
2278
2324
  /**
2279
2325
  * applyOptions'ın asenkron kısmı (plugin kurulumu + kaynak yükleme) aynı anda tek kez çalışır. İki geçiş
2280
2326
  * üst üste binince `!this.adsController` gibi kontroller ikisinde de geçiyor, plugin (ör. IMA) iki kez kuruluyordu.
2281
2327
  * Çalışırken gelen seçenekler bekletilir; bitince yalnızca en sonuncusu uygulanır.
2282
2328
  */
2283
- r(this, "pluginApplyRun", null);
2284
- r(this, "pendingPluginOptions", null);
2285
- r(this, "_options", {});
2286
- r(this, "hideTimer", null);
2287
- r(this, "cursorTimer", null);
2329
+ s(this, "pluginApplyRun", null);
2330
+ s(this, "pendingPluginOptions", null);
2331
+ s(this, "_options", {});
2332
+ s(this, "hideTimer", null);
2333
+ s(this, "cursorTimer", null);
2288
2334
  /** null = imleç hiç gizlenmez (options.cursorHideDelayMs: false). */
2289
- r(this, "cursorHideDelayMs", ue);
2335
+ s(this, "cursorHideDelayMs", be);
2290
2336
  /** Fare kontrollerin (buton/seek bar) üzerinde mi — üzerindeyken otomatik gizlenmez; videonun üstünde hareketsizse gizlenir. */
2291
- r(this, "pointerOverControls", !1);
2337
+ s(this, "pointerOverControls", !1);
2292
2338
  /** Kalite menüsünde şu an HLS seviyeleri mi var (kaynak değişince temizlemek için). */
2293
- r(this, "hlsQualitiesShown", !1);
2339
+ s(this, "hlsQualitiesShown", !1);
2294
2340
  /** Son uygulanan options.showRemainingTime — bkz. applyOptions. */
2295
- r(this, "appliedShowRemaining");
2296
- r(this, "autoHideDelayMs", ce);
2297
- r(this, "tapCandidate", !1);
2298
- r(this, "tapStartX", 0);
2299
- r(this, "tapStartY", 0);
2341
+ s(this, "appliedShowRemaining");
2342
+ s(this, "autoHideDelayMs", fe);
2343
+ s(this, "tapCandidate", !1);
2344
+ s(this, "tapStartX", 0);
2345
+ s(this, "tapStartY", 0);
2300
2346
  /** Tüm UI'ın paylaştığı tek, mutable sözlük — dil değişince referans değil alanlar güncellenir. */
2301
- r(this, "i18n", Se("tr"));
2347
+ s(this, "i18n", Me("tr"));
2302
2348
  /** IMA SDK'nın kendi ad-UI dili (skip butonu/sayaç metni) de aynı dili takip etsin diye — bkz. plugins/ads/AdsController. */
2303
- r(this, "localeCode", "tr");
2304
- r(this, "onMediaError", () => {
2349
+ s(this, "localeCode", "tr");
2350
+ s(this, "onMediaError", () => {
2305
2351
  const e = this.videoEl.error;
2306
2352
  if (!e) return;
2307
- const i = { 1: "MEDIA_ERR_ABORTED", 2: "MEDIA_ERR_NETWORK", 3: "MEDIA_ERR_DECODE", 4: "MEDIA_ERR_SRC_NOT_SUPPORTED" }, s = this.videoEl.currentSrc;
2353
+ const i = { 1: "MEDIA_ERR_ABORTED", 2: "MEDIA_ERR_NETWORK", 3: "MEDIA_ERR_DECODE", 4: "MEDIA_ERR_SRC_NOT_SUPPORTED" }, r = this.videoEl.currentSrc;
2308
2354
  this.log.add({
2309
2355
  source: "media",
2310
2356
  message: e.message || i[e.code] || `MediaError ${e.code}`,
2311
- fatal: !0,
2312
- details: { code: e.code, name: i[e.code], src: s && !s.startsWith("blob:") ? s : s ? "MediaSource (hls.js)" : void 0 }
2357
+ // Ses aygıtı yok (Firefox): video sessiz oynamaya devam ediyor — kayda düşer ama ölümcül değil.
2358
+ fatal: !K(e),
2359
+ details: { code: e.code, name: i[e.code], src: r && !r.startsWith("blob:") ? r : r ? "MediaSource (hls.js)" : void 0 }
2313
2360
  });
2314
2361
  });
2315
- r(this, "onSubtitleError", (e) => {
2362
+ s(this, "onSubtitleError", (e) => {
2316
2363
  const i = e.detail;
2317
2364
  this.log.add({ source: "subtitles", message: `Subtitle file could not be loaded: ${i.message}`, details: { src: i.src } });
2318
2365
  });
2319
- r(this, "onPointerTypeTrack", (e) => {
2366
+ s(this, "onPointerTypeTrack", (e) => {
2320
2367
  this.lastPointerType = e.pointerType;
2321
2368
  });
2322
2369
  /** Sağ tık: tarayıcı menüsü yerine player adı + sürüm (options.contextMenu). */
2323
- r(this, "onContextMenu", (e) => {
2370
+ s(this, "onContextMenu", (e) => {
2324
2371
  const i = this.contextMenuConfig;
2325
2372
  !i || this.lastPointerType !== "mouse" || (e.preventDefault(), this.contextMenu.show(e.clientX, e.clientY, [
2326
- { label: "HopeCorePlayer", meta: `v${N}` },
2373
+ { label: "HopeCorePlayer", meta: `v${I}` },
2327
2374
  ...i.stats ? [{ label: this.i18n.statsTitle, onSelect: () => void this.toggleStats(!0) }] : [],
2328
2375
  // Yalnızca debug açıkken ve kayıtlı bir hata varsa.
2329
2376
  ...this.debugEnabled && this.log.entries.length ? [{ label: this.i18n.debugTitle, meta: String(this.log.entries.length), onSelect: () => void this.showDebugLog() }] : []
2330
2377
  ]));
2331
2378
  });
2332
- r(this, "onStreamTextTracks", (e) => {
2333
- const i = this.streamTracks.filter((s) => s.id.startsWith("native:"));
2379
+ s(this, "onStreamTextTracks", (e) => {
2380
+ const i = this.streamTracks.filter((r) => r.id.startsWith("native:"));
2334
2381
  if (!e.length)
2335
- ke(this.videoEl, "stream"), this.streamCueKeys.clear(), this.streamTracks = i;
2382
+ Te(this.videoEl, "stream"), this.streamCueKeys.clear(), this.streamTracks = i;
2336
2383
  else {
2337
- const s = new Set([...this.optionTracks, ...i].map((o) => o.label));
2384
+ const r = new Set([...this.optionTracks, ...i].map((o) => o.label));
2338
2385
  this.streamTracks = [
2339
2386
  ...i,
2340
2387
  ...e.map((o) => {
2341
- const a = this.uniqueLabel(this.streamTrackLabel(o.label, o.lang) || o.id, o.kind === "captions" ? "CC" : o.lang || o.kind, s);
2342
- return { id: o.id, label: a, track: xe(this.videoEl, "stream", o.kind, a, o.lang) };
2388
+ const a = this.uniqueLabel(this.streamTrackLabel(o.label, o.lang) || o.id, o.kind === "captions" ? "CC" : o.lang || o.kind, r);
2389
+ return { id: o.id, label: a, track: Ce(this.videoEl, "stream", o.kind, a, o.lang) };
2343
2390
  })
2344
2391
  ];
2345
2392
  }
2346
2393
  this.rebuildCaptions(this.activeCaptionLabel);
2347
2394
  });
2348
- r(this, "onStreamCues", (e, i) => {
2395
+ s(this, "onStreamCues", (e, i) => {
2349
2396
  var a;
2350
- const s = (a = this.streamTracks.find((l) => l.id === e)) == null ? void 0 : a.track;
2351
- if (!s) return;
2352
- let o = this.streamCueKeys.get(s);
2353
- o || this.streamCueKeys.set(s, o = /* @__PURE__ */ new Set());
2397
+ const r = (a = this.streamTracks.find((l) => l.id === e)) == null ? void 0 : a.track;
2398
+ if (!r) return;
2399
+ let o = this.streamCueKeys.get(r);
2400
+ o || this.streamCueKeys.set(r, o = /* @__PURE__ */ new Set());
2354
2401
  for (const l of i) {
2355
2402
  const h = `${l.startTime}|${l.endTime}|${l.text}`;
2356
- o.has(h) || (o.add(h), s.addCue(l));
2403
+ o.has(h) || (o.add(h), r.addCue(l));
2357
2404
  }
2358
2405
  });
2359
2406
  /** Tarayıcının kendi (native HLS) altyazı izleri — bizim havuz izlerimiz ve metadata izleri hariç. */
2360
- r(this, "onNativeTextTracksChanged", () => {
2361
- const e = Array.from(this.videoEl.textTracks).filter((a) => (a.kind === "subtitles" || a.kind === "captions") && !et(a)), i = this.streamTracks.some((a) => a.id.startsWith("native:"));
2407
+ s(this, "onNativeTextTracksChanged", () => {
2408
+ const e = Array.from(this.videoEl.textTracks).filter((a) => (a.kind === "subtitles" || a.kind === "captions") && !ot(a)), i = this.streamTracks.some((a) => a.id.startsWith("native:"));
2362
2409
  if (!e.length && !i) return;
2363
- const s = this.streamTracks.filter((a) => !a.id.startsWith("native:")), o = new Set([...this.optionTracks, ...s].map((a) => a.label));
2410
+ const r = this.streamTracks.filter((a) => !a.id.startsWith("native:")), o = new Set([...this.optionTracks, ...r].map((a) => a.label));
2364
2411
  this.streamTracks = [
2365
- ...s,
2412
+ ...r,
2366
2413
  ...e.map((a, l) => ({
2367
2414
  id: `native:${l}`,
2368
2415
  label: this.uniqueLabel(a.label || a.language || `${this.i18n.captions} ${l + 1}`, a.language || String(l + 1), o),
@@ -2371,23 +2418,23 @@ class Ae extends HTMLElement {
2371
2418
  ], this.rebuildCaptions(this.activeCaptionLabel);
2372
2419
  });
2373
2420
  /** Yayında birden fazla ses izi varsa ayarlarda "Ses" alt menüsü (HLS alternatif ses / Safari audioTracks). */
2374
- r(this, "onStreamAudioTracks", (e, i) => {
2421
+ s(this, "onStreamAudioTracks", (e, i) => {
2375
2422
  this.streamAudio = { tracks: e, active: i };
2376
- const s = this.controlBar.settingsMenu, o = /* @__PURE__ */ new Set(), a = new Map(e.map((l) => [l.index, this.uniqueLabel(this.streamTrackLabel(l.label, l.lang), String(l.index + 1), o)]));
2423
+ const r = this.controlBar.settingsMenu, o = /* @__PURE__ */ new Set(), a = new Map(e.map((l) => [l.index, this.uniqueLabel(this.streamTrackLabel(l.label, l.lang), String(l.index + 1), o)]));
2377
2424
  if (e.length <= 1) {
2378
- s.unregisterSubmenu(me);
2425
+ r.unregisterSubmenu(ye);
2379
2426
  return;
2380
2427
  }
2381
- s.registerSubmenu({
2382
- key: me,
2428
+ r.registerSubmenu({
2429
+ key: ye,
2383
2430
  title: this.i18n.audioTrack,
2384
2431
  getValueLabel: () => a.get(i) ?? "",
2385
2432
  getItems: () => e.map((l) => ({ label: a.get(l.index), active: l.index === i, onSelect: () => this.sourceManager.setAudioTrack(l.index) }))
2386
2433
  });
2387
2434
  });
2388
2435
  /** Playlist panelinin monte edileceği, .video-area'nın ALTINDAKİ (shadow root içi) kapsayıcı — ilk ihtiyaçta oluşturulur. */
2389
- r(this, "panelContainer", null);
2390
- r(this, "onHlsLevelsChanged", (e, i) => {
2436
+ s(this, "panelContainer", null);
2437
+ s(this, "onHlsLevelsChanged", (e, i) => {
2391
2438
  var l;
2392
2439
  if (this.lastHlsLevels = e, this.lastHlsActive = i, e.length === 0 && this.hlsQualitiesShown) {
2393
2440
  this.hlsQualitiesShown = !1, this.controlBar.setQualities([], "");
@@ -2395,10 +2442,10 @@ class Ae extends HTMLElement {
2395
2442
  }
2396
2443
  if (e.length <= 1) return;
2397
2444
  this.hlsQualitiesShown = !0;
2398
- const s = (h) => `${h.height}p`, o = this.qualityGate, a = (h) => !!(o != null && o.isLocked(h.height));
2445
+ const r = (h) => `${h.height}p`, o = this.qualityGate, a = (h) => !!(o != null && o.isLocked(h.height));
2399
2446
  if (o) {
2400
- const h = e.filter((p) => !a(p)), c = h.length ? h : [e.reduce((p, g) => g.height < p.height ? g : p)];
2401
- this.sourceManager.setMaxLevel(c.reduce((p, g) => g.height > p.height ? g : p).index);
2447
+ const h = e.filter((p) => !a(p)), c = h.length ? h : [e.reduce((p, m) => m.height < p.height ? m : p)];
2448
+ this.sourceManager.setMaxLevel(c.reduce((p, m) => m.height > p.height ? m : p).index);
2402
2449
  } else
2403
2450
  this.sourceManager.setMaxLevel(-1);
2404
2451
  this.controlBar.setQualities(
@@ -2406,43 +2453,49 @@ class Ae extends HTMLElement {
2406
2453
  { label: this.i18n.autoQuality, onSelect: () => this.sourceManager.setLevel(-1) },
2407
2454
  // Yüksekten düşüğe (hls.js artan sıralıyor) — l.index hls.js'teki gerçek seviye numarası, sıradan bağımsız.
2408
2455
  ...[...e].sort((h, c) => c.height - h.height).map((h) => ({
2409
- label: s(h),
2456
+ label: r(h),
2410
2457
  locked: a(h),
2411
2458
  onSelect: a(h) ? () => o == null ? void 0 : o.requestUnlock() : () => this.sourceManager.setLevel(h.index)
2412
2459
  }))
2413
2460
  ],
2414
- i === -1 || !e[i] ? this.i18n.autoQuality : s(e[i])
2461
+ i === -1 || !e[i] ? this.i18n.autoQuality : r(e[i])
2415
2462
  ), (l = this.rewardedUnlock) == null || l.onQualitiesChanged();
2416
2463
  });
2417
- r(this, "onFullscreenChange", (e) => {
2464
+ s(this, "onFullscreenChange", (e) => {
2418
2465
  this.controlBar.setFullscreenState(this.isFullscreenActive()), (e == null ? void 0 : e.type) === "webkitbeginfullscreen" ? this.showCaptionsNatively() : (e == null ? void 0 : e.type) === "webkitendfullscreen" && this.syncCaptionsFromNative();
2419
2466
  });
2420
2467
  // ── Oynatma durumuna göre merkez buton + otomatik gizlenme ──
2421
2468
  // Değer: 'hidden' (tamamen gizle — countdown/geo) ya da 'reduced' (yalnızca oynat/duraklat + ses — ads).
2422
- r(this, "chromeBlockers", /* @__PURE__ */ new Map());
2423
- r(this, "onPlay", () => {
2469
+ s(this, "chromeBlockers", /* @__PURE__ */ new Map());
2470
+ s(this, "onPlay", () => {
2424
2471
  this.matches(":hover") && this.scheduleCursorHide(), this.isChromeBlocked || (this.centerPlayButton.style.opacity = "0", this.centerPlayButton.style.pointerEvents = "none", this.scheduleAutoHide()), this.dispatchEvent(new CustomEvent("hp:play"));
2425
2472
  });
2426
- r(this, "onPause", () => {
2473
+ s(this, "onPause", () => {
2427
2474
  this.hideTimer && clearTimeout(this.hideTimer), this.showCursor(), this.isChromeBlocked || (this.centerPlayButton.style.opacity = "1", this.centerPlayButton.style.pointerEvents = "auto", this.showChrome()), this.dispatchEvent(new CustomEvent("hp:pause"));
2428
2475
  });
2429
- r(this, "onPointerDownFocus", () => {
2476
+ s(this, "onEnded", () => {
2477
+ this.dispatchEvent(new CustomEvent("hp:ended"));
2478
+ });
2479
+ s(this, "onRateChange", () => {
2480
+ this.dispatchEvent(new CustomEvent("hp:ratechange", { detail: { rate: this.videoEl.playbackRate } }));
2481
+ });
2482
+ s(this, "onPointerDownFocus", () => {
2430
2483
  var e;
2431
- this.focus(), (e = this.adsController) == null || e.initializeDisplayContainerOnce();
2484
+ this.focus({ preventScroll: !0 }), (e = this.adsController) == null || e.initializeDisplayContainerOnce();
2432
2485
  });
2433
- r(this, "onVideoPressStart", (e) => {
2486
+ s(this, "onVideoPressStart", (e) => {
2434
2487
  this.tapCandidate = !0;
2435
2488
  const i = "touches" in e ? e.touches[0] : e;
2436
2489
  i && (this.tapStartX = i.clientX, this.tapStartY = i.clientY);
2437
2490
  });
2438
- r(this, "onVideoPressEnd", (e) => {
2491
+ s(this, "onVideoPressEnd", (e) => {
2439
2492
  var l, h;
2440
2493
  if (!this.tapCandidate || (this.tapCandidate = !1, this.isChromeBlocked) || (l = this.gestureControls) != null && l.isCurrentlyHolding()) return;
2441
2494
  const i = "changedTouches" in e;
2442
2495
  if (!i && Date.now() - this.lastTouchEndAt < 800) return;
2443
2496
  i && (this.lastTouchEndAt = Date.now());
2444
- const s = i ? e.changedTouches[0] : e;
2445
- if (s && Math.hypot(s.clientX - this.tapStartX, s.clientY - this.tapStartY) > Nt) {
2497
+ const r = i ? e.changedTouches[0] : e;
2498
+ if (r && Math.hypot(r.clientX - this.tapStartX, r.clientY - this.tapStartY) > Vt) {
2446
2499
  i && !this.isChromeBlocked && this.scheduleAutoHide();
2447
2500
  return;
2448
2501
  }
@@ -2450,39 +2503,39 @@ class Ae extends HTMLElement {
2450
2503
  this.videoEl.paused ? this.videoEl.play().catch(() => {
2451
2504
  }) : this.videoEl.pause();
2452
2505
  });
2453
- s && ((h = this.tapGestures) != null && h.handleTap(s.clientX, o === "pen" ? "pen" : o, a)) || a();
2506
+ r && ((h = this.tapGestures) != null && h.handleTap(r.clientX, o === "pen" ? "pen" : o, a)) || a();
2454
2507
  });
2455
- r(this, "onVideoPressCancel", () => {
2508
+ s(this, "onVideoPressCancel", () => {
2456
2509
  this.tapCandidate = !1;
2457
2510
  });
2458
- r(this, "onPointerMove", (e) => {
2511
+ s(this, "onPointerMove", (e) => {
2459
2512
  if (e.pointerType !== "mouse") {
2460
2513
  this.chromeVisible && this.scheduleAutoHide();
2461
2514
  return;
2462
2515
  }
2463
2516
  this.pointerOverControls = e.composedPath().includes(this.chromeEl), this.scheduleAutoHide(), e.pointerType === "mouse" && this.scheduleCursorHide();
2464
2517
  });
2465
- r(this, "onPointerLeave", (e) => {
2518
+ s(this, "onPointerLeave", (e) => {
2466
2519
  e.pointerType === "mouse" && (this.pointerOverControls = !1, this.scheduleAutoHide(), this.showCursor());
2467
2520
  });
2468
- r(this, "scheduleAutoHide", () => {
2521
+ s(this, "scheduleAutoHide", () => {
2469
2522
  this.showChrome(), this.hideTimer && clearTimeout(this.hideTimer), !(this.videoEl.paused || this.loadingActive) && (this.audioMode || (this.hideTimer = setTimeout(() => {
2470
2523
  this.audioMode || this.videoEl.paused || this.loadingActive || this.pointerOverControls || this.controlBar.settingsMenu.isOpen || this.setChromeOpacity("0");
2471
- }, this.lastPointerType === "mouse" ? this.autoHideDelayMs : Math.max(this.autoHideDelayMs, Ot))));
2524
+ }, this.lastPointerType === "mouse" ? this.autoHideDelayMs : Math.max(this.autoHideDelayMs, Gt))));
2472
2525
  });
2473
- Ct(), this.root = this.attachShadow({ mode: "open" });
2526
+ Pt(), this.root = this.attachShadow({ mode: "open" });
2474
2527
  const e = document.createElement("style");
2475
- e.textContent = Me, this.root.appendChild(e);
2528
+ e.textContent = Oe, this.root.appendChild(e);
2476
2529
  const i = document.createElement("div");
2477
- i.className = "hp-root", i.innerHTML = Dt, this.root.appendChild(i), this.videoArea = this.root.querySelector(".video-area"), this.videoEl = this.root.querySelector("video"), this.adLayerEl = this.root.querySelector('[part="ad-layer"]'), this.instanceKey = `hp-${Math.random().toString(36).slice(2, 10)}`, this.prerollGate = new Mt(this.videoEl), this.prerollGate.onWaitChange = (o) => this.onPrerollWaitChange(o), this.videoEl.addEventListener("error", this.onMediaError), this.videoEl.addEventListener("hp-internal:subtitle-error", this.onSubtitleError), this.loadingSpinner = new Ye(this.videoEl), this.root.querySelector(".media-layer").appendChild(this.loadingSpinner.el), this.errorScreen = new Ze(this.videoEl, this.i18n), this.errorScreen.setOnRetry(() => void this.retrySource()), this.videoArea.appendChild(this.errorScreen.el), this.centerPlayButton = document.createElement("button"), this.centerPlayButton.type = "button", this.centerPlayButton.setAttribute("part", "center-play-button"), this.centerPlayButton.setAttribute("aria-label", this.i18n.play), this.centerPlayButton.className = "hp-center-play hp:absolute hp:inset-0 hp:flex hp:items-center hp:justify-center hp:bg-transparent hp:border-0 hp:cursor-pointer hp:text-on-surface hp:transition-opacity";
2478
- const s = document.createElement("span");
2479
- s.className = "hp-chip hp:flex hp:items-center hp:justify-center hp:w-16 hp:h-16", s.style.borderRadius = "9999px", s.appendChild(S("play", "hp:text-2xl")), this.centerPlayButton.appendChild(s), this.centerPlayButton.addEventListener("click", (o) => {
2530
+ i.className = "hp-root", i.innerHTML = qt, this.root.appendChild(i), this.videoArea = this.root.querySelector(".video-area"), this.videoEl = this.root.querySelector("video"), this.adLayerEl = this.root.querySelector('[part="ad-layer"]'), this.instanceKey = `hp-${Math.random().toString(36).slice(2, 10)}`, this.prerollGate = new It(this.videoEl), this.prerollGate.onWaitChange = (o) => this.onPrerollWaitChange(o), this.videoEl.addEventListener("error", this.onMediaError), this.videoEl.addEventListener("hp-internal:subtitle-error", this.onSubtitleError), this.loadingSpinner = new it(this.videoEl), this.root.querySelector(".media-layer").appendChild(this.loadingSpinner.el), this.errorScreen = new st(this.videoEl, this.i18n), this.errorScreen.setOnRetry(() => void this.retrySource()), this.errorScreen.setOnShown(({ code: o, message: a }) => this.dispatchEvent(new CustomEvent("hp:error", { detail: { message: a, code: o } }))), this.videoArea.appendChild(this.errorScreen.el), this.centerPlayButton = document.createElement("button"), this.centerPlayButton.type = "button", this.centerPlayButton.setAttribute("part", "center-play-button"), this.centerPlayButton.setAttribute("aria-label", this.i18n.play), this.centerPlayButton.className = "hp-center-play hp:absolute hp:inset-0 hp:flex hp:items-center hp:justify-center hp:bg-transparent hp:border-0 hp:cursor-pointer hp:text-on-surface hp:transition-opacity";
2531
+ const r = document.createElement("span");
2532
+ r.className = "hp-chip hp:flex hp:items-center hp:justify-center hp:w-16 hp:h-16", r.style.borderRadius = "9999px", r.appendChild(L("play", "hp:text-2xl")), this.centerPlayButton.appendChild(r), this.centerPlayButton.addEventListener("click", (o) => {
2480
2533
  var p;
2481
2534
  const a = () => {
2482
2535
  this.videoEl.paused && this.videoEl.play();
2483
- }, l = this.lastPointerType === "pen" ? "pen" : this.lastPointerType === "touch" ? "touch" : null, c = o.composedPath().includes(s) ? a : () => this.onBackgroundTap(l ?? "mouse", a);
2536
+ }, l = this.lastPointerType === "pen" ? "pen" : this.lastPointerType === "touch" ? "touch" : null, c = o.composedPath().includes(r) ? a : () => this.onBackgroundTap(l ?? "mouse", a);
2484
2537
  l && ((p = this.tapGestures) != null && p.handleTap(o.clientX, l, c)) || c();
2485
- }), this.videoArea.appendChild(this.centerPlayButton), this.centerPlayObserver = new ResizeObserver(() => requestAnimationFrame(() => this.layoutCenterPlay())), this.centerPlayObserver.observe(this.videoArea), this.chromeEl = document.createElement("div"), this.chromeEl.className = "hp-chrome hp:absolute hp:inset-0 hp:z-20 hp:pointer-events-none", this.videoArea.appendChild(this.chromeEl), this.sourceManager = new Be(this.videoEl, {
2538
+ }), this.videoArea.appendChild(this.centerPlayButton), this.centerPlayObserver = new ResizeObserver(() => requestAnimationFrame(() => this.layoutCenterPlay())), this.centerPlayObserver.observe(this.videoArea), this.chromeEl = document.createElement("div"), this.chromeEl.className = "hp-chrome hp:absolute hp:inset-0 hp:z-20 hp:pointer-events-none", this.videoArea.appendChild(this.chromeEl), this.sourceManager = new Ie(this.videoEl, {
2486
2539
  onLevelsChanged: this.onHlsLevelsChanged,
2487
2540
  onAudioTracksChanged: this.onStreamAudioTracks,
2488
2541
  onTextTracksFound: this.onStreamTextTracks,
@@ -2497,9 +2550,9 @@ class Ae extends HTMLElement {
2497
2550
  fatal: o.fatal,
2498
2551
  details: { url: o.url, httpStatus: o.httpStatus, reason: o.reason, engine: "hls.js" }
2499
2552
  })
2500
- }), this.errorScreen.setShouldShow(() => !this.sourceManager.isRecovering() && !this.tryNextSourceGroup()), this.controlBar = new qe(
2553
+ }), this.errorScreen.setShouldShow(() => !this.sourceManager.isRecovering() && !this.tryNextSourceGroup()), this.controlBar = new We(
2501
2554
  this.videoEl,
2502
- zt,
2555
+ Ht,
2503
2556
  {
2504
2557
  onRequestFullscreen: () => this.requestFullscreenCompat(),
2505
2558
  liveSyncPosition: () => {
@@ -2537,28 +2590,30 @@ class Ae extends HTMLElement {
2537
2590
  }
2538
2591
  },
2539
2592
  this.i18n
2540
- ), this.chromeEl.appendChild(this.controlBar.el), this.chromeEl.appendChild(this.controlBar.topEl), this.videoArea.appendChild(this.controlBar.volumePanel.unmuteBadge), this.captionRenderer = new R(this.videoEl, this.videoArea, this.controlBar.seekBar.el, this.i18n), this.videoArea.appendChild(this.captionRenderer.layerEl), this.keyboard = new Xe(
2593
+ ), this.chromeEl.appendChild(this.controlBar.el), this.chromeEl.appendChild(this.controlBar.topEl), this.videoArea.appendChild(this.controlBar.volumePanel.unmuteBadge), this.captionRenderer = new z(this.videoEl, this.videoArea, this.controlBar.seekBar.el, this.i18n), this.videoArea.appendChild(this.captionRenderer.layerEl), this.keyboard = new tt(
2541
2594
  this,
2542
2595
  this.videoEl,
2543
2596
  () => this.isFullscreenActive() ? this.exitFullscreenCompat() : this.requestFullscreenCompat()
2544
- ), this.tooltip = new We(this.videoArea), this.contextMenu = new xt(this.videoArea), this.seekFeedback = new yt(this.i18n), this.videoArea.appendChild(this.seekFeedback.el), this.controlBar.onSkip = (o) => this.seekFeedback.show(o), this.keyboard.onSeek = (o) => this.seekFeedback.show(o), this.keyboard.interceptTogglePlay = () => this.cancelPrerollWait(), this.controlBar.seekBar.onKeyboardSeek = (o) => this.seekFeedback.show(o), this.blockChrome("boot");
2597
+ ), this.tooltip = new et(this.videoArea), this.contextMenu = new Tt(this.videoArea), this.seekFeedback = new Ct(this.i18n), this.videoArea.appendChild(this.seekFeedback.el), this.controlBar.onSkip = (o) => this.seekFeedback.show(o), this.keyboard.onSeek = (o) => this.seekFeedback.show(o), this.keyboard.interceptTogglePlay = () => this.cancelPrerollWait(), this.controlBar.seekBar.onKeyboardSeek = (o) => this.seekFeedback.show(o), this.blockChrome("boot");
2545
2598
  }
2546
2599
  static get observedAttributes() {
2547
2600
  return ["src", "poster", "autoplay", "muted", "loop", "theme", "locale"];
2548
2601
  }
2549
2602
  connectedCallback() {
2550
- this.tabIndex = this.tabIndex || 0, this.syncFromAttributes(), this.bootResolved || (this.bootGraceTimer = setTimeout(() => {
2603
+ this.hasAttribute("tabindex") || (this.tabIndex = 0), this.syncFromAttributes(), this.bootResolved || (this.bootGraceTimer = setTimeout(() => {
2551
2604
  this.bootGraceTimer = null, this.bootResolved || (this.bootResolved = !0, this.syncFromAttributes());
2552
- }, 80)), this.videoEl.addEventListener("play", this.onPlay), this.videoEl.addEventListener("pause", this.onPause), this.addEventListener("pointermove", this.onPointerMove), this.addEventListener("pointerleave", this.onPointerLeave), this.addEventListener("pointerdown", this.onPointerDownFocus), document.addEventListener("fullscreenchange", this.onFullscreenChange), document.addEventListener("webkitfullscreenchange", this.onFullscreenChange), this.videoEl.addEventListener("webkitbeginfullscreen", this.onFullscreenChange), this.videoEl.addEventListener("webkitendfullscreen", this.onFullscreenChange), this.addEventListener("contextmenu", this.onContextMenu), this.addEventListener("pointerdown", this.onPointerTypeTrack, !0), this.videoEl.textTracks.addEventListener("addtrack", this.onNativeTextTracksChanged), this.videoEl.textTracks.addEventListener("removetrack", this.onNativeTextTracksChanged), this.controlBar.settingsMenu.onOpenChange = (e) => {
2605
+ }, 80)), this.videoEl.addEventListener("play", this.onPlay), this.videoEl.addEventListener("pause", this.onPause), this.videoEl.addEventListener("ended", this.onEnded), this.videoEl.addEventListener("ratechange", this.onRateChange), this.addEventListener("pointermove", this.onPointerMove), this.addEventListener("pointerleave", this.onPointerLeave), this.addEventListener("pointerdown", this.onPointerDownFocus), document.addEventListener("fullscreenchange", this.onFullscreenChange), document.addEventListener("webkitfullscreenchange", this.onFullscreenChange), this.videoEl.addEventListener("webkitbeginfullscreen", this.onFullscreenChange), this.videoEl.addEventListener("webkitendfullscreen", this.onFullscreenChange), this.addEventListener("contextmenu", this.onContextMenu), this.addEventListener("pointerdown", this.onPointerTypeTrack, !0), this.videoEl.textTracks.addEventListener("addtrack", this.onNativeTextTracksChanged), this.videoEl.textTracks.addEventListener("removetrack", this.onNativeTextTracksChanged), this.controlBar.settingsMenu.onOpenChange = (e) => {
2553
2606
  e && this.hideTimer && clearTimeout(this.hideTimer), e || this.scheduleAutoHide(), this.tooltip.recheckOcclusion();
2554
2607
  }, this.tooltip.setOcclusionCheck((e) => {
2555
2608
  const i = this.controlBar.settingsMenu.panelRect;
2556
2609
  return !!i && e.left < i.right && e.right > i.left && e.top < i.bottom && e.bottom > i.top;
2557
- }), this.videoEl.addEventListener("mousedown", this.onVideoPressStart), this.videoEl.addEventListener("mouseup", this.onVideoPressEnd), this.videoEl.addEventListener("mouseleave", this.onVideoPressCancel), this.videoEl.addEventListener("touchstart", this.onVideoPressStart, { passive: !0 }), this.videoEl.addEventListener("touchend", this.onVideoPressEnd), this.videoEl.addEventListener("touchcancel", this.onVideoPressCancel), this.dispatchEvent(new CustomEvent("hp:ready"));
2610
+ }), this.videoEl.addEventListener("mousedown", this.onVideoPressStart), this.videoEl.addEventListener("mouseup", this.onVideoPressEnd), this.videoEl.addEventListener("mouseleave", this.onVideoPressCancel), this.videoEl.addEventListener("touchstart", this.onVideoPressStart, { passive: !0 }), this.videoEl.addEventListener("touchend", this.onVideoPressEnd), this.videoEl.addEventListener("touchcancel", this.onVideoPressCancel), queueMicrotask(() => {
2611
+ this.isConnected && this.dispatchEvent(new CustomEvent("hp:ready"));
2612
+ });
2558
2613
  }
2559
2614
  disconnectedCallback() {
2560
- var e, i, s, o, a, l, h, c, p, g, m, f, v, x, d, u, b, y, k, E, C, w, P, q, j, $, Q, K;
2561
- (e = this.centerPlayObserver) == null || e.disconnect(), this.showCursor(), (i = this.miniProgress) == null || i.destroy(), this.miniProgress = null, this.videoEl.removeEventListener("play", this.onPlay), this.videoEl.removeEventListener("pause", this.onPause), this.removeEventListener("pointermove", this.onPointerMove), this.removeEventListener("pointerleave", this.onPointerLeave), this.removeEventListener("pointerdown", this.onPointerDownFocus), this.controlBar.settingsMenu.onOpenChange = null, document.removeEventListener("fullscreenchange", this.onFullscreenChange), document.removeEventListener("webkitfullscreenchange", this.onFullscreenChange), this.videoEl.removeEventListener("webkitbeginfullscreen", this.onFullscreenChange), this.videoEl.removeEventListener("webkitendfullscreen", this.onFullscreenChange), this.removeEventListener("contextmenu", this.onContextMenu), this.removeEventListener("pointerdown", this.onPointerTypeTrack, !0), this.videoEl.textTracks.removeEventListener("addtrack", this.onNativeTextTracksChanged), this.videoEl.textTracks.removeEventListener("removetrack", this.onNativeTextTracksChanged), this.videoEl.removeEventListener("mousedown", this.onVideoPressStart), this.videoEl.removeEventListener("mouseup", this.onVideoPressEnd), this.videoEl.removeEventListener("mouseleave", this.onVideoPressCancel), this.videoEl.removeEventListener("touchstart", this.onVideoPressStart), this.videoEl.removeEventListener("touchend", this.onVideoPressEnd), this.videoEl.removeEventListener("touchcancel", this.onVideoPressCancel), this.controlBar.destroy(), this.captionRenderer.destroy(), this.keyboard.destroy(), this.tooltip.destroy(), this.loadingSpinner.destroy(), this.errorScreen.destroy(), this.seekFeedback.destroy(), this.contextMenu.destroy(), (s = this.statsPanel) == null || s.destroy(), (o = this.debugPanel) == null || o.destroy(), this.videoEl.removeEventListener("error", this.onMediaError), this.videoEl.removeEventListener("hp-internal:subtitle-error", this.onSubtitleError), (a = this.tapGestures) == null || a.destroy(), this.sourceManager.destroy(), (l = this.adsController) == null || l.destroy(), (h = this.gestureControls) == null || h.destroy(), (c = this.loopSection) == null || c.destroy(), (p = this.audioStage) == null || p.destroy(), this.audioStage = null, (g = this.rewardedUnlock) == null || g.destroy(), this.rewardedUnlock = null, (m = this.sponsorship) == null || m.destroy(), this.sponsorship = null, (f = this.adTriggers) == null || f.destroy(), this.adTriggers = null, (v = this.castController) == null || v.destroy(), this.castController = null, (x = this.inViewAutoplay) == null || x.destroy(), (d = this.unregisterSticky) == null || d.call(this), (u = this.playlistRunner) == null || u.destroy(), (b = this.hopeStory) == null || b.destroy(), (y = this.markProgress) == null || y.destroy(), (k = this.segments) == null || k.destroy(), (E = this.spriteThumbnails) == null || E.destroy(), (C = this.countdownScreen) == null || C.destroy(), (w = this.geoChecker) == null || w.destroy(), (P = this.redirectScreen) == null || P.destroy(), (q = this.qrResume) == null || q.destroy(), (j = this.pauseAd) == null || j.destroy(), this.pauseAd = null, ($ = this.dubbing) == null || $.destroy(), (Q = this.liveWallClock) == null || Q.destroy(), (K = this.daiController) == null || K.destroy(), this.prerollGate.release(!1), this.hideTimer && clearTimeout(this.hideTimer), this.bootGraceTimer && clearTimeout(this.bootGraceTimer), this.lastSynced = null;
2615
+ var e, i, r, o, a, l, h, c, p, m, u, f, y, x, k, w, d, g, b, E, C, v, T, S, Q, W, X, Y;
2616
+ (e = this.centerPlayObserver) == null || e.disconnect(), this.showCursor(), (i = this.miniProgress) == null || i.destroy(), this.miniProgress = null, this.videoEl.removeEventListener("play", this.onPlay), this.videoEl.removeEventListener("pause", this.onPause), this.videoEl.removeEventListener("ended", this.onEnded), this.videoEl.removeEventListener("ratechange", this.onRateChange), this.removeEventListener("pointermove", this.onPointerMove), this.removeEventListener("pointerleave", this.onPointerLeave), this.removeEventListener("pointerdown", this.onPointerDownFocus), this.controlBar.settingsMenu.onOpenChange = null, document.removeEventListener("fullscreenchange", this.onFullscreenChange), document.removeEventListener("webkitfullscreenchange", this.onFullscreenChange), this.videoEl.removeEventListener("webkitbeginfullscreen", this.onFullscreenChange), this.videoEl.removeEventListener("webkitendfullscreen", this.onFullscreenChange), this.removeEventListener("contextmenu", this.onContextMenu), this.removeEventListener("pointerdown", this.onPointerTypeTrack, !0), this.videoEl.textTracks.removeEventListener("addtrack", this.onNativeTextTracksChanged), this.videoEl.textTracks.removeEventListener("removetrack", this.onNativeTextTracksChanged), this.videoEl.removeEventListener("mousedown", this.onVideoPressStart), this.videoEl.removeEventListener("mouseup", this.onVideoPressEnd), this.videoEl.removeEventListener("mouseleave", this.onVideoPressCancel), this.videoEl.removeEventListener("touchstart", this.onVideoPressStart), this.videoEl.removeEventListener("touchend", this.onVideoPressEnd), this.videoEl.removeEventListener("touchcancel", this.onVideoPressCancel), this.controlBar.destroy(), this.captionRenderer.destroy(), this.keyboard.destroy(), this.tooltip.destroy(), this.loadingSpinner.destroy(), this.errorScreen.destroy(), this.seekFeedback.destroy(), this.contextMenu.destroy(), (r = this.statsPanel) == null || r.destroy(), (o = this.debugPanel) == null || o.destroy(), this.videoEl.removeEventListener("error", this.onMediaError), this.videoEl.removeEventListener("hp-internal:subtitle-error", this.onSubtitleError), (a = this.tapGestures) == null || a.destroy(), this.sourceManager.destroy(), (l = this.adsController) == null || l.destroy(), (h = this.gestureControls) == null || h.destroy(), (c = this.loopSection) == null || c.destroy(), (p = this.audioStage) == null || p.destroy(), this.audioStage = null, (m = this.rewardedUnlock) == null || m.destroy(), this.rewardedUnlock = null, (u = this.sponsorship) == null || u.destroy(), this.sponsorship = null, (f = this.adTriggers) == null || f.destroy(), this.adTriggers = null, (y = this.castController) == null || y.destroy(), this.castController = null, (x = this.inViewAutoplay) == null || x.destroy(), (k = this.unregisterSticky) == null || k.call(this), (w = this.playlistRunner) == null || w.destroy(), (d = this.hopeStory) == null || d.destroy(), (g = this.markProgress) == null || g.destroy(), (b = this.segments) == null || b.destroy(), (E = this.spriteThumbnails) == null || E.destroy(), (C = this.countdownScreen) == null || C.destroy(), (v = this.geoChecker) == null || v.destroy(), (T = this.redirectScreen) == null || T.destroy(), (S = this.qrResume) == null || S.destroy(), (Q = this.pauseAd) == null || Q.destroy(), this.pauseAd = null, (W = this.dubbing) == null || W.destroy(), (X = this.liveWallClock) == null || X.destroy(), (Y = this.daiController) == null || Y.destroy(), this.prerollGate.release(!1), this.hideTimer && clearTimeout(this.hideTimer), this.bootGraceTimer && clearTimeout(this.bootGraceTimer), this.lastSynced = null;
2562
2617
  }
2563
2618
  /** Reklam/consent-farkında plugin'lerin (gesture/sticky/in-view-autoplay) ortak sorgusu. */
2564
2619
  isAdPlaying() {
@@ -2590,8 +2645,8 @@ class Ae extends HTMLElement {
2590
2645
  /** Hata ayıklama penceresini aç (sağ tık menüsündeki "Hata ayıklama" ile aynı). */
2591
2646
  async showDebugLog() {
2592
2647
  if (!this.debugPanel) {
2593
- const { installDebugPanel: e } = await import("./index-DCXX1ZJG.js");
2594
- this.debugPanel ?? (this.debugPanel = e({ containerEl: this.videoArea, i18n: this.i18n, log: this.log, version: N }));
2648
+ const { installDebugPanel: e } = await import("./debugPanel-Bnc_7GOn.js");
2649
+ this.debugPanel ?? (this.debugPanel = e({ containerEl: this.videoArea, i18n: this.i18n, log: this.log, version: I }));
2595
2650
  }
2596
2651
  this.debugPanel.show();
2597
2652
  }
@@ -2607,12 +2662,12 @@ class Ae extends HTMLElement {
2607
2662
  async toggleStats(e) {
2608
2663
  if (!this.statsPanel) {
2609
2664
  if (e === !1) return;
2610
- const { installStats: i } = await import("./index-DGtpFgHV.js");
2665
+ const { installStats: i } = await import("./statsPanel-DSClIwA3.js");
2611
2666
  this.statsPanel ?? (this.statsPanel = i({
2612
2667
  videoEl: this.videoEl,
2613
2668
  containerEl: this.videoArea,
2614
2669
  i18n: this.i18n,
2615
- version: N,
2670
+ version: I,
2616
2671
  getEngine: () => this.sourceManager.engine,
2617
2672
  getHls: () => this.sourceManager.hlsInstance
2618
2673
  }));
@@ -2638,7 +2693,7 @@ class Ae extends HTMLElement {
2638
2693
  this.controlBar.toggleTimeMode();
2639
2694
  }
2640
2695
  syncFromAttributes() {
2641
- var s;
2696
+ var r;
2642
2697
  const e = {
2643
2698
  src: this.getAttribute("src") ?? void 0,
2644
2699
  poster: this.getAttribute("poster") ?? void 0,
@@ -2649,7 +2704,7 @@ class Ae extends HTMLElement {
2649
2704
  locale: this.getAttribute("locale") ?? void 0
2650
2705
  }, i = JSON.stringify(e);
2651
2706
  if (this.bootResolved) {
2652
- if (((s = this.lastSynced) == null ? void 0 : s.options) === this._options && this.lastSynced.attrs === i) return;
2707
+ if (((r = this.lastSynced) == null ? void 0 : r.options) === this._options && this.lastSynced.attrs === i) return;
2653
2708
  this.lastSynced = { options: this._options, attrs: i };
2654
2709
  }
2655
2710
  this.applyOptions({ ...e, ...this._options });
@@ -2661,8 +2716,8 @@ class Ae extends HTMLElement {
2661
2716
  this.pendingPluginOptions = null;
2662
2717
  try {
2663
2718
  await this.applyPluginsAndPlayback(i);
2664
- } catch (s) {
2665
- console.error("[hope-player] options could not be applied:", s);
2719
+ } catch (r) {
2720
+ console.error("[hope-player] options could not be applied:", r);
2666
2721
  }
2667
2722
  }
2668
2723
  })().finally(() => {
@@ -2670,23 +2725,23 @@ class Ae extends HTMLElement {
2670
2725
  })), this.pluginApplyRun;
2671
2726
  }
2672
2727
  async applyOptions(e) {
2673
- var a, l, h, c, p, g, m, f, v, x, d, u, b, y, k, E, C, w, P;
2674
- e.poster && (this.videoEl.poster = e.poster), this.casting || (this.videoEl.autoplay = !!e.autoplay), this.videoEl.muted = !!e.muted, this.videoEl.loop = !!e.loop, this.videoEl.preload = e.preload ?? "metadata", this.videoEl.playsInline = !0, this.videoEl.setAttribute("webkit-playsinline", ""), this.autoHideDelayMs = e.autoHideDelayMs ?? ce, this.tapToPlay = e.tapToPlay ?? "auto", this.cursorHideDelayMs = e.cursorHideDelayMs === !1 ? null : e.cursorHideDelayMs ?? ue, this.cursorHideDelayMs === null && this.showCursor(), e.miniProgress && !this.miniProgress ? (this.miniProgress = new mt(this.videoEl), this.videoArea.appendChild(this.miniProgress.el), this.updateMiniProgress()) : !e.miniProgress && this.miniProgress && (this.miniProgress.destroy(), this.miniProgress = null), this.debugEnabled = !!e.debug, this.debugEnabled || (a = this.debugPanel) == null || a.hide(), this.contextMenuConfig = e.contextMenu === !1 ? null : { stats: typeof e.contextMenu == "object" && e.contextMenu.stats === !0 }, this.contextMenuConfig || this.contextMenu.close();
2675
- const i = e.keyboardSeekStep && e.keyboardSeekStep > 0 ? e.keyboardSeekStep : It;
2728
+ var a, l, h, c, p, m, u, f, y, x, k, w, d, g, b, E, C, v, T;
2729
+ e.poster && (this.videoEl.poster = e.poster), this.casting || (this.videoEl.autoplay = !!e.autoplay), this.videoEl.muted = !!e.muted, this.videoEl.loop = !!e.loop, this.videoEl.preload = e.preload ?? "metadata", this.videoEl.playsInline = !0, this.videoEl.setAttribute("webkit-playsinline", ""), this.autoHideDelayMs = e.autoHideDelayMs ?? fe, this.tapToPlay = e.tapToPlay ?? "auto", this.cursorHideDelayMs = e.cursorHideDelayMs === !1 ? null : e.cursorHideDelayMs ?? be, this.cursorHideDelayMs === null && this.showCursor(), e.miniProgress && !this.miniProgress ? (this.miniProgress = new xt(this.videoEl), this.videoArea.appendChild(this.miniProgress.el), this.updateMiniProgress()) : !e.miniProgress && this.miniProgress && (this.miniProgress.destroy(), this.miniProgress = null), this.debugEnabled = !!e.debug, this.debugEnabled || (a = this.debugPanel) == null || a.hide(), this.contextMenuConfig = e.contextMenu === !1 ? null : { stats: typeof e.contextMenu == "object" && e.contextMenu.stats === !0 }, this.contextMenuConfig || this.contextMenu.close();
2730
+ const i = e.keyboardSeekStep && e.keyboardSeekStep > 0 ? e.keyboardSeekStep : Ut;
2676
2731
  this.keyboard.seekStep = i, this.controlBar.seekBar.keyboardStep = i;
2677
- const s = e.skipButtons === !0 ? {} : e.skipButtons || null;
2732
+ const r = e.skipButtons === !0 ? {} : e.skipButtons || null;
2678
2733
  this.controlBar.setSkipButtons(
2679
- s && s.back !== !1 ? s.back ?? ge : null,
2680
- s && s.forward !== !1 ? s.forward ?? ge : null
2734
+ r && r.back !== !1 ? r.back ?? ve : null,
2735
+ r && r.forward !== !1 ? r.forward ?? ve : null
2681
2736
  ), e.showRemainingTime !== void 0 && e.showRemainingTime !== this.appliedShowRemaining && (this.appliedShowRemaining = e.showRemainingTime, this.controlBar.setShowRemaining(e.showRemainingTime));
2682
- const o = Ht(e.aspectRatio);
2683
- o ? this.style.setProperty("--hp-aspect-ratio", o) : this.style.removeProperty("--hp-aspect-ratio"), e.theme ? this.setAttribute("data-theme", e.theme) : this.removeAttribute("data-theme"), this.localeCode = e.locale ?? "tr", Lt(this.i18n, e.locale, e.labels), this.centerPlayButton.setAttribute("aria-label", this.i18n.play), this.controlBar.refreshLabels(), this.captionRenderer.refreshLabels(this.i18n), this.captionTrackActive && this.controlBar.settingsMenu.setCaptionAppearance(this.buildCaptionAppearance()), this.errorScreen.refreshLabels(), (l = this.playlistRunner) == null || l.refreshLabels(), (h = this.hopeStory) == null || h.refreshLabels(), (c = this.countdownScreen) == null || c.refreshLabels(), (p = this.geoChecker) == null || p.refreshLabels(), (g = this.redirectScreen) == null || g.refreshLabels(), (m = this.qrResume) == null || m.refreshLabels(), (f = this.pauseAd) == null || f.refreshLabels(), (v = this.castController) == null || v.refreshLabels(), (x = this.dubbing) == null || x.refreshLabels(), this.onStreamAudioTracks(this.streamAudio.tracks, this.streamAudio.active), (d = this.statsPanel) == null || d.refreshLabels(), (u = this.debugPanel) == null || u.refreshLabels(), (b = this.liveWallClock) == null || b.refreshLabels(), (y = this.loopSection) == null || y.refreshLabels(), (k = this.audioStage) == null || k.refreshLabels(), (E = this.rewardedUnlock) == null || E.refreshLabels(), (C = this.markProgress) == null || C.refreshLabels(), (P = (w = this.unregisterSticky) == null ? void 0 : w.refreshLabels) == null || P.call(w), this.bootResolved && await this.queuePluginApply(e);
2737
+ const o = jt(e.aspectRatio);
2738
+ o ? this.style.setProperty("--hp-aspect-ratio", o) : this.style.removeProperty("--hp-aspect-ratio"), e.theme ? this.setAttribute("data-theme", e.theme) : this.removeAttribute("data-theme"), this.localeCode = e.locale ?? "tr", Ot(this.i18n, e.locale, e.labels), this.centerPlayButton.setAttribute("aria-label", this.i18n.play), this.controlBar.refreshLabels(), this.captionRenderer.refreshLabels(this.i18n), this.captionTrackActive && this.controlBar.settingsMenu.setCaptionAppearance(this.buildCaptionAppearance()), this.errorScreen.refreshLabels(), (l = this.playlistRunner) == null || l.refreshLabels(), (h = this.hopeStory) == null || h.refreshLabels(), (c = this.countdownScreen) == null || c.refreshLabels(), (p = this.geoChecker) == null || p.refreshLabels(), (m = this.redirectScreen) == null || m.refreshLabels(), (u = this.qrResume) == null || u.refreshLabels(), (f = this.pauseAd) == null || f.refreshLabels(), (y = this.castController) == null || y.refreshLabels(), (x = this.dubbing) == null || x.refreshLabels(), this.onStreamAudioTracks(this.streamAudio.tracks, this.streamAudio.active), (k = this.statsPanel) == null || k.refreshLabels(), (w = this.debugPanel) == null || w.refreshLabels(), (d = this.liveWallClock) == null || d.refreshLabels(), (g = this.loopSection) == null || g.refreshLabels(), (b = this.audioStage) == null || b.refreshLabels(), (E = this.rewardedUnlock) == null || E.refreshLabels(), (C = this.markProgress) == null || C.refreshLabels(), (T = (v = this.unregisterSticky) == null ? void 0 : v.refreshLabels) == null || T.call(v), this.bootResolved && await this.queuePluginApply(e);
2684
2739
  }
2685
2740
  /** applyOptions'ın asenkron kısmı — yalnızca queuePluginApply üzerinden, sırayla çalışır. */
2686
2741
  async applyPluginsAndPlayback(e) {
2687
2742
  if (e.ads && !this.adsController) {
2688
- const s = e.ads === !0 ? {} : e.ads;
2689
- Pt(s) && !this.prerollGate.isArmed && this.prerollGate.arm(s.prerollTimeoutMs ?? U), Rt(), e.countdownScreen || this.installAdsOnce(e);
2743
+ const r = e.ads === !0 ? {} : e.ads;
2744
+ Nt(r) && !this.prerollGate.isArmed && this.prerollGate.arm(r.prerollTimeoutMs ?? $), Dt(), e.countdownScreen || this.installAdsOnce(e);
2690
2745
  }
2691
2746
  await this.applyAudioMode(e);
2692
2747
  const i = () => ({
@@ -2697,59 +2752,59 @@ class Ae extends HTMLElement {
2697
2752
  i18n: this.i18n
2698
2753
  });
2699
2754
  if (e.countdownScreen && !this.countdownScreen) {
2700
- const { installCountdownScreen: s } = await import("./index-rENB3n9O.js");
2701
- this.countdownScreen = s(i(), e.countdownScreen);
2755
+ const { installCountdownScreen: r } = await import("./countdownScreen-CI-u6jjA.js");
2756
+ this.countdownScreen = r(i(), e.countdownScreen);
2702
2757
  }
2703
2758
  if (e.geoChecker && !this.geoChecker) {
2704
- const { installGeoChecker: s } = await import("./index-BBmuCtKu.js");
2705
- this.geoChecker = s(i(), e.geoChecker);
2759
+ const { installGeoChecker: r } = await import("./geoChecker-BRtvHwI-.js");
2760
+ this.geoChecker = r(i(), e.geoChecker);
2706
2761
  }
2707
2762
  this.unblockChrome("boot"), this.countdownScreen && !this.countdownScreen.isComplete() ? (this.pendingPlaybackOptions = e, this.playbackInitRegistered || (this.playbackInitRegistered = !0, this.countdownScreen.onComplete(() => {
2708
- const s = this.pendingPlaybackOptions;
2709
- this.pendingPlaybackOptions = null, s && this.initPlayback(s);
2763
+ const r = this.pendingPlaybackOptions;
2764
+ this.pendingPlaybackOptions = null, r && this.initPlayback(r);
2710
2765
  }))) : await this.initPlayback(e);
2711
2766
  }
2712
2767
  async initPlayback(e) {
2713
- var c, p, g, m, f, v, x;
2768
+ var p, m, u, f, y, x, k, w;
2714
2769
  this.sourceManager.configure(e.hls), this.errorScreen.dismiss(), await this.applyRewardedUnlock(e);
2715
- const i = (c = e.sources) != null && c.length ? e.sources : e.src ? [{ src: e.src, label: this.i18n.autoQuality }] : [];
2716
- this.sourceGroups = Re(i, e.sourcePriority);
2717
- const s = (d) => this.sourceManager.isLoaded(d.src, d.type) && !this.isSourceLocked(d), o = this.sourceGroups.findIndex((d) => d.sources.some(s));
2770
+ const i = (p = e.sources) != null && p.length ? e.sources : e.src ? [{ src: e.src, label: this.i18n.autoQuality }] : [];
2771
+ this.sourceGroups = Fe(i, e.sourcePriority);
2772
+ const r = (d) => this.sourceManager.isLoaded(d.src, d.type) && !this.isSourceLocked(d), o = this.sourceGroups.findIndex((d) => d.sources.some(r));
2718
2773
  this.activeGroup = o !== -1 ? o : this.firstPlayableGroup();
2719
- const a = ((p = this.sourceGroups[this.activeGroup]) == null ? void 0 : p.sources) ?? [];
2774
+ const a = ((m = this.sourceGroups[this.activeGroup]) == null ? void 0 : m.sources) ?? [];
2720
2775
  this.currentSources = a, this.fallbackPending = !1;
2721
- const h = a.find(s) ?? this.pickInitialSource(a);
2776
+ const h = a.find(r) ?? this.pickInitialSource(a);
2722
2777
  if (h && !this.sourceManager.isLoaded(h.src, h.type) && (a.length <= 1 && (this.controlBar.setQualities([], ""), this.hlsQualitiesShown = !1), await this.sourceManager.load(h.src, h.type), e.autoplay && this.videoEl.play().catch(() => {
2723
2778
  })), h && (this.activeSourceLabel = h.label), this.renderSourceQualities(), await this.installAdsOnce(e), await this.applySponsorship(e), await this.applyAdTriggers(e), await this.applyCast(e), e.gesture && !this.gestureControls) {
2724
- const d = e.gesture === !0 ? {} : e.gesture, { installGesture: u } = await import("./index-Ca8hocby.js");
2725
- this.gestureControls = u(
2779
+ const d = e.gesture === !0 ? {} : e.gesture, { installGesture: g } = await import("./gesture-BzPCgi87.js");
2780
+ this.gestureControls = g(
2726
2781
  { videoEl: this.videoEl, overlayContainerEl: this.videoArea, isAdActive: () => this.isAdPlaying() },
2727
2782
  d
2728
2783
  );
2729
2784
  }
2730
2785
  if (e.loopSection && !this.loopSection) {
2731
- const d = e.loopSection === !0 ? {} : e.loopSection, { installLoopSection: u } = await import("./index-f0vSgRIK.js");
2732
- this.loopSection = u(
2786
+ const d = e.loopSection === !0 ? {} : e.loopSection, { installLoopSection: g } = await import("./loopSection-CvF4l5uf.js");
2787
+ this.loopSection = g(
2733
2788
  {
2734
2789
  videoEl: this.videoEl,
2735
2790
  seekBarEl: this.controlBar.seekBar.el,
2736
2791
  markers: this.controlBar.seekBar,
2737
- addControlButton: (b, y, k) => this.controlBar.addButton(b, y, k),
2792
+ addControlButton: (b, E, C) => this.controlBar.addButton(b, E, C),
2738
2793
  i18n: this.i18n
2739
2794
  },
2740
2795
  d
2741
2796
  );
2742
2797
  }
2743
2798
  if (e.inViewAutoplay && !this.inViewAutoplay) {
2744
- const d = e.inViewAutoplay === !0 ? {} : e.inViewAutoplay, { installInViewAutoplay: u } = await import("./index-3QALpwsf.js");
2745
- this.inViewAutoplay = u(
2799
+ const d = e.inViewAutoplay === !0 ? {} : e.inViewAutoplay, { installInViewAutoplay: g } = await import("./inViewAutoplay-CRJe7GA4.js");
2800
+ this.inViewAutoplay = g(
2746
2801
  { videoEl: this.videoEl, observeEl: this, isAdActive: () => this.isAdPlaying() || this.casting },
2747
2802
  d
2748
2803
  );
2749
2804
  }
2750
2805
  if (e.sticky && !this.unregisterSticky) {
2751
- const d = e.sticky === !0 ? {} : e.sticky, { installSticky: u } = await import("./index-CDDke5rz.js");
2752
- this.unregisterSticky = u(
2806
+ const d = e.sticky === !0 ? {} : e.sticky, { installSticky: g } = await import("./sticky-D_eLCNFk.js");
2807
+ this.unregisterSticky = g(
2753
2808
  {
2754
2809
  key: this.instanceKey,
2755
2810
  videoEl: this.videoEl,
@@ -2763,19 +2818,19 @@ class Ae extends HTMLElement {
2763
2818
  );
2764
2819
  }
2765
2820
  if (e.playlist && !this.playlistRunner) {
2766
- const { installPlaylist: d } = await import("./index-D3Z7ZDLJ.js");
2821
+ const { installPlaylist: d } = await import("./playlist-DYGbJ5wz.js");
2767
2822
  this.playlistRunner = d(
2768
2823
  {
2769
2824
  videoEl: this.videoEl,
2770
2825
  hostEl: this,
2771
2826
  panelEl: this.getOrCreatePanelContainer(),
2772
- loadSource: (u, b) => this.sourceManager.load(u, b),
2773
- setPoster: (u) => {
2774
- this.videoEl.poster = u;
2827
+ loadSource: (g, b) => this.sourceManager.load(g, b),
2828
+ setPoster: (g) => {
2829
+ this.videoEl.poster = g;
2775
2830
  },
2776
- requestFreshAd: (u) => {
2831
+ requestFreshAd: (g) => {
2777
2832
  var b;
2778
- return (b = this.adsController) == null ? void 0 : b.resetForNewItem(u);
2833
+ return (b = this.adsController) == null ? void 0 : b.resetForNewItem(g);
2779
2834
  },
2780
2835
  i18n: this.i18n
2781
2836
  },
@@ -2783,20 +2838,20 @@ class Ae extends HTMLElement {
2783
2838
  );
2784
2839
  }
2785
2840
  if (e.story && !this.hopeStory) {
2786
- const { installStory: d } = await import("./index-C3BQGcT3.js");
2841
+ const { installStory: d } = await import("./story-H6f7gSoX.js");
2787
2842
  this.hopeStory = d(
2788
2843
  {
2789
2844
  videoEl: this.videoEl,
2790
2845
  hostEl: this,
2791
2846
  videoAreaEl: this.videoArea,
2792
2847
  playerBodyEls: [this.root.querySelector(".media-layer"), this.chromeEl, this.centerPlayButton],
2793
- loadSource: (u, b) => this.sourceManager.load(u, b),
2794
- setPoster: (u) => {
2795
- this.videoEl.poster = u;
2848
+ loadSource: (g, b) => this.sourceManager.load(g, b),
2849
+ setPoster: (g) => {
2850
+ this.videoEl.poster = g;
2796
2851
  },
2797
- requestFreshAd: (u) => {
2852
+ requestFreshAd: (g) => {
2798
2853
  var b;
2799
- return (b = this.adsController) == null ? void 0 : b.resetForNewItem(u);
2854
+ return (b = this.adsController) == null ? void 0 : b.resetForNewItem(g);
2800
2855
  },
2801
2856
  i18n: this.i18n
2802
2857
  },
@@ -2804,23 +2859,23 @@ class Ae extends HTMLElement {
2804
2859
  );
2805
2860
  }
2806
2861
  if (e.markers && !this.markProgress) {
2807
- const { installMarkers: d } = await import("./index-e00_M05B.js");
2862
+ const { installMarkers: d } = await import("./markers-BhMJLPqj.js");
2808
2863
  this.markProgress = d(
2809
2864
  {
2810
2865
  videoEl: this.videoEl,
2811
2866
  overlayContainerEl: this.videoArea,
2812
- addSeekBarMarker: (u, b) => this.controlBar.seekBar.addMarker(u, b),
2867
+ addSeekBarMarker: (g, b) => this.controlBar.seekBar.addMarker(g, b),
2813
2868
  i18n: this.i18n
2814
2869
  },
2815
2870
  e.markers
2816
2871
  );
2817
2872
  }
2818
- if ((g = e.segments) != null && g.length && !this.segments) {
2819
- const { installSegments: d } = await import("./index-CBX7bn-G.js");
2873
+ if ((u = e.segments) != null && u.length && !this.segments) {
2874
+ const { installSegments: d } = await import("./segments-LsZPlbYi.js");
2820
2875
  this.segments = d({ videoEl: this.videoEl, seekBar: this.controlBar.seekBar }, e.segments);
2821
2876
  }
2822
2877
  if (e.spriteThumbnails && !this.spriteThumbnails) {
2823
- const { installSpriteThumbnails: d } = await import("./index-BXSND_xN.js");
2878
+ const { installSpriteThumbnails: d } = await import("./spriteThumbnails-BQkEBRu-.js");
2824
2879
  this.spriteThumbnails = d(
2825
2880
  {
2826
2881
  videoEl: this.videoEl,
@@ -2830,15 +2885,16 @@ class Ae extends HTMLElement {
2830
2885
  e.spriteThumbnails
2831
2886
  );
2832
2887
  }
2833
- if (e.redirectScreen && !this.redirectScreen) {
2834
- const { installRedirectScreen: d } = await import("./index-D6r-BGAV.js");
2888
+ const c = e.redirectScreen ? JSON.stringify(e.redirectScreen) : "";
2889
+ if (c !== this.redirectKey && (this.redirectKey = c, (f = this.redirectScreen) == null || f.destroy(), this.redirectScreen = null, e.redirectScreen)) {
2890
+ const { installRedirectScreen: d } = await import("./redirectScreen-CSjrS8Kg.js");
2835
2891
  this.redirectScreen = d(
2836
- { videoEl: this.videoEl, overlayContainerEl: this.videoArea, isAdActive: () => this.isAdPlaying(), i18n: this.i18n },
2892
+ { hostEl: this, videoEl: this.videoEl, overlayContainerEl: this.videoArea, isAdActive: () => this.isAdPlaying(), i18n: this.i18n },
2837
2893
  e.redirectScreen
2838
2894
  );
2839
2895
  }
2840
2896
  if (e.qrResume && !this.qrResume) {
2841
- const { installQrResume: d } = await import("./index-DT8-oMPm.js");
2897
+ const { installQrResume: d } = await import("./qrResume-DXwD3oSA.js");
2842
2898
  this.qrResume = d({ videoEl: this.videoEl, overlayContainerEl: this.videoArea, i18n: this.i18n }, e.qrResume);
2843
2899
  }
2844
2900
  if (this.qrResume) {
@@ -2850,12 +2906,12 @@ class Ae extends HTMLElement {
2850
2906
  });
2851
2907
  }
2852
2908
  if (e.tapGestures && !this.tapGestures) {
2853
- const { installTapGestures: d } = await import("./index-C5oGMHF_.js");
2909
+ const { installTapGestures: d } = await import("./tapGestures-DrC42DiI.js");
2854
2910
  this.tapGestures = d(
2855
2911
  {
2856
2912
  areaEl: this.videoArea,
2857
- seekBy: (u) => {
2858
- this.controlBar.seekBar.el.style.pointerEvents !== "none" && (ve(this.videoEl, u), this.seekFeedback.show(u));
2913
+ seekBy: (g) => {
2914
+ this.controlBar.seekBar.el.style.pointerEvents !== "none" && (we(this.videoEl, g), this.seekFeedback.show(g));
2859
2915
  },
2860
2916
  togglePlay: () => this.videoEl.paused ? void this.videoEl.play().catch(() => {
2861
2917
  }) : this.videoEl.pause(),
@@ -2868,63 +2924,63 @@ class Ae extends HTMLElement {
2868
2924
  );
2869
2925
  }
2870
2926
  if (this.tapGestures) {
2871
- const { DEFAULT_TAP_GESTURES: d } = await import("./index-C5oGMHF_.js");
2927
+ const { DEFAULT_TAP_GESTURES: d } = await import("./tapGestures-DrC42DiI.js");
2872
2928
  this.tapGestures.setGestures(e.tapGestures === !0 ? d : e.tapGestures || []);
2873
2929
  }
2874
- if ((m = e.pauseAd) != null && m.adUnitPath && !this.pauseAd) {
2875
- const { installPauseAd: d } = await import("./index-CDPrkLq0.js");
2930
+ if ((y = e.pauseAd) != null && y.adUnitPath && !this.pauseAd) {
2931
+ const { installPauseAd: d } = await import("./pauseAd-BQQe21X4.js");
2876
2932
  this.pauseAd = d(
2877
2933
  { videoEl: this.videoEl, hostEl: this, videoArea: this.videoArea, i18n: this.i18n, isBlocked: () => this.isChromeBlocked },
2878
2934
  e.pauseAd
2879
2935
  );
2880
2936
  }
2881
2937
  if (e.dubbing && !this.dubbing) {
2882
- const { installDubbing: d } = await import("./index-DXWK4EFa.js");
2938
+ const { installDubbing: d } = await import("./dubbing-kNMPpyHl.js");
2883
2939
  this.dubbing = d(
2884
2940
  {
2885
2941
  videoEl: this.videoEl,
2886
- loadSource: (u, b) => this.sourceManager.load(u, b),
2887
- registerSubmenu: (u) => this.controlBar.settingsMenu.registerSubmenu(u),
2888
- unregisterSubmenu: (u) => this.controlBar.settingsMenu.unregisterSubmenu(u),
2942
+ loadSource: (g, b) => this.sourceManager.load(g, b),
2943
+ registerSubmenu: (g) => this.controlBar.settingsMenu.registerSubmenu(g),
2944
+ unregisterSubmenu: (g) => this.controlBar.settingsMenu.unregisterSubmenu(g),
2889
2945
  i18n: this.i18n
2890
2946
  },
2891
2947
  e.dubbing
2892
2948
  );
2893
2949
  }
2894
2950
  if (e.liveWallClock && !this.liveWallClock) {
2895
- const d = e.liveWallClock === !0 ? {} : e.liveWallClock, { installLiveWallClock: u } = await import("./index-7IBf8Y-R.js");
2896
- this.liveWallClock = u(
2951
+ const d = e.liveWallClock === !0 ? {} : e.liveWallClock, { installLiveWallClock: g } = await import("./liveWallClock-ChUTtzLD.js");
2952
+ this.liveWallClock = g(
2897
2953
  {
2898
2954
  videoEl: this.videoEl,
2899
2955
  seekBarEl: this.controlBar.seekBar.el,
2900
2956
  addControlElement: (b) => this.controlBar.addElement(b),
2901
2957
  i18n: this.i18n,
2902
2958
  getPlayingDate: () => {
2903
- var E, C, w;
2904
- const b = (E = this.sourceManager.hlsInstance) == null ? void 0 : E.playingDate;
2959
+ var v, T, S;
2960
+ const b = (v = this.sourceManager.hlsInstance) == null ? void 0 : v.playingDate;
2905
2961
  if (b) return b;
2906
- const y = (w = (C = this.videoEl).getStartDate) == null ? void 0 : w.call(C), k = (y == null ? void 0 : y.getTime()) ?? NaN;
2907
- return Number.isFinite(k) && k > 0 ? new Date(k + this.videoEl.currentTime * 1e3) : null;
2962
+ const E = (S = (T = this.videoEl).getStartDate) == null ? void 0 : S.call(T), C = (E == null ? void 0 : E.getTime()) ?? NaN;
2963
+ return Number.isFinite(C) && C > 0 ? new Date(C + this.videoEl.currentTime * 1e3) : null;
2908
2964
  }
2909
2965
  },
2910
2966
  d
2911
2967
  ), this.controlBar.seekBar.liveHoverHandled = !0;
2912
2968
  }
2913
2969
  if (e.dai && !this.daiController) {
2914
- const { installDai: d } = await import("./index-Q8FMOHj0.js");
2970
+ const { installDai: d } = await import("./dai-B9Tth1Iv.js");
2915
2971
  this.daiController = await d(
2916
2972
  {
2917
2973
  videoEl: this.videoEl,
2918
2974
  hostEl: this,
2919
2975
  adUiEl: this.adLayerEl,
2920
- loadStreamUrl: (u) => this.sourceManager.load(u),
2976
+ loadStreamUrl: (g) => this.sourceManager.load(g),
2921
2977
  disableSeeking: () => this.disableSeeking(),
2922
2978
  enableSeeking: () => this.enableSeeking()
2923
2979
  },
2924
2980
  e.dai
2925
2981
  );
2926
2982
  }
2927
- (f = e.subtitles) != null && f.length ? this.optionTracks = tt(this.videoEl, e.subtitles) : (we(this.videoEl), this.optionTracks = []), this.rebuildCaptions(((x = (v = e.subtitles) == null ? void 0 : v.find((d) => d.default)) == null ? void 0 : x.label) ?? null);
2983
+ (x = e.subtitles) != null && x.length ? this.optionTracks = at(this.videoEl, e.subtitles) : (Se(this.videoEl), this.optionTracks = []), this.rebuildCaptions(((w = (k = e.subtitles) == null ? void 0 : k.find((d) => d.default)) == null ? void 0 : w.label) ?? null);
2928
2984
  }
2929
2985
  /** Altyazı menüsünü `options.subtitles` + yayın izlerinden kurar; `activeLabel` varsa onu seçer. */
2930
2986
  rebuildCaptions(e) {
@@ -2934,18 +2990,18 @@ class Ae extends HTMLElement {
2934
2990
  }
2935
2991
  const i = (o) => {
2936
2992
  var l;
2937
- const a = it(this.subtitleTracks, o);
2993
+ const a = nt(this.subtitleTracks, o);
2938
2994
  this.activeCaptionLabel = a ? o : null, this.sourceManager.selectTextTrack(((l = this.streamTracks.find((h) => h.label === o)) == null ? void 0 : l.id) ?? null), this.captionRenderer.setActiveTrack(a), this.captionTrackActive = a !== null, this.controlBar.settingsMenu.setActiveCaption(a ? o : this.i18n.captionsOff), this.controlBar.settingsMenu.setCaptionAppearance(a !== null ? this.buildCaptionAppearance() : null);
2939
2995
  };
2940
2996
  this.selectCaption = i;
2941
- const s = e && this.subtitleTracks.some((o) => o.label === e) ? e : null;
2997
+ const r = e && this.subtitleTracks.some((o) => o.label === e) ? e : null;
2942
2998
  this.controlBar.setCaptions(
2943
2999
  [
2944
3000
  { label: this.i18n.captionsOff, onSelect: () => i(null) },
2945
3001
  ...this.subtitleTracks.map(({ label: o }) => ({ label: o, onSelect: () => i(o) }))
2946
3002
  ],
2947
- s ?? this.i18n.captionsOff
2948
- ), i(s);
3003
+ r ?? this.i18n.captionsOff
3004
+ ), i(r);
2949
3005
  }
2950
3006
  /**
2951
3007
  * Yayın izinin menü adı: manifestteki ad teknik/boşsa ("stream_5", "und", dil kodunun kendisi) dil kodundan
@@ -2961,13 +3017,13 @@ class Ae extends HTMLElement {
2961
3017
  return e || i;
2962
3018
  }
2963
3019
  /** Aynı adlı iz varsa (ör. options.subtitles'ta da "English") dil/sırayla ayırt edilir. */
2964
- uniqueLabel(e, i, s) {
2965
- const o = s.has(e) ? `${e} (${i})` : e;
2966
- return s.add(o), o;
3020
+ uniqueLabel(e, i, r) {
3021
+ const o = r.has(e) ? `${e} (${i})` : e;
3022
+ return r.add(o), o;
2967
3023
  }
2968
3024
  /** Ayarlar menüsünün "Altyazı" alt menüsüne eklenen Boyut/Renk/Konum satırları — her zaman GÜNCEL `this.i18n`'i okur (dil sonradan değişse bile). */
2969
3025
  buildCaptionAppearance() {
2970
- const e = ["small", "normal", "large"], i = (s, o, a, l) => s.map((h, c) => ({
3026
+ const e = ["small", "normal", "large"], i = (r, o, a, l) => r.map((h, c) => ({
2971
3027
  value: h,
2972
3028
  active: o() === h,
2973
3029
  ariaLabel: `${l} ${c + 1}`,
@@ -2975,23 +3031,23 @@ class Ae extends HTMLElement {
2975
3031
  }));
2976
3032
  return {
2977
3033
  sizeLabel: this.i18n.captionSize,
2978
- getSizeOptions: () => e.map((s) => ({
2979
- label: s === "small" ? this.i18n.captionSizeSmall : s === "large" ? this.i18n.captionSizeLarge : this.i18n.captionSizeNormal,
2980
- active: this.captionRenderer.getFontSize() === s,
2981
- onSelect: () => this.captionRenderer.setFontSize(s)
3034
+ getSizeOptions: () => e.map((r) => ({
3035
+ label: r === "small" ? this.i18n.captionSizeSmall : r === "large" ? this.i18n.captionSizeLarge : this.i18n.captionSizeNormal,
3036
+ active: this.captionRenderer.getFontSize() === r,
3037
+ onSelect: () => this.captionRenderer.setFontSize(r)
2982
3038
  })),
2983
3039
  bgColorLabel: this.i18n.captionBgColor,
2984
3040
  getBgColorOptions: () => i(
2985
- R.BG_COLOR_PRESETS,
3041
+ z.BG_COLOR_PRESETS,
2986
3042
  () => this.captionRenderer.getBgColor(),
2987
- (s) => this.captionRenderer.setBgColor(s),
3043
+ (r) => this.captionRenderer.setBgColor(r),
2988
3044
  this.i18n.captionBgColor
2989
3045
  ),
2990
3046
  textColorLabel: this.i18n.captionTextColor,
2991
3047
  getTextColorOptions: () => i(
2992
- R.TEXT_COLOR_PRESETS,
3048
+ z.TEXT_COLOR_PRESETS,
2993
3049
  () => this.captionRenderer.getTextColor(),
2994
- (s) => this.captionRenderer.setTextColor(s),
3050
+ (r) => this.captionRenderer.setTextColor(r),
2995
3051
  this.i18n.captionTextColor
2996
3052
  ),
2997
3053
  resetPositionLabel: this.i18n.captionResetPosition,
@@ -3016,18 +3072,18 @@ class Ae extends HTMLElement {
3016
3072
  pickInitialSource(e) {
3017
3073
  const i = e.find((o) => o.selected) ?? e[0];
3018
3074
  if (!i || !this.isSourceLocked(i)) return i;
3019
- const s = e.filter((o) => !this.isSourceLocked(o));
3020
- return s.length ? s.reduce((o, a) => (this.sourceHeight(a) ?? 0) > (this.sourceHeight(o) ?? 0) ? a : o) : i;
3075
+ const r = e.filter((o) => !this.isSourceLocked(o));
3076
+ return r.length ? r.reduce((o, a) => (this.sourceHeight(a) ?? 0) > (this.sourceHeight(o) ?? 0) ? a : o) : i;
3021
3077
  }
3022
3078
  renderSourceQualities() {
3023
3079
  const e = this.currentSources;
3024
3080
  e.length <= 1 || this.controlBar.setQualities(
3025
3081
  e.map((i) => {
3026
- const s = this.isSourceLocked(i);
3082
+ const r = this.isSourceLocked(i);
3027
3083
  return {
3028
3084
  label: i.label,
3029
- locked: s,
3030
- onSelect: s ? () => {
3085
+ locked: r,
3086
+ onSelect: r ? () => {
3031
3087
  var o;
3032
3088
  return (o = this.qualityGate) == null ? void 0 : o.requestUnlock();
3033
3089
  } : () => void this.switchQualitySource(i)
@@ -3044,8 +3100,8 @@ class Ae extends HTMLElement {
3044
3100
  for (const i of this.lastHlsLevels) this.qualityGate.isLocked(i.height) && e.push(i.height);
3045
3101
  else
3046
3102
  for (const i of this.currentSources) {
3047
- const s = this.sourceHeight(i);
3048
- this.currentSources.length > 1 && this.qualityGate.isLocked(s) && e.push(s ?? 0);
3103
+ const r = this.sourceHeight(i);
3104
+ this.currentSources.length > 1 && this.qualityGate.isLocked(r) && e.push(r ?? 0);
3049
3105
  }
3050
3106
  return e.length ? `${Math.max(...e)}p` : null;
3051
3107
  }
@@ -3055,7 +3111,7 @@ class Ae extends HTMLElement {
3055
3111
  if (this.lastHlsLevels.length > 1)
3056
3112
  this.onHlsLevelsChanged(this.lastHlsLevels, e ? -1 : this.lastHlsActive), e && this.sourceManager.setLevel(-1);
3057
3113
  else if (this.currentSources.length > 1) {
3058
- const s = e ? this.currentSources.filter((l) => !this.isSourceLocked(l)).reduce((l, h) => !l || (this.sourceHeight(h) ?? 0) > (this.sourceHeight(l) ?? 0) ? h : l, null) : null, o = this.currentSources.find((l) => l.label === this.activeSourceLabel), a = s ?? (o && this.isSourceLocked(o) ? this.pickInitialSource(this.currentSources) : null);
3114
+ const r = e ? this.currentSources.filter((l) => !this.isSourceLocked(l)).reduce((l, h) => !l || (this.sourceHeight(h) ?? 0) > (this.sourceHeight(l) ?? 0) ? h : l, null) : null, o = this.currentSources.find((l) => l.label === this.activeSourceLabel), a = r ?? (o && this.isSourceLocked(o) ? this.pickInitialSource(this.currentSources) : null);
3059
3115
  a && a.label !== this.activeSourceLabel ? this.switchQualitySource(a) : this.renderSourceQualities();
3060
3116
  }
3061
3117
  (i = this.rewardedUnlock) == null || i.onQualitiesChanged();
@@ -3069,8 +3125,8 @@ class Ae extends HTMLElement {
3069
3125
  if (this.rewardedUnlock)
3070
3126
  this.rewardedUnlock.update(i);
3071
3127
  else {
3072
- const { installRewardedUnlock: s } = await import("./index-BbRYOSvk.js");
3073
- this.rewardedUnlock ?? (this.rewardedUnlock = s(
3128
+ const { installRewardedUnlock: r } = await import("./rewardedUnlock-DZ_qPcDG.js");
3129
+ this.rewardedUnlock ?? (this.rewardedUnlock = r(
3074
3130
  {
3075
3131
  hostEl: this,
3076
3132
  videoEl: this.videoEl,
@@ -3097,20 +3153,20 @@ class Ae extends HTMLElement {
3097
3153
  * yüklediği medya (playlist, hikâye, dublaj) çalıyorsa onun adresi.
3098
3154
  */
3099
3155
  contentKey() {
3100
- const e = this.sourceGroups.flatMap((s) => s.sources.map((o) => o.src)), i = this.sourceManager.currentSrc ?? "";
3156
+ const e = this.sourceGroups.flatMap((r) => r.sources.map((o) => o.src)), i = this.sourceManager.currentSrc ?? "";
3101
3157
  return !i || e.includes(i) ? e.join("|") : i;
3102
3158
  }
3103
3159
  async applyCast(e) {
3104
- var s;
3160
+ var r;
3105
3161
  const i = e.cast;
3106
3162
  if (!(i != null && i.chromecast) && !(i != null && i.airplay) && !(i != null && i.remotePlayback)) {
3107
- (s = this.castController) == null || s.destroy(), this.castController = null;
3163
+ (r = this.castController) == null || r.destroy(), this.castController = null;
3108
3164
  return;
3109
3165
  }
3110
3166
  if (this.castController)
3111
3167
  this.castController.update(i);
3112
3168
  else {
3113
- const { installCast: o } = await import("./index-Miba3PD_.js");
3169
+ const { installCast: o } = await import("./cast-bMrkGGuD.js");
3114
3170
  this.castController ?? (this.castController = o(
3115
3171
  {
3116
3172
  hostEl: this,
@@ -3134,48 +3190,48 @@ class Ae extends HTMLElement {
3134
3190
  }
3135
3191
  /** TV'ye gönderilecek içerik: o an çalan kaynak (ya da `cast.source`), başlık / kapak, altyazılar, reklam tag'leri. */
3136
3192
  castMedia() {
3137
- var x, d, u, b;
3138
- const e = this._options, i = e.cast ?? {}, s = this.sourceManager.currentSrc;
3139
- if (!s) return null;
3140
- const o = (x = this.currentSources.find((y) => y.src === s)) == null ? void 0 : x.type, a = typeof i.source == "function" ? i.source({ src: s, type: o }) : i.source ?? { src: s, type: o }, l = typeof a == "string" ? { src: a, type: void 0 } : a, h = (y) => new URL(y, document.baseURI).href, c = fe({ src: l.src, type: l.type }), p = typeof e.audio == "object" ? e.audio : null, g = ((d = i.metadata) == null ? void 0 : d.image) ?? (p == null ? void 0 : p.cover) ?? e.poster, m = typeof e.ads == "object" ? e.ads : null, f = (y) => {
3141
- const k = Array.isArray(y) ? y[0] : y;
3142
- return k ? G(k) : void 0;
3143
- }, v = i.ads === !1 ? null : typeof i.ads == "object" ? {
3144
- vmap: i.ads.vmap ? G(i.ads.vmap) : void 0,
3145
- preroll: f(i.ads.preroll),
3146
- midroll: f(i.ads.midroll),
3193
+ var d, g, b, E, C;
3194
+ const e = this._options, i = e.cast ?? {}, r = this.sourceManager.currentSrc;
3195
+ if (!r) return null;
3196
+ const o = (d = this.currentSources.find((v) => v.src === r)) == null ? void 0 : d.type, a = typeof i.source == "function" ? i.source({ src: r, type: o }) : i.source ?? { src: r, type: o }, l = typeof a == "string" ? { src: a, type: void 0 } : a, h = (v) => new URL(v, document.baseURI).href, c = ke({ src: l.src, type: l.type }), p = typeof e.audio == "object" ? e.audio : null, m = ((g = i.metadata) == null ? void 0 : g.image) ?? (p == null ? void 0 : p.cover) ?? e.poster, u = typeof e.ads == "object" ? e.ads : null, f = u == null ? void 0 : u.prebid, y = f == null ? void 0 : f.custParams, x = f ? { ...j(f.custParams), ...j((b = f.midroll) == null ? void 0 : b.custParams) } : void 0, k = (v, T) => {
3197
+ const S = Array.isArray(v) ? v[0] : v;
3198
+ return S ? Bt(U(S), T) : void 0;
3199
+ }, w = i.ads === !1 ? null : typeof i.ads == "object" ? {
3200
+ vmap: i.ads.vmap ? U(i.ads.vmap) : void 0,
3201
+ preroll: k(i.ads.preroll),
3202
+ midroll: k(i.ads.midroll),
3147
3203
  midrollIntervalSeconds: i.ads.midrollIntervalSeconds,
3148
- postroll: f(i.ads.postroll)
3149
- } : m ? {
3150
- vmap: m.adTagVmap ? G(m.adTagVmap) : void 0,
3151
- preroll: f(m.adTagPreroll),
3152
- midroll: f(m.adTagMidroll),
3153
- midrollIntervalSeconds: m.midrollIntervalSeconds,
3154
- postroll: f(m.adTagPostroll)
3204
+ postroll: k(i.ads.postroll)
3205
+ } : u ? {
3206
+ vmap: u.adTagVmap ? U(u.adTagVmap) : void 0,
3207
+ preroll: k(u.adTagPreroll, y),
3208
+ midroll: k(u.adTagMidroll, x),
3209
+ midrollIntervalSeconds: u.midrollIntervalSeconds,
3210
+ postroll: k(u.adTagPostroll)
3155
3211
  } : null;
3156
3212
  return {
3157
3213
  src: h(l.src),
3158
- contentType: l.type || Ft[c] || "video/mp4",
3214
+ contentType: l.type || _t[c] || "video/mp4",
3159
3215
  live: this.videoEl.duration === 1 / 0,
3160
- title: ((u = i.metadata) == null ? void 0 : u.title) ?? (p == null ? void 0 : p.title),
3161
- subtitle: ((b = i.metadata) == null ? void 0 : b.subtitle) ?? (p == null ? void 0 : p.artist),
3162
- image: g ? h(g) : void 0,
3216
+ title: ((E = i.metadata) == null ? void 0 : E.title) ?? (p == null ? void 0 : p.title),
3217
+ subtitle: ((C = i.metadata) == null ? void 0 : C.subtitle) ?? (p == null ? void 0 : p.artist),
3218
+ image: m ? h(m) : void 0,
3163
3219
  music: !!e.audio,
3164
- subtitles: (e.subtitles ?? []).map((y) => ({ src: h(y.src), label: y.label, lang: y.srclang, default: y.default })),
3165
- ads: v && (v.vmap || v.preroll || v.midroll || v.postroll) ? v : null
3220
+ subtitles: (e.subtitles ?? []).map((v) => ({ src: h(v.src), label: v.label, lang: v.srclang, default: v.default })),
3221
+ ads: w && (w.vmap || w.preroll || w.midroll || w.postroll) ? w : null
3166
3222
  };
3167
3223
  }
3168
3224
  async applyAdTriggers(e) {
3169
- var s;
3225
+ var r;
3170
3226
  const i = e.adTriggers;
3171
3227
  if (!(i != null && i.endpoint) && !(i != null && i.config)) {
3172
- (s = this.adTriggers) == null || s.destroy(), this.adTriggers = null;
3228
+ (r = this.adTriggers) == null || r.destroy(), this.adTriggers = null;
3173
3229
  return;
3174
3230
  }
3175
3231
  if (this.adTriggers)
3176
3232
  this.adTriggers.update(i);
3177
3233
  else {
3178
- const { installAdTriggers: o } = await import("./index-CWLyz1fp.js");
3234
+ const { installAdTriggers: o } = await import("./adTriggers-DXmtF4t2.js");
3179
3235
  this.adTriggers ?? (this.adTriggers = o(
3180
3236
  {
3181
3237
  hostEl: this,
@@ -3193,16 +3249,16 @@ class Ae extends HTMLElement {
3193
3249
  }
3194
3250
  }
3195
3251
  async applySponsorship(e) {
3196
- var s;
3252
+ var r;
3197
3253
  const i = e.sponsorship;
3198
3254
  if (!(i != null && i.endpoint)) {
3199
- (s = this.sponsorship) == null || s.destroy(), this.sponsorship = null;
3255
+ (r = this.sponsorship) == null || r.destroy(), this.sponsorship = null;
3200
3256
  return;
3201
3257
  }
3202
3258
  if (this.sponsorship)
3203
3259
  this.sponsorship.update(i);
3204
3260
  else {
3205
- const { installSponsorship: o } = await import("./index-Ch3ep-eJ.js");
3261
+ const { installSponsorship: o } = await import("./sponsorship-BT21uwN5.js");
3206
3262
  this.sponsorship ?? (this.sponsorship = o(
3207
3263
  {
3208
3264
  hostEl: this,
@@ -3218,21 +3274,21 @@ class Ae extends HTMLElement {
3218
3274
  /** Kalite değişirken oynatma konumunu ve play/pause durumunu korur. */
3219
3275
  async switchQualitySource(e) {
3220
3276
  this.activeSourceLabel = e.label, this.renderSourceQualities();
3221
- const i = this.videoEl.currentTime, s = !this.videoEl.paused;
3222
- await this.sourceManager.load(e.src, e.type), this.videoEl.currentTime = i, s && this.videoEl.play().catch(() => {
3277
+ const i = this.videoEl.currentTime, r = !this.videoEl.paused;
3278
+ await this.sourceManager.load(e.src, e.type), this.videoEl.currentTime = i, r && this.videoEl.play().catch(() => {
3223
3279
  }), this.dispatchEvent(new CustomEvent("hp:qualitychange", { detail: { label: e.label } }));
3224
3280
  }
3225
3281
  /** `from`'dan itibaren tarayıcının oynatabileceği ilk grup (oynatamadıkları atlanır); hiçbiri yoksa -1 (from 0'sa 0 — yine de dene). */
3226
3282
  firstPlayableGroup(e = 0) {
3227
3283
  var i;
3228
- for (let s = e; s < this.sourceGroups.length; s++) {
3229
- const o = this.sourceGroups[s];
3230
- if (!ze(o, this.videoEl)) {
3231
- if (s > e) {
3284
+ for (let r = e; r < this.sourceGroups.length; r++) {
3285
+ const o = this.sourceGroups[r];
3286
+ if (!De(o, this.videoEl)) {
3287
+ if (r > e) {
3232
3288
  const a = this.sourceGroups[e].format;
3233
3289
  this.dispatchEvent(new CustomEvent("hp:sourcefallback", { detail: { from: a, to: o.format, code: 4, skipped: !0 } }));
3234
3290
  }
3235
- return s;
3291
+ return r;
3236
3292
  }
3237
3293
  this.log.add({ source: "player", message: `Source format "${o.format}" is not playable in this browser — skipped`, details: { src: (i = o.sources[0]) == null ? void 0 : i.src } });
3238
3294
  }
@@ -3249,17 +3305,17 @@ class Ae extends HTMLElement {
3249
3305
  if (!e || this.sourceGroups.length < 2 || !e.sources.some((h) => h.src === this.sourceManager.currentSrc)) return !1;
3250
3306
  const i = ((l = this.videoEl.error) == null ? void 0 : l.code) ?? this.streamErrorCode;
3251
3307
  if (this.streamErrorCode = void 0, i === 1) return !1;
3252
- const s = this.firstPlayableGroup(this.activeGroup + 1);
3253
- if (s === -1) return !1;
3308
+ const r = this.firstPlayableGroup(this.activeGroup + 1);
3309
+ if (r === -1) return !1;
3254
3310
  this.fallbackPending = !0;
3255
3311
  const o = Number.isFinite(this.videoEl.duration) ? this.videoEl.currentTime : 0, a = !this.videoEl.paused || !!this._options.autoplay;
3256
3312
  return this.log.add({
3257
3313
  source: "player",
3258
- message: `Source "${e.format}" failed — falling back to "${this.sourceGroups[s].format}"`,
3314
+ message: `Source "${e.format}" failed — falling back to "${this.sourceGroups[r].format}"`,
3259
3315
  details: { code: i, src: this.sourceManager.currentSrc ?? void 0 }
3260
- }), this.dispatchEvent(new CustomEvent("hp:sourcefallback", { detail: { from: e.format, to: this.sourceGroups[s].format, code: i } })), queueMicrotask(() => void this.activateSourceGroup(s, o, a)), !0;
3316
+ }), this.dispatchEvent(new CustomEvent("hp:sourcefallback", { detail: { from: e.format, to: this.sourceGroups[r].format, code: i } })), queueMicrotask(() => void this.activateSourceGroup(r, o, a)), !0;
3261
3317
  }
3262
- async activateSourceGroup(e, i, s) {
3318
+ async activateSourceGroup(e, i, r) {
3263
3319
  var l;
3264
3320
  const o = this.sourceGroups[e];
3265
3321
  if (!o) return;
@@ -3271,12 +3327,12 @@ class Ae extends HTMLElement {
3271
3327
  } finally {
3272
3328
  this.fallbackPending = !1;
3273
3329
  }
3274
- this.renderSourceQualities(), (l = this.rewardedUnlock) == null || l.onQualitiesChanged(), s && this.videoEl.play().catch(() => {
3330
+ this.renderSourceQualities(), (l = this.rewardedUnlock) == null || l.onQualitiesChanged(), r && this.videoEl.play().catch(() => {
3275
3331
  });
3276
3332
  }
3277
3333
  /** Hata ekranındaki "Tekrar dene": birden fazla grup varsa en öncelikli gruptan baştan başla. */
3278
3334
  async retrySource() {
3279
- const e = this.sourceGroups.some((s) => s.sources.some((o) => o.src === this.sourceManager.currentSrc));
3335
+ const e = this.sourceGroups.some((r) => r.sources.some((o) => o.src === this.sourceManager.currentSrc));
3280
3336
  if (this.sourceGroups.length < 2 || !e) return this.sourceManager.reload();
3281
3337
  const i = Number.isFinite(this.videoEl.duration) ? this.videoEl.currentTime : 0;
3282
3338
  this.fallbackPending = !0, await this.activateSourceGroup(this.firstPlayableGroup(), i, !0);
@@ -3289,15 +3345,15 @@ class Ae extends HTMLElement {
3289
3345
  requestFullscreenCompat() {
3290
3346
  if (this.audioMode) return;
3291
3347
  const e = this, i = () => {
3292
- var s, o;
3293
- return (o = (s = this.iosVideo).webkitEnterFullscreen) == null ? void 0 : o.call(s);
3348
+ var r, o;
3349
+ return (o = (r = this.iosVideo).webkitEnterFullscreen) == null ? void 0 : o.call(r);
3294
3350
  };
3295
3351
  e.requestFullscreen ? e.requestFullscreen().catch(i) : e.webkitRequestFullscreen ? e.webkitRequestFullscreen() : i();
3296
3352
  }
3297
3353
  exitFullscreenCompat() {
3298
- var i, s;
3354
+ var i, r;
3299
3355
  if (this.iosVideo.webkitDisplayingFullscreen) {
3300
- (s = (i = this.iosVideo).webkitExitFullscreen) == null || s.call(i);
3356
+ (r = (i = this.iosVideo).webkitExitFullscreen) == null || r.call(i);
3301
3357
  return;
3302
3358
  }
3303
3359
  const e = document;
@@ -3335,20 +3391,20 @@ class Ae extends HTMLElement {
3335
3391
  * alanın ortasına alınır, sığmazsa küçülür (en az 40px).
3336
3392
  */
3337
3393
  layoutCenterPlay() {
3338
- const e = this.videoArea, i = e.getBoundingClientRect(), s = this.controlBar.seekBar.el.getBoundingClientRect(), o = () => {
3394
+ const e = this.videoArea, i = e.getBoundingClientRect(), r = this.controlBar.seekBar.el.getBoundingClientRect(), o = () => {
3339
3395
  e.removeAttribute("data-center-play-shifted"), e.style.removeProperty("--hp-center-play-size"), e.style.removeProperty("--hp-center-play-shift"), e.style.removeProperty("--hp-center-play-shift-x");
3340
3396
  };
3341
- if (!i.height || !s.height || !e.hasAttribute("data-compact")) return o();
3342
- const a = 64, l = s.top - i.top - 8;
3397
+ if (!i.height || !r.height || !e.hasAttribute("data-compact")) return o();
3398
+ const a = 64, l = r.top - i.top - 8;
3343
3399
  if (i.height / 2 + a / 2 <= l) return o();
3344
3400
  const h = Math.max(40, Math.min(56, l - 12)), c = Math.max(h / 2 + 6, l - h / 2), p = Math.round(c - i.height / 2);
3345
- let g = 0;
3346
- const m = this.controlBar.topEl.getBoundingClientRect();
3347
- if (m.width > 0 && c - h / 2 < m.bottom - i.top) {
3348
- const f = m.left - i.left - 8 - h / 2;
3349
- i.width / 2 > f && (g = Math.round(Math.max(h / 2 + 8, f) - i.width / 2));
3401
+ let m = 0;
3402
+ const u = this.controlBar.topEl.getBoundingClientRect();
3403
+ if (u.width > 0 && c - h / 2 < u.bottom - i.top) {
3404
+ const f = u.left - i.left - 8 - h / 2;
3405
+ i.width / 2 > f && (m = Math.round(Math.max(h / 2 + 8, f) - i.width / 2));
3350
3406
  }
3351
- e.setAttribute("data-center-play-shifted", ""), e.style.setProperty("--hp-center-play-shift-x", `${g}px`), e.style.setProperty("--hp-center-play-size", `${h}px`), e.style.setProperty("--hp-center-play-shift", `${p}px`);
3407
+ e.setAttribute("data-center-play-shifted", ""), e.style.setProperty("--hp-center-play-shift-x", `${m}px`), e.style.setProperty("--hp-center-play-size", `${h}px`), e.style.setProperty("--hp-center-play-shift", `${p}px`);
3352
3408
  }
3353
3409
  /** Dar player'da dokunmatikte oynat/duraklat yerine kontrolleri göster/gizle (options.tapToPlay). */
3354
3410
  tapTogglesPlay(e) {
@@ -3367,8 +3423,8 @@ class Ae extends HTMLElement {
3367
3423
  }
3368
3424
  /** Chrome görünürlüğünün tek giriş noktası — altyazı da haberdar olur (kontroller gizlenince en alta iner). */
3369
3425
  setChromeOpacity(e) {
3370
- var i, s;
3371
- this.chromeEl.style.opacity = e, this.chromeVisible = e === "1", (i = this.videoArea) == null || i.toggleAttribute("data-chrome-hidden", !this.chromeVisible), (s = this.captionRenderer) == null || s.setChromeVisible(this.chromeVisible), this.updateMiniProgress();
3426
+ var i, r;
3427
+ this.chromeEl.style.opacity = e, this.chromeVisible = e === "1", (i = this.videoArea) == null || i.toggleAttribute("data-chrome-hidden", !this.chromeVisible), (r = this.captionRenderer) == null || r.setChromeVisible(this.chromeVisible), this.updateMiniProgress();
3372
3428
  }
3373
3429
  /** İnce ilerleme çizgisi: yalnızca kontroller gizliyken; reklam/giriş ekranı (chrome bloklu) sırasında değil. */
3374
3430
  updateMiniProgress() {
@@ -3408,16 +3464,16 @@ class Ae extends HTMLElement {
3408
3464
  }
3409
3465
  /** options.audio: sahneyi kurar, günceller (konum / boyut / devir canlı değişebilir) ya da kaldırır. */
3410
3466
  async applyAudioMode(e) {
3411
- var s;
3467
+ var r;
3412
3468
  const i = e.audio ? e.audio === !0 ? {} : e.audio : null;
3413
3469
  if (this.audioMode = !!i, this.toggleAttribute("data-audio", !!i), this.controlBar.setAudioMode(!!i), this.toggleAttribute("data-audio-compact", (i == null ? void 0 : i.layout) === "compact"), !i) {
3414
- this.controlBar.setAudioBar(null), (s = this.audioStage) == null || s.destroy(), this.audioStage = null;
3470
+ this.controlBar.setAudioBar(null), (r = this.audioStage) == null || r.destroy(), this.audioStage = null;
3415
3471
  return;
3416
3472
  }
3417
3473
  if (this.hideTimer && clearTimeout(this.hideTimer), this.hideTimer = null, this.isChromeBlocked || this.showChrome(), this.audioStage)
3418
3474
  this.audioStage.update(i);
3419
3475
  else {
3420
- const { installAudioStage: o } = await import("./index-BeJNpAyx.js");
3476
+ const { installAudioStage: o } = await import("./audio-LkYgd5Wq.js");
3421
3477
  if (!this.audioMode) return;
3422
3478
  this.audioStage ?? (this.audioStage = o(
3423
3479
  {
@@ -3441,8 +3497,8 @@ class Ae extends HTMLElement {
3441
3497
  if (!this.adsInstall) {
3442
3498
  const i = e.ads === !0 ? {} : e.ads;
3443
3499
  this.adsInstall = (async () => {
3444
- const { installAds: s } = await import("./index-DITXYcHx.js");
3445
- this.adsController = await s(
3500
+ const { installAds: r } = await import("./ads-MCG5a6eK.js");
3501
+ this.adsController = await r(
3446
3502
  {
3447
3503
  videoEl: this.videoEl,
3448
3504
  hostEl: this,
@@ -3476,8 +3532,8 @@ class Ae extends HTMLElement {
3476
3532
  },
3477
3533
  i
3478
3534
  );
3479
- })().catch((s) => {
3480
- this.prerollGate.release(!0), this.adsInstall = null, this.dispatchEvent(new CustomEvent("hp:aderror", { detail: { message: String(s) } }));
3535
+ })().catch((r) => {
3536
+ this.prerollGate.release(!0), this.adsInstall = null, this.dispatchEvent(new CustomEvent("hp:aderror", { detail: { message: String(r) } }));
3481
3537
  });
3482
3538
  }
3483
3539
  return this.adsInstall;
@@ -3498,15 +3554,18 @@ class Ae extends HTMLElement {
3498
3554
  }
3499
3555
  }
3500
3556
  /** Paket sürümü (ör. "1.0.4"). */
3501
- r(Ae, "version", N);
3502
- typeof window < "u" && !customElements.get("hope-player") && customElements.define("hope-player", Ae);
3557
+ s(Be, "version", I);
3558
+ typeof window < "u" && !customElements.get("hope-player") && customElements.define("hope-player", Be);
3503
3559
  export {
3504
- N as H,
3505
- He as L,
3506
- Ae as a,
3507
- S as c,
3508
- T as f,
3509
- G as g,
3510
- B as s
3560
+ I as H,
3561
+ qe as L,
3562
+ Be as a,
3563
+ L as c,
3564
+ A as f,
3565
+ U as g,
3566
+ K as i,
3567
+ Bt as m,
3568
+ R as s,
3569
+ j as t
3511
3570
  };
3512
- //# sourceMappingURL=index-DEv3YqLg.js.map
3571
+ //# sourceMappingURL=player-DW5iWvPs.js.map