@mottosports/motto-video-player 1.0.1-rc.2 → 1.0.1-rc.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,5 +1,8 @@
1
1
  "use client";
2
2
 
3
+ // src/index.ts
4
+ import "shaka-player/dist/controls.css";
5
+
3
6
  // #style-inject:#style-inject
4
7
  function styleInject(css, { insertAt } = {}) {
5
8
  if (!css || typeof document === "undefined") return;
@@ -23,7 +26,1081 @@ function styleInject(css, { insertAt } = {}) {
23
26
  }
24
27
 
25
28
  // src/index.css
26
- styleInject('/*! tailwindcss v4.1.8 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root,\n :host {\n --font-sans:\n ui-sans-serif,\n system-ui,\n sans-serif,\n "Apple Color Emoji",\n "Segoe UI Emoji",\n "Segoe UI Symbol",\n "Noto Color Emoji";\n --font-mono:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n "Liberation Mono",\n "Courier New",\n monospace;\n --color-red-600: oklch(57.7% 0.245 27.325);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-5xl: 3rem;\n --text-5xl--line-height: 1;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --tracking-wide: 0.025em;\n --tracking-widest: 0.1em;\n --radius-md: 0.375rem;\n --radius-2xl: 1rem;\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --aspect-video: 16 / 9;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n }\n}\n@layer base {\n *,\n ::after,\n ::before,\n ::backdrop,\n ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html,\n :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b,\n strong {\n font-weight: bolder;\n }\n code,\n kbd,\n samp,\n pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub,\n sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol,\n ul,\n menu {\n list-style: none;\n }\n img,\n svg,\n video,\n canvas,\n audio,\n iframe,\n embed,\n object {\n display: block;\n vertical-align: middle;\n }\n img,\n video {\n max-width: 100%;\n height: auto;\n }\n button,\n input,\n select,\n optgroup,\n textarea,\n ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit,\n ::-webkit-datetime-edit-year-field,\n ::-webkit-datetime-edit-month-field,\n ::-webkit-datetime-edit-day-field,\n ::-webkit-datetime-edit-hour-field,\n ::-webkit-datetime-edit-minute-field,\n ::-webkit-datetime-edit-second-field,\n ::-webkit-datetime-edit-millisecond-field,\n ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button,\n input:where([type=button], [type=reset], [type=submit]),\n ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button,\n ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=until-found])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-auto {\n pointer-events: auto;\n }\n .pointer-events-none {\n pointer-events: none;\n }\n .visible {\n visibility: visible;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .static {\n position: static;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-4 {\n top: calc(var(--spacing) * 4);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .bottom-4 {\n bottom: calc(var(--spacing) * 4);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .left-4 {\n left: calc(var(--spacing) * 4);\n }\n .z-10 {\n z-index: 10;\n }\n .z-50 {\n z-index: 50;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .m-6 {\n margin: calc(var(--spacing) * 6);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-3 {\n margin-top: calc(var(--spacing) * 3);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .aspect-video {\n aspect-ratio: var(--aspect-video);\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-24 {\n height: calc(var(--spacing) * 24);\n }\n .h-full {\n height: 100%;\n }\n .w-2 {\n width: calc(var(--spacing) * 2);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n .w-full {\n width: 100%;\n }\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .auto-cols-max {\n grid-auto-columns: max-content;\n }\n .grid-flow-col {\n grid-auto-flow: column;\n }\n .flex-col {\n flex-direction: column;\n }\n .items-center {\n align-items: center;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-stretch {\n justify-content: stretch;\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-5 {\n gap: calc(var(--spacing) * 5);\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-md {\n border-radius: var(--radius-md);\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-white {\n border-color: var(--color-white);\n }\n .bg-\\[\\#151515\\] {\n background-color: #151515;\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-red-600 {\n background-color: var(--color-red-600);\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .bg-gradient-to-t {\n --tw-gradient-position: to top in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .from-black\\/70 {\n --tw-gradient-from: color-mix(in srgb, #000 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-from: color-mix(in oklab, var(--color-black) 70%, transparent);\n }\n --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));\n }\n .to-transparent {\n --tw-gradient-to: transparent;\n --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));\n }\n .bg-cover {\n background-size: cover;\n }\n .bg-center {\n background-position: center;\n }\n .bg-no-repeat {\n background-repeat: no-repeat;\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\n }\n .font-mono {\n font-family: var(--font-mono);\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-5xl {\n font-size: var(--text-5xl);\n line-height: var(--tw-leading, var(--text-5xl--line-height));\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .text-\\[10px\\] {\n font-size: 10px;\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-wide {\n --tw-tracking: var(--tracking-wide);\n letter-spacing: var(--tracking-wide);\n }\n .tracking-widest {\n --tw-tracking: var(--tracking-widest);\n letter-spacing: var(--tracking-widest);\n }\n .text-white {\n color: var(--color-white);\n }\n .uppercase {\n text-transform: uppercase;\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow:\n var(--tw-inset-shadow),\n var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow);\n }\n .filter {\n 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,);\n }\n .md\\:rounded-2xl {\n @media (width >= 48rem) {\n border-radius: var(--radius-2xl);\n }\n }\n .md\\:rounded-2xl\\! {\n @media (width >= 48rem) {\n border-radius: var(--radius-2xl) !important;\n }\n }\n .md\\:text-base {\n @media (width >= 48rem) {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n }\n .md\\:text-sm {\n @media (width >= 48rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .md\\:text-xl {\n @media (width >= 48rem) {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n }\n}\n@layer components {\n .motto-video-container {\n position: relative;\n width: 100%;\n min-height: 300px;\n }\n @supports (aspect-ratio: 16/9) {\n .motto-video-container {\n min-height: auto;\n }\n }\n .motto-video-responsive {\n position: absolute;\n top: calc(var(--spacing) * 0);\n left: calc(var(--spacing) * 0);\n height: 100%;\n width: 100%;\n }\n .motto-skip-button {\n position: absolute;\n top: calc(1/2 * 100%);\n z-index: 10;\n display: flex;\n height: calc(var(--spacing) * 16);\n width: calc(var(--spacing) * 16);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n cursor: pointer;\n align-items: center;\n justify-content: center;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 0px;\n background-color: color-mix(in srgb, #000 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 70%, transparent);\n }\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n color: var(--color-white);\n opacity: 80%;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 200ms;\n transition-duration: 200ms;\n &:hover {\n @media (hover: hover) {\n --tw-scale-x: 110%;\n --tw-scale-y: 110%;\n --tw-scale-z: 110%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n &:active {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n .motto-skip-button-back {\n left: calc(var(--spacing) * 5);\n }\n .motto-skip-button-forward {\n right: calc(var(--spacing) * 5);\n }\n .motto-mobile-controls-overlay {\n position: absolute;\n inset: calc(var(--spacing) * 0);\n z-index: 20;\n display: flex;\n align-items: center;\n justify-content: center;\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 300ms;\n transition-duration: 300ms;\n pointer-events: none;\n }\n .motto-mobile-controls-group {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 8);\n opacity: 100%;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 200ms;\n transition-duration: 200ms;\n pointer-events: none;\n }\n .motto-mobile-play-button {\n display: flex;\n height: calc(var(--spacing) * 14);\n width: calc(var(--spacing) * 14);\n cursor: pointer;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 0px;\n background-color: color-mix(in srgb, #000 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 30%, transparent);\n }\n color: var(--color-white);\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow:\n var(--tw-inset-shadow),\n var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow);\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 200ms;\n transition-duration: 200ms;\n pointer-events: auto;\n }\n .motto-mobile-play-button:active {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .motto-mobile-play-button svg {\n height: calc(var(--spacing) * 7);\n width: calc(var(--spacing) * 7);\n }\n .motto-mobile-skip-button {\n display: flex;\n height: calc(var(--spacing) * 10);\n width: calc(var(--spacing) * 10);\n cursor: pointer;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 0px;\n background-color: color-mix(in srgb, #000 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 30%, transparent);\n }\n color: var(--color-white);\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow:\n var(--tw-inset-shadow),\n var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow);\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 200ms;\n transition-duration: 200ms;\n pointer-events: auto;\n }\n .motto-mobile-skip-button:active {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .motto-mobile-skip-button svg {\n height: calc(var(--spacing) * 6);\n width: calc(var(--spacing) * 6);\n }\n}\n@media (min-width: 768px) {\n .motto-mobile-controls-overlay {\n display: none !important;\n }\n}\n@media (max-width: 767px) {\n .shaka-controls-container .motto-native-skip-button,\n .shaka-controls-container .motto-skip-back-button,\n .shaka-controls-container .motto-skip-forward-button,\n .shaka-controls-container .shaka-button[title*="Skip back"],\n .shaka-controls-container .shaka-button[title*="Skip forward"],\n .shaka-controls-container .shaka-button[aria-label*="Skip back"],\n .shaka-controls-container .shaka-button[aria-label*="Skip forward"],\n .shaka-controls-container button[title*="Skip back"],\n .shaka-controls-container button[title*="Skip forward"],\n .shaka-controls-container button[aria-label*="Skip back"],\n .shaka-controls-container button[aria-label*="Skip forward"],\n .motto-native-skip-button:not(.motto-mobile-skip-button),\n .motto-skip-back-button:not(.motto-mobile-skip-button),\n .motto-skip-forward-button:not(.motto-mobile-skip-button),\n .shaka-button[title*="Skip back"]:not(.motto-mobile-skip-button),\n .shaka-button[title*="Skip forward"]:not(.motto-mobile-skip-button),\n .shaka-button[aria-label*="Skip back"]:not(.motto-mobile-skip-button),\n .shaka-button[aria-label*="Skip forward"]:not(.motto-mobile-skip-button),\n button[title*="Skip back"]:not(.motto-mobile-skip-button),\n button[title*="Skip forward"]:not(.motto-mobile-skip-button),\n button[aria-label*="Skip back"]:not(.motto-mobile-skip-button),\n button[aria-label*="Skip forward"]:not(.motto-mobile-skip-button) {\n display: none !important;\n visibility: hidden !important;\n opacity: 0 !important;\n width: 0 !important;\n height: 0 !important;\n padding: 0 !important;\n margin: 0 !important;\n }\n .shaka-controls-container {\n z-index: 90 !important;\n height: 100px !important;\n bottom: 0 !important;\n top: unset !important;\n }\n .motto-mobile-skip-button {\n display: flex !important;\n visibility: visible !important;\n opacity: 1 !important;\n }\n}\n.shaka-seek-bar-container {\n height: 6px !important;\n width: 100% !important;\n margin: 8px 0 !important;\n border-radius: 4px !important;\n position: relative !important;\n border-top: none !important;\n border-bottom: none !important;\n box-shadow: none !important;\n}\n.shaka-seek-bar {\n height: 6px !important;\n width: 100% !important;\n -webkit-appearance: none !important;\n appearance: none !important;\n background: transparent !important;\n cursor: pointer !important;\n border: none !important;\n outline: none !important;\n position: absolute !important;\n top: 0 !important;\n left: 0 !important;\n border-radius: 4px !important;\n}\n.shaka-seek-bar::-webkit-slider-runnable-track {\n height: 6px !important;\n background: transparent !important;\n border-radius: 4px !important;\n border: none !important;\n}\n.shaka-seek-bar::-moz-range-track {\n height: 6px !important;\n background: transparent !important;\n border-radius: 4px !important;\n border: none !important;\n}\n.shaka-seek-bar::-webkit-slider-thumb {\n -webkit-appearance: none !important;\n appearance: none !important;\n width: 16px !important;\n height: 16px !important;\n border-radius: 50% !important;\n background: #ffffff !important;\n cursor: pointer !important;\n border: 2px solid #ffffff !important;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3) !important;\n margin-top: -4px !important;\n}\n.shaka-seek-bar::-moz-range-thumb {\n width: 16px !important;\n height: 16px !important;\n border-radius: 50% !important;\n background: #ffffff !important;\n cursor: pointer !important;\n border: 2px solid #ffffff !important;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3) !important;\n margin-top: -4px !important;\n}\n.motto-skip-back-button,\n.motto-skip-forward-button,\n.motto-native-skip-button {\n background: transparent !important;\n border: none !important;\n padding: 4px !important;\n margin: 0px !important;\n cursor: pointer !important;\n color: #ffffff !important;\n transition: all 0.2s ease !important;\n min-width: 32px !important;\n height: 32px !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n border-radius: 4px !important;\n width: 25px;\n}\n.motto-skip-back-button:hover,\n.motto-skip-forward-button:hover,\n.motto-native-skip-button:hover {\n opacity: 0.8 !important;\n background: transparent !important;\n transform: scale(1.05) !important;\n}\n.motto-skip-back-button:active,\n.motto-skip-forward-button:active,\n.motto-native-skip-button:active {\n transform: scale(0.95) !important;\n}\n.motto-skip-back-button svg,\n.motto-skip-forward-button svg,\n.motto-native-skip-button svg {\n width: 24px !important;\n height: 24px !important;\n}\n@media (max-width: 767px) {\n .shaka-controls-container .motto-native-skip-button,\n .shaka-controls-container .motto-skip-back-button,\n .shaka-controls-container .motto-skip-forward-button,\n .shaka-controls-container .shaka-play-button,\n .shaka-controls-container .shaka-pause-button {\n display: none !important;\n }\n}\n.shaka-spinner-svg {\n color: white !important;\n fill: white !important;\n}\n.shaka-spinner-path {\n stroke: white !important;\n fill: none !important;\n}\n.shaka-spinner-container {\n color: white !important;\n}\n.shaka-buffering-spinner {\n color: white !important;\n fill: white !important;\n}\n.shaka-buffering-spinner svg {\n color: white !important;\n fill: white !important;\n}\n.shaka-buffering-spinner path {\n stroke: white !important;\n fill: none !important;\n}\n[data-shaka-player-container] .shaka-spinner,\n[data-shaka-player-container] .spinner {\n color: white !important;\n border-color: white !important;\n}\n.material-icons.shaka-spinner {\n color: white !important;\n}\n.shaka-controls-container .shaka-spinner,\n.shaka-video-container .shaka-spinner {\n color: white !important;\n fill: white !important;\n}\n.shaka-controls-container .shaka-spinner svg,\n.shaka-video-container .shaka-spinner svg {\n color: white !important;\n fill: white !important;\n}\n.shaka-controls-container .shaka-spinner path,\n.shaka-video-container .shaka-spinner path {\n stroke: white !important;\n}\n.motto-video-loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background:\n linear-gradient(\n 135deg,\n #1a1a1a 0%,\n #2d2d2d 100%);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n z-index: 10;\n transition: opacity 0.3s ease;\n}\n.motto-video-loading-overlay.hidden {\n opacity: 0;\n pointer-events: none;\n}\n.motto-video-loading-content {\n text-align: center;\n color: white;\n}\n.motto-video-loading-icon {\n width: 64px;\n height: 64px;\n margin-bottom: 16px;\n opacity: 0.7;\n}\n.motto-video-loading-text {\n font-size: 16px;\n font-weight: 500;\n margin-bottom: 8px;\n}\n.motto-video-loading-subtext {\n font-size: 14px;\n opacity: 0.7;\n}\n@keyframes pulse-live {\n 0% {\n opacity: 1;\n transform: scale(1);\n }\n 50% {\n opacity: 0.7;\n transform: scale(1.1);\n }\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n}\n.shaka-play-button-container {\n display: none !important;\n}\n@property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; }\n@property --tw-gradient-position { syntax: "*"; inherits: false; }\n@property --tw-gradient-from { syntax: "<color>"; inherits: false; initial-value: #0000; }\n@property --tw-gradient-via { syntax: "<color>"; inherits: false; initial-value: #0000; }\n@property --tw-gradient-to { syntax: "<color>"; inherits: false; initial-value: #0000; }\n@property --tw-gradient-stops { syntax: "*"; inherits: false; }\n@property --tw-gradient-via-stops { syntax: "*"; inherits: false; }\n@property --tw-gradient-from-position { syntax: "<length-percentage>"; inherits: false; initial-value: 0%; }\n@property --tw-gradient-via-position { syntax: "<length-percentage>"; inherits: false; initial-value: 50%; }\n@property --tw-gradient-to-position { syntax: "<length-percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-font-weight { syntax: "*"; inherits: false; }\n@property --tw-tracking { syntax: "*"; inherits: false; }\n@property --tw-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-shadow-color { syntax: "*"; inherits: false; }\n@property --tw-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-inset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-inset-shadow-color { syntax: "*"; inherits: false; }\n@property --tw-inset-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-ring-color { syntax: "*"; inherits: false; }\n@property --tw-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-inset-ring-color { syntax: "*"; inherits: false; }\n@property --tw-inset-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-ring-inset { syntax: "*"; inherits: false; }\n@property --tw-ring-offset-width { syntax: "<length>"; inherits: false; initial-value: 0px; }\n@property --tw-ring-offset-color { syntax: "*"; inherits: false; initial-value: #fff; }\n@property --tw-ring-offset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-blur { syntax: "*"; inherits: false; }\n@property --tw-brightness { syntax: "*"; inherits: false; }\n@property --tw-contrast { syntax: "*"; inherits: false; }\n@property --tw-grayscale { syntax: "*"; inherits: false; }\n@property --tw-hue-rotate { syntax: "*"; inherits: false; }\n@property --tw-invert { syntax: "*"; inherits: false; }\n@property --tw-opacity { syntax: "*"; inherits: false; }\n@property --tw-saturate { syntax: "*"; inherits: false; }\n@property --tw-sepia { syntax: "*"; inherits: false; }\n@property --tw-drop-shadow { syntax: "*"; inherits: false; }\n@property --tw-drop-shadow-color { syntax: "*"; inherits: false; }\n@property --tw-drop-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-drop-shadow-size { syntax: "*"; inherits: false; }\n@property --tw-translate-x { syntax: "*"; inherits: false; initial-value: 0; }\n@property --tw-translate-y { syntax: "*"; inherits: false; initial-value: 0; }\n@property --tw-translate-z { syntax: "*"; inherits: false; initial-value: 0; }\n@property --tw-duration { syntax: "*"; inherits: false; }\n@property --tw-scale-x { syntax: "*"; inherits: false; initial-value: 1; }\n@property --tw-scale-y { syntax: "*"; inherits: false; initial-value: 1; }\n@property --tw-scale-z { syntax: "*"; inherits: false; initial-value: 1; }\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *,\n ::before,\n ::after,\n ::backdrop {\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-duration: initial;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n }\n }\n}\n');
29
+ styleInject(`/*! tailwindcss v4.1.8 | MIT License | https://tailwindcss.com */
30
+ @layer properties;
31
+ @layer theme, base, components, utilities;
32
+ @layer theme {
33
+ :root,
34
+ :host {
35
+ --font-sans:
36
+ ui-sans-serif,
37
+ system-ui,
38
+ sans-serif,
39
+ "Apple Color Emoji",
40
+ "Segoe UI Emoji",
41
+ "Segoe UI Symbol",
42
+ "Noto Color Emoji";
43
+ --font-mono:
44
+ ui-monospace,
45
+ SFMono-Regular,
46
+ Menlo,
47
+ Monaco,
48
+ Consolas,
49
+ "Liberation Mono",
50
+ "Courier New",
51
+ monospace;
52
+ --color-red-600: oklch(57.7% 0.245 27.325);
53
+ --color-black: #000;
54
+ --color-white: #fff;
55
+ --spacing: 0.25rem;
56
+ --text-xs: 0.75rem;
57
+ --text-xs--line-height: calc(1 / 0.75);
58
+ --text-sm: 0.875rem;
59
+ --text-sm--line-height: calc(1.25 / 0.875);
60
+ --text-base: 1rem;
61
+ --text-base--line-height: calc(1.5 / 1);
62
+ --text-lg: 1.125rem;
63
+ --text-lg--line-height: calc(1.75 / 1.125);
64
+ --text-xl: 1.25rem;
65
+ --text-xl--line-height: calc(1.75 / 1.25);
66
+ --text-2xl: 1.5rem;
67
+ --text-2xl--line-height: calc(2 / 1.5);
68
+ --text-5xl: 3rem;
69
+ --text-5xl--line-height: 1;
70
+ --font-weight-medium: 500;
71
+ --font-weight-semibold: 600;
72
+ --font-weight-bold: 700;
73
+ --tracking-wide: 0.025em;
74
+ --tracking-widest: 0.1em;
75
+ --radius-md: 0.375rem;
76
+ --radius-2xl: 1rem;
77
+ --animate-spin: spin 1s linear infinite;
78
+ --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
79
+ --aspect-video: 16 / 9;
80
+ --default-transition-duration: 150ms;
81
+ --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
82
+ --default-font-family: var(--font-sans);
83
+ --default-mono-font-family: var(--font-mono);
84
+ }
85
+ }
86
+ @layer base {
87
+ *,
88
+ ::after,
89
+ ::before,
90
+ ::backdrop,
91
+ ::file-selector-button {
92
+ box-sizing: border-box;
93
+ margin: 0;
94
+ padding: 0;
95
+ border: 0 solid;
96
+ }
97
+ html,
98
+ :host {
99
+ line-height: 1.5;
100
+ -webkit-text-size-adjust: 100%;
101
+ tab-size: 4;
102
+ font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");
103
+ font-feature-settings: var(--default-font-feature-settings, normal);
104
+ font-variation-settings: var(--default-font-variation-settings, normal);
105
+ -webkit-tap-highlight-color: transparent;
106
+ }
107
+ hr {
108
+ height: 0;
109
+ color: inherit;
110
+ border-top-width: 1px;
111
+ }
112
+ abbr:where([title]) {
113
+ -webkit-text-decoration: underline dotted;
114
+ text-decoration: underline dotted;
115
+ }
116
+ h1,
117
+ h2,
118
+ h3,
119
+ h4,
120
+ h5,
121
+ h6 {
122
+ font-size: inherit;
123
+ font-weight: inherit;
124
+ }
125
+ a {
126
+ color: inherit;
127
+ -webkit-text-decoration: inherit;
128
+ text-decoration: inherit;
129
+ }
130
+ b,
131
+ strong {
132
+ font-weight: bolder;
133
+ }
134
+ code,
135
+ kbd,
136
+ samp,
137
+ pre {
138
+ font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
139
+ font-feature-settings: var(--default-mono-font-feature-settings, normal);
140
+ font-variation-settings: var(--default-mono-font-variation-settings, normal);
141
+ font-size: 1em;
142
+ }
143
+ small {
144
+ font-size: 80%;
145
+ }
146
+ sub,
147
+ sup {
148
+ font-size: 75%;
149
+ line-height: 0;
150
+ position: relative;
151
+ vertical-align: baseline;
152
+ }
153
+ sub {
154
+ bottom: -0.25em;
155
+ }
156
+ sup {
157
+ top: -0.5em;
158
+ }
159
+ table {
160
+ text-indent: 0;
161
+ border-color: inherit;
162
+ border-collapse: collapse;
163
+ }
164
+ :-moz-focusring {
165
+ outline: auto;
166
+ }
167
+ progress {
168
+ vertical-align: baseline;
169
+ }
170
+ summary {
171
+ display: list-item;
172
+ }
173
+ ol,
174
+ ul,
175
+ menu {
176
+ list-style: none;
177
+ }
178
+ img,
179
+ svg,
180
+ video,
181
+ canvas,
182
+ audio,
183
+ iframe,
184
+ embed,
185
+ object {
186
+ display: block;
187
+ vertical-align: middle;
188
+ }
189
+ img,
190
+ video {
191
+ max-width: 100%;
192
+ height: auto;
193
+ }
194
+ button,
195
+ input,
196
+ select,
197
+ optgroup,
198
+ textarea,
199
+ ::file-selector-button {
200
+ font: inherit;
201
+ font-feature-settings: inherit;
202
+ font-variation-settings: inherit;
203
+ letter-spacing: inherit;
204
+ color: inherit;
205
+ border-radius: 0;
206
+ background-color: transparent;
207
+ opacity: 1;
208
+ }
209
+ :where(select:is([multiple], [size])) optgroup {
210
+ font-weight: bolder;
211
+ }
212
+ :where(select:is([multiple], [size])) optgroup option {
213
+ padding-inline-start: 20px;
214
+ }
215
+ ::file-selector-button {
216
+ margin-inline-end: 4px;
217
+ }
218
+ ::placeholder {
219
+ opacity: 1;
220
+ }
221
+ @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {
222
+ ::placeholder {
223
+ color: currentcolor;
224
+ @supports (color: color-mix(in lab, red, red)) {
225
+ color: color-mix(in oklab, currentcolor 50%, transparent);
226
+ }
227
+ }
228
+ }
229
+ textarea {
230
+ resize: vertical;
231
+ }
232
+ ::-webkit-search-decoration {
233
+ -webkit-appearance: none;
234
+ }
235
+ ::-webkit-date-and-time-value {
236
+ min-height: 1lh;
237
+ text-align: inherit;
238
+ }
239
+ ::-webkit-datetime-edit {
240
+ display: inline-flex;
241
+ }
242
+ ::-webkit-datetime-edit-fields-wrapper {
243
+ padding: 0;
244
+ }
245
+ ::-webkit-datetime-edit,
246
+ ::-webkit-datetime-edit-year-field,
247
+ ::-webkit-datetime-edit-month-field,
248
+ ::-webkit-datetime-edit-day-field,
249
+ ::-webkit-datetime-edit-hour-field,
250
+ ::-webkit-datetime-edit-minute-field,
251
+ ::-webkit-datetime-edit-second-field,
252
+ ::-webkit-datetime-edit-millisecond-field,
253
+ ::-webkit-datetime-edit-meridiem-field {
254
+ padding-block: 0;
255
+ }
256
+ :-moz-ui-invalid {
257
+ box-shadow: none;
258
+ }
259
+ button,
260
+ input:where([type=button], [type=reset], [type=submit]),
261
+ ::file-selector-button {
262
+ appearance: button;
263
+ }
264
+ ::-webkit-inner-spin-button,
265
+ ::-webkit-outer-spin-button {
266
+ height: auto;
267
+ }
268
+ [hidden]:where(:not([hidden=until-found])) {
269
+ display: none !important;
270
+ }
271
+ }
272
+ @layer utilities {
273
+ .pointer-events-auto {
274
+ pointer-events: auto;
275
+ }
276
+ .pointer-events-none {
277
+ pointer-events: none;
278
+ }
279
+ .visible {
280
+ visibility: visible;
281
+ }
282
+ .sr-only {
283
+ position: absolute;
284
+ width: 1px;
285
+ height: 1px;
286
+ padding: 0;
287
+ margin: -1px;
288
+ overflow: hidden;
289
+ clip: rect(0, 0, 0, 0);
290
+ white-space: nowrap;
291
+ border-width: 0;
292
+ }
293
+ .absolute {
294
+ position: absolute;
295
+ }
296
+ .fixed {
297
+ position: fixed;
298
+ }
299
+ .relative {
300
+ position: relative;
301
+ }
302
+ .static {
303
+ position: static;
304
+ }
305
+ .inset-0 {
306
+ inset: calc(var(--spacing) * 0);
307
+ }
308
+ .top-0 {
309
+ top: calc(var(--spacing) * 0);
310
+ }
311
+ .top-4 {
312
+ top: calc(var(--spacing) * 4);
313
+ }
314
+ .right-0 {
315
+ right: calc(var(--spacing) * 0);
316
+ }
317
+ .right-4 {
318
+ right: calc(var(--spacing) * 4);
319
+ }
320
+ .bottom-0 {
321
+ bottom: calc(var(--spacing) * 0);
322
+ }
323
+ .bottom-4 {
324
+ bottom: calc(var(--spacing) * 4);
325
+ }
326
+ .left-0 {
327
+ left: calc(var(--spacing) * 0);
328
+ }
329
+ .left-4 {
330
+ left: calc(var(--spacing) * 4);
331
+ }
332
+ .z-10 {
333
+ z-index: 10;
334
+ }
335
+ .z-50 {
336
+ z-index: 50;
337
+ }
338
+ .container {
339
+ width: 100%;
340
+ @media (width >= 40rem) {
341
+ max-width: 40rem;
342
+ }
343
+ @media (width >= 48rem) {
344
+ max-width: 48rem;
345
+ }
346
+ @media (width >= 64rem) {
347
+ max-width: 64rem;
348
+ }
349
+ @media (width >= 80rem) {
350
+ max-width: 80rem;
351
+ }
352
+ @media (width >= 96rem) {
353
+ max-width: 96rem;
354
+ }
355
+ }
356
+ .m-6 {
357
+ margin: calc(var(--spacing) * 6);
358
+ }
359
+ .mt-1 {
360
+ margin-top: calc(var(--spacing) * 1);
361
+ }
362
+ .mt-3 {
363
+ margin-top: calc(var(--spacing) * 3);
364
+ }
365
+ .mb-2 {
366
+ margin-bottom: calc(var(--spacing) * 2);
367
+ }
368
+ .mb-6 {
369
+ margin-bottom: calc(var(--spacing) * 6);
370
+ }
371
+ .flex {
372
+ display: flex;
373
+ }
374
+ .grid {
375
+ display: grid;
376
+ }
377
+ .aspect-video {
378
+ aspect-ratio: var(--aspect-video);
379
+ }
380
+ .h-2 {
381
+ height: calc(var(--spacing) * 2);
382
+ }
383
+ .h-12 {
384
+ height: calc(var(--spacing) * 12);
385
+ }
386
+ .h-24 {
387
+ height: calc(var(--spacing) * 24);
388
+ }
389
+ .h-full {
390
+ height: 100%;
391
+ }
392
+ .w-2 {
393
+ width: calc(var(--spacing) * 2);
394
+ }
395
+ .w-12 {
396
+ width: calc(var(--spacing) * 12);
397
+ }
398
+ .w-24 {
399
+ width: calc(var(--spacing) * 24);
400
+ }
401
+ .w-full {
402
+ width: 100%;
403
+ }
404
+ .animate-pulse {
405
+ animation: var(--animate-pulse);
406
+ }
407
+ .animate-spin {
408
+ animation: var(--animate-spin);
409
+ }
410
+ .auto-cols-max {
411
+ grid-auto-columns: max-content;
412
+ }
413
+ .grid-flow-col {
414
+ grid-auto-flow: column;
415
+ }
416
+ .flex-col {
417
+ flex-direction: column;
418
+ }
419
+ .items-center {
420
+ align-items: center;
421
+ }
422
+ .justify-center {
423
+ justify-content: center;
424
+ }
425
+ .justify-stretch {
426
+ justify-content: stretch;
427
+ }
428
+ .gap-1 {
429
+ gap: calc(var(--spacing) * 1);
430
+ }
431
+ .gap-5 {
432
+ gap: calc(var(--spacing) * 5);
433
+ }
434
+ .overflow-hidden {
435
+ overflow: hidden;
436
+ }
437
+ .rounded-full {
438
+ border-radius: calc(infinity * 1px);
439
+ }
440
+ .rounded-md {
441
+ border-radius: var(--radius-md);
442
+ }
443
+ .bg-\\[\\#151515\\] {
444
+ background-color: #151515;
445
+ }
446
+ .bg-black {
447
+ background-color: var(--color-black);
448
+ }
449
+ .bg-red-600 {
450
+ background-color: var(--color-red-600);
451
+ }
452
+ .bg-white {
453
+ background-color: var(--color-white);
454
+ }
455
+ .bg-gradient-to-t {
456
+ --tw-gradient-position: to top in oklab;
457
+ background-image: linear-gradient(var(--tw-gradient-stops));
458
+ }
459
+ .from-black\\/70 {
460
+ --tw-gradient-from: color-mix(in srgb, #000 70%, transparent);
461
+ @supports (color: color-mix(in lab, red, red)) {
462
+ --tw-gradient-from: color-mix(in oklab, var(--color-black) 70%, transparent);
463
+ }
464
+ --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));
465
+ }
466
+ .to-transparent {
467
+ --tw-gradient-to: transparent;
468
+ --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));
469
+ }
470
+ .bg-cover {
471
+ background-size: cover;
472
+ }
473
+ .bg-center {
474
+ background-position: center;
475
+ }
476
+ .bg-no-repeat {
477
+ background-repeat: no-repeat;
478
+ }
479
+ .p-2 {
480
+ padding: calc(var(--spacing) * 2);
481
+ }
482
+ .p-4 {
483
+ padding: calc(var(--spacing) * 4);
484
+ }
485
+ .px-2 {
486
+ padding-inline: calc(var(--spacing) * 2);
487
+ }
488
+ .px-4 {
489
+ padding-inline: calc(var(--spacing) * 4);
490
+ }
491
+ .py-1 {
492
+ padding-block: calc(var(--spacing) * 1);
493
+ }
494
+ .text-center {
495
+ text-align: center;
496
+ }
497
+ .text-left {
498
+ text-align: left;
499
+ }
500
+ .font-mono {
501
+ font-family: var(--font-mono);
502
+ }
503
+ .text-2xl {
504
+ font-size: var(--text-2xl);
505
+ line-height: var(--tw-leading, var(--text-2xl--line-height));
506
+ }
507
+ .text-5xl {
508
+ font-size: var(--text-5xl);
509
+ line-height: var(--tw-leading, var(--text-5xl--line-height));
510
+ }
511
+ .text-base {
512
+ font-size: var(--text-base);
513
+ line-height: var(--tw-leading, var(--text-base--line-height));
514
+ }
515
+ .text-lg {
516
+ font-size: var(--text-lg);
517
+ line-height: var(--tw-leading, var(--text-lg--line-height));
518
+ }
519
+ .text-sm {
520
+ font-size: var(--text-sm);
521
+ line-height: var(--tw-leading, var(--text-sm--line-height));
522
+ }
523
+ .text-xl {
524
+ font-size: var(--text-xl);
525
+ line-height: var(--tw-leading, var(--text-xl--line-height));
526
+ }
527
+ .text-xs {
528
+ font-size: var(--text-xs);
529
+ line-height: var(--tw-leading, var(--text-xs--line-height));
530
+ }
531
+ .text-\\[10px\\] {
532
+ font-size: 10px;
533
+ }
534
+ .font-bold {
535
+ --tw-font-weight: var(--font-weight-bold);
536
+ font-weight: var(--font-weight-bold);
537
+ }
538
+ .font-medium {
539
+ --tw-font-weight: var(--font-weight-medium);
540
+ font-weight: var(--font-weight-medium);
541
+ }
542
+ .font-semibold {
543
+ --tw-font-weight: var(--font-weight-semibold);
544
+ font-weight: var(--font-weight-semibold);
545
+ }
546
+ .tracking-wide {
547
+ --tw-tracking: var(--tracking-wide);
548
+ letter-spacing: var(--tracking-wide);
549
+ }
550
+ .tracking-widest {
551
+ --tw-tracking: var(--tracking-widest);
552
+ letter-spacing: var(--tracking-widest);
553
+ }
554
+ .text-white {
555
+ color: var(--color-white);
556
+ }
557
+ .uppercase {
558
+ text-transform: uppercase;
559
+ }
560
+ .shadow-lg {
561
+ --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
562
+ box-shadow:
563
+ var(--tw-inset-shadow),
564
+ var(--tw-inset-ring-shadow),
565
+ var(--tw-ring-offset-shadow),
566
+ var(--tw-ring-shadow),
567
+ var(--tw-shadow);
568
+ }
569
+ .filter {
570
+ 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,);
571
+ }
572
+ .md\\:rounded-2xl {
573
+ @media (width >= 48rem) {
574
+ border-radius: var(--radius-2xl);
575
+ }
576
+ }
577
+ .md\\:rounded-2xl\\! {
578
+ @media (width >= 48rem) {
579
+ border-radius: var(--radius-2xl) !important;
580
+ }
581
+ }
582
+ .md\\:text-base {
583
+ @media (width >= 48rem) {
584
+ font-size: var(--text-base);
585
+ line-height: var(--tw-leading, var(--text-base--line-height));
586
+ }
587
+ }
588
+ .md\\:text-sm {
589
+ @media (width >= 48rem) {
590
+ font-size: var(--text-sm);
591
+ line-height: var(--tw-leading, var(--text-sm--line-height));
592
+ }
593
+ }
594
+ .md\\:text-xl {
595
+ @media (width >= 48rem) {
596
+ font-size: var(--text-xl);
597
+ line-height: var(--tw-leading, var(--text-xl--line-height));
598
+ }
599
+ }
600
+ }
601
+ @layer components {
602
+ video::-webkit-media-controls {
603
+ display: none !important;
604
+ }
605
+ video::-webkit-media-controls-panel {
606
+ display: none !important;
607
+ }
608
+ video::-webkit-media-controls-play-button {
609
+ display: none !important;
610
+ }
611
+ video::-webkit-media-controls-timeline {
612
+ display: none !important;
613
+ }
614
+ video::-webkit-media-controls-current-time-display {
615
+ display: none !important;
616
+ }
617
+ video::-webkit-media-controls-time-remaining-display {
618
+ display: none !important;
619
+ }
620
+ video::-webkit-media-controls-mute-button {
621
+ display: none !important;
622
+ }
623
+ video::-webkit-media-controls-volume-slider {
624
+ display: none !important;
625
+ }
626
+ video::-webkit-media-controls-fullscreen-button {
627
+ display: none !important;
628
+ }
629
+ video::-webkit-media-controls-overlay-play-button {
630
+ display: none !important;
631
+ }
632
+ video::-moz-media-controls {
633
+ display: none !important;
634
+ }
635
+ video {
636
+ outline: none !important;
637
+ }
638
+ video[controls] {
639
+ -webkit-appearance: none !important;
640
+ appearance: none !important;
641
+ }
642
+ video::-webkit-media-controls-enclosure {
643
+ display: none !important;
644
+ }
645
+ video::-webkit-media-controls-start-playback-button {
646
+ display: none !important;
647
+ }
648
+ video[controls]::-webkit-media-controls,
649
+ video[controls]::-webkit-media-controls-panel,
650
+ video[controls]::-webkit-media-controls-play-button,
651
+ video[controls]::-webkit-media-controls-timeline,
652
+ video[controls]::-webkit-media-controls-current-time-display,
653
+ video[controls]::-webkit-media-controls-time-remaining-display,
654
+ video[controls]::-webkit-media-controls-mute-button,
655
+ video[controls]::-webkit-media-controls-volume-slider,
656
+ video[controls]::-webkit-media-controls-fullscreen-button,
657
+ video[controls]::-webkit-media-controls-overlay-play-button,
658
+ video[controls]::-webkit-media-controls-enclosure,
659
+ video[controls]::-webkit-media-controls-start-playback-button {
660
+ display: none !important;
661
+ visibility: hidden !important;
662
+ opacity: 0 !important;
663
+ pointer-events: none !important;
664
+ }
665
+ video[controls]::-moz-media-controls {
666
+ display: none !important;
667
+ visibility: hidden !important;
668
+ opacity: 0 !important;
669
+ }
670
+ .motto-video-container {
671
+ position: relative;
672
+ width: 100%;
673
+ min-height: 300px;
674
+ }
675
+ @supports (aspect-ratio: 16/9) {
676
+ .motto-video-container {
677
+ min-height: auto;
678
+ }
679
+ }
680
+ .motto-video-responsive {
681
+ position: absolute;
682
+ top: calc(var(--spacing) * 0);
683
+ left: calc(var(--spacing) * 0);
684
+ height: 100%;
685
+ width: 100%;
686
+ }
687
+ .motto-skip-button {
688
+ position: absolute;
689
+ top: calc(1/2 * 100%);
690
+ z-index: 10;
691
+ display: flex;
692
+ height: calc(var(--spacing) * 16);
693
+ width: calc(var(--spacing) * 16);
694
+ --tw-translate-y: calc(calc(1/2 * 100%) * -1);
695
+ translate: var(--tw-translate-x) var(--tw-translate-y);
696
+ cursor: pointer;
697
+ align-items: center;
698
+ justify-content: center;
699
+ border-radius: calc(infinity * 1px);
700
+ border-style: var(--tw-border-style);
701
+ border-width: 0px;
702
+ background-color: color-mix(in srgb, #000 70%, transparent);
703
+ @supports (color: color-mix(in lab, red, red)) {
704
+ background-color: color-mix(in oklab, var(--color-black) 70%, transparent);
705
+ }
706
+ font-size: var(--text-2xl);
707
+ line-height: var(--tw-leading, var(--text-2xl--line-height));
708
+ color: var(--color-white);
709
+ opacity: 80%;
710
+ transition-property: all;
711
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
712
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
713
+ --tw-duration: 200ms;
714
+ transition-duration: 200ms;
715
+ &:hover {
716
+ @media (hover: hover) {
717
+ --tw-scale-x: 110%;
718
+ --tw-scale-y: 110%;
719
+ --tw-scale-z: 110%;
720
+ scale: var(--tw-scale-x) var(--tw-scale-y);
721
+ }
722
+ }
723
+ &:hover {
724
+ @media (hover: hover) {
725
+ opacity: 100%;
726
+ }
727
+ }
728
+ &:active {
729
+ --tw-scale-x: 95%;
730
+ --tw-scale-y: 95%;
731
+ --tw-scale-z: 95%;
732
+ scale: var(--tw-scale-x) var(--tw-scale-y);
733
+ }
734
+ }
735
+ .motto-skip-button-back {
736
+ left: calc(var(--spacing) * 5);
737
+ }
738
+ .motto-skip-button-forward {
739
+ right: calc(var(--spacing) * 5);
740
+ }
741
+ }
742
+ .shaka-seek-bar-container {
743
+ height: 6px !important;
744
+ width: 100% !important;
745
+ margin: 8px 0 !important;
746
+ border-radius: 4px !important;
747
+ position: relative !important;
748
+ border-top: none !important;
749
+ border-bottom: none !important;
750
+ box-shadow: none !important;
751
+ }
752
+ .shaka-seek-bar {
753
+ height: 6px !important;
754
+ width: 100% !important;
755
+ -webkit-appearance: none !important;
756
+ appearance: none !important;
757
+ background: transparent !important;
758
+ cursor: pointer !important;
759
+ border: none !important;
760
+ outline: none !important;
761
+ position: absolute !important;
762
+ top: 0 !important;
763
+ left: 0 !important;
764
+ border-radius: 4px !important;
765
+ }
766
+ .shaka-seek-bar::-webkit-slider-runnable-track {
767
+ height: 6px !important;
768
+ background: transparent !important;
769
+ border-radius: 4px !important;
770
+ border: none !important;
771
+ }
772
+ .shaka-seek-bar::-moz-range-track {
773
+ height: 6px !important;
774
+ background: transparent !important;
775
+ border-radius: 4px !important;
776
+ border: none !important;
777
+ }
778
+ .shaka-seek-bar::-webkit-slider-thumb {
779
+ -webkit-appearance: none !important;
780
+ appearance: none !important;
781
+ width: 16px !important;
782
+ height: 16px !important;
783
+ border-radius: 50% !important;
784
+ background: #ffffff !important;
785
+ cursor: pointer !important;
786
+ border: 2px solid #ffffff !important;
787
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3) !important;
788
+ margin-top: -4px !important;
789
+ }
790
+ .shaka-seek-bar::-moz-range-thumb {
791
+ width: 16px !important;
792
+ height: 16px !important;
793
+ border-radius: 50% !important;
794
+ background: #ffffff !important;
795
+ cursor: pointer !important;
796
+ border: 2px solid #ffffff !important;
797
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3) !important;
798
+ margin-top: -4px !important;
799
+ }
800
+ .motto-skip-back-button,
801
+ .motto-skip-forward-button,
802
+ .motto-native-skip-button {
803
+ background: transparent !important;
804
+ border: none !important;
805
+ padding: 4px !important;
806
+ margin: 0px !important;
807
+ cursor: pointer !important;
808
+ color: #ffffff !important;
809
+ transition: all 0.2s ease !important;
810
+ min-width: 32px !important;
811
+ height: 32px !important;
812
+ display: flex !important;
813
+ align-items: center !important;
814
+ justify-content: center !important;
815
+ border-radius: 4px !important;
816
+ width: 25px;
817
+ }
818
+ .motto-skip-back-button:hover,
819
+ .motto-skip-forward-button:hover,
820
+ .motto-native-skip-button:hover {
821
+ opacity: 0.8 !important;
822
+ background: transparent !important;
823
+ transform: scale(1.05) !important;
824
+ }
825
+ .motto-skip-back-button:active,
826
+ .motto-skip-forward-button:active,
827
+ .motto-native-skip-button:active {
828
+ transform: scale(0.95) !important;
829
+ }
830
+ .motto-skip-back-button svg,
831
+ .motto-skip-forward-button svg,
832
+ .motto-native-skip-button svg {
833
+ width: 24px !important;
834
+ height: 24px !important;
835
+ }
836
+ .shaka-spinner-svg {
837
+ color: white !important;
838
+ fill: white !important;
839
+ }
840
+ .shaka-spinner-path {
841
+ stroke: white !important;
842
+ fill: none !important;
843
+ }
844
+ .shaka-spinner-container {
845
+ color: white !important;
846
+ }
847
+ .shaka-buffering-spinner {
848
+ color: white !important;
849
+ fill: white !important;
850
+ }
851
+ .shaka-buffering-spinner svg {
852
+ color: white !important;
853
+ fill: white !important;
854
+ }
855
+ .shaka-buffering-spinner path {
856
+ stroke: white !important;
857
+ fill: none !important;
858
+ }
859
+ [data-shaka-player-container] .shaka-spinner,
860
+ [data-shaka-player-container] .spinner {
861
+ color: white !important;
862
+ border-color: white !important;
863
+ }
864
+ .material-icons.shaka-spinner {
865
+ color: white !important;
866
+ }
867
+ .shaka-controls-container .shaka-spinner,
868
+ .shaka-video-container .shaka-spinner {
869
+ color: white !important;
870
+ fill: white !important;
871
+ }
872
+ .shaka-controls-container .shaka-spinner svg,
873
+ .shaka-video-container .shaka-spinner svg {
874
+ color: white !important;
875
+ fill: white !important;
876
+ }
877
+ .shaka-controls-container .shaka-spinner path,
878
+ .shaka-video-container .shaka-spinner path {
879
+ stroke: white !important;
880
+ }
881
+ .motto-video-loading-overlay {
882
+ position: absolute;
883
+ top: 0;
884
+ left: 0;
885
+ width: 100%;
886
+ height: 100%;
887
+ background:
888
+ linear-gradient(
889
+ 135deg,
890
+ #1a1a1a 0%,
891
+ #2d2d2d 100%);
892
+ display: flex;
893
+ flex-direction: column;
894
+ align-items: center;
895
+ justify-content: center;
896
+ z-index: 10;
897
+ transition: opacity 0.3s ease;
898
+ }
899
+ .motto-video-loading-overlay.hidden {
900
+ opacity: 0;
901
+ pointer-events: none;
902
+ }
903
+ .motto-video-loading-content {
904
+ text-align: center;
905
+ color: white;
906
+ }
907
+ .motto-video-loading-icon {
908
+ width: 64px;
909
+ height: 64px;
910
+ margin-bottom: 16px;
911
+ opacity: 0.7;
912
+ }
913
+ .motto-video-loading-text {
914
+ font-size: 16px;
915
+ font-weight: 500;
916
+ margin-bottom: 8px;
917
+ }
918
+ .motto-video-loading-subtext {
919
+ font-size: 14px;
920
+ opacity: 0.7;
921
+ }
922
+ @keyframes pulse-live {
923
+ 0% {
924
+ opacity: 1;
925
+ transform: scale(1);
926
+ }
927
+ 50% {
928
+ opacity: 0.7;
929
+ transform: scale(1.1);
930
+ }
931
+ 100% {
932
+ opacity: 1;
933
+ transform: scale(1);
934
+ }
935
+ }
936
+ .shaka-play-button {
937
+ background: rgba(255, 255, 255, 0.1) !important;
938
+ border: none !important;
939
+ color: white !important;
940
+ padding: 10px !important;
941
+ border-radius: 100% !important;
942
+ transition: all 0.2s ease !important;
943
+ display: flex !important;
944
+ align-items: center !important;
945
+ justify-content: center !important;
946
+ min-width: 55px !important;
947
+ height: 55px !important;
948
+ }
949
+ .shaka-play-button-container {
950
+ background: transparent;
951
+ transition: all 0.2s ease !important;
952
+ }
953
+ .motto-video-container:not(.no-cursor) .shaka-play-button-container {
954
+ background: rgba(0, 0, 0, 0.3);
955
+ transition: all 0.s ease !important;
956
+ }
957
+ .shaka-play-button:hover {
958
+ background: rgba(255, 255, 255, 0.2) !important;
959
+ transform: scale(1.05) !important;
960
+ }
961
+ .shaka-play-button:active {
962
+ transform: scale(0.95) !important;
963
+ }
964
+ .shaka-play-button > * {
965
+ display: none !important;
966
+ }
967
+ .shaka-play-button::after {
968
+ content: "" !important;
969
+ width: 35px !important;
970
+ height: 35px !important;
971
+ background-image: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path fill-rule="evenodd" d="M4.5 5.653c0-1.427 1.529-2.33 2.779-1.643l11.54 6.347c1.295.712 1.295 2.573 0 3.286L7.28 19.99c-1.25.687-2.779-.217-2.779-1.643V5.653Z" clip-rule="evenodd" /></svg>') !important;
972
+ background-repeat: no-repeat !important;
973
+ background-size: contain !important;
974
+ background-position: center !important;
975
+ display: block !important;
976
+ }
977
+ .shaka-play-button[aria-label*=Play]::after {
978
+ background-image: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path fill-rule="evenodd" d="M4.5 5.653c0-1.427 1.529-2.33 2.779-1.643l11.54 6.347c1.295.712 1.295 2.573 0 3.286L7.28 19.99c-1.25.687-2.779-.217-2.779-1.643V5.653Z" clip-rule="evenodd" /></svg>') !important;
979
+ }
980
+ .shaka-play-button[aria-label*=Pause]::after {
981
+ background-image: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path fill-rule="evenodd" d="M6.75 5.25a.75.75 0 0 1 .75-.75H9a.75.75 0 0 1 .75.75v13.5a.75.75 0 0 1-.75.75H7.5a.75.75 0 0 1-.75-.75V5.25Zm7.5 0A.75.75 0 0 1 15 4.5h1.5a.75.75 0 0 1 .75.75v13.5a.75.75 0 0 1-.75.75H15a.75.75 0 0 1-.75-.75V5.25Z" clip-rule="evenodd" /></svg>') !important;
982
+ }
983
+ .motto-video-container {
984
+ background: black;
985
+ }
986
+ .motto-video-container video {
987
+ width: 100% !important;
988
+ height: 100% !important;
989
+ margin-left: auto !important;
990
+ margin-right: auto !important;
991
+ }
992
+ @property --tw-gradient-position { syntax: "*"; inherits: false; }
993
+ @property --tw-gradient-from { syntax: "<color>"; inherits: false; initial-value: #0000; }
994
+ @property --tw-gradient-via { syntax: "<color>"; inherits: false; initial-value: #0000; }
995
+ @property --tw-gradient-to { syntax: "<color>"; inherits: false; initial-value: #0000; }
996
+ @property --tw-gradient-stops { syntax: "*"; inherits: false; }
997
+ @property --tw-gradient-via-stops { syntax: "*"; inherits: false; }
998
+ @property --tw-gradient-from-position { syntax: "<length-percentage>"; inherits: false; initial-value: 0%; }
999
+ @property --tw-gradient-via-position { syntax: "<length-percentage>"; inherits: false; initial-value: 50%; }
1000
+ @property --tw-gradient-to-position { syntax: "<length-percentage>"; inherits: false; initial-value: 100%; }
1001
+ @property --tw-font-weight { syntax: "*"; inherits: false; }
1002
+ @property --tw-tracking { syntax: "*"; inherits: false; }
1003
+ @property --tw-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
1004
+ @property --tw-shadow-color { syntax: "*"; inherits: false; }
1005
+ @property --tw-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }
1006
+ @property --tw-inset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
1007
+ @property --tw-inset-shadow-color { syntax: "*"; inherits: false; }
1008
+ @property --tw-inset-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }
1009
+ @property --tw-ring-color { syntax: "*"; inherits: false; }
1010
+ @property --tw-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
1011
+ @property --tw-inset-ring-color { syntax: "*"; inherits: false; }
1012
+ @property --tw-inset-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
1013
+ @property --tw-ring-inset { syntax: "*"; inherits: false; }
1014
+ @property --tw-ring-offset-width { syntax: "<length>"; inherits: false; initial-value: 0px; }
1015
+ @property --tw-ring-offset-color { syntax: "*"; inherits: false; initial-value: #fff; }
1016
+ @property --tw-ring-offset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
1017
+ @property --tw-blur { syntax: "*"; inherits: false; }
1018
+ @property --tw-brightness { syntax: "*"; inherits: false; }
1019
+ @property --tw-contrast { syntax: "*"; inherits: false; }
1020
+ @property --tw-grayscale { syntax: "*"; inherits: false; }
1021
+ @property --tw-hue-rotate { syntax: "*"; inherits: false; }
1022
+ @property --tw-invert { syntax: "*"; inherits: false; }
1023
+ @property --tw-opacity { syntax: "*"; inherits: false; }
1024
+ @property --tw-saturate { syntax: "*"; inherits: false; }
1025
+ @property --tw-sepia { syntax: "*"; inherits: false; }
1026
+ @property --tw-drop-shadow { syntax: "*"; inherits: false; }
1027
+ @property --tw-drop-shadow-color { syntax: "*"; inherits: false; }
1028
+ @property --tw-drop-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }
1029
+ @property --tw-drop-shadow-size { syntax: "*"; inherits: false; }
1030
+ @property --tw-translate-x { syntax: "*"; inherits: false; initial-value: 0; }
1031
+ @property --tw-translate-y { syntax: "*"; inherits: false; initial-value: 0; }
1032
+ @property --tw-translate-z { syntax: "*"; inherits: false; initial-value: 0; }
1033
+ @property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; }
1034
+ @property --tw-duration { syntax: "*"; inherits: false; }
1035
+ @property --tw-scale-x { syntax: "*"; inherits: false; initial-value: 1; }
1036
+ @property --tw-scale-y { syntax: "*"; inherits: false; initial-value: 1; }
1037
+ @property --tw-scale-z { syntax: "*"; inherits: false; initial-value: 1; }
1038
+ @keyframes spin {
1039
+ to {
1040
+ transform: rotate(360deg);
1041
+ }
1042
+ }
1043
+ @keyframes pulse {
1044
+ 50% {
1045
+ opacity: 0.5;
1046
+ }
1047
+ }
1048
+ @layer properties {
1049
+ @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
1050
+ *,
1051
+ ::before,
1052
+ ::after,
1053
+ ::backdrop {
1054
+ --tw-gradient-position: initial;
1055
+ --tw-gradient-from: #0000;
1056
+ --tw-gradient-via: #0000;
1057
+ --tw-gradient-to: #0000;
1058
+ --tw-gradient-stops: initial;
1059
+ --tw-gradient-via-stops: initial;
1060
+ --tw-gradient-from-position: 0%;
1061
+ --tw-gradient-via-position: 50%;
1062
+ --tw-gradient-to-position: 100%;
1063
+ --tw-font-weight: initial;
1064
+ --tw-tracking: initial;
1065
+ --tw-shadow: 0 0 #0000;
1066
+ --tw-shadow-color: initial;
1067
+ --tw-shadow-alpha: 100%;
1068
+ --tw-inset-shadow: 0 0 #0000;
1069
+ --tw-inset-shadow-color: initial;
1070
+ --tw-inset-shadow-alpha: 100%;
1071
+ --tw-ring-color: initial;
1072
+ --tw-ring-shadow: 0 0 #0000;
1073
+ --tw-inset-ring-color: initial;
1074
+ --tw-inset-ring-shadow: 0 0 #0000;
1075
+ --tw-ring-inset: initial;
1076
+ --tw-ring-offset-width: 0px;
1077
+ --tw-ring-offset-color: #fff;
1078
+ --tw-ring-offset-shadow: 0 0 #0000;
1079
+ --tw-blur: initial;
1080
+ --tw-brightness: initial;
1081
+ --tw-contrast: initial;
1082
+ --tw-grayscale: initial;
1083
+ --tw-hue-rotate: initial;
1084
+ --tw-invert: initial;
1085
+ --tw-opacity: initial;
1086
+ --tw-saturate: initial;
1087
+ --tw-sepia: initial;
1088
+ --tw-drop-shadow: initial;
1089
+ --tw-drop-shadow-color: initial;
1090
+ --tw-drop-shadow-alpha: 100%;
1091
+ --tw-drop-shadow-size: initial;
1092
+ --tw-translate-x: 0;
1093
+ --tw-translate-y: 0;
1094
+ --tw-translate-z: 0;
1095
+ --tw-border-style: solid;
1096
+ --tw-duration: initial;
1097
+ --tw-scale-x: 1;
1098
+ --tw-scale-y: 1;
1099
+ --tw-scale-z: 1;
1100
+ }
1101
+ }
1102
+ }
1103
+ `);
27
1104
 
28
1105
  // src/Player.tsx
29
1106
  import { forwardRef, useEffect as useEffect5, useRef as useRef8, useImperativeHandle } from "react";
@@ -62,6 +1139,9 @@ var useShakePlayer = ({
62
1139
  }
63
1140
  player.addEventListener("error", (event) => {
64
1141
  const error = event.detail;
1142
+ if (error?.code === 7e3) {
1143
+ return;
1144
+ }
65
1145
  console.error("Shaka Player Error:", error);
66
1146
  onError?.(new Error(`Shaka Player Error: ${error.message || "Unknown error"}`));
67
1147
  });
@@ -69,6 +1149,9 @@ var useShakePlayer = ({
69
1149
  onPlayerReady?.(player);
70
1150
  return player;
71
1151
  } catch (error) {
1152
+ if (error?.code === 7e3) {
1153
+ return;
1154
+ }
72
1155
  console.error("Error initializing Shaka Player:", error);
73
1156
  onError?.(error);
74
1157
  throw error;
@@ -111,11 +1194,25 @@ var useQualityControl = (playerRef, qualityConfig, onQualityChange) => {
111
1194
  if (!playerRef.current) return;
112
1195
  if (height === 0) {
113
1196
  playerRef.current.configure({
114
- abr: { enabled: true }
1197
+ abr: {
1198
+ enabled: true,
1199
+ switchInterval: 2,
1200
+ // quicker re-checks
1201
+ clearBufferSwitch: true,
1202
+ safeMarginSwitch: 10
1203
+ // leave ~10 s in front of the playhead }
1204
+ }
115
1205
  });
116
1206
  } else {
117
1207
  playerRef.current.configure({
118
- abr: { enabled: false }
1208
+ abr: {
1209
+ enabled: false,
1210
+ switchInterval: 2,
1211
+ // quicker re-checks
1212
+ clearBufferSwitch: true,
1213
+ safeMarginSwitch: 10
1214
+ // leave ~10 s in front of the playhead }
1215
+ }
119
1216
  });
120
1217
  const tracks = playerRef.current.getVariantTracks();
121
1218
  const targetTrack = tracks.find((track) => track.height === height);
@@ -262,31 +1359,167 @@ var useMuxAnalytics = (playerRef, muxConfig, onMuxReady, onMuxDataUpdate) => {
262
1359
  // src/hooks/useShakaUI.ts
263
1360
  import { useCallback as useCallback5, useRef as useRef4 } from "react";
264
1361
  import { ui as ShakaUI } from "shaka-player/dist/shaka-player.ui";
265
- var SkipBackButton = class {
266
- constructor(parent, controls, onSkipBack) {
267
- this.parent = parent;
268
- this.controls = controls;
269
- this.eventManager = { listen: (element, event, handler) => {
270
- element.addEventListener(event, handler);
271
- } };
272
- if (typeof document === "undefined") {
273
- console.warn("SkipBackButton: document is not available (SSR environment)");
274
- return;
1362
+
1363
+ // src/icons/SkipBackIcon.tsx
1364
+ import { jsx, jsxs } from "react/jsx-runtime";
1365
+ var SkipBackIcon = ({ size = 24, className = "" }) => {
1366
+ return /* @__PURE__ */ jsxs(
1367
+ "svg",
1368
+ {
1369
+ width: size,
1370
+ height: size,
1371
+ strokeWidth: "2",
1372
+ viewBox: "0 0 24 24",
1373
+ fill: "none",
1374
+ xmlns: "http://www.w3.org/2000/svg",
1375
+ className,
1376
+ children: [
1377
+ /* @__PURE__ */ jsx(
1378
+ "path",
1379
+ {
1380
+ d: "M3 13C3 17.9706 7.02944 22 12 22C16.9706 22 21 17.9706 21 13C21 8.02944 16.9706 4 12 4",
1381
+ stroke: "currentColor",
1382
+ strokeWidth: "2",
1383
+ strokeLinecap: "round",
1384
+ strokeLinejoin: "round"
1385
+ }
1386
+ ),
1387
+ /* @__PURE__ */ jsx(
1388
+ "path",
1389
+ {
1390
+ d: "M9 9L9 16",
1391
+ stroke: "currentColor",
1392
+ strokeWidth: "2",
1393
+ strokeLinecap: "round",
1394
+ strokeLinejoin: "round"
1395
+ }
1396
+ ),
1397
+ /* @__PURE__ */ jsx(
1398
+ "path",
1399
+ {
1400
+ d: "M15 9L13 9C12.4477 9 12 9.44772 12 10L12 11.5C12 12.0523 12.4477 12.5 13 12.5L14 12.5C14.5523 12.5 15 12.9477 15 13.5L15 15C15 15.5523 14.5523 16 14 16L12 16",
1401
+ stroke: "currentColor",
1402
+ strokeWidth: "2",
1403
+ strokeLinecap: "round",
1404
+ strokeLinejoin: "round"
1405
+ }
1406
+ ),
1407
+ /* @__PURE__ */ jsx(
1408
+ "path",
1409
+ {
1410
+ d: "M12 4L4.5 4M4.5 4L6.5 2M4.5 4L6.5 6",
1411
+ stroke: "currentColor",
1412
+ strokeWidth: "2",
1413
+ strokeLinecap: "round",
1414
+ strokeLinejoin: "round"
1415
+ }
1416
+ )
1417
+ ]
275
1418
  }
276
- this.button_ = document.createElement("button");
277
- this.button_.className = "shaka-button motto-native-skip-button";
278
- this.button_.innerHTML = `
279
- <svg width="24px" stroke-width="2" height="24px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
280
- <path d="M3 13C3 17.9706 7.02944 22 12 22C16.9706 22 21 17.9706 21 13C21 8.02944 16.9706 4 12 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
281
- <path d="M9 9L9 16" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
282
- <path d="M15 9L13 9C12.4477 9 12 9.44772 12 10L12 11.5C12 12.0523 12.4477 12.5 13 12.5L14 12.5C14.5523 12.5 15 12.9477 15 13.5L15 15C15 15.5523 14.5523 16 14 16L12 16" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
283
- <path d="M12 4L4.5 4M4.5 4L6.5 2M4.5 4L6.5 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
284
- </svg>
285
- `;
286
- this.button_.title = "Skip back 15 seconds";
287
- this.button_.setAttribute("aria-label", "Skip back 15 seconds");
288
- this.parent.appendChild(this.button_);
289
- this.eventManager.listen(this.button_, "click", () => {
1419
+ );
1420
+ };
1421
+
1422
+ // src/icons/SkipForwardIcon.tsx
1423
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
1424
+ var SkipForwardIcon = ({ size = 24, className = "" }) => {
1425
+ return /* @__PURE__ */ jsxs2(
1426
+ "svg",
1427
+ {
1428
+ width: size,
1429
+ height: size,
1430
+ strokeWidth: "2",
1431
+ viewBox: "0 0 24 24",
1432
+ fill: "none",
1433
+ xmlns: "http://www.w3.org/2000/svg",
1434
+ className,
1435
+ children: [
1436
+ /* @__PURE__ */ jsx2(
1437
+ "path",
1438
+ {
1439
+ d: "M21 13C21 17.9706 16.9706 22 12 22C7.02944 22 3 17.9706 3 13C3 8.02944 7.02944 4 12 4",
1440
+ stroke: "currentColor",
1441
+ strokeLinecap: "round",
1442
+ strokeLinejoin: "round"
1443
+ }
1444
+ ),
1445
+ /* @__PURE__ */ jsx2(
1446
+ "path",
1447
+ {
1448
+ d: "M12 4H19.5M19.5 4L17.5 2M19.5 4L17.5 6",
1449
+ stroke: "currentColor",
1450
+ strokeLinecap: "round",
1451
+ strokeLinejoin: "round"
1452
+ }
1453
+ ),
1454
+ /* @__PURE__ */ jsx2(
1455
+ "path",
1456
+ {
1457
+ d: "M9 9L9 16",
1458
+ stroke: "currentColor",
1459
+ strokeLinecap: "round",
1460
+ strokeLinejoin: "round"
1461
+ }
1462
+ ),
1463
+ /* @__PURE__ */ jsx2(
1464
+ "path",
1465
+ {
1466
+ d: "M15 9L13 9C12.4477 9 12 9.44772 12 10L12 11.5C12 12.0523 12.4477 12.5 13 12.5L14 12.5C14.5523 12.5 15 12.9477 15 13.5L15 15C15 15.5523 14.5523 16 14 16L12 16",
1467
+ stroke: "currentColor",
1468
+ strokeLinecap: "round",
1469
+ strokeLinejoin: "round"
1470
+ }
1471
+ )
1472
+ ]
1473
+ }
1474
+ );
1475
+ };
1476
+
1477
+ // src/icons/BigPlayIcon.tsx
1478
+ import { jsx as jsx3 } from "react/jsx-runtime";
1479
+ var BigPlayIcon = ({ size = 40, className = "" }) => {
1480
+ return /* @__PURE__ */ jsx3(
1481
+ "svg",
1482
+ {
1483
+ width: size,
1484
+ height: size,
1485
+ viewBox: "0 0 24 24",
1486
+ fill: "currentColor",
1487
+ xmlns: "http://www.w3.org/2000/svg",
1488
+ className,
1489
+ children: /* @__PURE__ */ jsx3(
1490
+ "path",
1491
+ {
1492
+ fillRule: "evenodd",
1493
+ d: "M4.5 5.653c0-1.427 1.529-2.33 2.779-1.643l11.54 6.347c1.295.712 1.295 2.573 0 3.286L7.28 19.99c-1.25.687-2.779-.217-2.779-1.643V5.653Z",
1494
+ clipRule: "evenodd"
1495
+ }
1496
+ )
1497
+ }
1498
+ );
1499
+ };
1500
+
1501
+ // src/utils/renderIcon.ts
1502
+ import { renderToStaticMarkup } from "react-dom/server";
1503
+ import { createElement } from "react";
1504
+ var renderIcon = (Component, props = {}) => {
1505
+ return renderToStaticMarkup(createElement(Component, props));
1506
+ };
1507
+
1508
+ // src/hooks/useShakaUI.ts
1509
+ var SkipBackButton = class {
1510
+ constructor(parent, controls, onSkipBack, iconSize = 24) {
1511
+ this.parent = parent;
1512
+ this.controls = controls;
1513
+ this.eventManager = { listen: (element, event, handler) => {
1514
+ element.addEventListener(event, handler);
1515
+ } };
1516
+ this.button_ = document.createElement("button");
1517
+ this.button_.className = "shaka-button motto-native-skip-button";
1518
+ this.button_.innerHTML = renderIcon(SkipBackIcon, { size: iconSize });
1519
+ this.button_.title = "Skip back 15 seconds";
1520
+ this.button_.setAttribute("aria-label", "Skip back 15 seconds");
1521
+ this.parent.appendChild(this.button_);
1522
+ this.eventManager.listen(this.button_, "click", () => {
290
1523
  const video = this.controls.getVideo();
291
1524
  if (video) {
292
1525
  const newTime = Math.max(0, video.currentTime - 15);
@@ -295,28 +1528,21 @@ var SkipBackButton = class {
295
1528
  }
296
1529
  });
297
1530
  }
1531
+ // Shaka UI will call `release` when the controls are destroyed.
1532
+ // Provide a no-op implementation to avoid TypeErrors.
1533
+ release() {
1534
+ }
298
1535
  };
299
1536
  var SkipForwardButton = class {
300
- constructor(parent, controls, onSkipForward) {
1537
+ constructor(parent, controls, onSkipForward, iconSize = 24) {
301
1538
  this.parent = parent;
302
1539
  this.controls = controls;
303
1540
  this.eventManager = { listen: (element, event, handler) => {
304
1541
  element.addEventListener(event, handler);
305
1542
  } };
306
- if (typeof document === "undefined") {
307
- console.warn("SkipForwardButton: document is not available (SSR environment)");
308
- return;
309
- }
310
1543
  this.button_ = document.createElement("button");
311
1544
  this.button_.className = "shaka-button motto-native-skip-button";
312
- this.button_.innerHTML = `
313
- <svg fill="none" height="24" stroke-width="2" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
314
- <path d="M21 13C21 17.9706 16.9706 22 12 22C7.02944 22 3 17.9706 3 13C3 8.02944 7.02944 4 12 4" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
315
- <path d="M12 4H19.5M19.5 4L17.5 2M19.5 4L17.5 6" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
316
- <path d="M9 9L9 16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
317
- <path d="M15 9L13 9C12.4477 9 12 9.44772 12 10L12 11.5C12 12.0523 12.4477 12.5 13 12.5L14 12.5C14.5523 12.5 15 12.9477 15 13.5L15 15C15 15.5523 14.5523 16 14 16L12 16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
318
- </svg>
319
- `;
1545
+ this.button_.innerHTML = renderIcon(SkipForwardIcon, { size: iconSize });
320
1546
  this.button_.title = "Skip forward 15 seconds";
321
1547
  this.button_.setAttribute("aria-label", "Skip forward 15 seconds");
322
1548
  this.parent.appendChild(this.button_);
@@ -329,266 +1555,56 @@ var SkipForwardButton = class {
329
1555
  }
330
1556
  });
331
1557
  }
1558
+ release() {
1559
+ }
332
1560
  };
333
1561
  var SkipBackButtonFactory = class {
334
- constructor(onSkipBack) {
1562
+ constructor(onSkipBack, iconSize) {
335
1563
  this.onSkipBack = onSkipBack;
1564
+ this.iconSize = iconSize;
336
1565
  }
337
1566
  create(rootElement, controls) {
338
- return new SkipBackButton(rootElement, controls, this.onSkipBack);
1567
+ return new SkipBackButton(rootElement, controls, this.onSkipBack, this.iconSize);
339
1568
  }
340
1569
  };
341
1570
  var SkipForwardButtonFactory = class {
342
- constructor(onSkipForward) {
343
- this.onSkipForward = onSkipForward;
344
- }
345
- create(rootElement, controls) {
346
- return new SkipForwardButton(rootElement, controls, this.onSkipForward);
347
- }
348
- };
349
- var MobilePlayButton = class {
350
- constructor(parent, controls) {
351
- this.parent = parent;
352
- this.controls = controls;
353
- if (typeof document === "undefined") {
354
- console.warn("MobilePlayButton: document is not available (SSR environment)");
355
- return;
356
- }
357
- this.video = controls?.getVideo?.() || parent.querySelector("video") || document.querySelector("video");
358
- if (!this.video) {
359
- console.error("MobilePlayButton: No video element found");
360
- return;
361
- }
362
- this.eventManager = { listen: (element, event, handler) => {
363
- element.addEventListener(event, handler);
364
- } };
365
- this.button_ = document.createElement("button");
366
- this.button_.className = "motto-mobile-play-button";
367
- this.updateIcon();
368
- this.parent.appendChild(this.button_);
369
- this.eventManager.listen(this.button_, "click", () => {
370
- if (this.video.paused) {
371
- this.video.play();
372
- } else {
373
- this.video.pause();
374
- }
375
- });
376
- this.eventManager.listen(this.video, "play", () => this.updateIcon());
377
- this.eventManager.listen(this.video, "pause", () => this.updateIcon());
378
- }
379
- updateIcon() {
380
- if (this.video.paused) {
381
- this.button_.innerHTML = `
382
- <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" viewBox="0 0 24 24" fill="currentColor">
383
- <path stroke-width="2" fill-rule="evenodd" d="M4.5 5.653c0-1.427 1.529-2.33 2.779-1.643l11.54 6.347c1.295.712 1.295 2.573 0 3.286L7.28 19.99c-1.25.687-2.779-.217-2.779-1.643V5.653Z" clip-rule="evenodd" />
384
- </svg>
385
- `;
386
- this.button_.setAttribute("aria-label", "Play");
387
- } else {
388
- this.button_.innerHTML = `
389
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
390
- <path fill-rule="evenodd" d="M6.75 5.25a.75.75 0 0 1 .75-.75H9a.75.75 0 0 1 .75.75v13.5a.75.75 0 0 1-.75.75H7.5a.75.75 0 0 1-.75-.75V5.25Zm7.5 0A.75.75 0 0 1 15 4.5h1.5a.75.75 0 0 1 .75.75v13.5a.75.75 0 0 1-.75.75H15a.75.75 0 0 1-.75-.75V5.25Z" clip-rule="evenodd" />
391
- </svg>
392
- `;
393
- this.button_.setAttribute("aria-label", "Pause");
394
- }
395
- }
396
- };
397
- var MobileSkipBackButton = class {
398
- constructor(parent, controls, onSkipBack) {
399
- this.parent = parent;
400
- this.controls = controls;
401
- if (typeof document === "undefined") {
402
- console.warn("MobileSkipBackButton: document is not available (SSR environment)");
403
- return;
404
- }
405
- this.video = controls?.getVideo?.() || parent.querySelector("video") || document.querySelector("video");
406
- if (!this.video) {
407
- console.error("MobileSkipBackButton: No video element found");
408
- return;
409
- }
410
- this.eventManager = { listen: (element, event, handler) => {
411
- element.addEventListener(event, handler);
412
- } };
413
- this.button_ = document.createElement("button");
414
- this.button_.className = "motto-mobile-skip-button";
415
- this.button_.innerHTML = `
416
- <svg width="20px" stroke-width="2" height="20px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
417
- <path d="M3 13C3 17.9706 7.02944 22 12 22C16.9706 22 21 17.9706 21 13C21 8.02944 16.9706 4 12 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
418
- <path d="M9 9L9 16" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
419
- <path d="M15 9L13 9C12.4477 9 12 9.44772 12 10L12 11.5C12 12.0523 12.4477 12.5 13 12.5L14 12.5C14.5523 12.5 15 12.9477 15 13.5L15 15C15 15.5523 14.5523 16 14 16L12 16" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
420
- <path d="M12 4L4.5 4M4.5 4L6.5 2M4.5 4L6.5 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
421
- </svg>
422
- `;
423
- this.button_.setAttribute("aria-label", "Skip back 15 seconds");
424
- this.parent.appendChild(this.button_);
425
- this.eventManager.listen(this.button_, "click", () => {
426
- const newTime = Math.max(0, this.video.currentTime - 15);
427
- this.video.currentTime = newTime;
428
- onSkipBack?.(newTime);
429
- });
430
- }
431
- };
432
- var MobileSkipForwardButton = class {
433
- constructor(parent, controls, onSkipForward) {
434
- this.parent = parent;
435
- this.controls = controls;
436
- if (typeof document === "undefined") {
437
- console.warn("MobileSkipForwardButton: document is not available (SSR environment)");
438
- return;
439
- }
440
- this.video = controls?.getVideo?.() || parent.querySelector("video") || document.querySelector("video");
441
- if (!this.video) {
442
- console.error("MobileSkipForwardButton: No video element found");
443
- return;
444
- }
445
- this.eventManager = { listen: (element, event, handler) => {
446
- element.addEventListener(event, handler);
447
- } };
448
- this.button_ = document.createElement("button");
449
- this.button_.className = "motto-mobile-skip-button";
450
- this.button_.innerHTML = `
451
- <svg fill="none" height="20" stroke-width="2" viewBox="0 0 24 24" width="20" xmlns="http://www.w3.org/2000/svg">
452
- <path d="M21 13C21 17.9706 16.9706 22 12 22C7.02944 22 3 17.9706 3 13C3 8.02944 7.02944 4 12 4" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
453
- <path d="M12 4H19.5M19.5 4L17.5 2M19.5 4L17.5 6" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
454
- <path d="M9 9L9 16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
455
- <path d="M15 9L13 9C12.4477 9 12 9.44772 12 10L12 11.5C12 12.0523 12.4477 12.5 13 12.5L14 12.5C14.5523 12.5 15 12.9477 15 13.5L15 15C15 15.5523 14.5523 16 14 16L12 16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
456
- </svg>
457
- `;
458
- this.button_.setAttribute("aria-label", "Skip forward 15 seconds");
459
- this.parent.appendChild(this.button_);
460
- this.eventManager.listen(this.button_, "click", () => {
461
- const newTime = Math.min(this.video.duration || 0, this.video.currentTime + 15);
462
- this.video.currentTime = newTime;
463
- onSkipForward?.(newTime);
464
- });
465
- }
466
- };
467
- var MobileControlsContainer = class {
468
- constructor(parent, controls, onSkipBack, onSkipForward) {
469
- this.parent = parent;
470
- this.controls = controls;
471
- if (typeof document === "undefined") {
472
- console.warn("MobileControlsContainer: document is not available (SSR environment)");
473
- return;
474
- }
475
- if (!parent) {
476
- console.error("MobileControlsContainer: No parent element provided");
477
- return;
478
- }
479
- this.container_ = document.createElement("div");
480
- this.container_.className = "motto-mobile-controls-overlay";
481
- const controlsGroup = document.createElement("div");
482
- controlsGroup.className = "motto-mobile-controls-group";
483
- new MobileSkipBackButton(controlsGroup, controls, onSkipBack);
484
- new MobilePlayButton(controlsGroup, controls);
485
- new MobileSkipForwardButton(controlsGroup, controls, onSkipForward);
486
- this.container_.appendChild(controlsGroup);
487
- this.parent.appendChild(this.container_);
488
- this.setupVisibilitySync();
489
- }
490
- setupVisibilitySync() {
491
- setTimeout(() => {
492
- this.syncVisibility();
493
- this.observer = new MutationObserver((mutations) => {
494
- mutations.forEach((mutation) => {
495
- if (mutation.type === "attributes" && mutation.attributeName === "class") {
496
- this.syncVisibility();
497
- }
498
- });
499
- });
500
- this.observer.observe(this.parent, {
501
- attributes: true,
502
- attributeFilter: ["class"]
503
- });
504
- const video = this.controls?.getVideo?.() || this.parent.querySelector("video");
505
- if (video) {
506
- video.addEventListener("play", () => {
507
- setTimeout(() => this.syncVisibility(), 50);
508
- });
509
- video.addEventListener("pause", () => {
510
- setTimeout(() => this.syncVisibility(), 50);
511
- });
512
- }
513
- }, 1e3);
514
- }
515
- syncVisibility() {
516
- const mainContainer = this.parent;
517
- const hasNoCursor = mainContainer.classList.contains("no-cursor");
518
- const video = this.controls?.getVideo?.() || this.parent.querySelector("video");
519
- const isVideoPaused = video ? video.paused : false;
520
- const isControlsVisible = !hasNoCursor || isVideoPaused;
521
- if (this.container_) {
522
- if (isControlsVisible) {
523
- this.container_.style.opacity = "1";
524
- this.container_.style.pointerEvents = "none";
525
- } else {
526
- this.container_.style.opacity = "0";
527
- this.container_.style.pointerEvents = "none";
528
- }
529
- }
530
- }
531
- isElementVisible(element) {
532
- if (typeof window === "undefined") {
533
- return false;
534
- }
535
- const style = window.getComputedStyle(element);
536
- const hasHiddenClass = element.classList.contains("shaka-hidden") || element.classList.contains("hidden") || element.classList.contains("shaka-fade-out");
537
- return style.display !== "none" && style.visibility !== "hidden" && style.opacity !== "0" && !element.hidden && !hasHiddenClass;
538
- }
539
- };
540
- var MobileControlsContainerFactory = class {
541
- constructor(onSkipBack, onSkipForward) {
542
- this.onSkipBack = onSkipBack;
1571
+ constructor(onSkipForward, iconSize) {
543
1572
  this.onSkipForward = onSkipForward;
1573
+ this.iconSize = iconSize;
544
1574
  }
545
1575
  create(rootElement, controls) {
546
- return new MobileControlsContainer(rootElement, controls, this.onSkipBack, this.onSkipForward);
1576
+ return new SkipForwardButton(rootElement, controls, this.onSkipForward, this.iconSize);
547
1577
  }
548
1578
  };
549
- var useShakaUI = (playerRef, containerRef, videoRef, controls, chromecastConfig, seekbarColors, onSkipBack, onSkipForward) => {
1579
+ var useShakaUI = (playerRef, containerRef, videoRef, controls, chromecastConfig, seekbarColors, onSkipBack, onSkipForward, iconSizes) => {
550
1580
  const uiRef = useRef4(null);
551
1581
  const registeredElements = useRef4(/* @__PURE__ */ new Set());
552
1582
  const initializeUI = useCallback5(async () => {
553
- if (typeof window === "undefined" || typeof document === "undefined") {
554
- console.warn("useShakaUI: Cannot initialize UI in SSR environment");
555
- return null;
556
- }
557
1583
  if (!controls || !containerRef.current || !playerRef.current || !videoRef.current) {
558
1584
  return null;
559
1585
  }
560
- const isMobile = typeof window !== "undefined" && typeof navigator !== "undefined" && (window.innerWidth <= 767 || /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent));
561
1586
  if (!registeredElements.current.has("skip_back_button")) {
562
- ShakaUI.Controls.registerElement("skip_back_button", new SkipBackButtonFactory(onSkipBack));
1587
+ ShakaUI.Controls.registerElement("skip_back_button", new SkipBackButtonFactory(onSkipBack, iconSizes?.skipButtons));
563
1588
  registeredElements.current.add("skip_back_button");
564
1589
  }
565
1590
  if (!registeredElements.current.has("skip_forward_button")) {
566
- ShakaUI.Controls.registerElement("skip_forward_button", new SkipForwardButtonFactory(onSkipForward));
1591
+ ShakaUI.Controls.registerElement("skip_forward_button", new SkipForwardButtonFactory(onSkipForward, iconSizes?.skipButtons));
567
1592
  registeredElements.current.add("skip_forward_button");
568
1593
  }
569
- if (isMobile) {
570
- if (!registeredElements.current.has("mobile_controls_container")) {
571
- ShakaUI.Controls.registerElement("mobile_controls_container", new MobileControlsContainerFactory(onSkipBack, onSkipForward));
572
- registeredElements.current.add("mobile_controls_container");
573
- }
574
- }
575
1594
  const ui = new ShakaUI.Overlay(playerRef.current, containerRef.current, videoRef.current);
576
1595
  uiRef.current = ui;
577
- const controlPanelElements = isMobile ? [
1596
+ const isMobile = window.innerWidth <= 767;
1597
+ const controlPanelElements = [
1598
+ ...isMobile ? [] : ["skip_back_button"],
1599
+ ...isMobile ? [] : ["play_pause"],
1600
+ ...isMobile ? [] : ["skip_forward_button"],
578
1601
  "mute",
1602
+ ...isMobile ? [] : ["volume"],
1603
+ // Only include volume on desktop
579
1604
  "time_and_duration",
580
1605
  "spacer",
581
1606
  "fullscreen",
582
- "overflow_menu"
583
- ] : [
584
- "skip_back_button",
585
- "play_pause",
586
- "skip_forward_button",
587
- "mute",
588
- "volume",
589
- "time_and_duration",
590
- "spacer",
591
- "fullscreen",
1607
+ "cast",
592
1608
  "overflow_menu"
593
1609
  ];
594
1610
  const uiConfig = {
@@ -601,10 +1617,16 @@ var useShakaUI = (playerRef, containerRef, videoRef, controls, chromecastConfig,
601
1617
  // Progress/played portion (white)
602
1618
  },
603
1619
  controlPanelElements,
1620
+ addBigPlayButton: isMobile,
604
1621
  ...chromecastConfig?.receiverApplicationId && {
605
1622
  "castReceiverAppId": chromecastConfig.receiverApplicationId,
606
1623
  "castAndroidReceiverCompatible": false
607
- }
1624
+ },
1625
+ overflowMenuButtons: [
1626
+ "quality",
1627
+ "picture_in_picture",
1628
+ "playback_rate"
1629
+ ]
608
1630
  };
609
1631
  if (chromecastConfig?.receiverApplicationId) {
610
1632
  uiConfig.castReceiverAppId = chromecastConfig.receiverApplicationId;
@@ -612,16 +1634,32 @@ var useShakaUI = (playerRef, containerRef, videoRef, controls, chromecastConfig,
612
1634
  }
613
1635
  ui.configure(uiConfig);
614
1636
  if (isMobile) {
615
- setTimeout(() => {
616
- const container = containerRef.current;
617
- const video = videoRef.current;
618
- if (container && video) {
619
- new MobileControlsContainer(container, { getVideo: () => video }, onSkipBack, onSkipForward);
1637
+ const customizeBigPlayButton = () => {
1638
+ const bigPlayButton = containerRef.current?.querySelector(".shaka-big-play-button");
1639
+ if (bigPlayButton && !bigPlayButton.hasAttribute("data-customized")) {
1640
+ const buttonSize = iconSizes?.bigPlayButton || 40;
1641
+ bigPlayButton.innerHTML = renderIcon(BigPlayIcon, { size: buttonSize });
1642
+ bigPlayButton.setAttribute("data-customized", "true");
1643
+ const buttonElement = bigPlayButton;
1644
+ buttonElement.style.display = "flex";
1645
+ buttonElement.style.alignItems = "center";
1646
+ buttonElement.style.justifyContent = "center";
620
1647
  }
621
- }, 500);
1648
+ };
1649
+ setTimeout(customizeBigPlayButton, 100);
1650
+ const observer = new MutationObserver(() => {
1651
+ customizeBigPlayButton();
1652
+ });
1653
+ if (containerRef.current) {
1654
+ observer.observe(containerRef.current, {
1655
+ childList: true,
1656
+ subtree: true,
1657
+ attributes: false
1658
+ });
1659
+ }
622
1660
  }
623
1661
  return ui;
624
- }, [controls, containerRef, playerRef, videoRef, chromecastConfig, seekbarColors, onSkipBack, onSkipForward]);
1662
+ }, [controls, containerRef, playerRef, videoRef, chromecastConfig, seekbarColors, onSkipBack, onSkipForward, iconSizes]);
625
1663
  const destroyUI = useCallback5(() => {
626
1664
  if (uiRef.current) {
627
1665
  try {
@@ -673,8 +1711,9 @@ import { useEffect, useState, useRef as useRef5 } from "react";
673
1711
  var useLiveBadge = (playerRef, options = {}) => {
674
1712
  const [isLive, setIsLive] = useState(false);
675
1713
  const [isVisible, setIsVisible] = useState(false);
1714
+ const [isNearLiveEdge, setIsNearLiveEdge] = useState(false);
676
1715
  const intervalRef = useRef5(null);
677
- const { enabled = true, onLiveStateChange } = options;
1716
+ const { enabled = true, onLiveStateChange, liveThresholdSeconds = 15 } = options;
678
1717
  const checkLiveStatus = () => {
679
1718
  if (!playerRef.current || !enabled) {
680
1719
  return;
@@ -693,11 +1732,30 @@ var useLiveBadge = (playerRef, options = {}) => {
693
1732
  return;
694
1733
  }
695
1734
  const liveStatus = timeline.isLive();
1735
+ let nearLiveEdge = false;
1736
+ if (liveStatus) {
1737
+ try {
1738
+ const seekRange = player.getSeekRange();
1739
+ const videoElement = player.getMediaElement();
1740
+ if (seekRange && videoElement) {
1741
+ const liveEdge = seekRange.end;
1742
+ const currentTime = videoElement.currentTime;
1743
+ const timeBehindLive = liveEdge - currentTime;
1744
+ nearLiveEdge = timeBehindLive <= liveThresholdSeconds;
1745
+ }
1746
+ } catch (error) {
1747
+ console.error("Error checking live edge position:", error);
1748
+ nearLiveEdge = liveStatus;
1749
+ }
1750
+ }
696
1751
  if (liveStatus !== isLive) {
697
1752
  setIsLive(liveStatus);
698
- setIsVisible(liveStatus);
699
1753
  onLiveStateChange?.(liveStatus);
700
1754
  }
1755
+ if (nearLiveEdge !== isNearLiveEdge) {
1756
+ setIsNearLiveEdge(nearLiveEdge);
1757
+ setIsVisible(nearLiveEdge);
1758
+ }
701
1759
  } catch (error) {
702
1760
  if (error instanceof Error && !error.message.includes("not a function")) {
703
1761
  console.error("Error checking live status:", error);
@@ -708,17 +1766,18 @@ var useLiveBadge = (playerRef, options = {}) => {
708
1766
  if (!enabled) {
709
1767
  setIsLive(false);
710
1768
  setIsVisible(false);
1769
+ setIsNearLiveEdge(false);
711
1770
  return;
712
1771
  }
713
1772
  checkLiveStatus();
714
- intervalRef.current = setInterval(checkLiveStatus, 2e3);
1773
+ intervalRef.current = setInterval(checkLiveStatus, 1e3);
715
1774
  return () => {
716
1775
  if (intervalRef.current) {
717
1776
  clearInterval(intervalRef.current);
718
1777
  intervalRef.current = null;
719
1778
  }
720
1779
  };
721
- }, [enabled, playerRef.current]);
1780
+ }, [enabled, playerRef.current, liveThresholdSeconds]);
722
1781
  useEffect(() => {
723
1782
  return () => {
724
1783
  if (intervalRef.current) {
@@ -731,6 +1790,7 @@ var useLiveBadge = (playerRef, options = {}) => {
731
1790
  return {
732
1791
  isLive,
733
1792
  isVisible,
1793
+ isNearLiveEdge,
734
1794
  hideBadge,
735
1795
  showBadge,
736
1796
  checkLiveStatus
@@ -742,19 +1802,48 @@ import { useEffect as useEffect2, useState as useState2 } from "react";
742
1802
 
743
1803
  // src/hooks/useLiveIndicator.ts
744
1804
  import { useEffect as useEffect3, useRef as useRef7 } from "react";
745
- var useLiveIndicator = (containerRef, options = {}) => {
1805
+ var useLiveIndicator = (containerRef, playerRef, options = {}) => {
746
1806
  const observerRef = useRef7(null);
1807
+ const intervalRef = useRef7(null);
747
1808
  const {
748
1809
  enabled = true,
749
1810
  indicatorColor = "#ff0000",
750
1811
  indicatorSize = 8,
751
- showPulseAnimation = true
1812
+ showPulseAnimation = true,
1813
+ liveThresholdSeconds = 15
752
1814
  } = options;
753
- useEffect3(() => {
754
- if (typeof window === "undefined" || typeof document === "undefined") {
755
- return;
1815
+ const isNearLiveEdge = (player) => {
1816
+ if (!player) return false;
1817
+ try {
1818
+ if (!player.getManifest || !player.getPresentationTimeline || typeof player.getPresentationTimeline !== "function") {
1819
+ return false;
1820
+ }
1821
+ const manifest = player.getManifest();
1822
+ if (!manifest) {
1823
+ return false;
1824
+ }
1825
+ const timeline = player.getPresentationTimeline();
1826
+ if (!timeline || typeof timeline.isLive !== "function") {
1827
+ return false;
1828
+ }
1829
+ const liveStatus = timeline.isLive();
1830
+ if (!liveStatus) return false;
1831
+ const seekRange = player.getSeekRange();
1832
+ const videoElement = player.getMediaElement();
1833
+ if (seekRange && videoElement) {
1834
+ const liveEdge = seekRange.end;
1835
+ const currentTime = videoElement.currentTime;
1836
+ const timeBehindLive = liveEdge - currentTime;
1837
+ return timeBehindLive <= liveThresholdSeconds;
1838
+ }
1839
+ return false;
1840
+ } catch (error) {
1841
+ console.error("Error checking live edge position in indicator:", error);
1842
+ return false;
756
1843
  }
757
- if (!containerRef.current || !enabled) {
1844
+ };
1845
+ useEffect3(() => {
1846
+ if (!containerRef.current || !playerRef.current || !enabled) {
758
1847
  return;
759
1848
  }
760
1849
  const addLiveIndicator = (currentTimeElement) => {
@@ -785,7 +1874,7 @@ var useLiveIndicator = (containerRef, options = {}) => {
785
1874
  const currentTimeElements = containerRef.current?.querySelectorAll(".shaka-current-time");
786
1875
  currentTimeElements?.forEach((element) => {
787
1876
  const textContent = element.textContent?.trim() || "";
788
- if (textContent.toLowerCase().includes("live")) {
1877
+ if (textContent.toLowerCase().includes("live") && isNearLiveEdge(playerRef.current)) {
789
1878
  addLiveIndicator(element);
790
1879
  } else {
791
1880
  removeLiveIndicator(element);
@@ -793,6 +1882,7 @@ var useLiveIndicator = (containerRef, options = {}) => {
793
1882
  });
794
1883
  };
795
1884
  checkForLiveContent();
1885
+ intervalRef.current = setInterval(checkForLiveContent, 1e3);
796
1886
  observerRef.current = new MutationObserver((mutations) => {
797
1887
  let shouldCheck = false;
798
1888
  mutations.forEach((mutation) => {
@@ -818,332 +1908,1263 @@ var useLiveIndicator = (containerRef, options = {}) => {
818
1908
  characterData: true,
819
1909
  characterDataOldValue: true
820
1910
  });
821
- const intervalId = setInterval(checkForLiveContent, 1e3);
822
1911
  return () => {
823
1912
  if (observerRef.current) {
824
1913
  observerRef.current.disconnect();
825
1914
  }
826
- clearInterval(intervalId);
1915
+ if (intervalRef.current) {
1916
+ clearInterval(intervalRef.current);
1917
+ }
827
1918
  };
828
- }, [containerRef, enabled, indicatorColor, indicatorSize, showPulseAnimation]);
1919
+ }, [containerRef, playerRef, enabled, indicatorColor, indicatorSize, showPulseAnimation, liveThresholdSeconds]);
829
1920
  return {
830
1921
  // Expose method to manually trigger check if needed
831
1922
  checkForLiveContent: () => {
832
1923
  const currentTimeElements = containerRef.current?.querySelectorAll(".shaka-current-time");
833
1924
  currentTimeElements?.forEach((element) => {
834
1925
  const textContent = element.textContent?.trim() || "";
835
- if (textContent.toLowerCase().includes("live")) {
1926
+ if (textContent.toLowerCase().includes("live") && isNearLiveEdge(playerRef.current)) {
836
1927
  }
837
1928
  });
838
1929
  }
839
- };
840
- };
841
-
842
- // src/hooks/useShakaAbsoluteTime.ts
843
- import { useEffect as useEffect4, useState as useState3 } from "react";
844
- function useShakaAbsoluteTime({
845
- player,
846
- controls,
847
- manualStreamStartDate
848
- }) {
849
- const [detectedStreamStart, setDetectedStreamStart] = useState3(null);
850
- const detectStreamStartFromManifest = async () => {
851
- if (!player) return null;
852
- try {
853
- const manifest = player.getManifest();
854
- if (!manifest) return null;
855
- const isLive = player.isLive();
856
- if (!isLive) return null;
857
- const video = player.getMediaElement();
858
- if (video && video.seekable && video.seekable.length > 0) {
859
- const seekableStart = video.seekable.start(0);
860
- const seekableEnd = video.seekable.end(0);
861
- const seekableDuration = seekableEnd - seekableStart;
862
- const now = Date.now() / 1e3;
863
- const estimatedStreamStart = now - seekableDuration;
864
- return new Date(estimatedStreamStart * 1e3);
865
- }
866
- const stats = player.getStats();
867
- if (stats && stats.manifestTimeSeconds) {
868
- return new Date((Date.now() / 1e3 - stats.manifestTimeSeconds) * 1e3);
1930
+ };
1931
+ };
1932
+
1933
+ // src/hooks/useKeyboardControls.ts
1934
+ import { useCallback as useCallback7, useEffect as useEffect4 } from "react";
1935
+ var useKeyboardControls = (videoRef, options = {}) => {
1936
+ const { skipBack, skipForward, enabled = true } = options;
1937
+ const isDesktop = useCallback7(() => {
1938
+ return window.innerWidth > 767 && !/Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
1939
+ }, []);
1940
+ const handleKeydown = useCallback7((event) => {
1941
+ if (!enabled || !isDesktop() || !videoRef.current) return;
1942
+ const activeElement = document.activeElement;
1943
+ if (activeElement && (activeElement.tagName === "INPUT" || activeElement.tagName === "TEXTAREA" || activeElement.isContentEditable)) {
1944
+ return;
1945
+ }
1946
+ switch (event.key) {
1947
+ case "ArrowLeft":
1948
+ event.preventDefault();
1949
+ skipBack?.();
1950
+ break;
1951
+ case "ArrowRight":
1952
+ event.preventDefault();
1953
+ skipForward?.();
1954
+ break;
1955
+ case " ":
1956
+ case "Space":
1957
+ event.preventDefault();
1958
+ if (videoRef.current.paused) {
1959
+ videoRef.current.play();
1960
+ } else {
1961
+ videoRef.current.pause();
1962
+ }
1963
+ break;
1964
+ }
1965
+ }, [enabled, videoRef, skipBack, skipForward, isDesktop]);
1966
+ useEffect4(() => {
1967
+ if (!enabled || !isDesktop()) return;
1968
+ document.addEventListener("keydown", handleKeydown);
1969
+ return () => {
1970
+ document.removeEventListener("keydown", handleKeydown);
1971
+ };
1972
+ }, [handleKeydown, enabled, isDesktop]);
1973
+ return {
1974
+ isDesktop: isDesktop()
1975
+ };
1976
+ };
1977
+
1978
+ // src/components/Loading.tsx
1979
+ import { twMerge } from "tailwind-merge";
1980
+ import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
1981
+ var Loading = ({ className }) => /* @__PURE__ */ jsxs3(
1982
+ "div",
1983
+ {
1984
+ className: twMerge(
1985
+ "relative bg-[#151515] md:rounded-2xl! overflow-hidden aspect-video text-white w-full h-full flex justify-center items-center text-[10px]",
1986
+ className
1987
+ ),
1988
+ role: "status",
1989
+ children: [
1990
+ /* @__PURE__ */ jsx4("div", { className: "shaka-spinner-container flex justify-center items-center", children: /* @__PURE__ */ jsx4(
1991
+ "svg",
1992
+ {
1993
+ className: "shaka-spinner-svg animate-spin h-12 w-12",
1994
+ viewBox: "0 0 64 64",
1995
+ xmlns: "http://www.w3.org/2000/svg",
1996
+ children: /* @__PURE__ */ jsx4(
1997
+ "circle",
1998
+ {
1999
+ className: "shaka-spinner-path",
2000
+ cx: "32",
2001
+ cy: "32",
2002
+ r: "28",
2003
+ strokeWidth: "4",
2004
+ strokeLinecap: "round"
2005
+ }
2006
+ )
2007
+ }
2008
+ ) }),
2009
+ /* @__PURE__ */ jsx4("span", { className: "sr-only", children: "Loading..." })
2010
+ ]
2011
+ }
2012
+ );
2013
+
2014
+ // src/components/ErrorScreen.tsx
2015
+ import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
2016
+ var ErrorScreen = ({ title, description }) => /* @__PURE__ */ jsx5("div", { className: "w-full h-full md:rounded-2xl! aspect-video bg-black", children: /* @__PURE__ */ jsxs4("div", { className: "bg-[#151515] text-white w-full h-full flex justify-stretch items-center", children: [
2017
+ /* @__PURE__ */ jsx5(
2018
+ "svg",
2019
+ {
2020
+ className: "w-24 h-24 m-6",
2021
+ fill: "none",
2022
+ stroke: "currentColor",
2023
+ strokeWidth: "2",
2024
+ style: { width: 96 },
2025
+ viewBox: "0 0 24 24",
2026
+ xmlns: "http://www.w3.org/2000/svg",
2027
+ children: /* @__PURE__ */ jsx5(
2028
+ "path",
2029
+ {
2030
+ d: "M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z",
2031
+ strokeLinecap: "round",
2032
+ strokeLinejoin: "round"
2033
+ }
2034
+ )
2035
+ }
2036
+ ),
2037
+ /* @__PURE__ */ jsxs4("div", { children: [
2038
+ /* @__PURE__ */ jsx5("h3", { className: "text-2xl mb-2", children: title || "Playback Error" }),
2039
+ /* @__PURE__ */ jsx5("div", { className: "text-lg", children: description || "Unable to play the video. Please try again later." })
2040
+ ] })
2041
+ ] }) });
2042
+
2043
+ // src/components/Title.tsx
2044
+ import { jsx as jsx6 } from "react/jsx-runtime";
2045
+ var Title = ({ title }) => /* @__PURE__ */ jsx6("div", { className: "absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/70 to-transparent p-4", children: /* @__PURE__ */ jsx6("h2", { className: "text-white text-xl font-semibold", children: title }) });
2046
+
2047
+ // src/components/LiveBadge.tsx
2048
+ import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
2049
+ var LiveBadge = ({
2050
+ isVisible,
2051
+ position = "top-right",
2052
+ className = "",
2053
+ style = {},
2054
+ text = "LIVE"
2055
+ }) => {
2056
+ if (!isVisible) return null;
2057
+ const positionClasses = {
2058
+ "top-left": "top-4 left-4",
2059
+ "top-right": "top-4 right-4",
2060
+ "bottom-left": "bottom-4 left-4",
2061
+ "bottom-right": "bottom-4 right-4"
2062
+ };
2063
+ return /* @__PURE__ */ jsx7(
2064
+ "div",
2065
+ {
2066
+ className: `
2067
+ absolute z-50
2068
+ ${positionClasses[position]}
2069
+ bg-red-600 text-white
2070
+ px-2 py-1
2071
+ rounded-md
2072
+ text-xs font-bold
2073
+ uppercase tracking-wide
2074
+ shadow-lg
2075
+ animate-pulse
2076
+ pointer-events-none
2077
+ ${className}
2078
+ `,
2079
+ style,
2080
+ children: /* @__PURE__ */ jsxs5("span", { className: "flex items-center gap-1", children: [
2081
+ /* @__PURE__ */ jsx7("span", { className: "w-2 h-2 bg-white rounded-full animate-pulse" }),
2082
+ text
2083
+ ] })
2084
+ }
2085
+ );
2086
+ };
2087
+
2088
+ // src/styles.css
2089
+ styleInject(`/*! tailwindcss v4.1.8 | MIT License | https://tailwindcss.com */
2090
+ @layer properties;
2091
+ @layer theme, base, components, utilities;
2092
+ @layer theme {
2093
+ :root,
2094
+ :host {
2095
+ --font-sans:
2096
+ ui-sans-serif,
2097
+ system-ui,
2098
+ sans-serif,
2099
+ "Apple Color Emoji",
2100
+ "Segoe UI Emoji",
2101
+ "Segoe UI Symbol",
2102
+ "Noto Color Emoji";
2103
+ --font-mono:
2104
+ ui-monospace,
2105
+ SFMono-Regular,
2106
+ Menlo,
2107
+ Monaco,
2108
+ Consolas,
2109
+ "Liberation Mono",
2110
+ "Courier New",
2111
+ monospace;
2112
+ --color-red-600: oklch(57.7% 0.245 27.325);
2113
+ --color-black: #000;
2114
+ --color-white: #fff;
2115
+ --spacing: 0.25rem;
2116
+ --text-xs: 0.75rem;
2117
+ --text-xs--line-height: calc(1 / 0.75);
2118
+ --text-sm: 0.875rem;
2119
+ --text-sm--line-height: calc(1.25 / 0.875);
2120
+ --text-base: 1rem;
2121
+ --text-base--line-height: calc(1.5 / 1);
2122
+ --text-lg: 1.125rem;
2123
+ --text-lg--line-height: calc(1.75 / 1.125);
2124
+ --text-xl: 1.25rem;
2125
+ --text-xl--line-height: calc(1.75 / 1.25);
2126
+ --text-2xl: 1.5rem;
2127
+ --text-2xl--line-height: calc(2 / 1.5);
2128
+ --text-5xl: 3rem;
2129
+ --text-5xl--line-height: 1;
2130
+ --font-weight-medium: 500;
2131
+ --font-weight-semibold: 600;
2132
+ --font-weight-bold: 700;
2133
+ --tracking-wide: 0.025em;
2134
+ --tracking-widest: 0.1em;
2135
+ --radius-md: 0.375rem;
2136
+ --radius-2xl: 1rem;
2137
+ --animate-spin: spin 1s linear infinite;
2138
+ --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
2139
+ --aspect-video: 16 / 9;
2140
+ --default-transition-duration: 150ms;
2141
+ --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2142
+ --default-font-family: var(--font-sans);
2143
+ --default-mono-font-family: var(--font-mono);
2144
+ }
2145
+ }
2146
+ @layer base {
2147
+ *,
2148
+ ::after,
2149
+ ::before,
2150
+ ::backdrop,
2151
+ ::file-selector-button {
2152
+ box-sizing: border-box;
2153
+ margin: 0;
2154
+ padding: 0;
2155
+ border: 0 solid;
2156
+ }
2157
+ html,
2158
+ :host {
2159
+ line-height: 1.5;
2160
+ -webkit-text-size-adjust: 100%;
2161
+ tab-size: 4;
2162
+ font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");
2163
+ font-feature-settings: var(--default-font-feature-settings, normal);
2164
+ font-variation-settings: var(--default-font-variation-settings, normal);
2165
+ -webkit-tap-highlight-color: transparent;
2166
+ }
2167
+ hr {
2168
+ height: 0;
2169
+ color: inherit;
2170
+ border-top-width: 1px;
2171
+ }
2172
+ abbr:where([title]) {
2173
+ -webkit-text-decoration: underline dotted;
2174
+ text-decoration: underline dotted;
2175
+ }
2176
+ h1,
2177
+ h2,
2178
+ h3,
2179
+ h4,
2180
+ h5,
2181
+ h6 {
2182
+ font-size: inherit;
2183
+ font-weight: inherit;
2184
+ }
2185
+ a {
2186
+ color: inherit;
2187
+ -webkit-text-decoration: inherit;
2188
+ text-decoration: inherit;
2189
+ }
2190
+ b,
2191
+ strong {
2192
+ font-weight: bolder;
2193
+ }
2194
+ code,
2195
+ kbd,
2196
+ samp,
2197
+ pre {
2198
+ font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
2199
+ font-feature-settings: var(--default-mono-font-feature-settings, normal);
2200
+ font-variation-settings: var(--default-mono-font-variation-settings, normal);
2201
+ font-size: 1em;
2202
+ }
2203
+ small {
2204
+ font-size: 80%;
2205
+ }
2206
+ sub,
2207
+ sup {
2208
+ font-size: 75%;
2209
+ line-height: 0;
2210
+ position: relative;
2211
+ vertical-align: baseline;
2212
+ }
2213
+ sub {
2214
+ bottom: -0.25em;
2215
+ }
2216
+ sup {
2217
+ top: -0.5em;
2218
+ }
2219
+ table {
2220
+ text-indent: 0;
2221
+ border-color: inherit;
2222
+ border-collapse: collapse;
2223
+ }
2224
+ :-moz-focusring {
2225
+ outline: auto;
2226
+ }
2227
+ progress {
2228
+ vertical-align: baseline;
2229
+ }
2230
+ summary {
2231
+ display: list-item;
2232
+ }
2233
+ ol,
2234
+ ul,
2235
+ menu {
2236
+ list-style: none;
2237
+ }
2238
+ img,
2239
+ svg,
2240
+ video,
2241
+ canvas,
2242
+ audio,
2243
+ iframe,
2244
+ embed,
2245
+ object {
2246
+ display: block;
2247
+ vertical-align: middle;
2248
+ }
2249
+ img,
2250
+ video {
2251
+ max-width: 100%;
2252
+ height: auto;
2253
+ }
2254
+ button,
2255
+ input,
2256
+ select,
2257
+ optgroup,
2258
+ textarea,
2259
+ ::file-selector-button {
2260
+ font: inherit;
2261
+ font-feature-settings: inherit;
2262
+ font-variation-settings: inherit;
2263
+ letter-spacing: inherit;
2264
+ color: inherit;
2265
+ border-radius: 0;
2266
+ background-color: transparent;
2267
+ opacity: 1;
2268
+ }
2269
+ :where(select:is([multiple], [size])) optgroup {
2270
+ font-weight: bolder;
2271
+ }
2272
+ :where(select:is([multiple], [size])) optgroup option {
2273
+ padding-inline-start: 20px;
2274
+ }
2275
+ ::file-selector-button {
2276
+ margin-inline-end: 4px;
2277
+ }
2278
+ ::placeholder {
2279
+ opacity: 1;
2280
+ }
2281
+ @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {
2282
+ ::placeholder {
2283
+ color: currentcolor;
2284
+ @supports (color: color-mix(in lab, red, red)) {
2285
+ color: color-mix(in oklab, currentcolor 50%, transparent);
2286
+ }
2287
+ }
2288
+ }
2289
+ textarea {
2290
+ resize: vertical;
2291
+ }
2292
+ ::-webkit-search-decoration {
2293
+ -webkit-appearance: none;
2294
+ }
2295
+ ::-webkit-date-and-time-value {
2296
+ min-height: 1lh;
2297
+ text-align: inherit;
2298
+ }
2299
+ ::-webkit-datetime-edit {
2300
+ display: inline-flex;
2301
+ }
2302
+ ::-webkit-datetime-edit-fields-wrapper {
2303
+ padding: 0;
2304
+ }
2305
+ ::-webkit-datetime-edit,
2306
+ ::-webkit-datetime-edit-year-field,
2307
+ ::-webkit-datetime-edit-month-field,
2308
+ ::-webkit-datetime-edit-day-field,
2309
+ ::-webkit-datetime-edit-hour-field,
2310
+ ::-webkit-datetime-edit-minute-field,
2311
+ ::-webkit-datetime-edit-second-field,
2312
+ ::-webkit-datetime-edit-millisecond-field,
2313
+ ::-webkit-datetime-edit-meridiem-field {
2314
+ padding-block: 0;
2315
+ }
2316
+ :-moz-ui-invalid {
2317
+ box-shadow: none;
2318
+ }
2319
+ button,
2320
+ input:where([type=button], [type=reset], [type=submit]),
2321
+ ::file-selector-button {
2322
+ appearance: button;
2323
+ }
2324
+ ::-webkit-inner-spin-button,
2325
+ ::-webkit-outer-spin-button {
2326
+ height: auto;
2327
+ }
2328
+ [hidden]:where(:not([hidden=until-found])) {
2329
+ display: none !important;
2330
+ }
2331
+ }
2332
+ @layer utilities {
2333
+ .pointer-events-auto {
2334
+ pointer-events: auto;
2335
+ }
2336
+ .pointer-events-none {
2337
+ pointer-events: none;
2338
+ }
2339
+ .visible {
2340
+ visibility: visible;
2341
+ }
2342
+ .sr-only {
2343
+ position: absolute;
2344
+ width: 1px;
2345
+ height: 1px;
2346
+ padding: 0;
2347
+ margin: -1px;
2348
+ overflow: hidden;
2349
+ clip: rect(0, 0, 0, 0);
2350
+ white-space: nowrap;
2351
+ border-width: 0;
2352
+ }
2353
+ .absolute {
2354
+ position: absolute;
2355
+ }
2356
+ .fixed {
2357
+ position: fixed;
2358
+ }
2359
+ .relative {
2360
+ position: relative;
2361
+ }
2362
+ .static {
2363
+ position: static;
2364
+ }
2365
+ .inset-0 {
2366
+ inset: calc(var(--spacing) * 0);
2367
+ }
2368
+ .top-0 {
2369
+ top: calc(var(--spacing) * 0);
2370
+ }
2371
+ .top-4 {
2372
+ top: calc(var(--spacing) * 4);
2373
+ }
2374
+ .right-0 {
2375
+ right: calc(var(--spacing) * 0);
2376
+ }
2377
+ .right-4 {
2378
+ right: calc(var(--spacing) * 4);
2379
+ }
2380
+ .bottom-0 {
2381
+ bottom: calc(var(--spacing) * 0);
2382
+ }
2383
+ .bottom-4 {
2384
+ bottom: calc(var(--spacing) * 4);
2385
+ }
2386
+ .left-0 {
2387
+ left: calc(var(--spacing) * 0);
2388
+ }
2389
+ .left-4 {
2390
+ left: calc(var(--spacing) * 4);
2391
+ }
2392
+ .z-10 {
2393
+ z-index: 10;
2394
+ }
2395
+ .z-50 {
2396
+ z-index: 50;
2397
+ }
2398
+ .container {
2399
+ width: 100%;
2400
+ @media (width >= 40rem) {
2401
+ max-width: 40rem;
2402
+ }
2403
+ @media (width >= 48rem) {
2404
+ max-width: 48rem;
2405
+ }
2406
+ @media (width >= 64rem) {
2407
+ max-width: 64rem;
2408
+ }
2409
+ @media (width >= 80rem) {
2410
+ max-width: 80rem;
2411
+ }
2412
+ @media (width >= 96rem) {
2413
+ max-width: 96rem;
2414
+ }
2415
+ }
2416
+ .m-6 {
2417
+ margin: calc(var(--spacing) * 6);
2418
+ }
2419
+ .mt-1 {
2420
+ margin-top: calc(var(--spacing) * 1);
2421
+ }
2422
+ .mt-3 {
2423
+ margin-top: calc(var(--spacing) * 3);
2424
+ }
2425
+ .mb-2 {
2426
+ margin-bottom: calc(var(--spacing) * 2);
2427
+ }
2428
+ .mb-6 {
2429
+ margin-bottom: calc(var(--spacing) * 6);
2430
+ }
2431
+ .flex {
2432
+ display: flex;
2433
+ }
2434
+ .grid {
2435
+ display: grid;
2436
+ }
2437
+ .aspect-video {
2438
+ aspect-ratio: var(--aspect-video);
2439
+ }
2440
+ .h-2 {
2441
+ height: calc(var(--spacing) * 2);
2442
+ }
2443
+ .h-12 {
2444
+ height: calc(var(--spacing) * 12);
2445
+ }
2446
+ .h-24 {
2447
+ height: calc(var(--spacing) * 24);
2448
+ }
2449
+ .h-full {
2450
+ height: 100%;
2451
+ }
2452
+ .w-2 {
2453
+ width: calc(var(--spacing) * 2);
2454
+ }
2455
+ .w-12 {
2456
+ width: calc(var(--spacing) * 12);
2457
+ }
2458
+ .w-24 {
2459
+ width: calc(var(--spacing) * 24);
2460
+ }
2461
+ .w-full {
2462
+ width: 100%;
2463
+ }
2464
+ .animate-pulse {
2465
+ animation: var(--animate-pulse);
2466
+ }
2467
+ .animate-spin {
2468
+ animation: var(--animate-spin);
2469
+ }
2470
+ .auto-cols-max {
2471
+ grid-auto-columns: max-content;
2472
+ }
2473
+ .grid-flow-col {
2474
+ grid-auto-flow: column;
2475
+ }
2476
+ .flex-col {
2477
+ flex-direction: column;
2478
+ }
2479
+ .items-center {
2480
+ align-items: center;
2481
+ }
2482
+ .justify-center {
2483
+ justify-content: center;
2484
+ }
2485
+ .justify-stretch {
2486
+ justify-content: stretch;
2487
+ }
2488
+ .gap-1 {
2489
+ gap: calc(var(--spacing) * 1);
2490
+ }
2491
+ .gap-5 {
2492
+ gap: calc(var(--spacing) * 5);
2493
+ }
2494
+ .overflow-hidden {
2495
+ overflow: hidden;
2496
+ }
2497
+ .rounded-full {
2498
+ border-radius: calc(infinity * 1px);
2499
+ }
2500
+ .rounded-md {
2501
+ border-radius: var(--radius-md);
2502
+ }
2503
+ .bg-\\[\\#151515\\] {
2504
+ background-color: #151515;
2505
+ }
2506
+ .bg-black {
2507
+ background-color: var(--color-black);
2508
+ }
2509
+ .bg-red-600 {
2510
+ background-color: var(--color-red-600);
2511
+ }
2512
+ .bg-white {
2513
+ background-color: var(--color-white);
2514
+ }
2515
+ .bg-gradient-to-t {
2516
+ --tw-gradient-position: to top in oklab;
2517
+ background-image: linear-gradient(var(--tw-gradient-stops));
2518
+ }
2519
+ .from-black\\/70 {
2520
+ --tw-gradient-from: color-mix(in srgb, #000 70%, transparent);
2521
+ @supports (color: color-mix(in lab, red, red)) {
2522
+ --tw-gradient-from: color-mix(in oklab, var(--color-black) 70%, transparent);
2523
+ }
2524
+ --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));
2525
+ }
2526
+ .to-transparent {
2527
+ --tw-gradient-to: transparent;
2528
+ --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));
2529
+ }
2530
+ .bg-cover {
2531
+ background-size: cover;
2532
+ }
2533
+ .bg-center {
2534
+ background-position: center;
2535
+ }
2536
+ .bg-no-repeat {
2537
+ background-repeat: no-repeat;
2538
+ }
2539
+ .p-2 {
2540
+ padding: calc(var(--spacing) * 2);
2541
+ }
2542
+ .p-4 {
2543
+ padding: calc(var(--spacing) * 4);
2544
+ }
2545
+ .px-2 {
2546
+ padding-inline: calc(var(--spacing) * 2);
2547
+ }
2548
+ .px-4 {
2549
+ padding-inline: calc(var(--spacing) * 4);
2550
+ }
2551
+ .py-1 {
2552
+ padding-block: calc(var(--spacing) * 1);
2553
+ }
2554
+ .text-center {
2555
+ text-align: center;
2556
+ }
2557
+ .text-left {
2558
+ text-align: left;
2559
+ }
2560
+ .font-mono {
2561
+ font-family: var(--font-mono);
2562
+ }
2563
+ .text-2xl {
2564
+ font-size: var(--text-2xl);
2565
+ line-height: var(--tw-leading, var(--text-2xl--line-height));
2566
+ }
2567
+ .text-5xl {
2568
+ font-size: var(--text-5xl);
2569
+ line-height: var(--tw-leading, var(--text-5xl--line-height));
2570
+ }
2571
+ .text-base {
2572
+ font-size: var(--text-base);
2573
+ line-height: var(--tw-leading, var(--text-base--line-height));
2574
+ }
2575
+ .text-lg {
2576
+ font-size: var(--text-lg);
2577
+ line-height: var(--tw-leading, var(--text-lg--line-height));
2578
+ }
2579
+ .text-sm {
2580
+ font-size: var(--text-sm);
2581
+ line-height: var(--tw-leading, var(--text-sm--line-height));
2582
+ }
2583
+ .text-xl {
2584
+ font-size: var(--text-xl);
2585
+ line-height: var(--tw-leading, var(--text-xl--line-height));
2586
+ }
2587
+ .text-xs {
2588
+ font-size: var(--text-xs);
2589
+ line-height: var(--tw-leading, var(--text-xs--line-height));
2590
+ }
2591
+ .text-\\[10px\\] {
2592
+ font-size: 10px;
2593
+ }
2594
+ .font-bold {
2595
+ --tw-font-weight: var(--font-weight-bold);
2596
+ font-weight: var(--font-weight-bold);
2597
+ }
2598
+ .font-medium {
2599
+ --tw-font-weight: var(--font-weight-medium);
2600
+ font-weight: var(--font-weight-medium);
2601
+ }
2602
+ .font-semibold {
2603
+ --tw-font-weight: var(--font-weight-semibold);
2604
+ font-weight: var(--font-weight-semibold);
2605
+ }
2606
+ .tracking-wide {
2607
+ --tw-tracking: var(--tracking-wide);
2608
+ letter-spacing: var(--tracking-wide);
2609
+ }
2610
+ .tracking-widest {
2611
+ --tw-tracking: var(--tracking-widest);
2612
+ letter-spacing: var(--tracking-widest);
2613
+ }
2614
+ .text-white {
2615
+ color: var(--color-white);
2616
+ }
2617
+ .uppercase {
2618
+ text-transform: uppercase;
2619
+ }
2620
+ .shadow-lg {
2621
+ --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
2622
+ box-shadow:
2623
+ var(--tw-inset-shadow),
2624
+ var(--tw-inset-ring-shadow),
2625
+ var(--tw-ring-offset-shadow),
2626
+ var(--tw-ring-shadow),
2627
+ var(--tw-shadow);
2628
+ }
2629
+ .filter {
2630
+ 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,);
2631
+ }
2632
+ .md\\:rounded-2xl {
2633
+ @media (width >= 48rem) {
2634
+ border-radius: var(--radius-2xl);
2635
+ }
2636
+ }
2637
+ .md\\:rounded-2xl\\! {
2638
+ @media (width >= 48rem) {
2639
+ border-radius: var(--radius-2xl) !important;
2640
+ }
2641
+ }
2642
+ .md\\:text-base {
2643
+ @media (width >= 48rem) {
2644
+ font-size: var(--text-base);
2645
+ line-height: var(--tw-leading, var(--text-base--line-height));
2646
+ }
2647
+ }
2648
+ .md\\:text-sm {
2649
+ @media (width >= 48rem) {
2650
+ font-size: var(--text-sm);
2651
+ line-height: var(--tw-leading, var(--text-sm--line-height));
2652
+ }
2653
+ }
2654
+ .md\\:text-xl {
2655
+ @media (width >= 48rem) {
2656
+ font-size: var(--text-xl);
2657
+ line-height: var(--tw-leading, var(--text-xl--line-height));
2658
+ }
2659
+ }
2660
+ }
2661
+ @layer components {
2662
+ video::-webkit-media-controls {
2663
+ display: none !important;
2664
+ }
2665
+ video::-webkit-media-controls-panel {
2666
+ display: none !important;
2667
+ }
2668
+ video::-webkit-media-controls-play-button {
2669
+ display: none !important;
2670
+ }
2671
+ video::-webkit-media-controls-timeline {
2672
+ display: none !important;
2673
+ }
2674
+ video::-webkit-media-controls-current-time-display {
2675
+ display: none !important;
2676
+ }
2677
+ video::-webkit-media-controls-time-remaining-display {
2678
+ display: none !important;
2679
+ }
2680
+ video::-webkit-media-controls-mute-button {
2681
+ display: none !important;
2682
+ }
2683
+ video::-webkit-media-controls-volume-slider {
2684
+ display: none !important;
2685
+ }
2686
+ video::-webkit-media-controls-fullscreen-button {
2687
+ display: none !important;
2688
+ }
2689
+ video::-webkit-media-controls-overlay-play-button {
2690
+ display: none !important;
2691
+ }
2692
+ video::-moz-media-controls {
2693
+ display: none !important;
2694
+ }
2695
+ video {
2696
+ outline: none !important;
2697
+ }
2698
+ video[controls] {
2699
+ -webkit-appearance: none !important;
2700
+ appearance: none !important;
2701
+ }
2702
+ video::-webkit-media-controls-enclosure {
2703
+ display: none !important;
2704
+ }
2705
+ video::-webkit-media-controls-start-playback-button {
2706
+ display: none !important;
2707
+ }
2708
+ video[controls]::-webkit-media-controls,
2709
+ video[controls]::-webkit-media-controls-panel,
2710
+ video[controls]::-webkit-media-controls-play-button,
2711
+ video[controls]::-webkit-media-controls-timeline,
2712
+ video[controls]::-webkit-media-controls-current-time-display,
2713
+ video[controls]::-webkit-media-controls-time-remaining-display,
2714
+ video[controls]::-webkit-media-controls-mute-button,
2715
+ video[controls]::-webkit-media-controls-volume-slider,
2716
+ video[controls]::-webkit-media-controls-fullscreen-button,
2717
+ video[controls]::-webkit-media-controls-overlay-play-button,
2718
+ video[controls]::-webkit-media-controls-enclosure,
2719
+ video[controls]::-webkit-media-controls-start-playback-button {
2720
+ display: none !important;
2721
+ visibility: hidden !important;
2722
+ opacity: 0 !important;
2723
+ pointer-events: none !important;
2724
+ }
2725
+ video[controls]::-moz-media-controls {
2726
+ display: none !important;
2727
+ visibility: hidden !important;
2728
+ opacity: 0 !important;
2729
+ }
2730
+ .motto-video-container {
2731
+ position: relative;
2732
+ width: 100%;
2733
+ min-height: 300px;
2734
+ }
2735
+ @supports (aspect-ratio: 16/9) {
2736
+ .motto-video-container {
2737
+ min-height: auto;
2738
+ }
2739
+ }
2740
+ .motto-video-responsive {
2741
+ position: absolute;
2742
+ top: calc(var(--spacing) * 0);
2743
+ left: calc(var(--spacing) * 0);
2744
+ height: 100%;
2745
+ width: 100%;
2746
+ }
2747
+ .motto-skip-button {
2748
+ position: absolute;
2749
+ top: calc(1/2 * 100%);
2750
+ z-index: 10;
2751
+ display: flex;
2752
+ height: calc(var(--spacing) * 16);
2753
+ width: calc(var(--spacing) * 16);
2754
+ --tw-translate-y: calc(calc(1/2 * 100%) * -1);
2755
+ translate: var(--tw-translate-x) var(--tw-translate-y);
2756
+ cursor: pointer;
2757
+ align-items: center;
2758
+ justify-content: center;
2759
+ border-radius: calc(infinity * 1px);
2760
+ border-style: var(--tw-border-style);
2761
+ border-width: 0px;
2762
+ background-color: color-mix(in srgb, #000 70%, transparent);
2763
+ @supports (color: color-mix(in lab, red, red)) {
2764
+ background-color: color-mix(in oklab, var(--color-black) 70%, transparent);
2765
+ }
2766
+ font-size: var(--text-2xl);
2767
+ line-height: var(--tw-leading, var(--text-2xl--line-height));
2768
+ color: var(--color-white);
2769
+ opacity: 80%;
2770
+ transition-property: all;
2771
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
2772
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
2773
+ --tw-duration: 200ms;
2774
+ transition-duration: 200ms;
2775
+ &:hover {
2776
+ @media (hover: hover) {
2777
+ --tw-scale-x: 110%;
2778
+ --tw-scale-y: 110%;
2779
+ --tw-scale-z: 110%;
2780
+ scale: var(--tw-scale-x) var(--tw-scale-y);
869
2781
  }
870
- try {
871
- const bufferedTimeRanges = video?.buffered;
872
- if (bufferedTimeRanges && bufferedTimeRanges.length > 0) {
873
- const totalBuffered = bufferedTimeRanges.end(bufferedTimeRanges.length - 1);
874
- const now = Date.now() / 1e3;
875
- return new Date((now - totalBuffered) * 1e3);
876
- }
877
- } catch (error) {
878
- console.warn("Error extracting buffered timing info:", error);
2782
+ }
2783
+ &:hover {
2784
+ @media (hover: hover) {
2785
+ opacity: 100%;
879
2786
  }
880
- console.warn("Could not detect stream start time from manifest");
881
- return null;
882
- } catch (error) {
883
- console.warn("Error detecting stream start time:", error);
884
- return null;
885
2787
  }
886
- };
887
- useEffect4(() => {
888
- if (!player || manualStreamStartDate) return;
889
- const detectStartTime = async () => {
890
- setTimeout(async () => {
891
- const detectedStart = await detectStreamStartFromManifest();
892
- if (detectedStart) {
893
- setDetectedStreamStart(detectedStart);
894
- console.log("Detected stream start time:", detectedStart.toISOString());
895
- }
896
- }, 1e3);
897
- };
898
- const onManifestParsed = () => {
899
- detectStartTime();
900
- };
901
- detectStartTime();
902
- try {
903
- player.addEventListener("manifestparsed", onManifestParsed);
904
- player.addEventListener("streaming", onManifestParsed);
905
- } catch (error) {
906
- console.warn("Could not add manifest event listeners:", error);
2788
+ &:active {
2789
+ --tw-scale-x: 95%;
2790
+ --tw-scale-y: 95%;
2791
+ --tw-scale-z: 95%;
2792
+ scale: var(--tw-scale-x) var(--tw-scale-y);
907
2793
  }
908
- return () => {
909
- try {
910
- player.removeEventListener("manifestparsed", onManifestParsed);
911
- player.removeEventListener("streaming", onManifestParsed);
912
- } catch (error) {
913
- }
914
- };
915
- }, [player, manualStreamStartDate]);
916
- const effectiveStreamStart = manualStreamStartDate || detectedStreamStart;
917
- useEffect4(() => {
918
- if (!player || !controls || !effectiveStreamStart) return;
919
- const video = player.getMediaElement();
920
- if (!video) return;
921
- let originalGetDisplayTime;
922
- let timeDisplayElement;
923
- const formatElapsedTime = (elapsedSeconds) => {
924
- const hours = Math.floor(elapsedSeconds / 3600);
925
- const minutes = Math.floor(elapsedSeconds % 3600 / 60);
926
- const seconds = Math.floor(elapsedSeconds % 60);
927
- if (hours > 0) {
928
- return [hours, minutes, seconds].map((val) => val.toString().padStart(2, "0")).join(":");
929
- } else {
930
- return [minutes, seconds].map((val) => val.toString().padStart(2, "0")).join(":");
931
- }
932
- };
933
- const getElapsedTime = () => {
934
- const now = /* @__PURE__ */ new Date();
935
- const elapsedMs = now.getTime() - effectiveStreamStart.getTime();
936
- return Math.max(0, elapsedMs / 1e3);
937
- };
938
- const customGetDisplayTime = function() {
939
- const elapsedSeconds = getElapsedTime();
940
- return formatElapsedTime(elapsedSeconds);
941
- };
942
- const setupTimeDisplayOverride = () => {
943
- try {
944
- const controlsContainer = controls.getControlsContainer();
945
- if (!controlsContainer) return;
946
- const timeDisplay = controlsContainer.querySelector(".shaka-current-time");
947
- if (timeDisplay) {
948
- timeDisplayElement = timeDisplay;
949
- if (timeDisplayElement.getDisplayTime) {
950
- originalGetDisplayTime = timeDisplayElement.getDisplayTime.bind(timeDisplayElement);
951
- timeDisplayElement.getDisplayTime = customGetDisplayTime.bind(timeDisplayElement);
952
- } else {
953
- setupDirectTextUpdate();
954
- }
955
- }
956
- } catch (error) {
957
- console.warn("Error setting up time display override:", error);
958
- setupDirectTextUpdate();
959
- }
960
- };
961
- const setupDirectTextUpdate = () => {
962
- let animationFrameId;
963
- let isDestroyed = false;
964
- const updateTimeDisplay = () => {
965
- if (isDestroyed) return;
966
- try {
967
- const controlsContainer = controls.getControlsContainer();
968
- if (controlsContainer) {
969
- const currentTimeLabels = controlsContainer.querySelectorAll(".shaka-current-time");
970
- const elapsedSeconds = getElapsedTime();
971
- const timeText = formatElapsedTime(elapsedSeconds);
972
- currentTimeLabels.forEach((label) => {
973
- if (label && label.textContent !== timeText) {
974
- label.textContent = timeText;
975
- }
976
- });
977
- }
978
- } catch (error) {
979
- console.warn("Error updating time display:", error);
980
- }
981
- animationFrameId = requestAnimationFrame(updateTimeDisplay);
982
- };
983
- updateTimeDisplay();
984
- return () => {
985
- isDestroyed = true;
986
- if (animationFrameId) {
987
- cancelAnimationFrame(animationFrameId);
988
- }
989
- };
990
- };
991
- const setupSeekbarTooltip = () => {
992
- try {
993
- const controlsContainer = controls.getControlsContainer();
994
- if (!controlsContainer) return;
995
- const seekBar = controlsContainer.querySelector(".shaka-seek-bar");
996
- if (!seekBar) return;
997
- const onSeekBarMouseMove = (event) => {
998
- const rect = seekBar.getBoundingClientRect();
999
- const pos = (event.clientX - rect.left) / rect.width;
1000
- const totalElapsedSeconds = getElapsedTime();
1001
- const seekableRange = video.seekable;
1002
- if (seekableRange.length > 0) {
1003
- const seekableDuration = seekableRange.end(0) - seekableRange.start(0);
1004
- const positionInStream = totalElapsedSeconds - seekableDuration * (1 - pos);
1005
- const timeAtPosition = Math.max(0, positionInStream);
1006
- seekBar.title = formatElapsedTime(timeAtPosition);
1007
- } else {
1008
- seekBar.title = formatElapsedTime(totalElapsedSeconds);
1009
- }
1010
- };
1011
- seekBar.addEventListener("mousemove", onSeekBarMouseMove);
1012
- return () => {
1013
- seekBar.removeEventListener("mousemove", onSeekBarMouseMove);
1014
- };
1015
- } catch (error) {
1016
- console.warn("Error setting up seekbar tooltip:", error);
1017
- return () => {
1018
- };
1019
- }
1020
- };
1021
- const setupWithDelay = () => {
1022
- setTimeout(() => {
1023
- setupTimeDisplayOverride();
1024
- const cleanupSeekbar = setupSeekbarTooltip();
1025
- setupWithDelay.cleanupSeekbar = cleanupSeekbar;
1026
- }, 100);
1027
- };
1028
- setupWithDelay();
1029
- return () => {
1030
- if (timeDisplayElement && originalGetDisplayTime) {
1031
- try {
1032
- timeDisplayElement.getDisplayTime = originalGetDisplayTime;
1033
- } catch (error) {
1034
- console.warn("Error restoring original getDisplayTime:", error);
1035
- }
1036
- }
1037
- if (setupWithDelay.cleanupSeekbar) {
1038
- setupWithDelay.cleanupSeekbar();
1039
- }
1040
- };
1041
- }, [player, controls, effectiveStreamStart]);
1042
- return {
1043
- detectedStreamStart,
1044
- effectiveStreamStart,
1045
- isUsingManualDate: !!manualStreamStartDate
1046
- };
2794
+ }
2795
+ .motto-skip-button-back {
2796
+ left: calc(var(--spacing) * 5);
2797
+ }
2798
+ .motto-skip-button-forward {
2799
+ right: calc(var(--spacing) * 5);
2800
+ }
1047
2801
  }
1048
-
1049
- // src/components/Loading.tsx
1050
- import { twMerge } from "tailwind-merge";
1051
- import { jsx, jsxs } from "react/jsx-runtime";
1052
- var Loading = ({ className }) => /* @__PURE__ */ jsxs(
1053
- "div",
1054
- {
1055
- className: twMerge(
1056
- "relative bg-[#151515] md:rounded-2xl! overflow-hidden aspect-video text-white w-full h-full flex justify-center items-center text-[10px]",
1057
- className
1058
- ),
1059
- role: "status",
1060
- children: [
1061
- /* @__PURE__ */ jsx("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-white" }),
1062
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Loading..." })
1063
- ]
2802
+ .shaka-seek-bar-container {
2803
+ height: 6px !important;
2804
+ width: 100% !important;
2805
+ margin: 8px 0 !important;
2806
+ border-radius: 4px !important;
2807
+ position: relative !important;
2808
+ border-top: none !important;
2809
+ border-bottom: none !important;
2810
+ box-shadow: none !important;
2811
+ }
2812
+ .shaka-seek-bar {
2813
+ height: 6px !important;
2814
+ width: 100% !important;
2815
+ -webkit-appearance: none !important;
2816
+ appearance: none !important;
2817
+ background: transparent !important;
2818
+ cursor: pointer !important;
2819
+ border: none !important;
2820
+ outline: none !important;
2821
+ position: absolute !important;
2822
+ top: 0 !important;
2823
+ left: 0 !important;
2824
+ border-radius: 4px !important;
2825
+ }
2826
+ .shaka-seek-bar::-webkit-slider-runnable-track {
2827
+ height: 6px !important;
2828
+ background: transparent !important;
2829
+ border-radius: 4px !important;
2830
+ border: none !important;
2831
+ }
2832
+ .shaka-seek-bar::-moz-range-track {
2833
+ height: 6px !important;
2834
+ background: transparent !important;
2835
+ border-radius: 4px !important;
2836
+ border: none !important;
2837
+ }
2838
+ .shaka-seek-bar::-webkit-slider-thumb {
2839
+ -webkit-appearance: none !important;
2840
+ appearance: none !important;
2841
+ width: 16px !important;
2842
+ height: 16px !important;
2843
+ border-radius: 50% !important;
2844
+ background: #ffffff !important;
2845
+ cursor: pointer !important;
2846
+ border: 2px solid #ffffff !important;
2847
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3) !important;
2848
+ margin-top: -4px !important;
2849
+ }
2850
+ .shaka-seek-bar::-moz-range-thumb {
2851
+ width: 16px !important;
2852
+ height: 16px !important;
2853
+ border-radius: 50% !important;
2854
+ background: #ffffff !important;
2855
+ cursor: pointer !important;
2856
+ border: 2px solid #ffffff !important;
2857
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3) !important;
2858
+ margin-top: -4px !important;
2859
+ }
2860
+ .motto-skip-back-button,
2861
+ .motto-skip-forward-button,
2862
+ .motto-native-skip-button {
2863
+ background: transparent !important;
2864
+ border: none !important;
2865
+ padding: 4px !important;
2866
+ margin: 0px !important;
2867
+ cursor: pointer !important;
2868
+ color: #ffffff !important;
2869
+ transition: all 0.2s ease !important;
2870
+ min-width: 32px !important;
2871
+ height: 32px !important;
2872
+ display: flex !important;
2873
+ align-items: center !important;
2874
+ justify-content: center !important;
2875
+ border-radius: 4px !important;
2876
+ width: 25px;
2877
+ }
2878
+ .motto-skip-back-button:hover,
2879
+ .motto-skip-forward-button:hover,
2880
+ .motto-native-skip-button:hover {
2881
+ opacity: 0.8 !important;
2882
+ background: transparent !important;
2883
+ transform: scale(1.05) !important;
2884
+ }
2885
+ .motto-skip-back-button:active,
2886
+ .motto-skip-forward-button:active,
2887
+ .motto-native-skip-button:active {
2888
+ transform: scale(0.95) !important;
2889
+ }
2890
+ .motto-skip-back-button svg,
2891
+ .motto-skip-forward-button svg,
2892
+ .motto-native-skip-button svg {
2893
+ width: 24px !important;
2894
+ height: 24px !important;
2895
+ }
2896
+ .shaka-spinner-svg {
2897
+ color: white !important;
2898
+ fill: white !important;
2899
+ }
2900
+ .shaka-spinner-path {
2901
+ stroke: white !important;
2902
+ fill: none !important;
2903
+ }
2904
+ .shaka-spinner-container {
2905
+ color: white !important;
2906
+ }
2907
+ .shaka-buffering-spinner {
2908
+ color: white !important;
2909
+ fill: white !important;
2910
+ }
2911
+ .shaka-buffering-spinner svg {
2912
+ color: white !important;
2913
+ fill: white !important;
2914
+ }
2915
+ .shaka-buffering-spinner path {
2916
+ stroke: white !important;
2917
+ fill: none !important;
2918
+ }
2919
+ [data-shaka-player-container] .shaka-spinner,
2920
+ [data-shaka-player-container] .spinner {
2921
+ color: white !important;
2922
+ border-color: white !important;
2923
+ }
2924
+ .material-icons.shaka-spinner {
2925
+ color: white !important;
2926
+ }
2927
+ .shaka-controls-container .shaka-spinner,
2928
+ .shaka-video-container .shaka-spinner {
2929
+ color: white !important;
2930
+ fill: white !important;
2931
+ }
2932
+ .shaka-controls-container .shaka-spinner svg,
2933
+ .shaka-video-container .shaka-spinner svg {
2934
+ color: white !important;
2935
+ fill: white !important;
2936
+ }
2937
+ .shaka-controls-container .shaka-spinner path,
2938
+ .shaka-video-container .shaka-spinner path {
2939
+ stroke: white !important;
2940
+ }
2941
+ .motto-video-loading-overlay {
2942
+ position: absolute;
2943
+ top: 0;
2944
+ left: 0;
2945
+ width: 100%;
2946
+ height: 100%;
2947
+ background:
2948
+ linear-gradient(
2949
+ 135deg,
2950
+ #1a1a1a 0%,
2951
+ #2d2d2d 100%);
2952
+ display: flex;
2953
+ flex-direction: column;
2954
+ align-items: center;
2955
+ justify-content: center;
2956
+ z-index: 10;
2957
+ transition: opacity 0.3s ease;
2958
+ }
2959
+ .motto-video-loading-overlay.hidden {
2960
+ opacity: 0;
2961
+ pointer-events: none;
2962
+ }
2963
+ .motto-video-loading-content {
2964
+ text-align: center;
2965
+ color: white;
2966
+ }
2967
+ .motto-video-loading-icon {
2968
+ width: 64px;
2969
+ height: 64px;
2970
+ margin-bottom: 16px;
2971
+ opacity: 0.7;
2972
+ }
2973
+ .motto-video-loading-text {
2974
+ font-size: 16px;
2975
+ font-weight: 500;
2976
+ margin-bottom: 8px;
2977
+ }
2978
+ .motto-video-loading-subtext {
2979
+ font-size: 14px;
2980
+ opacity: 0.7;
2981
+ }
2982
+ @keyframes pulse-live {
2983
+ 0% {
2984
+ opacity: 1;
2985
+ transform: scale(1);
1064
2986
  }
1065
- );
1066
-
1067
- // src/components/ErrorScreen.tsx
1068
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
1069
- var ErrorScreen = ({ title, description }) => /* @__PURE__ */ jsx2("div", { className: "w-full h-full md:rounded-2xl! aspect-video bg-black", children: /* @__PURE__ */ jsxs2("div", { className: "bg-[#151515] text-white w-full h-full flex justify-stretch items-center", children: [
1070
- /* @__PURE__ */ jsx2(
1071
- "svg",
1072
- {
1073
- className: "w-24 h-24 m-6",
1074
- fill: "none",
1075
- stroke: "currentColor",
1076
- strokeWidth: "2",
1077
- style: { width: 96 },
1078
- viewBox: "0 0 24 24",
1079
- xmlns: "http://www.w3.org/2000/svg",
1080
- children: /* @__PURE__ */ jsx2(
1081
- "path",
1082
- {
1083
- d: "M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z",
1084
- strokeLinecap: "round",
1085
- strokeLinejoin: "round"
1086
- }
1087
- )
1088
- }
1089
- ),
1090
- /* @__PURE__ */ jsxs2("div", { children: [
1091
- /* @__PURE__ */ jsx2("h3", { className: "text-2xl mb-2", children: title || "Playback Error" }),
1092
- /* @__PURE__ */ jsx2("div", { className: "text-lg", children: description || "Unable to play the video. Please try again later." })
1093
- ] })
1094
- ] }) });
1095
-
1096
- // src/components/Title.tsx
1097
- import { jsx as jsx3 } from "react/jsx-runtime";
1098
- var Title = ({ title }) => /* @__PURE__ */ jsx3("div", { className: "absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/70 to-transparent p-4", children: /* @__PURE__ */ jsx3("h2", { className: "text-white text-xl font-semibold", children: title }) });
1099
-
1100
- // src/components/LiveBadge.tsx
1101
- import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
1102
- var LiveBadge = ({
1103
- isVisible,
1104
- position = "top-right",
1105
- className = "",
1106
- style = {},
1107
- text = "LIVE"
1108
- }) => {
1109
- if (!isVisible) return null;
1110
- const positionClasses = {
1111
- "top-left": "top-4 left-4",
1112
- "top-right": "top-4 right-4",
1113
- "bottom-left": "bottom-4 left-4",
1114
- "bottom-right": "bottom-4 right-4"
1115
- };
1116
- return /* @__PURE__ */ jsx4(
1117
- "div",
1118
- {
1119
- className: `
1120
- absolute z-50
1121
- ${positionClasses[position]}
1122
- bg-red-600 text-white
1123
- px-2 py-1
1124
- rounded-md
1125
- text-xs font-bold
1126
- uppercase tracking-wide
1127
- shadow-lg
1128
- animate-pulse
1129
- pointer-events-none
1130
- ${className}
1131
- `,
1132
- style,
1133
- children: /* @__PURE__ */ jsxs3("span", { className: "flex items-center gap-1", children: [
1134
- /* @__PURE__ */ jsx4("span", { className: "w-2 h-2 bg-white rounded-full animate-pulse" }),
1135
- text
1136
- ] })
2987
+ 50% {
2988
+ opacity: 0.7;
2989
+ transform: scale(1.1);
2990
+ }
2991
+ 100% {
2992
+ opacity: 1;
2993
+ transform: scale(1);
2994
+ }
2995
+ }
2996
+ .shaka-play-button {
2997
+ background: rgba(255, 255, 255, 0.1) !important;
2998
+ border: none !important;
2999
+ color: white !important;
3000
+ padding: 10px !important;
3001
+ border-radius: 100% !important;
3002
+ transition: all 0.2s ease !important;
3003
+ display: flex !important;
3004
+ align-items: center !important;
3005
+ justify-content: center !important;
3006
+ min-width: 55px !important;
3007
+ height: 55px !important;
3008
+ }
3009
+ .shaka-play-button-container {
3010
+ background: transparent;
3011
+ transition: all 0.2s ease !important;
3012
+ }
3013
+ .motto-video-container:not(.no-cursor) .shaka-play-button-container {
3014
+ background: rgba(0, 0, 0, 0.3);
3015
+ transition: all 0.s ease !important;
3016
+ }
3017
+ .shaka-play-button:hover {
3018
+ background: rgba(255, 255, 255, 0.2) !important;
3019
+ transform: scale(1.05) !important;
3020
+ }
3021
+ .shaka-play-button:active {
3022
+ transform: scale(0.95) !important;
3023
+ }
3024
+ .shaka-play-button > * {
3025
+ display: none !important;
3026
+ }
3027
+ .shaka-play-button::after {
3028
+ content: "" !important;
3029
+ width: 35px !important;
3030
+ height: 35px !important;
3031
+ background-image: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path fill-rule="evenodd" d="M4.5 5.653c0-1.427 1.529-2.33 2.779-1.643l11.54 6.347c1.295.712 1.295 2.573 0 3.286L7.28 19.99c-1.25.687-2.779-.217-2.779-1.643V5.653Z" clip-rule="evenodd" /></svg>') !important;
3032
+ background-repeat: no-repeat !important;
3033
+ background-size: contain !important;
3034
+ background-position: center !important;
3035
+ display: block !important;
3036
+ }
3037
+ .shaka-play-button[aria-label*=Play]::after {
3038
+ background-image: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path fill-rule="evenodd" d="M4.5 5.653c0-1.427 1.529-2.33 2.779-1.643l11.54 6.347c1.295.712 1.295 2.573 0 3.286L7.28 19.99c-1.25.687-2.779-.217-2.779-1.643V5.653Z" clip-rule="evenodd" /></svg>') !important;
3039
+ }
3040
+ .shaka-play-button[aria-label*=Pause]::after {
3041
+ background-image: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path fill-rule="evenodd" d="M6.75 5.25a.75.75 0 0 1 .75-.75H9a.75.75 0 0 1 .75.75v13.5a.75.75 0 0 1-.75.75H7.5a.75.75 0 0 1-.75-.75V5.25Zm7.5 0A.75.75 0 0 1 15 4.5h1.5a.75.75 0 0 1 .75.75v13.5a.75.75 0 0 1-.75.75H15a.75.75 0 0 1-.75-.75V5.25Z" clip-rule="evenodd" /></svg>') !important;
3042
+ }
3043
+ .motto-video-container {
3044
+ background: black;
3045
+ }
3046
+ .motto-video-container video {
3047
+ width: 100% !important;
3048
+ height: 100% !important;
3049
+ margin-left: auto !important;
3050
+ margin-right: auto !important;
3051
+ }
3052
+ @property --tw-gradient-position { syntax: "*"; inherits: false; }
3053
+ @property --tw-gradient-from { syntax: "<color>"; inherits: false; initial-value: #0000; }
3054
+ @property --tw-gradient-via { syntax: "<color>"; inherits: false; initial-value: #0000; }
3055
+ @property --tw-gradient-to { syntax: "<color>"; inherits: false; initial-value: #0000; }
3056
+ @property --tw-gradient-stops { syntax: "*"; inherits: false; }
3057
+ @property --tw-gradient-via-stops { syntax: "*"; inherits: false; }
3058
+ @property --tw-gradient-from-position { syntax: "<length-percentage>"; inherits: false; initial-value: 0%; }
3059
+ @property --tw-gradient-via-position { syntax: "<length-percentage>"; inherits: false; initial-value: 50%; }
3060
+ @property --tw-gradient-to-position { syntax: "<length-percentage>"; inherits: false; initial-value: 100%; }
3061
+ @property --tw-font-weight { syntax: "*"; inherits: false; }
3062
+ @property --tw-tracking { syntax: "*"; inherits: false; }
3063
+ @property --tw-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
3064
+ @property --tw-shadow-color { syntax: "*"; inherits: false; }
3065
+ @property --tw-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }
3066
+ @property --tw-inset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
3067
+ @property --tw-inset-shadow-color { syntax: "*"; inherits: false; }
3068
+ @property --tw-inset-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }
3069
+ @property --tw-ring-color { syntax: "*"; inherits: false; }
3070
+ @property --tw-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
3071
+ @property --tw-inset-ring-color { syntax: "*"; inherits: false; }
3072
+ @property --tw-inset-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
3073
+ @property --tw-ring-inset { syntax: "*"; inherits: false; }
3074
+ @property --tw-ring-offset-width { syntax: "<length>"; inherits: false; initial-value: 0px; }
3075
+ @property --tw-ring-offset-color { syntax: "*"; inherits: false; initial-value: #fff; }
3076
+ @property --tw-ring-offset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
3077
+ @property --tw-blur { syntax: "*"; inherits: false; }
3078
+ @property --tw-brightness { syntax: "*"; inherits: false; }
3079
+ @property --tw-contrast { syntax: "*"; inherits: false; }
3080
+ @property --tw-grayscale { syntax: "*"; inherits: false; }
3081
+ @property --tw-hue-rotate { syntax: "*"; inherits: false; }
3082
+ @property --tw-invert { syntax: "*"; inherits: false; }
3083
+ @property --tw-opacity { syntax: "*"; inherits: false; }
3084
+ @property --tw-saturate { syntax: "*"; inherits: false; }
3085
+ @property --tw-sepia { syntax: "*"; inherits: false; }
3086
+ @property --tw-drop-shadow { syntax: "*"; inherits: false; }
3087
+ @property --tw-drop-shadow-color { syntax: "*"; inherits: false; }
3088
+ @property --tw-drop-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }
3089
+ @property --tw-drop-shadow-size { syntax: "*"; inherits: false; }
3090
+ @property --tw-translate-x { syntax: "*"; inherits: false; initial-value: 0; }
3091
+ @property --tw-translate-y { syntax: "*"; inherits: false; initial-value: 0; }
3092
+ @property --tw-translate-z { syntax: "*"; inherits: false; initial-value: 0; }
3093
+ @property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; }
3094
+ @property --tw-duration { syntax: "*"; inherits: false; }
3095
+ @property --tw-scale-x { syntax: "*"; inherits: false; initial-value: 1; }
3096
+ @property --tw-scale-y { syntax: "*"; inherits: false; initial-value: 1; }
3097
+ @property --tw-scale-z { syntax: "*"; inherits: false; initial-value: 1; }
3098
+ @keyframes spin {
3099
+ to {
3100
+ transform: rotate(360deg);
3101
+ }
3102
+ }
3103
+ @keyframes pulse {
3104
+ 50% {
3105
+ opacity: 0.5;
3106
+ }
3107
+ }
3108
+ @layer properties {
3109
+ @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
3110
+ *,
3111
+ ::before,
3112
+ ::after,
3113
+ ::backdrop {
3114
+ --tw-gradient-position: initial;
3115
+ --tw-gradient-from: #0000;
3116
+ --tw-gradient-via: #0000;
3117
+ --tw-gradient-to: #0000;
3118
+ --tw-gradient-stops: initial;
3119
+ --tw-gradient-via-stops: initial;
3120
+ --tw-gradient-from-position: 0%;
3121
+ --tw-gradient-via-position: 50%;
3122
+ --tw-gradient-to-position: 100%;
3123
+ --tw-font-weight: initial;
3124
+ --tw-tracking: initial;
3125
+ --tw-shadow: 0 0 #0000;
3126
+ --tw-shadow-color: initial;
3127
+ --tw-shadow-alpha: 100%;
3128
+ --tw-inset-shadow: 0 0 #0000;
3129
+ --tw-inset-shadow-color: initial;
3130
+ --tw-inset-shadow-alpha: 100%;
3131
+ --tw-ring-color: initial;
3132
+ --tw-ring-shadow: 0 0 #0000;
3133
+ --tw-inset-ring-color: initial;
3134
+ --tw-inset-ring-shadow: 0 0 #0000;
3135
+ --tw-ring-inset: initial;
3136
+ --tw-ring-offset-width: 0px;
3137
+ --tw-ring-offset-color: #fff;
3138
+ --tw-ring-offset-shadow: 0 0 #0000;
3139
+ --tw-blur: initial;
3140
+ --tw-brightness: initial;
3141
+ --tw-contrast: initial;
3142
+ --tw-grayscale: initial;
3143
+ --tw-hue-rotate: initial;
3144
+ --tw-invert: initial;
3145
+ --tw-opacity: initial;
3146
+ --tw-saturate: initial;
3147
+ --tw-sepia: initial;
3148
+ --tw-drop-shadow: initial;
3149
+ --tw-drop-shadow-color: initial;
3150
+ --tw-drop-shadow-alpha: 100%;
3151
+ --tw-drop-shadow-size: initial;
3152
+ --tw-translate-x: 0;
3153
+ --tw-translate-y: 0;
3154
+ --tw-translate-z: 0;
3155
+ --tw-border-style: solid;
3156
+ --tw-duration: initial;
3157
+ --tw-scale-x: 1;
3158
+ --tw-scale-y: 1;
3159
+ --tw-scale-z: 1;
1137
3160
  }
1138
- );
1139
- };
1140
-
1141
- // src/styles.css
1142
- styleInject('/*! tailwindcss v4.1.8 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root,\n :host {\n --font-sans:\n ui-sans-serif,\n system-ui,\n sans-serif,\n "Apple Color Emoji",\n "Segoe UI Emoji",\n "Segoe UI Symbol",\n "Noto Color Emoji";\n --font-mono:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n "Liberation Mono",\n "Courier New",\n monospace;\n --color-red-600: oklch(57.7% 0.245 27.325);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-5xl: 3rem;\n --text-5xl--line-height: 1;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --tracking-wide: 0.025em;\n --tracking-widest: 0.1em;\n --radius-md: 0.375rem;\n --radius-2xl: 1rem;\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --aspect-video: 16 / 9;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n }\n}\n@layer base {\n *,\n ::after,\n ::before,\n ::backdrop,\n ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html,\n :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b,\n strong {\n font-weight: bolder;\n }\n code,\n kbd,\n samp,\n pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub,\n sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol,\n ul,\n menu {\n list-style: none;\n }\n img,\n svg,\n video,\n canvas,\n audio,\n iframe,\n embed,\n object {\n display: block;\n vertical-align: middle;\n }\n img,\n video {\n max-width: 100%;\n height: auto;\n }\n button,\n input,\n select,\n optgroup,\n textarea,\n ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit,\n ::-webkit-datetime-edit-year-field,\n ::-webkit-datetime-edit-month-field,\n ::-webkit-datetime-edit-day-field,\n ::-webkit-datetime-edit-hour-field,\n ::-webkit-datetime-edit-minute-field,\n ::-webkit-datetime-edit-second-field,\n ::-webkit-datetime-edit-millisecond-field,\n ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button,\n input:where([type=button], [type=reset], [type=submit]),\n ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button,\n ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=until-found])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-auto {\n pointer-events: auto;\n }\n .pointer-events-none {\n pointer-events: none;\n }\n .visible {\n visibility: visible;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .static {\n position: static;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-4 {\n top: calc(var(--spacing) * 4);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .bottom-4 {\n bottom: calc(var(--spacing) * 4);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .left-4 {\n left: calc(var(--spacing) * 4);\n }\n .z-10 {\n z-index: 10;\n }\n .z-50 {\n z-index: 50;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .m-6 {\n margin: calc(var(--spacing) * 6);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-3 {\n margin-top: calc(var(--spacing) * 3);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .aspect-video {\n aspect-ratio: var(--aspect-video);\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-24 {\n height: calc(var(--spacing) * 24);\n }\n .h-full {\n height: 100%;\n }\n .w-2 {\n width: calc(var(--spacing) * 2);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n .w-full {\n width: 100%;\n }\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .auto-cols-max {\n grid-auto-columns: max-content;\n }\n .grid-flow-col {\n grid-auto-flow: column;\n }\n .flex-col {\n flex-direction: column;\n }\n .items-center {\n align-items: center;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-stretch {\n justify-content: stretch;\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-5 {\n gap: calc(var(--spacing) * 5);\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-md {\n border-radius: var(--radius-md);\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-white {\n border-color: var(--color-white);\n }\n .bg-\\[\\#151515\\] {\n background-color: #151515;\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-red-600 {\n background-color: var(--color-red-600);\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .bg-gradient-to-t {\n --tw-gradient-position: to top in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .from-black\\/70 {\n --tw-gradient-from: color-mix(in srgb, #000 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-from: color-mix(in oklab, var(--color-black) 70%, transparent);\n }\n --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));\n }\n .to-transparent {\n --tw-gradient-to: transparent;\n --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));\n }\n .bg-cover {\n background-size: cover;\n }\n .bg-center {\n background-position: center;\n }\n .bg-no-repeat {\n background-repeat: no-repeat;\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\n }\n .font-mono {\n font-family: var(--font-mono);\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-5xl {\n font-size: var(--text-5xl);\n line-height: var(--tw-leading, var(--text-5xl--line-height));\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .text-\\[10px\\] {\n font-size: 10px;\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-wide {\n --tw-tracking: var(--tracking-wide);\n letter-spacing: var(--tracking-wide);\n }\n .tracking-widest {\n --tw-tracking: var(--tracking-widest);\n letter-spacing: var(--tracking-widest);\n }\n .text-white {\n color: var(--color-white);\n }\n .uppercase {\n text-transform: uppercase;\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow:\n var(--tw-inset-shadow),\n var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow);\n }\n .filter {\n 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,);\n }\n .md\\:rounded-2xl {\n @media (width >= 48rem) {\n border-radius: var(--radius-2xl);\n }\n }\n .md\\:rounded-2xl\\! {\n @media (width >= 48rem) {\n border-radius: var(--radius-2xl) !important;\n }\n }\n .md\\:text-base {\n @media (width >= 48rem) {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n }\n .md\\:text-sm {\n @media (width >= 48rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .md\\:text-xl {\n @media (width >= 48rem) {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n }\n}\n@layer components {\n .motto-video-container {\n position: relative;\n width: 100%;\n min-height: 300px;\n }\n @supports (aspect-ratio: 16/9) {\n .motto-video-container {\n min-height: auto;\n }\n }\n .motto-video-responsive {\n position: absolute;\n top: calc(var(--spacing) * 0);\n left: calc(var(--spacing) * 0);\n height: 100%;\n width: 100%;\n }\n .motto-skip-button {\n position: absolute;\n top: calc(1/2 * 100%);\n z-index: 10;\n display: flex;\n height: calc(var(--spacing) * 16);\n width: calc(var(--spacing) * 16);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n cursor: pointer;\n align-items: center;\n justify-content: center;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 0px;\n background-color: color-mix(in srgb, #000 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 70%, transparent);\n }\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n color: var(--color-white);\n opacity: 80%;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 200ms;\n transition-duration: 200ms;\n &:hover {\n @media (hover: hover) {\n --tw-scale-x: 110%;\n --tw-scale-y: 110%;\n --tw-scale-z: 110%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n &:active {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n .motto-skip-button-back {\n left: calc(var(--spacing) * 5);\n }\n .motto-skip-button-forward {\n right: calc(var(--spacing) * 5);\n }\n .motto-mobile-controls-overlay {\n position: absolute;\n inset: calc(var(--spacing) * 0);\n z-index: 20;\n display: flex;\n align-items: center;\n justify-content: center;\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 300ms;\n transition-duration: 300ms;\n pointer-events: none;\n }\n .motto-mobile-controls-group {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 8);\n opacity: 100%;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 200ms;\n transition-duration: 200ms;\n pointer-events: none;\n }\n .motto-mobile-play-button {\n display: flex;\n height: calc(var(--spacing) * 14);\n width: calc(var(--spacing) * 14);\n cursor: pointer;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 0px;\n background-color: color-mix(in srgb, #000 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 30%, transparent);\n }\n color: var(--color-white);\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow:\n var(--tw-inset-shadow),\n var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow);\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 200ms;\n transition-duration: 200ms;\n pointer-events: auto;\n }\n .motto-mobile-play-button:active {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .motto-mobile-play-button svg {\n height: calc(var(--spacing) * 7);\n width: calc(var(--spacing) * 7);\n }\n .motto-mobile-skip-button {\n display: flex;\n height: calc(var(--spacing) * 10);\n width: calc(var(--spacing) * 10);\n cursor: pointer;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 0px;\n background-color: color-mix(in srgb, #000 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 30%, transparent);\n }\n color: var(--color-white);\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow:\n var(--tw-inset-shadow),\n var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow);\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 200ms;\n transition-duration: 200ms;\n pointer-events: auto;\n }\n .motto-mobile-skip-button:active {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .motto-mobile-skip-button svg {\n height: calc(var(--spacing) * 6);\n width: calc(var(--spacing) * 6);\n }\n}\n@media (min-width: 768px) {\n .motto-mobile-controls-overlay {\n display: none !important;\n }\n}\n@media (max-width: 767px) {\n .shaka-controls-container .motto-native-skip-button,\n .shaka-controls-container .motto-skip-back-button,\n .shaka-controls-container .motto-skip-forward-button,\n .shaka-controls-container .shaka-button[title*="Skip back"],\n .shaka-controls-container .shaka-button[title*="Skip forward"],\n .shaka-controls-container .shaka-button[aria-label*="Skip back"],\n .shaka-controls-container .shaka-button[aria-label*="Skip forward"],\n .shaka-controls-container button[title*="Skip back"],\n .shaka-controls-container button[title*="Skip forward"],\n .shaka-controls-container button[aria-label*="Skip back"],\n .shaka-controls-container button[aria-label*="Skip forward"],\n .motto-native-skip-button:not(.motto-mobile-skip-button),\n .motto-skip-back-button:not(.motto-mobile-skip-button),\n .motto-skip-forward-button:not(.motto-mobile-skip-button),\n .shaka-button[title*="Skip back"]:not(.motto-mobile-skip-button),\n .shaka-button[title*="Skip forward"]:not(.motto-mobile-skip-button),\n .shaka-button[aria-label*="Skip back"]:not(.motto-mobile-skip-button),\n .shaka-button[aria-label*="Skip forward"]:not(.motto-mobile-skip-button),\n button[title*="Skip back"]:not(.motto-mobile-skip-button),\n button[title*="Skip forward"]:not(.motto-mobile-skip-button),\n button[aria-label*="Skip back"]:not(.motto-mobile-skip-button),\n button[aria-label*="Skip forward"]:not(.motto-mobile-skip-button) {\n display: none !important;\n visibility: hidden !important;\n opacity: 0 !important;\n width: 0 !important;\n height: 0 !important;\n padding: 0 !important;\n margin: 0 !important;\n }\n .shaka-controls-container {\n z-index: 90 !important;\n height: 100px !important;\n bottom: 0 !important;\n top: unset !important;\n }\n .motto-mobile-skip-button {\n display: flex !important;\n visibility: visible !important;\n opacity: 1 !important;\n }\n}\n.shaka-seek-bar-container {\n height: 6px !important;\n width: 100% !important;\n margin: 8px 0 !important;\n border-radius: 4px !important;\n position: relative !important;\n border-top: none !important;\n border-bottom: none !important;\n box-shadow: none !important;\n}\n.shaka-seek-bar {\n height: 6px !important;\n width: 100% !important;\n -webkit-appearance: none !important;\n appearance: none !important;\n background: transparent !important;\n cursor: pointer !important;\n border: none !important;\n outline: none !important;\n position: absolute !important;\n top: 0 !important;\n left: 0 !important;\n border-radius: 4px !important;\n}\n.shaka-seek-bar::-webkit-slider-runnable-track {\n height: 6px !important;\n background: transparent !important;\n border-radius: 4px !important;\n border: none !important;\n}\n.shaka-seek-bar::-moz-range-track {\n height: 6px !important;\n background: transparent !important;\n border-radius: 4px !important;\n border: none !important;\n}\n.shaka-seek-bar::-webkit-slider-thumb {\n -webkit-appearance: none !important;\n appearance: none !important;\n width: 16px !important;\n height: 16px !important;\n border-radius: 50% !important;\n background: #ffffff !important;\n cursor: pointer !important;\n border: 2px solid #ffffff !important;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3) !important;\n margin-top: -4px !important;\n}\n.shaka-seek-bar::-moz-range-thumb {\n width: 16px !important;\n height: 16px !important;\n border-radius: 50% !important;\n background: #ffffff !important;\n cursor: pointer !important;\n border: 2px solid #ffffff !important;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3) !important;\n margin-top: -4px !important;\n}\n.motto-skip-back-button,\n.motto-skip-forward-button,\n.motto-native-skip-button {\n background: transparent !important;\n border: none !important;\n padding: 4px !important;\n margin: 0px !important;\n cursor: pointer !important;\n color: #ffffff !important;\n transition: all 0.2s ease !important;\n min-width: 32px !important;\n height: 32px !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n border-radius: 4px !important;\n width: 25px;\n}\n.motto-skip-back-button:hover,\n.motto-skip-forward-button:hover,\n.motto-native-skip-button:hover {\n opacity: 0.8 !important;\n background: transparent !important;\n transform: scale(1.05) !important;\n}\n.motto-skip-back-button:active,\n.motto-skip-forward-button:active,\n.motto-native-skip-button:active {\n transform: scale(0.95) !important;\n}\n.motto-skip-back-button svg,\n.motto-skip-forward-button svg,\n.motto-native-skip-button svg {\n width: 24px !important;\n height: 24px !important;\n}\n@media (max-width: 767px) {\n .shaka-controls-container .motto-native-skip-button,\n .shaka-controls-container .motto-skip-back-button,\n .shaka-controls-container .motto-skip-forward-button,\n .shaka-controls-container .shaka-play-button,\n .shaka-controls-container .shaka-pause-button {\n display: none !important;\n }\n}\n.shaka-spinner-svg {\n color: white !important;\n fill: white !important;\n}\n.shaka-spinner-path {\n stroke: white !important;\n fill: none !important;\n}\n.shaka-spinner-container {\n color: white !important;\n}\n.shaka-buffering-spinner {\n color: white !important;\n fill: white !important;\n}\n.shaka-buffering-spinner svg {\n color: white !important;\n fill: white !important;\n}\n.shaka-buffering-spinner path {\n stroke: white !important;\n fill: none !important;\n}\n[data-shaka-player-container] .shaka-spinner,\n[data-shaka-player-container] .spinner {\n color: white !important;\n border-color: white !important;\n}\n.material-icons.shaka-spinner {\n color: white !important;\n}\n.shaka-controls-container .shaka-spinner,\n.shaka-video-container .shaka-spinner {\n color: white !important;\n fill: white !important;\n}\n.shaka-controls-container .shaka-spinner svg,\n.shaka-video-container .shaka-spinner svg {\n color: white !important;\n fill: white !important;\n}\n.shaka-controls-container .shaka-spinner path,\n.shaka-video-container .shaka-spinner path {\n stroke: white !important;\n}\n.motto-video-loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background:\n linear-gradient(\n 135deg,\n #1a1a1a 0%,\n #2d2d2d 100%);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n z-index: 10;\n transition: opacity 0.3s ease;\n}\n.motto-video-loading-overlay.hidden {\n opacity: 0;\n pointer-events: none;\n}\n.motto-video-loading-content {\n text-align: center;\n color: white;\n}\n.motto-video-loading-icon {\n width: 64px;\n height: 64px;\n margin-bottom: 16px;\n opacity: 0.7;\n}\n.motto-video-loading-text {\n font-size: 16px;\n font-weight: 500;\n margin-bottom: 8px;\n}\n.motto-video-loading-subtext {\n font-size: 14px;\n opacity: 0.7;\n}\n@keyframes pulse-live {\n 0% {\n opacity: 1;\n transform: scale(1);\n }\n 50% {\n opacity: 0.7;\n transform: scale(1.1);\n }\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n}\n@property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; }\n@property --tw-gradient-position { syntax: "*"; inherits: false; }\n@property --tw-gradient-from { syntax: "<color>"; inherits: false; initial-value: #0000; }\n@property --tw-gradient-via { syntax: "<color>"; inherits: false; initial-value: #0000; }\n@property --tw-gradient-to { syntax: "<color>"; inherits: false; initial-value: #0000; }\n@property --tw-gradient-stops { syntax: "*"; inherits: false; }\n@property --tw-gradient-via-stops { syntax: "*"; inherits: false; }\n@property --tw-gradient-from-position { syntax: "<length-percentage>"; inherits: false; initial-value: 0%; }\n@property --tw-gradient-via-position { syntax: "<length-percentage>"; inherits: false; initial-value: 50%; }\n@property --tw-gradient-to-position { syntax: "<length-percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-font-weight { syntax: "*"; inherits: false; }\n@property --tw-tracking { syntax: "*"; inherits: false; }\n@property --tw-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-shadow-color { syntax: "*"; inherits: false; }\n@property --tw-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-inset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-inset-shadow-color { syntax: "*"; inherits: false; }\n@property --tw-inset-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-ring-color { syntax: "*"; inherits: false; }\n@property --tw-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-inset-ring-color { syntax: "*"; inherits: false; }\n@property --tw-inset-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-ring-inset { syntax: "*"; inherits: false; }\n@property --tw-ring-offset-width { syntax: "<length>"; inherits: false; initial-value: 0px; }\n@property --tw-ring-offset-color { syntax: "*"; inherits: false; initial-value: #fff; }\n@property --tw-ring-offset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-blur { syntax: "*"; inherits: false; }\n@property --tw-brightness { syntax: "*"; inherits: false; }\n@property --tw-contrast { syntax: "*"; inherits: false; }\n@property --tw-grayscale { syntax: "*"; inherits: false; }\n@property --tw-hue-rotate { syntax: "*"; inherits: false; }\n@property --tw-invert { syntax: "*"; inherits: false; }\n@property --tw-opacity { syntax: "*"; inherits: false; }\n@property --tw-saturate { syntax: "*"; inherits: false; }\n@property --tw-sepia { syntax: "*"; inherits: false; }\n@property --tw-drop-shadow { syntax: "*"; inherits: false; }\n@property --tw-drop-shadow-color { syntax: "*"; inherits: false; }\n@property --tw-drop-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-drop-shadow-size { syntax: "*"; inherits: false; }\n@property --tw-translate-x { syntax: "*"; inherits: false; initial-value: 0; }\n@property --tw-translate-y { syntax: "*"; inherits: false; initial-value: 0; }\n@property --tw-translate-z { syntax: "*"; inherits: false; initial-value: 0; }\n@property --tw-duration { syntax: "*"; inherits: false; }\n@property --tw-scale-x { syntax: "*"; inherits: false; initial-value: 1; }\n@property --tw-scale-y { syntax: "*"; inherits: false; initial-value: 1; }\n@property --tw-scale-z { syntax: "*"; inherits: false; initial-value: 1; }\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *,\n ::before,\n ::after,\n ::backdrop {\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-duration: initial;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n }\n }\n}\n');
3161
+ }
3162
+ }
3163
+ `);
1143
3164
 
1144
3165
  // src/Player.tsx
1145
3166
  import { twMerge as twMerge2 } from "tailwind-merge";
1146
- import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
3167
+ import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
1147
3168
  var Player = forwardRef(
1148
3169
  ({
1149
3170
  src,
@@ -1162,10 +3183,10 @@ var Player = forwardRef(
1162
3183
  chromecastConfig,
1163
3184
  qualityConfig,
1164
3185
  seekbarConfig,
3186
+ iconSizes,
1165
3187
  events,
1166
3188
  containerClassName,
1167
- streamStartDate,
1168
- ...props
3189
+ ...videoProps
1169
3190
  }, ref) => {
1170
3191
  const videoRef = useRef8(null);
1171
3192
  const containerRef = useRef8(null);
@@ -1190,6 +3211,11 @@ var Player = forwardRef(
1190
3211
  skipDuration,
1191
3212
  shouldShowSkipControls
1192
3213
  } = useSkipControls(videoRef, events?.onSkipBack, events?.onSkipForward);
3214
+ useKeyboardControls(videoRef, {
3215
+ skipBack,
3216
+ skipForward,
3217
+ enabled: true
3218
+ });
1193
3219
  const {
1194
3220
  initializeMux,
1195
3221
  updateMuxData,
@@ -1211,24 +3237,22 @@ var Player = forwardRef(
1211
3237
  chromecastConfig,
1212
3238
  seekbarConfig,
1213
3239
  events?.onSkipBack,
1214
- events?.onSkipForward
3240
+ events?.onSkipForward,
3241
+ iconSizes
1215
3242
  );
1216
3243
  const { isLive, isVisible: isLiveBadgeVisible } = useLiveBadge(playerRef, {
1217
3244
  enabled: true,
3245
+ liveThresholdSeconds: 15,
1218
3246
  onLiveStateChange: (isLive2) => {
1219
3247
  events?.onLiveStateChange?.(isLive2);
1220
3248
  }
1221
3249
  });
1222
- useLiveIndicator(containerRef, {
3250
+ useLiveIndicator(containerRef, playerRef, {
1223
3251
  enabled: true,
1224
3252
  indicatorColor: "#ff0000",
1225
3253
  indicatorSize: 8,
1226
- showPulseAnimation: true
1227
- });
1228
- const { detectedStreamStart, effectiveStreamStart } = useShakaAbsoluteTime({
1229
- player: playerRef.current,
1230
- controls: uiRef.current,
1231
- manualStreamStartDate: streamStartDate
3254
+ showPulseAnimation: true,
3255
+ liveThresholdSeconds: 15
1232
3256
  });
1233
3257
  const initializeAds = () => {
1234
3258
  if (!imaConfig || !playerRef.current || !videoRef.current) return;
@@ -1295,21 +3319,7 @@ var Player = forwardRef(
1295
3319
  destroyMux();
1296
3320
  destroyPlayer();
1297
3321
  };
1298
- }, [
1299
- src,
1300
- initializePlayer,
1301
- setupEventListeners,
1302
- setupQualityTracking,
1303
- configureQuality,
1304
- initializeUI,
1305
- initializeMux,
1306
- cleanupEventListeners,
1307
- destroyUI,
1308
- destroyMux,
1309
- destroyPlayer,
1310
- handleMuxError,
1311
- playerRef
1312
- ]);
3322
+ }, [src]);
1313
3323
  useEffect5(() => {
1314
3324
  const video = videoRef.current;
1315
3325
  if (!video) return;
@@ -1319,6 +3329,30 @@ var Player = forwardRef(
1319
3329
  video.controls = false;
1320
3330
  if (poster) video.poster = poster;
1321
3331
  }, [autoPlay, loop, muted, poster]);
3332
+ useEffect5(() => {
3333
+ const video = videoRef.current;
3334
+ if (!video) return;
3335
+ video.controls = false;
3336
+ video.setAttribute("controls", "false");
3337
+ video.removeAttribute("controls");
3338
+ const observer = new MutationObserver((mutations) => {
3339
+ mutations.forEach((mutation) => {
3340
+ if (mutation.type === "attributes" && mutation.attributeName === "controls") {
3341
+ if (video.hasAttribute("controls")) {
3342
+ video.removeAttribute("controls");
3343
+ video.controls = false;
3344
+ }
3345
+ }
3346
+ });
3347
+ });
3348
+ observer.observe(video, {
3349
+ attributes: true,
3350
+ attributeFilter: ["controls"]
3351
+ });
3352
+ return () => {
3353
+ observer.disconnect();
3354
+ };
3355
+ }, []);
1322
3356
  useImperativeHandle(ref, () => ({
1323
3357
  ...videoRef.current,
1324
3358
  // Custom methods for quality control
@@ -1334,13 +3368,15 @@ var Player = forwardRef(
1334
3368
  getMuxMonitor: () => null
1335
3369
  }), [getAvailableQualities, setQuality, skipBack, skipForward, updateMuxData]);
1336
3370
  const isResponsive = !width && !height;
1337
- const containerClasses = twMerge2(containerClassName, "motto-video-container");
3371
+ const containerClasses = twMerge2(containerClassName, "motto-video-container bg-black");
1338
3372
  const containerStyle = isResponsive ? {
1339
3373
  aspectRatio: aspectRatio.toString()
1340
3374
  } : { width, height };
1341
- const videoClasses = isResponsive ? "motto-video-responsive" : "w-full h-full ";
3375
+ const videoClasses = isResponsive ? "motto-video-responsive w-full" : "w-full h-full ";
1342
3376
  const videoStyle = isResponsive ? {} : { width, height };
1343
- return /* @__PURE__ */ jsxs4(
3377
+ const filteredVideoProps = { ...videoProps };
3378
+ delete filteredVideoProps.controls;
3379
+ return /* @__PURE__ */ jsxs6(
1344
3380
  "div",
1345
3381
  {
1346
3382
  ref: containerRef,
@@ -1349,7 +3385,7 @@ var Player = forwardRef(
1349
3385
  "data-shaka-player-container": true,
1350
3386
  "data-shaka-player-cast-receiver-id": chromecastConfig?.receiverApplicationId,
1351
3387
  children: [
1352
- /* @__PURE__ */ jsx5(
3388
+ /* @__PURE__ */ jsx8(
1353
3389
  "video",
1354
3390
  {
1355
3391
  ref: videoRef,
@@ -1358,11 +3394,12 @@ var Player = forwardRef(
1358
3394
  height: isResponsive ? void 0 : height,
1359
3395
  style: videoStyle,
1360
3396
  controls: false,
1361
- ...props
3397
+ playsInline: true,
3398
+ ...filteredVideoProps
1362
3399
  }
1363
3400
  ),
1364
- /* @__PURE__ */ jsx5(LiveBadge, { isVisible: isLiveBadgeVisible }),
1365
- imaConfig && /* @__PURE__ */ jsx5(
3401
+ /* @__PURE__ */ jsx8(LiveBadge, { isVisible: isLiveBadgeVisible }),
3402
+ imaConfig && /* @__PURE__ */ jsx8(
1366
3403
  "div",
1367
3404
  {
1368
3405
  ref: adContainerRef,
@@ -1518,7 +3555,7 @@ var getErrorType = (error, video) => {
1518
3555
  };
1519
3556
 
1520
3557
  // src/messages/useMessages.tsx
1521
- import { useState as useState4, useEffect as useEffect6 } from "react";
3558
+ import { useState as useState3, useEffect as useEffect6 } from "react";
1522
3559
 
1523
3560
  // src/messages/en.json
1524
3561
  var en_default = {
@@ -1816,15 +3853,12 @@ var availableLanguages = {
1816
3853
  fa: fa_default
1817
3854
  };
1818
3855
  var getBrowserLanguage = () => {
1819
- if (typeof window === "undefined" || typeof navigator === "undefined") {
1820
- return "en";
1821
- }
1822
3856
  const language = navigator.language.split("-")[0];
1823
3857
  return availableLanguages[language] ? language : "en";
1824
3858
  };
1825
3859
  var useMessages = (locale) => {
1826
- const [language, setLanguage] = useState4("en");
1827
- const [translations, setTranslations] = useState4(availableLanguages.en);
3860
+ const [language, setLanguage] = useState3("en");
3861
+ const [translations, setTranslations] = useState3(availableLanguages.en);
1828
3862
  useEffect6(() => {
1829
3863
  const lang = !!availableLanguages?.[locale] ? locale : getBrowserLanguage();
1830
3864
  ;
@@ -1851,7 +3885,7 @@ var useMessages = (locale) => {
1851
3885
  var useMessages_default = useMessages;
1852
3886
 
1853
3887
  // src/Video.tsx
1854
- import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
3888
+ import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
1855
3889
  var Video = ({
1856
3890
  videoId,
1857
3891
  publicKey,
@@ -1893,7 +3927,7 @@ var Video = ({
1893
3927
  }
1894
3928
  }, [video, events]);
1895
3929
  if (isLoading || !providedVideoData && !video) {
1896
- return /* @__PURE__ */ jsx6("div", { className: twMerge3("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx6("div", { className: "relative w-full h-full bg-[#151515]", children: /* @__PURE__ */ jsx6(Loading, {}) }) });
3930
+ return /* @__PURE__ */ jsx9("div", { className: twMerge3("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx9("div", { className: "relative w-full h-full bg-[#151515]", children: /* @__PURE__ */ jsx9(Loading, {}) }) });
1897
3931
  }
1898
3932
  if (!isLoading && video && !hlsUrl && events?.onEmptyPlaylists) {
1899
3933
  events.onEmptyPlaylists();
@@ -1906,8 +3940,8 @@ var Video = ({
1906
3940
  }
1907
3941
  const title = t(errorKey) || t("DEFAULT_ERROR");
1908
3942
  const description = t(`${errorKey}_DESCRIPTION`) || t("DEFAULT_ERROR_DESCRIPTION");
1909
- return /* @__PURE__ */ jsx6("div", { className: twMerge3("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsxs5("div", { className: "relative w-full h-full", children: [
1910
- /* @__PURE__ */ jsx6(
3943
+ return /* @__PURE__ */ jsx9("div", { className: twMerge3("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsxs7("div", { className: "relative w-full h-full", children: [
3944
+ /* @__PURE__ */ jsx9(
1911
3945
  ErrorScreen,
1912
3946
  {
1913
3947
  title,
@@ -1918,13 +3952,13 @@ var Video = ({
1918
3952
  ] }) });
1919
3953
  }
1920
3954
  if (!hlsUrl) {
1921
- return /* @__PURE__ */ jsx6("div", { className: twMerge3("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsxs5("div", { className: "relative w-full h-full bg-[#151515]", children: [
1922
- /* @__PURE__ */ jsx6(Title, { title: video?.name || "" }),
3955
+ return /* @__PURE__ */ jsx9("div", { className: twMerge3("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsxs7("div", { className: "relative w-full h-full bg-[#151515]", children: [
3956
+ /* @__PURE__ */ jsx9(Title, { title: video?.name || "" }),
1923
3957
  children
1924
3958
  ] }) });
1925
3959
  }
1926
3960
  console.log("hlsUrl", hlsUrl);
1927
- return /* @__PURE__ */ jsx6("div", { className: twMerge3("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx6("div", { className: "relative w-full h-full", children: /* @__PURE__ */ jsx6(
3961
+ return /* @__PURE__ */ jsx9("div", { className: twMerge3("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx9("div", { className: "relative w-full h-full", children: /* @__PURE__ */ jsx9(
1928
3962
  Player,
1929
3963
  {
1930
3964
  ...props,
@@ -1938,10 +3972,10 @@ var Video = ({
1938
3972
  };
1939
3973
 
1940
3974
  // src/Event.tsx
1941
- import { useCallback as useCallback7, useEffect as useEffect8, useState as useState5 } from "react";
3975
+ import { useCallback as useCallback8, useEffect as useEffect8, useState as useState4 } from "react";
1942
3976
  import { twMerge as twMerge4 } from "tailwind-merge";
1943
3977
  import { useQuery as useQuery2 } from "@tanstack/react-query";
1944
- import { Fragment, jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
3978
+ import { Fragment, jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
1945
3979
  var Event = ({
1946
3980
  publicKey,
1947
3981
  eventId,
@@ -1971,8 +4005,8 @@ var Event = ({
1971
4005
  retry: queryOptions.retry ?? 3,
1972
4006
  retryDelay: queryOptions.retryDelay ?? ((attemptIndex) => Math.min(1e3 * 2 ** attemptIndex, 3e4))
1973
4007
  });
1974
- const [activePlaylist, setActivePlaylist] = useState5();
1975
- const [activeVideoId, setActiveVideoId] = useState5();
4008
+ const [activePlaylist, setActivePlaylist] = useState4();
4009
+ const [activeVideoId, setActiveVideoId] = useState4();
1976
4010
  const videoIds = eventData?.videoIds ?? [];
1977
4011
  const {
1978
4012
  data: videosData,
@@ -1988,7 +4022,7 @@ var Event = ({
1988
4022
  retry: queryOptions.retry ?? 3,
1989
4023
  retryDelay: queryOptions.retryDelay ?? ((attemptIndex) => Math.min(1e3 * 2 ** attemptIndex, 3e4))
1990
4024
  });
1991
- const [loadingApisState, setLoadingApisState] = useState5(true);
4025
+ const [loadingApisState, setLoadingApisState] = useState4(true);
1992
4026
  useEffect8(() => {
1993
4027
  if (videosData !== void 0) {
1994
4028
  setLoadingApisState(false);
@@ -2034,8 +4068,8 @@ var Event = ({
2034
4068
  }
2035
4069
  }
2036
4070
  }, [activeVideoId, videosData, events]);
2037
- const [error, setError] = useState5(null);
2038
- const [loadingPlaylist, setLoadingPlaylist] = useState5(true);
4071
+ const [error, setError] = useState4(null);
4072
+ const [loadingPlaylist, setLoadingPlaylist] = useState4(true);
2039
4073
  const videosDataError = videosData?.some((video) => !!video.error);
2040
4074
  useEffect8(() => {
2041
4075
  if (eventError || videosError || videosDataError) {
@@ -2058,7 +4092,7 @@ var Event = ({
2058
4092
  if (error) {
2059
4093
  const title = t(error.message)?.length ? t(error.message) : t("DEFAULT_ERROR");
2060
4094
  const description = t(`${error.message}_DESCRIPTION`)?.length ? t(`${error.message}_DESCRIPTION`) : t("DEFAULT_ERROR_DESCRIPTION");
2061
- return /* @__PURE__ */ jsx7("div", { className: twMerge4("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx7("div", { className: "relative w-full h-full", children: /* @__PURE__ */ jsx7(
4095
+ return /* @__PURE__ */ jsx10("div", { className: twMerge4("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx10("div", { className: "relative w-full h-full", children: /* @__PURE__ */ jsx10(
2062
4096
  ErrorScreen,
2063
4097
  {
2064
4098
  title,
@@ -2070,12 +4104,12 @@ var Event = ({
2070
4104
  events.onEmptyPlaylists();
2071
4105
  }
2072
4106
  if (loadingPlaylist) {
2073
- return /* @__PURE__ */ jsx7("div", { className: twMerge4("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx7("div", { className: "relative w-full h-full bg-[#151515]", children: /* @__PURE__ */ jsx7(Loading, {}) }) });
4107
+ return /* @__PURE__ */ jsx10("div", { className: twMerge4("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx10("div", { className: "relative w-full h-full bg-[#151515]", children: /* @__PURE__ */ jsx10(Loading, {}) }) });
2074
4108
  }
2075
4109
  if (activePlaylist && activeVideoId && videosData) {
2076
4110
  const activeVideo = videosData.find((video) => video.id === activeVideoId);
2077
- return /* @__PURE__ */ jsx7("div", { className: twMerge4("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsxs6("div", { className: "relative w-full h-full", children: [
2078
- /* @__PURE__ */ jsx7(
4111
+ return /* @__PURE__ */ jsxs8("div", { className: twMerge4("md:rounded-2xl overflow-hidden aspect-video", className), children: [
4112
+ /* @__PURE__ */ jsx10("div", { className: "relative w-full h-full", children: /* @__PURE__ */ jsx10(
2079
4113
  Player,
2080
4114
  {
2081
4115
  ...props,
@@ -2084,8 +4118,8 @@ var Event = ({
2084
4118
  events,
2085
4119
  containerClassName: "w-full h-full"
2086
4120
  }
2087
- ),
2088
- !hideTitle && eventData && /* @__PURE__ */ jsx7(
4121
+ ) }),
4122
+ !hideTitle && eventData && /* @__PURE__ */ jsx10(
2089
4123
  TitleAndDescription,
2090
4124
  {
2091
4125
  title: eventData.title,
@@ -2094,10 +4128,10 @@ var Event = ({
2094
4128
  locale
2095
4129
  }
2096
4130
  )
2097
- ] }) });
4131
+ ] });
2098
4132
  }
2099
4133
  if (eventData) {
2100
- return /* @__PURE__ */ jsx7("div", { className: twMerge4("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx7("div", { className: "relative w-full h-full", children: /* @__PURE__ */ jsx7(
4134
+ return /* @__PURE__ */ jsx10("div", { className: twMerge4("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx10("div", { className: "relative w-full h-full", children: /* @__PURE__ */ jsx10(
2101
4135
  PreEvent,
2102
4136
  {
2103
4137
  event: eventData,
@@ -2119,7 +4153,7 @@ function PreEvent({
2119
4153
  }) {
2120
4154
  const date = new Date(event.startTime);
2121
4155
  const now = /* @__PURE__ */ new Date();
2122
- const [remainingTime, setRemainingTime] = useState5(
4156
+ const [remainingTime, setRemainingTime] = useState4(
2123
4157
  date.getTime() - now.getTime()
2124
4158
  );
2125
4159
  const shouldBeStarted = remainingTime < 0;
@@ -2134,17 +4168,17 @@ function PreEvent({
2134
4168
  }, 1e3);
2135
4169
  return () => clearInterval(interval);
2136
4170
  }, [date, remainingTime]);
2137
- const renderCountdown = useCallback7(() => {
4171
+ const renderCountdown = useCallback8(() => {
2138
4172
  if (shouldBeStarted) {
2139
- return /* @__PURE__ */ jsx7("span", { className: "text-base-content text-xl", children: t("EVENT_NOT_STARTED") });
4173
+ return /* @__PURE__ */ jsx10("span", { className: "text-base-content text-xl", children: t("EVENT_NOT_STARTED") });
2140
4174
  }
2141
4175
  const seconds = Math.floor(remainingTime / 1e3) % 60;
2142
4176
  const minutes = Math.floor(remainingTime / 1e3 / 60) % 60;
2143
4177
  const hours = Math.floor(remainingTime / 1e3 / 60 / 60) % 24;
2144
4178
  const days = Math.floor(remainingTime / 1e3 / 60 / 60 / 24);
2145
- return /* @__PURE__ */ jsxs6("div", { className: "grid grid-flow-col gap-5 text-center auto-cols-max", children: [
2146
- /* @__PURE__ */ jsxs6("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
2147
- /* @__PURE__ */ jsx7("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx7(
4179
+ return /* @__PURE__ */ jsxs8("div", { className: "grid grid-flow-col gap-5 text-center auto-cols-max", children: [
4180
+ /* @__PURE__ */ jsxs8("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4181
+ /* @__PURE__ */ jsx10("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx10(
2148
4182
  "span",
2149
4183
  {
2150
4184
  style: { "--value": days },
@@ -2153,10 +4187,10 @@ function PreEvent({
2153
4187
  children: days?.toString()?.padStart(2, "0")
2154
4188
  }
2155
4189
  ) }),
2156
- /* @__PURE__ */ jsx7("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("DAYS") })
4190
+ /* @__PURE__ */ jsx10("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("DAYS") })
2157
4191
  ] }),
2158
- /* @__PURE__ */ jsxs6("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
2159
- /* @__PURE__ */ jsx7("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx7(
4192
+ /* @__PURE__ */ jsxs8("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4193
+ /* @__PURE__ */ jsx10("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx10(
2160
4194
  "span",
2161
4195
  {
2162
4196
  style: { "--value": hours },
@@ -2165,10 +4199,10 @@ function PreEvent({
2165
4199
  children: hours?.toString()?.padStart(2, "0")
2166
4200
  }
2167
4201
  ) }),
2168
- /* @__PURE__ */ jsx7("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("HOURS") })
4202
+ /* @__PURE__ */ jsx10("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("HOURS") })
2169
4203
  ] }),
2170
- /* @__PURE__ */ jsxs6("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
2171
- /* @__PURE__ */ jsx7("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx7(
4204
+ /* @__PURE__ */ jsxs8("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4205
+ /* @__PURE__ */ jsx10("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx10(
2172
4206
  "span",
2173
4207
  {
2174
4208
  style: { "--value": minutes },
@@ -2177,10 +4211,10 @@ function PreEvent({
2177
4211
  children: minutes?.toString()?.padStart(2, "0")
2178
4212
  }
2179
4213
  ) }),
2180
- /* @__PURE__ */ jsx7("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("MINUTES") })
4214
+ /* @__PURE__ */ jsx10("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("MINUTES") })
2181
4215
  ] }),
2182
- /* @__PURE__ */ jsxs6("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
2183
- /* @__PURE__ */ jsx7("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx7(
4216
+ /* @__PURE__ */ jsxs8("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4217
+ /* @__PURE__ */ jsx10("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx10(
2184
4218
  "span",
2185
4219
  {
2186
4220
  style: { "--value": seconds },
@@ -2189,12 +4223,12 @@ function PreEvent({
2189
4223
  children: seconds?.toString()?.padStart(2, "0")
2190
4224
  }
2191
4225
  ) }),
2192
- /* @__PURE__ */ jsx7("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("SECONDS") })
4226
+ /* @__PURE__ */ jsx10("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("SECONDS") })
2193
4227
  ] })
2194
4228
  ] });
2195
4229
  }, [remainingTime, shouldBeStarted, t]);
2196
- return /* @__PURE__ */ jsx7(Fragment, { children: event?.posterUrl ? /* @__PURE__ */ jsxs6(Fragment, { children: [
2197
- /* @__PURE__ */ jsxs6(
4230
+ return /* @__PURE__ */ jsx10(Fragment, { children: event?.posterUrl ? /* @__PURE__ */ jsxs8(Fragment, { children: [
4231
+ /* @__PURE__ */ jsx10(
2198
4232
  "div",
2199
4233
  {
2200
4234
  className: "relative overflow-hidden bg-base-200 aspect-video text-base-content w-full h-full flex justify-center items-center flex-col bg-no-repeat bg-cover md:rounded-2xl",
@@ -2203,13 +4237,10 @@ function PreEvent({
2203
4237
  backgroundRepeat: "no-repeat",
2204
4238
  backgroundSize: "cover"
2205
4239
  },
2206
- children: [
2207
- /* @__PURE__ */ jsx7("div", { className: "absolute inset-0 bg-black bg-opacity-40" }),
2208
- /* @__PURE__ */ jsx7("div", { className: "relative z-10", children: renderCountdown() })
2209
- ]
4240
+ children: /* @__PURE__ */ jsx10("div", { className: "relative z-10", children: renderCountdown() })
2210
4241
  }
2211
4242
  ),
2212
- !hideTitle && /* @__PURE__ */ jsx7(
4243
+ !hideTitle && /* @__PURE__ */ jsx10(
2213
4244
  TitleAndDescription,
2214
4245
  {
2215
4246
  title: event.title,
@@ -2218,21 +4249,18 @@ function PreEvent({
2218
4249
  locale
2219
4250
  }
2220
4251
  )
2221
- ] }) : /* @__PURE__ */ jsxs6(Fragment, { children: [
2222
- /* @__PURE__ */ jsxs6(
4252
+ ] }) : /* @__PURE__ */ jsxs8(Fragment, { children: [
4253
+ /* @__PURE__ */ jsx10(
2223
4254
  "div",
2224
4255
  {
2225
4256
  className: "relative overflow-hidden md:rounded-2xl bg-base-200 aspect-video text-base-content flex flex-col justify-center items-center w-full h-full bg-cover bg-center bg-no-repeat",
2226
4257
  style: {
2227
4258
  backgroundImage: backgroundImageUrl ? `url(${backgroundImageUrl})` : ""
2228
4259
  },
2229
- children: [
2230
- backgroundImageUrl && /* @__PURE__ */ jsx7("div", { className: "absolute inset-0 bg-black bg-opacity-40" }),
2231
- /* @__PURE__ */ jsx7("div", { className: "relative z-10", children: renderCountdown() })
2232
- ]
4260
+ children: /* @__PURE__ */ jsx10("div", { className: "relative z-10", children: renderCountdown() })
2233
4261
  }
2234
4262
  ),
2235
- !hideTitle && /* @__PURE__ */ jsx7(
4263
+ !hideTitle && /* @__PURE__ */ jsx10(
2236
4264
  TitleAndDescription,
2237
4265
  {
2238
4266
  title: event.title,
@@ -2250,9 +4278,9 @@ var TitleAndDescription = ({
2250
4278
  locale = "en",
2251
4279
  className
2252
4280
  }) => {
2253
- return /* @__PURE__ */ jsxs6("div", { className: twMerge4("mt-3 mb-6 m-event-details-ctn px-4 text-left w-full", className), children: [
2254
- /* @__PURE__ */ jsx7("div", { className: "text-base md:text-xl m-event-title text-base-content font-medium", children: title }),
2255
- startTime ? /* @__PURE__ */ jsxs6("div", { className: "text-sm md:text-base text-base-content/70 m-event-start-time", children: [
4281
+ return /* @__PURE__ */ jsxs8("div", { className: twMerge4("mt-3 mb-6 m-event-details-ctn px-4 text-left w-full", className), children: [
4282
+ /* @__PURE__ */ jsx10("div", { className: "text-base md:text-xl m-event-title text-base-content font-medium", children: title }),
4283
+ startTime ? /* @__PURE__ */ jsxs8("div", { className: "text-sm md:text-base text-base-content/70 m-event-start-time", children: [
2256
4284
  new Date(startTime || "").toLocaleDateString(locale || "default", {
2257
4285
  month: "long",
2258
4286
  year: "numeric",
@@ -2265,29 +4293,15 @@ var TitleAndDescription = ({
2265
4293
  minute: "2-digit"
2266
4294
  })
2267
4295
  ] }) : null,
2268
- description && /* @__PURE__ */ jsx7("div", { className: "text-xs md:text-sm text-base-content/60 uppercase", children: description })
4296
+ description && /* @__PURE__ */ jsx10("div", { className: "text-xs md:text-sm text-base-content/60 uppercase", children: description })
2269
4297
  ] });
2270
4298
  };
2271
4299
 
2272
- // src/ClientSideEvent.tsx
2273
- import { useState as useState6, useEffect as useEffect9 } from "react";
2274
- import { jsx as jsx8 } from "react/jsx-runtime";
2275
- var ClientSideEvent = (props) => {
2276
- const [isClient, setIsClient] = useState6(false);
2277
- useEffect9(() => {
2278
- setIsClient(true);
2279
- }, []);
2280
- if (!isClient) {
2281
- return /* @__PURE__ */ jsx8("div", { className: "md:rounded-2xl overflow-hidden aspect-video bg-[#151515] flex items-center justify-center", children: /* @__PURE__ */ jsx8("div", { className: "text-white" }) });
2282
- }
2283
- return /* @__PURE__ */ jsx8(Event, { ...props });
2284
- };
2285
-
2286
4300
  // src/CreativeWork.tsx
2287
- import { useEffect as useEffect10, useState as useState7 } from "react";
4301
+ import { useEffect as useEffect9, useState as useState5 } from "react";
2288
4302
  import { twMerge as twMerge5 } from "tailwind-merge";
2289
4303
  import { useQuery as useQuery3 } from "@tanstack/react-query";
2290
- import { Fragment as Fragment2, jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
4304
+ import { Fragment as Fragment2, jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
2291
4305
  var CreativeWork = ({
2292
4306
  publicKey,
2293
4307
  creativeWorkId,
@@ -2317,9 +4331,9 @@ var CreativeWork = ({
2317
4331
  retry: queryOptions.retry ?? 3,
2318
4332
  retryDelay: queryOptions.retryDelay ?? ((attemptIndex) => Math.min(1e3 * 2 ** attemptIndex, 3e4))
2319
4333
  });
2320
- const [activePlaylist, setActivePlaylist] = useState7();
2321
- const [activeVideoId, setActiveVideoId] = useState7();
2322
- const [showCountDown, setShowCountDown] = useState7(false);
4334
+ const [activePlaylist, setActivePlaylist] = useState5();
4335
+ const [activeVideoId, setActiveVideoId] = useState5();
4336
+ const [showCountDown, setShowCountDown] = useState5(false);
2323
4337
  const videoIds = creativeWorkData?.videoIds ?? [];
2324
4338
  const {
2325
4339
  data: videosData,
@@ -2335,8 +4349,8 @@ var CreativeWork = ({
2335
4349
  retry: queryOptions.retry ?? 3,
2336
4350
  retryDelay: queryOptions.retryDelay ?? ((attemptIndex) => Math.min(1e3 * 2 ** attemptIndex, 3e4))
2337
4351
  });
2338
- const [loadingApisState, setLoadingApisState] = useState7(true);
2339
- useEffect10(() => {
4352
+ const [loadingApisState, setLoadingApisState] = useState5(true);
4353
+ useEffect9(() => {
2340
4354
  if (videosData !== void 0) {
2341
4355
  setLoadingApisState(false);
2342
4356
  const videosWithPlaylists = videosData.filter(
@@ -2368,7 +4382,7 @@ var CreativeWork = ({
2368
4382
  }
2369
4383
  }, [videosData, creativeWorkData]);
2370
4384
  const { t } = useMessages_default(locale);
2371
- useEffect10(() => {
4385
+ useEffect9(() => {
2372
4386
  if (events?.onCreativeWorkData && creativeWorkData) {
2373
4387
  events.onCreativeWorkData(creativeWorkData);
2374
4388
  }
@@ -2376,7 +4390,7 @@ var CreativeWork = ({
2376
4390
  setShowCountDown(true);
2377
4391
  }
2378
4392
  }, [creativeWorkData, events]);
2379
- useEffect10(() => {
4393
+ useEffect9(() => {
2380
4394
  if (events?.onVideoData && activeVideoId && videosData) {
2381
4395
  const activeVideo = videosData.find((video) => video.id === activeVideoId);
2382
4396
  if (activeVideo) {
@@ -2384,9 +4398,9 @@ var CreativeWork = ({
2384
4398
  }
2385
4399
  }
2386
4400
  }, [activeVideoId, videosData, events]);
2387
- const [error, setError] = useState7(null);
4401
+ const [error, setError] = useState5(null);
2388
4402
  const videosDataError = videosData?.some((video) => !!video.error);
2389
- useEffect10(() => {
4403
+ useEffect9(() => {
2390
4404
  if (creativeWorkError || videosError || videosDataError) {
2391
4405
  const errorObj = creativeWorkError || videosError || videosData?.find((video) => !!video.error)?.error && new Error(videosData?.find((video) => !!video.error)?.error) || new Error("default");
2392
4406
  setError(errorObj);
@@ -2400,7 +4414,7 @@ var CreativeWork = ({
2400
4414
  if (error) {
2401
4415
  const title = t(error.message)?.length ? t(error.message) : t("DEFAULT_ERROR");
2402
4416
  const description = t(`${error.message}_DESCRIPTION`)?.length ? t(`${error.message}_DESCRIPTION`) : t("DEFAULT_ERROR_DESCRIPTION");
2403
- return /* @__PURE__ */ jsx9("div", { className: twMerge5("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx9("div", { className: "relative w-full h-full", children: /* @__PURE__ */ jsx9(
4417
+ return /* @__PURE__ */ jsx11("div", { className: twMerge5("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx11("div", { className: "relative w-full h-full", children: /* @__PURE__ */ jsx11(
2404
4418
  ErrorScreen,
2405
4419
  {
2406
4420
  title,
@@ -2408,8 +4422,8 @@ var CreativeWork = ({
2408
4422
  }
2409
4423
  ) }) });
2410
4424
  }
2411
- const [loadingPlaylist, setLoadingPlaylist] = useState7(true);
2412
- useEffect10(() => {
4425
+ const [loadingPlaylist, setLoadingPlaylist] = useState5(true);
4426
+ useEffect9(() => {
2413
4427
  const creativeWorkLoadedWithNoVideos = !isCreativeWorkLoading && creativeWorkData && creativeWorkData.videoIds && creativeWorkData.videoIds.length === 0;
2414
4428
  const creativeWorkLoadedWithNoData = !isCreativeWorkLoading && creativeWorkData && !creativeWorkData.videoIds;
2415
4429
  const isEventsFinished = !videosIsLoading && videosData && videosData.length > 0 && videosData.every((video) => video.playlists && video.playlists.length === 0);
@@ -2430,10 +4444,10 @@ var CreativeWork = ({
2430
4444
  events
2431
4445
  ]);
2432
4446
  if (isCreativeWorkLoading || videosIsLoading || loadingApisState) {
2433
- return /* @__PURE__ */ jsx9("div", { className: twMerge5("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx9("div", { className: "relative w-full h-full", children: /* @__PURE__ */ jsx9(Loading, {}) }) });
4447
+ return /* @__PURE__ */ jsx11("div", { className: twMerge5("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx11("div", { className: "relative w-full h-full", children: /* @__PURE__ */ jsx11(Loading, {}) }) });
2434
4448
  }
2435
4449
  if (showCountDown && creativeWorkData) {
2436
- return /* @__PURE__ */ jsx9("div", { className: twMerge5("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx9("div", { className: "relative w-full h-full bg-base-200 text-base-content flex justify-center items-center flex-col", children: /* @__PURE__ */ jsx9(
4450
+ return /* @__PURE__ */ jsx11("div", { className: twMerge5("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx11("div", { className: "relative w-full h-full bg-base-200 text-base-content flex justify-center items-center flex-col", children: /* @__PURE__ */ jsx11(
2437
4451
  PreCreativeWork,
2438
4452
  {
2439
4453
  creativeWork: creativeWorkData,
@@ -2446,8 +4460,8 @@ var CreativeWork = ({
2446
4460
  }
2447
4461
  if (activeVideoId && activePlaylist && !loadingPlaylist) {
2448
4462
  const activeVideo = videosData?.find((video) => video.id === activeVideoId);
2449
- return /* @__PURE__ */ jsx9("div", { className: twMerge5("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsxs7("div", { className: "relative w-full h-full", children: [
2450
- /* @__PURE__ */ jsx9(
4463
+ return /* @__PURE__ */ jsx11("div", { className: twMerge5("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsxs9("div", { className: "relative w-full h-full", children: [
4464
+ /* @__PURE__ */ jsx11(
2451
4465
  Player,
2452
4466
  {
2453
4467
  ...props,
@@ -2459,7 +4473,7 @@ var CreativeWork = ({
2459
4473
  containerClassName: "w-full h-full"
2460
4474
  }
2461
4475
  ),
2462
- !hideTitle && /* @__PURE__ */ jsx9(
4476
+ !hideTitle && /* @__PURE__ */ jsx11(
2463
4477
  TitleAndDescription2,
2464
4478
  {
2465
4479
  title: creativeWorkData?.title || "",
@@ -2472,7 +4486,7 @@ var CreativeWork = ({
2472
4486
  ] }) });
2473
4487
  }
2474
4488
  if (loadingPlaylist) {
2475
- return /* @__PURE__ */ jsx9(Loading, {});
4489
+ return /* @__PURE__ */ jsx11(Loading, {});
2476
4490
  }
2477
4491
  return null;
2478
4492
  };
@@ -2485,12 +4499,12 @@ function PreCreativeWork({
2485
4499
  }) {
2486
4500
  const date = new Date(creativeWork.releaseTime);
2487
4501
  const now = /* @__PURE__ */ new Date();
2488
- const [remainingTime, setRemainingTime] = useState7(
4502
+ const [remainingTime, setRemainingTime] = useState5(
2489
4503
  date.getTime() - now.getTime()
2490
4504
  );
2491
4505
  const shouldBeStarted = remainingTime < 0;
2492
4506
  const { t } = useMessages_default(locale);
2493
- useEffect10(() => {
4507
+ useEffect9(() => {
2494
4508
  const interval = setInterval(() => {
2495
4509
  if (remainingTime < 0) {
2496
4510
  clearInterval(interval);
@@ -2504,15 +4518,15 @@ function PreCreativeWork({
2504
4518
  }, [date, remainingTime]);
2505
4519
  const renderCountdown = () => {
2506
4520
  if (shouldBeStarted) {
2507
- return /* @__PURE__ */ jsx9("span", { className: "text-base-content text-xl", children: t("EVENT_NOT_STARTED") });
4521
+ return /* @__PURE__ */ jsx11("span", { className: "text-base-content text-xl", children: t("EVENT_NOT_STARTED") });
2508
4522
  }
2509
4523
  const seconds = Math.floor(remainingTime / 1e3) % 60;
2510
4524
  const minutes = Math.floor(remainingTime / 1e3 / 60) % 60;
2511
4525
  const hours = Math.floor(remainingTime / 1e3 / 60 / 60) % 24;
2512
4526
  const days = Math.floor(remainingTime / 1e3 / 60 / 60 / 24);
2513
- return /* @__PURE__ */ jsxs7("div", { className: "grid grid-flow-col gap-5 text-center auto-cols-max", children: [
2514
- /* @__PURE__ */ jsxs7("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
2515
- /* @__PURE__ */ jsx9("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx9(
4527
+ return /* @__PURE__ */ jsxs9("div", { className: "grid grid-flow-col gap-5 text-center auto-cols-max", children: [
4528
+ /* @__PURE__ */ jsxs9("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4529
+ /* @__PURE__ */ jsx11("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx11(
2516
4530
  "span",
2517
4531
  {
2518
4532
  style: { "--value": days },
@@ -2521,10 +4535,10 @@ function PreCreativeWork({
2521
4535
  children: days?.toString()?.padStart(2, "0")
2522
4536
  }
2523
4537
  ) }),
2524
- /* @__PURE__ */ jsx9("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("DAYS") })
4538
+ /* @__PURE__ */ jsx11("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("DAYS") })
2525
4539
  ] }),
2526
- /* @__PURE__ */ jsxs7("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
2527
- /* @__PURE__ */ jsx9("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx9(
4540
+ /* @__PURE__ */ jsxs9("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4541
+ /* @__PURE__ */ jsx11("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx11(
2528
4542
  "span",
2529
4543
  {
2530
4544
  style: { "--value": hours },
@@ -2533,10 +4547,10 @@ function PreCreativeWork({
2533
4547
  children: hours?.toString()?.padStart(2, "0")
2534
4548
  }
2535
4549
  ) }),
2536
- /* @__PURE__ */ jsx9("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("HOURS") })
4550
+ /* @__PURE__ */ jsx11("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("HOURS") })
2537
4551
  ] }),
2538
- /* @__PURE__ */ jsxs7("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
2539
- /* @__PURE__ */ jsx9("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx9(
4552
+ /* @__PURE__ */ jsxs9("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4553
+ /* @__PURE__ */ jsx11("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx11(
2540
4554
  "span",
2541
4555
  {
2542
4556
  style: { "--value": minutes },
@@ -2545,10 +4559,10 @@ function PreCreativeWork({
2545
4559
  children: minutes?.toString()?.padStart(2, "0")
2546
4560
  }
2547
4561
  ) }),
2548
- /* @__PURE__ */ jsx9("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("MINUTES") })
4562
+ /* @__PURE__ */ jsx11("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("MINUTES") })
2549
4563
  ] }),
2550
- /* @__PURE__ */ jsxs7("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
2551
- /* @__PURE__ */ jsx9("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx9(
4564
+ /* @__PURE__ */ jsxs9("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4565
+ /* @__PURE__ */ jsx11("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx11(
2552
4566
  "span",
2553
4567
  {
2554
4568
  style: { "--value": seconds },
@@ -2557,12 +4571,12 @@ function PreCreativeWork({
2557
4571
  children: seconds?.toString()?.padStart(2, "0")
2558
4572
  }
2559
4573
  ) }),
2560
- /* @__PURE__ */ jsx9("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("SECONDS") })
4574
+ /* @__PURE__ */ jsx11("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("SECONDS") })
2561
4575
  ] })
2562
4576
  ] });
2563
4577
  };
2564
- return /* @__PURE__ */ jsxs7(Fragment2, { children: [
2565
- /* @__PURE__ */ jsxs7(
4578
+ return /* @__PURE__ */ jsxs9(Fragment2, { children: [
4579
+ /* @__PURE__ */ jsxs9(
2566
4580
  "div",
2567
4581
  {
2568
4582
  className: "relative overflow-hidden md:rounded-2xl bg-base-200 aspect-video text-base-content flex flex-col justify-center items-center w-full h-full bg-cover bg-center bg-no-repeat",
@@ -2570,12 +4584,12 @@ function PreCreativeWork({
2570
4584
  backgroundImage: backgroundImageUrl ? `url(${backgroundImageUrl})` : ""
2571
4585
  },
2572
4586
  children: [
2573
- backgroundImageUrl && /* @__PURE__ */ jsx9("div", { className: "absolute inset-0 bg-black bg-opacity-40" }),
2574
- /* @__PURE__ */ jsx9("div", { className: "relative z-10", children: renderCountdown() })
4587
+ backgroundImageUrl && /* @__PURE__ */ jsx11("div", { className: "absolute inset-0 bg-black bg-opacity-40" }),
4588
+ /* @__PURE__ */ jsx11("div", { className: "relative z-10", children: renderCountdown() })
2575
4589
  ]
2576
4590
  }
2577
4591
  ),
2578
- !hideTitle && /* @__PURE__ */ jsx9(
4592
+ !hideTitle && /* @__PURE__ */ jsx11(
2579
4593
  TitleAndDescription2,
2580
4594
  {
2581
4595
  title: creativeWork.title,
@@ -2593,9 +4607,9 @@ var TitleAndDescription2 = ({
2593
4607
  locale = "en",
2594
4608
  className
2595
4609
  }) => {
2596
- return /* @__PURE__ */ jsxs7("div", { className: twMerge5("mt-3 mb-6 m-event-details-ctn px-4 text-left w-full", className), children: [
2597
- /* @__PURE__ */ jsx9("div", { className: "text-base md:text-xl m-event-title text-base-content font-medium", children: title }),
2598
- releaseTime ? /* @__PURE__ */ jsxs7("div", { className: "text-sm md:text-base text-base-content/70 m-event-start-time", children: [
4610
+ return /* @__PURE__ */ jsxs9("div", { className: twMerge5("mt-3 mb-6 m-event-details-ctn px-4 text-left w-full", className), children: [
4611
+ /* @__PURE__ */ jsx11("div", { className: "text-base md:text-xl m-event-title text-base-content font-medium", children: title }),
4612
+ releaseTime ? /* @__PURE__ */ jsxs9("div", { className: "text-sm md:text-base text-base-content/70 m-event-start-time", children: [
2599
4613
  new Date(releaseTime || "").toLocaleDateString(locale || "default", {
2600
4614
  month: "long",
2601
4615
  year: "numeric",
@@ -2608,13 +4622,13 @@ var TitleAndDescription2 = ({
2608
4622
  minute: "2-digit"
2609
4623
  })
2610
4624
  ] }) : null,
2611
- description && /* @__PURE__ */ jsx9("div", { className: "text-xs md:text-sm text-base-content/60 uppercase", children: description })
4625
+ description && /* @__PURE__ */ jsx11("div", { className: "text-xs md:text-sm text-base-content/60 uppercase", children: description })
2612
4626
  ] });
2613
4627
  };
2614
4628
 
2615
4629
  // src/QueryProvider.tsx
2616
4630
  import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
2617
- import { jsx as jsx10 } from "react/jsx-runtime";
4631
+ import { jsx as jsx12 } from "react/jsx-runtime";
2618
4632
  var queryClient = new QueryClient({
2619
4633
  defaultOptions: {
2620
4634
  queries: {
@@ -2628,14 +4642,16 @@ var queryClient = new QueryClient({
2628
4642
  }
2629
4643
  });
2630
4644
  var QueryProvider = ({ children }) => {
2631
- return /* @__PURE__ */ jsx10(QueryClientProvider, { client: queryClient, children });
4645
+ return /* @__PURE__ */ jsx12(QueryClientProvider, { client: queryClient, children });
2632
4646
  };
2633
4647
  export {
2634
- ClientSideEvent,
4648
+ BigPlayIcon,
2635
4649
  CreativeWork,
2636
4650
  Event,
2637
4651
  Player,
2638
4652
  QueryProvider,
4653
+ SkipBackIcon,
4654
+ SkipForwardIcon,
2639
4655
  Video,
2640
4656
  queryClient
2641
4657
  };