diff --git a/frontend-tools/video-js/src/VideoJS.css b/frontend-tools/video-js/src/VideoJS.css index 304923fe..143622f8 100644 --- a/frontend-tools/video-js/src/VideoJS.css +++ b/frontend-tools/video-js/src/VideoJS.css @@ -10,15 +10,6 @@ html { text-decoration: none!important; } -div.video-js.vjs-fluid { - /* border-radius: 12px !important; - overflow: hidden !important; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important; - outline: none !important; - max-width:800px !important; - height:600px !important; - padding:0 !important ; */ -} .video-js video { outline: none !important; } @@ -41,9 +32,6 @@ div.video-js.vjs-fluid { height:48px; } - - -/* Responsive video container */ .video-container { width: 100%; max-width: 1200px; @@ -78,43 +66,41 @@ div.video-js.vjs-fluid { top: 0; left: 0; width: 100%; - height: calc(100% - 46px); - background: rgba(0, 0, 0, 0.9); + background: rgba(0, 0, 0, 0.5); display: none; flex-direction: column; - justify-content: center; /* Center the content vertically */ + justify-content: center; align-items: center; z-index: 1000; - padding: 20px 0; - box-sizing: border-box; - /* Remove overflow-y: auto to prevent scrollbar */ + padding:0; + height:calc(100% - 46px); + box-sizing: border-box; + padding: 20px; + gap: 10px; } .vjs-related-videos-title { color: white; font-size: 24px; - margin-bottom: 20px; + line-height:24px; + padding:0; + margin: 0; text-align: center; font-weight: bold; - /* Ensure title doesn't interfere with centering */ flex-shrink: 0; } .vjs-related-videos-grid { display: grid; - grid-template-columns: repeat(4, 1fr); /* Default: 4 columns for large screens */ - gap: 3px; /* Reduced gap like YouTube */ + grid-template-columns: repeat(4, 1fr); + gap: 3px; width: 100%; max-width: 100%; margin: 0; - padding: 16px; box-sizing: border-box; - align-content: center; /* Center the grid content */ justify-items: center; - /* Ensure grid fits within video area */ - max-height: calc(100vh - 200px); /* Limit height to fit within video area */ - overflow: hidden; /* Hide videos that don't fit */ - /* Center the entire grid within the video area */ + overflow: hidden; align-self: center; flex-shrink: 0; + height:calc(100% - 44px) ; } .vjs-related-video-item { position: relative; @@ -127,7 +113,6 @@ div.video-js.vjs-fluid { /* aspect-ratio: 16/9; */ width: 100%; max-width: 100%; - /* Remove min/max height constraints to let aspect-ratio handle sizing */ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); /* Subtle shadow like YouTube */ } .vjs-related-video-item:hover { @@ -307,33 +292,12 @@ div.video-js.vjs-fluid { } } -/* Make menus clickable instead of hover-only */ -.video-js .vjs-menu-button:not(.vjs-disabled) .vjs-menu { - display: none !important; /* Hide by default */ -} - +.video-js .vjs-menu-button:not(.vjs-disabled) .vjs-menu { display: none !important; } .video-js .vjs-menu-button:not(.vjs-disabled).vjs-lock-showing .vjs-menu, -.video-js .vjs-menu-button:not(.vjs-disabled) .vjs-menu.vjs-lock-showing { - display: block !important; /* Show when clicked */ -} - -/* Disable hover effects on menu buttons */ -.video-js .vjs-menu-button:hover .vjs-menu { - display: none !important; -} - -.video-js .vjs-menu-button.vjs-lock-showing:hover .vjs-menu { - display: block !important; -} - -/* Ensure clicked menus stay visible */ -.video-js .vjs-menu.vjs-lock-showing { - display: block !important; - opacity: 1 !important; - visibility: visible !important; -} - -/* Hide menus/tooltips when chapters overlay is open */ +.video-js .vjs-menu-button:not(.vjs-disabled) .vjs-menu.vjs-lock-showing { display: block !important;} +.video-js .vjs-menu-button:hover .vjs-menu { display: none !important;} +.video-js .vjs-menu-button.vjs-lock-showing:hover .vjs-menu { display: block !important;} +.video-js .vjs-menu.vjs-lock-showing { display: block !important; opacity: 1 !important; visibility: visible !important;} .video-js.chapters-open .vjs-menu, .video-js.chapters-open .vjs-menu.vjs-lock-showing, .video-js.chapters-open .vjs-hover-display, @@ -349,29 +313,22 @@ div.video-js.vjs-fluid { width:auto !important; } -/* Hide only Captions (CC) icon; keep Subtitles icon visible */ .video-js .vjs-captions-button, .video-js .vjs-subs-caps-button { display: none !important; } - -/* Hide the built-in Subtitles dropdown popup; we handle toggle ourselves */ .video-js .vjs-subtitles-button .vjs-menu { display: none !important; visibility: hidden !important; opacity: 0 !important; pointer-events: none !important; } - -/* Ensure subtitle menu is completely hidden in all states */ .video-js .vjs-subtitles-button .vjs-menu.vjs-lock-showing { display: none !important; visibility: hidden !important; opacity: 0 !important; pointer-events: none !important; } - -/* Fix subtitle positioning to prevent overlap with control bar - ALL SCREEN SIZES */ .video-js .vjs-text-track-display { position: absolute !important; bottom: 6em !important; /* Position well above control bar */ @@ -383,140 +340,67 @@ div.video-js.vjs-fluid { } .video-js .vjs-text-track-cue { - position: absolute !important; - bottom: 0 !important; - left: 0 !important; - right: 0 !important; - text-align: center !important; - margin: 0 !important; - padding: 0 !important; - background: transparent !important; - border: none !important; - font-size: 1.2em !important; - line-height: 1.4 !important; - color: #ffffff !important; - text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8) !important; - font-family: Arial, sans-serif !important; - font-weight: 600 !important; - white-space: pre-line !important; - word-wrap: break-word !important; - max-width: 90% !important; - margin-left: auto !important; - margin-right: auto !important; - z-index: 11 !important; /* Ensure subtitle text appears on top */ +position: absolute !important; +bottom: 0 !important; +left: 0 !important; +right: 0 !important; +text-align: center !important; +margin: 0 !important; +padding: 0 !important; +background: transparent !important; +border: none !important; +font-size: 1.2em !important; +line-height: 1.4 !important; +color: #ffffff !important; +text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8) !important; +font-family: Arial, sans-serif !important; +font-weight: 600 !important; +white-space: pre-line !important; +word-wrap: break-word !important; +max-width: 90% !important; +margin-left: auto !important; +margin-right: auto !important; +z-index: 11 !important; /* Ensure subtitle text appears on top */ } .video-js .vjs-text-track-cue > div { - background: rgba(0, 0, 0, 0.7) !important; - padding: 8px 12px !important; - border-radius: 4px !important; - display: inline-block !important; - margin: 2px 0 !important; - max-width: 100% !important; - box-sizing: border-box !important; +background: rgba(0, 0, 0, 0.7) !important; +padding: 8px 12px !important; +border-radius: 4px !important; +display: inline-block !important; +margin: 2px 0 !important; +max-width: 100% !important; +box-sizing: border-box !important; } -/* Fullscreen subtitle positioning */ -.video-js.vjs-fullscreen .vjs-text-track-display { - bottom: 8em !important; /* More space in fullscreen */ -} - -.video-js.vjs-fullscreen .vjs-text-track-cue { - font-size: 1.4em !important; - max-width: 85% !important; -} - -.video-js.vjs-fullscreen .vjs-text-track-cue > div { - padding: 10px 16px !important; - font-size: 1em !important; -} - -.video-js .vjs-subtitles-button .vjs-menu.vjs-lock-showing .vjs-menu-content { - display: none !important; - visibility: hidden !important; - opacity: 0 !important; - pointer-events: none !important; -} - -/* Hide the built-in Chapters dropdown popup; we handle toggle ourselves */ +.video-js.vjs-fullscreen .vjs-text-track-display { bottom: 8em !important;} +.video-js.vjs-fullscreen .vjs-text-track-cue { font-size: 1.4em !important; max-width: 85% !important;} +.video-js.vjs-fullscreen .vjs-text-track-cue > div { padding: 10px 16px !important; font-size: 1em !important;} +.video-js .vjs-subtitles-button .vjs-menu.vjs-lock-showing .vjs-menu-content { display: none !important; visibility: hidden !important; +opacity: 0 !important; pointer-events: none !important;} .video-js .vjs-chapters-button .vjs-menu { display: none !important; } - -/* Ensure chapters menu is hidden in all states */ .video-js .vjs-chapters-button .vjs-menu.vjs-lock-showing { display: none !important; } .video-js .vjs-chapters-button .vjs-menu.vjs-lock-showing .vjs-menu-content { display: none !important; } +.video-js .vjs-chapters-button .vjs-menu { display: none !important; visibility: hidden !important; opacity: 0 !important; +pointer-events: none !important;} +.video-js .vjs-subtitles-button { position: relative; cursor: pointer !important; pointer-events: auto !important;} +.video-js button.vjs-subtitles-button { cursor: pointer !important; pointer-events: auto !important; +touch-action: manipulation !important; -webkit-tap-highlight-color: transparent !important;} +.video-js button.vjs-subtitles-button::before { content: ""; position: absolute; left: 50%; transform:translateX(-50%); bottom: 6px; +height: 3px; background: #e1002d; border-radius: 2px; width:0; padding:0; transition: none !important; animation: none !important; +-webkit-transition: none !important; -moz-transition: none !important; -o-transition: none !important;} -/* Completely disable chapters menu functionality */ -.video-js .vjs-chapters-button .vjs-menu { - display: none !important; - visibility: hidden !important; - opacity: 0 !important; - pointer-events: none !important; -} +.video-js .vjs-subs-active button.vjs-subtitles-button::before { width:24px; transition: none !important; +animation: none !important; -webkit-transition: none !important; -moz-transition: none !important; -o-transition: none !important;} +.video-js button.vjs-subtitles-button { transition: none !important; animation: none !important; -webkit-transition: none !important; +-moz-transition: none !important; -o-transition: none !important;} -/* YouTube-like Subtitles icon active indicator (red underline) */ -.video-js .vjs-subtitles-button { - position: relative; - cursor: pointer !important; - pointer-events: auto !important; -} - -.video-js button.vjs-subtitles-button { - cursor: pointer !important; - pointer-events: auto !important; - touch-action: manipulation !important; - -webkit-tap-highlight-color: transparent !important; -} - -.video-js button.vjs-subtitles-button::before { - content: ""; - position: absolute; - left: 50%; - transform:translateX(-50%); - bottom: 6px; - height: 3px; - background: #e1002d; - border-radius: 2px; - width:0; - padding:0; - transition: none !important; - animation: none !important; - -webkit-transition: none !important; - -moz-transition: none !important; - -o-transition: none !important; -} - -.video-js .vjs-subs-active button.vjs-subtitles-button::before { - width:24px; - transition: none !important; - animation: none !important; - -webkit-transition: none !important; - -moz-transition: none !important; - -o-transition: none !important; -} - -/* Ensure subtitle button itself has no transitions */ -.video-js button.vjs-subtitles-button { - transition: none !important; - animation: none !important; - -webkit-transition: none !important; - -moz-transition: none !important; - -o-transition: none !important; -} - -/* Hide default Video.js tooltips for autoplay button */ .video-js .vjs-autoplay-toggle .vjs-hover-display, .video-js .vjs-autoplay-toggle .vjs-tooltip, -.video-js .vjs-autoplay-toggle .vjs-tooltip-text { - display: none !important; - visibility: hidden !important; - opacity: 0 !important; - pointer-events: none !important; -} +.video-js .vjs-autoplay-toggle .vjs-tooltip-text { display: none !important; visibility: hidden !important; +opacity: 0 !important; pointer-events: none !important;} -/* Custom tooltip for autoplay toggle button */ -.video-js .vjs-autoplay-toggle { - position: relative; -} +.video-js .vjs-autoplay-toggle { position: relative;} .video-js .vjs-autoplay-toggle::after { content: attr(title); @@ -542,288 +426,8 @@ div.video-js.vjs-fluid { } .video-js .vjs-autoplay-toggle:hover::after, -.video-js .vjs-autoplay-toggle:focus::after { - opacity: 1; - visibility: visible; -} +.video-js .vjs-autoplay-toggle:focus::after { opacity: 1; visibility: visible;} - - - -/* Large desktop (1200px+) - 4x3 grid */ -@media(min-width: 1200px){ - .vjs-related-videos-grid { - grid-template-columns: repeat(4, 1fr); - gap: 3px; /* Tighter spacing like YouTube */ - padding: 20px; - max-height: calc(100vh - 220px); /* Ensure it fits within video area */ - } -} - -/* Desktop (1024px - 1199px) - 3x3 grid */ -@media(min-width: 1024px) and (max-width: 1199px){ - .vjs-related-videos-grid { - grid-template-columns: repeat(3, 1fr); - gap: 3px; /* Tighter spacing like YouTube */ - padding: 18px; - max-height: calc(100vh - 210px); /* Ensure it fits within video area */ - } -} - -/* Tablet (768px - 1023px) - 3x2 grid */ -@media(min-width: 768px) and (max-width: 1023px){ - .vjs-related-videos-grid { - grid-template-columns: repeat(3, 1fr); - gap: 3px; /* Tighter spacing like YouTube */ - padding: 14px; - max-height: calc(100vh - 200px); /* Ensure it fits within video area */ - } - - /* Hide all custom tooltips on tablet screens */ - .video-js .vjs-control:hover::after, - .video-js .vjs-control:focus::after, - .video-js .vjs-control:active::after { - display: none !important; - opacity: 0 !important; - visibility: hidden !important; - } - - /* Hide specific control tooltips on tablet */ - .video-js .vjs-play-control:hover::after, - .video-js .vjs-mute-control:hover::after, - .video-js .vjs-volume-panel:hover::after, - .video-js .vjs-fullscreen-control:hover::after, - .video-js .vjs-picture-in-picture-control:hover::after, - .video-js .vjs-settings-control:hover::after, - .video-js .vjs-chapters-control:hover::after, - .video-js .vjs-autoplay-toggle:hover::after, - .video-js .vjs-next-video-control:hover::after, - .video-js .vjs-remaining-time:hover::after { - display: none !important; - opacity: 0 !important; - visibility: hidden !important; - } -} - -/* Responsive adjustments */ -@media (max-width: 767px) { - .video-js .vjs-autoplay-toggle.touch-active::after { - opacity: 1; - visibility: visible; - } - .video-js .vjs-autoplay-toggle::after { - font-size: 11px; - padding: 5px 8px; - margin-bottom: 6px; - } - .video-container { - padding: 0 15px; - } - - .vjs-end-screen-overlay { - padding: 0; - height: calc(100% - 46px); - } - - .vjs-related-video-thumbnail { - height: 100%; - } - - .vjs-chapter-floating-tooltip { - font-size: 11px !important; - } - - /* Mobile settings popup visibility */ - - - - /* Mobile chapters popup visibility */ - .custom-chapters-overlay .video-chapter { - right: 10px ; - left: auto ; - width: 100% ; - max-width: calc(300px - 20px) ; - height: calc(100% - 40px) ; - max-height: calc(100% - 40px) ; - overflow: hidden ; - bottom: 40px; - } - - /* Mobile settings button fixes */ - .video-js .vjs-settings-button { - min-width: 44px !important; - height: 44px !important; - padding: 0 !important; - margin: 0 2px !important; - display: flex !important; - align-items: center !important; - justify-content: center !important; - touch-action: manipulation !important; - -webkit-tap-highlight-color: transparent !important; - cursor: pointer !important; - z-index: 1000 !important; - pointer-events: auto !important; - position: relative !important; - } - - .video-js .vjs-settings-button .vjs-icon-cog { - font-size: 20px !important; - width: 20px !important; - height: 20px !important; - display: flex !important; - align-items: center !important; - justify-content: center !important; - } - - /* Mobile touch improvements */ - .video-js .vjs-control-bar .vjs-button { - touch-action: manipulation !important; - -webkit-tap-highlight-color: transparent !important; - -webkit-touch-callout: none !important; - -webkit-user-select: none !important; - user-select: none !important; - } - - /* Mobile settings menu items */ - .custom-settings-overlay .settings-item { - padding:6px 16px ; - font-size:15px ; - touch-action: manipulation ; - line-height:18px; - } - - .custom-settings-overlay .settings-header { - padding: 10px 16px ; - font-size: 18px ; - line-height:20px ; - } - - /* Mobile submenu fixes */ - - - - /* Mobile chapters content adjustments */ - .chapter-head { - padding:10px 15px ; - } - - .chapter-title h3 a { - font-size: 15px !important; - line-height: 20px !important; - height:20px !important; - } - - .chapter-title p { - font-size: 11px !important; - line-height: 14px !important; - } - - - .playlist-items a { - padding:10px 16px !important; - min-height: 58px !important; - } - - .thumbnail-meta h4 { - font-size: 13px !important; - line-height: 18px !important; - } - - .thumbnail-meta .meta-sub .meta-dynamic { - font-size: 11px !important; - line-height: 16px !important; - } -} - - -@media(max-width:767px){ - body div.custom-settings-overlay{ bottom:40px; } - div.chapter-close button{ width:30px; height:30px;} - .vjs-related-videos-grid { - grid-template-columns: repeat(2, 1fr); - gap: 3px; /* Tighter spacing like YouTube */ - padding: 10px; - max-height: calc(100vh - 180px); /* Ensure it fits within video area */ - } - - /* Hide all custom tooltips on mobile screens */ - .video-js .vjs-control:hover::after, - .video-js .vjs-control:focus::after, - .video-js .vjs-control:active::after { - display: none !important; - opacity: 0 !important; - visibility: hidden !important; - } - - /* Hide specific control tooltips on mobile */ - .video-js .vjs-play-control:hover::after, - .video-js .vjs-mute-control:hover::after, - .video-js .vjs-volume-panel:hover::after, - .video-js .vjs-fullscreen-control:hover::after, - .video-js .vjs-picture-in-picture-control:hover::after, - .video-js .vjs-settings-control:hover::after, - .video-js .vjs-chapters-control:hover::after, - .video-js .vjs-autoplay-toggle:hover::after, - .video-js .vjs-next-video-control:hover::after, - .video-js .vjs-remaining-time:hover::after { - display: none !important; - opacity: 0 !important; - visibility: hidden !important; - } -} - -/* Small mobile responsive adjustments */ -@media (max-width: 480px) { - .video-container { - padding: 0 10px; - } - - .vjs-related-videos-grid { - grid-template-columns: repeat(2, 1fr); - gap: 3px; /* Very tight spacing like YouTube mobile */ - padding: 8px; - max-height: calc(100vh - 160px); /* Ensure it fits within video area */ - } - - /* Hide all custom tooltips on small mobile screens */ - .video-js .vjs-control:hover::after, - .video-js .vjs-control:focus::after, - .video-js .vjs-control:active::after { - display: none !important; - opacity: 0 !important; - visibility: hidden !important; - } - - /* Hide specific control tooltips on small mobile */ - .video-js .vjs-play-control:hover::after, - .video-js .vjs-mute-control:hover::after, - .video-js .vjs-volume-panel:hover::after, - .video-js .vjs-fullscreen-control:hover::after, - .video-js .vjs-picture-in-picture-control:hover::after, - .video-js .vjs-settings-control:hover::after, - .video-js .vjs-chapters-control:hover::after, - .video-js .vjs-autoplay-toggle:hover::after, - .video-js .vjs-next-video-control:hover::after, - .video-js .vjs-remaining-time:hover::after { - display: none !important; - opacity: 0 !important; - visibility: hidden !important; - } - .vjs-end-screen-overlay { - padding: 0; - height: calc(100% - 46px); - } - .vjs-related-video-thumbnail { - height: 100%; - } - .video-js .vjs-settings-button .vjs-icon-cog { - font-size: 22px !important; - width: 22px !important; - height: 22px !important; - } -} - -/* Settings Button - Base Styles */ .video-js .vjs-settings-button { cursor: pointer !important; pointer-events: auto !important; @@ -849,283 +453,75 @@ div.video-js.vjs-fluid { user-select: none !important; } -.video-js .vjs-settings-button:hover { - background-color: rgba(255, 255, 255, 0.1) !important; -} +.video-js .vjs-settings-button:hover { background-color: rgba(255, 255, 255, 0.1) !important;} +.video-js .vjs-settings-button:focus { outline: 2px solid #fff !important; outline-offset: 2px !important;} -.video-js .vjs-settings-button:focus { - outline: 2px solid #fff !important; - outline-offset: 2px !important; -} +.video-js .vjs-settings-button .vjs-icon-cog { font-size: 18px !important; width: 18px !important; height: 18px !important; +display: flex !important; align-items: center !important; justify-content: center !important;} +.vjs-play-progress { background-color: #019932 !important;} +.vjs-load-progress { background: rgba(255, 255, 255, 0.5) !important;} +.vjs-progress-holder { background: rgba(255, 255, 255, 0.5) !important;} -.video-js .vjs-settings-button .vjs-icon-cog { - font-size: 18px !important; - width: 18px !important; - height: 18px !important; - display: flex !important; - align-items: center !important; - justify-content: center !important; -} +.video-js .vjs-progress-control { position: absolute !important; bottom: 46px !important; left: 0 !important; right: 0 !important; +width: 100% !important; height: 0 !important; z-index: 3 !important; padding: 0 !important; margin: 0 auto !important;} +.video-js .vjs-control-bar .vjs-progress-control { display: none !important;} +.video-js .vjs-progress-control.vjs-control { display: block !important;} - - -/* Played portion, buffered portion, unplayed portion */ -.vjs-play-progress { - background-color: #019932 !important; -} -.vjs-load-progress { - background: rgba(255, 255, 255, 0.5) !important; -} -.vjs-progress-holder { - background: rgba(255, 255, 255, 0.5) !important; -} - -/* Move progress control out of control bar and position it above */ -.video-js .vjs-progress-control { - position: absolute !important; - bottom: 46px !important; - left: 0 !important; - right: 0 !important; - width: 100% !important; - height: 0 !important; - z-index: 3 !important; - padding: 0 !important; - margin: 0 auto !important; -} - -/* Hide the original progress control from the control bar */ -.video-js .vjs-control-bar .vjs-progress-control { - display: none !important; -} - -/* Optional: Ensure the progress control is visible */ -.video-js .vjs-progress-control.vjs-control { - display: block !important; -} - -/* Make the seek bar thicker */ -/* .video-js .vjs-play-progress, -.video-js .vjs-load-progress, -.video-js .vjs-progress-holder { - height: 4px !important; -} */ - -/* Remove the semi-transparent background from control bar */ - - - -/* Push specific buttons to the right */ -/* .video-js .vjs-playback-rate, -.video-js .vjs-picture-in-picture-control, -.video-js .vjs-fullscreen-control { - margin-left: auto !important; - order: 999 !important; -} -.video-js .vjs-picture-in-picture-control { - margin-left: 0 !important; -} -.video-js .vjs-fullscreen-control { - margin-left: 0 !important; -} */ - -/* Make all control bar icons bigger */ .video-js .vjs-control-bar .vjs-icon-placeholder, .video-js .vjs-control-bar .vjs-button .vjs-icon-placeholder, -.video-js .vjs-control-bar [class*="vjs-icon-"] { - font-size: 1.5em !important; - /* transform: translateY(-28px) !important; */ -} -/* .video-js .vjs-control-bar svg { - width: 3em !important; - height: 3em !important; - transform: translateY(-16px) !important; -} */ +.video-js .vjs-control-bar [class*="vjs-icon-"] { font-size: 1.5em !important;} -/******** BEGIN: Custom Remaining Time Styles *********/ -.vjs-control-bar .custom-remaining-time .vjs-remaining-time-display { - font-size: 14px !important; /* Increase font size */ - font-weight: 500; - line-height: 1; - display: flex; - align-items: center; - justify-content: center; - height: 100%; - color: #fff; -} +.vjs-control-bar .custom-remaining-time .vjs-remaining-time-display { font-size: 14px !important; font-weight: 500; line-height: 1; +display: flex; align-items: center; justify-content: center; height: 100%; color: #fff;} +.vjs-mouse-display { z-index: 4 !important;} +.vjs-slider-horizontal { top: -5px;} +.video-js .vjs-spacer-control {flex: 1 !important; min-width: 1px !important; height: 100% !important;} +.video-js .vjs-control-bar .vjs-control { flex: none !important;} +.video-js .vjs-autoplay-toggle { margin-right: 10px !important;} +.video-js .vjs-picture-in-picture-control { margin-left: 6px !important; } +.vjs-seek-indicator { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; +z-index: 9999 !important; pointer-events: none !important; display: none !important; align-items: center !important; justify-content: center !important; +opacity: 0 !important; visibility: hidden !important; transition: opacity 0.2s ease-in-out !important; } +.vjs-seek-indicator-content { background: transparent !important; flex-direction: column !important; align-items: center !important; +justify-content: center !important;} +.vjs-seek-indicator-icon { position: relative !important; display: flex !important; align-items: center !important; +justify-content: center !important; margin-bottom: 4px !important;} +.seek-icon-container { display: flex !important; flex-direction: column !important; align-items: center !important; +justify-content: center !important; animation: seekPulse 0.3s ease-out !important;} -/* Ensure proper vertical alignment within control bar */ -/* .vjs-control-bar .custom-remaining-time { - top: -5px; - display: flex; - align-items: center; - justify-content: center; - height: 100%; -} */ +.youtube-seek-container { display: flex !important; align-items: center !important; justify-content: center !important; +animation: youtubeSeekPulse 0.3s ease-out !important;} +.youtube-seek-circle { width: 80px !important; height: 80px !important; border-radius: 50% !important; -webkit-border-radius: 50% !important; +-moz-border-radius: 50% !important; background: rgba(0, 0, 0, 0.8) !important; backdrop-filter: blur(10px) !important; +-webkit-backdrop-filter: blur(10px) !important; display: flex !important; flex-direction: column !important; align-items: center !important; +justify-content: center !important; padding: 0 !important; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3) !important; +border: 1px solid rgba(255, 255, 255, 0.15) !important; box-sizing: border-box !important; overflow: hidden !important;} -/********* END: Custom Remaining Time Styles *********/ - -/* Volume Slider */ -.vjs-mouse-display { - z-index: 4 !important; -} -.vjs-slider-horizontal { - top: -5px; -} - - -/* Spacer element to push buttons to the right */ -.video-js .vjs-spacer-control { - flex: 1 !important; - min-width: 1px !important; - height: 100% !important; -} - -/* Basic control bar styling - let JavaScript handle positioning */ -/* .video-js .vjs-control-bar { - display: flex !important; - /* gap: 6px !important; Consistent spacing between all control bar icons */ - /* align-items: center !important; -} */ - -.video-js .vjs-control-bar .vjs-control { - /* Natural flex flow */ - flex: none !important; /* Prevent controls from growing */ -} - -/* Specific spacing for autoplay and picture-in-picture buttons */ -.video-js .vjs-autoplay-toggle { - margin-right: 10px !important; /* Add spacing after autoplay button */ -} - -.video-js .vjs-picture-in-picture-control { - margin-left: 6px !important; /* Add spacing before picture-in-picture button */ -} - -/* Seek Indicator Styles */ -.vjs-seek-indicator { - position: absolute !important; - top: 50% !important; - left: 50% !important; - transform: translate(-50%, -50%) !important; - z-index: 9999 !important; - pointer-events: none !important; - display: none !important; - align-items: center !important; - justify-content: center !important; - opacity: 0 !important; - visibility: hidden !important; - transition: opacity 0.2s ease-in-out !important; -} - -.vjs-seek-indicator-content { - background: transparent !important; - flex-direction: column !important; - align-items: center !important; - justify-content: center !important; -} - -.vjs-seek-indicator-icon { - position: relative !important; - display: flex !important; - align-items: center !important; - justify-content: center !important; - margin-bottom: 4px !important; -} - -.seek-icon-container { - display: flex !important; - flex-direction: column !important; - align-items: center !important; - justify-content: center !important; - animation: seekPulse 0.3s ease-out !important; -} - -/* YouTube-style seek indicator */ -.youtube-seek-container { - display: flex !important; - align-items: center !important; - justify-content: center !important; - animation: youtubeSeekPulse 0.3s ease-out !important; -} - -.youtube-seek-circle { - width: 80px !important; - height: 80px !important; - border-radius: 50% !important; - -webkit-border-radius: 50% !important; - -moz-border-radius: 50% !important; - background: rgba(0, 0, 0, 0.8) !important; - backdrop-filter: blur(10px) !important; - -webkit-backdrop-filter: blur(10px) !important; - display: flex !important; - flex-direction: column !important; - align-items: center !important; - justify-content: center !important; - padding: 0 !important; - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3) !important; - border: 1px solid rgba(255, 255, 255, 0.15) !important; - box-sizing: border-box !important; - overflow: hidden !important; -} - -.youtube-seek-icon { - display: flex !important; - align-items: center !important; - justify-content: center !important; - margin-bottom: 4px !important; -} - -.youtube-seek-icon svg { - filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.5)) !important; -} - -.youtube-seek-time { - color: white !important; - font-size: 10px !important; - font-weight: 500 !important; - text-align: center !important; - line-height: 1.2 !important; - opacity: 0.9 !important; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important; -} +.youtube-seek-icon {display: flex !important; align-items: center !important; justify-content: center !important; +margin-bottom: 4px !important;} +.youtube-seek-icon svg {filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.5)) !important;} +.youtube-seek-time {color: white !important;font-size: 10px !important;font-weight: 500 !important; text-align: center !important; +line-height: 1.2 !important; opacity: 0.9 !important; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;} @keyframes youtubeSeekPulse { 0% { - transform: scale(0.7); - opacity: 0.5; + transform: scale(0.7); opacity: 0.5; } 50% { - transform: scale(1.05); - opacity: 0.9; + transform: scale(1.05); opacity: 0.9; } 100% { - transform: scale(1); - opacity: 1; + transform: scale(1); opacity: 1; } } -.seek-seconds { - color: white !important; - font-size: 16px !important; - font-weight: bold !important; - text-shadow: 0 2px 4px rgba(0, 0, 0, 0.7) !important; - line-height: 1 !important; -} - -/* Remove old animation - replaced with youtubeSeekPulse */ - -.vjs-seek-indicator-text { - color: white !important; - font-size: 16px !important; - font-weight: 500 !important; - text-align: center !important; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8) !important; -} +.seek-seconds { color: white !important; font-size: 16px !important; font-weight: bold !important; +text-shadow: 0 2px 4px rgba(0, 0, 0, 0.7) !important; line-height: 1 !important;} +.vjs-seek-indicator-text { color: white !important; font-size: 16px !important; font-weight: 500 !important; +text-align: center !important; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8) !important;} button{cursor: pointer;} - -.video-js{ padding:0; height:100% !important;} - +.video-js{ padding:0; height:100% !important; border-radius:12px;} .video-chapter{ position:absolute; top:auto; bottom:60px; width:min(360px, calc(100% - 20px)); border:1px solid rgba(255, 255, 255, 0.12); border-radius:12px; height:calc(100% - 80px); background:rgba(18, 18, 18, 0.96); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); overflow:hidden; box-shadow: 0 12px 30px rgba(0,0,0,0.45); right:10px;} @@ -1163,7 +559,6 @@ color:#fff; white-space:normal; max-height:40px; -webkit-line-clamp: 2; line-cla .thumbnail-action button{ border:0; background:transparent; color:#fff; opacity:0;} .playlist-items a:hover .thumbnail-action button{ opacity:1;} -/* custom scrollbar for chapter list */ .chapter-body::-webkit-scrollbar{ width:10px; } .chapter-body::-webkit-scrollbar-thumb{ background:rgba(255,255,255,0.18); border-radius:8px; } .chapter-body::-webkit-scrollbar-track{ background:transparent; } @@ -1185,7 +580,6 @@ margin:0; width:0; transition:ease-in-out .5s !important; opacity:0;} .vjs-settings-button svg{ transition:ease-in-out .3s;} .vjs-settings-button.settings-clicked svg{ transform:rotate(30deg);} - .video-js span.vjs-control-text{ position:absolute !important; bottom: 125%; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.75); color: white; padding: 6px 8px !important; border-radius: 3px; font-size: 13px; white-space: nowrap; opacity: 0; pointer-events: none; transition: opacity 0.3s ease; z-index: 1000; box-shadow: 0 0 5px rgba(0,0,0,0.3);height: auto !important; width: auto !important; @@ -1207,15 +601,66 @@ height:30px; line-height:30px; overflow:hidden;} .vjs-chapter-floating-tooltip .position-info, .vjs-chapter-floating-tooltip .chapter-info{ font-size:15px; display:inline-block; margin:0 0 2px; line-height:normal; vertical-align:top; line-height:20px;} -@media(max-width:1024px){ - body div.custom-settings-overlay {height: calc(100% - 40px); max-height:300px;} -} @media (pointer: coarse) { .video-js .vjs-volume-panel div.vjs-volume-control {width: auto; opacity: 1;} } + +@media(min-width: 1200px){ + .vjs-related-videos-grid { grid-template-columns: repeat(4, 1fr);} +} + +@media (max-width: 1199px) { + .vjs-related-video-item:nth-child(n + 10) { display: none;} +} + +@media (max-width: 1139px) { + .vjs-related-video-item:nth-child(n + 7) { display: none;} +} + +@media(min-width: 1024px) and (max-width: 1199px){ + .vjs-related-videos-grid { grid-template-columns: repeat(3, 1fr);} +} + +@media(min-width: 1025px) { + .video-js .vjs-text-track-display { bottom: 6em !important;} + .video-js .vjs-autoplay-toggle { margin-right: 12px !important;} + .video-js .vjs-picture-in-picture-control { margin-left: 12px !important;} + .video-js .vjs-text-track-cue { font-size: 1.2em !important; max-width: 90% !important;} + .video-js .vjs-text-track-cue > div { padding: 8px 12px !important; font-size: 1em !important;} + .video-js.vjs-fullscreen .vjs-text-track-display { bottom: 8em !important;} +} + +@media(min-width: 768px) and (max-width: 1024px) { + .video-js .vjs-text-track-display { bottom: 7em !important;} + .video-js .vjs-text-track-cue {font-size: 1.15em !important; max-width: 88% !important;} + .video-js .vjs-text-track-cue > div { padding: 7px 11px !important; font-size: 0.95em !important;} + .video-js.vjs-fullscreen .vjs-text-track-display { bottom: 9em !important;} + .vjs-related-videos-grid {grid-template-columns: repeat(3, 1fr); } + + .video-js .vjs-control:hover::after, + .video-js .vjs-control:focus::after, + .video-js .vjs-control:active::after { display: none !important; opacity: 0 !important; visibility: hidden !important;} + + .video-js .vjs-play-control:hover::after, + .video-js .vjs-mute-control:hover::after, + .video-js .vjs-volume-panel:hover::after, + .video-js .vjs-fullscreen-control:hover::after, + .video-js .vjs-picture-in-picture-control:hover::after, + .video-js .vjs-settings-control:hover::after, + .video-js .vjs-chapters-control:hover::after, + .video-js .vjs-autoplay-toggle:hover::after, + .video-js .vjs-next-video-control:hover::after, + .video-js .vjs-remaining-time:hover::after { display: none !important; opacity: 0 !important; visibility: hidden !important; } +} + +@media(max-width:1024px){ + body div.custom-settings-overlay {height: calc(100% - 40px); max-height:300px;} +} + @media(max-width:767px){ + .vjs-related-vdeo-item:nth-child(n + 5) { display: none;} .vjs-chapters-button button.vjs-button, .vjs-subtitles-button button.vjs-button, .video-js button.vjs-control {width:32px; height: 32px;} button.vjs-button > .vjs-icon-placeholder:before { line-height: 32px;} @@ -1241,7 +686,77 @@ height:30px; line-height:30px; overflow:hidden;} .subtitles-submenu, .quality-submenu, .speed-submenu{ height:100%; overflow:auto;} + body div.custom-settings-overlay{ bottom:40px; } + div.chapter-close button{ width:30px; height:30px;} + .vjs-related-videos-grid { grid-template-columns: repeat(2, 1fr); } + + .video-js .vjs-control:hover::after, + .video-js .vjs-control:focus::after, + .video-js .vjs-control:active::after { display: none !important; opacity: 0 !important; visibility: hidden !important;} + + .video-js .vjs-play-control:hover::after, + .video-js .vjs-mute-control:hover::after, + .video-js .vjs-volume-panel:hover::after, + .video-js .vjs-fullscreen-control:hover::after, + .video-js .vjs-picture-in-picture-control:hover::after, + .video-js .vjs-settings-control:hover::after, + .video-js .vjs-chapters-control:hover::after, + .video-js .vjs-autoplay-toggle:hover::after, + .video-js .vjs-next-video-control:hover::after, + .video-js .vjs-remaining-time:hover::after { display: none !important; opacity: 0 !important; visibility: hidden !important;} + .video-js .vjs-autoplay-toggle.touch-active::after {opacity: 1; visibility: visible; } + .video-js .vjs-autoplay-toggle::after { font-size: 11px; padding: 5px 8px; margin-bottom: 6px; } + .video-container {padding: 0 15px;} + .vjs-related-video-thumbnail {height: 100%; } + .vjs-chapter-floating-tooltip {font-size: 11px !important;} + .custom-chapters-overlay .video-chapter { right: 10px ; left: auto ; width: 100% ; max-width: calc(300px - 20px) ; height: calc(100% - 40px) ; + max-height: calc(100% - 40px) ; overflow: hidden ; bottom: 40px; } + .video-js .vjs-settings-button { min-width: 44px !important; height: 44px !important; padding: 0 !important; margin: 0 2px !important; display: flex !important; + align-items: center !important; justify-content: center !important; touch-action: manipulation !important; -webkit-tap-highlight-color: transparent !important; cursor: pointer !important; z-index: 1000 !important; pointer-events: auto !important; position: relative !important; } + .video-js .vjs-settings-button .vjs-icon-cog { font-size: 20px !important; width: 20px !important; height: 20px !important; display: flex !important; align-items: center !important; justify-content: center !important; } + .video-js .vjs-control-bar .vjs-button {touch-action: manipulation !important; -webkit-tap-highlight-color: transparent !important; -webkit-touch-callout: none !important; -webkit-user-select: none !important; user-select: none !important; } + + .custom-settings-overlay .settings-item {padding:6px 16px ; font-size:15px ; touch-action: manipulation ; line-height:18px; } + .custom-settings-overlay .settings-header {padding: 10px 16px ; font-size: 18px ; line-height:20px ; } + .chapter-head {padding:10px 15px ;} + .chapter-title h3 a {font-size: 15px !important; line-height: 20px !important; height:20px !important; } + .chapter-title p {font-size: 11px !important; line-height: 14px !important; } + .playlist-items a {padding:10px 16px !important; min-height: 58px !important; } + .thumbnail-meta h4 {font-size: 13px !important; line-height: 18px !important; } + .thumbnail-meta .meta-sub .meta-dynamic {font-size: 11px !important; line-height: 16px !important; } + +} + +@media (max-width: 574px) { + .vjs-related-video-item:nth-child(n + 3) { display: none;} +} + +@media(max-width:480px){ + .video-container { padding: 0 10px;} + + .video-js .vjs-control:hover::after, + .video-js .vjs-control:focus::after, + .video-js .vjs-control:active::after { display: none !important; opacity: 0 !important; visibility: hidden !important;} + + .video-js .vjs-play-control:hover::after, + .video-js .vjs-mute-control:hover::after, + .video-js .vjs-volume-panel:hover::after, + .video-js .vjs-fullscreen-control:hover::after, + .video-js .vjs-picture-in-picture-control:hover::after, + .video-js .vjs-settings-control:hover::after, + .video-js .vjs-chapters-control:hover::after, + .video-js .vjs-autoplay-toggle:hover::after, + .video-js .vjs-next-video-control:hover::after, + .video-js .vjs-remaining-time:hover::after { display: none !important; opacity: 0 !important; visibility: hidden !important;} + + .vjs-related-video-thumbnail {height: 100%;} + .video-js .vjs-settings-button .vjs-icon-cog {font-size: 22px !important; width: 22px !important; height: 22px !important;} +} + +@media (max-width: 439px) { + .vjs-related-video-item:nth-child(n + 2) { display: none;} + .vjs-related-videos-grid { grid-template-columns: repeat(1, 1fr);} } @media(max-width:399px){ @@ -1249,109 +764,14 @@ height:30px; line-height:30px; overflow:hidden;} .vjs-subtitles-button button.vjs-button, .video-js button.vjs-control {width:28px; height: 28px;} button.vjs-button > .vjs-icon-placeholder:before { line-height: 28px;} .vjs-next-video-control svg{width:28px; height: 28px;} - .video-js div.vjs-control {height: 28px;} - - /* Small mobile spacing for autoplay and picture-in-picture buttons */ - .video-js .vjs-autoplay-toggle { - margin-right: 4px !important; /* Even smaller spacing for small mobile */ - } - - .video-js .vjs-picture-in-picture-control { - margin-left: 4px !important; /* Even smaller spacing for small mobile */ - } - - /* Small mobile subtitle positioning adjustments - prevent overlap with control bar when cursor is in middle */ - .video-js .vjs-text-track-display { - bottom: 7em !important; /* Extra safe margin for small mobile to prevent overlap */ - } - - .video-js .vjs-text-track-cue { - font-size: 1em !important; - max-width: 98% !important; - } - - .video-js .vjs-text-track-cue > div { - padding: 4px 8px !important; - font-size: 0.85em !important; - background: rgba(0, 0, 0, 0.85) !important; /* Even stronger background for small mobile */ - } - - /* Small mobile fullscreen adjustments */ - .video-js.vjs-fullscreen .vjs-text-track-display { - bottom: 9em !important; /* Extra space in small mobile fullscreen */ - } - - .video-js.vjs-fullscreen .vjs-text-track-cue { - font-size: 1.2em !important; - max-width: 95% !important; - } - - .video-js.vjs-fullscreen .vjs-text-track-cue > div { - padding: 6px 10px !important; - font-size: 0.9em !important; - } - + .video-js div.vjs-control {height: 28px;} + .video-js .vjs-autoplay-toggle { margin-right: 4px !important; } + .video-js .vjs-picture-in-picture-control { margin-left: 4px !important; } + .video-js .vjs-text-track-display { bottom: 7em !important; } + .video-js .vjs-text-track-cue { font-size: 1em !important; max-width: 98% !important; } + .video-js .vjs-text-track-cue > div { padding: 4px 8px !important; font-size: 0.85em !important; background: rgba(0, 0, 0, 0.85) !important; } + .video-js.vjs-fullscreen .vjs-text-track-display { bottom: 9em !important; } + .video-js.vjs-fullscreen .vjs-text-track-cue { font-size: 1.2em !important; max-width: 95% !important; } + .video-js.vjs-fullscreen .vjs-text-track-cue > div { padding: 6px 10px !important; font-size: 0.9em !important; } .vjs-button > .vjs-icon-placeholder:before { font-size: 1.4em !important;} -} - -/* Tablet and medium screen adjustments - prevent overlap with control bar */ -@media(min-width: 768px) and (max-width: 1024px) { - .video-js .vjs-text-track-display { - bottom: 7em !important; /* Safe margin for tablet */ - } - - /* Tablet spacing for autoplay and picture-in-picture buttons */ - /* .video-js .vjs-autoplay-toggle { */ - /* margin-right: 10px !important; Larger spacing for tablet */ - /* } */ - - /* .video-js .vjs-picture-in-picture-control { */ - /* margin-left: 10px !important; Larger spacing for tablet */ - /* } */ - - .video-js .vjs-text-track-cue { - font-size: 1.15em !important; - max-width: 88% !important; - } - - .video-js .vjs-text-track-cue > div { - padding: 7px 11px !important; - font-size: 0.95em !important; - } - - /* Tablet fullscreen adjustments */ - .video-js.vjs-fullscreen .vjs-text-track-display { - bottom: 9em !important; - } -} - -/* Large screen adjustments - prevent overlap with control bar */ -@media(min-width: 1025px) { - .video-js .vjs-text-track-display { - bottom: 6em !important; /* Safe margin for large screens */ - } - - /* Desktop spacing for autoplay and picture-in-picture buttons */ - .video-js .vjs-autoplay-toggle { - margin-right: 12px !important; /* Largest spacing for desktop */ - } - - .video-js .vjs-picture-in-picture-control { - margin-left: 12px !important; /* Largest spacing for desktop */ - } - - .video-js .vjs-text-track-cue { - font-size: 1.2em !important; - max-width: 90% !important; - } - - .video-js .vjs-text-track-cue > div { - padding: 8px 12px !important; - font-size: 1em !important; - } - - /* Large screen fullscreen adjustments */ - .video-js.vjs-fullscreen .vjs-text-track-display { - bottom: 8em !important; - } } \ No newline at end of file diff --git a/frontend-tools/video-js/src/components/controls/CustomChaptersOverlay.js b/frontend-tools/video-js/src/components/controls/CustomChaptersOverlay.js index 69826d2d..43b65807 100644 --- a/frontend-tools/video-js/src/components/controls/CustomChaptersOverlay.js +++ b/frontend-tools/video-js/src/components/controls/CustomChaptersOverlay.js @@ -19,6 +19,8 @@ class CustomChaptersOverlay extends Component { this.createOverlay = this.createOverlay.bind(this); this.updateCurrentChapter = this.updateCurrentChapter.bind(this); this.toggleOverlay = this.toggleOverlay.bind(this); + this.formatTime = this.formatTime.bind(this); + this.getChapterTimeRange = this.getChapterTimeRange.bind(this); // Initialize after player is ready this.player().ready(() => { @@ -27,6 +29,21 @@ class CustomChaptersOverlay extends Component { }); } + formatTime(seconds) { + const totalSec = Math.max(0, Math.floor(seconds)); + const hh = Math.floor(totalSec / 3600); + const mm = Math.floor((totalSec % 3600) / 60); + const ss = totalSec % 60; + + return `${String(hh).padStart(2, '0')}:${String(mm).padStart(2, '0')}:${String(ss).padStart(2, '0')}`; + } + + getChapterTimeRange(chapter) { + const startTime = this.formatTime(chapter.startTime); + const endTime = this.formatTime(chapter.endTime || chapter.startTime); + return `${startTime} - ${endTime}`; + } + createOverlay() { if (!this.chaptersData || this.chaptersData.length === 0) { console.log('⚠ No chapters data available for overlay'); @@ -46,10 +63,16 @@ class CustomChaptersOverlay extends Component { height: 100%; z-index: 9999; display: none; - pointer-events: none; + pointer-events: auto; background: rgba(0, 0, 0, 0.35); `; + this.overlay.addEventListener('click', (event) => { + if (event.target === this.overlay) { + this.closeOverlay(); + } + }); + const container = document.createElement('div'); container.className = 'video-chapter'; container.style.cssText = ` @@ -129,8 +152,10 @@ class CustomChaptersOverlay extends Component { sub.className = 'meta-sub'; const dynamic = document.createElement('span'); dynamic.className = 'meta-dynamic'; - dynamic.textContent = this.channelName; + const chapterTimeRange = this.getChapterTimeRange(chapter); + dynamic.textContent = chapterTimeRange; dynamic.setAttribute('data-duration', timeStr); + dynamic.setAttribute('data-time-range', chapterTimeRange); sub.appendChild(dynamic); meta.appendChild(titleEl); meta.appendChild(sub); @@ -215,7 +240,7 @@ class CustomChaptersOverlay extends Component { } else { item.classList.remove('selected'); if (handle) handle.textContent = String(index + 1); - if (dynamic) dynamic.textContent = this.channelName; + if (dynamic) dynamic.textContent = dynamic.getAttribute('data-time-range') || this.getChapterTimeRange(chapter); } }); } @@ -232,11 +257,30 @@ class CustomChaptersOverlay extends Component { } else { el.classList.remove('selected'); if (handle) handle.textContent = String(idx + 1); - if (dynamic) dynamic.textContent = this.channelName; + if (dynamic) { + const timeRange = dynamic.getAttribute('data-time-range'); + if (timeRange) { + dynamic.textContent = timeRange; + } else { + // Fallback: calculate time range from chapters data + const chapter = this.chaptersData[idx]; + if (chapter) { + dynamic.textContent = this.getChapterTimeRange(chapter); + } + } + } } }); } + closeOverlay() { + if (this.overlay) { + this.overlay.style.display = 'none'; + const el = this.player().el(); + if (el) el.classList.remove('chapters-open'); + } + } + dispose() { if (this.overlay) { this.overlay.remove(); diff --git a/frontend-tools/video-js/src/components/controls/CustomSettingsMenu.js b/frontend-tools/video-js/src/components/controls/CustomSettingsMenu.js index 9778861c..1bebcdd8 100644 --- a/frontend-tools/video-js/src/components/controls/CustomSettingsMenu.js +++ b/frontend-tools/video-js/src/components/controls/CustomSettingsMenu.js @@ -17,6 +17,7 @@ class CustomSettingsMenu extends Component { this.subtitlesSubmenu = null; this.userPreferences = options?.userPreferences || new UserPreferences(); this.providedQualities = options?.qualities || null; + this.hasSubtitles = options?.hasSubtitles || false; // Bind methods this.createSettingsButton = this.createSettingsButton.bind(this); @@ -153,10 +154,10 @@ class CustomSettingsMenu extends Component { activeQuality?.label || (currentQuality ? String(currentQuality) : "Auto"); - // Settings menu content - this.settingsOverlay.innerHTML = ` -
Settings
+ // Settings menu content - split into separate variables for maintainability + const settingsHeader = `
Settings
`; + const playbackSpeedSection = `
@@ -167,8 +168,9 @@ class CustomSettingsMenu extends Component { ${playbackRateLabel} -
+ `; + const qualitySection = `
@@ -179,8 +181,9 @@ class CustomSettingsMenu extends Component { ${qualityLabelHTML} -
+ `; + const subtitlesSection = `
@@ -191,8 +194,17 @@ class CustomSettingsMenu extends Component { ${currentSubtitleLabel} -
-`; + `; + + // Build the complete settings overlay + this.settingsOverlay.innerHTML = settingsHeader; + this.settingsOverlay.innerHTML += playbackSpeedSection; + this.settingsOverlay.innerHTML += qualitySection; + + // Check if subtitles are available + if (this.hasSubtitles) { + this.settingsOverlay.innerHTML += subtitlesSection; + } // Create speed submenu this.createSpeedSubmenu(); @@ -459,13 +471,8 @@ class CustomSettingsMenu extends Component { return this.sortAndDecorateQualities(mapped, desiredOrder); } - // Default fallback - // Build full ordered list without src so UI is consistent; switching will require src in JSON - const fallback = desiredOrder.map((v) => ({ - label: v === "auto" ? "Auto" : v, - value: v, - })); - return this.sortAndDecorateQualities(fallback, desiredOrder); + // Default fallback - return empty array if no valid sources found + return []; } sortAndDecorateQualities(list, desiredOrder) { @@ -473,7 +480,11 @@ class CustomSettingsMenu extends Component { const i = desiredOrder.indexOf(String(val).toLowerCase()); return i === -1 ? 999 : i; }; - const decorated = list + + // Only include qualities that have actual sources + const validQualities = list.filter(q => q.src); + + const decorated = validQualities .map((q) => { const val = (q.value || q.label || "").toString().toLowerCase(); const baseLabel = q.label || q.value || ""; @@ -485,20 +496,6 @@ class CustomSettingsMenu extends Component { }) .sort((a, b) => orderIndex(a.value) - orderIndex(b.value)); - // Ensure all desired labels appear at least once (even if not provided), for consistent menu - const have = new Set(decorated.map((q) => q.value)); - desiredOrder.forEach((val) => { - if (!have.has(val)) { - const baseLabel = val === "auto" ? "Auto" : val; - const displayLabel = - val === "1080p" - ? `${baseLabel} HD` - : baseLabel; - decorated.push({ label: baseLabel, value: val, displayLabel }); - } - }); - // Re-sort after pushing missing - decorated.sort((a, b) => orderIndex(a.value) - orderIndex(b.value)); return decorated; } diff --git a/frontend-tools/video-js/src/components/video-player/VideoJSPlayer.jsx b/frontend-tools/video-js/src/components/video-player/VideoJSPlayer.jsx index d36ce17d..19cc03c5 100644 --- a/frontend-tools/video-js/src/components/video-player/VideoJSPlayer.jsx +++ b/frontend-tools/video-js/src/components/video-player/VideoJSPlayer.jsx @@ -27,6 +27,63 @@ function VideoJSPlayer() { ? window.MEDIA_DATA : { data: { + __hls_info: { + "master_file": "http://localhost/media/hls/c868df836ac34688b876e741b58ada93/master.m3u8", + "480_iframe": "http://localhost/media/hls/c868df836ac34688b876e741b58ada93/media-1/iframes.m3u8", + "720_iframe": "http://localhost/media/hls/c868df836ac34688b876e741b58ada93/media-2/iframes.m3u8", + "240_iframe": "http://localhost/media/hls/c868df836ac34688b876e741b58ada93/media-3/iframes.m3u8", + "360_iframe": "http://localhost/media/hls/c868df836ac34688b876e741b58ada93/media-4/iframes.m3u8", + "480_playlist": "http://localhost/media/hls/c868df836ac34688b876e741b58ada93/media-1/stream.m3u8", + "720_playlist": "http://localhost/media/hls/c868df836ac34688b876e741b58ada93/media-2/stream.m3u8", + "240_playlist": "http://localhost/media/hls/c868df836ac34688b876e741b58ada93/media-3/stream.m3u8", + "360_playlist": "http://localhost/media/hls/c868df836ac34688b876e741b58ada93/media-4/stream.m3u8" + }, + __original_media_url: "http://localhost/media/original/user/admin/c868df836ac34688b876e741b58ada93.SampleVideo_1280x720_30mb.mp4", + __encodings_info: { + "144": {}, + "240": { + "h264": { + "title": "h264-240", + "url": "http://localhost/media/encoded/2/admin/c868df836ac34688b876e741b58ada93.c868df836ac34688b876e741b58ada93.SampleVideo_1280x720_30mb.mp4.mp4", + "progress": 100, + "size": "8.2MB", + "encoding_id": 22, + "status": "success" + } + }, + "360": { + "h264": { + "title": "h264-360", + "url": "http://localhost/media/encoded/3/admin/c868df836ac34688b876e741b58ada93.c868df836ac34688b876e741b58ada93.SampleVideo_1280x720_30mb.mp4.mp4", + "progress": 100, + "size": "12.3MB", + "encoding_id": 23, + "status": "success" + } + }, + "480": { + "h264": { + "title": "h264-480", + "url": "http://localhost/media/encoded/13/admin/c868df836ac34688b876e741b58ada93.c868df836ac34688b876e741b58ada93.SampleVideo_1280x720_30mb.mp4.mp4", + "progress": 100, + "size": "17.4MB", + "encoding_id": 24, + "status": "success" + } + }, + "720": { + "h264": { + "title": "h264-720", + "url": "http://localhost/media/encoded/10/admin/c868df836ac34688b876e741b58ada93.c868df836ac34688b876e741b58ada93.SampleVideo_1280x720_30mb.mp4.mp4", + "progress": 100, + "size": "27.4MB", + "encoding_id": 25, + "status": "success" + } + }, + "1080": {}, + "1440": {}, + }, related_media: [ { friendly_token: 'jgLkic37V', @@ -564,18 +621,12 @@ function VideoJSPlayer() { }, siteUrl: '', nextLink: 'https://demo.mediacms.io/view?m=YjGJafibO', - chapter_data: [ - { startTime: 0, endTime: 3, text: 'Introduction' }, - { startTime: 3, endTime: 5, text: 'Overview of Marine Life' }, - { startTime: 5, endTime: 10, text: 'Coral Reef Ecosystems' }, - { startTime: 10, endTime: 14, text: 'Deep Sea Creatures' }, - ], chaptersData: [ - { startTime: 0, endTime: 3, text: 'Introduction' }, - { startTime: 3, endTime: 5, text: 'Overview of Marine Life' }, - { startTime: 5, endTime: 10, text: 'Coral Reef Ecosystems' }, - { startTime: 10, endTime: 14, text: 'Deep Sea Creatures' }, - { startTime: 240, endTime: 320, text: 'Ocean Conservation' }, + { startTime: 0, endTime: 4, text: 'Introduction' }, + { startTime: 5, endTime: 10, text: 'Overview of Marine Life' }, + { startTime: 10, endTime: 15, text: 'Coral Reef Ecosystems' }, + { startTime: 15, endTime: 20, text: 'Deep Sea Creatures' }, + { startTime: 20, endTime: 30, text: 'Ocean Conservation' }, { startTime: 320, endTime: 400, text: 'Climate Change Impact' }, { startTime: 400, endTime: 480, text: 'Marine Protected Areas' }, { startTime: 480, endTime: 560, text: 'Sustainable Fishing' }, @@ -600,10 +651,11 @@ function VideoJSPlayer() { // Define chapters as JSON object // Note: The sample-chapters.vtt file is no longer needed as chapters are now loaded from this JSON const chaptersData = mediaData.chaptersData ?? [ - { startTime: 0, endTime: 30, text: 'Introduction' }, - { startTime: 30, endTime: 90, text: 'Overview of Marine Life' }, - { startTime: 90, endTime: 180, text: 'Coral Reef Ecosystems' }, - { startTime: 180, endTime: 240, text: 'Deep Sea Creatures' }, + { startTime: 0, endTime: 4, text: 'Introduction' }, + { startTime: 5, endTime: 10, text: 'Overview of Marine Life' }, + { startTime: 10, endTime: 15, text: 'Coral Reef Ecosystems' }, + { startTime: 15, endTime: 20, text: 'Deep Sea Creatures' }, + { startTime: 20, endTime: 30, text: 'Ocean Conservation' }, { startTime: 240, endTime: 320, text: 'Ocean Conservation' }, { startTime: 320, endTime: 400, text: 'Climate Change Impact' }, { startTime: 400, endTime: 480, text: 'Marine Protected Areas' }, @@ -625,33 +677,102 @@ function VideoJSPlayer() { // Get video data from mediaData const currentVideo = useMemo( - () => ({ - id: mediaData.data?.friendly_token || 'default-video', - title: mediaData.data?.title || 'Video', - poster: mediaData.siteUrl + mediaData.data?.poster_url || '', - previewSprite: mediaData?.previewSprite || {}, - related_media: mediaData.data?.related_media || [], - nextLink: mediaData?.nextLink || null, - sources: mediaData.data?.original_media_url - ? [ - { - src: mediaData.siteUrl + mediaData.data.original_media_url, - type: 'video/mp4', - }, - ] - : [ + () => { + // Get video sources based on available data + const getVideoSources = () => { + // Check if HLS info is available and not empty + if (mediaData.data?.hls_info && mediaData.data.hls_info.master_file) { + // Use master file as the primary source (auto quality) + return [ + { + src: mediaData.siteUrl + mediaData.data.hls_info.master_file, + type: 'application/x-mpegURL', // HLS MIME type + label: 'Auto', + }, + ]; + } + + // Fallback to encoded qualities if available + if (mediaData.data?.encodings_info) { + const sources = []; + const encodings = mediaData.data.encodings_info; + + // Get available qualities dynamically from encodings_info + const availableQualities = Object.keys(encodings) + .filter(quality => encodings[quality] && encodings[quality].h264 && encodings[quality].h264.url) + .sort((a, b) => parseInt(b) - parseInt(a)); // Sort descending (highest first) + + for (const quality of availableQualities) { + sources.push({ + src: mediaData.siteUrl + encodings[quality].h264.url, + type: 'video/mp4', + label: `${quality}p`, + }); + } + + if (sources.length > 0) { + return sources; + } + } + + // Final fallback to original media URL or sample video + if (mediaData.data?.original_media_url) { + return [ + { + src: mediaData.siteUrl + mediaData.data.original_media_url, + type: 'video/mp4', + }, + ]; + } + + // Default sample video + return [ { src: '/videos/sample-video.mp4', type: 'video/mp4', }, - ], - }), + ]; + }; + + return { + id: mediaData.data?.friendly_token || 'default-video', + title: mediaData.data?.title || 'Video', + poster: mediaData.siteUrl + mediaData.data?.poster_url || '', + previewSprite: mediaData?.previewSprite || {}, + related_media: mediaData.data?.related_media || [], + nextLink: mediaData?.nextLink || null, + sources: getVideoSources(), + }; + }, [mediaData] ); - // Compute available qualities. Prefer JSON (mediaData.data.qualities), otherwise build a full ordered list using the current source. + // Compute available qualities. Prefer JSON (mediaData.data.qualities), otherwise build from encodings_info or current source. const availableQualities = useMemo(() => { - const desiredOrder = ['auto', '144p', '240p', '360p', '480p', '720p', '1080p']; + // Generate desiredOrder dynamically based on available data + const generateDesiredOrder = () => { + const baseOrder = ['auto']; + + // Add qualities from encodings_info if available + if (mediaData.data?.encodings_info) { + const availableQualities = Object.keys(mediaData.data.encodings_info) + .filter(quality => { + const encoding = mediaData.data.encodings_info[quality]; + return encoding && encoding.h264 && encoding.h264.url; + }) + .map(quality => `${quality}p`) + .sort((a, b) => parseInt(a) - parseInt(b)); // Sort ascending + + baseOrder.push(...availableQualities); + } else { + // Fallback to standard order + baseOrder.push('144p', '240p', '360p', '480p', '720p', '1080p', '1440p', '2160p'); + } + + return baseOrder; + }; + + const desiredOrder = generateDesiredOrder(); const normalize = (arr) => { const norm = arr.map((q) => ({ @@ -660,20 +781,17 @@ function VideoJSPlayer() { src: q.src || q.url || q.href, type: q.type || 'video/mp4', })); - // ensure all desired present - const have = new Set(norm.map((q) => q.value)); - desiredOrder.forEach((v) => { - if (!have.has(v)) { - norm.push({ label: v === 'auto' ? 'Auto' : v, value: v }); - } - }); - // sort + + // Only include qualities that have actual sources + const validQualities = norm.filter(q => q.src); + + // sort based on desired order const idx = (v) => { const i = desiredOrder.indexOf(String(v).toLowerCase()); return i === -1 ? 999 : i; }; - norm.sort((a, b) => idx(a.value) - idx(b.value)); - return norm; + validQualities.sort((a, b) => idx(a.value) - idx(b.value)); + return validQualities; }; const jsonList = mediaData?.data?.qualities; @@ -681,17 +799,81 @@ function VideoJSPlayer() { return normalize(jsonList); } - // Build from current source + // If HLS is available, build qualities from HLS playlists + if (mediaData.data?.hls_info && mediaData.data.hls_info.master_file) { + const hlsInfo = mediaData.data.hls_info; + const qualities = []; + + // Add master file as auto quality + qualities.push({ + label: 'Auto', + value: 'auto', + src: mediaData.siteUrl + hlsInfo.master_file, + type: 'application/x-mpegURL', + }); + + // Add individual HLS playlists + Object.keys(hlsInfo).forEach(key => { + if (key.endsWith('_playlist')) { + const quality = key.replace('_playlist', ''); + qualities.push({ + label: `${quality}p`, + value: `${quality}p`, + src: mediaData.siteUrl + hlsInfo[key], + type: 'application/x-mpegURL', + }); + } + }); + + return normalize(qualities); + } + + // Build from encodings_info if available + if (mediaData.data?.encodings_info) { + const encodings = mediaData.data.encodings_info; + const qualities = []; + + // Add auto quality first + qualities.push({ + label: 'Auto', + value: 'auto', + src: null, // Will use the highest available quality + type: 'video/mp4', + }); + + // Add available encoded qualities dynamically + Object.keys(encodings).forEach(quality => { + if (encodings[quality] && encodings[quality].h264 && encodings[quality].h264.url) { + qualities.push({ + label: `${quality}p`, + value: `${quality}p`, + src: mediaData.siteUrl + encodings[quality].h264.url, + type: 'video/mp4', + }); + } + }); + + if (qualities.length > 1) { // More than just auto + return normalize(qualities); + } + } + + // Build from current source as fallback - only if we have a valid source const baseSrc = (currentVideo?.sources && currentVideo.sources[0]?.src) || null; const type = (currentVideo?.sources && currentVideo.sources[0]?.type) || 'video/mp4'; - const buildFromBase = desiredOrder.map((v) => ({ - label: v === 'auto' ? 'Auto' : v, - value: v, - src: baseSrc || undefined, - type, - })); - return normalize(buildFromBase); + if (baseSrc) { + const buildFromBase = [{ + label: 'Auto', + value: 'auto', + src: baseSrc, + type, + }]; + return normalize(buildFromBase); + } + + // Return empty array if no valid sources found + return []; }, [mediaData, currentVideo]); // Get related videos from mediaData instead of static data @@ -719,7 +901,7 @@ function VideoJSPlayer() { })); }, [mediaData]); - // Demo array for testing purposes + // Demo array for testing purposes const demoSubtitleTracks = [ { kind: 'subtitles', @@ -736,12 +918,12 @@ function VideoJSPlayer() { default: false, }, ]; + // const demoSubtitleTracks = []; // NO Subtitles. TODO: hide it on production // Get subtitle tracks from backend response or fallback based on environment - const backendSubtitles = mediaData?.data?.subtitles_info || []; const isDevelopment = process.env.NODE_ENV === 'development' || window.location.hostname === 'localhost'; - - const hasSubtitles = backendSubtitles.length > 0 || isDevelopment; + const backendSubtitles = mediaData?.data?.subtitles_info || (isDevelopment ? demoSubtitleTracks : []); + const hasSubtitles = backendSubtitles.length > 0; const subtitleTracks = hasSubtitles ? backendSubtitles.map(track => ({ kind: 'subtitles', @@ -750,7 +932,11 @@ function VideoJSPlayer() { label: track.label, default: false, })) - : (isDevelopment ? demoSubtitleTracks : []); + : []; + + console.log('mediaData?.data?.thumbnail_time', mediaData?.data?.thumbnail_time); + console.log('mediaData?.data?.sprites_url', mediaData?.data?.sprites_url); + console.log('mediaData', mediaData); // Function to navigate to next video const goToNextVideo = () => { @@ -1078,8 +1264,6 @@ function VideoJSPlayer() { } // BEGIN: Add subtitle tracks - - hasSubtitles && subtitleTracks.forEach((track) => { playerRef.current.addRemoteTextTrack(track, false); }); @@ -1426,6 +1610,7 @@ function VideoJSPlayer() { customComponents.current.settingsMenu = new CustomSettingsMenu(playerRef.current, { userPreferences: userPreferences.current, qualities: availableQualities, + hasSubtitles: hasSubtitles, }); // If qualities change per video (e.g., via MEDIA_DATA update), refresh menu diff --git a/frontend-tools/video-js/src/main.jsx b/frontend-tools/video-js/src/main.jsx index 760de73e..46a2578f 100644 --- a/frontend-tools/video-js/src/main.jsx +++ b/frontend-tools/video-js/src/main.jsx @@ -12,12 +12,7 @@ const mountComponents = () => { const root = createRoot(rootContainer); root.render( -
-
-
- {/* */} -
); } diff --git a/frontend/packages/player/package-lock.json b/frontend/packages/player/package-lock.json index 3bd75e08..98eb11e1 100644 --- a/frontend/packages/player/package-lock.json +++ b/frontend/packages/player/package-lock.json @@ -3105,9 +3105,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.3.tgz", - "integrity": "sha512-mcE+Wr2CAhHNWxXN/DdTI+n4gsPc5QpXpWnyCQWiQYIYZX+ZMJ8juXZgjRa/0/YPJo/NSsgW15/YgmI4nbysYw==", + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.4.tgz", + "integrity": "sha512-L+YvJwGAgwJBV1p6ffpSTa2KRc69EeeYGYjRVWKs0GKrK+LON0GC0gV+rKSNtALEDvMDqkvCFq9r1r94/Gjwxw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -6393,9 +6393,9 @@ } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", "dev": true, "license": "MIT", "engines": { diff --git a/frontend/packages/scripts/package-lock.json b/frontend/packages/scripts/package-lock.json index 9046ad51..83780d5a 100644 --- a/frontend/packages/scripts/package-lock.json +++ b/frontend/packages/scripts/package-lock.json @@ -3787,9 +3787,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.3.tgz", - "integrity": "sha512-mcE+Wr2CAhHNWxXN/DdTI+n4gsPc5QpXpWnyCQWiQYIYZX+ZMJ8juXZgjRa/0/YPJo/NSsgW15/YgmI4nbysYw==", + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.4.tgz", + "integrity": "sha512-L+YvJwGAgwJBV1p6ffpSTa2KRc69EeeYGYjRVWKs0GKrK+LON0GC0gV+rKSNtALEDvMDqkvCFq9r1r94/Gjwxw==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.js" @@ -5858,9 +5858,9 @@ } }, "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" @@ -13530,9 +13530,9 @@ } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", "license": "MIT", "engines": { "node": ">=4" diff --git a/static/video_js/video-js.css b/static/video_js/video-js.css index c3ca22f5..adbcb26d 100644 --- a/static/video_js/video-js.css +++ b/static/video_js/video-js.css @@ -1 +1 @@ -html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}.playlist-items a{text-decoration:none!important}.video-js video{outline:none!important}.video-js .vjs-poster{border-radius:12px!important}.video-js video{border-radius:12px!important}.video-js div.vjs-control-bar{background:transparent!important;background-color:transparent!important;background-image:none!important;display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-start!important;padding:0 12px;height:48px}.video-container{width:100%;max-width:1200px;margin:0 auto;padding:0 20px;box-sizing:border-box}.video-js.vjs-fluid{width:100%!important;max-width:100%!important}.vjs-next-video-control .vjs-icon-placeholder{width:1.2em;height:1.2em;display:flex;align-items:center;justify-content:center;margin:auto}.vjs-next-video-control .vjs-icon-placeholder svg{width:100%;height:100%;display:block}.vjs-end-screen-overlay{position:absolute;top:0;left:0;width:100%;height:calc(100% - 46px);background:rgba(0,0,0,.9);display:none;flex-direction:column;justify-content:center;align-items:center;z-index:1000;padding:20px 0;box-sizing:border-box}.vjs-related-videos-title{color:#fff;font-size:24px;margin-bottom:20px;text-align:center;font-weight:700;flex-shrink:0}.vjs-related-videos-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;width:100%;max-width:100%;margin:0;padding:16px;box-sizing:border-box;align-content:center;justify-items:center;max-height:calc(100vh - 200px);overflow:hidden;align-self:center;flex-shrink:0}.vjs-related-video-item{position:relative;cursor:pointer;border-radius:5px;overflow:hidden;transition:transform .2s ease,box-shadow .2s ease;background:#1a1a1a;border:1px solid #333;width:100%;max-width:100%;box-shadow:0 2px 8px #0000001a}.vjs-related-video-item:hover{transform:translateY(-2px);box-shadow:0 8px 25px #0000004d}.vjs-related-video-thumbnail{width:100%;height:100%;object-fit:cover;display:block;background:#1a1a1a;transition:transform .2s ease}.vjs-related-video-item:hover .vjs-related-video-thumbnail{transform:scale(1.02)}.vjs-related-video-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(transparent,rgba(0,0,0,.9));color:#fff;padding:12px;opacity:0;transition:opacity .3s ease;display:flex;flex-direction:column;justify-content:flex-start;height:100%}.vjs-related-video-item:hover .vjs-related-video-overlay{opacity:1}.vjs-related-video-title{font-size:14px;font-weight:700;line-height:1.3;color:#fff;margin-bottom:4px}.vjs-related-video-meta{display:flex;flex-direction:row;gap:8px;align-items:center}.vjs-related-video-author{font-size:12px;color:#ccc}.vjs-related-video-views{font-size:12px;color:#aaa}.vjs-related-video-author:after{content:"•";margin-left:8px;color:#666}.vjs-related-video-duration{position:absolute;bottom:8px;right:8px;background:rgba(0,0,0,.8);color:#fff;padding:2px 6px;font-size:11px;font-weight:700;border-radius:2px;opacity:0;transition:opacity .3s ease}.vjs-related-video-item:hover .vjs-related-video-duration{opacity:1}.video-js.vjs-ended .vjs-control-bar{opacity:1!important;pointer-events:auto!important}.video-js.vjs-ended .vjs-control-bar .vjs-control,.video-js.vjs-ended .vjs-control-bar button{opacity:1!important;pointer-events:auto!important;cursor:pointer!important}.video-js.vjs-ended .vjs-control-bar .vjs-control.vjs-volume-control{opacity:0!important}.video-js.vjs-ended .vjs-control-bar .vjs-volume-panel.vjs-hover .vjs-volume-control{opacity:1!important}.video-js.vjs-ended .vjs-play-control{opacity:1!important;pointer-events:auto!important;cursor:pointer!important}.video-js.vjs-ended .vjs-progress-control,.video-js.vjs-ended .vjs-volume-panel{opacity:1!important;pointer-events:auto!important}.vjs-chapter-markers-track{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.vjs-chapter-marker{position:absolute;top:0;width:2px;height:100%;background:rgba(255,255,255,.6);pointer-events:auto;cursor:pointer;transition:background .2s ease}.vjs-chapter-marker:hover{background:rgba(255,255,255,.9);width:3px}.vjs-chapter-marker-tooltip{position:absolute;bottom:8px;left:50%;transform:translate(-50%);background:rgba(0,0,0,.8);color:#fff;padding:4px 8px;border-radius:4px;font-size:11px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:1001}.vjs-chapter-marker:hover .vjs-chapter-marker-tooltip{opacity:1}.vjs-chapter-floating-tooltip{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif!important;line-height:1.4!important;animation:fadeIn .2s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translate(-50%) translateY(5px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.video-js .vjs-menu-button:not(.vjs-disabled) .vjs-menu{display:none!important}.video-js .vjs-menu-button:not(.vjs-disabled).vjs-lock-showing .vjs-menu,.video-js .vjs-menu-button:not(.vjs-disabled) .vjs-menu.vjs-lock-showing{display:block!important}.video-js .vjs-menu-button:hover .vjs-menu{display:none!important}.video-js .vjs-menu-button.vjs-lock-showing:hover .vjs-menu{display:block!important}.video-js .vjs-menu.vjs-lock-showing{display:block!important;opacity:1!important;visibility:visible!important}.video-js.chapters-open .vjs-menu,.video-js.chapters-open .vjs-menu.vjs-lock-showing,.video-js.chapters-open .vjs-hover-display,.video-js.chapters-open .vjs-time-tooltip,.video-js.chapters-open .vjs-progress-holder .vjs-mouse-display{display:none!important;opacity:0!important;visibility:hidden!important}.video-js .vjs-volume-panel.vjs-hover{transition:ease-in-out .5s!important;width:auto!important}.video-js .vjs-captions-button,.video-js .vjs-subs-caps-button{display:none!important}.video-js .vjs-subtitles-button .vjs-menu,.video-js .vjs-subtitles-button .vjs-menu.vjs-lock-showing{display:none!important;visibility:hidden!important;opacity:0!important;pointer-events:none!important}.video-js .vjs-text-track-display{position:absolute!important;bottom:6em!important;left:0!important;right:0!important;top:0!important;pointer-events:none!important;z-index:10!important}.video-js .vjs-text-track-cue{position:absolute!important;bottom:0!important;left:0!important;right:0!important;text-align:center!important;padding:0!important;background:transparent!important;border:none!important;font-size:1.2em!important;line-height:1.4!important;color:#fff!important;text-shadow:2px 2px 4px rgba(0,0,0,.8)!important;font-family:Arial,sans-serif!important;font-weight:600!important;white-space:pre-line!important;word-wrap:break-word!important;max-width:90%!important;margin:0 auto!important;z-index:11!important}.video-js .vjs-text-track-cue>div{background:rgba(0,0,0,.7)!important;padding:8px 12px!important;border-radius:4px!important;display:inline-block!important;margin:2px 0!important;max-width:100%!important;box-sizing:border-box!important}.video-js.vjs-fullscreen .vjs-text-track-display{bottom:8em!important}.video-js.vjs-fullscreen .vjs-text-track-cue{font-size:1.4em!important;max-width:85%!important}.video-js.vjs-fullscreen .vjs-text-track-cue>div{padding:10px 16px!important;font-size:1em!important}.video-js .vjs-subtitles-button .vjs-menu.vjs-lock-showing .vjs-menu-content{display:none!important;visibility:hidden!important;opacity:0!important;pointer-events:none!important}.video-js .vjs-chapters-button .vjs-menu,.video-js .vjs-chapters-button .vjs-menu.vjs-lock-showing,.video-js .vjs-chapters-button .vjs-menu.vjs-lock-showing .vjs-menu-content{display:none!important}.video-js .vjs-chapters-button .vjs-menu{display:none!important;visibility:hidden!important;opacity:0!important;pointer-events:none!important}.video-js .vjs-subtitles-button{position:relative;cursor:pointer!important;pointer-events:auto!important}.video-js button.vjs-subtitles-button{cursor:pointer!important;pointer-events:auto!important;touch-action:manipulation!important;-webkit-tap-highlight-color:transparent!important}.video-js button.vjs-subtitles-button:before{content:"";position:absolute;left:50%;transform:translate(-50%);bottom:6px;height:3px;background:#e1002d;border-radius:2px;width:0;padding:0;transition:none!important;animation:none!important;-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important}.video-js .vjs-subs-active button.vjs-subtitles-button:before{width:24px;transition:none!important;animation:none!important;-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important}.video-js button.vjs-subtitles-button{transition:none!important;animation:none!important;-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important}.video-js .vjs-autoplay-toggle .vjs-hover-display,.video-js .vjs-autoplay-toggle .vjs-tooltip,.video-js .vjs-autoplay-toggle .vjs-tooltip-text{display:none!important;visibility:hidden!important;opacity:0!important;pointer-events:none!important}.video-js .vjs-autoplay-toggle{position:relative}.video-js .vjs-autoplay-toggle:after{content:attr(title);position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:rgba(0,0,0,.9);color:#fff;padding:6px 10px;border-radius:4px;font-size:12px;white-space:nowrap;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease;z-index:1000;margin-bottom:8px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;box-shadow:0 2px 8px #0000004d;border:1px solid rgba(255,255,255,.1)}.video-js .vjs-autoplay-toggle:hover:after,.video-js .vjs-autoplay-toggle:focus:after{opacity:1;visibility:visible}@media (min-width: 1200px){.vjs-related-videos-grid{grid-template-columns:repeat(4,1fr);gap:3px;padding:20px;max-height:calc(100vh - 220px)}}@media (min-width: 1024px) and (max-width: 1199px){.vjs-related-videos-grid{grid-template-columns:repeat(3,1fr);gap:3px;padding:18px;max-height:calc(100vh - 210px)}}@media (min-width: 768px) and (max-width: 1023px){.vjs-related-videos-grid{grid-template-columns:repeat(3,1fr);gap:3px;padding:14px;max-height:calc(100vh - 200px)}.video-js .vjs-control:hover:after,.video-js .vjs-control:focus:after,.video-js .vjs-control:active:after{display:none!important;opacity:0!important;visibility:hidden!important}.video-js .vjs-play-control:hover:after,.video-js .vjs-mute-control:hover:after,.video-js .vjs-volume-panel:hover:after,.video-js .vjs-fullscreen-control:hover:after,.video-js .vjs-picture-in-picture-control:hover:after,.video-js .vjs-settings-control:hover:after,.video-js .vjs-chapters-control:hover:after,.video-js .vjs-autoplay-toggle:hover:after,.video-js .vjs-next-video-control:hover:after,.video-js .vjs-remaining-time:hover:after{display:none!important;opacity:0!important;visibility:hidden!important}}@media (max-width: 767px){.video-js .vjs-autoplay-toggle.touch-active:after{opacity:1;visibility:visible}.video-js .vjs-autoplay-toggle:after{font-size:11px;padding:5px 8px;margin-bottom:6px}.video-container{padding:0 15px}.vjs-end-screen-overlay{padding:0;height:calc(100% - 46px)}.vjs-related-video-thumbnail{height:100%}.vjs-chapter-floating-tooltip{font-size:11px!important}.custom-chapters-overlay .video-chapter{right:10px;left:auto;width:100%;max-width:280px;height:calc(100% - 40px);max-height:calc(100% - 40px);overflow:hidden;bottom:40px}.video-js .vjs-settings-button{min-width:44px!important;height:44px!important;padding:0!important;margin:0 2px!important;display:flex!important;align-items:center!important;justify-content:center!important;touch-action:manipulation!important;-webkit-tap-highlight-color:transparent!important;cursor:pointer!important;z-index:1000!important;pointer-events:auto!important;position:relative!important}.video-js .vjs-settings-button .vjs-icon-cog{font-size:20px!important;width:20px!important;height:20px!important;display:flex!important;align-items:center!important;justify-content:center!important}.video-js .vjs-control-bar .vjs-button{touch-action:manipulation!important;-webkit-tap-highlight-color:transparent!important;-webkit-touch-callout:none!important;-webkit-user-select:none!important;user-select:none!important}.custom-settings-overlay .settings-item{padding:6px 16px;font-size:15px;touch-action:manipulation;line-height:18px}.custom-settings-overlay .settings-header{padding:10px 16px;font-size:18px;line-height:20px}.chapter-head{padding:10px 15px}.chapter-title h3 a{font-size:15px!important;line-height:20px!important;height:20px!important}.chapter-title p{font-size:11px!important;line-height:14px!important}.playlist-items a{padding:10px 16px!important;min-height:58px!important}.thumbnail-meta h4{font-size:13px!important;line-height:18px!important}.thumbnail-meta .meta-sub .meta-dynamic{font-size:11px!important;line-height:16px!important}}@media (max-width:767px){body div.custom-settings-overlay{bottom:40px}div.chapter-close button{width:30px;height:30px}.vjs-related-videos-grid{grid-template-columns:repeat(2,1fr);gap:3px;padding:10px;max-height:calc(100vh - 180px)}.video-js .vjs-control:hover:after,.video-js .vjs-control:focus:after,.video-js .vjs-control:active:after{display:none!important;opacity:0!important;visibility:hidden!important}.video-js .vjs-play-control:hover:after,.video-js .vjs-mute-control:hover:after,.video-js .vjs-volume-panel:hover:after,.video-js .vjs-fullscreen-control:hover:after,.video-js .vjs-picture-in-picture-control:hover:after,.video-js .vjs-settings-control:hover:after,.video-js .vjs-chapters-control:hover:after,.video-js .vjs-autoplay-toggle:hover:after,.video-js .vjs-next-video-control:hover:after,.video-js .vjs-remaining-time:hover:after{display:none!important;opacity:0!important;visibility:hidden!important}}@media (max-width: 480px){.video-container{padding:0 10px}.vjs-related-videos-grid{grid-template-columns:repeat(2,1fr);gap:3px;padding:8px;max-height:calc(100vh - 160px)}.video-js .vjs-control:hover:after,.video-js .vjs-control:focus:after,.video-js .vjs-control:active:after{display:none!important;opacity:0!important;visibility:hidden!important}.video-js .vjs-play-control:hover:after,.video-js .vjs-mute-control:hover:after,.video-js .vjs-volume-panel:hover:after,.video-js .vjs-fullscreen-control:hover:after,.video-js .vjs-picture-in-picture-control:hover:after,.video-js .vjs-settings-control:hover:after,.video-js .vjs-chapters-control:hover:after,.video-js .vjs-autoplay-toggle:hover:after,.video-js .vjs-next-video-control:hover:after,.video-js .vjs-remaining-time:hover:after{display:none!important;opacity:0!important;visibility:hidden!important}.vjs-end-screen-overlay{padding:0;height:calc(100% - 46px)}.vjs-related-video-thumbnail{height:100%}.video-js .vjs-settings-button .vjs-icon-cog{font-size:22px!important;width:22px!important;height:22px!important}}.video-js .vjs-settings-button{cursor:pointer!important;pointer-events:auto!important;position:relative!important;display:flex!important;align-items:center!important;justify-content:center!important;min-width:32px!important;height:32px!important;padding:0!important;margin:0 2px!important;border:none!important;background:transparent!important;color:inherit!important;font-size:inherit!important;line-height:inherit!important;text-align:center!important;vertical-align:middle!important;touch-action:manipulation!important;-webkit-tap-highlight-color:transparent!important;-webkit-touch-callout:none!important;-webkit-user-select:none!important;user-select:none!important}.video-js .vjs-settings-button:hover{background-color:#ffffff1a!important}.video-js .vjs-settings-button:focus{outline:2px solid #fff!important;outline-offset:2px!important}.video-js .vjs-settings-button .vjs-icon-cog{font-size:18px!important;width:18px!important;height:18px!important;display:flex!important;align-items:center!important;justify-content:center!important}.vjs-play-progress{background-color:#019932!important}.vjs-load-progress,.vjs-progress-holder{background:rgba(255,255,255,.5)!important}.video-js .vjs-progress-control{position:absolute!important;bottom:46px!important;left:0!important;right:0!important;width:100%!important;height:0!important;z-index:3!important;padding:0!important;margin:0 auto!important}.video-js .vjs-control-bar .vjs-progress-control{display:none!important}.video-js .vjs-progress-control.vjs-control{display:block!important}.video-js .vjs-control-bar .vjs-icon-placeholder,.video-js .vjs-control-bar .vjs-button .vjs-icon-placeholder,.video-js .vjs-control-bar [class*=vjs-icon-]{font-size:1.5em!important}.vjs-control-bar .custom-remaining-time .vjs-remaining-time-display{font-size:14px!important;font-weight:500;line-height:1;display:flex;align-items:center;justify-content:center;height:100%;color:#fff}.vjs-mouse-display{z-index:4!important}.vjs-slider-horizontal{top:-5px}.video-js .vjs-spacer-control{flex:1!important;min-width:1px!important;height:100%!important}.video-js .vjs-control-bar .vjs-control{flex:none!important}.video-js .vjs-autoplay-toggle{margin-right:10px!important}.video-js .vjs-picture-in-picture-control{margin-left:6px!important}.vjs-seek-indicator{position:absolute!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;z-index:9999!important;pointer-events:none!important;display:none!important;align-items:center!important;justify-content:center!important;opacity:0!important;visibility:hidden!important;transition:opacity .2s ease-in-out!important}.vjs-seek-indicator-content{background:transparent!important;flex-direction:column!important;align-items:center!important;justify-content:center!important}.vjs-seek-indicator-icon{position:relative!important;display:flex!important;align-items:center!important;justify-content:center!important;margin-bottom:4px!important}.seek-icon-container{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;animation:seekPulse .3s ease-out!important}.youtube-seek-container{display:flex!important;align-items:center!important;justify-content:center!important;animation:youtubeSeekPulse .3s ease-out!important}.youtube-seek-circle{width:80px!important;height:80px!important;border-radius:50%!important;-webkit-border-radius:50%!important;-moz-border-radius:50%!important;background:rgba(0,0,0,.8)!important;backdrop-filter:blur(10px)!important;-webkit-backdrop-filter:blur(10px)!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;padding:0!important;box-shadow:0 4px 20px #0000004d!important;border:1px solid rgba(255,255,255,.15)!important;box-sizing:border-box!important;overflow:hidden!important}.youtube-seek-icon{display:flex!important;align-items:center!important;justify-content:center!important;margin-bottom:4px!important}.youtube-seek-icon svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.5))!important}.youtube-seek-time{color:#fff!important;font-size:10px!important;font-weight:500!important;text-align:center!important;line-height:1.2!important;opacity:.9!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif!important}@keyframes youtubeSeekPulse{0%{transform:scale(.7);opacity:.5}50%{transform:scale(1.05);opacity:.9}to{transform:scale(1);opacity:1}}.seek-seconds{color:#fff!important;font-size:16px!important;font-weight:700!important;text-shadow:0 2px 4px rgba(0,0,0,.7)!important;line-height:1!important}.vjs-seek-indicator-text{color:#fff!important;font-size:16px!important;font-weight:500!important;text-align:center!important;text-shadow:0 1px 2px rgba(0,0,0,.8)!important}button{cursor:pointer}.video-js{padding:0;height:100%!important}.video-chapter{position:absolute;top:auto;bottom:60px;width:min(360px,calc(100% - 20px));border:1px solid rgba(255,255,255,.12);border-radius:12px;height:calc(100% - 80px);background:rgba(18,18,18,.96);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);overflow:hidden;box-shadow:0 12px 30px #00000073;right:10px}.chapter-head{padding:12px 8px 10px 16px;position:sticky;top:0;left:0;background:linear-gradient(180deg,rgba(28,28,28,.95),rgba(18,18,18,.95));border-bottom:1px solid rgba(255,255,255,.08);z-index:2}.playlist-title{display:flex;align-items:center;gap:10px}.chapter-title{width:auto;flex:1;min-width:0}.chapter-title h3{margin:0;padding:0}.chapter-title h3 a{color:#fff;font-size:18px;line-height:26px;font-weight:700;text-decoration:none;white-space:nowrap;text-overflow:ellipsis;height:28px;overflow:hidden;display:block}.chapter-title p{margin:4px 0 0;padding:0;color:#fff;font-size:12px;font-weight:400;line-height:15px}.chapter-title p a{color:#fff;font-size:12px;font-weight:400;line-height:15px;text-decoration:none}.chapter-close{width:40px;margin-left:auto;display:flex;align-items:center;justify-content:flex-end}.chapter-close button{background:transparent;color:#fff;border:0;width:40px;height:40px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:8px}.chapter-close button:hover{background:rgba(255,255,255,.1)}.playlist-action-menu{display:none;justify-content:space-between;gap:10px}.playlist-action-menu button{background:transparent;border:0;width:40px;height:40px;padding:0;display:flex;justify-content:center;align-items:center;border-radius:100px}.playlist-action-menu button:hover{background:rgba(0,0,0,.1)}.start-action{display:flex}.chapter-body{height:calc(100% - 80px);overflow:auto}.chapter-body ul{margin:0;padding:0}.playlist-items a{padding:12px;display:flex;align-items:center;text-decoration:none;gap:12px;width:100%;box-sizing:border-box;color:#fff}.playlist-items a:hover{background:rgba(255,255,255,.06)}.playlist-items.selected a{background:rgba(255,255,255,.14)}.playlist-drag-handle{width:24px;display:flex;justify-content:center;color:#e0e0e0;font-size:12px}.thumbnail-meta{flex:1;min-width:0;padding:0}.thumbnail-meta h4{margin:0 2px 4px 0;font-size:14px;line-height:20px;font-weight:600;overflow:hidden;text-overflow:ellipsis;color:#fff;white-space:normal;max-height:40px;-webkit-line-clamp:2;line-clamp:2;display:-webkit-box;-webkit-box-orient:vertical}.thumbnail-meta .meta-sub{display:flex;gap:8px;align-items:center}.thumbnail-meta .meta-sub .meta-dynamic{color:#bdbdbd;font-size:12px;line-height:18px}.thumbnail-action button{border:0;background:transparent;color:#fff;opacity:0}.playlist-items a:hover .thumbnail-action button{opacity:1}.chapter-body::-webkit-scrollbar{width:10px}.chapter-body::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:8px}.chapter-body::-webkit-scrollbar-track{background:transparent}.video-js .vjs-control-bar .vjs-spacer-control{margin-left:auto}.video-js .vjs-control-bar .settings-item-svg{display:flex}.video-js .vjs-control-bar .settings-item-svg svg{width:auto!important;height:auto!important;transform:inherit!important}.video-js div.vjs-control{width:auto}.vjs-chapters-button button.vjs-button,.vjs-subtitles-button button.vjs-button,.video-js button.vjs-control{width:48px;height:48px;display:flex;align-items:center;justify-content:center}button.vjs-button>.vjs-icon-placeholder:before{line-height:48px;transition:ease-in-out .5s}.video-js .vjs-volume-panel div.vjs-volume-control{height:100%!important;display:flex;align-items:center;justify-content:center;margin:0;width:0;transition:ease-in-out .5s!important;opacity:0}.video-js .vjs-volume-panel div.vjs-volume-control .vjs-volume-bar{margin:0;top:0}.vjs-settings-button svg{transition:ease-in-out .3s}.vjs-settings-button.settings-clicked svg{transform:rotate(30deg)}.video-js span.vjs-control-text{position:absolute!important;bottom:125%;left:50%;transform:translate(-50%);background:rgba(0,0,0,.75);color:#fff;padding:6px 8px!important;border-radius:3px;font-size:13px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .3s ease;z-index:1000;box-shadow:0 0 5px #0000004d;height:auto!important;width:auto!important;overflow:visible!important;clip:initial!important}.video-js button.vjs-button:hover span.vjs-control-text{opacity:1}.video-js .vjs-control:focus:before,.video-js .vjs-control:hover:before,.video-js .vjs-control:focus{text-shadow:none!important}.vjs-volume-panel{gap:5px}.video-js .vjs-play-progress.vjs-slider-bar+.vjs-time-tooltip{padding:0}.vjs-chapter-floating-tooltip{text-align:center;width:160px!important;max-width:100%!important;height:auto}.chapter-image-sprite{width:166px!important;max-width:100%!important;height:96px;margin:0 auto 10px;border-radius:6px;border:3px solid #FFF}.vjs-chapter-floating-tooltip .chapter-title{font-size:24px;margin:0 0 10px;font-weight:700;text-overflow:ellipsis;white-space:nowrap;height:30px;line-height:30px;overflow:hidden}.vjs-chapter-floating-tooltip .position-info,.vjs-chapter-floating-tooltip .chapter-info{font-size:15px;display:inline-block;margin:0 0 2px;line-height:normal;vertical-align:top;line-height:20px}@media (max-width:1024px){body div.custom-settings-overlay{height:calc(100% - 40px);max-height:300px}}@media (pointer: coarse){.video-js .vjs-volume-panel div.vjs-volume-control{width:auto;opacity:1}}@media (max-width:767px){.vjs-chapters-button button.vjs-button,.vjs-subtitles-button button.vjs-button,.video-js button.vjs-control{width:32px;height:32px}button.vjs-button>.vjs-icon-placeholder:before{line-height:32px}.vjs-next-video-control svg{width:32px;height:32px}.video-js div.vjs-control{height:32px}.vjs-button>.vjs-icon-placeholder:before{font-size:1.4em!important}.video-js .vjs-subs-active button.vjs-subtitles-button:before{width:20px}.video-js button.vjs-subtitles-button:before{bottom:2px}.video-js div.vjs-control-bar{padding:0 2px}.video-js .vjs-autoplay-toggle{margin-right:6px!important}.video-js .vjs-picture-in-picture-control{margin-left:6px!important}.video-js .vjs-text-track-display{bottom:8em!important}.video-js .vjs-text-track-cue{font-size:1.1em!important;max-width:95%!important}.video-js .vjs-text-track-cue>div{padding:6px 10px!important;font-size:.9em!important;background:rgba(0,0,0,.8)!important}.video-js.vjs-fullscreen .vjs-text-track-display{bottom:10em!important}.video-js.vjs-fullscreen .vjs-text-track-cue{font-size:1.3em!important;max-width:90%!important}.video-js.vjs-fullscreen .vjs-text-track-cue>div{padding:8px 12px!important;font-size:.95em!important}.video-js .vjs-subtitles-button button.vjs-button{min-width:32px!important;min-height:32px!important;touch-action:manipulation!important;-webkit-tap-highlight-color:transparent!important;-webkit-touch-callout:none!important;-webkit-user-select:none!important;user-select:none!important}.chapter-body{height:calc(100% - 70px)}.subtitles-submenu,.quality-submenu,.speed-submenu{height:100%;overflow:auto}}@media (max-width:399px){.vjs-chapters-button button.vjs-button,.vjs-subtitles-button button.vjs-button,.video-js button.vjs-control{width:28px;height:28px}button.vjs-button>.vjs-icon-placeholder:before{line-height:28px}.vjs-next-video-control svg{width:28px;height:28px}.video-js div.vjs-control{height:28px}.video-js .vjs-autoplay-toggle{margin-right:4px!important}.video-js .vjs-picture-in-picture-control{margin-left:4px!important}.video-js .vjs-text-track-display{bottom:7em!important}.video-js .vjs-text-track-cue{font-size:1em!important;max-width:98%!important}.video-js .vjs-text-track-cue>div{padding:4px 8px!important;font-size:.85em!important;background:rgba(0,0,0,.85)!important}.video-js.vjs-fullscreen .vjs-text-track-display{bottom:9em!important}.video-js.vjs-fullscreen .vjs-text-track-cue{font-size:1.2em!important;max-width:95%!important}.video-js.vjs-fullscreen .vjs-text-track-cue>div{padding:6px 10px!important;font-size:.9em!important}.vjs-button>.vjs-icon-placeholder:before{font-size:1.4em!important}}@media (min-width: 768px) and (max-width: 1024px){.video-js .vjs-text-track-display{bottom:7em!important}.video-js .vjs-text-track-cue{font-size:1.15em!important;max-width:88%!important}.video-js .vjs-text-track-cue>div{padding:7px 11px!important;font-size:.95em!important}.video-js.vjs-fullscreen .vjs-text-track-display{bottom:9em!important}}@media (min-width: 1025px){.video-js .vjs-text-track-display{bottom:6em!important}.video-js .vjs-autoplay-toggle{margin-right:12px!important}.video-js .vjs-picture-in-picture-control{margin-left:12px!important}.video-js .vjs-text-track-cue{font-size:1.2em!important;max-width:90%!important}.video-js .vjs-text-track-cue>div{padding:8px 12px!important;font-size:1em!important}.video-js.vjs-fullscreen .vjs-text-track-display{bottom:8em!important}}.vjs-svg-icon{display:inline-block;background-repeat:no-repeat;background-position:center;fill:currentColor;height:1.8em;width:1.8em}.vjs-svg-icon:before{content:none!important}.vjs-svg-icon:hover,.vjs-control:focus .vjs-svg-icon{filter:drop-shadow(0 0 .25em #fff)}.vjs-modal-dialog .vjs-modal-dialog-content,.video-js .vjs-modal-dialog,.vjs-button>.vjs-icon-placeholder:before,.video-js .vjs-big-play-button .vjs-icon-placeholder:before{position:absolute;top:0;left:0;width:100%;height:100%}.vjs-button>.vjs-icon-placeholder:before,.video-js .vjs-big-play-button .vjs-icon-placeholder:before{text-align:center}@font-face{font-family:VideoJS;src:url(data:application/font-woff;charset=utf-8;base64,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) format("woff");font-weight:400;font-style:normal}.vjs-icon-play,.video-js .vjs-play-control .vjs-icon-placeholder,.video-js .vjs-big-play-button .vjs-icon-placeholder:before{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-play:before,.video-js .vjs-play-control .vjs-icon-placeholder:before,.video-js .vjs-big-play-button .vjs-icon-placeholder:before{content:""}.vjs-icon-play-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-play-circle:before{content:""}.vjs-icon-pause,.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-pause:before,.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder:before{content:""}.vjs-icon-volume-mute,.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-mute:before,.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder:before{content:""}.vjs-icon-volume-low,.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-low:before,.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder:before{content:""}.vjs-icon-volume-mid,.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-mid:before,.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder:before{content:""}.vjs-icon-volume-high,.video-js .vjs-mute-control .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-high:before,.video-js .vjs-mute-control .vjs-icon-placeholder:before{content:""}.vjs-icon-fullscreen-enter,.video-js .vjs-fullscreen-control .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-fullscreen-enter:before,.video-js .vjs-fullscreen-control .vjs-icon-placeholder:before{content:""}.vjs-icon-fullscreen-exit,.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-fullscreen-exit:before,.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder:before{content:""}.vjs-icon-spinner{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-spinner:before{content:""}.vjs-icon-subtitles,.video-js .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js .vjs-subtitles-button .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-subtitles:before,.video-js .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js .vjs-subtitles-button .vjs-icon-placeholder:before{content:""}.vjs-icon-captions,.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js .vjs-captions-button .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-captions:before,.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js .vjs-captions-button .vjs-icon-placeholder:before{content:""}.vjs-icon-hd{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-hd:before{content:""}.vjs-icon-chapters,.video-js .vjs-chapters-button .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-chapters:before,.video-js .vjs-chapters-button .vjs-icon-placeholder:before{content:""}.vjs-icon-downloading{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-downloading:before{content:""}.vjs-icon-file-download{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-file-download:before{content:""}.vjs-icon-file-download-done{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-file-download-done:before{content:""}.vjs-icon-file-download-off{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-file-download-off:before{content:""}.vjs-icon-share{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-share:before{content:""}.vjs-icon-cog{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-cog:before{content:""}.vjs-icon-square{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-square:before{content:""}.vjs-icon-circle,.vjs-seek-to-live-control .vjs-icon-placeholder,.video-js .vjs-volume-level,.video-js .vjs-play-progress{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle:before,.vjs-seek-to-live-control .vjs-icon-placeholder:before,.video-js .vjs-volume-level:before,.video-js .vjs-play-progress:before{content:""}.vjs-icon-circle-outline{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-outline:before{content:""}.vjs-icon-circle-inner-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-inner-circle:before{content:""}.vjs-icon-cancel,.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-cancel:before,.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder:before{content:""}.vjs-icon-repeat{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-repeat:before{content:""}.vjs-icon-replay,.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-replay:before,.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder:before{content:""}.vjs-icon-replay-5,.video-js .vjs-skip-backward-5 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-replay-5:before,.video-js .vjs-skip-backward-5 .vjs-icon-placeholder:before{content:""}.vjs-icon-replay-10,.video-js .vjs-skip-backward-10 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-replay-10:before,.video-js .vjs-skip-backward-10 .vjs-icon-placeholder:before{content:""}.vjs-icon-replay-30,.video-js .vjs-skip-backward-30 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-replay-30:before,.video-js .vjs-skip-backward-30 .vjs-icon-placeholder:before{content:""}.vjs-icon-forward-5,.video-js .vjs-skip-forward-5 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-forward-5:before,.video-js .vjs-skip-forward-5 .vjs-icon-placeholder:before{content:""}.vjs-icon-forward-10,.video-js .vjs-skip-forward-10 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-forward-10:before,.video-js .vjs-skip-forward-10 .vjs-icon-placeholder:before{content:""}.vjs-icon-forward-30,.video-js .vjs-skip-forward-30 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-forward-30:before,.video-js .vjs-skip-forward-30 .vjs-icon-placeholder:before{content:""}.vjs-icon-audio,.video-js .vjs-audio-button .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-audio:before,.video-js .vjs-audio-button .vjs-icon-placeholder:before{content:""}.vjs-icon-next-item{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-next-item:before{content:""}.vjs-icon-previous-item{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-previous-item:before{content:""}.vjs-icon-shuffle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-shuffle:before{content:""}.vjs-icon-cast{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-cast:before{content:""}.vjs-icon-picture-in-picture-enter,.video-js .vjs-picture-in-picture-control .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-picture-in-picture-enter:before,.video-js .vjs-picture-in-picture-control .vjs-icon-placeholder:before{content:""}.vjs-icon-picture-in-picture-exit,.video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-picture-in-picture-exit:before,.video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder:before{content:""}.vjs-icon-facebook{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-facebook:before{content:""}.vjs-icon-linkedin{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-linkedin:before{content:""}.vjs-icon-twitter{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-twitter:before{content:""}.vjs-icon-tumblr{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-tumblr:before{content:""}.vjs-icon-pinterest{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-pinterest:before{content:""}.vjs-icon-audio-description,.video-js .vjs-descriptions-button .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-audio-description:before,.video-js .vjs-descriptions-button .vjs-icon-placeholder:before{content:""}.video-js{display:inline-block;vertical-align:top;box-sizing:border-box;color:#fff;background-color:#000;position:relative;padding:0;font-size:10px;line-height:1;font-weight:400;font-style:normal;font-family:Arial,Helvetica,sans-serif;word-break:initial}.video-js:-moz-full-screen{position:absolute}.video-js:-webkit-full-screen{width:100%!important;height:100%!important}.video-js[tabindex="-1"]{outline:none}.video-js *,.video-js *:before,.video-js *:after{box-sizing:inherit}.video-js ul{font-family:inherit;font-size:inherit;line-height:inherit;list-style-position:outside;margin:0}.video-js.vjs-fluid,.video-js.vjs-16-9,.video-js.vjs-4-3,.video-js.vjs-9-16,.video-js.vjs-1-1{width:100%;max-width:100%}.video-js.vjs-fluid:not(.vjs-audio-only-mode),.video-js.vjs-16-9:not(.vjs-audio-only-mode),.video-js.vjs-4-3:not(.vjs-audio-only-mode),.video-js.vjs-9-16:not(.vjs-audio-only-mode),.video-js.vjs-1-1:not(.vjs-audio-only-mode){height:0}.video-js.vjs-16-9:not(.vjs-audio-only-mode){padding-top:56.25%}.video-js.vjs-4-3:not(.vjs-audio-only-mode){padding-top:75%}.video-js.vjs-9-16:not(.vjs-audio-only-mode){padding-top:177.7777777778%}.video-js.vjs-1-1:not(.vjs-audio-only-mode){padding-top:100%}.video-js.vjs-fill:not(.vjs-audio-only-mode){width:100%;height:100%}.video-js .vjs-tech{position:absolute;top:0;left:0;width:100%;height:100%}.video-js.vjs-audio-only-mode .vjs-tech{display:none}body.vjs-full-window,body.vjs-pip-window{padding:0;margin:0;height:100%}.vjs-full-window .video-js.vjs-fullscreen,body.vjs-pip-window .video-js{position:fixed;overflow:hidden;z-index:1000;left:0;top:0;bottom:0;right:0}.video-js.vjs-fullscreen:not(.vjs-ios-native-fs),body.vjs-pip-window .video-js{width:100%!important;height:100%!important;padding-top:0!important;display:block}.video-js.vjs-fullscreen.vjs-user-inactive{cursor:none}.vjs-pip-container .vjs-pip-text{position:absolute;bottom:10%;font-size:2em;background-color:#000000b3;padding:.5em;text-align:center;width:100%}.vjs-layout-tiny.vjs-pip-container .vjs-pip-text,.vjs-layout-x-small.vjs-pip-container .vjs-pip-text,.vjs-layout-small.vjs-pip-container .vjs-pip-text{bottom:0;font-size:1.4em}.vjs-hidden{display:none!important}.vjs-disabled{opacity:.5;cursor:default}.video-js .vjs-offscreen{height:1px;left:-9999px;position:absolute;top:0;width:1px}.vjs-lock-showing{display:block!important;opacity:1!important;visibility:visible!important}.vjs-no-js{padding:20px;color:#fff;background-color:#000;font-size:18px;font-family:Arial,Helvetica,sans-serif;text-align:center;width:300px;height:150px;margin:0 auto}.vjs-no-js a,.vjs-no-js a:visited{color:#66a8cc}.video-js .vjs-big-play-button{font-size:3em;line-height:1.5em;height:1.63332em;width:3em;display:block;position:absolute;top:50%;left:50%;padding:0;margin-top:-.81666em;margin-left:-1.5em;cursor:pointer;opacity:1;border:.06666em solid #fff;background-color:#2b333f;background-color:#2b333fb3;border-radius:.3em;transition:all .4s}.vjs-big-play-button .vjs-svg-icon{width:1em;height:1em;position:absolute;top:50%;left:50%;line-height:1;transform:translate(-50%,-50%)}.video-js:hover .vjs-big-play-button,.video-js .vjs-big-play-button:focus{border-color:#fff;background-color:#73859f;background-color:#73859f80;transition:all 0s}.vjs-controls-disabled .vjs-big-play-button,.vjs-has-started .vjs-big-play-button,.vjs-using-native-controls .vjs-big-play-button,.vjs-error .vjs-big-play-button{display:none}.vjs-has-started.vjs-paused.vjs-show-big-play-button-on-pause:not(.vjs-seeking,.vjs-scrubbing,.vjs-error) .vjs-big-play-button{display:block}.video-js button{background:none;border:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;text-transform:none;text-decoration:none;transition:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.video-js.vjs-spatial-navigation-enabled .vjs-button:focus{outline:.0625em solid white;box-shadow:none}.vjs-control .vjs-button{width:100%;height:100%}.video-js .vjs-control.vjs-close-button{cursor:pointer;height:3em;position:absolute;right:0;top:.5em;z-index:2}.video-js .vjs-modal-dialog{background:rgba(0,0,0,.8);background:linear-gradient(180deg,rgba(0,0,0,.8),rgba(255,255,255,0));overflow:auto}.video-js .vjs-modal-dialog>*{box-sizing:border-box}.vjs-modal-dialog .vjs-modal-dialog-content{font-size:1.2em;line-height:1.5;padding:20px 24px;z-index:1}.vjs-menu-button{cursor:pointer}.vjs-menu-button.vjs-disabled{cursor:default}.vjs-workinghover .vjs-menu-button.vjs-disabled:hover .vjs-menu{display:none}.vjs-menu .vjs-menu-content{display:block;padding:0;margin:0;font-family:Arial,Helvetica,sans-serif;overflow:auto}.vjs-menu .vjs-menu-content>*{box-sizing:border-box}.vjs-scrubbing .vjs-control.vjs-menu-button:hover .vjs-menu{display:none}.vjs-menu li{display:flex;justify-content:center;list-style:none;margin:0;padding:.2em 0;line-height:1.4em;font-size:1.2em;text-align:center;text-transform:lowercase}.vjs-menu li.vjs-menu-item:focus,.vjs-menu li.vjs-menu-item:hover,.js-focus-visible .vjs-menu li.vjs-menu-item:hover{background-color:#73859f;background-color:#73859f80}.vjs-menu li.vjs-selected,.vjs-menu li.vjs-selected:focus,.vjs-menu li.vjs-selected:hover,.js-focus-visible .vjs-menu li.vjs-selected:hover{background-color:#fff;color:#2b333f}.vjs-menu li.vjs-selected .vjs-svg-icon,.vjs-menu li.vjs-selected:focus .vjs-svg-icon,.vjs-menu li.vjs-selected:hover .vjs-svg-icon,.js-focus-visible .vjs-menu li.vjs-selected:hover .vjs-svg-icon{fill:#000}.video-js .vjs-menu *:not(.vjs-selected):focus:not(:focus-visible),.js-focus-visible .vjs-menu *:not(.vjs-selected):focus:not(.focus-visible){background:none}.vjs-menu li.vjs-menu-title{text-align:center;text-transform:uppercase;font-size:1em;line-height:2em;padding:0;margin:0 0 .3em;font-weight:700;cursor:default}.vjs-menu-button-popup .vjs-menu{display:none;position:absolute;bottom:0;width:10em;left:-3em;height:0em;margin-bottom:1.5em;border-top-color:#2b333fb3}.vjs-pip-window .vjs-menu-button-popup .vjs-menu{left:unset;right:1em}.vjs-menu-button-popup .vjs-menu .vjs-menu-content{background-color:#2b333f;background-color:#2b333fb3;position:absolute;width:100%;bottom:1.5em;max-height:15em}.vjs-layout-tiny .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-x-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:5em}.vjs-layout-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:10em}.vjs-layout-medium .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:14em}.vjs-layout-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-x-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-huge .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:25em}.vjs-workinghover .vjs-menu-button-popup.vjs-hover .vjs-menu,.vjs-menu-button-popup .vjs-menu.vjs-lock-showing{display:block}.video-js .vjs-menu-button-inline{transition:all .4s;overflow:hidden}.video-js .vjs-menu-button-inline:before{width:2.222222222em}.video-js .vjs-menu-button-inline:hover,.video-js .vjs-menu-button-inline:focus,.video-js .vjs-menu-button-inline.vjs-slider-active{width:12em}.vjs-menu-button-inline .vjs-menu{opacity:0;height:100%;width:auto;position:absolute;left:4em;top:0;padding:0;margin:0;transition:all .4s}.vjs-menu-button-inline:hover .vjs-menu,.vjs-menu-button-inline:focus .vjs-menu,.vjs-menu-button-inline.vjs-slider-active .vjs-menu{display:block;opacity:1}.vjs-menu-button-inline .vjs-menu-content{width:auto;height:100%;margin:0;overflow:hidden}.video-js .vjs-control-bar{display:none;width:100%;position:absolute;bottom:0;left:0;right:0;height:3em;background-color:#2b333f;background-color:#2b333fb3}.video-js.vjs-spatial-navigation-enabled .vjs-control-bar{gap:1px}.video-js:not(.vjs-controls-disabled,.vjs-using-native-controls,.vjs-error) .vjs-control-bar.vjs-lock-showing{display:flex!important}.vjs-has-started .vjs-control-bar,.vjs-audio-only-mode .vjs-control-bar{display:flex;visibility:visible;opacity:1;transition:visibility .1s,opacity .1s}.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{visibility:visible;opacity:0;pointer-events:none;transition:visibility 1s,opacity 1s}.vjs-controls-disabled .vjs-control-bar,.vjs-using-native-controls .vjs-control-bar,.vjs-error .vjs-control-bar{display:none!important}.vjs-audio.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar,.vjs-audio-only-mode.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{opacity:1;visibility:visible;pointer-events:auto}.video-js .vjs-control{position:relative;text-align:center;margin:0;padding:0;height:100%;width:4em;flex:none}.video-js .vjs-control.vjs-visible-text{width:auto;padding-left:1em;padding-right:1em}.vjs-button>.vjs-icon-placeholder:before{font-size:1.8em;line-height:1.67}.vjs-button>.vjs-icon-placeholder{display:block}.vjs-button>.vjs-svg-icon{display:inline-block}.video-js .vjs-control:focus:before,.video-js .vjs-control:hover:before,.video-js .vjs-control:focus{text-shadow:0em 0em 1em white}.video-js *:not(.vjs-visible-text)>.vjs-control-text{border:0;clip:rect(0 0 0 0);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.video-js .vjs-custom-control-spacer{display:none}.video-js .vjs-progress-control{cursor:pointer;flex:auto;display:flex;align-items:center;min-width:4em;touch-action:none}.video-js .vjs-progress-control.disabled{cursor:default}.vjs-live .vjs-progress-control{display:none}.vjs-liveui .vjs-progress-control{display:flex;align-items:center}.video-js .vjs-progress-holder{flex:auto;transition:all .2s;height:.3em}.video-js .vjs-progress-control .vjs-progress-holder{margin:0 10px}.video-js .vjs-progress-control:hover .vjs-progress-holder,.video-js.vjs-scrubbing.vjs-touch-enabled .vjs-progress-control .vjs-progress-holder{font-size:1.6666666667em}.video-js .vjs-progress-control:hover .vjs-progress-holder.disabled{font-size:1em}.video-js .vjs-progress-holder .vjs-play-progress,.video-js .vjs-progress-holder .vjs-load-progress,.video-js .vjs-progress-holder .vjs-load-progress div{position:absolute;display:block;height:100%;margin:0;padding:0;width:0}.video-js .vjs-play-progress{background-color:#fff}.video-js .vjs-play-progress:before{font-size:.9em;position:absolute;right:-.5em;line-height:.35em;z-index:1}.vjs-svg-icons-enabled .vjs-play-progress:before{content:none!important}.vjs-play-progress .vjs-svg-icon{position:absolute;top:-.35em;right:-.4em;width:.9em;height:.9em;pointer-events:none;line-height:.15em;z-index:1}.video-js .vjs-load-progress{background:rgba(114.9141509434,132.7028301887,159.3858490566,.5)}.video-js .vjs-load-progress div{background:rgba(114.9141509434,132.7028301887,159.3858490566,.75)}.video-js .vjs-time-tooltip{background-color:#fff;background-color:#fffc;border-radius:.3em;color:#000;float:right;font-family:Arial,Helvetica,sans-serif;font-size:1em;padding:6px 8px 8px;pointer-events:none;position:absolute;top:-3.4em;visibility:hidden;z-index:1}.video-js .vjs-progress-holder:focus .vjs-time-tooltip{display:none}.video-js .vjs-progress-control:hover .vjs-time-tooltip,.video-js .vjs-progress-control:hover .vjs-progress-holder:focus .vjs-time-tooltip,.video-js.vjs-scrubbing.vjs-touch-enabled .vjs-progress-control .vjs-time-tooltip{display:block;font-size:.6em;visibility:visible}.video-js .vjs-progress-control.disabled:hover .vjs-time-tooltip{font-size:1em}.video-js .vjs-progress-control .vjs-mouse-display{display:none;position:absolute;width:1px;height:100%;background-color:#000;z-index:1}.video-js .vjs-progress-control:hover .vjs-mouse-display,.video-js.vjs-scrubbing.vjs-touch-enabled .vjs-progress-control .vjs-mouse-display{display:block}.video-js.vjs-user-inactive .vjs-progress-control .vjs-mouse-display,.video-js.vjs-touch-enabled:not(.vjs-scrubbing) .vjs-progress-control .vjs-mouse-display{visibility:hidden;opacity:0;transition:visibility 1s,opacity 1s}.vjs-mouse-display .vjs-time-tooltip{color:#fff;background-color:#000;background-color:#000c}.video-js .vjs-slider{position:relative;cursor:pointer;padding:0;margin:0 .45em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:#73859f;background-color:#73859f80}.video-js .vjs-slider.disabled{cursor:default}.video-js .vjs-slider:focus{text-shadow:0em 0em 1em white;box-shadow:0 0 1em #fff}.video-js.vjs-spatial-navigation-enabled .vjs-slider:focus{outline:.0625em solid white}.video-js .vjs-mute-control{cursor:pointer;flex:none}.video-js .vjs-volume-control{cursor:pointer;margin-right:1em;display:flex}.video-js .vjs-volume-control.vjs-volume-horizontal{width:5em}.video-js .vjs-volume-panel .vjs-volume-control{visibility:visible;opacity:0;width:1px;height:1px;margin-left:-1px}.video-js .vjs-volume-panel{transition:width 1s}.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control,.video-js .vjs-volume-panel:active .vjs-volume-control,.video-js .vjs-volume-panel:focus .vjs-volume-control,.video-js .vjs-volume-panel .vjs-volume-control:active,.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control,.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active{visibility:visible;opacity:1;position:relative;transition:visibility .1s,opacity .1s,height .1s,width .1s,left 0s,top 0s}.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-horizontal,.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-horizontal{width:5em;height:3em;margin-right:0}.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-vertical,.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-vertical{left:-3.5em;transition:left 0s}.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active{width:10em;transition:width .1s}.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-mute-toggle-only{width:4em}.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical{height:8em;width:3em;left:-3000em;transition:visibility 1s,opacity 1s,height 1s 1s,width 1s 1s,left 1s 1s,top 1s 1s}.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal{transition:visibility 1s,opacity 1s,height 1s 1s,width 1s,left 1s 1s,top 1s 1s}.video-js .vjs-volume-panel{display:flex}.video-js .vjs-volume-bar{margin:1.35em .45em}.vjs-volume-bar.vjs-slider-horizontal{width:5em;height:.3em}.vjs-volume-bar.vjs-slider-vertical{width:.3em;height:5em;margin:1.35em auto}.video-js .vjs-volume-level{position:absolute;bottom:0;left:0;background-color:#fff}.video-js .vjs-volume-level:before{position:absolute;font-size:.9em;z-index:1}.vjs-slider-vertical .vjs-volume-level{width:.3em}.vjs-slider-vertical .vjs-volume-level:before{top:-.5em;left:-.3em;z-index:1}.vjs-svg-icons-enabled .vjs-volume-level:before{content:none}.vjs-volume-level .vjs-svg-icon{position:absolute;width:.9em;height:.9em;pointer-events:none;z-index:1}.vjs-slider-horizontal .vjs-volume-level{height:.3em}.vjs-slider-horizontal .vjs-volume-level:before{line-height:.35em;right:-.5em}.vjs-slider-horizontal .vjs-volume-level .vjs-svg-icon{right:-.3em;transform:translateY(-50%)}.vjs-slider-vertical .vjs-volume-level .vjs-svg-icon{top:-.55em;transform:translate(-50%)}.video-js .vjs-volume-panel.vjs-volume-panel-vertical{width:4em}.vjs-volume-bar.vjs-slider-vertical .vjs-volume-level{height:100%}.vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level{width:100%}.video-js .vjs-volume-vertical{width:3em;height:8em;bottom:8em;background-color:#2b333f;background-color:#2b333fb3}.video-js .vjs-volume-horizontal .vjs-menu{left:-2em}.video-js .vjs-volume-tooltip{background-color:#fff;background-color:#fffc;border-radius:.3em;color:#000;float:right;font-family:Arial,Helvetica,sans-serif;font-size:1em;padding:6px 8px 8px;pointer-events:none;position:absolute;top:-3.4em;visibility:hidden;z-index:1}.video-js .vjs-volume-control:hover .vjs-volume-tooltip,.video-js .vjs-volume-control:hover .vjs-progress-holder:focus .vjs-volume-tooltip{display:block;font-size:1em;visibility:visible}.video-js .vjs-volume-vertical:hover .vjs-volume-tooltip,.video-js .vjs-volume-vertical:hover .vjs-progress-holder:focus .vjs-volume-tooltip{left:1em;top:-12px}.video-js .vjs-volume-control.disabled:hover .vjs-volume-tooltip{font-size:1em}.video-js .vjs-volume-control .vjs-mouse-display{display:none;position:absolute;width:100%;height:1px;background-color:#000;z-index:1}.video-js .vjs-volume-horizontal .vjs-mouse-display{width:1px;height:100%}.video-js .vjs-volume-control:hover .vjs-mouse-display{display:block}.video-js.vjs-user-inactive .vjs-volume-control .vjs-mouse-display{visibility:hidden;opacity:0;transition:visibility 1s,opacity 1s}.vjs-mouse-display .vjs-volume-tooltip{color:#fff;background-color:#000;background-color:#000c}.vjs-poster{display:inline-block;vertical-align:middle;cursor:pointer;margin:0;padding:0;position:absolute;top:0;right:0;bottom:0;left:0;height:100%}.vjs-has-started .vjs-poster,.vjs-using-native-controls .vjs-poster{display:none}.vjs-audio.vjs-has-started .vjs-poster,.vjs-has-started.vjs-audio-poster-mode .vjs-poster,.vjs-pip-container.vjs-has-started .vjs-poster{display:block}.vjs-poster img{width:100%;height:100%;object-fit:contain}.video-js .vjs-live-control{display:flex;align-items:flex-start;flex:auto;font-size:1em;line-height:3em}.video-js:not(.vjs-live) .vjs-live-control,.video-js.vjs-liveui .vjs-live-control{display:none}.video-js .vjs-seek-to-live-control{align-items:center;cursor:pointer;flex:none;display:inline-flex;height:100%;padding-left:.5em;padding-right:.5em;font-size:1em;line-height:3em;width:auto;min-width:4em}.video-js.vjs-live:not(.vjs-liveui) .vjs-seek-to-live-control,.video-js:not(.vjs-live) .vjs-seek-to-live-control{display:none}.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge{cursor:auto}.vjs-seek-to-live-control .vjs-icon-placeholder{margin-right:.5em;color:#888}.vjs-svg-icons-enabled .vjs-seek-to-live-control{line-height:0}.vjs-seek-to-live-control .vjs-svg-icon{width:1em;height:1em;pointer-events:none;fill:#888}.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge .vjs-icon-placeholder{color:red}.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge .vjs-svg-icon{fill:red}.video-js .vjs-time-control{flex:none;font-size:1em;line-height:3em;min-width:2em;width:auto;padding-left:1em;padding-right:1em}.vjs-live .vjs-time-control,.vjs-live .vjs-time-divider,.video-js .vjs-current-time,.video-js .vjs-duration{display:none}.vjs-time-divider{display:none;line-height:3em}.vjs-normalise-time-controls:not(.vjs-live) .vjs-time-control{display:flex}.video-js .vjs-play-control{cursor:pointer}.video-js .vjs-play-control .vjs-icon-placeholder{flex:none}.vjs-text-track-display{position:absolute;bottom:3em;left:0;right:0;top:0;pointer-events:none}.vjs-error .vjs-text-track-display{display:none}.video-js.vjs-controls-disabled .vjs-text-track-display,.video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display{bottom:1em}.video-js .vjs-text-track{font-size:1.4em;text-align:center;margin-bottom:.1em}.vjs-subtitles{color:#fff}.vjs-captions{color:#fc6}.vjs-tt-cue{display:block}video::-webkit-media-text-track-display{transform:translateY(-3em)}.video-js.vjs-controls-disabled video::-webkit-media-text-track-display,.video-js.vjs-user-inactive.vjs-playing video::-webkit-media-text-track-display{transform:translateY(-1.5em)}.video-js.vjs-force-center-align-cues .vjs-text-track-cue{text-align:center!important;width:80%!important}@supports not (inset: 10px){.video-js .vjs-text-track-display>div{top:0;right:0;bottom:0;left:0}}.video-js .vjs-picture-in-picture-control{cursor:pointer;flex:none}.video-js.vjs-audio-only-mode .vjs-picture-in-picture-control,.vjs-pip-window .vjs-picture-in-picture-control{display:none}.video-js .vjs-fullscreen-control{cursor:pointer;flex:none}.video-js.vjs-audio-only-mode .vjs-fullscreen-control,.vjs-pip-window .vjs-fullscreen-control{display:none}.vjs-playback-rate>.vjs-menu-button,.vjs-playback-rate .vjs-playback-rate-value{position:absolute;top:0;left:0;width:100%;height:100%}.vjs-playback-rate .vjs-playback-rate-value{pointer-events:none;font-size:1.5em;line-height:2;text-align:center}.vjs-playback-rate .vjs-menu{width:4em;left:0}.vjs-error .vjs-error-display .vjs-modal-dialog-content{font-size:1.4em;text-align:center}.vjs-loading-spinner{display:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);opacity:.85;text-align:left;border:.6em solid rgba(43,51,63,.7);box-sizing:border-box;background-clip:padding-box;width:5em;height:5em;border-radius:50%;visibility:hidden}.vjs-seeking .vjs-loading-spinner,.vjs-waiting .vjs-loading-spinner{display:flex;justify-content:center;align-items:center;animation:vjs-spinner-show 0s linear .3s forwards}.vjs-error .vjs-loading-spinner{display:none}.vjs-loading-spinner:before,.vjs-loading-spinner:after{content:"";position:absolute;box-sizing:inherit;width:inherit;height:inherit;border-radius:inherit;opacity:1;border:inherit;border-color:transparent;border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:before,.vjs-seeking .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:after{animation:vjs-spinner-spin 1.1s cubic-bezier(.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite}.vjs-seeking .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:before{border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:after{border-top-color:#fff;animation-delay:.44s}@keyframes vjs-spinner-show{to{visibility:visible}}@keyframes vjs-spinner-spin{to{transform:rotate(360deg)}}@keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}to{border-top-color:#73859f}}.video-js.vjs-audio-only-mode .vjs-captions-button{display:none}.vjs-chapters-button .vjs-menu ul{width:24em}.video-js.vjs-audio-only-mode .vjs-descriptions-button{display:none}.vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-svg-icon{width:1.5em;height:1.5em}.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder{vertical-align:middle;display:inline-block;margin-bottom:-.1em}.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before{font-family:VideoJS;content:"";font-size:1.5em;line-height:inherit}.video-js.vjs-audio-only-mode .vjs-subs-caps-button{display:none}.video-js .vjs-audio-button+.vjs-menu .vjs-descriptions-menu-item .vjs-menu-item-text .vjs-icon-placeholder,.video-js .vjs-audio-button+.vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder{vertical-align:middle;display:inline-block;margin-bottom:-.1em}.video-js .vjs-audio-button+.vjs-menu .vjs-descriptions-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before,.video-js .vjs-audio-button+.vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before{font-family:VideoJS;content:" ";font-size:1.5em;line-height:inherit}.video-js.vjs-layout-small .vjs-current-time,.video-js.vjs-layout-small .vjs-time-divider,.video-js.vjs-layout-small .vjs-duration,.video-js.vjs-layout-small .vjs-remaining-time,.video-js.vjs-layout-small .vjs-playback-rate,.video-js.vjs-layout-small .vjs-volume-control,.video-js.vjs-layout-x-small .vjs-current-time,.video-js.vjs-layout-x-small .vjs-time-divider,.video-js.vjs-layout-x-small .vjs-duration,.video-js.vjs-layout-x-small .vjs-remaining-time,.video-js.vjs-layout-x-small .vjs-playback-rate,.video-js.vjs-layout-x-small .vjs-volume-control,.video-js.vjs-layout-tiny .vjs-current-time,.video-js.vjs-layout-tiny .vjs-time-divider,.video-js.vjs-layout-tiny .vjs-duration,.video-js.vjs-layout-tiny .vjs-remaining-time,.video-js.vjs-layout-tiny .vjs-playback-rate,.video-js.vjs-layout-tiny .vjs-volume-control{display:none}.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:hover,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover{width:auto;width:initial}.video-js.vjs-layout-x-small .vjs-progress-control,.video-js.vjs-layout-tiny .vjs-progress-control{display:none}.video-js.vjs-layout-x-small .vjs-custom-control-spacer{flex:auto;display:block}.vjs-modal-dialog.vjs-text-track-settings{background-color:#2b333f;background-color:#2b333fbf;color:#fff;height:70%}.vjs-spatial-navigation-enabled .vjs-modal-dialog.vjs-text-track-settings{height:80%}.vjs-error .vjs-text-track-settings{display:none}.vjs-text-track-settings .vjs-modal-dialog-content{display:table}.vjs-text-track-settings .vjs-track-settings-colors,.vjs-text-track-settings .vjs-track-settings-font,.vjs-text-track-settings .vjs-track-settings-controls{display:table-cell}.vjs-text-track-settings .vjs-track-settings-controls{text-align:right;vertical-align:bottom}@supports (display: grid){.vjs-text-track-settings .vjs-modal-dialog-content{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr;padding:20px 24px 0}.vjs-track-settings-controls .vjs-default-button{margin-bottom:20px}.vjs-text-track-settings .vjs-track-settings-controls{grid-column:1/-1}.vjs-layout-small .vjs-text-track-settings .vjs-modal-dialog-content,.vjs-layout-x-small .vjs-text-track-settings .vjs-modal-dialog-content,.vjs-layout-tiny .vjs-text-track-settings .vjs-modal-dialog-content{grid-template-columns:1fr}}.vjs-text-track-settings select{font-size:inherit}.vjs-track-setting>select{margin-right:1em;margin-bottom:.5em}.vjs-text-track-settings fieldset{margin:10px;border:none}.vjs-text-track-settings fieldset span{display:inline-block;padding:0 .6em .8em}.vjs-text-track-settings fieldset span>select{max-width:7.3em}.vjs-text-track-settings legend{color:#fff;font-weight:700;font-size:1.2em}.vjs-text-track-settings .vjs-label{margin:0 .5em .5em 0}.vjs-track-settings-controls button:focus,.vjs-track-settings-controls button:active{outline-style:solid;outline-width:medium;background-image:linear-gradient(0deg,#fff 88%,rgb(114.9141509434,132.7028301887,159.3858490566) 100%)}.vjs-track-settings-controls button:hover{color:#2b333fbf}.vjs-track-settings-controls button{background-color:#fff;background-image:linear-gradient(-180deg,#fff 88%,rgb(114.9141509434,132.7028301887,159.3858490566) 100%);color:#2b333f;cursor:pointer;border-radius:2px}.vjs-track-settings-controls .vjs-default-button{margin-right:1em}.vjs-title-bar{background:rgba(0,0,0,.9);background:linear-gradient(180deg,rgba(0,0,0,.9) 0%,rgba(0,0,0,.7) 60%,rgba(0,0,0,0) 100%);font-size:1.2em;line-height:1.5;transition:opacity .1s;padding:.666em 1.333em 4em;pointer-events:none;position:absolute;top:0;width:100%}.vjs-error .vjs-title-bar{display:none}.vjs-title-bar-title,.vjs-title-bar-description{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vjs-title-bar-title{font-weight:700;margin-bottom:.333em}.vjs-playing.vjs-user-inactive .vjs-title-bar{opacity:0;transition:opacity 1s}.video-js .vjs-skip-forward-5,.video-js .vjs-skip-forward-10,.video-js .vjs-skip-forward-30,.video-js .vjs-skip-backward-5,.video-js .vjs-skip-backward-10,.video-js .vjs-skip-backward-30{cursor:pointer}.video-js .vjs-transient-button{position:absolute;height:3em;display:flex;align-items:center;justify-content:center;background-color:#32323280;cursor:pointer;opacity:1;transition:opacity 1s}.video-js:not(.vjs-has-started) .vjs-transient-button{display:none}.video-js.not-hover .vjs-transient-button:not(.force-display),.video-js.vjs-user-inactive .vjs-transient-button:not(.force-display){opacity:0}.video-js .vjs-transient-button span{padding:0 .5em}.video-js .vjs-transient-button.vjs-left{left:1em}.video-js .vjs-transient-button.vjs-right{right:1em}.video-js .vjs-transient-button.vjs-top{top:1em}.video-js .vjs-transient-button.vjs-near-top{top:4em}.video-js .vjs-transient-button.vjs-bottom{bottom:4em}.video-js .vjs-transient-button:hover{background-color:#323232e6}@media print{.video-js>*:not(.vjs-tech):not(.vjs-poster){visibility:hidden}}.vjs-resize-manager{position:absolute;top:0;left:0;width:100%;height:100%;border:none;z-index:-1000}.js-focus-visible .video-js *:focus:not(.focus-visible){outline:none}.video-js *:focus:not(:focus-visible){outline:none}.vjs-autoplay-countdown-overlay{position:absolute;top:0;left:0;width:100%;height:calc(100% - 46px);background:rgba(0,0,0,.85);display:none;flex-direction:column;justify-content:center;align-items:center;z-index:100000;padding:20px;box-sizing:border-box;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;transition:opacity .3s ease-in-out}.vjs-autoplay-countdown-overlay.autoplay-countdown-show{opacity:1}.autoplay-countdown-content{background:linear-gradient(135deg,rgba(0,0,0,.95),rgba(20,20,20,.9));border-radius:20px;padding:50px;max-width:480px;width:100%;text-align:center;box-shadow:0 20px 60px #0006,0 8px 32px #0003,inset 0 1px #ffffff1a;border:1px solid rgba(255,255,255,.15);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);position:relative;overflow:hidden}.autoplay-countdown-content:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent)}.autoplay-countdown-content:after{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(255,0,0,.05) 0%,transparent 70%);animation:backgroundPulse 4s ease-in-out infinite;pointer-events:none}@keyframes backgroundPulse{0%,to{opacity:.3;transform:scale(1)}50%{opacity:.6;transform:scale(1.1)}}.autoplay-countdown-header{position:relative;z-index:2}.autoplay-countdown-header h3{color:#fff;font-size:26px;font-weight:400;margin:0 0 10px;line-height:1.3;text-shadow:0 2px 4px rgba(0,0,0,.3)}.autoplay-countdown-header h3 span{font-weight:700}.autoplay-countdown-video-info{display:flex;flex-direction:column;align-items:center;gap:20px;text-align:center;position:relative;z-index:2;margin:0 0 50px}.next-video-thumbnail{flex-shrink:0;width:180px;height:101px;border-radius:12px;overflow:hidden;background:#333;position:relative;box-shadow:0 12px 32px #0006,0 4px 16px #0003;border:2px solid rgba(255,255,255,.1);transition:transform .3s ease,box-shadow .3s ease}.next-video-thumbnail:hover{transform:translateY(-4px) scale(1.02);box-shadow:0 16px 40px #00000080,0 8px 24px #0000004d}.next-video-thumbnail img{width:100%;height:100%;object-fit:cover;display:block}.play-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(0,0,0,.8);border-radius:50%;width:64px;height:64px;display:flex;align-items:center;justify-content:center;color:#fff;transition:all .3s ease;box-shadow:0 8px 24px #00000080,0 4px 16px #0000004d;border:3px solid rgba(255,255,255,.2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.play-overlay:hover{background:rgba(0,0,0,.9);transform:translate(-50%,-50%) scale(1.1);box-shadow:0 12px 32px #0009,0 6px 20px #0006}.play-overlay svg{margin-left:4px;width:28px;height:28px}.next-video-details{flex-grow:1;min-width:0;text-align:center}.next-video-title{color:#999;font-size:18px;font-weight:500;margin:0;line-height:1.4;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-shadow:0 2px 4px rgba(0,0,0,.3);letter-spacing:.5px}.next-video-author{color:#bbb;font-size:16px;margin:0 0 8px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.next-video-duration{color:#999;font-size:14px;margin:0;line-height:1.2;font-weight:500}.autoplay-countdown-actions{display:flex;gap:24px;justify-content:center;align-items:center;position:relative;z-index:2;padding:0;margin-top:8px}button.autoplay-play-button,button.autoplay-cancel-button{display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);min-width:140px;height:48px;position:relative;overflow:hidden;text-transform:uppercase;letter-spacing:.3px;line-height:1;white-space:nowrap;box-shadow:0 6px 20px #0000004d,inset 0 1px #ffffff1a;text-align:center}button.autoplay-play-button{background:linear-gradient(135deg,#ff0000,#e60000);color:#fff;border:1px solid rgba(255,255,255,.1)}.autoplay-play-button:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s ease}.autoplay-play-button:hover{background:linear-gradient(135deg,#ff1a1a,#cc0000);transform:translateY(-2px);box-shadow:0 8px 25px #f006,inset 0 1px #ffffff4d}.autoplay-play-button:hover:before{left:100%}.autoplay-play-button:active{transform:translateY(-1px);box-shadow:0 4px 15px #ff00004d,inset 0 1px #fff3}.autoplay-cancel-button{background:linear-gradient(135deg,#404040,#2a2a2a);color:#fff;border:1px solid rgba(255,255,255,.1);box-shadow:0 6px 20px #0000004d,inset 0 1px #ffffff1a}.autoplay-cancel-button:hover{background:linear-gradient(135deg,#505050,#3a3a3a);transform:translateY(-2px);box-shadow:0 8px 25px #0006,inset 0 1px #fff3}.autoplay-cancel-button:active{transform:translateY(-1px);box-shadow:0 4px 15px #0000004d,inset 0 1px #ffffff1a}.autoplay-play-button svg,.autoplay-cancel-button svg{width:18px;height:18px;flex-shrink:0;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3));transition:transform .3s ease;position:relative;z-index:1;display:block;margin:0;padding:0;vertical-align:middle}.autoplay-play-button:hover svg{transform:scale(1.05);filter:drop-shadow(0 2px 4px rgba(0,0,0,.4))}.autoplay-cancel-button svg{width:16px;height:16px}.autoplay-cancel-button:hover svg{transform:scale(1.05) rotate(90deg);filter:drop-shadow(0 2px 4px rgba(0,0,0,.4))}.autoplay-play-button span,.autoplay-cancel-button span{display:inline-block;vertical-align:middle;line-height:1;font-size:inherit;font-weight:inherit;letter-spacing:inherit;text-transform:inherit;position:relative;z-index:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;margin:0;padding:0;height:auto;align-self:center}.autoplay-play-button>*,.autoplay-cancel-button>*{vertical-align:middle;display:inline-block}.autoplay-play-button,.autoplay-cancel-button{align-items:center;justify-content:center}.autoplay-play-button svg,.autoplay-cancel-button svg{vertical-align:middle;display:inline-block}.vjs-autoplay-toggle .vjs-autoplay-icon svg{width:100%;height:100%;display:block}@media (max-width: 767px){.autoplay-countdown-video-info{margin-bottom:20px}.autoplay-countdown-content{padding:24px;max-width:400px}.autoplay-countdown-header h3{font-size:20px}.next-video-thumbnail{width:140px;height:78px}.play-overlay{width:48px;height:48px}.play-overlay svg{width:20px;height:20px}.next-video-title{font-size:18px}.next-video-author{font-size:14px}.autoplay-play-button,.autoplay-cancel-button{padding:12px 24px;font-size:14px;min-width:120px;height:44px;gap:6px;align-items:center;justify-content:center}.autoplay-play-button svg{width:16px;height:16px;vertical-align:middle}.autoplay-cancel-button svg{width:14px;height:14px;vertical-align:middle}}@media (max-width: 480px){.autoplay-countdown-content{padding:20px;max-width:350px}.autoplay-countdown-header h3{font-size:18px}.countdown-timer{font-size:24px;padding:10px 16px}.autoplay-countdown-video-info{gap:16px}.next-video-thumbnail{width:120px;height:68px}.play-overlay{width:40px;height:40px}.play-overlay svg{width:16px;height:16px}.next-video-title{font-size:16px}.next-video-author{font-size:13px}.autoplay-countdown-actions{gap:5px;padding:0}button.autoplay-play-button,button.autoplay-cancel-button{padding:10px 20px;width:120px;height:40px;min-width:120px}.autoplay-play-button,.autoplay-cancel-button{width:100%;min-width:100%;height:46px;gap:6px;padding:10px 20px;font-size:13px;align-items:center;justify-content:center}.autoplay-play-button svg{width:14px;height:14px;vertical-align:middle}.autoplay-cancel-button svg{width:12px;height:12px;vertical-align:middle}}.vjs-settings-button{width:3em;height:3em;display:flex;align-items:center;justify-content:center;padding:0;margin:0}.vjs-icon-cog1{font-size:30px!important;position:relative;top:-8px!important;display:flex;align-items:center;justify-content:center;width:100%;height:100%;line-height:1}.custom-settings-overlay{border:0;position:absolute;bottom:60px;right:20px;width:280px;height:350px;background:rgba(28,28,28,.95);color:#fff;border-radius:7px;box-shadow:0 4px 12px #00000080;display:none;z-index:1000;font-size:14px;overflow:auto}.settings-header{padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.1);font-weight:700}.settings-item{padding:12px 16px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(255,255,255,.1);transition:background .2s ease;gap:10px}.settings-item .settings-left span{display:flex}.custom-settings-overlay .settings-left span.vjs-icon-placeholder{transform:inherit!important}.settings-item:last-child{border-bottom:none}.settings-item:hover{background:rgba(255,255,255,.05)}.speed-submenu,.quality-submenu,.subtitles-submenu{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(28,28,28,.95);display:none;flex-direction:column}.subtitle-option{padding:12px 16px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:background .2s ease}.subtitle-option:hover{background:rgba(255,255,255,.05)}.subtitle-option.active{background:rgba(255,255,255,.1)}.submenu-header{padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.1);display:flex;align-items:center;cursor:pointer;position:sticky;top:0;background:rgba(28,28,28,.95);z-index:1}.submenu-header:hover{background:rgba(28,28,28,1)}.speed-option{padding:12px 16px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:background .2s ease}.speed-option:hover{background:rgba(255,255,255,.05)}.speed-option.active{background:rgba(255,255,255,.1)}.quality-option{padding:12px 16px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:background .2s ease}.quality-option:hover{background:rgba(255,255,255,.05)}.quality-option.active{background:rgba(255,255,255,.1)}.settings-left{display:inline-flex;align-items:center;gap:8px}.settings-right{display:inline-flex;align-items:center;text-align:right}sup.hd-badge{font-size:10px;line-height:1;margin-left:6px;background:#e53935;color:#fff;padding:1px 4px;border-radius:3px} +html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}.playlist-items a{text-decoration:none!important}.video-js video{outline:none!important}.video-js .vjs-poster{border-radius:12px!important}.video-js video{border-radius:12px!important}.video-js div.vjs-control-bar{background:transparent!important;background-color:transparent!important;background-image:none!important;display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-start!important;padding:0 12px;height:48px}.video-container{width:100%;max-width:1200px;margin:0 auto;padding:0 20px;box-sizing:border-box}.video-js.vjs-fluid{width:100%!important;max-width:100%!important}.vjs-next-video-control .vjs-icon-placeholder{width:1.2em;height:1.2em;display:flex;align-items:center;justify-content:center;margin:auto}.vjs-next-video-control .vjs-icon-placeholder svg{width:100%;height:100%;display:block}.vjs-end-screen-overlay{position:absolute;top:0;left:0;width:100%;background:rgba(0,0,0,.5);display:none;flex-direction:column;justify-content:center;align-items:center;z-index:1000;height:calc(100% - 46px);box-sizing:border-box;padding:20px;gap:10px}.vjs-related-videos-title{color:#fff;font-size:24px;line-height:24px;padding:0;margin:0;text-align:center;font-weight:700;flex-shrink:0}.vjs-related-videos-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;width:100%;max-width:100%;margin:0;box-sizing:border-box;justify-items:center;overflow:hidden;align-self:center;flex-shrink:0;height:calc(100% - 44px)}.vjs-related-video-item{position:relative;cursor:pointer;border-radius:5px;overflow:hidden;transition:transform .2s ease,box-shadow .2s ease;background:#1a1a1a;border:1px solid #333;width:100%;max-width:100%;box-shadow:0 2px 8px #0000001a}.vjs-related-video-item:hover{transform:translateY(-2px);box-shadow:0 8px 25px #0000004d}.vjs-related-video-thumbnail{width:100%;height:100%;object-fit:cover;display:block;background:#1a1a1a;transition:transform .2s ease}.vjs-related-video-item:hover .vjs-related-video-thumbnail{transform:scale(1.02)}.vjs-related-video-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(transparent,rgba(0,0,0,.9));color:#fff;padding:12px;opacity:0;transition:opacity .3s ease;display:flex;flex-direction:column;justify-content:flex-start;height:100%}.vjs-related-video-item:hover .vjs-related-video-overlay{opacity:1}.vjs-related-video-title{font-size:14px;font-weight:700;line-height:1.3;color:#fff;margin-bottom:4px}.vjs-related-video-meta{display:flex;flex-direction:row;gap:8px;align-items:center}.vjs-related-video-author{font-size:12px;color:#ccc}.vjs-related-video-views{font-size:12px;color:#aaa}.vjs-related-video-author:after{content:"•";margin-left:8px;color:#666}.vjs-related-video-duration{position:absolute;bottom:8px;right:8px;background:rgba(0,0,0,.8);color:#fff;padding:2px 6px;font-size:11px;font-weight:700;border-radius:2px;opacity:0;transition:opacity .3s ease}.vjs-related-video-item:hover .vjs-related-video-duration{opacity:1}.video-js.vjs-ended .vjs-control-bar{opacity:1!important;pointer-events:auto!important}.video-js.vjs-ended .vjs-control-bar .vjs-control,.video-js.vjs-ended .vjs-control-bar button{opacity:1!important;pointer-events:auto!important;cursor:pointer!important}.video-js.vjs-ended .vjs-control-bar .vjs-control.vjs-volume-control{opacity:0!important}.video-js.vjs-ended .vjs-control-bar .vjs-volume-panel.vjs-hover .vjs-volume-control{opacity:1!important}.video-js.vjs-ended .vjs-play-control{opacity:1!important;pointer-events:auto!important;cursor:pointer!important}.video-js.vjs-ended .vjs-progress-control,.video-js.vjs-ended .vjs-volume-panel{opacity:1!important;pointer-events:auto!important}.vjs-chapter-markers-track{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.vjs-chapter-marker{position:absolute;top:0;width:2px;height:100%;background:rgba(255,255,255,.6);pointer-events:auto;cursor:pointer;transition:background .2s ease}.vjs-chapter-marker:hover{background:rgba(255,255,255,.9);width:3px}.vjs-chapter-marker-tooltip{position:absolute;bottom:8px;left:50%;transform:translate(-50%);background:rgba(0,0,0,.8);color:#fff;padding:4px 8px;border-radius:4px;font-size:11px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:1001}.vjs-chapter-marker:hover .vjs-chapter-marker-tooltip{opacity:1}.vjs-chapter-floating-tooltip{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif!important;line-height:1.4!important;animation:fadeIn .2s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translate(-50%) translateY(5px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.video-js .vjs-menu-button:not(.vjs-disabled) .vjs-menu{display:none!important}.video-js .vjs-menu-button:not(.vjs-disabled).vjs-lock-showing .vjs-menu,.video-js .vjs-menu-button:not(.vjs-disabled) .vjs-menu.vjs-lock-showing{display:block!important}.video-js .vjs-menu-button:hover .vjs-menu{display:none!important}.video-js .vjs-menu-button.vjs-lock-showing:hover .vjs-menu{display:block!important}.video-js .vjs-menu.vjs-lock-showing{display:block!important;opacity:1!important;visibility:visible!important}.video-js.chapters-open .vjs-menu,.video-js.chapters-open .vjs-menu.vjs-lock-showing,.video-js.chapters-open .vjs-hover-display,.video-js.chapters-open .vjs-time-tooltip,.video-js.chapters-open .vjs-progress-holder .vjs-mouse-display{display:none!important;opacity:0!important;visibility:hidden!important}.video-js .vjs-volume-panel.vjs-hover{transition:ease-in-out .5s!important;width:auto!important}.video-js .vjs-captions-button,.video-js .vjs-subs-caps-button{display:none!important}.video-js .vjs-subtitles-button .vjs-menu,.video-js .vjs-subtitles-button .vjs-menu.vjs-lock-showing{display:none!important;visibility:hidden!important;opacity:0!important;pointer-events:none!important}.video-js .vjs-text-track-display{position:absolute!important;bottom:6em!important;left:0!important;right:0!important;top:0!important;pointer-events:none!important;z-index:10!important}.video-js .vjs-text-track-cue{position:absolute!important;bottom:0!important;left:0!important;right:0!important;text-align:center!important;padding:0!important;background:transparent!important;border:none!important;font-size:1.2em!important;line-height:1.4!important;color:#fff!important;text-shadow:2px 2px 4px rgba(0,0,0,.8)!important;font-family:Arial,sans-serif!important;font-weight:600!important;white-space:pre-line!important;word-wrap:break-word!important;max-width:90%!important;margin:0 auto!important;z-index:11!important}.video-js .vjs-text-track-cue>div{background:rgba(0,0,0,.7)!important;padding:8px 12px!important;border-radius:4px!important;display:inline-block!important;margin:2px 0!important;max-width:100%!important;box-sizing:border-box!important}.video-js.vjs-fullscreen .vjs-text-track-display{bottom:8em!important}.video-js.vjs-fullscreen .vjs-text-track-cue{font-size:1.4em!important;max-width:85%!important}.video-js.vjs-fullscreen .vjs-text-track-cue>div{padding:10px 16px!important;font-size:1em!important}.video-js .vjs-subtitles-button .vjs-menu.vjs-lock-showing .vjs-menu-content{display:none!important;visibility:hidden!important;opacity:0!important;pointer-events:none!important}.video-js .vjs-chapters-button .vjs-menu,.video-js .vjs-chapters-button .vjs-menu.vjs-lock-showing,.video-js .vjs-chapters-button .vjs-menu.vjs-lock-showing .vjs-menu-content{display:none!important}.video-js .vjs-chapters-button .vjs-menu{display:none!important;visibility:hidden!important;opacity:0!important;pointer-events:none!important}.video-js .vjs-subtitles-button{position:relative;cursor:pointer!important;pointer-events:auto!important}.video-js button.vjs-subtitles-button{cursor:pointer!important;pointer-events:auto!important;touch-action:manipulation!important;-webkit-tap-highlight-color:transparent!important}.video-js button.vjs-subtitles-button:before{content:"";position:absolute;left:50%;transform:translate(-50%);bottom:6px;height:3px;background:#e1002d;border-radius:2px;width:0;padding:0;transition:none!important;animation:none!important;-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important}.video-js .vjs-subs-active button.vjs-subtitles-button:before{width:24px;transition:none!important;animation:none!important;-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important}.video-js button.vjs-subtitles-button{transition:none!important;animation:none!important;-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important}.video-js .vjs-autoplay-toggle .vjs-hover-display,.video-js .vjs-autoplay-toggle .vjs-tooltip,.video-js .vjs-autoplay-toggle .vjs-tooltip-text{display:none!important;visibility:hidden!important;opacity:0!important;pointer-events:none!important}.video-js .vjs-autoplay-toggle{position:relative}.video-js .vjs-autoplay-toggle:after{content:attr(title);position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:rgba(0,0,0,.9);color:#fff;padding:6px 10px;border-radius:4px;font-size:12px;white-space:nowrap;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease;z-index:1000;margin-bottom:8px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;box-shadow:0 2px 8px #0000004d;border:1px solid rgba(255,255,255,.1)}.video-js .vjs-autoplay-toggle:hover:after,.video-js .vjs-autoplay-toggle:focus:after{opacity:1;visibility:visible}.video-js .vjs-settings-button{cursor:pointer!important;pointer-events:auto!important;position:relative!important;display:flex!important;align-items:center!important;justify-content:center!important;min-width:32px!important;height:32px!important;padding:0!important;margin:0 2px!important;border:none!important;background:transparent!important;color:inherit!important;font-size:inherit!important;line-height:inherit!important;text-align:center!important;vertical-align:middle!important;touch-action:manipulation!important;-webkit-tap-highlight-color:transparent!important;-webkit-touch-callout:none!important;-webkit-user-select:none!important;user-select:none!important}.video-js .vjs-settings-button:hover{background-color:#ffffff1a!important}.video-js .vjs-settings-button:focus{outline:2px solid #fff!important;outline-offset:2px!important}.video-js .vjs-settings-button .vjs-icon-cog{font-size:18px!important;width:18px!important;height:18px!important;display:flex!important;align-items:center!important;justify-content:center!important}.vjs-play-progress{background-color:#019932!important}.vjs-load-progress,.vjs-progress-holder{background:rgba(255,255,255,.5)!important}.video-js .vjs-progress-control{position:absolute!important;bottom:46px!important;left:0!important;right:0!important;width:100%!important;height:0!important;z-index:3!important;padding:0!important;margin:0 auto!important}.video-js .vjs-control-bar .vjs-progress-control{display:none!important}.video-js .vjs-progress-control.vjs-control{display:block!important}.video-js .vjs-control-bar .vjs-icon-placeholder,.video-js .vjs-control-bar .vjs-button .vjs-icon-placeholder,.video-js .vjs-control-bar [class*=vjs-icon-]{font-size:1.5em!important}.vjs-control-bar .custom-remaining-time .vjs-remaining-time-display{font-size:14px!important;font-weight:500;line-height:1;display:flex;align-items:center;justify-content:center;height:100%;color:#fff}.vjs-mouse-display{z-index:4!important}.vjs-slider-horizontal{top:-5px}.video-js .vjs-spacer-control{flex:1!important;min-width:1px!important;height:100%!important}.video-js .vjs-control-bar .vjs-control{flex:none!important}.video-js .vjs-autoplay-toggle{margin-right:10px!important}.video-js .vjs-picture-in-picture-control{margin-left:6px!important}.vjs-seek-indicator{position:absolute!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;z-index:9999!important;pointer-events:none!important;display:none!important;align-items:center!important;justify-content:center!important;opacity:0!important;visibility:hidden!important;transition:opacity .2s ease-in-out!important}.vjs-seek-indicator-content{background:transparent!important;flex-direction:column!important;align-items:center!important;justify-content:center!important}.vjs-seek-indicator-icon{position:relative!important;display:flex!important;align-items:center!important;justify-content:center!important;margin-bottom:4px!important}.seek-icon-container{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;animation:seekPulse .3s ease-out!important}.youtube-seek-container{display:flex!important;align-items:center!important;justify-content:center!important;animation:youtubeSeekPulse .3s ease-out!important}.youtube-seek-circle{width:80px!important;height:80px!important;border-radius:50%!important;-webkit-border-radius:50%!important;-moz-border-radius:50%!important;background:rgba(0,0,0,.8)!important;backdrop-filter:blur(10px)!important;-webkit-backdrop-filter:blur(10px)!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;padding:0!important;box-shadow:0 4px 20px #0000004d!important;border:1px solid rgba(255,255,255,.15)!important;box-sizing:border-box!important;overflow:hidden!important}.youtube-seek-icon{display:flex!important;align-items:center!important;justify-content:center!important;margin-bottom:4px!important}.youtube-seek-icon svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.5))!important}.youtube-seek-time{color:#fff!important;font-size:10px!important;font-weight:500!important;text-align:center!important;line-height:1.2!important;opacity:.9!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif!important}@keyframes youtubeSeekPulse{0%{transform:scale(.7);opacity:.5}50%{transform:scale(1.05);opacity:.9}to{transform:scale(1);opacity:1}}.seek-seconds{color:#fff!important;font-size:16px!important;font-weight:700!important;text-shadow:0 2px 4px rgba(0,0,0,.7)!important;line-height:1!important}.vjs-seek-indicator-text{color:#fff!important;font-size:16px!important;font-weight:500!important;text-align:center!important;text-shadow:0 1px 2px rgba(0,0,0,.8)!important}button{cursor:pointer}.video-js{padding:0;height:100%!important;border-radius:12px}.video-chapter{position:absolute;top:auto;bottom:60px;width:min(360px,calc(100% - 20px));border:1px solid rgba(255,255,255,.12);border-radius:12px;height:calc(100% - 80px);background:rgba(18,18,18,.96);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);overflow:hidden;box-shadow:0 12px 30px #00000073;right:10px}.chapter-head{padding:12px 8px 10px 16px;position:sticky;top:0;left:0;background:linear-gradient(180deg,rgba(28,28,28,.95),rgba(18,18,18,.95));border-bottom:1px solid rgba(255,255,255,.08);z-index:2}.playlist-title{display:flex;align-items:center;gap:10px}.chapter-title{width:auto;flex:1;min-width:0}.chapter-title h3{margin:0;padding:0}.chapter-title h3 a{color:#fff;font-size:18px;line-height:26px;font-weight:700;text-decoration:none;white-space:nowrap;text-overflow:ellipsis;height:28px;overflow:hidden;display:block}.chapter-title p{margin:4px 0 0;padding:0;color:#fff;font-size:12px;font-weight:400;line-height:15px}.chapter-title p a{color:#fff;font-size:12px;font-weight:400;line-height:15px;text-decoration:none}.chapter-close{width:40px;margin-left:auto;display:flex;align-items:center;justify-content:flex-end}.chapter-close button{background:transparent;color:#fff;border:0;width:40px;height:40px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:8px}.chapter-close button:hover{background:rgba(255,255,255,.1)}.playlist-action-menu{display:none;justify-content:space-between;gap:10px}.playlist-action-menu button{background:transparent;border:0;width:40px;height:40px;padding:0;display:flex;justify-content:center;align-items:center;border-radius:100px}.playlist-action-menu button:hover{background:rgba(0,0,0,.1)}.start-action{display:flex}.chapter-body{height:calc(100% - 80px);overflow:auto}.chapter-body ul{margin:0;padding:0}.playlist-items a{padding:12px;display:flex;align-items:center;text-decoration:none;gap:12px;width:100%;box-sizing:border-box;color:#fff}.playlist-items a:hover{background:rgba(255,255,255,.06)}.playlist-items.selected a{background:rgba(255,255,255,.14)}.playlist-drag-handle{width:24px;display:flex;justify-content:center;color:#e0e0e0;font-size:12px}.thumbnail-meta{flex:1;min-width:0;padding:0}.thumbnail-meta h4{margin:0 2px 4px 0;font-size:14px;line-height:20px;font-weight:600;overflow:hidden;text-overflow:ellipsis;color:#fff;white-space:normal;max-height:40px;-webkit-line-clamp:2;line-clamp:2;display:-webkit-box;-webkit-box-orient:vertical}.thumbnail-meta .meta-sub{display:flex;gap:8px;align-items:center}.thumbnail-meta .meta-sub .meta-dynamic{color:#bdbdbd;font-size:12px;line-height:18px}.thumbnail-action button{border:0;background:transparent;color:#fff;opacity:0}.playlist-items a:hover .thumbnail-action button{opacity:1}.chapter-body::-webkit-scrollbar{width:10px}.chapter-body::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:8px}.chapter-body::-webkit-scrollbar-track{background:transparent}.video-js .vjs-control-bar .vjs-spacer-control{margin-left:auto}.video-js .vjs-control-bar .settings-item-svg{display:flex}.video-js .vjs-control-bar .settings-item-svg svg{width:auto!important;height:auto!important;transform:inherit!important}.video-js div.vjs-control{width:auto}.vjs-chapters-button button.vjs-button,.vjs-subtitles-button button.vjs-button,.video-js button.vjs-control{width:48px;height:48px;display:flex;align-items:center;justify-content:center}button.vjs-button>.vjs-icon-placeholder:before{line-height:48px;transition:ease-in-out .5s}.video-js .vjs-volume-panel div.vjs-volume-control{height:100%!important;display:flex;align-items:center;justify-content:center;margin:0;width:0;transition:ease-in-out .5s!important;opacity:0}.video-js .vjs-volume-panel div.vjs-volume-control .vjs-volume-bar{margin:0;top:0}.vjs-settings-button svg{transition:ease-in-out .3s}.vjs-settings-button.settings-clicked svg{transform:rotate(30deg)}.video-js span.vjs-control-text{position:absolute!important;bottom:125%;left:50%;transform:translate(-50%);background:rgba(0,0,0,.75);color:#fff;padding:6px 8px!important;border-radius:3px;font-size:13px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .3s ease;z-index:1000;box-shadow:0 0 5px #0000004d;height:auto!important;width:auto!important;overflow:visible!important;clip:initial!important}.video-js button.vjs-button:hover span.vjs-control-text{opacity:1}.video-js .vjs-control:focus:before,.video-js .vjs-control:hover:before,.video-js .vjs-control:focus{text-shadow:none!important}.vjs-volume-panel{gap:5px}.video-js .vjs-play-progress.vjs-slider-bar+.vjs-time-tooltip{padding:0}.vjs-chapter-floating-tooltip{text-align:center;width:160px!important;max-width:100%!important;height:auto}.chapter-image-sprite{width:166px!important;max-width:100%!important;height:96px;margin:0 auto 10px;border-radius:6px;border:3px solid #FFF}.vjs-chapter-floating-tooltip .chapter-title{font-size:24px;margin:0 0 10px;font-weight:700;text-overflow:ellipsis;white-space:nowrap;height:30px;line-height:30px;overflow:hidden}.vjs-chapter-floating-tooltip .position-info,.vjs-chapter-floating-tooltip .chapter-info{font-size:15px;display:inline-block;margin:0 0 2px;line-height:normal;vertical-align:top;line-height:20px}@media (pointer: coarse){.video-js .vjs-volume-panel div.vjs-volume-control{width:auto;opacity:1}}@media (min-width: 1200px){.vjs-related-videos-grid{grid-template-columns:repeat(4,1fr)}}@media (max-width: 1199px){.vjs-related-video-item:nth-child(n+10){display:none}}@media (max-width: 1139px){.vjs-related-video-item:nth-child(n+7){display:none}}@media (min-width: 1024px) and (max-width: 1199px){.vjs-related-videos-grid{grid-template-columns:repeat(3,1fr)}}@media (min-width: 1025px){.video-js .vjs-text-track-display{bottom:6em!important}.video-js .vjs-autoplay-toggle{margin-right:12px!important}.video-js .vjs-picture-in-picture-control{margin-left:12px!important}.video-js .vjs-text-track-cue{font-size:1.2em!important;max-width:90%!important}.video-js .vjs-text-track-cue>div{padding:8px 12px!important;font-size:1em!important}.video-js.vjs-fullscreen .vjs-text-track-display{bottom:8em!important}}@media (min-width: 768px) and (max-width: 1024px){.video-js .vjs-text-track-display{bottom:7em!important}.video-js .vjs-text-track-cue{font-size:1.15em!important;max-width:88%!important}.video-js .vjs-text-track-cue>div{padding:7px 11px!important;font-size:.95em!important}.video-js.vjs-fullscreen .vjs-text-track-display{bottom:9em!important}.vjs-related-videos-grid{grid-template-columns:repeat(3,1fr)}.video-js .vjs-control:hover:after,.video-js .vjs-control:focus:after,.video-js .vjs-control:active:after{display:none!important;opacity:0!important;visibility:hidden!important}.video-js .vjs-play-control:hover:after,.video-js .vjs-mute-control:hover:after,.video-js .vjs-volume-panel:hover:after,.video-js .vjs-fullscreen-control:hover:after,.video-js .vjs-picture-in-picture-control:hover:after,.video-js .vjs-settings-control:hover:after,.video-js .vjs-chapters-control:hover:after,.video-js .vjs-autoplay-toggle:hover:after,.video-js .vjs-next-video-control:hover:after,.video-js .vjs-remaining-time:hover:after{display:none!important;opacity:0!important;visibility:hidden!important}}@media (max-width:1024px){body div.custom-settings-overlay{height:calc(100% - 40px);max-height:300px}}@media (max-width:767px){.vjs-related-vdeo-item:nth-child(n+5){display:none}.vjs-chapters-button button.vjs-button,.vjs-subtitles-button button.vjs-button,.video-js button.vjs-control{width:32px;height:32px}button.vjs-button>.vjs-icon-placeholder:before{line-height:32px}.vjs-next-video-control svg{width:32px;height:32px}.video-js div.vjs-control{height:32px}.vjs-button>.vjs-icon-placeholder:before{font-size:1.4em!important}.video-js .vjs-subs-active button.vjs-subtitles-button:before{width:20px}.video-js button.vjs-subtitles-button:before{bottom:2px}.video-js div.vjs-control-bar{padding:0 2px}.video-js .vjs-autoplay-toggle{margin-right:6px!important}.video-js .vjs-picture-in-picture-control{margin-left:6px!important}.video-js .vjs-text-track-display{bottom:8em!important}.video-js .vjs-text-track-cue{font-size:1.1em!important;max-width:95%!important}.video-js .vjs-text-track-cue>div{padding:6px 10px!important;font-size:.9em!important;background:rgba(0,0,0,.8)!important}.video-js.vjs-fullscreen .vjs-text-track-display{bottom:10em!important}.video-js.vjs-fullscreen .vjs-text-track-cue{font-size:1.3em!important;max-width:90%!important}.video-js.vjs-fullscreen .vjs-text-track-cue>div{padding:8px 12px!important;font-size:.95em!important}.video-js .vjs-subtitles-button button.vjs-button{min-width:32px!important;min-height:32px!important;touch-action:manipulation!important;-webkit-tap-highlight-color:transparent!important;-webkit-touch-callout:none!important;-webkit-user-select:none!important;user-select:none!important}.chapter-body{height:calc(100% - 70px)}.subtitles-submenu,.quality-submenu,.speed-submenu{height:100%;overflow:auto}body div.custom-settings-overlay{bottom:40px}div.chapter-close button{width:30px;height:30px}.vjs-related-videos-grid{grid-template-columns:repeat(2,1fr)}.video-js .vjs-control:hover:after,.video-js .vjs-control:focus:after,.video-js .vjs-control:active:after{display:none!important;opacity:0!important;visibility:hidden!important}.video-js .vjs-play-control:hover:after,.video-js .vjs-mute-control:hover:after,.video-js .vjs-volume-panel:hover:after,.video-js .vjs-fullscreen-control:hover:after,.video-js .vjs-picture-in-picture-control:hover:after,.video-js .vjs-settings-control:hover:after,.video-js .vjs-chapters-control:hover:after,.video-js .vjs-autoplay-toggle:hover:after,.video-js .vjs-next-video-control:hover:after,.video-js .vjs-remaining-time:hover:after{display:none!important;opacity:0!important;visibility:hidden!important}.video-js .vjs-autoplay-toggle.touch-active:after{opacity:1;visibility:visible}.video-js .vjs-autoplay-toggle:after{font-size:11px;padding:5px 8px;margin-bottom:6px}.video-container{padding:0 15px}.vjs-related-video-thumbnail{height:100%}.vjs-chapter-floating-tooltip{font-size:11px!important}.custom-chapters-overlay .video-chapter{right:10px;left:auto;width:100%;max-width:280px;height:calc(100% - 40px);max-height:calc(100% - 40px);overflow:hidden;bottom:40px}.video-js .vjs-settings-button{min-width:44px!important;height:44px!important;padding:0!important;margin:0 2px!important;display:flex!important;align-items:center!important;justify-content:center!important;touch-action:manipulation!important;-webkit-tap-highlight-color:transparent!important;cursor:pointer!important;z-index:1000!important;pointer-events:auto!important;position:relative!important}.video-js .vjs-settings-button .vjs-icon-cog{font-size:20px!important;width:20px!important;height:20px!important;display:flex!important;align-items:center!important;justify-content:center!important}.video-js .vjs-control-bar .vjs-button{touch-action:manipulation!important;-webkit-tap-highlight-color:transparent!important;-webkit-touch-callout:none!important;-webkit-user-select:none!important;user-select:none!important}.custom-settings-overlay .settings-item{padding:6px 16px;font-size:15px;touch-action:manipulation;line-height:18px}.custom-settings-overlay .settings-header{padding:10px 16px;font-size:18px;line-height:20px}.chapter-head{padding:10px 15px}.chapter-title h3 a{font-size:15px!important;line-height:20px!important;height:20px!important}.chapter-title p{font-size:11px!important;line-height:14px!important}.playlist-items a{padding:10px 16px!important;min-height:58px!important}.thumbnail-meta h4{font-size:13px!important;line-height:18px!important}.thumbnail-meta .meta-sub .meta-dynamic{font-size:11px!important;line-height:16px!important}}@media (max-width: 574px){.vjs-related-video-item:nth-child(n+3){display:none}}@media (max-width:480px){.video-container{padding:0 10px}.video-js .vjs-control:hover:after,.video-js .vjs-control:focus:after,.video-js .vjs-control:active:after{display:none!important;opacity:0!important;visibility:hidden!important}.video-js .vjs-play-control:hover:after,.video-js .vjs-mute-control:hover:after,.video-js .vjs-volume-panel:hover:after,.video-js .vjs-fullscreen-control:hover:after,.video-js .vjs-picture-in-picture-control:hover:after,.video-js .vjs-settings-control:hover:after,.video-js .vjs-chapters-control:hover:after,.video-js .vjs-autoplay-toggle:hover:after,.video-js .vjs-next-video-control:hover:after,.video-js .vjs-remaining-time:hover:after{display:none!important;opacity:0!important;visibility:hidden!important}.vjs-related-video-thumbnail{height:100%}.video-js .vjs-settings-button .vjs-icon-cog{font-size:22px!important;width:22px!important;height:22px!important}}@media (max-width: 439px){.vjs-related-video-item:nth-child(n+2){display:none}.vjs-related-videos-grid{grid-template-columns:repeat(1,1fr)}}@media (max-width:399px){.vjs-chapters-button button.vjs-button,.vjs-subtitles-button button.vjs-button,.video-js button.vjs-control{width:28px;height:28px}button.vjs-button>.vjs-icon-placeholder:before{line-height:28px}.vjs-next-video-control svg{width:28px;height:28px}.video-js div.vjs-control{height:28px}.video-js .vjs-autoplay-toggle{margin-right:4px!important}.video-js .vjs-picture-in-picture-control{margin-left:4px!important}.video-js .vjs-text-track-display{bottom:7em!important}.video-js .vjs-text-track-cue{font-size:1em!important;max-width:98%!important}.video-js .vjs-text-track-cue>div{padding:4px 8px!important;font-size:.85em!important;background:rgba(0,0,0,.85)!important}.video-js.vjs-fullscreen .vjs-text-track-display{bottom:9em!important}.video-js.vjs-fullscreen .vjs-text-track-cue{font-size:1.2em!important;max-width:95%!important}.video-js.vjs-fullscreen .vjs-text-track-cue>div{padding:6px 10px!important;font-size:.9em!important}.vjs-button>.vjs-icon-placeholder:before{font-size:1.4em!important}}.vjs-svg-icon{display:inline-block;background-repeat:no-repeat;background-position:center;fill:currentColor;height:1.8em;width:1.8em}.vjs-svg-icon:before{content:none!important}.vjs-svg-icon:hover,.vjs-control:focus .vjs-svg-icon{filter:drop-shadow(0 0 .25em #fff)}.vjs-modal-dialog .vjs-modal-dialog-content,.video-js .vjs-modal-dialog,.vjs-button>.vjs-icon-placeholder:before,.video-js .vjs-big-play-button .vjs-icon-placeholder:before{position:absolute;top:0;left:0;width:100%;height:100%}.vjs-button>.vjs-icon-placeholder:before,.video-js .vjs-big-play-button .vjs-icon-placeholder:before{text-align:center}@font-face{font-family:VideoJS;src:url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABTsAAsAAAAAIpAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAAPgAAAFZRiV32Y21hcAAAAYQAAAEJAAAD5p42+VxnbHlmAAACkAAADtIAABckI4l972hlYWQAABFkAAAAKwAAADYsvIjpaGhlYQAAEZAAAAAdAAAAJA+RCL1obXR4AAARsAAAABcAAAC8Q2YAAGxvY2EAABHIAAAAYAAAAGB7CIGGbWF4cAAAEigAAAAfAAAAIAFAAI9uYW1lAAASSAAAASUAAAIK1cf1oHBvc3QAABNwAAABfAAAAnXdFqh1eJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGR7yDiBgZWBgaWQ5RkDA8MvCM0cwxDOeI6BgYmBlZkBKwhIc01hcPjI+FGPHcRdyA4RZgQRADaGCyYAAHic7dPXbcMwAEXRK1vuvffem749XAbKV3bjBA6fXsaIgMMLEWoQJaAEFKNnlELyQ4K27zib5PNF6vl8yld+TKr5kH0+cUw0xv00Hwvx2DResUyFKrV4XoMmLdp06NKjz4AhI8ZMmDJjzoIlK9Zs2LJjz4EjJ85cuHLjziPe/0UWL17mf2tqKLz/9jK9f8tXpGCoRdPKhtS0RqFkWvVQNtSKoVYNtWaoddPXEBqG2jQ9XWgZattQO4baNdSeofYNdWCoQ0MdGerYUCeGOjXUmaHODXVhqEtDXRnq2lA3hro11J2h7g31YKhHQz0Z6tlQL4Z6NdSbod4N9WGoT9MfHF6GmhnZLxyDcRMAAAB4nJ1YC1hU17U+a5/HMA4iA3NmVBDmoQwP5TFnHlFeA4gYiUFRQINoSCBAyK3G2yi+0aipYtFcHYo2xsb4NiY3+VrNxSaX5uvt495ozNdoYoxmem2/L8HGpLc+InB279pnhlGr5mvL4eyz99nrrL32eu1/DQcc/okdYgdHOA6MQKp4r9gx0EcMHMezOalVasW5BM7NcXoSb9fFgE6KtSSBxWz1FYDPG+vMBGcKb9cebu2VS5s2aaTkCvRSf6C7Y+Ppibm5E09v7IDs2/3uZQtbD0zIyppwoHXh/93ukmyYgdePNRp65p5v+3v/9otQl2O7wP34cT88p8Md2YxpYLQZoRcy6FlSBRnwnGAe6BPMSCZo+7NJVqS0cE4uHendzhSnbPH6TDqL1+Nme5LZXkCHnGyoH0kne30WH+gswhm3q+pt/mTas9NLS64GnjmSlTPw0wVQT/ewRaBgxtydy3cuUB9/6SW+vb5yRvr+t0eOfPKJZ/9t3+4tL7xj32Xd3thCxi+ge6ifdsAN+l5+wi5HQ/cCoeull1AszS7CUfEcJzK7sKWJAdJhCd0sPM4+EY7QDm5ov08hXRQXE5bf6PV5Q5+IjW7X7Nku92Ask4l2hCRRD6TPqISiCJeQna3SCFwrhrNzXHzo4yFevBwxpzxk8WCIIfkvVEKVy32SbT8n68gzgaslpaiO2zIGIyuSb7RNf9HSuN26y/7OC1tgEmpiyA6aD4qcgTOiLThwGG0eB694FI8NHLLN6OBlRVaMxNAFS4JdXUG6mW8PwpKuYLCLXKGbu8iwYNdgO06Sn3Th+/vyZAxs8Ro30DjHe9gy8Fywi24OMm7Qyzh3MTZVOMYhLBnoC+J79lpTUyQmorjhnMwlcQ5uPEYGpDjsOkkH49BjQLQBqs3jFtFdJNlksYmoQFDArLh8Xh+Qd6Ghcsb6FUuehDi+U/lqD71K/qiegeV1imcwjl7ExwiSrf4BZyCujV6cVcFo6VX+G9IcPyFjJnUufbU/jzrL1X99as36reXl8K32nFaOr+E8jWJEcJ55DpMVfSMe95/AJaOsGBH2GJCNpiRQbK4C8BjdmQA22QY2j03Em13i2YHqtNLU1NI04Yj2HJgA6fQc6VPNpA/D+Ryks554NnVy2mB72uRUfPLsqR4N0LOBQKArwJYO+5W2fgZX8oC1HR6HjNaQTVIG2FPwnTcXXGZZfNB7TE6pTKZUwaw91XWLAoFFGcnB5PHjsckgBjbWutrL+0h5Y1xw3DRGDumsnXb3MJwXrJIN5U7m0rgJ3yG5w4he5ckFG4pmNEkOm0/xOO4r4yL87wqtQM+hiJIVp+6iG2wPBKD35ElGkDx+UfC2v1mFG1o+M3AjNFty8biKMXwzyxnZLds8wYD2BxmCPHAldPOeLsy/0BugftYhVYFAhO8SqQ0j3oK7dHJZnI/jxmUS4onlxskSF8thmvNZjIrRZwEPxr0lBuLRuz3oy/FOHCsxwOPYh2M+e9u3J5pgPYz9gp6G7C9m0A11F9ddqKMfV+4sbq45/YspOysXvT+3pdFdYNg2fHbW8Dz301MqDVuGrz0Fuh0YMW8mddrpqzST7rV9BcvqPoNvadRndWp0p8HvbiqrFj5yFQ/vNFSXDpxpLEFWp+DcrF3FT1afWshFcmCfeAMjEvO65i0Y6XijQfSRPWx3TV/Df7Km3E1l+kLt56s/rwVzuRusNMhudznkwdLaS+QNdeal2jDPP4l9qHc98vTYZOSkxzD+njBWVWjFPKgipx6DkWvXQiW8OYcewVHE5yukinDMcfGgc0opDltYKDxIGBedkzc6jSfE7tlvESCDFUw0Hx0opS+U0lHCxNottbNWSxX9zZVvEhKWUSyBpaXwBc2a98M6UqPeXAs/GDon8Ax7hsthO8cM5HU7Ad0UvRR9lHmtyQKZ4MAe814X5h9MSUkQmhf96eVJ6p90OjIiqSIjvykvr2l5U55O/fPQKD+jIomYpNyGJQ25uQ2kIikRfAmuBHCPsWqkSDEqgZ5KDI2sifS/R43MbZg0idFHbCPNxXxZws1ACVE6hAhOdJwRkJLFBLPZpRGYJ50pko6XzMkgmSx40ljik6AQcKhFnLcQE6rF7PXFe1Ocoj0T3AXgSgJTDIhHRfHlYZKuSzc6uievOJGXY+i5GJkkTp7UM3y0LqATDbtFcbdBxO7o4T25JYlEjoH0uynUh8rapkxp62QN70svSF+hT4gGPlovlmcm/ComLi7mV4kTykV9NFWjE/QrwgQ4uIcAP0rQF4VZYRP2o3PhHHzfPMJj9Ir+uzKUlrH49ntT18AVvj1sc3YGjUT/Mt2Dxawa8ArcA7bCQIpvfwAYu22vEG/No/5RvPdA7g+AelLrPwzy+LtkLPhnpIxH14m4EYq8eeMHbPEPNm6G7Nv9B4jcFPZ8bJj0SEjP3MPgQdKTqqEoy2v6G32P/Y6dxOv04AxnoAeq+GILvUavtYCBXm+BaIhuodcfrN5B/V2EYMCPh+SxavjGyPwV0x4CJgUPGT0mQaODGBACIJZGsMXwAD0LGXx7l3CdAcKMIKI+f5CepWeD0BvyU/GcdBxPF8SwejC6LGZmAURFdsSWKR5HyHld2kbdIZO1Ixx+bnnzU7n5+blPNV9jnUDWhP2tC68tbN3PVIldsQPxSAcSpjOav7Q05uXn5zW2LLvDXn9B6syscPy9iDLEMmSrJz6nYuWMipukjM0AH8JkGS+XFyMRkzSCH7KD/hwm172SAyZYumHlefr5AddrtA0O0TnwaVZxcRY9Bfukn9Gf05N1r9DV9MoBsJ1f+ZrqUvtPHizJAntWybv7hmqLt6QLuK6ZS9Fqi1jO5rDoWPZXXII5Tgajg53cIXCjDCGIcYrRIY2n6+mXOa/W0bdhau3ryiEYe2FV/5oeaIYK/5w5frCyll6/cYO8DiNhw6t1MBWmznt91QX62UF1N7l0eHBZTRGpKaqpKVIPF9UcIzmReud9TSY75+K899GHbBu6wjoR7RKKZVYiYxSPf5/2wJT5e3NAhmUbVn5KLx1Ujg0+BGvpAIh0DezInTkzF37KVocxrKU3r1+XLtAe2lO3l66kfQfB/unKY+q8N375Ru8bc4pJXfEcESU95q+p8ZNZRTWH1d9FzvUdYXk5rLkcdkEisoKKVHQW/b3GEx6tPaYcoJfOr9wAbSBnv1IHpep0OExr4LPMkpJM+j7sly7UHkOzXjoAZljHCGiyegtNlwljM0v+c19ET9Pvst09a2Mtgcf5/ZSzYO5h1156+eyydfAsxGa9XAuF6vzjh6CssLq6ECysperXX0sX5h5ZdpZe3guxsGIPEtHk/aqXX1hVqP5HYVVVISkrrNqvXorIc+5Ou91Hnr/LcD2afi6eX7UBloOcs7cOpqgGaNfs1g7bNbs9z6wASaylN69d0/TFTIz6Ws8+oGV3mE2612wRTHKcVUbhjKadebloMc+dyXgMVtVK6BwMB/+mVW09igdRBWaRtNQX59d/VD//xdQ0TCiYNj1KT9sq6Wdu5WTbqk3qDXyDaLa1fv621LS01G3z61sD6lH8lAxDLicV921s6Bf92JOYvzNYCL1khbqBXEFUzC521N5NyzNaQIWhjyFyDoBIVrAjmv2UEaLlI+c6zw1jmVIPLLLZZUTj6GxGHW+mq1tgHXR2D85p4Q934+jLbtjVLcyCdS10NVzpHqxp4Q/hK7WopY/NRGx9HGsPGdFjOjcpjBnGYMVqY/4eqT5khWEHWUup2A/pTw7pdWgsWft7ETUERL96nRg0HNFPmCYba6pylECaExX89A9WLUOVB4oKLu/o1oqSYHCgLzBUlAz8hNFDRpeSU1XT+LRmDUgPaKbYdHDn9suF/tu13nHJij0N97LfS0QmqONuyONk7zvUI6Qa0pF9f2+oABL92AT6e0U//z9YqAiWtJLU1JK0gS+1aacwamiNqK067u9ZQ8f1d4qLodMzz3uL89Z68V/Hnr++hXWUuHgw8dfi972PeTyPefu3aNNucemQ74qFuIaJnVkOu4Q+yjuwmmC1FqZpl1i4uzoPxjkpPf3Xv545tl26Rr+dOvUd+omqJzch9dOeU7f10Y64nMcKK137DccIZq2WdXtdZjbEoLSzHwiMtrjYLDxpHQW8gjMX6XFYAE2zSWVD04EGYSs9MbO6sEo20BMEAB4mpvSypsKjZ4Stgzb+c3A9/MQT2+vrBy+qvyFxLUtLlSRF/Ri2wjfZ2dus2Q8lXx4608/jnqK5OOap6NY2PSjYYnECCjiEeLJll/pbmqfeIK+ps3+MxrlEhqmTPipVP7kqlF4VhpEb6r+Q7YOJg38kJ9SHBf3NBl6+9YchfbUjb5ahLSzUM3kPHmwFAsZ5rpai0S7E5xWzZ1j+fW7zsUWP2g5NXTw52ySCTrgG0+lbw60l2Y/CB185CoA8NK+tbRKxfjy6pm5hzQRRR+cMqv1Jbiw6STivtEvt3DRcy0QEh92JlUGo2PG4tSKHl00YD6xc8CK+YPYyy3io2lN8BcSjKRzrIV6ypOAobqxViJPaT9M9Hy5szY33mp7OX/Zu89L/7Ww5vqY2Y8b0pKgoiUhG5cPDPzq8qTV/WkzUOIvXVVA96kmjcBrr3HrYC/Wn+fYP6Z7T1rqy3zknbvqma/FvVk96fNXGkuaXrdHW5JGSxZT/2I/O73v+yNWafMdzc5NdxYurHs6h86e01sLKLz9EBrg+x36rxAaED7hRnAMx7Vzu+9wabh3zG8XLQjx0ablUJzmxdErxYT3kzQSd0SSafVqF5PXgpp0OyYJ1EyNHpGUZmvK575ySzd85JSqF7IBzSAbMM04+MbE58xF3/njXOGecSaermlw2y9PsSQdytLJVr8t+wg+rR8cZYoeNxVIzNdk3Bngi8U5LAlgTFoQnzJCa5EsCgYhCaGL+qPj7TdhG31p9tej3R04N//PXxNwJvyUqwaJqRPJY98TJ5TPndmflRAkAhBfe46sfKW5wizSge08Xb7Ca/GUVs55trngkKkrUS2WPzKttaaqq+idmahugkY+W6fN0I6i3gPt/x88U4wAAeJxjYGRgYADiGU9YXsXz23xl4GZnAIFH7fO+IdMc/WBxDgYmEAUASbMKwAB4nGNgZGBgZwABjj4Ghv//OfoZGBlQgT4ARicDZAAAAHicY2BgYGAfxJijD8Fmu4EqBwCSpgKpAAAAAAAADgBoAH4AzADgAQIBQgFsAZgB7gIuAooC0AL8A2IDjAOoA+AEMASwBNoFCAVaBcAGCAYuBnAGrAb2B04HigfSCCoIcAiGCJwIyAkkCVYJiAmsCfIKIApWCsQLknicY2BkYGDQZ2hmYGcAASYg5gJCBob/YD4DABqrAdAAeJxdkE1qg0AYhl8Tk9AIoVDaVSmzahcF87PMARLIMoFAl0ZHY1BHdBJIT9AT9AQ9RQ9Qeqy+yteNMzDzfM+88w0K4BY/cNAMB6N2bUaPPBLukybCLvleeAAPj8JD+hfhMV7hC3u4wxs7OO4NzQSZcI/8Ltwnfwi75E/hAR7wJTyk/xYeY49fYQ/PztM+jbTZ7LY6OWdBJdX/pqs6NYWa+zMxa13oKrA6Uoerqi/JwtpYxZXJ1coUVmeZUWVlTjq0/tHacjmdxuL90OR8O0UEDYMNdtiSEpz5XQGqzlm30kzUdAYFFOb8R7NOZk0q2lwAyz1i7oAr1xoXvrOgtYhZx8wY5KRV269JZ5yGpmzPTjQhvY9je6vEElPOuJP3mWKnP5M3V+YAAAB4nG2ReVPbMBDF/ULi2EkDBFqO3gdHLxUzDB9IkdexBllydRD49ihO3Ckz7B/a31utZnafkkGyiXnyclxhgB0MMUKKMTLkmGCKV5hhF3vYxxwHOMRrvMERjnGCU7zFO7zHB3zEJ3zGF3zFN5zhHBe4xHf8wE/8wm8w/MEVimTYKv44XR9MSCsUjVoeHE3vjQoNsSZ4mmxZmVWPjSz7jlou6/0qKOWEJdKMtCe793/hQfqxa6XWZHMXFl56RS4TvPXSaDeoy0zUUZB109KstDK8lHo5q6Qi1hcOnqkImubPS6aqRq7mlnaEWabub4iYblba3SRmgldS0+FWdhNtt04F14JUaqkl7tcpOpJtErvNt3Bd9HRT5JWxK25Ldjvp6br4hzfFiIdSmlzTg2fSUzNrLd1LE1ynxq4OVaVoKLjzJ60UPtj1RKzHzsbjly6inVnFBS2MucviPncU7Rr7lfTxRepDs1A2j3ZHRc7PuzFYSfE3ZOd4kjwBy227hA==) format("woff");font-weight:400;font-style:normal}.vjs-icon-play,.video-js .vjs-play-control .vjs-icon-placeholder,.video-js .vjs-big-play-button .vjs-icon-placeholder:before{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-play:before,.video-js .vjs-play-control .vjs-icon-placeholder:before,.video-js .vjs-big-play-button .vjs-icon-placeholder:before{content:""}.vjs-icon-play-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-play-circle:before{content:""}.vjs-icon-pause,.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-pause:before,.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder:before{content:""}.vjs-icon-volume-mute,.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-mute:before,.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder:before{content:""}.vjs-icon-volume-low,.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-low:before,.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder:before{content:""}.vjs-icon-volume-mid,.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-mid:before,.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder:before{content:""}.vjs-icon-volume-high,.video-js .vjs-mute-control .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-high:before,.video-js .vjs-mute-control .vjs-icon-placeholder:before{content:""}.vjs-icon-fullscreen-enter,.video-js .vjs-fullscreen-control .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-fullscreen-enter:before,.video-js .vjs-fullscreen-control .vjs-icon-placeholder:before{content:""}.vjs-icon-fullscreen-exit,.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-fullscreen-exit:before,.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder:before{content:""}.vjs-icon-spinner{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-spinner:before{content:""}.vjs-icon-subtitles,.video-js .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js .vjs-subtitles-button .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-subtitles:before,.video-js .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js .vjs-subtitles-button .vjs-icon-placeholder:before{content:""}.vjs-icon-captions,.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js .vjs-captions-button .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-captions:before,.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js .vjs-captions-button .vjs-icon-placeholder:before{content:""}.vjs-icon-hd{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-hd:before{content:""}.vjs-icon-chapters,.video-js .vjs-chapters-button .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-chapters:before,.video-js .vjs-chapters-button .vjs-icon-placeholder:before{content:""}.vjs-icon-downloading{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-downloading:before{content:""}.vjs-icon-file-download{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-file-download:before{content:""}.vjs-icon-file-download-done{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-file-download-done:before{content:""}.vjs-icon-file-download-off{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-file-download-off:before{content:""}.vjs-icon-share{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-share:before{content:""}.vjs-icon-cog{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-cog:before{content:""}.vjs-icon-square{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-square:before{content:""}.vjs-icon-circle,.vjs-seek-to-live-control .vjs-icon-placeholder,.video-js .vjs-volume-level,.video-js .vjs-play-progress{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle:before,.vjs-seek-to-live-control .vjs-icon-placeholder:before,.video-js .vjs-volume-level:before,.video-js .vjs-play-progress:before{content:""}.vjs-icon-circle-outline{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-outline:before{content:""}.vjs-icon-circle-inner-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-inner-circle:before{content:""}.vjs-icon-cancel,.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-cancel:before,.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder:before{content:""}.vjs-icon-repeat{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-repeat:before{content:""}.vjs-icon-replay,.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-replay:before,.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder:before{content:""}.vjs-icon-replay-5,.video-js .vjs-skip-backward-5 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-replay-5:before,.video-js .vjs-skip-backward-5 .vjs-icon-placeholder:before{content:""}.vjs-icon-replay-10,.video-js .vjs-skip-backward-10 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-replay-10:before,.video-js .vjs-skip-backward-10 .vjs-icon-placeholder:before{content:""}.vjs-icon-replay-30,.video-js .vjs-skip-backward-30 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-replay-30:before,.video-js .vjs-skip-backward-30 .vjs-icon-placeholder:before{content:""}.vjs-icon-forward-5,.video-js .vjs-skip-forward-5 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-forward-5:before,.video-js .vjs-skip-forward-5 .vjs-icon-placeholder:before{content:""}.vjs-icon-forward-10,.video-js .vjs-skip-forward-10 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-forward-10:before,.video-js .vjs-skip-forward-10 .vjs-icon-placeholder:before{content:""}.vjs-icon-forward-30,.video-js .vjs-skip-forward-30 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-forward-30:before,.video-js .vjs-skip-forward-30 .vjs-icon-placeholder:before{content:""}.vjs-icon-audio,.video-js .vjs-audio-button .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-audio:before,.video-js .vjs-audio-button .vjs-icon-placeholder:before{content:""}.vjs-icon-next-item{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-next-item:before{content:""}.vjs-icon-previous-item{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-previous-item:before{content:""}.vjs-icon-shuffle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-shuffle:before{content:""}.vjs-icon-cast{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-cast:before{content:""}.vjs-icon-picture-in-picture-enter,.video-js .vjs-picture-in-picture-control .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-picture-in-picture-enter:before,.video-js .vjs-picture-in-picture-control .vjs-icon-placeholder:before{content:""}.vjs-icon-picture-in-picture-exit,.video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-picture-in-picture-exit:before,.video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder:before{content:""}.vjs-icon-facebook{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-facebook:before{content:""}.vjs-icon-linkedin{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-linkedin:before{content:""}.vjs-icon-twitter{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-twitter:before{content:""}.vjs-icon-tumblr{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-tumblr:before{content:""}.vjs-icon-pinterest{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-pinterest:before{content:""}.vjs-icon-audio-description,.video-js .vjs-descriptions-button .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-audio-description:before,.video-js .vjs-descriptions-button .vjs-icon-placeholder:before{content:""}.video-js{display:inline-block;vertical-align:top;box-sizing:border-box;color:#fff;background-color:#000;position:relative;padding:0;font-size:10px;line-height:1;font-weight:400;font-style:normal;font-family:Arial,Helvetica,sans-serif;word-break:initial}.video-js:-moz-full-screen{position:absolute}.video-js:-webkit-full-screen{width:100%!important;height:100%!important}.video-js[tabindex="-1"]{outline:none}.video-js *,.video-js *:before,.video-js *:after{box-sizing:inherit}.video-js ul{font-family:inherit;font-size:inherit;line-height:inherit;list-style-position:outside;margin:0}.video-js.vjs-fluid,.video-js.vjs-16-9,.video-js.vjs-4-3,.video-js.vjs-9-16,.video-js.vjs-1-1{width:100%;max-width:100%}.video-js.vjs-fluid:not(.vjs-audio-only-mode),.video-js.vjs-16-9:not(.vjs-audio-only-mode),.video-js.vjs-4-3:not(.vjs-audio-only-mode),.video-js.vjs-9-16:not(.vjs-audio-only-mode),.video-js.vjs-1-1:not(.vjs-audio-only-mode){height:0}.video-js.vjs-16-9:not(.vjs-audio-only-mode){padding-top:56.25%}.video-js.vjs-4-3:not(.vjs-audio-only-mode){padding-top:75%}.video-js.vjs-9-16:not(.vjs-audio-only-mode){padding-top:177.7777777778%}.video-js.vjs-1-1:not(.vjs-audio-only-mode){padding-top:100%}.video-js.vjs-fill:not(.vjs-audio-only-mode){width:100%;height:100%}.video-js .vjs-tech{position:absolute;top:0;left:0;width:100%;height:100%}.video-js.vjs-audio-only-mode .vjs-tech{display:none}body.vjs-full-window,body.vjs-pip-window{padding:0;margin:0;height:100%}.vjs-full-window .video-js.vjs-fullscreen,body.vjs-pip-window .video-js{position:fixed;overflow:hidden;z-index:1000;left:0;top:0;bottom:0;right:0}.video-js.vjs-fullscreen:not(.vjs-ios-native-fs),body.vjs-pip-window .video-js{width:100%!important;height:100%!important;padding-top:0!important;display:block}.video-js.vjs-fullscreen.vjs-user-inactive{cursor:none}.vjs-pip-container .vjs-pip-text{position:absolute;bottom:10%;font-size:2em;background-color:#000000b3;padding:.5em;text-align:center;width:100%}.vjs-layout-tiny.vjs-pip-container .vjs-pip-text,.vjs-layout-x-small.vjs-pip-container .vjs-pip-text,.vjs-layout-small.vjs-pip-container .vjs-pip-text{bottom:0;font-size:1.4em}.vjs-hidden{display:none!important}.vjs-disabled{opacity:.5;cursor:default}.video-js .vjs-offscreen{height:1px;left:-9999px;position:absolute;top:0;width:1px}.vjs-lock-showing{display:block!important;opacity:1!important;visibility:visible!important}.vjs-no-js{padding:20px;color:#fff;background-color:#000;font-size:18px;font-family:Arial,Helvetica,sans-serif;text-align:center;width:300px;height:150px;margin:0 auto}.vjs-no-js a,.vjs-no-js a:visited{color:#66a8cc}.video-js .vjs-big-play-button{font-size:3em;line-height:1.5em;height:1.63332em;width:3em;display:block;position:absolute;top:50%;left:50%;padding:0;margin-top:-.81666em;margin-left:-1.5em;cursor:pointer;opacity:1;border:.06666em solid #fff;background-color:#2b333f;background-color:#2b333fb3;border-radius:.3em;transition:all .4s}.vjs-big-play-button .vjs-svg-icon{width:1em;height:1em;position:absolute;top:50%;left:50%;line-height:1;transform:translate(-50%,-50%)}.video-js:hover .vjs-big-play-button,.video-js .vjs-big-play-button:focus{border-color:#fff;background-color:#73859f;background-color:#73859f80;transition:all 0s}.vjs-controls-disabled .vjs-big-play-button,.vjs-has-started .vjs-big-play-button,.vjs-using-native-controls .vjs-big-play-button,.vjs-error .vjs-big-play-button{display:none}.vjs-has-started.vjs-paused.vjs-show-big-play-button-on-pause:not(.vjs-seeking,.vjs-scrubbing,.vjs-error) .vjs-big-play-button{display:block}.video-js button{background:none;border:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;text-transform:none;text-decoration:none;transition:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.video-js.vjs-spatial-navigation-enabled .vjs-button:focus{outline:.0625em solid white;box-shadow:none}.vjs-control .vjs-button{width:100%;height:100%}.video-js .vjs-control.vjs-close-button{cursor:pointer;height:3em;position:absolute;right:0;top:.5em;z-index:2}.video-js .vjs-modal-dialog{background:rgba(0,0,0,.8);background:linear-gradient(180deg,rgba(0,0,0,.8),rgba(255,255,255,0));overflow:auto}.video-js .vjs-modal-dialog>*{box-sizing:border-box}.vjs-modal-dialog .vjs-modal-dialog-content{font-size:1.2em;line-height:1.5;padding:20px 24px;z-index:1}.vjs-menu-button{cursor:pointer}.vjs-menu-button.vjs-disabled{cursor:default}.vjs-workinghover .vjs-menu-button.vjs-disabled:hover .vjs-menu{display:none}.vjs-menu .vjs-menu-content{display:block;padding:0;margin:0;font-family:Arial,Helvetica,sans-serif;overflow:auto}.vjs-menu .vjs-menu-content>*{box-sizing:border-box}.vjs-scrubbing .vjs-control.vjs-menu-button:hover .vjs-menu{display:none}.vjs-menu li{display:flex;justify-content:center;list-style:none;margin:0;padding:.2em 0;line-height:1.4em;font-size:1.2em;text-align:center;text-transform:lowercase}.vjs-menu li.vjs-menu-item:focus,.vjs-menu li.vjs-menu-item:hover,.js-focus-visible .vjs-menu li.vjs-menu-item:hover{background-color:#73859f;background-color:#73859f80}.vjs-menu li.vjs-selected,.vjs-menu li.vjs-selected:focus,.vjs-menu li.vjs-selected:hover,.js-focus-visible .vjs-menu li.vjs-selected:hover{background-color:#fff;color:#2b333f}.vjs-menu li.vjs-selected .vjs-svg-icon,.vjs-menu li.vjs-selected:focus .vjs-svg-icon,.vjs-menu li.vjs-selected:hover .vjs-svg-icon,.js-focus-visible .vjs-menu li.vjs-selected:hover .vjs-svg-icon{fill:#000}.video-js .vjs-menu *:not(.vjs-selected):focus:not(:focus-visible),.js-focus-visible .vjs-menu *:not(.vjs-selected):focus:not(.focus-visible){background:none}.vjs-menu li.vjs-menu-title{text-align:center;text-transform:uppercase;font-size:1em;line-height:2em;padding:0;margin:0 0 .3em;font-weight:700;cursor:default}.vjs-menu-button-popup .vjs-menu{display:none;position:absolute;bottom:0;width:10em;left:-3em;height:0em;margin-bottom:1.5em;border-top-color:#2b333fb3}.vjs-pip-window .vjs-menu-button-popup .vjs-menu{left:unset;right:1em}.vjs-menu-button-popup .vjs-menu .vjs-menu-content{background-color:#2b333f;background-color:#2b333fb3;position:absolute;width:100%;bottom:1.5em;max-height:15em}.vjs-layout-tiny .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-x-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:5em}.vjs-layout-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:10em}.vjs-layout-medium .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:14em}.vjs-layout-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-x-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-huge .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:25em}.vjs-workinghover .vjs-menu-button-popup.vjs-hover .vjs-menu,.vjs-menu-button-popup .vjs-menu.vjs-lock-showing{display:block}.video-js .vjs-menu-button-inline{transition:all .4s;overflow:hidden}.video-js .vjs-menu-button-inline:before{width:2.222222222em}.video-js .vjs-menu-button-inline:hover,.video-js .vjs-menu-button-inline:focus,.video-js .vjs-menu-button-inline.vjs-slider-active{width:12em}.vjs-menu-button-inline .vjs-menu{opacity:0;height:100%;width:auto;position:absolute;left:4em;top:0;padding:0;margin:0;transition:all .4s}.vjs-menu-button-inline:hover .vjs-menu,.vjs-menu-button-inline:focus .vjs-menu,.vjs-menu-button-inline.vjs-slider-active .vjs-menu{display:block;opacity:1}.vjs-menu-button-inline .vjs-menu-content{width:auto;height:100%;margin:0;overflow:hidden}.video-js .vjs-control-bar{display:none;width:100%;position:absolute;bottom:0;left:0;right:0;height:3em;background-color:#2b333f;background-color:#2b333fb3}.video-js.vjs-spatial-navigation-enabled .vjs-control-bar{gap:1px}.video-js:not(.vjs-controls-disabled,.vjs-using-native-controls,.vjs-error) .vjs-control-bar.vjs-lock-showing{display:flex!important}.vjs-has-started .vjs-control-bar,.vjs-audio-only-mode .vjs-control-bar{display:flex;visibility:visible;opacity:1;transition:visibility .1s,opacity .1s}.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{visibility:visible;opacity:0;pointer-events:none;transition:visibility 1s,opacity 1s}.vjs-controls-disabled .vjs-control-bar,.vjs-using-native-controls .vjs-control-bar,.vjs-error .vjs-control-bar{display:none!important}.vjs-audio.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar,.vjs-audio-only-mode.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{opacity:1;visibility:visible;pointer-events:auto}.video-js .vjs-control{position:relative;text-align:center;margin:0;padding:0;height:100%;width:4em;flex:none}.video-js .vjs-control.vjs-visible-text{width:auto;padding-left:1em;padding-right:1em}.vjs-button>.vjs-icon-placeholder:before{font-size:1.8em;line-height:1.67}.vjs-button>.vjs-icon-placeholder{display:block}.vjs-button>.vjs-svg-icon{display:inline-block}.video-js .vjs-control:focus:before,.video-js .vjs-control:hover:before,.video-js .vjs-control:focus{text-shadow:0em 0em 1em white}.video-js *:not(.vjs-visible-text)>.vjs-control-text{border:0;clip:rect(0 0 0 0);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.video-js .vjs-custom-control-spacer{display:none}.video-js .vjs-progress-control{cursor:pointer;flex:auto;display:flex;align-items:center;min-width:4em;touch-action:none}.video-js .vjs-progress-control.disabled{cursor:default}.vjs-live .vjs-progress-control{display:none}.vjs-liveui .vjs-progress-control{display:flex;align-items:center}.video-js .vjs-progress-holder{flex:auto;transition:all .2s;height:.3em}.video-js .vjs-progress-control .vjs-progress-holder{margin:0 10px}.video-js .vjs-progress-control:hover .vjs-progress-holder,.video-js.vjs-scrubbing.vjs-touch-enabled .vjs-progress-control .vjs-progress-holder{font-size:1.6666666667em}.video-js .vjs-progress-control:hover .vjs-progress-holder.disabled{font-size:1em}.video-js .vjs-progress-holder .vjs-play-progress,.video-js .vjs-progress-holder .vjs-load-progress,.video-js .vjs-progress-holder .vjs-load-progress div{position:absolute;display:block;height:100%;margin:0;padding:0;width:0}.video-js .vjs-play-progress{background-color:#fff}.video-js .vjs-play-progress:before{font-size:.9em;position:absolute;right:-.5em;line-height:.35em;z-index:1}.vjs-svg-icons-enabled .vjs-play-progress:before{content:none!important}.vjs-play-progress .vjs-svg-icon{position:absolute;top:-.35em;right:-.4em;width:.9em;height:.9em;pointer-events:none;line-height:.15em;z-index:1}.video-js .vjs-load-progress{background:rgba(114.9141509434,132.7028301887,159.3858490566,.5)}.video-js .vjs-load-progress div{background:rgba(114.9141509434,132.7028301887,159.3858490566,.75)}.video-js .vjs-time-tooltip{background-color:#fff;background-color:#fffc;border-radius:.3em;color:#000;float:right;font-family:Arial,Helvetica,sans-serif;font-size:1em;padding:6px 8px 8px;pointer-events:none;position:absolute;top:-3.4em;visibility:hidden;z-index:1}.video-js .vjs-progress-holder:focus .vjs-time-tooltip{display:none}.video-js .vjs-progress-control:hover .vjs-time-tooltip,.video-js .vjs-progress-control:hover .vjs-progress-holder:focus .vjs-time-tooltip,.video-js.vjs-scrubbing.vjs-touch-enabled .vjs-progress-control .vjs-time-tooltip{display:block;font-size:.6em;visibility:visible}.video-js .vjs-progress-control.disabled:hover .vjs-time-tooltip{font-size:1em}.video-js .vjs-progress-control .vjs-mouse-display{display:none;position:absolute;width:1px;height:100%;background-color:#000;z-index:1}.video-js .vjs-progress-control:hover .vjs-mouse-display,.video-js.vjs-scrubbing.vjs-touch-enabled .vjs-progress-control .vjs-mouse-display{display:block}.video-js.vjs-user-inactive .vjs-progress-control .vjs-mouse-display,.video-js.vjs-touch-enabled:not(.vjs-scrubbing) .vjs-progress-control .vjs-mouse-display{visibility:hidden;opacity:0;transition:visibility 1s,opacity 1s}.vjs-mouse-display .vjs-time-tooltip{color:#fff;background-color:#000;background-color:#000c}.video-js .vjs-slider{position:relative;cursor:pointer;padding:0;margin:0 .45em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:#73859f;background-color:#73859f80}.video-js .vjs-slider.disabled{cursor:default}.video-js .vjs-slider:focus{text-shadow:0em 0em 1em white;box-shadow:0 0 1em #fff}.video-js.vjs-spatial-navigation-enabled .vjs-slider:focus{outline:.0625em solid white}.video-js .vjs-mute-control{cursor:pointer;flex:none}.video-js .vjs-volume-control{cursor:pointer;margin-right:1em;display:flex}.video-js .vjs-volume-control.vjs-volume-horizontal{width:5em}.video-js .vjs-volume-panel .vjs-volume-control{visibility:visible;opacity:0;width:1px;height:1px;margin-left:-1px}.video-js .vjs-volume-panel{transition:width 1s}.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control,.video-js .vjs-volume-panel:active .vjs-volume-control,.video-js .vjs-volume-panel:focus .vjs-volume-control,.video-js .vjs-volume-panel .vjs-volume-control:active,.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control,.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active{visibility:visible;opacity:1;position:relative;transition:visibility .1s,opacity .1s,height .1s,width .1s,left 0s,top 0s}.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-horizontal,.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-horizontal{width:5em;height:3em;margin-right:0}.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-vertical,.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-vertical{left:-3.5em;transition:left 0s}.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active{width:10em;transition:width .1s}.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-mute-toggle-only{width:4em}.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical{height:8em;width:3em;left:-3000em;transition:visibility 1s,opacity 1s,height 1s 1s,width 1s 1s,left 1s 1s,top 1s 1s}.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal{transition:visibility 1s,opacity 1s,height 1s 1s,width 1s,left 1s 1s,top 1s 1s}.video-js .vjs-volume-panel{display:flex}.video-js .vjs-volume-bar{margin:1.35em .45em}.vjs-volume-bar.vjs-slider-horizontal{width:5em;height:.3em}.vjs-volume-bar.vjs-slider-vertical{width:.3em;height:5em;margin:1.35em auto}.video-js .vjs-volume-level{position:absolute;bottom:0;left:0;background-color:#fff}.video-js .vjs-volume-level:before{position:absolute;font-size:.9em;z-index:1}.vjs-slider-vertical .vjs-volume-level{width:.3em}.vjs-slider-vertical .vjs-volume-level:before{top:-.5em;left:-.3em;z-index:1}.vjs-svg-icons-enabled .vjs-volume-level:before{content:none}.vjs-volume-level .vjs-svg-icon{position:absolute;width:.9em;height:.9em;pointer-events:none;z-index:1}.vjs-slider-horizontal .vjs-volume-level{height:.3em}.vjs-slider-horizontal .vjs-volume-level:before{line-height:.35em;right:-.5em}.vjs-slider-horizontal .vjs-volume-level .vjs-svg-icon{right:-.3em;transform:translateY(-50%)}.vjs-slider-vertical .vjs-volume-level .vjs-svg-icon{top:-.55em;transform:translate(-50%)}.video-js .vjs-volume-panel.vjs-volume-panel-vertical{width:4em}.vjs-volume-bar.vjs-slider-vertical .vjs-volume-level{height:100%}.vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level{width:100%}.video-js .vjs-volume-vertical{width:3em;height:8em;bottom:8em;background-color:#2b333f;background-color:#2b333fb3}.video-js .vjs-volume-horizontal .vjs-menu{left:-2em}.video-js .vjs-volume-tooltip{background-color:#fff;background-color:#fffc;border-radius:.3em;color:#000;float:right;font-family:Arial,Helvetica,sans-serif;font-size:1em;padding:6px 8px 8px;pointer-events:none;position:absolute;top:-3.4em;visibility:hidden;z-index:1}.video-js .vjs-volume-control:hover .vjs-volume-tooltip,.video-js .vjs-volume-control:hover .vjs-progress-holder:focus .vjs-volume-tooltip{display:block;font-size:1em;visibility:visible}.video-js .vjs-volume-vertical:hover .vjs-volume-tooltip,.video-js .vjs-volume-vertical:hover .vjs-progress-holder:focus .vjs-volume-tooltip{left:1em;top:-12px}.video-js .vjs-volume-control.disabled:hover .vjs-volume-tooltip{font-size:1em}.video-js .vjs-volume-control .vjs-mouse-display{display:none;position:absolute;width:100%;height:1px;background-color:#000;z-index:1}.video-js .vjs-volume-horizontal .vjs-mouse-display{width:1px;height:100%}.video-js .vjs-volume-control:hover .vjs-mouse-display{display:block}.video-js.vjs-user-inactive .vjs-volume-control .vjs-mouse-display{visibility:hidden;opacity:0;transition:visibility 1s,opacity 1s}.vjs-mouse-display .vjs-volume-tooltip{color:#fff;background-color:#000;background-color:#000c}.vjs-poster{display:inline-block;vertical-align:middle;cursor:pointer;margin:0;padding:0;position:absolute;top:0;right:0;bottom:0;left:0;height:100%}.vjs-has-started .vjs-poster,.vjs-using-native-controls .vjs-poster{display:none}.vjs-audio.vjs-has-started .vjs-poster,.vjs-has-started.vjs-audio-poster-mode .vjs-poster,.vjs-pip-container.vjs-has-started .vjs-poster{display:block}.vjs-poster img{width:100%;height:100%;object-fit:contain}.video-js .vjs-live-control{display:flex;align-items:flex-start;flex:auto;font-size:1em;line-height:3em}.video-js:not(.vjs-live) .vjs-live-control,.video-js.vjs-liveui .vjs-live-control{display:none}.video-js .vjs-seek-to-live-control{align-items:center;cursor:pointer;flex:none;display:inline-flex;height:100%;padding-left:.5em;padding-right:.5em;font-size:1em;line-height:3em;width:auto;min-width:4em}.video-js.vjs-live:not(.vjs-liveui) .vjs-seek-to-live-control,.video-js:not(.vjs-live) .vjs-seek-to-live-control{display:none}.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge{cursor:auto}.vjs-seek-to-live-control .vjs-icon-placeholder{margin-right:.5em;color:#888}.vjs-svg-icons-enabled .vjs-seek-to-live-control{line-height:0}.vjs-seek-to-live-control .vjs-svg-icon{width:1em;height:1em;pointer-events:none;fill:#888}.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge .vjs-icon-placeholder{color:red}.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge .vjs-svg-icon{fill:red}.video-js .vjs-time-control{flex:none;font-size:1em;line-height:3em;min-width:2em;width:auto;padding-left:1em;padding-right:1em}.vjs-live .vjs-time-control,.vjs-live .vjs-time-divider,.video-js .vjs-current-time,.video-js .vjs-duration{display:none}.vjs-time-divider{display:none;line-height:3em}.vjs-normalise-time-controls:not(.vjs-live) .vjs-time-control{display:flex}.video-js .vjs-play-control{cursor:pointer}.video-js .vjs-play-control .vjs-icon-placeholder{flex:none}.vjs-text-track-display{position:absolute;bottom:3em;left:0;right:0;top:0;pointer-events:none}.vjs-error .vjs-text-track-display{display:none}.video-js.vjs-controls-disabled .vjs-text-track-display,.video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display{bottom:1em}.video-js .vjs-text-track{font-size:1.4em;text-align:center;margin-bottom:.1em}.vjs-subtitles{color:#fff}.vjs-captions{color:#fc6}.vjs-tt-cue{display:block}video::-webkit-media-text-track-display{transform:translateY(-3em)}.video-js.vjs-controls-disabled video::-webkit-media-text-track-display,.video-js.vjs-user-inactive.vjs-playing video::-webkit-media-text-track-display{transform:translateY(-1.5em)}.video-js.vjs-force-center-align-cues .vjs-text-track-cue{text-align:center!important;width:80%!important}@supports not (inset: 10px){.video-js .vjs-text-track-display>div{top:0;right:0;bottom:0;left:0}}.video-js .vjs-picture-in-picture-control{cursor:pointer;flex:none}.video-js.vjs-audio-only-mode .vjs-picture-in-picture-control,.vjs-pip-window .vjs-picture-in-picture-control{display:none}.video-js .vjs-fullscreen-control{cursor:pointer;flex:none}.video-js.vjs-audio-only-mode .vjs-fullscreen-control,.vjs-pip-window .vjs-fullscreen-control{display:none}.vjs-playback-rate>.vjs-menu-button,.vjs-playback-rate .vjs-playback-rate-value{position:absolute;top:0;left:0;width:100%;height:100%}.vjs-playback-rate .vjs-playback-rate-value{pointer-events:none;font-size:1.5em;line-height:2;text-align:center}.vjs-playback-rate .vjs-menu{width:4em;left:0}.vjs-error .vjs-error-display .vjs-modal-dialog-content{font-size:1.4em;text-align:center}.vjs-loading-spinner{display:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);opacity:.85;text-align:left;border:.6em solid rgba(43,51,63,.7);box-sizing:border-box;background-clip:padding-box;width:5em;height:5em;border-radius:50%;visibility:hidden}.vjs-seeking .vjs-loading-spinner,.vjs-waiting .vjs-loading-spinner{display:flex;justify-content:center;align-items:center;animation:vjs-spinner-show 0s linear .3s forwards}.vjs-error .vjs-loading-spinner{display:none}.vjs-loading-spinner:before,.vjs-loading-spinner:after{content:"";position:absolute;box-sizing:inherit;width:inherit;height:inherit;border-radius:inherit;opacity:1;border:inherit;border-color:transparent;border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:before,.vjs-seeking .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:after{animation:vjs-spinner-spin 1.1s cubic-bezier(.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite}.vjs-seeking .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:before{border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:after{border-top-color:#fff;animation-delay:.44s}@keyframes vjs-spinner-show{to{visibility:visible}}@keyframes vjs-spinner-spin{to{transform:rotate(360deg)}}@keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}to{border-top-color:#73859f}}.video-js.vjs-audio-only-mode .vjs-captions-button{display:none}.vjs-chapters-button .vjs-menu ul{width:24em}.video-js.vjs-audio-only-mode .vjs-descriptions-button{display:none}.vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-svg-icon{width:1.5em;height:1.5em}.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder{vertical-align:middle;display:inline-block;margin-bottom:-.1em}.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before{font-family:VideoJS;content:"";font-size:1.5em;line-height:inherit}.video-js.vjs-audio-only-mode .vjs-subs-caps-button{display:none}.video-js .vjs-audio-button+.vjs-menu .vjs-descriptions-menu-item .vjs-menu-item-text .vjs-icon-placeholder,.video-js .vjs-audio-button+.vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder{vertical-align:middle;display:inline-block;margin-bottom:-.1em}.video-js .vjs-audio-button+.vjs-menu .vjs-descriptions-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before,.video-js .vjs-audio-button+.vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before{font-family:VideoJS;content:" ";font-size:1.5em;line-height:inherit}.video-js.vjs-layout-small .vjs-current-time,.video-js.vjs-layout-small .vjs-time-divider,.video-js.vjs-layout-small .vjs-duration,.video-js.vjs-layout-small .vjs-remaining-time,.video-js.vjs-layout-small .vjs-playback-rate,.video-js.vjs-layout-small .vjs-volume-control,.video-js.vjs-layout-x-small .vjs-current-time,.video-js.vjs-layout-x-small .vjs-time-divider,.video-js.vjs-layout-x-small .vjs-duration,.video-js.vjs-layout-x-small .vjs-remaining-time,.video-js.vjs-layout-x-small .vjs-playback-rate,.video-js.vjs-layout-x-small .vjs-volume-control,.video-js.vjs-layout-tiny .vjs-current-time,.video-js.vjs-layout-tiny .vjs-time-divider,.video-js.vjs-layout-tiny .vjs-duration,.video-js.vjs-layout-tiny .vjs-remaining-time,.video-js.vjs-layout-tiny .vjs-playback-rate,.video-js.vjs-layout-tiny .vjs-volume-control{display:none}.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:hover,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover{width:auto;width:initial}.video-js.vjs-layout-x-small .vjs-progress-control,.video-js.vjs-layout-tiny .vjs-progress-control{display:none}.video-js.vjs-layout-x-small .vjs-custom-control-spacer{flex:auto;display:block}.vjs-modal-dialog.vjs-text-track-settings{background-color:#2b333f;background-color:#2b333fbf;color:#fff;height:70%}.vjs-spatial-navigation-enabled .vjs-modal-dialog.vjs-text-track-settings{height:80%}.vjs-error .vjs-text-track-settings{display:none}.vjs-text-track-settings .vjs-modal-dialog-content{display:table}.vjs-text-track-settings .vjs-track-settings-colors,.vjs-text-track-settings .vjs-track-settings-font,.vjs-text-track-settings .vjs-track-settings-controls{display:table-cell}.vjs-text-track-settings .vjs-track-settings-controls{text-align:right;vertical-align:bottom}@supports (display: grid){.vjs-text-track-settings .vjs-modal-dialog-content{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr;padding:20px 24px 0}.vjs-track-settings-controls .vjs-default-button{margin-bottom:20px}.vjs-text-track-settings .vjs-track-settings-controls{grid-column:1/-1}.vjs-layout-small .vjs-text-track-settings .vjs-modal-dialog-content,.vjs-layout-x-small .vjs-text-track-settings .vjs-modal-dialog-content,.vjs-layout-tiny .vjs-text-track-settings .vjs-modal-dialog-content{grid-template-columns:1fr}}.vjs-text-track-settings select{font-size:inherit}.vjs-track-setting>select{margin-right:1em;margin-bottom:.5em}.vjs-text-track-settings fieldset{margin:10px;border:none}.vjs-text-track-settings fieldset span{display:inline-block;padding:0 .6em .8em}.vjs-text-track-settings fieldset span>select{max-width:7.3em}.vjs-text-track-settings legend{color:#fff;font-weight:700;font-size:1.2em}.vjs-text-track-settings .vjs-label{margin:0 .5em .5em 0}.vjs-track-settings-controls button:focus,.vjs-track-settings-controls button:active{outline-style:solid;outline-width:medium;background-image:linear-gradient(0deg,#fff 88%,rgb(114.9141509434,132.7028301887,159.3858490566) 100%)}.vjs-track-settings-controls button:hover{color:#2b333fbf}.vjs-track-settings-controls button{background-color:#fff;background-image:linear-gradient(-180deg,#fff 88%,rgb(114.9141509434,132.7028301887,159.3858490566) 100%);color:#2b333f;cursor:pointer;border-radius:2px}.vjs-track-settings-controls .vjs-default-button{margin-right:1em}.vjs-title-bar{background:rgba(0,0,0,.9);background:linear-gradient(180deg,rgba(0,0,0,.9) 0%,rgba(0,0,0,.7) 60%,rgba(0,0,0,0) 100%);font-size:1.2em;line-height:1.5;transition:opacity .1s;padding:.666em 1.333em 4em;pointer-events:none;position:absolute;top:0;width:100%}.vjs-error .vjs-title-bar{display:none}.vjs-title-bar-title,.vjs-title-bar-description{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vjs-title-bar-title{font-weight:700;margin-bottom:.333em}.vjs-playing.vjs-user-inactive .vjs-title-bar{opacity:0;transition:opacity 1s}.video-js .vjs-skip-forward-5,.video-js .vjs-skip-forward-10,.video-js .vjs-skip-forward-30,.video-js .vjs-skip-backward-5,.video-js .vjs-skip-backward-10,.video-js .vjs-skip-backward-30{cursor:pointer}.video-js .vjs-transient-button{position:absolute;height:3em;display:flex;align-items:center;justify-content:center;background-color:#32323280;cursor:pointer;opacity:1;transition:opacity 1s}.video-js:not(.vjs-has-started) .vjs-transient-button{display:none}.video-js.not-hover .vjs-transient-button:not(.force-display),.video-js.vjs-user-inactive .vjs-transient-button:not(.force-display){opacity:0}.video-js .vjs-transient-button span{padding:0 .5em}.video-js .vjs-transient-button.vjs-left{left:1em}.video-js .vjs-transient-button.vjs-right{right:1em}.video-js .vjs-transient-button.vjs-top{top:1em}.video-js .vjs-transient-button.vjs-near-top{top:4em}.video-js .vjs-transient-button.vjs-bottom{bottom:4em}.video-js .vjs-transient-button:hover{background-color:#323232e6}@media print{.video-js>*:not(.vjs-tech):not(.vjs-poster){visibility:hidden}}.vjs-resize-manager{position:absolute;top:0;left:0;width:100%;height:100%;border:none;z-index:-1000}.js-focus-visible .video-js *:focus:not(.focus-visible){outline:none}.video-js *:focus:not(:focus-visible){outline:none}.vjs-autoplay-countdown-overlay{position:absolute;top:0;left:0;width:100%;height:calc(100% - 46px);background:rgba(0,0,0,.85);display:none;flex-direction:column;justify-content:center;align-items:center;z-index:100000;padding:20px;box-sizing:border-box;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;transition:opacity .3s ease-in-out}.vjs-autoplay-countdown-overlay.autoplay-countdown-show{opacity:1}.autoplay-countdown-content{background:linear-gradient(135deg,rgba(0,0,0,.95),rgba(20,20,20,.9));border-radius:20px;padding:50px;max-width:480px;width:100%;text-align:center;box-shadow:0 20px 60px #0006,0 8px 32px #0003,inset 0 1px #ffffff1a;border:1px solid rgba(255,255,255,.15);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);position:relative;overflow:hidden}.autoplay-countdown-content:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent)}.autoplay-countdown-content:after{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(255,0,0,.05) 0%,transparent 70%);animation:backgroundPulse 4s ease-in-out infinite;pointer-events:none}@keyframes backgroundPulse{0%,to{opacity:.3;transform:scale(1)}50%{opacity:.6;transform:scale(1.1)}}.autoplay-countdown-header{position:relative;z-index:2}.autoplay-countdown-header h3{color:#fff;font-size:26px;font-weight:400;margin:0 0 10px;line-height:1.3;text-shadow:0 2px 4px rgba(0,0,0,.3)}.autoplay-countdown-header h3 span{font-weight:700}.autoplay-countdown-video-info{display:flex;flex-direction:column;align-items:center;gap:20px;text-align:center;position:relative;z-index:2;margin:0 0 50px}.next-video-thumbnail{flex-shrink:0;width:180px;height:101px;border-radius:12px;overflow:hidden;background:#333;position:relative;box-shadow:0 12px 32px #0006,0 4px 16px #0003;border:2px solid rgba(255,255,255,.1);transition:transform .3s ease,box-shadow .3s ease}.next-video-thumbnail:hover{transform:translateY(-4px) scale(1.02);box-shadow:0 16px 40px #00000080,0 8px 24px #0000004d}.next-video-thumbnail img{width:100%;height:100%;object-fit:cover;display:block}.play-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(0,0,0,.8);border-radius:50%;width:64px;height:64px;display:flex;align-items:center;justify-content:center;color:#fff;transition:all .3s ease;box-shadow:0 8px 24px #00000080,0 4px 16px #0000004d;border:3px solid rgba(255,255,255,.2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.play-overlay:hover{background:rgba(0,0,0,.9);transform:translate(-50%,-50%) scale(1.1);box-shadow:0 12px 32px #0009,0 6px 20px #0006}.play-overlay svg{margin-left:4px;width:28px;height:28px}.next-video-details{flex-grow:1;min-width:0;text-align:center}.next-video-title{color:#999;font-size:18px;font-weight:500;margin:0;line-height:1.4;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-shadow:0 2px 4px rgba(0,0,0,.3);letter-spacing:.5px}.next-video-author{color:#bbb;font-size:16px;margin:0 0 8px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.next-video-duration{color:#999;font-size:14px;margin:0;line-height:1.2;font-weight:500}.autoplay-countdown-actions{display:flex;gap:24px;justify-content:center;align-items:center;position:relative;z-index:2;padding:0;margin-top:8px}button.autoplay-play-button,button.autoplay-cancel-button{display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);min-width:140px;height:48px;position:relative;overflow:hidden;text-transform:uppercase;letter-spacing:.3px;line-height:1;white-space:nowrap;box-shadow:0 6px 20px #0000004d,inset 0 1px #ffffff1a;text-align:center}button.autoplay-play-button{background:linear-gradient(135deg,#ff0000,#e60000);color:#fff;border:1px solid rgba(255,255,255,.1)}.autoplay-play-button:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s ease}.autoplay-play-button:hover{background:linear-gradient(135deg,#ff1a1a,#cc0000);transform:translateY(-2px);box-shadow:0 8px 25px #f006,inset 0 1px #ffffff4d}.autoplay-play-button:hover:before{left:100%}.autoplay-play-button:active{transform:translateY(-1px);box-shadow:0 4px 15px #ff00004d,inset 0 1px #fff3}.autoplay-cancel-button{background:linear-gradient(135deg,#404040,#2a2a2a);color:#fff;border:1px solid rgba(255,255,255,.1);box-shadow:0 6px 20px #0000004d,inset 0 1px #ffffff1a}.autoplay-cancel-button:hover{background:linear-gradient(135deg,#505050,#3a3a3a);transform:translateY(-2px);box-shadow:0 8px 25px #0006,inset 0 1px #fff3}.autoplay-cancel-button:active{transform:translateY(-1px);box-shadow:0 4px 15px #0000004d,inset 0 1px #ffffff1a}.autoplay-play-button svg,.autoplay-cancel-button svg{width:18px;height:18px;flex-shrink:0;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3));transition:transform .3s ease;position:relative;z-index:1;display:block;margin:0;padding:0;vertical-align:middle}.autoplay-play-button:hover svg{transform:scale(1.05);filter:drop-shadow(0 2px 4px rgba(0,0,0,.4))}.autoplay-cancel-button svg{width:16px;height:16px}.autoplay-cancel-button:hover svg{transform:scale(1.05) rotate(90deg);filter:drop-shadow(0 2px 4px rgba(0,0,0,.4))}.autoplay-play-button span,.autoplay-cancel-button span{display:inline-block;vertical-align:middle;line-height:1;font-size:inherit;font-weight:inherit;letter-spacing:inherit;text-transform:inherit;position:relative;z-index:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;margin:0;padding:0;height:auto;align-self:center}.autoplay-play-button>*,.autoplay-cancel-button>*{vertical-align:middle;display:inline-block}.autoplay-play-button,.autoplay-cancel-button{align-items:center;justify-content:center}.autoplay-play-button svg,.autoplay-cancel-button svg{vertical-align:middle;display:inline-block}.vjs-autoplay-toggle .vjs-autoplay-icon svg{width:100%;height:100%;display:block}@media (max-width: 767px){.autoplay-countdown-video-info{margin-bottom:20px}.autoplay-countdown-content{padding:24px;max-width:400px}.autoplay-countdown-header h3{font-size:20px}.next-video-thumbnail{width:140px;height:78px}.play-overlay{width:48px;height:48px}.play-overlay svg{width:20px;height:20px}.next-video-title{font-size:18px}.next-video-author{font-size:14px}.autoplay-play-button,.autoplay-cancel-button{padding:12px 24px;font-size:14px;min-width:120px;height:44px;gap:6px;align-items:center;justify-content:center}.autoplay-play-button svg{width:16px;height:16px;vertical-align:middle}.autoplay-cancel-button svg{width:14px;height:14px;vertical-align:middle}}@media (max-width: 480px){.autoplay-countdown-content{padding:20px;max-width:350px}.autoplay-countdown-header h3{font-size:18px}.countdown-timer{font-size:24px;padding:10px 16px}.autoplay-countdown-video-info{gap:16px}.next-video-thumbnail{width:120px;height:68px}.play-overlay{width:40px;height:40px}.play-overlay svg{width:16px;height:16px}.next-video-title{font-size:16px}.next-video-author{font-size:13px}.autoplay-countdown-actions{gap:5px;padding:0}button.autoplay-play-button,button.autoplay-cancel-button{padding:10px 20px;width:120px;height:40px;min-width:120px}.autoplay-play-button,.autoplay-cancel-button{width:100%;min-width:100%;height:46px;gap:6px;padding:10px 20px;font-size:13px;align-items:center;justify-content:center}.autoplay-play-button svg{width:14px;height:14px;vertical-align:middle}.autoplay-cancel-button svg{width:12px;height:12px;vertical-align:middle}}.vjs-settings-button{width:3em;height:3em;display:flex;align-items:center;justify-content:center;padding:0;margin:0}.vjs-icon-cog1{font-size:30px!important;position:relative;top:-8px!important;display:flex;align-items:center;justify-content:center;width:100%;height:100%;line-height:1}.custom-settings-overlay{border:0;position:absolute;bottom:60px;right:20px;width:280px;height:350px;background:rgba(28,28,28,.95);color:#fff;border-radius:7px;box-shadow:0 4px 12px #00000080;display:none;z-index:1000;font-size:14px;overflow:auto}.settings-header{padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.1);font-weight:700}.settings-item{padding:12px 16px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(255,255,255,.1);transition:background .2s ease;gap:10px}.settings-item .settings-left span{display:flex}.custom-settings-overlay .settings-left span.vjs-icon-placeholder{transform:inherit!important}.settings-item:last-child{border-bottom:none}.settings-item:hover{background:rgba(255,255,255,.05)}.speed-submenu,.quality-submenu,.subtitles-submenu{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(28,28,28,.95);display:none;flex-direction:column}.subtitle-option{padding:12px 16px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:background .2s ease}.subtitle-option:hover{background:rgba(255,255,255,.05)}.subtitle-option.active{background:rgba(255,255,255,.1)}.submenu-header{padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.1);display:flex;align-items:center;cursor:pointer;position:sticky;top:0;background:rgba(28,28,28,.95);z-index:1}.submenu-header:hover{background:rgba(28,28,28,1)}.speed-option{padding:12px 16px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:background .2s ease}.speed-option:hover{background:rgba(255,255,255,.05)}.speed-option.active{background:rgba(255,255,255,.1)}.quality-option{padding:12px 16px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:background .2s ease}.quality-option:hover{background:rgba(255,255,255,.05)}.quality-option.active{background:rgba(255,255,255,.1)}.settings-left{display:inline-flex;align-items:center;gap:8px}.settings-right{display:inline-flex;align-items:center;text-align:right}sup.hd-badge{font-size:10px;line-height:1;margin-left:6px;background:#e53935;color:#fff;padding:1px 4px;border-radius:3px} diff --git a/static/video_js/video-js.js b/static/video_js/video-js.js index 6e3d1190..3fcb1aa1 100644 --- a/static/video_js/video-js.js +++ b/static/video_js/video-js.js @@ -1,4 +1,4 @@ -(function(){"use strict";var Rf=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Yc(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}function C_(s){if(s.__esModule)return s;var e=s.default;if(typeof e=="function"){var i=function a(){return this instanceof a?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};i.prototype=e.prototype}else i={};return Object.defineProperty(i,"__esModule",{value:!0}),Object.keys(s).forEach(function(a){var o=Object.getOwnPropertyDescriptor(s,a);Object.defineProperty(i,a,o.get?o:{enumerable:!0,get:function(){return s[a]}})}),i}var A_={exports:{}},Wc={},w_={exports:{}},Qc={exports:{}};/** +(function(){"use strict";var Of=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Xc(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}function C_(s){if(s.__esModule)return s;var e=s.default;if(typeof e=="function"){var i=function a(){return this instanceof a?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};i.prototype=e.prototype}else i={};return Object.defineProperty(i,"__esModule",{value:!0}),Object.keys(s).forEach(function(a){var o=Object.getOwnPropertyDescriptor(s,a);Object.defineProperty(i,a,o.get?o:{enumerable:!0,get:function(){return s[a]}})}),i}var A_={exports:{}},Yc={},w_={exports:{}},Wc={exports:{}};/** * @license React * react.development.js * @@ -6,19 +6,19 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */Qc.exports;var D_;function wD(){return D_||(D_=1,function(s,e){(function(){function i(D,X){Object.defineProperty(u.prototype,D,{get:function(){console.warn("%s(...) is deprecated in plain JavaScript React classes. %s",X[0],X[1])}})}function a(D){return D===null||typeof D!="object"?null:(D=ji&&D[ji]||D["@@iterator"],typeof D=="function"?D:null)}function o(D,X){D=(D=D.constructor)&&(D.displayName||D.name)||"ReactClass";var ve=D+"."+X;jt[ve]||(console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",X,D),jt[ve]=!0)}function u(D,X,ve){this.props=D,this.context=X,this.refs=Kt,this.updater=ve||li}function c(){}function f(D,X,ve){this.props=D,this.context=X,this.refs=Kt,this.updater=ve||li}function m(D){return""+D}function b(D){try{m(D);var X=!1}catch{X=!0}if(X){X=console;var ve=X.error,Se=typeof Symbol=="function"&&Symbol.toStringTag&&D[Symbol.toStringTag]||D.constructor.name||"Object";return ve.call(X,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",Se),m(D)}}function S(D){if(D==null)return null;if(typeof D=="function")return D.$$typeof===Fo?null:D.displayName||D.name||null;if(typeof D=="string")return D;switch(D){case W:return"Fragment";case me:return"Profiler";case pe:return"StrictMode";case Ye:return"Suspense";case Ji:return"SuspenseList";case mt:return"Activity"}if(typeof D=="object")switch(typeof D.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),D.$$typeof){case he:return"Portal";case Ue:return(D.displayName||"Context")+".Provider";case De:return(D._context.displayName||"Context")+".Consumer";case ot:var X=D.render;return D=D.displayName,D||(D=X.displayName||X.name||"",D=D!==""?"ForwardRef("+D+")":"ForwardRef"),D;case Et:return X=D.displayName||null,X!==null?X:S(D.type)||"Memo";case ut:X=D._payload,D=D._init;try{return S(D(X))}catch{}}return null}function E(D){if(D===W)return"<>";if(typeof D=="object"&&D!==null&&D.$$typeof===ut)return"<...>";try{var X=S(D);return X?"<"+X+">":"<...>"}catch{return"<...>"}}function A(){var D=we.A;return D===null?null:D.getOwner()}function R(){return Error("react-stack-top-frame")}function N(D){if(Ba.call(D,"key")){var X=Object.getOwnPropertyDescriptor(D,"key").get;if(X&&X.isReactWarning)return!1}return D.key!==void 0}function w(D,X){function ve(){Qs||(Qs=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",X))}ve.isReactWarning=!0,Object.defineProperty(D,"key",{get:ve,configurable:!0})}function H(){var D=S(this.type);return Fa[D]||(Fa[D]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),D=this.props.ref,D!==void 0?D:null}function I(D,X,ve,Se,Le,Qe,Ve,at){return ve=Qe.ref,D={$$typeof:Me,type:D,key:X,props:Qe,_owner:Le},(ve!==void 0?ve:null)!==null?Object.defineProperty(D,"ref",{enumerable:!1,get:H}):Object.defineProperty(D,"ref",{enumerable:!1,value:null}),D._store={},Object.defineProperty(D._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(D,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(D,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:Ve}),Object.defineProperty(D,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:at}),Object.freeze&&(Object.freeze(D.props),Object.freeze(D)),D}function G(D,X){return X=I(D.type,X,void 0,void 0,D._owner,D.props,D._debugStack,D._debugTask),D._store&&(X._store.validated=D._store.validated),X}function F(D){return typeof D=="object"&&D!==null&&D.$$typeof===Me}function Y(D){var X={"=":"=0",":":"=2"};return"$"+D.replace(/[=:]/g,function(ve){return X[ve]})}function K(D,X){return typeof D=="object"&&D!==null&&D.key!=null?(b(D.key),Y(""+D.key)):X.toString(36)}function se(){}function Q(D){switch(D.status){case"fulfilled":return D.value;case"rejected":throw D.reason;default:switch(typeof D.status=="string"?D.then(se,se):(D.status="pending",D.then(function(X){D.status==="pending"&&(D.status="fulfilled",D.value=X)},function(X){D.status==="pending"&&(D.status="rejected",D.reason=X)})),D.status){case"fulfilled":return D.value;case"rejected":throw D.reason}}throw D}function le(D,X,ve,Se,Le){var Qe=typeof D;(Qe==="undefined"||Qe==="boolean")&&(D=null);var Ve=!1;if(D===null)Ve=!0;else switch(Qe){case"bigint":case"string":case"number":Ve=!0;break;case"object":switch(D.$$typeof){case Me:case he:Ve=!0;break;case ut:return Ve=D._init,le(Ve(D._payload),X,ve,Se,Le)}}if(Ve){Ve=D,Le=Le(Ve);var at=Se===""?"."+K(Ve,0):Se;return Ei(Le)?(ve="",at!=null&&(ve=at.replace(Nr,"$&/")+"/"),le(Le,X,ve,"",function(Zt){return Zt})):Le!=null&&(F(Le)&&(Le.key!=null&&(Ve&&Ve.key===Le.key||b(Le.key)),ve=G(Le,ve+(Le.key==null||Ve&&Ve.key===Le.key?"":(""+Le.key).replace(Nr,"$&/")+"/")+at),Se!==""&&Ve!=null&&F(Ve)&&Ve.key==null&&Ve._store&&!Ve._store.validated&&(ve._store.validated=2),Le=ve),X.push(Le)),1}if(Ve=0,at=Se===""?".":Se+":",Ei(D))for(var qe=0;qe";if(typeof D=="object"&&D!==null&&D.$$typeof===Pt)return"<...>";try{var W=S(D);return W?"<"+W+">":"<...>"}catch{return"<...>"}}function A(){var D=De.A;return D===null?null:D.getOwner()}function R(){return Error("react-stack-top-frame")}function I(D){if(Ba.call(D,"key")){var W=Object.getOwnPropertyDescriptor(D,"key").get;if(W&&W.isReactWarning)return!1}return D.key!==void 0}function w(D,W){function be(){Qs||(Qs=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",W))}be.isReactWarning=!0,Object.defineProperty(D,"key",{get:be,configurable:!0})}function z(){var D=S(this.type);return Fa[D]||(Fa[D]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),D=this.props.ref,D!==void 0?D:null}function F(D,W,be,Se,Pe,Ze,$e,ot){return be=Ze.ref,D={$$typeof:ke,type:D,key:W,props:Ze,_owner:Pe},(be!==void 0?be:null)!==null?Object.defineProperty(D,"ref",{enumerable:!1,get:z}):Object.defineProperty(D,"ref",{enumerable:!1,value:null}),D._store={},Object.defineProperty(D._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(D,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(D,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:$e}),Object.defineProperty(D,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:ot}),Object.freeze&&(Object.freeze(D.props),Object.freeze(D)),D}function X(D,W){return W=F(D.type,W,void 0,void 0,D._owner,D.props,D._debugStack,D._debugTask),D._store&&(W._store.validated=D._store.validated),W}function H(D){return typeof D=="object"&&D!==null&&D.$$typeof===ke}function Y(D){var W={"=":"=0",":":"=2"};return"$"+D.replace(/[=:]/g,function(be){return W[be]})}function G(D,W){return typeof D=="object"&&D!==null&&D.key!=null?(b(D.key),Y(""+D.key)):W.toString(36)}function ee(){}function Q(D){switch(D.status){case"fulfilled":return D.value;case"rejected":throw D.reason;default:switch(typeof D.status=="string"?D.then(ee,ee):(D.status="pending",D.then(function(W){D.status==="pending"&&(D.status="fulfilled",D.value=W)},function(W){D.status==="pending"&&(D.status="rejected",D.reason=W)})),D.status){case"fulfilled":return D.value;case"rejected":throw D.reason}}throw D}function oe(D,W,be,Se,Pe){var Ze=typeof D;(Ze==="undefined"||Ze==="boolean")&&(D=null);var $e=!1;if(D===null)$e=!0;else switch(Ze){case"bigint":case"string":case"number":$e=!0;break;case"object":switch(D.$$typeof){case ke:case Qe:$e=!0;break;case Pt:return $e=D._init,oe($e(D._payload),W,be,Se,Pe)}}if($e){$e=D,Pe=Pe($e);var ot=Se===""?"."+G($e,0):Se;return wt(Pe)?(be="",ot!=null&&(be=ot.replace(Nr,"$&/")+"/"),oe(Pe,W,be,"",function(ti){return ti})):Pe!=null&&(H(Pe)&&(Pe.key!=null&&($e&&$e.key===Pe.key||b(Pe.key)),be=X(Pe,be+(Pe.key==null||$e&&$e.key===Pe.key?"":(""+Pe.key).replace(Nr,"$&/")+"/")+ot),Se!==""&&$e!=null&&H($e)&&$e.key==null&&$e._store&&!$e._store.validated&&(be._store.validated=2),Pe=be),W.push(Pe)),1}if($e=0,ot=Se===""?".":Se+":",wt(D))for(var Ge=0;Ge import('./MyComponent')) -Did you accidentally put curly braces around the import?`,X),"default"in X||console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s +Did you accidentally put curly braces around the import?`,W),"default"in W||console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s Your code should look like: - const MyComponent = lazy(() => import('./MyComponent'))`,X),X.default;throw D._result}function be(){var D=we.H;return D===null&&console.error(`Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons: + const MyComponent = lazy(() => import('./MyComponent'))`,W),W.default;throw D._result}function me(){var D=De.H;return D===null&&console.error(`Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons: 1. You might have mismatching versions of React and the renderer (such as React DOM) 2. You might be breaking the Rules of Hooks 3. You might have more than one copy of React in the same app -See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),D}function Ae(){}function fe(D){if(dt===null)try{var X=("require"+Math.random()).slice(0,7);dt=(s&&s[X]).call(s,"timers").setImmediate}catch{dt=function(Se){Ur===!1&&(Ur=!0,typeof MessageChannel>"u"&&console.error("This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."));var Le=new MessageChannel;Le.port1.onmessage=Se,Le.port2.postMessage(void 0)}}return dt(D)}function Pe(D){return 1 ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"))}),{then:function(qe,Zt){Le=!0,Ve.then(function(Ts){if(rt(X,ve),ve===0){try{xe(Se),fe(function(){return de(Ts,qe,Zt)})}catch(Ud){we.thrownErrors.push(Ud)}if(0 ...)"))}),we.actQueue=null),0we.recentlyCreatedOwnerStacks++;return I(D,Le,void 0,void 0,A(),Se,qe?Error("react-stack-top-frame"):Pr,qe?Ws(E(D)):Ks)},e.createRef=function(){var D={current:null};return Object.seal(D),D},e.forwardRef=function(D){D!=null&&D.$$typeof===Et?console.error("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."):typeof D!="function"?console.error("forwardRef requires a render function but was given %s.",D===null?"null":typeof D):D.length!==0&&D.length!==2&&console.error("forwardRef render functions accept exactly two parameters: props and ref. %s",D.length===1?"Did you forget to use the ref parameter?":"Any additional parameter will be undefined."),D!=null&&D.defaultProps!=null&&console.error("forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?");var X={$$typeof:ot,render:D},ve;return Object.defineProperty(X,"displayName",{enumerable:!1,configurable:!0,get:function(){return ve},set:function(Se){ve=Se,D.name||D.displayName||(Object.defineProperty(D,"name",{value:Se}),D.displayName=Se)}}),X},e.isValidElement=F,e.lazy=function(D){return{$$typeof:ut,_payload:{_status:-1,_result:D},_init:Ie}},e.memo=function(D,X){D==null&&console.error("memo: The first argument must be a component. Instead received: %s",D===null?"null":typeof D),X={$$typeof:Et,type:D,compare:X===void 0?null:X};var ve;return Object.defineProperty(X,"displayName",{enumerable:!1,configurable:!0,get:function(){return ve},set:function(Se){ve=Se,D.name||D.displayName||(Object.defineProperty(D,"name",{value:Se}),D.displayName=Se)}}),X},e.startTransition=function(D){var X=we.T,ve={};we.T=ve,ve._updatedFibers=new Set;try{var Se=D(),Le=we.S;Le!==null&&Le(ve,Se),typeof Se=="object"&&Se!==null&&typeof Se.then=="function"&&Se.then(Ae,ja)}catch(Qe){ja(Qe)}finally{X===null&&ve._updatedFibers&&(D=ve._updatedFibers.size,ve._updatedFibers.clear(),10"u"&&console.error("This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."));var Pe=new MessageChannel;Pe.port1.onmessage=Se,Pe.port2.postMessage(void 0)}}return dt(D)}function we(D){return 1 ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"))}),{then:function(Ge,ti){Pe=!0,$e.then(function(Ts){if(He(W,be),be===0){try{ye(Se),pe(function(){return le(Ts,Ge,ti)})}catch(Nd){De.thrownErrors.push(Nd)}if(0 ...)"))}),De.actQueue=null),0De.recentlyCreatedOwnerStacks++;return F(D,Pe,void 0,void 0,A(),Se,Ge?Error("react-stack-top-frame"):Pr,Ge?Ws(E(D)):Ks)},e.createRef=function(){var D={current:null};return Object.seal(D),D},e.forwardRef=function(D){D!=null&&D.$$typeof===lt?console.error("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."):typeof D!="function"?console.error("forwardRef requires a render function but was given %s.",D===null?"null":typeof D):D.length!==0&&D.length!==2&&console.error("forwardRef render functions accept exactly two parameters: props and ref. %s",D.length===1?"Did you forget to use the ref parameter?":"Any additional parameter will be undefined."),D!=null&&D.defaultProps!=null&&console.error("forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?");var W={$$typeof:Be,render:D},be;return Object.defineProperty(W,"displayName",{enumerable:!1,configurable:!0,get:function(){return be},set:function(Se){be=Se,D.name||D.displayName||(Object.defineProperty(D,"name",{value:Se}),D.displayName=Se)}}),W},e.isValidElement=H,e.lazy=function(D){return{$$typeof:Pt,_payload:{_status:-1,_result:D},_init:Ie}},e.memo=function(D,W){D==null&&console.error("memo: The first argument must be a component. Instead received: %s",D===null?"null":typeof D),W={$$typeof:lt,type:D,compare:W===void 0?null:W};var be;return Object.defineProperty(W,"displayName",{enumerable:!1,configurable:!0,get:function(){return be},set:function(Se){be=Se,D.name||D.displayName||(Object.defineProperty(D,"name",{value:Se}),D.displayName=Se)}}),W},e.startTransition=function(D){var W=De.T,be={};De.T=be,be._updatedFibers=new Set;try{var Se=D(),Pe=De.S;Pe!==null&&Pe(be,Se),typeof Se=="object"&&Se!==null&&typeof Se.then=="function"&&Se.then(Ae,ja)}catch(Ze){ja(Ze)}finally{W===null&&be._updatedFibers&&(D=be._updatedFibers.size,be._updatedFibers.clear(),10";if(typeof W=="object"&&W!==null&&W.$$typeof===le)return"<...>";try{var pe=s(W);return pe?"<"+pe+">":"<...>"}catch{return"<...>"}}function o(){var W=be.A;return W===null?null:W.getOwner()}function u(){return Error("react-stack-top-frame")}function c(W){if(Ae.call(W,"key")){var pe=Object.getOwnPropertyDescriptor(W,"key").get;if(pe&&pe.isReactWarning)return!1}return W.key!==void 0}function f(W,pe){function me(){rt||(rt=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",pe))}me.isReactWarning=!0,Object.defineProperty(W,"key",{get:me,configurable:!0})}function m(){var W=s(this.type);return de[W]||(de[W]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),W=this.props.ref,W!==void 0?W:null}function b(W,pe,me,De,Ue,ot,Ye,Ji){return me=ot.ref,W={$$typeof:R,type:W,key:pe,props:ot,_owner:Ue},(me!==void 0?me:null)!==null?Object.defineProperty(W,"ref",{enumerable:!1,get:m}):Object.defineProperty(W,"ref",{enumerable:!1,value:null}),W._store={},Object.defineProperty(W._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(W,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(W,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:Ye}),Object.defineProperty(W,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:Ji}),Object.freeze&&(Object.freeze(W.props),Object.freeze(W)),W}function S(W,pe,me,De,Ue,ot,Ye,Ji){var Et=pe.children;if(Et!==void 0)if(De)if(fe(Et)){for(De=0;De";if(typeof re=="object"&&re!==null&&re.$$typeof===oe)return"<...>";try{var ue=s(re);return ue?"<"+ue+">":"<...>"}catch{return"<...>"}}function o(){var re=me.A;return re===null?null:re.getOwner()}function u(){return Error("react-stack-top-frame")}function c(re){if(Ae.call(re,"key")){var ue=Object.getOwnPropertyDescriptor(re,"key").get;if(ue&&ue.isReactWarning)return!1}return re.key!==void 0}function f(re,ue){function fe(){He||(He=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",ue))}fe.isReactWarning=!0,Object.defineProperty(re,"key",{get:fe,configurable:!0})}function m(){var re=s(this.type);return le[re]||(le[re]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),re=this.props.ref,re!==void 0?re:null}function b(re,ue,fe,Ee,Ue,Be,Me,Jt){return fe=Be.ref,re={$$typeof:R,type:re,key:ue,props:Be,_owner:Ue},(fe!==void 0?fe:null)!==null?Object.defineProperty(re,"ref",{enumerable:!1,get:m}):Object.defineProperty(re,"ref",{enumerable:!1,value:null}),re._store={},Object.defineProperty(re._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(re,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(re,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:Me}),Object.defineProperty(re,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:Jt}),Object.freeze&&(Object.freeze(re.props),Object.freeze(re)),re}function S(re,ue,fe,Ee,Ue,Be,Me,Jt){var lt=ue.children;if(lt!==void 0)if(Ee)if(pe(lt)){for(Ee=0;Ee React keys must be passed directly to JSX without using spread: let props = %s; - <%s key={someKey} {...props} />`,De,Et,ut,Et),he[Et+De]=!0)}if(Et=null,me!==void 0&&(i(me),Et=""+me),c(pe)&&(i(pe.key),Et=""+pe.key),"key"in pe){me={};for(var mt in pe)mt!=="key"&&(me[mt]=pe[mt])}else me=pe;return Et&&f(me,typeof W=="function"?W.displayName||W.name||"Unknown":W),b(W,Et,ot,Ue,o(),me,Ye,Ji)}function E(W){typeof W=="object"&&W!==null&&W.$$typeof===R&&W._store&&(W._store.validated=1)}var A=cn,R=Symbol.for("react.transitional.element"),N=Symbol.for("react.portal"),w=Symbol.for("react.fragment"),H=Symbol.for("react.strict_mode"),I=Symbol.for("react.profiler"),G=Symbol.for("react.consumer"),F=Symbol.for("react.context"),Y=Symbol.for("react.forward_ref"),K=Symbol.for("react.suspense"),se=Symbol.for("react.suspense_list"),Q=Symbol.for("react.memo"),le=Symbol.for("react.lazy"),ue=Symbol.for("react.activity"),Ie=Symbol.for("react.client.reference"),be=A.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Ae=Object.prototype.hasOwnProperty,fe=Array.isArray,Pe=console.createTask?console.createTask:function(){return null};A={"react-stack-bottom-frame":function(W){return W()}};var rt,de={},xe=A["react-stack-bottom-frame"].bind(A,u)(),Me=Pe(a(u)),he={};Wc.Fragment=w,Wc.jsx=function(W,pe,me,De,Ue){var ot=1e4>be.recentlyCreatedOwnerStacks++;return S(W,pe,me,!1,De,Ue,ot?Error("react-stack-top-frame"):xe,ot?Pe(a(W)):Me)},Wc.jsxs=function(W,pe,me,De,Ue){var ot=1e4>be.recentlyCreatedOwnerStacks++;return S(W,pe,me,!0,De,Ue,ot?Error("react-stack-top-frame"):xe,ot?Pe(a(W)):Me)}}()),Wc}A_.exports=DD();var Hl=A_.exports,O_={exports:{}},Ig={exports:{}},Pg={};/** + <%s key={someKey} {...props} />`,Ee,lt,Pt,lt),Qe[lt+Ee]=!0)}if(lt=null,fe!==void 0&&(i(fe),lt=""+fe),c(ue)&&(i(ue.key),lt=""+ue.key),"key"in ue){fe={};for(var Ai in ue)Ai!=="key"&&(fe[Ai]=ue[Ai])}else fe=ue;return lt&&f(fe,typeof re=="function"?re.displayName||re.name||"Unknown":re),b(re,lt,Be,Ue,o(),fe,Me,Jt)}function E(re){typeof re=="object"&&re!==null&&re.$$typeof===R&&re._store&&(re._store.validated=1)}var A=dn,R=Symbol.for("react.transitional.element"),I=Symbol.for("react.portal"),w=Symbol.for("react.fragment"),z=Symbol.for("react.strict_mode"),F=Symbol.for("react.profiler"),X=Symbol.for("react.consumer"),H=Symbol.for("react.context"),Y=Symbol.for("react.forward_ref"),G=Symbol.for("react.suspense"),ee=Symbol.for("react.suspense_list"),Q=Symbol.for("react.memo"),oe=Symbol.for("react.lazy"),ce=Symbol.for("react.activity"),Ie=Symbol.for("react.client.reference"),me=A.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Ae=Object.prototype.hasOwnProperty,pe=Array.isArray,we=console.createTask?console.createTask:function(){return null};A={"react-stack-bottom-frame":function(re){return re()}};var He,le={},ye=A["react-stack-bottom-frame"].bind(A,u)(),ke=we(a(u)),Qe={};Yc.Fragment=w,Yc.jsx=function(re,ue,fe,Ee,Ue){var Be=1e4>me.recentlyCreatedOwnerStacks++;return S(re,ue,fe,!1,Ee,Ue,Be?Error("react-stack-top-frame"):ye,Be?we(a(re)):ke)},Yc.jsxs=function(re,ue,fe,Ee,Ue){var Be=1e4>me.recentlyCreatedOwnerStacks++;return S(re,ue,fe,!0,Ee,Ue,Be?Error("react-stack-top-frame"):ye,Be?we(a(re)):ke)}}()),Yc}A_.exports=DD();var Rf=A_.exports,O_={exports:{}},Ig={exports:{}},Pg={};/** * @license React * scheduler.development.js * @@ -39,7 +39,7 @@ React keys must be passed directly to JSX without using spread: * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var R_;function kD(){return R_||(R_=1,function(s){(function(){function e(){if(K=!1,ue){var de=s.unstable_now();Ae=de;var xe=!0;try{e:{F=!1,Y&&(Y=!1,Q(Ie),Ie=-1),G=!0;var Me=I;try{t:{for(c(de),H=a(R);H!==null&&!(H.expirationTime>de&&m());){var he=H.callback;if(typeof he=="function"){H.callback=null,I=H.priorityLevel;var W=he(H.expirationTime<=de);if(de=s.unstable_now(),typeof W=="function"){H.callback=W,c(de),xe=!0;break t}H===a(R)&&o(R),c(de)}else o(R);H=a(R)}if(H!==null)xe=!0;else{var pe=a(N);pe!==null&&b(f,pe.startTime-de),xe=!1}}break e}finally{H=null,I=Me,G=!1}xe=void 0}}finally{xe?fe():ue=!1}}}function i(de,xe){var Me=de.length;de.push(xe);e:for(;0>>1,W=de[he];if(0>>1;heu(De,Me))Ueu(ot,De)?(de[he]=ot,de[Ue]=Me,he=Ue):(de[he]=De,de[me]=Me,he=me);else if(Ueu(ot,Me))de[he]=ot,de[Ue]=Me,he=Ue;else break e}}return xe}function u(de,xe){var Me=de.sortIndex-xe.sortIndex;return Me!==0?Me:de.id-xe.id}function c(de){for(var xe=a(N);xe!==null;){if(xe.callback===null)o(N);else if(xe.startTime<=de)o(N),xe.sortIndex=xe.expirationTime,i(R,xe);else break;xe=a(N)}}function f(de){if(Y=!1,c(de),!F)if(a(R)!==null)F=!0,ue||(ue=!0,fe());else{var xe=a(N);xe!==null&&b(f,xe.startTime-de)}}function m(){return K?!0:!(s.unstable_now()-Aede||125he?(de.sortIndex=Me,i(N,de),a(R)===null&&de===a(N)&&(Y?(Q(Ie),Ie=-1):Y=!0,b(f,Me-he))):(de.sortIndex=W,i(R,de),F||G||(F=!0,ue||(ue=!0,fe()))),de},s.unstable_shouldYield=m,s.unstable_wrapCallback=function(de){var xe=I;return function(){var Me=I;I=xe;try{return de.apply(this,arguments)}finally{I=Me}}},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()}(Pg)),Pg}var M_;function OD(){return M_||(M_=1,Ig.exports=kD()),Ig.exports}var Ng={exports:{}},Ni={};/** + */var R_;function kD(){return R_||(R_=1,function(s){(function(){function e(){if(G=!1,ce){var le=s.unstable_now();Ae=le;var ye=!0;try{e:{H=!1,Y&&(Y=!1,Q(Ie),Ie=-1),X=!0;var ke=F;try{t:{for(c(le),z=a(R);z!==null&&!(z.expirationTime>le&&m());){var Qe=z.callback;if(typeof Qe=="function"){z.callback=null,F=z.priorityLevel;var re=Qe(z.expirationTime<=le);if(le=s.unstable_now(),typeof re=="function"){z.callback=re,c(le),ye=!0;break t}z===a(R)&&o(R),c(le)}else o(R);z=a(R)}if(z!==null)ye=!0;else{var ue=a(I);ue!==null&&b(f,ue.startTime-le),ye=!1}}break e}finally{z=null,F=ke,X=!1}ye=void 0}}finally{ye?pe():ce=!1}}}function i(le,ye){var ke=le.length;le.push(ye);e:for(;0>>1,re=le[Qe];if(0>>1;Qeu(Ee,ke))Ueu(Be,Ee)?(le[Qe]=Be,le[Ue]=ke,Qe=Ue):(le[Qe]=Ee,le[fe]=ke,Qe=fe);else if(Ueu(Be,ke))le[Qe]=Be,le[Ue]=ke,Qe=Ue;else break e}}return ye}function u(le,ye){var ke=le.sortIndex-ye.sortIndex;return ke!==0?ke:le.id-ye.id}function c(le){for(var ye=a(I);ye!==null;){if(ye.callback===null)o(I);else if(ye.startTime<=le)o(I),ye.sortIndex=ye.expirationTime,i(R,ye);else break;ye=a(I)}}function f(le){if(Y=!1,c(le),!H)if(a(R)!==null)H=!0,ce||(ce=!0,pe());else{var ye=a(I);ye!==null&&b(f,ye.startTime-le)}}function m(){return G?!0:!(s.unstable_now()-Aele||125Qe?(le.sortIndex=ke,i(I,le),a(R)===null&&le===a(I)&&(Y?(Q(Ie),Ie=-1):Y=!0,b(f,ke-Qe))):(le.sortIndex=re,i(R,le),H||X||(H=!0,ce||(ce=!0,pe()))),le},s.unstable_shouldYield=m,s.unstable_wrapCallback=function(le){var ye=F;return function(){var ke=F;F=ye;try{return le.apply(this,arguments)}finally{F=ke}}},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()}(Pg)),Pg}var M_;function OD(){return M_||(M_=1,Ig.exports=kD()),Ig.exports}var Ng={exports:{}},Fi={};/** * @license React * react-dom.development.js * @@ -47,11 +47,11 @@ React keys must be passed directly to JSX without using spread: * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var L_;function RD(){return L_||(L_=1,function(){function s(){}function e(E){return""+E}function i(E,A,R){var N=3` tag.%s',R),typeof E=="string"&&typeof A=="object"&&A!==null&&typeof A.as=="string"){R=A.as;var N=a(R,A.crossOrigin);m.d.L(E,R,{crossOrigin:N,integrity:typeof A.integrity=="string"?A.integrity:void 0,nonce:typeof A.nonce=="string"?A.nonce:void 0,type:typeof A.type=="string"?A.type:void 0,fetchPriority:typeof A.fetchPriority=="string"?A.fetchPriority:void 0,referrerPolicy:typeof A.referrerPolicy=="string"?A.referrerPolicy:void 0,imageSrcSet:typeof A.imageSrcSet=="string"?A.imageSrcSet:void 0,imageSizes:typeof A.imageSizes=="string"?A.imageSizes:void 0,media:typeof A.media=="string"?A.media:void 0})}},Ni.preloadModule=function(E,A){var R="";typeof E=="string"&&E||(R+=" The `href` argument encountered was "+o(E)+"."),A!==void 0&&typeof A!="object"?R+=" The `options` argument encountered was "+o(A)+".":A&&"as"in A&&typeof A.as!="string"&&(R+=" The `as` option encountered was "+o(A.as)+"."),R&&console.error('ReactDOM.preloadModule(): Expected two arguments, a non-empty `href` string and, optionally, an `options` object with an `as` property valid for a `` tag.%s',R),typeof E=="string"&&(A?(R=a(A.as,A.crossOrigin),m.d.m(E,{as:typeof A.as=="string"&&A.as!=="script"?A.as:void 0,crossOrigin:R,integrity:typeof A.integrity=="string"?A.integrity:void 0})):m.d.m(E))},Ni.requestFormReset=function(E){m.d.r(E)},Ni.unstable_batchedUpdates=function(E,A){return E(A)},Ni.useFormState=function(E,A,R){return c().useFormState(E,A,R)},Ni.useFormStatus=function(){return c().useHostTransitionStatus()},Ni.version="19.1.0",typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())}()),Ni}var I_;function MD(){return I_||(I_=1,Ng.exports=RD()),Ng.exports}var Kc={};/** +See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),E}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var f=dn,m={d:{f:s,r:function(){throw Error("Invalid form element. requestFormReset must be passed a form that was rendered by React.")},D:s,C:s,L:s,m:s,X:s,S:s,M:s},p:0,findDOMNode:null},b=Symbol.for("react.portal"),S=f.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;typeof Map=="function"&&Map.prototype!=null&&typeof Map.prototype.forEach=="function"&&typeof Set=="function"&&Set.prototype!=null&&typeof Set.prototype.clear=="function"&&typeof Set.prototype.forEach=="function"||console.error("React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),Fi.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=m,Fi.createPortal=function(E,A){var R=2` tag.%s',R),typeof E=="string"&&typeof A=="object"&&A!==null&&typeof A.as=="string"){R=A.as;var I=a(R,A.crossOrigin);m.d.L(E,R,{crossOrigin:I,integrity:typeof A.integrity=="string"?A.integrity:void 0,nonce:typeof A.nonce=="string"?A.nonce:void 0,type:typeof A.type=="string"?A.type:void 0,fetchPriority:typeof A.fetchPriority=="string"?A.fetchPriority:void 0,referrerPolicy:typeof A.referrerPolicy=="string"?A.referrerPolicy:void 0,imageSrcSet:typeof A.imageSrcSet=="string"?A.imageSrcSet:void 0,imageSizes:typeof A.imageSizes=="string"?A.imageSizes:void 0,media:typeof A.media=="string"?A.media:void 0})}},Fi.preloadModule=function(E,A){var R="";typeof E=="string"&&E||(R+=" The `href` argument encountered was "+o(E)+"."),A!==void 0&&typeof A!="object"?R+=" The `options` argument encountered was "+o(A)+".":A&&"as"in A&&typeof A.as!="string"&&(R+=" The `as` option encountered was "+o(A.as)+"."),R&&console.error('ReactDOM.preloadModule(): Expected two arguments, a non-empty `href` string and, optionally, an `options` object with an `as` property valid for a `` tag.%s',R),typeof E=="string"&&(A?(R=a(A.as,A.crossOrigin),m.d.m(E,{as:typeof A.as=="string"&&A.as!=="script"?A.as:void 0,crossOrigin:R,integrity:typeof A.integrity=="string"?A.integrity:void 0})):m.d.m(E))},Fi.requestFormReset=function(E){m.d.r(E)},Fi.unstable_batchedUpdates=function(E,A){return E(A)},Fi.useFormState=function(E,A,R){return c().useFormState(E,A,R)},Fi.useFormStatus=function(){return c().useHostTransitionStatus()},Fi.version="19.1.0",typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())}()),Fi}var I_;function MD(){return I_||(I_=1,Ng.exports=RD()),Ng.exports}var Qc={};/** * @license React * react-dom-client.development.js * @@ -59,61 +59,61 @@ See https://react.dev/link/invalid-hook-call for tips about how to debug and fix * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var P_;function LD(){return P_||(P_=1,function(){function s(t,n){for(t=t.memoizedState;t!==null&&0=n.length)return l;var d=n[r],p=Mi(t)?t.slice():Je({},t);return p[d]=e(t[d],n,r+1,l),p}function i(t,n,r){if(n.length!==r.length)console.warn("copyWithRename() expects paths of the same length");else{for(var l=0;llr?console.error("Unexpected pop."):(n!==cb[lr]&&console.error("Unexpected Fiber popped."),t.current=ub[lr],ub[lr]=null,cb[lr]=null,lr--)}function Ae(t,n,r){lr++,ub[lr]=t.current,cb[lr]=r,t.current=n}function fe(t){return t===null&&console.error("Expected host context to exist. This error is likely caused by a bug in React. Please file an issue."),t}function Pe(t,n){Ae(ro,n,t),Ae(Vh,t,t),Ae(ao,null,t);var r=n.nodeType;switch(r){case 9:case 11:r=r===9?"#document":"#fragment",n=(n=n.documentElement)&&(n=n.namespaceURI)?xC(n):_r;break;default:if(r=n.tagName,n=n.namespaceURI)n=xC(n),n=EC(n,r);else switch(r){case"svg":n=Gc;break;case"math":n=wg;break;default:n=_r}}r=r.toLowerCase(),r=bn(null,r),r={context:n,ancestorInfo:r},be(ao,t),Ae(ao,r,t)}function rt(t){be(ao,t),be(Vh,t),be(ro,t)}function de(){return fe(ao.current)}function xe(t){t.memoizedState!==null&&Ae(zm,t,t);var n=fe(ao.current),r=t.type,l=EC(n.context,r);r=bn(n.ancestorInfo,r),l={context:l,ancestorInfo:r},n!==l&&(Ae(Vh,t,t),Ae(ao,l,t))}function Me(t){Vh.current===t&&(be(ao,t),be(Vh,t)),zm.current===t&&(be(zm,t),Df._currentValue=Fl)}function he(t){return typeof Symbol=="function"&&Symbol.toStringTag&&t[Symbol.toStringTag]||t.constructor.name||"Object"}function W(t){try{return pe(t),!1}catch{return!0}}function pe(t){return""+t}function me(t,n){if(W(t))return console.error("The provided `%s` attribute is an unsupported type %s. This value must be coerced to a string before using it here.",n,he(t)),pe(t)}function De(t,n){if(W(t))return console.error("The provided `%s` CSS property is an unsupported type %s. This value must be coerced to a string before using it here.",n,he(t)),pe(t)}function Ue(t){if(W(t))return console.error("Form field values (value, checked, defaultValue, or defaultChecked props) must be strings, not %s. This value must be coerced to a string before using it here.",he(t)),pe(t)}function ot(t){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")return!1;var n=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(n.isDisabled)return!0;if(!n.supportsFiber)return console.error("The installed version of React DevTools is too old and will not work with the current version of React. Please update React DevTools. https://react.dev/link/react-devtools"),!0;try{fc=n.inject(t),$i=n}catch(r){console.error("React instrumentation encountered an error: %s.",r)}return!!n.checkDCE}function Ye(t){if(typeof uL=="function"&&cL(t),$i&&typeof $i.setStrictMode=="function")try{$i.setStrictMode(fc,t)}catch(n){Ta||(Ta=!0,console.error("React instrumentation encountered an error: %s",n))}}function Ji(t){Ee=t}function Et(){Ee!==null&&typeof Ee.markCommitStopped=="function"&&Ee.markCommitStopped()}function ut(t){Ee!==null&&typeof Ee.markComponentRenderStarted=="function"&&Ee.markComponentRenderStarted(t)}function mt(){Ee!==null&&typeof Ee.markComponentRenderStopped=="function"&&Ee.markComponentRenderStopped()}function ji(t){Ee!==null&&typeof Ee.markRenderStarted=="function"&&Ee.markRenderStarted(t)}function jt(){Ee!==null&&typeof Ee.markRenderStopped=="function"&&Ee.markRenderStopped()}function li(t,n){Ee!==null&&typeof Ee.markStateUpdateScheduled=="function"&&Ee.markStateUpdateScheduled(t,n)}function zi(t){return t>>>=0,t===0?32:31-(dL(t)/hL|0)|0}function Kt(t){if(t&1)return"SyncHydrationLane";if(t&2)return"Sync";if(t&4)return"InputContinuousHydration";if(t&8)return"InputContinuous";if(t&16)return"DefaultHydration";if(t&32)return"Default";if(t&128)return"TransitionHydration";if(t&4194048)return"Transition";if(t&62914560)return"Retry";if(t&67108864)return"SelectiveHydration";if(t&134217728)return"IdleHydration";if(t&268435456)return"Idle";if(t&536870912)return"Offscreen";if(t&1073741824)return"Deferred"}function ct(t){var n=t&42;if(n!==0)return n;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return console.error("Should have found matching lanes. This is a bug in React."),t}}function _s(t,n,r){var l=t.pendingLanes;if(l===0)return 0;var d=0,p=t.suspendedLanes,T=t.pingedLanes;t=t.warmLanes;var C=l&134217727;return C!==0?(l=C&~p,l!==0?d=ct(l):(T&=C,T!==0?d=ct(T):r||(r=C&~t,r!==0&&(d=ct(r))))):(C=l&~p,C!==0?d=ct(C):T!==0?d=ct(T):r||(r=l&~t,r!==0&&(d=ct(r)))),d===0?0:n!==0&&n!==d&&!(n&p)&&(p=d&-d,r=n&-n,p>=r||p===32&&(r&4194048)!==0)?n:d}function Ei(t,n){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&n)===0}function Fo(t,n){switch(t){case 1:case 2:case 4:case 8:case 64:return n+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return console.error("Should have found matching lanes. This is a bug in React."),-1}}function we(){var t=Vm;return Vm<<=1,!(Vm&4194048)&&(Vm=256),t}function Ba(){var t=qm;return qm<<=1,!(qm&62914560)&&(qm=4194304),t}function Ws(t){for(var n=[],r=0;31>r;r++)n.push(t);return n}function Qs(t,n){t.pendingLanes|=n,n!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function Ir(t,n,r,l,d,p){var T=t.pendingLanes;t.pendingLanes=r,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=r,t.entangledLanes&=r,t.errorRecoveryDisabledLanes&=r,t.shellSuspendCounter=0;var C=t.entanglements,O=t.expirationTimes,L=t.hiddenUpdates;for(r=T&~r;0$h&&console.error("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}function vn(t){if(yb===void 0)try{throw Error()}catch(r){var n=r.stack.trim().match(/\n( *(at )?)/);yb=n&&n[1]||"",oA=-1=n.length)return l;var d=n[r],p=Pi(t)?t.slice():tt({},t);return p[d]=e(t[d],n,r+1,l),p}function i(t,n,r){if(n.length!==r.length)console.warn("copyWithRename() expects paths of the same length");else{for(var l=0;llr?console.error("Unexpected pop."):(n!==cb[lr]&&console.error("Unexpected Fiber popped."),t.current=ub[lr],ub[lr]=null,cb[lr]=null,lr--)}function Ae(t,n,r){lr++,ub[lr]=t.current,cb[lr]=r,t.current=n}function pe(t){return t===null&&console.error("Expected host context to exist. This error is likely caused by a bug in React. Please file an issue."),t}function we(t,n){Ae(ro,n,t),Ae(zh,t,t),Ae(ao,null,t);var r=n.nodeType;switch(r){case 9:case 11:r=r===9?"#document":"#fragment",n=(n=n.documentElement)&&(n=n.namespaceURI)?xC(n):_r;break;default:if(r=n.tagName,n=n.namespaceURI)n=xC(n),n=EC(n,r);else switch(r){case"svg":n=$c;break;case"math":n=wg;break;default:n=_r}}r=r.toLowerCase(),r=_n(null,r),r={context:n,ancestorInfo:r},me(ao,t),Ae(ao,r,t)}function He(t){me(ao,t),me(zh,t),me(ro,t)}function le(){return pe(ao.current)}function ye(t){t.memoizedState!==null&&Ae(zm,t,t);var n=pe(ao.current),r=t.type,l=EC(n.context,r);r=_n(n.ancestorInfo,r),l={context:l,ancestorInfo:r},n!==l&&(Ae(zh,t,t),Ae(ao,l,t))}function ke(t){zh.current===t&&(me(ao,t),me(zh,t)),zm.current===t&&(me(zm,t),wf._currentValue=Fl)}function Qe(t){return typeof Symbol=="function"&&Symbol.toStringTag&&t[Symbol.toStringTag]||t.constructor.name||"Object"}function re(t){try{return ue(t),!1}catch{return!0}}function ue(t){return""+t}function fe(t,n){if(re(t))return console.error("The provided `%s` attribute is an unsupported type %s. This value must be coerced to a string before using it here.",n,Qe(t)),ue(t)}function Ee(t,n){if(re(t))return console.error("The provided `%s` CSS property is an unsupported type %s. This value must be coerced to a string before using it here.",n,Qe(t)),ue(t)}function Ue(t){if(re(t))return console.error("Form field values (value, checked, defaultValue, or defaultChecked props) must be strings, not %s. This value must be coerced to a string before using it here.",Qe(t)),ue(t)}function Be(t){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")return!1;var n=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(n.isDisabled)return!0;if(!n.supportsFiber)return console.error("The installed version of React DevTools is too old and will not work with the current version of React. Please update React DevTools. https://react.dev/link/react-devtools"),!0;try{hc=n.inject(t),Xi=n}catch(r){console.error("React instrumentation encountered an error: %s.",r)}return!!n.checkDCE}function Me(t){if(typeof u6=="function"&&c6(t),Xi&&typeof Xi.setStrictMode=="function")try{Xi.setStrictMode(hc,t)}catch(n){Ta||(Ta=!0,console.error("React instrumentation encountered an error: %s",n))}}function Jt(t){xe=t}function lt(){xe!==null&&typeof xe.markCommitStopped=="function"&&xe.markCommitStopped()}function Pt(t){xe!==null&&typeof xe.markComponentRenderStarted=="function"&&xe.markComponentRenderStarted(t)}function Ai(){xe!==null&&typeof xe.markComponentRenderStopped=="function"&&xe.markComponentRenderStopped()}function Vt(t){xe!==null&&typeof xe.markRenderStarted=="function"&&xe.markRenderStarted(t)}function Nt(){xe!==null&&typeof xe.markRenderStopped=="function"&&xe.markRenderStopped()}function wi(t,n){xe!==null&&typeof xe.markStateUpdateScheduled=="function"&&xe.markStateUpdateScheduled(t,n)}function ei(t){return t>>>=0,t===0?32:31-(d6(t)/h6|0)|0}function qi(t){if(t&1)return"SyncHydrationLane";if(t&2)return"Sync";if(t&4)return"InputContinuousHydration";if(t&8)return"InputContinuous";if(t&16)return"DefaultHydration";if(t&32)return"Default";if(t&128)return"TransitionHydration";if(t&4194048)return"Transition";if(t&62914560)return"Retry";if(t&67108864)return"SelectiveHydration";if(t&134217728)return"IdleHydration";if(t&268435456)return"Idle";if(t&536870912)return"Offscreen";if(t&1073741824)return"Deferred"}function ct(t){var n=t&42;if(n!==0)return n;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return console.error("Should have found matching lanes. This is a bug in React."),t}}function Ut(t,n,r){var l=t.pendingLanes;if(l===0)return 0;var d=0,p=t.suspendedLanes,T=t.pingedLanes;t=t.warmLanes;var C=l&134217727;return C!==0?(l=C&~p,l!==0?d=ct(l):(T&=C,T!==0?d=ct(T):r||(r=C&~t,r!==0&&(d=ct(r))))):(C=l&~p,C!==0?d=ct(C):T!==0?d=ct(T):r||(r=l&~t,r!==0&&(d=ct(r)))),d===0?0:n!==0&&n!==d&&!(n&p)&&(p=d&-d,r=n&-n,p>=r||p===32&&(r&4194048)!==0)?n:d}function wt(t,n){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&n)===0}function Fo(t,n){switch(t){case 1:case 2:case 4:case 8:case 64:return n+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return console.error("Should have found matching lanes. This is a bug in React."),-1}}function De(){var t=Vm;return Vm<<=1,!(Vm&4194048)&&(Vm=256),t}function Ba(){var t=qm;return qm<<=1,!(qm&62914560)&&(qm=4194304),t}function Ws(t){for(var n=[],r=0;31>r;r++)n.push(t);return n}function Qs(t,n){t.pendingLanes|=n,n!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function Ir(t,n,r,l,d,p){var T=t.pendingLanes;t.pendingLanes=r,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=r,t.entangledLanes&=r,t.errorRecoveryDisabledLanes&=r,t.shellSuspendCounter=0;var C=t.entanglements,O=t.expirationTimes,L=t.hiddenUpdates;for(r=T&~r;0qh&&console.error("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}function bn(t){if(yb===void 0)try{throw Error()}catch(r){var n=r.stack.trim().match(/\n( *(at )?)/);yb=n&&n[1]||"",oA=-1)":-1T||L[p]!==J[T]){var ne=` -`+L[p].replace(" at new "," at ");return t.displayName&&ne.includes("")&&(ne=ne.replace("",t.displayName)),typeof t=="function"&&bb.set(t,ne),ne}while(1<=p&&0<=T);break}}}finally{vb=!1,ie.H=l,Ud(),Error.prepareStackTrace=r}return L=(L=t?t.displayName||t.name:"")?vn(L):"",typeof t=="function"&&bb.set(t,L),L}function Fd(t){var n=Error.prepareStackTrace;if(Error.prepareStackTrace=void 0,t=t.stack,Error.prepareStackTrace=n,t.startsWith(`Error: react-stack-top-frame +`+yb+t+oA}function Ud(t,n){if(!t||vb)return"";var r=bb.get(t);if(r!==void 0)return r;vb=!0,r=Error.prepareStackTrace,Error.prepareStackTrace=void 0;var l=null;l=ie.H,ie.H=null,Pd();try{var d={DetermineComponentFrameRoot:function(){try{if(n){var K=function(){throw Error()};if(Object.defineProperty(K.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(K,[])}catch(Oe){var se=Oe}Reflect.construct(t,[],K)}else{try{K.call()}catch(Oe){se=Oe}t.call(K.prototype)}}else{try{throw Error()}catch(Oe){se=Oe}(K=t())&&typeof K.catch=="function"&&K.catch(function(){})}}catch(Oe){if(Oe&&se&&typeof Oe.stack=="string")return[Oe.stack,se.stack]}return[null,null]}};d.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var p=Object.getOwnPropertyDescriptor(d.DetermineComponentFrameRoot,"name");p&&p.configurable&&Object.defineProperty(d.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var T=d.DetermineComponentFrameRoot(),C=T[0],O=T[1];if(C&&O){var L=C.split(` +`),Z=O.split(` +`);for(T=p=0;pT||L[p]!==Z[T]){var ne=` +`+L[p].replace(" at new "," at ");return t.displayName&&ne.includes("")&&(ne=ne.replace("",t.displayName)),typeof t=="function"&&bb.set(t,ne),ne}while(1<=p&&0<=T);break}}}finally{vb=!1,ie.H=l,Nd(),Error.prepareStackTrace=r}return L=(L=t?t.displayName||t.name:"")?bn(L):"",typeof t=="function"&&bb.set(t,L),L}function Bd(t){var n=Error.prepareStackTrace;if(Error.prepareStackTrace=void 0,t=t.stack,Error.prepareStackTrace=n,t.startsWith(`Error: react-stack-top-frame `)&&(t=t.slice(29)),n=t.indexOf(` `),n!==-1&&(t=t.slice(n+1)),n=t.indexOf("react-stack-bottom-frame"),n!==-1&&(n=t.lastIndexOf(` -`,n)),n!==-1)t=t.slice(0,n);else return"";return t}function Hd(t){switch(t.tag){case 26:case 27:case 5:return vn(t.type);case 16:return vn("Lazy");case 13:return vn("Suspense");case 19:return vn("SuspenseList");case 0:case 15:return Bd(t.type,!1);case 11:return Bd(t.type.render,!1);case 1:return Bd(t.type,!0);case 31:return vn("Activity");default:return""}}function Ho(t){try{var n="";do{n+=Hd(t);var r=t._debugInfo;if(r)for(var l=r.length-1;0<=l;l--){var d=r[l];if(typeof d.name=="string"){var p=n,T=d.env,C=vn(d.name+(T?" ["+T+"]":""));n=p+C}}t=t.return}while(t);return n}catch(O){return` +`,n)),n!==-1)t=t.slice(0,n);else return"";return t}function Fd(t){switch(t.tag){case 26:case 27:case 5:return bn(t.type);case 16:return bn("Lazy");case 13:return bn("Suspense");case 19:return bn("SuspenseList");case 0:case 15:return Ud(t.type,!1);case 11:return Ud(t.type.render,!1);case 1:return Ud(t.type,!0);case 31:return bn("Activity");default:return""}}function Ho(t){try{var n="";do{n+=Fd(t);var r=t._debugInfo;if(r)for(var l=r.length-1;0<=l;l--){var d=r[l];if(typeof d.name=="string"){var p=n,T=d.env,C=bn(d.name+(T?" ["+T+"]":""));n=p+C}}t=t.return}while(t);return n}catch(O){return` Error generating stack: `+O.message+` -`+O.stack}}function Ci(t){return(t=t?t.displayName||t.name:"")?vn(t):""}function wu(){if(Vn===null)return null;var t=Vn._debugOwner;return t!=null?le(t):null}function Hy(){if(Vn===null)return"";var t=Vn;try{var n="";switch(t.tag===6&&(t=t.return),t.tag){case 26:case 27:case 5:n+=vn(t.type);break;case 13:n+=vn("Suspense");break;case 19:n+=vn("SuspenseList");break;case 31:n+=vn("Activity");break;case 30:case 0:case 15:case 1:t._debugOwner||n!==""||(n+=Ci(t.type));break;case 11:t._debugOwner||n!==""||(n+=Ci(t.type.render))}for(;t;)if(typeof t.tag=="number"){var r=t;t=r._debugOwner;var l=r._debugStack;t&&l&&(typeof l!="string"&&(r._debugStack=l=Fd(l)),l!==""&&(n+=` +`+O.stack}}function Di(t){return(t=t?t.displayName||t.name:"")?bn(t):""}function Au(){if(qn===null)return null;var t=qn._debugOwner;return t!=null?oe(t):null}function Hy(){if(qn===null)return"";var t=qn;try{var n="";switch(t.tag===6&&(t=t.return),t.tag){case 26:case 27:case 5:n+=bn(t.type);break;case 13:n+=bn("Suspense");break;case 19:n+=bn("SuspenseList");break;case 31:n+=bn("Activity");break;case 30:case 0:case 15:case 1:t._debugOwner||n!==""||(n+=Di(t.type));break;case 11:t._debugOwner||n!==""||(n+=Di(t.type.render))}for(;t;)if(typeof t.tag=="number"){var r=t;t=r._debugOwner;var l=r._debugStack;t&&l&&(typeof l!="string"&&(r._debugStack=l=Bd(l)),l!==""&&(n+=` `+l))}else if(t.debugStack!=null){var d=t.debugStack;(t=t.owner)&&d&&(n+=` -`+Fd(d))}else break;var p=n}catch(T){p=` +`+Bd(d))}else break;var p=n}catch(T){p=` Error generating stack: `+T.message+` -`+T.stack}return p}function Re(t,n,r,l,d,p,T){var C=Vn;In(t);try{return t!==null&&t._debugTask?t._debugTask.run(n.bind(null,r,l,d,p,T)):n(r,l,d,p,T)}finally{In(C)}throw Error("runWithFiberInDEV should never be called in production. This is a bug in React.")}function In(t){ie.getCurrentStack=t===null?null:Hy,xa=!1,Vn=t}function Ai(t){switch(typeof t){case"bigint":case"boolean":case"number":case"string":case"undefined":return t;case"object":return Ue(t),t;default:return""}}function _t(t){var n=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function jy(t){var n=_t(t)?"checked":"value",r=Object.getOwnPropertyDescriptor(t.constructor.prototype,n);Ue(t[n]);var l=""+t[n];if(!t.hasOwnProperty(n)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var d=r.get,p=r.set;return Object.defineProperty(t,n,{configurable:!0,get:function(){return d.call(this)},set:function(T){Ue(T),l=""+T,p.call(this,T)}}),Object.defineProperty(t,n,{enumerable:r.enumerable}),{getValue:function(){return l},setValue:function(T){Ue(T),l=""+T},stopTracking:function(){t._valueTracker=null,delete t[n]}}}}function za(t){t._valueTracker||(t._valueTracker=jy(t))}function jo(t){if(!t)return!1;var n=t._valueTracker;if(!n)return!0;var r=n.getValue(),l="";return t&&(l=_t(t)?t.checked?"true":"false":t.value),t=l,t!==r?(n.setValue(t),!0):!1}function Du(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}function si(t){return t.replace(yL,function(n){return"\\"+n.charCodeAt(0).toString(16)+" "})}function kt(t,n){n.checked===void 0||n.defaultChecked===void 0||uA||(console.error("%s contains an input of type %s with both checked and defaultChecked props. Input elements must be either controlled or uncontrolled (specify either the checked prop, or the defaultChecked prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://react.dev/link/controlled-components",wu()||"A component",n.type),uA=!0),n.value===void 0||n.defaultValue===void 0||lA||(console.error("%s contains an input of type %s with both value and defaultValue props. Input elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://react.dev/link/controlled-components",wu()||"A component",n.type),lA=!0)}function ku(t,n,r,l,d,p,T,C){t.name="",T!=null&&typeof T!="function"&&typeof T!="symbol"&&typeof T!="boolean"?(me(T,"type"),t.type=T):t.removeAttribute("type"),n!=null?T==="number"?(n===0&&t.value===""||t.value!=n)&&(t.value=""+Ai(n)):t.value!==""+Ai(n)&&(t.value=""+Ai(n)):T!=="submit"&&T!=="reset"||t.removeAttribute("value"),n!=null?jd(t,T,Ai(n)):r!=null?jd(t,T,Ai(r)):l!=null&&t.removeAttribute("value"),d==null&&p!=null&&(t.defaultChecked=!!p),d!=null&&(t.checked=d&&typeof d!="function"&&typeof d!="symbol"),C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"?(me(C,"name"),t.name=""+Ai(C)):t.removeAttribute("name")}function zo(t,n,r,l,d,p,T,C){if(p!=null&&typeof p!="function"&&typeof p!="symbol"&&typeof p!="boolean"&&(me(p,"type"),t.type=p),n!=null||r!=null){if(!(p!=="submit"&&p!=="reset"||n!=null))return;r=r!=null?""+Ai(r):"",n=n!=null?""+Ai(n):r,C||n===t.value||(t.value=n),t.defaultValue=n}l=l??d,l=typeof l!="function"&&typeof l!="symbol"&&!!l,t.checked=C?t.checked:!!l,t.defaultChecked=!!l,T!=null&&typeof T!="function"&&typeof T!="symbol"&&typeof T!="boolean"&&(me(T,"name"),t.name=T)}function jd(t,n,r){n==="number"&&Du(t.ownerDocument)===t||t.defaultValue===""+r||(t.defaultValue=""+r)}function Fp(t,n){n.value==null&&(typeof n.children=="object"&&n.children!==null?nb.Children.forEach(n.children,function(r){r==null||typeof r=="string"||typeof r=="number"||typeof r=="bigint"||dA||(dA=!0,console.error("Cannot infer the option value of complex children. Pass a `value` prop or use a plain string as children to