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

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);
@@ -196,7 +1293,12 @@ var useSkipControls = (videoRef, onSkipBack, onSkipForward) => {
196
1293
  import { useCallback as useCallback4, useRef as useRef3 } from "react";
197
1294
  import initShakaPlayerMux from "@mux/mux-data-shakaplayer";
198
1295
  import shaka from "shaka-player/dist/shaka-player.ui";
199
- var useMuxAnalytics = (playerRef, muxConfig, onMuxReady, onMuxDataUpdate) => {
1296
+
1297
+ // package.json
1298
+ var version = "1.0.1-rc.21";
1299
+
1300
+ // src/hooks/useMuxAnalytics.ts
1301
+ var useMuxAnalytics = (playerRef, muxConfig, onMuxReady, onMuxDataUpdate, playerName) => {
200
1302
  const shakaPlayerMuxRef = useRef3(null);
201
1303
  const initializeMux = useCallback4(() => {
202
1304
  if (!muxConfig || !playerRef.current) return;
@@ -211,8 +1313,8 @@ var useMuxAnalytics = (playerRef, muxConfig, onMuxReady, onMuxDataUpdate) => {
211
1313
  ...muxConfig.errorTranslator && { errorTranslator: muxConfig.errorTranslator },
212
1314
  data: {
213
1315
  env_key: muxConfig.envKey,
214
- player_name: "Motto Video Player",
215
- player_version: "1.0.0",
1316
+ player_name: playerName,
1317
+ player_version: version,
216
1318
  player_init_time: playerInitTime,
217
1319
  ...muxConfig.metadata
218
1320
  }
@@ -262,28 +1364,164 @@ var useMuxAnalytics = (playerRef, muxConfig, onMuxReady, onMuxDataUpdate) => {
262
1364
  // src/hooks/useShakaUI.ts
263
1365
  import { useCallback as useCallback5, useRef as useRef4 } from "react";
264
1366
  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;
1367
+
1368
+ // src/icons/SkipBackIcon.tsx
1369
+ import { jsx, jsxs } from "react/jsx-runtime";
1370
+ var SkipBackIcon = ({ size = 24, className = "" }) => {
1371
+ return /* @__PURE__ */ jsxs(
1372
+ "svg",
1373
+ {
1374
+ width: size,
1375
+ height: size,
1376
+ strokeWidth: "2",
1377
+ viewBox: "0 0 24 24",
1378
+ fill: "none",
1379
+ xmlns: "http://www.w3.org/2000/svg",
1380
+ className,
1381
+ children: [
1382
+ /* @__PURE__ */ jsx(
1383
+ "path",
1384
+ {
1385
+ d: "M3 13C3 17.9706 7.02944 22 12 22C16.9706 22 21 17.9706 21 13C21 8.02944 16.9706 4 12 4",
1386
+ stroke: "currentColor",
1387
+ strokeWidth: "2",
1388
+ strokeLinecap: "round",
1389
+ strokeLinejoin: "round"
1390
+ }
1391
+ ),
1392
+ /* @__PURE__ */ jsx(
1393
+ "path",
1394
+ {
1395
+ d: "M9 9L9 16",
1396
+ stroke: "currentColor",
1397
+ strokeWidth: "2",
1398
+ strokeLinecap: "round",
1399
+ strokeLinejoin: "round"
1400
+ }
1401
+ ),
1402
+ /* @__PURE__ */ jsx(
1403
+ "path",
1404
+ {
1405
+ 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",
1406
+ stroke: "currentColor",
1407
+ strokeWidth: "2",
1408
+ strokeLinecap: "round",
1409
+ strokeLinejoin: "round"
1410
+ }
1411
+ ),
1412
+ /* @__PURE__ */ jsx(
1413
+ "path",
1414
+ {
1415
+ d: "M12 4L4.5 4M4.5 4L6.5 2M4.5 4L6.5 6",
1416
+ stroke: "currentColor",
1417
+ strokeWidth: "2",
1418
+ strokeLinecap: "round",
1419
+ strokeLinejoin: "round"
1420
+ }
1421
+ )
1422
+ ]
275
1423
  }
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";
1424
+ );
1425
+ };
1426
+
1427
+ // src/icons/SkipForwardIcon.tsx
1428
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
1429
+ var SkipForwardIcon = ({ size = 24, className = "" }) => {
1430
+ return /* @__PURE__ */ jsxs2(
1431
+ "svg",
1432
+ {
1433
+ width: size,
1434
+ height: size,
1435
+ strokeWidth: "2",
1436
+ viewBox: "0 0 24 24",
1437
+ fill: "none",
1438
+ xmlns: "http://www.w3.org/2000/svg",
1439
+ className,
1440
+ children: [
1441
+ /* @__PURE__ */ jsx2(
1442
+ "path",
1443
+ {
1444
+ d: "M21 13C21 17.9706 16.9706 22 12 22C7.02944 22 3 17.9706 3 13C3 8.02944 7.02944 4 12 4",
1445
+ stroke: "currentColor",
1446
+ strokeLinecap: "round",
1447
+ strokeLinejoin: "round"
1448
+ }
1449
+ ),
1450
+ /* @__PURE__ */ jsx2(
1451
+ "path",
1452
+ {
1453
+ d: "M12 4H19.5M19.5 4L17.5 2M19.5 4L17.5 6",
1454
+ stroke: "currentColor",
1455
+ strokeLinecap: "round",
1456
+ strokeLinejoin: "round"
1457
+ }
1458
+ ),
1459
+ /* @__PURE__ */ jsx2(
1460
+ "path",
1461
+ {
1462
+ d: "M9 9L9 16",
1463
+ stroke: "currentColor",
1464
+ strokeLinecap: "round",
1465
+ strokeLinejoin: "round"
1466
+ }
1467
+ ),
1468
+ /* @__PURE__ */ jsx2(
1469
+ "path",
1470
+ {
1471
+ 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",
1472
+ stroke: "currentColor",
1473
+ strokeLinecap: "round",
1474
+ strokeLinejoin: "round"
1475
+ }
1476
+ )
1477
+ ]
1478
+ }
1479
+ );
1480
+ };
1481
+
1482
+ // src/icons/BigPlayIcon.tsx
1483
+ import { jsx as jsx3 } from "react/jsx-runtime";
1484
+ var BigPlayIcon = ({ size = 40, className = "" }) => {
1485
+ return /* @__PURE__ */ jsx3(
1486
+ "svg",
1487
+ {
1488
+ width: size,
1489
+ height: size,
1490
+ viewBox: "0 0 24 24",
1491
+ fill: "currentColor",
1492
+ xmlns: "http://www.w3.org/2000/svg",
1493
+ className,
1494
+ children: /* @__PURE__ */ jsx3(
1495
+ "path",
1496
+ {
1497
+ fillRule: "evenodd",
1498
+ 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",
1499
+ clipRule: "evenodd"
1500
+ }
1501
+ )
1502
+ }
1503
+ );
1504
+ };
1505
+
1506
+ // src/utils/renderIcon.ts
1507
+ import { renderToStaticMarkup } from "react-dom/server";
1508
+ import { createElement } from "react";
1509
+ var renderIcon = (Component, props = {}) => {
1510
+ return renderToStaticMarkup(createElement(Component, props));
1511
+ };
1512
+
1513
+ // src/hooks/useShakaUI.ts
1514
+ var SkipBackButton = class {
1515
+ constructor(parent, controls, onSkipBack, iconSize = 24) {
1516
+ this.parent = parent;
1517
+ this.controls = controls;
1518
+ this.eventManager = { listen: (element, event, handler) => {
1519
+ element.addEventListener(event, handler);
1520
+ } };
1521
+ this.button_ = document.createElement("button");
1522
+ this.button_.className = "shaka-button motto-native-skip-button";
1523
+ this.button_.innerHTML = renderIcon(SkipBackIcon, { size: iconSize });
1524
+ this.button_.title = "Skip back 15 seconds";
287
1525
  this.button_.setAttribute("aria-label", "Skip back 15 seconds");
288
1526
  this.parent.appendChild(this.button_);
289
1527
  this.eventManager.listen(this.button_, "click", () => {
@@ -295,28 +1533,21 @@ var SkipBackButton = class {
295
1533
  }
296
1534
  });
297
1535
  }
1536
+ // Shaka UI will call `release` when the controls are destroyed.
1537
+ // Provide a no-op implementation to avoid TypeErrors.
1538
+ release() {
1539
+ }
298
1540
  };
299
1541
  var SkipForwardButton = class {
300
- constructor(parent, controls, onSkipForward) {
1542
+ constructor(parent, controls, onSkipForward, iconSize = 24) {
301
1543
  this.parent = parent;
302
1544
  this.controls = controls;
303
1545
  this.eventManager = { listen: (element, event, handler) => {
304
1546
  element.addEventListener(event, handler);
305
1547
  } };
306
- if (typeof document === "undefined") {
307
- console.warn("SkipForwardButton: document is not available (SSR environment)");
308
- return;
309
- }
310
1548
  this.button_ = document.createElement("button");
311
1549
  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
- `;
1550
+ this.button_.innerHTML = renderIcon(SkipForwardIcon, { size: iconSize });
320
1551
  this.button_.title = "Skip forward 15 seconds";
321
1552
  this.button_.setAttribute("aria-label", "Skip forward 15 seconds");
322
1553
  this.parent.appendChild(this.button_);
@@ -329,266 +1560,56 @@ var SkipForwardButton = class {
329
1560
  }
330
1561
  });
331
1562
  }
1563
+ release() {
1564
+ }
332
1565
  };
333
1566
  var SkipBackButtonFactory = class {
334
- constructor(onSkipBack) {
1567
+ constructor(onSkipBack, iconSize) {
335
1568
  this.onSkipBack = onSkipBack;
1569
+ this.iconSize = iconSize;
336
1570
  }
337
1571
  create(rootElement, controls) {
338
- return new SkipBackButton(rootElement, controls, this.onSkipBack);
1572
+ return new SkipBackButton(rootElement, controls, this.onSkipBack, this.iconSize);
339
1573
  }
340
1574
  };
341
1575
  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;
1576
+ constructor(onSkipForward, iconSize) {
543
1577
  this.onSkipForward = onSkipForward;
1578
+ this.iconSize = iconSize;
544
1579
  }
545
1580
  create(rootElement, controls) {
546
- return new MobileControlsContainer(rootElement, controls, this.onSkipBack, this.onSkipForward);
1581
+ return new SkipForwardButton(rootElement, controls, this.onSkipForward, this.iconSize);
547
1582
  }
548
1583
  };
549
- var useShakaUI = (playerRef, containerRef, videoRef, controls, chromecastConfig, seekbarColors, onSkipBack, onSkipForward) => {
1584
+ var useShakaUI = (playerRef, containerRef, videoRef, controls, chromecastConfig, seekbarColors, onSkipBack, onSkipForward, iconSizes) => {
550
1585
  const uiRef = useRef4(null);
551
1586
  const registeredElements = useRef4(/* @__PURE__ */ new Set());
552
1587
  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
1588
  if (!controls || !containerRef.current || !playerRef.current || !videoRef.current) {
558
1589
  return null;
559
1590
  }
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
1591
  if (!registeredElements.current.has("skip_back_button")) {
562
- ShakaUI.Controls.registerElement("skip_back_button", new SkipBackButtonFactory(onSkipBack));
1592
+ ShakaUI.Controls.registerElement("skip_back_button", new SkipBackButtonFactory(onSkipBack, iconSizes?.skipButtons));
563
1593
  registeredElements.current.add("skip_back_button");
564
1594
  }
565
1595
  if (!registeredElements.current.has("skip_forward_button")) {
566
- ShakaUI.Controls.registerElement("skip_forward_button", new SkipForwardButtonFactory(onSkipForward));
1596
+ ShakaUI.Controls.registerElement("skip_forward_button", new SkipForwardButtonFactory(onSkipForward, iconSizes?.skipButtons));
567
1597
  registeredElements.current.add("skip_forward_button");
568
1598
  }
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
1599
  const ui = new ShakaUI.Overlay(playerRef.current, containerRef.current, videoRef.current);
576
1600
  uiRef.current = ui;
577
- const controlPanelElements = isMobile ? [
578
- "mute",
579
- "time_and_duration",
580
- "spacer",
581
- "fullscreen",
582
- "overflow_menu"
583
- ] : [
584
- "skip_back_button",
585
- "play_pause",
586
- "skip_forward_button",
1601
+ const isMobile = window.innerWidth <= 767;
1602
+ const controlPanelElements = [
1603
+ ...isMobile ? [] : ["skip_back_button"],
1604
+ ...isMobile ? [] : ["play_pause"],
1605
+ ...isMobile ? [] : ["skip_forward_button"],
587
1606
  "mute",
588
- "volume",
1607
+ ...isMobile ? [] : ["volume"],
1608
+ // Only include volume on desktop
589
1609
  "time_and_duration",
590
1610
  "spacer",
591
1611
  "fullscreen",
1612
+ "cast",
592
1613
  "overflow_menu"
593
1614
  ];
594
1615
  const uiConfig = {
@@ -601,10 +1622,16 @@ var useShakaUI = (playerRef, containerRef, videoRef, controls, chromecastConfig,
601
1622
  // Progress/played portion (white)
602
1623
  },
603
1624
  controlPanelElements,
1625
+ addBigPlayButton: isMobile,
604
1626
  ...chromecastConfig?.receiverApplicationId && {
605
1627
  "castReceiverAppId": chromecastConfig.receiverApplicationId,
606
1628
  "castAndroidReceiverCompatible": false
607
- }
1629
+ },
1630
+ overflowMenuButtons: [
1631
+ "quality",
1632
+ "picture_in_picture",
1633
+ "playback_rate"
1634
+ ]
608
1635
  };
609
1636
  if (chromecastConfig?.receiverApplicationId) {
610
1637
  uiConfig.castReceiverAppId = chromecastConfig.receiverApplicationId;
@@ -612,16 +1639,32 @@ var useShakaUI = (playerRef, containerRef, videoRef, controls, chromecastConfig,
612
1639
  }
613
1640
  ui.configure(uiConfig);
614
1641
  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);
1642
+ const customizeBigPlayButton = () => {
1643
+ const bigPlayButton = containerRef.current?.querySelector(".shaka-big-play-button");
1644
+ if (bigPlayButton && !bigPlayButton.hasAttribute("data-customized")) {
1645
+ const buttonSize = iconSizes?.bigPlayButton || 40;
1646
+ bigPlayButton.innerHTML = renderIcon(BigPlayIcon, { size: buttonSize });
1647
+ bigPlayButton.setAttribute("data-customized", "true");
1648
+ const buttonElement = bigPlayButton;
1649
+ buttonElement.style.display = "flex";
1650
+ buttonElement.style.alignItems = "center";
1651
+ buttonElement.style.justifyContent = "center";
620
1652
  }
621
- }, 500);
1653
+ };
1654
+ setTimeout(customizeBigPlayButton, 100);
1655
+ const observer = new MutationObserver(() => {
1656
+ customizeBigPlayButton();
1657
+ });
1658
+ if (containerRef.current) {
1659
+ observer.observe(containerRef.current, {
1660
+ childList: true,
1661
+ subtree: true,
1662
+ attributes: false
1663
+ });
1664
+ }
622
1665
  }
623
1666
  return ui;
624
- }, [controls, containerRef, playerRef, videoRef, chromecastConfig, seekbarColors, onSkipBack, onSkipForward]);
1667
+ }, [controls, containerRef, playerRef, videoRef, chromecastConfig, seekbarColors, onSkipBack, onSkipForward, iconSizes]);
625
1668
  const destroyUI = useCallback5(() => {
626
1669
  if (uiRef.current) {
627
1670
  try {
@@ -673,8 +1716,9 @@ import { useEffect, useState, useRef as useRef5 } from "react";
673
1716
  var useLiveBadge = (playerRef, options = {}) => {
674
1717
  const [isLive, setIsLive] = useState(false);
675
1718
  const [isVisible, setIsVisible] = useState(false);
1719
+ const [isNearLiveEdge, setIsNearLiveEdge] = useState(false);
676
1720
  const intervalRef = useRef5(null);
677
- const { enabled = true, onLiveStateChange } = options;
1721
+ const { enabled = true, onLiveStateChange, liveThresholdSeconds = 15 } = options;
678
1722
  const checkLiveStatus = () => {
679
1723
  if (!playerRef.current || !enabled) {
680
1724
  return;
@@ -693,11 +1737,30 @@ var useLiveBadge = (playerRef, options = {}) => {
693
1737
  return;
694
1738
  }
695
1739
  const liveStatus = timeline.isLive();
1740
+ let nearLiveEdge = false;
1741
+ if (liveStatus) {
1742
+ try {
1743
+ const seekRange = player.getSeekRange();
1744
+ const videoElement = player.getMediaElement();
1745
+ if (seekRange && videoElement) {
1746
+ const liveEdge = seekRange.end;
1747
+ const currentTime = videoElement.currentTime;
1748
+ const timeBehindLive = liveEdge - currentTime;
1749
+ nearLiveEdge = timeBehindLive <= liveThresholdSeconds;
1750
+ }
1751
+ } catch (error) {
1752
+ console.error("Error checking live edge position:", error);
1753
+ nearLiveEdge = liveStatus;
1754
+ }
1755
+ }
696
1756
  if (liveStatus !== isLive) {
697
1757
  setIsLive(liveStatus);
698
- setIsVisible(liveStatus);
699
1758
  onLiveStateChange?.(liveStatus);
700
1759
  }
1760
+ if (nearLiveEdge !== isNearLiveEdge) {
1761
+ setIsNearLiveEdge(nearLiveEdge);
1762
+ setIsVisible(nearLiveEdge);
1763
+ }
701
1764
  } catch (error) {
702
1765
  if (error instanceof Error && !error.message.includes("not a function")) {
703
1766
  console.error("Error checking live status:", error);
@@ -708,17 +1771,18 @@ var useLiveBadge = (playerRef, options = {}) => {
708
1771
  if (!enabled) {
709
1772
  setIsLive(false);
710
1773
  setIsVisible(false);
1774
+ setIsNearLiveEdge(false);
711
1775
  return;
712
1776
  }
713
1777
  checkLiveStatus();
714
- intervalRef.current = setInterval(checkLiveStatus, 2e3);
1778
+ intervalRef.current = setInterval(checkLiveStatus, 1e3);
715
1779
  return () => {
716
1780
  if (intervalRef.current) {
717
1781
  clearInterval(intervalRef.current);
718
1782
  intervalRef.current = null;
719
1783
  }
720
1784
  };
721
- }, [enabled, playerRef.current]);
1785
+ }, [enabled, playerRef.current, liveThresholdSeconds]);
722
1786
  useEffect(() => {
723
1787
  return () => {
724
1788
  if (intervalRef.current) {
@@ -731,6 +1795,7 @@ var useLiveBadge = (playerRef, options = {}) => {
731
1795
  return {
732
1796
  isLive,
733
1797
  isVisible,
1798
+ isNearLiveEdge,
734
1799
  hideBadge,
735
1800
  showBadge,
736
1801
  checkLiveStatus
@@ -742,19 +1807,48 @@ import { useEffect as useEffect2, useState as useState2 } from "react";
742
1807
 
743
1808
  // src/hooks/useLiveIndicator.ts
744
1809
  import { useEffect as useEffect3, useRef as useRef7 } from "react";
745
- var useLiveIndicator = (containerRef, options = {}) => {
1810
+ var useLiveIndicator = (containerRef, playerRef, options = {}) => {
746
1811
  const observerRef = useRef7(null);
1812
+ const intervalRef = useRef7(null);
747
1813
  const {
748
1814
  enabled = true,
749
1815
  indicatorColor = "#ff0000",
750
1816
  indicatorSize = 8,
751
- showPulseAnimation = true
1817
+ showPulseAnimation = true,
1818
+ liveThresholdSeconds = 15
752
1819
  } = options;
753
- useEffect3(() => {
754
- if (typeof window === "undefined" || typeof document === "undefined") {
755
- return;
1820
+ const isNearLiveEdge = (player) => {
1821
+ if (!player) return false;
1822
+ try {
1823
+ if (!player.getManifest || !player.getPresentationTimeline || typeof player.getPresentationTimeline !== "function") {
1824
+ return false;
1825
+ }
1826
+ const manifest = player.getManifest();
1827
+ if (!manifest) {
1828
+ return false;
1829
+ }
1830
+ const timeline = player.getPresentationTimeline();
1831
+ if (!timeline || typeof timeline.isLive !== "function") {
1832
+ return false;
1833
+ }
1834
+ const liveStatus = timeline.isLive();
1835
+ if (!liveStatus) return false;
1836
+ const seekRange = player.getSeekRange();
1837
+ const videoElement = player.getMediaElement();
1838
+ if (seekRange && videoElement) {
1839
+ const liveEdge = seekRange.end;
1840
+ const currentTime = videoElement.currentTime;
1841
+ const timeBehindLive = liveEdge - currentTime;
1842
+ return timeBehindLive <= liveThresholdSeconds;
1843
+ }
1844
+ return false;
1845
+ } catch (error) {
1846
+ console.error("Error checking live edge position in indicator:", error);
1847
+ return false;
756
1848
  }
757
- if (!containerRef.current || !enabled) {
1849
+ };
1850
+ useEffect3(() => {
1851
+ if (!containerRef.current || !playerRef.current || !enabled) {
758
1852
  return;
759
1853
  }
760
1854
  const addLiveIndicator = (currentTimeElement) => {
@@ -785,7 +1879,7 @@ var useLiveIndicator = (containerRef, options = {}) => {
785
1879
  const currentTimeElements = containerRef.current?.querySelectorAll(".shaka-current-time");
786
1880
  currentTimeElements?.forEach((element) => {
787
1881
  const textContent = element.textContent?.trim() || "";
788
- if (textContent.toLowerCase().includes("live")) {
1882
+ if (textContent.toLowerCase().includes("live") && isNearLiveEdge(playerRef.current)) {
789
1883
  addLiveIndicator(element);
790
1884
  } else {
791
1885
  removeLiveIndicator(element);
@@ -793,6 +1887,7 @@ var useLiveIndicator = (containerRef, options = {}) => {
793
1887
  });
794
1888
  };
795
1889
  checkForLiveContent();
1890
+ intervalRef.current = setInterval(checkForLiveContent, 1e3);
796
1891
  observerRef.current = new MutationObserver((mutations) => {
797
1892
  let shouldCheck = false;
798
1893
  mutations.forEach((mutation) => {
@@ -818,332 +1913,1263 @@ var useLiveIndicator = (containerRef, options = {}) => {
818
1913
  characterData: true,
819
1914
  characterDataOldValue: true
820
1915
  });
821
- const intervalId = setInterval(checkForLiveContent, 1e3);
822
1916
  return () => {
823
1917
  if (observerRef.current) {
824
1918
  observerRef.current.disconnect();
825
1919
  }
826
- clearInterval(intervalId);
1920
+ if (intervalRef.current) {
1921
+ clearInterval(intervalRef.current);
1922
+ }
827
1923
  };
828
- }, [containerRef, enabled, indicatorColor, indicatorSize, showPulseAnimation]);
1924
+ }, [containerRef, playerRef, enabled, indicatorColor, indicatorSize, showPulseAnimation, liveThresholdSeconds]);
829
1925
  return {
830
1926
  // Expose method to manually trigger check if needed
831
1927
  checkForLiveContent: () => {
832
1928
  const currentTimeElements = containerRef.current?.querySelectorAll(".shaka-current-time");
833
1929
  currentTimeElements?.forEach((element) => {
834
1930
  const textContent = element.textContent?.trim() || "";
835
- if (textContent.toLowerCase().includes("live")) {
1931
+ if (textContent.toLowerCase().includes("live") && isNearLiveEdge(playerRef.current)) {
836
1932
  }
837
1933
  });
838
1934
  }
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);
1935
+ };
1936
+ };
1937
+
1938
+ // src/hooks/useKeyboardControls.ts
1939
+ import { useCallback as useCallback7, useEffect as useEffect4 } from "react";
1940
+ var useKeyboardControls = (videoRef, options = {}) => {
1941
+ const { skipBack, skipForward, enabled = true } = options;
1942
+ const isDesktop = useCallback7(() => {
1943
+ return window.innerWidth > 767 && !/Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
1944
+ }, []);
1945
+ const handleKeydown = useCallback7((event) => {
1946
+ if (!enabled || !isDesktop() || !videoRef.current) return;
1947
+ const activeElement = document.activeElement;
1948
+ if (activeElement && (activeElement.tagName === "INPUT" || activeElement.tagName === "TEXTAREA" || activeElement.isContentEditable)) {
1949
+ return;
1950
+ }
1951
+ switch (event.key) {
1952
+ case "ArrowLeft":
1953
+ event.preventDefault();
1954
+ skipBack?.();
1955
+ break;
1956
+ case "ArrowRight":
1957
+ event.preventDefault();
1958
+ skipForward?.();
1959
+ break;
1960
+ case " ":
1961
+ case "Space":
1962
+ event.preventDefault();
1963
+ if (videoRef.current.paused) {
1964
+ videoRef.current.play();
1965
+ } else {
1966
+ videoRef.current.pause();
1967
+ }
1968
+ break;
1969
+ }
1970
+ }, [enabled, videoRef, skipBack, skipForward, isDesktop]);
1971
+ useEffect4(() => {
1972
+ if (!enabled || !isDesktop()) return;
1973
+ document.addEventListener("keydown", handleKeydown);
1974
+ return () => {
1975
+ document.removeEventListener("keydown", handleKeydown);
1976
+ };
1977
+ }, [handleKeydown, enabled, isDesktop]);
1978
+ return {
1979
+ isDesktop: isDesktop()
1980
+ };
1981
+ };
1982
+
1983
+ // src/components/Loading.tsx
1984
+ import { twMerge } from "tailwind-merge";
1985
+ import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
1986
+ var Loading = ({ className }) => /* @__PURE__ */ jsxs3(
1987
+ "div",
1988
+ {
1989
+ className: twMerge(
1990
+ "relative bg-[#151515] md:rounded-2xl! overflow-hidden aspect-video text-white w-full h-full flex justify-center items-center text-[10px]",
1991
+ className
1992
+ ),
1993
+ role: "status",
1994
+ children: [
1995
+ /* @__PURE__ */ jsx4("div", { className: "shaka-spinner-container flex justify-center items-center", children: /* @__PURE__ */ jsx4(
1996
+ "svg",
1997
+ {
1998
+ className: "shaka-spinner-svg animate-spin h-12 w-12",
1999
+ viewBox: "0 0 64 64",
2000
+ xmlns: "http://www.w3.org/2000/svg",
2001
+ children: /* @__PURE__ */ jsx4(
2002
+ "circle",
2003
+ {
2004
+ className: "shaka-spinner-path",
2005
+ cx: "32",
2006
+ cy: "32",
2007
+ r: "28",
2008
+ strokeWidth: "4",
2009
+ strokeLinecap: "round"
2010
+ }
2011
+ )
2012
+ }
2013
+ ) }),
2014
+ /* @__PURE__ */ jsx4("span", { className: "sr-only", children: "Loading..." })
2015
+ ]
2016
+ }
2017
+ );
2018
+
2019
+ // src/components/ErrorScreen.tsx
2020
+ import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
2021
+ 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: [
2022
+ /* @__PURE__ */ jsx5(
2023
+ "svg",
2024
+ {
2025
+ className: "w-24 h-24 m-6",
2026
+ fill: "none",
2027
+ stroke: "currentColor",
2028
+ strokeWidth: "2",
2029
+ style: { width: 96 },
2030
+ viewBox: "0 0 24 24",
2031
+ xmlns: "http://www.w3.org/2000/svg",
2032
+ children: /* @__PURE__ */ jsx5(
2033
+ "path",
2034
+ {
2035
+ d: "M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z",
2036
+ strokeLinecap: "round",
2037
+ strokeLinejoin: "round"
2038
+ }
2039
+ )
2040
+ }
2041
+ ),
2042
+ /* @__PURE__ */ jsxs4("div", { children: [
2043
+ /* @__PURE__ */ jsx5("h3", { className: "text-2xl mb-2", children: title || "Playback Error" }),
2044
+ /* @__PURE__ */ jsx5("div", { className: "text-lg", children: description || "Unable to play the video. Please try again later." })
2045
+ ] })
2046
+ ] }) });
2047
+
2048
+ // src/components/Title.tsx
2049
+ import { jsx as jsx6 } from "react/jsx-runtime";
2050
+ 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 }) });
2051
+
2052
+ // src/components/LiveBadge.tsx
2053
+ import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
2054
+ var LiveBadge = ({
2055
+ isVisible,
2056
+ position = "top-right",
2057
+ className = "",
2058
+ style = {},
2059
+ text = "LIVE"
2060
+ }) => {
2061
+ if (!isVisible) return null;
2062
+ const positionClasses = {
2063
+ "top-left": "top-4 left-4",
2064
+ "top-right": "top-4 right-4",
2065
+ "bottom-left": "bottom-4 left-4",
2066
+ "bottom-right": "bottom-4 right-4"
2067
+ };
2068
+ return /* @__PURE__ */ jsx7(
2069
+ "div",
2070
+ {
2071
+ className: `
2072
+ absolute z-50
2073
+ ${positionClasses[position]}
2074
+ bg-red-600 text-white
2075
+ px-2 py-1
2076
+ rounded-md
2077
+ text-xs font-bold
2078
+ uppercase tracking-wide
2079
+ shadow-lg
2080
+ animate-pulse
2081
+ pointer-events-none
2082
+ ${className}
2083
+ `,
2084
+ style,
2085
+ children: /* @__PURE__ */ jsxs5("span", { className: "flex items-center gap-1", children: [
2086
+ /* @__PURE__ */ jsx7("span", { className: "w-2 h-2 bg-white rounded-full animate-pulse" }),
2087
+ text
2088
+ ] })
2089
+ }
2090
+ );
2091
+ };
2092
+
2093
+ // src/styles.css
2094
+ styleInject(`/*! tailwindcss v4.1.8 | MIT License | https://tailwindcss.com */
2095
+ @layer properties;
2096
+ @layer theme, base, components, utilities;
2097
+ @layer theme {
2098
+ :root,
2099
+ :host {
2100
+ --font-sans:
2101
+ ui-sans-serif,
2102
+ system-ui,
2103
+ sans-serif,
2104
+ "Apple Color Emoji",
2105
+ "Segoe UI Emoji",
2106
+ "Segoe UI Symbol",
2107
+ "Noto Color Emoji";
2108
+ --font-mono:
2109
+ ui-monospace,
2110
+ SFMono-Regular,
2111
+ Menlo,
2112
+ Monaco,
2113
+ Consolas,
2114
+ "Liberation Mono",
2115
+ "Courier New",
2116
+ monospace;
2117
+ --color-red-600: oklch(57.7% 0.245 27.325);
2118
+ --color-black: #000;
2119
+ --color-white: #fff;
2120
+ --spacing: 0.25rem;
2121
+ --text-xs: 0.75rem;
2122
+ --text-xs--line-height: calc(1 / 0.75);
2123
+ --text-sm: 0.875rem;
2124
+ --text-sm--line-height: calc(1.25 / 0.875);
2125
+ --text-base: 1rem;
2126
+ --text-base--line-height: calc(1.5 / 1);
2127
+ --text-lg: 1.125rem;
2128
+ --text-lg--line-height: calc(1.75 / 1.125);
2129
+ --text-xl: 1.25rem;
2130
+ --text-xl--line-height: calc(1.75 / 1.25);
2131
+ --text-2xl: 1.5rem;
2132
+ --text-2xl--line-height: calc(2 / 1.5);
2133
+ --text-5xl: 3rem;
2134
+ --text-5xl--line-height: 1;
2135
+ --font-weight-medium: 500;
2136
+ --font-weight-semibold: 600;
2137
+ --font-weight-bold: 700;
2138
+ --tracking-wide: 0.025em;
2139
+ --tracking-widest: 0.1em;
2140
+ --radius-md: 0.375rem;
2141
+ --radius-2xl: 1rem;
2142
+ --animate-spin: spin 1s linear infinite;
2143
+ --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
2144
+ --aspect-video: 16 / 9;
2145
+ --default-transition-duration: 150ms;
2146
+ --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2147
+ --default-font-family: var(--font-sans);
2148
+ --default-mono-font-family: var(--font-mono);
2149
+ }
2150
+ }
2151
+ @layer base {
2152
+ *,
2153
+ ::after,
2154
+ ::before,
2155
+ ::backdrop,
2156
+ ::file-selector-button {
2157
+ box-sizing: border-box;
2158
+ margin: 0;
2159
+ padding: 0;
2160
+ border: 0 solid;
2161
+ }
2162
+ html,
2163
+ :host {
2164
+ line-height: 1.5;
2165
+ -webkit-text-size-adjust: 100%;
2166
+ tab-size: 4;
2167
+ 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");
2168
+ font-feature-settings: var(--default-font-feature-settings, normal);
2169
+ font-variation-settings: var(--default-font-variation-settings, normal);
2170
+ -webkit-tap-highlight-color: transparent;
2171
+ }
2172
+ hr {
2173
+ height: 0;
2174
+ color: inherit;
2175
+ border-top-width: 1px;
2176
+ }
2177
+ abbr:where([title]) {
2178
+ -webkit-text-decoration: underline dotted;
2179
+ text-decoration: underline dotted;
2180
+ }
2181
+ h1,
2182
+ h2,
2183
+ h3,
2184
+ h4,
2185
+ h5,
2186
+ h6 {
2187
+ font-size: inherit;
2188
+ font-weight: inherit;
2189
+ }
2190
+ a {
2191
+ color: inherit;
2192
+ -webkit-text-decoration: inherit;
2193
+ text-decoration: inherit;
2194
+ }
2195
+ b,
2196
+ strong {
2197
+ font-weight: bolder;
2198
+ }
2199
+ code,
2200
+ kbd,
2201
+ samp,
2202
+ pre {
2203
+ font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
2204
+ font-feature-settings: var(--default-mono-font-feature-settings, normal);
2205
+ font-variation-settings: var(--default-mono-font-variation-settings, normal);
2206
+ font-size: 1em;
2207
+ }
2208
+ small {
2209
+ font-size: 80%;
2210
+ }
2211
+ sub,
2212
+ sup {
2213
+ font-size: 75%;
2214
+ line-height: 0;
2215
+ position: relative;
2216
+ vertical-align: baseline;
2217
+ }
2218
+ sub {
2219
+ bottom: -0.25em;
2220
+ }
2221
+ sup {
2222
+ top: -0.5em;
2223
+ }
2224
+ table {
2225
+ text-indent: 0;
2226
+ border-color: inherit;
2227
+ border-collapse: collapse;
2228
+ }
2229
+ :-moz-focusring {
2230
+ outline: auto;
2231
+ }
2232
+ progress {
2233
+ vertical-align: baseline;
2234
+ }
2235
+ summary {
2236
+ display: list-item;
2237
+ }
2238
+ ol,
2239
+ ul,
2240
+ menu {
2241
+ list-style: none;
2242
+ }
2243
+ img,
2244
+ svg,
2245
+ video,
2246
+ canvas,
2247
+ audio,
2248
+ iframe,
2249
+ embed,
2250
+ object {
2251
+ display: block;
2252
+ vertical-align: middle;
2253
+ }
2254
+ img,
2255
+ video {
2256
+ max-width: 100%;
2257
+ height: auto;
2258
+ }
2259
+ button,
2260
+ input,
2261
+ select,
2262
+ optgroup,
2263
+ textarea,
2264
+ ::file-selector-button {
2265
+ font: inherit;
2266
+ font-feature-settings: inherit;
2267
+ font-variation-settings: inherit;
2268
+ letter-spacing: inherit;
2269
+ color: inherit;
2270
+ border-radius: 0;
2271
+ background-color: transparent;
2272
+ opacity: 1;
2273
+ }
2274
+ :where(select:is([multiple], [size])) optgroup {
2275
+ font-weight: bolder;
2276
+ }
2277
+ :where(select:is([multiple], [size])) optgroup option {
2278
+ padding-inline-start: 20px;
2279
+ }
2280
+ ::file-selector-button {
2281
+ margin-inline-end: 4px;
2282
+ }
2283
+ ::placeholder {
2284
+ opacity: 1;
2285
+ }
2286
+ @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {
2287
+ ::placeholder {
2288
+ color: currentcolor;
2289
+ @supports (color: color-mix(in lab, red, red)) {
2290
+ color: color-mix(in oklab, currentcolor 50%, transparent);
2291
+ }
2292
+ }
2293
+ }
2294
+ textarea {
2295
+ resize: vertical;
2296
+ }
2297
+ ::-webkit-search-decoration {
2298
+ -webkit-appearance: none;
2299
+ }
2300
+ ::-webkit-date-and-time-value {
2301
+ min-height: 1lh;
2302
+ text-align: inherit;
2303
+ }
2304
+ ::-webkit-datetime-edit {
2305
+ display: inline-flex;
2306
+ }
2307
+ ::-webkit-datetime-edit-fields-wrapper {
2308
+ padding: 0;
2309
+ }
2310
+ ::-webkit-datetime-edit,
2311
+ ::-webkit-datetime-edit-year-field,
2312
+ ::-webkit-datetime-edit-month-field,
2313
+ ::-webkit-datetime-edit-day-field,
2314
+ ::-webkit-datetime-edit-hour-field,
2315
+ ::-webkit-datetime-edit-minute-field,
2316
+ ::-webkit-datetime-edit-second-field,
2317
+ ::-webkit-datetime-edit-millisecond-field,
2318
+ ::-webkit-datetime-edit-meridiem-field {
2319
+ padding-block: 0;
2320
+ }
2321
+ :-moz-ui-invalid {
2322
+ box-shadow: none;
2323
+ }
2324
+ button,
2325
+ input:where([type=button], [type=reset], [type=submit]),
2326
+ ::file-selector-button {
2327
+ appearance: button;
2328
+ }
2329
+ ::-webkit-inner-spin-button,
2330
+ ::-webkit-outer-spin-button {
2331
+ height: auto;
2332
+ }
2333
+ [hidden]:where(:not([hidden=until-found])) {
2334
+ display: none !important;
2335
+ }
2336
+ }
2337
+ @layer utilities {
2338
+ .pointer-events-auto {
2339
+ pointer-events: auto;
2340
+ }
2341
+ .pointer-events-none {
2342
+ pointer-events: none;
2343
+ }
2344
+ .visible {
2345
+ visibility: visible;
2346
+ }
2347
+ .sr-only {
2348
+ position: absolute;
2349
+ width: 1px;
2350
+ height: 1px;
2351
+ padding: 0;
2352
+ margin: -1px;
2353
+ overflow: hidden;
2354
+ clip: rect(0, 0, 0, 0);
2355
+ white-space: nowrap;
2356
+ border-width: 0;
2357
+ }
2358
+ .absolute {
2359
+ position: absolute;
2360
+ }
2361
+ .fixed {
2362
+ position: fixed;
2363
+ }
2364
+ .relative {
2365
+ position: relative;
2366
+ }
2367
+ .static {
2368
+ position: static;
2369
+ }
2370
+ .inset-0 {
2371
+ inset: calc(var(--spacing) * 0);
2372
+ }
2373
+ .top-0 {
2374
+ top: calc(var(--spacing) * 0);
2375
+ }
2376
+ .top-4 {
2377
+ top: calc(var(--spacing) * 4);
2378
+ }
2379
+ .right-0 {
2380
+ right: calc(var(--spacing) * 0);
2381
+ }
2382
+ .right-4 {
2383
+ right: calc(var(--spacing) * 4);
2384
+ }
2385
+ .bottom-0 {
2386
+ bottom: calc(var(--spacing) * 0);
2387
+ }
2388
+ .bottom-4 {
2389
+ bottom: calc(var(--spacing) * 4);
2390
+ }
2391
+ .left-0 {
2392
+ left: calc(var(--spacing) * 0);
2393
+ }
2394
+ .left-4 {
2395
+ left: calc(var(--spacing) * 4);
2396
+ }
2397
+ .z-10 {
2398
+ z-index: 10;
2399
+ }
2400
+ .z-50 {
2401
+ z-index: 50;
2402
+ }
2403
+ .container {
2404
+ width: 100%;
2405
+ @media (width >= 40rem) {
2406
+ max-width: 40rem;
2407
+ }
2408
+ @media (width >= 48rem) {
2409
+ max-width: 48rem;
2410
+ }
2411
+ @media (width >= 64rem) {
2412
+ max-width: 64rem;
2413
+ }
2414
+ @media (width >= 80rem) {
2415
+ max-width: 80rem;
2416
+ }
2417
+ @media (width >= 96rem) {
2418
+ max-width: 96rem;
2419
+ }
2420
+ }
2421
+ .m-6 {
2422
+ margin: calc(var(--spacing) * 6);
2423
+ }
2424
+ .mt-1 {
2425
+ margin-top: calc(var(--spacing) * 1);
2426
+ }
2427
+ .mt-3 {
2428
+ margin-top: calc(var(--spacing) * 3);
2429
+ }
2430
+ .mb-2 {
2431
+ margin-bottom: calc(var(--spacing) * 2);
2432
+ }
2433
+ .mb-6 {
2434
+ margin-bottom: calc(var(--spacing) * 6);
2435
+ }
2436
+ .flex {
2437
+ display: flex;
2438
+ }
2439
+ .grid {
2440
+ display: grid;
2441
+ }
2442
+ .aspect-video {
2443
+ aspect-ratio: var(--aspect-video);
2444
+ }
2445
+ .h-2 {
2446
+ height: calc(var(--spacing) * 2);
2447
+ }
2448
+ .h-12 {
2449
+ height: calc(var(--spacing) * 12);
2450
+ }
2451
+ .h-24 {
2452
+ height: calc(var(--spacing) * 24);
2453
+ }
2454
+ .h-full {
2455
+ height: 100%;
2456
+ }
2457
+ .w-2 {
2458
+ width: calc(var(--spacing) * 2);
2459
+ }
2460
+ .w-12 {
2461
+ width: calc(var(--spacing) * 12);
2462
+ }
2463
+ .w-24 {
2464
+ width: calc(var(--spacing) * 24);
2465
+ }
2466
+ .w-full {
2467
+ width: 100%;
2468
+ }
2469
+ .animate-pulse {
2470
+ animation: var(--animate-pulse);
2471
+ }
2472
+ .animate-spin {
2473
+ animation: var(--animate-spin);
2474
+ }
2475
+ .auto-cols-max {
2476
+ grid-auto-columns: max-content;
2477
+ }
2478
+ .grid-flow-col {
2479
+ grid-auto-flow: column;
2480
+ }
2481
+ .flex-col {
2482
+ flex-direction: column;
2483
+ }
2484
+ .items-center {
2485
+ align-items: center;
2486
+ }
2487
+ .justify-center {
2488
+ justify-content: center;
2489
+ }
2490
+ .justify-stretch {
2491
+ justify-content: stretch;
2492
+ }
2493
+ .gap-1 {
2494
+ gap: calc(var(--spacing) * 1);
2495
+ }
2496
+ .gap-5 {
2497
+ gap: calc(var(--spacing) * 5);
2498
+ }
2499
+ .overflow-hidden {
2500
+ overflow: hidden;
2501
+ }
2502
+ .rounded-full {
2503
+ border-radius: calc(infinity * 1px);
2504
+ }
2505
+ .rounded-md {
2506
+ border-radius: var(--radius-md);
2507
+ }
2508
+ .bg-\\[\\#151515\\] {
2509
+ background-color: #151515;
2510
+ }
2511
+ .bg-black {
2512
+ background-color: var(--color-black);
2513
+ }
2514
+ .bg-red-600 {
2515
+ background-color: var(--color-red-600);
2516
+ }
2517
+ .bg-white {
2518
+ background-color: var(--color-white);
2519
+ }
2520
+ .bg-gradient-to-t {
2521
+ --tw-gradient-position: to top in oklab;
2522
+ background-image: linear-gradient(var(--tw-gradient-stops));
2523
+ }
2524
+ .from-black\\/70 {
2525
+ --tw-gradient-from: color-mix(in srgb, #000 70%, transparent);
2526
+ @supports (color: color-mix(in lab, red, red)) {
2527
+ --tw-gradient-from: color-mix(in oklab, var(--color-black) 70%, transparent);
2528
+ }
2529
+ --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));
2530
+ }
2531
+ .to-transparent {
2532
+ --tw-gradient-to: transparent;
2533
+ --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));
2534
+ }
2535
+ .bg-cover {
2536
+ background-size: cover;
2537
+ }
2538
+ .bg-center {
2539
+ background-position: center;
2540
+ }
2541
+ .bg-no-repeat {
2542
+ background-repeat: no-repeat;
2543
+ }
2544
+ .p-2 {
2545
+ padding: calc(var(--spacing) * 2);
2546
+ }
2547
+ .p-4 {
2548
+ padding: calc(var(--spacing) * 4);
2549
+ }
2550
+ .px-2 {
2551
+ padding-inline: calc(var(--spacing) * 2);
2552
+ }
2553
+ .px-4 {
2554
+ padding-inline: calc(var(--spacing) * 4);
2555
+ }
2556
+ .py-1 {
2557
+ padding-block: calc(var(--spacing) * 1);
2558
+ }
2559
+ .text-center {
2560
+ text-align: center;
2561
+ }
2562
+ .text-left {
2563
+ text-align: left;
2564
+ }
2565
+ .font-mono {
2566
+ font-family: var(--font-mono);
2567
+ }
2568
+ .text-2xl {
2569
+ font-size: var(--text-2xl);
2570
+ line-height: var(--tw-leading, var(--text-2xl--line-height));
2571
+ }
2572
+ .text-5xl {
2573
+ font-size: var(--text-5xl);
2574
+ line-height: var(--tw-leading, var(--text-5xl--line-height));
2575
+ }
2576
+ .text-base {
2577
+ font-size: var(--text-base);
2578
+ line-height: var(--tw-leading, var(--text-base--line-height));
2579
+ }
2580
+ .text-lg {
2581
+ font-size: var(--text-lg);
2582
+ line-height: var(--tw-leading, var(--text-lg--line-height));
2583
+ }
2584
+ .text-sm {
2585
+ font-size: var(--text-sm);
2586
+ line-height: var(--tw-leading, var(--text-sm--line-height));
2587
+ }
2588
+ .text-xl {
2589
+ font-size: var(--text-xl);
2590
+ line-height: var(--tw-leading, var(--text-xl--line-height));
2591
+ }
2592
+ .text-xs {
2593
+ font-size: var(--text-xs);
2594
+ line-height: var(--tw-leading, var(--text-xs--line-height));
2595
+ }
2596
+ .text-\\[10px\\] {
2597
+ font-size: 10px;
2598
+ }
2599
+ .font-bold {
2600
+ --tw-font-weight: var(--font-weight-bold);
2601
+ font-weight: var(--font-weight-bold);
2602
+ }
2603
+ .font-medium {
2604
+ --tw-font-weight: var(--font-weight-medium);
2605
+ font-weight: var(--font-weight-medium);
2606
+ }
2607
+ .font-semibold {
2608
+ --tw-font-weight: var(--font-weight-semibold);
2609
+ font-weight: var(--font-weight-semibold);
2610
+ }
2611
+ .tracking-wide {
2612
+ --tw-tracking: var(--tracking-wide);
2613
+ letter-spacing: var(--tracking-wide);
2614
+ }
2615
+ .tracking-widest {
2616
+ --tw-tracking: var(--tracking-widest);
2617
+ letter-spacing: var(--tracking-widest);
2618
+ }
2619
+ .text-white {
2620
+ color: var(--color-white);
2621
+ }
2622
+ .uppercase {
2623
+ text-transform: uppercase;
2624
+ }
2625
+ .shadow-lg {
2626
+ --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));
2627
+ box-shadow:
2628
+ var(--tw-inset-shadow),
2629
+ var(--tw-inset-ring-shadow),
2630
+ var(--tw-ring-offset-shadow),
2631
+ var(--tw-ring-shadow),
2632
+ var(--tw-shadow);
2633
+ }
2634
+ .filter {
2635
+ 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,);
2636
+ }
2637
+ .md\\:rounded-2xl {
2638
+ @media (width >= 48rem) {
2639
+ border-radius: var(--radius-2xl);
2640
+ }
2641
+ }
2642
+ .md\\:rounded-2xl\\! {
2643
+ @media (width >= 48rem) {
2644
+ border-radius: var(--radius-2xl) !important;
2645
+ }
2646
+ }
2647
+ .md\\:text-base {
2648
+ @media (width >= 48rem) {
2649
+ font-size: var(--text-base);
2650
+ line-height: var(--tw-leading, var(--text-base--line-height));
2651
+ }
2652
+ }
2653
+ .md\\:text-sm {
2654
+ @media (width >= 48rem) {
2655
+ font-size: var(--text-sm);
2656
+ line-height: var(--tw-leading, var(--text-sm--line-height));
2657
+ }
2658
+ }
2659
+ .md\\:text-xl {
2660
+ @media (width >= 48rem) {
2661
+ font-size: var(--text-xl);
2662
+ line-height: var(--tw-leading, var(--text-xl--line-height));
2663
+ }
2664
+ }
2665
+ }
2666
+ @layer components {
2667
+ video::-webkit-media-controls {
2668
+ display: none !important;
2669
+ }
2670
+ video::-webkit-media-controls-panel {
2671
+ display: none !important;
2672
+ }
2673
+ video::-webkit-media-controls-play-button {
2674
+ display: none !important;
2675
+ }
2676
+ video::-webkit-media-controls-timeline {
2677
+ display: none !important;
2678
+ }
2679
+ video::-webkit-media-controls-current-time-display {
2680
+ display: none !important;
2681
+ }
2682
+ video::-webkit-media-controls-time-remaining-display {
2683
+ display: none !important;
2684
+ }
2685
+ video::-webkit-media-controls-mute-button {
2686
+ display: none !important;
2687
+ }
2688
+ video::-webkit-media-controls-volume-slider {
2689
+ display: none !important;
2690
+ }
2691
+ video::-webkit-media-controls-fullscreen-button {
2692
+ display: none !important;
2693
+ }
2694
+ video::-webkit-media-controls-overlay-play-button {
2695
+ display: none !important;
2696
+ }
2697
+ video::-moz-media-controls {
2698
+ display: none !important;
2699
+ }
2700
+ video {
2701
+ outline: none !important;
2702
+ }
2703
+ video[controls] {
2704
+ -webkit-appearance: none !important;
2705
+ appearance: none !important;
2706
+ }
2707
+ video::-webkit-media-controls-enclosure {
2708
+ display: none !important;
2709
+ }
2710
+ video::-webkit-media-controls-start-playback-button {
2711
+ display: none !important;
2712
+ }
2713
+ video[controls]::-webkit-media-controls,
2714
+ video[controls]::-webkit-media-controls-panel,
2715
+ video[controls]::-webkit-media-controls-play-button,
2716
+ video[controls]::-webkit-media-controls-timeline,
2717
+ video[controls]::-webkit-media-controls-current-time-display,
2718
+ video[controls]::-webkit-media-controls-time-remaining-display,
2719
+ video[controls]::-webkit-media-controls-mute-button,
2720
+ video[controls]::-webkit-media-controls-volume-slider,
2721
+ video[controls]::-webkit-media-controls-fullscreen-button,
2722
+ video[controls]::-webkit-media-controls-overlay-play-button,
2723
+ video[controls]::-webkit-media-controls-enclosure,
2724
+ video[controls]::-webkit-media-controls-start-playback-button {
2725
+ display: none !important;
2726
+ visibility: hidden !important;
2727
+ opacity: 0 !important;
2728
+ pointer-events: none !important;
2729
+ }
2730
+ video[controls]::-moz-media-controls {
2731
+ display: none !important;
2732
+ visibility: hidden !important;
2733
+ opacity: 0 !important;
2734
+ }
2735
+ .motto-video-container {
2736
+ position: relative;
2737
+ width: 100%;
2738
+ min-height: 300px;
2739
+ }
2740
+ @supports (aspect-ratio: 16/9) {
2741
+ .motto-video-container {
2742
+ min-height: auto;
2743
+ }
2744
+ }
2745
+ .motto-video-responsive {
2746
+ position: absolute;
2747
+ top: calc(var(--spacing) * 0);
2748
+ left: calc(var(--spacing) * 0);
2749
+ height: 100%;
2750
+ width: 100%;
2751
+ }
2752
+ .motto-skip-button {
2753
+ position: absolute;
2754
+ top: calc(1/2 * 100%);
2755
+ z-index: 10;
2756
+ display: flex;
2757
+ height: calc(var(--spacing) * 16);
2758
+ width: calc(var(--spacing) * 16);
2759
+ --tw-translate-y: calc(calc(1/2 * 100%) * -1);
2760
+ translate: var(--tw-translate-x) var(--tw-translate-y);
2761
+ cursor: pointer;
2762
+ align-items: center;
2763
+ justify-content: center;
2764
+ border-radius: calc(infinity * 1px);
2765
+ border-style: var(--tw-border-style);
2766
+ border-width: 0px;
2767
+ background-color: color-mix(in srgb, #000 70%, transparent);
2768
+ @supports (color: color-mix(in lab, red, red)) {
2769
+ background-color: color-mix(in oklab, var(--color-black) 70%, transparent);
2770
+ }
2771
+ font-size: var(--text-2xl);
2772
+ line-height: var(--tw-leading, var(--text-2xl--line-height));
2773
+ color: var(--color-white);
2774
+ opacity: 80%;
2775
+ transition-property: all;
2776
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
2777
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
2778
+ --tw-duration: 200ms;
2779
+ transition-duration: 200ms;
2780
+ &:hover {
2781
+ @media (hover: hover) {
2782
+ --tw-scale-x: 110%;
2783
+ --tw-scale-y: 110%;
2784
+ --tw-scale-z: 110%;
2785
+ scale: var(--tw-scale-x) var(--tw-scale-y);
869
2786
  }
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);
2787
+ }
2788
+ &:hover {
2789
+ @media (hover: hover) {
2790
+ opacity: 100%;
879
2791
  }
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
2792
  }
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);
2793
+ &:active {
2794
+ --tw-scale-x: 95%;
2795
+ --tw-scale-y: 95%;
2796
+ --tw-scale-z: 95%;
2797
+ scale: var(--tw-scale-x) var(--tw-scale-y);
907
2798
  }
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
- };
2799
+ }
2800
+ .motto-skip-button-back {
2801
+ left: calc(var(--spacing) * 5);
2802
+ }
2803
+ .motto-skip-button-forward {
2804
+ right: calc(var(--spacing) * 5);
2805
+ }
1047
2806
  }
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
- ]
2807
+ .shaka-seek-bar-container {
2808
+ height: 6px !important;
2809
+ width: 100% !important;
2810
+ margin: 8px 0 !important;
2811
+ border-radius: 4px !important;
2812
+ position: relative !important;
2813
+ border-top: none !important;
2814
+ border-bottom: none !important;
2815
+ box-shadow: none !important;
2816
+ }
2817
+ .shaka-seek-bar {
2818
+ height: 6px !important;
2819
+ width: 100% !important;
2820
+ -webkit-appearance: none !important;
2821
+ appearance: none !important;
2822
+ background: transparent !important;
2823
+ cursor: pointer !important;
2824
+ border: none !important;
2825
+ outline: none !important;
2826
+ position: absolute !important;
2827
+ top: 0 !important;
2828
+ left: 0 !important;
2829
+ border-radius: 4px !important;
2830
+ }
2831
+ .shaka-seek-bar::-webkit-slider-runnable-track {
2832
+ height: 6px !important;
2833
+ background: transparent !important;
2834
+ border-radius: 4px !important;
2835
+ border: none !important;
2836
+ }
2837
+ .shaka-seek-bar::-moz-range-track {
2838
+ height: 6px !important;
2839
+ background: transparent !important;
2840
+ border-radius: 4px !important;
2841
+ border: none !important;
2842
+ }
2843
+ .shaka-seek-bar::-webkit-slider-thumb {
2844
+ -webkit-appearance: none !important;
2845
+ appearance: none !important;
2846
+ width: 16px !important;
2847
+ height: 16px !important;
2848
+ border-radius: 50% !important;
2849
+ background: #ffffff !important;
2850
+ cursor: pointer !important;
2851
+ border: 2px solid #ffffff !important;
2852
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3) !important;
2853
+ margin-top: -4px !important;
2854
+ }
2855
+ .shaka-seek-bar::-moz-range-thumb {
2856
+ width: 16px !important;
2857
+ height: 16px !important;
2858
+ border-radius: 50% !important;
2859
+ background: #ffffff !important;
2860
+ cursor: pointer !important;
2861
+ border: 2px solid #ffffff !important;
2862
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3) !important;
2863
+ margin-top: -4px !important;
2864
+ }
2865
+ .motto-skip-back-button,
2866
+ .motto-skip-forward-button,
2867
+ .motto-native-skip-button {
2868
+ background: transparent !important;
2869
+ border: none !important;
2870
+ padding: 4px !important;
2871
+ margin: 0px !important;
2872
+ cursor: pointer !important;
2873
+ color: #ffffff !important;
2874
+ transition: all 0.2s ease !important;
2875
+ min-width: 32px !important;
2876
+ height: 32px !important;
2877
+ display: flex !important;
2878
+ align-items: center !important;
2879
+ justify-content: center !important;
2880
+ border-radius: 4px !important;
2881
+ width: 25px;
2882
+ }
2883
+ .motto-skip-back-button:hover,
2884
+ .motto-skip-forward-button:hover,
2885
+ .motto-native-skip-button:hover {
2886
+ opacity: 0.8 !important;
2887
+ background: transparent !important;
2888
+ transform: scale(1.05) !important;
2889
+ }
2890
+ .motto-skip-back-button:active,
2891
+ .motto-skip-forward-button:active,
2892
+ .motto-native-skip-button:active {
2893
+ transform: scale(0.95) !important;
2894
+ }
2895
+ .motto-skip-back-button svg,
2896
+ .motto-skip-forward-button svg,
2897
+ .motto-native-skip-button svg {
2898
+ width: 24px !important;
2899
+ height: 24px !important;
2900
+ }
2901
+ .shaka-spinner-svg {
2902
+ color: white !important;
2903
+ fill: white !important;
2904
+ }
2905
+ .shaka-spinner-path {
2906
+ stroke: white !important;
2907
+ fill: none !important;
2908
+ }
2909
+ .shaka-spinner-container {
2910
+ color: white !important;
2911
+ }
2912
+ .shaka-buffering-spinner {
2913
+ color: white !important;
2914
+ fill: white !important;
2915
+ }
2916
+ .shaka-buffering-spinner svg {
2917
+ color: white !important;
2918
+ fill: white !important;
2919
+ }
2920
+ .shaka-buffering-spinner path {
2921
+ stroke: white !important;
2922
+ fill: none !important;
2923
+ }
2924
+ [data-shaka-player-container] .shaka-spinner,
2925
+ [data-shaka-player-container] .spinner {
2926
+ color: white !important;
2927
+ border-color: white !important;
2928
+ }
2929
+ .material-icons.shaka-spinner {
2930
+ color: white !important;
2931
+ }
2932
+ .shaka-controls-container .shaka-spinner,
2933
+ .shaka-video-container .shaka-spinner {
2934
+ color: white !important;
2935
+ fill: white !important;
2936
+ }
2937
+ .shaka-controls-container .shaka-spinner svg,
2938
+ .shaka-video-container .shaka-spinner svg {
2939
+ color: white !important;
2940
+ fill: white !important;
2941
+ }
2942
+ .shaka-controls-container .shaka-spinner path,
2943
+ .shaka-video-container .shaka-spinner path {
2944
+ stroke: white !important;
2945
+ }
2946
+ .motto-video-loading-overlay {
2947
+ position: absolute;
2948
+ top: 0;
2949
+ left: 0;
2950
+ width: 100%;
2951
+ height: 100%;
2952
+ background:
2953
+ linear-gradient(
2954
+ 135deg,
2955
+ #1a1a1a 0%,
2956
+ #2d2d2d 100%);
2957
+ display: flex;
2958
+ flex-direction: column;
2959
+ align-items: center;
2960
+ justify-content: center;
2961
+ z-index: 10;
2962
+ transition: opacity 0.3s ease;
2963
+ }
2964
+ .motto-video-loading-overlay.hidden {
2965
+ opacity: 0;
2966
+ pointer-events: none;
2967
+ }
2968
+ .motto-video-loading-content {
2969
+ text-align: center;
2970
+ color: white;
2971
+ }
2972
+ .motto-video-loading-icon {
2973
+ width: 64px;
2974
+ height: 64px;
2975
+ margin-bottom: 16px;
2976
+ opacity: 0.7;
2977
+ }
2978
+ .motto-video-loading-text {
2979
+ font-size: 16px;
2980
+ font-weight: 500;
2981
+ margin-bottom: 8px;
2982
+ }
2983
+ .motto-video-loading-subtext {
2984
+ font-size: 14px;
2985
+ opacity: 0.7;
2986
+ }
2987
+ @keyframes pulse-live {
2988
+ 0% {
2989
+ opacity: 1;
2990
+ transform: scale(1);
1064
2991
  }
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
- ] })
2992
+ 50% {
2993
+ opacity: 0.7;
2994
+ transform: scale(1.1);
2995
+ }
2996
+ 100% {
2997
+ opacity: 1;
2998
+ transform: scale(1);
2999
+ }
3000
+ }
3001
+ .shaka-play-button {
3002
+ background: rgba(255, 255, 255, 0.1) !important;
3003
+ border: none !important;
3004
+ color: white !important;
3005
+ padding: 10px !important;
3006
+ border-radius: 100% !important;
3007
+ transition: all 0.2s ease !important;
3008
+ display: flex !important;
3009
+ align-items: center !important;
3010
+ justify-content: center !important;
3011
+ min-width: 55px !important;
3012
+ height: 55px !important;
3013
+ }
3014
+ .shaka-play-button-container {
3015
+ background: transparent;
3016
+ transition: all 0.2s ease !important;
3017
+ }
3018
+ .motto-video-container:not(.no-cursor) .shaka-play-button-container {
3019
+ background: rgba(0, 0, 0, 0.3);
3020
+ transition: all 0.s ease !important;
3021
+ }
3022
+ .shaka-play-button:hover {
3023
+ background: rgba(255, 255, 255, 0.2) !important;
3024
+ transform: scale(1.05) !important;
3025
+ }
3026
+ .shaka-play-button:active {
3027
+ transform: scale(0.95) !important;
3028
+ }
3029
+ .shaka-play-button > * {
3030
+ display: none !important;
3031
+ }
3032
+ .shaka-play-button::after {
3033
+ content: "" !important;
3034
+ width: 35px !important;
3035
+ height: 35px !important;
3036
+ 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;
3037
+ background-repeat: no-repeat !important;
3038
+ background-size: contain !important;
3039
+ background-position: center !important;
3040
+ display: block !important;
3041
+ }
3042
+ .shaka-play-button[aria-label*=Play]::after {
3043
+ 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;
3044
+ }
3045
+ .shaka-play-button[aria-label*=Pause]::after {
3046
+ 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;
3047
+ }
3048
+ .motto-video-container {
3049
+ background: black;
3050
+ }
3051
+ .motto-video-container video {
3052
+ width: 100% !important;
3053
+ height: 100% !important;
3054
+ margin-left: auto !important;
3055
+ margin-right: auto !important;
3056
+ }
3057
+ @property --tw-gradient-position { syntax: "*"; inherits: false; }
3058
+ @property --tw-gradient-from { syntax: "<color>"; inherits: false; initial-value: #0000; }
3059
+ @property --tw-gradient-via { syntax: "<color>"; inherits: false; initial-value: #0000; }
3060
+ @property --tw-gradient-to { syntax: "<color>"; inherits: false; initial-value: #0000; }
3061
+ @property --tw-gradient-stops { syntax: "*"; inherits: false; }
3062
+ @property --tw-gradient-via-stops { syntax: "*"; inherits: false; }
3063
+ @property --tw-gradient-from-position { syntax: "<length-percentage>"; inherits: false; initial-value: 0%; }
3064
+ @property --tw-gradient-via-position { syntax: "<length-percentage>"; inherits: false; initial-value: 50%; }
3065
+ @property --tw-gradient-to-position { syntax: "<length-percentage>"; inherits: false; initial-value: 100%; }
3066
+ @property --tw-font-weight { syntax: "*"; inherits: false; }
3067
+ @property --tw-tracking { syntax: "*"; inherits: false; }
3068
+ @property --tw-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
3069
+ @property --tw-shadow-color { syntax: "*"; inherits: false; }
3070
+ @property --tw-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }
3071
+ @property --tw-inset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
3072
+ @property --tw-inset-shadow-color { syntax: "*"; inherits: false; }
3073
+ @property --tw-inset-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }
3074
+ @property --tw-ring-color { syntax: "*"; inherits: false; }
3075
+ @property --tw-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
3076
+ @property --tw-inset-ring-color { syntax: "*"; inherits: false; }
3077
+ @property --tw-inset-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
3078
+ @property --tw-ring-inset { syntax: "*"; inherits: false; }
3079
+ @property --tw-ring-offset-width { syntax: "<length>"; inherits: false; initial-value: 0px; }
3080
+ @property --tw-ring-offset-color { syntax: "*"; inherits: false; initial-value: #fff; }
3081
+ @property --tw-ring-offset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
3082
+ @property --tw-blur { syntax: "*"; inherits: false; }
3083
+ @property --tw-brightness { syntax: "*"; inherits: false; }
3084
+ @property --tw-contrast { syntax: "*"; inherits: false; }
3085
+ @property --tw-grayscale { syntax: "*"; inherits: false; }
3086
+ @property --tw-hue-rotate { syntax: "*"; inherits: false; }
3087
+ @property --tw-invert { syntax: "*"; inherits: false; }
3088
+ @property --tw-opacity { syntax: "*"; inherits: false; }
3089
+ @property --tw-saturate { syntax: "*"; inherits: false; }
3090
+ @property --tw-sepia { syntax: "*"; inherits: false; }
3091
+ @property --tw-drop-shadow { syntax: "*"; inherits: false; }
3092
+ @property --tw-drop-shadow-color { syntax: "*"; inherits: false; }
3093
+ @property --tw-drop-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }
3094
+ @property --tw-drop-shadow-size { syntax: "*"; inherits: false; }
3095
+ @property --tw-translate-x { syntax: "*"; inherits: false; initial-value: 0; }
3096
+ @property --tw-translate-y { syntax: "*"; inherits: false; initial-value: 0; }
3097
+ @property --tw-translate-z { syntax: "*"; inherits: false; initial-value: 0; }
3098
+ @property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; }
3099
+ @property --tw-duration { syntax: "*"; inherits: false; }
3100
+ @property --tw-scale-x { syntax: "*"; inherits: false; initial-value: 1; }
3101
+ @property --tw-scale-y { syntax: "*"; inherits: false; initial-value: 1; }
3102
+ @property --tw-scale-z { syntax: "*"; inherits: false; initial-value: 1; }
3103
+ @keyframes spin {
3104
+ to {
3105
+ transform: rotate(360deg);
3106
+ }
3107
+ }
3108
+ @keyframes pulse {
3109
+ 50% {
3110
+ opacity: 0.5;
3111
+ }
3112
+ }
3113
+ @layer properties {
3114
+ @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
3115
+ *,
3116
+ ::before,
3117
+ ::after,
3118
+ ::backdrop {
3119
+ --tw-gradient-position: initial;
3120
+ --tw-gradient-from: #0000;
3121
+ --tw-gradient-via: #0000;
3122
+ --tw-gradient-to: #0000;
3123
+ --tw-gradient-stops: initial;
3124
+ --tw-gradient-via-stops: initial;
3125
+ --tw-gradient-from-position: 0%;
3126
+ --tw-gradient-via-position: 50%;
3127
+ --tw-gradient-to-position: 100%;
3128
+ --tw-font-weight: initial;
3129
+ --tw-tracking: initial;
3130
+ --tw-shadow: 0 0 #0000;
3131
+ --tw-shadow-color: initial;
3132
+ --tw-shadow-alpha: 100%;
3133
+ --tw-inset-shadow: 0 0 #0000;
3134
+ --tw-inset-shadow-color: initial;
3135
+ --tw-inset-shadow-alpha: 100%;
3136
+ --tw-ring-color: initial;
3137
+ --tw-ring-shadow: 0 0 #0000;
3138
+ --tw-inset-ring-color: initial;
3139
+ --tw-inset-ring-shadow: 0 0 #0000;
3140
+ --tw-ring-inset: initial;
3141
+ --tw-ring-offset-width: 0px;
3142
+ --tw-ring-offset-color: #fff;
3143
+ --tw-ring-offset-shadow: 0 0 #0000;
3144
+ --tw-blur: initial;
3145
+ --tw-brightness: initial;
3146
+ --tw-contrast: initial;
3147
+ --tw-grayscale: initial;
3148
+ --tw-hue-rotate: initial;
3149
+ --tw-invert: initial;
3150
+ --tw-opacity: initial;
3151
+ --tw-saturate: initial;
3152
+ --tw-sepia: initial;
3153
+ --tw-drop-shadow: initial;
3154
+ --tw-drop-shadow-color: initial;
3155
+ --tw-drop-shadow-alpha: 100%;
3156
+ --tw-drop-shadow-size: initial;
3157
+ --tw-translate-x: 0;
3158
+ --tw-translate-y: 0;
3159
+ --tw-translate-z: 0;
3160
+ --tw-border-style: solid;
3161
+ --tw-duration: initial;
3162
+ --tw-scale-x: 1;
3163
+ --tw-scale-y: 1;
3164
+ --tw-scale-z: 1;
1137
3165
  }
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');
3166
+ }
3167
+ }
3168
+ `);
1143
3169
 
1144
3170
  // src/Player.tsx
1145
3171
  import { twMerge as twMerge2 } from "tailwind-merge";
1146
- import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
3172
+ import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
1147
3173
  var Player = forwardRef(
1148
3174
  ({
1149
3175
  src,
@@ -1162,10 +3188,11 @@ var Player = forwardRef(
1162
3188
  chromecastConfig,
1163
3189
  qualityConfig,
1164
3190
  seekbarConfig,
3191
+ iconSizes,
1165
3192
  events,
1166
3193
  containerClassName,
1167
- streamStartDate,
1168
- ...props
3194
+ playerName,
3195
+ ...videoProps
1169
3196
  }, ref) => {
1170
3197
  const videoRef = useRef8(null);
1171
3198
  const containerRef = useRef8(null);
@@ -1190,12 +3217,17 @@ var Player = forwardRef(
1190
3217
  skipDuration,
1191
3218
  shouldShowSkipControls
1192
3219
  } = useSkipControls(videoRef, events?.onSkipBack, events?.onSkipForward);
3220
+ useKeyboardControls(videoRef, {
3221
+ skipBack,
3222
+ skipForward,
3223
+ enabled: true
3224
+ });
1193
3225
  const {
1194
3226
  initializeMux,
1195
3227
  updateMuxData,
1196
3228
  handleMuxError,
1197
3229
  destroyMux
1198
- } = useMuxAnalytics(playerRef, muxConfig, events?.onMuxReady, events?.onMuxDataUpdate);
3230
+ } = useMuxAnalytics(playerRef, muxConfig, events?.onMuxReady, events?.onMuxDataUpdate, playerName);
1199
3231
  const { setupEventListeners, cleanupEventListeners } = useEventHandlers(videoRef, {
1200
3232
  onPlay: events?.onPlay,
1201
3233
  onPause: events?.onPause,
@@ -1211,24 +3243,22 @@ var Player = forwardRef(
1211
3243
  chromecastConfig,
1212
3244
  seekbarConfig,
1213
3245
  events?.onSkipBack,
1214
- events?.onSkipForward
3246
+ events?.onSkipForward,
3247
+ iconSizes
1215
3248
  );
1216
3249
  const { isLive, isVisible: isLiveBadgeVisible } = useLiveBadge(playerRef, {
1217
3250
  enabled: true,
3251
+ liveThresholdSeconds: 15,
1218
3252
  onLiveStateChange: (isLive2) => {
1219
3253
  events?.onLiveStateChange?.(isLive2);
1220
3254
  }
1221
3255
  });
1222
- useLiveIndicator(containerRef, {
3256
+ useLiveIndicator(containerRef, playerRef, {
1223
3257
  enabled: true,
1224
3258
  indicatorColor: "#ff0000",
1225
3259
  indicatorSize: 8,
1226
- showPulseAnimation: true
1227
- });
1228
- const { detectedStreamStart, effectiveStreamStart } = useShakaAbsoluteTime({
1229
- player: playerRef.current,
1230
- controls: uiRef.current,
1231
- manualStreamStartDate: streamStartDate
3260
+ showPulseAnimation: true,
3261
+ liveThresholdSeconds: 15
1232
3262
  });
1233
3263
  const initializeAds = () => {
1234
3264
  if (!imaConfig || !playerRef.current || !videoRef.current) return;
@@ -1295,21 +3325,7 @@ var Player = forwardRef(
1295
3325
  destroyMux();
1296
3326
  destroyPlayer();
1297
3327
  };
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
- ]);
3328
+ }, [src]);
1313
3329
  useEffect5(() => {
1314
3330
  const video = videoRef.current;
1315
3331
  if (!video) return;
@@ -1319,6 +3335,30 @@ var Player = forwardRef(
1319
3335
  video.controls = false;
1320
3336
  if (poster) video.poster = poster;
1321
3337
  }, [autoPlay, loop, muted, poster]);
3338
+ useEffect5(() => {
3339
+ const video = videoRef.current;
3340
+ if (!video) return;
3341
+ video.controls = false;
3342
+ video.setAttribute("controls", "false");
3343
+ video.removeAttribute("controls");
3344
+ const observer = new MutationObserver((mutations) => {
3345
+ mutations.forEach((mutation) => {
3346
+ if (mutation.type === "attributes" && mutation.attributeName === "controls") {
3347
+ if (video.hasAttribute("controls")) {
3348
+ video.removeAttribute("controls");
3349
+ video.controls = false;
3350
+ }
3351
+ }
3352
+ });
3353
+ });
3354
+ observer.observe(video, {
3355
+ attributes: true,
3356
+ attributeFilter: ["controls"]
3357
+ });
3358
+ return () => {
3359
+ observer.disconnect();
3360
+ };
3361
+ }, []);
1322
3362
  useImperativeHandle(ref, () => ({
1323
3363
  ...videoRef.current,
1324
3364
  // Custom methods for quality control
@@ -1334,13 +3374,15 @@ var Player = forwardRef(
1334
3374
  getMuxMonitor: () => null
1335
3375
  }), [getAvailableQualities, setQuality, skipBack, skipForward, updateMuxData]);
1336
3376
  const isResponsive = !width && !height;
1337
- const containerClasses = twMerge2(containerClassName, "motto-video-container");
3377
+ const containerClasses = twMerge2(containerClassName, "motto-video-container bg-black");
1338
3378
  const containerStyle = isResponsive ? {
1339
3379
  aspectRatio: aspectRatio.toString()
1340
3380
  } : { width, height };
1341
- const videoClasses = isResponsive ? "motto-video-responsive" : "w-full h-full ";
3381
+ const videoClasses = isResponsive ? "motto-video-responsive w-full" : "w-full h-full ";
1342
3382
  const videoStyle = isResponsive ? {} : { width, height };
1343
- return /* @__PURE__ */ jsxs4(
3383
+ const filteredVideoProps = { ...videoProps };
3384
+ delete filteredVideoProps.controls;
3385
+ return /* @__PURE__ */ jsxs6(
1344
3386
  "div",
1345
3387
  {
1346
3388
  ref: containerRef,
@@ -1349,7 +3391,7 @@ var Player = forwardRef(
1349
3391
  "data-shaka-player-container": true,
1350
3392
  "data-shaka-player-cast-receiver-id": chromecastConfig?.receiverApplicationId,
1351
3393
  children: [
1352
- /* @__PURE__ */ jsx5(
3394
+ /* @__PURE__ */ jsx8(
1353
3395
  "video",
1354
3396
  {
1355
3397
  ref: videoRef,
@@ -1358,11 +3400,12 @@ var Player = forwardRef(
1358
3400
  height: isResponsive ? void 0 : height,
1359
3401
  style: videoStyle,
1360
3402
  controls: false,
1361
- ...props
3403
+ playsInline: true,
3404
+ ...filteredVideoProps
1362
3405
  }
1363
3406
  ),
1364
- /* @__PURE__ */ jsx5(LiveBadge, { isVisible: isLiveBadgeVisible }),
1365
- imaConfig && /* @__PURE__ */ jsx5(
3407
+ /* @__PURE__ */ jsx8(LiveBadge, { isVisible: isLiveBadgeVisible }),
3408
+ imaConfig && /* @__PURE__ */ jsx8(
1366
3409
  "div",
1367
3410
  {
1368
3411
  ref: adContainerRef,
@@ -1518,7 +3561,7 @@ var getErrorType = (error, video) => {
1518
3561
  };
1519
3562
 
1520
3563
  // src/messages/useMessages.tsx
1521
- import { useState as useState4, useEffect as useEffect6 } from "react";
3564
+ import { useState as useState3, useEffect as useEffect6 } from "react";
1522
3565
 
1523
3566
  // src/messages/en.json
1524
3567
  var en_default = {
@@ -1816,15 +3859,12 @@ var availableLanguages = {
1816
3859
  fa: fa_default
1817
3860
  };
1818
3861
  var getBrowserLanguage = () => {
1819
- if (typeof window === "undefined" || typeof navigator === "undefined") {
1820
- return "en";
1821
- }
1822
3862
  const language = navigator.language.split("-")[0];
1823
3863
  return availableLanguages[language] ? language : "en";
1824
3864
  };
1825
3865
  var useMessages = (locale) => {
1826
- const [language, setLanguage] = useState4("en");
1827
- const [translations, setTranslations] = useState4(availableLanguages.en);
3866
+ const [language, setLanguage] = useState3("en");
3867
+ const [translations, setTranslations] = useState3(availableLanguages.en);
1828
3868
  useEffect6(() => {
1829
3869
  const lang = !!availableLanguages?.[locale] ? locale : getBrowserLanguage();
1830
3870
  ;
@@ -1851,7 +3891,7 @@ var useMessages = (locale) => {
1851
3891
  var useMessages_default = useMessages;
1852
3892
 
1853
3893
  // src/Video.tsx
1854
- import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
3894
+ import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
1855
3895
  var Video = ({
1856
3896
  videoId,
1857
3897
  publicKey,
@@ -1893,7 +3933,7 @@ var Video = ({
1893
3933
  }
1894
3934
  }, [video, events]);
1895
3935
  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, {}) }) });
3936
+ 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
3937
  }
1898
3938
  if (!isLoading && video && !hlsUrl && events?.onEmptyPlaylists) {
1899
3939
  events.onEmptyPlaylists();
@@ -1906,8 +3946,8 @@ var Video = ({
1906
3946
  }
1907
3947
  const title = t(errorKey) || t("DEFAULT_ERROR");
1908
3948
  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(
3949
+ 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: [
3950
+ /* @__PURE__ */ jsx9(
1911
3951
  ErrorScreen,
1912
3952
  {
1913
3953
  title,
@@ -1918,13 +3958,13 @@ var Video = ({
1918
3958
  ] }) });
1919
3959
  }
1920
3960
  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 || "" }),
3961
+ 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: [
3962
+ /* @__PURE__ */ jsx9(Title, { title: video?.name || "" }),
1923
3963
  children
1924
3964
  ] }) });
1925
3965
  }
1926
3966
  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(
3967
+ 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
3968
  Player,
1929
3969
  {
1930
3970
  ...props,
@@ -1938,10 +3978,10 @@ var Video = ({
1938
3978
  };
1939
3979
 
1940
3980
  // src/Event.tsx
1941
- import { useCallback as useCallback7, useEffect as useEffect8, useState as useState5 } from "react";
3981
+ import { useCallback as useCallback8, useEffect as useEffect8, useState as useState4 } from "react";
1942
3982
  import { twMerge as twMerge4 } from "tailwind-merge";
1943
3983
  import { useQuery as useQuery2 } from "@tanstack/react-query";
1944
- import { Fragment, jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
3984
+ import { Fragment, jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
1945
3985
  var Event = ({
1946
3986
  publicKey,
1947
3987
  eventId,
@@ -1971,8 +4011,8 @@ var Event = ({
1971
4011
  retry: queryOptions.retry ?? 3,
1972
4012
  retryDelay: queryOptions.retryDelay ?? ((attemptIndex) => Math.min(1e3 * 2 ** attemptIndex, 3e4))
1973
4013
  });
1974
- const [activePlaylist, setActivePlaylist] = useState5();
1975
- const [activeVideoId, setActiveVideoId] = useState5();
4014
+ const [activePlaylist, setActivePlaylist] = useState4();
4015
+ const [activeVideoId, setActiveVideoId] = useState4();
1976
4016
  const videoIds = eventData?.videoIds ?? [];
1977
4017
  const {
1978
4018
  data: videosData,
@@ -1988,7 +4028,7 @@ var Event = ({
1988
4028
  retry: queryOptions.retry ?? 3,
1989
4029
  retryDelay: queryOptions.retryDelay ?? ((attemptIndex) => Math.min(1e3 * 2 ** attemptIndex, 3e4))
1990
4030
  });
1991
- const [loadingApisState, setLoadingApisState] = useState5(true);
4031
+ const [loadingApisState, setLoadingApisState] = useState4(true);
1992
4032
  useEffect8(() => {
1993
4033
  if (videosData !== void 0) {
1994
4034
  setLoadingApisState(false);
@@ -2034,8 +4074,8 @@ var Event = ({
2034
4074
  }
2035
4075
  }
2036
4076
  }, [activeVideoId, videosData, events]);
2037
- const [error, setError] = useState5(null);
2038
- const [loadingPlaylist, setLoadingPlaylist] = useState5(true);
4077
+ const [error, setError] = useState4(null);
4078
+ const [loadingPlaylist, setLoadingPlaylist] = useState4(true);
2039
4079
  const videosDataError = videosData?.some((video) => !!video.error);
2040
4080
  useEffect8(() => {
2041
4081
  if (eventError || videosError || videosDataError) {
@@ -2058,7 +4098,7 @@ var Event = ({
2058
4098
  if (error) {
2059
4099
  const title = t(error.message)?.length ? t(error.message) : t("DEFAULT_ERROR");
2060
4100
  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(
4101
+ 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
4102
  ErrorScreen,
2063
4103
  {
2064
4104
  title,
@@ -2070,12 +4110,12 @@ var Event = ({
2070
4110
  events.onEmptyPlaylists();
2071
4111
  }
2072
4112
  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, {}) }) });
4113
+ 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
4114
  }
2075
4115
  if (activePlaylist && activeVideoId && videosData) {
2076
4116
  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(
4117
+ return /* @__PURE__ */ jsxs8("div", { className: twMerge4("md:rounded-2xl overflow-hidden aspect-video", className), children: [
4118
+ /* @__PURE__ */ jsx10("div", { className: "relative w-full h-full", children: /* @__PURE__ */ jsx10(
2079
4119
  Player,
2080
4120
  {
2081
4121
  ...props,
@@ -2084,8 +4124,8 @@ var Event = ({
2084
4124
  events,
2085
4125
  containerClassName: "w-full h-full"
2086
4126
  }
2087
- ),
2088
- !hideTitle && eventData && /* @__PURE__ */ jsx7(
4127
+ ) }),
4128
+ !hideTitle && eventData && /* @__PURE__ */ jsx10(
2089
4129
  TitleAndDescription,
2090
4130
  {
2091
4131
  title: eventData.title,
@@ -2094,10 +4134,10 @@ var Event = ({
2094
4134
  locale
2095
4135
  }
2096
4136
  )
2097
- ] }) });
4137
+ ] });
2098
4138
  }
2099
4139
  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(
4140
+ 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
4141
  PreEvent,
2102
4142
  {
2103
4143
  event: eventData,
@@ -2119,7 +4159,7 @@ function PreEvent({
2119
4159
  }) {
2120
4160
  const date = new Date(event.startTime);
2121
4161
  const now = /* @__PURE__ */ new Date();
2122
- const [remainingTime, setRemainingTime] = useState5(
4162
+ const [remainingTime, setRemainingTime] = useState4(
2123
4163
  date.getTime() - now.getTime()
2124
4164
  );
2125
4165
  const shouldBeStarted = remainingTime < 0;
@@ -2134,17 +4174,17 @@ function PreEvent({
2134
4174
  }, 1e3);
2135
4175
  return () => clearInterval(interval);
2136
4176
  }, [date, remainingTime]);
2137
- const renderCountdown = useCallback7(() => {
4177
+ const renderCountdown = useCallback8(() => {
2138
4178
  if (shouldBeStarted) {
2139
- return /* @__PURE__ */ jsx7("span", { className: "text-base-content text-xl", children: t("EVENT_NOT_STARTED") });
4179
+ return /* @__PURE__ */ jsx10("span", { className: "text-base-content text-xl", children: t("EVENT_NOT_STARTED") });
2140
4180
  }
2141
4181
  const seconds = Math.floor(remainingTime / 1e3) % 60;
2142
4182
  const minutes = Math.floor(remainingTime / 1e3 / 60) % 60;
2143
4183
  const hours = Math.floor(remainingTime / 1e3 / 60 / 60) % 24;
2144
4184
  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(
4185
+ return /* @__PURE__ */ jsxs8("div", { className: "grid grid-flow-col gap-5 text-center auto-cols-max", children: [
4186
+ /* @__PURE__ */ jsxs8("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4187
+ /* @__PURE__ */ jsx10("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx10(
2148
4188
  "span",
2149
4189
  {
2150
4190
  style: { "--value": days },
@@ -2153,10 +4193,10 @@ function PreEvent({
2153
4193
  children: days?.toString()?.padStart(2, "0")
2154
4194
  }
2155
4195
  ) }),
2156
- /* @__PURE__ */ jsx7("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("DAYS") })
4196
+ /* @__PURE__ */ jsx10("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("DAYS") })
2157
4197
  ] }),
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(
4198
+ /* @__PURE__ */ jsxs8("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4199
+ /* @__PURE__ */ jsx10("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx10(
2160
4200
  "span",
2161
4201
  {
2162
4202
  style: { "--value": hours },
@@ -2165,10 +4205,10 @@ function PreEvent({
2165
4205
  children: hours?.toString()?.padStart(2, "0")
2166
4206
  }
2167
4207
  ) }),
2168
- /* @__PURE__ */ jsx7("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("HOURS") })
4208
+ /* @__PURE__ */ jsx10("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("HOURS") })
2169
4209
  ] }),
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(
4210
+ /* @__PURE__ */ jsxs8("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4211
+ /* @__PURE__ */ jsx10("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx10(
2172
4212
  "span",
2173
4213
  {
2174
4214
  style: { "--value": minutes },
@@ -2177,10 +4217,10 @@ function PreEvent({
2177
4217
  children: minutes?.toString()?.padStart(2, "0")
2178
4218
  }
2179
4219
  ) }),
2180
- /* @__PURE__ */ jsx7("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("MINUTES") })
4220
+ /* @__PURE__ */ jsx10("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("MINUTES") })
2181
4221
  ] }),
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(
4222
+ /* @__PURE__ */ jsxs8("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4223
+ /* @__PURE__ */ jsx10("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx10(
2184
4224
  "span",
2185
4225
  {
2186
4226
  style: { "--value": seconds },
@@ -2189,12 +4229,12 @@ function PreEvent({
2189
4229
  children: seconds?.toString()?.padStart(2, "0")
2190
4230
  }
2191
4231
  ) }),
2192
- /* @__PURE__ */ jsx7("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("SECONDS") })
4232
+ /* @__PURE__ */ jsx10("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("SECONDS") })
2193
4233
  ] })
2194
4234
  ] });
2195
4235
  }, [remainingTime, shouldBeStarted, t]);
2196
- return /* @__PURE__ */ jsx7(Fragment, { children: event?.posterUrl ? /* @__PURE__ */ jsxs6(Fragment, { children: [
2197
- /* @__PURE__ */ jsxs6(
4236
+ return /* @__PURE__ */ jsx10(Fragment, { children: event?.posterUrl ? /* @__PURE__ */ jsxs8(Fragment, { children: [
4237
+ /* @__PURE__ */ jsx10(
2198
4238
  "div",
2199
4239
  {
2200
4240
  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 +4243,10 @@ function PreEvent({
2203
4243
  backgroundRepeat: "no-repeat",
2204
4244
  backgroundSize: "cover"
2205
4245
  },
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
- ]
4246
+ children: /* @__PURE__ */ jsx10("div", { className: "relative z-10", children: renderCountdown() })
2210
4247
  }
2211
4248
  ),
2212
- !hideTitle && /* @__PURE__ */ jsx7(
4249
+ !hideTitle && /* @__PURE__ */ jsx10(
2213
4250
  TitleAndDescription,
2214
4251
  {
2215
4252
  title: event.title,
@@ -2218,21 +4255,18 @@ function PreEvent({
2218
4255
  locale
2219
4256
  }
2220
4257
  )
2221
- ] }) : /* @__PURE__ */ jsxs6(Fragment, { children: [
2222
- /* @__PURE__ */ jsxs6(
4258
+ ] }) : /* @__PURE__ */ jsxs8(Fragment, { children: [
4259
+ /* @__PURE__ */ jsx10(
2223
4260
  "div",
2224
4261
  {
2225
4262
  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
4263
  style: {
2227
4264
  backgroundImage: backgroundImageUrl ? `url(${backgroundImageUrl})` : ""
2228
4265
  },
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
- ]
4266
+ children: /* @__PURE__ */ jsx10("div", { className: "relative z-10", children: renderCountdown() })
2233
4267
  }
2234
4268
  ),
2235
- !hideTitle && /* @__PURE__ */ jsx7(
4269
+ !hideTitle && /* @__PURE__ */ jsx10(
2236
4270
  TitleAndDescription,
2237
4271
  {
2238
4272
  title: event.title,
@@ -2250,9 +4284,9 @@ var TitleAndDescription = ({
2250
4284
  locale = "en",
2251
4285
  className
2252
4286
  }) => {
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: [
4287
+ return /* @__PURE__ */ jsxs8("div", { className: twMerge4("mt-3 mb-6 m-event-details-ctn px-4 text-left w-full", className), children: [
4288
+ /* @__PURE__ */ jsx10("div", { className: "text-base md:text-xl m-event-title text-base-content font-medium", children: title }),
4289
+ startTime ? /* @__PURE__ */ jsxs8("div", { className: "text-sm md:text-base text-base-content/70 m-event-start-time", children: [
2256
4290
  new Date(startTime || "").toLocaleDateString(locale || "default", {
2257
4291
  month: "long",
2258
4292
  year: "numeric",
@@ -2265,29 +4299,15 @@ var TitleAndDescription = ({
2265
4299
  minute: "2-digit"
2266
4300
  })
2267
4301
  ] }) : null,
2268
- description && /* @__PURE__ */ jsx7("div", { className: "text-xs md:text-sm text-base-content/60 uppercase", children: description })
4302
+ description && /* @__PURE__ */ jsx10("div", { className: "text-xs md:text-sm text-base-content/60 uppercase", children: description })
2269
4303
  ] });
2270
4304
  };
2271
4305
 
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
4306
  // src/CreativeWork.tsx
2287
- import { useEffect as useEffect10, useState as useState7 } from "react";
4307
+ import { useEffect as useEffect9, useState as useState5 } from "react";
2288
4308
  import { twMerge as twMerge5 } from "tailwind-merge";
2289
4309
  import { useQuery as useQuery3 } from "@tanstack/react-query";
2290
- import { Fragment as Fragment2, jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
4310
+ import { Fragment as Fragment2, jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
2291
4311
  var CreativeWork = ({
2292
4312
  publicKey,
2293
4313
  creativeWorkId,
@@ -2317,9 +4337,9 @@ var CreativeWork = ({
2317
4337
  retry: queryOptions.retry ?? 3,
2318
4338
  retryDelay: queryOptions.retryDelay ?? ((attemptIndex) => Math.min(1e3 * 2 ** attemptIndex, 3e4))
2319
4339
  });
2320
- const [activePlaylist, setActivePlaylist] = useState7();
2321
- const [activeVideoId, setActiveVideoId] = useState7();
2322
- const [showCountDown, setShowCountDown] = useState7(false);
4340
+ const [activePlaylist, setActivePlaylist] = useState5();
4341
+ const [activeVideoId, setActiveVideoId] = useState5();
4342
+ const [showCountDown, setShowCountDown] = useState5(false);
2323
4343
  const videoIds = creativeWorkData?.videoIds ?? [];
2324
4344
  const {
2325
4345
  data: videosData,
@@ -2335,8 +4355,8 @@ var CreativeWork = ({
2335
4355
  retry: queryOptions.retry ?? 3,
2336
4356
  retryDelay: queryOptions.retryDelay ?? ((attemptIndex) => Math.min(1e3 * 2 ** attemptIndex, 3e4))
2337
4357
  });
2338
- const [loadingApisState, setLoadingApisState] = useState7(true);
2339
- useEffect10(() => {
4358
+ const [loadingApisState, setLoadingApisState] = useState5(true);
4359
+ useEffect9(() => {
2340
4360
  if (videosData !== void 0) {
2341
4361
  setLoadingApisState(false);
2342
4362
  const videosWithPlaylists = videosData.filter(
@@ -2368,7 +4388,7 @@ var CreativeWork = ({
2368
4388
  }
2369
4389
  }, [videosData, creativeWorkData]);
2370
4390
  const { t } = useMessages_default(locale);
2371
- useEffect10(() => {
4391
+ useEffect9(() => {
2372
4392
  if (events?.onCreativeWorkData && creativeWorkData) {
2373
4393
  events.onCreativeWorkData(creativeWorkData);
2374
4394
  }
@@ -2376,7 +4396,7 @@ var CreativeWork = ({
2376
4396
  setShowCountDown(true);
2377
4397
  }
2378
4398
  }, [creativeWorkData, events]);
2379
- useEffect10(() => {
4399
+ useEffect9(() => {
2380
4400
  if (events?.onVideoData && activeVideoId && videosData) {
2381
4401
  const activeVideo = videosData.find((video) => video.id === activeVideoId);
2382
4402
  if (activeVideo) {
@@ -2384,9 +4404,9 @@ var CreativeWork = ({
2384
4404
  }
2385
4405
  }
2386
4406
  }, [activeVideoId, videosData, events]);
2387
- const [error, setError] = useState7(null);
4407
+ const [error, setError] = useState5(null);
2388
4408
  const videosDataError = videosData?.some((video) => !!video.error);
2389
- useEffect10(() => {
4409
+ useEffect9(() => {
2390
4410
  if (creativeWorkError || videosError || videosDataError) {
2391
4411
  const errorObj = creativeWorkError || videosError || videosData?.find((video) => !!video.error)?.error && new Error(videosData?.find((video) => !!video.error)?.error) || new Error("default");
2392
4412
  setError(errorObj);
@@ -2400,7 +4420,7 @@ var CreativeWork = ({
2400
4420
  if (error) {
2401
4421
  const title = t(error.message)?.length ? t(error.message) : t("DEFAULT_ERROR");
2402
4422
  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(
4423
+ 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
4424
  ErrorScreen,
2405
4425
  {
2406
4426
  title,
@@ -2408,8 +4428,8 @@ var CreativeWork = ({
2408
4428
  }
2409
4429
  ) }) });
2410
4430
  }
2411
- const [loadingPlaylist, setLoadingPlaylist] = useState7(true);
2412
- useEffect10(() => {
4431
+ const [loadingPlaylist, setLoadingPlaylist] = useState5(true);
4432
+ useEffect9(() => {
2413
4433
  const creativeWorkLoadedWithNoVideos = !isCreativeWorkLoading && creativeWorkData && creativeWorkData.videoIds && creativeWorkData.videoIds.length === 0;
2414
4434
  const creativeWorkLoadedWithNoData = !isCreativeWorkLoading && creativeWorkData && !creativeWorkData.videoIds;
2415
4435
  const isEventsFinished = !videosIsLoading && videosData && videosData.length > 0 && videosData.every((video) => video.playlists && video.playlists.length === 0);
@@ -2430,10 +4450,10 @@ var CreativeWork = ({
2430
4450
  events
2431
4451
  ]);
2432
4452
  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, {}) }) });
4453
+ 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
4454
  }
2435
4455
  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(
4456
+ 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
4457
  PreCreativeWork,
2438
4458
  {
2439
4459
  creativeWork: creativeWorkData,
@@ -2446,8 +4466,8 @@ var CreativeWork = ({
2446
4466
  }
2447
4467
  if (activeVideoId && activePlaylist && !loadingPlaylist) {
2448
4468
  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(
4469
+ 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: [
4470
+ /* @__PURE__ */ jsx11(
2451
4471
  Player,
2452
4472
  {
2453
4473
  ...props,
@@ -2459,7 +4479,7 @@ var CreativeWork = ({
2459
4479
  containerClassName: "w-full h-full"
2460
4480
  }
2461
4481
  ),
2462
- !hideTitle && /* @__PURE__ */ jsx9(
4482
+ !hideTitle && /* @__PURE__ */ jsx11(
2463
4483
  TitleAndDescription2,
2464
4484
  {
2465
4485
  title: creativeWorkData?.title || "",
@@ -2472,7 +4492,7 @@ var CreativeWork = ({
2472
4492
  ] }) });
2473
4493
  }
2474
4494
  if (loadingPlaylist) {
2475
- return /* @__PURE__ */ jsx9(Loading, {});
4495
+ return /* @__PURE__ */ jsx11(Loading, {});
2476
4496
  }
2477
4497
  return null;
2478
4498
  };
@@ -2485,12 +4505,12 @@ function PreCreativeWork({
2485
4505
  }) {
2486
4506
  const date = new Date(creativeWork.releaseTime);
2487
4507
  const now = /* @__PURE__ */ new Date();
2488
- const [remainingTime, setRemainingTime] = useState7(
4508
+ const [remainingTime, setRemainingTime] = useState5(
2489
4509
  date.getTime() - now.getTime()
2490
4510
  );
2491
4511
  const shouldBeStarted = remainingTime < 0;
2492
4512
  const { t } = useMessages_default(locale);
2493
- useEffect10(() => {
4513
+ useEffect9(() => {
2494
4514
  const interval = setInterval(() => {
2495
4515
  if (remainingTime < 0) {
2496
4516
  clearInterval(interval);
@@ -2504,15 +4524,15 @@ function PreCreativeWork({
2504
4524
  }, [date, remainingTime]);
2505
4525
  const renderCountdown = () => {
2506
4526
  if (shouldBeStarted) {
2507
- return /* @__PURE__ */ jsx9("span", { className: "text-base-content text-xl", children: t("EVENT_NOT_STARTED") });
4527
+ return /* @__PURE__ */ jsx11("span", { className: "text-base-content text-xl", children: t("EVENT_NOT_STARTED") });
2508
4528
  }
2509
4529
  const seconds = Math.floor(remainingTime / 1e3) % 60;
2510
4530
  const minutes = Math.floor(remainingTime / 1e3 / 60) % 60;
2511
4531
  const hours = Math.floor(remainingTime / 1e3 / 60 / 60) % 24;
2512
4532
  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(
4533
+ return /* @__PURE__ */ jsxs9("div", { className: "grid grid-flow-col gap-5 text-center auto-cols-max", children: [
4534
+ /* @__PURE__ */ jsxs9("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4535
+ /* @__PURE__ */ jsx11("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx11(
2516
4536
  "span",
2517
4537
  {
2518
4538
  style: { "--value": days },
@@ -2521,10 +4541,10 @@ function PreCreativeWork({
2521
4541
  children: days?.toString()?.padStart(2, "0")
2522
4542
  }
2523
4543
  ) }),
2524
- /* @__PURE__ */ jsx9("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("DAYS") })
4544
+ /* @__PURE__ */ jsx11("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("DAYS") })
2525
4545
  ] }),
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(
4546
+ /* @__PURE__ */ jsxs9("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4547
+ /* @__PURE__ */ jsx11("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx11(
2528
4548
  "span",
2529
4549
  {
2530
4550
  style: { "--value": hours },
@@ -2533,10 +4553,10 @@ function PreCreativeWork({
2533
4553
  children: hours?.toString()?.padStart(2, "0")
2534
4554
  }
2535
4555
  ) }),
2536
- /* @__PURE__ */ jsx9("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("HOURS") })
4556
+ /* @__PURE__ */ jsx11("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("HOURS") })
2537
4557
  ] }),
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(
4558
+ /* @__PURE__ */ jsxs9("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4559
+ /* @__PURE__ */ jsx11("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx11(
2540
4560
  "span",
2541
4561
  {
2542
4562
  style: { "--value": minutes },
@@ -2545,10 +4565,10 @@ function PreCreativeWork({
2545
4565
  children: minutes?.toString()?.padStart(2, "0")
2546
4566
  }
2547
4567
  ) }),
2548
- /* @__PURE__ */ jsx9("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("MINUTES") })
4568
+ /* @__PURE__ */ jsx11("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("MINUTES") })
2549
4569
  ] }),
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(
4570
+ /* @__PURE__ */ jsxs9("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4571
+ /* @__PURE__ */ jsx11("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx11(
2552
4572
  "span",
2553
4573
  {
2554
4574
  style: { "--value": seconds },
@@ -2557,12 +4577,12 @@ function PreCreativeWork({
2557
4577
  children: seconds?.toString()?.padStart(2, "0")
2558
4578
  }
2559
4579
  ) }),
2560
- /* @__PURE__ */ jsx9("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("SECONDS") })
4580
+ /* @__PURE__ */ jsx11("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("SECONDS") })
2561
4581
  ] })
2562
4582
  ] });
2563
4583
  };
2564
- return /* @__PURE__ */ jsxs7(Fragment2, { children: [
2565
- /* @__PURE__ */ jsxs7(
4584
+ return /* @__PURE__ */ jsxs9(Fragment2, { children: [
4585
+ /* @__PURE__ */ jsxs9(
2566
4586
  "div",
2567
4587
  {
2568
4588
  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 +4590,12 @@ function PreCreativeWork({
2570
4590
  backgroundImage: backgroundImageUrl ? `url(${backgroundImageUrl})` : ""
2571
4591
  },
2572
4592
  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() })
4593
+ backgroundImageUrl && /* @__PURE__ */ jsx11("div", { className: "absolute inset-0 bg-black bg-opacity-40" }),
4594
+ /* @__PURE__ */ jsx11("div", { className: "relative z-10", children: renderCountdown() })
2575
4595
  ]
2576
4596
  }
2577
4597
  ),
2578
- !hideTitle && /* @__PURE__ */ jsx9(
4598
+ !hideTitle && /* @__PURE__ */ jsx11(
2579
4599
  TitleAndDescription2,
2580
4600
  {
2581
4601
  title: creativeWork.title,
@@ -2593,9 +4613,9 @@ var TitleAndDescription2 = ({
2593
4613
  locale = "en",
2594
4614
  className
2595
4615
  }) => {
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: [
4616
+ return /* @__PURE__ */ jsxs9("div", { className: twMerge5("mt-3 mb-6 m-event-details-ctn px-4 text-left w-full", className), children: [
4617
+ /* @__PURE__ */ jsx11("div", { className: "text-base md:text-xl m-event-title text-base-content font-medium", children: title }),
4618
+ releaseTime ? /* @__PURE__ */ jsxs9("div", { className: "text-sm md:text-base text-base-content/70 m-event-start-time", children: [
2599
4619
  new Date(releaseTime || "").toLocaleDateString(locale || "default", {
2600
4620
  month: "long",
2601
4621
  year: "numeric",
@@ -2608,13 +4628,13 @@ var TitleAndDescription2 = ({
2608
4628
  minute: "2-digit"
2609
4629
  })
2610
4630
  ] }) : null,
2611
- description && /* @__PURE__ */ jsx9("div", { className: "text-xs md:text-sm text-base-content/60 uppercase", children: description })
4631
+ description && /* @__PURE__ */ jsx11("div", { className: "text-xs md:text-sm text-base-content/60 uppercase", children: description })
2612
4632
  ] });
2613
4633
  };
2614
4634
 
2615
4635
  // src/QueryProvider.tsx
2616
4636
  import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
2617
- import { jsx as jsx10 } from "react/jsx-runtime";
4637
+ import { jsx as jsx12 } from "react/jsx-runtime";
2618
4638
  var queryClient = new QueryClient({
2619
4639
  defaultOptions: {
2620
4640
  queries: {
@@ -2628,14 +4648,16 @@ var queryClient = new QueryClient({
2628
4648
  }
2629
4649
  });
2630
4650
  var QueryProvider = ({ children }) => {
2631
- return /* @__PURE__ */ jsx10(QueryClientProvider, { client: queryClient, children });
4651
+ return /* @__PURE__ */ jsx12(QueryClientProvider, { client: queryClient, children });
2632
4652
  };
2633
4653
  export {
2634
- ClientSideEvent,
4654
+ BigPlayIcon,
2635
4655
  CreativeWork,
2636
4656
  Event,
2637
4657
  Player,
2638
4658
  QueryProvider,
4659
+ SkipBackIcon,
4660
+ SkipForwardIcon,
2639
4661
  Video,
2640
4662
  queryClient
2641
4663
  };