@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.js CHANGED
@@ -31,15 +31,18 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  // src/index.ts
32
32
  var index_exports = {};
33
33
  __export(index_exports, {
34
- ClientSideEvent: () => ClientSideEvent,
34
+ BigPlayIcon: () => BigPlayIcon,
35
35
  CreativeWork: () => CreativeWork,
36
36
  Event: () => Event,
37
37
  Player: () => Player,
38
38
  QueryProvider: () => QueryProvider,
39
+ SkipBackIcon: () => SkipBackIcon,
40
+ SkipForwardIcon: () => SkipForwardIcon,
39
41
  Video: () => Video,
40
42
  queryClient: () => queryClient
41
43
  });
42
44
  module.exports = __toCommonJS(index_exports);
45
+ var import_controls = require("shaka-player/dist/controls.css");
43
46
 
44
47
  // #style-inject:#style-inject
45
48
  function styleInject(css, { insertAt } = {}) {
@@ -64,10 +67,1084 @@ function styleInject(css, { insertAt } = {}) {
64
67
  }
65
68
 
66
69
  // src/index.css
67
- 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');
70
+ styleInject(`/*! tailwindcss v4.1.8 | MIT License | https://tailwindcss.com */
71
+ @layer properties;
72
+ @layer theme, base, components, utilities;
73
+ @layer theme {
74
+ :root,
75
+ :host {
76
+ --font-sans:
77
+ ui-sans-serif,
78
+ system-ui,
79
+ sans-serif,
80
+ "Apple Color Emoji",
81
+ "Segoe UI Emoji",
82
+ "Segoe UI Symbol",
83
+ "Noto Color Emoji";
84
+ --font-mono:
85
+ ui-monospace,
86
+ SFMono-Regular,
87
+ Menlo,
88
+ Monaco,
89
+ Consolas,
90
+ "Liberation Mono",
91
+ "Courier New",
92
+ monospace;
93
+ --color-red-600: oklch(57.7% 0.245 27.325);
94
+ --color-black: #000;
95
+ --color-white: #fff;
96
+ --spacing: 0.25rem;
97
+ --text-xs: 0.75rem;
98
+ --text-xs--line-height: calc(1 / 0.75);
99
+ --text-sm: 0.875rem;
100
+ --text-sm--line-height: calc(1.25 / 0.875);
101
+ --text-base: 1rem;
102
+ --text-base--line-height: calc(1.5 / 1);
103
+ --text-lg: 1.125rem;
104
+ --text-lg--line-height: calc(1.75 / 1.125);
105
+ --text-xl: 1.25rem;
106
+ --text-xl--line-height: calc(1.75 / 1.25);
107
+ --text-2xl: 1.5rem;
108
+ --text-2xl--line-height: calc(2 / 1.5);
109
+ --text-5xl: 3rem;
110
+ --text-5xl--line-height: 1;
111
+ --font-weight-medium: 500;
112
+ --font-weight-semibold: 600;
113
+ --font-weight-bold: 700;
114
+ --tracking-wide: 0.025em;
115
+ --tracking-widest: 0.1em;
116
+ --radius-md: 0.375rem;
117
+ --radius-2xl: 1rem;
118
+ --animate-spin: spin 1s linear infinite;
119
+ --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
120
+ --aspect-video: 16 / 9;
121
+ --default-transition-duration: 150ms;
122
+ --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
123
+ --default-font-family: var(--font-sans);
124
+ --default-mono-font-family: var(--font-mono);
125
+ }
126
+ }
127
+ @layer base {
128
+ *,
129
+ ::after,
130
+ ::before,
131
+ ::backdrop,
132
+ ::file-selector-button {
133
+ box-sizing: border-box;
134
+ margin: 0;
135
+ padding: 0;
136
+ border: 0 solid;
137
+ }
138
+ html,
139
+ :host {
140
+ line-height: 1.5;
141
+ -webkit-text-size-adjust: 100%;
142
+ tab-size: 4;
143
+ 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");
144
+ font-feature-settings: var(--default-font-feature-settings, normal);
145
+ font-variation-settings: var(--default-font-variation-settings, normal);
146
+ -webkit-tap-highlight-color: transparent;
147
+ }
148
+ hr {
149
+ height: 0;
150
+ color: inherit;
151
+ border-top-width: 1px;
152
+ }
153
+ abbr:where([title]) {
154
+ -webkit-text-decoration: underline dotted;
155
+ text-decoration: underline dotted;
156
+ }
157
+ h1,
158
+ h2,
159
+ h3,
160
+ h4,
161
+ h5,
162
+ h6 {
163
+ font-size: inherit;
164
+ font-weight: inherit;
165
+ }
166
+ a {
167
+ color: inherit;
168
+ -webkit-text-decoration: inherit;
169
+ text-decoration: inherit;
170
+ }
171
+ b,
172
+ strong {
173
+ font-weight: bolder;
174
+ }
175
+ code,
176
+ kbd,
177
+ samp,
178
+ pre {
179
+ font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
180
+ font-feature-settings: var(--default-mono-font-feature-settings, normal);
181
+ font-variation-settings: var(--default-mono-font-variation-settings, normal);
182
+ font-size: 1em;
183
+ }
184
+ small {
185
+ font-size: 80%;
186
+ }
187
+ sub,
188
+ sup {
189
+ font-size: 75%;
190
+ line-height: 0;
191
+ position: relative;
192
+ vertical-align: baseline;
193
+ }
194
+ sub {
195
+ bottom: -0.25em;
196
+ }
197
+ sup {
198
+ top: -0.5em;
199
+ }
200
+ table {
201
+ text-indent: 0;
202
+ border-color: inherit;
203
+ border-collapse: collapse;
204
+ }
205
+ :-moz-focusring {
206
+ outline: auto;
207
+ }
208
+ progress {
209
+ vertical-align: baseline;
210
+ }
211
+ summary {
212
+ display: list-item;
213
+ }
214
+ ol,
215
+ ul,
216
+ menu {
217
+ list-style: none;
218
+ }
219
+ img,
220
+ svg,
221
+ video,
222
+ canvas,
223
+ audio,
224
+ iframe,
225
+ embed,
226
+ object {
227
+ display: block;
228
+ vertical-align: middle;
229
+ }
230
+ img,
231
+ video {
232
+ max-width: 100%;
233
+ height: auto;
234
+ }
235
+ button,
236
+ input,
237
+ select,
238
+ optgroup,
239
+ textarea,
240
+ ::file-selector-button {
241
+ font: inherit;
242
+ font-feature-settings: inherit;
243
+ font-variation-settings: inherit;
244
+ letter-spacing: inherit;
245
+ color: inherit;
246
+ border-radius: 0;
247
+ background-color: transparent;
248
+ opacity: 1;
249
+ }
250
+ :where(select:is([multiple], [size])) optgroup {
251
+ font-weight: bolder;
252
+ }
253
+ :where(select:is([multiple], [size])) optgroup option {
254
+ padding-inline-start: 20px;
255
+ }
256
+ ::file-selector-button {
257
+ margin-inline-end: 4px;
258
+ }
259
+ ::placeholder {
260
+ opacity: 1;
261
+ }
262
+ @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {
263
+ ::placeholder {
264
+ color: currentcolor;
265
+ @supports (color: color-mix(in lab, red, red)) {
266
+ color: color-mix(in oklab, currentcolor 50%, transparent);
267
+ }
268
+ }
269
+ }
270
+ textarea {
271
+ resize: vertical;
272
+ }
273
+ ::-webkit-search-decoration {
274
+ -webkit-appearance: none;
275
+ }
276
+ ::-webkit-date-and-time-value {
277
+ min-height: 1lh;
278
+ text-align: inherit;
279
+ }
280
+ ::-webkit-datetime-edit {
281
+ display: inline-flex;
282
+ }
283
+ ::-webkit-datetime-edit-fields-wrapper {
284
+ padding: 0;
285
+ }
286
+ ::-webkit-datetime-edit,
287
+ ::-webkit-datetime-edit-year-field,
288
+ ::-webkit-datetime-edit-month-field,
289
+ ::-webkit-datetime-edit-day-field,
290
+ ::-webkit-datetime-edit-hour-field,
291
+ ::-webkit-datetime-edit-minute-field,
292
+ ::-webkit-datetime-edit-second-field,
293
+ ::-webkit-datetime-edit-millisecond-field,
294
+ ::-webkit-datetime-edit-meridiem-field {
295
+ padding-block: 0;
296
+ }
297
+ :-moz-ui-invalid {
298
+ box-shadow: none;
299
+ }
300
+ button,
301
+ input:where([type=button], [type=reset], [type=submit]),
302
+ ::file-selector-button {
303
+ appearance: button;
304
+ }
305
+ ::-webkit-inner-spin-button,
306
+ ::-webkit-outer-spin-button {
307
+ height: auto;
308
+ }
309
+ [hidden]:where(:not([hidden=until-found])) {
310
+ display: none !important;
311
+ }
312
+ }
313
+ @layer utilities {
314
+ .pointer-events-auto {
315
+ pointer-events: auto;
316
+ }
317
+ .pointer-events-none {
318
+ pointer-events: none;
319
+ }
320
+ .visible {
321
+ visibility: visible;
322
+ }
323
+ .sr-only {
324
+ position: absolute;
325
+ width: 1px;
326
+ height: 1px;
327
+ padding: 0;
328
+ margin: -1px;
329
+ overflow: hidden;
330
+ clip: rect(0, 0, 0, 0);
331
+ white-space: nowrap;
332
+ border-width: 0;
333
+ }
334
+ .absolute {
335
+ position: absolute;
336
+ }
337
+ .fixed {
338
+ position: fixed;
339
+ }
340
+ .relative {
341
+ position: relative;
342
+ }
343
+ .static {
344
+ position: static;
345
+ }
346
+ .inset-0 {
347
+ inset: calc(var(--spacing) * 0);
348
+ }
349
+ .top-0 {
350
+ top: calc(var(--spacing) * 0);
351
+ }
352
+ .top-4 {
353
+ top: calc(var(--spacing) * 4);
354
+ }
355
+ .right-0 {
356
+ right: calc(var(--spacing) * 0);
357
+ }
358
+ .right-4 {
359
+ right: calc(var(--spacing) * 4);
360
+ }
361
+ .bottom-0 {
362
+ bottom: calc(var(--spacing) * 0);
363
+ }
364
+ .bottom-4 {
365
+ bottom: calc(var(--spacing) * 4);
366
+ }
367
+ .left-0 {
368
+ left: calc(var(--spacing) * 0);
369
+ }
370
+ .left-4 {
371
+ left: calc(var(--spacing) * 4);
372
+ }
373
+ .z-10 {
374
+ z-index: 10;
375
+ }
376
+ .z-50 {
377
+ z-index: 50;
378
+ }
379
+ .container {
380
+ width: 100%;
381
+ @media (width >= 40rem) {
382
+ max-width: 40rem;
383
+ }
384
+ @media (width >= 48rem) {
385
+ max-width: 48rem;
386
+ }
387
+ @media (width >= 64rem) {
388
+ max-width: 64rem;
389
+ }
390
+ @media (width >= 80rem) {
391
+ max-width: 80rem;
392
+ }
393
+ @media (width >= 96rem) {
394
+ max-width: 96rem;
395
+ }
396
+ }
397
+ .m-6 {
398
+ margin: calc(var(--spacing) * 6);
399
+ }
400
+ .mt-1 {
401
+ margin-top: calc(var(--spacing) * 1);
402
+ }
403
+ .mt-3 {
404
+ margin-top: calc(var(--spacing) * 3);
405
+ }
406
+ .mb-2 {
407
+ margin-bottom: calc(var(--spacing) * 2);
408
+ }
409
+ .mb-6 {
410
+ margin-bottom: calc(var(--spacing) * 6);
411
+ }
412
+ .flex {
413
+ display: flex;
414
+ }
415
+ .grid {
416
+ display: grid;
417
+ }
418
+ .aspect-video {
419
+ aspect-ratio: var(--aspect-video);
420
+ }
421
+ .h-2 {
422
+ height: calc(var(--spacing) * 2);
423
+ }
424
+ .h-12 {
425
+ height: calc(var(--spacing) * 12);
426
+ }
427
+ .h-24 {
428
+ height: calc(var(--spacing) * 24);
429
+ }
430
+ .h-full {
431
+ height: 100%;
432
+ }
433
+ .w-2 {
434
+ width: calc(var(--spacing) * 2);
435
+ }
436
+ .w-12 {
437
+ width: calc(var(--spacing) * 12);
438
+ }
439
+ .w-24 {
440
+ width: calc(var(--spacing) * 24);
441
+ }
442
+ .w-full {
443
+ width: 100%;
444
+ }
445
+ .animate-pulse {
446
+ animation: var(--animate-pulse);
447
+ }
448
+ .animate-spin {
449
+ animation: var(--animate-spin);
450
+ }
451
+ .auto-cols-max {
452
+ grid-auto-columns: max-content;
453
+ }
454
+ .grid-flow-col {
455
+ grid-auto-flow: column;
456
+ }
457
+ .flex-col {
458
+ flex-direction: column;
459
+ }
460
+ .items-center {
461
+ align-items: center;
462
+ }
463
+ .justify-center {
464
+ justify-content: center;
465
+ }
466
+ .justify-stretch {
467
+ justify-content: stretch;
468
+ }
469
+ .gap-1 {
470
+ gap: calc(var(--spacing) * 1);
471
+ }
472
+ .gap-5 {
473
+ gap: calc(var(--spacing) * 5);
474
+ }
475
+ .overflow-hidden {
476
+ overflow: hidden;
477
+ }
478
+ .rounded-full {
479
+ border-radius: calc(infinity * 1px);
480
+ }
481
+ .rounded-md {
482
+ border-radius: var(--radius-md);
483
+ }
484
+ .bg-\\[\\#151515\\] {
485
+ background-color: #151515;
486
+ }
487
+ .bg-black {
488
+ background-color: var(--color-black);
489
+ }
490
+ .bg-red-600 {
491
+ background-color: var(--color-red-600);
492
+ }
493
+ .bg-white {
494
+ background-color: var(--color-white);
495
+ }
496
+ .bg-gradient-to-t {
497
+ --tw-gradient-position: to top in oklab;
498
+ background-image: linear-gradient(var(--tw-gradient-stops));
499
+ }
500
+ .from-black\\/70 {
501
+ --tw-gradient-from: color-mix(in srgb, #000 70%, transparent);
502
+ @supports (color: color-mix(in lab, red, red)) {
503
+ --tw-gradient-from: color-mix(in oklab, var(--color-black) 70%, transparent);
504
+ }
505
+ --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));
506
+ }
507
+ .to-transparent {
508
+ --tw-gradient-to: transparent;
509
+ --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));
510
+ }
511
+ .bg-cover {
512
+ background-size: cover;
513
+ }
514
+ .bg-center {
515
+ background-position: center;
516
+ }
517
+ .bg-no-repeat {
518
+ background-repeat: no-repeat;
519
+ }
520
+ .p-2 {
521
+ padding: calc(var(--spacing) * 2);
522
+ }
523
+ .p-4 {
524
+ padding: calc(var(--spacing) * 4);
525
+ }
526
+ .px-2 {
527
+ padding-inline: calc(var(--spacing) * 2);
528
+ }
529
+ .px-4 {
530
+ padding-inline: calc(var(--spacing) * 4);
531
+ }
532
+ .py-1 {
533
+ padding-block: calc(var(--spacing) * 1);
534
+ }
535
+ .text-center {
536
+ text-align: center;
537
+ }
538
+ .text-left {
539
+ text-align: left;
540
+ }
541
+ .font-mono {
542
+ font-family: var(--font-mono);
543
+ }
544
+ .text-2xl {
545
+ font-size: var(--text-2xl);
546
+ line-height: var(--tw-leading, var(--text-2xl--line-height));
547
+ }
548
+ .text-5xl {
549
+ font-size: var(--text-5xl);
550
+ line-height: var(--tw-leading, var(--text-5xl--line-height));
551
+ }
552
+ .text-base {
553
+ font-size: var(--text-base);
554
+ line-height: var(--tw-leading, var(--text-base--line-height));
555
+ }
556
+ .text-lg {
557
+ font-size: var(--text-lg);
558
+ line-height: var(--tw-leading, var(--text-lg--line-height));
559
+ }
560
+ .text-sm {
561
+ font-size: var(--text-sm);
562
+ line-height: var(--tw-leading, var(--text-sm--line-height));
563
+ }
564
+ .text-xl {
565
+ font-size: var(--text-xl);
566
+ line-height: var(--tw-leading, var(--text-xl--line-height));
567
+ }
568
+ .text-xs {
569
+ font-size: var(--text-xs);
570
+ line-height: var(--tw-leading, var(--text-xs--line-height));
571
+ }
572
+ .text-\\[10px\\] {
573
+ font-size: 10px;
574
+ }
575
+ .font-bold {
576
+ --tw-font-weight: var(--font-weight-bold);
577
+ font-weight: var(--font-weight-bold);
578
+ }
579
+ .font-medium {
580
+ --tw-font-weight: var(--font-weight-medium);
581
+ font-weight: var(--font-weight-medium);
582
+ }
583
+ .font-semibold {
584
+ --tw-font-weight: var(--font-weight-semibold);
585
+ font-weight: var(--font-weight-semibold);
586
+ }
587
+ .tracking-wide {
588
+ --tw-tracking: var(--tracking-wide);
589
+ letter-spacing: var(--tracking-wide);
590
+ }
591
+ .tracking-widest {
592
+ --tw-tracking: var(--tracking-widest);
593
+ letter-spacing: var(--tracking-widest);
594
+ }
595
+ .text-white {
596
+ color: var(--color-white);
597
+ }
598
+ .uppercase {
599
+ text-transform: uppercase;
600
+ }
601
+ .shadow-lg {
602
+ --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));
603
+ box-shadow:
604
+ var(--tw-inset-shadow),
605
+ var(--tw-inset-ring-shadow),
606
+ var(--tw-ring-offset-shadow),
607
+ var(--tw-ring-shadow),
608
+ var(--tw-shadow);
609
+ }
610
+ .filter {
611
+ 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,);
612
+ }
613
+ .md\\:rounded-2xl {
614
+ @media (width >= 48rem) {
615
+ border-radius: var(--radius-2xl);
616
+ }
617
+ }
618
+ .md\\:rounded-2xl\\! {
619
+ @media (width >= 48rem) {
620
+ border-radius: var(--radius-2xl) !important;
621
+ }
622
+ }
623
+ .md\\:text-base {
624
+ @media (width >= 48rem) {
625
+ font-size: var(--text-base);
626
+ line-height: var(--tw-leading, var(--text-base--line-height));
627
+ }
628
+ }
629
+ .md\\:text-sm {
630
+ @media (width >= 48rem) {
631
+ font-size: var(--text-sm);
632
+ line-height: var(--tw-leading, var(--text-sm--line-height));
633
+ }
634
+ }
635
+ .md\\:text-xl {
636
+ @media (width >= 48rem) {
637
+ font-size: var(--text-xl);
638
+ line-height: var(--tw-leading, var(--text-xl--line-height));
639
+ }
640
+ }
641
+ }
642
+ @layer components {
643
+ video::-webkit-media-controls {
644
+ display: none !important;
645
+ }
646
+ video::-webkit-media-controls-panel {
647
+ display: none !important;
648
+ }
649
+ video::-webkit-media-controls-play-button {
650
+ display: none !important;
651
+ }
652
+ video::-webkit-media-controls-timeline {
653
+ display: none !important;
654
+ }
655
+ video::-webkit-media-controls-current-time-display {
656
+ display: none !important;
657
+ }
658
+ video::-webkit-media-controls-time-remaining-display {
659
+ display: none !important;
660
+ }
661
+ video::-webkit-media-controls-mute-button {
662
+ display: none !important;
663
+ }
664
+ video::-webkit-media-controls-volume-slider {
665
+ display: none !important;
666
+ }
667
+ video::-webkit-media-controls-fullscreen-button {
668
+ display: none !important;
669
+ }
670
+ video::-webkit-media-controls-overlay-play-button {
671
+ display: none !important;
672
+ }
673
+ video::-moz-media-controls {
674
+ display: none !important;
675
+ }
676
+ video {
677
+ outline: none !important;
678
+ }
679
+ video[controls] {
680
+ -webkit-appearance: none !important;
681
+ appearance: none !important;
682
+ }
683
+ video::-webkit-media-controls-enclosure {
684
+ display: none !important;
685
+ }
686
+ video::-webkit-media-controls-start-playback-button {
687
+ display: none !important;
688
+ }
689
+ video[controls]::-webkit-media-controls,
690
+ video[controls]::-webkit-media-controls-panel,
691
+ video[controls]::-webkit-media-controls-play-button,
692
+ video[controls]::-webkit-media-controls-timeline,
693
+ video[controls]::-webkit-media-controls-current-time-display,
694
+ video[controls]::-webkit-media-controls-time-remaining-display,
695
+ video[controls]::-webkit-media-controls-mute-button,
696
+ video[controls]::-webkit-media-controls-volume-slider,
697
+ video[controls]::-webkit-media-controls-fullscreen-button,
698
+ video[controls]::-webkit-media-controls-overlay-play-button,
699
+ video[controls]::-webkit-media-controls-enclosure,
700
+ video[controls]::-webkit-media-controls-start-playback-button {
701
+ display: none !important;
702
+ visibility: hidden !important;
703
+ opacity: 0 !important;
704
+ pointer-events: none !important;
705
+ }
706
+ video[controls]::-moz-media-controls {
707
+ display: none !important;
708
+ visibility: hidden !important;
709
+ opacity: 0 !important;
710
+ }
711
+ .motto-video-container {
712
+ position: relative;
713
+ width: 100%;
714
+ min-height: 300px;
715
+ }
716
+ @supports (aspect-ratio: 16/9) {
717
+ .motto-video-container {
718
+ min-height: auto;
719
+ }
720
+ }
721
+ .motto-video-responsive {
722
+ position: absolute;
723
+ top: calc(var(--spacing) * 0);
724
+ left: calc(var(--spacing) * 0);
725
+ height: 100%;
726
+ width: 100%;
727
+ }
728
+ .motto-skip-button {
729
+ position: absolute;
730
+ top: calc(1/2 * 100%);
731
+ z-index: 10;
732
+ display: flex;
733
+ height: calc(var(--spacing) * 16);
734
+ width: calc(var(--spacing) * 16);
735
+ --tw-translate-y: calc(calc(1/2 * 100%) * -1);
736
+ translate: var(--tw-translate-x) var(--tw-translate-y);
737
+ cursor: pointer;
738
+ align-items: center;
739
+ justify-content: center;
740
+ border-radius: calc(infinity * 1px);
741
+ border-style: var(--tw-border-style);
742
+ border-width: 0px;
743
+ background-color: color-mix(in srgb, #000 70%, transparent);
744
+ @supports (color: color-mix(in lab, red, red)) {
745
+ background-color: color-mix(in oklab, var(--color-black) 70%, transparent);
746
+ }
747
+ font-size: var(--text-2xl);
748
+ line-height: var(--tw-leading, var(--text-2xl--line-height));
749
+ color: var(--color-white);
750
+ opacity: 80%;
751
+ transition-property: all;
752
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
753
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
754
+ --tw-duration: 200ms;
755
+ transition-duration: 200ms;
756
+ &:hover {
757
+ @media (hover: hover) {
758
+ --tw-scale-x: 110%;
759
+ --tw-scale-y: 110%;
760
+ --tw-scale-z: 110%;
761
+ scale: var(--tw-scale-x) var(--tw-scale-y);
762
+ }
763
+ }
764
+ &:hover {
765
+ @media (hover: hover) {
766
+ opacity: 100%;
767
+ }
768
+ }
769
+ &:active {
770
+ --tw-scale-x: 95%;
771
+ --tw-scale-y: 95%;
772
+ --tw-scale-z: 95%;
773
+ scale: var(--tw-scale-x) var(--tw-scale-y);
774
+ }
775
+ }
776
+ .motto-skip-button-back {
777
+ left: calc(var(--spacing) * 5);
778
+ }
779
+ .motto-skip-button-forward {
780
+ right: calc(var(--spacing) * 5);
781
+ }
782
+ }
783
+ .shaka-seek-bar-container {
784
+ height: 6px !important;
785
+ width: 100% !important;
786
+ margin: 8px 0 !important;
787
+ border-radius: 4px !important;
788
+ position: relative !important;
789
+ border-top: none !important;
790
+ border-bottom: none !important;
791
+ box-shadow: none !important;
792
+ }
793
+ .shaka-seek-bar {
794
+ height: 6px !important;
795
+ width: 100% !important;
796
+ -webkit-appearance: none !important;
797
+ appearance: none !important;
798
+ background: transparent !important;
799
+ cursor: pointer !important;
800
+ border: none !important;
801
+ outline: none !important;
802
+ position: absolute !important;
803
+ top: 0 !important;
804
+ left: 0 !important;
805
+ border-radius: 4px !important;
806
+ }
807
+ .shaka-seek-bar::-webkit-slider-runnable-track {
808
+ height: 6px !important;
809
+ background: transparent !important;
810
+ border-radius: 4px !important;
811
+ border: none !important;
812
+ }
813
+ .shaka-seek-bar::-moz-range-track {
814
+ height: 6px !important;
815
+ background: transparent !important;
816
+ border-radius: 4px !important;
817
+ border: none !important;
818
+ }
819
+ .shaka-seek-bar::-webkit-slider-thumb {
820
+ -webkit-appearance: none !important;
821
+ appearance: none !important;
822
+ width: 16px !important;
823
+ height: 16px !important;
824
+ border-radius: 50% !important;
825
+ background: #ffffff !important;
826
+ cursor: pointer !important;
827
+ border: 2px solid #ffffff !important;
828
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3) !important;
829
+ margin-top: -4px !important;
830
+ }
831
+ .shaka-seek-bar::-moz-range-thumb {
832
+ width: 16px !important;
833
+ height: 16px !important;
834
+ border-radius: 50% !important;
835
+ background: #ffffff !important;
836
+ cursor: pointer !important;
837
+ border: 2px solid #ffffff !important;
838
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3) !important;
839
+ margin-top: -4px !important;
840
+ }
841
+ .motto-skip-back-button,
842
+ .motto-skip-forward-button,
843
+ .motto-native-skip-button {
844
+ background: transparent !important;
845
+ border: none !important;
846
+ padding: 4px !important;
847
+ margin: 0px !important;
848
+ cursor: pointer !important;
849
+ color: #ffffff !important;
850
+ transition: all 0.2s ease !important;
851
+ min-width: 32px !important;
852
+ height: 32px !important;
853
+ display: flex !important;
854
+ align-items: center !important;
855
+ justify-content: center !important;
856
+ border-radius: 4px !important;
857
+ width: 25px;
858
+ }
859
+ .motto-skip-back-button:hover,
860
+ .motto-skip-forward-button:hover,
861
+ .motto-native-skip-button:hover {
862
+ opacity: 0.8 !important;
863
+ background: transparent !important;
864
+ transform: scale(1.05) !important;
865
+ }
866
+ .motto-skip-back-button:active,
867
+ .motto-skip-forward-button:active,
868
+ .motto-native-skip-button:active {
869
+ transform: scale(0.95) !important;
870
+ }
871
+ .motto-skip-back-button svg,
872
+ .motto-skip-forward-button svg,
873
+ .motto-native-skip-button svg {
874
+ width: 24px !important;
875
+ height: 24px !important;
876
+ }
877
+ .shaka-spinner-svg {
878
+ color: white !important;
879
+ fill: white !important;
880
+ }
881
+ .shaka-spinner-path {
882
+ stroke: white !important;
883
+ fill: none !important;
884
+ }
885
+ .shaka-spinner-container {
886
+ color: white !important;
887
+ }
888
+ .shaka-buffering-spinner {
889
+ color: white !important;
890
+ fill: white !important;
891
+ }
892
+ .shaka-buffering-spinner svg {
893
+ color: white !important;
894
+ fill: white !important;
895
+ }
896
+ .shaka-buffering-spinner path {
897
+ stroke: white !important;
898
+ fill: none !important;
899
+ }
900
+ [data-shaka-player-container] .shaka-spinner,
901
+ [data-shaka-player-container] .spinner {
902
+ color: white !important;
903
+ border-color: white !important;
904
+ }
905
+ .material-icons.shaka-spinner {
906
+ color: white !important;
907
+ }
908
+ .shaka-controls-container .shaka-spinner,
909
+ .shaka-video-container .shaka-spinner {
910
+ color: white !important;
911
+ fill: white !important;
912
+ }
913
+ .shaka-controls-container .shaka-spinner svg,
914
+ .shaka-video-container .shaka-spinner svg {
915
+ color: white !important;
916
+ fill: white !important;
917
+ }
918
+ .shaka-controls-container .shaka-spinner path,
919
+ .shaka-video-container .shaka-spinner path {
920
+ stroke: white !important;
921
+ }
922
+ .motto-video-loading-overlay {
923
+ position: absolute;
924
+ top: 0;
925
+ left: 0;
926
+ width: 100%;
927
+ height: 100%;
928
+ background:
929
+ linear-gradient(
930
+ 135deg,
931
+ #1a1a1a 0%,
932
+ #2d2d2d 100%);
933
+ display: flex;
934
+ flex-direction: column;
935
+ align-items: center;
936
+ justify-content: center;
937
+ z-index: 10;
938
+ transition: opacity 0.3s ease;
939
+ }
940
+ .motto-video-loading-overlay.hidden {
941
+ opacity: 0;
942
+ pointer-events: none;
943
+ }
944
+ .motto-video-loading-content {
945
+ text-align: center;
946
+ color: white;
947
+ }
948
+ .motto-video-loading-icon {
949
+ width: 64px;
950
+ height: 64px;
951
+ margin-bottom: 16px;
952
+ opacity: 0.7;
953
+ }
954
+ .motto-video-loading-text {
955
+ font-size: 16px;
956
+ font-weight: 500;
957
+ margin-bottom: 8px;
958
+ }
959
+ .motto-video-loading-subtext {
960
+ font-size: 14px;
961
+ opacity: 0.7;
962
+ }
963
+ @keyframes pulse-live {
964
+ 0% {
965
+ opacity: 1;
966
+ transform: scale(1);
967
+ }
968
+ 50% {
969
+ opacity: 0.7;
970
+ transform: scale(1.1);
971
+ }
972
+ 100% {
973
+ opacity: 1;
974
+ transform: scale(1);
975
+ }
976
+ }
977
+ .shaka-play-button {
978
+ background: rgba(255, 255, 255, 0.1) !important;
979
+ border: none !important;
980
+ color: white !important;
981
+ padding: 10px !important;
982
+ border-radius: 100% !important;
983
+ transition: all 0.2s ease !important;
984
+ display: flex !important;
985
+ align-items: center !important;
986
+ justify-content: center !important;
987
+ min-width: 55px !important;
988
+ height: 55px !important;
989
+ }
990
+ .shaka-play-button-container {
991
+ background: transparent;
992
+ transition: all 0.2s ease !important;
993
+ }
994
+ .motto-video-container:not(.no-cursor) .shaka-play-button-container {
995
+ background: rgba(0, 0, 0, 0.3);
996
+ transition: all 0.s ease !important;
997
+ }
998
+ .shaka-play-button:hover {
999
+ background: rgba(255, 255, 255, 0.2) !important;
1000
+ transform: scale(1.05) !important;
1001
+ }
1002
+ .shaka-play-button:active {
1003
+ transform: scale(0.95) !important;
1004
+ }
1005
+ .shaka-play-button > * {
1006
+ display: none !important;
1007
+ }
1008
+ .shaka-play-button::after {
1009
+ content: "" !important;
1010
+ width: 35px !important;
1011
+ height: 35px !important;
1012
+ 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;
1013
+ background-repeat: no-repeat !important;
1014
+ background-size: contain !important;
1015
+ background-position: center !important;
1016
+ display: block !important;
1017
+ }
1018
+ .shaka-play-button[aria-label*=Play]::after {
1019
+ 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;
1020
+ }
1021
+ .shaka-play-button[aria-label*=Pause]::after {
1022
+ 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;
1023
+ }
1024
+ .motto-video-container {
1025
+ background: black;
1026
+ }
1027
+ .motto-video-container video {
1028
+ width: 100% !important;
1029
+ height: 100% !important;
1030
+ margin-left: auto !important;
1031
+ margin-right: auto !important;
1032
+ }
1033
+ @property --tw-gradient-position { syntax: "*"; inherits: false; }
1034
+ @property --tw-gradient-from { syntax: "<color>"; inherits: false; initial-value: #0000; }
1035
+ @property --tw-gradient-via { syntax: "<color>"; inherits: false; initial-value: #0000; }
1036
+ @property --tw-gradient-to { syntax: "<color>"; inherits: false; initial-value: #0000; }
1037
+ @property --tw-gradient-stops { syntax: "*"; inherits: false; }
1038
+ @property --tw-gradient-via-stops { syntax: "*"; inherits: false; }
1039
+ @property --tw-gradient-from-position { syntax: "<length-percentage>"; inherits: false; initial-value: 0%; }
1040
+ @property --tw-gradient-via-position { syntax: "<length-percentage>"; inherits: false; initial-value: 50%; }
1041
+ @property --tw-gradient-to-position { syntax: "<length-percentage>"; inherits: false; initial-value: 100%; }
1042
+ @property --tw-font-weight { syntax: "*"; inherits: false; }
1043
+ @property --tw-tracking { syntax: "*"; inherits: false; }
1044
+ @property --tw-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
1045
+ @property --tw-shadow-color { syntax: "*"; inherits: false; }
1046
+ @property --tw-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }
1047
+ @property --tw-inset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
1048
+ @property --tw-inset-shadow-color { syntax: "*"; inherits: false; }
1049
+ @property --tw-inset-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }
1050
+ @property --tw-ring-color { syntax: "*"; inherits: false; }
1051
+ @property --tw-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
1052
+ @property --tw-inset-ring-color { syntax: "*"; inherits: false; }
1053
+ @property --tw-inset-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
1054
+ @property --tw-ring-inset { syntax: "*"; inherits: false; }
1055
+ @property --tw-ring-offset-width { syntax: "<length>"; inherits: false; initial-value: 0px; }
1056
+ @property --tw-ring-offset-color { syntax: "*"; inherits: false; initial-value: #fff; }
1057
+ @property --tw-ring-offset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
1058
+ @property --tw-blur { syntax: "*"; inherits: false; }
1059
+ @property --tw-brightness { syntax: "*"; inherits: false; }
1060
+ @property --tw-contrast { syntax: "*"; inherits: false; }
1061
+ @property --tw-grayscale { syntax: "*"; inherits: false; }
1062
+ @property --tw-hue-rotate { syntax: "*"; inherits: false; }
1063
+ @property --tw-invert { syntax: "*"; inherits: false; }
1064
+ @property --tw-opacity { syntax: "*"; inherits: false; }
1065
+ @property --tw-saturate { syntax: "*"; inherits: false; }
1066
+ @property --tw-sepia { syntax: "*"; inherits: false; }
1067
+ @property --tw-drop-shadow { syntax: "*"; inherits: false; }
1068
+ @property --tw-drop-shadow-color { syntax: "*"; inherits: false; }
1069
+ @property --tw-drop-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }
1070
+ @property --tw-drop-shadow-size { syntax: "*"; inherits: false; }
1071
+ @property --tw-translate-x { syntax: "*"; inherits: false; initial-value: 0; }
1072
+ @property --tw-translate-y { syntax: "*"; inherits: false; initial-value: 0; }
1073
+ @property --tw-translate-z { syntax: "*"; inherits: false; initial-value: 0; }
1074
+ @property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; }
1075
+ @property --tw-duration { syntax: "*"; inherits: false; }
1076
+ @property --tw-scale-x { syntax: "*"; inherits: false; initial-value: 1; }
1077
+ @property --tw-scale-y { syntax: "*"; inherits: false; initial-value: 1; }
1078
+ @property --tw-scale-z { syntax: "*"; inherits: false; initial-value: 1; }
1079
+ @keyframes spin {
1080
+ to {
1081
+ transform: rotate(360deg);
1082
+ }
1083
+ }
1084
+ @keyframes pulse {
1085
+ 50% {
1086
+ opacity: 0.5;
1087
+ }
1088
+ }
1089
+ @layer properties {
1090
+ @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
1091
+ *,
1092
+ ::before,
1093
+ ::after,
1094
+ ::backdrop {
1095
+ --tw-gradient-position: initial;
1096
+ --tw-gradient-from: #0000;
1097
+ --tw-gradient-via: #0000;
1098
+ --tw-gradient-to: #0000;
1099
+ --tw-gradient-stops: initial;
1100
+ --tw-gradient-via-stops: initial;
1101
+ --tw-gradient-from-position: 0%;
1102
+ --tw-gradient-via-position: 50%;
1103
+ --tw-gradient-to-position: 100%;
1104
+ --tw-font-weight: initial;
1105
+ --tw-tracking: initial;
1106
+ --tw-shadow: 0 0 #0000;
1107
+ --tw-shadow-color: initial;
1108
+ --tw-shadow-alpha: 100%;
1109
+ --tw-inset-shadow: 0 0 #0000;
1110
+ --tw-inset-shadow-color: initial;
1111
+ --tw-inset-shadow-alpha: 100%;
1112
+ --tw-ring-color: initial;
1113
+ --tw-ring-shadow: 0 0 #0000;
1114
+ --tw-inset-ring-color: initial;
1115
+ --tw-inset-ring-shadow: 0 0 #0000;
1116
+ --tw-ring-inset: initial;
1117
+ --tw-ring-offset-width: 0px;
1118
+ --tw-ring-offset-color: #fff;
1119
+ --tw-ring-offset-shadow: 0 0 #0000;
1120
+ --tw-blur: initial;
1121
+ --tw-brightness: initial;
1122
+ --tw-contrast: initial;
1123
+ --tw-grayscale: initial;
1124
+ --tw-hue-rotate: initial;
1125
+ --tw-invert: initial;
1126
+ --tw-opacity: initial;
1127
+ --tw-saturate: initial;
1128
+ --tw-sepia: initial;
1129
+ --tw-drop-shadow: initial;
1130
+ --tw-drop-shadow-color: initial;
1131
+ --tw-drop-shadow-alpha: 100%;
1132
+ --tw-drop-shadow-size: initial;
1133
+ --tw-translate-x: 0;
1134
+ --tw-translate-y: 0;
1135
+ --tw-translate-z: 0;
1136
+ --tw-border-style: solid;
1137
+ --tw-duration: initial;
1138
+ --tw-scale-x: 1;
1139
+ --tw-scale-y: 1;
1140
+ --tw-scale-z: 1;
1141
+ }
1142
+ }
1143
+ }
1144
+ `);
68
1145
 
69
1146
  // src/Player.tsx
70
- var import_react11 = require("react");
1147
+ var import_react12 = require("react");
71
1148
  var import_shaka_player4 = __toESM(require("shaka-player/dist/shaka-player.ui"));
72
1149
 
73
1150
  // src/hooks/useShakePlayer.ts
@@ -103,6 +1180,9 @@ var useShakePlayer = ({
103
1180
  }
104
1181
  player.addEventListener("error", (event) => {
105
1182
  const error = event.detail;
1183
+ if (error?.code === 7e3) {
1184
+ return;
1185
+ }
106
1186
  console.error("Shaka Player Error:", error);
107
1187
  onError?.(new Error(`Shaka Player Error: ${error.message || "Unknown error"}`));
108
1188
  });
@@ -110,6 +1190,9 @@ var useShakePlayer = ({
110
1190
  onPlayerReady?.(player);
111
1191
  return player;
112
1192
  } catch (error) {
1193
+ if (error?.code === 7e3) {
1194
+ return;
1195
+ }
113
1196
  console.error("Error initializing Shaka Player:", error);
114
1197
  onError?.(error);
115
1198
  throw error;
@@ -152,11 +1235,25 @@ var useQualityControl = (playerRef, qualityConfig, onQualityChange) => {
152
1235
  if (!playerRef.current) return;
153
1236
  if (height === 0) {
154
1237
  playerRef.current.configure({
155
- abr: { enabled: true }
1238
+ abr: {
1239
+ enabled: true,
1240
+ switchInterval: 2,
1241
+ // quicker re-checks
1242
+ clearBufferSwitch: true,
1243
+ safeMarginSwitch: 10
1244
+ // leave ~10 s in front of the playhead }
1245
+ }
156
1246
  });
157
1247
  } else {
158
1248
  playerRef.current.configure({
159
- abr: { enabled: false }
1249
+ abr: {
1250
+ enabled: false,
1251
+ switchInterval: 2,
1252
+ // quicker re-checks
1253
+ clearBufferSwitch: true,
1254
+ safeMarginSwitch: 10
1255
+ // leave ~10 s in front of the playhead }
1256
+ }
160
1257
  });
161
1258
  const tracks = playerRef.current.getVariantTracks();
162
1259
  const targetTrack = tracks.find((track) => track.height === height);
@@ -237,7 +1334,12 @@ var useSkipControls = (videoRef, onSkipBack, onSkipForward) => {
237
1334
  var import_react4 = require("react");
238
1335
  var import_mux_data_shakaplayer = __toESM(require("@mux/mux-data-shakaplayer"));
239
1336
  var import_shaka_player2 = __toESM(require("shaka-player/dist/shaka-player.ui"));
240
- var useMuxAnalytics = (playerRef, muxConfig, onMuxReady, onMuxDataUpdate) => {
1337
+
1338
+ // package.json
1339
+ var version = "1.0.1-rc.21";
1340
+
1341
+ // src/hooks/useMuxAnalytics.ts
1342
+ var useMuxAnalytics = (playerRef, muxConfig, onMuxReady, onMuxDataUpdate, playerName) => {
241
1343
  const shakaPlayerMuxRef = (0, import_react4.useRef)(null);
242
1344
  const initializeMux = (0, import_react4.useCallback)(() => {
243
1345
  if (!muxConfig || !playerRef.current) return;
@@ -252,8 +1354,8 @@ var useMuxAnalytics = (playerRef, muxConfig, onMuxReady, onMuxDataUpdate) => {
252
1354
  ...muxConfig.errorTranslator && { errorTranslator: muxConfig.errorTranslator },
253
1355
  data: {
254
1356
  env_key: muxConfig.envKey,
255
- player_name: "Motto Video Player",
256
- player_version: "1.0.0",
1357
+ player_name: playerName,
1358
+ player_version: version,
257
1359
  player_init_time: playerInitTime,
258
1360
  ...muxConfig.metadata
259
1361
  }
@@ -301,29 +1403,165 @@ var useMuxAnalytics = (playerRef, muxConfig, onMuxReady, onMuxDataUpdate) => {
301
1403
  };
302
1404
 
303
1405
  // src/hooks/useShakaUI.ts
304
- var import_react5 = require("react");
1406
+ var import_react6 = require("react");
305
1407
  var import_shaka_player3 = require("shaka-player/dist/shaka-player.ui");
306
- var SkipBackButton = class {
307
- constructor(parent, controls, onSkipBack) {
308
- this.parent = parent;
309
- this.controls = controls;
310
- this.eventManager = { listen: (element, event, handler) => {
311
- element.addEventListener(event, handler);
312
- } };
313
- if (typeof document === "undefined") {
314
- console.warn("SkipBackButton: document is not available (SSR environment)");
315
- return;
1408
+
1409
+ // src/icons/SkipBackIcon.tsx
1410
+ var import_jsx_runtime = require("react/jsx-runtime");
1411
+ var SkipBackIcon = ({ size = 24, className = "" }) => {
1412
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
1413
+ "svg",
1414
+ {
1415
+ width: size,
1416
+ height: size,
1417
+ strokeWidth: "2",
1418
+ viewBox: "0 0 24 24",
1419
+ fill: "none",
1420
+ xmlns: "http://www.w3.org/2000/svg",
1421
+ className,
1422
+ children: [
1423
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1424
+ "path",
1425
+ {
1426
+ d: "M3 13C3 17.9706 7.02944 22 12 22C16.9706 22 21 17.9706 21 13C21 8.02944 16.9706 4 12 4",
1427
+ stroke: "currentColor",
1428
+ strokeWidth: "2",
1429
+ strokeLinecap: "round",
1430
+ strokeLinejoin: "round"
1431
+ }
1432
+ ),
1433
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1434
+ "path",
1435
+ {
1436
+ d: "M9 9L9 16",
1437
+ stroke: "currentColor",
1438
+ strokeWidth: "2",
1439
+ strokeLinecap: "round",
1440
+ strokeLinejoin: "round"
1441
+ }
1442
+ ),
1443
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1444
+ "path",
1445
+ {
1446
+ 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",
1447
+ stroke: "currentColor",
1448
+ strokeWidth: "2",
1449
+ strokeLinecap: "round",
1450
+ strokeLinejoin: "round"
1451
+ }
1452
+ ),
1453
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1454
+ "path",
1455
+ {
1456
+ d: "M12 4L4.5 4M4.5 4L6.5 2M4.5 4L6.5 6",
1457
+ stroke: "currentColor",
1458
+ strokeWidth: "2",
1459
+ strokeLinecap: "round",
1460
+ strokeLinejoin: "round"
1461
+ }
1462
+ )
1463
+ ]
316
1464
  }
1465
+ );
1466
+ };
1467
+
1468
+ // src/icons/SkipForwardIcon.tsx
1469
+ var import_jsx_runtime2 = require("react/jsx-runtime");
1470
+ var SkipForwardIcon = ({ size = 24, className = "" }) => {
1471
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
1472
+ "svg",
1473
+ {
1474
+ width: size,
1475
+ height: size,
1476
+ strokeWidth: "2",
1477
+ viewBox: "0 0 24 24",
1478
+ fill: "none",
1479
+ xmlns: "http://www.w3.org/2000/svg",
1480
+ className,
1481
+ children: [
1482
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1483
+ "path",
1484
+ {
1485
+ d: "M21 13C21 17.9706 16.9706 22 12 22C7.02944 22 3 17.9706 3 13C3 8.02944 7.02944 4 12 4",
1486
+ stroke: "currentColor",
1487
+ strokeLinecap: "round",
1488
+ strokeLinejoin: "round"
1489
+ }
1490
+ ),
1491
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1492
+ "path",
1493
+ {
1494
+ d: "M12 4H19.5M19.5 4L17.5 2M19.5 4L17.5 6",
1495
+ stroke: "currentColor",
1496
+ strokeLinecap: "round",
1497
+ strokeLinejoin: "round"
1498
+ }
1499
+ ),
1500
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1501
+ "path",
1502
+ {
1503
+ d: "M9 9L9 16",
1504
+ stroke: "currentColor",
1505
+ strokeLinecap: "round",
1506
+ strokeLinejoin: "round"
1507
+ }
1508
+ ),
1509
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1510
+ "path",
1511
+ {
1512
+ 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",
1513
+ stroke: "currentColor",
1514
+ strokeLinecap: "round",
1515
+ strokeLinejoin: "round"
1516
+ }
1517
+ )
1518
+ ]
1519
+ }
1520
+ );
1521
+ };
1522
+
1523
+ // src/icons/BigPlayIcon.tsx
1524
+ var import_jsx_runtime3 = require("react/jsx-runtime");
1525
+ var BigPlayIcon = ({ size = 40, className = "" }) => {
1526
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1527
+ "svg",
1528
+ {
1529
+ width: size,
1530
+ height: size,
1531
+ viewBox: "0 0 24 24",
1532
+ fill: "currentColor",
1533
+ xmlns: "http://www.w3.org/2000/svg",
1534
+ className,
1535
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1536
+ "path",
1537
+ {
1538
+ fillRule: "evenodd",
1539
+ 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",
1540
+ clipRule: "evenodd"
1541
+ }
1542
+ )
1543
+ }
1544
+ );
1545
+ };
1546
+
1547
+ // src/utils/renderIcon.ts
1548
+ var import_server = require("react-dom/server");
1549
+ var import_react5 = require("react");
1550
+ var renderIcon = (Component, props = {}) => {
1551
+ return (0, import_server.renderToStaticMarkup)((0, import_react5.createElement)(Component, props));
1552
+ };
1553
+
1554
+ // src/hooks/useShakaUI.ts
1555
+ var SkipBackButton = class {
1556
+ constructor(parent, controls, onSkipBack, iconSize = 24) {
1557
+ this.parent = parent;
1558
+ this.controls = controls;
1559
+ this.eventManager = { listen: (element, event, handler) => {
1560
+ element.addEventListener(event, handler);
1561
+ } };
317
1562
  this.button_ = document.createElement("button");
318
1563
  this.button_.className = "shaka-button motto-native-skip-button";
319
- this.button_.innerHTML = `
320
- <svg width="24px" stroke-width="2" height="24px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
321
- <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>
322
- <path d="M9 9L9 16" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
323
- <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>
324
- <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>
325
- </svg>
326
- `;
1564
+ this.button_.innerHTML = renderIcon(SkipBackIcon, { size: iconSize });
327
1565
  this.button_.title = "Skip back 15 seconds";
328
1566
  this.button_.setAttribute("aria-label", "Skip back 15 seconds");
329
1567
  this.parent.appendChild(this.button_);
@@ -336,28 +1574,21 @@ var SkipBackButton = class {
336
1574
  }
337
1575
  });
338
1576
  }
1577
+ // Shaka UI will call `release` when the controls are destroyed.
1578
+ // Provide a no-op implementation to avoid TypeErrors.
1579
+ release() {
1580
+ }
339
1581
  };
340
1582
  var SkipForwardButton = class {
341
- constructor(parent, controls, onSkipForward) {
1583
+ constructor(parent, controls, onSkipForward, iconSize = 24) {
342
1584
  this.parent = parent;
343
1585
  this.controls = controls;
344
1586
  this.eventManager = { listen: (element, event, handler) => {
345
1587
  element.addEventListener(event, handler);
346
1588
  } };
347
- if (typeof document === "undefined") {
348
- console.warn("SkipForwardButton: document is not available (SSR environment)");
349
- return;
350
- }
351
1589
  this.button_ = document.createElement("button");
352
1590
  this.button_.className = "shaka-button motto-native-skip-button";
353
- this.button_.innerHTML = `
354
- <svg fill="none" height="24" stroke-width="2" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
355
- <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"/>
356
- <path d="M12 4H19.5M19.5 4L17.5 2M19.5 4L17.5 6" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
357
- <path d="M9 9L9 16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
358
- <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"/>
359
- </svg>
360
- `;
1591
+ this.button_.innerHTML = renderIcon(SkipForwardIcon, { size: iconSize });
361
1592
  this.button_.title = "Skip forward 15 seconds";
362
1593
  this.button_.setAttribute("aria-label", "Skip forward 15 seconds");
363
1594
  this.parent.appendChild(this.button_);
@@ -370,266 +1601,56 @@ var SkipForwardButton = class {
370
1601
  }
371
1602
  });
372
1603
  }
1604
+ release() {
1605
+ }
373
1606
  };
374
1607
  var SkipBackButtonFactory = class {
375
- constructor(onSkipBack) {
1608
+ constructor(onSkipBack, iconSize) {
376
1609
  this.onSkipBack = onSkipBack;
1610
+ this.iconSize = iconSize;
377
1611
  }
378
1612
  create(rootElement, controls) {
379
- return new SkipBackButton(rootElement, controls, this.onSkipBack);
1613
+ return new SkipBackButton(rootElement, controls, this.onSkipBack, this.iconSize);
380
1614
  }
381
1615
  };
382
1616
  var SkipForwardButtonFactory = class {
383
- constructor(onSkipForward) {
1617
+ constructor(onSkipForward, iconSize) {
384
1618
  this.onSkipForward = onSkipForward;
1619
+ this.iconSize = iconSize;
385
1620
  }
386
1621
  create(rootElement, controls) {
387
- return new SkipForwardButton(rootElement, controls, this.onSkipForward);
1622
+ return new SkipForwardButton(rootElement, controls, this.onSkipForward, this.iconSize);
388
1623
  }
389
1624
  };
390
- var MobilePlayButton = class {
391
- constructor(parent, controls) {
392
- this.parent = parent;
393
- this.controls = controls;
394
- if (typeof document === "undefined") {
395
- console.warn("MobilePlayButton: document is not available (SSR environment)");
396
- return;
397
- }
398
- this.video = controls?.getVideo?.() || parent.querySelector("video") || document.querySelector("video");
399
- if (!this.video) {
400
- console.error("MobilePlayButton: No video element found");
401
- return;
402
- }
403
- this.eventManager = { listen: (element, event, handler) => {
404
- element.addEventListener(event, handler);
405
- } };
406
- this.button_ = document.createElement("button");
407
- this.button_.className = "motto-mobile-play-button";
408
- this.updateIcon();
409
- this.parent.appendChild(this.button_);
410
- this.eventManager.listen(this.button_, "click", () => {
411
- if (this.video.paused) {
412
- this.video.play();
413
- } else {
414
- this.video.pause();
415
- }
416
- });
417
- this.eventManager.listen(this.video, "play", () => this.updateIcon());
418
- this.eventManager.listen(this.video, "pause", () => this.updateIcon());
419
- }
420
- updateIcon() {
421
- if (this.video.paused) {
422
- this.button_.innerHTML = `
423
- <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" viewBox="0 0 24 24" fill="currentColor">
424
- <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" />
425
- </svg>
426
- `;
427
- this.button_.setAttribute("aria-label", "Play");
428
- } else {
429
- this.button_.innerHTML = `
430
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
431
- <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" />
432
- </svg>
433
- `;
434
- this.button_.setAttribute("aria-label", "Pause");
435
- }
436
- }
437
- };
438
- var MobileSkipBackButton = class {
439
- constructor(parent, controls, onSkipBack) {
440
- this.parent = parent;
441
- this.controls = controls;
442
- if (typeof document === "undefined") {
443
- console.warn("MobileSkipBackButton: document is not available (SSR environment)");
444
- return;
445
- }
446
- this.video = controls?.getVideo?.() || parent.querySelector("video") || document.querySelector("video");
447
- if (!this.video) {
448
- console.error("MobileSkipBackButton: No video element found");
449
- return;
450
- }
451
- this.eventManager = { listen: (element, event, handler) => {
452
- element.addEventListener(event, handler);
453
- } };
454
- this.button_ = document.createElement("button");
455
- this.button_.className = "motto-mobile-skip-button";
456
- this.button_.innerHTML = `
457
- <svg width="20px" stroke-width="2" height="20px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
458
- <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>
459
- <path d="M9 9L9 16" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
460
- <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>
461
- <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>
462
- </svg>
463
- `;
464
- this.button_.setAttribute("aria-label", "Skip back 15 seconds");
465
- this.parent.appendChild(this.button_);
466
- this.eventManager.listen(this.button_, "click", () => {
467
- const newTime = Math.max(0, this.video.currentTime - 15);
468
- this.video.currentTime = newTime;
469
- onSkipBack?.(newTime);
470
- });
471
- }
472
- };
473
- var MobileSkipForwardButton = class {
474
- constructor(parent, controls, onSkipForward) {
475
- this.parent = parent;
476
- this.controls = controls;
477
- if (typeof document === "undefined") {
478
- console.warn("MobileSkipForwardButton: document is not available (SSR environment)");
479
- return;
480
- }
481
- this.video = controls?.getVideo?.() || parent.querySelector("video") || document.querySelector("video");
482
- if (!this.video) {
483
- console.error("MobileSkipForwardButton: No video element found");
484
- return;
485
- }
486
- this.eventManager = { listen: (element, event, handler) => {
487
- element.addEventListener(event, handler);
488
- } };
489
- this.button_ = document.createElement("button");
490
- this.button_.className = "motto-mobile-skip-button";
491
- this.button_.innerHTML = `
492
- <svg fill="none" height="20" stroke-width="2" viewBox="0 0 24 24" width="20" xmlns="http://www.w3.org/2000/svg">
493
- <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"/>
494
- <path d="M12 4H19.5M19.5 4L17.5 2M19.5 4L17.5 6" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
495
- <path d="M9 9L9 16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
496
- <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"/>
497
- </svg>
498
- `;
499
- this.button_.setAttribute("aria-label", "Skip forward 15 seconds");
500
- this.parent.appendChild(this.button_);
501
- this.eventManager.listen(this.button_, "click", () => {
502
- const newTime = Math.min(this.video.duration || 0, this.video.currentTime + 15);
503
- this.video.currentTime = newTime;
504
- onSkipForward?.(newTime);
505
- });
506
- }
507
- };
508
- var MobileControlsContainer = class {
509
- constructor(parent, controls, onSkipBack, onSkipForward) {
510
- this.parent = parent;
511
- this.controls = controls;
512
- if (typeof document === "undefined") {
513
- console.warn("MobileControlsContainer: document is not available (SSR environment)");
514
- return;
515
- }
516
- if (!parent) {
517
- console.error("MobileControlsContainer: No parent element provided");
518
- return;
519
- }
520
- this.container_ = document.createElement("div");
521
- this.container_.className = "motto-mobile-controls-overlay";
522
- const controlsGroup = document.createElement("div");
523
- controlsGroup.className = "motto-mobile-controls-group";
524
- new MobileSkipBackButton(controlsGroup, controls, onSkipBack);
525
- new MobilePlayButton(controlsGroup, controls);
526
- new MobileSkipForwardButton(controlsGroup, controls, onSkipForward);
527
- this.container_.appendChild(controlsGroup);
528
- this.parent.appendChild(this.container_);
529
- this.setupVisibilitySync();
530
- }
531
- setupVisibilitySync() {
532
- setTimeout(() => {
533
- this.syncVisibility();
534
- this.observer = new MutationObserver((mutations) => {
535
- mutations.forEach((mutation) => {
536
- if (mutation.type === "attributes" && mutation.attributeName === "class") {
537
- this.syncVisibility();
538
- }
539
- });
540
- });
541
- this.observer.observe(this.parent, {
542
- attributes: true,
543
- attributeFilter: ["class"]
544
- });
545
- const video = this.controls?.getVideo?.() || this.parent.querySelector("video");
546
- if (video) {
547
- video.addEventListener("play", () => {
548
- setTimeout(() => this.syncVisibility(), 50);
549
- });
550
- video.addEventListener("pause", () => {
551
- setTimeout(() => this.syncVisibility(), 50);
552
- });
553
- }
554
- }, 1e3);
555
- }
556
- syncVisibility() {
557
- const mainContainer = this.parent;
558
- const hasNoCursor = mainContainer.classList.contains("no-cursor");
559
- const video = this.controls?.getVideo?.() || this.parent.querySelector("video");
560
- const isVideoPaused = video ? video.paused : false;
561
- const isControlsVisible = !hasNoCursor || isVideoPaused;
562
- if (this.container_) {
563
- if (isControlsVisible) {
564
- this.container_.style.opacity = "1";
565
- this.container_.style.pointerEvents = "none";
566
- } else {
567
- this.container_.style.opacity = "0";
568
- this.container_.style.pointerEvents = "none";
569
- }
570
- }
571
- }
572
- isElementVisible(element) {
573
- if (typeof window === "undefined") {
574
- return false;
575
- }
576
- const style = window.getComputedStyle(element);
577
- const hasHiddenClass = element.classList.contains("shaka-hidden") || element.classList.contains("hidden") || element.classList.contains("shaka-fade-out");
578
- return style.display !== "none" && style.visibility !== "hidden" && style.opacity !== "0" && !element.hidden && !hasHiddenClass;
579
- }
580
- };
581
- var MobileControlsContainerFactory = class {
582
- constructor(onSkipBack, onSkipForward) {
583
- this.onSkipBack = onSkipBack;
584
- this.onSkipForward = onSkipForward;
585
- }
586
- create(rootElement, controls) {
587
- return new MobileControlsContainer(rootElement, controls, this.onSkipBack, this.onSkipForward);
588
- }
589
- };
590
- var useShakaUI = (playerRef, containerRef, videoRef, controls, chromecastConfig, seekbarColors, onSkipBack, onSkipForward) => {
591
- const uiRef = (0, import_react5.useRef)(null);
592
- const registeredElements = (0, import_react5.useRef)(/* @__PURE__ */ new Set());
593
- const initializeUI = (0, import_react5.useCallback)(async () => {
594
- if (typeof window === "undefined" || typeof document === "undefined") {
595
- console.warn("useShakaUI: Cannot initialize UI in SSR environment");
596
- return null;
597
- }
1625
+ var useShakaUI = (playerRef, containerRef, videoRef, controls, chromecastConfig, seekbarColors, onSkipBack, onSkipForward, iconSizes) => {
1626
+ const uiRef = (0, import_react6.useRef)(null);
1627
+ const registeredElements = (0, import_react6.useRef)(/* @__PURE__ */ new Set());
1628
+ const initializeUI = (0, import_react6.useCallback)(async () => {
598
1629
  if (!controls || !containerRef.current || !playerRef.current || !videoRef.current) {
599
1630
  return null;
600
1631
  }
601
- const isMobile = typeof window !== "undefined" && typeof navigator !== "undefined" && (window.innerWidth <= 767 || /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent));
602
1632
  if (!registeredElements.current.has("skip_back_button")) {
603
- import_shaka_player3.ui.Controls.registerElement("skip_back_button", new SkipBackButtonFactory(onSkipBack));
1633
+ import_shaka_player3.ui.Controls.registerElement("skip_back_button", new SkipBackButtonFactory(onSkipBack, iconSizes?.skipButtons));
604
1634
  registeredElements.current.add("skip_back_button");
605
1635
  }
606
1636
  if (!registeredElements.current.has("skip_forward_button")) {
607
- import_shaka_player3.ui.Controls.registerElement("skip_forward_button", new SkipForwardButtonFactory(onSkipForward));
1637
+ import_shaka_player3.ui.Controls.registerElement("skip_forward_button", new SkipForwardButtonFactory(onSkipForward, iconSizes?.skipButtons));
608
1638
  registeredElements.current.add("skip_forward_button");
609
1639
  }
610
- if (isMobile) {
611
- if (!registeredElements.current.has("mobile_controls_container")) {
612
- import_shaka_player3.ui.Controls.registerElement("mobile_controls_container", new MobileControlsContainerFactory(onSkipBack, onSkipForward));
613
- registeredElements.current.add("mobile_controls_container");
614
- }
615
- }
616
1640
  const ui = new import_shaka_player3.ui.Overlay(playerRef.current, containerRef.current, videoRef.current);
617
1641
  uiRef.current = ui;
618
- const controlPanelElements = isMobile ? [
1642
+ const isMobile = window.innerWidth <= 767;
1643
+ const controlPanelElements = [
1644
+ ...isMobile ? [] : ["skip_back_button"],
1645
+ ...isMobile ? [] : ["play_pause"],
1646
+ ...isMobile ? [] : ["skip_forward_button"],
619
1647
  "mute",
1648
+ ...isMobile ? [] : ["volume"],
1649
+ // Only include volume on desktop
620
1650
  "time_and_duration",
621
1651
  "spacer",
622
1652
  "fullscreen",
623
- "overflow_menu"
624
- ] : [
625
- "skip_back_button",
626
- "play_pause",
627
- "skip_forward_button",
628
- "mute",
629
- "volume",
630
- "time_and_duration",
631
- "spacer",
632
- "fullscreen",
1653
+ "cast",
633
1654
  "overflow_menu"
634
1655
  ];
635
1656
  const uiConfig = {
@@ -642,10 +1663,16 @@ var useShakaUI = (playerRef, containerRef, videoRef, controls, chromecastConfig,
642
1663
  // Progress/played portion (white)
643
1664
  },
644
1665
  controlPanelElements,
1666
+ addBigPlayButton: isMobile,
645
1667
  ...chromecastConfig?.receiverApplicationId && {
646
1668
  "castReceiverAppId": chromecastConfig.receiverApplicationId,
647
1669
  "castAndroidReceiverCompatible": false
648
- }
1670
+ },
1671
+ overflowMenuButtons: [
1672
+ "quality",
1673
+ "picture_in_picture",
1674
+ "playback_rate"
1675
+ ]
649
1676
  };
650
1677
  if (chromecastConfig?.receiverApplicationId) {
651
1678
  uiConfig.castReceiverAppId = chromecastConfig.receiverApplicationId;
@@ -653,17 +1680,33 @@ var useShakaUI = (playerRef, containerRef, videoRef, controls, chromecastConfig,
653
1680
  }
654
1681
  ui.configure(uiConfig);
655
1682
  if (isMobile) {
656
- setTimeout(() => {
657
- const container = containerRef.current;
658
- const video = videoRef.current;
659
- if (container && video) {
660
- new MobileControlsContainer(container, { getVideo: () => video }, onSkipBack, onSkipForward);
1683
+ const customizeBigPlayButton = () => {
1684
+ const bigPlayButton = containerRef.current?.querySelector(".shaka-big-play-button");
1685
+ if (bigPlayButton && !bigPlayButton.hasAttribute("data-customized")) {
1686
+ const buttonSize = iconSizes?.bigPlayButton || 40;
1687
+ bigPlayButton.innerHTML = renderIcon(BigPlayIcon, { size: buttonSize });
1688
+ bigPlayButton.setAttribute("data-customized", "true");
1689
+ const buttonElement = bigPlayButton;
1690
+ buttonElement.style.display = "flex";
1691
+ buttonElement.style.alignItems = "center";
1692
+ buttonElement.style.justifyContent = "center";
661
1693
  }
662
- }, 500);
1694
+ };
1695
+ setTimeout(customizeBigPlayButton, 100);
1696
+ const observer = new MutationObserver(() => {
1697
+ customizeBigPlayButton();
1698
+ });
1699
+ if (containerRef.current) {
1700
+ observer.observe(containerRef.current, {
1701
+ childList: true,
1702
+ subtree: true,
1703
+ attributes: false
1704
+ });
1705
+ }
663
1706
  }
664
1707
  return ui;
665
- }, [controls, containerRef, playerRef, videoRef, chromecastConfig, seekbarColors, onSkipBack, onSkipForward]);
666
- const destroyUI = (0, import_react5.useCallback)(() => {
1708
+ }, [controls, containerRef, playerRef, videoRef, chromecastConfig, seekbarColors, onSkipBack, onSkipForward, iconSizes]);
1709
+ const destroyUI = (0, import_react6.useCallback)(() => {
667
1710
  if (uiRef.current) {
668
1711
  try {
669
1712
  uiRef.current.destroy();
@@ -681,9 +1724,9 @@ var useShakaUI = (playerRef, containerRef, videoRef, controls, chromecastConfig,
681
1724
  };
682
1725
 
683
1726
  // src/hooks/useEventHandlers.ts
684
- var import_react6 = require("react");
1727
+ var import_react7 = require("react");
685
1728
  var useEventHandlers = (videoRef, handlers) => {
686
- const setupEventListeners = (0, import_react6.useCallback)(() => {
1729
+ const setupEventListeners = (0, import_react7.useCallback)(() => {
687
1730
  const video = videoRef.current;
688
1731
  if (!video) return;
689
1732
  const { onPlay, onPause, onEnded, onLoadStart, onCanPlay } = handlers;
@@ -693,7 +1736,7 @@ var useEventHandlers = (videoRef, handlers) => {
693
1736
  if (onLoadStart) video.addEventListener("loadstart", onLoadStart);
694
1737
  if (onCanPlay) video.addEventListener("canplay", onCanPlay);
695
1738
  }, [videoRef, handlers]);
696
- const cleanupEventListeners = (0, import_react6.useCallback)(() => {
1739
+ const cleanupEventListeners = (0, import_react7.useCallback)(() => {
697
1740
  const video = videoRef.current;
698
1741
  if (!video) return;
699
1742
  const { onPlay, onPause, onEnded, onLoadStart, onCanPlay } = handlers;
@@ -710,12 +1753,13 @@ var useEventHandlers = (videoRef, handlers) => {
710
1753
  };
711
1754
 
712
1755
  // src/hooks/useLiveBadge.ts
713
- var import_react7 = require("react");
1756
+ var import_react8 = require("react");
714
1757
  var useLiveBadge = (playerRef, options = {}) => {
715
- const [isLive, setIsLive] = (0, import_react7.useState)(false);
716
- const [isVisible, setIsVisible] = (0, import_react7.useState)(false);
717
- const intervalRef = (0, import_react7.useRef)(null);
718
- const { enabled = true, onLiveStateChange } = options;
1758
+ const [isLive, setIsLive] = (0, import_react8.useState)(false);
1759
+ const [isVisible, setIsVisible] = (0, import_react8.useState)(false);
1760
+ const [isNearLiveEdge, setIsNearLiveEdge] = (0, import_react8.useState)(false);
1761
+ const intervalRef = (0, import_react8.useRef)(null);
1762
+ const { enabled = true, onLiveStateChange, liveThresholdSeconds = 15 } = options;
719
1763
  const checkLiveStatus = () => {
720
1764
  if (!playerRef.current || !enabled) {
721
1765
  return;
@@ -734,33 +1778,53 @@ var useLiveBadge = (playerRef, options = {}) => {
734
1778
  return;
735
1779
  }
736
1780
  const liveStatus = timeline.isLive();
1781
+ let nearLiveEdge = false;
1782
+ if (liveStatus) {
1783
+ try {
1784
+ const seekRange = player.getSeekRange();
1785
+ const videoElement = player.getMediaElement();
1786
+ if (seekRange && videoElement) {
1787
+ const liveEdge = seekRange.end;
1788
+ const currentTime = videoElement.currentTime;
1789
+ const timeBehindLive = liveEdge - currentTime;
1790
+ nearLiveEdge = timeBehindLive <= liveThresholdSeconds;
1791
+ }
1792
+ } catch (error) {
1793
+ console.error("Error checking live edge position:", error);
1794
+ nearLiveEdge = liveStatus;
1795
+ }
1796
+ }
737
1797
  if (liveStatus !== isLive) {
738
1798
  setIsLive(liveStatus);
739
- setIsVisible(liveStatus);
740
1799
  onLiveStateChange?.(liveStatus);
741
1800
  }
1801
+ if (nearLiveEdge !== isNearLiveEdge) {
1802
+ setIsNearLiveEdge(nearLiveEdge);
1803
+ setIsVisible(nearLiveEdge);
1804
+ }
742
1805
  } catch (error) {
743
1806
  if (error instanceof Error && !error.message.includes("not a function")) {
744
1807
  console.error("Error checking live status:", error);
745
1808
  }
746
1809
  }
747
1810
  };
748
- (0, import_react7.useEffect)(() => {
1811
+ (0, import_react8.useEffect)(() => {
749
1812
  if (!enabled) {
750
1813
  setIsLive(false);
751
1814
  setIsVisible(false);
1815
+ setIsNearLiveEdge(false);
752
1816
  return;
753
1817
  }
754
1818
  checkLiveStatus();
755
- intervalRef.current = setInterval(checkLiveStatus, 2e3);
1819
+ intervalRef.current = setInterval(checkLiveStatus, 1e3);
756
1820
  return () => {
757
1821
  if (intervalRef.current) {
758
1822
  clearInterval(intervalRef.current);
759
1823
  intervalRef.current = null;
760
1824
  }
761
1825
  };
762
- }, [enabled, playerRef.current]);
763
- (0, import_react7.useEffect)(() => {
1826
+ }, [enabled, playerRef.current, liveThresholdSeconds]);
1827
+ (0, import_react8.useEffect)(() => {
764
1828
  return () => {
765
1829
  if (intervalRef.current) {
766
1830
  clearInterval(intervalRef.current);
@@ -772,6 +1836,7 @@ var useLiveBadge = (playerRef, options = {}) => {
772
1836
  return {
773
1837
  isLive,
774
1838
  isVisible,
1839
+ isNearLiveEdge,
775
1840
  hideBadge,
776
1841
  showBadge,
777
1842
  checkLiveStatus
@@ -779,23 +1844,52 @@ var useLiveBadge = (playerRef, options = {}) => {
779
1844
  };
780
1845
 
781
1846
  // src/hooks/usePosterFallback.ts
782
- var import_react8 = require("react");
1847
+ var import_react9 = require("react");
783
1848
 
784
1849
  // src/hooks/useLiveIndicator.ts
785
- var import_react9 = require("react");
786
- var useLiveIndicator = (containerRef, options = {}) => {
787
- const observerRef = (0, import_react9.useRef)(null);
1850
+ var import_react10 = require("react");
1851
+ var useLiveIndicator = (containerRef, playerRef, options = {}) => {
1852
+ const observerRef = (0, import_react10.useRef)(null);
1853
+ const intervalRef = (0, import_react10.useRef)(null);
788
1854
  const {
789
1855
  enabled = true,
790
1856
  indicatorColor = "#ff0000",
791
1857
  indicatorSize = 8,
792
- showPulseAnimation = true
1858
+ showPulseAnimation = true,
1859
+ liveThresholdSeconds = 15
793
1860
  } = options;
794
- (0, import_react9.useEffect)(() => {
795
- if (typeof window === "undefined" || typeof document === "undefined") {
796
- return;
1861
+ const isNearLiveEdge = (player) => {
1862
+ if (!player) return false;
1863
+ try {
1864
+ if (!player.getManifest || !player.getPresentationTimeline || typeof player.getPresentationTimeline !== "function") {
1865
+ return false;
1866
+ }
1867
+ const manifest = player.getManifest();
1868
+ if (!manifest) {
1869
+ return false;
1870
+ }
1871
+ const timeline = player.getPresentationTimeline();
1872
+ if (!timeline || typeof timeline.isLive !== "function") {
1873
+ return false;
1874
+ }
1875
+ const liveStatus = timeline.isLive();
1876
+ if (!liveStatus) return false;
1877
+ const seekRange = player.getSeekRange();
1878
+ const videoElement = player.getMediaElement();
1879
+ if (seekRange && videoElement) {
1880
+ const liveEdge = seekRange.end;
1881
+ const currentTime = videoElement.currentTime;
1882
+ const timeBehindLive = liveEdge - currentTime;
1883
+ return timeBehindLive <= liveThresholdSeconds;
1884
+ }
1885
+ return false;
1886
+ } catch (error) {
1887
+ console.error("Error checking live edge position in indicator:", error);
1888
+ return false;
797
1889
  }
798
- if (!containerRef.current || !enabled) {
1890
+ };
1891
+ (0, import_react10.useEffect)(() => {
1892
+ if (!containerRef.current || !playerRef.current || !enabled) {
799
1893
  return;
800
1894
  }
801
1895
  const addLiveIndicator = (currentTimeElement) => {
@@ -826,7 +1920,7 @@ var useLiveIndicator = (containerRef, options = {}) => {
826
1920
  const currentTimeElements = containerRef.current?.querySelectorAll(".shaka-current-time");
827
1921
  currentTimeElements?.forEach((element) => {
828
1922
  const textContent = element.textContent?.trim() || "";
829
- if (textContent.toLowerCase().includes("live")) {
1923
+ if (textContent.toLowerCase().includes("live") && isNearLiveEdge(playerRef.current)) {
830
1924
  addLiveIndicator(element);
831
1925
  } else {
832
1926
  removeLiveIndicator(element);
@@ -834,6 +1928,7 @@ var useLiveIndicator = (containerRef, options = {}) => {
834
1928
  });
835
1929
  };
836
1930
  checkForLiveContent();
1931
+ intervalRef.current = setInterval(checkForLiveContent, 1e3);
837
1932
  observerRef.current = new MutationObserver((mutations) => {
838
1933
  let shouldCheck = false;
839
1934
  mutations.forEach((mutation) => {
@@ -859,333 +1954,1264 @@ var useLiveIndicator = (containerRef, options = {}) => {
859
1954
  characterData: true,
860
1955
  characterDataOldValue: true
861
1956
  });
862
- const intervalId = setInterval(checkForLiveContent, 1e3);
863
1957
  return () => {
864
1958
  if (observerRef.current) {
865
1959
  observerRef.current.disconnect();
866
1960
  }
867
- clearInterval(intervalId);
1961
+ if (intervalRef.current) {
1962
+ clearInterval(intervalRef.current);
1963
+ }
868
1964
  };
869
- }, [containerRef, enabled, indicatorColor, indicatorSize, showPulseAnimation]);
1965
+ }, [containerRef, playerRef, enabled, indicatorColor, indicatorSize, showPulseAnimation, liveThresholdSeconds]);
870
1966
  return {
871
1967
  // Expose method to manually trigger check if needed
872
1968
  checkForLiveContent: () => {
873
1969
  const currentTimeElements = containerRef.current?.querySelectorAll(".shaka-current-time");
874
1970
  currentTimeElements?.forEach((element) => {
875
1971
  const textContent = element.textContent?.trim() || "";
876
- if (textContent.toLowerCase().includes("live")) {
1972
+ if (textContent.toLowerCase().includes("live") && isNearLiveEdge(playerRef.current)) {
877
1973
  }
878
1974
  });
879
1975
  }
880
1976
  };
881
1977
  };
882
1978
 
883
- // src/hooks/useShakaAbsoluteTime.ts
884
- var import_react10 = require("react");
885
- function useShakaAbsoluteTime({
886
- player,
887
- controls,
888
- manualStreamStartDate
889
- }) {
890
- const [detectedStreamStart, setDetectedStreamStart] = (0, import_react10.useState)(null);
891
- const detectStreamStartFromManifest = async () => {
892
- if (!player) return null;
893
- try {
894
- const manifest = player.getManifest();
895
- if (!manifest) return null;
896
- const isLive = player.isLive();
897
- if (!isLive) return null;
898
- const video = player.getMediaElement();
899
- if (video && video.seekable && video.seekable.length > 0) {
900
- const seekableStart = video.seekable.start(0);
901
- const seekableEnd = video.seekable.end(0);
902
- const seekableDuration = seekableEnd - seekableStart;
903
- const now = Date.now() / 1e3;
904
- const estimatedStreamStart = now - seekableDuration;
905
- return new Date(estimatedStreamStart * 1e3);
906
- }
907
- const stats = player.getStats();
908
- if (stats && stats.manifestTimeSeconds) {
909
- return new Date((Date.now() / 1e3 - stats.manifestTimeSeconds) * 1e3);
910
- }
911
- try {
912
- const bufferedTimeRanges = video?.buffered;
913
- if (bufferedTimeRanges && bufferedTimeRanges.length > 0) {
914
- const totalBuffered = bufferedTimeRanges.end(bufferedTimeRanges.length - 1);
915
- const now = Date.now() / 1e3;
916
- return new Date((now - totalBuffered) * 1e3);
1979
+ // src/hooks/useKeyboardControls.ts
1980
+ var import_react11 = require("react");
1981
+ var useKeyboardControls = (videoRef, options = {}) => {
1982
+ const { skipBack, skipForward, enabled = true } = options;
1983
+ const isDesktop = (0, import_react11.useCallback)(() => {
1984
+ return window.innerWidth > 767 && !/Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
1985
+ }, []);
1986
+ const handleKeydown = (0, import_react11.useCallback)((event) => {
1987
+ if (!enabled || !isDesktop() || !videoRef.current) return;
1988
+ const activeElement = document.activeElement;
1989
+ if (activeElement && (activeElement.tagName === "INPUT" || activeElement.tagName === "TEXTAREA" || activeElement.isContentEditable)) {
1990
+ return;
1991
+ }
1992
+ switch (event.key) {
1993
+ case "ArrowLeft":
1994
+ event.preventDefault();
1995
+ skipBack?.();
1996
+ break;
1997
+ case "ArrowRight":
1998
+ event.preventDefault();
1999
+ skipForward?.();
2000
+ break;
2001
+ case " ":
2002
+ case "Space":
2003
+ event.preventDefault();
2004
+ if (videoRef.current.paused) {
2005
+ videoRef.current.play();
2006
+ } else {
2007
+ videoRef.current.pause();
917
2008
  }
918
- } catch (error) {
919
- console.warn("Error extracting buffered timing info:", error);
2009
+ break;
2010
+ }
2011
+ }, [enabled, videoRef, skipBack, skipForward, isDesktop]);
2012
+ (0, import_react11.useEffect)(() => {
2013
+ if (!enabled || !isDesktop()) return;
2014
+ document.addEventListener("keydown", handleKeydown);
2015
+ return () => {
2016
+ document.removeEventListener("keydown", handleKeydown);
2017
+ };
2018
+ }, [handleKeydown, enabled, isDesktop]);
2019
+ return {
2020
+ isDesktop: isDesktop()
2021
+ };
2022
+ };
2023
+
2024
+ // src/components/Loading.tsx
2025
+ var import_tailwind_merge = require("tailwind-merge");
2026
+ var import_jsx_runtime4 = require("react/jsx-runtime");
2027
+ var Loading = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
2028
+ "div",
2029
+ {
2030
+ className: (0, import_tailwind_merge.twMerge)(
2031
+ "relative bg-[#151515] md:rounded-2xl! overflow-hidden aspect-video text-white w-full h-full flex justify-center items-center text-[10px]",
2032
+ className
2033
+ ),
2034
+ role: "status",
2035
+ children: [
2036
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "shaka-spinner-container flex justify-center items-center", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
2037
+ "svg",
2038
+ {
2039
+ className: "shaka-spinner-svg animate-spin h-12 w-12",
2040
+ viewBox: "0 0 64 64",
2041
+ xmlns: "http://www.w3.org/2000/svg",
2042
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
2043
+ "circle",
2044
+ {
2045
+ className: "shaka-spinner-path",
2046
+ cx: "32",
2047
+ cy: "32",
2048
+ r: "28",
2049
+ strokeWidth: "4",
2050
+ strokeLinecap: "round"
2051
+ }
2052
+ )
2053
+ }
2054
+ ) }),
2055
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "sr-only", children: "Loading..." })
2056
+ ]
2057
+ }
2058
+ );
2059
+
2060
+ // src/components/ErrorScreen.tsx
2061
+ var import_jsx_runtime5 = require("react/jsx-runtime");
2062
+ var ErrorScreen = ({ title, description }) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "w-full h-full md:rounded-2xl! aspect-video bg-black", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "bg-[#151515] text-white w-full h-full flex justify-stretch items-center", children: [
2063
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
2064
+ "svg",
2065
+ {
2066
+ className: "w-24 h-24 m-6",
2067
+ fill: "none",
2068
+ stroke: "currentColor",
2069
+ strokeWidth: "2",
2070
+ style: { width: 96 },
2071
+ viewBox: "0 0 24 24",
2072
+ xmlns: "http://www.w3.org/2000/svg",
2073
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
2074
+ "path",
2075
+ {
2076
+ d: "M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z",
2077
+ strokeLinecap: "round",
2078
+ strokeLinejoin: "round"
2079
+ }
2080
+ )
2081
+ }
2082
+ ),
2083
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { children: [
2084
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("h3", { className: "text-2xl mb-2", children: title || "Playback Error" }),
2085
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "text-lg", children: description || "Unable to play the video. Please try again later." })
2086
+ ] })
2087
+ ] }) });
2088
+
2089
+ // src/components/Title.tsx
2090
+ var import_jsx_runtime6 = require("react/jsx-runtime");
2091
+ var Title = ({ title }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/70 to-transparent p-4", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h2", { className: "text-white text-xl font-semibold", children: title }) });
2092
+
2093
+ // src/components/LiveBadge.tsx
2094
+ var import_jsx_runtime7 = require("react/jsx-runtime");
2095
+ var LiveBadge = ({
2096
+ isVisible,
2097
+ position = "top-right",
2098
+ className = "",
2099
+ style = {},
2100
+ text = "LIVE"
2101
+ }) => {
2102
+ if (!isVisible) return null;
2103
+ const positionClasses = {
2104
+ "top-left": "top-4 left-4",
2105
+ "top-right": "top-4 right-4",
2106
+ "bottom-left": "bottom-4 left-4",
2107
+ "bottom-right": "bottom-4 right-4"
2108
+ };
2109
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2110
+ "div",
2111
+ {
2112
+ className: `
2113
+ absolute z-50
2114
+ ${positionClasses[position]}
2115
+ bg-red-600 text-white
2116
+ px-2 py-1
2117
+ rounded-md
2118
+ text-xs font-bold
2119
+ uppercase tracking-wide
2120
+ shadow-lg
2121
+ animate-pulse
2122
+ pointer-events-none
2123
+ ${className}
2124
+ `,
2125
+ style,
2126
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "flex items-center gap-1", children: [
2127
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "w-2 h-2 bg-white rounded-full animate-pulse" }),
2128
+ text
2129
+ ] })
2130
+ }
2131
+ );
2132
+ };
2133
+
2134
+ // src/styles.css
2135
+ styleInject(`/*! tailwindcss v4.1.8 | MIT License | https://tailwindcss.com */
2136
+ @layer properties;
2137
+ @layer theme, base, components, utilities;
2138
+ @layer theme {
2139
+ :root,
2140
+ :host {
2141
+ --font-sans:
2142
+ ui-sans-serif,
2143
+ system-ui,
2144
+ sans-serif,
2145
+ "Apple Color Emoji",
2146
+ "Segoe UI Emoji",
2147
+ "Segoe UI Symbol",
2148
+ "Noto Color Emoji";
2149
+ --font-mono:
2150
+ ui-monospace,
2151
+ SFMono-Regular,
2152
+ Menlo,
2153
+ Monaco,
2154
+ Consolas,
2155
+ "Liberation Mono",
2156
+ "Courier New",
2157
+ monospace;
2158
+ --color-red-600: oklch(57.7% 0.245 27.325);
2159
+ --color-black: #000;
2160
+ --color-white: #fff;
2161
+ --spacing: 0.25rem;
2162
+ --text-xs: 0.75rem;
2163
+ --text-xs--line-height: calc(1 / 0.75);
2164
+ --text-sm: 0.875rem;
2165
+ --text-sm--line-height: calc(1.25 / 0.875);
2166
+ --text-base: 1rem;
2167
+ --text-base--line-height: calc(1.5 / 1);
2168
+ --text-lg: 1.125rem;
2169
+ --text-lg--line-height: calc(1.75 / 1.125);
2170
+ --text-xl: 1.25rem;
2171
+ --text-xl--line-height: calc(1.75 / 1.25);
2172
+ --text-2xl: 1.5rem;
2173
+ --text-2xl--line-height: calc(2 / 1.5);
2174
+ --text-5xl: 3rem;
2175
+ --text-5xl--line-height: 1;
2176
+ --font-weight-medium: 500;
2177
+ --font-weight-semibold: 600;
2178
+ --font-weight-bold: 700;
2179
+ --tracking-wide: 0.025em;
2180
+ --tracking-widest: 0.1em;
2181
+ --radius-md: 0.375rem;
2182
+ --radius-2xl: 1rem;
2183
+ --animate-spin: spin 1s linear infinite;
2184
+ --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
2185
+ --aspect-video: 16 / 9;
2186
+ --default-transition-duration: 150ms;
2187
+ --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2188
+ --default-font-family: var(--font-sans);
2189
+ --default-mono-font-family: var(--font-mono);
2190
+ }
2191
+ }
2192
+ @layer base {
2193
+ *,
2194
+ ::after,
2195
+ ::before,
2196
+ ::backdrop,
2197
+ ::file-selector-button {
2198
+ box-sizing: border-box;
2199
+ margin: 0;
2200
+ padding: 0;
2201
+ border: 0 solid;
2202
+ }
2203
+ html,
2204
+ :host {
2205
+ line-height: 1.5;
2206
+ -webkit-text-size-adjust: 100%;
2207
+ tab-size: 4;
2208
+ 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");
2209
+ font-feature-settings: var(--default-font-feature-settings, normal);
2210
+ font-variation-settings: var(--default-font-variation-settings, normal);
2211
+ -webkit-tap-highlight-color: transparent;
2212
+ }
2213
+ hr {
2214
+ height: 0;
2215
+ color: inherit;
2216
+ border-top-width: 1px;
2217
+ }
2218
+ abbr:where([title]) {
2219
+ -webkit-text-decoration: underline dotted;
2220
+ text-decoration: underline dotted;
2221
+ }
2222
+ h1,
2223
+ h2,
2224
+ h3,
2225
+ h4,
2226
+ h5,
2227
+ h6 {
2228
+ font-size: inherit;
2229
+ font-weight: inherit;
2230
+ }
2231
+ a {
2232
+ color: inherit;
2233
+ -webkit-text-decoration: inherit;
2234
+ text-decoration: inherit;
2235
+ }
2236
+ b,
2237
+ strong {
2238
+ font-weight: bolder;
2239
+ }
2240
+ code,
2241
+ kbd,
2242
+ samp,
2243
+ pre {
2244
+ font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
2245
+ font-feature-settings: var(--default-mono-font-feature-settings, normal);
2246
+ font-variation-settings: var(--default-mono-font-variation-settings, normal);
2247
+ font-size: 1em;
2248
+ }
2249
+ small {
2250
+ font-size: 80%;
2251
+ }
2252
+ sub,
2253
+ sup {
2254
+ font-size: 75%;
2255
+ line-height: 0;
2256
+ position: relative;
2257
+ vertical-align: baseline;
2258
+ }
2259
+ sub {
2260
+ bottom: -0.25em;
2261
+ }
2262
+ sup {
2263
+ top: -0.5em;
2264
+ }
2265
+ table {
2266
+ text-indent: 0;
2267
+ border-color: inherit;
2268
+ border-collapse: collapse;
2269
+ }
2270
+ :-moz-focusring {
2271
+ outline: auto;
2272
+ }
2273
+ progress {
2274
+ vertical-align: baseline;
2275
+ }
2276
+ summary {
2277
+ display: list-item;
2278
+ }
2279
+ ol,
2280
+ ul,
2281
+ menu {
2282
+ list-style: none;
2283
+ }
2284
+ img,
2285
+ svg,
2286
+ video,
2287
+ canvas,
2288
+ audio,
2289
+ iframe,
2290
+ embed,
2291
+ object {
2292
+ display: block;
2293
+ vertical-align: middle;
2294
+ }
2295
+ img,
2296
+ video {
2297
+ max-width: 100%;
2298
+ height: auto;
2299
+ }
2300
+ button,
2301
+ input,
2302
+ select,
2303
+ optgroup,
2304
+ textarea,
2305
+ ::file-selector-button {
2306
+ font: inherit;
2307
+ font-feature-settings: inherit;
2308
+ font-variation-settings: inherit;
2309
+ letter-spacing: inherit;
2310
+ color: inherit;
2311
+ border-radius: 0;
2312
+ background-color: transparent;
2313
+ opacity: 1;
2314
+ }
2315
+ :where(select:is([multiple], [size])) optgroup {
2316
+ font-weight: bolder;
2317
+ }
2318
+ :where(select:is([multiple], [size])) optgroup option {
2319
+ padding-inline-start: 20px;
2320
+ }
2321
+ ::file-selector-button {
2322
+ margin-inline-end: 4px;
2323
+ }
2324
+ ::placeholder {
2325
+ opacity: 1;
2326
+ }
2327
+ @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {
2328
+ ::placeholder {
2329
+ color: currentcolor;
2330
+ @supports (color: color-mix(in lab, red, red)) {
2331
+ color: color-mix(in oklab, currentcolor 50%, transparent);
920
2332
  }
921
- console.warn("Could not detect stream start time from manifest");
922
- return null;
923
- } catch (error) {
924
- console.warn("Error detecting stream start time:", error);
925
- return null;
926
2333
  }
927
- };
928
- (0, import_react10.useEffect)(() => {
929
- if (!player || manualStreamStartDate) return;
930
- const detectStartTime = async () => {
931
- setTimeout(async () => {
932
- const detectedStart = await detectStreamStartFromManifest();
933
- if (detectedStart) {
934
- setDetectedStreamStart(detectedStart);
935
- console.log("Detected stream start time:", detectedStart.toISOString());
936
- }
937
- }, 1e3);
938
- };
939
- const onManifestParsed = () => {
940
- detectStartTime();
941
- };
942
- detectStartTime();
943
- try {
944
- player.addEventListener("manifestparsed", onManifestParsed);
945
- player.addEventListener("streaming", onManifestParsed);
946
- } catch (error) {
947
- console.warn("Could not add manifest event listeners:", error);
2334
+ }
2335
+ textarea {
2336
+ resize: vertical;
2337
+ }
2338
+ ::-webkit-search-decoration {
2339
+ -webkit-appearance: none;
2340
+ }
2341
+ ::-webkit-date-and-time-value {
2342
+ min-height: 1lh;
2343
+ text-align: inherit;
2344
+ }
2345
+ ::-webkit-datetime-edit {
2346
+ display: inline-flex;
2347
+ }
2348
+ ::-webkit-datetime-edit-fields-wrapper {
2349
+ padding: 0;
2350
+ }
2351
+ ::-webkit-datetime-edit,
2352
+ ::-webkit-datetime-edit-year-field,
2353
+ ::-webkit-datetime-edit-month-field,
2354
+ ::-webkit-datetime-edit-day-field,
2355
+ ::-webkit-datetime-edit-hour-field,
2356
+ ::-webkit-datetime-edit-minute-field,
2357
+ ::-webkit-datetime-edit-second-field,
2358
+ ::-webkit-datetime-edit-millisecond-field,
2359
+ ::-webkit-datetime-edit-meridiem-field {
2360
+ padding-block: 0;
2361
+ }
2362
+ :-moz-ui-invalid {
2363
+ box-shadow: none;
2364
+ }
2365
+ button,
2366
+ input:where([type=button], [type=reset], [type=submit]),
2367
+ ::file-selector-button {
2368
+ appearance: button;
2369
+ }
2370
+ ::-webkit-inner-spin-button,
2371
+ ::-webkit-outer-spin-button {
2372
+ height: auto;
2373
+ }
2374
+ [hidden]:where(:not([hidden=until-found])) {
2375
+ display: none !important;
2376
+ }
2377
+ }
2378
+ @layer utilities {
2379
+ .pointer-events-auto {
2380
+ pointer-events: auto;
2381
+ }
2382
+ .pointer-events-none {
2383
+ pointer-events: none;
2384
+ }
2385
+ .visible {
2386
+ visibility: visible;
2387
+ }
2388
+ .sr-only {
2389
+ position: absolute;
2390
+ width: 1px;
2391
+ height: 1px;
2392
+ padding: 0;
2393
+ margin: -1px;
2394
+ overflow: hidden;
2395
+ clip: rect(0, 0, 0, 0);
2396
+ white-space: nowrap;
2397
+ border-width: 0;
2398
+ }
2399
+ .absolute {
2400
+ position: absolute;
2401
+ }
2402
+ .fixed {
2403
+ position: fixed;
2404
+ }
2405
+ .relative {
2406
+ position: relative;
2407
+ }
2408
+ .static {
2409
+ position: static;
2410
+ }
2411
+ .inset-0 {
2412
+ inset: calc(var(--spacing) * 0);
2413
+ }
2414
+ .top-0 {
2415
+ top: calc(var(--spacing) * 0);
2416
+ }
2417
+ .top-4 {
2418
+ top: calc(var(--spacing) * 4);
2419
+ }
2420
+ .right-0 {
2421
+ right: calc(var(--spacing) * 0);
2422
+ }
2423
+ .right-4 {
2424
+ right: calc(var(--spacing) * 4);
2425
+ }
2426
+ .bottom-0 {
2427
+ bottom: calc(var(--spacing) * 0);
2428
+ }
2429
+ .bottom-4 {
2430
+ bottom: calc(var(--spacing) * 4);
2431
+ }
2432
+ .left-0 {
2433
+ left: calc(var(--spacing) * 0);
2434
+ }
2435
+ .left-4 {
2436
+ left: calc(var(--spacing) * 4);
2437
+ }
2438
+ .z-10 {
2439
+ z-index: 10;
2440
+ }
2441
+ .z-50 {
2442
+ z-index: 50;
2443
+ }
2444
+ .container {
2445
+ width: 100%;
2446
+ @media (width >= 40rem) {
2447
+ max-width: 40rem;
2448
+ }
2449
+ @media (width >= 48rem) {
2450
+ max-width: 48rem;
2451
+ }
2452
+ @media (width >= 64rem) {
2453
+ max-width: 64rem;
2454
+ }
2455
+ @media (width >= 80rem) {
2456
+ max-width: 80rem;
2457
+ }
2458
+ @media (width >= 96rem) {
2459
+ max-width: 96rem;
2460
+ }
2461
+ }
2462
+ .m-6 {
2463
+ margin: calc(var(--spacing) * 6);
2464
+ }
2465
+ .mt-1 {
2466
+ margin-top: calc(var(--spacing) * 1);
2467
+ }
2468
+ .mt-3 {
2469
+ margin-top: calc(var(--spacing) * 3);
2470
+ }
2471
+ .mb-2 {
2472
+ margin-bottom: calc(var(--spacing) * 2);
2473
+ }
2474
+ .mb-6 {
2475
+ margin-bottom: calc(var(--spacing) * 6);
2476
+ }
2477
+ .flex {
2478
+ display: flex;
2479
+ }
2480
+ .grid {
2481
+ display: grid;
2482
+ }
2483
+ .aspect-video {
2484
+ aspect-ratio: var(--aspect-video);
2485
+ }
2486
+ .h-2 {
2487
+ height: calc(var(--spacing) * 2);
2488
+ }
2489
+ .h-12 {
2490
+ height: calc(var(--spacing) * 12);
2491
+ }
2492
+ .h-24 {
2493
+ height: calc(var(--spacing) * 24);
2494
+ }
2495
+ .h-full {
2496
+ height: 100%;
2497
+ }
2498
+ .w-2 {
2499
+ width: calc(var(--spacing) * 2);
2500
+ }
2501
+ .w-12 {
2502
+ width: calc(var(--spacing) * 12);
2503
+ }
2504
+ .w-24 {
2505
+ width: calc(var(--spacing) * 24);
2506
+ }
2507
+ .w-full {
2508
+ width: 100%;
2509
+ }
2510
+ .animate-pulse {
2511
+ animation: var(--animate-pulse);
2512
+ }
2513
+ .animate-spin {
2514
+ animation: var(--animate-spin);
2515
+ }
2516
+ .auto-cols-max {
2517
+ grid-auto-columns: max-content;
2518
+ }
2519
+ .grid-flow-col {
2520
+ grid-auto-flow: column;
2521
+ }
2522
+ .flex-col {
2523
+ flex-direction: column;
2524
+ }
2525
+ .items-center {
2526
+ align-items: center;
2527
+ }
2528
+ .justify-center {
2529
+ justify-content: center;
2530
+ }
2531
+ .justify-stretch {
2532
+ justify-content: stretch;
2533
+ }
2534
+ .gap-1 {
2535
+ gap: calc(var(--spacing) * 1);
2536
+ }
2537
+ .gap-5 {
2538
+ gap: calc(var(--spacing) * 5);
2539
+ }
2540
+ .overflow-hidden {
2541
+ overflow: hidden;
2542
+ }
2543
+ .rounded-full {
2544
+ border-radius: calc(infinity * 1px);
2545
+ }
2546
+ .rounded-md {
2547
+ border-radius: var(--radius-md);
2548
+ }
2549
+ .bg-\\[\\#151515\\] {
2550
+ background-color: #151515;
2551
+ }
2552
+ .bg-black {
2553
+ background-color: var(--color-black);
2554
+ }
2555
+ .bg-red-600 {
2556
+ background-color: var(--color-red-600);
2557
+ }
2558
+ .bg-white {
2559
+ background-color: var(--color-white);
2560
+ }
2561
+ .bg-gradient-to-t {
2562
+ --tw-gradient-position: to top in oklab;
2563
+ background-image: linear-gradient(var(--tw-gradient-stops));
2564
+ }
2565
+ .from-black\\/70 {
2566
+ --tw-gradient-from: color-mix(in srgb, #000 70%, transparent);
2567
+ @supports (color: color-mix(in lab, red, red)) {
2568
+ --tw-gradient-from: color-mix(in oklab, var(--color-black) 70%, transparent);
2569
+ }
2570
+ --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));
2571
+ }
2572
+ .to-transparent {
2573
+ --tw-gradient-to: transparent;
2574
+ --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));
2575
+ }
2576
+ .bg-cover {
2577
+ background-size: cover;
2578
+ }
2579
+ .bg-center {
2580
+ background-position: center;
2581
+ }
2582
+ .bg-no-repeat {
2583
+ background-repeat: no-repeat;
2584
+ }
2585
+ .p-2 {
2586
+ padding: calc(var(--spacing) * 2);
2587
+ }
2588
+ .p-4 {
2589
+ padding: calc(var(--spacing) * 4);
2590
+ }
2591
+ .px-2 {
2592
+ padding-inline: calc(var(--spacing) * 2);
2593
+ }
2594
+ .px-4 {
2595
+ padding-inline: calc(var(--spacing) * 4);
2596
+ }
2597
+ .py-1 {
2598
+ padding-block: calc(var(--spacing) * 1);
2599
+ }
2600
+ .text-center {
2601
+ text-align: center;
2602
+ }
2603
+ .text-left {
2604
+ text-align: left;
2605
+ }
2606
+ .font-mono {
2607
+ font-family: var(--font-mono);
2608
+ }
2609
+ .text-2xl {
2610
+ font-size: var(--text-2xl);
2611
+ line-height: var(--tw-leading, var(--text-2xl--line-height));
2612
+ }
2613
+ .text-5xl {
2614
+ font-size: var(--text-5xl);
2615
+ line-height: var(--tw-leading, var(--text-5xl--line-height));
2616
+ }
2617
+ .text-base {
2618
+ font-size: var(--text-base);
2619
+ line-height: var(--tw-leading, var(--text-base--line-height));
2620
+ }
2621
+ .text-lg {
2622
+ font-size: var(--text-lg);
2623
+ line-height: var(--tw-leading, var(--text-lg--line-height));
2624
+ }
2625
+ .text-sm {
2626
+ font-size: var(--text-sm);
2627
+ line-height: var(--tw-leading, var(--text-sm--line-height));
2628
+ }
2629
+ .text-xl {
2630
+ font-size: var(--text-xl);
2631
+ line-height: var(--tw-leading, var(--text-xl--line-height));
2632
+ }
2633
+ .text-xs {
2634
+ font-size: var(--text-xs);
2635
+ line-height: var(--tw-leading, var(--text-xs--line-height));
2636
+ }
2637
+ .text-\\[10px\\] {
2638
+ font-size: 10px;
2639
+ }
2640
+ .font-bold {
2641
+ --tw-font-weight: var(--font-weight-bold);
2642
+ font-weight: var(--font-weight-bold);
2643
+ }
2644
+ .font-medium {
2645
+ --tw-font-weight: var(--font-weight-medium);
2646
+ font-weight: var(--font-weight-medium);
2647
+ }
2648
+ .font-semibold {
2649
+ --tw-font-weight: var(--font-weight-semibold);
2650
+ font-weight: var(--font-weight-semibold);
2651
+ }
2652
+ .tracking-wide {
2653
+ --tw-tracking: var(--tracking-wide);
2654
+ letter-spacing: var(--tracking-wide);
2655
+ }
2656
+ .tracking-widest {
2657
+ --tw-tracking: var(--tracking-widest);
2658
+ letter-spacing: var(--tracking-widest);
2659
+ }
2660
+ .text-white {
2661
+ color: var(--color-white);
2662
+ }
2663
+ .uppercase {
2664
+ text-transform: uppercase;
2665
+ }
2666
+ .shadow-lg {
2667
+ --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));
2668
+ box-shadow:
2669
+ var(--tw-inset-shadow),
2670
+ var(--tw-inset-ring-shadow),
2671
+ var(--tw-ring-offset-shadow),
2672
+ var(--tw-ring-shadow),
2673
+ var(--tw-shadow);
2674
+ }
2675
+ .filter {
2676
+ 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,);
2677
+ }
2678
+ .md\\:rounded-2xl {
2679
+ @media (width >= 48rem) {
2680
+ border-radius: var(--radius-2xl);
2681
+ }
2682
+ }
2683
+ .md\\:rounded-2xl\\! {
2684
+ @media (width >= 48rem) {
2685
+ border-radius: var(--radius-2xl) !important;
2686
+ }
2687
+ }
2688
+ .md\\:text-base {
2689
+ @media (width >= 48rem) {
2690
+ font-size: var(--text-base);
2691
+ line-height: var(--tw-leading, var(--text-base--line-height));
2692
+ }
2693
+ }
2694
+ .md\\:text-sm {
2695
+ @media (width >= 48rem) {
2696
+ font-size: var(--text-sm);
2697
+ line-height: var(--tw-leading, var(--text-sm--line-height));
2698
+ }
2699
+ }
2700
+ .md\\:text-xl {
2701
+ @media (width >= 48rem) {
2702
+ font-size: var(--text-xl);
2703
+ line-height: var(--tw-leading, var(--text-xl--line-height));
2704
+ }
2705
+ }
2706
+ }
2707
+ @layer components {
2708
+ video::-webkit-media-controls {
2709
+ display: none !important;
2710
+ }
2711
+ video::-webkit-media-controls-panel {
2712
+ display: none !important;
2713
+ }
2714
+ video::-webkit-media-controls-play-button {
2715
+ display: none !important;
2716
+ }
2717
+ video::-webkit-media-controls-timeline {
2718
+ display: none !important;
2719
+ }
2720
+ video::-webkit-media-controls-current-time-display {
2721
+ display: none !important;
2722
+ }
2723
+ video::-webkit-media-controls-time-remaining-display {
2724
+ display: none !important;
2725
+ }
2726
+ video::-webkit-media-controls-mute-button {
2727
+ display: none !important;
2728
+ }
2729
+ video::-webkit-media-controls-volume-slider {
2730
+ display: none !important;
2731
+ }
2732
+ video::-webkit-media-controls-fullscreen-button {
2733
+ display: none !important;
2734
+ }
2735
+ video::-webkit-media-controls-overlay-play-button {
2736
+ display: none !important;
2737
+ }
2738
+ video::-moz-media-controls {
2739
+ display: none !important;
2740
+ }
2741
+ video {
2742
+ outline: none !important;
2743
+ }
2744
+ video[controls] {
2745
+ -webkit-appearance: none !important;
2746
+ appearance: none !important;
2747
+ }
2748
+ video::-webkit-media-controls-enclosure {
2749
+ display: none !important;
2750
+ }
2751
+ video::-webkit-media-controls-start-playback-button {
2752
+ display: none !important;
2753
+ }
2754
+ video[controls]::-webkit-media-controls,
2755
+ video[controls]::-webkit-media-controls-panel,
2756
+ video[controls]::-webkit-media-controls-play-button,
2757
+ video[controls]::-webkit-media-controls-timeline,
2758
+ video[controls]::-webkit-media-controls-current-time-display,
2759
+ video[controls]::-webkit-media-controls-time-remaining-display,
2760
+ video[controls]::-webkit-media-controls-mute-button,
2761
+ video[controls]::-webkit-media-controls-volume-slider,
2762
+ video[controls]::-webkit-media-controls-fullscreen-button,
2763
+ video[controls]::-webkit-media-controls-overlay-play-button,
2764
+ video[controls]::-webkit-media-controls-enclosure,
2765
+ video[controls]::-webkit-media-controls-start-playback-button {
2766
+ display: none !important;
2767
+ visibility: hidden !important;
2768
+ opacity: 0 !important;
2769
+ pointer-events: none !important;
2770
+ }
2771
+ video[controls]::-moz-media-controls {
2772
+ display: none !important;
2773
+ visibility: hidden !important;
2774
+ opacity: 0 !important;
2775
+ }
2776
+ .motto-video-container {
2777
+ position: relative;
2778
+ width: 100%;
2779
+ min-height: 300px;
2780
+ }
2781
+ @supports (aspect-ratio: 16/9) {
2782
+ .motto-video-container {
2783
+ min-height: auto;
2784
+ }
2785
+ }
2786
+ .motto-video-responsive {
2787
+ position: absolute;
2788
+ top: calc(var(--spacing) * 0);
2789
+ left: calc(var(--spacing) * 0);
2790
+ height: 100%;
2791
+ width: 100%;
2792
+ }
2793
+ .motto-skip-button {
2794
+ position: absolute;
2795
+ top: calc(1/2 * 100%);
2796
+ z-index: 10;
2797
+ display: flex;
2798
+ height: calc(var(--spacing) * 16);
2799
+ width: calc(var(--spacing) * 16);
2800
+ --tw-translate-y: calc(calc(1/2 * 100%) * -1);
2801
+ translate: var(--tw-translate-x) var(--tw-translate-y);
2802
+ cursor: pointer;
2803
+ align-items: center;
2804
+ justify-content: center;
2805
+ border-radius: calc(infinity * 1px);
2806
+ border-style: var(--tw-border-style);
2807
+ border-width: 0px;
2808
+ background-color: color-mix(in srgb, #000 70%, transparent);
2809
+ @supports (color: color-mix(in lab, red, red)) {
2810
+ background-color: color-mix(in oklab, var(--color-black) 70%, transparent);
948
2811
  }
949
- return () => {
950
- try {
951
- player.removeEventListener("manifestparsed", onManifestParsed);
952
- player.removeEventListener("streaming", onManifestParsed);
953
- } catch (error) {
954
- }
955
- };
956
- }, [player, manualStreamStartDate]);
957
- const effectiveStreamStart = manualStreamStartDate || detectedStreamStart;
958
- (0, import_react10.useEffect)(() => {
959
- if (!player || !controls || !effectiveStreamStart) return;
960
- const video = player.getMediaElement();
961
- if (!video) return;
962
- let originalGetDisplayTime;
963
- let timeDisplayElement;
964
- const formatElapsedTime = (elapsedSeconds) => {
965
- const hours = Math.floor(elapsedSeconds / 3600);
966
- const minutes = Math.floor(elapsedSeconds % 3600 / 60);
967
- const seconds = Math.floor(elapsedSeconds % 60);
968
- if (hours > 0) {
969
- return [hours, minutes, seconds].map((val) => val.toString().padStart(2, "0")).join(":");
970
- } else {
971
- return [minutes, seconds].map((val) => val.toString().padStart(2, "0")).join(":");
972
- }
973
- };
974
- const getElapsedTime = () => {
975
- const now = /* @__PURE__ */ new Date();
976
- const elapsedMs = now.getTime() - effectiveStreamStart.getTime();
977
- return Math.max(0, elapsedMs / 1e3);
978
- };
979
- const customGetDisplayTime = function() {
980
- const elapsedSeconds = getElapsedTime();
981
- return formatElapsedTime(elapsedSeconds);
982
- };
983
- const setupTimeDisplayOverride = () => {
984
- try {
985
- const controlsContainer = controls.getControlsContainer();
986
- if (!controlsContainer) return;
987
- const timeDisplay = controlsContainer.querySelector(".shaka-current-time");
988
- if (timeDisplay) {
989
- timeDisplayElement = timeDisplay;
990
- if (timeDisplayElement.getDisplayTime) {
991
- originalGetDisplayTime = timeDisplayElement.getDisplayTime.bind(timeDisplayElement);
992
- timeDisplayElement.getDisplayTime = customGetDisplayTime.bind(timeDisplayElement);
993
- } else {
994
- setupDirectTextUpdate();
995
- }
996
- }
997
- } catch (error) {
998
- console.warn("Error setting up time display override:", error);
999
- setupDirectTextUpdate();
1000
- }
1001
- };
1002
- const setupDirectTextUpdate = () => {
1003
- let animationFrameId;
1004
- let isDestroyed = false;
1005
- const updateTimeDisplay = () => {
1006
- if (isDestroyed) return;
1007
- try {
1008
- const controlsContainer = controls.getControlsContainer();
1009
- if (controlsContainer) {
1010
- const currentTimeLabels = controlsContainer.querySelectorAll(".shaka-current-time");
1011
- const elapsedSeconds = getElapsedTime();
1012
- const timeText = formatElapsedTime(elapsedSeconds);
1013
- currentTimeLabels.forEach((label) => {
1014
- if (label && label.textContent !== timeText) {
1015
- label.textContent = timeText;
1016
- }
1017
- });
1018
- }
1019
- } catch (error) {
1020
- console.warn("Error updating time display:", error);
1021
- }
1022
- animationFrameId = requestAnimationFrame(updateTimeDisplay);
1023
- };
1024
- updateTimeDisplay();
1025
- return () => {
1026
- isDestroyed = true;
1027
- if (animationFrameId) {
1028
- cancelAnimationFrame(animationFrameId);
1029
- }
1030
- };
1031
- };
1032
- const setupSeekbarTooltip = () => {
1033
- try {
1034
- const controlsContainer = controls.getControlsContainer();
1035
- if (!controlsContainer) return;
1036
- const seekBar = controlsContainer.querySelector(".shaka-seek-bar");
1037
- if (!seekBar) return;
1038
- const onSeekBarMouseMove = (event) => {
1039
- const rect = seekBar.getBoundingClientRect();
1040
- const pos = (event.clientX - rect.left) / rect.width;
1041
- const totalElapsedSeconds = getElapsedTime();
1042
- const seekableRange = video.seekable;
1043
- if (seekableRange.length > 0) {
1044
- const seekableDuration = seekableRange.end(0) - seekableRange.start(0);
1045
- const positionInStream = totalElapsedSeconds - seekableDuration * (1 - pos);
1046
- const timeAtPosition = Math.max(0, positionInStream);
1047
- seekBar.title = formatElapsedTime(timeAtPosition);
1048
- } else {
1049
- seekBar.title = formatElapsedTime(totalElapsedSeconds);
1050
- }
1051
- };
1052
- seekBar.addEventListener("mousemove", onSeekBarMouseMove);
1053
- return () => {
1054
- seekBar.removeEventListener("mousemove", onSeekBarMouseMove);
1055
- };
1056
- } catch (error) {
1057
- console.warn("Error setting up seekbar tooltip:", error);
1058
- return () => {
1059
- };
2812
+ font-size: var(--text-2xl);
2813
+ line-height: var(--tw-leading, var(--text-2xl--line-height));
2814
+ color: var(--color-white);
2815
+ opacity: 80%;
2816
+ transition-property: all;
2817
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
2818
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
2819
+ --tw-duration: 200ms;
2820
+ transition-duration: 200ms;
2821
+ &:hover {
2822
+ @media (hover: hover) {
2823
+ --tw-scale-x: 110%;
2824
+ --tw-scale-y: 110%;
2825
+ --tw-scale-z: 110%;
2826
+ scale: var(--tw-scale-x) var(--tw-scale-y);
1060
2827
  }
1061
- };
1062
- const setupWithDelay = () => {
1063
- setTimeout(() => {
1064
- setupTimeDisplayOverride();
1065
- const cleanupSeekbar = setupSeekbarTooltip();
1066
- setupWithDelay.cleanupSeekbar = cleanupSeekbar;
1067
- }, 100);
1068
- };
1069
- setupWithDelay();
1070
- return () => {
1071
- if (timeDisplayElement && originalGetDisplayTime) {
1072
- try {
1073
- timeDisplayElement.getDisplayTime = originalGetDisplayTime;
1074
- } catch (error) {
1075
- console.warn("Error restoring original getDisplayTime:", error);
1076
- }
1077
- }
1078
- if (setupWithDelay.cleanupSeekbar) {
1079
- setupWithDelay.cleanupSeekbar();
2828
+ }
2829
+ &:hover {
2830
+ @media (hover: hover) {
2831
+ opacity: 100%;
1080
2832
  }
1081
- };
1082
- }, [player, controls, effectiveStreamStart]);
1083
- return {
1084
- detectedStreamStart,
1085
- effectiveStreamStart,
1086
- isUsingManualDate: !!manualStreamStartDate
1087
- };
2833
+ }
2834
+ &:active {
2835
+ --tw-scale-x: 95%;
2836
+ --tw-scale-y: 95%;
2837
+ --tw-scale-z: 95%;
2838
+ scale: var(--tw-scale-x) var(--tw-scale-y);
2839
+ }
2840
+ }
2841
+ .motto-skip-button-back {
2842
+ left: calc(var(--spacing) * 5);
2843
+ }
2844
+ .motto-skip-button-forward {
2845
+ right: calc(var(--spacing) * 5);
2846
+ }
1088
2847
  }
1089
-
1090
- // src/components/Loading.tsx
1091
- var import_tailwind_merge = require("tailwind-merge");
1092
- var import_jsx_runtime = require("react/jsx-runtime");
1093
- var Loading = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
1094
- "div",
1095
- {
1096
- className: (0, import_tailwind_merge.twMerge)(
1097
- "relative bg-[#151515] md:rounded-2xl! overflow-hidden aspect-video text-white w-full h-full flex justify-center items-center text-[10px]",
1098
- className
1099
- ),
1100
- role: "status",
1101
- children: [
1102
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-white" }),
1103
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "sr-only", children: "Loading..." })
1104
- ]
2848
+ .shaka-seek-bar-container {
2849
+ height: 6px !important;
2850
+ width: 100% !important;
2851
+ margin: 8px 0 !important;
2852
+ border-radius: 4px !important;
2853
+ position: relative !important;
2854
+ border-top: none !important;
2855
+ border-bottom: none !important;
2856
+ box-shadow: none !important;
2857
+ }
2858
+ .shaka-seek-bar {
2859
+ height: 6px !important;
2860
+ width: 100% !important;
2861
+ -webkit-appearance: none !important;
2862
+ appearance: none !important;
2863
+ background: transparent !important;
2864
+ cursor: pointer !important;
2865
+ border: none !important;
2866
+ outline: none !important;
2867
+ position: absolute !important;
2868
+ top: 0 !important;
2869
+ left: 0 !important;
2870
+ border-radius: 4px !important;
2871
+ }
2872
+ .shaka-seek-bar::-webkit-slider-runnable-track {
2873
+ height: 6px !important;
2874
+ background: transparent !important;
2875
+ border-radius: 4px !important;
2876
+ border: none !important;
2877
+ }
2878
+ .shaka-seek-bar::-moz-range-track {
2879
+ height: 6px !important;
2880
+ background: transparent !important;
2881
+ border-radius: 4px !important;
2882
+ border: none !important;
2883
+ }
2884
+ .shaka-seek-bar::-webkit-slider-thumb {
2885
+ -webkit-appearance: none !important;
2886
+ appearance: none !important;
2887
+ width: 16px !important;
2888
+ height: 16px !important;
2889
+ border-radius: 50% !important;
2890
+ background: #ffffff !important;
2891
+ cursor: pointer !important;
2892
+ border: 2px solid #ffffff !important;
2893
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3) !important;
2894
+ margin-top: -4px !important;
2895
+ }
2896
+ .shaka-seek-bar::-moz-range-thumb {
2897
+ width: 16px !important;
2898
+ height: 16px !important;
2899
+ border-radius: 50% !important;
2900
+ background: #ffffff !important;
2901
+ cursor: pointer !important;
2902
+ border: 2px solid #ffffff !important;
2903
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3) !important;
2904
+ margin-top: -4px !important;
2905
+ }
2906
+ .motto-skip-back-button,
2907
+ .motto-skip-forward-button,
2908
+ .motto-native-skip-button {
2909
+ background: transparent !important;
2910
+ border: none !important;
2911
+ padding: 4px !important;
2912
+ margin: 0px !important;
2913
+ cursor: pointer !important;
2914
+ color: #ffffff !important;
2915
+ transition: all 0.2s ease !important;
2916
+ min-width: 32px !important;
2917
+ height: 32px !important;
2918
+ display: flex !important;
2919
+ align-items: center !important;
2920
+ justify-content: center !important;
2921
+ border-radius: 4px !important;
2922
+ width: 25px;
2923
+ }
2924
+ .motto-skip-back-button:hover,
2925
+ .motto-skip-forward-button:hover,
2926
+ .motto-native-skip-button:hover {
2927
+ opacity: 0.8 !important;
2928
+ background: transparent !important;
2929
+ transform: scale(1.05) !important;
2930
+ }
2931
+ .motto-skip-back-button:active,
2932
+ .motto-skip-forward-button:active,
2933
+ .motto-native-skip-button:active {
2934
+ transform: scale(0.95) !important;
2935
+ }
2936
+ .motto-skip-back-button svg,
2937
+ .motto-skip-forward-button svg,
2938
+ .motto-native-skip-button svg {
2939
+ width: 24px !important;
2940
+ height: 24px !important;
2941
+ }
2942
+ .shaka-spinner-svg {
2943
+ color: white !important;
2944
+ fill: white !important;
2945
+ }
2946
+ .shaka-spinner-path {
2947
+ stroke: white !important;
2948
+ fill: none !important;
2949
+ }
2950
+ .shaka-spinner-container {
2951
+ color: white !important;
2952
+ }
2953
+ .shaka-buffering-spinner {
2954
+ color: white !important;
2955
+ fill: white !important;
2956
+ }
2957
+ .shaka-buffering-spinner svg {
2958
+ color: white !important;
2959
+ fill: white !important;
2960
+ }
2961
+ .shaka-buffering-spinner path {
2962
+ stroke: white !important;
2963
+ fill: none !important;
2964
+ }
2965
+ [data-shaka-player-container] .shaka-spinner,
2966
+ [data-shaka-player-container] .spinner {
2967
+ color: white !important;
2968
+ border-color: white !important;
2969
+ }
2970
+ .material-icons.shaka-spinner {
2971
+ color: white !important;
2972
+ }
2973
+ .shaka-controls-container .shaka-spinner,
2974
+ .shaka-video-container .shaka-spinner {
2975
+ color: white !important;
2976
+ fill: white !important;
2977
+ }
2978
+ .shaka-controls-container .shaka-spinner svg,
2979
+ .shaka-video-container .shaka-spinner svg {
2980
+ color: white !important;
2981
+ fill: white !important;
2982
+ }
2983
+ .shaka-controls-container .shaka-spinner path,
2984
+ .shaka-video-container .shaka-spinner path {
2985
+ stroke: white !important;
2986
+ }
2987
+ .motto-video-loading-overlay {
2988
+ position: absolute;
2989
+ top: 0;
2990
+ left: 0;
2991
+ width: 100%;
2992
+ height: 100%;
2993
+ background:
2994
+ linear-gradient(
2995
+ 135deg,
2996
+ #1a1a1a 0%,
2997
+ #2d2d2d 100%);
2998
+ display: flex;
2999
+ flex-direction: column;
3000
+ align-items: center;
3001
+ justify-content: center;
3002
+ z-index: 10;
3003
+ transition: opacity 0.3s ease;
3004
+ }
3005
+ .motto-video-loading-overlay.hidden {
3006
+ opacity: 0;
3007
+ pointer-events: none;
3008
+ }
3009
+ .motto-video-loading-content {
3010
+ text-align: center;
3011
+ color: white;
3012
+ }
3013
+ .motto-video-loading-icon {
3014
+ width: 64px;
3015
+ height: 64px;
3016
+ margin-bottom: 16px;
3017
+ opacity: 0.7;
3018
+ }
3019
+ .motto-video-loading-text {
3020
+ font-size: 16px;
3021
+ font-weight: 500;
3022
+ margin-bottom: 8px;
3023
+ }
3024
+ .motto-video-loading-subtext {
3025
+ font-size: 14px;
3026
+ opacity: 0.7;
3027
+ }
3028
+ @keyframes pulse-live {
3029
+ 0% {
3030
+ opacity: 1;
3031
+ transform: scale(1);
1105
3032
  }
1106
- );
1107
-
1108
- // src/components/ErrorScreen.tsx
1109
- var import_jsx_runtime2 = require("react/jsx-runtime");
1110
- var ErrorScreen = ({ title, description }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "w-full h-full md:rounded-2xl! aspect-video bg-black", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "bg-[#151515] text-white w-full h-full flex justify-stretch items-center", children: [
1111
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1112
- "svg",
1113
- {
1114
- className: "w-24 h-24 m-6",
1115
- fill: "none",
1116
- stroke: "currentColor",
1117
- strokeWidth: "2",
1118
- style: { width: 96 },
1119
- viewBox: "0 0 24 24",
1120
- xmlns: "http://www.w3.org/2000/svg",
1121
- children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1122
- "path",
1123
- {
1124
- d: "M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z",
1125
- strokeLinecap: "round",
1126
- strokeLinejoin: "round"
1127
- }
1128
- )
1129
- }
1130
- ),
1131
- /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { children: [
1132
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("h3", { className: "text-2xl mb-2", children: title || "Playback Error" }),
1133
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "text-lg", children: description || "Unable to play the video. Please try again later." })
1134
- ] })
1135
- ] }) });
1136
-
1137
- // src/components/Title.tsx
1138
- var import_jsx_runtime3 = require("react/jsx-runtime");
1139
- var Title = ({ title }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/70 to-transparent p-4", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h2", { className: "text-white text-xl font-semibold", children: title }) });
1140
-
1141
- // src/components/LiveBadge.tsx
1142
- var import_jsx_runtime4 = require("react/jsx-runtime");
1143
- var LiveBadge = ({
1144
- isVisible,
1145
- position = "top-right",
1146
- className = "",
1147
- style = {},
1148
- text = "LIVE"
1149
- }) => {
1150
- if (!isVisible) return null;
1151
- const positionClasses = {
1152
- "top-left": "top-4 left-4",
1153
- "top-right": "top-4 right-4",
1154
- "bottom-left": "bottom-4 left-4",
1155
- "bottom-right": "bottom-4 right-4"
1156
- };
1157
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
1158
- "div",
1159
- {
1160
- className: `
1161
- absolute z-50
1162
- ${positionClasses[position]}
1163
- bg-red-600 text-white
1164
- px-2 py-1
1165
- rounded-md
1166
- text-xs font-bold
1167
- uppercase tracking-wide
1168
- shadow-lg
1169
- animate-pulse
1170
- pointer-events-none
1171
- ${className}
1172
- `,
1173
- style,
1174
- children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: "flex items-center gap-1", children: [
1175
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "w-2 h-2 bg-white rounded-full animate-pulse" }),
1176
- text
1177
- ] })
3033
+ 50% {
3034
+ opacity: 0.7;
3035
+ transform: scale(1.1);
3036
+ }
3037
+ 100% {
3038
+ opacity: 1;
3039
+ transform: scale(1);
3040
+ }
3041
+ }
3042
+ .shaka-play-button {
3043
+ background: rgba(255, 255, 255, 0.1) !important;
3044
+ border: none !important;
3045
+ color: white !important;
3046
+ padding: 10px !important;
3047
+ border-radius: 100% !important;
3048
+ transition: all 0.2s ease !important;
3049
+ display: flex !important;
3050
+ align-items: center !important;
3051
+ justify-content: center !important;
3052
+ min-width: 55px !important;
3053
+ height: 55px !important;
3054
+ }
3055
+ .shaka-play-button-container {
3056
+ background: transparent;
3057
+ transition: all 0.2s ease !important;
3058
+ }
3059
+ .motto-video-container:not(.no-cursor) .shaka-play-button-container {
3060
+ background: rgba(0, 0, 0, 0.3);
3061
+ transition: all 0.s ease !important;
3062
+ }
3063
+ .shaka-play-button:hover {
3064
+ background: rgba(255, 255, 255, 0.2) !important;
3065
+ transform: scale(1.05) !important;
3066
+ }
3067
+ .shaka-play-button:active {
3068
+ transform: scale(0.95) !important;
3069
+ }
3070
+ .shaka-play-button > * {
3071
+ display: none !important;
3072
+ }
3073
+ .shaka-play-button::after {
3074
+ content: "" !important;
3075
+ width: 35px !important;
3076
+ height: 35px !important;
3077
+ 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;
3078
+ background-repeat: no-repeat !important;
3079
+ background-size: contain !important;
3080
+ background-position: center !important;
3081
+ display: block !important;
3082
+ }
3083
+ .shaka-play-button[aria-label*=Play]::after {
3084
+ 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;
3085
+ }
3086
+ .shaka-play-button[aria-label*=Pause]::after {
3087
+ 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;
3088
+ }
3089
+ .motto-video-container {
3090
+ background: black;
3091
+ }
3092
+ .motto-video-container video {
3093
+ width: 100% !important;
3094
+ height: 100% !important;
3095
+ margin-left: auto !important;
3096
+ margin-right: auto !important;
3097
+ }
3098
+ @property --tw-gradient-position { syntax: "*"; inherits: false; }
3099
+ @property --tw-gradient-from { syntax: "<color>"; inherits: false; initial-value: #0000; }
3100
+ @property --tw-gradient-via { syntax: "<color>"; inherits: false; initial-value: #0000; }
3101
+ @property --tw-gradient-to { syntax: "<color>"; inherits: false; initial-value: #0000; }
3102
+ @property --tw-gradient-stops { syntax: "*"; inherits: false; }
3103
+ @property --tw-gradient-via-stops { syntax: "*"; inherits: false; }
3104
+ @property --tw-gradient-from-position { syntax: "<length-percentage>"; inherits: false; initial-value: 0%; }
3105
+ @property --tw-gradient-via-position { syntax: "<length-percentage>"; inherits: false; initial-value: 50%; }
3106
+ @property --tw-gradient-to-position { syntax: "<length-percentage>"; inherits: false; initial-value: 100%; }
3107
+ @property --tw-font-weight { syntax: "*"; inherits: false; }
3108
+ @property --tw-tracking { syntax: "*"; inherits: false; }
3109
+ @property --tw-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
3110
+ @property --tw-shadow-color { syntax: "*"; inherits: false; }
3111
+ @property --tw-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }
3112
+ @property --tw-inset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
3113
+ @property --tw-inset-shadow-color { syntax: "*"; inherits: false; }
3114
+ @property --tw-inset-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }
3115
+ @property --tw-ring-color { syntax: "*"; inherits: false; }
3116
+ @property --tw-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
3117
+ @property --tw-inset-ring-color { syntax: "*"; inherits: false; }
3118
+ @property --tw-inset-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
3119
+ @property --tw-ring-inset { syntax: "*"; inherits: false; }
3120
+ @property --tw-ring-offset-width { syntax: "<length>"; inherits: false; initial-value: 0px; }
3121
+ @property --tw-ring-offset-color { syntax: "*"; inherits: false; initial-value: #fff; }
3122
+ @property --tw-ring-offset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
3123
+ @property --tw-blur { syntax: "*"; inherits: false; }
3124
+ @property --tw-brightness { syntax: "*"; inherits: false; }
3125
+ @property --tw-contrast { syntax: "*"; inherits: false; }
3126
+ @property --tw-grayscale { syntax: "*"; inherits: false; }
3127
+ @property --tw-hue-rotate { syntax: "*"; inherits: false; }
3128
+ @property --tw-invert { syntax: "*"; inherits: false; }
3129
+ @property --tw-opacity { syntax: "*"; inherits: false; }
3130
+ @property --tw-saturate { syntax: "*"; inherits: false; }
3131
+ @property --tw-sepia { syntax: "*"; inherits: false; }
3132
+ @property --tw-drop-shadow { syntax: "*"; inherits: false; }
3133
+ @property --tw-drop-shadow-color { syntax: "*"; inherits: false; }
3134
+ @property --tw-drop-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }
3135
+ @property --tw-drop-shadow-size { syntax: "*"; inherits: false; }
3136
+ @property --tw-translate-x { syntax: "*"; inherits: false; initial-value: 0; }
3137
+ @property --tw-translate-y { syntax: "*"; inherits: false; initial-value: 0; }
3138
+ @property --tw-translate-z { syntax: "*"; inherits: false; initial-value: 0; }
3139
+ @property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; }
3140
+ @property --tw-duration { syntax: "*"; inherits: false; }
3141
+ @property --tw-scale-x { syntax: "*"; inherits: false; initial-value: 1; }
3142
+ @property --tw-scale-y { syntax: "*"; inherits: false; initial-value: 1; }
3143
+ @property --tw-scale-z { syntax: "*"; inherits: false; initial-value: 1; }
3144
+ @keyframes spin {
3145
+ to {
3146
+ transform: rotate(360deg);
3147
+ }
3148
+ }
3149
+ @keyframes pulse {
3150
+ 50% {
3151
+ opacity: 0.5;
3152
+ }
3153
+ }
3154
+ @layer properties {
3155
+ @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
3156
+ *,
3157
+ ::before,
3158
+ ::after,
3159
+ ::backdrop {
3160
+ --tw-gradient-position: initial;
3161
+ --tw-gradient-from: #0000;
3162
+ --tw-gradient-via: #0000;
3163
+ --tw-gradient-to: #0000;
3164
+ --tw-gradient-stops: initial;
3165
+ --tw-gradient-via-stops: initial;
3166
+ --tw-gradient-from-position: 0%;
3167
+ --tw-gradient-via-position: 50%;
3168
+ --tw-gradient-to-position: 100%;
3169
+ --tw-font-weight: initial;
3170
+ --tw-tracking: initial;
3171
+ --tw-shadow: 0 0 #0000;
3172
+ --tw-shadow-color: initial;
3173
+ --tw-shadow-alpha: 100%;
3174
+ --tw-inset-shadow: 0 0 #0000;
3175
+ --tw-inset-shadow-color: initial;
3176
+ --tw-inset-shadow-alpha: 100%;
3177
+ --tw-ring-color: initial;
3178
+ --tw-ring-shadow: 0 0 #0000;
3179
+ --tw-inset-ring-color: initial;
3180
+ --tw-inset-ring-shadow: 0 0 #0000;
3181
+ --tw-ring-inset: initial;
3182
+ --tw-ring-offset-width: 0px;
3183
+ --tw-ring-offset-color: #fff;
3184
+ --tw-ring-offset-shadow: 0 0 #0000;
3185
+ --tw-blur: initial;
3186
+ --tw-brightness: initial;
3187
+ --tw-contrast: initial;
3188
+ --tw-grayscale: initial;
3189
+ --tw-hue-rotate: initial;
3190
+ --tw-invert: initial;
3191
+ --tw-opacity: initial;
3192
+ --tw-saturate: initial;
3193
+ --tw-sepia: initial;
3194
+ --tw-drop-shadow: initial;
3195
+ --tw-drop-shadow-color: initial;
3196
+ --tw-drop-shadow-alpha: 100%;
3197
+ --tw-drop-shadow-size: initial;
3198
+ --tw-translate-x: 0;
3199
+ --tw-translate-y: 0;
3200
+ --tw-translate-z: 0;
3201
+ --tw-border-style: solid;
3202
+ --tw-duration: initial;
3203
+ --tw-scale-x: 1;
3204
+ --tw-scale-y: 1;
3205
+ --tw-scale-z: 1;
1178
3206
  }
1179
- );
1180
- };
1181
-
1182
- // src/styles.css
1183
- 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');
3207
+ }
3208
+ }
3209
+ `);
1184
3210
 
1185
3211
  // src/Player.tsx
1186
3212
  var import_tailwind_merge2 = require("tailwind-merge");
1187
- var import_jsx_runtime5 = require("react/jsx-runtime");
1188
- var Player = (0, import_react11.forwardRef)(
3213
+ var import_jsx_runtime8 = require("react/jsx-runtime");
3214
+ var Player = (0, import_react12.forwardRef)(
1189
3215
  ({
1190
3216
  src,
1191
3217
  autoPlay = false,
@@ -1203,15 +3229,16 @@ var Player = (0, import_react11.forwardRef)(
1203
3229
  chromecastConfig,
1204
3230
  qualityConfig,
1205
3231
  seekbarConfig,
3232
+ iconSizes,
1206
3233
  events,
1207
3234
  containerClassName,
1208
- streamStartDate,
1209
- ...props
3235
+ playerName,
3236
+ ...videoProps
1210
3237
  }, ref) => {
1211
- const videoRef = (0, import_react11.useRef)(null);
1212
- const containerRef = (0, import_react11.useRef)(null);
1213
- const adContainerRef = (0, import_react11.useRef)(null);
1214
- (0, import_react11.useImperativeHandle)(ref, () => videoRef.current, []);
3238
+ const videoRef = (0, import_react12.useRef)(null);
3239
+ const containerRef = (0, import_react12.useRef)(null);
3240
+ const adContainerRef = (0, import_react12.useRef)(null);
3241
+ (0, import_react12.useImperativeHandle)(ref, () => videoRef.current, []);
1215
3242
  const { playerRef, initializePlayer, destroyPlayer } = useShakePlayer({
1216
3243
  src,
1217
3244
  shakaConfig,
@@ -1231,12 +3258,17 @@ var Player = (0, import_react11.forwardRef)(
1231
3258
  skipDuration,
1232
3259
  shouldShowSkipControls
1233
3260
  } = useSkipControls(videoRef, events?.onSkipBack, events?.onSkipForward);
3261
+ useKeyboardControls(videoRef, {
3262
+ skipBack,
3263
+ skipForward,
3264
+ enabled: true
3265
+ });
1234
3266
  const {
1235
3267
  initializeMux,
1236
3268
  updateMuxData,
1237
3269
  handleMuxError,
1238
3270
  destroyMux
1239
- } = useMuxAnalytics(playerRef, muxConfig, events?.onMuxReady, events?.onMuxDataUpdate);
3271
+ } = useMuxAnalytics(playerRef, muxConfig, events?.onMuxReady, events?.onMuxDataUpdate, playerName);
1240
3272
  const { setupEventListeners, cleanupEventListeners } = useEventHandlers(videoRef, {
1241
3273
  onPlay: events?.onPlay,
1242
3274
  onPause: events?.onPause,
@@ -1252,24 +3284,22 @@ var Player = (0, import_react11.forwardRef)(
1252
3284
  chromecastConfig,
1253
3285
  seekbarConfig,
1254
3286
  events?.onSkipBack,
1255
- events?.onSkipForward
3287
+ events?.onSkipForward,
3288
+ iconSizes
1256
3289
  );
1257
3290
  const { isLive, isVisible: isLiveBadgeVisible } = useLiveBadge(playerRef, {
1258
3291
  enabled: true,
3292
+ liveThresholdSeconds: 15,
1259
3293
  onLiveStateChange: (isLive2) => {
1260
3294
  events?.onLiveStateChange?.(isLive2);
1261
3295
  }
1262
3296
  });
1263
- useLiveIndicator(containerRef, {
3297
+ useLiveIndicator(containerRef, playerRef, {
1264
3298
  enabled: true,
1265
3299
  indicatorColor: "#ff0000",
1266
3300
  indicatorSize: 8,
1267
- showPulseAnimation: true
1268
- });
1269
- const { detectedStreamStart, effectiveStreamStart } = useShakaAbsoluteTime({
1270
- player: playerRef.current,
1271
- controls: uiRef.current,
1272
- manualStreamStartDate: streamStartDate
3301
+ showPulseAnimation: true,
3302
+ liveThresholdSeconds: 15
1273
3303
  });
1274
3304
  const initializeAds = () => {
1275
3305
  if (!imaConfig || !playerRef.current || !videoRef.current) return;
@@ -1311,7 +3341,7 @@ var Player = (0, import_react11.forwardRef)(
1311
3341
  console.warn("Chromecast initialization failed:", error);
1312
3342
  }
1313
3343
  };
1314
- (0, import_react11.useEffect)(() => {
3344
+ (0, import_react12.useEffect)(() => {
1315
3345
  const video = videoRef.current;
1316
3346
  if (!video) return;
1317
3347
  const initialize = async () => {
@@ -1336,22 +3366,8 @@ var Player = (0, import_react11.forwardRef)(
1336
3366
  destroyMux();
1337
3367
  destroyPlayer();
1338
3368
  };
1339
- }, [
1340
- src,
1341
- initializePlayer,
1342
- setupEventListeners,
1343
- setupQualityTracking,
1344
- configureQuality,
1345
- initializeUI,
1346
- initializeMux,
1347
- cleanupEventListeners,
1348
- destroyUI,
1349
- destroyMux,
1350
- destroyPlayer,
1351
- handleMuxError,
1352
- playerRef
1353
- ]);
1354
- (0, import_react11.useEffect)(() => {
3369
+ }, [src]);
3370
+ (0, import_react12.useEffect)(() => {
1355
3371
  const video = videoRef.current;
1356
3372
  if (!video) return;
1357
3373
  video.autoplay = autoPlay;
@@ -1360,7 +3376,31 @@ var Player = (0, import_react11.forwardRef)(
1360
3376
  video.controls = false;
1361
3377
  if (poster) video.poster = poster;
1362
3378
  }, [autoPlay, loop, muted, poster]);
1363
- (0, import_react11.useImperativeHandle)(ref, () => ({
3379
+ (0, import_react12.useEffect)(() => {
3380
+ const video = videoRef.current;
3381
+ if (!video) return;
3382
+ video.controls = false;
3383
+ video.setAttribute("controls", "false");
3384
+ video.removeAttribute("controls");
3385
+ const observer = new MutationObserver((mutations) => {
3386
+ mutations.forEach((mutation) => {
3387
+ if (mutation.type === "attributes" && mutation.attributeName === "controls") {
3388
+ if (video.hasAttribute("controls")) {
3389
+ video.removeAttribute("controls");
3390
+ video.controls = false;
3391
+ }
3392
+ }
3393
+ });
3394
+ });
3395
+ observer.observe(video, {
3396
+ attributes: true,
3397
+ attributeFilter: ["controls"]
3398
+ });
3399
+ return () => {
3400
+ observer.disconnect();
3401
+ };
3402
+ }, []);
3403
+ (0, import_react12.useImperativeHandle)(ref, () => ({
1364
3404
  ...videoRef.current,
1365
3405
  // Custom methods for quality control
1366
3406
  getAvailableQualities,
@@ -1375,13 +3415,15 @@ var Player = (0, import_react11.forwardRef)(
1375
3415
  getMuxMonitor: () => null
1376
3416
  }), [getAvailableQualities, setQuality, skipBack, skipForward, updateMuxData]);
1377
3417
  const isResponsive = !width && !height;
1378
- const containerClasses = (0, import_tailwind_merge2.twMerge)(containerClassName, "motto-video-container");
3418
+ const containerClasses = (0, import_tailwind_merge2.twMerge)(containerClassName, "motto-video-container bg-black");
1379
3419
  const containerStyle = isResponsive ? {
1380
3420
  aspectRatio: aspectRatio.toString()
1381
3421
  } : { width, height };
1382
- const videoClasses = isResponsive ? "motto-video-responsive" : "w-full h-full ";
3422
+ const videoClasses = isResponsive ? "motto-video-responsive w-full" : "w-full h-full ";
1383
3423
  const videoStyle = isResponsive ? {} : { width, height };
1384
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
3424
+ const filteredVideoProps = { ...videoProps };
3425
+ delete filteredVideoProps.controls;
3426
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
1385
3427
  "div",
1386
3428
  {
1387
3429
  ref: containerRef,
@@ -1390,7 +3432,7 @@ var Player = (0, import_react11.forwardRef)(
1390
3432
  "data-shaka-player-container": true,
1391
3433
  "data-shaka-player-cast-receiver-id": chromecastConfig?.receiverApplicationId,
1392
3434
  children: [
1393
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
3435
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1394
3436
  "video",
1395
3437
  {
1396
3438
  ref: videoRef,
@@ -1399,11 +3441,12 @@ var Player = (0, import_react11.forwardRef)(
1399
3441
  height: isResponsive ? void 0 : height,
1400
3442
  style: videoStyle,
1401
3443
  controls: false,
1402
- ...props
3444
+ playsInline: true,
3445
+ ...filteredVideoProps
1403
3446
  }
1404
3447
  ),
1405
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(LiveBadge, { isVisible: isLiveBadgeVisible }),
1406
- imaConfig && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
3448
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(LiveBadge, { isVisible: isLiveBadgeVisible }),
3449
+ imaConfig && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1407
3450
  "div",
1408
3451
  {
1409
3452
  ref: adContainerRef,
@@ -1418,7 +3461,7 @@ var Player = (0, import_react11.forwardRef)(
1418
3461
  Player.displayName = "Player";
1419
3462
 
1420
3463
  // src/Video.tsx
1421
- var import_react13 = require("react");
3464
+ var import_react14 = require("react");
1422
3465
  var import_tailwind_merge3 = require("tailwind-merge");
1423
3466
  var import_react_query = require("@tanstack/react-query");
1424
3467
 
@@ -1559,7 +3602,7 @@ var getErrorType = (error, video) => {
1559
3602
  };
1560
3603
 
1561
3604
  // src/messages/useMessages.tsx
1562
- var import_react12 = require("react");
3605
+ var import_react13 = require("react");
1563
3606
 
1564
3607
  // src/messages/en.json
1565
3608
  var en_default = {
@@ -1857,16 +3900,13 @@ var availableLanguages = {
1857
3900
  fa: fa_default
1858
3901
  };
1859
3902
  var getBrowserLanguage = () => {
1860
- if (typeof window === "undefined" || typeof navigator === "undefined") {
1861
- return "en";
1862
- }
1863
3903
  const language = navigator.language.split("-")[0];
1864
3904
  return availableLanguages[language] ? language : "en";
1865
3905
  };
1866
3906
  var useMessages = (locale) => {
1867
- const [language, setLanguage] = (0, import_react12.useState)("en");
1868
- const [translations, setTranslations] = (0, import_react12.useState)(availableLanguages.en);
1869
- (0, import_react12.useEffect)(() => {
3907
+ const [language, setLanguage] = (0, import_react13.useState)("en");
3908
+ const [translations, setTranslations] = (0, import_react13.useState)(availableLanguages.en);
3909
+ (0, import_react13.useEffect)(() => {
1870
3910
  const lang = !!availableLanguages?.[locale] ? locale : getBrowserLanguage();
1871
3911
  ;
1872
3912
  setLanguage(lang);
@@ -1892,7 +3932,7 @@ var useMessages = (locale) => {
1892
3932
  var useMessages_default = useMessages;
1893
3933
 
1894
3934
  // src/Video.tsx
1895
- var import_jsx_runtime6 = require("react/jsx-runtime");
3935
+ var import_jsx_runtime9 = require("react/jsx-runtime");
1896
3936
  var Video = ({
1897
3937
  videoId,
1898
3938
  publicKey,
@@ -1928,13 +3968,13 @@ var Video = ({
1928
3968
  const { t } = useMessages_default(locale);
1929
3969
  const activePlaylist = findHLSPlaylist(video);
1930
3970
  const hlsUrl = activePlaylist?.url;
1931
- (0, import_react13.useEffect)(() => {
3971
+ (0, import_react14.useEffect)(() => {
1932
3972
  if (events?.onVideoData && video) {
1933
3973
  events.onVideoData(video);
1934
3974
  }
1935
3975
  }, [video, events]);
1936
3976
  if (isLoading || !providedVideoData && !video) {
1937
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: (0, import_tailwind_merge3.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "relative w-full h-full bg-[#151515]", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Loading, {}) }) });
3977
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: (0, import_tailwind_merge3.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "relative w-full h-full bg-[#151515]", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Loading, {}) }) });
1938
3978
  }
1939
3979
  if (!isLoading && video && !hlsUrl && events?.onEmptyPlaylists) {
1940
3980
  events.onEmptyPlaylists();
@@ -1947,8 +3987,8 @@ var Video = ({
1947
3987
  }
1948
3988
  const title = t(errorKey) || t("DEFAULT_ERROR");
1949
3989
  const description = t(`${errorKey}_DESCRIPTION`) || t("DEFAULT_ERROR_DESCRIPTION");
1950
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: (0, import_tailwind_merge3.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "relative w-full h-full", children: [
1951
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3990
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: (0, import_tailwind_merge3.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "relative w-full h-full", children: [
3991
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1952
3992
  ErrorScreen,
1953
3993
  {
1954
3994
  title,
@@ -1959,13 +3999,13 @@ var Video = ({
1959
3999
  ] }) });
1960
4000
  }
1961
4001
  if (!hlsUrl) {
1962
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: (0, import_tailwind_merge3.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "relative w-full h-full bg-[#151515]", children: [
1963
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Title, { title: video?.name || "" }),
4002
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: (0, import_tailwind_merge3.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "relative w-full h-full bg-[#151515]", children: [
4003
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Title, { title: video?.name || "" }),
1964
4004
  children
1965
4005
  ] }) });
1966
4006
  }
1967
4007
  console.log("hlsUrl", hlsUrl);
1968
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: (0, import_tailwind_merge3.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "relative w-full h-full", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
4008
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: (0, import_tailwind_merge3.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "relative w-full h-full", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1969
4009
  Player,
1970
4010
  {
1971
4011
  ...props,
@@ -1979,10 +4019,10 @@ var Video = ({
1979
4019
  };
1980
4020
 
1981
4021
  // src/Event.tsx
1982
- var import_react14 = require("react");
4022
+ var import_react15 = require("react");
1983
4023
  var import_tailwind_merge4 = require("tailwind-merge");
1984
4024
  var import_react_query2 = require("@tanstack/react-query");
1985
- var import_jsx_runtime7 = require("react/jsx-runtime");
4025
+ var import_jsx_runtime10 = require("react/jsx-runtime");
1986
4026
  var Event = ({
1987
4027
  publicKey,
1988
4028
  eventId,
@@ -2012,8 +4052,8 @@ var Event = ({
2012
4052
  retry: queryOptions.retry ?? 3,
2013
4053
  retryDelay: queryOptions.retryDelay ?? ((attemptIndex) => Math.min(1e3 * 2 ** attemptIndex, 3e4))
2014
4054
  });
2015
- const [activePlaylist, setActivePlaylist] = (0, import_react14.useState)();
2016
- const [activeVideoId, setActiveVideoId] = (0, import_react14.useState)();
4055
+ const [activePlaylist, setActivePlaylist] = (0, import_react15.useState)();
4056
+ const [activeVideoId, setActiveVideoId] = (0, import_react15.useState)();
2017
4057
  const videoIds = eventData?.videoIds ?? [];
2018
4058
  const {
2019
4059
  data: videosData,
@@ -2029,8 +4069,8 @@ var Event = ({
2029
4069
  retry: queryOptions.retry ?? 3,
2030
4070
  retryDelay: queryOptions.retryDelay ?? ((attemptIndex) => Math.min(1e3 * 2 ** attemptIndex, 3e4))
2031
4071
  });
2032
- const [loadingApisState, setLoadingApisState] = (0, import_react14.useState)(true);
2033
- (0, import_react14.useEffect)(() => {
4072
+ const [loadingApisState, setLoadingApisState] = (0, import_react15.useState)(true);
4073
+ (0, import_react15.useEffect)(() => {
2034
4074
  if (videosData !== void 0) {
2035
4075
  setLoadingApisState(false);
2036
4076
  const videosWithPlaylists = videosData.filter(
@@ -2062,12 +4102,12 @@ var Event = ({
2062
4102
  }
2063
4103
  }, [videosData, eventData]);
2064
4104
  const { t } = useMessages_default(locale);
2065
- (0, import_react14.useEffect)(() => {
4105
+ (0, import_react15.useEffect)(() => {
2066
4106
  if (events?.onEventData && eventData) {
2067
4107
  events.onEventData(eventData);
2068
4108
  }
2069
4109
  }, [eventData, events]);
2070
- (0, import_react14.useEffect)(() => {
4110
+ (0, import_react15.useEffect)(() => {
2071
4111
  if (events?.onVideoData && activeVideoId && videosData) {
2072
4112
  const activeVideo = videosData.find((video) => video.id === activeVideoId);
2073
4113
  if (activeVideo) {
@@ -2075,10 +4115,10 @@ var Event = ({
2075
4115
  }
2076
4116
  }
2077
4117
  }, [activeVideoId, videosData, events]);
2078
- const [error, setError] = (0, import_react14.useState)(null);
2079
- const [loadingPlaylist, setLoadingPlaylist] = (0, import_react14.useState)(true);
4118
+ const [error, setError] = (0, import_react15.useState)(null);
4119
+ const [loadingPlaylist, setLoadingPlaylist] = (0, import_react15.useState)(true);
2080
4120
  const videosDataError = videosData?.some((video) => !!video.error);
2081
- (0, import_react14.useEffect)(() => {
4121
+ (0, import_react15.useEffect)(() => {
2082
4122
  if (eventError || videosError || videosDataError) {
2083
4123
  const errorObj = eventError || videosError || videosData?.find((video) => !!video.error)?.error && new Error(videosData?.find((video) => !!video.error)?.error) || new Error("default");
2084
4124
  setError(errorObj);
@@ -2089,7 +4129,7 @@ var Event = ({
2089
4129
  setError(null);
2090
4130
  }
2091
4131
  }, [eventError, videosError, videosDataError, videosData, events]);
2092
- (0, import_react14.useEffect)(() => {
4132
+ (0, import_react15.useEffect)(() => {
2093
4133
  const eventLoadedWithNoVideos = !isEventLoading && eventData && eventData.videoIds && (!eventData.videoIds || eventData?.videoIds?.length === 0) && !loadingApisState;
2094
4134
  const allApisLoadedWithPotentialVideos = !isEventLoading && !videosIsLoading && eventData && !loadingApisState;
2095
4135
  if (eventLoadedWithNoVideos || allApisLoadedWithPotentialVideos) {
@@ -2099,7 +4139,7 @@ var Event = ({
2099
4139
  if (error) {
2100
4140
  const title = t(error.message)?.length ? t(error.message) : t("DEFAULT_ERROR");
2101
4141
  const description = t(`${error.message}_DESCRIPTION`)?.length ? t(`${error.message}_DESCRIPTION`) : t("DEFAULT_ERROR_DESCRIPTION");
2102
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: (0, import_tailwind_merge4.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "relative w-full h-full", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4142
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: (0, import_tailwind_merge4.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "relative w-full h-full", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2103
4143
  ErrorScreen,
2104
4144
  {
2105
4145
  title,
@@ -2111,12 +4151,12 @@ var Event = ({
2111
4151
  events.onEmptyPlaylists();
2112
4152
  }
2113
4153
  if (loadingPlaylist) {
2114
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: (0, import_tailwind_merge4.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "relative w-full h-full bg-[#151515]", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Loading, {}) }) });
4154
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: (0, import_tailwind_merge4.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "relative w-full h-full bg-[#151515]", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Loading, {}) }) });
2115
4155
  }
2116
4156
  if (activePlaylist && activeVideoId && videosData) {
2117
4157
  const activeVideo = videosData.find((video) => video.id === activeVideoId);
2118
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: (0, import_tailwind_merge4.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "relative w-full h-full", children: [
2119
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4158
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: (0, import_tailwind_merge4.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: [
4159
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "relative w-full h-full", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2120
4160
  Player,
2121
4161
  {
2122
4162
  ...props,
@@ -2125,8 +4165,8 @@ var Event = ({
2125
4165
  events,
2126
4166
  containerClassName: "w-full h-full"
2127
4167
  }
2128
- ),
2129
- !hideTitle && eventData && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4168
+ ) }),
4169
+ !hideTitle && eventData && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2130
4170
  TitleAndDescription,
2131
4171
  {
2132
4172
  title: eventData.title,
@@ -2135,10 +4175,10 @@ var Event = ({
2135
4175
  locale
2136
4176
  }
2137
4177
  )
2138
- ] }) });
4178
+ ] });
2139
4179
  }
2140
4180
  if (eventData) {
2141
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: (0, import_tailwind_merge4.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "relative w-full h-full", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4181
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: (0, import_tailwind_merge4.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "relative w-full h-full", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2142
4182
  PreEvent,
2143
4183
  {
2144
4184
  event: eventData,
@@ -2160,12 +4200,12 @@ function PreEvent({
2160
4200
  }) {
2161
4201
  const date = new Date(event.startTime);
2162
4202
  const now = /* @__PURE__ */ new Date();
2163
- const [remainingTime, setRemainingTime] = (0, import_react14.useState)(
4203
+ const [remainingTime, setRemainingTime] = (0, import_react15.useState)(
2164
4204
  date.getTime() - now.getTime()
2165
4205
  );
2166
4206
  const shouldBeStarted = remainingTime < 0;
2167
4207
  const { t } = useMessages_default(locale);
2168
- (0, import_react14.useEffect)(() => {
4208
+ (0, import_react15.useEffect)(() => {
2169
4209
  const interval = setInterval(() => {
2170
4210
  if (remainingTime < 0) {
2171
4211
  clearInterval(interval);
@@ -2175,17 +4215,17 @@ function PreEvent({
2175
4215
  }, 1e3);
2176
4216
  return () => clearInterval(interval);
2177
4217
  }, [date, remainingTime]);
2178
- const renderCountdown = (0, import_react14.useCallback)(() => {
4218
+ const renderCountdown = (0, import_react15.useCallback)(() => {
2179
4219
  if (shouldBeStarted) {
2180
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-base-content text-xl", children: t("EVENT_NOT_STARTED") });
4220
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-base-content text-xl", children: t("EVENT_NOT_STARTED") });
2181
4221
  }
2182
4222
  const seconds = Math.floor(remainingTime / 1e3) % 60;
2183
4223
  const minutes = Math.floor(remainingTime / 1e3 / 60) % 60;
2184
4224
  const hours = Math.floor(remainingTime / 1e3 / 60 / 60) % 24;
2185
4225
  const days = Math.floor(remainingTime / 1e3 / 60 / 60 / 24);
2186
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "grid grid-flow-col gap-5 text-center auto-cols-max", children: [
2187
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
2188
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4226
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "grid grid-flow-col gap-5 text-center auto-cols-max", children: [
4227
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4228
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2189
4229
  "span",
2190
4230
  {
2191
4231
  style: { "--value": days },
@@ -2194,10 +4234,10 @@ function PreEvent({
2194
4234
  children: days?.toString()?.padStart(2, "0")
2195
4235
  }
2196
4236
  ) }),
2197
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("DAYS") })
4237
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("DAYS") })
2198
4238
  ] }),
2199
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
2200
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4239
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4240
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2201
4241
  "span",
2202
4242
  {
2203
4243
  style: { "--value": hours },
@@ -2206,10 +4246,10 @@ function PreEvent({
2206
4246
  children: hours?.toString()?.padStart(2, "0")
2207
4247
  }
2208
4248
  ) }),
2209
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("HOURS") })
4249
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("HOURS") })
2210
4250
  ] }),
2211
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
2212
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4251
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4252
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2213
4253
  "span",
2214
4254
  {
2215
4255
  style: { "--value": minutes },
@@ -2218,10 +4258,10 @@ function PreEvent({
2218
4258
  children: minutes?.toString()?.padStart(2, "0")
2219
4259
  }
2220
4260
  ) }),
2221
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("MINUTES") })
4261
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("MINUTES") })
2222
4262
  ] }),
2223
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
2224
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4263
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4264
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2225
4265
  "span",
2226
4266
  {
2227
4267
  style: { "--value": seconds },
@@ -2230,12 +4270,12 @@ function PreEvent({
2230
4270
  children: seconds?.toString()?.padStart(2, "0")
2231
4271
  }
2232
4272
  ) }),
2233
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("SECONDS") })
4273
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("SECONDS") })
2234
4274
  ] })
2235
4275
  ] });
2236
4276
  }, [remainingTime, shouldBeStarted, t]);
2237
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_jsx_runtime7.Fragment, { children: event?.posterUrl ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
2238
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
4277
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, { children: event?.posterUrl ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
4278
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2239
4279
  "div",
2240
4280
  {
2241
4281
  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",
@@ -2244,13 +4284,10 @@ function PreEvent({
2244
4284
  backgroundRepeat: "no-repeat",
2245
4285
  backgroundSize: "cover"
2246
4286
  },
2247
- children: [
2248
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "absolute inset-0 bg-black bg-opacity-40" }),
2249
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "relative z-10", children: renderCountdown() })
2250
- ]
4287
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "relative z-10", children: renderCountdown() })
2251
4288
  }
2252
4289
  ),
2253
- !hideTitle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4290
+ !hideTitle && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2254
4291
  TitleAndDescription,
2255
4292
  {
2256
4293
  title: event.title,
@@ -2259,21 +4296,18 @@ function PreEvent({
2259
4296
  locale
2260
4297
  }
2261
4298
  )
2262
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
2263
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
4299
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
4300
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2264
4301
  "div",
2265
4302
  {
2266
4303
  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",
2267
4304
  style: {
2268
4305
  backgroundImage: backgroundImageUrl ? `url(${backgroundImageUrl})` : ""
2269
4306
  },
2270
- children: [
2271
- backgroundImageUrl && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "absolute inset-0 bg-black bg-opacity-40" }),
2272
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "relative z-10", children: renderCountdown() })
2273
- ]
4307
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "relative z-10", children: renderCountdown() })
2274
4308
  }
2275
4309
  ),
2276
- !hideTitle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4310
+ !hideTitle && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2277
4311
  TitleAndDescription,
2278
4312
  {
2279
4313
  title: event.title,
@@ -2291,9 +4325,9 @@ var TitleAndDescription = ({
2291
4325
  locale = "en",
2292
4326
  className
2293
4327
  }) => {
2294
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: (0, import_tailwind_merge4.twMerge)("mt-3 mb-6 m-event-details-ctn px-4 text-left w-full", className), children: [
2295
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "text-base md:text-xl m-event-title text-base-content font-medium", children: title }),
2296
- startTime ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "text-sm md:text-base text-base-content/70 m-event-start-time", children: [
4328
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: (0, import_tailwind_merge4.twMerge)("mt-3 mb-6 m-event-details-ctn px-4 text-left w-full", className), children: [
4329
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "text-base md:text-xl m-event-title text-base-content font-medium", children: title }),
4330
+ startTime ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "text-sm md:text-base text-base-content/70 m-event-start-time", children: [
2297
4331
  new Date(startTime || "").toLocaleDateString(locale || "default", {
2298
4332
  month: "long",
2299
4333
  year: "numeric",
@@ -2306,29 +4340,15 @@ var TitleAndDescription = ({
2306
4340
  minute: "2-digit"
2307
4341
  })
2308
4342
  ] }) : null,
2309
- description && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "text-xs md:text-sm text-base-content/60 uppercase", children: description })
4343
+ description && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "text-xs md:text-sm text-base-content/60 uppercase", children: description })
2310
4344
  ] });
2311
4345
  };
2312
4346
 
2313
- // src/ClientSideEvent.tsx
2314
- var import_react15 = require("react");
2315
- var import_jsx_runtime8 = require("react/jsx-runtime");
2316
- var ClientSideEvent = (props) => {
2317
- const [isClient, setIsClient] = (0, import_react15.useState)(false);
2318
- (0, import_react15.useEffect)(() => {
2319
- setIsClient(true);
2320
- }, []);
2321
- if (!isClient) {
2322
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "md:rounded-2xl overflow-hidden aspect-video bg-[#151515] flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "text-white" }) });
2323
- }
2324
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Event, { ...props });
2325
- };
2326
-
2327
4347
  // src/CreativeWork.tsx
2328
4348
  var import_react16 = require("react");
2329
4349
  var import_tailwind_merge5 = require("tailwind-merge");
2330
4350
  var import_react_query3 = require("@tanstack/react-query");
2331
- var import_jsx_runtime9 = require("react/jsx-runtime");
4351
+ var import_jsx_runtime11 = require("react/jsx-runtime");
2332
4352
  var CreativeWork = ({
2333
4353
  publicKey,
2334
4354
  creativeWorkId,
@@ -2441,7 +4461,7 @@ var CreativeWork = ({
2441
4461
  if (error) {
2442
4462
  const title = t(error.message)?.length ? t(error.message) : t("DEFAULT_ERROR");
2443
4463
  const description = t(`${error.message}_DESCRIPTION`)?.length ? t(`${error.message}_DESCRIPTION`) : t("DEFAULT_ERROR_DESCRIPTION");
2444
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: (0, import_tailwind_merge5.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "relative w-full h-full", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4464
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: (0, import_tailwind_merge5.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "relative w-full h-full", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2445
4465
  ErrorScreen,
2446
4466
  {
2447
4467
  title,
@@ -2471,10 +4491,10 @@ var CreativeWork = ({
2471
4491
  events
2472
4492
  ]);
2473
4493
  if (isCreativeWorkLoading || videosIsLoading || loadingApisState) {
2474
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: (0, import_tailwind_merge5.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "relative w-full h-full", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Loading, {}) }) });
4494
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: (0, import_tailwind_merge5.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "relative w-full h-full", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Loading, {}) }) });
2475
4495
  }
2476
4496
  if (showCountDown && creativeWorkData) {
2477
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: (0, import_tailwind_merge5.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "relative w-full h-full bg-base-200 text-base-content flex justify-center items-center flex-col", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4497
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: (0, import_tailwind_merge5.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "relative w-full h-full bg-base-200 text-base-content flex justify-center items-center flex-col", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2478
4498
  PreCreativeWork,
2479
4499
  {
2480
4500
  creativeWork: creativeWorkData,
@@ -2487,8 +4507,8 @@ var CreativeWork = ({
2487
4507
  }
2488
4508
  if (activeVideoId && activePlaylist && !loadingPlaylist) {
2489
4509
  const activeVideo = videosData?.find((video) => video.id === activeVideoId);
2490
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: (0, import_tailwind_merge5.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "relative w-full h-full", children: [
2491
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4510
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: (0, import_tailwind_merge5.twMerge)("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "relative w-full h-full", children: [
4511
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2492
4512
  Player,
2493
4513
  {
2494
4514
  ...props,
@@ -2500,7 +4520,7 @@ var CreativeWork = ({
2500
4520
  containerClassName: "w-full h-full"
2501
4521
  }
2502
4522
  ),
2503
- !hideTitle && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4523
+ !hideTitle && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2504
4524
  TitleAndDescription2,
2505
4525
  {
2506
4526
  title: creativeWorkData?.title || "",
@@ -2513,7 +4533,7 @@ var CreativeWork = ({
2513
4533
  ] }) });
2514
4534
  }
2515
4535
  if (loadingPlaylist) {
2516
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Loading, {});
4536
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Loading, {});
2517
4537
  }
2518
4538
  return null;
2519
4539
  };
@@ -2545,15 +4565,15 @@ function PreCreativeWork({
2545
4565
  }, [date, remainingTime]);
2546
4566
  const renderCountdown = () => {
2547
4567
  if (shouldBeStarted) {
2548
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "text-base-content text-xl", children: t("EVENT_NOT_STARTED") });
4568
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-base-content text-xl", children: t("EVENT_NOT_STARTED") });
2549
4569
  }
2550
4570
  const seconds = Math.floor(remainingTime / 1e3) % 60;
2551
4571
  const minutes = Math.floor(remainingTime / 1e3 / 60) % 60;
2552
4572
  const hours = Math.floor(remainingTime / 1e3 / 60 / 60) % 24;
2553
4573
  const days = Math.floor(remainingTime / 1e3 / 60 / 60 / 24);
2554
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "grid grid-flow-col gap-5 text-center auto-cols-max", children: [
2555
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
2556
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4574
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "grid grid-flow-col gap-5 text-center auto-cols-max", children: [
4575
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4576
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2557
4577
  "span",
2558
4578
  {
2559
4579
  style: { "--value": days },
@@ -2562,10 +4582,10 @@ function PreCreativeWork({
2562
4582
  children: days?.toString()?.padStart(2, "0")
2563
4583
  }
2564
4584
  ) }),
2565
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("DAYS") })
4585
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("DAYS") })
2566
4586
  ] }),
2567
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
2568
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4587
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4588
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2569
4589
  "span",
2570
4590
  {
2571
4591
  style: { "--value": hours },
@@ -2574,10 +4594,10 @@ function PreCreativeWork({
2574
4594
  children: hours?.toString()?.padStart(2, "0")
2575
4595
  }
2576
4596
  ) }),
2577
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("HOURS") })
4597
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("HOURS") })
2578
4598
  ] }),
2579
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
2580
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4599
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4600
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2581
4601
  "span",
2582
4602
  {
2583
4603
  style: { "--value": minutes },
@@ -2586,10 +4606,10 @@ function PreCreativeWork({
2586
4606
  children: minutes?.toString()?.padStart(2, "0")
2587
4607
  }
2588
4608
  ) }),
2589
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("MINUTES") })
4609
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("MINUTES") })
2590
4610
  ] }),
2591
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
2592
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4611
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
4612
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2593
4613
  "span",
2594
4614
  {
2595
4615
  style: { "--value": seconds },
@@ -2598,12 +4618,12 @@ function PreCreativeWork({
2598
4618
  children: seconds?.toString()?.padStart(2, "0")
2599
4619
  }
2600
4620
  ) }),
2601
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("SECONDS") })
4621
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("SECONDS") })
2602
4622
  ] })
2603
4623
  ] });
2604
4624
  };
2605
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
2606
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
4625
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
4626
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
2607
4627
  "div",
2608
4628
  {
2609
4629
  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",
@@ -2611,12 +4631,12 @@ function PreCreativeWork({
2611
4631
  backgroundImage: backgroundImageUrl ? `url(${backgroundImageUrl})` : ""
2612
4632
  },
2613
4633
  children: [
2614
- backgroundImageUrl && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "absolute inset-0 bg-black bg-opacity-40" }),
2615
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "relative z-10", children: renderCountdown() })
4634
+ backgroundImageUrl && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "absolute inset-0 bg-black bg-opacity-40" }),
4635
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "relative z-10", children: renderCountdown() })
2616
4636
  ]
2617
4637
  }
2618
4638
  ),
2619
- !hideTitle && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4639
+ !hideTitle && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2620
4640
  TitleAndDescription2,
2621
4641
  {
2622
4642
  title: creativeWork.title,
@@ -2634,9 +4654,9 @@ var TitleAndDescription2 = ({
2634
4654
  locale = "en",
2635
4655
  className
2636
4656
  }) => {
2637
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: (0, import_tailwind_merge5.twMerge)("mt-3 mb-6 m-event-details-ctn px-4 text-left w-full", className), children: [
2638
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "text-base md:text-xl m-event-title text-base-content font-medium", children: title }),
2639
- releaseTime ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "text-sm md:text-base text-base-content/70 m-event-start-time", children: [
4657
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: (0, import_tailwind_merge5.twMerge)("mt-3 mb-6 m-event-details-ctn px-4 text-left w-full", className), children: [
4658
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "text-base md:text-xl m-event-title text-base-content font-medium", children: title }),
4659
+ releaseTime ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "text-sm md:text-base text-base-content/70 m-event-start-time", children: [
2640
4660
  new Date(releaseTime || "").toLocaleDateString(locale || "default", {
2641
4661
  month: "long",
2642
4662
  year: "numeric",
@@ -2649,13 +4669,13 @@ var TitleAndDescription2 = ({
2649
4669
  minute: "2-digit"
2650
4670
  })
2651
4671
  ] }) : null,
2652
- description && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "text-xs md:text-sm text-base-content/60 uppercase", children: description })
4672
+ description && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "text-xs md:text-sm text-base-content/60 uppercase", children: description })
2653
4673
  ] });
2654
4674
  };
2655
4675
 
2656
4676
  // src/QueryProvider.tsx
2657
4677
  var import_react_query4 = require("@tanstack/react-query");
2658
- var import_jsx_runtime10 = require("react/jsx-runtime");
4678
+ var import_jsx_runtime12 = require("react/jsx-runtime");
2659
4679
  var queryClient = new import_react_query4.QueryClient({
2660
4680
  defaultOptions: {
2661
4681
  queries: {
@@ -2669,15 +4689,17 @@ var queryClient = new import_react_query4.QueryClient({
2669
4689
  }
2670
4690
  });
2671
4691
  var QueryProvider = ({ children }) => {
2672
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_query4.QueryClientProvider, { client: queryClient, children });
4692
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_react_query4.QueryClientProvider, { client: queryClient, children });
2673
4693
  };
2674
4694
  // Annotate the CommonJS export names for ESM import in node:
2675
4695
  0 && (module.exports = {
2676
- ClientSideEvent,
4696
+ BigPlayIcon,
2677
4697
  CreativeWork,
2678
4698
  Event,
2679
4699
  Player,
2680
4700
  QueryProvider,
4701
+ SkipBackIcon,
4702
+ SkipForwardIcon,
2681
4703
  Video,
2682
4704
  queryClient
2683
4705
  });