@hopeplayer/core 1.0.14 → 1.0.16

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 (73) hide show
  1. package/dist/HopePlayerElement.d.ts +57 -0
  2. package/dist/HopePlayerElement.d.ts.map +1 -1
  3. package/dist/chunks/{index-BTBAxNjr.js → index-BXSND_xN.js} +2 -2
  4. package/dist/chunks/{index-BTBAxNjr.js.map → index-BXSND_xN.js.map} +1 -1
  5. package/dist/chunks/index-BbRYOSvk.js +261 -0
  6. package/dist/chunks/index-BbRYOSvk.js.map +1 -0
  7. package/dist/chunks/{index-Dy0Th0is.js → index-C3BQGcT3.js} +2 -2
  8. package/dist/chunks/{index-Dy0Th0is.js.map → index-C3BQGcT3.js.map} +1 -1
  9. package/dist/chunks/{index-C2c71cGP.js → index-CBX7bn-G.js} +2 -2
  10. package/dist/chunks/{index-C2c71cGP.js.map → index-CBX7bn-G.js.map} +1 -1
  11. package/dist/chunks/{index-CaMVTgh0.js → index-CDPrkLq0.js} +55 -68
  12. package/dist/chunks/index-CDPrkLq0.js.map +1 -0
  13. package/dist/chunks/index-CWLyz1fp.js +415 -0
  14. package/dist/chunks/index-CWLyz1fp.js.map +1 -0
  15. package/dist/chunks/index-Ch3ep-eJ.js +245 -0
  16. package/dist/chunks/index-Ch3ep-eJ.js.map +1 -0
  17. package/dist/chunks/{index-DtqNHU7Y.js → index-D3Z7ZDLJ.js} +2 -2
  18. package/dist/chunks/{index-DtqNHU7Y.js.map → index-D3Z7ZDLJ.js.map} +1 -1
  19. package/dist/chunks/{index-Dz0E1YPE.js → index-DEv3YqLg.js} +1374 -908
  20. package/dist/chunks/index-DEv3YqLg.js.map +1 -0
  21. package/dist/chunks/{index-BCMVXNL0.js → index-DITXYcHx.js} +68 -96
  22. package/dist/chunks/index-DITXYcHx.js.map +1 -0
  23. package/dist/chunks/index-Miba3PD_.js +387 -0
  24. package/dist/chunks/index-Miba3PD_.js.map +1 -0
  25. package/dist/chunks/{index-DcVUXkXo.js → index-e00_M05B.js} +2 -2
  26. package/dist/chunks/{index-DcVUXkXo.js.map → index-e00_M05B.js.map} +1 -1
  27. package/dist/chunks/loadGpt-CmiAy366.js +18 -0
  28. package/dist/chunks/loadGpt-CmiAy366.js.map +1 -0
  29. package/dist/controls/SettingsMenu.d.ts +4 -0
  30. package/dist/controls/SettingsMenu.d.ts.map +1 -1
  31. package/dist/hls/SourceManager.d.ts +10 -0
  32. package/dist/hls/SourceManager.d.ts.map +1 -1
  33. package/dist/hls/sourceGroups.d.ts +19 -0
  34. package/dist/hls/sourceGroups.d.ts.map +1 -0
  35. package/dist/hope-player.js +1 -1
  36. package/dist/i18n/locales/en.d.ts.map +1 -1
  37. package/dist/i18n/locales/tr.d.ts.map +1 -1
  38. package/dist/i18n/types.d.ts +22 -0
  39. package/dist/i18n/types.d.ts.map +1 -1
  40. package/dist/index.d.ts +1 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/plugins/ad-triggers/AdTriggers.d.ts +99 -0
  43. package/dist/plugins/ad-triggers/AdTriggers.d.ts.map +1 -0
  44. package/dist/plugins/ad-triggers/index.d.ts +7 -0
  45. package/dist/plugins/ad-triggers/index.d.ts.map +1 -0
  46. package/dist/plugins/ads/AdsController.d.ts +8 -0
  47. package/dist/plugins/ads/AdsController.d.ts.map +1 -1
  48. package/dist/plugins/cast/CastController.d.ts +107 -0
  49. package/dist/plugins/cast/CastController.d.ts.map +1 -0
  50. package/dist/plugins/cast/RemoteMediaProxy.d.ts +41 -0
  51. package/dist/plugins/cast/RemoteMediaProxy.d.ts.map +1 -0
  52. package/dist/plugins/cast/castSdk.d.ts +160 -0
  53. package/dist/plugins/cast/castSdk.d.ts.map +1 -0
  54. package/dist/plugins/cast/index.d.ts +7 -0
  55. package/dist/plugins/cast/index.d.ts.map +1 -0
  56. package/dist/plugins/pause-ad/loadGpt.d.ts +2 -0
  57. package/dist/plugins/pause-ad/loadGpt.d.ts.map +1 -1
  58. package/dist/plugins/rewarded/RewardedUnlock.d.ts +68 -0
  59. package/dist/plugins/rewarded/RewardedUnlock.d.ts.map +1 -0
  60. package/dist/plugins/rewarded/gpt.d.ts +12 -0
  61. package/dist/plugins/rewarded/gpt.d.ts.map +1 -0
  62. package/dist/plugins/rewarded/index.d.ts +7 -0
  63. package/dist/plugins/rewarded/index.d.ts.map +1 -0
  64. package/dist/plugins/sponsorship/SponsorshipLayer.d.ts +73 -0
  65. package/dist/plugins/sponsorship/SponsorshipLayer.d.ts.map +1 -0
  66. package/dist/plugins/sponsorship/index.d.ts +7 -0
  67. package/dist/plugins/sponsorship/index.d.ts.map +1 -0
  68. package/dist/types/index.d.ts +375 -1
  69. package/dist/types/index.d.ts.map +1 -1
  70. package/package.json +1 -1
  71. package/dist/chunks/index-BCMVXNL0.js.map +0 -1
  72. package/dist/chunks/index-CaMVTgh0.js.map +0 -1
  73. package/dist/chunks/index-Dz0E1YPE.js.map +0 -1
@@ -1,34 +1,34 @@
1
- var xe = Object.defineProperty;
2
- var ke = (a, t, e) => t in a ? xe(a, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[t] = e;
3
- var s = (a, t, e) => ke(a, typeof t != "symbol" ? t + "" : t, e);
4
- const we = '/*! 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-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}}@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 G() {
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() {
6
6
  if (typeof navigator > "u") return !1;
7
- const a = navigator.userAgent, t = /iP(hone|od|ad)/.test(a) || navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1, e = /^((?!chrome|chromium|android|crios|fxios|edg|opr).)*safari/i.test(a);
7
+ 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
8
  return t || e;
9
9
  }
10
- function W() {
11
- const a = window;
12
- return typeof a.MediaSource < "u" || typeof a.ManagedMediaSource < "u";
10
+ function X() {
11
+ const n = window;
12
+ return typeof n.MediaSource < "u" || typeof n.ManagedMediaSource < "u";
13
13
  }
14
- function Ee(a, t) {
14
+ function be(n, t) {
15
15
  var i;
16
16
  const e = (i = t == null ? void 0 : t.split(";")[0]) == null ? void 0 : i.trim().toLowerCase();
17
- return e === "application/vnd.apple.mpegurl" || e === "application/x-mpegurl" || /\.m3u8(?:$|[?#])/i.test(a) ? "hls" : e === "video/mp4" || /\.mp4(?:$|[?#])/i.test(a) ? "mp4" : "unknown";
17
+ 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
18
  }
19
- class Ce {
19
+ class Be {
20
20
  constructor(t, e) {
21
- s(this, "hls", null);
22
- s(this, "video");
21
+ r(this, "hls", null);
22
+ r(this, "video");
23
23
  /** Son yüklenen kaynak — `reload()` (hata ekranındaki "Tekrar dene") için. */
24
- s(this, "last", null);
24
+ r(this, "last", null);
25
25
  /** Native HLS denemesi sürerken (ilk loadedmetadata'ya kadar) — başarısız olursa hls.js'e geçilir. */
26
- s(this, "nativeHlsProbe", null);
27
- s(this, "engineInfo", { engine: "native" });
28
- s(this, "hlsOptions", {});
29
- s(this, "streamTextTracks", /* @__PURE__ */ new Map());
26
+ r(this, "nativeHlsProbe", null);
27
+ r(this, "engineInfo", { engine: "native" });
28
+ r(this, "hlsOptions", {});
29
+ r(this, "streamTextTracks", /* @__PURE__ */ new Map());
30
30
  /** Safari native HLS ses izi dinleyicilerini kaldırır. */
31
- s(this, "nativeAudioCleanup", null);
31
+ r(this, "nativeAudioCleanup", null);
32
32
  this.callbacks = e, this.video = t;
33
33
  }
34
34
  /** `options.hls` — sonraki `load()`'da uygulanır. */
@@ -41,18 +41,18 @@ class Ce {
41
41
  }
42
42
  async load(t, e) {
43
43
  this.last = { src: t, type: e }, this.destroy(), this.video.pause();
44
- const i = Ee(t, e);
44
+ const i = be(t, e);
45
45
  if (this.callbacks.onLevelsChanged([], -1), this.callbacks.onAudioTracksChanged([], -1), this.streamTextTracks.clear(), this.callbacks.onTextTracksFound([]), i !== "hls") {
46
46
  this.engineInfo = { engine: "native" }, this.video.src = t;
47
47
  return;
48
48
  }
49
- const r = this.hlsOptions.engine ?? "auto", o = this.video.canPlayType("application/vnd.apple.mpegurl") !== "";
50
- if (r === "native" && o) {
49
+ const s = this.hlsOptions.engine ?? "auto", o = this.video.canPlayType("application/vnd.apple.mpegurl") !== "";
50
+ if (s === "native" && o) {
51
51
  this.loadNativeHls(t, "option");
52
52
  return;
53
53
  }
54
- if (r !== "hls.js" && o && (G() || !W())) {
55
- this.loadNativeHls(t, G() ? "apple-native" : "no-mse");
54
+ if (s !== "hls.js" && o && (W() || !X())) {
55
+ this.loadNativeHls(t, W() ? "apple-native" : "no-mse");
56
56
  return;
57
57
  }
58
58
  await this.attachHlsJs(t);
@@ -77,23 +77,23 @@ class Ce {
77
77
  * İlk metadata'dan önce kod 4 gelirse ve MSE varsa hls.js'e geç.
78
78
  */
79
79
  probeNativeHls(t) {
80
- if (!W() || this.engineInfo.reason === "hlsjs-failed" || this.engineInfo.reason === "option") return;
81
- const e = () => r(), i = () => {
82
- var n, l;
83
- const o = ((n = this.video.error) == null ? void 0 : n.code) === 4;
84
- r(), o && ((l = this.nativeAudioCleanup) == null || l.call(this), this.attachHlsJs(t));
85
- }, r = () => {
80
+ if (!X() || this.engineInfo.reason === "hlsjs-failed" || this.engineInfo.reason === "option") return;
81
+ const e = () => s(), i = () => {
82
+ var a, l;
83
+ 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 = () => {
86
86
  this.video.removeEventListener("loadedmetadata", e), this.video.removeEventListener("error", i), this.nativeHlsProbe = null;
87
87
  };
88
- this.video.addEventListener("loadedmetadata", e), this.video.addEventListener("error", i), this.nativeHlsProbe = r;
88
+ this.video.addEventListener("loadedmetadata", e), this.video.addEventListener("error", i), this.nativeHlsProbe = s;
89
89
  }
90
90
  /** Safari native HLS: alternatif ses izleri `video.audioTracks`'te (diğer tarayıcılarda bu API yok). */
91
91
  watchNativeAudioTracks() {
92
92
  const t = this.video.audioTracks;
93
93
  if (!t) return;
94
94
  const e = () => {
95
- const i = Array.from(t, (r, o) => ({ index: o, label: r.label || r.language || `${o + 1}`, lang: r.language }));
96
- this.callbacks.onAudioTracksChanged(i, Array.from(t).findIndex((r) => r.enabled));
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));
97
97
  };
98
98
  for (const i of ["addtrack", "removetrack", "change"]) t.addEventListener(i, e);
99
99
  this.nativeAudioCleanup = () => {
@@ -102,75 +102,84 @@ class Ce {
102
102
  };
103
103
  }
104
104
  async attachHlsJs(t) {
105
- var d;
105
+ var h;
106
106
  const { default: e } = await import("./hls-BOHE_fg_.js");
107
- if (((d = this.last) == null ? void 0 : d.src) !== t) return;
107
+ if (((h = this.last) == null ? void 0 : h.src) !== t) return;
108
108
  if (!e.isSupported()) {
109
109
  this.engineInfo = { engine: "native-hls", reason: "no-mse" }, this.video.src = t;
110
110
  return;
111
111
  }
112
112
  const i = new e(this.buildHlsConfig());
113
113
  this.hls = i, this.engineInfo = { engine: "hls.js" };
114
- let r = !1, o = !1;
115
- i.on(e.Events.ERROR, (u, c) => {
116
- var h, p, m, g, v, y;
114
+ let s = !1, o = !1;
115
+ i.on(e.Events.ERROR, (c, p) => {
116
+ var m, f, v, x, d, u;
117
117
  if (this.hls === i) {
118
- const f = c;
119
- (y = (v = this.callbacks).onStreamError) == null || y.call(v, {
120
- type: String(c.type),
121
- details: String(c.details),
122
- fatal: !!c.fatal,
123
- url: f.url ?? ((h = f.frag) == null ? void 0 : h.url) ?? ((p = f.context) == null ? void 0 : p.url),
124
- httpStatus: (m = f.response) == null ? void 0 : m.code,
125
- reason: f.reason ?? ((g = f.error) == null ? void 0 : g.message)
118
+ const b = p;
119
+ (u = (d = this.callbacks).onStreamError) == null || u.call(d, {
120
+ type: String(p.type),
121
+ details: String(p.details),
122
+ 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)
126
126
  });
127
127
  }
128
- if (!c.fatal || this.hls !== i) return;
129
- const b = [e.ErrorDetails.MANIFEST_LOAD_ERROR, e.ErrorDetails.MANIFEST_LOAD_TIMEOUT].includes(c.details);
130
- if (!r && b && this.video.canPlayType("application/vnd.apple.mpegurl") !== "") {
128
+ 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") !== "") {
131
131
  i.destroy(), this.hls = null, this.loadNativeHls(t, "hlsjs-failed");
132
132
  return;
133
133
  }
134
- if (c.type === e.ErrorTypes.MEDIA_ERROR && !o) {
134
+ if (p.type === e.ErrorTypes.MEDIA_ERROR && !o) {
135
135
  o = !0, i.recoverMediaError();
136
136
  return;
137
137
  }
138
- i.stopLoad(), this.callbacks.onFatalError(c.type === e.ErrorTypes.NETWORK_ERROR ? "network" : "media");
138
+ i.stopLoad(), this.callbacks.onFatalError(p.type === e.ErrorTypes.NETWORK_ERROR ? "network" : "media");
139
139
  });
140
- const n = () => i.levels.map((u, c) => ({ index: c, height: u.height, bitrate: u.bitrate }));
140
+ const a = () => i.levels.map((c, p) => ({ index: p, height: c.height, bitrate: c.bitrate }));
141
141
  i.on(e.Events.MANIFEST_PARSED, () => {
142
- r = !0, this.callbacks.onLevelsChanged(n(), i.currentLevel);
143
- }), i.on(e.Events.LEVEL_SWITCHED, (u, c) => {
144
- this.callbacks.onLevelsChanged(n(), i.autoLevelEnabled ? -1 : c.level);
145
- });
146
- const l = () => i.audioTracks.map((u, c) => ({ index: c, label: u.name || u.lang || `${c + 1}`, lang: u.lang ?? "" }));
147
- i.on(e.Events.AUDIO_TRACKS_UPDATED, () => this.callbacks.onAudioTracksChanged(l(), i.audioTrack)), i.on(e.Events.AUDIO_TRACK_SWITCHED, (u, c) => this.callbacks.onAudioTracksChanged(l(), c.id)), i.on(e.Events.NON_NATIVE_TEXT_TRACKS_FOUND, (u, c) => {
148
- var b;
149
- for (const h of c.tracks) {
150
- const p = h.subtitleTrack, m = p ? `sub:${p.id}` : `cc:${h._id ?? h.label}`, g = h.kind === "captions" ? "captions" : "subtitles";
151
- this.streamTextTracks.set(m, { id: m, kind: g, label: h.label, lang: (p == null ? void 0 : p.lang) ?? ((b = h.closedCaptions) == null ? void 0 : b.lang) ?? "" });
142
+ s = !0, this.callbacks.onLevelsChanged(a(), i.currentLevel);
143
+ }), i.on(e.Events.LEVEL_SWITCHED, (c, p) => {
144
+ this.callbacks.onLevelsChanged(a(), i.autoLevelEnabled ? -1 : p.level);
145
+ });
146
+ const l = () => i.audioTracks.map((c, p) => ({ index: p, label: c.name || c.lang || `${p + 1}`, lang: c.lang ?? "" }));
147
+ 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) ?? "" });
152
152
  }
153
153
  this.callbacks.onTextTracksFound([...this.streamTextTracks.values()]);
154
- }), i.on(e.Events.CUES_PARSED, (u, c) => {
155
- const b = c.type === "subtitles" && c.subtitleTrack ? `sub:${c.subtitleTrack.id}` : `cc:${c.track}`;
156
- this.callbacks.onCues(b, c.cues);
154
+ }), 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);
157
157
  }), i.attachMedia(this.video), i.loadSource(t);
158
158
  }
159
159
  buildHlsConfig() {
160
160
  const t = this.hlsOptions.config ?? {}, e = { enableWorker: !0, renderTextTracksNatively: !1, liveDurationInfinity: !0, ...t };
161
161
  if (this.hlsOptions.withCredentials) {
162
- const { xhrSetup: i, fetchSetup: r } = t;
163
- e.xhrSetup = (o, n, l) => (o.withCredentials = !0, i == null ? void 0 : i(o, n, l)), e.fetchSetup = (o, n) => {
164
- const l = { ...n, credentials: "include" };
165
- return r ? r(o, l) : new Request(o.url, l);
162
+ const { xhrSetup: i, fetchSetup: s } = t;
163
+ e.xhrSetup = (o, a, l) => (o.withCredentials = !0, i == null ? void 0 : i(o, a, l)), e.fetchSetup = (o, a) => {
164
+ const l = { ...a, credentials: "include" };
165
+ return s ? s(o, l) : new Request(o.url, l);
166
166
  };
167
167
  }
168
168
  return e;
169
169
  }
170
170
  /** Son kaynağı baştan yükler — hls.js ile oynayan kaynakta da çalışır (çıplak video.load() blob'u yeniden açamaz). */
171
+ /** Son `load()` edilen kaynak (playlist/dublaj gibi eklentilerin yüklediği dahil). */
172
+ get currentSrc() {
173
+ var t;
174
+ return ((t = this.last) == null ? void 0 : t.src) ?? null;
175
+ }
171
176
  reload() {
172
177
  return this.last ? this.load(this.last.src, this.last.type) : Promise.resolve();
173
178
  }
179
+ /** ABR'nin çıkabileceği en yüksek seviye (kalite kilidi); -1 = sınır yok. */
180
+ setMaxLevel(t) {
181
+ this.hls && this.hls.autoLevelCapping !== t && (this.hls.autoLevelCapping = t);
182
+ }
174
183
  /** -1 = otomatik kalite (ABR). */
175
184
  setLevel(t) {
176
185
  this.hls && (this.hls.currentLevel = t);
@@ -181,8 +190,8 @@ class Ce {
181
190
  return;
182
191
  }
183
192
  const e = this.video.audioTracks;
184
- e && (e[t] && (e[t].enabled = !0), Array.from(e).forEach((i, r) => {
185
- r !== t && (i.enabled = !1);
193
+ e && (e[t] && (e[t].enabled = !0), Array.from(e).forEach((i, s) => {
194
+ s !== t && (i.enabled = !1);
186
195
  }));
187
196
  }
188
197
  /**
@@ -199,95 +208,142 @@ class Ce {
199
208
  (t = this.nativeHlsProbe) == null || t.call(this), (e = this.nativeAudioCleanup) == null || e.call(this), this.hls && (this.hls.destroy(), this.hls = null);
200
209
  }
201
210
  }
202
- function w(a) {
203
- if (!Number.isFinite(a) || a < 0) return "0:00";
204
- const t = Math.floor(a), e = Math.floor(t / 3600), i = Math.floor(t % 3600 / 60), r = t % 60, o = e > 0 ? String(i).padStart(2, "0") : String(i), n = String(r).padStart(2, "0");
205
- return e > 0 ? `${e}:${o}:${n}` : `${o}:${n}`;
211
+ const V = {
212
+ mp4: "video/mp4",
213
+ m4v: "video/mp4",
214
+ webm: "video/webm",
215
+ ogv: "video/ogg",
216
+ ogg: "video/ogg",
217
+ mov: "video/quicktime",
218
+ mp3: "audio/mpeg",
219
+ m4a: "audio/mp4",
220
+ aac: "audio/aac",
221
+ wav: "audio/wav",
222
+ flac: "audio/flac"
223
+ };
224
+ function fe(n) {
225
+ var s, o;
226
+ const t = be(n.src, n.type);
227
+ if (t !== "unknown") return t;
228
+ const e = (o = (s = n.type) == null ? void 0 : s.split(";")[0]) == null ? void 0 : o.trim().toLowerCase();
229
+ if (e) {
230
+ const a = Object.keys(V).find((l) => V[l] === e);
231
+ if (a) return a;
232
+ }
233
+ const i = /\.([a-z0-9]{2,5})(?:$|[?#])/i.exec(n.src);
234
+ return i ? i[1].toLowerCase() : "other";
235
+ }
236
+ function Re(n, t) {
237
+ 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] });
241
+ }
242
+ if (!(t != null && t.length)) return e;
243
+ const i = (s) => {
244
+ const o = t.findIndex((a) => a.toLowerCase() === s);
245
+ return o === -1 ? t.length : o;
246
+ };
247
+ return e.sort((s, o) => i(s.format) - i(o.format));
206
248
  }
207
- const Te = 10, Se = 1;
208
- class Ae {
249
+ function ze(n, t) {
250
+ var i;
251
+ if (n.format === "hls") {
252
+ const s = window;
253
+ return !(typeof s.MediaSource < "u" || typeof s.ManagedMediaSource < "u") && t.canPlayType("application/vnd.apple.mpegurl") === "";
254
+ }
255
+ const e = ((i = n.sources.find((s) => s.type)) == null ? void 0 : i.type) ?? V[n.format];
256
+ return !!e && t.canPlayType(e) === "";
257
+ }
258
+ function T(n) {
259
+ 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");
261
+ return e > 0 ? `${e}:${o}:${a}` : `${o}:${a}`;
262
+ }
263
+ const Oe = 10, Ne = 1;
264
+ class Ie {
209
265
  constructor(t, e) {
210
- s(this, "el");
211
- s(this, "trackEl");
212
- s(this, "chaptersEl", null);
213
- s(this, "chapters", []);
266
+ r(this, "el");
267
+ r(this, "trackEl");
268
+ r(this, "chaptersEl", null);
269
+ r(this, "chapters", []);
214
270
  /** İmlecin üstündeki zaman (varsayılan, plugin gerektirmez) — kendi zamanını gösteren plugin'ler `suppressHoverTime` ile gizler. */
215
- s(this, "hoverTimeEl");
216
- s(this, "hoverTimeSuppressors", /* @__PURE__ */ new Set());
217
- s(this, "playedEl");
218
- s(this, "bufferedEl");
219
- s(this, "thumbEl");
220
- s(this, "hoverDotEl");
221
- s(this, "video");
222
- s(this, "labels");
223
- s(this, "dragging", !1);
224
- s(this, "markerEls", []);
225
- s(this, "trackWidth", 0);
226
- s(this, "resizeObserver");
227
- s(this, "rafId", null);
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);
228
284
  /** Canlıda hover zamanını başka bir bileşen gösteriyor mu (live-wall-clock tooltip'i) — üst üste binmesin. */
229
- s(this, "liveHoverHandled", !1);
230
- s(this, "onHoverMove", (t) => {
285
+ r(this, "liveHoverHandled", !1);
286
+ r(this, "onHoverMove", (t) => {
231
287
  const e = this.timeline(), i = this.ratioAtClientX(t.clientX);
232
288
  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) {
233
289
  this.hoverTimeEl.removeAttribute("data-visible");
234
290
  return;
235
291
  }
236
- const r = e.start + i * (e.end - e.start);
237
- this.hoverTimeEl.textContent = e.live ? `-${w(e.end - r)}` : w(r), this.hoverTimeEl.setAttribute("data-visible", "");
238
- const o = this.hoverTimeEl.offsetWidth, n = Math.min(Math.max(this.layoutXAtClientX(t.clientX) - o / 2, 0), Math.max(this.trackWidth - o, 0));
239
- this.hoverTimeEl.style.transform = `translateX(${n}px)`;
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", "");
294
+ const o = this.hoverTimeEl.offsetWidth, a = Math.min(Math.max(this.layoutXAtClientX(t.clientX) - o / 2, 0), Math.max(this.trackWidth - o, 0));
295
+ this.hoverTimeEl.style.transform = `translateX(${a}px)`;
240
296
  });
241
- s(this, "onHoverLeave", () => {
297
+ r(this, "onHoverLeave", () => {
242
298
  this.hoverTimeEl.removeAttribute("data-visible"), this.hoverDotEl.removeAttribute("data-visible");
243
299
  });
244
- s(this, "onPointerDown", (t) => {
300
+ r(this, "onPointerDown", (t) => {
245
301
  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);
246
302
  });
247
- s(this, "onPointerMove", (t) => {
303
+ r(this, "onPointerMove", (t) => {
248
304
  this.dragging && this.seekToRatio(this.ratioFromEvent(t));
249
305
  });
250
- s(this, "onPointerUp", (t) => {
306
+ r(this, "onPointerUp", (t) => {
251
307
  this.dragging = !1, this.el.releasePointerCapture(t.pointerId), this.el.removeEventListener("pointermove", this.onPointerMove), this.el.removeEventListener("pointerup", this.onPointerUp);
252
308
  });
253
309
  /** Odaktayken ←/→ sarma süresi (sn) — player'ın klavye kısayoluyla aynı (options.keyboardSeekStep). */
254
- s(this, "keyboardStep", 5);
310
+ r(this, "keyboardStep", 5);
255
311
  /** Odaktayken ok tuşuyla sarıldığında (sn, negatif = geri) — sarma bildirimi için. */
256
- s(this, "onKeyboardSeek", null);
257
- s(this, "onKeyDown", (t) => {
258
- var i, r;
312
+ r(this, "onKeyboardSeek", null);
313
+ r(this, "onKeyDown", (t) => {
314
+ var i, s;
259
315
  const e = this.timeline();
260
- 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), (r = this.onKeyboardSeek) == null || r.call(this, -this.keyboardStep), t.preventDefault()));
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()));
261
317
  });
262
- s(this, "startLoop", () => {
318
+ r(this, "startLoop", () => {
263
319
  if (this.rafId !== null) return;
264
320
  const t = () => {
265
321
  this.render(), this.rafId = requestAnimationFrame(t);
266
322
  };
267
323
  this.rafId = requestAnimationFrame(t);
268
324
  });
269
- s(this, "stopLoop", () => {
325
+ r(this, "stopLoop", () => {
270
326
  this.rafId !== null && (cancelAnimationFrame(this.rafId), this.rafId = null), this.render();
271
327
  });
272
- s(this, "render", () => {
328
+ r(this, "render", () => {
273
329
  const t = this.timeline();
274
330
  if (this.el.toggleAttribute("data-no-duration", !t), this.el.toggleAttribute("data-live", !!(t != null && t.live)), !t) {
275
331
  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)";
276
332
  return;
277
333
  }
278
- const e = t.end - t.start, i = (l) => Math.min(1, Math.max(0, (l - t.start) / e)), r = i(this.video.currentTime);
279
- this.thumbEl.style.translate = `calc(${this.xAtRatio(r)}px - 50%) 0`;
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`;
280
336
  let o = 0;
281
337
  for (let l = 0; l < this.video.buffered.length; l++)
282
338
  this.video.buffered.start(l) <= this.video.currentTime && (o = Math.max(o, this.video.buffered.end(l)));
283
- const n = i(o);
339
+ const a = i(o);
284
340
  if (this.chapters.length)
285
341
  for (const l of this.chapters) {
286
- const d = l.end - l.start, u = (c) => d > 0 ? Math.min(1, Math.max(0, (c - l.start) / d)) : 0;
287
- l.playedEl.style.transform = `scaleX(${u(r)})`, l.bufferedEl.style.transform = `scaleX(${u(n)})`;
342
+ 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)})`;
288
344
  }
289
345
  else
290
- this.playedEl.style.transform = `scaleX(${r})`, this.bufferedEl.style.transform = `scaleX(${n})`;
346
+ this.playedEl.style.transform = `scaleX(${s})`, this.bufferedEl.style.transform = `scaleX(${a})`;
291
347
  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)));
292
348
  });
293
349
  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");
@@ -306,8 +362,8 @@ class Ae {
306
362
  if (t !== 1 / 0) return null;
307
363
  const { seekable: e } = this.video;
308
364
  if (!e.length) return null;
309
- const i = e.start(0), r = e.end(e.length - 1);
310
- return r - i >= Te ? { start: i, end: r, live: !0 } : 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;
311
367
  }
312
368
  /** Kendi zamanını gösteren plugin'ler (sprite/segments) varsayılan hover zamanını gizler — keyed set. */
313
369
  suppressHoverTime(t, e) {
@@ -321,10 +377,10 @@ class Ae {
321
377
  const e = this.layoutXAtClientX(t);
322
378
  if (!this.chapters.length) return this.trackWidth > 0 ? Math.min(1, Math.max(0, e / this.trackWidth)) : 0;
323
379
  for (let i = 0; i < this.chapters.length; i++) {
324
- const r = this.chapters[i], o = this.chapters[i + 1], n = o ? o.left : 1 / 0;
325
- if (e < n || !o) {
326
- const l = r.width > 0 ? Math.min(1, Math.max(0, (e - r.left) / r.width)) : 0;
327
- return r.start + l * (r.end - r.start);
380
+ const s = this.chapters[i], o = this.chapters[i + 1], a = o ? o.left : 1 / 0;
381
+ 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);
328
384
  }
329
385
  }
330
386
  return 1;
@@ -332,20 +388,20 @@ class Ae {
332
388
  /** 0–1 zaman oranının seek bar üzerindeki px konumu (thumb için). */
333
389
  xAtRatio(t) {
334
390
  if (!this.chapters.length) return t * this.trackWidth;
335
- 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;
336
- return e.left + r * e.width;
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;
337
393
  }
338
394
  /** Track'i sıralı, 0→1'i kesintisiz kapsayan oran aralıklarına göre ayrı parçalara böler. */
339
395
  setChapters(t) {
340
396
  if (this.clearChapters(), !t.length) return [];
341
397
  const e = document.createElement("div");
342
398
  return e.className = "hp-chapters", this.chapters = t.map((i) => {
343
- const r = document.createElement("div");
344
- r.className = "hp-chapter", r.setAttribute("part", "segment-band"), r.style.flex = `${Math.max(i.end - i.start, 0)} 1 0px`;
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`;
345
401
  const o = document.createElement("div");
346
402
  o.className = "hp-chapter-fill hp-chapter-buffered";
347
- const n = document.createElement("div");
348
- return n.className = "hp-chapter-fill hp-chapter-played", i.color && (n.style.background = i.color), r.append(o, n), e.appendChild(r), { ...i, el: r, bufferedEl: o, playedEl: n, left: 0, width: 0 };
403
+ 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 };
349
405
  }), this.trackEl.style.display = "none", this.trackEl.after(e), this.chaptersEl = e, this.measureChapters(), this.render(), this.chapters.map((i) => i.el);
350
406
  }
351
407
  clearChapters() {
@@ -369,15 +425,15 @@ class Ae {
369
425
  if (!this.chapters.length) return;
370
426
  const t = this.el.getBoundingClientRect(), e = t.width > 0 ? this.trackWidth / t.width : 1;
371
427
  for (const i of this.chapters) {
372
- const r = i.el.getBoundingClientRect();
373
- i.left = (r.left - t.left) * e, i.width = r.width * e;
428
+ const s = i.el.getBoundingClientRect();
429
+ i.left = (s.left - t.left) * e, i.width = s.width * e;
374
430
  }
375
431
  }
376
432
  seekToRatio(t) {
377
433
  const e = this.timeline();
378
434
  if (!e) return;
379
435
  const i = e.start + t * (e.end - e.start);
380
- this.video.currentTime = e.live ? Math.min(i, e.end - Se) : i, this.render();
436
+ this.video.currentTime = e.live ? Math.min(i, e.end - Ne) : i, this.render();
381
437
  }
382
438
  /** 0–1 arası oranda, seek bar üzerine ince bir işaret çizgisi ekler (ör. loop A/B noktaları). */
383
439
  addMarker(t, e = "") {
@@ -395,63 +451,63 @@ class Ae {
395
451
  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();
396
452
  }
397
453
  }
398
- function E(a, t = "") {
454
+ function S(n, t = "") {
399
455
  const e = document.createElement("i");
400
- return e.className = `hp-icon hp-icon-${a}${t ? ` ${t}` : ""}`, e.setAttribute("aria-hidden", "true"), e;
456
+ return e.className = `hp-icon hp-icon-${n}${t ? ` ${t}` : ""}`, e.setAttribute("aria-hidden", "true"), e;
401
457
  }
402
- function P(a, t) {
403
- a.className = a.className.replace(/hp-icon-[\w-]+/, `hp-icon-${t}`);
458
+ function B(n, t) {
459
+ n.className = n.className.replace(/hp-icon-[\w-]+/, `hp-icon-${t}`);
404
460
  }
405
- const R = 0.05, Le = 150;
406
- class Pe {
461
+ const z = 0.05, Fe = 150;
462
+ class De {
407
463
  constructor(t, e, i) {
408
- s(this, "el");
464
+ r(this, "el");
409
465
  /** Dokunmatikte ses butonu gizli; sessiz oynarken görünen "Sesi aç" rozeti (chrome dışında monte edilir, otomatik gizlenmez). */
410
- s(this, "unmuteBadge");
411
- s(this, "unmuteText");
412
- s(this, "button");
413
- s(this, "iconEl");
414
- s(this, "slider");
415
- s(this, "sliderFill");
416
- s(this, "video");
417
- s(this, "labels");
418
- s(this, "adHooks");
419
- s(this, "dragging", !1);
420
- s(this, "hideTimer", null);
421
- s(this, "openNow", () => {
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", () => {
422
478
  this.hideTimer && (clearTimeout(this.hideTimer), this.hideTimer = null), this.slider.style.opacity = "1", this.slider.style.pointerEvents = "auto";
423
479
  });
424
- s(this, "scheduleHide", () => {
480
+ r(this, "scheduleHide", () => {
425
481
  this.hideTimer && clearTimeout(this.hideTimer), this.hideTimer = setTimeout(() => {
426
482
  this.hideTimer = null, this.slider.style.opacity = "0", this.slider.style.pointerEvents = "none";
427
- }, Le);
483
+ }, Fe);
428
484
  });
429
- s(this, "onWheel", (t) => {
485
+ r(this, "onWheel", (t) => {
430
486
  if (t.preventDefault(), this.adHooks.isAdActive()) {
431
- const r = this.adHooks.getVolume();
432
- this.adHooks.setVolume(Math.min(1, Math.max(0, r + (t.deltaY < 0 ? R : -R)))), this.render();
487
+ const s = this.adHooks.getVolume();
488
+ this.adHooks.setVolume(Math.min(1, Math.max(0, s + (t.deltaY < 0 ? z : -z)))), this.render();
433
489
  return;
434
490
  }
435
- const e = this.video.muted ? 0 : this.video.volume, i = Math.min(1, Math.max(0, e + (t.deltaY < 0 ? R : -R)));
491
+ const e = this.video.muted ? 0 : this.video.volume, i = Math.min(1, Math.max(0, e + (t.deltaY < 0 ? z : -z)));
436
492
  this.video.volume = i, this.video.muted = i === 0;
437
493
  });
438
- s(this, "onToggleMute", () => {
494
+ r(this, "onToggleMute", () => {
439
495
  if (this.adHooks.isAdActive()) {
440
496
  this.adHooks.toggleMute(), this.render();
441
497
  return;
442
498
  }
443
499
  this.video.muted = !this.video.muted, !this.video.muted && this.video.volume === 0 && (this.video.volume = 0.5);
444
500
  });
445
- s(this, "onSliderPointerDown", (t) => {
501
+ r(this, "onSliderPointerDown", (t) => {
446
502
  this.dragging = !0, this.slider.setPointerCapture(t.pointerId), this.setFromClientY(t.clientY), this.slider.addEventListener("pointermove", this.onSliderPointerMove), this.slider.addEventListener("pointerup", this.onSliderPointerUp);
447
503
  });
448
- s(this, "onSliderPointerMove", (t) => {
504
+ r(this, "onSliderPointerMove", (t) => {
449
505
  this.dragging && this.setFromClientY(t.clientY);
450
506
  });
451
- s(this, "onSliderPointerUp", (t) => {
507
+ r(this, "onSliderPointerUp", (t) => {
452
508
  this.dragging = !1, this.slider.releasePointerCapture(t.pointerId), this.slider.removeEventListener("pointermove", this.onSliderPointerMove), this.slider.removeEventListener("pointerup", this.onSliderPointerUp);
453
509
  });
454
- s(this, "onSliderKeyDown", (t) => {
510
+ r(this, "onSliderKeyDown", (t) => {
455
511
  if (this.adHooks.isAdActive()) {
456
512
  if (t.key === "ArrowUp")
457
513
  this.adHooks.setVolume(Math.min(1, this.adHooks.getVolume() + 0.1)), t.preventDefault();
@@ -464,19 +520,19 @@ class Pe {
464
520
  }
465
521
  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());
466
522
  });
467
- s(this, "render", () => {
523
+ r(this, "render", () => {
468
524
  const t = this.adHooks.isAdActive() ? this.adHooks.getVolume() : this.video.muted ? 0 : this.video.volume;
469
525
  this.sliderFill.style.height = `${t * 100}%`, this.slider.setAttribute("aria-valuenow", String(Math.round(t * 100)));
470
526
  const e = t === 0 ? this.labels.unmute : this.labels.mute;
471
527
  this.button.setAttribute("aria-label", e);
472
528
  const i = this.adHooks.isAdActive() || !this.video.paused;
473
- this.unmuteBadge.toggleAttribute("data-visible", t === 0 && i), this.unmuteText.textContent = this.labels.unmute, t === 0 ? P(this.iconEl, "volume-muted") : t < 0.5 ? P(this.iconEl, "volume-low") : P(this.iconEl, "volume-high");
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");
474
530
  });
475
- 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(E("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) => {
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) => {
476
532
  o.stopPropagation(), this.unmute();
477
- }), 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 = E("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");
478
- const r = document.createElement("div");
479
- 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();
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();
480
536
  }
481
537
  /** "Sesi aç" rozeti: yalnızca AÇAR (toggle değil) — reklam sırasında reklamın sesini. */
482
538
  unmute() {
@@ -506,57 +562,57 @@ class Pe {
506
562
  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();
507
563
  }
508
564
  }
509
- const O = 8, C = 8, X = 100, B = 256;
510
- class Me {
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 {
511
567
  constructor(t, e, i) {
512
- s(this, "el");
513
- s(this, "button");
514
- s(this, "panel");
515
- s(this, "video");
516
- s(this, "playbackRates");
517
- s(this, "labels");
518
- s(this, "qualities", []);
519
- s(this, "activeQualityLabel");
520
- s(this, "captions", []);
521
- s(this, "activeCaptionLabel");
522
- s(this, "captionAppearance", null);
523
- s(this, "qrResumeToggle", null);
524
- s(this, "open", !1);
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);
525
581
  /** Menü açılıp kapanınca — HopePlayerElement açıkken kontrolleri otomatik gizlemez. */
526
- s(this, "onOpenChange", null);
527
- s(this, "panelObserver");
528
- s(this, "currentPanel", "main");
529
- s(this, "submenus", []);
582
+ r(this, "onOpenChange", null);
583
+ r(this, "panelObserver");
584
+ r(this, "currentPanel", "main");
585
+ r(this, "submenus", []);
530
586
  /**
531
587
  * Yön + yükseklik player'a göre: kompakt düzende (buton üst bardaysa) aşağı açılır; her iki yönde de
532
588
  * yükseklik player içinde kalan alanla sınırlı — küçük player'da menü dışarı taşmaz, kendi içinde kayar.
533
589
  */
534
- s(this, "fitToPlayer", () => {
535
- var d;
590
+ r(this, "fitToPlayer", () => {
591
+ var h;
536
592
  if (!this.open) return;
537
593
  const t = this.el.closest(".video-area");
538
594
  if (!t) return;
539
- if ((d = this.el.getRootNode().host) != null && d.hasAttribute("data-audio-compact")) {
595
+ if ((h = this.el.getRootNode().host) != null && h.hasAttribute("data-audio-compact")) {
540
596
  this.fitToViewport();
541
597
  return;
542
598
  }
543
- const e = t.getBoundingClientRect(), i = this.button.getBoundingClientRect(), r = this.el.getBoundingClientRect(), o = !!this.el.closest(".hp-top-bar");
599
+ const e = t.getBoundingClientRect(), i = this.button.getBoundingClientRect(), s = this.el.getBoundingClientRect(), o = !!this.el.closest(".hp-top-bar");
544
600
  this.panel.toggleAttribute("data-drop", o), Object.assign(this.panel.style, { top: "", bottom: "", marginTop: "", marginBottom: "" });
545
- const n = this.panel.scrollHeight, l = (o ? e.bottom - i.bottom : i.top - e.top) - O - C;
546
- if (n <= l || l >= X) {
547
- this.panel.style.maxHeight = `${Math.min(B, l)}px`;
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`;
548
604
  return;
549
605
  }
550
- this.panel.style.maxHeight = `${Math.min(B, e.height - 2 * C)}px`, o ? Object.assign(this.panel.style, { top: `${e.top + C - r.top}px`, marginTop: "0" }) : Object.assign(this.panel.style, { bottom: `${r.bottom - (e.bottom - C)}px`, marginBottom: "0" });
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" });
551
607
  });
552
- s(this, "onDocumentClick", (t) => {
608
+ r(this, "onDocumentClick", (t) => {
553
609
  this.open && !t.composedPath().includes(this.el) && this.close();
554
610
  });
555
- s(this, "backToCaptionSettings", () => {
611
+ r(this, "backToCaptionSettings", () => {
556
612
  this.currentPanel = "captions-settings", this.renderCaptionSettings();
557
613
  });
558
- 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(E("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) => {
559
- r.stopPropagation(), this.toggle();
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();
560
616
  }), document.addEventListener("click", this.onDocumentClick, !0), this.renderMain();
561
617
  }
562
618
  setQualities(t, e) {
@@ -601,8 +657,8 @@ class Me {
601
657
  fitToViewport() {
602
658
  const t = this.button.getBoundingClientRect();
603
659
  Object.assign(this.panel.style, { top: "", bottom: "", marginTop: "", marginBottom: "" });
604
- const e = this.panel.scrollHeight, i = t.top - O - C, r = window.innerHeight - t.bottom - O - C, o = i < Math.min(e, B) && r > i;
605
- this.panel.toggleAttribute("data-drop", o), this.panel.style.maxHeight = `${Math.max(X, Math.min(B, o ? r : i))}px`;
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`;
606
662
  }
607
663
  /** Düzen değişince (ör. kompakt ↔ normal) açık menüyü kapat — eski konumunda asılı kalmasın. */
608
664
  closeMenu() {
@@ -613,14 +669,14 @@ class Me {
613
669
  this.open = !1, this.panel.classList.add("hp:hidden"), (t = this.onOpenChange) == null || t.call(this, !1);
614
670
  }
615
671
  row(t, e, i) {
616
- const r = document.createElement("button");
617
- 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;
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;
618
674
  }
619
675
  backRow(t, e) {
620
676
  const i = document.createElement("button");
621
- 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(E("chevron-left", "hp:text-sm"));
622
- const r = document.createElement("span");
623
- return r.textContent = t, i.appendChild(r), i.addEventListener("click", e), i;
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;
624
680
  }
625
681
  render() {
626
682
  if (this.currentPanel === "main") this.renderMain();
@@ -686,12 +742,10 @@ class Me {
686
742
  renderQuality() {
687
743
  this.panel.innerHTML = "", this.panel.appendChild(this.backRow(this.labels.quality, () => this.renderMain()));
688
744
  for (const t of this.qualities) {
689
- const e = t.label === this.activeQualityLabel;
690
- this.panel.appendChild(
691
- this.row(t.label, e ? '<i class="hp-icon hp-icon-check"></i>' : "", () => {
692
- t.onSelect(), this.close();
693
- })
694
- );
745
+ const e = t.label === this.activeQualityLabel, i = this.row(t.label, t.locked ? He : e ? '<i class="hp-icon hp-icon-check"></i>' : "", () => {
746
+ t.onSelect(), this.close();
747
+ });
748
+ t.locked && i.setAttribute("data-locked", ""), this.panel.appendChild(i);
695
749
  }
696
750
  }
697
751
  renderCaptions() {
@@ -715,7 +769,7 @@ class Me {
715
769
  }
716
770
  /** Altyazı → Altyazı ayarları: boyut, arka plan / yazı rengi, konumu sıfırla — her satırda o anki değer. */
717
771
  renderCaptionSettings() {
718
- var i, r, o;
772
+ var i, s, o;
719
773
  this.panel.innerHTML = "", this.panel.appendChild(
720
774
  this.backRow(this.labels.captionSettings, () => {
721
775
  this.currentPanel = "captions", this.renderCaptions();
@@ -723,17 +777,17 @@ class Me {
723
777
  );
724
778
  const t = this.captionAppearance;
725
779
  if (!t) return;
726
- const e = (n) => n ? `<span class="hp:inline-block hp:w-3 hp:h-3 hp:rounded-full hp:border hp:border-on-surface/30" style="background:${n}"></span>` : "";
780
+ const e = (a) => a ? `<span class="hp:inline-block hp:w-3 hp:h-3 hp:rounded-full hp:border hp:border-on-surface/30" style="background:${a}"></span>` : "";
727
781
  this.panel.appendChild(
728
- this.row(t.sizeLabel, ((i = t.getSizeOptions().find((n) => n.active)) == null ? void 0 : i.label) ?? "", () => {
782
+ this.row(t.sizeLabel, ((i = t.getSizeOptions().find((a) => a.active)) == null ? void 0 : i.label) ?? "", () => {
729
783
  this.currentPanel = "captions-size", this.renderCaptionsSize();
730
784
  })
731
785
  ), this.panel.appendChild(
732
- this.row(t.bgColorLabel, e((r = t.getBgColorOptions().find((n) => n.active)) == null ? void 0 : r.value), () => {
786
+ this.row(t.bgColorLabel, e((s = t.getBgColorOptions().find((a) => a.active)) == null ? void 0 : s.value), () => {
733
787
  this.currentPanel = "captions-bg", this.renderCaptionColorPanel("bg");
734
788
  })
735
789
  ), this.panel.appendChild(
736
- this.row(t.textColorLabel, e((o = t.getTextColorOptions().find((n) => n.active)) == null ? void 0 : o.value), () => {
790
+ this.row(t.textColorLabel, e((o = t.getTextColorOptions().find((a) => a.active)) == null ? void 0 : o.value), () => {
737
791
  this.currentPanel = "captions-text", this.renderCaptionColorPanel("text");
738
792
  })
739
793
  ), this.panel.appendChild(
@@ -758,16 +812,16 @@ class Me {
758
812
  this.panel.innerHTML = "";
759
813
  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;
760
814
  if (this.panel.appendChild(this.backRow(i, this.backToCaptionSettings)), !e) return;
761
- const r = document.createElement("div");
762
- r.className = "hp:flex hp:flex-wrap hp:gap-2 hp:px-3 hp:py-2";
815
+ const s = document.createElement("div");
816
+ s.className = "hp:flex hp:flex-wrap hp:gap-2 hp:px-3 hp:py-2";
763
817
  const o = t === "bg" ? e.getBgColorOptions() : e.getTextColorOptions();
764
- for (const n of o) {
818
+ for (const a of o) {
765
819
  const l = document.createElement("button");
766
- l.type = "button", l.setAttribute("aria-label", n.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 = n.value, l.style.outline = n.active ? "2px solid currentColor" : "2px solid transparent", l.style.outlineOffset = "2px", l.addEventListener("click", () => {
767
- n.onSelect(), this.render();
768
- }), r.appendChild(l);
820
+ 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
+ a.onSelect(), this.render();
822
+ }), s.appendChild(l);
769
823
  }
770
- this.panel.appendChild(r);
824
+ this.panel.appendChild(s);
771
825
  }
772
826
  /** Dil sonradan değişince statik buton etiketini tazeler + mevcut panel zaten güncel `this.labels`'ı okuyarak yeniden render edilir. */
773
827
  refreshLabels() {
@@ -777,138 +831,138 @@ class Me {
777
831
  document.removeEventListener("click", this.onDocumentClick, !0), this.panelObserver.disconnect();
778
832
  }
779
833
  }
780
- function pe(a, t) {
781
- const e = a.seekable.length ? a.seekable.start(0) : 0, i = Number.isFinite(a.duration) ? a.duration : a.seekable.length ? a.seekable.end(a.seekable.length - 1) : a.currentTime;
782
- a.currentTime = Math.max(e, Math.min(i, a.currentTime + t));
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));
783
837
  }
784
- const Re = 15, Be = 480, ze = 150, $ = ["waiting", "seeking"], U = ["playing", "canplay", "canplaythrough", "seeked", "pause", "error", "emptied"];
785
- function j(a, t) {
786
- const { btn: e } = L("", `skip-${a}`);
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}`);
787
841
  e.classList.add("hp-skip-btn"), e.setAttribute("part", t);
788
842
  const i = document.createElement("span");
789
843
  return i.className = "hp-skip-num", i.setAttribute("aria-hidden", "true"), e.appendChild(i), e.style.display = "none", { btn: e, num: i };
790
844
  }
791
- function T(a, t) {
792
- a.setAttribute("aria-label", t);
845
+ function L(n, t) {
846
+ n.setAttribute("aria-label", t);
793
847
  }
794
- function L(a, t, e) {
848
+ function M(n, t, e) {
795
849
  const i = document.createElement("button");
796
- i.type = "button", T(i, a), 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";
797
- const r = E(t, "hp:text-[length:var(--hp-ctrl-icon-size)]");
798
- return i.appendChild(r), { btn: i, icon: r };
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 };
799
853
  }
800
- class Ie {
801
- constructor(t, e, i, r) {
802
- s(this, "el");
803
- s(this, "seekBar");
804
- s(this, "volumePanel");
805
- s(this, "settingsMenu");
806
- s(this, "video");
807
- s(this, "labels");
808
- s(this, "playButton");
809
- s(this, "playIcon");
810
- s(this, "pipButton");
811
- s(this, "skipBack");
812
- s(this, "skipForward");
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");
813
867
  /** Etkin sarma süreleri (sn); null = buton gizli. */
814
- s(this, "skipSeconds", { back: null, forward: null });
815
- s(this, "seekingEnabled", !0);
816
- s(this, "leftGroup");
817
- s(this, "loadingTimer", null);
868
+ r(this, "skipSeconds", { back: null, forward: null });
869
+ r(this, "seekingEnabled", !0);
870
+ r(this, "leftGroup");
871
+ r(this, "loadingTimer", null);
818
872
  /** Halkayı açık tutan sebepler: 'media' (buffer bekleniyor) ve player'ın verdikleri (ör. 'preroll'). */
819
- s(this, "loadingReasons", /* @__PURE__ */ new Set());
873
+ r(this, "loadingReasons", /* @__PURE__ */ new Set());
820
874
  /** Preroll beklenirken video duraklatılmış olsa da kullanıcı oynatmak istedi — buton "duraklat" görünür. */
821
- s(this, "pendingPlay", !1);
875
+ r(this, "pendingPlay", !1);
822
876
  /** Sarma butonuyla sarıldığında (sn, negatif = geri) — sarma bildirimi için. */
823
- s(this, "onSkip", null);
824
- s(this, "fullscreenButton");
825
- s(this, "fullscreenIcon");
826
- s(this, "timeLabel");
877
+ r(this, "onSkip", null);
878
+ r(this, "fullscreenButton");
879
+ r(this, "fullscreenIcon");
880
+ r(this, "timeLabel");
827
881
  /** Reklam sırasında süre etiketinin yerinde: "Reklam 2/3 · 0:12". */
828
- s(this, "adInfoEl");
829
- s(this, "showRemaining", !1);
882
+ r(this, "adInfoEl");
883
+ r(this, "showRemaining", !1);
830
884
  /** Kompakt düzende (player < 480px) sağ grubun taşındığı üst bar; tam ekran altta kalır. */
831
- s(this, "topEl");
832
- s(this, "bottomRow");
833
- s(this, "rightGroup");
834
- s(this, "fullscreenSlot");
835
- s(this, "compact", !1);
885
+ r(this, "topEl");
886
+ r(this, "bottomRow");
887
+ r(this, "rightGroup");
888
+ r(this, "fullscreenSlot");
889
+ r(this, "compact", !1);
836
890
  /** İnce ses çubuğu (audio.layout: 'compact'): dar ekranda da tek satır — üst bar yok. */
837
- s(this, "forceInline", !1);
891
+ r(this, "forceInline", !1);
838
892
  /** İnce ses çubuğunda başlık / sanatçı (+ çalarken ekolayzır) — boşluk elemanının içinde. */
839
- s(this, "barMetaEl", null);
840
- s(this, "spacerEl");
841
- s(this, "resizeObserver");
842
- s(this, "liveBadge");
843
- s(this, "liveText");
844
- s(this, "adMode", !1);
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);
845
899
  /** Ses modu: tam ekran / PiP yok — dar düzende tam ekran kutusu da boş kalmasın. */
846
- s(this, "audioMode", !1);
847
- s(this, "callbacks");
848
- s(this, "row");
849
- s(this, "extraButtonAnchor");
900
+ r(this, "audioMode", !1);
901
+ r(this, "callbacks");
902
+ r(this, "row");
903
+ r(this, "extraButtonAnchor");
850
904
  /** Süre etiketine tıklama: geçen süre ↔ kalan süre. */
851
- s(this, "onTimeClick", (t) => {
905
+ r(this, "onTimeClick", (t) => {
852
906
  t.stopPropagation(), this.toggleTimeMode();
853
907
  });
854
- s(this, "renderPlayState", () => {
908
+ r(this, "renderPlayState", () => {
855
909
  var e;
856
910
  const t = this.callbacks.isAdActive() ? this.callbacks.adIsPaused() : this.video.paused && !this.pendingPlay;
857
- P(this.playIcon, t ? "play" : "pause"), T(this.playButton, t ? this.labels.play : this.labels.pause), (e = this.barMetaEl) == null || e.toggleAttribute("data-playing", !t && !this.callbacks.isAdActive());
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());
858
912
  });
859
- s(this, "renderTime", () => {
860
- var r, o;
913
+ r(this, "renderTime", () => {
914
+ var s, o;
861
915
  const t = this.video.duration === 1 / 0;
862
916
  if (this.timeLabel.style.display = this.adMode || t ? "none" : "", this.liveBadge.style.display = !this.adMode && t ? "" : "none", !t) {
863
- const n = this.video.duration, l = this.video.currentTime;
917
+ const a = this.video.duration, l = this.video.currentTime;
864
918
  if (this.showRemaining) {
865
- const d = Number.isFinite(n) ? Math.floor(n) : 0, u = Math.max(0, d - Math.floor(l));
866
- this.timeLabel.textContent = `-${w(u)} / ${w(n)}`;
919
+ 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)}`;
867
921
  } else
868
- this.timeLabel.textContent = `${w(l)} / ${w(n)}`;
922
+ this.timeLabel.textContent = `${T(l)} / ${T(a)}`;
869
923
  return;
870
924
  }
871
- const e = ((o = (r = this.callbacks).liveSyncPosition) == null ? void 0 : o.call(r)) ?? this.liveEdge(), i = e !== null && e - this.video.currentTime > Re;
925
+ const e = ((o = (s = this.callbacks).liveSyncPosition) == null ? void 0 : o.call(s)) ?? this.liveEdge(), i = e !== null && e - this.video.currentTime > Ve;
872
926
  this.liveBadge.toggleAttribute("data-behind", i);
873
927
  });
874
928
  /** Buffer bekleniyor (oynarken takılma ya da buffer'lanmamış bir yere atlama). */
875
- s(this, "onLoadingStart", (t) => {
929
+ r(this, "onLoadingStart", (t) => {
876
930
  t.type === "seeking" && this.video.readyState >= HTMLMediaElement.HAVE_FUTURE_DATA || this.loadingTimer || this.loadingReasons.has("media") || (this.loadingTimer = setTimeout(() => {
877
931
  this.loadingTimer = null, this.setLoading("media", !0);
878
- }, ze));
932
+ }, Ue));
879
933
  });
880
- s(this, "onLoadingEnd", (t) => {
934
+ r(this, "onLoadingEnd", (t) => {
881
935
  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));
882
936
  });
883
- s(this, "goToLive", () => {
884
- var i, r;
885
- const t = (r = (i = this.callbacks).liveSyncPosition) == null ? void 0 : r.call(i), e = this.liveEdge();
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();
886
940
  e === null && t == null || (this.video.currentTime = t ?? Math.max(0, e - 1), this.video.paused && this.video.play().catch(() => {
887
941
  }), this.renderTime());
888
942
  });
889
- 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 Ae(t, r), this.seekBar.el.classList.add("hp:pointer-events-auto"), this.el.appendChild(this.seekBar.el);
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);
890
944
  const o = document.createElement("div");
891
945
  o.className = "hp:flex hp:items-center hp:gap-2", this.el.appendChild(o), this.bottomRow = o;
892
- const n = document.createElement("div");
893
- n.className = "hp-group hp-group-left hp:flex hp:items-center hp:gap-1 hp:px-1.5 hp:py-1 hp:shrink-0 hp:pointer-events-auto", o.appendChild(n), this.leftGroup = n;
946
+ const a = document.createElement("div");
947
+ a.className = "hp-group hp-group-left hp:flex hp:items-center hp:gap-1 hp:px-1.5 hp:py-1 hp:shrink-0 hp:pointer-events-auto", o.appendChild(a), this.leftGroup = a;
894
948
  const l = document.createElement("span");
895
949
  l.className = "hp-loading-ring", l.setAttribute("aria-hidden", "true");
896
- const d = document.createElement("span");
897
- d.className = "hp-loading-ring-mask", d.appendChild(document.createElement("span")), l.appendChild(d), n.appendChild(l);
898
- const u = L(r.play, "play", "K");
899
- this.playButton = u.btn, this.playIcon = u.icon, this.playButton.setAttribute("part", "play-pause-button"), this.playButton.addEventListener("click", () => this.togglePlay()), n.appendChild(this.playButton), this.skipBack = j("back", "skip-back-button"), this.skipBack.btn.addEventListener("click", () => this.skip(-(this.skipSeconds.back ?? 0))), this.skipForward = j("forward", "skip-forward-button"), this.skipForward.btn.addEventListener("click", () => this.skip(this.skipSeconds.forward ?? 0)), n.append(this.skipBack.btn, this.skipForward.btn), this.volumePanel = new Pe(t, r, i.adVolume), n.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), n.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);
900
- const c = document.createElement("span");
901
- c.className = "hp-live-dot", this.liveText = document.createElement("span"), this.liveText.textContent = r.live, this.liveBadge.append(c, this.liveText), this.liveBadge.style.display = "none", this.liveBadge.addEventListener("click", this.goToLive), n.appendChild(this.liveBadge), n.appendChild(this.adInfoEl);
902
- const b = document.createElement("div");
903
- b.className = "hp:flex-1 hp:min-w-0", o.appendChild(b), this.spacerEl = b;
904
- const h = document.createElement("div");
905
- h.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(h), this.rightGroup = h, this.settingsMenu = new Me(t, e, r), h.appendChild(this.settingsMenu.el), this.extraButtonAnchor = this.settingsMenu.el, this.row = h;
906
- const p = L(r.pip, "pip");
907
- this.pipButton = p.btn, this.pipButton.addEventListener("click", () => this.togglePip()), document.pictureInPictureEnabled || (this.pipButton.style.display = "none"), h.appendChild(this.pipButton);
908
- const m = L(r.fullscreenEnter, "fullscreen-enter", "F");
909
- this.fullscreenButton = m.btn, this.fullscreenIcon = m.icon, this.fullscreenButton.addEventListener("click", () => this.toggleFullscreen()), h.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);
910
- for (const g of $) t.addEventListener(g, this.onLoadingStart);
911
- for (const g of U) t.addEventListener(g, this.onLoadingEnd);
950
+ const h = document.createElement("span");
951
+ 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);
954
+ 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;
958
+ 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);
912
966
  this.renderPlayState(), this.renderTime();
913
967
  }
914
968
  /** 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. */
@@ -916,7 +970,7 @@ class Ie {
916
970
  var i;
917
971
  const t = this.el.getBoundingClientRect().width;
918
972
  if (t === 0) return;
919
- const e = !this.forceInline && t < Be;
973
+ const e = !this.forceInline && t < _e;
920
974
  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"));
921
975
  }
922
976
  /**
@@ -940,7 +994,7 @@ class Ie {
940
994
  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" : "";
941
995
  }
942
996
  setFullscreenState(t) {
943
- P(this.fullscreenIcon, t ? "fullscreen-exit" : "fullscreen-enter"), T(this.fullscreenButton, t ? this.labels.fullscreenExit : this.labels.fullscreenEnter);
997
+ B(this.fullscreenIcon, t ? "fullscreen-exit" : "fullscreen-enter"), L(this.fullscreenButton, t ? this.labels.fullscreenExit : this.labels.fullscreenEnter);
944
998
  }
945
999
  /** Dil sonradan değişince (`options.locale`/`labels`) statik (reaktif olarak yeniden render edilmeyen) etiketleri tazeler. */
946
1000
  /** Geri/ileri sarma butonları — `null` süre o butonu gizler. */
@@ -952,17 +1006,17 @@ class Ie {
952
1006
  this.seekingEnabled = t, this.skipBack.btn.disabled = !t, this.skipForward.btn.disabled = !t;
953
1007
  }
954
1008
  renderSkipButtons() {
955
- const t = (e, i, r) => {
956
- 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), T(e.btn, r(i)));
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)));
957
1011
  };
958
1012
  t(this.skipBack, this.skipSeconds.back, this.labels.skipBack), t(this.skipForward, this.skipSeconds.forward, this.labels.skipForward);
959
1013
  }
960
1014
  skip(t) {
961
1015
  var e;
962
- !t || !this.seekingEnabled || (pe(this.video, t), (e = this.onSkip) == null || e.call(this, t));
1016
+ !t || !this.seekingEnabled || (ve(this.video, t), (e = this.onSkip) == null || e.call(this, t));
963
1017
  }
964
1018
  refreshLabels() {
965
- this.renderPlayState(), this.renderSkipButtons(), T(this.pipButton, this.labels.pip), T(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();
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();
966
1020
  }
967
1021
  /** Reklam modu: seek bar, süre ve sağ grup gizlenir; oynat/duraklat + ses kalır. */
968
1022
  setAdMode(t) {
@@ -978,7 +1032,7 @@ class Ie {
978
1032
  this.adInfoEl.style.display = "none", this.adInfoEl.textContent = "";
979
1033
  return;
980
1034
  }
981
- const e = t.total > 1 ? ` ${t.position}/${t.total}` : "", i = t.remaining >= 0 ? ` · ${w(Math.ceil(t.remaining))}` : "";
1035
+ const e = t.total > 1 ? ` ${t.position}/${t.total}` : "", i = t.remaining >= 0 ? ` · ${T(Math.ceil(t.remaining))}` : "";
982
1036
  this.adInfoEl.textContent = `${this.labels.adLabel}${e}${i}`, this.adInfoEl.style.display = "";
983
1037
  }
984
1038
  /** `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. */
@@ -993,8 +1047,8 @@ class Ie {
993
1047
  }
994
1048
  /** Plugin'lerin (loop-section vb.) kontrol çubuğuna kendi butonlarını eklemesi için — ayarlar menüsünden önce yerleştirilir. */
995
1049
  addButton(t, e, i) {
996
- const { btn: r, icon: o } = L(t, e);
997
- return r.addEventListener("click", i), this.row.insertBefore(r, this.extraButtonAnchor), { btn: r, icon: o };
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 };
998
1052
  }
999
1053
  toggleTimeMode() {
1000
1054
  this.showRemaining = !this.showRemaining, this.renderTime();
@@ -1053,45 +1107,45 @@ class Ie {
1053
1107
  }
1054
1108
  destroy() {
1055
1109
  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);
1056
- for (const t of $) this.video.removeEventListener(t, this.onLoadingStart);
1057
- for (const t of U) this.video.removeEventListener(t, this.onLoadingEnd);
1110
+ for (const t of J) this.video.removeEventListener(t, this.onLoadingStart);
1111
+ for (const t of Z) this.video.removeEventListener(t, this.onLoadingEnd);
1058
1112
  this.loadingTimer && clearTimeout(this.loadingTimer), this.resizeObserver.disconnect(), this.topEl.remove(), this.seekBar.destroy(), this.settingsMenu.destroy();
1059
1113
  }
1060
1114
  }
1061
- const Ne = 450, Oe = 60, K = 8, D = 6, De = /* @__PURE__ */ new Set(["seek-bar", "time-display"]);
1062
- function Fe() {
1115
+ const je = 450, $e = 60, te = 8, H = 6, Qe = /* @__PURE__ */ new Set(["seek-bar", "time-display"]);
1116
+ function Ke() {
1063
1117
  return typeof window.matchMedia != "function" || window.matchMedia("(hover: hover)").matches;
1064
1118
  }
1065
- class He {
1119
+ class We {
1066
1120
  constructor(t) {
1067
- s(this, "el");
1068
- s(this, "labelEl");
1069
- s(this, "keyEl");
1070
- s(this, "showTimer", null);
1071
- s(this, "hideTimer", null);
1072
- s(this, "currentTarget", null);
1073
- s(this, "isOccluded", null);
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);
1074
1128
  /** Gösterim gecikmesi (SHOW_DELAY_MS) içinde bekleyen hedef — `currentTarget` yalnızca gerçekten gösterilince set ediliyor. */
1075
- s(this, "pendingTarget", null);
1076
- s(this, "onMouseOver", (t) => {
1129
+ r(this, "pendingTarget", null);
1130
+ r(this, "onMouseOver", (t) => {
1077
1131
  const e = this.matchTarget(t.target);
1078
1132
  !e || e === this.currentTarget || this.scheduleShow(e);
1079
1133
  });
1080
- s(this, "onMouseOut", (t) => {
1134
+ r(this, "onMouseOut", (t) => {
1081
1135
  const e = this.matchTarget(t.target);
1082
1136
  if (!e || e !== this.currentTarget && e !== this.pendingTarget) return;
1083
1137
  const i = t.relatedTarget;
1084
1138
  i && e.contains(i) || this.scheduleHide();
1085
1139
  });
1086
- s(this, "onFocusIn", (t) => {
1140
+ r(this, "onFocusIn", (t) => {
1087
1141
  const e = this.matchTarget(t.target);
1088
1142
  e && this.show(e);
1089
1143
  });
1090
- s(this, "onFocusOut", (t) => {
1144
+ r(this, "onFocusOut", (t) => {
1091
1145
  const e = this.matchTarget(t.target);
1092
1146
  !e || e !== this.currentTarget || this.hideNow();
1093
1147
  });
1094
- s(this, "hideNow", () => {
1148
+ r(this, "hideNow", () => {
1095
1149
  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");
1096
1150
  });
1097
1151
  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);
@@ -1115,50 +1169,50 @@ class He {
1115
1169
  var o;
1116
1170
  const e = t, i = (o = e == null ? void 0 : e.closest) == null ? void 0 : o.call(e, 'button[aria-label], [role="slider"][aria-label]');
1117
1171
  if (!i) return null;
1118
- const r = i.getAttribute("part");
1119
- return r && De.has(r) || i.offsetParent === null && i !== document.activeElement ? null : i;
1172
+ const s = i.getAttribute("part");
1173
+ return s && Qe.has(s) || i.offsetParent === null && i !== document.activeElement ? null : i;
1120
1174
  }
1121
1175
  scheduleShow(t) {
1122
1176
  this.hideTimer && (clearTimeout(this.hideTimer), this.hideTimer = null), this.showTimer && clearTimeout(this.showTimer), this.pendingTarget = t, this.showTimer = setTimeout(() => {
1123
1177
  this.showTimer = null, this.pendingTarget = null, this.show(t);
1124
- }, Ne);
1178
+ }, je);
1125
1179
  }
1126
1180
  scheduleHide() {
1127
- this.showTimer && (clearTimeout(this.showTimer), this.showTimer = null), this.pendingTarget = null, this.hideTimer && clearTimeout(this.hideTimer), this.hideTimer = setTimeout(() => this.hideNow(), Oe);
1181
+ this.showTimer && (clearTimeout(this.showTimer), this.showTimer = null), this.pendingTarget = null, this.hideTimer && clearTimeout(this.hideTimer), this.hideTimer = setTimeout(() => this.hideNow(), $e);
1128
1182
  }
1129
1183
  show(t) {
1130
- if (!Fe()) return;
1184
+ if (!Ke()) return;
1131
1185
  const e = t.getAttribute("aria-label");
1132
1186
  if (!e) return;
1133
1187
  this.currentTarget = t, this.labelEl.textContent = e;
1134
1188
  const i = t.dataset.shortcut;
1135
1189
  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(() => {
1136
- var r;
1137
- 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"));
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"));
1138
1192
  });
1139
1193
  }
1140
1194
  position(t) {
1141
- const e = this.mountEl.getBoundingClientRect(), i = t.getBoundingClientRect(), r = this.el.getBoundingClientRect();
1142
- let o = i.top - e.top - r.height - K;
1143
- o < D && (o = i.bottom - e.top + K);
1144
- let n = i.left - e.left + i.width / 2 - r.width / 2;
1145
- const l = e.width - r.width - D;
1146
- n = Math.max(D, Math.min(n, l)), this.el.style.top = `${o}px`, this.el.style.left = `${n}px`;
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`;
1147
1201
  }
1148
1202
  }
1149
- class _e {
1203
+ class Xe {
1150
1204
  constructor(t, e, i) {
1151
- s(this, "host");
1152
- s(this, "video");
1153
- s(this, "toggleFullscreen");
1205
+ r(this, "host");
1206
+ r(this, "video");
1207
+ r(this, "toggleFullscreen");
1154
1208
  /** ←/→ ve J/L ile sarma süresi (sn) — options.keyboardSeekStep. */
1155
- s(this, "seekStep", 5);
1209
+ r(this, "seekStep", 5);
1156
1210
  /** Klavyeyle sarıldığında (sn, negatif = geri) — sarma bildirimi için. */
1157
- s(this, "onSeek", null);
1211
+ r(this, "onSeek", null);
1158
1212
  /** Space/K'den önce sorulur — true dönerse işlenmiştir (ör. preroll beklemesini iptal). */
1159
- s(this, "interceptTogglePlay", null);
1160
- s(this, "onKeyDown", (t) => {
1161
- var r, o, n;
1213
+ r(this, "interceptTogglePlay", null);
1214
+ r(this, "onKeyDown", (t) => {
1215
+ var s, o, a;
1162
1216
  if (t.defaultPrevented) return;
1163
1217
  const e = t.composedPath()[0];
1164
1218
  if ((t.key === " " || t.key === "Enter") && e instanceof HTMLButtonElement) return;
@@ -1166,7 +1220,7 @@ class _e {
1166
1220
  switch (t.key) {
1167
1221
  case " ":
1168
1222
  case "k":
1169
- if ((r = this.interceptTogglePlay) != null && r.call(this)) {
1223
+ if ((s = this.interceptTogglePlay) != null && s.call(this)) {
1170
1224
  t.preventDefault();
1171
1225
  break;
1172
1226
  }
@@ -1178,7 +1232,7 @@ class _e {
1178
1232
  break;
1179
1233
  case "ArrowLeft":
1180
1234
  case "j":
1181
- this.video.currentTime = Math.max(0, this.video.currentTime - this.seekStep), (n = this.onSeek) == null || n.call(this, -this.seekStep), t.preventDefault();
1235
+ this.video.currentTime = Math.max(0, this.video.currentTime - this.seekStep), (a = this.onSeek) == null || a.call(this, -this.seekStep), t.preventDefault();
1182
1236
  break;
1183
1237
  case "ArrowUp":
1184
1238
  this.video.volume = Math.min(1, this.video.volume + 0.1), this.video.muted = !1, t.preventDefault();
@@ -1200,40 +1254,40 @@ class _e {
1200
1254
  this.host.removeEventListener("keydown", this.onKeyDown);
1201
1255
  }
1202
1256
  }
1203
- class Ve {
1257
+ class Ye {
1204
1258
  constructor(t) {
1205
- s(this, "el");
1206
- s(this, "video");
1207
- s(this, "show", () => this.el.classList.remove("hp:hidden"));
1208
- s(this, "hide", () => this.el.classList.add("hp:hidden"));
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"));
1209
1263
  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);
1210
1264
  }
1211
1265
  destroy() {
1212
1266
  this.video.removeEventListener("waiting", this.show), this.video.removeEventListener("playing", this.hide), this.video.removeEventListener("canplay", this.hide), this.video.removeEventListener("pause", this.hide);
1213
1267
  }
1214
1268
  }
1215
- const qe = '<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>';
1216
- class Ge {
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 {
1217
1271
  constructor(t, e) {
1218
- s(this, "el");
1219
- s(this, "video");
1220
- s(this, "labels");
1221
- s(this, "messageEl");
1222
- s(this, "codeEl");
1223
- s(this, "retryBtn");
1224
- s(this, "retryText");
1225
- s(this, "onRetry", null);
1226
- s(this, "shouldShow", () => !0);
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);
1227
1281
  /** showStreamError ile açılan hatanın kodu (video.error yokken). */
1228
- s(this, "streamErrorCode", 0);
1229
- s(this, "show", () => {
1282
+ r(this, "streamErrorCode", 0);
1283
+ r(this, "show", () => {
1230
1284
  !this.video.getAttribute("src") && !this.video.querySelector("source") || this.shouldShow() && (this.render(), this.el.setAttribute("data-visible", ""));
1231
1285
  });
1232
1286
  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";
1233
1287
  const i = document.createElement("div");
1234
1288
  i.className = "hp-error-card";
1235
- const r = document.createElement("div");
1236
- r.className = "hp-error-icon", r.appendChild(E("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 = qe, this.retryText = document.createElement("span"), this.retryText.textContent = e.retry, this.retryBtn.appendChild(this.retryText), this.retryBtn.addEventListener("click", () => {
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", () => {
1237
1291
  var o;
1238
1292
  this.dismiss(), (o = this.onRetry) == null || o.call(this);
1239
1293
  }), i.appendChild(this.retryBtn), this.el.appendChild(i), t.addEventListener("error", this.show);
@@ -1279,150 +1333,150 @@ class Ge {
1279
1333
  this.video.removeEventListener("error", this.show);
1280
1334
  }
1281
1335
  }
1282
- const F = /* @__PURE__ */ new WeakMap(), ce = /* @__PURE__ */ new WeakSet(), N = /* @__PURE__ */ new WeakMap();
1283
- function We(a) {
1284
- return ce.has(a);
1336
+ const _ = /* @__PURE__ */ new WeakMap(), ye = /* @__PURE__ */ new WeakSet(), F = /* @__PURE__ */ new WeakMap();
1337
+ function et(n) {
1338
+ return ye.has(n);
1285
1339
  }
1286
- function de(a, t, e, i, r) {
1287
- let o = F.get(a);
1288
- o || F.set(a, o = /* @__PURE__ */ new Map());
1289
- const n = `${t}\0${e}\0${i}\0${r}`;
1290
- let l = o.get(n);
1291
- return l || (l = a.addTextTrack(e, i, r), ce.add(l), o.set(n, l)), l;
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}`;
1344
+ let l = o.get(a);
1345
+ return l || (l = n.addTextTrack(e, i, s), ye.add(l), o.set(a, l)), l;
1292
1346
  }
1293
- function ue(a, t) {
1294
- for (const [e, i] of F.get(a) ?? [])
1347
+ function ke(n, t) {
1348
+ for (const [e, i] of _.get(n) ?? [])
1295
1349
  if (e.startsWith(`${t}\0`)) {
1296
1350
  i.mode = "hidden";
1297
- for (const r of Array.from(i.cues ?? [])) i.removeCue(r);
1351
+ for (const s of Array.from(i.cues ?? [])) i.removeCue(s);
1298
1352
  i.mode = "disabled";
1299
1353
  }
1300
1354
  }
1301
- function Xe(a, t) {
1302
- me(a);
1303
- const e = N.get(a), i = [];
1304
- for (const r of t) {
1305
- const o = de(a, "options", "subtitles", r.label, r.srclang);
1306
- o.mode = r.default ? "hidden" : "disabled", i.push({ label: r.label, track: o }), Ue(a, o, r.src, e);
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);
1307
1361
  }
1308
1362
  return i;
1309
1363
  }
1310
- function me(a) {
1311
- N.set(a, (N.get(a) ?? 0) + 1), ue(a, "options");
1364
+ function we(n) {
1365
+ F.set(n, (F.get(n) ?? 0) + 1), ke(n, "options");
1312
1366
  }
1313
- function $e(a, t) {
1367
+ function it(n, t) {
1314
1368
  let e = null;
1315
- for (const { label: i, track: r } of a) {
1369
+ for (const { label: i, track: s } of n) {
1316
1370
  const o = i === t;
1317
- r.mode = o ? "hidden" : "disabled", o && (e = r);
1371
+ s.mode = o ? "hidden" : "disabled", o && (e = s);
1318
1372
  }
1319
1373
  return e;
1320
1374
  }
1321
- async function Ue(a, t, e, i) {
1322
- let r;
1375
+ async function st(n, t, e, i) {
1376
+ let s;
1323
1377
  try {
1324
1378
  const o = await fetch(e);
1325
1379
  if (!o.ok) throw new Error(`HTTP ${o.status}`);
1326
- r = await o.text();
1380
+ s = await o.text();
1327
1381
  } catch (o) {
1328
- console.warn("[HopePlayer] altyazı yüklenemedi:", e, o), a.dispatchEvent(new CustomEvent("hp-internal:subtitle-error", { detail: { src: e, message: String(o) } }));
1382
+ console.warn("[HopePlayer] altyazı yüklenemedi:", e, o), n.dispatchEvent(new CustomEvent("hp-internal:subtitle-error", { detail: { src: e, message: String(o) } }));
1329
1383
  return;
1330
1384
  }
1331
- if (!(N.get(a) !== i || typeof VTTCue != "function"))
1332
- for (const o of Ke(r)) {
1333
- const n = new VTTCue(o.start, o.end, o.text);
1334
- Qe(n, o.settings), t.addCue(n);
1385
+ if (!(F.get(n) !== i || typeof VTTCue != "function"))
1386
+ for (const o of ot(s)) {
1387
+ const a = new VTTCue(o.start, o.end, o.text);
1388
+ at(a, o.settings), t.addCue(a);
1335
1389
  }
1336
1390
  }
1337
- const Q = "(?:\\d+:)?\\d{1,2}:\\d{2}(?:[.,]\\d{1,3})?", je = new RegExp(`^(${Q})\\s+-->\\s+(${Q})(.*)$`);
1338
- function Y(a) {
1339
- return a.replace(",", ".").split(":").reduce((t, e) => t * 60 + Number(e), 0);
1391
+ const ie = "(?:\\d+:)?\\d{1,2}:\\d{2}(?:[.,]\\d{1,3})?", rt = new RegExp(`^(${ie})\\s+-->\\s+(${ie})(.*)$`);
1392
+ function se(n) {
1393
+ return n.replace(",", ".").split(":").reduce((t, e) => t * 60 + Number(e), 0);
1340
1394
  }
1341
- function Ke(a) {
1342
- const t = [], e = a.replace(/^/, "").replace(/\r\n?/g, `
1395
+ function ot(n) {
1396
+ const t = [], e = n.replace(/^/, "").replace(/\r\n?/g, `
1343
1397
  `).split(/\n{2,}/);
1344
1398
  for (const i of e) {
1345
- const r = i.split(`
1346
- `), o = r.findIndex((d) => d.includes("-->"));
1399
+ const s = i.split(`
1400
+ `), o = s.findIndex((h) => h.includes("-->"));
1347
1401
  if (o < 0) continue;
1348
- const n = je.exec(r[o].trim());
1349
- if (!n) continue;
1350
- const l = r.slice(o + 1).join(`
1402
+ const a = rt.exec(s[o].trim());
1403
+ if (!a) continue;
1404
+ const l = s.slice(o + 1).join(`
1351
1405
  `);
1352
- l.trim() && t.push({ start: Y(n[1]), end: Y(n[2]), settings: n[3].trim(), text: l });
1406
+ l.trim() && t.push({ start: se(a[1]), end: se(a[2]), settings: a[3].trim(), text: l });
1353
1407
  }
1354
1408
  return t;
1355
1409
  }
1356
- function Qe(a, t) {
1410
+ function at(n, t) {
1357
1411
  for (const e of t.split(/\s+/)) {
1358
- const [i, r] = e.split(":");
1359
- if (!i || !r) continue;
1360
- const [o] = r.split(",");
1412
+ const [i, s] = e.split(":");
1413
+ if (!i || !s) continue;
1414
+ const [o] = s.split(",");
1361
1415
  try {
1362
- i === "align" ? a.align = o : i === "vertical" ? a.vertical = o : i === "size" ? a.size = parseFloat(o) : i === "position" ? a.position = parseFloat(o) : i === "line" && (a.snapToLines = !o.endsWith("%"), a.line = parseFloat(o));
1416
+ 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));
1363
1417
  } catch {
1364
1418
  }
1365
1419
  }
1366
1420
  }
1367
- const I = 6, Ye = 20, Ze = 14, Je = 6, et = 10, tt = 3, be = "hope-caption-row", ge = "hope-caption-font-size", Z = "hope-caption-bg-color", J = "hope-caption-text-color", it = {
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 = {
1368
1422
  small: 0.78,
1369
1423
  normal: 1,
1370
1424
  large: 1.35
1371
- }, ee = [
1425
+ }, ae = [
1372
1426
  "rgba(0, 0, 0, 0.75)",
1373
1427
  "rgba(0, 0, 0, 0)",
1374
1428
  "rgba(255, 255, 255, 0.85)",
1375
1429
  "rgba(183, 28, 28, 0.8)",
1376
1430
  "rgba(13, 71, 161, 0.8)",
1377
1431
  "rgba(27, 94, 32, 0.8)"
1378
- ], te = ["#ffffff", "#000000", "#ffeb3b", "#ff5252", "#18ffff", "#69f0ae"];
1379
- function st() {
1432
+ ], ne = ["#ffffff", "#000000", "#ffeb3b", "#ff5252", "#18ffff", "#69f0ae"];
1433
+ function ut() {
1380
1434
  try {
1381
- const a = window.localStorage.getItem(be), t = a === null ? 0 : Number(a);
1435
+ const n = window.localStorage.getItem(Ee), t = n === null ? 0 : Number(n);
1382
1436
  return Number.isFinite(t) && t >= 0 && t < I ? t : 0;
1383
1437
  } catch {
1384
1438
  return 0;
1385
1439
  }
1386
1440
  }
1387
- function rt() {
1441
+ function gt() {
1388
1442
  try {
1389
- const a = window.localStorage.getItem(ge);
1390
- return a === "small" || a === "normal" || a === "large" ? a : "normal";
1443
+ const n = window.localStorage.getItem(Ce);
1444
+ return n === "small" || n === "normal" || n === "large" ? n : "normal";
1391
1445
  } catch {
1392
1446
  return "normal";
1393
1447
  }
1394
1448
  }
1395
- function ie(a, t) {
1449
+ function le(n, t) {
1396
1450
  const e = t[0] ?? "";
1397
1451
  try {
1398
- const i = window.localStorage.getItem(a);
1452
+ const i = window.localStorage.getItem(n);
1399
1453
  return i !== null && t.includes(i) ? i : e;
1400
1454
  } catch {
1401
1455
  return e;
1402
1456
  }
1403
1457
  }
1404
- class M {
1405
- constructor(t, e, i, r) {
1406
- s(this, "layerEl");
1407
- s(this, "bubbleEl");
1408
- s(this, "videoArea");
1409
- s(this, "seekBarEl");
1410
- s(this, "labels");
1411
- s(this, "activeTrack", null);
1412
- s(this, "fontSize", rt());
1413
- s(this, "bgColor", ie(Z, ee));
1414
- s(this, "textColor", ie(J, te));
1415
- s(this, "rowIndex", st());
1416
- s(this, "dragging", !1);
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);
1417
1471
  /** Kontrol çubuğu görünür mü — görünürken altyazı seek bar'ın üstünde, değilken en altta. */
1418
- s(this, "chromeVisible", !0);
1419
- s(this, "dragStartClientY", 0);
1420
- s(this, "dragStartBottomPx", 0);
1421
- s(this, "dragMoved", !1);
1422
- s(this, "rafId", null);
1423
- s(this, "pendingDeltaPx", 0);
1424
- s(this, "resizeObserver");
1425
- s(this, "onCueChange", () => {
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", () => {
1426
1480
  var e;
1427
1481
  const t = (e = this.activeTrack) == null ? void 0 : e.activeCues;
1428
1482
  if (!this.activeTrack || !t || t.length === 0) {
@@ -1432,28 +1486,28 @@ class M {
1432
1486
  this.bubbleEl.textContent = "";
1433
1487
  for (let i = 0; i < t.length; i++) {
1434
1488
  i > 0 && this.bubbleEl.appendChild(document.createElement("br"));
1435
- const r = t[i];
1436
- typeof r.getCueAsHTML == "function" ? this.bubbleEl.appendChild(r.getCueAsHTML()) : this.bubbleEl.appendChild(document.createTextNode(r.text ?? ""));
1489
+ const s = t[i];
1490
+ typeof s.getCueAsHTML == "function" ? this.bubbleEl.appendChild(s.getCueAsHTML()) : this.bubbleEl.appendChild(document.createTextNode(s.text ?? ""));
1437
1491
  }
1438
1492
  this.bubbleEl.classList.add("hp-caption-visible");
1439
1493
  });
1440
- s(this, "onPointerDown", (t) => {
1494
+ r(this, "onPointerDown", (t) => {
1441
1495
  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));
1442
1496
  });
1443
- s(this, "onPointerMove", (t) => {
1444
- this.dragging && (this.pendingDeltaPx = t.clientY - this.dragStartClientY, Math.abs(this.pendingDeltaPx) > tt && (this.dragMoved = !0), this.rafId === null && (this.rafId = requestAnimationFrame(this.applyPendingDrag)));
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)));
1445
1499
  });
1446
- s(this, "applyPendingDrag", () => {
1500
+ r(this, "applyPendingDrag", () => {
1447
1501
  if (this.rafId = null, !this.dragging) return;
1448
- const { min: t, max: e } = this.bounds(), i = Math.min(e, Math.max(t, this.dragStartBottomPx - this.pendingDeltaPx)), r = this.dragStartBottomPx - i;
1449
- this.bubbleEl.style.transform = `translateX(-50%) translateY(${r}px)`;
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)`;
1450
1504
  });
1451
- s(this, "onPointerUp", (t) => {
1505
+ r(this, "onPointerUp", (t) => {
1452
1506
  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;
1453
- 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, n = Math.round(o * (I - 1));
1454
- this.setRowIndex(n, !0);
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));
1508
+ this.setRowIndex(a, !0);
1455
1509
  });
1456
- 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();
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();
1457
1511
  }
1458
1512
  /** `applyOptions()`'tan — hangi track aktif (ya da null = kapalı). */
1459
1513
  setActiveTrack(t) {
@@ -1465,7 +1519,7 @@ class M {
1465
1519
  setFontSize(t) {
1466
1520
  this.fontSize = t, this.applyFontSizeVar(), this.recomputePosition();
1467
1521
  try {
1468
- window.localStorage.setItem(ge, t);
1522
+ window.localStorage.setItem(Ce, t);
1469
1523
  } catch {
1470
1524
  }
1471
1525
  }
@@ -1475,7 +1529,7 @@ class M {
1475
1529
  setBgColor(t) {
1476
1530
  this.bgColor = t, this.bubbleEl.style.setProperty("--hp-caption-bg", t);
1477
1531
  try {
1478
- window.localStorage.setItem(Z, t);
1532
+ window.localStorage.setItem(re, t);
1479
1533
  } catch {
1480
1534
  }
1481
1535
  }
@@ -1485,7 +1539,7 @@ class M {
1485
1539
  setTextColor(t) {
1486
1540
  this.textColor = t, this.bubbleEl.style.setProperty("--hp-caption-text", t);
1487
1541
  try {
1488
- window.localStorage.setItem(J, t);
1542
+ window.localStorage.setItem(oe, t);
1489
1543
  } catch {
1490
1544
  }
1491
1545
  }
@@ -1498,15 +1552,15 @@ class M {
1498
1552
  this.labels = t, this.bubbleEl.setAttribute("aria-label", t.captionDragHandle);
1499
1553
  }
1500
1554
  applyFontSizeVar() {
1501
- this.bubbleEl.style.setProperty("--hp-caption-size-multiplier", String(it[this.fontSize]));
1555
+ this.bubbleEl.style.setProperty("--hp-caption-size-multiplier", String(ct[this.fontSize]));
1502
1556
  }
1503
1557
  bounds() {
1504
- const t = this.videoArea.getBoundingClientRect(), e = this.seekBarEl.getBoundingClientRect(), r = (this.bubbleEl.getBoundingClientRect().height || 32) + Ye, o = Math.max(et, Math.round(t.height * 0.04)), n = this.chromeVisible && e.height > 0 ? Math.max(0, Math.round(t.bottom - e.top + (this.videoArea.hasAttribute("data-compact") ? Je : Ze))) : o, l = Math.max(n, Math.round(t.height - r));
1505
- return { min: n, max: l };
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));
1559
+ return { min: a, max: l };
1506
1560
  }
1507
1561
  pxForRow(t) {
1508
- const { min: e, max: i } = this.bounds(), r = t / (I - 1);
1509
- return Math.round(e + r * (i - e));
1562
+ const { min: e, max: i } = this.bounds(), s = t / (I - 1);
1563
+ return Math.round(e + s * (i - e));
1510
1564
  }
1511
1565
  /**
1512
1566
  * Balonun EKRANDA şu an durduğu konum (bottom, px): yazılı `bottom` + o anki transform'un dikey kayması.
@@ -1525,10 +1579,10 @@ class M {
1525
1579
  /** FLIP: bottom anında yazılır, yalnızca transform animasyonlanır — bottom'u animasyonlamak bırakınca zıplatıyordu. */
1526
1580
  setRowIndex(t, e) {
1527
1581
  this.rowIndex = Math.min(I - 1, Math.max(0, t));
1528
- const i = this.pxForRow(this.rowIndex), r = this.visualBottomPx();
1529
- 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"));
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"));
1530
1584
  try {
1531
- window.localStorage.setItem(be, String(this.rowIndex));
1585
+ window.localStorage.setItem(Ee, String(this.rowIndex));
1532
1586
  } catch {
1533
1587
  }
1534
1588
  }
@@ -1544,26 +1598,26 @@ class M {
1544
1598
  this.activeTrack && this.activeTrack.removeEventListener("cuechange", this.onCueChange), this.resizeObserver.disconnect(), this.rafId !== null && cancelAnimationFrame(this.rafId), this.bubbleEl.removeEventListener("pointerdown", this.onPointerDown);
1545
1599
  }
1546
1600
  }
1547
- s(M, "BG_COLOR_PRESETS", ee), s(M, "TEXT_COLOR_PRESETS", te);
1548
- class ot {
1601
+ r(R, "BG_COLOR_PRESETS", ae), r(R, "TEXT_COLOR_PRESETS", ne);
1602
+ class mt {
1549
1603
  constructor(t) {
1550
- s(this, "el");
1551
- s(this, "bufferedEl");
1552
- s(this, "playedEl");
1553
- s(this, "visible", !1);
1554
- s(this, "rafId", null);
1555
- s(this, "sync", () => {
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", () => {
1556
1610
  this.render(), this.visible && !this.video.paused ? this.start() : this.stop();
1557
1611
  });
1558
- s(this, "render", () => {
1612
+ r(this, "render", () => {
1559
1613
  const t = this.video.duration, e = Number.isFinite(t) && t > 0;
1560
1614
  if (this.el.toggleAttribute("data-disabled", !e), !this.visible || !e) return;
1561
1615
  this.playedEl.style.transform = `scaleX(${Math.min(1, this.video.currentTime / t)})`;
1562
1616
  const { buffered: i } = this.video;
1563
- let r = 0;
1617
+ let s = 0;
1564
1618
  for (let o = 0; o < i.length; o++)
1565
- i.start(o) <= this.video.currentTime && (r = Math.max(r, i.end(o)));
1566
- this.bufferedEl.style.transform = `scaleX(${Math.min(1, r / t)})`;
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)})`;
1567
1621
  });
1568
1622
  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);
1569
1623
  }
@@ -1584,19 +1638,19 @@ class ot {
1584
1638
  this.rafId !== null && cancelAnimationFrame(this.rafId), this.rafId = null;
1585
1639
  }
1586
1640
  }
1587
- const nt = 1e3, at = 800, lt = '<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>';
1588
- class ht {
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 {
1589
1643
  constructor(t) {
1590
- s(this, "el");
1591
- s(this, "valueEl");
1592
- s(this, "unitEl");
1593
- s(this, "liveEl");
1594
- s(this, "total", 0);
1595
- s(this, "lastAt", 0);
1596
- s(this, "hideTimer", null);
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);
1597
1651
  this.labels = t, this.el = document.createElement("div"), this.el.className = "hp-seek-fb", this.el.setAttribute("part", "seek-feedback");
1598
1652
  const e = document.createElement("span");
1599
- e.className = "hp-seek-fb-chevrons", e.innerHTML = lt.repeat(3);
1653
+ e.className = "hp-seek-fb-chevrons", e.innerHTML = vt.repeat(3);
1600
1654
  const i = document.createElement("span");
1601
1655
  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);
1602
1656
  }
@@ -1604,27 +1658,27 @@ class ht {
1604
1658
  show(t) {
1605
1659
  if (!t) return;
1606
1660
  const e = Date.now(), i = Math.sign(t) === Math.sign(this.total);
1607
- this.total = i && e - this.lastAt < nt ? this.total + t : t, this.lastAt = e;
1608
- const r = Math.round(Math.abs(this.total) * 10) / 10, o = this.total > 0;
1609
- 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(() => {
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(() => {
1610
1664
  this.el.removeAttribute("data-visible"), this.total = 0;
1611
- }, at);
1665
+ }, ft);
1612
1666
  }
1613
1667
  destroy() {
1614
1668
  this.hideTimer && clearTimeout(this.hideTimer), this.el.remove();
1615
1669
  }
1616
1670
  }
1617
- class pt {
1671
+ class xt {
1618
1672
  constructor(t) {
1619
- s(this, "el");
1620
- s(this, "open", !1);
1621
- s(this, "close", () => {
1673
+ r(this, "el");
1674
+ r(this, "open", !1);
1675
+ r(this, "close", () => {
1622
1676
  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));
1623
1677
  });
1624
- s(this, "onOutside", (t) => {
1678
+ r(this, "onOutside", (t) => {
1625
1679
  t.composedPath().includes(this.el) || this.close();
1626
1680
  });
1627
- s(this, "onKeyDown", (t) => {
1681
+ r(this, "onKeyDown", (t) => {
1628
1682
  t.key === "Escape" && (t.stopPropagation(), this.close());
1629
1683
  });
1630
1684
  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);
@@ -1634,46 +1688,46 @@ class pt {
1634
1688
  }
1635
1689
  /** `clientX/Y` ekran koordinatı — menü player'ın içinde kalacak şekilde kaydırılır. */
1636
1690
  show(t, e, i) {
1637
- var u;
1691
+ var c;
1638
1692
  this.el.replaceChildren(
1639
- ...i.map((c) => {
1640
- const b = document.createElement(c.onSelect ? "button" : "div");
1641
- b.className = "hp-context-menu-item", c.onSelect ? (b.type = "button", b.setAttribute("role", "menuitem"), b.addEventListener("click", () => {
1642
- this.close(), c.onSelect();
1643
- })) : b.setAttribute("data-info", "");
1644
- const h = document.createElement("span");
1645
- if (h.textContent = c.label, b.appendChild(h), c.meta) {
1646
- const p = document.createElement("span");
1647
- p.className = "hp-context-menu-meta", p.textContent = c.meta, b.appendChild(p);
1693
+ ...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", () => {
1696
+ 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) {
1700
+ const f = document.createElement("span");
1701
+ f.className = "hp-context-menu-meta", f.textContent = p.meta, g.appendChild(f);
1648
1702
  }
1649
- return b;
1703
+ return g;
1650
1704
  })
1651
1705
  ), this.el.setAttribute("data-open", ""), this.open = !0;
1652
- const r = this.container.getBoundingClientRect(), { width: o, height: n } = this.el.getBoundingClientRect(), l = Math.max(4, Math.min(t - r.left, r.width - o - 4)), d = Math.max(4, Math.min(e - r.top, r.height - n - 4));
1653
- this.el.style.left = `${l}px`, this.el.style.top = `${d}px`, (u = this.el.querySelector("button")) == null || u.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);
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));
1707
+ 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);
1654
1708
  }
1655
1709
  destroy() {
1656
1710
  this.close(), this.el.remove();
1657
1711
  }
1658
1712
  }
1659
- const ct = 3e3, se = 200;
1660
- class dt {
1713
+ const kt = 3e3, he = 200;
1714
+ class wt {
1661
1715
  constructor() {
1662
- s(this, "list", []);
1716
+ r(this, "list", []);
1663
1717
  /** Kayıt eklenince / temizlenince (açık panel canlı güncellenir). */
1664
- s(this, "onChange", null);
1718
+ r(this, "onChange", null);
1665
1719
  }
1666
1720
  get entries() {
1667
1721
  return this.list;
1668
1722
  }
1669
1723
  add(t) {
1670
- var r, o;
1724
+ var s, o;
1671
1725
  const e = Date.now(), i = this.list[this.list.length - 1];
1672
- if (i && e - i.time < ct && i.source === t.source && i.message === t.message && JSON.stringify(i.details ?? {}) === JSON.stringify(t.details ?? {})) {
1673
- i.count = (i.count ?? 1) + 1, i.time = e, (r = this.onChange) == null || r.call(this);
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);
1674
1728
  return;
1675
1729
  }
1676
- this.list.push({ time: e, ...t }), this.list.length > se && this.list.splice(0, this.list.length - se), (o = this.onChange) == null || o.call(this);
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);
1677
1731
  }
1678
1732
  clear() {
1679
1733
  var t;
@@ -1682,19 +1736,60 @@ class dt {
1682
1736
  /** Destek ekibine yapıştırılabilir düz metin. */
1683
1737
  toText() {
1684
1738
  return this.list.map((t) => {
1685
- 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})` : "";
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})` : "";
1686
1740
  return `${new Date(t.time).toISOString()} [${t.source}]${t.fatal ? " [fatal]" : ""} ${t.message}${i}${e ? ` | ${e}` : ""}`;
1687
1741
  }).join(`
1688
1742
  `);
1689
1743
  }
1690
1744
  }
1691
- const ut = '@font-face{font-family:hope-icons;src:url(data:font/woff2;base64,d09GMgABAAAAAAq4AAsAAAAAIQwAAAprAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACEUAqySKthATYCJANICyYABCAFhC4HgWgbvBwzo8LGASCo7UymWhxkcsp3plRjG4rgPXRJJ9fVhsrU04g9KovY4vJpzld+YERwXGwRdmsE0Nr/Zk+ea/0/eUbEQ4UkolEzJRAyHrJGXayR33zvZk3CzJDWKUloHZmgFSSUioXQOu8CNQvUV7Fz8RXl3Ff898T9fqr+cyupw8KUzXXM2Pc+Y3RIJIjjFblsLVvy9ORekUJtZff2i6NK8HjGMyiHsTj9XUbnwv7/5kp7XCD8BeOOdcGZSfIPsrM5QkzeZXkOQfZVEUhABwAKUDggdBWmwp5bI3wNxmYesGjMYIr2ErZ95PkIqFi1QbLtbd8xjZO6BExkeO9AXDacdLVGaREsKykblAQF2QOGr+GZnLCNToCd/mP/b+whiTzFT+iQ3V55GcVWeDl7aTn8s6k7GfaeIEeKxYmFhovl0aeRhuKiTyui6MwWuvtMILZmMyJXmPauCBKpTL74D15RSVlFVU1dQ1NLm1DAaQ2OX3LaRDYIRJAQQUoEGRHkRFAggiIRlIigTAQVIqgSQY0I6kTQIIImEbSI1bRBx608h/NQqSHkKT7yEZrrR2RPz6ctjRGDG5nJdrydkGbZiKODliytnkQsNhY5zUiogdvU37V1d09VV/e/414obRN7aOtEcNuERYBt776fN6bYNjY63h7GWD6eyOzdToMjKDRrjCXJZr6PdPyOdIdliibDmY2DqAUiWGJXYrWbDrSyw7NEkZiDxS9mCaRGQoacgc4Vp4BTwymzoEiV7PaZGCgBITVhA7JtEsZc5ASmgO2SkAMyMFgQmuq5iujoEyqvKQfh+ukR7o4c9Ap115TXFY7qFaoorcaYFmYCFyoiBGkBrw9PQZUv3e3GSCR5o5UBQA8LWNGSDhBOBCPsUr6WQw5qT07UrqNN4zsQ4OlmQZFen2wp7PHCFdfIKYioSnqbs3Pk8WigFxYQNeXWa0IbetamJN7LPsyq18kUrjtzOiK77e168SK3kAwhq8pHFH0E2shMekcD9uECvCfHMxqJQIxCafozKBVerE1Atb0FbZuybniE50mGWDJmhE8a4XPlCFeJYw+K6N7pjtZhdEynJ3U6GuWotlP9NzzMceyjTscMc0nDXJ5TjnLsQQBE2kRA25Uu056bc3Guzv00q35/s2NVVdXVNWVfE8XGxhZnfXV1b++sw95W2m7MHXcIgm2uy1VR0TF0wsriUh5VSuLUKzGzoYAqoVzXDm0Ogm2nRdc41sTVGggQ7XUWXSh3kOjR8GZS0i4NL6TUQCoshWvmQL3wmWstTCYUjGn1s4Ga9/gWSblci2NEZu58tHd2LLw71dOjP9jOQ0+Drd5R+1jgk4rnOo2qkX/55OIpo0pBCZg/vx40NI+GyPM2iJ6KUOblTr92xmfF2KzavOf/0LpOlQ/ELz1GcdPDYYhvaNSjw6iqRIdF7mkRC345pqgR2S8gPCyGIqoSC4nCnp3IJIZpG3lpruEwRS3IwfXGpVcd0uCnq7yif/c06tJhXFxEFDAaEeWHPslZ3z+Nw2IfXCJd0GqHKyRediMy8NPoIVoRKcjB72WtBlblT8QteSs5oihS/gURYkVZUpSILLK//5swQZT+3MTuXDyGQPRkf/03YYwqVAF9/6v1Kn+K8+B9WCDBKMbRIBFwzDIl6sg8mgWuFrcVeArvNKm3HsuyqHGXTNBTl0ffUumpqqqrEQTm27Kevu6Cz0VnzDtWccpph/F3jdEqrrk5jXwa+tWhImBggMGCgl+3qMqEGTUuyaKgWBvWYp6IcjCmJsIJNRKVRdaKmYtpQMMiH6UHHg0Fr8FazAkrGq+niSp6oICj4tjKinI0QobGnjab8Fi7+8wiy+H67e8e6ttyeJyHA4ZeCDlDlmHdj7qSnk9cn+QrCJ+GV1K6Il5CECYWX6RLkXw+tkM0nHhneUW2di9SkLAIsiQoGR35BM4+PpBMJncxoGAKAlBMS5JPJsgSyu2aQstGZVjn2Hm/ghoboGAd+QgVPuRysUlHECWGxLEcldmFXozgeEZ6TrdFyozDykOVqQlbdM+F3H+wxHuH8Jb7/IFTKKho7htfuvDG57eYtzx/44VL433NFQXvC176RgRtFpPnAqv7QpNFX/px6kOge5cgtJpNpuQGd9xkpg1DyDgtjQGC+52MliNeCSup9HNrmRE/gZD4RzLz+ySdUrDkJZyWAd+8qyk2lHg86r7njTrdE60ajWWLn4WawM/ZtAZKw/let8adzehoWFWv15uMXZ9cnzTp9bi+gq665Isatzd/WJqaLnwqkMH6t1g0PPKpXp1M4j6Pp6SB1ZZ1/Ccpvg1pbYGensXFdCpx3nmJVHpxsacnYCsyjOgmgf9nMxu4t4I7m3q/iGXJ+tTJs/a07xHbyoHkCeatcPXZx7qvz36+b8+zizl3hevv+mv03uy+bqwRCnUS4jYyzZvhPt+/Rbaw+006C7LoRhol2khxm5DeRNNR8L93X/be0b/uqg/flbP47J59n2ev7z52dnX4LeZE8sCK7RHf0/zsyWk9yca+6G3aGXyL25A5qScTNIISJ9eLRZYUvwWC+loJzuQYJdoEhivMGmkpIspTODwZdO7HGpvZnHLb79t30cVdjRljyxxG85x/DY2ZrsaLL9qn1LlTZrNNg/PWxNDa+tbFWn5t6/y6y8WPTBP9jkJH/xWdZzccoxSEWMtZJ/pYkJzh4FiYJEsIT2rXthduO+20tXUDA60uVz4nrm9r/KVZt3baabfd9/7Y+LWKvZSmS+3KteNj7zdcxQGAo+gsB+X56HHIjIp1mzb9aLF0vF56bE6jQuU9pJNN3NPpro2XARycHu8OSV1dUqh7/HFrnxVD6PPGEzljOYm41wchzl+mpyeggcgJJiETQ5IncpJJyqQkx/0oJBbZE0Eo4pEtBGZQ+hgROPf/LQAAAKhnqTYAAKDGqBVjwk3USO/XqNP8Ca9Qp0x4iZqecBY1NuFLav2ubqbCAPx/iPqWusMQf5ehV8LuRaEL+7C0Ho6fZn1ApQE1+0AAPNz25r/zRW2/MlHVBNycf+4uvLuNUXIsOvAfhHfS3Ked1y/GzZ3Y+xPQCZv0tCdWaBozPLbl/dA0CDGOTBQXCDENpTZsM8cp5KrmoaBiFSoWrDlwVddxqZCVBT1XDUg0PIJUz3PbzPEF5AZeQ0HPB6i4/wf/QHM8hKdGIq+ckZA/1J3XKSMjD/IjZSdB7dbbgtvxLnDShSt1uKh8rPcVq2ySVr1JKOy9qJjkj01ZN6XEx83Grv7SayMtGogItuIYiICMD1Cj46Gl0gbz1X9AQobbbb6yw2ylbN9pkFxaK2DVuR9wgZJxRI09QoGFYpEgWihvzXhkenjInEbxnv7ADArWmgaZEY82pjkrS9cDS62yrgIwBL+yd9SjPg1oSCMa04SmNKM5LWhJV3RNN3RLd3SPoWnY/C/cn3dMElaebRkaL5lvbOd9Nok5rDgUTteZK3t2ZVAnVw28SBxG3WXuRxcH0evLJHMpLtR5mv9dXB1010J4QlbSSadqfhTftbxqXN3MFqleTgtWqO0KV+NKYmgeBAA=) format("woff2");font-weight:400;font-style:normal;font-display:block}', re = "hope-player-icon-font";
1692
- function mt() {
1693
- if (typeof document > "u" || document.getElementById(re)) return;
1694
- const a = document.createElement("style");
1695
- a.id = re, a.textContent = ut, document.head.appendChild(a);
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;
1748
+ const n = document.createElement("style");
1749
+ n.id = pe, n.textContent = Et, document.head.appendChild(n);
1750
+ }
1751
+ function Tt() {
1752
+ var i;
1753
+ const t = (i = window.adTaxonomy) == null ? void 0 : i.keyValues;
1754
+ if (!t || typeof t != "object") return "";
1755
+ const e = [];
1756
+ for (const [s, o] of Object.entries(t))
1757
+ o == null || o === "" || e.push(`${s}=${o}`);
1758
+ return e.join("&");
1759
+ }
1760
+ function G(n, t = {}) {
1761
+ const e = encodeURIComponent(document.referrer || window.location.href), i = encodeURIComponent(window.location.href), s = Date.now();
1762
+ let o = n;
1763
+ const a = {
1764
+ referrer_url: e,
1765
+ description_url: i,
1766
+ timestamp: s
1767
+ };
1768
+ for (const [l, h] of Object.entries(a)) {
1769
+ const c = `[${l}]`;
1770
+ if (o.includes(c))
1771
+ o = o.replace(c, String(h));
1772
+ else if (!new URLSearchParams(o.split("?")[1]).has(l)) {
1773
+ const p = o.includes("?") ? "&" : "?";
1774
+ o += `${p}${l}=${h}`;
1775
+ }
1776
+ }
1777
+ try {
1778
+ const l = new URL(o);
1779
+ if (l.pathname.includes("/vmap/")) return n;
1780
+ const c = [];
1781
+ t.includeRefreshCount && c.push(`adrefreshCount=${t.adRefreshCount ?? 0}`);
1782
+ const p = Tt();
1783
+ 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("&"));
1786
+ }
1787
+ return l.toString();
1788
+ } catch {
1789
+ return o;
1790
+ }
1696
1791
  }
1697
- const fe = {
1792
+ const Te = {
1698
1793
  play: "Oynat",
1699
1794
  pause: "Duraklat",
1700
1795
  mute: "Sessize al",
@@ -1703,8 +1798,8 @@ const fe = {
1703
1798
  seekBar: "Video konumu",
1704
1799
  settings: "Ayarlar",
1705
1800
  pip: "Resim içinde resim",
1706
- skipBack: (a) => `${a} saniye geri`,
1707
- skipForward: (a) => `${a} saniye ileri`,
1801
+ skipBack: (n) => `${n} saniye geri`,
1802
+ skipForward: (n) => `${n} saniye ileri`,
1708
1803
  secondsShort: "sn",
1709
1804
  audioTrack: "Ses",
1710
1805
  statsTitle: "İstatistikler",
@@ -1744,6 +1839,20 @@ const fe = {
1744
1839
  captions: "Altyazı",
1745
1840
  captionsOff: "Kapalı",
1746
1841
  captionSettings: "Altyazı ayarları",
1842
+ rewardedButton: "{quality} kilidini aç",
1843
+ rewardedTitle: "{quality} kalitesini aç",
1844
+ rewardedBody: "Kısa bir reklam izleyin, {quality} kalitesi {duration} açık kalsın. Vazgeçerseniz video şu anki kalitede devam eder.",
1845
+ rewardedWatch: "Reklamı izle",
1846
+ rewardedDecline: "Vazgeç",
1847
+ rewardedLoading: "Reklam hazırlanıyor…",
1848
+ rewardedNoFill: "Şu an gösterilecek reklam yok. Biraz sonra tekrar deneyin.",
1849
+ rewardedOk: "Tamam",
1850
+ rewardedUnlocked: "{quality} açıldı",
1851
+ rewardedUnlockedNoAd: "Şu an reklam yoktu — {quality} yine de açıldı",
1852
+ rewardedForVideo: "bu video boyunca",
1853
+ rewardedForSession: "bu oturum boyunca",
1854
+ rewardedForMinutes: "{n} dakika boyunca",
1855
+ sponsorPresents: "{name} sunar",
1747
1856
  captionSize: "Yazı Boyutu",
1748
1857
  captionSizeSmall: "Küçük",
1749
1858
  captionSizeNormal: "Normal",
@@ -1767,7 +1876,7 @@ const fe = {
1767
1876
  geoUnknownCountry: "Ülke bilgisi bulunamadı.",
1768
1877
  redirectCancel: "İptal",
1769
1878
  redirectPlayNow: "Şimdi Oynat",
1770
- redirectCountdown: (a) => `Sıradaki video ${a} saniye içinde oynatılacak.`,
1879
+ redirectCountdown: (n) => `Sıradaki video ${n} saniye içinde oynatılacak.`,
1771
1880
  redirectNowPlaying: "Video oynatılıyor...",
1772
1881
  qrResumeTitle: "Devam etmek için kodu telefonunuzla okutun",
1773
1882
  qrResumeDontShowAgain: "Bir daha gösterme",
@@ -1777,13 +1886,20 @@ const fe = {
1777
1886
  qrResumeOff: "Kapalı",
1778
1887
  pauseAdLabel: "Sponsorlu",
1779
1888
  pauseAdClose: "Reklamı kapat",
1889
+ adTriggerLabel: "Reklam",
1890
+ castButton: "TV'ye yayınla",
1891
+ airplayButton: "AirPlay",
1892
+ castPlayingOn: "{device} cihazında oynatılıyor",
1893
+ castDeviceFallback: "TV",
1894
+ castAdOnTv: "TV'de reklam oynatılıyor",
1895
+ airplayPlaying: "AirPlay ile oynatılıyor",
1780
1896
  pauseAdResume: "Videoya devam et",
1781
1897
  markerLearnMore: "Daha fazla bilgi",
1782
1898
  markerContinue: "Devam et",
1783
1899
  playlistTitle: "Oynatma Listesi",
1784
1900
  playlistPrev: "Önceki",
1785
1901
  playlistNext: "Sonraki",
1786
- videoFallbackTitle: (a) => `Video ${a + 1}`,
1902
+ videoFallbackTitle: (n) => `Video ${n + 1}`,
1787
1903
  storyPrev: "Önceki video",
1788
1904
  storyNext: "Sonraki video",
1789
1905
  storyAllVideos: "Tüm videolar",
@@ -1791,7 +1907,7 @@ const fe = {
1791
1907
  liveClock: "Canlı saat",
1792
1908
  live: "CANLI",
1793
1909
  goToLive: "Canlıya git"
1794
- }, bt = {
1910
+ }, St = {
1795
1911
  play: "Play",
1796
1912
  pause: "Pause",
1797
1913
  mute: "Mute",
@@ -1800,8 +1916,8 @@ const fe = {
1800
1916
  seekBar: "Seek",
1801
1917
  settings: "Settings",
1802
1918
  pip: "Picture-in-picture",
1803
- skipBack: (a) => `Back ${a} seconds`,
1804
- skipForward: (a) => `Forward ${a} seconds`,
1919
+ skipBack: (n) => `Back ${n} seconds`,
1920
+ skipForward: (n) => `Forward ${n} seconds`,
1805
1921
  secondsShort: "s",
1806
1922
  audioTrack: "Audio",
1807
1923
  statsTitle: "Stats",
@@ -1841,6 +1957,20 @@ const fe = {
1841
1957
  captions: "Captions",
1842
1958
  captionsOff: "Off",
1843
1959
  captionSettings: "Subtitle settings",
1960
+ rewardedButton: "Unlock {quality}",
1961
+ rewardedTitle: "Unlock {quality}",
1962
+ rewardedBody: "Watch a short ad to keep {quality} unlocked {duration}. If you skip it, the video keeps playing at the current quality.",
1963
+ rewardedWatch: "Watch ad",
1964
+ rewardedDecline: "No thanks",
1965
+ rewardedLoading: "Loading ad…",
1966
+ rewardedNoFill: "No ad is available right now. Please try again in a moment.",
1967
+ rewardedOk: "OK",
1968
+ rewardedUnlocked: "{quality} unlocked",
1969
+ rewardedUnlockedNoAd: "No ad right now — {quality} unlocked anyway",
1970
+ rewardedForVideo: "for this video",
1971
+ rewardedForSession: "for this session",
1972
+ rewardedForMinutes: "for {n} minutes",
1973
+ sponsorPresents: "Presented by {name}",
1844
1974
  captionSize: "Font Size",
1845
1975
  captionSizeSmall: "Small",
1846
1976
  captionSizeNormal: "Normal",
@@ -1864,7 +1994,7 @@ const fe = {
1864
1994
  geoUnknownCountry: "No country information found.",
1865
1995
  redirectCancel: "Cancel",
1866
1996
  redirectPlayNow: "Play now",
1867
- redirectCountdown: (a) => `Next video will play in ${a} seconds.`,
1997
+ redirectCountdown: (n) => `Next video will play in ${n} seconds.`,
1868
1998
  redirectNowPlaying: "Now playing...",
1869
1999
  qrResumeTitle: "Scan to continue watching on your phone",
1870
2000
  qrResumeDontShowAgain: "Don't show again",
@@ -1874,13 +2004,20 @@ const fe = {
1874
2004
  qrResumeOff: "Off",
1875
2005
  pauseAdLabel: "Sponsored",
1876
2006
  pauseAdClose: "Close ad",
2007
+ adTriggerLabel: "Advertisement",
2008
+ castButton: "Cast to TV",
2009
+ airplayButton: "AirPlay",
2010
+ castPlayingOn: "Playing on {device}",
2011
+ castDeviceFallback: "TV",
2012
+ castAdOnTv: "An ad is playing on the TV",
2013
+ airplayPlaying: "Playing via AirPlay",
1877
2014
  pauseAdResume: "Resume video",
1878
2015
  markerLearnMore: "Learn more",
1879
2016
  markerContinue: "Continue",
1880
2017
  playlistTitle: "Playlist",
1881
2018
  playlistPrev: "Previous",
1882
2019
  playlistNext: "Next",
1883
- videoFallbackTitle: (a) => `Video ${a + 1}`,
2020
+ videoFallbackTitle: (n) => `Video ${n + 1}`,
1884
2021
  storyPrev: "Previous video",
1885
2022
  storyNext: "Next video",
1886
2023
  storyAllVideos: "All videos",
@@ -1888,38 +2025,38 @@ const fe = {
1888
2025
  liveClock: "Live clock",
1889
2026
  live: "LIVE",
1890
2027
  goToLive: "Go to live"
1891
- }, gt = { tr: fe, en: bt };
1892
- function ve(a, t) {
1893
- return { ...gt[a ?? "tr"] ?? fe, ...t };
2028
+ }, At = { tr: Te, en: St };
2029
+ function Se(n, t) {
2030
+ return { ...At[n ?? "tr"] ?? Te, ...t };
1894
2031
  }
1895
- function ft(a, t, e) {
1896
- Object.assign(a, ve(t, e));
2032
+ function Lt(n, t, e) {
2033
+ Object.assign(n, Se(t, e));
1897
2034
  }
1898
- const H = 8e3;
1899
- function vt(a) {
2035
+ const U = 8e3;
2036
+ function Pt(n) {
1900
2037
  var t;
1901
- return (t = a.live) != null && t.scte35 && !a.adTagPreroll && !a.adTagVmap ? !1 : !!(a.adTagPreroll || a.adTagVmap);
2038
+ return (t = n.live) != null && t.scte35 && !n.adTagPreroll && !n.adTagVmap ? !1 : !!(n.adTagPreroll || n.adTagVmap);
1902
2039
  }
1903
- class yt {
2040
+ class Mt {
1904
2041
  constructor(t) {
1905
2042
  /** Kapı kurulu (preroll bekleniyor) mu. */
1906
- s(this, "armed", !1);
2043
+ r(this, "armed", !1);
1907
2044
  /** Kapı kuruluyken kullanıcı / autoplay oynatmak istedi mi. */
1908
- s(this, "playIntent", !1);
2045
+ r(this, "playIntent", !1);
1909
2046
  /** Kapının kendi pause() çağrısının ürettiği 'pause' olayı yutulsun. */
1910
- s(this, "swallowNextPause", !1);
1911
- s(this, "timeoutMs", H);
1912
- s(this, "timer", null);
2047
+ r(this, "swallowNextPause", !1);
2048
+ r(this, "timeoutMs", U);
2049
+ r(this, "timer", null);
1913
2050
  /** İlk oynatma isteği (reklam plugin'i bekleyen preroll'u başlatır). */
1914
- s(this, "onPlayIntent", null);
2051
+ r(this, "onPlayIntent", null);
1915
2052
  /** Zaman aşımı — reklam plugin'i geç gelecek cevabı iptal eder. Kapı bundan sonra içeriği başlatarak açılır. */
1916
- s(this, "onTimeout", null);
2053
+ r(this, "onTimeout", null);
1917
2054
  /** "Preroll bekleniyor" durumu değişti (UI: yükleme halkası, merkez buton). */
1918
- s(this, "onWaitChange", null);
1919
- s(this, "onPlay", (t) => {
2055
+ r(this, "onWaitChange", null);
2056
+ r(this, "onPlay", (t) => {
1920
2057
  this.armed && (t.stopImmediatePropagation(), this.swallowNextPause = !0, this.video.pause(), this.registerIntent());
1921
2058
  });
1922
- s(this, "onPause", (t) => {
2059
+ r(this, "onPause", (t) => {
1923
2060
  this.swallowNextPause && (this.swallowNextPause = !1, t.stopImmediatePropagation());
1924
2061
  });
1925
2062
  this.video = t, t.addEventListener("play", this.onPlay), t.addEventListener("pause", this.onPause);
@@ -1934,7 +2071,7 @@ class yt {
1934
2071
  get hasPlayIntent() {
1935
2072
  return this.playIntent;
1936
2073
  }
1937
- arm(t = H) {
2074
+ arm(t = U) {
1938
2075
  this.clearTimer(), this.armed = !0, this.playIntent = !1, this.timeoutMs = t;
1939
2076
  }
1940
2077
  /**
@@ -1971,24 +2108,34 @@ class yt {
1971
2108
  this.timer && clearTimeout(this.timer), this.timer = null;
1972
2109
  }
1973
2110
  }
1974
- const xt = [
2111
+ const Bt = [
1975
2112
  "https://imasdk.googleapis.com",
1976
2113
  "https://pubads.g.doubleclick.net",
1977
2114
  "https://securepubads.g.doubleclick.net",
1978
2115
  "https://pagead2.googlesyndication.com"
1979
2116
  ];
1980
- let oe = !1;
1981
- function kt() {
1982
- if (!(oe || typeof document > "u")) {
1983
- oe = !0;
1984
- for (const a of xt) {
1985
- if (document.head.querySelector(`link[rel="preconnect"][href="${a}"]`)) continue;
2117
+ let de = !1;
2118
+ function Rt() {
2119
+ if (!(de || typeof document > "u")) {
2120
+ de = !0;
2121
+ for (const n of Bt) {
2122
+ if (document.head.querySelector(`link[rel="preconnect"][href="${n}"]`)) continue;
1986
2123
  const t = document.createElement("link");
1987
- t.rel = "preconnect", t.href = a, document.head.appendChild(t);
2124
+ t.rel = "preconnect", t.href = n, document.head.appendChild(t);
1988
2125
  }
1989
2126
  }
1990
2127
  }
1991
- const wt = [0.5, 0.75, 1, 1.25, 1.5, 2], ne = 1200, Et = 3e3, ae = 5e3, Ct = 10, le = 10, Tt = 5, he = "stream-audio", z = "1.0.14", St = (
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 = {
2129
+ hls: "application/x-mpegurl",
2130
+ mp4: "video/mp4",
2131
+ webm: "video/webm",
2132
+ mp3: "audio/mpeg",
2133
+ m4a: "audio/mp4",
2134
+ aac: "audio/aac",
2135
+ ogg: "audio/ogg",
2136
+ wav: "audio/wav",
2137
+ flac: "audio/flac"
2138
+ }, Dt = (
1992
2139
  /* html */
1993
2140
  `
1994
2141
  <div class="video-area">
@@ -1999,326 +2146,360 @@ const wt = [0.5, 0.75, 1, 1.25, 1.5, 2], ne = 1200, Et = 3e3, ae = 5e3, Ct = 10,
1999
2146
  </div>
2000
2147
  `
2001
2148
  );
2002
- function At(a) {
2003
- if (typeof a == "number") return Number.isFinite(a) && a > 0 ? String(a) : null;
2004
- if (typeof a != "string") return null;
2005
- const t = a.trim().match(/^(\d+(?:\.\d+)?)\s*(?:[:/]\s*(\d+(?:\.\d+)?))?$/);
2149
+ function Ht(n) {
2150
+ if (typeof n == "number") return Number.isFinite(n) && n > 0 ? String(n) : null;
2151
+ if (typeof n != "string") return null;
2152
+ const t = n.trim().match(/^(\d+(?:\.\d+)?)\s*(?:[:/]\s*(\d+(?:\.\d+)?))?$/);
2006
2153
  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];
2007
2154
  }
2008
- class ye extends HTMLElement {
2155
+ class Ae extends HTMLElement {
2009
2156
  constructor() {
2010
2157
  super();
2011
- s(this, "root");
2012
- s(this, "videoArea");
2013
- s(this, "videoEl");
2014
- s(this, "adLayerEl");
2015
- s(this, "chromeEl");
2016
- s(this, "centerPlayButton");
2017
- s(this, "captionRenderer");
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");
2018
2165
  /** options.miniProgress açıkken kurulur. */
2019
- s(this, "miniProgress", null);
2020
- s(this, "chromeVisible", !0);
2021
- s(this, "sourceManager");
2022
- s(this, "controlBar");
2023
- s(this, "tooltip");
2024
- s(this, "keyboard");
2025
- s(this, "loadingSpinner");
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");
2026
2173
  /**
2027
2174
  * Preroll kapısı — reklam plugin'i yüklenmeden önce kurulur ki autoplay / ilk play araya kaçmasın.
2028
2175
  * Video'nun 'play'/'pause' dinleyicilerinin İLKİ olmalı (yuttuğu olayları UI ve hp:play görmesin).
2029
2176
  */
2030
- s(this, "prerollGate");
2177
+ r(this, "prerollGate");
2031
2178
  /** Ads plugin kurulumu sürüyor — erken başlatılan kurulum ile sonraki bekleme aynı promise'i paylaşır. */
2032
- s(this, "adsInstall", null);
2179
+ r(this, "adsInstall", null);
2033
2180
  /** Yükleme halkası açık (medya takıldı / preroll bekleniyor) — kontroller bu sırada otomatik gizlenmez. */
2034
- s(this, "loadingActive", !1);
2035
- s(this, "errorScreen");
2181
+ r(this, "loadingActive", !1);
2182
+ r(this, "errorScreen");
2036
2183
  /** İleri/geri sarmada sağda/solda beliren anlık bildirim. */
2037
- s(this, "seekFeedback");
2038
- s(this, "contextMenu");
2184
+ r(this, "seekFeedback");
2185
+ r(this, "contextMenu");
2039
2186
  /** options.contextMenu çözülmüş hali — null = kapalı (tarayıcının kendi menüsü). */
2040
- s(this, "contextMenuConfig", { stats: !1 });
2187
+ r(this, "contextMenuConfig", { stats: !1 });
2041
2188
  /** İlk açılışta yüklenir (plugins/stats). */
2042
- s(this, "statsPanel", null);
2043
- s(this, "debugPanel", null);
2189
+ r(this, "statsPanel", null);
2190
+ r(this, "debugPanel", null);
2044
2191
  /** options.debug — sağ tık menüsündeki "Hata ayıklama" girişini açar. */
2045
- s(this, "debugEnabled", !1);
2192
+ r(this, "debugEnabled", !1);
2046
2193
  /** Player'ın tüm hataları (medya, yayın, reklam, altyazı) — her zaman tutulur; bkz. `errorLog`. */
2047
- s(this, "log", new dt());
2194
+ r(this, "log", new wt());
2048
2195
  /** Son basılan işaretçi türü — sağ tık menüsü yalnızca fareyle (dokunmatikte uzun basma gesture'a ait). */
2049
- s(this, "lastPointerType", "mouse");
2196
+ r(this, "lastPointerType", "mouse");
2050
2197
  /** options.tapGestures kuruluysa (plugins/tap-gestures). */
2051
- s(this, "tapGestures", null);
2198
+ r(this, "tapGestures", null);
2052
2199
  /** Dokunmadan sonra tarayıcının ürettiği uyumluluk mouse olayları ikinci bir dokunuş sayılmasın. */
2053
- s(this, "lastTouchEndAt", 0);
2200
+ r(this, "lastTouchEndAt", 0);
2054
2201
  /** Video alanı boyutu değişince merkez play butonunun yerini yeniden hesaplar. */
2055
- s(this, "centerPlayObserver", null);
2056
- s(this, "tapToPlay", "auto");
2057
- s(this, "adsController", null);
2058
- s(this, "gestureControls", null);
2059
- s(this, "loopSection", null);
2060
- s(this, "audioStage", null);
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);
2208
+ /** 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);
2212
+ /** Son uygulanan MP4 kaynak listesi ve seçili etiket — kilit açılınca menü yeniden kurulur. */
2213
+ /** Çalan biçim grubunun kaynakları (kalite menüsü bunlar) — bkz. `sourceGroups`. */
2214
+ r(this, "currentSources", []);
2215
+ /** `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);
2218
+ /** Sıradaki gruba geçiş başladı — aynı arızanın ikinci hata olayı hata ekranı açmasın. */
2219
+ r(this, "fallbackPending", !1);
2220
+ /** 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);
2061
2225
  /** options.audio — kapak + plak sahnesi, kontroller hep görünür, tam ekran yok. */
2062
- s(this, "audioMode", !1);
2063
- s(this, "inViewAutoplay", null);
2064
- s(this, "unregisterSticky", null);
2065
- s(this, "playlistRunner", null);
2066
- s(this, "hopeStory", null);
2067
- s(this, "markProgress", null);
2068
- s(this, "segments", null);
2069
- s(this, "spriteThumbnails", null);
2070
- s(this, "countdownScreen", null);
2071
- s(this, "geoChecker", null);
2072
- s(this, "redirectScreen", null);
2073
- s(this, "qrResume", null);
2074
- s(this, "pauseAd", null);
2075
- s(this, "dubbing", null);
2076
- s(this, "liveWallClock", null);
2077
- s(this, "daiController", null);
2078
- s(this, "instanceKey");
2079
- s(this, "subtitleTracks", []);
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);
2241
+ /** İç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", []);
2080
2248
  /** Altyazı seçiminin tek giriş noktası — iOS native tam ekrandan dönüşte de kullanılır. */
2081
- s(this, "selectCaption", null);
2249
+ r(this, "selectCaption", null);
2082
2250
  /** `applyOptions()`'ta aktif bir altyazı track'i seçiliyken `true` — dil değişince Boyut/Konum görünümünü tazelemek için. */
2083
- s(this, "captionTrackActive", !1);
2251
+ r(this, "captionTrackActive", !1);
2084
2252
  /** `options.subtitles` izleri. */
2085
- s(this, "optionTracks", []);
2253
+ r(this, "optionTracks", []);
2086
2254
  /** Yayının izleri: hls.js'ten (havuzda, `sub:`/`cc:`) ya da tarayıcının native HLS in-band izleri (`native:`). */
2087
- s(this, "streamTracks", []);
2255
+ r(this, "streamTracks", []);
2088
2256
  /** hls.js aynı cue'yu (seek sonrası) yeniden gönderebilir — iz başına eklenenler. */
2089
- s(this, "streamCueKeys", /* @__PURE__ */ new Map());
2257
+ r(this, "streamCueKeys", /* @__PURE__ */ new Map());
2090
2258
  /** Seçili altyazı — yayın izleri sonradan gelince seçim korunur. */
2091
- s(this, "activeCaptionLabel", null);
2092
- s(this, "streamAudio", { tracks: [], active: -1 });
2259
+ r(this, "activeCaptionLabel", null);
2260
+ r(this, "streamAudio", { tracks: [], active: -1 });
2093
2261
  /**
2094
2262
  * countdownScreen varken gerçek init (kaynak + içerik plugin'leri) ertelenir; en güncel options snapshot'ı.
2095
2263
  * onComplete kaydı tek sefer yapılır (bkz. playbackInitRegistered) — init birden fazla kez tetiklenmesin.
2096
2264
  */
2097
- s(this, "pendingPlaybackOptions", null);
2098
- s(this, "playbackInitRegistered", !1);
2265
+ r(this, "pendingPlaybackOptions", null);
2266
+ r(this, "playbackInitRegistered", !1);
2099
2267
  /**
2100
2268
  * countdownScreen gibi alanlar yalnızca .options ile gelir. connectedCallback'teki ilk (options'suz) geçiş chrome'u
2101
2269
  * bir an açıp player'ı gösteriyordu; 'boot' bloklayıcısı gerçek options gelene kadar bekletir.
2102
2270
  */
2103
- s(this, "bootResolved", !1);
2104
- s(this, "bootGraceTimer", null);
2271
+ r(this, "bootResolved", !1);
2272
+ r(this, "bootGraceTimer", null);
2105
2273
  /**
2106
2274
  * Son uygulanan `.options` nesnesi + attribute'lar. `.options` element sayfaya eklenmeden önce verilince
2107
2275
  * connectedCallback AYNI seçenekleri yeniden uyguluyordu; değişen bir şey yoksa bu ikinci geçiş atlanır.
2108
2276
  */
2109
- s(this, "lastSynced", null);
2277
+ r(this, "lastSynced", null);
2110
2278
  /**
2111
2279
  * applyOptions'ın asenkron kısmı (plugin kurulumu + kaynak yükleme) aynı anda tek kez çalışır. İki geçiş
2112
2280
  * üst üste binince `!this.adsController` gibi kontroller ikisinde de geçiyor, plugin (ör. IMA) iki kez kuruluyordu.
2113
2281
  * Çalışırken gelen seçenekler bekletilir; bitince yalnızca en sonuncusu uygulanır.
2114
2282
  */
2115
- s(this, "pluginApplyRun", null);
2116
- s(this, "pendingPluginOptions", null);
2117
- s(this, "_options", {});
2118
- s(this, "hideTimer", null);
2119
- s(this, "cursorTimer", null);
2283
+ r(this, "pluginApplyRun", null);
2284
+ r(this, "pendingPluginOptions", null);
2285
+ r(this, "_options", {});
2286
+ r(this, "hideTimer", null);
2287
+ r(this, "cursorTimer", null);
2120
2288
  /** null = imleç hiç gizlenmez (options.cursorHideDelayMs: false). */
2121
- s(this, "cursorHideDelayMs", ae);
2289
+ r(this, "cursorHideDelayMs", ue);
2122
2290
  /** Fare kontrollerin (buton/seek bar) üzerinde mi — üzerindeyken otomatik gizlenmez; videonun üstünde hareketsizse gizlenir. */
2123
- s(this, "pointerOverControls", !1);
2291
+ r(this, "pointerOverControls", !1);
2124
2292
  /** Kalite menüsünde şu an HLS seviyeleri mi var (kaynak değişince temizlemek için). */
2125
- s(this, "hlsQualitiesShown", !1);
2293
+ r(this, "hlsQualitiesShown", !1);
2126
2294
  /** Son uygulanan options.showRemainingTime — bkz. applyOptions. */
2127
- s(this, "appliedShowRemaining");
2128
- s(this, "autoHideDelayMs", ne);
2129
- s(this, "tapCandidate", !1);
2130
- s(this, "tapStartX", 0);
2131
- s(this, "tapStartY", 0);
2295
+ r(this, "appliedShowRemaining");
2296
+ r(this, "autoHideDelayMs", ce);
2297
+ r(this, "tapCandidate", !1);
2298
+ r(this, "tapStartX", 0);
2299
+ r(this, "tapStartY", 0);
2132
2300
  /** Tüm UI'ın paylaştığı tek, mutable sözlük — dil değişince referans değil alanlar güncellenir. */
2133
- s(this, "i18n", ve("tr"));
2301
+ r(this, "i18n", Se("tr"));
2134
2302
  /** IMA SDK'nın kendi ad-UI dili (skip butonu/sayaç metni) de aynı dili takip etsin diye — bkz. plugins/ads/AdsController. */
2135
- s(this, "localeCode", "tr");
2136
- s(this, "onMediaError", () => {
2303
+ r(this, "localeCode", "tr");
2304
+ r(this, "onMediaError", () => {
2137
2305
  const e = this.videoEl.error;
2138
2306
  if (!e) return;
2139
- const i = { 1: "MEDIA_ERR_ABORTED", 2: "MEDIA_ERR_NETWORK", 3: "MEDIA_ERR_DECODE", 4: "MEDIA_ERR_SRC_NOT_SUPPORTED" }, r = this.videoEl.currentSrc;
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;
2140
2308
  this.log.add({
2141
2309
  source: "media",
2142
2310
  message: e.message || i[e.code] || `MediaError ${e.code}`,
2143
2311
  fatal: !0,
2144
- details: { code: e.code, name: i[e.code], src: r && !r.startsWith("blob:") ? r : r ? "MediaSource (hls.js)" : void 0 }
2312
+ details: { code: e.code, name: i[e.code], src: s && !s.startsWith("blob:") ? s : s ? "MediaSource (hls.js)" : void 0 }
2145
2313
  });
2146
2314
  });
2147
- s(this, "onSubtitleError", (e) => {
2315
+ r(this, "onSubtitleError", (e) => {
2148
2316
  const i = e.detail;
2149
2317
  this.log.add({ source: "subtitles", message: `Subtitle file could not be loaded: ${i.message}`, details: { src: i.src } });
2150
2318
  });
2151
- s(this, "onPointerTypeTrack", (e) => {
2319
+ r(this, "onPointerTypeTrack", (e) => {
2152
2320
  this.lastPointerType = e.pointerType;
2153
2321
  });
2154
2322
  /** Sağ tık: tarayıcı menüsü yerine player adı + sürüm (options.contextMenu). */
2155
- s(this, "onContextMenu", (e) => {
2323
+ r(this, "onContextMenu", (e) => {
2156
2324
  const i = this.contextMenuConfig;
2157
2325
  !i || this.lastPointerType !== "mouse" || (e.preventDefault(), this.contextMenu.show(e.clientX, e.clientY, [
2158
- { label: "HopeCorePlayer", meta: `v${z}` },
2326
+ { label: "HopeCorePlayer", meta: `v${N}` },
2159
2327
  ...i.stats ? [{ label: this.i18n.statsTitle, onSelect: () => void this.toggleStats(!0) }] : [],
2160
2328
  // Yalnızca debug açıkken ve kayıtlı bir hata varsa.
2161
2329
  ...this.debugEnabled && this.log.entries.length ? [{ label: this.i18n.debugTitle, meta: String(this.log.entries.length), onSelect: () => void this.showDebugLog() }] : []
2162
2330
  ]));
2163
2331
  });
2164
- s(this, "onStreamTextTracks", (e) => {
2165
- const i = this.streamTracks.filter((r) => r.id.startsWith("native:"));
2332
+ r(this, "onStreamTextTracks", (e) => {
2333
+ const i = this.streamTracks.filter((s) => s.id.startsWith("native:"));
2166
2334
  if (!e.length)
2167
- ue(this.videoEl, "stream"), this.streamCueKeys.clear(), this.streamTracks = i;
2335
+ ke(this.videoEl, "stream"), this.streamCueKeys.clear(), this.streamTracks = i;
2168
2336
  else {
2169
- const r = new Set([...this.optionTracks, ...i].map((o) => o.label));
2337
+ const s = new Set([...this.optionTracks, ...i].map((o) => o.label));
2170
2338
  this.streamTracks = [
2171
2339
  ...i,
2172
2340
  ...e.map((o) => {
2173
- const n = this.uniqueLabel(this.streamTrackLabel(o.label, o.lang) || o.id, o.kind === "captions" ? "CC" : o.lang || o.kind, r);
2174
- return { id: o.id, label: n, track: de(this.videoEl, "stream", o.kind, n, o.lang) };
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) };
2175
2343
  })
2176
2344
  ];
2177
2345
  }
2178
2346
  this.rebuildCaptions(this.activeCaptionLabel);
2179
2347
  });
2180
- s(this, "onStreamCues", (e, i) => {
2181
- var n;
2182
- const r = (n = this.streamTracks.find((l) => l.id === e)) == null ? void 0 : n.track;
2183
- if (!r) return;
2184
- let o = this.streamCueKeys.get(r);
2185
- o || this.streamCueKeys.set(r, o = /* @__PURE__ */ new Set());
2348
+ r(this, "onStreamCues", (e, i) => {
2349
+ 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());
2186
2354
  for (const l of i) {
2187
- const d = `${l.startTime}|${l.endTime}|${l.text}`;
2188
- o.has(d) || (o.add(d), r.addCue(l));
2355
+ const h = `${l.startTime}|${l.endTime}|${l.text}`;
2356
+ o.has(h) || (o.add(h), s.addCue(l));
2189
2357
  }
2190
2358
  });
2191
2359
  /** Tarayıcının kendi (native HLS) altyazı izleri — bizim havuz izlerimiz ve metadata izleri hariç. */
2192
- s(this, "onNativeTextTracksChanged", () => {
2193
- const e = Array.from(this.videoEl.textTracks).filter((n) => (n.kind === "subtitles" || n.kind === "captions") && !We(n)), i = this.streamTracks.some((n) => n.id.startsWith("native:"));
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:"));
2194
2362
  if (!e.length && !i) return;
2195
- const r = this.streamTracks.filter((n) => !n.id.startsWith("native:")), o = new Set([...this.optionTracks, ...r].map((n) => n.label));
2363
+ const s = this.streamTracks.filter((a) => !a.id.startsWith("native:")), o = new Set([...this.optionTracks, ...s].map((a) => a.label));
2196
2364
  this.streamTracks = [
2197
- ...r,
2198
- ...e.map((n, l) => ({
2365
+ ...s,
2366
+ ...e.map((a, l) => ({
2199
2367
  id: `native:${l}`,
2200
- label: this.uniqueLabel(n.label || n.language || `${this.i18n.captions} ${l + 1}`, n.language || String(l + 1), o),
2201
- track: n
2368
+ label: this.uniqueLabel(a.label || a.language || `${this.i18n.captions} ${l + 1}`, a.language || String(l + 1), o),
2369
+ track: a
2202
2370
  }))
2203
2371
  ], this.rebuildCaptions(this.activeCaptionLabel);
2204
2372
  });
2205
2373
  /** Yayında birden fazla ses izi varsa ayarlarda "Ses" alt menüsü (HLS alternatif ses / Safari audioTracks). */
2206
- s(this, "onStreamAudioTracks", (e, i) => {
2374
+ r(this, "onStreamAudioTracks", (e, i) => {
2207
2375
  this.streamAudio = { tracks: e, active: i };
2208
- const r = this.controlBar.settingsMenu, o = /* @__PURE__ */ new Set(), n = new Map(e.map((l) => [l.index, this.uniqueLabel(this.streamTrackLabel(l.label, l.lang), String(l.index + 1), o)]));
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)]));
2209
2377
  if (e.length <= 1) {
2210
- r.unregisterSubmenu(he);
2378
+ s.unregisterSubmenu(me);
2211
2379
  return;
2212
2380
  }
2213
- r.registerSubmenu({
2214
- key: he,
2381
+ s.registerSubmenu({
2382
+ key: me,
2215
2383
  title: this.i18n.audioTrack,
2216
- getValueLabel: () => n.get(i) ?? "",
2217
- getItems: () => e.map((l) => ({ label: n.get(l.index), active: l.index === i, onSelect: () => this.sourceManager.setAudioTrack(l.index) }))
2384
+ getValueLabel: () => a.get(i) ?? "",
2385
+ getItems: () => e.map((l) => ({ label: a.get(l.index), active: l.index === i, onSelect: () => this.sourceManager.setAudioTrack(l.index) }))
2218
2386
  });
2219
2387
  });
2220
2388
  /** Playlist panelinin monte edileceği, .video-area'nın ALTINDAKİ (shadow root içi) kapsayıcı — ilk ihtiyaçta oluşturulur. */
2221
- s(this, "panelContainer", null);
2222
- s(this, "onHlsLevelsChanged", (e, i) => {
2223
- if (e.length === 0 && this.hlsQualitiesShown) {
2389
+ r(this, "panelContainer", null);
2390
+ r(this, "onHlsLevelsChanged", (e, i) => {
2391
+ var l;
2392
+ if (this.lastHlsLevels = e, this.lastHlsActive = i, e.length === 0 && this.hlsQualitiesShown) {
2224
2393
  this.hlsQualitiesShown = !1, this.controlBar.setQualities([], "");
2225
2394
  return;
2226
2395
  }
2227
2396
  if (e.length <= 1) return;
2228
2397
  this.hlsQualitiesShown = !0;
2229
- const r = (o) => `${o.height}p`;
2398
+ const s = (h) => `${h.height}p`, o = this.qualityGate, a = (h) => !!(o != null && o.isLocked(h.height));
2399
+ 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);
2402
+ } else
2403
+ this.sourceManager.setMaxLevel(-1);
2230
2404
  this.controlBar.setQualities(
2231
2405
  [
2232
2406
  { label: this.i18n.autoQuality, onSelect: () => this.sourceManager.setLevel(-1) },
2233
2407
  // Yüksekten düşüğe (hls.js artan sıralıyor) — l.index hls.js'teki gerçek seviye numarası, sıradan bağımsız.
2234
- ...[...e].sort((o, n) => n.height - o.height).map((o) => ({ label: r(o), onSelect: () => this.sourceManager.setLevel(o.index) }))
2408
+ ...[...e].sort((h, c) => c.height - h.height).map((h) => ({
2409
+ label: s(h),
2410
+ locked: a(h),
2411
+ onSelect: a(h) ? () => o == null ? void 0 : o.requestUnlock() : () => this.sourceManager.setLevel(h.index)
2412
+ }))
2235
2413
  ],
2236
- i === -1 ? this.i18n.autoQuality : r(e[i])
2237
- );
2414
+ i === -1 || !e[i] ? this.i18n.autoQuality : s(e[i])
2415
+ ), (l = this.rewardedUnlock) == null || l.onQualitiesChanged();
2238
2416
  });
2239
- s(this, "onFullscreenChange", (e) => {
2417
+ r(this, "onFullscreenChange", (e) => {
2240
2418
  this.controlBar.setFullscreenState(this.isFullscreenActive()), (e == null ? void 0 : e.type) === "webkitbeginfullscreen" ? this.showCaptionsNatively() : (e == null ? void 0 : e.type) === "webkitendfullscreen" && this.syncCaptionsFromNative();
2241
2419
  });
2242
2420
  // ── Oynatma durumuna göre merkez buton + otomatik gizlenme ──
2243
2421
  // Değer: 'hidden' (tamamen gizle — countdown/geo) ya da 'reduced' (yalnızca oynat/duraklat + ses — ads).
2244
- s(this, "chromeBlockers", /* @__PURE__ */ new Map());
2245
- s(this, "onPlay", () => {
2422
+ r(this, "chromeBlockers", /* @__PURE__ */ new Map());
2423
+ r(this, "onPlay", () => {
2246
2424
  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"));
2247
2425
  });
2248
- s(this, "onPause", () => {
2426
+ r(this, "onPause", () => {
2249
2427
  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"));
2250
2428
  });
2251
- s(this, "onPointerDownFocus", () => {
2429
+ r(this, "onPointerDownFocus", () => {
2252
2430
  var e;
2253
2431
  this.focus(), (e = this.adsController) == null || e.initializeDisplayContainerOnce();
2254
2432
  });
2255
- s(this, "onVideoPressStart", (e) => {
2433
+ r(this, "onVideoPressStart", (e) => {
2256
2434
  this.tapCandidate = !0;
2257
2435
  const i = "touches" in e ? e.touches[0] : e;
2258
2436
  i && (this.tapStartX = i.clientX, this.tapStartY = i.clientY);
2259
2437
  });
2260
- s(this, "onVideoPressEnd", (e) => {
2261
- var l, d;
2438
+ r(this, "onVideoPressEnd", (e) => {
2439
+ var l, h;
2262
2440
  if (!this.tapCandidate || (this.tapCandidate = !1, this.isChromeBlocked) || (l = this.gestureControls) != null && l.isCurrentlyHolding()) return;
2263
2441
  const i = "changedTouches" in e;
2264
2442
  if (!i && Date.now() - this.lastTouchEndAt < 800) return;
2265
2443
  i && (this.lastTouchEndAt = Date.now());
2266
- const r = i ? e.changedTouches[0] : e;
2267
- if (r && Math.hypot(r.clientX - this.tapStartX, r.clientY - this.tapStartY) > Ct) {
2444
+ const s = i ? e.changedTouches[0] : e;
2445
+ if (s && Math.hypot(s.clientX - this.tapStartX, s.clientY - this.tapStartY) > Nt) {
2268
2446
  i && !this.isChromeBlocked && this.scheduleAutoHide();
2269
2447
  return;
2270
2448
  }
2271
- const o = i ? "touch" : this.lastPointerType, n = () => this.onBackgroundTap(o, () => {
2449
+ const o = i ? "touch" : this.lastPointerType, a = () => this.onBackgroundTap(o, () => {
2272
2450
  this.videoEl.paused ? this.videoEl.play().catch(() => {
2273
2451
  }) : this.videoEl.pause();
2274
2452
  });
2275
- r && ((d = this.tapGestures) != null && d.handleTap(r.clientX, o === "pen" ? "pen" : o, n)) || n();
2453
+ s && ((h = this.tapGestures) != null && h.handleTap(s.clientX, o === "pen" ? "pen" : o, a)) || a();
2276
2454
  });
2277
- s(this, "onVideoPressCancel", () => {
2455
+ r(this, "onVideoPressCancel", () => {
2278
2456
  this.tapCandidate = !1;
2279
2457
  });
2280
- s(this, "onPointerMove", (e) => {
2458
+ r(this, "onPointerMove", (e) => {
2281
2459
  if (e.pointerType !== "mouse") {
2282
2460
  this.chromeVisible && this.scheduleAutoHide();
2283
2461
  return;
2284
2462
  }
2285
2463
  this.pointerOverControls = e.composedPath().includes(this.chromeEl), this.scheduleAutoHide(), e.pointerType === "mouse" && this.scheduleCursorHide();
2286
2464
  });
2287
- s(this, "onPointerLeave", (e) => {
2465
+ r(this, "onPointerLeave", (e) => {
2288
2466
  e.pointerType === "mouse" && (this.pointerOverControls = !1, this.scheduleAutoHide(), this.showCursor());
2289
2467
  });
2290
- s(this, "scheduleAutoHide", () => {
2468
+ r(this, "scheduleAutoHide", () => {
2291
2469
  this.showChrome(), this.hideTimer && clearTimeout(this.hideTimer), !(this.videoEl.paused || this.loadingActive) && (this.audioMode || (this.hideTimer = setTimeout(() => {
2292
2470
  this.audioMode || this.videoEl.paused || this.loadingActive || this.pointerOverControls || this.controlBar.settingsMenu.isOpen || this.setChromeOpacity("0");
2293
- }, this.lastPointerType === "mouse" ? this.autoHideDelayMs : Math.max(this.autoHideDelayMs, Et))));
2471
+ }, this.lastPointerType === "mouse" ? this.autoHideDelayMs : Math.max(this.autoHideDelayMs, Ot))));
2294
2472
  });
2295
- mt(), this.root = this.attachShadow({ mode: "open" });
2473
+ Ct(), this.root = this.attachShadow({ mode: "open" });
2296
2474
  const e = document.createElement("style");
2297
- e.textContent = we, this.root.appendChild(e);
2475
+ e.textContent = Me, this.root.appendChild(e);
2298
2476
  const i = document.createElement("div");
2299
- i.className = "hp-root", i.innerHTML = St, 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 yt(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 Ve(this.videoEl), this.root.querySelector(".media-layer").appendChild(this.loadingSpinner.el), this.errorScreen = new Ge(this.videoEl, this.i18n), this.errorScreen.setOnRetry(() => void this.sourceManager.reload()), 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";
2300
- const r = document.createElement("span");
2301
- r.className = "hp-chip hp:flex hp:items-center hp:justify-center hp:w-16 hp:h-16", r.style.borderRadius = "9999px", r.appendChild(E("play", "hp:text-2xl")), this.centerPlayButton.appendChild(r), this.centerPlayButton.addEventListener("click", (o) => {
2302
- var c;
2303
- const n = () => {
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) => {
2480
+ var p;
2481
+ const a = () => {
2304
2482
  this.videoEl.paused && this.videoEl.play();
2305
- }, l = this.lastPointerType === "pen" ? "pen" : this.lastPointerType === "touch" ? "touch" : null, u = o.composedPath().includes(r) ? n : () => this.onBackgroundTap(l ?? "mouse", n);
2306
- l && ((c = this.tapGestures) != null && c.handleTap(o.clientX, l, u)) || u();
2307
- }), 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 Ce(this.videoEl, {
2483
+ }, l = this.lastPointerType === "pen" ? "pen" : this.lastPointerType === "touch" ? "touch" : null, c = o.composedPath().includes(s) ? a : () => this.onBackgroundTap(l ?? "mouse", a);
2484
+ 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, {
2308
2486
  onLevelsChanged: this.onHlsLevelsChanged,
2309
2487
  onAudioTracksChanged: this.onStreamAudioTracks,
2310
2488
  onTextTracksFound: this.onStreamTextTracks,
2311
2489
  onCues: this.onStreamCues,
2312
- onFatalError: (o) => this.errorScreen.showStreamError(o === "network" ? 2 : 3),
2490
+ onFatalError: (o) => {
2491
+ const a = o === "network" ? 2 : 3;
2492
+ this.streamErrorCode = a, this.errorScreen.showStreamError(a);
2493
+ },
2313
2494
  onStreamError: (o) => this.log.add({
2314
2495
  source: "stream",
2315
2496
  message: `${o.type}: ${o.details}`,
2316
2497
  fatal: o.fatal,
2317
2498
  details: { url: o.url, httpStatus: o.httpStatus, reason: o.reason, engine: "hls.js" }
2318
2499
  })
2319
- }), this.errorScreen.setShouldShow(() => !this.sourceManager.isRecovering()), this.controlBar = new Ie(
2500
+ }), this.errorScreen.setShouldShow(() => !this.sourceManager.isRecovering() && !this.tryNextSourceGroup()), this.controlBar = new qe(
2320
2501
  this.videoEl,
2321
- wt,
2502
+ zt,
2322
2503
  {
2323
2504
  onRequestFullscreen: () => this.requestFullscreenCompat(),
2324
2505
  liveSyncPosition: () => {
@@ -2346,8 +2527,8 @@ class ye extends HTMLElement {
2346
2527
  return ((o = this.adsController) == null ? void 0 : o.getAdVolume()) ?? 1;
2347
2528
  },
2348
2529
  setVolume: (o) => {
2349
- var n;
2350
- return (n = this.adsController) == null ? void 0 : n.setAdVolume(o);
2530
+ var a;
2531
+ return (a = this.adsController) == null ? void 0 : a.setAdVolume(o);
2351
2532
  },
2352
2533
  toggleMute: () => {
2353
2534
  var o;
@@ -2356,11 +2537,11 @@ class ye extends HTMLElement {
2356
2537
  }
2357
2538
  },
2358
2539
  this.i18n
2359
- ), this.chromeEl.appendChild(this.controlBar.el), this.chromeEl.appendChild(this.controlBar.topEl), this.videoArea.appendChild(this.controlBar.volumePanel.unmuteBadge), this.captionRenderer = new M(this.videoEl, this.videoArea, this.controlBar.seekBar.el, this.i18n), this.videoArea.appendChild(this.captionRenderer.layerEl), this.keyboard = new _e(
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(
2360
2541
  this,
2361
2542
  this.videoEl,
2362
2543
  () => this.isFullscreenActive() ? this.exitFullscreenCompat() : this.requestFullscreenCompat()
2363
- ), this.tooltip = new He(this.videoArea), this.contextMenu = new pt(this.videoArea), this.seekFeedback = new ht(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");
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");
2364
2545
  }
2365
2546
  static get observedAttributes() {
2366
2547
  return ["src", "poster", "autoplay", "muted", "loop", "theme", "locale"];
@@ -2376,8 +2557,8 @@ class ye extends HTMLElement {
2376
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"));
2377
2558
  }
2378
2559
  disconnectedCallback() {
2379
- var e, i, r, o, n, l, d, u, c, b, h, p, m, g, v, y, f, x, S, k, A, _, V, q;
2380
- (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(), (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), (n = this.tapGestures) == null || n.destroy(), this.sourceManager.destroy(), (l = this.adsController) == null || l.destroy(), (d = this.gestureControls) == null || d.destroy(), (u = this.loopSection) == null || u.destroy(), (c = this.audioStage) == null || c.destroy(), this.audioStage = null, (b = this.inViewAutoplay) == null || b.destroy(), (h = this.unregisterSticky) == null || h.call(this), (p = this.playlistRunner) == null || p.destroy(), (m = this.hopeStory) == null || m.destroy(), (g = this.markProgress) == null || g.destroy(), (v = this.segments) == null || v.destroy(), (y = this.spriteThumbnails) == null || y.destroy(), (f = this.countdownScreen) == null || f.destroy(), (x = this.geoChecker) == null || x.destroy(), (S = this.redirectScreen) == null || S.destroy(), (k = this.qrResume) == null || k.destroy(), (A = this.pauseAd) == null || A.destroy(), this.pauseAd = null, (_ = this.dubbing) == null || _.destroy(), (V = this.liveWallClock) == null || V.destroy(), (q = this.daiController) == null || q.destroy(), this.prerollGate.release(!1), this.hideTimer && clearTimeout(this.hideTimer), this.bootGraceTimer && clearTimeout(this.bootGraceTimer), this.lastSynced = null;
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;
2381
2562
  }
2382
2563
  /** Reklam/consent-farkında plugin'lerin (gesture/sticky/in-view-autoplay) ortak sorgusu. */
2383
2564
  isAdPlaying() {
@@ -2410,10 +2591,18 @@ class ye extends HTMLElement {
2410
2591
  async showDebugLog() {
2411
2592
  if (!this.debugPanel) {
2412
2593
  const { installDebugPanel: e } = await import("./index-DCXX1ZJG.js");
2413
- this.debugPanel ?? (this.debugPanel = e({ containerEl: this.videoArea, i18n: this.i18n, log: this.log, version: z }));
2594
+ this.debugPanel ?? (this.debugPanel = e({ containerEl: this.videoArea, i18n: this.i18n, log: this.log, version: N }));
2414
2595
  }
2415
2596
  this.debugPanel.show();
2416
2597
  }
2598
+ /**
2599
+ * Açık reklam tetikleyici reklamını kapat (adTriggers). `layout: 'none'` kreatifleri kendi kodlarından çağırabilir:
2600
+ * `window.top.document.querySelector('hope-player').closeAdTrigger()`.
2601
+ */
2602
+ closeAdTrigger() {
2603
+ var e;
2604
+ (e = this.adTriggers) == null || e.close("user");
2605
+ }
2417
2606
  /** Teknik istatistik panelini aç/kapat (`force`: true = aç, false = kapat). Sağ tık menüsündeki "İstatistikler" ile aynı. */
2418
2607
  async toggleStats(e) {
2419
2608
  if (!this.statsPanel) {
@@ -2423,7 +2612,7 @@ class ye extends HTMLElement {
2423
2612
  videoEl: this.videoEl,
2424
2613
  containerEl: this.videoArea,
2425
2614
  i18n: this.i18n,
2426
- version: z,
2615
+ version: N,
2427
2616
  getEngine: () => this.sourceManager.engine,
2428
2617
  getHls: () => this.sourceManager.hlsInstance
2429
2618
  }));
@@ -2449,7 +2638,7 @@ class ye extends HTMLElement {
2449
2638
  this.controlBar.toggleTimeMode();
2450
2639
  }
2451
2640
  syncFromAttributes() {
2452
- var r;
2641
+ var s;
2453
2642
  const e = {
2454
2643
  src: this.getAttribute("src") ?? void 0,
2455
2644
  poster: this.getAttribute("poster") ?? void 0,
@@ -2460,7 +2649,7 @@ class ye extends HTMLElement {
2460
2649
  locale: this.getAttribute("locale") ?? void 0
2461
2650
  }, i = JSON.stringify(e);
2462
2651
  if (this.bootResolved) {
2463
- if (((r = this.lastSynced) == null ? void 0 : r.options) === this._options && this.lastSynced.attrs === i) return;
2652
+ if (((s = this.lastSynced) == null ? void 0 : s.options) === this._options && this.lastSynced.attrs === i) return;
2464
2653
  this.lastSynced = { options: this._options, attrs: i };
2465
2654
  }
2466
2655
  this.applyOptions({ ...e, ...this._options });
@@ -2472,8 +2661,8 @@ class ye extends HTMLElement {
2472
2661
  this.pendingPluginOptions = null;
2473
2662
  try {
2474
2663
  await this.applyPluginsAndPlayback(i);
2475
- } catch (r) {
2476
- console.error("[hope-player] options could not be applied:", r);
2664
+ } catch (s) {
2665
+ console.error("[hope-player] options could not be applied:", s);
2477
2666
  }
2478
2667
  }
2479
2668
  })().finally(() => {
@@ -2481,23 +2670,23 @@ class ye extends HTMLElement {
2481
2670
  })), this.pluginApplyRun;
2482
2671
  }
2483
2672
  async applyOptions(e) {
2484
- var n, l, d, u, c, b, h, p, m, g, v, y, f, x, S, k, A;
2485
- e.poster && (this.videoEl.poster = e.poster), 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 ?? ne, this.tapToPlay = e.tapToPlay ?? "auto", this.cursorHideDelayMs = e.cursorHideDelayMs === !1 ? null : e.cursorHideDelayMs ?? ae, this.cursorHideDelayMs === null && this.showCursor(), e.miniProgress && !this.miniProgress ? (this.miniProgress = new ot(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 || (n = this.debugPanel) == null || n.hide(), this.contextMenuConfig = e.contextMenu === !1 ? null : { stats: typeof e.contextMenu == "object" && e.contextMenu.stats === !0 }, this.contextMenuConfig || this.contextMenu.close();
2486
- const i = e.keyboardSeekStep && e.keyboardSeekStep > 0 ? e.keyboardSeekStep : Tt;
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;
2487
2676
  this.keyboard.seekStep = i, this.controlBar.seekBar.keyboardStep = i;
2488
- const r = e.skipButtons === !0 ? {} : e.skipButtons || null;
2677
+ const s = e.skipButtons === !0 ? {} : e.skipButtons || null;
2489
2678
  this.controlBar.setSkipButtons(
2490
- r && r.back !== !1 ? r.back ?? le : null,
2491
- r && r.forward !== !1 ? r.forward ?? le : null
2679
+ s && s.back !== !1 ? s.back ?? ge : null,
2680
+ s && s.forward !== !1 ? s.forward ?? ge : null
2492
2681
  ), e.showRemainingTime !== void 0 && e.showRemainingTime !== this.appliedShowRemaining && (this.appliedShowRemaining = e.showRemainingTime, this.controlBar.setShowRemaining(e.showRemainingTime));
2493
- const o = At(e.aspectRatio);
2494
- 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", ft(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(), (d = this.hopeStory) == null || d.refreshLabels(), (u = this.countdownScreen) == null || u.refreshLabels(), (c = this.geoChecker) == null || c.refreshLabels(), (b = this.redirectScreen) == null || b.refreshLabels(), (h = this.qrResume) == null || h.refreshLabels(), (p = this.pauseAd) == null || p.refreshLabels(), (m = this.dubbing) == null || m.refreshLabels(), this.onStreamAudioTracks(this.streamAudio.tracks, this.streamAudio.active), (g = this.statsPanel) == null || g.refreshLabels(), (v = this.debugPanel) == null || v.refreshLabels(), (y = this.liveWallClock) == null || y.refreshLabels(), (f = this.loopSection) == null || f.refreshLabels(), (x = this.audioStage) == null || x.refreshLabels(), (S = this.markProgress) == null || S.refreshLabels(), (A = (k = this.unregisterSticky) == null ? void 0 : k.refreshLabels) == null || A.call(k), this.bootResolved && await this.queuePluginApply(e);
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);
2495
2684
  }
2496
2685
  /** applyOptions'ın asenkron kısmı — yalnızca queuePluginApply üzerinden, sırayla çalışır. */
2497
2686
  async applyPluginsAndPlayback(e) {
2498
2687
  if (e.ads && !this.adsController) {
2499
- const r = e.ads === !0 ? {} : e.ads;
2500
- vt(r) && !this.prerollGate.isArmed && this.prerollGate.arm(r.prerollTimeoutMs ?? H), kt(), e.countdownScreen || this.installAdsOnce(e);
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);
2501
2690
  }
2502
2691
  await this.applyAudioMode(e);
2503
2692
  const i = () => ({
@@ -2508,59 +2697,59 @@ class ye extends HTMLElement {
2508
2697
  i18n: this.i18n
2509
2698
  });
2510
2699
  if (e.countdownScreen && !this.countdownScreen) {
2511
- const { installCountdownScreen: r } = await import("./index-rENB3n9O.js");
2512
- this.countdownScreen = r(i(), e.countdownScreen);
2700
+ const { installCountdownScreen: s } = await import("./index-rENB3n9O.js");
2701
+ this.countdownScreen = s(i(), e.countdownScreen);
2513
2702
  }
2514
2703
  if (e.geoChecker && !this.geoChecker) {
2515
- const { installGeoChecker: r } = await import("./index-BBmuCtKu.js");
2516
- this.geoChecker = r(i(), e.geoChecker);
2704
+ const { installGeoChecker: s } = await import("./index-BBmuCtKu.js");
2705
+ this.geoChecker = s(i(), e.geoChecker);
2517
2706
  }
2518
2707
  this.unblockChrome("boot"), this.countdownScreen && !this.countdownScreen.isComplete() ? (this.pendingPlaybackOptions = e, this.playbackInitRegistered || (this.playbackInitRegistered = !0, this.countdownScreen.onComplete(() => {
2519
- const r = this.pendingPlaybackOptions;
2520
- this.pendingPlaybackOptions = null, r && this.initPlayback(r);
2708
+ const s = this.pendingPlaybackOptions;
2709
+ this.pendingPlaybackOptions = null, s && this.initPlayback(s);
2521
2710
  }))) : await this.initPlayback(e);
2522
2711
  }
2523
2712
  async initPlayback(e) {
2524
- var o, n, l, d, u, c, b;
2525
- this.sourceManager.configure(e.hls), this.errorScreen.dismiss();
2526
- const i = (o = e.sources) != null && o.length ? e.sources : e.src ? [{ src: e.src, label: this.i18n.autoQuality }] : [], r = i.find((h) => h.selected) ?? i[0];
2527
- if (r && !this.sourceManager.isLoaded(r.src, r.type) && (i.length <= 1 && (this.controlBar.setQualities([], ""), this.hlsQualitiesShown = !1), await this.sourceManager.load(r.src, r.type), e.autoplay && this.videoEl.play().catch(() => {
2528
- })), i.length > 1 && this.controlBar.setQualities(
2529
- i.map((h) => ({
2530
- label: h.label,
2531
- onSelect: () => void this.switchQualitySource(h)
2532
- })),
2533
- ((n = i.find((h) => h.selected)) == null ? void 0 : n.label) ?? i[0].label
2534
- ), await this.installAdsOnce(e), e.gesture && !this.gestureControls) {
2535
- const h = e.gesture === !0 ? {} : e.gesture, { installGesture: p } = await import("./index-Ca8hocby.js");
2536
- this.gestureControls = p(
2713
+ var c, p, g, m, f, v, x;
2714
+ 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));
2718
+ this.activeGroup = o !== -1 ? o : this.firstPlayableGroup();
2719
+ const a = ((p = this.sourceGroups[this.activeGroup]) == null ? void 0 : p.sources) ?? [];
2720
+ this.currentSources = a, this.fallbackPending = !1;
2721
+ const h = a.find(s) ?? this.pickInitialSource(a);
2722
+ 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
+ })), 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(
2537
2726
  { videoEl: this.videoEl, overlayContainerEl: this.videoArea, isAdActive: () => this.isAdPlaying() },
2538
- h
2727
+ d
2539
2728
  );
2540
2729
  }
2541
2730
  if (e.loopSection && !this.loopSection) {
2542
- const h = e.loopSection === !0 ? {} : e.loopSection, { installLoopSection: p } = await import("./index-f0vSgRIK.js");
2543
- this.loopSection = p(
2731
+ const d = e.loopSection === !0 ? {} : e.loopSection, { installLoopSection: u } = await import("./index-f0vSgRIK.js");
2732
+ this.loopSection = u(
2544
2733
  {
2545
2734
  videoEl: this.videoEl,
2546
2735
  seekBarEl: this.controlBar.seekBar.el,
2547
2736
  markers: this.controlBar.seekBar,
2548
- addControlButton: (m, g, v) => this.controlBar.addButton(m, g, v),
2737
+ addControlButton: (b, y, k) => this.controlBar.addButton(b, y, k),
2549
2738
  i18n: this.i18n
2550
2739
  },
2551
- h
2740
+ d
2552
2741
  );
2553
2742
  }
2554
2743
  if (e.inViewAutoplay && !this.inViewAutoplay) {
2555
- const h = e.inViewAutoplay === !0 ? {} : e.inViewAutoplay, { installInViewAutoplay: p } = await import("./index-3QALpwsf.js");
2556
- this.inViewAutoplay = p(
2557
- { videoEl: this.videoEl, observeEl: this, isAdActive: () => this.isAdPlaying() },
2558
- h
2744
+ const d = e.inViewAutoplay === !0 ? {} : e.inViewAutoplay, { installInViewAutoplay: u } = await import("./index-3QALpwsf.js");
2745
+ this.inViewAutoplay = u(
2746
+ { videoEl: this.videoEl, observeEl: this, isAdActive: () => this.isAdPlaying() || this.casting },
2747
+ d
2559
2748
  );
2560
2749
  }
2561
2750
  if (e.sticky && !this.unregisterSticky) {
2562
- const h = e.sticky === !0 ? {} : e.sticky, { installSticky: p } = await import("./index-CDDke5rz.js");
2563
- this.unregisterSticky = p(
2751
+ const d = e.sticky === !0 ? {} : e.sticky, { installSticky: u } = await import("./index-CDDke5rz.js");
2752
+ this.unregisterSticky = u(
2564
2753
  {
2565
2754
  key: this.instanceKey,
2566
2755
  videoEl: this.videoEl,
@@ -2570,23 +2759,23 @@ class ye extends HTMLElement {
2570
2759
  isAdActive: () => this.isAdPlaying(),
2571
2760
  i18n: this.i18n
2572
2761
  },
2573
- h
2762
+ d
2574
2763
  );
2575
2764
  }
2576
2765
  if (e.playlist && !this.playlistRunner) {
2577
- const { installPlaylist: h } = await import("./index-DtqNHU7Y.js");
2578
- this.playlistRunner = h(
2766
+ const { installPlaylist: d } = await import("./index-D3Z7ZDLJ.js");
2767
+ this.playlistRunner = d(
2579
2768
  {
2580
2769
  videoEl: this.videoEl,
2581
2770
  hostEl: this,
2582
2771
  panelEl: this.getOrCreatePanelContainer(),
2583
- loadSource: (p, m) => this.sourceManager.load(p, m),
2584
- setPoster: (p) => {
2585
- this.videoEl.poster = p;
2772
+ loadSource: (u, b) => this.sourceManager.load(u, b),
2773
+ setPoster: (u) => {
2774
+ this.videoEl.poster = u;
2586
2775
  },
2587
- requestFreshAd: (p) => {
2588
- var m;
2589
- return (m = this.adsController) == null ? void 0 : m.resetForNewItem(p);
2776
+ requestFreshAd: (u) => {
2777
+ var b;
2778
+ return (b = this.adsController) == null ? void 0 : b.resetForNewItem(u);
2590
2779
  },
2591
2780
  i18n: this.i18n
2592
2781
  },
@@ -2594,20 +2783,20 @@ class ye extends HTMLElement {
2594
2783
  );
2595
2784
  }
2596
2785
  if (e.story && !this.hopeStory) {
2597
- const { installStory: h } = await import("./index-Dy0Th0is.js");
2598
- this.hopeStory = h(
2786
+ const { installStory: d } = await import("./index-C3BQGcT3.js");
2787
+ this.hopeStory = d(
2599
2788
  {
2600
2789
  videoEl: this.videoEl,
2601
2790
  hostEl: this,
2602
2791
  videoAreaEl: this.videoArea,
2603
2792
  playerBodyEls: [this.root.querySelector(".media-layer"), this.chromeEl, this.centerPlayButton],
2604
- loadSource: (p, m) => this.sourceManager.load(p, m),
2605
- setPoster: (p) => {
2606
- this.videoEl.poster = p;
2793
+ loadSource: (u, b) => this.sourceManager.load(u, b),
2794
+ setPoster: (u) => {
2795
+ this.videoEl.poster = u;
2607
2796
  },
2608
- requestFreshAd: (p) => {
2609
- var m;
2610
- return (m = this.adsController) == null ? void 0 : m.resetForNewItem(p);
2797
+ requestFreshAd: (u) => {
2798
+ var b;
2799
+ return (b = this.adsController) == null ? void 0 : b.resetForNewItem(u);
2611
2800
  },
2612
2801
  i18n: this.i18n
2613
2802
  },
@@ -2615,24 +2804,24 @@ class ye extends HTMLElement {
2615
2804
  );
2616
2805
  }
2617
2806
  if (e.markers && !this.markProgress) {
2618
- const { installMarkers: h } = await import("./index-DcVUXkXo.js");
2619
- this.markProgress = h(
2807
+ const { installMarkers: d } = await import("./index-e00_M05B.js");
2808
+ this.markProgress = d(
2620
2809
  {
2621
2810
  videoEl: this.videoEl,
2622
2811
  overlayContainerEl: this.videoArea,
2623
- addSeekBarMarker: (p, m) => this.controlBar.seekBar.addMarker(p, m),
2812
+ addSeekBarMarker: (u, b) => this.controlBar.seekBar.addMarker(u, b),
2624
2813
  i18n: this.i18n
2625
2814
  },
2626
2815
  e.markers
2627
2816
  );
2628
2817
  }
2629
- if ((l = e.segments) != null && l.length && !this.segments) {
2630
- const { installSegments: h } = await import("./index-C2c71cGP.js");
2631
- this.segments = h({ videoEl: this.videoEl, seekBar: this.controlBar.seekBar }, e.segments);
2818
+ if ((g = e.segments) != null && g.length && !this.segments) {
2819
+ const { installSegments: d } = await import("./index-CBX7bn-G.js");
2820
+ this.segments = d({ videoEl: this.videoEl, seekBar: this.controlBar.seekBar }, e.segments);
2632
2821
  }
2633
2822
  if (e.spriteThumbnails && !this.spriteThumbnails) {
2634
- const { installSpriteThumbnails: h } = await import("./index-BTBAxNjr.js");
2635
- this.spriteThumbnails = h(
2823
+ const { installSpriteThumbnails: d } = await import("./index-BXSND_xN.js");
2824
+ this.spriteThumbnails = d(
2636
2825
  {
2637
2826
  videoEl: this.videoEl,
2638
2827
  seekBar: this.controlBar.seekBar,
@@ -2642,31 +2831,31 @@ class ye extends HTMLElement {
2642
2831
  );
2643
2832
  }
2644
2833
  if (e.redirectScreen && !this.redirectScreen) {
2645
- const { installRedirectScreen: h } = await import("./index-D6r-BGAV.js");
2646
- this.redirectScreen = h(
2834
+ const { installRedirectScreen: d } = await import("./index-D6r-BGAV.js");
2835
+ this.redirectScreen = d(
2647
2836
  { videoEl: this.videoEl, overlayContainerEl: this.videoArea, isAdActive: () => this.isAdPlaying(), i18n: this.i18n },
2648
2837
  e.redirectScreen
2649
2838
  );
2650
2839
  }
2651
2840
  if (e.qrResume && !this.qrResume) {
2652
- const { installQrResume: h } = await import("./index-DT8-oMPm.js");
2653
- this.qrResume = h({ videoEl: this.videoEl, overlayContainerEl: this.videoArea, i18n: this.i18n }, e.qrResume);
2841
+ const { installQrResume: d } = await import("./index-DT8-oMPm.js");
2842
+ this.qrResume = d({ videoEl: this.videoEl, overlayContainerEl: this.videoArea, i18n: this.i18n }, e.qrResume);
2654
2843
  }
2655
2844
  if (this.qrResume) {
2656
- const h = this.qrResume;
2845
+ const d = this.qrResume;
2657
2846
  this.controlBar.settingsMenu.setQrResumeToggle({
2658
2847
  label: this.i18n.qrResumeMenuLabel,
2659
- getValueLabel: () => h.isEnabled() ? this.i18n.qrResumeOn : this.i18n.qrResumeOff,
2660
- onToggle: () => h.setEnabled(!h.isEnabled())
2848
+ getValueLabel: () => d.isEnabled() ? this.i18n.qrResumeOn : this.i18n.qrResumeOff,
2849
+ onToggle: () => d.setEnabled(!d.isEnabled())
2661
2850
  });
2662
2851
  }
2663
2852
  if (e.tapGestures && !this.tapGestures) {
2664
- const { installTapGestures: h } = await import("./index-C5oGMHF_.js");
2665
- this.tapGestures = h(
2853
+ const { installTapGestures: d } = await import("./index-C5oGMHF_.js");
2854
+ this.tapGestures = d(
2666
2855
  {
2667
2856
  areaEl: this.videoArea,
2668
- seekBy: (p) => {
2669
- this.controlBar.seekBar.el.style.pointerEvents !== "none" && (pe(this.videoEl, p), this.seekFeedback.show(p));
2857
+ seekBy: (u) => {
2858
+ this.controlBar.seekBar.el.style.pointerEvents !== "none" && (ve(this.videoEl, u), this.seekFeedback.show(u));
2670
2859
  },
2671
2860
  togglePlay: () => this.videoEl.paused ? void this.videoEl.play().catch(() => {
2672
2861
  }) : this.videoEl.pause(),
@@ -2679,63 +2868,63 @@ class ye extends HTMLElement {
2679
2868
  );
2680
2869
  }
2681
2870
  if (this.tapGestures) {
2682
- const { DEFAULT_TAP_GESTURES: h } = await import("./index-C5oGMHF_.js");
2683
- this.tapGestures.setGestures(e.tapGestures === !0 ? h : e.tapGestures || []);
2871
+ const { DEFAULT_TAP_GESTURES: d } = await import("./index-C5oGMHF_.js");
2872
+ this.tapGestures.setGestures(e.tapGestures === !0 ? d : e.tapGestures || []);
2684
2873
  }
2685
- if ((d = e.pauseAd) != null && d.adUnitPath && !this.pauseAd) {
2686
- const { installPauseAd: h } = await import("./index-CaMVTgh0.js");
2687
- this.pauseAd = h(
2874
+ if ((m = e.pauseAd) != null && m.adUnitPath && !this.pauseAd) {
2875
+ const { installPauseAd: d } = await import("./index-CDPrkLq0.js");
2876
+ this.pauseAd = d(
2688
2877
  { videoEl: this.videoEl, hostEl: this, videoArea: this.videoArea, i18n: this.i18n, isBlocked: () => this.isChromeBlocked },
2689
2878
  e.pauseAd
2690
2879
  );
2691
2880
  }
2692
2881
  if (e.dubbing && !this.dubbing) {
2693
- const { installDubbing: h } = await import("./index-DXWK4EFa.js");
2694
- this.dubbing = h(
2882
+ const { installDubbing: d } = await import("./index-DXWK4EFa.js");
2883
+ this.dubbing = d(
2695
2884
  {
2696
2885
  videoEl: this.videoEl,
2697
- loadSource: (p, m) => this.sourceManager.load(p, m),
2698
- registerSubmenu: (p) => this.controlBar.settingsMenu.registerSubmenu(p),
2699
- unregisterSubmenu: (p) => this.controlBar.settingsMenu.unregisterSubmenu(p),
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),
2700
2889
  i18n: this.i18n
2701
2890
  },
2702
2891
  e.dubbing
2703
2892
  );
2704
2893
  }
2705
2894
  if (e.liveWallClock && !this.liveWallClock) {
2706
- const h = e.liveWallClock === !0 ? {} : e.liveWallClock, { installLiveWallClock: p } = await import("./index-7IBf8Y-R.js");
2707
- this.liveWallClock = p(
2895
+ const d = e.liveWallClock === !0 ? {} : e.liveWallClock, { installLiveWallClock: u } = await import("./index-7IBf8Y-R.js");
2896
+ this.liveWallClock = u(
2708
2897
  {
2709
2898
  videoEl: this.videoEl,
2710
2899
  seekBarEl: this.controlBar.seekBar.el,
2711
- addControlElement: (m) => this.controlBar.addElement(m),
2900
+ addControlElement: (b) => this.controlBar.addElement(b),
2712
2901
  i18n: this.i18n,
2713
2902
  getPlayingDate: () => {
2714
- var y, f, x;
2715
- const m = (y = this.sourceManager.hlsInstance) == null ? void 0 : y.playingDate;
2716
- if (m) return m;
2717
- const g = (x = (f = this.videoEl).getStartDate) == null ? void 0 : x.call(f), v = (g == null ? void 0 : g.getTime()) ?? NaN;
2718
- return Number.isFinite(v) && v > 0 ? new Date(v + this.videoEl.currentTime * 1e3) : null;
2903
+ var E, C, w;
2904
+ const b = (E = this.sourceManager.hlsInstance) == null ? void 0 : E.playingDate;
2905
+ 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;
2719
2908
  }
2720
2909
  },
2721
- h
2910
+ d
2722
2911
  ), this.controlBar.seekBar.liveHoverHandled = !0;
2723
2912
  }
2724
2913
  if (e.dai && !this.daiController) {
2725
- const { installDai: h } = await import("./index-Q8FMOHj0.js");
2726
- this.daiController = await h(
2914
+ const { installDai: d } = await import("./index-Q8FMOHj0.js");
2915
+ this.daiController = await d(
2727
2916
  {
2728
2917
  videoEl: this.videoEl,
2729
2918
  hostEl: this,
2730
2919
  adUiEl: this.adLayerEl,
2731
- loadStreamUrl: (p) => this.sourceManager.load(p),
2920
+ loadStreamUrl: (u) => this.sourceManager.load(u),
2732
2921
  disableSeeking: () => this.disableSeeking(),
2733
2922
  enableSeeking: () => this.enableSeeking()
2734
2923
  },
2735
2924
  e.dai
2736
2925
  );
2737
2926
  }
2738
- (u = e.subtitles) != null && u.length ? this.optionTracks = Xe(this.videoEl, e.subtitles) : (me(this.videoEl), this.optionTracks = []), this.rebuildCaptions(((b = (c = e.subtitles) == null ? void 0 : c.find((h) => h.default)) == null ? void 0 : b.label) ?? null);
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);
2739
2928
  }
2740
2929
  /** Altyazı menüsünü `options.subtitles` + yayın izlerinden kurar; `activeLabel` varsa onu seçer. */
2741
2930
  rebuildCaptions(e) {
@@ -2745,18 +2934,18 @@ class ye extends HTMLElement {
2745
2934
  }
2746
2935
  const i = (o) => {
2747
2936
  var l;
2748
- const n = $e(this.subtitleTracks, o);
2749
- this.activeCaptionLabel = n ? o : null, this.sourceManager.selectTextTrack(((l = this.streamTracks.find((d) => d.label === o)) == null ? void 0 : l.id) ?? null), this.captionRenderer.setActiveTrack(n), this.captionTrackActive = n !== null, this.controlBar.settingsMenu.setActiveCaption(n ? o : this.i18n.captionsOff), this.controlBar.settingsMenu.setCaptionAppearance(n !== null ? this.buildCaptionAppearance() : null);
2937
+ const a = it(this.subtitleTracks, o);
2938
+ 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);
2750
2939
  };
2751
2940
  this.selectCaption = i;
2752
- const r = e && this.subtitleTracks.some((o) => o.label === e) ? e : null;
2941
+ const s = e && this.subtitleTracks.some((o) => o.label === e) ? e : null;
2753
2942
  this.controlBar.setCaptions(
2754
2943
  [
2755
2944
  { label: this.i18n.captionsOff, onSelect: () => i(null) },
2756
2945
  ...this.subtitleTracks.map(({ label: o }) => ({ label: o, onSelect: () => i(o) }))
2757
2946
  ],
2758
- r ?? this.i18n.captionsOff
2759
- ), i(r);
2947
+ s ?? this.i18n.captionsOff
2948
+ ), i(s);
2760
2949
  }
2761
2950
  /**
2762
2951
  * Yayın izinin menü adı: manifestteki ad teknik/boşsa ("stream_5", "und", dil kodunun kendisi) dil kodundan
@@ -2772,37 +2961,37 @@ class ye extends HTMLElement {
2772
2961
  return e || i;
2773
2962
  }
2774
2963
  /** Aynı adlı iz varsa (ör. options.subtitles'ta da "English") dil/sırayla ayırt edilir. */
2775
- uniqueLabel(e, i, r) {
2776
- const o = r.has(e) ? `${e} (${i})` : e;
2777
- return r.add(o), o;
2964
+ uniqueLabel(e, i, s) {
2965
+ const o = s.has(e) ? `${e} (${i})` : e;
2966
+ return s.add(o), o;
2778
2967
  }
2779
2968
  /** 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). */
2780
2969
  buildCaptionAppearance() {
2781
- const e = ["small", "normal", "large"], i = (r, o, n, l) => r.map((d, u) => ({
2782
- value: d,
2783
- active: o() === d,
2784
- ariaLabel: `${l} ${u + 1}`,
2785
- onSelect: () => n(d)
2970
+ const e = ["small", "normal", "large"], i = (s, o, a, l) => s.map((h, c) => ({
2971
+ value: h,
2972
+ active: o() === h,
2973
+ ariaLabel: `${l} ${c + 1}`,
2974
+ onSelect: () => a(h)
2786
2975
  }));
2787
2976
  return {
2788
2977
  sizeLabel: this.i18n.captionSize,
2789
- getSizeOptions: () => e.map((r) => ({
2790
- label: r === "small" ? this.i18n.captionSizeSmall : r === "large" ? this.i18n.captionSizeLarge : this.i18n.captionSizeNormal,
2791
- active: this.captionRenderer.getFontSize() === r,
2792
- onSelect: () => this.captionRenderer.setFontSize(r)
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)
2793
2982
  })),
2794
2983
  bgColorLabel: this.i18n.captionBgColor,
2795
2984
  getBgColorOptions: () => i(
2796
- M.BG_COLOR_PRESETS,
2985
+ R.BG_COLOR_PRESETS,
2797
2986
  () => this.captionRenderer.getBgColor(),
2798
- (r) => this.captionRenderer.setBgColor(r),
2987
+ (s) => this.captionRenderer.setBgColor(s),
2799
2988
  this.i18n.captionBgColor
2800
2989
  ),
2801
2990
  textColorLabel: this.i18n.captionTextColor,
2802
2991
  getTextColorOptions: () => i(
2803
- M.TEXT_COLOR_PRESETS,
2992
+ R.TEXT_COLOR_PRESETS,
2804
2993
  () => this.captionRenderer.getTextColor(),
2805
- (r) => this.captionRenderer.setTextColor(r),
2994
+ (s) => this.captionRenderer.setTextColor(s),
2806
2995
  this.i18n.captionTextColor
2807
2996
  ),
2808
2997
  resetPositionLabel: this.i18n.captionResetPosition,
@@ -2812,12 +3001,286 @@ class ye extends HTMLElement {
2812
3001
  getOrCreatePanelContainer() {
2813
3002
  return this.panelContainer || (this.panelContainer = document.createElement("div"), this.root.appendChild(this.panelContainer)), this.panelContainer;
2814
3003
  }
3004
+ // ── Kalite kilidi (ödüllü reklam) ─────────────────────────────────────
3005
+ /** Kaynağın yüksekliği: `height` ya da etiketten ("1080p" → 1080); bilinmiyorsa null. */
3006
+ sourceHeight(e) {
3007
+ if (typeof e.height == "number" && e.height > 0) return e.height;
3008
+ const i = /(\d{3,4})\s*p\b/i.exec(e.label);
3009
+ return i ? Number(i[1]) : null;
3010
+ }
3011
+ isSourceLocked(e) {
3012
+ var i;
3013
+ return !!((i = this.qualityGate) != null && i.isLocked(this.sourceHeight(e)));
3014
+ }
3015
+ /** Başlangıç kaynağı: `selected` (ya da ilk); kilitliyse serbest kaynakların en yükseği. */
3016
+ pickInitialSource(e) {
3017
+ const i = e.find((o) => o.selected) ?? e[0];
3018
+ 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;
3021
+ }
3022
+ renderSourceQualities() {
3023
+ const e = this.currentSources;
3024
+ e.length <= 1 || this.controlBar.setQualities(
3025
+ e.map((i) => {
3026
+ const s = this.isSourceLocked(i);
3027
+ return {
3028
+ label: i.label,
3029
+ locked: s,
3030
+ onSelect: s ? () => {
3031
+ var o;
3032
+ return (o = this.qualityGate) == null ? void 0 : o.requestUnlock();
3033
+ } : () => void this.switchQualitySource(i)
3034
+ };
3035
+ }),
3036
+ this.activeSourceLabel || e[0].label
3037
+ );
3038
+ }
3039
+ /** Kilitli kalite var mı (ödüllü reklam butonu yalnızca o zaman görünür) ve en yükseğinin etiketi. */
3040
+ lockedQualityLabel() {
3041
+ if (!this.qualityGate) return null;
3042
+ const e = [];
3043
+ if (this.lastHlsLevels.length > 1)
3044
+ for (const i of this.lastHlsLevels) this.qualityGate.isLocked(i.height) && e.push(i.height);
3045
+ else
3046
+ 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);
3049
+ }
3050
+ return e.length ? `${Math.max(...e)}p` : null;
3051
+ }
3052
+ /** Kilit durumu değişti: menüleri yeniden kur, HLS üst sınırını güncelle; `upgrade` ise en iyi kaliteye geç. */
3053
+ refreshQualityGate(e) {
3054
+ var i;
3055
+ if (this.lastHlsLevels.length > 1)
3056
+ this.onHlsLevelsChanged(this.lastHlsLevels, e ? -1 : this.lastHlsActive), e && this.sourceManager.setLevel(-1);
3057
+ 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);
3059
+ a && a.label !== this.activeSourceLabel ? this.switchQualitySource(a) : this.renderSourceQualities();
3060
+ }
3061
+ (i = this.rewardedUnlock) == null || i.onQualitiesChanged();
3062
+ }
3063
+ async applyRewardedUnlock(e) {
3064
+ const i = e.rewardedUnlock;
3065
+ if (!i) {
3066
+ this.rewardedUnlock && (this.rewardedUnlock.destroy(), this.rewardedUnlock = null, this.qualityGate = null, this.refreshQualityGate(!1));
3067
+ return;
3068
+ }
3069
+ if (this.rewardedUnlock)
3070
+ this.rewardedUnlock.update(i);
3071
+ else {
3072
+ const { installRewardedUnlock: s } = await import("./index-BbRYOSvk.js");
3073
+ this.rewardedUnlock ?? (this.rewardedUnlock = s(
3074
+ {
3075
+ hostEl: this,
3076
+ videoEl: this.videoEl,
3077
+ overlayEl: this.videoArea,
3078
+ chromeEl: this.chromeEl,
3079
+ i18n: this.i18n,
3080
+ log: (o) => this.log.add({ source: "ads", ...o }),
3081
+ play: () => void this.play().catch(() => {
3082
+ }),
3083
+ exitFullscreen: () => {
3084
+ this.isFullscreenActive() && this.exitFullscreenCompat();
3085
+ },
3086
+ lockedQualityLabel: () => this.lockedQualityLabel(),
3087
+ // Kalite dosyası değil içerik: aynı videonun 240p ↔ 720p geçişi (ya da HLS → MP4 yedeği) kilidi kapatmasın.
3088
+ contentKey: () => this.contentKey(),
3089
+ onLockChange: (o) => this.refreshQualityGate(o)
3090
+ },
3091
+ i
3092
+ )), this.qualityGate = this.rewardedUnlock;
3093
+ }
3094
+ }
3095
+ /**
3096
+ * İçerik kimliği: `sources` çalıyorsa tüm kaynakları (kalite değişimi / yedek kaynak aynı içerik), eklentinin
3097
+ * yüklediği medya (playlist, hikâye, dublaj) çalıyorsa onun adresi.
3098
+ */
3099
+ contentKey() {
3100
+ const e = this.sourceGroups.flatMap((s) => s.sources.map((o) => o.src)), i = this.sourceManager.currentSrc ?? "";
3101
+ return !i || e.includes(i) ? e.join("|") : i;
3102
+ }
3103
+ async applyCast(e) {
3104
+ var s;
3105
+ const i = e.cast;
3106
+ if (!(i != null && i.chromecast) && !(i != null && i.airplay) && !(i != null && i.remotePlayback)) {
3107
+ (s = this.castController) == null || s.destroy(), this.castController = null;
3108
+ return;
3109
+ }
3110
+ if (this.castController)
3111
+ this.castController.update(i);
3112
+ else {
3113
+ const { installCast: o } = await import("./index-Miba3PD_.js");
3114
+ this.castController ?? (this.castController = o(
3115
+ {
3116
+ hostEl: this,
3117
+ videoEl: this.videoEl,
3118
+ overlayEl: this.videoArea,
3119
+ i18n: this.i18n,
3120
+ log: (a) => this.log.add({ source: "player", ...a }),
3121
+ addButton: (a, l, h) => this.controlBar.addButton(a, l, h),
3122
+ getMedia: () => this.castMedia(),
3123
+ isAdPlaying: () => this.isAdPlaying(),
3124
+ isMse: () => this.sourceManager.engine.engine === "hls.js",
3125
+ contentKey: () => this.contentKey(),
3126
+ onRemoteChange: (a) => {
3127
+ var l;
3128
+ this.casting = a, (l = this.adsController) == null || l.setRemote(a), a && this.prerollGate.release(!1);
3129
+ }
3130
+ },
3131
+ i
3132
+ ));
3133
+ }
3134
+ }
3135
+ /** TV'ye gönderilecek içerik: o an çalan kaynak (ya da `cast.source`), başlık / kapak, altyazılar, reklam tag'leri. */
3136
+ 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),
3147
+ 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)
3155
+ } : null;
3156
+ return {
3157
+ src: h(l.src),
3158
+ contentType: l.type || Ft[c] || "video/mp4",
3159
+ 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,
3163
+ 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
3166
+ };
3167
+ }
3168
+ async applyAdTriggers(e) {
3169
+ var s;
3170
+ const i = e.adTriggers;
3171
+ if (!(i != null && i.endpoint) && !(i != null && i.config)) {
3172
+ (s = this.adTriggers) == null || s.destroy(), this.adTriggers = null;
3173
+ return;
3174
+ }
3175
+ if (this.adTriggers)
3176
+ this.adTriggers.update(i);
3177
+ else {
3178
+ const { installAdTriggers: o } = await import("./index-CWLyz1fp.js");
3179
+ this.adTriggers ?? (this.adTriggers = o(
3180
+ {
3181
+ hostEl: this,
3182
+ videoEl: this.videoEl,
3183
+ overlayEl: this.videoArea,
3184
+ i18n: this.i18n,
3185
+ log: (a) => this.log.add({ source: "ads", ...a }),
3186
+ isBlocked: () => this.isChromeBlocked || this.isAdPlaying() || this.casting,
3187
+ isFullscreen: () => this.isFullscreenActive(),
3188
+ isNativeFullscreen: () => !!this.iosVideo.webkitDisplayingFullscreen,
3189
+ contentKey: () => this.contentKey()
3190
+ },
3191
+ i
3192
+ ));
3193
+ }
3194
+ }
3195
+ async applySponsorship(e) {
3196
+ var s;
3197
+ const i = e.sponsorship;
3198
+ if (!(i != null && i.endpoint)) {
3199
+ (s = this.sponsorship) == null || s.destroy(), this.sponsorship = null;
3200
+ return;
3201
+ }
3202
+ if (this.sponsorship)
3203
+ this.sponsorship.update(i);
3204
+ else {
3205
+ const { installSponsorship: o } = await import("./index-Ch3ep-eJ.js");
3206
+ this.sponsorship ?? (this.sponsorship = o(
3207
+ {
3208
+ hostEl: this,
3209
+ videoEl: this.videoEl,
3210
+ overlayEl: this.videoArea,
3211
+ i18n: this.i18n,
3212
+ log: (a) => this.log.add({ source: "player", ...a })
3213
+ },
3214
+ i
3215
+ ));
3216
+ }
3217
+ }
2815
3218
  /** Kalite değişirken oynatma konumunu ve play/pause durumunu korur. */
2816
3219
  async switchQualitySource(e) {
2817
- const i = this.videoEl.currentTime, r = !this.videoEl.paused;
2818
- await this.sourceManager.load(e.src, e.type), this.videoEl.currentTime = i, r && this.videoEl.play().catch(() => {
3220
+ 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(() => {
2819
3223
  }), this.dispatchEvent(new CustomEvent("hp:qualitychange", { detail: { label: e.label } }));
2820
3224
  }
3225
+ /** `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
+ firstPlayableGroup(e = 0) {
3227
+ 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) {
3232
+ const a = this.sourceGroups[e].format;
3233
+ this.dispatchEvent(new CustomEvent("hp:sourcefallback", { detail: { from: a, to: o.format, code: 4, skipped: !0 } }));
3234
+ }
3235
+ return s;
3236
+ }
3237
+ 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
+ }
3239
+ return e === 0 ? 0 : -1;
3240
+ }
3241
+ /**
3242
+ * Ölümcül hata: sıradaki biçim grubuna geç (konum ve oynatma durumu korunur).
3243
+ * true = geçiliyor, hata ekranı gösterilmez. Hata ekranının `shouldShow`'undan çağrılır.
3244
+ */
3245
+ tryNextSourceGroup() {
3246
+ var l;
3247
+ if (this.fallbackPending) return !0;
3248
+ const e = this.sourceGroups[this.activeGroup];
3249
+ if (!e || this.sourceGroups.length < 2 || !e.sources.some((h) => h.src === this.sourceManager.currentSrc)) return !1;
3250
+ const i = ((l = this.videoEl.error) == null ? void 0 : l.code) ?? this.streamErrorCode;
3251
+ if (this.streamErrorCode = void 0, i === 1) return !1;
3252
+ const s = this.firstPlayableGroup(this.activeGroup + 1);
3253
+ if (s === -1) return !1;
3254
+ this.fallbackPending = !0;
3255
+ const o = Number.isFinite(this.videoEl.duration) ? this.videoEl.currentTime : 0, a = !this.videoEl.paused || !!this._options.autoplay;
3256
+ return this.log.add({
3257
+ source: "player",
3258
+ message: `Source "${e.format}" failed — falling back to "${this.sourceGroups[s].format}"`,
3259
+ 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;
3261
+ }
3262
+ async activateSourceGroup(e, i, s) {
3263
+ var l;
3264
+ const o = this.sourceGroups[e];
3265
+ if (!o) return;
3266
+ this.activeGroup = e, this.currentSources = o.sources;
3267
+ const a = this.pickInitialSource(o.sources);
3268
+ this.errorScreen.dismiss(), this.controlBar.setQualities([], ""), this.hlsQualitiesShown = !1, this.activeSourceLabel = a.label, i > 0 && this.videoEl.addEventListener("loadedmetadata", () => this.videoEl.currentTime = i, { once: !0 });
3269
+ try {
3270
+ await this.sourceManager.load(a.src, a.type);
3271
+ } finally {
3272
+ this.fallbackPending = !1;
3273
+ }
3274
+ this.renderSourceQualities(), (l = this.rewardedUnlock) == null || l.onQualitiesChanged(), s && this.videoEl.play().catch(() => {
3275
+ });
3276
+ }
3277
+ /** Hata ekranındaki "Tekrar dene": birden fazla grup varsa en öncelikli gruptan baştan başla. */
3278
+ async retrySource() {
3279
+ const e = this.sourceGroups.some((s) => s.sources.some((o) => o.src === this.sourceManager.currentSrc));
3280
+ if (this.sourceGroups.length < 2 || !e) return this.sourceManager.reload();
3281
+ const i = Number.isFinite(this.videoEl.duration) ? this.videoEl.currentTime : 0;
3282
+ this.fallbackPending = !0, await this.activateSourceGroup(this.firstPlayableGroup(), i, !0);
3283
+ }
2821
3284
  // ── Fullscreen (vendor-prefix uyumlu) ───────────────────────────────
2822
3285
  /** iPhone Safari element tam ekranını desteklemiyor — yalnızca <video>'nun kendi (native kontrollü) tam ekranı. */
2823
3286
  get iosVideo() {
@@ -2826,15 +3289,15 @@ class ye extends HTMLElement {
2826
3289
  requestFullscreenCompat() {
2827
3290
  if (this.audioMode) return;
2828
3291
  const e = this, i = () => {
2829
- var r, o;
2830
- return (o = (r = this.iosVideo).webkitEnterFullscreen) == null ? void 0 : o.call(r);
3292
+ var s, o;
3293
+ return (o = (s = this.iosVideo).webkitEnterFullscreen) == null ? void 0 : o.call(s);
2831
3294
  };
2832
3295
  e.requestFullscreen ? e.requestFullscreen().catch(i) : e.webkitRequestFullscreen ? e.webkitRequestFullscreen() : i();
2833
3296
  }
2834
3297
  exitFullscreenCompat() {
2835
- var i, r;
3298
+ var i, s;
2836
3299
  if (this.iosVideo.webkitDisplayingFullscreen) {
2837
- (r = (i = this.iosVideo).webkitExitFullscreen) == null || r.call(i);
3300
+ (s = (i = this.iosVideo).webkitExitFullscreen) == null || s.call(i);
2838
3301
  return;
2839
3302
  }
2840
3303
  const e = document;
@@ -2872,20 +3335,20 @@ class ye extends HTMLElement {
2872
3335
  * alanın ortasına alınır, sığmazsa küçülür (en az 40px).
2873
3336
  */
2874
3337
  layoutCenterPlay() {
2875
- const e = this.videoArea, i = e.getBoundingClientRect(), r = this.controlBar.seekBar.el.getBoundingClientRect(), o = () => {
3338
+ const e = this.videoArea, i = e.getBoundingClientRect(), s = this.controlBar.seekBar.el.getBoundingClientRect(), o = () => {
2876
3339
  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");
2877
3340
  };
2878
- if (!i.height || !r.height || !e.hasAttribute("data-compact")) return o();
2879
- const n = 64, l = r.top - i.top - 8;
2880
- if (i.height / 2 + n / 2 <= l) return o();
2881
- const d = Math.max(40, Math.min(56, l - 12)), u = Math.max(d / 2 + 6, l - d / 2), c = Math.round(u - i.height / 2);
2882
- let b = 0;
2883
- const h = this.controlBar.topEl.getBoundingClientRect();
2884
- if (h.width > 0 && u - d / 2 < h.bottom - i.top) {
2885
- const p = h.left - i.left - 8 - d / 2;
2886
- i.width / 2 > p && (b = Math.round(Math.max(d / 2 + 8, p) - i.width / 2));
2887
- }
2888
- e.setAttribute("data-center-play-shifted", ""), e.style.setProperty("--hp-center-play-shift-x", `${b}px`), e.style.setProperty("--hp-center-play-size", `${d}px`), e.style.setProperty("--hp-center-play-shift", `${c}px`);
3341
+ if (!i.height || !s.height || !e.hasAttribute("data-compact")) return o();
3342
+ const a = 64, l = s.top - i.top - 8;
3343
+ if (i.height / 2 + a / 2 <= l) return o();
3344
+ 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));
3350
+ }
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`);
2889
3352
  }
2890
3353
  /** Dar player'da dokunmatikte oynat/duraklat yerine kontrolleri göster/gizle (options.tapToPlay). */
2891
3354
  tapTogglesPlay(e) {
@@ -2904,8 +3367,8 @@ class ye extends HTMLElement {
2904
3367
  }
2905
3368
  /** Chrome görünürlüğünün tek giriş noktası — altyazı da haberdar olur (kontroller gizlenince en alta iner). */
2906
3369
  setChromeOpacity(e) {
2907
- var i;
2908
- this.chromeEl.style.opacity = e, this.chromeVisible = e === "1", (i = this.captionRenderer) == null || i.setChromeVisible(this.chromeVisible), this.updateMiniProgress();
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();
2909
3372
  }
2910
3373
  /** İnce ilerleme çizgisi: yalnızca kontroller gizliyken; reklam/giriş ekranı (chrome bloklu) sırasında değil. */
2911
3374
  updateMiniProgress() {
@@ -2945,10 +3408,10 @@ class ye extends HTMLElement {
2945
3408
  }
2946
3409
  /** options.audio: sahneyi kurar, günceller (konum / boyut / devir canlı değişebilir) ya da kaldırır. */
2947
3410
  async applyAudioMode(e) {
2948
- var r;
3411
+ var s;
2949
3412
  const i = e.audio ? e.audio === !0 ? {} : e.audio : null;
2950
3413
  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) {
2951
- this.controlBar.setAudioBar(null), (r = this.audioStage) == null || r.destroy(), this.audioStage = null;
3414
+ this.controlBar.setAudioBar(null), (s = this.audioStage) == null || s.destroy(), this.audioStage = null;
2952
3415
  return;
2953
3416
  }
2954
3417
  if (this.hideTimer && clearTimeout(this.hideTimer), this.hideTimer = null, this.isChromeBlocked || this.showChrome(), this.audioStage)
@@ -2966,7 +3429,7 @@ class ye extends HTMLElement {
2966
3429
  play: () => void this.play().catch(() => {
2967
3430
  }),
2968
3431
  i18n: this.i18n,
2969
- setBarMeta: (n) => this.controlBar.setAudioBar(n)
3432
+ setBarMeta: (a) => this.controlBar.setAudioBar(a)
2970
3433
  },
2971
3434
  i
2972
3435
  ));
@@ -2978,8 +3441,8 @@ class ye extends HTMLElement {
2978
3441
  if (!this.adsInstall) {
2979
3442
  const i = e.ads === !0 ? {} : e.ads;
2980
3443
  this.adsInstall = (async () => {
2981
- const { installAds: r } = await import("./index-BCMVXNL0.js");
2982
- this.adsController = await r(
3444
+ const { installAds: s } = await import("./index-DITXYcHx.js");
3445
+ this.adsController = await s(
2983
3446
  {
2984
3447
  videoEl: this.videoEl,
2985
3448
  hostEl: this,
@@ -2996,8 +3459,8 @@ class ye extends HTMLElement {
2996
3459
  onAdProgress: (o) => this.controlBar.setAdInfo(o),
2997
3460
  // Sürekli oynatma (vconp): playlist / story bir sonraki içeriği kendiliğinden başlatıyorsa.
2998
3461
  isContinuousPlayback: () => {
2999
- const o = this._options, n = (l) => !!l && l.autoplayNext !== !1;
3000
- return n(o.playlist) || n(o.story);
3462
+ const o = this._options, a = (l) => !!l && l.autoplayNext !== !1;
3463
+ return a(o.playlist) || a(o.story);
3001
3464
  },
3002
3465
  audioPoster: (() => {
3003
3466
  if (!e.audio) return;
@@ -3013,8 +3476,8 @@ class ye extends HTMLElement {
3013
3476
  },
3014
3477
  i
3015
3478
  );
3016
- })().catch((r) => {
3017
- this.prerollGate.release(!0), this.adsInstall = null, this.dispatchEvent(new CustomEvent("hp:aderror", { detail: { message: String(r) } }));
3479
+ })().catch((s) => {
3480
+ this.prerollGate.release(!0), this.adsInstall = null, this.dispatchEvent(new CustomEvent("hp:aderror", { detail: { message: String(s) } }));
3018
3481
  });
3019
3482
  }
3020
3483
  return this.adsInstall;
@@ -3035,12 +3498,15 @@ class ye extends HTMLElement {
3035
3498
  }
3036
3499
  }
3037
3500
  /** Paket sürümü (ör. "1.0.4"). */
3038
- s(ye, "version", z);
3039
- typeof window < "u" && !customElements.get("hope-player") && customElements.define("hope-player", ye);
3501
+ r(Ae, "version", N);
3502
+ typeof window < "u" && !customElements.get("hope-player") && customElements.define("hope-player", Ae);
3040
3503
  export {
3041
- z as H,
3042
- ye as a,
3043
- E as c,
3044
- w as f
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
3045
3511
  };
3046
- //# sourceMappingURL=index-Dz0E1YPE.js.map
3512
+ //# sourceMappingURL=index-DEv3YqLg.js.map