@hopeplayer/core 1.0.12 → 1.0.13

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-D2aXO0eh.js → index-01P9jpUY.js} +545 -455
  6. package/dist/chunks/index-01P9jpUY.js.map +1 -0
  7. package/dist/chunks/{index-adiWYyto.js → index-048h1-5X.js} +2 -2
  8. package/dist/chunks/{index-adiWYyto.js.map → index-048h1-5X.js.map} +1 -1
  9. package/dist/chunks/{index-nvfNBIM_.js → index-9NzklChR.js} +2 -2
  10. package/dist/chunks/{index-nvfNBIM_.js.map → index-9NzklChR.js.map} +1 -1
  11. package/dist/chunks/{index-Br_RybXV.js → index-BCMVXNL0.js} +71 -61
  12. package/dist/chunks/index-BCMVXNL0.js.map +1 -0
  13. package/dist/chunks/{index-_-pYIxvh.js → index-BO0tjMR6.js} +2 -2
  14. package/dist/chunks/{index-_-pYIxvh.js.map → index-BO0tjMR6.js.map} +1 -1
  15. package/dist/chunks/index-BgJJr55r.js +311 -0
  16. package/dist/chunks/index-BgJJr55r.js.map +1 -0
  17. package/dist/chunks/{index-C3s21eZa.js → index-CP1Y6U0c.js} +2 -2
  18. package/dist/chunks/{index-C3s21eZa.js.map → index-CP1Y6U0c.js.map} +1 -1
  19. package/dist/chunks/{index-DBwvWiuK.js → index-n-1IIClr.js} +2 -2
  20. package/dist/chunks/{index-DBwvWiuK.js.map → index-n-1IIClr.js.map} +1 -1
  21. package/dist/controls/ControlBar.d.ts +4 -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 +3 -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 +80 -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 +58 -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 ve = Object.defineProperty;
2
+ var ye = (n, t, e) => t in n ? ve(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e;
3
+ var s = (n, t, e) => ye(n, typeof t != "symbol" ? t + "" : t, e);
4
+ const ke = '/*! 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: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;container-type:size}@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;container-type:size}.hp-audio[data-meta] .hp-audio-area{top:44px}.hp-audio-deck{--hp-deck-h:min(calc(var(--hp-vinyl-size,.78) * 100cqh), 62cqw);height:var(--hp-deck-h);align-items:center;display:flex;position:relative}.hp-audio[data-position=center] .hp-audio-deck,.hp-audio[data-position=none] .hp-audio-deck{--hp-deck-h:min(calc(var(--hp-vinyl-size,.78) * 100cqh), 90cqw)}.hp-audio[data-position=left] .hp-audio-deck{flex-direction:row-reverse}.hp-audio-sleeve{z-index:2;aspect-ratio:1;background:radial-gradient(70% 70% at 30% 25%,var(--hp-color-accent,#e5484d),transparent 75%),#26262d;border-radius:6px;flex:none;height:100%;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;aspect-ratio:1;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;height:96%;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-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 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}}@container (max-height:230px){.hp-audio[data-meta] .hp-audio-meta{display:none}.hp-audio[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}@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 V() {
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 n = navigator.userAgent, t = /iP(hone|od|ad)/.test(n) || navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1, e = /^((?!chrome|chromium|android|crios|fxios|edg|opr).)*safari/i.test(n);
8
8
  return t || e;
9
9
  }
10
- function V() {
11
- const o = window;
12
- return typeof o.MediaSource < "u" || typeof o.ManagedMediaSource < "u";
10
+ function G() {
11
+ const n = window;
12
+ return typeof n.MediaSource < "u" || typeof n.ManagedMediaSource < "u";
13
13
  }
14
- function ke(o, t) {
14
+ function xe(n, t) {
15
15
  var i;
16
16
  const e = (i = t == null ? void 0 : t.split(";")[0]) == null ? void 0 : i.trim().toLowerCase();
17
- return e === "application/vnd.apple.mpegurl" || e === "application/x-mpegurl" || /\.m3u8(?:$|[?#])/i.test(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(n) ? "hls" : e === "video/mp4" || /\.mp4(?:$|[?#])/i.test(n) ? "mp4" : "unknown";
18
18
  }
19
- class xe {
19
+ class we {
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 = xe(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 && (V() || !G())) {
55
+ this.loadNativeHls(t, V() ? "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 (!G() || this.engineInfo.reason === "hlsjs-failed" || this.engineInfo.reason === "option") return;
77
81
  const e = () => r(), i = () => {
78
82
  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));
83
+ const o = ((a = this.video.error) == null ? void 0 : a.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, b, 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,
121
- reason: f.reason ?? ((g = f.error) == null ? void 0 : g.message)
123
+ url: f.url ?? ((h = f.frag) == null ? void 0 : h.url) ?? ((p = f.context) == null ? void 0 : p.url),
124
+ httpStatus: (m = f.response) == null ? void 0 : m.code,
125
+ reason: f.reason ?? ((b = f.error) == null ? void 0 : b.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 g = [e.ErrorDetails.MANIFEST_LOAD_ERROR, e.ErrorDetails.MANIFEST_LOAD_TIMEOUT].includes(c.details);
130
+ if (!r && g && 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 a = () => i.levels.map((u, c) => ({ index: c, height: u.height, bitrate: u.bitrate }));
137
141
  i.on(e.Events.MANIFEST_PARSED, () => {
138
142
  r = !0, this.callbacks.onLevelsChanged(a(), i.currentLevel);
139
- }), i.on(e.Events.LEVEL_SWITCHED, (m, c) => {
143
+ }), i.on(e.Events.LEVEL_SWITCHED, (u, c) => {
140
144
  this.callbacks.onLevelsChanged(a(), i.autoLevelEnabled ? -1 : c.level);
141
145
  });
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) ?? "" });
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 g;
149
+ for (const h of c.tracks) {
150
+ const p = h.subtitleTrack, m = p ? `sub:${p.id}` : `cc:${h._id ?? h.label}`, b = h.kind === "captions" ? "captions" : "subtitles";
151
+ this.streamTextTracks.set(m, { id: m, kind: b, label: h.label, lang: (p == null ? void 0 : p.lang) ?? ((g = h.closedCaptions) == null ? void 0 : g.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 g = c.type === "subtitles" && c.subtitleTrack ? `sub:${c.subtitleTrack.id}` : `cc:${c.track}`;
156
+ this.callbacks.onCues(g, 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) => {
163
+ e.xhrSetup = (o, a, l) => (o.withCredentials = !0, i == null ? void 0 : i(o, a, l)), e.fetchSetup = (o, a) => {
160
164
  const l = { ...a, credentials: "include" };
161
- return r ? r(n, l) : new Request(n.url, l);
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(n) {
203
+ if (!Number.isFinite(n) || n < 0) return "0:00";
204
+ const t = Math.floor(n), e = Math.floor(t / 3600), i = Math.floor(t % 3600 / 60), r = t % 60, o = e > 0 ? String(i).padStart(2, "0") : String(i), a = String(r).padStart(2, "0");
205
+ return e > 0 ? `${e}:${o}:${a}` : `${o}:${a}`;
202
206
  }
203
- const we = 10, Ee = 1;
204
- class Ce {
207
+ const Ee = 10, Ce = 1;
208
+ class Te {
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, a = Math.min(Math.max(this.layoutXAtClientX(t.clientX) - o / 2, 0), Math.max(this.trackWidth - o, 0));
239
+ this.hoverTimeEl.style.transform = `translateX(${a}px)`;
236
240
  });
237
241
  s(this, "onHoverLeave", () => {
238
242
  this.hoverTimeEl.removeAttribute("data-visible"), this.hoverDotEl.removeAttribute("data-visible");
@@ -273,14 +277,14 @@ 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 a = 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(a)})`;
284
288
  }
285
289
  else
286
290
  this.playedEl.style.transform = `scaleX(${r})`, this.bufferedEl.style.transform = `scaleX(${a})`;
@@ -289,8 +293,8 @@ class Ce {
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 >= Ee ? { 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], a = o ? o.left : 1 / 0;
325
+ if (e < a || !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`;
341
- const n = document.createElement("div");
342
- n.className = "hp-chapter-fill hp-chapter-buffered";
345
+ const o = document.createElement("div");
346
+ o.className = "hp-chapter-fill hp-chapter-buffered";
343
347
  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 a.className = "hp-chapter-fill hp-chapter-played", i.color && (a.style.background = i.color), r.append(o, a), e.appendChild(r), { ...i, el: r, bufferedEl: o, playedEl: a, left: 0, width: 0 };
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 - Ce) : 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,14 +395,14 @@ 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(n, 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-${n}${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 L(n, t) {
403
+ n.className = n.className.replace(/hp-icon-[\w-]+/, `hp-icon-${t}`);
387
404
  }
388
- const L = 0.05, Te = 150;
405
+ const M = 0.05, Se = 150;
389
406
  class Ae {
390
407
  constructor(t, e, i) {
391
408
  s(this, "el");
@@ -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
+ }, Se);
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 ? M : -M)))), 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 ? M : -M)));
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 ? L(this.iconEl, "volume-muted") : t < 0.5 ? L(this.iconEl, "volume-low") : L(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 Le = 8, R = 8, Pe = 100, q = 256;
510
+ class Me {
494
511
  constructor(t, e, i) {
495
512
  s(this, "el");
496
513
  s(this, "button");
@@ -518,19 +535,22 @@ class Pe {
518
535
  if (!this.open) return;
519
536
  const t = this.el.closest(".video-area");
520
537
  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`;
538
+ const e = t.getBoundingClientRect(), i = this.button.getBoundingClientRect(), r = this.el.getBoundingClientRect(), o = !!this.el.closest(".hp-top-bar");
539
+ this.panel.toggleAttribute("data-drop", o), Object.assign(this.panel.style, { top: "", bottom: "", marginTop: "", marginBottom: "" });
540
+ const a = this.panel.scrollHeight, l = (o ? e.bottom - i.bottom : i.top - e.top) - Le - R;
541
+ if (a <= l || l >= Pe) {
542
+ this.panel.style.maxHeight = `${Math.min(q, l)}px`;
526
543
  return;
527
544
  }
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" });
545
+ this.panel.style.maxHeight = `${Math.min(q, e.height - 2 * R)}px`, o ? Object.assign(this.panel.style, { top: `${e.top + R - r.top}px`, marginTop: "0" }) : Object.assign(this.panel.style, { bottom: `${r.bottom - (e.bottom - R)}px`, marginBottom: "0" });
529
546
  });
530
547
  s(this, "onDocumentClick", (t) => {
531
548
  this.open && !t.composedPath().includes(this.el) && this.close();
532
549
  });
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) => {
550
+ s(this, "backToCaptionSettings", () => {
551
+ this.currentPanel = "captions-settings", this.renderCaptionSettings();
552
+ });
553
+ 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
554
  r.stopPropagation(), this.toggle();
535
555
  }), document.addEventListener("click", this.onDocumentClick, !0), this.renderMain();
536
556
  }
@@ -546,7 +566,7 @@ class Pe {
546
566
  }
547
567
  /** Altyazı AÇIKKEN "Altyazı" alt menüsüne eklenecek Boyut/Renk/Konum satırları — `null` kaldırır. */
548
568
  setCaptionAppearance(t) {
549
- this.captionAppearance = t, (this.currentPanel === "captions" || this.currentPanel === "captions-size" || this.currentPanel === "captions-bg" || this.currentPanel === "captions-text") && this.render();
569
+ 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
570
  }
551
571
  /** Ana menüye tek aç/kapa satırı ekler (ör. QrResume). */
552
572
  setQrResumeToggle(t) {
@@ -587,7 +607,7 @@ class Pe {
587
607
  }
588
608
  backRow(t, e) {
589
609
  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"));
610
+ 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
611
  const r = document.createElement("span");
592
612
  return r.textContent = t, i.appendChild(r), i.addEventListener("click", e), i;
593
613
  }
@@ -596,6 +616,7 @@ class Pe {
596
616
  else if (this.currentPanel === "speed") this.renderSpeed();
597
617
  else if (this.currentPanel === "quality") this.renderQuality();
598
618
  else if (this.currentPanel === "captions") this.renderCaptions();
619
+ else if (this.currentPanel === "captions-settings") this.renderCaptionSettings();
599
620
  else if (this.currentPanel === "captions-size") this.renderCaptionsSize();
600
621
  else if (this.currentPanel === "captions-bg") this.renderCaptionColorPanel("bg");
601
622
  else if (this.currentPanel === "captions-text") this.renderCaptionColorPanel("text");
@@ -673,30 +694,47 @@ class Pe {
673
694
  );
674
695
  }
675
696
  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();
697
+ const t = document.createElement("div");
698
+ t.className = "hp:my-1 hp:border-t hp:border-on-surface/10", t.setAttribute("role", "separator"), this.panel.appendChild(t), this.panel.appendChild(
699
+ this.row(this.labels.captionSettings, "", () => {
700
+ this.currentPanel = "captions-settings", this.renderCaptionSettings();
692
701
  })
693
702
  );
694
703
  }
695
704
  }
705
+ /** Altyazı → Altyazı ayarları: boyut, arka plan / yazı rengi, konumu sıfırla — her satırda o anki değer. */
706
+ renderCaptionSettings() {
707
+ var i, r, o;
708
+ this.panel.innerHTML = "", this.panel.appendChild(
709
+ this.backRow(this.labels.captionSettings, () => {
710
+ this.currentPanel = "captions", this.renderCaptions();
711
+ })
712
+ );
713
+ const t = this.captionAppearance;
714
+ if (!t) return;
715
+ const e = (a) => a ? `<span class="hp:inline-block hp:w-3 hp:h-3 hp:rounded-full hp:border hp:border-on-surface/30" style="background:${a}"></span>` : "";
716
+ this.panel.appendChild(
717
+ this.row(t.sizeLabel, ((i = t.getSizeOptions().find((a) => a.active)) == null ? void 0 : i.label) ?? "", () => {
718
+ this.currentPanel = "captions-size", this.renderCaptionsSize();
719
+ })
720
+ ), this.panel.appendChild(
721
+ this.row(t.bgColorLabel, e((r = t.getBgColorOptions().find((a) => a.active)) == null ? void 0 : r.value), () => {
722
+ this.currentPanel = "captions-bg", this.renderCaptionColorPanel("bg");
723
+ })
724
+ ), this.panel.appendChild(
725
+ this.row(t.textColorLabel, e((o = t.getTextColorOptions().find((a) => a.active)) == null ? void 0 : o.value), () => {
726
+ this.currentPanel = "captions-text", this.renderCaptionColorPanel("text");
727
+ })
728
+ ), this.panel.appendChild(
729
+ this.row(t.resetPositionLabel, "", () => {
730
+ t.onResetPosition(), this.close();
731
+ })
732
+ );
733
+ }
696
734
  renderCaptionsSize() {
697
735
  this.panel.innerHTML = "";
698
736
  const t = this.captionAppearance;
699
- if (this.panel.appendChild(this.backRow((t == null ? void 0 : t.sizeLabel) ?? this.labels.captionSize, () => this.renderCaptions())), !!t)
737
+ if (this.panel.appendChild(this.backRow((t == null ? void 0 : t.sizeLabel) ?? this.labels.captionSize, this.backToCaptionSettings)), !!t)
700
738
  for (const e of t.getSizeOptions())
701
739
  this.panel.appendChild(
702
740
  this.row(e.label, e.active ? '<i class="hp-icon hp-icon-check"></i>' : "", () => {
@@ -708,11 +746,11 @@ class Pe {
708
746
  renderCaptionColorPanel(t) {
709
747
  this.panel.innerHTML = "";
710
748
  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;
749
+ if (this.panel.appendChild(this.backRow(i, this.backToCaptionSettings)), !e) return;
712
750
  const r = document.createElement("div");
713
751
  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) {
752
+ const o = t === "bg" ? e.getBgColorOptions() : e.getTextColorOptions();
753
+ for (const a of o) {
716
754
  const l = document.createElement("button");
717
755
  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
756
  a.onSelect(), this.render();
@@ -728,27 +766,27 @@ class Pe {
728
766
  document.removeEventListener("click", this.onDocumentClick, !0), this.panelObserver.disconnect();
729
767
  }
730
768
  }
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));
769
+ function le(n, t) {
770
+ const e = n.seekable.length ? n.seekable.start(0) : 0, i = Number.isFinite(n.duration) ? n.duration : n.seekable.length ? n.seekable.end(n.seekable.length - 1) : n.currentTime;
771
+ n.currentTime = Math.max(e, Math.min(i, n.currentTime + t));
734
772
  }
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}`);
773
+ const Re = 15, Be = 480, ze = 150, W = ["waiting", "seeking"], X = ["playing", "canplay", "canplaythrough", "seeked", "pause", "error", "emptied"];
774
+ function $(n, t) {
775
+ const { btn: e } = A("", `skip-${n}`);
738
776
  e.classList.add("hp-skip-btn"), e.setAttribute("part", t);
739
777
  const i = document.createElement("span");
740
778
  return i.className = "hp-skip-num", i.setAttribute("aria-hidden", "true"), e.appendChild(i), e.style.display = "none", { btn: e, num: i };
741
779
  }
742
- function E(o, t) {
743
- o.setAttribute("aria-label", t);
780
+ function C(n, t) {
781
+ n.setAttribute("aria-label", t);
744
782
  }
745
- function T(o, t, e) {
783
+ function A(n, t, e) {
746
784
  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)]");
785
+ i.type = "button", C(i, n), e && (i.dataset.shortcut = e), i.className = "hp-chip hp:flex hp:items-center hp:justify-center hp:w-[var(--hp-ctrl-btn-size)] hp:h-[var(--hp-ctrl-btn-size)] hp:cursor-pointer hp:shrink-0";
786
+ const r = E(t, "hp:text-[length:var(--hp-ctrl-icon-size)]");
749
787
  return i.appendChild(r), { btn: i, icon: r };
750
788
  }
751
- class ze {
789
+ class Ne {
752
790
  constructor(t, e, i, r) {
753
791
  s(this, "el");
754
792
  s(this, "seekBar");
@@ -788,6 +826,8 @@ class ze {
788
826
  s(this, "liveBadge");
789
827
  s(this, "liveText");
790
828
  s(this, "adMode", !1);
829
+ /** Ses modu: tam ekran / PiP yok — dar düzende tam ekran kutusu da boş kalmasın. */
830
+ s(this, "audioMode", !1);
791
831
  s(this, "callbacks");
792
832
  s(this, "row");
793
833
  s(this, "extraButtonAnchor");
@@ -797,28 +837,28 @@ class ze {
797
837
  });
798
838
  s(this, "renderPlayState", () => {
799
839
  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);
840
+ L(this.playIcon, t ? "play" : "pause"), C(this.playButton, t ? this.labels.play : this.labels.pause);
801
841
  });
802
842
  s(this, "renderTime", () => {
803
- var r, n;
843
+ var r, o;
804
844
  const t = this.video.duration === 1 / 0;
805
845
  if (this.timeLabel.style.display = this.adMode || t ? "none" : "", this.liveBadge.style.display = !this.adMode && t ? "" : "none", !t) {
806
846
  const a = this.video.duration, l = this.video.currentTime;
807
847
  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)}`;
848
+ const d = Number.isFinite(a) ? Math.floor(a) : 0, u = Math.max(0, d - Math.floor(l));
849
+ this.timeLabel.textContent = `-${w(u)} / ${w(a)}`;
810
850
  } else
811
- this.timeLabel.textContent = `${x(l)} / ${x(a)}`;
851
+ this.timeLabel.textContent = `${w(l)} / ${w(a)}`;
812
852
  return;
813
853
  }
814
- const e = ((n = (r = this.callbacks).liveSyncPosition) == null ? void 0 : n.call(r)) ?? this.liveEdge(), i = e !== null && e - this.video.currentTime > Me;
854
+ const e = ((o = (r = this.callbacks).liveSyncPosition) == null ? void 0 : o.call(r)) ?? this.liveEdge(), i = e !== null && e - this.video.currentTime > Re;
815
855
  this.liveBadge.toggleAttribute("data-behind", i);
816
856
  });
817
857
  /** Buffer bekleniyor (oynarken takılma ya da buffer'lanmamış bir yere atlama). */
818
858
  s(this, "onLoadingStart", (t) => {
819
859
  t.type === "seeking" && this.video.readyState >= HTMLMediaElement.HAVE_FUTURE_DATA || this.loadingTimer || this.loadingReasons.has("media") || (this.loadingTimer = setTimeout(() => {
820
860
  this.loadingTimer = null, this.setLoading("media", !0);
821
- }, Be));
861
+ }, ze));
822
862
  });
823
863
  s(this, "onLoadingEnd", (t) => {
824
864
  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 +869,29 @@ class ze {
829
869
  e === null && t == null || (this.video.currentTime = t ?? Math.max(0, e - 1), this.video.paused && this.video.play().catch(() => {
830
870
  }), this.renderTime());
831
871
  });
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);
833
- const n = document.createElement("div");
834
- n.className = "hp:flex hp:items-center hp:gap-2", this.el.appendChild(n), this.bottomRow = n;
872
+ 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 Te(t, r), this.seekBar.el.classList.add("hp:pointer-events-auto"), this.el.appendChild(this.seekBar.el);
873
+ const o = document.createElement("div");
874
+ o.className = "hp:flex hp:items-center hp:gap-2", this.el.appendChild(o), this.bottomRow = o;
835
875
  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;
876
+ a.className = "hp-group hp-group-left hp:flex hp:items-center hp:gap-1 hp:px-1.5 hp:py-1 hp:shrink-0 hp:pointer-events-auto", o.appendChild(a), this.leftGroup = a;
837
877
  const l = document.createElement("span");
838
878
  l.className = "hp-loading-ring", l.setAttribute("aria-hidden", "true");
839
879
  const d = document.createElement("span");
840
880
  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);
881
+ const u = A(r.play, "play", "K");
882
+ this.playButton = u.btn, this.playIcon = u.icon, this.playButton.setAttribute("part", "play-pause-button"), this.playButton.addEventListener("click", () => this.togglePlay()), a.appendChild(this.playButton), this.skipBack = $("back", "skip-back-button"), this.skipBack.btn.addEventListener("click", () => this.skip(-(this.skipSeconds.back ?? 0))), this.skipForward = $("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);
843
883
  const c = document.createElement("span");
844
884
  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);
885
+ const g = document.createElement("div");
886
+ g.className = "hp:flex-1", o.appendChild(g);
845
887
  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);
888
+ 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;
889
+ const p = A(r.pip, "pip");
890
+ this.pipButton = p.btn, this.pipButton.addEventListener("click", () => this.togglePip()), document.pictureInPictureEnabled || (this.pipButton.style.display = "none"), h.appendChild(this.pipButton);
891
+ const m = A(r.fullscreenEnter, "fullscreen-enter", "F");
892
+ 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);
893
+ for (const b of W) t.addEventListener(b, this.onLoadingStart);
894
+ for (const b of X) t.addEventListener(b, this.onLoadingEnd);
855
895
  this.renderPlayState(), this.renderTime();
856
896
  }
857
897
  /** 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 +899,15 @@ class ze {
859
899
  var i;
860
900
  const t = this.el.getBoundingClientRect().width;
861
901
  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"));
902
+ const e = t < Be;
903
+ 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"));
904
+ }
905
+ /** Ses modu: görüntü olmadığı için tam ekran ve PiP butonları gizlenir. */
906
+ setAudioMode(t) {
907
+ 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
908
  }
865
909
  setFullscreenState(t) {
866
- A(this.fullscreenIcon, t ? "fullscreen-exit" : "fullscreen-enter"), E(this.fullscreenButton, t ? this.labels.fullscreenExit : this.labels.fullscreenEnter);
910
+ L(this.fullscreenIcon, t ? "fullscreen-exit" : "fullscreen-enter"), C(this.fullscreenButton, t ? this.labels.fullscreenExit : this.labels.fullscreenEnter);
867
911
  }
868
912
  /** Dil sonradan değişince (`options.locale`/`labels`) statik (reaktif olarak yeniden render edilmeyen) etiketleri tazeler. */
869
913
  /** Geri/ileri sarma butonları — `null` süre o butonu gizler. */
@@ -876,21 +920,21 @@ class ze {
876
920
  }
877
921
  renderSkipButtons() {
878
922
  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)));
923
+ 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), C(e.btn, r(i)));
880
924
  };
881
925
  t(this.skipBack, this.skipSeconds.back, this.labels.skipBack), t(this.skipForward, this.skipSeconds.forward, this.labels.skipForward);
882
926
  }
883
927
  skip(t) {
884
928
  var e;
885
- !t || !this.seekingEnabled || (ae(this.video, t), (e = this.onSkip) == null || e.call(this, t));
929
+ !t || !this.seekingEnabled || (le(this.video, t), (e = this.onSkip) == null || e.call(this, t));
886
930
  }
887
931
  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();
932
+ this.renderPlayState(), this.renderSkipButtons(), C(this.pipButton, this.labels.pip), C(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
933
  }
890
934
  /** Reklam modu: seek bar, süre ve sağ grup gizlenir; oynat/duraklat + ses kalır. */
891
935
  setAdMode(t) {
892
936
  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();
937
+ 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
938
  }
895
939
  /**
896
940
  * Reklam geri sayımı + pod göstergesi ("Reklam 2/3 · 0:12"). `null` → gizle. Pod tek reklamsa yalnızca "Reklam · 0:12";
@@ -901,7 +945,7 @@ class ze {
901
945
  this.adInfoEl.style.display = "none", this.adInfoEl.textContent = "";
902
946
  return;
903
947
  }
904
- const e = t.total > 1 ? ` ${t.position}/${t.total}` : "", i = t.remaining >= 0 ? ` · ${x(Math.ceil(t.remaining))}` : "";
948
+ const e = t.total > 1 ? ` ${t.position}/${t.total}` : "", i = t.remaining >= 0 ? ` · ${w(Math.ceil(t.remaining))}` : "";
905
949
  this.adInfoEl.textContent = `${this.labels.adLabel}${e}${i}`, this.adInfoEl.style.display = "";
906
950
  }
907
951
  /** `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 +960,8 @@ class ze {
916
960
  }
917
961
  /** Plugin'lerin (loop-section vb.) kontrol çubuğuna kendi butonlarını eklemesi için — ayarlar menüsünden önce yerleştirilir. */
918
962
  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 };
963
+ const { btn: r, icon: o } = A(t, e);
964
+ return r.addEventListener("click", i), this.row.insertBefore(r, this.extraButtonAnchor), { btn: r, icon: o };
921
965
  }
922
966
  toggleTimeMode() {
923
967
  this.showRemaining = !this.showRemaining, this.renderTime();
@@ -976,16 +1020,16 @@ class ze {
976
1020
  }
977
1021
  destroy() {
978
1022
  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);
1023
+ for (const t of W) this.video.removeEventListener(t, this.onLoadingStart);
1024
+ for (const t of X) this.video.removeEventListener(t, this.onLoadingEnd);
981
1025
  this.loadingTimer && clearTimeout(this.loadingTimer), this.resizeObserver.disconnect(), this.topEl.remove(), this.seekBar.destroy(), this.settingsMenu.destroy();
982
1026
  }
983
1027
  }
984
- const Ie = 450, Ne = 60, $ = 8, z = 6, Oe = /* @__PURE__ */ new Set(["seek-bar", "time-display"]);
985
- function De() {
1028
+ const Ie = 450, Oe = 60, U = 8, I = 6, De = /* @__PURE__ */ new Set(["seek-bar", "time-display"]);
1029
+ function Fe() {
986
1030
  return typeof window.matchMedia != "function" || window.matchMedia("(hover: hover)").matches;
987
1031
  }
988
- class Fe {
1032
+ class He {
989
1033
  constructor(t) {
990
1034
  s(this, "el");
991
1035
  s(this, "labelEl");
@@ -1035,11 +1079,11 @@ class Fe {
1035
1079
  this.currentTarget && this.el.style.visibility === "visible" && ((t = this.isOccluded) != null && t.call(this, this.el.getBoundingClientRect())) && this.hideNow();
1036
1080
  }
1037
1081
  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]');
1082
+ var o;
1083
+ 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
1084
  if (!i) return null;
1041
1085
  const r = i.getAttribute("part");
1042
- return r && Oe.has(r) || i.offsetParent === null && i !== document.activeElement ? null : i;
1086
+ return r && De.has(r) || i.offsetParent === null && i !== document.activeElement ? null : i;
1043
1087
  }
1044
1088
  scheduleShow(t) {
1045
1089
  this.hideTimer && (clearTimeout(this.hideTimer), this.hideTimer = null), this.showTimer && clearTimeout(this.showTimer), this.pendingTarget = t, this.showTimer = setTimeout(() => {
@@ -1047,10 +1091,10 @@ class Fe {
1047
1091
  }, Ie);
1048
1092
  }
1049
1093
  scheduleHide() {
1050
- this.showTimer && (clearTimeout(this.showTimer), this.showTimer = null), this.pendingTarget = null, this.hideTimer && clearTimeout(this.hideTimer), this.hideTimer = setTimeout(() => this.hideNow(), Ne);
1094
+ this.showTimer && (clearTimeout(this.showTimer), this.showTimer = null), this.pendingTarget = null, this.hideTimer && clearTimeout(this.hideTimer), this.hideTimer = setTimeout(() => this.hideNow(), Oe);
1051
1095
  }
1052
1096
  show(t) {
1053
- if (!De()) return;
1097
+ if (!Fe()) return;
1054
1098
  const e = t.getAttribute("aria-label");
1055
1099
  if (!e) return;
1056
1100
  this.currentTarget = t, this.labelEl.textContent = e;
@@ -1062,14 +1106,14 @@ class Fe {
1062
1106
  }
1063
1107
  position(t) {
1064
1108
  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 + $);
1109
+ let o = i.top - e.top - r.height - U;
1110
+ o < I && (o = i.bottom - e.top + U);
1067
1111
  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`;
1112
+ const l = e.width - r.width - I;
1113
+ a = Math.max(I, Math.min(a, l)), this.el.style.top = `${o}px`, this.el.style.left = `${a}px`;
1070
1114
  }
1071
1115
  }
1072
- class He {
1116
+ class _e {
1073
1117
  constructor(t, e, i) {
1074
1118
  s(this, "host");
1075
1119
  s(this, "video");
@@ -1081,7 +1125,7 @@ class He {
1081
1125
  /** Space/K'den önce sorulur — true dönerse işlenmiştir (ör. preroll beklemesini iptal). */
1082
1126
  s(this, "interceptTogglePlay", null);
1083
1127
  s(this, "onKeyDown", (t) => {
1084
- var r, n, a;
1128
+ var r, o, a;
1085
1129
  if (t.defaultPrevented) return;
1086
1130
  const e = t.composedPath()[0];
1087
1131
  if ((t.key === " " || t.key === "Enter") && e instanceof HTMLButtonElement) return;
@@ -1097,7 +1141,7 @@ class He {
1097
1141
  break;
1098
1142
  case "ArrowRight":
1099
1143
  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();
1144
+ 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
1145
  break;
1102
1146
  case "ArrowLeft":
1103
1147
  case "j":
@@ -1123,7 +1167,7 @@ class He {
1123
1167
  this.host.removeEventListener("keydown", this.onKeyDown);
1124
1168
  }
1125
1169
  }
1126
- class _e {
1170
+ class Ve {
1127
1171
  constructor(t) {
1128
1172
  s(this, "el");
1129
1173
  s(this, "video");
@@ -1135,8 +1179,8 @@ class _e {
1135
1179
  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
1180
  }
1137
1181
  }
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>';
1139
- class Ge {
1182
+ const Ge = '<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>';
1183
+ class qe {
1140
1184
  constructor(t, e) {
1141
1185
  s(this, "el");
1142
1186
  s(this, "video");
@@ -1156,9 +1200,9 @@ class Ge {
1156
1200
  const i = document.createElement("div");
1157
1201
  i.className = "hp-error-card";
1158
1202
  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);
1203
+ 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 = Ge, this.retryText = document.createElement("span"), this.retryText.textContent = e.retry, this.retryBtn.appendChild(this.retryText), this.retryBtn.addEventListener("click", () => {
1204
+ var o;
1205
+ this.dismiss(), (o = this.onRetry) == null || o.call(this);
1162
1206
  }), i.appendChild(this.retryBtn), this.el.appendChild(i), t.addEventListener("error", this.show);
1163
1207
  }
1164
1208
  setOnRetry(t) {
@@ -1202,129 +1246,129 @@ class Ge {
1202
1246
  this.video.removeEventListener("error", this.show);
1203
1247
  }
1204
1248
  }
1205
- const I = /* @__PURE__ */ new WeakMap(), le = /* @__PURE__ */ new WeakSet(), B = /* @__PURE__ */ new WeakMap();
1206
- function qe(o) {
1207
- return le.has(o);
1249
+ const O = /* @__PURE__ */ new WeakMap(), he = /* @__PURE__ */ new WeakSet(), N = /* @__PURE__ */ new WeakMap();
1250
+ function We(n) {
1251
+ return he.has(n);
1208
1252
  }
1209
- function he(o, t, e, i, r) {
1210
- let n = I.get(o);
1211
- n || I.set(o, n = /* @__PURE__ */ new Map());
1253
+ function pe(n, t, e, i, r) {
1254
+ let o = O.get(n);
1255
+ o || O.set(n, o = /* @__PURE__ */ new Map());
1212
1256
  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;
1257
+ let l = o.get(a);
1258
+ return l || (l = n.addTextTrack(e, i, r), he.add(l), o.set(a, l)), l;
1215
1259
  }
1216
- function pe(o, t) {
1217
- for (const [e, i] of I.get(o) ?? [])
1260
+ function ce(n, t) {
1261
+ for (const [e, i] of O.get(n) ?? [])
1218
1262
  if (e.startsWith(`${t}\0`)) {
1219
1263
  i.mode = "hidden";
1220
1264
  for (const r of Array.from(i.cues ?? [])) i.removeCue(r);
1221
1265
  i.mode = "disabled";
1222
1266
  }
1223
1267
  }
1224
- function We(o, t) {
1225
- ce(o);
1226
- const e = B.get(o), i = [];
1268
+ function Xe(n, t) {
1269
+ de(n);
1270
+ const e = N.get(n), i = [];
1227
1271
  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);
1272
+ const o = pe(n, "options", "subtitles", r.label, r.srclang);
1273
+ o.mode = r.default ? "hidden" : "disabled", i.push({ label: r.label, track: o }), Ue(n, o, r.src, e);
1230
1274
  }
1231
1275
  return i;
1232
1276
  }
1233
- function ce(o) {
1234
- B.set(o, (B.get(o) ?? 0) + 1), pe(o, "options");
1277
+ function de(n) {
1278
+ N.set(n, (N.get(n) ?? 0) + 1), ce(n, "options");
1235
1279
  }
1236
- function Xe(o, t) {
1280
+ function $e(n, t) {
1237
1281
  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);
1282
+ for (const { label: i, track: r } of n) {
1283
+ const o = i === t;
1284
+ r.mode = o ? "hidden" : "disabled", o && (e = r);
1241
1285
  }
1242
1286
  return e;
1243
1287
  }
1244
- async function $e(o, t, e, i) {
1288
+ async function Ue(n, t, e, i) {
1245
1289
  let r;
1246
1290
  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) } }));
1291
+ const o = await fetch(e);
1292
+ if (!o.ok) throw new Error(`HTTP ${o.status}`);
1293
+ r = await o.text();
1294
+ } catch (o) {
1295
+ console.warn("[HopePlayer] altyazı yüklenemedi:", e, o), n.dispatchEvent(new CustomEvent("hp-internal:subtitle-error", { detail: { src: e, message: String(o) } }));
1252
1296
  return;
1253
1297
  }
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);
1298
+ if (!(N.get(n) !== i || typeof VTTCue != "function"))
1299
+ for (const o of je(r)) {
1300
+ const a = new VTTCue(o.start, o.end, o.text);
1301
+ Qe(a, o.settings), t.addCue(a);
1258
1302
  }
1259
1303
  }
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);
1304
+ const K = "(?:\\d+:)?\\d{1,2}:\\d{2}(?:[.,]\\d{1,3})?", Ke = new RegExp(`^(${K})\\s+-->\\s+(${K})(.*)$`);
1305
+ function j(n) {
1306
+ return n.replace(",", ".").split(":").reduce((t, e) => t * 60 + Number(e), 0);
1263
1307
  }
1264
- function Ke(o) {
1265
- const t = [], e = o.replace(/^/, "").replace(/\r\n?/g, `
1308
+ function je(n) {
1309
+ const t = [], e = n.replace(/^/, "").replace(/\r\n?/g, `
1266
1310
  `).split(/\n{2,}/);
1267
1311
  for (const i of e) {
1268
1312
  const r = i.split(`
1269
- `), n = r.findIndex((d) => d.includes("-->"));
1270
- if (n < 0) continue;
1271
- const a = Ue.exec(r[n].trim());
1313
+ `), o = r.findIndex((d) => d.includes("-->"));
1314
+ if (o < 0) continue;
1315
+ const a = Ke.exec(r[o].trim());
1272
1316
  if (!a) continue;
1273
- const l = r.slice(n + 1).join(`
1317
+ const l = r.slice(o + 1).join(`
1274
1318
  `);
1275
- l.trim() && t.push({ start: K(a[1]), end: K(a[2]), settings: a[3].trim(), text: l });
1319
+ l.trim() && t.push({ start: j(a[1]), end: j(a[2]), settings: a[3].trim(), text: l });
1276
1320
  }
1277
1321
  return t;
1278
1322
  }
1279
- function Qe(o, t) {
1323
+ function Qe(n, t) {
1280
1324
  for (const e of t.split(/\s+/)) {
1281
1325
  const [i, r] = e.split(":");
1282
1326
  if (!i || !r) continue;
1283
- const [n] = r.split(",");
1327
+ const [o] = r.split(",");
1284
1328
  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));
1329
+ i === "align" ? n.align = o : i === "vertical" ? n.vertical = o : i === "size" ? n.size = parseFloat(o) : i === "position" ? n.position = parseFloat(o) : i === "line" && (n.snapToLines = !o.endsWith("%"), n.line = parseFloat(o));
1286
1330
  } catch {
1287
1331
  }
1288
1332
  }
1289
1333
  }
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 = {
1334
+ const z = 6, Ye = 20, Ze = 14, Je = 6, et = 10, tt = 3, ue = "hope-caption-row", me = "hope-caption-font-size", Q = "hope-caption-bg-color", Y = "hope-caption-text-color", it = {
1291
1335
  small: 0.78,
1292
1336
  normal: 1,
1293
1337
  large: 1.35
1294
- }, Y = [
1338
+ }, Z = [
1295
1339
  "rgba(0, 0, 0, 0.75)",
1296
1340
  "rgba(0, 0, 0, 0)",
1297
1341
  "rgba(255, 255, 255, 0.85)",
1298
1342
  "rgba(183, 28, 28, 0.8)",
1299
1343
  "rgba(13, 71, 161, 0.8)",
1300
1344
  "rgba(27, 94, 32, 0.8)"
1301
- ], Z = ["#ffffff", "#000000", "#ffeb3b", "#ff5252", "#18ffff", "#69f0ae"];
1302
- function it() {
1345
+ ], J = ["#ffffff", "#000000", "#ffeb3b", "#ff5252", "#18ffff", "#69f0ae"];
1346
+ function st() {
1303
1347
  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;
1348
+ const n = window.localStorage.getItem(ue), t = n === null ? 0 : Number(n);
1349
+ return Number.isFinite(t) && t >= 0 && t < z ? t : 0;
1306
1350
  } catch {
1307
1351
  return 0;
1308
1352
  }
1309
1353
  }
1310
- function st() {
1354
+ function rt() {
1311
1355
  try {
1312
- const o = window.localStorage.getItem(ue);
1313
- return o === "small" || o === "normal" || o === "large" ? o : "normal";
1356
+ const n = window.localStorage.getItem(me);
1357
+ return n === "small" || n === "normal" || n === "large" ? n : "normal";
1314
1358
  } catch {
1315
1359
  return "normal";
1316
1360
  }
1317
1361
  }
1318
- function J(o, t) {
1362
+ function ee(n, t) {
1319
1363
  const e = t[0] ?? "";
1320
1364
  try {
1321
- const i = window.localStorage.getItem(o);
1365
+ const i = window.localStorage.getItem(n);
1322
1366
  return i !== null && t.includes(i) ? i : e;
1323
1367
  } catch {
1324
1368
  return e;
1325
1369
  }
1326
1370
  }
1327
- class S {
1371
+ class P {
1328
1372
  constructor(t, e, i, r) {
1329
1373
  s(this, "layerEl");
1330
1374
  s(this, "bubbleEl");
@@ -1332,10 +1376,10 @@ class S {
1332
1376
  s(this, "seekBarEl");
1333
1377
  s(this, "labels");
1334
1378
  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());
1379
+ s(this, "fontSize", rt());
1380
+ s(this, "bgColor", ee(Q, Z));
1381
+ s(this, "textColor", ee(Y, J));
1382
+ s(this, "rowIndex", st());
1339
1383
  s(this, "dragging", !1);
1340
1384
  /** Kontrol çubuğu görünür mü — görünürken altyazı seek bar'ın üstünde, değilken en altta. */
1341
1385
  s(this, "chromeVisible", !0);
@@ -1364,7 +1408,7 @@ class S {
1364
1408
  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
1409
  });
1366
1410
  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)));
1411
+ 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
1412
  });
1369
1413
  s(this, "applyPendingDrag", () => {
1370
1414
  if (this.rafId = null, !this.dragging) return;
@@ -1373,7 +1417,7 @@ class S {
1373
1417
  });
1374
1418
  s(this, "onPointerUp", (t) => {
1375
1419
  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));
1420
+ const { min: e, max: i } = this.bounds(), r = Math.min(i, Math.max(e, this.dragStartBottomPx - this.pendingDeltaPx)), o = i > e ? (r - e) / (i - e) : 0, a = Math.round(o * (z - 1));
1377
1421
  this.setRowIndex(a, !0);
1378
1422
  });
1379
1423
  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();
@@ -1388,7 +1432,7 @@ class S {
1388
1432
  setFontSize(t) {
1389
1433
  this.fontSize = t, this.applyFontSizeVar(), this.recomputePosition();
1390
1434
  try {
1391
- window.localStorage.setItem(ue, t);
1435
+ window.localStorage.setItem(me, t);
1392
1436
  } catch {
1393
1437
  }
1394
1438
  }
@@ -1408,7 +1452,7 @@ class S {
1408
1452
  setTextColor(t) {
1409
1453
  this.textColor = t, this.bubbleEl.style.setProperty("--hp-caption-text", t);
1410
1454
  try {
1411
- window.localStorage.setItem(j, t);
1455
+ window.localStorage.setItem(Y, t);
1412
1456
  } catch {
1413
1457
  }
1414
1458
  }
@@ -1421,14 +1465,14 @@ class S {
1421
1465
  this.labels = t, this.bubbleEl.setAttribute("aria-label", t.captionDragHandle);
1422
1466
  }
1423
1467
  applyFontSizeVar() {
1424
- this.bubbleEl.style.setProperty("--hp-caption-size-multiplier", String(tt[this.fontSize]));
1468
+ this.bubbleEl.style.setProperty("--hp-caption-size-multiplier", String(it[this.fontSize]));
1425
1469
  }
1426
1470
  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));
1471
+ 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)), a = 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(a, Math.round(t.height - r));
1428
1472
  return { min: a, max: l };
1429
1473
  }
1430
1474
  pxForRow(t) {
1431
- const { min: e, max: i } = this.bounds(), r = t / (R - 1);
1475
+ const { min: e, max: i } = this.bounds(), r = t / (z - 1);
1432
1476
  return Math.round(e + r * (i - e));
1433
1477
  }
1434
1478
  /**
@@ -1447,11 +1491,11 @@ class S {
1447
1491
  }
1448
1492
  /** FLIP: bottom anında yazılır, yalnızca transform animasyonlanır — bottom'u animasyonlamak bırakınca zıplatıyordu. */
1449
1493
  setRowIndex(t, e) {
1450
- this.rowIndex = Math.min(R - 1, Math.max(0, t));
1494
+ this.rowIndex = Math.min(z - 1, Math.max(0, t));
1451
1495
  const i = this.pxForRow(this.rowIndex), r = this.visualBottomPx();
1452
1496
  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
1497
  try {
1454
- window.localStorage.setItem(de, String(this.rowIndex));
1498
+ window.localStorage.setItem(ue, String(this.rowIndex));
1455
1499
  } catch {
1456
1500
  }
1457
1501
  }
@@ -1467,8 +1511,8 @@ class S {
1467
1511
  this.activeTrack && this.activeTrack.removeEventListener("cuechange", this.onCueChange), this.resizeObserver.disconnect(), this.rafId !== null && cancelAnimationFrame(this.rafId), this.bubbleEl.removeEventListener("pointerdown", this.onPointerDown);
1468
1512
  }
1469
1513
  }
1470
- s(S, "BG_COLOR_PRESETS", Y), s(S, "TEXT_COLOR_PRESETS", Z);
1471
- class rt {
1514
+ s(P, "BG_COLOR_PRESETS", Z), s(P, "TEXT_COLOR_PRESETS", J);
1515
+ class ot {
1472
1516
  constructor(t) {
1473
1517
  s(this, "el");
1474
1518
  s(this, "bufferedEl");
@@ -1484,8 +1528,8 @@ class rt {
1484
1528
  this.playedEl.style.transform = `scaleX(${Math.min(1, this.video.currentTime / t)})`;
1485
1529
  const { buffered: i } = this.video;
1486
1530
  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)));
1531
+ for (let o = 0; o < i.length; o++)
1532
+ i.start(o) <= this.video.currentTime && (r = Math.max(r, i.end(o)));
1489
1533
  this.bufferedEl.style.transform = `scaleX(${Math.min(1, r / t)})`;
1490
1534
  });
1491
1535
  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 +1551,8 @@ class rt {
1507
1551
  this.rafId !== null && cancelAnimationFrame(this.rafId), this.rafId = null;
1508
1552
  }
1509
1553
  }
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 {
1554
+ 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>';
1555
+ class ht {
1512
1556
  constructor(t) {
1513
1557
  s(this, "el");
1514
1558
  s(this, "valueEl");
@@ -1519,7 +1563,7 @@ class lt {
1519
1563
  s(this, "hideTimer", null);
1520
1564
  this.labels = t, this.el = document.createElement("div"), this.el.className = "hp-seek-fb", this.el.setAttribute("part", "seek-feedback");
1521
1565
  const e = document.createElement("span");
1522
- e.className = "hp-seek-fb-chevrons", e.innerHTML = at.repeat(3);
1566
+ e.className = "hp-seek-fb-chevrons", e.innerHTML = lt.repeat(3);
1523
1567
  const i = document.createElement("span");
1524
1568
  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
1569
  }
@@ -1528,16 +1572,16 @@ class lt {
1528
1572
  if (!t) return;
1529
1573
  const e = Date.now(), i = Math.sign(t) === Math.sign(this.total);
1530
1574
  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(() => {
1575
+ const r = Math.round(Math.abs(this.total) * 10) / 10, o = this.total > 0;
1576
+ 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
1577
  this.el.removeAttribute("data-visible"), this.total = 0;
1534
- }, ot);
1578
+ }, at);
1535
1579
  }
1536
1580
  destroy() {
1537
1581
  this.hideTimer && clearTimeout(this.hideTimer), this.el.remove();
1538
1582
  }
1539
1583
  }
1540
- class ht {
1584
+ class pt {
1541
1585
  constructor(t) {
1542
1586
  s(this, "el");
1543
1587
  s(this, "open", !1);
@@ -1557,30 +1601,30 @@ class ht {
1557
1601
  }
1558
1602
  /** `clientX/Y` ekran koordinatı — menü player'ın içinde kalacak şekilde kaydırılır. */
1559
1603
  show(t, e, i) {
1560
- var m;
1604
+ var u;
1561
1605
  this.el.replaceChildren(
1562
1606
  ...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", () => {
1607
+ const g = document.createElement(c.onSelect ? "button" : "div");
1608
+ g.className = "hp-context-menu-item", c.onSelect ? (g.type = "button", g.setAttribute("role", "menuitem"), g.addEventListener("click", () => {
1565
1609
  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);
1610
+ })) : g.setAttribute("data-info", "");
1611
+ const h = document.createElement("span");
1612
+ if (h.textContent = c.label, g.appendChild(h), c.meta) {
1613
+ const p = document.createElement("span");
1614
+ p.className = "hp-context-menu-meta", p.textContent = c.meta, g.appendChild(p);
1571
1615
  }
1572
- return h;
1616
+ return g;
1573
1617
  })
1574
1618
  ), 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);
1619
+ const r = this.container.getBoundingClientRect(), { width: o, height: a } = this.el.getBoundingClientRect(), l = Math.max(4, Math.min(t - r.left, r.width - o - 4)), d = Math.max(4, Math.min(e - r.top, r.height - a - 4));
1620
+ 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
1621
  }
1578
1622
  destroy() {
1579
1623
  this.close(), this.el.remove();
1580
1624
  }
1581
1625
  }
1582
- const pt = 3e3, ee = 200;
1583
- class ct {
1626
+ const ct = 3e3, te = 200;
1627
+ class dt {
1584
1628
  constructor() {
1585
1629
  s(this, "list", []);
1586
1630
  /** Kayıt eklenince / temizlenince (açık panel canlı güncellenir). */
@@ -1590,13 +1634,13 @@ class ct {
1590
1634
  return this.list;
1591
1635
  }
1592
1636
  add(t) {
1593
- var r, n;
1637
+ var r, o;
1594
1638
  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 ?? {})) {
1639
+ if (i && e - i.time < ct && i.source === t.source && i.message === t.message && JSON.stringify(i.details ?? {}) === JSON.stringify(t.details ?? {})) {
1596
1640
  i.count = (i.count ?? 1) + 1, i.time = e, (r = this.onChange) == null || r.call(this);
1597
1641
  return;
1598
1642
  }
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);
1643
+ this.list.push({ time: e, ...t }), this.list.length > te && this.list.splice(0, this.list.length - te), (o = this.onChange) == null || o.call(this);
1600
1644
  }
1601
1645
  clear() {
1602
1646
  var t;
@@ -1605,19 +1649,19 @@ class ct {
1605
1649
  /** Destek ekibine yapıştırılabilir düz metin. */
1606
1650
  toText() {
1607
1651
  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})` : "";
1652
+ 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
1653
  return `${new Date(t.time).toISOString()} [${t.source}]${t.fatal ? " [fatal]" : ""} ${t.message}${i}${e ? ` | ${e}` : ""}`;
1610
1654
  }).join(`
1611
1655
  `);
1612
1656
  }
1613
1657
  }
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);
1658
+ 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}', ie = "hope-player-icon-font";
1659
+ function mt() {
1660
+ if (typeof document > "u" || document.getElementById(ie)) return;
1661
+ const n = document.createElement("style");
1662
+ n.id = ie, n.textContent = ut, document.head.appendChild(n);
1619
1663
  }
1620
- const me = {
1664
+ const ge = {
1621
1665
  play: "Oynat",
1622
1666
  pause: "Duraklat",
1623
1667
  mute: "Sessize al",
@@ -1626,8 +1670,8 @@ const me = {
1626
1670
  seekBar: "Video konumu",
1627
1671
  settings: "Ayarlar",
1628
1672
  pip: "Resim içinde resim",
1629
- skipBack: (o) => `${o} saniye geri`,
1630
- skipForward: (o) => `${o} saniye ileri`,
1673
+ skipBack: (n) => `${n} saniye geri`,
1674
+ skipForward: (n) => `${n} saniye ileri`,
1631
1675
  secondsShort: "sn",
1632
1676
  audioTrack: "Ses",
1633
1677
  statsTitle: "İstatistikler",
@@ -1658,6 +1702,7 @@ const me = {
1658
1702
  adLabel: "Reklam",
1659
1703
  adReturnFullscreen: "Tam ekrana dön",
1660
1704
  adReturnPip: "Küçük pencereye dön",
1705
+ audioVinyl: "Plak — ileri / geri sarmak için çevirin",
1661
1706
  fullscreenEnter: "Tam ekran",
1662
1707
  fullscreenExit: "Tam ekrandan çık",
1663
1708
  playbackSpeed: "Oynatma Hızı",
@@ -1665,6 +1710,7 @@ const me = {
1665
1710
  quality: "Kalite",
1666
1711
  captions: "Altyazı",
1667
1712
  captionsOff: "Kapalı",
1713
+ captionSettings: "Altyazı ayarları",
1668
1714
  captionSize: "Yazı Boyutu",
1669
1715
  captionSizeSmall: "Küçük",
1670
1716
  captionSizeNormal: "Normal",
@@ -1688,7 +1734,7 @@ const me = {
1688
1734
  geoUnknownCountry: "Ülke bilgisi bulunamadı.",
1689
1735
  redirectCancel: "İptal",
1690
1736
  redirectPlayNow: "Şimdi Oynat",
1691
- redirectCountdown: (o) => `Sıradaki video ${o} saniye içinde oynatılacak.`,
1737
+ redirectCountdown: (n) => `Sıradaki video ${n} saniye içinde oynatılacak.`,
1692
1738
  redirectNowPlaying: "Video oynatılıyor...",
1693
1739
  qrResumeTitle: "Devam etmek için kodu telefonunuzla okutun",
1694
1740
  qrResumeDontShowAgain: "Bir daha gösterme",
@@ -1704,7 +1750,7 @@ const me = {
1704
1750
  playlistTitle: "Oynatma Listesi",
1705
1751
  playlistPrev: "Önceki",
1706
1752
  playlistNext: "Sonraki",
1707
- videoFallbackTitle: (o) => `Video ${o + 1}`,
1753
+ videoFallbackTitle: (n) => `Video ${n + 1}`,
1708
1754
  storyPrev: "Önceki video",
1709
1755
  storyNext: "Sonraki video",
1710
1756
  storyAllVideos: "Tüm videolar",
@@ -1712,7 +1758,7 @@ const me = {
1712
1758
  liveClock: "Canlı saat",
1713
1759
  live: "CANLI",
1714
1760
  goToLive: "Canlıya git"
1715
- }, mt = {
1761
+ }, gt = {
1716
1762
  play: "Play",
1717
1763
  pause: "Pause",
1718
1764
  mute: "Mute",
@@ -1721,8 +1767,8 @@ const me = {
1721
1767
  seekBar: "Seek",
1722
1768
  settings: "Settings",
1723
1769
  pip: "Picture-in-picture",
1724
- skipBack: (o) => `Back ${o} seconds`,
1725
- skipForward: (o) => `Forward ${o} seconds`,
1770
+ skipBack: (n) => `Back ${n} seconds`,
1771
+ skipForward: (n) => `Forward ${n} seconds`,
1726
1772
  secondsShort: "s",
1727
1773
  audioTrack: "Audio",
1728
1774
  statsTitle: "Stats",
@@ -1753,6 +1799,7 @@ const me = {
1753
1799
  adLabel: "Ad",
1754
1800
  adReturnFullscreen: "Back to full screen",
1755
1801
  adReturnPip: "Back to picture-in-picture",
1802
+ audioVinyl: "Record — turn it to scrub",
1756
1803
  fullscreenEnter: "Fullscreen",
1757
1804
  fullscreenExit: "Exit fullscreen",
1758
1805
  playbackSpeed: "Playback speed",
@@ -1760,6 +1807,7 @@ const me = {
1760
1807
  quality: "Quality",
1761
1808
  captions: "Captions",
1762
1809
  captionsOff: "Off",
1810
+ captionSettings: "Subtitle settings",
1763
1811
  captionSize: "Font Size",
1764
1812
  captionSizeSmall: "Small",
1765
1813
  captionSizeNormal: "Normal",
@@ -1783,7 +1831,7 @@ const me = {
1783
1831
  geoUnknownCountry: "No country information found.",
1784
1832
  redirectCancel: "Cancel",
1785
1833
  redirectPlayNow: "Play now",
1786
- redirectCountdown: (o) => `Next video will play in ${o} seconds.`,
1834
+ redirectCountdown: (n) => `Next video will play in ${n} seconds.`,
1787
1835
  redirectNowPlaying: "Now playing...",
1788
1836
  qrResumeTitle: "Scan to continue watching on your phone",
1789
1837
  qrResumeDontShowAgain: "Don't show again",
@@ -1799,7 +1847,7 @@ const me = {
1799
1847
  playlistTitle: "Playlist",
1800
1848
  playlistPrev: "Previous",
1801
1849
  playlistNext: "Next",
1802
- videoFallbackTitle: (o) => `Video ${o + 1}`,
1850
+ videoFallbackTitle: (n) => `Video ${n + 1}`,
1803
1851
  storyPrev: "Previous video",
1804
1852
  storyNext: "Next video",
1805
1853
  storyAllVideos: "All videos",
@@ -1807,19 +1855,19 @@ const me = {
1807
1855
  liveClock: "Live clock",
1808
1856
  live: "LIVE",
1809
1857
  goToLive: "Go to live"
1810
- }, bt = { tr: me, en: mt };
1811
- function be(o, t) {
1812
- return { ...bt[o ?? "tr"] ?? me, ...t };
1858
+ }, bt = { tr: ge, en: gt };
1859
+ function be(n, t) {
1860
+ return { ...bt[n ?? "tr"] ?? ge, ...t };
1813
1861
  }
1814
- function gt(o, t, e) {
1815
- Object.assign(o, be(t, e));
1862
+ function ft(n, t, e) {
1863
+ Object.assign(n, be(t, e));
1816
1864
  }
1817
- const N = 8e3;
1818
- function ft(o) {
1865
+ const D = 8e3;
1866
+ function vt(n) {
1819
1867
  var t;
1820
- return (t = o.live) != null && t.scte35 && !o.adTagPreroll && !o.adTagVmap ? !1 : !!(o.adTagPreroll || o.adTagVmap);
1868
+ return (t = n.live) != null && t.scte35 && !n.adTagPreroll && !n.adTagVmap ? !1 : !!(n.adTagPreroll || n.adTagVmap);
1821
1869
  }
1822
- class vt {
1870
+ class yt {
1823
1871
  constructor(t) {
1824
1872
  /** Kapı kurulu (preroll bekleniyor) mu. */
1825
1873
  s(this, "armed", !1);
@@ -1827,7 +1875,7 @@ class vt {
1827
1875
  s(this, "playIntent", !1);
1828
1876
  /** Kapının kendi pause() çağrısının ürettiği 'pause' olayı yutulsun. */
1829
1877
  s(this, "swallowNextPause", !1);
1830
- s(this, "timeoutMs", N);
1878
+ s(this, "timeoutMs", D);
1831
1879
  s(this, "timer", null);
1832
1880
  /** İlk oynatma isteği (reklam plugin'i bekleyen preroll'u başlatır). */
1833
1881
  s(this, "onPlayIntent", null);
@@ -1853,7 +1901,7 @@ class vt {
1853
1901
  get hasPlayIntent() {
1854
1902
  return this.playIntent;
1855
1903
  }
1856
- arm(t = N) {
1904
+ arm(t = D) {
1857
1905
  this.clearTimer(), this.armed = !0, this.playIntent = !1, this.timeoutMs = t;
1858
1906
  }
1859
1907
  /**
@@ -1890,24 +1938,24 @@ class vt {
1890
1938
  this.timer && clearTimeout(this.timer), this.timer = null;
1891
1939
  }
1892
1940
  }
1893
- const yt = [
1941
+ const kt = [
1894
1942
  "https://imasdk.googleapis.com",
1895
1943
  "https://pubads.g.doubleclick.net",
1896
1944
  "https://securepubads.g.doubleclick.net",
1897
1945
  "https://pagead2.googlesyndication.com"
1898
1946
  ];
1899
- let ie = !1;
1900
- 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;
1947
+ let se = !1;
1948
+ function xt() {
1949
+ if (!(se || typeof document > "u")) {
1950
+ se = !0;
1951
+ for (const n of kt) {
1952
+ if (document.head.querySelector(`link[rel="preconnect"][href="${n}"]`)) continue;
1905
1953
  const t = document.createElement("link");
1906
- t.rel = "preconnect", t.href = o, document.head.appendChild(t);
1954
+ t.rel = "preconnect", t.href = n, document.head.appendChild(t);
1907
1955
  }
1908
1956
  }
1909
1957
  }
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 = (
1958
+ const wt = [0.5, 0.75, 1, 1.25, 1.5, 2], re = 1200, Et = 3e3, oe = 5e3, Ct = 10, ne = 10, Tt = 5, ae = "stream-audio", B = "1.0.13", St = (
1911
1959
  /* html */
1912
1960
  `
1913
1961
  <div class="video-area">
@@ -1918,7 +1966,13 @@ const xt = [0.5, 0.75, 1, 1.25, 1.5, 2], se = 1200, wt = 3e3, re = 5e3, Et = 10,
1918
1966
  </div>
1919
1967
  `
1920
1968
  );
1921
- class ge extends HTMLElement {
1969
+ function At(n) {
1970
+ if (typeof n == "number") return Number.isFinite(n) && n > 0 ? String(n) : null;
1971
+ if (typeof n != "string") return null;
1972
+ const t = n.trim().match(/^(\d+(?:\.\d+)?)\s*(?:[:/]\s*(\d+(?:\.\d+)?))?$/);
1973
+ 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];
1974
+ }
1975
+ class fe extends HTMLElement {
1922
1976
  constructor() {
1923
1977
  super();
1924
1978
  s(this, "root");
@@ -1957,7 +2011,7 @@ class ge extends HTMLElement {
1957
2011
  /** options.debug — sağ tık menüsündeki "Hata ayıklama" girişini açar. */
1958
2012
  s(this, "debugEnabled", !1);
1959
2013
  /** Player'ın tüm hataları (medya, yayın, reklam, altyazı) — her zaman tutulur; bkz. `errorLog`. */
1960
- s(this, "log", new ct());
2014
+ s(this, "log", new dt());
1961
2015
  /** Son basılan işaretçi türü — sağ tık menüsü yalnızca fareyle (dokunmatikte uzun basma gesture'a ait). */
1962
2016
  s(this, "lastPointerType", "mouse");
1963
2017
  /** options.tapGestures kuruluysa (plugins/tap-gestures). */
@@ -1970,6 +2024,9 @@ class ge extends HTMLElement {
1970
2024
  s(this, "adsController", null);
1971
2025
  s(this, "gestureControls", null);
1972
2026
  s(this, "loopSection", null);
2027
+ s(this, "audioStage", null);
2028
+ /** options.audio — kapak + plak sahnesi, kontroller hep görünür, tam ekran yok. */
2029
+ s(this, "audioMode", !1);
1973
2030
  s(this, "inViewAutoplay", null);
1974
2031
  s(this, "unregisterSticky", null);
1975
2032
  s(this, "playlistRunner", null);
@@ -2028,14 +2085,14 @@ class ge extends HTMLElement {
2028
2085
  s(this, "hideTimer", null);
2029
2086
  s(this, "cursorTimer", null);
2030
2087
  /** null = imleç hiç gizlenmez (options.cursorHideDelayMs: false). */
2031
- s(this, "cursorHideDelayMs", re);
2088
+ s(this, "cursorHideDelayMs", oe);
2032
2089
  /** Fare kontrollerin (buton/seek bar) üzerinde mi — üzerindeyken otomatik gizlenmez; videonun üstünde hareketsizse gizlenir. */
2033
2090
  s(this, "pointerOverControls", !1);
2034
2091
  /** Kalite menüsünde şu an HLS seviyeleri mi var (kaynak değişince temizlemek için). */
2035
2092
  s(this, "hlsQualitiesShown", !1);
2036
2093
  /** Son uygulanan options.showRemainingTime — bkz. applyOptions. */
2037
2094
  s(this, "appliedShowRemaining");
2038
- s(this, "autoHideDelayMs", se);
2095
+ s(this, "autoHideDelayMs", re);
2039
2096
  s(this, "tapCandidate", !1);
2040
2097
  s(this, "tapStartX", 0);
2041
2098
  s(this, "tapStartY", 0);
@@ -2065,7 +2122,7 @@ class ge extends HTMLElement {
2065
2122
  s(this, "onContextMenu", (e) => {
2066
2123
  const i = this.contextMenuConfig;
2067
2124
  !i || this.lastPointerType !== "mouse" || (e.preventDefault(), this.contextMenu.show(e.clientX, e.clientY, [
2068
- { label: "HopeCorePlayer", meta: `v${M}` },
2125
+ { label: "HopeCorePlayer", meta: `v${B}` },
2069
2126
  ...i.stats ? [{ label: this.i18n.statsTitle, onSelect: () => void this.toggleStats(!0) }] : [],
2070
2127
  // Yalnızca debug açıkken ve kayıtlı bir hata varsa.
2071
2128
  ...this.debugEnabled && this.log.entries.length ? [{ label: this.i18n.debugTitle, meta: String(this.log.entries.length), onSelect: () => void this.showDebugLog() }] : []
@@ -2074,14 +2131,14 @@ class ge extends HTMLElement {
2074
2131
  s(this, "onStreamTextTracks", (e) => {
2075
2132
  const i = this.streamTracks.filter((r) => r.id.startsWith("native:"));
2076
2133
  if (!e.length)
2077
- pe(this.videoEl, "stream"), this.streamCueKeys.clear(), this.streamTracks = i;
2134
+ ce(this.videoEl, "stream"), this.streamCueKeys.clear(), this.streamTracks = i;
2078
2135
  else {
2079
- const r = new Set([...this.optionTracks, ...i].map((n) => n.label));
2136
+ const r = new Set([...this.optionTracks, ...i].map((o) => o.label));
2080
2137
  this.streamTracks = [
2081
2138
  ...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) };
2139
+ ...e.map((o) => {
2140
+ const a = this.uniqueLabel(this.streamTrackLabel(o.label, o.lang) || o.id, o.kind === "captions" ? "CC" : o.lang || o.kind, r);
2141
+ return { id: o.id, label: a, track: pe(this.videoEl, "stream", o.kind, a, o.lang) };
2085
2142
  })
2086
2143
  ];
2087
2144
  }
@@ -2091,23 +2148,23 @@ class ge extends HTMLElement {
2091
2148
  var a;
2092
2149
  const r = (a = this.streamTracks.find((l) => l.id === e)) == null ? void 0 : a.track;
2093
2150
  if (!r) return;
2094
- let n = this.streamCueKeys.get(r);
2095
- n || this.streamCueKeys.set(r, n = /* @__PURE__ */ new Set());
2151
+ let o = this.streamCueKeys.get(r);
2152
+ o || this.streamCueKeys.set(r, o = /* @__PURE__ */ new Set());
2096
2153
  for (const l of i) {
2097
2154
  const d = `${l.startTime}|${l.endTime}|${l.text}`;
2098
- n.has(d) || (n.add(d), r.addCue(l));
2155
+ o.has(d) || (o.add(d), r.addCue(l));
2099
2156
  }
2100
2157
  });
2101
2158
  /** Tarayıcının kendi (native HLS) altyazı izleri — bizim havuz izlerimiz ve metadata izleri hariç. */
2102
2159
  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:"));
2160
+ const e = Array.from(this.videoEl.textTracks).filter((a) => (a.kind === "subtitles" || a.kind === "captions") && !We(a)), i = this.streamTracks.some((a) => a.id.startsWith("native:"));
2104
2161
  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));
2162
+ const r = this.streamTracks.filter((a) => !a.id.startsWith("native:")), o = new Set([...this.optionTracks, ...r].map((a) => a.label));
2106
2163
  this.streamTracks = [
2107
2164
  ...r,
2108
2165
  ...e.map((a, l) => ({
2109
2166
  id: `native:${l}`,
2110
- label: this.uniqueLabel(a.label || a.language || `${this.i18n.captions} ${l + 1}`, a.language || String(l + 1), n),
2167
+ label: this.uniqueLabel(a.label || a.language || `${this.i18n.captions} ${l + 1}`, a.language || String(l + 1), o),
2111
2168
  track: a
2112
2169
  }))
2113
2170
  ], this.rebuildCaptions(this.activeCaptionLabel);
@@ -2115,13 +2172,13 @@ class ge extends HTMLElement {
2115
2172
  /** Yayında birden fazla ses izi varsa ayarlarda "Ses" alt menüsü (HLS alternatif ses / Safari audioTracks). */
2116
2173
  s(this, "onStreamAudioTracks", (e, i) => {
2117
2174
  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)]));
2175
+ const r = this.controlBar.settingsMenu, o = /* @__PURE__ */ new Set(), a = new Map(e.map((l) => [l.index, this.uniqueLabel(this.streamTrackLabel(l.label, l.lang), String(l.index + 1), o)]));
2119
2176
  if (e.length <= 1) {
2120
- r.unregisterSubmenu(oe);
2177
+ r.unregisterSubmenu(ae);
2121
2178
  return;
2122
2179
  }
2123
2180
  r.registerSubmenu({
2124
- key: oe,
2181
+ key: ae,
2125
2182
  title: this.i18n.audioTrack,
2126
2183
  getValueLabel: () => a.get(i) ?? "",
2127
2184
  getItems: () => e.map((l) => ({ label: a.get(l.index), active: l.index === i, onSelect: () => this.sourceManager.setAudioTrack(l.index) }))
@@ -2136,12 +2193,12 @@ class ge extends HTMLElement {
2136
2193
  }
2137
2194
  if (e.length <= 1) return;
2138
2195
  this.hlsQualitiesShown = !0;
2139
- const r = (n) => `${n.height}p`;
2196
+ const r = (o) => `${o.height}p`;
2140
2197
  this.controlBar.setQualities(
2141
2198
  [
2142
2199
  { label: this.i18n.autoQuality, onSelect: () => this.sourceManager.setLevel(-1) },
2143
2200
  // 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) }))
2201
+ ...[...e].sort((o, a) => a.height - o.height).map((o) => ({ label: r(o), onSelect: () => this.sourceManager.setLevel(o.index) }))
2145
2202
  ],
2146
2203
  i === -1 ? this.i18n.autoQuality : r(e[i])
2147
2204
  );
@@ -2174,15 +2231,15 @@ class ge extends HTMLElement {
2174
2231
  if (!i && Date.now() - this.lastTouchEndAt < 800) return;
2175
2232
  i && (this.lastTouchEndAt = Date.now());
2176
2233
  const r = i ? e.changedTouches[0] : e;
2177
- if (r && Math.hypot(r.clientX - this.tapStartX, r.clientY - this.tapStartY) > Et) {
2234
+ if (r && Math.hypot(r.clientX - this.tapStartX, r.clientY - this.tapStartY) > Ct) {
2178
2235
  i && !this.isChromeBlocked && this.scheduleAutoHide();
2179
2236
  return;
2180
2237
  }
2181
- const n = i ? "touch" : this.lastPointerType, a = () => this.onBackgroundTap(n, () => {
2238
+ const o = i ? "touch" : this.lastPointerType, a = () => this.onBackgroundTap(o, () => {
2182
2239
  this.videoEl.paused ? this.videoEl.play().catch(() => {
2183
2240
  }) : this.videoEl.pause();
2184
2241
  });
2185
- r && ((d = this.tapGestures) != null && d.handleTap(r.clientX, n === "pen" ? "pen" : n, a)) || a();
2242
+ r && ((d = this.tapGestures) != null && d.handleTap(r.clientX, o === "pen" ? "pen" : o, a)) || a();
2186
2243
  });
2187
2244
  s(this, "onVideoPressCancel", () => {
2188
2245
  this.tapCandidate = !1;
@@ -2198,79 +2255,79 @@ class ge extends HTMLElement {
2198
2255
  e.pointerType === "mouse" && (this.pointerOverControls = !1, this.scheduleAutoHide(), this.showCursor());
2199
2256
  });
2200
2257
  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)));
2258
+ this.showChrome(), this.hideTimer && clearTimeout(this.hideTimer), !(this.videoEl.paused || this.loadingActive) && (this.audioMode || (this.hideTimer = setTimeout(() => {
2259
+ this.audioMode || this.videoEl.paused || this.loadingActive || this.pointerOverControls || this.controlBar.settingsMenu.isOpen || this.setChromeOpacity("0");
2260
+ }, this.lastPointerType === "mouse" ? this.autoHideDelayMs : Math.max(this.autoHideDelayMs, Et))));
2204
2261
  });
2205
- ut(), this.root = this.attachShadow({ mode: "open" });
2262
+ mt(), this.root = this.attachShadow({ mode: "open" });
2206
2263
  const e = document.createElement("style");
2207
- e.textContent = ye, this.root.appendChild(e);
2264
+ e.textContent = ke, this.root.appendChild(e);
2208
2265
  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";
2266
+ 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 qe(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
2267
  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) => {
2268
+ 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
2269
  var c;
2213
2270
  const a = () => {
2214
2271
  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, {
2272
+ }, l = this.lastPointerType === "pen" ? "pen" : this.lastPointerType === "touch" ? "touch" : null, u = o.composedPath().includes(r) ? a : () => this.onBackgroundTap(l ?? "mouse", a);
2273
+ l && ((c = this.tapGestures) != null && c.handleTap(o.clientX, l, u)) || u();
2274
+ }), 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 we(this.videoEl, {
2218
2275
  onLevelsChanged: this.onHlsLevelsChanged,
2219
2276
  onAudioTracksChanged: this.onStreamAudioTracks,
2220
2277
  onTextTracksFound: this.onStreamTextTracks,
2221
2278
  onCues: this.onStreamCues,
2222
- onFatalError: (n) => this.errorScreen.showStreamError(n === "network" ? 2 : 3),
2223
- onStreamError: (n) => this.log.add({
2279
+ onFatalError: (o) => this.errorScreen.showStreamError(o === "network" ? 2 : 3),
2280
+ onStreamError: (o) => this.log.add({
2224
2281
  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" }
2282
+ message: `${o.type}: ${o.details}`,
2283
+ fatal: o.fatal,
2284
+ details: { url: o.url, httpStatus: o.httpStatus, reason: o.reason, engine: "hls.js" }
2228
2285
  })
2229
- }), this.errorScreen.setShouldShow(() => !this.sourceManager.isRecovering()), this.controlBar = new ze(
2286
+ }), this.errorScreen.setShouldShow(() => !this.sourceManager.isRecovering()), this.controlBar = new Ne(
2230
2287
  this.videoEl,
2231
- xt,
2288
+ wt,
2232
2289
  {
2233
2290
  onRequestFullscreen: () => this.requestFullscreenCompat(),
2234
2291
  liveSyncPosition: () => {
2235
- var n;
2236
- return ((n = this.sourceManager.hlsInstance) == null ? void 0 : n.liveSyncPosition) ?? null;
2292
+ var o;
2293
+ return ((o = this.sourceManager.hlsInstance) == null ? void 0 : o.liveSyncPosition) ?? null;
2237
2294
  },
2238
2295
  onExitFullscreen: () => this.exitFullscreenCompat(),
2239
2296
  isFullscreen: () => this.isFullscreenActive(),
2240
2297
  // adsController sonradan kurulur — closure'lar her çağrıda güncel this.adsController'ı okur.
2241
2298
  isAdActive: () => this.isAdPlaying(),
2242
2299
  interceptTogglePlay: () => this.cancelPrerollWait(),
2243
- onLoadingChange: (n) => this.onLoadingChange(n),
2300
+ onLoadingChange: (o) => this.onLoadingChange(o),
2244
2301
  adTogglePlay: () => {
2245
- var n;
2246
- return (n = this.adsController) == null ? void 0 : n.toggleAdPlayPause();
2302
+ var o;
2303
+ return (o = this.adsController) == null ? void 0 : o.toggleAdPlayPause();
2247
2304
  },
2248
2305
  adIsPaused: () => {
2249
- var n;
2250
- return ((n = this.adsController) == null ? void 0 : n.isAdPaused()) ?? !0;
2306
+ var o;
2307
+ return ((o = this.adsController) == null ? void 0 : o.isAdPaused()) ?? !0;
2251
2308
  },
2252
2309
  adVolume: {
2253
2310
  isAdActive: () => this.isAdPlaying(),
2254
2311
  getVolume: () => {
2255
- var n;
2256
- return ((n = this.adsController) == null ? void 0 : n.getAdVolume()) ?? 1;
2312
+ var o;
2313
+ return ((o = this.adsController) == null ? void 0 : o.getAdVolume()) ?? 1;
2257
2314
  },
2258
- setVolume: (n) => {
2315
+ setVolume: (o) => {
2259
2316
  var a;
2260
- return (a = this.adsController) == null ? void 0 : a.setAdVolume(n);
2317
+ return (a = this.adsController) == null ? void 0 : a.setAdVolume(o);
2261
2318
  },
2262
2319
  toggleMute: () => {
2263
- var n;
2264
- return (n = this.adsController) == null ? void 0 : n.toggleAdMute();
2320
+ var o;
2321
+ return (o = this.adsController) == null ? void 0 : o.toggleAdMute();
2265
2322
  }
2266
2323
  }
2267
2324
  },
2268
2325
  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(
2326
+ ), this.chromeEl.appendChild(this.controlBar.el), this.chromeEl.appendChild(this.controlBar.topEl), this.videoArea.appendChild(this.controlBar.volumePanel.unmuteBadge), this.captionRenderer = new P(this.videoEl, this.videoArea, this.controlBar.seekBar.el, this.i18n), this.videoArea.appendChild(this.captionRenderer.layerEl), this.keyboard = new _e(
2270
2327
  this,
2271
2328
  this.videoEl,
2272
2329
  () => 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");
2330
+ ), 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
2331
  }
2275
2332
  static get observedAttributes() {
2276
2333
  return ["src", "poster", "autoplay", "muted", "loop", "theme", "locale"];
@@ -2286,8 +2343,8 @@ class ge extends HTMLElement {
2286
2343
  }), 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
2344
  }
2288
2345
  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;
2346
+ var e, i, r, o, a, l, d, u, c, g, h, p, m, b, v, y, f, k, T, x, S, F, H, _;
2347
+ (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), (a = this.tapGestures) == null || a.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, (g = this.inViewAutoplay) == null || g.destroy(), (h = this.unregisterSticky) == null || h.call(this), (p = this.playlistRunner) == null || p.destroy(), (m = this.hopeStory) == null || m.destroy(), (b = this.markProgress) == null || b.destroy(), (v = this.segments) == null || v.destroy(), (y = this.spriteThumbnails) == null || y.destroy(), (f = this.countdownScreen) == null || f.destroy(), (k = this.geoChecker) == null || k.destroy(), (T = this.redirectScreen) == null || T.destroy(), (x = this.qrResume) == null || x.destroy(), (S = this.pauseAd) == null || S.destroy(), this.pauseAd = null, (F = this.dubbing) == null || F.destroy(), (H = this.liveWallClock) == null || H.destroy(), (_ = this.daiController) == null || _.destroy(), this.prerollGate.release(!1), this.hideTimer && clearTimeout(this.hideTimer), this.bootGraceTimer && clearTimeout(this.bootGraceTimer), this.lastSynced = null;
2291
2348
  }
2292
2349
  /** Reklam/consent-farkında plugin'lerin (gesture/sticky/in-view-autoplay) ortak sorgusu. */
2293
2350
  isAdPlaying() {
@@ -2320,7 +2377,7 @@ class ge extends HTMLElement {
2320
2377
  async showDebugLog() {
2321
2378
  if (!this.debugPanel) {
2322
2379
  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 }));
2380
+ this.debugPanel ?? (this.debugPanel = e({ containerEl: this.videoArea, i18n: this.i18n, log: this.log, version: B }));
2324
2381
  }
2325
2382
  this.debugPanel.show();
2326
2383
  }
@@ -2333,7 +2390,7 @@ class ge extends HTMLElement {
2333
2390
  videoEl: this.videoEl,
2334
2391
  containerEl: this.videoArea,
2335
2392
  i18n: this.i18n,
2336
- version: M,
2393
+ version: B,
2337
2394
  getEngine: () => this.sourceManager.engine,
2338
2395
  getHls: () => this.sourceManager.hlsInstance
2339
2396
  }));
@@ -2391,22 +2448,25 @@ class ge extends HTMLElement {
2391
2448
  })), this.pluginApplyRun;
2392
2449
  }
2393
2450
  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;
2451
+ var a, l, d, u, c, g, h, p, m, b, v, y, f, k, T, x, S;
2452
+ 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 ?? re, this.tapToPlay = e.tapToPlay ?? "auto", this.cursorHideDelayMs = e.cursorHideDelayMs === !1 ? null : e.cursorHideDelayMs ?? oe, 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 || (a = this.debugPanel) == null || a.hide(), this.contextMenuConfig = e.contextMenu === !1 ? null : { stats: typeof e.contextMenu == "object" && e.contextMenu.stats === !0 }, this.contextMenuConfig || this.contextMenu.close();
2453
+ const i = e.keyboardSeekStep && e.keyboardSeekStep > 0 ? e.keyboardSeekStep : Tt;
2397
2454
  this.keyboard.seekStep = i, this.controlBar.seekBar.keyboardStep = i;
2398
2455
  const r = e.skipButtons === !0 ? {} : e.skipButtons || null;
2399
2456
  this.controlBar.setSkipButtons(
2400
2457
  r && r.back !== !1 ? r.back ?? ne : null,
2401
2458
  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);
2459
+ ), e.showRemainingTime !== void 0 && e.showRemainingTime !== this.appliedShowRemaining && (this.appliedShowRemaining = e.showRemainingTime, this.controlBar.setShowRemaining(e.showRemainingTime));
2460
+ const o = At(e.aspectRatio);
2461
+ 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(), (g = this.redirectScreen) == null || g.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), (b = this.statsPanel) == null || b.refreshLabels(), (v = this.debugPanel) == null || v.refreshLabels(), (y = this.liveWallClock) == null || y.refreshLabels(), (f = this.loopSection) == null || f.refreshLabels(), (k = this.audioStage) == null || k.refreshLabels(), (T = this.markProgress) == null || T.refreshLabels(), (S = (x = this.unregisterSticky) == null ? void 0 : x.refreshLabels) == null || S.call(x), this.bootResolved && await this.queuePluginApply(e);
2403
2462
  }
2404
2463
  /** applyOptions'ın asenkron kısmı — yalnızca queuePluginApply üzerinden, sırayla çalışır. */
2405
2464
  async applyPluginsAndPlayback(e) {
2406
2465
  if (e.ads && !this.adsController) {
2407
2466
  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);
2467
+ vt(r) && !this.prerollGate.isArmed && this.prerollGate.arm(r.prerollTimeoutMs ?? D), xt(), e.countdownScreen || this.installAdsOnce(e);
2409
2468
  }
2469
+ await this.applyAudioMode(e);
2410
2470
  const i = () => ({
2411
2471
  videoEl: this.videoEl,
2412
2472
  overlayContainerEl: this.videoArea,
@@ -2428,20 +2488,16 @@ class ge extends HTMLElement {
2428
2488
  }))) : await this.initPlayback(e);
2429
2489
  }
2430
2490
  async initPlayback(e) {
2431
- var r, n, a, l, d, m, c;
2491
+ var o, a, l, d, u, c, g;
2432
2492
  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(
2493
+ 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];
2494
+ 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(() => {
2495
+ })), i.length > 1 && this.controlBar.setQualities(
2440
2496
  i.map((h) => ({
2441
2497
  label: h.label,
2442
2498
  onSelect: () => void this.switchQualitySource(h)
2443
2499
  })),
2444
- ((n = i.find((h) => h.selected)) == null ? void 0 : n.label) ?? i[0].label
2500
+ ((a = i.find((h) => h.selected)) == null ? void 0 : a.label) ?? i[0].label
2445
2501
  ), await this.installAdsOnce(e), e.gesture && !this.gestureControls) {
2446
2502
  const h = e.gesture === !0 ? {} : e.gesture, { installGesture: p } = await import("./index-Ca8hocby.js");
2447
2503
  this.gestureControls = p(
@@ -2456,7 +2512,7 @@ class ge extends HTMLElement {
2456
2512
  videoEl: this.videoEl,
2457
2513
  seekBarEl: this.controlBar.seekBar.el,
2458
2514
  markers: this.controlBar.seekBar,
2459
- addControlButton: (u, b, g) => this.controlBar.addButton(u, b, g),
2515
+ addControlButton: (m, b, v) => this.controlBar.addButton(m, b, v),
2460
2516
  i18n: this.i18n
2461
2517
  },
2462
2518
  h
@@ -2485,19 +2541,19 @@ class ge extends HTMLElement {
2485
2541
  );
2486
2542
  }
2487
2543
  if (e.playlist && !this.playlistRunner) {
2488
- const { installPlaylist: h } = await import("./index-C3s21eZa.js");
2544
+ const { installPlaylist: h } = await import("./index-CP1Y6U0c.js");
2489
2545
  this.playlistRunner = h(
2490
2546
  {
2491
2547
  videoEl: this.videoEl,
2492
2548
  hostEl: this,
2493
2549
  panelEl: this.getOrCreatePanelContainer(),
2494
- loadSource: (p, u) => this.sourceManager.load(p, u),
2550
+ loadSource: (p, m) => this.sourceManager.load(p, m),
2495
2551
  setPoster: (p) => {
2496
2552
  this.videoEl.poster = p;
2497
2553
  },
2498
2554
  requestFreshAd: (p) => {
2499
- var u;
2500
- return (u = this.adsController) == null ? void 0 : u.resetForNewItem(p);
2555
+ var m;
2556
+ return (m = this.adsController) == null ? void 0 : m.resetForNewItem(p);
2501
2557
  },
2502
2558
  i18n: this.i18n
2503
2559
  },
@@ -2505,20 +2561,20 @@ class ge extends HTMLElement {
2505
2561
  );
2506
2562
  }
2507
2563
  if (e.story && !this.hopeStory) {
2508
- const { installStory: h } = await import("./index-_-pYIxvh.js");
2564
+ const { installStory: h } = await import("./index-BO0tjMR6.js");
2509
2565
  this.hopeStory = h(
2510
2566
  {
2511
2567
  videoEl: this.videoEl,
2512
2568
  hostEl: this,
2513
2569
  videoAreaEl: this.videoArea,
2514
2570
  playerBodyEls: [this.root.querySelector(".media-layer"), this.chromeEl, this.centerPlayButton],
2515
- loadSource: (p, u) => this.sourceManager.load(p, u),
2571
+ loadSource: (p, m) => this.sourceManager.load(p, m),
2516
2572
  setPoster: (p) => {
2517
2573
  this.videoEl.poster = p;
2518
2574
  },
2519
2575
  requestFreshAd: (p) => {
2520
- var u;
2521
- return (u = this.adsController) == null ? void 0 : u.resetForNewItem(p);
2576
+ var m;
2577
+ return (m = this.adsController) == null ? void 0 : m.resetForNewItem(p);
2522
2578
  },
2523
2579
  i18n: this.i18n
2524
2580
  },
@@ -2526,23 +2582,23 @@ class ge extends HTMLElement {
2526
2582
  );
2527
2583
  }
2528
2584
  if (e.markers && !this.markProgress) {
2529
- const { installMarkers: h } = await import("./index-adiWYyto.js");
2585
+ const { installMarkers: h } = await import("./index-048h1-5X.js");
2530
2586
  this.markProgress = h(
2531
2587
  {
2532
2588
  videoEl: this.videoEl,
2533
2589
  overlayContainerEl: this.videoArea,
2534
- addSeekBarMarker: (p, u) => this.controlBar.seekBar.addMarker(p, u),
2590
+ addSeekBarMarker: (p, m) => this.controlBar.seekBar.addMarker(p, m),
2535
2591
  i18n: this.i18n
2536
2592
  },
2537
2593
  e.markers
2538
2594
  );
2539
2595
  }
2540
- if ((a = e.segments) != null && a.length && !this.segments) {
2541
- const { installSegments: h } = await import("./index-nvfNBIM_.js");
2596
+ if ((l = e.segments) != null && l.length && !this.segments) {
2597
+ const { installSegments: h } = await import("./index-9NzklChR.js");
2542
2598
  this.segments = h({ videoEl: this.videoEl, seekBar: this.controlBar.seekBar }, e.segments);
2543
2599
  }
2544
2600
  if (e.spriteThumbnails && !this.spriteThumbnails) {
2545
- const { installSpriteThumbnails: h } = await import("./index-DBwvWiuK.js");
2601
+ const { installSpriteThumbnails: h } = await import("./index-n-1IIClr.js");
2546
2602
  this.spriteThumbnails = h(
2547
2603
  {
2548
2604
  videoEl: this.videoEl,
@@ -2577,7 +2633,7 @@ class ge extends HTMLElement {
2577
2633
  {
2578
2634
  areaEl: this.videoArea,
2579
2635
  seekBy: (p) => {
2580
- this.controlBar.seekBar.el.style.pointerEvents !== "none" && (ae(this.videoEl, p), this.seekFeedback.show(p));
2636
+ this.controlBar.seekBar.el.style.pointerEvents !== "none" && (le(this.videoEl, p), this.seekFeedback.show(p));
2581
2637
  },
2582
2638
  togglePlay: () => this.videoEl.paused ? void this.videoEl.play().catch(() => {
2583
2639
  }) : this.videoEl.pause(),
@@ -2593,7 +2649,7 @@ class ge extends HTMLElement {
2593
2649
  const { DEFAULT_TAP_GESTURES: h } = await import("./index-C5oGMHF_.js");
2594
2650
  this.tapGestures.setGestures(e.tapGestures === !0 ? h : e.tapGestures || []);
2595
2651
  }
2596
- if ((l = e.pauseAd) != null && l.adUnitPath && !this.pauseAd) {
2652
+ if ((d = e.pauseAd) != null && d.adUnitPath && !this.pauseAd) {
2597
2653
  const { installPauseAd: h } = await import("./index-CaMVTgh0.js");
2598
2654
  this.pauseAd = h(
2599
2655
  { videoEl: this.videoEl, hostEl: this, videoArea: this.videoArea, i18n: this.i18n, isBlocked: () => this.isChromeBlocked },
@@ -2605,7 +2661,7 @@ class ge extends HTMLElement {
2605
2661
  this.dubbing = h(
2606
2662
  {
2607
2663
  videoEl: this.videoEl,
2608
- loadSource: (p, u) => this.sourceManager.load(p, u),
2664
+ loadSource: (p, m) => this.sourceManager.load(p, m),
2609
2665
  registerSubmenu: (p) => this.controlBar.settingsMenu.registerSubmenu(p),
2610
2666
  unregisterSubmenu: (p) => this.controlBar.settingsMenu.unregisterSubmenu(p),
2611
2667
  i18n: this.i18n
@@ -2619,14 +2675,14 @@ class ge extends HTMLElement {
2619
2675
  {
2620
2676
  videoEl: this.videoEl,
2621
2677
  seekBarEl: this.controlBar.seekBar.el,
2622
- addControlElement: (u) => this.controlBar.addElement(u),
2678
+ addControlElement: (m) => this.controlBar.addElement(m),
2623
2679
  i18n: this.i18n,
2624
2680
  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;
2681
+ var y, f, k;
2682
+ const m = (y = this.sourceManager.hlsInstance) == null ? void 0 : y.playingDate;
2683
+ if (m) return m;
2684
+ const b = (k = (f = this.videoEl).getStartDate) == null ? void 0 : k.call(f), v = (b == null ? void 0 : b.getTime()) ?? NaN;
2685
+ return Number.isFinite(v) && v > 0 ? new Date(v + this.videoEl.currentTime * 1e3) : null;
2630
2686
  }
2631
2687
  },
2632
2688
  h
@@ -2646,7 +2702,7 @@ class ge extends HTMLElement {
2646
2702
  e.dai
2647
2703
  );
2648
2704
  }
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);
2705
+ (u = e.subtitles) != null && u.length ? this.optionTracks = Xe(this.videoEl, e.subtitles) : (de(this.videoEl), this.optionTracks = []), this.rebuildCaptions(((g = (c = e.subtitles) == null ? void 0 : c.find((h) => h.default)) == null ? void 0 : g.label) ?? null);
2650
2706
  }
2651
2707
  /** Altyazı menüsünü `options.subtitles` + yayın izlerinden kurar; `activeLabel` varsa onu seçer. */
2652
2708
  rebuildCaptions(e) {
@@ -2654,17 +2710,17 @@ class ge extends HTMLElement {
2654
2710
  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
2711
  return;
2656
2712
  }
2657
- const i = (n) => {
2713
+ const i = (o) => {
2658
2714
  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);
2715
+ const a = $e(this.subtitleTracks, o);
2716
+ this.activeCaptionLabel = a ? o : null, this.sourceManager.selectTextTrack(((l = this.streamTracks.find((d) => d.label === o)) == null ? void 0 : l.id) ?? null), this.captionRenderer.setActiveTrack(a), this.captionTrackActive = a !== null, this.controlBar.settingsMenu.setActiveCaption(a ? o : this.i18n.captionsOff), this.controlBar.settingsMenu.setCaptionAppearance(a !== null ? this.buildCaptionAppearance() : null);
2661
2717
  };
2662
2718
  this.selectCaption = i;
2663
- const r = e && this.subtitleTracks.some((n) => n.label === e) ? e : null;
2719
+ const r = e && this.subtitleTracks.some((o) => o.label === e) ? e : null;
2664
2720
  this.controlBar.setCaptions(
2665
2721
  [
2666
2722
  { label: this.i18n.captionsOff, onSelect: () => i(null) },
2667
- ...this.subtitleTracks.map(({ label: n }) => ({ label: n, onSelect: () => i(n) }))
2723
+ ...this.subtitleTracks.map(({ label: o }) => ({ label: o, onSelect: () => i(o) }))
2668
2724
  ],
2669
2725
  r ?? this.i18n.captionsOff
2670
2726
  ), i(r);
@@ -2676,23 +2732,23 @@ class ge extends HTMLElement {
2676
2732
  streamTrackLabel(e, i) {
2677
2733
  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
2734
  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);
2735
+ const o = new Intl.DisplayNames([this.localeCode], { type: "language" }).of(i);
2736
+ if (o) return o.charAt(0).toLocaleUpperCase(this.localeCode) + o.slice(1);
2681
2737
  } catch {
2682
2738
  }
2683
2739
  return e || i;
2684
2740
  }
2685
2741
  /** Aynı adlı iz varsa (ör. options.subtitles'ta da "English") dil/sırayla ayırt edilir. */
2686
2742
  uniqueLabel(e, i, r) {
2687
- const n = r.has(e) ? `${e} (${i})` : e;
2688
- return r.add(n), n;
2743
+ const o = r.has(e) ? `${e} (${i})` : e;
2744
+ return r.add(o), o;
2689
2745
  }
2690
2746
  /** 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
2747
  buildCaptionAppearance() {
2692
- const e = ["small", "normal", "large"], i = (r, n, a, l) => r.map((d, m) => ({
2748
+ const e = ["small", "normal", "large"], i = (r, o, a, l) => r.map((d, u) => ({
2693
2749
  value: d,
2694
- active: n() === d,
2695
- ariaLabel: `${l} ${m + 1}`,
2750
+ active: o() === d,
2751
+ ariaLabel: `${l} ${u + 1}`,
2696
2752
  onSelect: () => a(d)
2697
2753
  }));
2698
2754
  return {
@@ -2704,14 +2760,14 @@ class ge extends HTMLElement {
2704
2760
  })),
2705
2761
  bgColorLabel: this.i18n.captionBgColor,
2706
2762
  getBgColorOptions: () => i(
2707
- S.BG_COLOR_PRESETS,
2763
+ P.BG_COLOR_PRESETS,
2708
2764
  () => this.captionRenderer.getBgColor(),
2709
2765
  (r) => this.captionRenderer.setBgColor(r),
2710
2766
  this.i18n.captionBgColor
2711
2767
  ),
2712
2768
  textColorLabel: this.i18n.captionTextColor,
2713
2769
  getTextColorOptions: () => i(
2714
- S.TEXT_COLOR_PRESETS,
2770
+ P.TEXT_COLOR_PRESETS,
2715
2771
  () => this.captionRenderer.getTextColor(),
2716
2772
  (r) => this.captionRenderer.setTextColor(r),
2717
2773
  this.i18n.captionTextColor
@@ -2735,9 +2791,10 @@ class ge extends HTMLElement {
2735
2791
  return this.videoEl;
2736
2792
  }
2737
2793
  requestFullscreenCompat() {
2794
+ if (this.audioMode) return;
2738
2795
  const e = this, i = () => {
2739
- var r, n;
2740
- return (n = (r = this.iosVideo).webkitEnterFullscreen) == null ? void 0 : n.call(r);
2796
+ var r, o;
2797
+ return (o = (r = this.iosVideo).webkitEnterFullscreen) == null ? void 0 : o.call(r);
2741
2798
  };
2742
2799
  e.requestFullscreen ? e.requestFullscreen().catch(i) : e.webkitRequestFullscreen ? e.webkitRequestFullscreen() : i();
2743
2800
  }
@@ -2782,20 +2839,20 @@ class ge extends HTMLElement {
2782
2839
  * alanın ortasına alınır, sığmazsa küçülür (en az 40px).
2783
2840
  */
2784
2841
  layoutCenterPlay() {
2785
- const e = this.videoArea, i = e.getBoundingClientRect(), r = this.controlBar.seekBar.el.getBoundingClientRect(), n = () => {
2842
+ const e = this.videoArea, i = e.getBoundingClientRect(), r = this.controlBar.seekBar.el.getBoundingClientRect(), o = () => {
2786
2843
  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
2844
  };
2788
- if (!i.height || !r.height || !e.hasAttribute("data-compact")) return n();
2845
+ if (!i.height || !r.height || !e.hasAttribute("data-compact")) return o();
2789
2846
  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));
2847
+ if (i.height / 2 + a / 2 <= l) return o();
2848
+ 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);
2849
+ let g = 0;
2850
+ const h = this.controlBar.topEl.getBoundingClientRect();
2851
+ if (h.width > 0 && u - d / 2 < h.bottom - i.top) {
2852
+ const p = h.left - i.left - 8 - d / 2;
2853
+ i.width / 2 > p && (g = Math.round(Math.max(d / 2 + 8, p) - i.width / 2));
2797
2854
  }
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`);
2855
+ e.setAttribute("data-center-play-shifted", ""), e.style.setProperty("--hp-center-play-shift-x", `${g}px`), e.style.setProperty("--hp-center-play-size", `${d}px`), e.style.setProperty("--hp-center-play-shift", `${c}px`);
2799
2856
  }
2800
2857
  /** Dar player'da dokunmatikte oynat/duraklat yerine kontrolleri göster/gizle (options.tapToPlay). */
2801
2858
  tapTogglesPlay(e) {
@@ -2853,13 +2910,41 @@ class ge extends HTMLElement {
2853
2910
  showCursor() {
2854
2911
  this.cursorTimer && clearTimeout(this.cursorTimer), this.cursorTimer = null, this.removeAttribute("data-cursor-hidden");
2855
2912
  }
2913
+ /** options.audio: sahneyi kurar, günceller (konum / boyut / devir canlı değişebilir) ya da kaldırır. */
2914
+ async applyAudioMode(e) {
2915
+ var r;
2916
+ const i = e.audio ? e.audio === !0 ? {} : e.audio : null;
2917
+ if (this.audioMode = !!i, this.toggleAttribute("data-audio", !!i), this.controlBar.setAudioMode(!!i), !i) {
2918
+ (r = this.audioStage) == null || r.destroy(), this.audioStage = null;
2919
+ return;
2920
+ }
2921
+ if (this.hideTimer && clearTimeout(this.hideTimer), this.hideTimer = null, this.isChromeBlocked || this.showChrome(), this.audioStage)
2922
+ this.audioStage.update(i);
2923
+ else {
2924
+ const { installAudioStage: o } = await import("./index-BgJJr55r.js");
2925
+ if (!this.audioMode) return;
2926
+ this.audioStage ?? (this.audioStage = o(
2927
+ {
2928
+ videoEl: this.videoEl,
2929
+ layerEl: this.root.querySelector(".media-layer"),
2930
+ poster: () => this._options.poster ?? this.getAttribute("poster") ?? void 0,
2931
+ togglePlay: () => this.videoEl.paused ? void this.play().catch(() => {
2932
+ }) : this.videoEl.pause(),
2933
+ play: () => void this.play().catch(() => {
2934
+ }),
2935
+ i18n: this.i18n
2936
+ },
2937
+ i
2938
+ ));
2939
+ }
2940
+ }
2856
2941
  /** Ads plugin'ini bir kez kurar; erken (paralel) başlatılan kurulum varsa onu bekler. */
2857
2942
  installAdsOnce(e) {
2858
2943
  if (!e.ads || this.adsController) return Promise.resolve();
2859
2944
  if (!this.adsInstall) {
2860
2945
  const i = e.ads === !0 ? {} : e.ads;
2861
2946
  this.adsInstall = (async () => {
2862
- const { installAds: r } = await import("./index-Br_RybXV.js");
2947
+ const { installAds: r } = await import("./index-BCMVXNL0.js");
2863
2948
  this.adsController = await r(
2864
2949
  {
2865
2950
  videoEl: this.videoEl,
@@ -2873,13 +2958,18 @@ class ge extends HTMLElement {
2873
2958
  onAdPlayStateChange: () => this.controlBar.refreshAdPlayState(),
2874
2959
  locale: this.localeCode,
2875
2960
  prerollGate: this.prerollGate,
2876
- log: (n) => this.log.add({ source: "ads", ...n }),
2877
- onAdProgress: (n) => this.controlBar.setAdInfo(n),
2961
+ log: (o) => this.log.add({ source: "ads", ...o }),
2962
+ onAdProgress: (o) => this.controlBar.setAdInfo(o),
2878
2963
  // Sürekli oynatma (vconp): playlist / story bir sonraki içeriği kendiliğinden başlatıyorsa.
2879
2964
  isContinuousPlayback: () => {
2880
- const n = this._options, a = (l) => !!l && l.autoplayNext !== !1;
2881
- return a(n.playlist) || a(n.story);
2965
+ const o = this._options, a = (l) => !!l && l.autoplayNext !== !1;
2966
+ return a(o.playlist) || a(o.story);
2882
2967
  },
2968
+ audioPoster: (() => {
2969
+ if (!e.audio) return;
2970
+ const o = e.audio === !0 ? {} : e.audio;
2971
+ return o.adPoster ? new URL(o.adPoster, document.baseURI).href : void 0;
2972
+ })(),
2883
2973
  surface: {
2884
2974
  videoEl: this.videoEl,
2885
2975
  containerEl: this.videoArea,
@@ -2911,12 +3001,12 @@ class ge extends HTMLElement {
2911
3001
  }
2912
3002
  }
2913
3003
  /** 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);
3004
+ s(fe, "version", B);
3005
+ typeof window < "u" && !customElements.get("hope-player") && customElements.define("hope-player", fe);
2916
3006
  export {
2917
- M as H,
2918
- ge as a,
2919
- w as c,
2920
- x as f
3007
+ B as H,
3008
+ fe as a,
3009
+ E as c,
3010
+ w as f
2921
3011
  };
2922
- //# sourceMappingURL=index-D2aXO0eh.js.map
3012
+ //# sourceMappingURL=index-01P9jpUY.js.map