@hopeplayer/core 1.0.12 → 1.0.14

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 (48) hide show
  1. package/dist/HopePlayerElement.d.ts +5 -0
  2. package/dist/HopePlayerElement.d.ts.map +1 -1
  3. package/dist/chunks/ScratchSound-0XKHUcJK.js +174 -0
  4. package/dist/chunks/ScratchSound-0XKHUcJK.js.map +1 -0
  5. package/dist/chunks/{index-Br_RybXV.js → index-BCMVXNL0.js} +71 -61
  6. package/dist/chunks/index-BCMVXNL0.js.map +1 -0
  7. package/dist/chunks/{index-DBwvWiuK.js → index-BTBAxNjr.js} +2 -2
  8. package/dist/chunks/{index-DBwvWiuK.js.map → index-BTBAxNjr.js.map} +1 -1
  9. package/dist/chunks/index-BeJNpAyx.js +326 -0
  10. package/dist/chunks/index-BeJNpAyx.js.map +1 -0
  11. package/dist/chunks/{index-nvfNBIM_.js → index-C2c71cGP.js} +2 -2
  12. package/dist/chunks/{index-nvfNBIM_.js.map → index-C2c71cGP.js.map} +1 -1
  13. package/dist/chunks/{index-adiWYyto.js → index-DcVUXkXo.js} +2 -2
  14. package/dist/chunks/{index-adiWYyto.js.map → index-DcVUXkXo.js.map} +1 -1
  15. package/dist/chunks/{index-C3s21eZa.js → index-DtqNHU7Y.js} +2 -2
  16. package/dist/chunks/{index-C3s21eZa.js.map → index-DtqNHU7Y.js.map} +1 -1
  17. package/dist/chunks/{index-_-pYIxvh.js → index-Dy0Th0is.js} +2 -2
  18. package/dist/chunks/{index-_-pYIxvh.js.map → index-Dy0Th0is.js.map} +1 -1
  19. package/dist/chunks/{index-D2aXO0eh.js → index-Dz0E1YPE.js} +610 -486
  20. package/dist/chunks/index-Dz0E1YPE.js.map +1 -0
  21. package/dist/controls/ControlBar.d.ts +17 -0
  22. package/dist/controls/ControlBar.d.ts.map +1 -1
  23. package/dist/controls/SeekBar.d.ts +8 -0
  24. package/dist/controls/SeekBar.d.ts.map +1 -1
  25. package/dist/controls/SettingsMenu.d.ts +4 -0
  26. package/dist/controls/SettingsMenu.d.ts.map +1 -1
  27. package/dist/hls/SourceManager.d.ts +2 -0
  28. package/dist/hls/SourceManager.d.ts.map +1 -1
  29. package/dist/hope-player.js +1 -1
  30. package/dist/i18n/locales/en.d.ts.map +1 -1
  31. package/dist/i18n/locales/tr.d.ts.map +1 -1
  32. package/dist/i18n/types.d.ts +2 -0
  33. package/dist/i18n/types.d.ts.map +1 -1
  34. package/dist/plugins/ads/AdsController.d.ts +2 -0
  35. package/dist/plugins/ads/AdsController.d.ts.map +1 -1
  36. package/dist/plugins/audio/AudioStage.d.ts +89 -0
  37. package/dist/plugins/audio/AudioStage.d.ts.map +1 -0
  38. package/dist/plugins/audio/ScratchSound.d.ts +48 -0
  39. package/dist/plugins/audio/ScratchSound.d.ts.map +1 -0
  40. package/dist/plugins/audio/index.d.ts +7 -0
  41. package/dist/plugins/audio/index.d.ts.map +1 -0
  42. package/dist/plugins/audio/vinylSvg.d.ts +12 -0
  43. package/dist/plugins/audio/vinylSvg.d.ts.map +1 -0
  44. package/dist/types/index.d.ts +63 -0
  45. package/dist/types/index.d.ts.map +1 -1
  46. package/package.json +1 -1
  47. package/dist/chunks/index-Br_RybXV.js.map +0 -1
  48. package/dist/chunks/index-D2aXO0eh.js.map +0 -1
@@ -1,22 +1,22 @@
1
- var fe = Object.defineProperty;
2
- var ve = (o, t, e) => t in o ? fe(o, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : o[t] = e;
3
- var s = (o, t, e) => ve(o, typeof t != "symbol" ? t + "" : t, e);
4
- const ye = '/*! 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\\: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\\: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-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-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-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{aspect-ratio:16/9;border-radius:var(--hp-radius);background:var(--hp-color-surface,#0a0a0a);width:100%;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;aspect-ratio:16/9!important;width:min(360px,92vw)!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)}}@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 _() {
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() {
6
6
  if (typeof navigator > "u") return !1;
7
- const o = navigator.userAgent, t = /iP(hone|od|ad)/.test(o) || navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1, e = /^((?!chrome|chromium|android|crios|fxios|edg|opr).)*safari/i.test(o);
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);
8
8
  return t || e;
9
9
  }
10
- function V() {
11
- const o = window;
12
- return typeof o.MediaSource < "u" || typeof o.ManagedMediaSource < "u";
10
+ function W() {
11
+ const a = window;
12
+ return typeof a.MediaSource < "u" || typeof a.ManagedMediaSource < "u";
13
13
  }
14
- function ke(o, t) {
14
+ function Ee(a, 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(o) ? "hls" : e === "video/mp4" || /\.mp4(?:$|[?#])/i.test(o) ? "mp4" : "unknown";
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";
18
18
  }
19
- class xe {
19
+ class Ce {
20
20
  constructor(t, e) {
21
21
  s(this, "hls", null);
22
22
  s(this, "video");
@@ -35,20 +35,24 @@ class xe {
35
35
  configure(t) {
36
36
  this.hlsOptions = t ?? {};
37
37
  }
38
+ /** Bu kaynak zaten yüklü ve hatasız mı — aynı kaynak için yeniden yükleme (başa sarma) gerekmez. */
39
+ isLoaded(t, e) {
40
+ return !!this.last && this.last.src === t && this.last.type === e && !this.video.error && this.video.readyState > 0;
41
+ }
38
42
  async load(t, e) {
39
43
  this.last = { src: t, type: e }, this.destroy(), this.video.pause();
40
- const i = ke(t, e);
44
+ const i = Ee(t, e);
41
45
  if (this.callbacks.onLevelsChanged([], -1), this.callbacks.onAudioTracksChanged([], -1), this.streamTextTracks.clear(), this.callbacks.onTextTracksFound([]), i !== "hls") {
42
46
  this.engineInfo = { engine: "native" }, this.video.src = t;
43
47
  return;
44
48
  }
45
- const r = this.hlsOptions.engine ?? "auto", n = this.video.canPlayType("application/vnd.apple.mpegurl") !== "";
46
- if (r === "native" && n) {
49
+ const r = this.hlsOptions.engine ?? "auto", o = this.video.canPlayType("application/vnd.apple.mpegurl") !== "";
50
+ if (r === "native" && o) {
47
51
  this.loadNativeHls(t, "option");
48
52
  return;
49
53
  }
50
- if (r !== "hls.js" && n && (_() || !V())) {
51
- this.loadNativeHls(t, _() ? "apple-native" : "no-mse");
54
+ if (r !== "hls.js" && o && (G() || !W())) {
55
+ this.loadNativeHls(t, G() ? "apple-native" : "no-mse");
52
56
  return;
53
57
  }
54
58
  await this.attachHlsJs(t);
@@ -73,11 +77,11 @@ class xe {
73
77
  * İlk metadata'dan önce kod 4 gelirse ve MSE varsa hls.js'e geç.
74
78
  */
75
79
  probeNativeHls(t) {
76
- if (!V() || this.engineInfo.reason === "hlsjs-failed" || this.engineInfo.reason === "option") return;
80
+ if (!W() || this.engineInfo.reason === "hlsjs-failed" || this.engineInfo.reason === "option") return;
77
81
  const e = () => r(), i = () => {
78
- var a, l;
79
- const n = ((a = this.video.error) == null ? void 0 : a.code) === 4;
80
- r(), n && ((l = this.nativeAudioCleanup) == null || l.call(this), this.attachHlsJs(t));
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));
81
85
  }, r = () => {
82
86
  this.video.removeEventListener("loadedmetadata", e), this.video.removeEventListener("error", i), this.nativeHlsProbe = null;
83
87
  };
@@ -88,7 +92,7 @@ class xe {
88
92
  const t = this.video.audioTracks;
89
93
  if (!t) return;
90
94
  const e = () => {
91
- const i = Array.from(t, (r, n) => ({ index: n, label: r.label || r.language || `${n + 1}`, lang: r.language }));
95
+ const i = Array.from(t, (r, o) => ({ index: o, label: r.label || r.language || `${o + 1}`, lang: r.language }));
92
96
  this.callbacks.onAudioTracksChanged(i, Array.from(t).findIndex((r) => r.enabled));
93
97
  };
94
98
  for (const i of ["addtrack", "removetrack", "change"]) t.addEventListener(i, e);
@@ -107,58 +111,58 @@ class xe {
107
111
  }
108
112
  const i = new e(this.buildHlsConfig());
109
113
  this.hls = i, this.engineInfo = { engine: "hls.js" };
110
- let r = !1, n = !1;
111
- i.on(e.Events.ERROR, (m, c) => {
112
- var p, u, b, g, v, y;
114
+ let r = !1, o = !1;
115
+ i.on(e.Events.ERROR, (u, c) => {
116
+ var h, p, m, g, v, y;
113
117
  if (this.hls === i) {
114
118
  const f = c;
115
119
  (y = (v = this.callbacks).onStreamError) == null || y.call(v, {
116
120
  type: String(c.type),
117
121
  details: String(c.details),
118
122
  fatal: !!c.fatal,
119
- url: f.url ?? ((p = f.frag) == null ? void 0 : p.url) ?? ((u = f.context) == null ? void 0 : u.url),
120
- httpStatus: (b = f.response) == null ? void 0 : b.code,
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,
121
125
  reason: f.reason ?? ((g = f.error) == null ? void 0 : g.message)
122
126
  });
123
127
  }
124
128
  if (!c.fatal || this.hls !== i) return;
125
- const h = [e.ErrorDetails.MANIFEST_LOAD_ERROR, e.ErrorDetails.MANIFEST_LOAD_TIMEOUT].includes(c.details);
126
- if (!r && h && this.video.canPlayType("application/vnd.apple.mpegurl") !== "") {
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") !== "") {
127
131
  i.destroy(), this.hls = null, this.loadNativeHls(t, "hlsjs-failed");
128
132
  return;
129
133
  }
130
- if (c.type === e.ErrorTypes.MEDIA_ERROR && !n) {
131
- n = !0, i.recoverMediaError();
134
+ if (c.type === e.ErrorTypes.MEDIA_ERROR && !o) {
135
+ o = !0, i.recoverMediaError();
132
136
  return;
133
137
  }
134
138
  i.stopLoad(), this.callbacks.onFatalError(c.type === e.ErrorTypes.NETWORK_ERROR ? "network" : "media");
135
139
  });
136
- const a = () => i.levels.map((m, c) => ({ index: c, height: m.height, bitrate: m.bitrate }));
140
+ const n = () => i.levels.map((u, c) => ({ index: c, height: u.height, bitrate: u.bitrate }));
137
141
  i.on(e.Events.MANIFEST_PARSED, () => {
138
- r = !0, this.callbacks.onLevelsChanged(a(), i.currentLevel);
139
- }), i.on(e.Events.LEVEL_SWITCHED, (m, c) => {
140
- this.callbacks.onLevelsChanged(a(), i.autoLevelEnabled ? -1 : c.level);
141
- });
142
- const l = () => i.audioTracks.map((m, c) => ({ index: c, label: m.name || m.lang || `${c + 1}`, lang: m.lang ?? "" }));
143
- i.on(e.Events.AUDIO_TRACKS_UPDATED, () => this.callbacks.onAudioTracksChanged(l(), i.audioTrack)), i.on(e.Events.AUDIO_TRACK_SWITCHED, (m, c) => this.callbacks.onAudioTracksChanged(l(), c.id)), i.on(e.Events.NON_NATIVE_TEXT_TRACKS_FOUND, (m, c) => {
144
- var h;
145
- for (const p of c.tracks) {
146
- const u = p.subtitleTrack, b = u ? `sub:${u.id}` : `cc:${p._id ?? p.label}`, g = p.kind === "captions" ? "captions" : "subtitles";
147
- this.streamTextTracks.set(b, { id: b, kind: g, label: p.label, lang: (u == null ? void 0 : u.lang) ?? ((h = p.closedCaptions) == null ? void 0 : h.lang) ?? "" });
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) ?? "" });
148
152
  }
149
153
  this.callbacks.onTextTracksFound([...this.streamTextTracks.values()]);
150
- }), i.on(e.Events.CUES_PARSED, (m, c) => {
151
- const h = c.type === "subtitles" && c.subtitleTrack ? `sub:${c.subtitleTrack.id}` : `cc:${c.track}`;
152
- this.callbacks.onCues(h, c.cues);
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);
153
157
  }), i.attachMedia(this.video), i.loadSource(t);
154
158
  }
155
159
  buildHlsConfig() {
156
160
  const t = this.hlsOptions.config ?? {}, e = { enableWorker: !0, renderTextTracksNatively: !1, liveDurationInfinity: !0, ...t };
157
161
  if (this.hlsOptions.withCredentials) {
158
162
  const { xhrSetup: i, fetchSetup: r } = t;
159
- e.xhrSetup = (n, a, l) => (n.withCredentials = !0, i == null ? void 0 : i(n, a, l)), e.fetchSetup = (n, a) => {
160
- const l = { ...a, credentials: "include" };
161
- return r ? r(n, l) : new Request(n.url, l);
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
166
  };
163
167
  }
164
168
  return e;
@@ -195,13 +199,13 @@ class xe {
195
199
  (t = this.nativeHlsProbe) == null || t.call(this), (e = this.nativeAudioCleanup) == null || e.call(this), this.hls && (this.hls.destroy(), this.hls = null);
196
200
  }
197
201
  }
198
- function x(o) {
199
- if (!Number.isFinite(o) || o < 0) return "0:00";
200
- const t = Math.floor(o), e = Math.floor(t / 3600), i = Math.floor(t % 3600 / 60), r = t % 60, n = e > 0 ? String(i).padStart(2, "0") : String(i), a = String(r).padStart(2, "0");
201
- return e > 0 ? `${e}:${n}:${a}` : `${n}:${a}`;
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}`;
202
206
  }
203
- const we = 10, Ee = 1;
204
- class Ce {
207
+ const Te = 10, Se = 1;
208
+ class Ae {
205
209
  constructor(t, e) {
206
210
  s(this, "el");
207
211
  s(this, "trackEl");
@@ -230,9 +234,9 @@ class Ce {
230
234
  return;
231
235
  }
232
236
  const r = e.start + i * (e.end - e.start);
233
- this.hoverTimeEl.textContent = e.live ? `-${x(e.end - r)}` : x(r), this.hoverTimeEl.setAttribute("data-visible", "");
234
- const n = this.el.getBoundingClientRect(), a = this.hoverTimeEl.offsetWidth, l = Math.min(Math.max(t.clientX - n.left - a / 2, 0), Math.max(n.width - a, 0));
235
- this.hoverTimeEl.style.transform = `translateX(${l}px)`;
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)`;
236
240
  });
237
241
  s(this, "onHoverLeave", () => {
238
242
  this.hoverTimeEl.removeAttribute("data-visible"), this.hoverDotEl.removeAttribute("data-visible");
@@ -273,24 +277,24 @@ class Ce {
273
277
  }
274
278
  const e = t.end - t.start, i = (l) => Math.min(1, Math.max(0, (l - t.start) / e)), r = i(this.video.currentTime);
275
279
  this.thumbEl.style.translate = `calc(${this.xAtRatio(r)}px - 50%) 0`;
276
- let n = 0;
280
+ let o = 0;
277
281
  for (let l = 0; l < this.video.buffered.length; l++)
278
- this.video.buffered.start(l) <= this.video.currentTime && (n = Math.max(n, this.video.buffered.end(l)));
279
- const a = i(n);
282
+ this.video.buffered.start(l) <= this.video.currentTime && (o = Math.max(o, this.video.buffered.end(l)));
283
+ const n = i(o);
280
284
  if (this.chapters.length)
281
285
  for (const l of this.chapters) {
282
- const d = l.end - l.start, m = (c) => d > 0 ? Math.min(1, Math.max(0, (c - l.start) / d)) : 0;
283
- l.playedEl.style.transform = `scaleX(${m(r)})`, l.bufferedEl.style.transform = `scaleX(${m(a)})`;
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)})`;
284
288
  }
285
289
  else
286
- this.playedEl.style.transform = `scaleX(${r})`, this.bufferedEl.style.transform = `scaleX(${a})`;
290
+ this.playedEl.style.transform = `scaleX(${r})`, this.bufferedEl.style.transform = `scaleX(${n})`;
287
291
  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)));
288
292
  });
289
293
  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");
290
294
  const i = document.createElement("div");
291
295
  i.className = "hp:absolute hp:inset-x-0 hp:h-[var(--hp-seek-track-h)] hp:rounded-full hp:bg-on-surface/25 hp:group-hover:h-[var(--hp-seek-track-h-hover)] hp:transition-[height] hp:duration-150", this.el.appendChild(i), this.trackEl = i, this.bufferedEl = document.createElement("div"), this.bufferedEl.className = "hp:absolute hp:inset-0 hp:rounded-full hp:bg-on-surface/40", this.bufferedEl.style.transformOrigin = "left", this.bufferedEl.style.willChange = "transform", i.appendChild(this.bufferedEl), this.playedEl = document.createElement("div"), this.playedEl.className = "hp:absolute hp:inset-0 hp:rounded-full hp:bg-accent", this.playedEl.style.transformOrigin = "left", this.playedEl.style.willChange = "transform", i.appendChild(this.playedEl), this.thumbEl = document.createElement("div"), this.thumbEl.className = "hp-seek-thumb", this.thumbEl.setAttribute("part", "seek-thumb"), this.el.appendChild(this.thumbEl), this.hoverDotEl = document.createElement("div"), this.hoverDotEl.className = "hp-seek-hover-dot", this.hoverDotEl.setAttribute("part", "seek-hover-dot"), this.el.appendChild(this.hoverDotEl), this.hoverTimeEl = document.createElement("div"), this.hoverTimeEl.className = "hp-seek-time", this.hoverTimeEl.setAttribute("part", "seek-time"), this.el.appendChild(this.hoverTimeEl), this.el.addEventListener("pointerdown", this.onPointerDown), this.el.addEventListener("pointermove", this.onHoverMove), this.el.addEventListener("pointerleave", this.onHoverLeave), this.el.addEventListener("keydown", this.onKeyDown), t.addEventListener("play", this.startLoop), t.addEventListener("pause", this.stopLoop), t.addEventListener("ended", this.stopLoop), t.addEventListener("timeupdate", this.render), t.addEventListener("progress", this.render), t.addEventListener("loadedmetadata", this.render), t.paused || this.startLoop(), this.resizeObserver = new ResizeObserver(() => {
292
- this.trackWidth = this.el.getBoundingClientRect().width, this.measureChapters(), this.render();
293
- }), this.resizeObserver.observe(this.el), this.trackWidth = this.el.getBoundingClientRect().width;
296
+ this.trackWidth = this.layoutWidth(), this.measureChapters(), this.render();
297
+ }), this.resizeObserver.observe(this.el), this.trackWidth = this.layoutWidth();
294
298
  }
295
299
  /**
296
300
  * Seek bar'ın temsil ettiği zaman aralığı: VOD'da 0 → süre; canlıda (duration Infinity) yayının izin verdiği
@@ -303,7 +307,7 @@ class Ce {
303
307
  const { seekable: e } = this.video;
304
308
  if (!e.length) return null;
305
309
  const i = e.start(0), r = e.end(e.length - 1);
306
- return r - i >= we ? { start: i, end: r, live: !0 } : null;
310
+ return r - i >= Te ? { start: i, end: r, live: !0 } : null;
307
311
  }
308
312
  /** Kendi zamanını gösteren plugin'ler (sprite/segments) varsayılan hover zamanını gizler — keyed set. */
309
313
  suppressHoverTime(t, e) {
@@ -314,13 +318,13 @@ class Ce {
314
318
  }
315
319
  /** Ekran x koordinatını 0–1 zaman oranına çevirir — chapter modunda parça boşluklarını hesaba katar (segments plugin'inin hover popup'ı da bunu kullanıyor). */
316
320
  ratioAtClientX(t) {
317
- const e = this.el.getBoundingClientRect(), i = t - e.left;
318
- if (!this.chapters.length) return Math.min(1, Math.max(0, i / e.width));
319
- for (let r = 0; r < this.chapters.length; r++) {
320
- const n = this.chapters[r], a = this.chapters[r + 1], l = a ? a.left : 1 / 0;
321
- if (i < l || !a) {
322
- const d = n.width > 0 ? Math.min(1, Math.max(0, (i - n.left) / n.width)) : 0;
323
- return n.start + d * (n.end - n.start);
321
+ const e = this.layoutXAtClientX(t);
322
+ if (!this.chapters.length) return this.trackWidth > 0 ? Math.min(1, Math.max(0, e / this.trackWidth)) : 0;
323
+ 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);
324
328
  }
325
329
  }
326
330
  return 1;
@@ -328,7 +332,7 @@ class Ce {
328
332
  /** 0–1 zaman oranının seek bar üzerindeki px konumu (thumb için). */
329
333
  xAtRatio(t) {
330
334
  if (!this.chapters.length) return t * this.trackWidth;
331
- const e = this.chapters.find((n) => t < n.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;
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;
332
336
  return e.left + r * e.width;
333
337
  }
334
338
  /** Track'i sıralı, 0→1'i kesintisiz kapsayan oran aralıklarına göre ayrı parçalara böler. */
@@ -338,29 +342,42 @@ class Ce {
338
342
  return e.className = "hp-chapters", this.chapters = t.map((i) => {
339
343
  const r = document.createElement("div");
340
344
  r.className = "hp-chapter", r.setAttribute("part", "segment-band"), r.style.flex = `${Math.max(i.end - i.start, 0)} 1 0px`;
345
+ const o = document.createElement("div");
346
+ o.className = "hp-chapter-fill hp-chapter-buffered";
341
347
  const n = document.createElement("div");
342
- n.className = "hp-chapter-fill hp-chapter-buffered";
343
- const a = document.createElement("div");
344
- return a.className = "hp-chapter-fill hp-chapter-played", i.color && (a.style.background = i.color), r.append(n, a), e.appendChild(r), { ...i, el: r, bufferedEl: n, playedEl: a, left: 0, width: 0 };
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 };
345
349
  }), this.trackEl.style.display = "none", this.trackEl.after(e), this.chaptersEl = e, this.measureChapters(), this.render(), this.chapters.map((i) => i.el);
346
350
  }
347
351
  clearChapters() {
348
352
  var t;
349
353
  (t = this.chaptersEl) == null || t.remove(), this.chaptersEl = null, this.chapters = [], this.trackEl.style.display = "", this.render();
350
354
  }
355
+ /**
356
+ * Seek bar'ın DÜZEN genişliği (px). getBoundingClientRect() ata elementlerin CSS transform'undan etkilenir: player
357
+ * ölçekli bir giriş animasyonuyla (ör. scale(0.985)) gösterilirken ölçülürse genişlik küçük kalıyor, animasyon
358
+ * bitince düzen boyutu değişmediği için ResizeObserver tekrar tetiklenmiyor ve thumb dolu kısmın gerisinde kalıyordu.
359
+ */
360
+ /** Ekran x koordinatının seek bar içindeki DÜZEN px'i (ata transform'u ölçekliyorsa ona göre düzeltilmiş). */
361
+ layoutXAtClientX(t) {
362
+ const e = this.el.getBoundingClientRect();
363
+ return e.width > 0 ? (t - e.left) * this.trackWidth / e.width : 0;
364
+ }
365
+ layoutWidth() {
366
+ return parseFloat(getComputedStyle(this.el).width) || this.el.offsetWidth;
367
+ }
351
368
  measureChapters() {
352
369
  if (!this.chapters.length) return;
353
- const t = this.el.getBoundingClientRect().left;
354
- for (const e of this.chapters) {
355
- const i = e.el.getBoundingClientRect();
356
- e.left = i.left - t, e.width = i.width;
370
+ const t = this.el.getBoundingClientRect(), e = t.width > 0 ? this.trackWidth / t.width : 1;
371
+ 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;
357
374
  }
358
375
  }
359
376
  seekToRatio(t) {
360
377
  const e = this.timeline();
361
378
  if (!e) return;
362
379
  const i = e.start + t * (e.end - e.start);
363
- this.video.currentTime = e.live ? Math.min(i, e.end - Ee) : i, this.render();
380
+ this.video.currentTime = e.live ? Math.min(i, e.end - Se) : i, this.render();
364
381
  }
365
382
  /** 0–1 arası oranda, seek bar üzerine ince bir işaret çizgisi ekler (ör. loop A/B noktaları). */
366
383
  addMarker(t, e = "") {
@@ -378,15 +395,15 @@ class Ce {
378
395
  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();
379
396
  }
380
397
  }
381
- function w(o, t = "") {
398
+ function E(a, t = "") {
382
399
  const e = document.createElement("i");
383
- return e.className = `hp-icon hp-icon-${o}${t ? ` ${t}` : ""}`, e.setAttribute("aria-hidden", "true"), e;
400
+ return e.className = `hp-icon hp-icon-${a}${t ? ` ${t}` : ""}`, e.setAttribute("aria-hidden", "true"), e;
384
401
  }
385
- function A(o, t) {
386
- o.className = o.className.replace(/hp-icon-[\w-]+/, `hp-icon-${t}`);
402
+ function P(a, t) {
403
+ a.className = a.className.replace(/hp-icon-[\w-]+/, `hp-icon-${t}`);
387
404
  }
388
- const L = 0.05, Te = 150;
389
- class Ae {
405
+ const R = 0.05, Le = 150;
406
+ class Pe {
390
407
  constructor(t, e, i) {
391
408
  s(this, "el");
392
409
  /** Dokunmatikte ses butonu gizli; sessiz oynarken görünen "Sesi aç" rozeti (chrome dışında monte edilir, otomatik gizlenmez). */
@@ -407,15 +424,15 @@ class Ae {
407
424
  s(this, "scheduleHide", () => {
408
425
  this.hideTimer && clearTimeout(this.hideTimer), this.hideTimer = setTimeout(() => {
409
426
  this.hideTimer = null, this.slider.style.opacity = "0", this.slider.style.pointerEvents = "none";
410
- }, Te);
427
+ }, Le);
411
428
  });
412
429
  s(this, "onWheel", (t) => {
413
430
  if (t.preventDefault(), this.adHooks.isAdActive()) {
414
431
  const r = this.adHooks.getVolume();
415
- this.adHooks.setVolume(Math.min(1, Math.max(0, r + (t.deltaY < 0 ? L : -L)))), this.render();
432
+ this.adHooks.setVolume(Math.min(1, Math.max(0, r + (t.deltaY < 0 ? R : -R)))), this.render();
416
433
  return;
417
434
  }
418
- const e = this.video.muted ? 0 : this.video.volume, i = Math.min(1, Math.max(0, e + (t.deltaY < 0 ? L : -L)));
435
+ const e = this.video.muted ? 0 : this.video.volume, i = Math.min(1, Math.max(0, e + (t.deltaY < 0 ? R : -R)));
419
436
  this.video.volume = i, this.video.muted = i === 0;
420
437
  });
421
438
  s(this, "onToggleMute", () => {
@@ -453,11 +470,11 @@ class Ae {
453
470
  const e = t === 0 ? this.labels.unmute : this.labels.mute;
454
471
  this.button.setAttribute("aria-label", e);
455
472
  const i = this.adHooks.isAdActive() || !this.video.paused;
456
- this.unmuteBadge.toggleAttribute("data-visible", t === 0 && i), this.unmuteText.textContent = this.labels.unmute, t === 0 ? A(this.iconEl, "volume-muted") : t < 0.5 ? A(this.iconEl, "volume-low") : A(this.iconEl, "volume-high");
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");
457
474
  });
458
- 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(w("volume-muted", "hp:text-base")), this.unmuteText = document.createElement("span"), this.unmuteText.textContent = e.unmute, this.unmuteBadge.appendChild(this.unmuteText), this.unmuteBadge.addEventListener("pointerdown", (n) => n.stopPropagation()), this.unmuteBadge.addEventListener("click", (n) => {
459
- n.stopPropagation(), this.unmute();
460
- }), 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 = w("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");
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) => {
476
+ 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");
461
478
  const r = document.createElement("div");
462
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();
463
480
  }
@@ -489,8 +506,8 @@ class Ae {
489
506
  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();
490
507
  }
491
508
  }
492
- const Se = 8, P = 8, Le = 100, G = 256;
493
- class Pe {
509
+ const O = 8, C = 8, X = 100, B = 256;
510
+ class Me {
494
511
  constructor(t, e, i) {
495
512
  s(this, "el");
496
513
  s(this, "button");
@@ -515,22 +532,30 @@ class Pe {
515
532
  * yükseklik player içinde kalan alanla sınırlı — küçük player'da menü dışarı taşmaz, kendi içinde kayar.
516
533
  */
517
534
  s(this, "fitToPlayer", () => {
535
+ var d;
518
536
  if (!this.open) return;
519
537
  const t = this.el.closest(".video-area");
520
538
  if (!t) return;
521
- const e = t.getBoundingClientRect(), i = this.button.getBoundingClientRect(), r = this.el.getBoundingClientRect(), n = !!this.el.closest(".hp-top-bar");
522
- this.panel.toggleAttribute("data-drop", n), Object.assign(this.panel.style, { top: "", bottom: "", marginTop: "", marginBottom: "" });
523
- const a = this.panel.scrollHeight, l = (n ? e.bottom - i.bottom : i.top - e.top) - Se - P;
524
- if (a <= l || l >= Le) {
525
- this.panel.style.maxHeight = `${Math.min(G, l)}px`;
539
+ if ((d = this.el.getRootNode().host) != null && d.hasAttribute("data-audio-compact")) {
540
+ this.fitToViewport();
541
+ return;
542
+ }
543
+ const e = t.getBoundingClientRect(), i = this.button.getBoundingClientRect(), r = this.el.getBoundingClientRect(), o = !!this.el.closest(".hp-top-bar");
544
+ 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`;
526
548
  return;
527
549
  }
528
- this.panel.style.maxHeight = `${Math.min(G, e.height - 2 * P)}px`, n ? Object.assign(this.panel.style, { top: `${e.top + P - r.top}px`, marginTop: "0" }) : Object.assign(this.panel.style, { bottom: `${r.bottom - (e.bottom - P)}px`, marginBottom: "0" });
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" });
529
551
  });
530
552
  s(this, "onDocumentClick", (t) => {
531
553
  this.open && !t.composedPath().includes(this.el) && this.close();
532
554
  });
533
- 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(w("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) => {
555
+ s(this, "backToCaptionSettings", () => {
556
+ this.currentPanel = "captions-settings", this.renderCaptionSettings();
557
+ });
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) => {
534
559
  r.stopPropagation(), this.toggle();
535
560
  }), document.addEventListener("click", this.onDocumentClick, !0), this.renderMain();
536
561
  }
@@ -546,7 +571,7 @@ class Pe {
546
571
  }
547
572
  /** Altyazı AÇIKKEN "Altyazı" alt menüsüne eklenecek Boyut/Renk/Konum satırları — `null` kaldırır. */
548
573
  setCaptionAppearance(t) {
549
- this.captionAppearance = t, (this.currentPanel === "captions" || this.currentPanel === "captions-size" || this.currentPanel === "captions-bg" || this.currentPanel === "captions-text") && this.render();
574
+ this.captionAppearance = t, (this.currentPanel === "captions" || this.currentPanel === "captions-settings" || this.currentPanel === "captions-size" || this.currentPanel === "captions-bg" || this.currentPanel === "captions-text") && this.render();
550
575
  }
551
576
  /** Ana menüye tek aç/kapa satırı ekler (ör. QrResume). */
552
577
  setQrResumeToggle(t) {
@@ -573,6 +598,12 @@ class Pe {
573
598
  get panelRect() {
574
599
  return this.open ? this.panel.getBoundingClientRect() : null;
575
600
  }
601
+ fitToViewport() {
602
+ const t = this.button.getBoundingClientRect();
603
+ 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`;
606
+ }
576
607
  /** Düzen değişince (ör. kompakt ↔ normal) açık menüyü kapat — eski konumunda asılı kalmasın. */
577
608
  closeMenu() {
578
609
  this.open && this.close();
@@ -587,7 +618,7 @@ class Pe {
587
618
  }
588
619
  backRow(t, e) {
589
620
  const i = document.createElement("button");
590
- 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(w("chevron-left", "hp:text-sm"));
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"));
591
622
  const r = document.createElement("span");
592
623
  return r.textContent = t, i.appendChild(r), i.addEventListener("click", e), i;
593
624
  }
@@ -596,6 +627,7 @@ class Pe {
596
627
  else if (this.currentPanel === "speed") this.renderSpeed();
597
628
  else if (this.currentPanel === "quality") this.renderQuality();
598
629
  else if (this.currentPanel === "captions") this.renderCaptions();
630
+ else if (this.currentPanel === "captions-settings") this.renderCaptionSettings();
599
631
  else if (this.currentPanel === "captions-size") this.renderCaptionsSize();
600
632
  else if (this.currentPanel === "captions-bg") this.renderCaptionColorPanel("bg");
601
633
  else if (this.currentPanel === "captions-text") this.renderCaptionColorPanel("text");
@@ -673,30 +705,47 @@ class Pe {
673
705
  );
674
706
  }
675
707
  if (this.captionAppearance && this.activeCaptionLabel !== this.labels.captionsOff) {
676
- const t = this.captionAppearance;
677
- this.panel.appendChild(
678
- this.row(t.sizeLabel, "", () => {
679
- this.currentPanel = "captions-size", this.renderCaptionsSize();
680
- })
681
- ), this.panel.appendChild(
682
- this.row(t.bgColorLabel, "", () => {
683
- this.currentPanel = "captions-bg", this.renderCaptionColorPanel("bg");
684
- })
685
- ), this.panel.appendChild(
686
- this.row(t.textColorLabel, "", () => {
687
- this.currentPanel = "captions-text", this.renderCaptionColorPanel("text");
688
- })
689
- ), this.panel.appendChild(
690
- this.row(t.resetPositionLabel, "", () => {
691
- t.onResetPosition(), this.close();
708
+ const t = document.createElement("div");
709
+ t.className = "hp:my-1 hp:border-t hp:border-on-surface/10", t.setAttribute("role", "separator"), this.panel.appendChild(t), this.panel.appendChild(
710
+ this.row(this.labels.captionSettings, "", () => {
711
+ this.currentPanel = "captions-settings", this.renderCaptionSettings();
692
712
  })
693
713
  );
694
714
  }
695
715
  }
716
+ /** Altyazı → Altyazı ayarları: boyut, arka plan / yazı rengi, konumu sıfırla — her satırda o anki değer. */
717
+ renderCaptionSettings() {
718
+ var i, r, o;
719
+ this.panel.innerHTML = "", this.panel.appendChild(
720
+ this.backRow(this.labels.captionSettings, () => {
721
+ this.currentPanel = "captions", this.renderCaptions();
722
+ })
723
+ );
724
+ const t = this.captionAppearance;
725
+ 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>` : "";
727
+ this.panel.appendChild(
728
+ this.row(t.sizeLabel, ((i = t.getSizeOptions().find((n) => n.active)) == null ? void 0 : i.label) ?? "", () => {
729
+ this.currentPanel = "captions-size", this.renderCaptionsSize();
730
+ })
731
+ ), this.panel.appendChild(
732
+ this.row(t.bgColorLabel, e((r = t.getBgColorOptions().find((n) => n.active)) == null ? void 0 : r.value), () => {
733
+ this.currentPanel = "captions-bg", this.renderCaptionColorPanel("bg");
734
+ })
735
+ ), this.panel.appendChild(
736
+ this.row(t.textColorLabel, e((o = t.getTextColorOptions().find((n) => n.active)) == null ? void 0 : o.value), () => {
737
+ this.currentPanel = "captions-text", this.renderCaptionColorPanel("text");
738
+ })
739
+ ), this.panel.appendChild(
740
+ this.row(t.resetPositionLabel, "", () => {
741
+ t.onResetPosition(), this.close();
742
+ })
743
+ );
744
+ }
696
745
  renderCaptionsSize() {
697
746
  this.panel.innerHTML = "";
698
747
  const t = this.captionAppearance;
699
- if (this.panel.appendChild(this.backRow((t == null ? void 0 : t.sizeLabel) ?? this.labels.captionSize, () => this.renderCaptions())), !!t)
748
+ if (this.panel.appendChild(this.backRow((t == null ? void 0 : t.sizeLabel) ?? this.labels.captionSize, this.backToCaptionSettings)), !!t)
700
749
  for (const e of t.getSizeOptions())
701
750
  this.panel.appendChild(
702
751
  this.row(e.label, e.active ? '<i class="hp-icon hp-icon-check"></i>' : "", () => {
@@ -708,14 +757,14 @@ class Pe {
708
757
  renderCaptionColorPanel(t) {
709
758
  this.panel.innerHTML = "";
710
759
  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;
711
- if (this.panel.appendChild(this.backRow(i, () => this.renderCaptions())), !e) return;
760
+ if (this.panel.appendChild(this.backRow(i, this.backToCaptionSettings)), !e) return;
712
761
  const r = document.createElement("div");
713
762
  r.className = "hp:flex hp:flex-wrap hp:gap-2 hp:px-3 hp:py-2";
714
- const n = t === "bg" ? e.getBgColorOptions() : e.getTextColorOptions();
715
- for (const a of n) {
763
+ const o = t === "bg" ? e.getBgColorOptions() : e.getTextColorOptions();
764
+ for (const n of o) {
716
765
  const l = document.createElement("button");
717
- 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", () => {
718
- a.onSelect(), this.render();
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();
719
768
  }), r.appendChild(l);
720
769
  }
721
770
  this.panel.appendChild(r);
@@ -728,27 +777,27 @@ class Pe {
728
777
  document.removeEventListener("click", this.onDocumentClick, !0), this.panelObserver.disconnect();
729
778
  }
730
779
  }
731
- function ae(o, t) {
732
- const e = o.seekable.length ? o.seekable.start(0) : 0, i = Number.isFinite(o.duration) ? o.duration : o.seekable.length ? o.seekable.end(o.seekable.length - 1) : o.currentTime;
733
- o.currentTime = Math.max(e, Math.min(i, o.currentTime + t));
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));
734
783
  }
735
- const Me = 15, Re = 480, Be = 150, q = ["waiting", "seeking"], W = ["playing", "canplay", "canplaythrough", "seeked", "pause", "error", "emptied"];
736
- function X(o, t) {
737
- const { btn: e } = T("", `skip-${o}`);
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}`);
738
787
  e.classList.add("hp-skip-btn"), e.setAttribute("part", t);
739
788
  const i = document.createElement("span");
740
789
  return i.className = "hp-skip-num", i.setAttribute("aria-hidden", "true"), e.appendChild(i), e.style.display = "none", { btn: e, num: i };
741
790
  }
742
- function E(o, t) {
743
- o.setAttribute("aria-label", t);
791
+ function T(a, t) {
792
+ a.setAttribute("aria-label", t);
744
793
  }
745
- function T(o, t, e) {
794
+ function L(a, t, e) {
746
795
  const i = document.createElement("button");
747
- i.type = "button", E(i, o), 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";
748
- const r = w(t, "hp:text-[length:var(--hp-ctrl-icon-size)]");
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)]");
749
798
  return i.appendChild(r), { btn: i, icon: r };
750
799
  }
751
- class ze {
800
+ class Ie {
752
801
  constructor(t, e, i, r) {
753
802
  s(this, "el");
754
803
  s(this, "seekBar");
@@ -784,10 +833,17 @@ class ze {
784
833
  s(this, "rightGroup");
785
834
  s(this, "fullscreenSlot");
786
835
  s(this, "compact", !1);
836
+ /** İnce ses çubuğu (audio.layout: 'compact'): dar ekranda da tek satır — üst bar yok. */
837
+ s(this, "forceInline", !1);
838
+ /** İ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");
787
841
  s(this, "resizeObserver");
788
842
  s(this, "liveBadge");
789
843
  s(this, "liveText");
790
844
  s(this, "adMode", !1);
845
+ /** Ses modu: tam ekran / PiP yok — dar düzende tam ekran kutusu da boş kalmasın. */
846
+ s(this, "audioMode", !1);
791
847
  s(this, "callbacks");
792
848
  s(this, "row");
793
849
  s(this, "extraButtonAnchor");
@@ -796,29 +852,30 @@ class ze {
796
852
  t.stopPropagation(), this.toggleTimeMode();
797
853
  });
798
854
  s(this, "renderPlayState", () => {
855
+ var e;
799
856
  const t = this.callbacks.isAdActive() ? this.callbacks.adIsPaused() : this.video.paused && !this.pendingPlay;
800
- A(this.playIcon, t ? "play" : "pause"), E(this.playButton, t ? this.labels.play : this.labels.pause);
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());
801
858
  });
802
859
  s(this, "renderTime", () => {
803
- var r, n;
860
+ var r, o;
804
861
  const t = this.video.duration === 1 / 0;
805
862
  if (this.timeLabel.style.display = this.adMode || t ? "none" : "", this.liveBadge.style.display = !this.adMode && t ? "" : "none", !t) {
806
- const a = this.video.duration, l = this.video.currentTime;
863
+ const n = this.video.duration, l = this.video.currentTime;
807
864
  if (this.showRemaining) {
808
- const d = Number.isFinite(a) ? Math.floor(a) : 0, m = Math.max(0, d - Math.floor(l));
809
- this.timeLabel.textContent = `-${x(m)} / ${x(a)}`;
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)}`;
810
867
  } else
811
- this.timeLabel.textContent = `${x(l)} / ${x(a)}`;
868
+ this.timeLabel.textContent = `${w(l)} / ${w(n)}`;
812
869
  return;
813
870
  }
814
- const e = ((n = (r = this.callbacks).liveSyncPosition) == null ? void 0 : n.call(r)) ?? this.liveEdge(), i = e !== null && e - this.video.currentTime > Me;
871
+ const e = ((o = (r = this.callbacks).liveSyncPosition) == null ? void 0 : o.call(r)) ?? this.liveEdge(), i = e !== null && e - this.video.currentTime > Re;
815
872
  this.liveBadge.toggleAttribute("data-behind", i);
816
873
  });
817
874
  /** Buffer bekleniyor (oynarken takılma ya da buffer'lanmamış bir yere atlama). */
818
875
  s(this, "onLoadingStart", (t) => {
819
876
  t.type === "seeking" && this.video.readyState >= HTMLMediaElement.HAVE_FUTURE_DATA || this.loadingTimer || this.loadingReasons.has("media") || (this.loadingTimer = setTimeout(() => {
820
877
  this.loadingTimer = null, this.setLoading("media", !0);
821
- }, Be));
878
+ }, ze));
822
879
  });
823
880
  s(this, "onLoadingEnd", (t) => {
824
881
  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));
@@ -829,29 +886,29 @@ class ze {
829
886
  e === null && t == null || (this.video.currentTime = t ?? Math.max(0, e - 1), this.video.paused && this.video.play().catch(() => {
830
887
  }), this.renderTime());
831
888
  });
832
- 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 Ce(t, r), this.seekBar.el.classList.add("hp:pointer-events-auto"), this.el.appendChild(this.seekBar.el);
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);
890
+ const o = document.createElement("div");
891
+ o.className = "hp:flex hp:items-center hp:gap-2", this.el.appendChild(o), this.bottomRow = o;
833
892
  const n = document.createElement("div");
834
- n.className = "hp:flex hp:items-center hp:gap-2", this.el.appendChild(n), this.bottomRow = n;
835
- const a = document.createElement("div");
836
- 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", n.appendChild(a), this.leftGroup = a;
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;
837
894
  const l = document.createElement("span");
838
895
  l.className = "hp-loading-ring", l.setAttribute("aria-hidden", "true");
839
896
  const d = document.createElement("span");
840
- d.className = "hp-loading-ring-mask", d.appendChild(document.createElement("span")), l.appendChild(d), a.appendChild(l);
841
- const m = T(r.play, "play", "K");
842
- this.playButton = m.btn, this.playIcon = m.icon, this.playButton.setAttribute("part", "play-pause-button"), this.playButton.addEventListener("click", () => this.togglePlay()), a.appendChild(this.playButton), this.skipBack = X("back", "skip-back-button"), this.skipBack.btn.addEventListener("click", () => this.skip(-(this.skipSeconds.back ?? 0))), this.skipForward = X("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 Ae(t, r, i.adVolume), a.appendChild(this.volumePanel.el), this.timeLabel = document.createElement("button"), this.timeLabel.type = "button", this.timeLabel.setAttribute("part", "time-display"), this.timeLabel.className = "hp:text-xs hp:text-on-surface hp:tabular-nums hp:whitespace-nowrap hp:px-1 hp:bg-transparent hp:border-0 hp:cursor-pointer hp:select-none hp:p-0 hp:hover:opacity-80 hp:transition-opacity hp: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", r.goToLive);
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);
843
900
  const c = document.createElement("span");
844
- 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), a.appendChild(this.liveBadge), a.appendChild(this.adInfoEl);
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;
845
904
  const h = document.createElement("div");
846
- h.className = "hp:flex-1", n.appendChild(h);
847
- const p = document.createElement("div");
848
- p.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", n.appendChild(p), this.rightGroup = p, this.settingsMenu = new Pe(t, e, r), p.appendChild(this.settingsMenu.el), this.extraButtonAnchor = this.settingsMenu.el, this.row = p;
849
- const u = T(r.pip, "pip");
850
- this.pipButton = u.btn, this.pipButton.addEventListener("click", () => this.togglePip()), document.pictureInPictureEnabled || (this.pipButton.style.display = "none"), p.appendChild(this.pipButton);
851
- const b = T(r.fullscreenEnter, "fullscreen-enter", "F");
852
- this.fullscreenButton = b.btn, this.fullscreenIcon = b.icon, this.fullscreenButton.addEventListener("click", () => this.toggleFullscreen()), p.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", n.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);
853
- for (const g of q) t.addEventListener(g, this.onLoadingStart);
854
- for (const g of W) t.addEventListener(g, this.onLoadingEnd);
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);
855
912
  this.renderPlayState(), this.renderTime();
856
913
  }
857
914
  /** 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. */
@@ -859,11 +916,31 @@ class ze {
859
916
  var i;
860
917
  const t = this.el.getBoundingClientRect().width;
861
918
  if (t === 0) return;
862
- const e = t < Re;
863
- 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 ? "none" : "flex", this.topEl.appendChild(this.rightGroup)) : (this.rightGroup.appendChild(this.fullscreenButton), this.bottomRow.insertBefore(this.rightGroup, this.fullscreenSlot), this.fullscreenSlot.style.display = "none"));
919
+ const e = !this.forceInline && t < Be;
920
+ 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
+ }
922
+ /**
923
+ * İnce ses çubuğu: başlık / sanatçı kontrol satırının ortasında; dar ekranda da kompakt (üst bar) düzene geçilmez.
924
+ * `null` kaldırır.
925
+ */
926
+ setAudioBar(t) {
927
+ var e;
928
+ if (this.forceInline = !!t, t) {
929
+ if (!this.barMetaEl) {
930
+ const i = document.createElement("div");
931
+ i.className = "hp-bar-meta", i.setAttribute("part", "audio-bar-meta"), i.innerHTML = '<span class="hp-bar-eq" aria-hidden="true"><i></i><i></i><i></i></span><span class="hp-bar-text"><span class="hp-bar-title"></span><span class="hp-bar-sub"></span></span>', this.spacerEl.appendChild(i), this.barMetaEl = i;
932
+ }
933
+ this.barMetaEl.querySelector(".hp-bar-title").textContent = t.title, this.barMetaEl.querySelector(".hp-bar-sub").textContent = t.subtitle, this.barMetaEl.toggleAttribute("data-empty", !t.title && !t.subtitle);
934
+ } else
935
+ (e = this.barMetaEl) == null || e.remove(), this.barMetaEl = null;
936
+ this.renderPlayState(), this.updateLayout();
937
+ }
938
+ /** Ses modu: görüntü olmadığı için tam ekran ve PiP butonları gizlenir. */
939
+ setAudioMode(t) {
940
+ 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" : "";
864
941
  }
865
942
  setFullscreenState(t) {
866
- A(this.fullscreenIcon, t ? "fullscreen-exit" : "fullscreen-enter"), E(this.fullscreenButton, t ? this.labels.fullscreenExit : this.labels.fullscreenEnter);
943
+ P(this.fullscreenIcon, t ? "fullscreen-exit" : "fullscreen-enter"), T(this.fullscreenButton, t ? this.labels.fullscreenExit : this.labels.fullscreenEnter);
867
944
  }
868
945
  /** Dil sonradan değişince (`options.locale`/`labels`) statik (reaktif olarak yeniden render edilmeyen) etiketleri tazeler. */
869
946
  /** Geri/ileri sarma butonları — `null` süre o butonu gizler. */
@@ -876,21 +953,21 @@ class ze {
876
953
  }
877
954
  renderSkipButtons() {
878
955
  const t = (e, i, r) => {
879
- 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), E(e.btn, r(i)));
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)));
880
957
  };
881
958
  t(this.skipBack, this.skipSeconds.back, this.labels.skipBack), t(this.skipForward, this.skipSeconds.forward, this.labels.skipForward);
882
959
  }
883
960
  skip(t) {
884
961
  var e;
885
- !t || !this.seekingEnabled || (ae(this.video, t), (e = this.onSkip) == null || e.call(this, t));
962
+ !t || !this.seekingEnabled || (pe(this.video, t), (e = this.onSkip) == null || e.call(this, t));
886
963
  }
887
964
  refreshLabels() {
888
- this.renderPlayState(), this.renderSkipButtons(), E(this.pipButton, this.labels.pip), E(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();
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();
889
966
  }
890
967
  /** Reklam modu: seek bar, süre ve sağ grup gizlenir; oynat/duraklat + ses kalır. */
891
968
  setAdMode(t) {
892
969
  const e = t ? "none" : "";
893
- this.adMode = t, this.renderSkipButtons(), this.seekBar.el.style.display = e, this.row.style.display = e, this.compact && (this.fullscreenSlot.style.display = t ? "none" : "flex"), this.renderTime(), t || this.setAdInfo(null), this.renderPlayState(), this.volumePanel.refreshForAdMode();
970
+ this.adMode = t, this.renderSkipButtons(), this.seekBar.el.style.display = e, this.row.style.display = e, this.compact && (this.fullscreenSlot.style.display = t || this.audioMode ? "none" : "flex"), this.renderTime(), t || this.setAdInfo(null), this.renderPlayState(), this.volumePanel.refreshForAdMode();
894
971
  }
895
972
  /**
896
973
  * Reklam geri sayımı + pod göstergesi ("Reklam 2/3 · 0:12"). `null` → gizle. Pod tek reklamsa yalnızca "Reklam · 0:12";
@@ -901,7 +978,7 @@ class ze {
901
978
  this.adInfoEl.style.display = "none", this.adInfoEl.textContent = "";
902
979
  return;
903
980
  }
904
- const e = t.total > 1 ? ` ${t.position}/${t.total}` : "", i = t.remaining >= 0 ? ` · ${x(Math.ceil(t.remaining))}` : "";
981
+ const e = t.total > 1 ? ` ${t.position}/${t.total}` : "", i = t.remaining >= 0 ? ` · ${w(Math.ceil(t.remaining))}` : "";
905
982
  this.adInfoEl.textContent = `${this.labels.adLabel}${e}${i}`, this.adInfoEl.style.display = "";
906
983
  }
907
984
  /** `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. */
@@ -916,8 +993,8 @@ class ze {
916
993
  }
917
994
  /** Plugin'lerin (loop-section vb.) kontrol çubuğuna kendi butonlarını eklemesi için — ayarlar menüsünden önce yerleştirilir. */
918
995
  addButton(t, e, i) {
919
- const { btn: r, icon: n } = T(t, e);
920
- return r.addEventListener("click", i), this.row.insertBefore(r, this.extraButtonAnchor), { btn: r, icon: n };
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 };
921
998
  }
922
999
  toggleTimeMode() {
923
1000
  this.showRemaining = !this.showRemaining, this.renderTime();
@@ -976,16 +1053,16 @@ class ze {
976
1053
  }
977
1054
  destroy() {
978
1055
  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);
979
- for (const t of q) this.video.removeEventListener(t, this.onLoadingStart);
980
- for (const t of W) this.video.removeEventListener(t, this.onLoadingEnd);
1056
+ for (const t of $) this.video.removeEventListener(t, this.onLoadingStart);
1057
+ for (const t of U) this.video.removeEventListener(t, this.onLoadingEnd);
981
1058
  this.loadingTimer && clearTimeout(this.loadingTimer), this.resizeObserver.disconnect(), this.topEl.remove(), this.seekBar.destroy(), this.settingsMenu.destroy();
982
1059
  }
983
1060
  }
984
- const Ie = 450, Ne = 60, $ = 8, z = 6, Oe = /* @__PURE__ */ new Set(["seek-bar", "time-display"]);
985
- function De() {
1061
+ const Ne = 450, Oe = 60, K = 8, D = 6, De = /* @__PURE__ */ new Set(["seek-bar", "time-display"]);
1062
+ function Fe() {
986
1063
  return typeof window.matchMedia != "function" || window.matchMedia("(hover: hover)").matches;
987
1064
  }
988
- class Fe {
1065
+ class He {
989
1066
  constructor(t) {
990
1067
  s(this, "el");
991
1068
  s(this, "labelEl");
@@ -1035,22 +1112,22 @@ class Fe {
1035
1112
  this.currentTarget && this.el.style.visibility === "visible" && ((t = this.isOccluded) != null && t.call(this, this.el.getBoundingClientRect())) && this.hideNow();
1036
1113
  }
1037
1114
  matchTarget(t) {
1038
- var n;
1039
- const e = t, i = (n = e == null ? void 0 : e.closest) == null ? void 0 : n.call(e, 'button[aria-label], [role="slider"][aria-label]');
1115
+ var o;
1116
+ const e = t, i = (o = e == null ? void 0 : e.closest) == null ? void 0 : o.call(e, 'button[aria-label], [role="slider"][aria-label]');
1040
1117
  if (!i) return null;
1041
1118
  const r = i.getAttribute("part");
1042
- return r && Oe.has(r) || i.offsetParent === null && i !== document.activeElement ? null : i;
1119
+ return r && De.has(r) || i.offsetParent === null && i !== document.activeElement ? null : i;
1043
1120
  }
1044
1121
  scheduleShow(t) {
1045
1122
  this.hideTimer && (clearTimeout(this.hideTimer), this.hideTimer = null), this.showTimer && clearTimeout(this.showTimer), this.pendingTarget = t, this.showTimer = setTimeout(() => {
1046
1123
  this.showTimer = null, this.pendingTarget = null, this.show(t);
1047
- }, Ie);
1124
+ }, Ne);
1048
1125
  }
1049
1126
  scheduleHide() {
1050
- this.showTimer && (clearTimeout(this.showTimer), this.showTimer = null), this.pendingTarget = null, this.hideTimer && clearTimeout(this.hideTimer), this.hideTimer = setTimeout(() => this.hideNow(), Ne);
1127
+ this.showTimer && (clearTimeout(this.showTimer), this.showTimer = null), this.pendingTarget = null, this.hideTimer && clearTimeout(this.hideTimer), this.hideTimer = setTimeout(() => this.hideNow(), Oe);
1051
1128
  }
1052
1129
  show(t) {
1053
- if (!De()) return;
1130
+ if (!Fe()) return;
1054
1131
  const e = t.getAttribute("aria-label");
1055
1132
  if (!e) return;
1056
1133
  this.currentTarget = t, this.labelEl.textContent = e;
@@ -1062,14 +1139,14 @@ class Fe {
1062
1139
  }
1063
1140
  position(t) {
1064
1141
  const e = this.mountEl.getBoundingClientRect(), i = t.getBoundingClientRect(), r = this.el.getBoundingClientRect();
1065
- let n = i.top - e.top - r.height - $;
1066
- n < z && (n = i.bottom - e.top + $);
1067
- let a = i.left - e.left + i.width / 2 - r.width / 2;
1068
- const l = e.width - r.width - z;
1069
- a = Math.max(z, Math.min(a, l)), this.el.style.top = `${n}px`, this.el.style.left = `${a}px`;
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`;
1070
1147
  }
1071
1148
  }
1072
- class He {
1149
+ class _e {
1073
1150
  constructor(t, e, i) {
1074
1151
  s(this, "host");
1075
1152
  s(this, "video");
@@ -1081,7 +1158,7 @@ class He {
1081
1158
  /** Space/K'den önce sorulur — true dönerse işlenmiştir (ör. preroll beklemesini iptal). */
1082
1159
  s(this, "interceptTogglePlay", null);
1083
1160
  s(this, "onKeyDown", (t) => {
1084
- var r, n, a;
1161
+ var r, o, n;
1085
1162
  if (t.defaultPrevented) return;
1086
1163
  const e = t.composedPath()[0];
1087
1164
  if ((t.key === " " || t.key === "Enter") && e instanceof HTMLButtonElement) return;
@@ -1097,11 +1174,11 @@ class He {
1097
1174
  break;
1098
1175
  case "ArrowRight":
1099
1176
  case "l":
1100
- Number.isFinite(i) && (this.video.currentTime = Math.min(i, this.video.currentTime + this.seekStep), (n = this.onSeek) == null || n.call(this, this.seekStep)), t.preventDefault();
1177
+ Number.isFinite(i) && (this.video.currentTime = Math.min(i, this.video.currentTime + this.seekStep), (o = this.onSeek) == null || o.call(this, this.seekStep)), t.preventDefault();
1101
1178
  break;
1102
1179
  case "ArrowLeft":
1103
1180
  case "j":
1104
- this.video.currentTime = Math.max(0, this.video.currentTime - this.seekStep), (a = this.onSeek) == null || a.call(this, -this.seekStep), t.preventDefault();
1181
+ this.video.currentTime = Math.max(0, this.video.currentTime - this.seekStep), (n = this.onSeek) == null || n.call(this, -this.seekStep), t.preventDefault();
1105
1182
  break;
1106
1183
  case "ArrowUp":
1107
1184
  this.video.volume = Math.min(1, this.video.volume + 0.1), this.video.muted = !1, t.preventDefault();
@@ -1123,19 +1200,19 @@ class He {
1123
1200
  this.host.removeEventListener("keydown", this.onKeyDown);
1124
1201
  }
1125
1202
  }
1126
- class _e {
1203
+ class Ve {
1127
1204
  constructor(t) {
1128
1205
  s(this, "el");
1129
1206
  s(this, "video");
1130
1207
  s(this, "show", () => this.el.classList.remove("hp:hidden"));
1131
1208
  s(this, "hide", () => this.el.classList.add("hp:hidden"));
1132
- this.video = t, this.el = document.createElement("div"), this.el.className = "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);
1209
+ 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);
1133
1210
  }
1134
1211
  destroy() {
1135
1212
  this.video.removeEventListener("waiting", this.show), this.video.removeEventListener("playing", this.hide), this.video.removeEventListener("canplay", this.hide), this.video.removeEventListener("pause", this.hide);
1136
1213
  }
1137
1214
  }
1138
- const Ve = '<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>';
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>';
1139
1216
  class Ge {
1140
1217
  constructor(t, e) {
1141
1218
  s(this, "el");
@@ -1156,9 +1233,9 @@ class Ge {
1156
1233
  const i = document.createElement("div");
1157
1234
  i.className = "hp-error-card";
1158
1235
  const r = document.createElement("div");
1159
- r.className = "hp-error-icon", r.appendChild(w("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 = Ve, this.retryText = document.createElement("span"), this.retryText.textContent = e.retry, this.retryBtn.appendChild(this.retryText), this.retryBtn.addEventListener("click", () => {
1160
- var n;
1161
- this.dismiss(), (n = this.onRetry) == null || n.call(this);
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", () => {
1237
+ var o;
1238
+ this.dismiss(), (o = this.onRetry) == null || o.call(this);
1162
1239
  }), i.appendChild(this.retryBtn), this.el.appendChild(i), t.addEventListener("error", this.show);
1163
1240
  }
1164
1241
  setOnRetry(t) {
@@ -1202,129 +1279,129 @@ class Ge {
1202
1279
  this.video.removeEventListener("error", this.show);
1203
1280
  }
1204
1281
  }
1205
- const I = /* @__PURE__ */ new WeakMap(), le = /* @__PURE__ */ new WeakSet(), B = /* @__PURE__ */ new WeakMap();
1206
- function qe(o) {
1207
- return le.has(o);
1282
+ const F = /* @__PURE__ */ new WeakMap(), ce = /* @__PURE__ */ new WeakSet(), N = /* @__PURE__ */ new WeakMap();
1283
+ function We(a) {
1284
+ return ce.has(a);
1208
1285
  }
1209
- function he(o, t, e, i, r) {
1210
- let n = I.get(o);
1211
- n || I.set(o, n = /* @__PURE__ */ new Map());
1212
- const a = `${t}\0${e}\0${i}\0${r}`;
1213
- let l = n.get(a);
1214
- return l || (l = o.addTextTrack(e, i, r), le.add(l), n.set(a, l)), l;
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;
1215
1292
  }
1216
- function pe(o, t) {
1217
- for (const [e, i] of I.get(o) ?? [])
1293
+ function ue(a, t) {
1294
+ for (const [e, i] of F.get(a) ?? [])
1218
1295
  if (e.startsWith(`${t}\0`)) {
1219
1296
  i.mode = "hidden";
1220
1297
  for (const r of Array.from(i.cues ?? [])) i.removeCue(r);
1221
1298
  i.mode = "disabled";
1222
1299
  }
1223
1300
  }
1224
- function We(o, t) {
1225
- ce(o);
1226
- const e = B.get(o), i = [];
1301
+ function Xe(a, t) {
1302
+ me(a);
1303
+ const e = N.get(a), i = [];
1227
1304
  for (const r of t) {
1228
- const n = he(o, "options", "subtitles", r.label, r.srclang);
1229
- n.mode = r.default ? "hidden" : "disabled", i.push({ label: r.label, track: n }), $e(o, n, r.src, e);
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);
1230
1307
  }
1231
1308
  return i;
1232
1309
  }
1233
- function ce(o) {
1234
- B.set(o, (B.get(o) ?? 0) + 1), pe(o, "options");
1310
+ function me(a) {
1311
+ N.set(a, (N.get(a) ?? 0) + 1), ue(a, "options");
1235
1312
  }
1236
- function Xe(o, t) {
1313
+ function $e(a, t) {
1237
1314
  let e = null;
1238
- for (const { label: i, track: r } of o) {
1239
- const n = i === t;
1240
- r.mode = n ? "hidden" : "disabled", n && (e = r);
1315
+ for (const { label: i, track: r } of a) {
1316
+ const o = i === t;
1317
+ r.mode = o ? "hidden" : "disabled", o && (e = r);
1241
1318
  }
1242
1319
  return e;
1243
1320
  }
1244
- async function $e(o, t, e, i) {
1321
+ async function Ue(a, t, e, i) {
1245
1322
  let r;
1246
1323
  try {
1247
- const n = await fetch(e);
1248
- if (!n.ok) throw new Error(`HTTP ${n.status}`);
1249
- r = await n.text();
1250
- } catch (n) {
1251
- console.warn("[HopePlayer] altyazı yüklenemedi:", e, n), o.dispatchEvent(new CustomEvent("hp-internal:subtitle-error", { detail: { src: e, message: String(n) } }));
1324
+ const o = await fetch(e);
1325
+ if (!o.ok) throw new Error(`HTTP ${o.status}`);
1326
+ r = await o.text();
1327
+ } 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) } }));
1252
1329
  return;
1253
1330
  }
1254
- if (!(B.get(o) !== i || typeof VTTCue != "function"))
1255
- for (const n of Ke(r)) {
1256
- const a = new VTTCue(n.start, n.end, n.text);
1257
- Qe(a, n.settings), t.addCue(a);
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);
1258
1335
  }
1259
1336
  }
1260
- const U = "(?:\\d+:)?\\d{1,2}:\\d{2}(?:[.,]\\d{1,3})?", Ue = new RegExp(`^(${U})\\s+-->\\s+(${U})(.*)$`);
1261
- function K(o) {
1262
- return o.replace(",", ".").split(":").reduce((t, e) => t * 60 + Number(e), 0);
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);
1263
1340
  }
1264
- function Ke(o) {
1265
- const t = [], e = o.replace(/^/, "").replace(/\r\n?/g, `
1341
+ function Ke(a) {
1342
+ const t = [], e = a.replace(/^/, "").replace(/\r\n?/g, `
1266
1343
  `).split(/\n{2,}/);
1267
1344
  for (const i of e) {
1268
1345
  const r = i.split(`
1269
- `), n = r.findIndex((d) => d.includes("-->"));
1270
- if (n < 0) continue;
1271
- const a = Ue.exec(r[n].trim());
1272
- if (!a) continue;
1273
- const l = r.slice(n + 1).join(`
1346
+ `), o = r.findIndex((d) => d.includes("-->"));
1347
+ if (o < 0) continue;
1348
+ const n = je.exec(r[o].trim());
1349
+ if (!n) continue;
1350
+ const l = r.slice(o + 1).join(`
1274
1351
  `);
1275
- l.trim() && t.push({ start: K(a[1]), end: K(a[2]), settings: a[3].trim(), text: l });
1352
+ l.trim() && t.push({ start: Y(n[1]), end: Y(n[2]), settings: n[3].trim(), text: l });
1276
1353
  }
1277
1354
  return t;
1278
1355
  }
1279
- function Qe(o, t) {
1356
+ function Qe(a, t) {
1280
1357
  for (const e of t.split(/\s+/)) {
1281
1358
  const [i, r] = e.split(":");
1282
1359
  if (!i || !r) continue;
1283
- const [n] = r.split(",");
1360
+ const [o] = r.split(",");
1284
1361
  try {
1285
- i === "align" ? o.align = n : i === "vertical" ? o.vertical = n : i === "size" ? o.size = parseFloat(n) : i === "position" ? o.position = parseFloat(n) : i === "line" && (o.snapToLines = !n.endsWith("%"), o.line = parseFloat(n));
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));
1286
1363
  } catch {
1287
1364
  }
1288
1365
  }
1289
1366
  }
1290
- const R = 6, je = 20, Ye = 14, Ze = 6, Je = 10, et = 3, de = "hope-caption-row", ue = "hope-caption-font-size", Q = "hope-caption-bg-color", j = "hope-caption-text-color", tt = {
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 = {
1291
1368
  small: 0.78,
1292
1369
  normal: 1,
1293
1370
  large: 1.35
1294
- }, Y = [
1371
+ }, ee = [
1295
1372
  "rgba(0, 0, 0, 0.75)",
1296
1373
  "rgba(0, 0, 0, 0)",
1297
1374
  "rgba(255, 255, 255, 0.85)",
1298
1375
  "rgba(183, 28, 28, 0.8)",
1299
1376
  "rgba(13, 71, 161, 0.8)",
1300
1377
  "rgba(27, 94, 32, 0.8)"
1301
- ], Z = ["#ffffff", "#000000", "#ffeb3b", "#ff5252", "#18ffff", "#69f0ae"];
1302
- function it() {
1378
+ ], te = ["#ffffff", "#000000", "#ffeb3b", "#ff5252", "#18ffff", "#69f0ae"];
1379
+ function st() {
1303
1380
  try {
1304
- const o = window.localStorage.getItem(de), t = o === null ? 0 : Number(o);
1305
- return Number.isFinite(t) && t >= 0 && t < R ? t : 0;
1381
+ const a = window.localStorage.getItem(be), t = a === null ? 0 : Number(a);
1382
+ return Number.isFinite(t) && t >= 0 && t < I ? t : 0;
1306
1383
  } catch {
1307
1384
  return 0;
1308
1385
  }
1309
1386
  }
1310
- function st() {
1387
+ function rt() {
1311
1388
  try {
1312
- const o = window.localStorage.getItem(ue);
1313
- return o === "small" || o === "normal" || o === "large" ? o : "normal";
1389
+ const a = window.localStorage.getItem(ge);
1390
+ return a === "small" || a === "normal" || a === "large" ? a : "normal";
1314
1391
  } catch {
1315
1392
  return "normal";
1316
1393
  }
1317
1394
  }
1318
- function J(o, t) {
1395
+ function ie(a, t) {
1319
1396
  const e = t[0] ?? "";
1320
1397
  try {
1321
- const i = window.localStorage.getItem(o);
1398
+ const i = window.localStorage.getItem(a);
1322
1399
  return i !== null && t.includes(i) ? i : e;
1323
1400
  } catch {
1324
1401
  return e;
1325
1402
  }
1326
1403
  }
1327
- class S {
1404
+ class M {
1328
1405
  constructor(t, e, i, r) {
1329
1406
  s(this, "layerEl");
1330
1407
  s(this, "bubbleEl");
@@ -1332,10 +1409,10 @@ class S {
1332
1409
  s(this, "seekBarEl");
1333
1410
  s(this, "labels");
1334
1411
  s(this, "activeTrack", null);
1335
- s(this, "fontSize", st());
1336
- s(this, "bgColor", J(Q, Y));
1337
- s(this, "textColor", J(j, Z));
1338
- s(this, "rowIndex", it());
1412
+ s(this, "fontSize", rt());
1413
+ s(this, "bgColor", ie(Z, ee));
1414
+ s(this, "textColor", ie(J, te));
1415
+ s(this, "rowIndex", st());
1339
1416
  s(this, "dragging", !1);
1340
1417
  /** Kontrol çubuğu görünür mü — görünürken altyazı seek bar'ın üstünde, değilken en altta. */
1341
1418
  s(this, "chromeVisible", !0);
@@ -1364,7 +1441,7 @@ class S {
1364
1441
  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));
1365
1442
  });
1366
1443
  s(this, "onPointerMove", (t) => {
1367
- this.dragging && (this.pendingDeltaPx = t.clientY - this.dragStartClientY, Math.abs(this.pendingDeltaPx) > et && (this.dragMoved = !0), this.rafId === null && (this.rafId = requestAnimationFrame(this.applyPendingDrag)));
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)));
1368
1445
  });
1369
1446
  s(this, "applyPendingDrag", () => {
1370
1447
  if (this.rafId = null, !this.dragging) return;
@@ -1373,8 +1450,8 @@ class S {
1373
1450
  });
1374
1451
  s(this, "onPointerUp", (t) => {
1375
1452
  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;
1376
- const { min: e, max: i } = this.bounds(), r = Math.min(i, Math.max(e, this.dragStartBottomPx - this.pendingDeltaPx)), n = i > e ? (r - e) / (i - e) : 0, a = Math.round(n * (R - 1));
1377
- this.setRowIndex(a, !0);
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);
1378
1455
  });
1379
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();
1380
1457
  }
@@ -1388,7 +1465,7 @@ class S {
1388
1465
  setFontSize(t) {
1389
1466
  this.fontSize = t, this.applyFontSizeVar(), this.recomputePosition();
1390
1467
  try {
1391
- window.localStorage.setItem(ue, t);
1468
+ window.localStorage.setItem(ge, t);
1392
1469
  } catch {
1393
1470
  }
1394
1471
  }
@@ -1398,7 +1475,7 @@ class S {
1398
1475
  setBgColor(t) {
1399
1476
  this.bgColor = t, this.bubbleEl.style.setProperty("--hp-caption-bg", t);
1400
1477
  try {
1401
- window.localStorage.setItem(Q, t);
1478
+ window.localStorage.setItem(Z, t);
1402
1479
  } catch {
1403
1480
  }
1404
1481
  }
@@ -1408,7 +1485,7 @@ class S {
1408
1485
  setTextColor(t) {
1409
1486
  this.textColor = t, this.bubbleEl.style.setProperty("--hp-caption-text", t);
1410
1487
  try {
1411
- window.localStorage.setItem(j, t);
1488
+ window.localStorage.setItem(J, t);
1412
1489
  } catch {
1413
1490
  }
1414
1491
  }
@@ -1421,14 +1498,14 @@ class S {
1421
1498
  this.labels = t, this.bubbleEl.setAttribute("aria-label", t.captionDragHandle);
1422
1499
  }
1423
1500
  applyFontSizeVar() {
1424
- this.bubbleEl.style.setProperty("--hp-caption-size-multiplier", String(tt[this.fontSize]));
1501
+ this.bubbleEl.style.setProperty("--hp-caption-size-multiplier", String(it[this.fontSize]));
1425
1502
  }
1426
1503
  bounds() {
1427
- const t = this.videoArea.getBoundingClientRect(), e = this.seekBarEl.getBoundingClientRect(), r = (this.bubbleEl.getBoundingClientRect().height || 32) + je, n = Math.max(Je, 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") ? Ze : Ye))) : n, l = Math.max(a, Math.round(t.height - r));
1428
- return { min: a, max: l };
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 };
1429
1506
  }
1430
1507
  pxForRow(t) {
1431
- const { min: e, max: i } = this.bounds(), r = t / (R - 1);
1508
+ const { min: e, max: i } = this.bounds(), r = t / (I - 1);
1432
1509
  return Math.round(e + r * (i - e));
1433
1510
  }
1434
1511
  /**
@@ -1447,11 +1524,11 @@ class S {
1447
1524
  }
1448
1525
  /** FLIP: bottom anında yazılır, yalnızca transform animasyonlanır — bottom'u animasyonlamak bırakınca zıplatıyordu. */
1449
1526
  setRowIndex(t, e) {
1450
- this.rowIndex = Math.min(R - 1, Math.max(0, t));
1527
+ this.rowIndex = Math.min(I - 1, Math.max(0, t));
1451
1528
  const i = this.pxForRow(this.rowIndex), r = this.visualBottomPx();
1452
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"));
1453
1530
  try {
1454
- window.localStorage.setItem(de, String(this.rowIndex));
1531
+ window.localStorage.setItem(be, String(this.rowIndex));
1455
1532
  } catch {
1456
1533
  }
1457
1534
  }
@@ -1467,8 +1544,8 @@ class S {
1467
1544
  this.activeTrack && this.activeTrack.removeEventListener("cuechange", this.onCueChange), this.resizeObserver.disconnect(), this.rafId !== null && cancelAnimationFrame(this.rafId), this.bubbleEl.removeEventListener("pointerdown", this.onPointerDown);
1468
1545
  }
1469
1546
  }
1470
- s(S, "BG_COLOR_PRESETS", Y), s(S, "TEXT_COLOR_PRESETS", Z);
1471
- class rt {
1547
+ s(M, "BG_COLOR_PRESETS", ee), s(M, "TEXT_COLOR_PRESETS", te);
1548
+ class ot {
1472
1549
  constructor(t) {
1473
1550
  s(this, "el");
1474
1551
  s(this, "bufferedEl");
@@ -1484,8 +1561,8 @@ class rt {
1484
1561
  this.playedEl.style.transform = `scaleX(${Math.min(1, this.video.currentTime / t)})`;
1485
1562
  const { buffered: i } = this.video;
1486
1563
  let r = 0;
1487
- for (let n = 0; n < i.length; n++)
1488
- i.start(n) <= this.video.currentTime && (r = Math.max(r, i.end(n)));
1564
+ for (let o = 0; o < i.length; o++)
1565
+ i.start(o) <= this.video.currentTime && (r = Math.max(r, i.end(o)));
1489
1566
  this.bufferedEl.style.transform = `scaleX(${Math.min(1, r / t)})`;
1490
1567
  });
1491
1568
  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);
@@ -1507,8 +1584,8 @@ class rt {
1507
1584
  this.rafId !== null && cancelAnimationFrame(this.rafId), this.rafId = null;
1508
1585
  }
1509
1586
  }
1510
- const nt = 1e3, ot = 800, at = '<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>';
1511
- class lt {
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 {
1512
1589
  constructor(t) {
1513
1590
  s(this, "el");
1514
1591
  s(this, "valueEl");
@@ -1519,7 +1596,7 @@ class lt {
1519
1596
  s(this, "hideTimer", null);
1520
1597
  this.labels = t, this.el = document.createElement("div"), this.el.className = "hp-seek-fb", this.el.setAttribute("part", "seek-feedback");
1521
1598
  const e = document.createElement("span");
1522
- e.className = "hp-seek-fb-chevrons", e.innerHTML = at.repeat(3);
1599
+ e.className = "hp-seek-fb-chevrons", e.innerHTML = lt.repeat(3);
1523
1600
  const i = document.createElement("span");
1524
1601
  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);
1525
1602
  }
@@ -1528,16 +1605,16 @@ class lt {
1528
1605
  if (!t) return;
1529
1606
  const e = Date.now(), i = Math.sign(t) === Math.sign(this.total);
1530
1607
  this.total = i && e - this.lastAt < nt ? this.total + t : t, this.lastAt = e;
1531
- const r = Math.round(Math.abs(this.total) * 10) / 10, n = this.total > 0;
1532
- this.el.dataset.side = n ? "forward" : "back", this.valueEl.textContent = `${n ? "+" : "−"}${r}`, this.unitEl.textContent = this.labels.secondsShort, this.liveEl.textContent = (n ? 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(() => {
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(() => {
1533
1610
  this.el.removeAttribute("data-visible"), this.total = 0;
1534
- }, ot);
1611
+ }, at);
1535
1612
  }
1536
1613
  destroy() {
1537
1614
  this.hideTimer && clearTimeout(this.hideTimer), this.el.remove();
1538
1615
  }
1539
1616
  }
1540
- class ht {
1617
+ class pt {
1541
1618
  constructor(t) {
1542
1619
  s(this, "el");
1543
1620
  s(this, "open", !1);
@@ -1557,30 +1634,30 @@ class ht {
1557
1634
  }
1558
1635
  /** `clientX/Y` ekran koordinatı — menü player'ın içinde kalacak şekilde kaydırılır. */
1559
1636
  show(t, e, i) {
1560
- var m;
1637
+ var u;
1561
1638
  this.el.replaceChildren(
1562
1639
  ...i.map((c) => {
1563
- const h = document.createElement(c.onSelect ? "button" : "div");
1564
- h.className = "hp-context-menu-item", c.onSelect ? (h.type = "button", h.setAttribute("role", "menuitem"), h.addEventListener("click", () => {
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", () => {
1565
1642
  this.close(), c.onSelect();
1566
- })) : h.setAttribute("data-info", "");
1567
- const p = document.createElement("span");
1568
- if (p.textContent = c.label, h.appendChild(p), c.meta) {
1569
- const u = document.createElement("span");
1570
- u.className = "hp-context-menu-meta", u.textContent = c.meta, h.appendChild(u);
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);
1571
1648
  }
1572
- return h;
1649
+ return b;
1573
1650
  })
1574
1651
  ), this.el.setAttribute("data-open", ""), this.open = !0;
1575
- const r = this.container.getBoundingClientRect(), { width: n, height: a } = this.el.getBoundingClientRect(), l = Math.max(4, Math.min(t - r.left, r.width - n - 4)), d = Math.max(4, Math.min(e - r.top, r.height - a - 4));
1576
- this.el.style.left = `${l}px`, this.el.style.top = `${d}px`, (m = this.el.querySelector("button")) == null || m.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);
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);
1577
1654
  }
1578
1655
  destroy() {
1579
1656
  this.close(), this.el.remove();
1580
1657
  }
1581
1658
  }
1582
- const pt = 3e3, ee = 200;
1583
- class ct {
1659
+ const ct = 3e3, se = 200;
1660
+ class dt {
1584
1661
  constructor() {
1585
1662
  s(this, "list", []);
1586
1663
  /** Kayıt eklenince / temizlenince (açık panel canlı güncellenir). */
@@ -1590,13 +1667,13 @@ class ct {
1590
1667
  return this.list;
1591
1668
  }
1592
1669
  add(t) {
1593
- var r, n;
1670
+ var r, o;
1594
1671
  const e = Date.now(), i = this.list[this.list.length - 1];
1595
- if (i && e - i.time < pt && i.source === t.source && i.message === t.message && JSON.stringify(i.details ?? {}) === JSON.stringify(t.details ?? {})) {
1672
+ if (i && e - i.time < ct && i.source === t.source && i.message === t.message && JSON.stringify(i.details ?? {}) === JSON.stringify(t.details ?? {})) {
1596
1673
  i.count = (i.count ?? 1) + 1, i.time = e, (r = this.onChange) == null || r.call(this);
1597
1674
  return;
1598
1675
  }
1599
- this.list.push({ time: e, ...t }), this.list.length > ee && this.list.splice(0, this.list.length - ee), (n = this.onChange) == null || n.call(this);
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);
1600
1677
  }
1601
1678
  clear() {
1602
1679
  var t;
@@ -1605,19 +1682,19 @@ class ct {
1605
1682
  /** Destek ekibine yapıştırılabilir düz metin. */
1606
1683
  toText() {
1607
1684
  return this.list.map((t) => {
1608
- const e = Object.entries(t.details ?? {}).filter(([, r]) => r !== void 0 && r !== "").map(([r, n]) => `${r}=${n}`).join(" "), i = t.count && t.count > 1 ? ` (x${t.count})` : "";
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})` : "";
1609
1686
  return `${new Date(t.time).toISOString()} [${t.source}]${t.fatal ? " [fatal]" : ""} ${t.message}${i}${e ? ` | ${e}` : ""}`;
1610
1687
  }).join(`
1611
1688
  `);
1612
1689
  }
1613
1690
  }
1614
- const dt = '@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}', te = "hope-player-icon-font";
1615
- function ut() {
1616
- if (typeof document > "u" || document.getElementById(te)) return;
1617
- const o = document.createElement("style");
1618
- o.id = te, o.textContent = dt, document.head.appendChild(o);
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);
1619
1696
  }
1620
- const me = {
1697
+ const fe = {
1621
1698
  play: "Oynat",
1622
1699
  pause: "Duraklat",
1623
1700
  mute: "Sessize al",
@@ -1626,8 +1703,8 @@ const me = {
1626
1703
  seekBar: "Video konumu",
1627
1704
  settings: "Ayarlar",
1628
1705
  pip: "Resim içinde resim",
1629
- skipBack: (o) => `${o} saniye geri`,
1630
- skipForward: (o) => `${o} saniye ileri`,
1706
+ skipBack: (a) => `${a} saniye geri`,
1707
+ skipForward: (a) => `${a} saniye ileri`,
1631
1708
  secondsShort: "sn",
1632
1709
  audioTrack: "Ses",
1633
1710
  statsTitle: "İstatistikler",
@@ -1658,6 +1735,7 @@ const me = {
1658
1735
  adLabel: "Reklam",
1659
1736
  adReturnFullscreen: "Tam ekrana dön",
1660
1737
  adReturnPip: "Küçük pencereye dön",
1738
+ audioVinyl: "Plak — ileri / geri sarmak için çevirin",
1661
1739
  fullscreenEnter: "Tam ekran",
1662
1740
  fullscreenExit: "Tam ekrandan çık",
1663
1741
  playbackSpeed: "Oynatma Hızı",
@@ -1665,6 +1743,7 @@ const me = {
1665
1743
  quality: "Kalite",
1666
1744
  captions: "Altyazı",
1667
1745
  captionsOff: "Kapalı",
1746
+ captionSettings: "Altyazı ayarları",
1668
1747
  captionSize: "Yazı Boyutu",
1669
1748
  captionSizeSmall: "Küçük",
1670
1749
  captionSizeNormal: "Normal",
@@ -1688,7 +1767,7 @@ const me = {
1688
1767
  geoUnknownCountry: "Ülke bilgisi bulunamadı.",
1689
1768
  redirectCancel: "İptal",
1690
1769
  redirectPlayNow: "Şimdi Oynat",
1691
- redirectCountdown: (o) => `Sıradaki video ${o} saniye içinde oynatılacak.`,
1770
+ redirectCountdown: (a) => `Sıradaki video ${a} saniye içinde oynatılacak.`,
1692
1771
  redirectNowPlaying: "Video oynatılıyor...",
1693
1772
  qrResumeTitle: "Devam etmek için kodu telefonunuzla okutun",
1694
1773
  qrResumeDontShowAgain: "Bir daha gösterme",
@@ -1704,7 +1783,7 @@ const me = {
1704
1783
  playlistTitle: "Oynatma Listesi",
1705
1784
  playlistPrev: "Önceki",
1706
1785
  playlistNext: "Sonraki",
1707
- videoFallbackTitle: (o) => `Video ${o + 1}`,
1786
+ videoFallbackTitle: (a) => `Video ${a + 1}`,
1708
1787
  storyPrev: "Önceki video",
1709
1788
  storyNext: "Sonraki video",
1710
1789
  storyAllVideos: "Tüm videolar",
@@ -1712,7 +1791,7 @@ const me = {
1712
1791
  liveClock: "Canlı saat",
1713
1792
  live: "CANLI",
1714
1793
  goToLive: "Canlıya git"
1715
- }, mt = {
1794
+ }, bt = {
1716
1795
  play: "Play",
1717
1796
  pause: "Pause",
1718
1797
  mute: "Mute",
@@ -1721,8 +1800,8 @@ const me = {
1721
1800
  seekBar: "Seek",
1722
1801
  settings: "Settings",
1723
1802
  pip: "Picture-in-picture",
1724
- skipBack: (o) => `Back ${o} seconds`,
1725
- skipForward: (o) => `Forward ${o} seconds`,
1803
+ skipBack: (a) => `Back ${a} seconds`,
1804
+ skipForward: (a) => `Forward ${a} seconds`,
1726
1805
  secondsShort: "s",
1727
1806
  audioTrack: "Audio",
1728
1807
  statsTitle: "Stats",
@@ -1753,6 +1832,7 @@ const me = {
1753
1832
  adLabel: "Ad",
1754
1833
  adReturnFullscreen: "Back to full screen",
1755
1834
  adReturnPip: "Back to picture-in-picture",
1835
+ audioVinyl: "Record — turn it to scrub",
1756
1836
  fullscreenEnter: "Fullscreen",
1757
1837
  fullscreenExit: "Exit fullscreen",
1758
1838
  playbackSpeed: "Playback speed",
@@ -1760,6 +1840,7 @@ const me = {
1760
1840
  quality: "Quality",
1761
1841
  captions: "Captions",
1762
1842
  captionsOff: "Off",
1843
+ captionSettings: "Subtitle settings",
1763
1844
  captionSize: "Font Size",
1764
1845
  captionSizeSmall: "Small",
1765
1846
  captionSizeNormal: "Normal",
@@ -1783,7 +1864,7 @@ const me = {
1783
1864
  geoUnknownCountry: "No country information found.",
1784
1865
  redirectCancel: "Cancel",
1785
1866
  redirectPlayNow: "Play now",
1786
- redirectCountdown: (o) => `Next video will play in ${o} seconds.`,
1867
+ redirectCountdown: (a) => `Next video will play in ${a} seconds.`,
1787
1868
  redirectNowPlaying: "Now playing...",
1788
1869
  qrResumeTitle: "Scan to continue watching on your phone",
1789
1870
  qrResumeDontShowAgain: "Don't show again",
@@ -1799,7 +1880,7 @@ const me = {
1799
1880
  playlistTitle: "Playlist",
1800
1881
  playlistPrev: "Previous",
1801
1882
  playlistNext: "Next",
1802
- videoFallbackTitle: (o) => `Video ${o + 1}`,
1883
+ videoFallbackTitle: (a) => `Video ${a + 1}`,
1803
1884
  storyPrev: "Previous video",
1804
1885
  storyNext: "Next video",
1805
1886
  storyAllVideos: "All videos",
@@ -1807,19 +1888,19 @@ const me = {
1807
1888
  liveClock: "Live clock",
1808
1889
  live: "LIVE",
1809
1890
  goToLive: "Go to live"
1810
- }, bt = { tr: me, en: mt };
1811
- function be(o, t) {
1812
- return { ...bt[o ?? "tr"] ?? me, ...t };
1891
+ }, gt = { tr: fe, en: bt };
1892
+ function ve(a, t) {
1893
+ return { ...gt[a ?? "tr"] ?? fe, ...t };
1813
1894
  }
1814
- function gt(o, t, e) {
1815
- Object.assign(o, be(t, e));
1895
+ function ft(a, t, e) {
1896
+ Object.assign(a, ve(t, e));
1816
1897
  }
1817
- const N = 8e3;
1818
- function ft(o) {
1898
+ const H = 8e3;
1899
+ function vt(a) {
1819
1900
  var t;
1820
- return (t = o.live) != null && t.scte35 && !o.adTagPreroll && !o.adTagVmap ? !1 : !!(o.adTagPreroll || o.adTagVmap);
1901
+ return (t = a.live) != null && t.scte35 && !a.adTagPreroll && !a.adTagVmap ? !1 : !!(a.adTagPreroll || a.adTagVmap);
1821
1902
  }
1822
- class vt {
1903
+ class yt {
1823
1904
  constructor(t) {
1824
1905
  /** Kapı kurulu (preroll bekleniyor) mu. */
1825
1906
  s(this, "armed", !1);
@@ -1827,7 +1908,7 @@ class vt {
1827
1908
  s(this, "playIntent", !1);
1828
1909
  /** Kapının kendi pause() çağrısının ürettiği 'pause' olayı yutulsun. */
1829
1910
  s(this, "swallowNextPause", !1);
1830
- s(this, "timeoutMs", N);
1911
+ s(this, "timeoutMs", H);
1831
1912
  s(this, "timer", null);
1832
1913
  /** İlk oynatma isteği (reklam plugin'i bekleyen preroll'u başlatır). */
1833
1914
  s(this, "onPlayIntent", null);
@@ -1853,7 +1934,7 @@ class vt {
1853
1934
  get hasPlayIntent() {
1854
1935
  return this.playIntent;
1855
1936
  }
1856
- arm(t = N) {
1937
+ arm(t = H) {
1857
1938
  this.clearTimer(), this.armed = !0, this.playIntent = !1, this.timeoutMs = t;
1858
1939
  }
1859
1940
  /**
@@ -1890,24 +1971,24 @@ class vt {
1890
1971
  this.timer && clearTimeout(this.timer), this.timer = null;
1891
1972
  }
1892
1973
  }
1893
- const yt = [
1974
+ const xt = [
1894
1975
  "https://imasdk.googleapis.com",
1895
1976
  "https://pubads.g.doubleclick.net",
1896
1977
  "https://securepubads.g.doubleclick.net",
1897
1978
  "https://pagead2.googlesyndication.com"
1898
1979
  ];
1899
- let ie = !1;
1980
+ let oe = !1;
1900
1981
  function kt() {
1901
- if (!(ie || typeof document > "u")) {
1902
- ie = !0;
1903
- for (const o of yt) {
1904
- if (document.head.querySelector(`link[rel="preconnect"][href="${o}"]`)) continue;
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;
1905
1986
  const t = document.createElement("link");
1906
- t.rel = "preconnect", t.href = o, document.head.appendChild(t);
1987
+ t.rel = "preconnect", t.href = a, document.head.appendChild(t);
1907
1988
  }
1908
1989
  }
1909
1990
  }
1910
- const xt = [0.5, 0.75, 1, 1.25, 1.5, 2], se = 1200, wt = 3e3, re = 5e3, Et = 10, ne = 10, Ct = 5, oe = "stream-audio", M = "1.0.12", Tt = (
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 = (
1911
1992
  /* html */
1912
1993
  `
1913
1994
  <div class="video-area">
@@ -1918,7 +1999,13 @@ const xt = [0.5, 0.75, 1, 1.25, 1.5, 2], se = 1200, wt = 3e3, re = 5e3, Et = 10,
1918
1999
  </div>
1919
2000
  `
1920
2001
  );
1921
- class ge extends HTMLElement {
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+)?))?$/);
2006
+ 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
+ }
2008
+ class ye extends HTMLElement {
1922
2009
  constructor() {
1923
2010
  super();
1924
2011
  s(this, "root");
@@ -1957,7 +2044,7 @@ class ge extends HTMLElement {
1957
2044
  /** options.debug — sağ tık menüsündeki "Hata ayıklama" girişini açar. */
1958
2045
  s(this, "debugEnabled", !1);
1959
2046
  /** Player'ın tüm hataları (medya, yayın, reklam, altyazı) — her zaman tutulur; bkz. `errorLog`. */
1960
- s(this, "log", new ct());
2047
+ s(this, "log", new dt());
1961
2048
  /** Son basılan işaretçi türü — sağ tık menüsü yalnızca fareyle (dokunmatikte uzun basma gesture'a ait). */
1962
2049
  s(this, "lastPointerType", "mouse");
1963
2050
  /** options.tapGestures kuruluysa (plugins/tap-gestures). */
@@ -1970,6 +2057,9 @@ class ge extends HTMLElement {
1970
2057
  s(this, "adsController", null);
1971
2058
  s(this, "gestureControls", null);
1972
2059
  s(this, "loopSection", null);
2060
+ s(this, "audioStage", null);
2061
+ /** options.audio — kapak + plak sahnesi, kontroller hep görünür, tam ekran yok. */
2062
+ s(this, "audioMode", !1);
1973
2063
  s(this, "inViewAutoplay", null);
1974
2064
  s(this, "unregisterSticky", null);
1975
2065
  s(this, "playlistRunner", null);
@@ -2028,19 +2118,19 @@ class ge extends HTMLElement {
2028
2118
  s(this, "hideTimer", null);
2029
2119
  s(this, "cursorTimer", null);
2030
2120
  /** null = imleç hiç gizlenmez (options.cursorHideDelayMs: false). */
2031
- s(this, "cursorHideDelayMs", re);
2121
+ s(this, "cursorHideDelayMs", ae);
2032
2122
  /** Fare kontrollerin (buton/seek bar) üzerinde mi — üzerindeyken otomatik gizlenmez; videonun üstünde hareketsizse gizlenir. */
2033
2123
  s(this, "pointerOverControls", !1);
2034
2124
  /** Kalite menüsünde şu an HLS seviyeleri mi var (kaynak değişince temizlemek için). */
2035
2125
  s(this, "hlsQualitiesShown", !1);
2036
2126
  /** Son uygulanan options.showRemainingTime — bkz. applyOptions. */
2037
2127
  s(this, "appliedShowRemaining");
2038
- s(this, "autoHideDelayMs", se);
2128
+ s(this, "autoHideDelayMs", ne);
2039
2129
  s(this, "tapCandidate", !1);
2040
2130
  s(this, "tapStartX", 0);
2041
2131
  s(this, "tapStartY", 0);
2042
2132
  /** Tüm UI'ın paylaştığı tek, mutable sözlük — dil değişince referans değil alanlar güncellenir. */
2043
- s(this, "i18n", be("tr"));
2133
+ s(this, "i18n", ve("tr"));
2044
2134
  /** IMA SDK'nın kendi ad-UI dili (skip butonu/sayaç metni) de aynı dili takip etsin diye — bkz. plugins/ads/AdsController. */
2045
2135
  s(this, "localeCode", "tr");
2046
2136
  s(this, "onMediaError", () => {
@@ -2065,7 +2155,7 @@ class ge extends HTMLElement {
2065
2155
  s(this, "onContextMenu", (e) => {
2066
2156
  const i = this.contextMenuConfig;
2067
2157
  !i || this.lastPointerType !== "mouse" || (e.preventDefault(), this.contextMenu.show(e.clientX, e.clientY, [
2068
- { label: "HopeCorePlayer", meta: `v${M}` },
2158
+ { label: "HopeCorePlayer", meta: `v${z}` },
2069
2159
  ...i.stats ? [{ label: this.i18n.statsTitle, onSelect: () => void this.toggleStats(!0) }] : [],
2070
2160
  // Yalnızca debug açıkken ve kayıtlı bir hata varsa.
2071
2161
  ...this.debugEnabled && this.log.entries.length ? [{ label: this.i18n.debugTitle, meta: String(this.log.entries.length), onSelect: () => void this.showDebugLog() }] : []
@@ -2074,57 +2164,57 @@ class ge extends HTMLElement {
2074
2164
  s(this, "onStreamTextTracks", (e) => {
2075
2165
  const i = this.streamTracks.filter((r) => r.id.startsWith("native:"));
2076
2166
  if (!e.length)
2077
- pe(this.videoEl, "stream"), this.streamCueKeys.clear(), this.streamTracks = i;
2167
+ ue(this.videoEl, "stream"), this.streamCueKeys.clear(), this.streamTracks = i;
2078
2168
  else {
2079
- const r = new Set([...this.optionTracks, ...i].map((n) => n.label));
2169
+ const r = new Set([...this.optionTracks, ...i].map((o) => o.label));
2080
2170
  this.streamTracks = [
2081
2171
  ...i,
2082
- ...e.map((n) => {
2083
- const a = this.uniqueLabel(this.streamTrackLabel(n.label, n.lang) || n.id, n.kind === "captions" ? "CC" : n.lang || n.kind, r);
2084
- return { id: n.id, label: a, track: he(this.videoEl, "stream", n.kind, a, n.lang) };
2172
+ ...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) };
2085
2175
  })
2086
2176
  ];
2087
2177
  }
2088
2178
  this.rebuildCaptions(this.activeCaptionLabel);
2089
2179
  });
2090
2180
  s(this, "onStreamCues", (e, i) => {
2091
- var a;
2092
- const r = (a = this.streamTracks.find((l) => l.id === e)) == null ? void 0 : a.track;
2181
+ var n;
2182
+ const r = (n = this.streamTracks.find((l) => l.id === e)) == null ? void 0 : n.track;
2093
2183
  if (!r) return;
2094
- let n = this.streamCueKeys.get(r);
2095
- n || this.streamCueKeys.set(r, n = /* @__PURE__ */ new Set());
2184
+ let o = this.streamCueKeys.get(r);
2185
+ o || this.streamCueKeys.set(r, o = /* @__PURE__ */ new Set());
2096
2186
  for (const l of i) {
2097
2187
  const d = `${l.startTime}|${l.endTime}|${l.text}`;
2098
- n.has(d) || (n.add(d), r.addCue(l));
2188
+ o.has(d) || (o.add(d), r.addCue(l));
2099
2189
  }
2100
2190
  });
2101
2191
  /** Tarayıcının kendi (native HLS) altyazı izleri — bizim havuz izlerimiz ve metadata izleri hariç. */
2102
2192
  s(this, "onNativeTextTracksChanged", () => {
2103
- const e = Array.from(this.videoEl.textTracks).filter((a) => (a.kind === "subtitles" || a.kind === "captions") && !qe(a)), i = this.streamTracks.some((a) => a.id.startsWith("native:"));
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:"));
2104
2194
  if (!e.length && !i) return;
2105
- const r = this.streamTracks.filter((a) => !a.id.startsWith("native:")), n = new Set([...this.optionTracks, ...r].map((a) => a.label));
2195
+ const r = this.streamTracks.filter((n) => !n.id.startsWith("native:")), o = new Set([...this.optionTracks, ...r].map((n) => n.label));
2106
2196
  this.streamTracks = [
2107
2197
  ...r,
2108
- ...e.map((a, l) => ({
2198
+ ...e.map((n, l) => ({
2109
2199
  id: `native:${l}`,
2110
- label: this.uniqueLabel(a.label || a.language || `${this.i18n.captions} ${l + 1}`, a.language || String(l + 1), n),
2111
- track: a
2200
+ label: this.uniqueLabel(n.label || n.language || `${this.i18n.captions} ${l + 1}`, n.language || String(l + 1), o),
2201
+ track: n
2112
2202
  }))
2113
2203
  ], this.rebuildCaptions(this.activeCaptionLabel);
2114
2204
  });
2115
2205
  /** Yayında birden fazla ses izi varsa ayarlarda "Ses" alt menüsü (HLS alternatif ses / Safari audioTracks). */
2116
2206
  s(this, "onStreamAudioTracks", (e, i) => {
2117
2207
  this.streamAudio = { tracks: e, active: i };
2118
- const r = this.controlBar.settingsMenu, n = /* @__PURE__ */ new Set(), a = new Map(e.map((l) => [l.index, this.uniqueLabel(this.streamTrackLabel(l.label, l.lang), String(l.index + 1), n)]));
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)]));
2119
2209
  if (e.length <= 1) {
2120
- r.unregisterSubmenu(oe);
2210
+ r.unregisterSubmenu(he);
2121
2211
  return;
2122
2212
  }
2123
2213
  r.registerSubmenu({
2124
- key: oe,
2214
+ key: he,
2125
2215
  title: this.i18n.audioTrack,
2126
- getValueLabel: () => a.get(i) ?? "",
2127
- getItems: () => e.map((l) => ({ label: a.get(l.index), active: l.index === i, onSelect: () => this.sourceManager.setAudioTrack(l.index) }))
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) }))
2128
2218
  });
2129
2219
  });
2130
2220
  /** Playlist panelinin monte edileceği, .video-area'nın ALTINDAKİ (shadow root içi) kapsayıcı — ilk ihtiyaçta oluşturulur. */
@@ -2136,12 +2226,12 @@ class ge extends HTMLElement {
2136
2226
  }
2137
2227
  if (e.length <= 1) return;
2138
2228
  this.hlsQualitiesShown = !0;
2139
- const r = (n) => `${n.height}p`;
2229
+ const r = (o) => `${o.height}p`;
2140
2230
  this.controlBar.setQualities(
2141
2231
  [
2142
2232
  { label: this.i18n.autoQuality, onSelect: () => this.sourceManager.setLevel(-1) },
2143
2233
  // Yüksekten düşüğe (hls.js artan sıralıyor) — l.index hls.js'teki gerçek seviye numarası, sıradan bağımsız.
2144
- ...[...e].sort((n, a) => a.height - n.height).map((n) => ({ label: r(n), onSelect: () => this.sourceManager.setLevel(n.index) }))
2234
+ ...[...e].sort((o, n) => n.height - o.height).map((o) => ({ label: r(o), onSelect: () => this.sourceManager.setLevel(o.index) }))
2145
2235
  ],
2146
2236
  i === -1 ? this.i18n.autoQuality : r(e[i])
2147
2237
  );
@@ -2174,15 +2264,15 @@ class ge extends HTMLElement {
2174
2264
  if (!i && Date.now() - this.lastTouchEndAt < 800) return;
2175
2265
  i && (this.lastTouchEndAt = Date.now());
2176
2266
  const r = i ? e.changedTouches[0] : e;
2177
- if (r && Math.hypot(r.clientX - this.tapStartX, r.clientY - this.tapStartY) > Et) {
2267
+ if (r && Math.hypot(r.clientX - this.tapStartX, r.clientY - this.tapStartY) > Ct) {
2178
2268
  i && !this.isChromeBlocked && this.scheduleAutoHide();
2179
2269
  return;
2180
2270
  }
2181
- const n = i ? "touch" : this.lastPointerType, a = () => this.onBackgroundTap(n, () => {
2271
+ const o = i ? "touch" : this.lastPointerType, n = () => this.onBackgroundTap(o, () => {
2182
2272
  this.videoEl.paused ? this.videoEl.play().catch(() => {
2183
2273
  }) : this.videoEl.pause();
2184
2274
  });
2185
- r && ((d = this.tapGestures) != null && d.handleTap(r.clientX, n === "pen" ? "pen" : n, a)) || a();
2275
+ r && ((d = this.tapGestures) != null && d.handleTap(r.clientX, o === "pen" ? "pen" : o, n)) || n();
2186
2276
  });
2187
2277
  s(this, "onVideoPressCancel", () => {
2188
2278
  this.tapCandidate = !1;
@@ -2198,79 +2288,79 @@ class ge extends HTMLElement {
2198
2288
  e.pointerType === "mouse" && (this.pointerOverControls = !1, this.scheduleAutoHide(), this.showCursor());
2199
2289
  });
2200
2290
  s(this, "scheduleAutoHide", () => {
2201
- this.showChrome(), this.hideTimer && clearTimeout(this.hideTimer), !(this.videoEl.paused || this.loadingActive) && (this.hideTimer = setTimeout(() => {
2202
- this.videoEl.paused || this.loadingActive || this.pointerOverControls || this.controlBar.settingsMenu.isOpen || this.setChromeOpacity("0");
2203
- }, this.lastPointerType === "mouse" ? this.autoHideDelayMs : Math.max(this.autoHideDelayMs, wt)));
2291
+ this.showChrome(), this.hideTimer && clearTimeout(this.hideTimer), !(this.videoEl.paused || this.loadingActive) && (this.audioMode || (this.hideTimer = setTimeout(() => {
2292
+ 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))));
2204
2294
  });
2205
- ut(), this.root = this.attachShadow({ mode: "open" });
2295
+ mt(), this.root = this.attachShadow({ mode: "open" });
2206
2296
  const e = document.createElement("style");
2207
- e.textContent = ye, this.root.appendChild(e);
2297
+ e.textContent = we, this.root.appendChild(e);
2208
2298
  const i = document.createElement("div");
2209
- i.className = "hp-root", i.innerHTML = Tt, 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 vt(this.videoEl), this.prerollGate.onWaitChange = (n) => this.onPrerollWaitChange(n), this.videoEl.addEventListener("error", this.onMediaError), this.videoEl.addEventListener("hp-internal:subtitle-error", this.onSubtitleError), this.loadingSpinner = new _e(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";
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";
2210
2300
  const r = document.createElement("span");
2211
- r.className = "hp-chip hp:flex hp:items-center hp:justify-center hp:w-16 hp:h-16", r.style.borderRadius = "9999px", r.appendChild(w("play", "hp:text-2xl")), this.centerPlayButton.appendChild(r), this.centerPlayButton.addEventListener("click", (n) => {
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) => {
2212
2302
  var c;
2213
- const a = () => {
2303
+ const n = () => {
2214
2304
  this.videoEl.paused && this.videoEl.play();
2215
- }, l = this.lastPointerType === "pen" ? "pen" : this.lastPointerType === "touch" ? "touch" : null, m = n.composedPath().includes(r) ? a : () => this.onBackgroundTap(l ?? "mouse", a);
2216
- l && ((c = this.tapGestures) != null && c.handleTap(n.clientX, l, m)) || m();
2217
- }), 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 xe(this.videoEl, {
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, {
2218
2308
  onLevelsChanged: this.onHlsLevelsChanged,
2219
2309
  onAudioTracksChanged: this.onStreamAudioTracks,
2220
2310
  onTextTracksFound: this.onStreamTextTracks,
2221
2311
  onCues: this.onStreamCues,
2222
- onFatalError: (n) => this.errorScreen.showStreamError(n === "network" ? 2 : 3),
2223
- onStreamError: (n) => this.log.add({
2312
+ onFatalError: (o) => this.errorScreen.showStreamError(o === "network" ? 2 : 3),
2313
+ onStreamError: (o) => this.log.add({
2224
2314
  source: "stream",
2225
- message: `${n.type}: ${n.details}`,
2226
- fatal: n.fatal,
2227
- details: { url: n.url, httpStatus: n.httpStatus, reason: n.reason, engine: "hls.js" }
2315
+ message: `${o.type}: ${o.details}`,
2316
+ fatal: o.fatal,
2317
+ details: { url: o.url, httpStatus: o.httpStatus, reason: o.reason, engine: "hls.js" }
2228
2318
  })
2229
- }), this.errorScreen.setShouldShow(() => !this.sourceManager.isRecovering()), this.controlBar = new ze(
2319
+ }), this.errorScreen.setShouldShow(() => !this.sourceManager.isRecovering()), this.controlBar = new Ie(
2230
2320
  this.videoEl,
2231
- xt,
2321
+ wt,
2232
2322
  {
2233
2323
  onRequestFullscreen: () => this.requestFullscreenCompat(),
2234
2324
  liveSyncPosition: () => {
2235
- var n;
2236
- return ((n = this.sourceManager.hlsInstance) == null ? void 0 : n.liveSyncPosition) ?? null;
2325
+ var o;
2326
+ return ((o = this.sourceManager.hlsInstance) == null ? void 0 : o.liveSyncPosition) ?? null;
2237
2327
  },
2238
2328
  onExitFullscreen: () => this.exitFullscreenCompat(),
2239
2329
  isFullscreen: () => this.isFullscreenActive(),
2240
2330
  // adsController sonradan kurulur — closure'lar her çağrıda güncel this.adsController'ı okur.
2241
2331
  isAdActive: () => this.isAdPlaying(),
2242
2332
  interceptTogglePlay: () => this.cancelPrerollWait(),
2243
- onLoadingChange: (n) => this.onLoadingChange(n),
2333
+ onLoadingChange: (o) => this.onLoadingChange(o),
2244
2334
  adTogglePlay: () => {
2245
- var n;
2246
- return (n = this.adsController) == null ? void 0 : n.toggleAdPlayPause();
2335
+ var o;
2336
+ return (o = this.adsController) == null ? void 0 : o.toggleAdPlayPause();
2247
2337
  },
2248
2338
  adIsPaused: () => {
2249
- var n;
2250
- return ((n = this.adsController) == null ? void 0 : n.isAdPaused()) ?? !0;
2339
+ var o;
2340
+ return ((o = this.adsController) == null ? void 0 : o.isAdPaused()) ?? !0;
2251
2341
  },
2252
2342
  adVolume: {
2253
2343
  isAdActive: () => this.isAdPlaying(),
2254
2344
  getVolume: () => {
2255
- var n;
2256
- return ((n = this.adsController) == null ? void 0 : n.getAdVolume()) ?? 1;
2345
+ var o;
2346
+ return ((o = this.adsController) == null ? void 0 : o.getAdVolume()) ?? 1;
2257
2347
  },
2258
- setVolume: (n) => {
2259
- var a;
2260
- return (a = this.adsController) == null ? void 0 : a.setAdVolume(n);
2348
+ setVolume: (o) => {
2349
+ var n;
2350
+ return (n = this.adsController) == null ? void 0 : n.setAdVolume(o);
2261
2351
  },
2262
2352
  toggleMute: () => {
2263
- var n;
2264
- return (n = this.adsController) == null ? void 0 : n.toggleAdMute();
2353
+ var o;
2354
+ return (o = this.adsController) == null ? void 0 : o.toggleAdMute();
2265
2355
  }
2266
2356
  }
2267
2357
  },
2268
2358
  this.i18n
2269
- ), this.chromeEl.appendChild(this.controlBar.el), this.chromeEl.appendChild(this.controlBar.topEl), this.videoArea.appendChild(this.controlBar.volumePanel.unmuteBadge), this.captionRenderer = new S(this.videoEl, this.videoArea, this.controlBar.seekBar.el, this.i18n), this.videoArea.appendChild(this.captionRenderer.layerEl), this.keyboard = new He(
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(
2270
2360
  this,
2271
2361
  this.videoEl,
2272
2362
  () => this.isFullscreenActive() ? this.exitFullscreenCompat() : this.requestFullscreenCompat()
2273
- ), this.tooltip = new Fe(this.videoArea), this.contextMenu = new ht(this.videoArea), this.seekFeedback = new lt(this.i18n), this.videoArea.appendChild(this.seekFeedback.el), this.controlBar.onSkip = (n) => this.seekFeedback.show(n), this.keyboard.onSeek = (n) => this.seekFeedback.show(n), this.keyboard.interceptTogglePlay = () => this.cancelPrerollWait(), this.controlBar.seekBar.onKeyboardSeek = (n) => this.seekFeedback.show(n), this.blockChrome("boot");
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");
2274
2364
  }
2275
2365
  static get observedAttributes() {
2276
2366
  return ["src", "poster", "autoplay", "muted", "loop", "theme", "locale"];
@@ -2286,8 +2376,8 @@ class ge extends HTMLElement {
2286
2376
  }), 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"));
2287
2377
  }
2288
2378
  disconnectedCallback() {
2289
- var e, i, r, n, a, l, d, m, c, h, p, u, b, g, v, y, f, k, C, O, D, F, H;
2290
- (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(), (n = this.debugPanel) == null || n.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(), (d = this.gestureControls) == null || d.destroy(), (m = this.loopSection) == null || m.destroy(), (c = this.inViewAutoplay) == null || c.destroy(), (h = this.unregisterSticky) == null || h.call(this), (p = this.playlistRunner) == null || p.destroy(), (u = this.hopeStory) == null || u.destroy(), (b = this.markProgress) == null || b.destroy(), (g = this.segments) == null || g.destroy(), (v = this.spriteThumbnails) == null || v.destroy(), (y = this.countdownScreen) == null || y.destroy(), (f = this.geoChecker) == null || f.destroy(), (k = this.redirectScreen) == null || k.destroy(), (C = this.qrResume) == null || C.destroy(), (O = this.pauseAd) == null || O.destroy(), this.pauseAd = null, (D = this.dubbing) == null || D.destroy(), (F = this.liveWallClock) == null || F.destroy(), (H = this.daiController) == null || H.destroy(), this.prerollGate.release(!1), this.hideTimer && clearTimeout(this.hideTimer), this.bootGraceTimer && clearTimeout(this.bootGraceTimer), this.lastSynced = null;
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;
2291
2381
  }
2292
2382
  /** Reklam/consent-farkında plugin'lerin (gesture/sticky/in-view-autoplay) ortak sorgusu. */
2293
2383
  isAdPlaying() {
@@ -2320,7 +2410,7 @@ class ge extends HTMLElement {
2320
2410
  async showDebugLog() {
2321
2411
  if (!this.debugPanel) {
2322
2412
  const { installDebugPanel: e } = await import("./index-DCXX1ZJG.js");
2323
- this.debugPanel ?? (this.debugPanel = e({ containerEl: this.videoArea, i18n: this.i18n, log: this.log, version: M }));
2413
+ this.debugPanel ?? (this.debugPanel = e({ containerEl: this.videoArea, i18n: this.i18n, log: this.log, version: z }));
2324
2414
  }
2325
2415
  this.debugPanel.show();
2326
2416
  }
@@ -2333,7 +2423,7 @@ class ge extends HTMLElement {
2333
2423
  videoEl: this.videoEl,
2334
2424
  containerEl: this.videoArea,
2335
2425
  i18n: this.i18n,
2336
- version: M,
2426
+ version: z,
2337
2427
  getEngine: () => this.sourceManager.engine,
2338
2428
  getHls: () => this.sourceManager.hlsInstance
2339
2429
  }));
@@ -2391,22 +2481,25 @@ class ge extends HTMLElement {
2391
2481
  })), this.pluginApplyRun;
2392
2482
  }
2393
2483
  async applyOptions(e) {
2394
- var n, a, l, d, m, c, h, p, u, b, g, v, y, f, k, C;
2395
- 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 ?? se, this.tapToPlay = e.tapToPlay ?? "auto", this.cursorHideDelayMs = e.cursorHideDelayMs === !1 ? null : e.cursorHideDelayMs ?? re, this.cursorHideDelayMs === null && this.showCursor(), e.miniProgress && !this.miniProgress ? (this.miniProgress = new rt(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();
2396
- const i = e.keyboardSeekStep && e.keyboardSeekStep > 0 ? e.keyboardSeekStep : Ct;
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;
2397
2487
  this.keyboard.seekStep = i, this.controlBar.seekBar.keyboardStep = i;
2398
2488
  const r = e.skipButtons === !0 ? {} : e.skipButtons || null;
2399
2489
  this.controlBar.setSkipButtons(
2400
- r && r.back !== !1 ? r.back ?? ne : null,
2401
- r && r.forward !== !1 ? r.forward ?? ne : null
2402
- ), e.showRemainingTime !== void 0 && e.showRemainingTime !== this.appliedShowRemaining && (this.appliedShowRemaining = e.showRemainingTime, this.controlBar.setShowRemaining(e.showRemainingTime)), e.theme ? this.setAttribute("data-theme", e.theme) : this.removeAttribute("data-theme"), this.localeCode = e.locale ?? "tr", gt(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(), (a = this.playlistRunner) == null || a.refreshLabels(), (l = this.hopeStory) == null || l.refreshLabels(), (d = this.countdownScreen) == null || d.refreshLabels(), (m = this.geoChecker) == null || m.refreshLabels(), (c = this.redirectScreen) == null || c.refreshLabels(), (h = this.qrResume) == null || h.refreshLabels(), (p = this.pauseAd) == null || p.refreshLabels(), (u = this.dubbing) == null || u.refreshLabels(), this.onStreamAudioTracks(this.streamAudio.tracks, this.streamAudio.active), (b = this.statsPanel) == null || b.refreshLabels(), (g = this.debugPanel) == null || g.refreshLabels(), (v = this.liveWallClock) == null || v.refreshLabels(), (y = this.loopSection) == null || y.refreshLabels(), (f = this.markProgress) == null || f.refreshLabels(), (C = (k = this.unregisterSticky) == null ? void 0 : k.refreshLabels) == null || C.call(k), this.bootResolved && await this.queuePluginApply(e);
2490
+ r && r.back !== !1 ? r.back ?? le : null,
2491
+ r && r.forward !== !1 ? r.forward ?? le : null
2492
+ ), 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);
2403
2495
  }
2404
2496
  /** applyOptions'ın asenkron kısmı — yalnızca queuePluginApply üzerinden, sırayla çalışır. */
2405
2497
  async applyPluginsAndPlayback(e) {
2406
2498
  if (e.ads && !this.adsController) {
2407
2499
  const r = e.ads === !0 ? {} : e.ads;
2408
- ft(r) && !this.prerollGate.isArmed && this.prerollGate.arm(r.prerollTimeoutMs ?? N), kt(), e.countdownScreen || this.installAdsOnce(e);
2500
+ vt(r) && !this.prerollGate.isArmed && this.prerollGate.arm(r.prerollTimeoutMs ?? H), kt(), e.countdownScreen || this.installAdsOnce(e);
2409
2501
  }
2502
+ await this.applyAudioMode(e);
2410
2503
  const i = () => ({
2411
2504
  videoEl: this.videoEl,
2412
2505
  overlayContainerEl: this.videoArea,
@@ -2428,15 +2521,11 @@ class ge extends HTMLElement {
2428
2521
  }))) : await this.initPlayback(e);
2429
2522
  }
2430
2523
  async initPlayback(e) {
2431
- var r, n, a, l, d, m, c;
2524
+ var o, n, l, d, u, c, b;
2432
2525
  this.sourceManager.configure(e.hls), this.errorScreen.dismiss();
2433
- const i = (r = e.sources) != null && r.length ? e.sources : e.src ? [{ src: e.src, label: this.i18n.autoQuality }] : [];
2434
- if (i.length <= 1 && (this.controlBar.setQualities([], ""), this.hlsQualitiesShown = !1), i.length > 0) {
2435
- const h = i.find((p) => p.selected) ?? i[0];
2436
- await this.sourceManager.load(h.src, h.type), e.autoplay && this.videoEl.play().catch(() => {
2437
- });
2438
- }
2439
- if (i.length > 1 && this.controlBar.setQualities(
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(
2440
2529
  i.map((h) => ({
2441
2530
  label: h.label,
2442
2531
  onSelect: () => void this.switchQualitySource(h)
@@ -2456,7 +2545,7 @@ class ge extends HTMLElement {
2456
2545
  videoEl: this.videoEl,
2457
2546
  seekBarEl: this.controlBar.seekBar.el,
2458
2547
  markers: this.controlBar.seekBar,
2459
- addControlButton: (u, b, g) => this.controlBar.addButton(u, b, g),
2548
+ addControlButton: (m, g, v) => this.controlBar.addButton(m, g, v),
2460
2549
  i18n: this.i18n
2461
2550
  },
2462
2551
  h
@@ -2485,19 +2574,19 @@ class ge extends HTMLElement {
2485
2574
  );
2486
2575
  }
2487
2576
  if (e.playlist && !this.playlistRunner) {
2488
- const { installPlaylist: h } = await import("./index-C3s21eZa.js");
2577
+ const { installPlaylist: h } = await import("./index-DtqNHU7Y.js");
2489
2578
  this.playlistRunner = h(
2490
2579
  {
2491
2580
  videoEl: this.videoEl,
2492
2581
  hostEl: this,
2493
2582
  panelEl: this.getOrCreatePanelContainer(),
2494
- loadSource: (p, u) => this.sourceManager.load(p, u),
2583
+ loadSource: (p, m) => this.sourceManager.load(p, m),
2495
2584
  setPoster: (p) => {
2496
2585
  this.videoEl.poster = p;
2497
2586
  },
2498
2587
  requestFreshAd: (p) => {
2499
- var u;
2500
- return (u = this.adsController) == null ? void 0 : u.resetForNewItem(p);
2588
+ var m;
2589
+ return (m = this.adsController) == null ? void 0 : m.resetForNewItem(p);
2501
2590
  },
2502
2591
  i18n: this.i18n
2503
2592
  },
@@ -2505,20 +2594,20 @@ class ge extends HTMLElement {
2505
2594
  );
2506
2595
  }
2507
2596
  if (e.story && !this.hopeStory) {
2508
- const { installStory: h } = await import("./index-_-pYIxvh.js");
2597
+ const { installStory: h } = await import("./index-Dy0Th0is.js");
2509
2598
  this.hopeStory = h(
2510
2599
  {
2511
2600
  videoEl: this.videoEl,
2512
2601
  hostEl: this,
2513
2602
  videoAreaEl: this.videoArea,
2514
2603
  playerBodyEls: [this.root.querySelector(".media-layer"), this.chromeEl, this.centerPlayButton],
2515
- loadSource: (p, u) => this.sourceManager.load(p, u),
2604
+ loadSource: (p, m) => this.sourceManager.load(p, m),
2516
2605
  setPoster: (p) => {
2517
2606
  this.videoEl.poster = p;
2518
2607
  },
2519
2608
  requestFreshAd: (p) => {
2520
- var u;
2521
- return (u = this.adsController) == null ? void 0 : u.resetForNewItem(p);
2609
+ var m;
2610
+ return (m = this.adsController) == null ? void 0 : m.resetForNewItem(p);
2522
2611
  },
2523
2612
  i18n: this.i18n
2524
2613
  },
@@ -2526,23 +2615,23 @@ class ge extends HTMLElement {
2526
2615
  );
2527
2616
  }
2528
2617
  if (e.markers && !this.markProgress) {
2529
- const { installMarkers: h } = await import("./index-adiWYyto.js");
2618
+ const { installMarkers: h } = await import("./index-DcVUXkXo.js");
2530
2619
  this.markProgress = h(
2531
2620
  {
2532
2621
  videoEl: this.videoEl,
2533
2622
  overlayContainerEl: this.videoArea,
2534
- addSeekBarMarker: (p, u) => this.controlBar.seekBar.addMarker(p, u),
2623
+ addSeekBarMarker: (p, m) => this.controlBar.seekBar.addMarker(p, m),
2535
2624
  i18n: this.i18n
2536
2625
  },
2537
2626
  e.markers
2538
2627
  );
2539
2628
  }
2540
- if ((a = e.segments) != null && a.length && !this.segments) {
2541
- const { installSegments: h } = await import("./index-nvfNBIM_.js");
2629
+ if ((l = e.segments) != null && l.length && !this.segments) {
2630
+ const { installSegments: h } = await import("./index-C2c71cGP.js");
2542
2631
  this.segments = h({ videoEl: this.videoEl, seekBar: this.controlBar.seekBar }, e.segments);
2543
2632
  }
2544
2633
  if (e.spriteThumbnails && !this.spriteThumbnails) {
2545
- const { installSpriteThumbnails: h } = await import("./index-DBwvWiuK.js");
2634
+ const { installSpriteThumbnails: h } = await import("./index-BTBAxNjr.js");
2546
2635
  this.spriteThumbnails = h(
2547
2636
  {
2548
2637
  videoEl: this.videoEl,
@@ -2577,7 +2666,7 @@ class ge extends HTMLElement {
2577
2666
  {
2578
2667
  areaEl: this.videoArea,
2579
2668
  seekBy: (p) => {
2580
- this.controlBar.seekBar.el.style.pointerEvents !== "none" && (ae(this.videoEl, p), this.seekFeedback.show(p));
2669
+ this.controlBar.seekBar.el.style.pointerEvents !== "none" && (pe(this.videoEl, p), this.seekFeedback.show(p));
2581
2670
  },
2582
2671
  togglePlay: () => this.videoEl.paused ? void this.videoEl.play().catch(() => {
2583
2672
  }) : this.videoEl.pause(),
@@ -2593,7 +2682,7 @@ class ge extends HTMLElement {
2593
2682
  const { DEFAULT_TAP_GESTURES: h } = await import("./index-C5oGMHF_.js");
2594
2683
  this.tapGestures.setGestures(e.tapGestures === !0 ? h : e.tapGestures || []);
2595
2684
  }
2596
- if ((l = e.pauseAd) != null && l.adUnitPath && !this.pauseAd) {
2685
+ if ((d = e.pauseAd) != null && d.adUnitPath && !this.pauseAd) {
2597
2686
  const { installPauseAd: h } = await import("./index-CaMVTgh0.js");
2598
2687
  this.pauseAd = h(
2599
2688
  { videoEl: this.videoEl, hostEl: this, videoArea: this.videoArea, i18n: this.i18n, isBlocked: () => this.isChromeBlocked },
@@ -2605,7 +2694,7 @@ class ge extends HTMLElement {
2605
2694
  this.dubbing = h(
2606
2695
  {
2607
2696
  videoEl: this.videoEl,
2608
- loadSource: (p, u) => this.sourceManager.load(p, u),
2697
+ loadSource: (p, m) => this.sourceManager.load(p, m),
2609
2698
  registerSubmenu: (p) => this.controlBar.settingsMenu.registerSubmenu(p),
2610
2699
  unregisterSubmenu: (p) => this.controlBar.settingsMenu.unregisterSubmenu(p),
2611
2700
  i18n: this.i18n
@@ -2619,14 +2708,14 @@ class ge extends HTMLElement {
2619
2708
  {
2620
2709
  videoEl: this.videoEl,
2621
2710
  seekBarEl: this.controlBar.seekBar.el,
2622
- addControlElement: (u) => this.controlBar.addElement(u),
2711
+ addControlElement: (m) => this.controlBar.addElement(m),
2623
2712
  i18n: this.i18n,
2624
2713
  getPlayingDate: () => {
2625
- var v, y, f;
2626
- const u = (v = this.sourceManager.hlsInstance) == null ? void 0 : v.playingDate;
2627
- if (u) return u;
2628
- const b = (f = (y = this.videoEl).getStartDate) == null ? void 0 : f.call(y), g = (b == null ? void 0 : b.getTime()) ?? NaN;
2629
- return Number.isFinite(g) && g > 0 ? new Date(g + this.videoEl.currentTime * 1e3) : null;
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;
2630
2719
  }
2631
2720
  },
2632
2721
  h
@@ -2646,7 +2735,7 @@ class ge extends HTMLElement {
2646
2735
  e.dai
2647
2736
  );
2648
2737
  }
2649
- (d = e.subtitles) != null && d.length ? this.optionTracks = We(this.videoEl, e.subtitles) : (ce(this.videoEl), this.optionTracks = []), this.rebuildCaptions(((c = (m = e.subtitles) == null ? void 0 : m.find((h) => h.default)) == null ? void 0 : c.label) ?? null);
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);
2650
2739
  }
2651
2740
  /** Altyazı menüsünü `options.subtitles` + yayın izlerinden kurar; `activeLabel` varsa onu seçer. */
2652
2741
  rebuildCaptions(e) {
@@ -2654,17 +2743,17 @@ class ge extends HTMLElement {
2654
2743
  this.selectCaption = null, this.activeCaptionLabel = null, this.controlBar.setCaptions([], this.i18n.captionsOff), this.captionRenderer.setActiveTrack(null), this.captionTrackActive = !1, this.controlBar.settingsMenu.setCaptionAppearance(null), this.sourceManager.selectTextTrack(null);
2655
2744
  return;
2656
2745
  }
2657
- const i = (n) => {
2746
+ const i = (o) => {
2658
2747
  var l;
2659
- const a = Xe(this.subtitleTracks, n);
2660
- this.activeCaptionLabel = a ? n : null, this.sourceManager.selectTextTrack(((l = this.streamTracks.find((d) => d.label === n)) == null ? void 0 : l.id) ?? null), this.captionRenderer.setActiveTrack(a), this.captionTrackActive = a !== null, this.controlBar.settingsMenu.setActiveCaption(a ? n : this.i18n.captionsOff), this.controlBar.settingsMenu.setCaptionAppearance(a !== null ? this.buildCaptionAppearance() : null);
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);
2661
2750
  };
2662
2751
  this.selectCaption = i;
2663
- const r = e && this.subtitleTracks.some((n) => n.label === e) ? e : null;
2752
+ const r = e && this.subtitleTracks.some((o) => o.label === e) ? e : null;
2664
2753
  this.controlBar.setCaptions(
2665
2754
  [
2666
2755
  { label: this.i18n.captionsOff, onSelect: () => i(null) },
2667
- ...this.subtitleTracks.map(({ label: n }) => ({ label: n, onSelect: () => i(n) }))
2756
+ ...this.subtitleTracks.map(({ label: o }) => ({ label: o, onSelect: () => i(o) }))
2668
2757
  ],
2669
2758
  r ?? this.i18n.captionsOff
2670
2759
  ), i(r);
@@ -2676,24 +2765,24 @@ class ge extends HTMLElement {
2676
2765
  streamTrackLabel(e, i) {
2677
2766
  if (!(!e || e.toLowerCase() === i.toLowerCase() || /^(stream|audio|track|text|sub|subtitle|und)[\s_-]*\d*$/i.test(e)) || !i || i === "und") return e || i;
2678
2767
  try {
2679
- const n = new Intl.DisplayNames([this.localeCode], { type: "language" }).of(i);
2680
- if (n) return n.charAt(0).toLocaleUpperCase(this.localeCode) + n.slice(1);
2768
+ const o = new Intl.DisplayNames([this.localeCode], { type: "language" }).of(i);
2769
+ if (o) return o.charAt(0).toLocaleUpperCase(this.localeCode) + o.slice(1);
2681
2770
  } catch {
2682
2771
  }
2683
2772
  return e || i;
2684
2773
  }
2685
2774
  /** Aynı adlı iz varsa (ör. options.subtitles'ta da "English") dil/sırayla ayırt edilir. */
2686
2775
  uniqueLabel(e, i, r) {
2687
- const n = r.has(e) ? `${e} (${i})` : e;
2688
- return r.add(n), n;
2776
+ const o = r.has(e) ? `${e} (${i})` : e;
2777
+ return r.add(o), o;
2689
2778
  }
2690
2779
  /** 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). */
2691
2780
  buildCaptionAppearance() {
2692
- const e = ["small", "normal", "large"], i = (r, n, a, l) => r.map((d, m) => ({
2781
+ const e = ["small", "normal", "large"], i = (r, o, n, l) => r.map((d, u) => ({
2693
2782
  value: d,
2694
- active: n() === d,
2695
- ariaLabel: `${l} ${m + 1}`,
2696
- onSelect: () => a(d)
2783
+ active: o() === d,
2784
+ ariaLabel: `${l} ${u + 1}`,
2785
+ onSelect: () => n(d)
2697
2786
  }));
2698
2787
  return {
2699
2788
  sizeLabel: this.i18n.captionSize,
@@ -2704,14 +2793,14 @@ class ge extends HTMLElement {
2704
2793
  })),
2705
2794
  bgColorLabel: this.i18n.captionBgColor,
2706
2795
  getBgColorOptions: () => i(
2707
- S.BG_COLOR_PRESETS,
2796
+ M.BG_COLOR_PRESETS,
2708
2797
  () => this.captionRenderer.getBgColor(),
2709
2798
  (r) => this.captionRenderer.setBgColor(r),
2710
2799
  this.i18n.captionBgColor
2711
2800
  ),
2712
2801
  textColorLabel: this.i18n.captionTextColor,
2713
2802
  getTextColorOptions: () => i(
2714
- S.TEXT_COLOR_PRESETS,
2803
+ M.TEXT_COLOR_PRESETS,
2715
2804
  () => this.captionRenderer.getTextColor(),
2716
2805
  (r) => this.captionRenderer.setTextColor(r),
2717
2806
  this.i18n.captionTextColor
@@ -2735,9 +2824,10 @@ class ge extends HTMLElement {
2735
2824
  return this.videoEl;
2736
2825
  }
2737
2826
  requestFullscreenCompat() {
2827
+ if (this.audioMode) return;
2738
2828
  const e = this, i = () => {
2739
- var r, n;
2740
- return (n = (r = this.iosVideo).webkitEnterFullscreen) == null ? void 0 : n.call(r);
2829
+ var r, o;
2830
+ return (o = (r = this.iosVideo).webkitEnterFullscreen) == null ? void 0 : o.call(r);
2741
2831
  };
2742
2832
  e.requestFullscreen ? e.requestFullscreen().catch(i) : e.webkitRequestFullscreen ? e.webkitRequestFullscreen() : i();
2743
2833
  }
@@ -2782,20 +2872,20 @@ class ge extends HTMLElement {
2782
2872
  * alanın ortasına alınır, sığmazsa küçülür (en az 40px).
2783
2873
  */
2784
2874
  layoutCenterPlay() {
2785
- const e = this.videoArea, i = e.getBoundingClientRect(), r = this.controlBar.seekBar.el.getBoundingClientRect(), n = () => {
2875
+ const e = this.videoArea, i = e.getBoundingClientRect(), r = this.controlBar.seekBar.el.getBoundingClientRect(), o = () => {
2786
2876
  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");
2787
2877
  };
2788
- if (!i.height || !r.height || !e.hasAttribute("data-compact")) return n();
2789
- const a = 64, l = r.top - i.top - 8;
2790
- if (i.height / 2 + a / 2 <= l) return n();
2791
- const d = Math.max(40, Math.min(56, l - 12)), m = Math.max(d / 2 + 6, l - d / 2), c = Math.round(m - i.height / 2);
2792
- let h = 0;
2793
- const p = this.controlBar.topEl.getBoundingClientRect();
2794
- if (p.width > 0 && m - d / 2 < p.bottom - i.top) {
2795
- const u = p.left - i.left - 8 - d / 2;
2796
- i.width / 2 > u && (h = Math.round(Math.max(d / 2 + 8, u) - i.width / 2));
2797
- }
2798
- e.setAttribute("data-center-play-shifted", ""), e.style.setProperty("--hp-center-play-shift-x", `${h}px`), e.style.setProperty("--hp-center-play-size", `${d}px`), e.style.setProperty("--hp-center-play-shift", `${c}px`);
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`);
2799
2889
  }
2800
2890
  /** Dar player'da dokunmatikte oynat/duraklat yerine kontrolleri göster/gizle (options.tapToPlay). */
2801
2891
  tapTogglesPlay(e) {
@@ -2853,13 +2943,42 @@ class ge extends HTMLElement {
2853
2943
  showCursor() {
2854
2944
  this.cursorTimer && clearTimeout(this.cursorTimer), this.cursorTimer = null, this.removeAttribute("data-cursor-hidden");
2855
2945
  }
2946
+ /** options.audio: sahneyi kurar, günceller (konum / boyut / devir canlı değişebilir) ya da kaldırır. */
2947
+ async applyAudioMode(e) {
2948
+ var r;
2949
+ const i = e.audio ? e.audio === !0 ? {} : e.audio : null;
2950
+ 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;
2952
+ return;
2953
+ }
2954
+ if (this.hideTimer && clearTimeout(this.hideTimer), this.hideTimer = null, this.isChromeBlocked || this.showChrome(), this.audioStage)
2955
+ this.audioStage.update(i);
2956
+ else {
2957
+ const { installAudioStage: o } = await import("./index-BeJNpAyx.js");
2958
+ if (!this.audioMode) return;
2959
+ this.audioStage ?? (this.audioStage = o(
2960
+ {
2961
+ videoEl: this.videoEl,
2962
+ layerEl: this.root.querySelector(".media-layer"),
2963
+ poster: () => this._options.poster ?? this.getAttribute("poster") ?? void 0,
2964
+ togglePlay: () => this.videoEl.paused ? void this.play().catch(() => {
2965
+ }) : this.videoEl.pause(),
2966
+ play: () => void this.play().catch(() => {
2967
+ }),
2968
+ i18n: this.i18n,
2969
+ setBarMeta: (n) => this.controlBar.setAudioBar(n)
2970
+ },
2971
+ i
2972
+ ));
2973
+ }
2974
+ }
2856
2975
  /** Ads plugin'ini bir kez kurar; erken (paralel) başlatılan kurulum varsa onu bekler. */
2857
2976
  installAdsOnce(e) {
2858
2977
  if (!e.ads || this.adsController) return Promise.resolve();
2859
2978
  if (!this.adsInstall) {
2860
2979
  const i = e.ads === !0 ? {} : e.ads;
2861
2980
  this.adsInstall = (async () => {
2862
- const { installAds: r } = await import("./index-Br_RybXV.js");
2981
+ const { installAds: r } = await import("./index-BCMVXNL0.js");
2863
2982
  this.adsController = await r(
2864
2983
  {
2865
2984
  videoEl: this.videoEl,
@@ -2873,13 +2992,18 @@ class ge extends HTMLElement {
2873
2992
  onAdPlayStateChange: () => this.controlBar.refreshAdPlayState(),
2874
2993
  locale: this.localeCode,
2875
2994
  prerollGate: this.prerollGate,
2876
- log: (n) => this.log.add({ source: "ads", ...n }),
2877
- onAdProgress: (n) => this.controlBar.setAdInfo(n),
2995
+ log: (o) => this.log.add({ source: "ads", ...o }),
2996
+ onAdProgress: (o) => this.controlBar.setAdInfo(o),
2878
2997
  // Sürekli oynatma (vconp): playlist / story bir sonraki içeriği kendiliğinden başlatıyorsa.
2879
2998
  isContinuousPlayback: () => {
2880
- const n = this._options, a = (l) => !!l && l.autoplayNext !== !1;
2881
- return a(n.playlist) || a(n.story);
2999
+ const o = this._options, n = (l) => !!l && l.autoplayNext !== !1;
3000
+ return n(o.playlist) || n(o.story);
2882
3001
  },
3002
+ audioPoster: (() => {
3003
+ if (!e.audio) return;
3004
+ const o = e.audio === !0 ? {} : e.audio;
3005
+ return o.adPoster ? new URL(o.adPoster, document.baseURI).href : void 0;
3006
+ })(),
2883
3007
  surface: {
2884
3008
  videoEl: this.videoEl,
2885
3009
  containerEl: this.videoArea,
@@ -2911,12 +3035,12 @@ class ge extends HTMLElement {
2911
3035
  }
2912
3036
  }
2913
3037
  /** Paket sürümü (ör. "1.0.4"). */
2914
- s(ge, "version", M);
2915
- typeof window < "u" && !customElements.get("hope-player") && customElements.define("hope-player", ge);
3038
+ s(ye, "version", z);
3039
+ typeof window < "u" && !customElements.get("hope-player") && customElements.define("hope-player", ye);
2916
3040
  export {
2917
- M as H,
2918
- ge as a,
2919
- w as c,
2920
- x as f
3041
+ z as H,
3042
+ ye as a,
3043
+ E as c,
3044
+ w as f
2921
3045
  };
2922
- //# sourceMappingURL=index-D2aXO0eh.js.map
3046
+ //# sourceMappingURL=index-Dz0E1YPE.js.map