diff --git a/README.md b/README.md index 9f3c24b..7a68b58 100644 --- a/README.md +++ b/README.md @@ -5,47 +5,54 @@

[WIP] Stremio Enhanced

## What is stremio enhanced ? -basically a stremio client with plugins and themes support, -it runs the stremio streaming server and opens this [url](https://app.strem.io/shell-v4.4) in electron (i know its probably not the best way to do it, but thats just how i got it working). +Basically a stremio client with plugins and themes support, +it runs the stremio service automatically and opens this [url](https://app.strem.io/shell-v4.4) in an electron app. -with this project you can make stremio look like this: +With this project you can make stremio look like this, for example: ![screenshot](https://github.com/REVENGE977/stremio-enhanced/raw/main/images/amoled_screenshot.png) -this theme can be found [here](https://github.com/REVENGE977/stremio-enhanced-community/blob/main/examples/amoled.theme.css), +this theme can be found [here](https://github.com/REVENGE977/stremio-enhanced-community/blob/main/examples/amoled.theme.css). ## Downloads -you can download the latest version from [here](https://github.com/REVENGE977/stremio-enhanced/releases) -or build it yourself +You can download the latest version from [here](https://github.com/REVENGE977/stremio-enhanced/releases), or build it yourself: ``` git clone https://github.com/REVENGE977/stremio-enhanced.git cd stremio-enhanced npm run package-win32 ``` -## How do i install themes/plugins ? -just go to the settings and scroll down and you should see a "OPEN THEMES FOLDER" button +## How do I install themes/plugins? +Just go to the settings and scroll down and you should see a "OPEN THEMES FOLDER" button click on it and it should open the themes folder to install themes simply move your theme into that folder and when you restart stremio enhanced you should be able to see your theme in the settings and a button to apply that theme. same for plugins, you just click on "OPEN PLUGINS FOLDER" and move your plugin into the plugins folder. ![settings_screenshot](https://github.com/REVENGE977/stremio-enhanced/raw/main/images/settings_screenshot.png) -## How do i make my own plugin ? -plugins are simply javascript files running on the client-side, so just write your javascript code like you normally would on client-side -and add .plugin.js at the end of the javascript file name, and move your javascript plugin to the plugins folder (%appdata%\stremio-enhanced\plugins) - -## How do i make my own theme ? -you just take the stock stremio css file and modify it -the stock css file can be found [here](https://github.com/REVENGE977/stremio-enhanced-community/blob/main/examples/stockstremio_unminified.theme.css) - -## Videos wont load ? -try this: -[download ffmpeg](https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip) and put it in the stremio-enhanced folder (you only need ffmpeg.exe, its in the bin folder). - -## "Your code sucks" -i know, i dont have much experience with electron, -you're free to improve it and make a [pull request](https://github.com/REVENGE977/stremio-enhanced/pulls). - - -## Todo -- might switch to [stremio web v5](https://github.com/Stremio/stremio-web) -- updater \ No newline at end of file +## How do I make my own plugin? +Plugins are simply javascript files running on the client-side, so just write your javascript code like you normally would on client-side +and add .plugin.js at the end of the javascript file name, and move your javascript plugin to the plugins folder (%appdata%\stremio-enhanced\plugins). + +As of version v0.3 you are required to provide meta data for the plugin, here is an example: +```js +/** + * @name YourPluginNameHere + * @description What does your plugin do? + * @updateUrl https://raw.githubusercontent.com/REVENGE977/BetterEpisodeList/main/BetterEpisodeList.plugin.js + * @version 1.0.0 + * @author AuthorName + */ +``` +## How do I make my own theme? +You just take the stock stremio css file and modify it. The stock css file can be found [here](https://github.com/REVENGE977/stremio-enhanced-community/blob/main/examples/stockstremio_unminified.theme.css). You can also just take the default theme yourself, by opening devtools and going to the Source tab, and there you will find the css file for the default theme. You can take it and put it [here](https://www.unminify2.com/) to unminify it and make it easier to read and modify. + +## Update v0.3 +- Now relies on [Stremio Service](https://github.com/Stremio/stremio-service) to run (if stremio service isn't installed it will guide the user to install it). This is means you will get a similar streaming experience to the official app. +- Checks if the installed version is the latest version or not. Startup checking can be disabled from the settings (not tested yet). +- Made a new plugin called "BetterEpisodesList." The idea is to add a new season option in shows that says "all." When the option is chosen, the plugin will take all of the episodes available in a show (except specials) and put them in one list for you, numbered as they are in one list. This is very useful for shows like One Piece, Where in other platforms the episodes are listed as they are in one season. This plugin brings that to Stremio. The plugin also adds a search bar for the user to search episodes, which is a feature apparent in [Stremio Web](https://web.stremio.com/). +- Now shows the list of plugins/themes in more details. It will show the details provided in the meta data (the first few comment lines). You can check examples/BetterEpisodesList.plugin.js. +- The source is a bit more organized now. +- Fixed the flag for --devtools. Now if the user launches stremio-enhanced with the flag --devtools it will open the F12 devtools on launch properly. +- Added the hotkey Ctrl+Shift+I to open the devtools. +- Added the flag --no-stremio-service for users who don't want to use stremio service and override the streaming server URL from the settings. +- Now sets the background to black on startup, so you don't get flashbanged on launch. +*Note: I've only tested the update on Windows.* \ No newline at end of file diff --git a/examples/BetterEpisodeList.plugin.js b/examples/BetterEpisodeList.plugin.js new file mode 100644 index 0000000..1a8fc8a --- /dev/null +++ b/examples/BetterEpisodeList.plugin.js @@ -0,0 +1,192 @@ +/** + * @name BetterEpisodeList + * @description Adds a search bar to search episodes either by name or number, and adds an option to show all episodes in one list. + * @updateUrl https://raw.githubusercontent.com/REVENGE977/BetterEpisodeList/main/BetterEpisodeList.plugin.js + * @version 1.0.0 + * @author REVENGE977 + */ + +//regex pattern for shows and movies urls +const regexPattern = /\/detail\/(series|movie)\/[a-zA-Z0-9]+(?:\/[a-zA-Z0-9]+)?(?:\/tt[0-9]+%3A\d+:\d+)?(?:\/[^\/]+)?\/?$/; + +window.addEventListener('popstate', () => { + console.log("[ BetterEpisodeList ] URL changed: " + window.location.href); + waitForElm('[name="season"]').then(() => { + if(regexPattern.test(window.location.href)) { + console.log("[ BetterEpisodeList ] regex matches!"); + if(document.getElementById("episode-search-field")) document.getElementById("episode-search-field").remove(); + if(document.getElementById("AllEpisodesPlugin")) document.getElementById("AllEpisodesPlugin").remove(); + + //insert episode search bar + addSearchBar(); + + //insert all option into the season selection + const seasonSelectMenu = document.getElementsByName("season")[0]; + addAllOption(seasonSelectMenu); + + seasonSelectMenu.addEventListener('change', (e) => { + let pluginAddedEpisodes = document.getElementsByName("allEpisodesPlugin-episode"); + + if (e.target.value === 'all') { + console.log('[ BetterEpisodeList ] Option All is selected!'); + let injector = angular.injector(['ng']); + let compile = injector.get('$compile'); + let container = document.getElementsByClassName('episodes-list')[0]; + let scope = angular.element(container).scope() + + scope.$apply(() => { + if(pluginAddedEpisodes.length > 0) { + pluginAddedEpisodes.forEach(element => { + if(element) element.style.display = "flex"; + }) + } else { + hideAddedEpisodes(); + addEpisodesToAll(compile, scope); + } + }); + } else if (e.target.value != 'all' && pluginAddedEpisodes.length > 0) { + console.log("[BetterEpisodeList] Hiding all episodes.") + pluginAddedEpisodes.forEach(element => { + if(element) element.style.display = "none"; + }) + } + }); + } + }) +}); + +function addSearchBar() { + let injector = angular.injector(['ng']); + let compile = injector.get('$compile'); + + let heading = document.querySelector(".episodes > .heading"); + let headingScope = angular.element(heading).scope(); + + let inputElm = document.createElement('input'); + inputElm.setAttribute("id", "episode-search-field"); + inputElm.setAttribute("tabindex", "-1"); + inputElm.setAttribute("placeholder", "Search episode by name or number"); + inputElm.setAttribute("type", "text"); + inputElm.setAttribute("class", "ng-pristine ng-valid ng-isolate-scope ng-empty ng-touched"); + inputElm.setAttribute("style", ` + width: -webkit-fill-available; + position: relative; + margin-top: 5%;`); + + heading.appendChild(inputElm); + compile(inputElm)(headingScope); + + inputElm.addEventListener("input", () => { + searchEpisodes(inputElm.value); + }) +} + +function addAllOption(seasonSelectMenu) { + let allOption = document.createElement('option'); + allOption.value = 'all'; + allOption.text = 'All'; + allOption.id = "AllEpisodesPlugin"; + + seasonSelectMenu.insertBefore(allOption, seasonSelectMenu.firstChild); + + return seasonSelectMenu; +} + +function addEpisodesToAll(compile, scope) { + const container = document.getElementsByClassName('episodes-list')[0]; + const episodes = scope.info.availableEpisodes || []; + + let episodesCounter = 0; + + episodes.forEach(episode => { + let isSpecialEpisode = episode.season == 0; + if(isSpecialEpisode) return; + episodesCounter++; + + let childScope = scope.$new(); + + childScope.libItem = scope.item; + childScope.metaItem = scope.info; + childScope.intent = "player"; + childScope.episode = episode; + + let li = document.createElement('li'); + + li.setAttribute('ng-click', `open({ libItem: libItem, metaItem: metaItem, video: episode, intent: "player" })`); + li.setAttribute('tabindex', '-1'); + li.setAttribute('title', `${episode.name}: Season ${episode.season}, Episode ${episode.number}, AllEpisode: ${episodesCounter}`); + li.setAttribute("ng-right-click", "!isUpcoming(episode) && contextMenuVideo(item, info, episode, $event)"); + li.setAttribute("name", "allEpisodesPlugin-episode"); + + li.innerHTML = ` +
+ +
+
+
${episodesCounter}. ${episode.title}
+ +
`; + + container.appendChild(li); + compile(li)(childScope); + }); +} + +function formatTimestamp(timestamp) { + try { + const date = new Date(timestamp); + const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + const formattedDate = `${date.getDate()} ${months[date.getMonth()]} ${date.getFullYear()}`; + return formattedDate; + } catch { + return 'N/A'; + } +} + +function waitForElm(selector) { + return new Promise(resolve => { + if (document.querySelector(selector)) { + return resolve(document.querySelector(selector)); + } + + const observer = new MutationObserver(() => { + if (document.querySelector(selector)) { + observer.disconnect(); + resolve(document.querySelector(selector)); + } + }); + + observer.observe(document.body, { + childList: true, + subtree: true + }); + }); +} + +function hideAddedEpisodes(){ + const container = document.getElementsByClassName('episodes-list')[0]; + var elements = container.children; + + for (var i = 0; i < elements.length; i++) { + elements[i].style.display = 'none'; + } +} + +function searchEpisodes(query) { + let liElements = document.querySelectorAll('li'); + let allEpisodes = Array.from(liElements).filter((liElement) => { + return liElement.querySelector('div.episode-details') !== null; + }); + + allEpisodes.forEach((episode) => { + let titleAttribute = episode.getAttribute('title').toLowerCase(); + if (titleAttribute && titleAttribute.includes(query.toLowerCase())) { + episode.style.display = 'flex'; + } else { + episode.style.display = 'none'; + } + }); +} \ No newline at end of file diff --git a/examples/amoled.theme.css b/examples/amoled.theme.css index 1bd3ecf..cab658b 100644 --- a/examples/amoled.theme.css +++ b/examples/amoled.theme.css @@ -1,889 +1,905 @@ -@font-face { - font-family: 'Open Sans'; - src: url("https://app.strem.io/shell-v4.4/fonts/Open-Sans/OpenSans-Light.ttf") format('truetype'); - font-weight: 300; - font-style: normal -} - -@font-face { - font-family: 'Open Sans'; - src: url("https://app.strem.io/shell-v4.4/fonts/Open-Sans/OpenSans-LightItalic.ttf") format('truetype'); - font-weight: 300; - font-style: italic -} - -@font-face { - font-family: 'stremio-icons'; - src: url('https://app.strem.io/shell-v4.4/fonts/stremio-icons.ttf?s2hw0t') format('truetype'), url('https://app.strem.io/shell-v4.4/fonts/stremio-icons.woff?s2hw0t') format('woff'), url('fonts/stremio-icons.svg?s2hw0t#stremio-icons') format('svg'); - font-weight: normal; - font-style: normal; - font-display: block; -} - -@font-face { - font-family: 'Open Sans'; - src: url("https://app.strem.io/shell-v4.4/fonts/Open-Sans/OpenSans-Regular.ttf") format('truetype'); - font-weight: 400; - font-style: normal -} - -@font-face { - font-family: 'Open Sans'; - src: url("https://app.strem.io/shell-v4.4/fonts/Open-Sans/OpenSans-Italic.ttf") format('truetype'); - font-weight: 400; - font-style: italic -} - -@font-face { - font-family: 'Open Sans'; - src: url("https://app.strem.io/shell-v4.4/fonts/Open-Sans/OpenSans-SemiBold.ttf") format('truetype'); - font-weight: 600; - font-style: normal -} - -@font-face { - font-family: 'Open Sans'; - src: url("https://app.strem.io/shell-v4.4/fonts/Open-Sans/OpenSans-SemiBoldItalic.ttf") format('truetype'); - font-weight: 600; - font-style: italic -} - -@font-face { - font-family: 'Open Sans'; - src: url("https://app.strem.io/shell-v4.4/fonts/Open-Sans/OpenSans-Bold.ttf") format('truetype'); - font-weight: 700; - font-style: normal -} +/** + * @name Amoled Theme + * @description A theme that uses amoled pitch black color. + * @website https://github.com/REVEMGE977/BetterEpisodeList + * @updateUrl https://raw.githubusercontent.com/REVENGE977/BetterEpisodeList/main/BetterEpisodeList.plugin.js + * @version 1.0.0 + * @author REVENGE977 + */ @font-face { - font-family: 'Open Sans'; - src: url("https://app.strem.io/shell-v4.4/fonts/Open-Sans/OpenSans-BoldItalic.ttf") format('truetype'); - font-weight: 700; - font-style: italic + font-family: 'PlusJakartaSans'; + src: url("https://app.strem.io/shell-v4.4/fonts/PlusJakartaSans.ttf") format('truetype') } -@font-face { - font-family: 'Lato'; - src: url("https://app.strem.io/shell-v4.4/fonts/Lato.ttf") format('truetype') -} - -@font-face { - font-family: 'LatoLight'; - src: url("https://app.strem.io/shell-v4.4/fonts/Lato-Light.ttf") format('truetype') -} - -@font-face { - font-family: 'PlusJakartaSans'; - src: url("https://app.strem.io/shell-v4.4/fonts/PlusJakartaSans.ttf") format('truetype') +h1 { + font: 24px/22px, Arial, Helvetica, sans-serif; + font-weight: 100; + text-transform: uppercase; + line-height: 1.2 } -h1 { - font: 24px/22px, Arial, Helvetica, sans-serif; - font-weight: 100; - text-transform: uppercase; - line-height: 1.2 +:root { + --topbar-height: 5rem; + --navbar-width: 5.5rem; + --text-size: 16px } * { - margin: 0; - padding: 0; - border: none; - list-style: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box + margin: 0; + padding: 0; + border: none; + list-style: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box } body, html { - height: 100%; - cursor: default; - overflow: hidden; - -webkit-font-smoothing: subpixel-antialiased; - background-color: transparent !important + height: 100%; + cursor: default; + overflow: hidden; + -webkit-font-smoothing: subpixel-antialiased; + background-color: transparent !important } html { - background-color: #0c0c11 !important + background-color: #0c0c11 !important; + font-size: var(--text-size); + font-family: PlusJakartaSans, Arial, Helvetica, sans-serif } body { - font: 13px/18px "PlusJakartaSans", Arial, Helvetica, sans-serif; - color: #fff !important + color: #fff !important } span { - cursor: inherit + cursor: inherit } h2 { - font: 28px "PlusJakartaSans", Verdana, Geneva, sans-serif + font-size: 1.5rem; + font-family: "PlusJakartaSans", Verdana, Geneva, sans-serif } h2.purple { - color: #c1b2cb + color: #c1b2cb } h2.white { - color: rgba(255, 255, 255, 0.55) + color: rgba(255, 255, 255, 0.55) } .icon { - background-repeat: no-repeat; - background-position: center + background-repeat: no-repeat; + background-position: center } a { - text-decoration: none; - color: inherit; - -webkit-user-drag: none; - outline: none + text-decoration: none; + color: inherit; + -webkit-user-drag: none; + outline: none } img { - -webkit-user-drag: none + -webkit-user-drag: none } input, select { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - height: 2.5rem; - padding: 0 1.5rem; - font-family: 'PlusJakartaSans'; - font-size: 1rem; - font-weight: 500; - color: #fff; - background-color: rgba(255, 255, 255, 0.05); - border-radius: 2.5rem; - outline: none; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 2.5rem; + padding: 0 1.5rem; + font-family: PlusJakartaSans, Arial, Helvetica, sans-serif; + font-size: 1rem; + font-weight: 500; + color: #fff; + background-color: rgba(255, 255, 255, 0.05); + border-radius: 2.5rem; + outline: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text } select { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: start; - -moz-box-pack: start; - -o-box-pack: start; - -ms-flex-pack: start; - -webkit-justify-content: flex-start; - justify-content: flex-start; - min-width: 11rem; - margin: 0; - padding-right: 2.5rem; - color: #fff; - text-transform: capitalize; - border: none; - outline: none; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: start; + -moz-box-pack: start; + -o-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + min-width: 11rem; + margin: 0; + padding-right: 2.5rem; + color: #fff; + text-transform: capitalize; + border: none; + outline: none; } select option { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - height: 2.5rem; - font-family: 'PlusJakartaSans'; - font-size: 1rem; - font-weight: 500; - color: #fff; - background-color: #282828 -} - -select:focus { - -webkit-box-shadow: 0 0 0 .2rem #fff; - box-shadow: 0 0 0 .2rem #fff -} + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 2.5rem; + font-family: PlusJakartaSans, Arial, Helvetica, sans-serif; + font-size: 1rem; + font-weight: 500; + color: #fff; + background-color: #0f0d26 +} + +/* select:focus { + -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff +} */ .custom-select { - position: relative; - height: 2.5rem; - border-radius: 2.5rem; - outline: none; + position: relative; + height: 2.5rem; + border-radius: 2.5rem; + outline: none; } .custom-select .icon { - position: absolute; - top: calc(50% - 0.55rem) !important; - right: 1rem !important; - width: 1rem !important; - color: #fff; - pointer-events: none !important; - opacity: .4; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; - filter: alpha(opacity=40) + position: absolute; + top: calc(50% - 0.55rem) !important; + right: 1rem !important; + width: 1rem !important; + color: #fff; + pointer-events: none !important; + opacity: .4; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + filter: alpha(opacity=40) } .custom-select select { - width: 100% + width: 100% } -.custom-select:focus { - -webkit-box-shadow: 0 0 0 .2rem #fff; - box-shadow: 0 0 0 .2rem #fff -} +/* .custom-select:focus { + -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff +} */ .segments { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; } .segments li { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 2.5rem; - margin-right: .5rem; - padding: 0 2rem; - border-radius: 2.5rem; - font-family: 'PlusJakartaSans'; - font-size: 1rem; - font-weight: 500; - text-transform: capitalize; - color: #fff; - cursor: pointer; - outline: none; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 2.5rem; + margin-right: .5rem; + padding: 0 2rem; + border-radius: 2.5rem; + font-family: PlusJakartaSans, Arial, Helvetica, sans-serif; + font-size: 1rem; + font-weight: 500; + text-transform: capitalize; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + white-space: nowrap; + color: #fff; + cursor: pointer; + outline: none; } .segments li:hover { - background-color: rgba(255, 255, 255, 0.05) + background-color: rgba(255, 255, 255, 0.05) } - +/* .segments li:focus { - -webkit-box-shadow: 0 0 0 .2rem #fff; - box-shadow: 0 0 0 .2rem #fff -} + -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff +} */ .segments li.selected { - background-color: #1245a6 + background-color: #1245a6 } .number-picker { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - margin: 5px 0; - border: 1px solid rgba(177, 116, 215, 0.5); + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + margin: 5px 0; + border: 1px solid rgba(177, 116, 215, 0.5); } .number-picker input { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - box-flex: 1; - -webkit-flex: 1 0 auto; - -ms-flex: 1 0 auto; - flex: 1 0 auto; - height: 40px; - min-width: 100px; - margin: 0; - border: none; - text-align: center; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -moz-appearance: textfield; + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + height: 40px; + min-width: 100px; + margin: 0; + border: none; + text-align: center; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -moz-appearance: textfield; } .number-picker input::-webkit-outer-spin-button, .number-picker input::-webkit-inner-spin-button { - -webkit-appearance: none + -webkit-appearance: none } .number-picker .button { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 40px; - width: 40px; - background-color: rgba(255, 255, 255, 0.15); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 40px; + width: 40px; + background-color: rgba(255, 255, 255, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } .number-picker .button:not(.disabled):hover { - background-color: rgba(255, 255, 255, 0.3) + background-color: rgba(255, 255, 255, 0.3) } .number-picker .button.disabled { - cursor: default; + cursor: default; } .number-picker .button.disabled .icon { - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50) + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) } input[type=checkbox] { - float: left; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - position: relative; - display: inline-block; - background: none; - font-size: 17px; - width: 2.5rem; - height: 1.5rem; - margin: .2em .7em; - background-color: rgba(255, 255, 255, 0.05); - padding: 0; - border: none; - border-radius: 1em -} - -input[type=checkbox]:focus { - -webkit-box-shadow: 0 0 0 .2rem #fff; - box-shadow: 0 0 0 .2rem #fff -} + float: left; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + position: relative; + display: inline-block; + background: none; + font-size: 17px; + width: 2.5rem; + height: 1.5rem; + margin: .2em .7em; + background-color: rgba(255, 255, 255, 0.05); + padding: 0; + border: none; + border-radius: 1em +} + +/* input[type=checkbox]:focus { + -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff +} */ input[type=checkbox]:after { - content: ''; - display: block; - border-radius: 50%; - position: absolute; - background-color: #7a7985; - top: .25rem; - -webkit-transition: left 0.2s; - -moz-transition: left 0.2s; - -o-transition: left 0.2s; - -ms-transition: left 0.2s; - transition: left 0.2s + content: ''; + display: block; + border-radius: 50%; + position: absolute; + background-color: #7a7985; + top: .25rem; + -webkit-transition: left 0.2s; + -moz-transition: left 0.2s; + -o-transition: left 0.2s; + -ms-transition: left 0.2s; + transition: left 0.2s } input[type=checkbox]:after { - background-color: #fff; - width: 1rem; - height: 1rem + background-color: #fff; + width: 1rem; + height: 1rem } input[type=checkbox]:checked:after { - left: 52% + left: 52% } input[type=checkbox]:not(:checked):after { - left: 10% + left: 10% } input[type=checkbox]:checked { - background-color: #22b365 + background-color: #22b365 } button { - outline: 0 + outline: 0 } button[disabled], .button-b[disabled] { - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50); - cursor: default + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); + cursor: default } .cond { - font-family: Arial, Helvetica, sans-serif + font-family: Arial, Helvetica, sans-serif } .vert-sep, .vert-sep-bottom { - border-left: 1px solid #fff; - float: left; - -webkit-background-size: 100% 100%; - -moz-background-size: 100% 100%; - background-size: 100% 100% + border-left: 1px solid #fff; + float: left; + -webkit-background-size: 100% 100%; + -moz-background-size: 100% 100%; + background-size: 100% 100% } .vert-sep { - height: 40px + height: 40px } .vert-sep-bottom { - height: 30px + height: 30px } .uppercase { - text-transform: uppercase; - display: block + text-transform: uppercase; + display: block } .button-b, .button { - cursor: pointer; - -webkit-transition: -webkit-transform 0.15s ease-in; - -moz-transition: -moz-transform 0.15s ease-in; - -o-transition: -o-transform 0.15s ease-in; - -ms-transition: -ms-transform 0.15s ease-in; - transition: transform 0.15s ease-in + cursor: pointer; + -webkit-transition: -webkit-transform 0.15s ease-in; + -moz-transition: -moz-transform 0.15s ease-in; + -o-transition: -o-transform 0.15s ease-in; + -ms-transition: -ms-transform 0.15s ease-in; + transition: transform 0.15s ease-in } .button-b, .button-s { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - font-family: 'PlusJakartaSans'; - font-size: 1rem; - font-weight: 500; - height: 3.5rem; - padding: 0 1.5rem; - color: #fff; - background-color: rgba(255, 255, 255, 0.05); - background-repeat: no-repeat; - border-radius: 3.5rem; - cursor: pointer; - outline: none; - overflow: hidden; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + font-family: PlusJakartaSans, Arial, Helvetica, sans-serif; + font-size: 1rem; + font-weight: 500; + height: 3.5rem; + padding: 0 1.5rem; + color: #fff; + background-color: rgba(255, 255, 255, 0.05); + background-repeat: no-repeat; + border-radius: 3.5rem; + cursor: pointer; + outline: none; + overflow: hidden; } .button-b.disabled, .button-s.disabled { - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50) + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) } .button-b:hover:not([disabled]), .button-s:hover:not([disabled]) { - -webkit-box-shadow: 0 0 0 .12rem #fff; - box-shadow: 0 0 0 .12rem #fff; - background-color: transparent -} + background-color: rgb(10, 10, 10); +} .button-b:focus:not([disabled]), .button-s:focus:not([disabled]) { - -webkit-box-shadow: 0 0 0 .2rem #fff; - box-shadow: 0 0 0 .2rem #fff + background-color: rgb(10, 10, 10); } .bodyTop { - top: 0 !important + top: 0 !important } .gradient-effect { - width: 100%; - height: 100%; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0 + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0 } ::-webkit-scrollbar { - width: 5px + width: 5px } ::-webkit-scrollbar:horizontal { - height: 5px + height: 5px } ::-webkit-scrollbar-track { - width: 5px; - background: transparent + width: 5px; + background: transparent } ::-webkit-scrollbar-track:horizontal { - height: 5px; - background: transparent + height: 5px; + background: transparent } ::-webkit-scrollbar-thumb { - width: 5px; - border-radius: .5rem; - background-color: rgba(255, 255, 255, 0.25) + width: 5px; + border-radius: .5rem; + background-color: rgba(255, 255, 255, 0.25) } ::-webkit-scrollbar-thumb:horizontal { - height: 5px; - border-radius: .5rem; - background-color: rgba(255, 255, 255, 0.25) + height: 5px; + border-radius: .5rem; + background-color: rgba(255, 255, 255, 0.25) } body { - scrollbar-width: thin; - scrollbar-color: rgba(255, 255, 255, 0.25) transparent + scrollbar-width: thin; + scrollbar-color: rgba(255, 255, 255, 0.25) transparent } ::-webkit-input-placeholder { - font-size: 1rem; - color: #fff; - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50) + font-size: 1rem; + color: #fff; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) } .clearfix:after { - visibility: hidden; - display: block; - font-size: 0; - content: " "; - clear: both; - height: 0 + visibility: hidden; + display: block; + font-size: 0; + content: " "; + clear: both; + height: 0 } .ng-hide { - display: none !important; + display: none !important; } .ng-hide.ng-hide-animate { - display: none !important + display: none !important } -:root { - --topbar-height: 5rem; - --navbar-width: 5.5rem +@media only screen and (min-width:4000px) and (-webkit-min-device-pixel-ratio:1) { + html { + font-size: calc(var(--text-size) + 7px) + } +} + +@media only screen and (min-width:3500px) and (-webkit-min-device-pixel-ratio:1) { + html { + font-size: calc(var(--text-size) + 6.125px) + } +} + +@media only screen and (min-width:3000px) and (-webkit-min-device-pixel-ratio:1) { + html { + font-size: calc(var(--text-size) + 5.25px) + } +} + +@media only screen and (min-width:2500px) and (-webkit-min-device-pixel-ratio:1) { + html { + font-size: calc(var(--text-size) + 4.375px) + } +} + +@media only screen and (max-width:1500px) and (-webkit-min-device-pixel-ratio:1) { + html { + font-size: calc(var(--text-size) - 2.625px) + } +} + +@media only screen and (max-width:1200px) and (-webkit-min-device-pixel-ratio:1) { + html { + font-size: calc(var(--text-size) - 3px) + } +} + +@media (-webkit-min-device-pixel-ratio:2), +(min-resolution:192dpi) { + html { + font-size: calc(var(--text-size) - 2.5px) + } +} + +@media only screen and (max-width:1800px) and (-webkit-min-device-pixel-ratio:2), +only screen and (max-width:1800px) and (min-resolution:192dpi) { + html { + font-size: calc(var(--text-size) - 1px) + } +} + +@media only screen and (max-width:1500px) and (-webkit-min-device-pixel-ratio:2), +only screen and (max-width:1500px) and (min-resolution:192dpi) { + html { + font-size: calc(var(--text-size) - 2.5px) + } +} + +@media only screen and (max-width:1200px) and (-webkit-min-device-pixel-ratio:2), +only screen and (max-width:1200px) and (min-resolution:192dpi) { + html { + font-size: calc(var(--text-size) - 4px) + } +} + +@media only screen and (max-width:900px) and (-webkit-min-device-pixel-ratio:2), +only screen and (max-width:900px) and (min-resolution:192dpi) { + html { + font-size: calc(var(--text-size) - 5.5px) + } +} + +@media only screen and (max-width:600px) and (-webkit-min-device-pixel-ratio:2), +only screen and (max-width:600px) and (min-resolution:192dpi) { + html { + font-size: calc(var(--text-size) - 7px) + } } #toast-container { - position: fixed; - z-index: 9999999; - pointer-events: auto; + position: fixed; + z-index: 9999999; + pointer-events: auto; } #toast-container * { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box } #toast-container>div { - margin: 0 0 6px; - width: 30rem; - border-radius: 3px 3px 3px 3px; - background-position: 15px center; - background-repeat: no-repeat; - color: #201f32; - opacity: .95; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=95)"; - filter: alpha(opacity=95); - -ms-filter: unqoute("progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"); - filter: unqoute("alpha(opacity=80)"); - position: relative + margin: 0 0 6px; + width: 30rem; + border-radius: 3px 3px 3px 3px; + background-position: 15px center; + background-repeat: no-repeat; + color: #201f32; + opacity: .95; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=95)"; + filter: alpha(opacity=95); + -ms-filter: unqoute("progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"); + filter: unqoute("alpha(opacity=80)"); + position: relative } #toast-container> :hover { - opacity: 1; - -ms-filter: none; - filter: none; - -ms-filter: unqoute("progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"); - filter: unqoute("alpha(opacity=100)"); - cursor: pointer + opacity: 1; + -ms-filter: none; + filter: none; + -ms-filter: unqoute("progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"); + filter: unqoute("alpha(opacity=100)"); + cursor: pointer } #toast-container.toast-center, #toast-container.toast-top-center, #toast-container.toast-bottom-center { - width: 100%; - pointer-events: none + width: 100%; + pointer-events: none } #toast-container.toast-center>div, #toast-container.toast-top-center>div, #toast-container.toast-bottom-center>div { - margin: auto; - pointer-events: auto + margin: auto; + pointer-events: auto } #toast-container.toast-center>button, #toast-container.toast-top-center>button, #toast-container.toast-bottom-center>button { - pointer-events: auto + pointer-events: auto } #toast-container.toast-top-full-width>div, #toast-container.toast-bottom-full-width>div { - width: 96%; - margin: auto + width: 96%; + margin: auto } #toast-container .toast-title { - font-size: 1rem; - font-weight: 600; - color: #fff + font-size: 1rem; + font-weight: 600; + color: #fff } #toast-container .toast-message { - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; - -ms-word-wrap: break-word; - word-wrap: break-word; - font-size: 1rem; - color: #fff; - margin-top: .5rem; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + -ms-word-wrap: break-word; + word-wrap: break-word; + font-size: 1rem; + color: #fff; + margin-top: .5rem; } #toast-container .toast-message a:hover { - color: #a8a8a8; - text-decoration: none + color: #a8a8a8; + text-decoration: none } #toast-container .toast-message a, #toast-container .toast-message label { - color: #201f32 + color: #201f32 } #toast-container .toast-close-button { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - position: absolute; - top: .75rem; - right: .75rem; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 2rem; - width: 2rem; - font-size: 20px; - font-weight: bold; - color: #fff; - background-color: transparent; - border-radius: 1rem; - border: 0; - cursor: pointer; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + position: absolute; + top: .75rem; + right: .75rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 2rem; + width: 2rem; + font-size: 20px; + font-weight: bold; + color: #fff; + background-color: transparent; + border-radius: 1rem; + border: 0; + cursor: pointer; } #toast-container .toast-close-button span { - font-size: .75rem + font-size: .75rem } #toast-container .toast-close-button:hover, #toast-container .toast-close-button:focus { - background-color: rgba(26, 23, 62, 0.1) + background-color: rgba(26, 23, 62, 0.1) } #toast-container.toast-top-full-width { - top: 5rem; - right: 0; - width: 100% + top: var(--topbar-height); + right: 0; + width: 100% } #toast-container.toast-bottom-full-width { - bottom: 0; - right: 0; - width: 100% + bottom: 0; + right: 0; + width: 100% } #toast-container.toast-top-left { - top: 5rem; - left: 22px + top: var(--topbar-height); + left: 22px } #toast-container.toast-top-center { - top: 5rem + top: var(--topbar-height) } #toast-container.toast-top-right { - top: 5rem; - right: 22px + top: var(--topbar-height); + right: 22px } #toast-container.toast-bottom-right { - right: 22px; - bottom: 12px + right: 22px; + bottom: 12px } #toast-container.toast-bottom-center { - bottom: 12px + bottom: 12px } #toast-container.toast-bottom-left { - bottom: 12px; - left: 22px + bottom: 12px; + left: 22px } #toast-container.toast-center { - top: 45% + top: 45% } #toast-container .toast { - border-radius: 0; - background-color: #0c0c11; - padding: 1.5rem 3rem 1.5rem 4rem; - border-radius: .75rem; - -webkit-box-shadow: 0 0 2rem 0 rgba(0, 0, 0, 0.4); - box-shadow: 0 0 2rem 0 rgba(0, 0, 0, 0.4); + border-radius: 0; + background-color: #0c0c11; + padding: 1.5rem 3rem 1.5rem 4rem; + border-radius: .75rem; + -webkit-box-shadow: 0 0 2rem 0 rgba(0, 0, 0, 0.4); + box-shadow: 0 0 2rem 0 rgba(0, 0, 0, 0.4); } #toast-container .toast:after { - content: " "; - position: absolute; - left: 0; - width: 4rem; - height: 100%; - top: 0; - background-position: center; - background-repeat: no-repeat; - -webkit-background-size: 35%; - -moz-background-size: 35%; - background-size: 35% + content: " "; + position: absolute; + left: 0; + width: 4rem; + height: 100%; + top: 0; + background-position: center; + background-repeat: no-repeat; + -webkit-background-size: 35%; + -moz-background-size: 35%; + background-size: 35% } #toast-container .toast progress-bar { - position: absolute; - left: 0; - bottom: 0; - height: 4px; - background-color: #8a5aab + position: absolute; + left: 0; + bottom: 0; + height: 4px; + background-color: #8a5aab } #toast-container .toast.toast-info { - background-color: #7b5bf5 !important; + background-color: #8A8A8A !important; } #toast-container .toast.toast-info:after { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAYAAACO98lFAAAACXBIWXMAAAsSAAALEgHS3X78AAABXElEQVR42u3azW3CQBBA4UeUe5IKcAdJB3E6CBXE6YASKIESSAd0EEqADkwHdgWbg5eIAz8+7aLljeSD5ZG8fBp5ltVMQgjcezxgiCBCZoQG2AIhXi2wAJ5zLGaS4cO4Ar7OPNsBNdCVXAnzCwAAr8Cy9EpogemIvJeU1ZC6EqYj897sDrZIEUQ4iqJb5M+InH3cSBXbIqv4A58u5HwAm5IroY07wv2JZz0wSw2Qa9t8iM+j/UALrFN/C24Bwe4ggggi3GQ8ZnpvxXC6VMf7bTxHaLOsJoSQ+mpCCF04HU2G9SRvkTXweyXnm+EIrth9wgZ4v5LTk/jANTXC2Jcl/f9gdxBBBBFEEEEEEUQQQQQRRBBBBBFEEEEEEUQQQQQRRBBBBBFEEEGEohB2I3J6Eg94p0ZYjMhZknq8N8Og1Dycj9U9DG4domYY4avifccwrLXOsRgHvO0OIvzHH1G/2+U39m5qAAAAAElFTkSuQmCC") !important + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAYAAACO98lFAAAACXBIWXMAAAsSAAALEgHS3X78AAABXElEQVR42u3azW3CQBBA4UeUe5IKcAdJB3E6CBXE6YASKIESSAd0EEqADkwHdgWbg5eIAz8+7aLljeSD5ZG8fBp5ltVMQgjcezxgiCBCZoQG2AIhXi2wAJ5zLGaS4cO4Ar7OPNsBNdCVXAnzCwAAr8Cy9EpogemIvJeU1ZC6EqYj897sDrZIEUQ4iqJb5M+InH3cSBXbIqv4A58u5HwAm5IroY07wv2JZz0wSw2Qa9t8iM+j/UALrFN/C24Bwe4ggggi3GQ8ZnpvxXC6VMf7bTxHaLOsJoSQ+mpCCF04HU2G9SRvkTXweyXnm+EIrth9wgZ4v5LTk/jANTXC2Jcl/f9gdxBBBBFEEEEEEUQQQQQRRBBBBBFEEEEEEUQQQQQRRBBBBBFEEEGEohB2I3J6Eg94p0ZYjMhZknq8N8Og1Dycj9U9DG4domYY4avifccwrLXOsRgHvO0OIvzHH1G/2+U39m5qAAAAAElFTkSuQmCC") !important } #toast-container .toast.toast-wait:after { - background-image: url("data:image/gif;base64,R0lGODlhIAAgAIQAAAQCBISGhMzKzERCROTm5CQiJKyurHx+fPz+/ExOTOzu7Dw+PIyOjCwqLFRWVAwKDIyKjMzOzOzq7CQmJLy6vFRSVPTy9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCQAXACwAAAAAIAAgAAAF3eAljmRpnmh6VRSVqLDpIDTixOdUlFSNUDhSQUAT7ES9GnD0SFQAKWItMqr4bqKHVPDI+WiTkaOFFVlrFe83rDrT0qeIjwrT0iLdU0GOiBxhAA4VeSk6QYeIOAsQEAuJKgw+EI8nA18IA48JBAQvFxCXDI8SNAQikV+iiaQIpheWX5mJmxKeF6g0qpQmA4yOu8C7EwYWCgZswRcTFj4KyMAGlwYxDwcHhCXMXxYxBzQHKNo+3DDeCOAn0V/TddbYJA0K48gAEAFQicMWFsfwNA3JSgAIAAFfwIMIL4QAACH5BAkJABoALAAAAAAgACAAhAQCBIyKjERCRMzOzCQiJPTy9DQyNGRmZMTCxOTm5CwqLHx+fBQWFJyenNTW1Pz6/Dw6PGxubAwKDIyOjNTS1CQmJCwuLPz+/Dw+PHRydAAAAAAAAAAAAAAAAAAAAAAAAAXboCaOZGmeaKoxWcSosMkk15W8cZ7VdZaXkcEgQtrxfD9RhHchima1GwlCGUBSFCaFxMrgRtnLFhWujWHhs2nJc8KoVlWGQnEn7/i8XgOwWAB7JwoONQ4KgSQAZRcOgHgSCwsSIhZMNRZ5CzULIgaWF5h4mhecfIQ8jXmQkiODhYeIiRYGjrG2PxgBARi3IhNMAbcCnwI5BAQpAZ8TIwK6vCQVDwUVKL+WzAANTA210g/VJ8OWxQefByQE4dZMzBoInwh4zrtgn2p725YNthUFTNRuGYB3AYGBHCEAACH5BAkJAB0ALAAAAAAgACAAhAQCBISChFRWVMzKzCQiJOTm5GxqbCwuLJSWlPz6/NTW1AwODJSSlGRmZCwqLOzu7HR2dDQ2NAQGBISGhFxaXNTS1CQmJOzq7GxubDQyNKSmpPz+/Nza3AAAAAAAAAAAAAXfYCeOZGmeaKqurHBdAiuP17Zdc0lMAVHWt9yI8LA9fCPB4xEjARoNSWpis01kBpshFahurqzsZosiGpErScMAUO0maKF8Tq/bTQCIQgFp30cQXhB1BHEcXhx0FgkJFiOHVYlzi42AgoRxeRx8fn+en3UABwedKgsBAwMBCygOCjYKDisLFV4VrCUAtVUKpSZdXl8mB8EbByQWcQPFAyYZxccdB7sV0cvBzbmvvG0LBV4FrFTBYCWuNhyyHRTFFB20trh4BxmdYl4YIqepq0IRxRE+IfDCAFQHARo0NGERAgAh+QQJCQAgACwAAAAAIAAgAIUEAgSEgoRMTkzMyswcHhzk5uR0cnQUFhRcXlwsKiz09vQMCgyMiozU1tQkJiR8fnxkZmT8/vwEBgSEhoRcWlzU0tQkIiT08vR0dnQcGhxkYmQ0MjT8+vwMDgyMjozc2twAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG+UCQcEgsGo/IpHLJXDweC6Z0+IhEHlOjRGIMWLHZoUZx0RQlAajxkFFKFFYFl5m5KNpIySU+X2bIBEoQZBBZGQdMElFhjI2Oj5AgHQEDAw8dQxYeDBaNHRVWVhWYCXsRFwmMXqFWEyAerB6MA6xWA6+xs7URt6VWqIwTu64gDh4eDp6goaORQ5OVAZjO1EgEGhB4RwAYDQ0YAEwIcBEKFEgYrBhLBORxgUYfrB9LELuF8fNDAAaVBuEg7NXCVyRdqHVCGLBiIIQAB1Yc4BXh9uEbwAXuyi2iQI7DuSwHdiFqCEGDtizLRFUDsaGAlQIbVoJYIEDAIiZBAAAh+QQJCQAbACwAAAAAIAAgAIQEAgSMioxcWlz08vQcHhysqqwMDgx8enwsKiykoqRkZmT8+vzEwsQMCgyUlpQkJiS0srQEBgSMjoxcXlz09vQkIiSsrqwUEhQ0MjRsamz8/vwAAAAAAAAAAAAAAAAAAAAF7+AmjmRpnmiqruz2PG0sIssCj4CQJAIgj4/abRNJaI6agu9kCAQaphdJgEQKUIFjgGWsahJYLdf7RTWfLKr3+jsBClVlG5Xb9eb4fImgUBBKDVB4ExRHFGwbGRQLGXMEhUgUfw2QC4IyCmSNDQtHlm2ZXgoiGQsUjW0EnUgLfyKBeYSeiHojfH61uS0GBisVEgEVLRcWRxAXKAgDRwMILMVIECgSVRIrBmS9JtRI1iMVBweuGxerSNolyszOIhjLGs0jEFXSKA8SEkMbcEgWIxfzNBxrw6AKgxIGkM05UOWALhERHJhysOThBgAVWYQAACH5BAkJABkALAAAAAAgACAAhAQGBIyKjERCRMzOzCwuLGRiZPz6/OTm5AwODLSytFRSVNTW1Dw6PHx6fAwKDJSSlERGRNTS1DQyNGxqbPz+/BQSFLy6vFRWVNza3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAXqYCaO5FgFwxBUZeu61ULNFMa+eBvQdJD/owFvFhkBBAwHsBQZUooZyWF2YOQkBNJu6ANMaQeli0AxSEwymi0DcUJeEgPlbEJFAghRe/h+Eeg/Dl9UYks5DF9VhksOAgKFi5GSSwh5kzgVCXIJNxknD5aSCTwJIw8zD5MITpanFKmSCHI8NxUPoJejNKWXLZkznL0vCJ3CxsckDpA/ChYJFzkTBgYTSxc80C4OswbLLhY8Fi/bMwYAJVgl4DTiL9LUJADrFuci1zTZLwD1IwU8BSQuWLCQb1EDHg2QiSDALYvCDAISJLDy8FIIACH5BAkJAB4ALAAAAAAgACAAhAQGBISGhFRSVNTW1CQiJKyqrGRmZOzu7CwuLIyOjGxubPz6/BQSFGRiZOTi5CwqLLy6vDQ2NIyKjFRWVCQmJKyurGxqbPT29DQyNJSSlHRydPz+/BQWFOzq7AAAAAAAAAXhoCeOJElYClGubOs117YtjWuvxCLLi3qbhc6h4FPsdorfiNI5dige43GT9AAkHUcCwCpMNxVP7tgTJY4J1uF7EBl0M8Ooueuo2SOCIkVa11kVX2E2EmgsFH4yBz4uAAkdHVstBAUHQ4xKmZqbnJ2bAhAQAiURGJ4eE0cTIxgzpp0QRxCsrp6xO7MjpaepO6unKxOhv8DFxsfIJBwaChw2DAkZDEocDjIOzi0ZMhlKUjIaLtsb3T8aR+EtDBkJ0yQUBQVQI9XX2ZsDMgMlyxr3mzE2XEgmotCGAARFIHiQ0FMIACH5BAkJABgALAAAAAAgACAAhAQCBISGhDw+POTi5CwuLLS2tPTy9BQSFJyenGRiZDQ2NIyOjLy+vPz6/BweHIyKjFRSVOzq7DQyNLy6vBQWFHRydDw6PPz+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXXICaOZHkcZaquIjVd10SxtFrAcFGrVhBYIwoON9uNAsOA6DCEFTEKBEKxEjQvAtELNxkpGrAGNfW4Plpb2QgxRKjKzfPoVGLj3CnLNUv7hscpSDhKOxJSgDwPP0ZGAACMjAQFDQYFBJA0BAZDBpeYGBQVFUU3TV2YFAMwAzNgTQ2PkBVDFRiuQ7CYszi1pUOnkKmrM5qcnqiiTwQTDQ2Wn9DR0tPUfRKQEBEREDQSFw3XRhEwEd3f4TvjF+XWKgJ8JNnb0QkwCdUlCzAL+CQODAwc9BtIMAQAOw==") !important + background-image: url("data:image/gif;base64,R0lGODlhIAAgAIQAAAQCBISGhMzKzERCROTm5CQiJKyurHx+fPz+/ExOTOzu7Dw+PIyOjCwqLFRWVAwKDIyKjMzOzOzq7CQmJLy6vFRSVPTy9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCQAXACwAAAAAIAAgAAAF3eAljmRpnmh6VRSVqLDpIDTixOdUlFSNUDhSQUAT7ES9GnD0SFQAKWItMqr4bqKHVPDI+WiTkaOFFVlrFe83rDrT0qeIjwrT0iLdU0GOiBxhAA4VeSk6QYeIOAsQEAuJKgw+EI8nA18IA48JBAQvFxCXDI8SNAQikV+iiaQIpheWX5mJmxKeF6g0qpQmA4yOu8C7EwYWCgZswRcTFj4KyMAGlwYxDwcHhCXMXxYxBzQHKNo+3DDeCOAn0V/TddbYJA0K48gAEAFQicMWFsfwNA3JSgAIAAFfwIMIL4QAACH5BAkJABoALAAAAAAgACAAhAQCBIyKjERCRMzOzCQiJPTy9DQyNGRmZMTCxOTm5CwqLHx+fBQWFJyenNTW1Pz6/Dw6PGxubAwKDIyOjNTS1CQmJCwuLPz+/Dw+PHRydAAAAAAAAAAAAAAAAAAAAAAAAAXboCaOZGmeaKoxWcSosMkk15W8cZ7VdZaXkcEgQtrxfD9RhHchima1GwlCGUBSFCaFxMrgRtnLFhWujWHhs2nJc8KoVlWGQnEn7/i8XgOwWAB7JwoONQ4KgSQAZRcOgHgSCwsSIhZMNRZ5CzULIgaWF5h4mhecfIQ8jXmQkiODhYeIiRYGjrG2PxgBARi3IhNMAbcCnwI5BAQpAZ8TIwK6vCQVDwUVKL+WzAANTA210g/VJ8OWxQefByQE4dZMzBoInwh4zrtgn2p725YNthUFTNRuGYB3AYGBHCEAACH5BAkJAB0ALAAAAAAgACAAhAQCBISChFRWVMzKzCQiJOTm5GxqbCwuLJSWlPz6/NTW1AwODJSSlGRmZCwqLOzu7HR2dDQ2NAQGBISGhFxaXNTS1CQmJOzq7GxubDQyNKSmpPz+/Nza3AAAAAAAAAAAAAXfYCeOZGmeaKqurHBdAiuP17Zdc0lMAVHWt9yI8LA9fCPB4xEjARoNSWpis01kBpshFahurqzsZosiGpErScMAUO0maKF8Tq/bTQCIQgFp30cQXhB1BHEcXhx0FgkJFiOHVYlzi42AgoRxeRx8fn+en3UABwedKgsBAwMBCygOCjYKDisLFV4VrCUAtVUKpSZdXl8mB8EbByQWcQPFAyYZxccdB7sV0cvBzbmvvG0LBV4FrFTBYCWuNhyyHRTFFB20trh4BxmdYl4YIqepq0IRxRE+IfDCAFQHARo0NGERAgAh+QQJCQAgACwAAAAAIAAgAIUEAgSEgoRMTkzMyswcHhzk5uR0cnQUFhRcXlwsKiz09vQMCgyMiozU1tQkJiR8fnxkZmT8/vwEBgSEhoRcWlzU0tQkIiT08vR0dnQcGhxkYmQ0MjT8+vwMDgyMjozc2twAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG+UCQcEgsGo/IpHLJXDweC6Z0+IhEHlOjRGIMWLHZoUZx0RQlAajxkFFKFFYFl5m5KNpIySU+X2bIBEoQZBBZGQdMElFhjI2Oj5AgHQEDAw8dQxYeDBaNHRVWVhWYCXsRFwmMXqFWEyAerB6MA6xWA6+xs7URt6VWqIwTu64gDh4eDp6goaORQ5OVAZjO1EgEGhB4RwAYDQ0YAEwIcBEKFEgYrBhLBORxgUYfrB9LELuF8fNDAAaVBuEg7NXCVyRdqHVCGLBiIIQAB1Yc4BXh9uEbwAXuyi2iQI7DuSwHdiFqCEGDtizLRFUDsaGAlQIbVoJYIEDAIiZBAAAh+QQJCQAbACwAAAAAIAAgAIQEAgSMioxcWlz08vQcHhysqqwMDgx8enwsKiykoqRkZmT8+vzEwsQMCgyUlpQkJiS0srQEBgSMjoxcXlz09vQkIiSsrqwUEhQ0MjRsamz8/vwAAAAAAAAAAAAAAAAAAAAF7+AmjmRpnmiqruz2PG0sIssCj4CQJAIgj4/abRNJaI6agu9kCAQaphdJgEQKUIFjgGWsahJYLdf7RTWfLKr3+jsBClVlG5Xb9eb4fImgUBBKDVB4ExRHFGwbGRQLGXMEhUgUfw2QC4IyCmSNDQtHlm2ZXgoiGQsUjW0EnUgLfyKBeYSeiHojfH61uS0GBisVEgEVLRcWRxAXKAgDRwMILMVIECgSVRIrBmS9JtRI1iMVBweuGxerSNolyszOIhjLGs0jEFXSKA8SEkMbcEgWIxfzNBxrw6AKgxIGkM05UOWALhERHJhysOThBgAVWYQAACH5BAkJABkALAAAAAAgACAAhAQGBIyKjERCRMzOzCwuLGRiZPz6/OTm5AwODLSytFRSVNTW1Dw6PHx6fAwKDJSSlERGRNTS1DQyNGxqbPz+/BQSFLy6vFRWVNza3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAXqYCaO5FgFwxBUZeu61ULNFMa+eBvQdJD/owFvFhkBBAwHsBQZUooZyWF2YOQkBNJu6ANMaQeli0AxSEwymi0DcUJeEgPlbEJFAghRe/h+Eeg/Dl9UYks5DF9VhksOAgKFi5GSSwh5kzgVCXIJNxknD5aSCTwJIw8zD5MITpanFKmSCHI8NxUPoJejNKWXLZkznL0vCJ3CxsckDpA/ChYJFzkTBgYTSxc80C4OswbLLhY8Fi/bMwYAJVgl4DTiL9LUJADrFuci1zTZLwD1IwU8BSQuWLCQb1EDHg2QiSDALYvCDAISJLDy8FIIACH5BAkJAB4ALAAAAAAgACAAhAQGBISGhFRSVNTW1CQiJKyqrGRmZOzu7CwuLIyOjGxubPz6/BQSFGRiZOTi5CwqLLy6vDQ2NIyKjFRWVCQmJKyurGxqbPT29DQyNJSSlHRydPz+/BQWFOzq7AAAAAAAAAXhoCeOJElYClGubOs117YtjWuvxCLLi3qbhc6h4FPsdorfiNI5dige43GT9AAkHUcCwCpMNxVP7tgTJY4J1uF7EBl0M8Ooueuo2SOCIkVa11kVX2E2EmgsFH4yBz4uAAkdHVstBAUHQ4xKmZqbnJ2bAhAQAiURGJ4eE0cTIxgzpp0QRxCsrp6xO7MjpaepO6unKxOhv8DFxsfIJBwaChw2DAkZDEocDjIOzi0ZMhlKUjIaLtsb3T8aR+EtDBkJ0yQUBQVQI9XX2ZsDMgMlyxr3mzE2XEgmotCGAARFIHiQ0FMIACH5BAkJABgALAAAAAAgACAAhAQCBISGhDw+POTi5CwuLLS2tPTy9BQSFJyenGRiZDQ2NIyOjLy+vPz6/BweHIyKjFRSVOzq7DQyNLy6vBQWFHRydDw6PPz+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXXICaOZHkcZaquIjVd10SxtFrAcFGrVhBYIwoON9uNAsOA6DCEFTEKBEKxEjQvAtELNxkpGrAGNfW4Plpb2QgxRKjKzfPoVGLj3CnLNUv7hscpSDhKOxJSgDwPP0ZGAACMjAQFDQYFBJA0BAZDBpeYGBQVFUU3TV2YFAMwAzNgTQ2PkBVDFRiuQ7CYszi1pUOnkKmrM5qcnqiiTwQTDQ2Wn9DR0tPUfRKQEBEREDQSFw3XRhEwEd3f4TvjF+XWKgJ8JNnb0QkwCdUlCzAL+CQODAwc9BtIMAQAOw==") !important } #toast-container .toast.toast-error { - background-color: #fb5e19 !important; + background-color: #fb5e19 !important; } #toast-container .toast.toast-error:after { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAYAAACO98lFAAAACXBIWXMAAAsSAAALEgHS3X78AAACXklEQVR42u3b0XGDMAwG4D9c38MGzQZhBEboBqUbZIRuUrpBugHdgGyQEegE6kOVax8CQbZly6l1x+WSBqx852KQ8YaI8N+jQomCUBAKQkEQI3QAjgAGAD2/txod50kAJs67vbkXEc1tNRGNdD1G/juMbEu5EhF1S/svHXjpoJYg6hW5EhG1c8eoFrrV/kYn2nPXqxN2/5pz2K/47kF6TmhXJpESQgKw+JvmEHaCZFJASAEAYCtFGIVJxYRwAQCATynC0SG5GBCuAODhXTxE9uQWWqPG2lFgLienIdIShC9A7YNgAUIVYC1CSoiGiCbttiUJxYbwARgkbUoTiwXhA9BLwV26qDZEVABXBE2I6AA+CBoQSQB8EUJCJAMIgRACIilAKARfiKQARIRNwBmoHsBzpFvp95C1zpDV5o6TywpAo+SuDREcQGveQQtCBUBz8iU0hBqA9gxUKAhVAABBRweNUeMDwNM9zEUOHvu2AJrcEToAbx77bxmxyRXh4AkQDULrnKBx9fjF/x5jDj1B6/JZrUdUmQCoQlQZAahBVIkBvvhaIC1EwlrCxAWVUMfIrrx2LflkEFYAkkJYAkgGYQ0gCYRFgOhtWQWI2qZlgMv2qt22dYDL1mnmkAOAOkQuACEgdlKE1iCAL0QvfbbZpbh54huaUfkusgfw4livvBoPM583DgAtftYYxIieXyXlu0fprfTZMIBrjzhJEQbjAC4QR5d6Qi6LPtacLM9Lud7L8p8LxDSTa+P7kEbHo0WN38VVPWxGzbnu+P2IFU/sx5iLNB9lXWRBKAgF4W98A3DhluKqdY+QAAAAAElFTkSuQmCC") !important + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAYAAACO98lFAAAACXBIWXMAAAsSAAALEgHS3X78AAACXklEQVR42u3b0XGDMAwG4D9c38MGzQZhBEboBqUbZIRuUrpBugHdgGyQEegE6kOVax8CQbZly6l1x+WSBqx852KQ8YaI8N+jQomCUBAKQkEQI3QAjgAGAD2/txod50kAJs67vbkXEc1tNRGNdD1G/juMbEu5EhF1S/svHXjpoJYg6hW5EhG1c8eoFrrV/kYn2nPXqxN2/5pz2K/47kF6TmhXJpESQgKw+JvmEHaCZFJASAEAYCtFGIVJxYRwAQCATynC0SG5GBCuAODhXTxE9uQWWqPG2lFgLienIdIShC9A7YNgAUIVYC1CSoiGiCbttiUJxYbwARgkbUoTiwXhA9BLwV26qDZEVABXBE2I6AA+CBoQSQB8EUJCJAMIgRACIilAKARfiKQARIRNwBmoHsBzpFvp95C1zpDV5o6TywpAo+SuDREcQGveQQtCBUBz8iU0hBqA9gxUKAhVAABBRweNUeMDwNM9zEUOHvu2AJrcEToAbx77bxmxyRXh4AkQDULrnKBx9fjF/x5jDj1B6/JZrUdUmQCoQlQZAahBVIkBvvhaIC1EwlrCxAWVUMfIrrx2LflkEFYAkkJYAkgGYQ0gCYRFgOhtWQWI2qZlgMv2qt22dYDL1mnmkAOAOkQuACEgdlKE1iCAL0QvfbbZpbh54huaUfkusgfw4livvBoPM583DgAtftYYxIieXyXlu0fprfTZMIBrjzhJEQbjAC4QR5d6Qi6LPtacLM9Lud7L8p8LxDSTa+P7kEbHo0WN38VVPWxGzbnu+P2IFU/sx5iLNB9lXWRBKAgF4W98A3DhluKqdY+QAAAAAElFTkSuQmCC") !important } #toast-container .toast.toast-success { - background-color: #22b365 !important; + background-color: #22b365 !important; } #toast-container .toast.toast-success:after { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAYAAACO98lFAAAACXBIWXMAAAsSAAALEgHS3X78AAACFElEQVR42u3a623CMBSG4Zeo/8sIbEC7ASOwQcMG7QZ0g2zQdAO6AWyQbsAIMMHpjzpVRLnFt9iOPwkJNYDpI9sk52QiIow9BTkZISNkhIyQETJCRjifh5H8nwv1ADgAG2D/d1REUn5MRWQr57NuXzdJ+LR5CmyB+ZXXvAFVqgj3AAAcgVkxYgCAR2BZjBigTVIzQQcA4JDKnqALAPBcjBxgBzSxzwQTgCMwAw6xz4TKAGChzh6jvnaogRcDgCb2CyhrALEiWAWIEcE6QGwITgBiQnAGEAuCUwD4X1kqgaU6CdmrCswmZQCAbgWmuVCB2arjvqtClehn0Wes9klz40MbzxClAUDZd7w+A/qC8ArQImx6DOIawjuAiFCoTfDezNVFi4uUwIfme1dqE9VLz5nQpk5hBnSXw6vm4HUKAC3CVET2A0EMDtD9iXwSkYNniCAAugi+IYIBOEXwBbE0AFi7+Gk+90eXEEMsOy0EV182SIBrCO2X1k0VC8AtBFsbWNAA9yCYQqxDB+hzk4bJeb1OPtWYXlL0qPCsUgToW2P0AeEdQKfQ6hJiEABA+8Yt23vElyrwEhOCTYjvbod4iJj0HWwsjcEBbDRfan7vBYwWwHQ5mDRJggGw2YYr1e4eHYDtXuQ9EMEBuGjIlsD7hWO7EAFs7gmnmXUau6imbkOgSfku98GWQ0bICBkhI2SEjJBIfgDOD0D2WHdauQAAAABJRU5ErkJggg==") !important + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAYAAACO98lFAAAACXBIWXMAAAsSAAALEgHS3X78AAACFElEQVR42u3a623CMBSG4Zeo/8sIbEC7ASOwQcMG7QZ0g2zQdAO6AWyQbsAIMMHpjzpVRLnFt9iOPwkJNYDpI9sk52QiIow9BTkZISNkhIyQETJCRjifh5H8nwv1ADgAG2D/d1REUn5MRWQr57NuXzdJ+LR5CmyB+ZXXvAFVqgj3AAAcgVkxYgCAR2BZjBigTVIzQQcA4JDKnqALAPBcjBxgBzSxzwQTgCMwAw6xz4TKAGChzh6jvnaogRcDgCb2CyhrALEiWAWIEcE6QGwITgBiQnAGEAuCUwD4X1kqgaU6CdmrCswmZQCAbgWmuVCB2arjvqtClehn0Wes9klz40MbzxClAUDZd7w+A/qC8ArQImx6DOIawjuAiFCoTfDezNVFi4uUwIfme1dqE9VLz5nQpk5hBnSXw6vm4HUKAC3CVET2A0EMDtD9iXwSkYNniCAAugi+IYIBOEXwBbE0AFi7+Gk+90eXEEMsOy0EV182SIBrCO2X1k0VC8AtBFsbWNAA9yCYQqxDB+hzk4bJeb1OPtWYXlL0qPCsUgToW2P0AeEdQKfQ6hJiEABA+8Yt23vElyrwEhOCTYjvbod4iJj0HWwsjcEBbDRfan7vBYwWwHQ5mDRJggGw2YYr1e4eHYDtXuQ9EMEBuGjIlsD7hWO7EAFs7gmnmXUau6imbkOgSfku98GWQ0bICBkhI2SEjJBIfgDOD0D2WHdauQAAAABJRU5ErkJggg==") !important } #toast-container .toast.toast-warning { - background-color: #e2b700 !important; + background-color: #e2b700 !important; } #toast-container .toast.toast-warning:after { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAYAAACO98lFAAAACXBIWXMAAAsSAAALEgHS3X78AAACn0lEQVR42u2b0XGcMBCGf3v8bqUCXwcmFZhUENLBpQM6MOmAEkgHpIKcKzCpILgDXIHyIjz4cuPbhdVKB9oZXm6kPfGx+2uFxJW1Flu3ayRLEBKEBCFBeGc3Af87A5ADMABaAF2ogVwFmCINgAbA16PfnwAUAIYtQGhPAJiCyNeuCfkHAADgAcB+7ZHQA7g70+YVwE4zLTQjoSIAAIBb13Z1kbAD8JfZ57PWjKEVCY1Sn2ghFE7wuHYPoFxDOhgX0ncz+6uIpO9IKBcAGEWyvuRIyAA8C/n6AuBwiZFQR+pLDcKeIYYvRJGsLikdjKsMbwltf7gw/00Uycz5ljVrrfRVW5r11lrj+rTEPq2H8YpDyCzdikm/nbV2IPbLpSFIawK1yvvlltTThVUt/B9B0qEkPsnBPflTPnqijyrGdDCMcP7oBnIBkMEgNMTBdwRfVJE8xAQhZ4ghRdQ4IlnEAqEjDrhh+KxmTLPBIFSMHOYOVk0kl3TmhG3pOc12oSBoCJiKSGqIYaYUbXttCNR8rQWE16fuzIagqtwa0H2GZ2HlSluv6ccdzEG7mtMQSU7jIkRdP3N9UvqAYEKt8BasVI00BI4YwvMlXqZTxVBygRTbgg2SYtgoAPCxdD8LYe+7UIlBJIOocUSv885CqAPWBNIi2c6BwHl1ngWEICKSS8WwDgiAK5I9B0LJcGoigLD4TfcSh0UEAEREcm5oHSICwBXJ/8Y+3ZXOibvDAPDdy+7w8oOij8S236bbgFMInTsHsAV7cdv8w/SQRrkhAHDnqMrjSBiIhyrWZp8ADNcul7YIYDxclr58GSH0G77/YQrh5wYBPLkZ8U0Yx++QHjYC4I/TwuHUEb5iFIsVW3d0XirIN1BRCmOCkBAkCAnCaP8AxcPoIB/kiq0AAAAASUVORK5CYII=") !important + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAYAAACO98lFAAAACXBIWXMAAAsSAAALEgHS3X78AAACn0lEQVR42u2b0XGcMBCGf3v8bqUCXwcmFZhUENLBpQM6MOmAEkgHpIKcKzCpILgDXIHyIjz4cuPbhdVKB9oZXm6kPfGx+2uFxJW1Flu3ayRLEBKEBCFBeGc3Af87A5ADMABaAF2ogVwFmCINgAbA16PfnwAUAIYtQGhPAJiCyNeuCfkHAADgAcB+7ZHQA7g70+YVwE4zLTQjoSIAAIBb13Z1kbAD8JfZ57PWjKEVCY1Sn2ghFE7wuHYPoFxDOhgX0ncz+6uIpO9IKBcAGEWyvuRIyAA8C/n6AuBwiZFQR+pLDcKeIYYvRJGsLikdjKsMbwltf7gw/00Uycz5ljVrrfRVW5r11lrj+rTEPq2H8YpDyCzdikm/nbV2IPbLpSFIawK1yvvlltTThVUt/B9B0qEkPsnBPflTPnqijyrGdDCMcP7oBnIBkMEgNMTBdwRfVJE8xAQhZ4ghRdQ4IlnEAqEjDrhh+KxmTLPBIFSMHOYOVk0kl3TmhG3pOc12oSBoCJiKSGqIYaYUbXttCNR8rQWE16fuzIagqtwa0H2GZ2HlSluv6ccdzEG7mtMQSU7jIkRdP3N9UvqAYEKt8BasVI00BI4YwvMlXqZTxVBygRTbgg2SYtgoAPCxdD8LYe+7UIlBJIOocUSv885CqAPWBNIi2c6BwHl1ngWEICKSS8WwDgiAK5I9B0LJcGoigLD4TfcSh0UEAEREcm5oHSICwBXJ/8Y+3ZXOibvDAPDdy+7w8oOij8S236bbgFMInTsHsAV7cdv8w/SQRrkhAHDnqMrjSBiIhyrWZp8ADNcul7YIYDxclr58GSH0G77/YQrh5wYBPLkZ8U0Yx++QHjYC4I/TwuHUEb5iFIsVW3d0XirIN1BRCmOCkBAkCAnCaP8AxcPoIB/kiq0AAAAASUVORK5CYII=") !important } #toast-container .toast.toast-competition:after { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAA6CAYAAADRN1sJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4wwTEBosRYvjtAAABmRJREFUWMPFmWtsVFUQx3/3dkupUEEetdAqRAUqUCTEGAWDifERAmpEAY1IokYD4fUFTCQaBQkQghJAkQDxjfGDxAQR8YNv0QLKQx6iEq1CEURKodj37vhh5u7e3t7dvV1AJznZe849Z+Z/ZubMzLnrkAOJiPd4N9AMbAVwHKfDvCKt8An0UyGwEWgEHjAgbZnnACgtAF9zRaSziEwQkXoROSsid9mY4597MTQwDngIKAUGApfb+J/Az0A18Cbwcc4aCOw22AaIyKeSnraKSP9MPKICcESk1NQdZNIvDYiPRKRvyPyYfzxIbnDXRmXAcqBfCMbfgZ0h45XAsZDxwcALQM8wWW7AHzoD3YGHgfuBKcBlNu7NjQGD7PkHYL89D/L5lGtregKPAROBCcClQAFB3zNEvURktYjsF5E6U+s5668VkWKb111ENojIXBEpMVPNE5E3RKSrz0xvi8hBOykiIrUisldElopIURtz+NQyRkSqArY9YsfMO2KdRKR3iK17i0i+76hOFpGTAV4HReTmdv4QYLQgsGhJlpORqa0P8JoZ6gOB81oCnAE+A2qtjzcvSjPKt7Ungc+Bf4A+fl6eQ/mpE7AXeAfYDlwPXGeO00THqDPwCTAfOADcAvS1TSf8np80g6/vP7DJsaiRLQOvpHCPVxCA0vZhqef8HtB6DqSZ6CTgFmprrVExTh7csDu1Kw+AVFaEcShA48GFIkH9qd0u/D7gWr8ZGAWstH60tJaeHKAeeARNWGXWPwZIzCbcBjyKRq4vgAbgWtpGyvOhM8AYNCQPA+qA9cAKRyorJgKrTOhfJjgBFBExXUeguLXfgPeBcuAOYJ4jlRV7gC7AeOAwMAtYEpHxcfTo9ogwtwV4EK2ieqBlXBcXqDC17zMt7EDLrCj0IvB6xLkCnLXnGmAXMNBF7fy3b2KJ7SqeheEhYIMBOJFl7knUD7r6xhqBWMxQFftebAdmo455T2AHR4Aq1IM32u9x4BnUpn2Aq/CFXKM1qO0PW78TMAA4HkMLidG28FdrLwHn0LLbc0TH5s42oR4lgHXWrgbWBgA0oLlgt29sFDASeM8FXgF6AwtpG3x2A6cCO7nPdtstRM19gMXArYHxo8BPvn45sMzMstIFNgMr0IplGVq1gB6ZXwLM8oBpwKQQANOMR5AOoMfbE/4acCUwB9gXA1qBRagzzjFbz0Gd5jvgphCm9fbrz2wNhNNO9AgOAV5F68wngE2QCsWNwAI0Zz9tO50FbAOm0zYi1pl2hgNTbc0aU3MrbcN7I+o3Q9H7Qi804m7xJsRKxx2ienM5aA5YijrfQhO6HnW4vj6mcWAm6ries91r2moJADiC+tVy9Co3BXVIAJwb9/nScSorOjZxGfAtejqGkBv9YVo5CzxuIJPCPWFJCqTm8ahzelVMrvSlmerHoPB2AEJA3A6sBq7JUfgW1IeqwoSHAggBMRINMoM7KHwreilJ3paCwtMCCAExCXgLrXSzUQJ15DHAN5mEQ3Tblpjwd4EPCa+S4mg1vQo9CaOJUNbFsk1A74jPoonkefRbwMtobk8qDE3Nz6GRtBwNZtWmuZwBOGiqnYfWCQdt/APgTjRgOQbgezRC1pP6iHHkfDUgwFfW/LQJzZq9rH8GjY4enaJ9Iku7ww6RzznHojmkET3nyXSbzuFy0UAm6odWuHE0JO/uiGCPzifCFXkbJpXC/xcArgcgzS3rogOA8ArpogPwq737fwIgoOIGtFY4jtYBYXOyUrQvpW2Z5qMVzgBSZjiN5v79+C41UU5FxmOY/GawYwRIawy9vBajN91epOpBFy061qHRrwYnv9Vbn+nDRjQTlM2AltN9kda5SHwWEi9E4vVIvNFaPRKPIfGpSOuTtJzuwxUzzt8EtoNuwHQkXky8rhBJ5IGkWecIjhsnr6gRJ+8EWszUZtJAFABlwNdo5BM0xifSLMkzM4H6xCjgaCYAUUOxd1E9DExGb7dBroL6xwagP1qMZqWO5oImA1GT5n0dviMZhXIJRG6O7y4YgESO70Ipqgk8e5eit6cGwn2gC6m/cSJtLi0AqayAqsXQ/6kmtLQuMCFjs/CsQ6viaqCJqkXJSJpDWS5DcS8ZQdHwMtyCThDxrzAch0RTM3V7qknU7wJnXzoAWUzgjCfRMJ/abS10/IOlg+Pmg7MA/QAWSv8CP+OvnvoIdH4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTktMTItMTlUMTY6MjM6MTErMDA6MDB7cNJmAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE5LTEyLTE5VDE2OjIzOjExKzAwOjAwCi1q2gAAAABJRU5ErkJggg==") !important; - background-color: #633f7e + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAA6CAYAAADRN1sJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4wwTEBosRYvjtAAABmRJREFUWMPFmWtsVFUQx3/3dkupUEEetdAqRAUqUCTEGAWDifERAmpEAY1IokYD4fUFTCQaBQkQghJAkQDxjfGDxAQR8YNv0QLKQx6iEq1CEURKodj37vhh5u7e3t7dvV1AJznZe849Z+Z/ZubMzLnrkAOJiPd4N9AMbAVwHKfDvCKt8An0UyGwEWgEHjAgbZnnACgtAF9zRaSziEwQkXoROSsid9mY4597MTQwDngIKAUGApfb+J/Az0A18Cbwcc4aCOw22AaIyKeSnraKSP9MPKICcESk1NQdZNIvDYiPRKRvyPyYfzxIbnDXRmXAcqBfCMbfgZ0h45XAsZDxwcALQM8wWW7AHzoD3YGHgfuBKcBlNu7NjQGD7PkHYL89D/L5lGtregKPAROBCcClQAFB3zNEvURktYjsF5E6U+s5668VkWKb111ENojIXBEpMVPNE5E3RKSrz0xvi8hBOykiIrUisldElopIURtz+NQyRkSqArY9YsfMO2KdRKR3iK17i0i+76hOFpGTAV4HReTmdv4QYLQgsGhJlpORqa0P8JoZ6gOB81oCnAE+A2qtjzcvSjPKt7Ungc+Bf4A+fl6eQ/mpE7AXeAfYDlwPXGeO00THqDPwCTAfOADcAvS1TSf8np80g6/vP7DJsaiRLQOvpHCPVxCA0vZhqef8HtB6DqSZ6CTgFmprrVExTh7csDu1Kw+AVFaEcShA48GFIkH9qd0u/D7gWr8ZGAWstH60tJaeHKAeeARNWGXWPwZIzCbcBjyKRq4vgAbgWtpGyvOhM8AYNCQPA+qA9cAKRyorJgKrTOhfJjgBFBExXUeguLXfgPeBcuAOYJ4jlRV7gC7AeOAwMAtYEpHxcfTo9ogwtwV4EK2ieqBlXBcXqDC17zMt7EDLrCj0IvB6xLkCnLXnGmAXMNBF7fy3b2KJ7SqeheEhYIMBOJFl7knUD7r6xhqBWMxQFftebAdmo455T2AHR4Aq1IM32u9x4BnUpn2Aq/CFXKM1qO0PW78TMAA4HkMLidG28FdrLwHn0LLbc0TH5s42oR4lgHXWrgbWBgA0oLlgt29sFDASeM8FXgF6AwtpG3x2A6cCO7nPdtstRM19gMXArYHxo8BPvn45sMzMstIFNgMr0IplGVq1gB6ZXwLM8oBpwKQQANOMR5AOoMfbE/4acCUwB9gXA1qBRagzzjFbz0Gd5jvgphCm9fbrz2wNhNNO9AgOAV5F68wngE2QCsWNwAI0Zz9tO50FbAOm0zYi1pl2hgNTbc0aU3MrbcN7I+o3Q9H7Qi804m7xJsRKxx2ienM5aA5YijrfQhO6HnW4vj6mcWAm6ries91r2moJADiC+tVy9Co3BXVIAJwb9/nScSorOjZxGfAtejqGkBv9YVo5CzxuIJPCPWFJCqTm8ahzelVMrvSlmerHoPB2AEJA3A6sBq7JUfgW1IeqwoSHAggBMRINMoM7KHwreilJ3paCwtMCCAExCXgLrXSzUQJ15DHAN5mEQ3Tblpjwd4EPCa+S4mg1vQo9CaOJUNbFsk1A74jPoonkefRbwMtobk8qDE3Nz6GRtBwNZtWmuZwBOGiqnYfWCQdt/APgTjRgOQbgezRC1pP6iHHkfDUgwFfW/LQJzZq9rH8GjY4enaJ9Iku7ww6RzznHojmkET3nyXSbzuFy0UAm6odWuHE0JO/uiGCPzifCFXkbJpXC/xcArgcgzS3rogOA8ArpogPwq737fwIgoOIGtFY4jtYBYXOyUrQvpW2Z5qMVzgBSZjiN5v79+C41UU5FxmOY/GawYwRIawy9vBajN91epOpBFy061qHRrwYnv9Vbn+nDRjQTlM2AltN9kda5SHwWEi9E4vVIvNFaPRKPIfGpSOuTtJzuwxUzzt8EtoNuwHQkXky8rhBJ5IGkWecIjhsnr6gRJ+8EWszUZtJAFABlwNdo5BM0xifSLMkzM4H6xCjgaCYAUUOxd1E9DExGb7dBroL6xwagP1qMZqWO5oImA1GT5n0dviMZhXIJRG6O7y4YgESO70Ipqgk8e5eit6cGwn2gC6m/cSJtLi0AqayAqsXQ/6kmtLQuMCFjs/CsQ6viaqCJqkXJSJpDWS5DcS8ZQdHwMtyCThDxrzAch0RTM3V7qknU7wJnXzoAWUzgjCfRMJ/abS10/IOlg+Pmg7MA/QAWSv8CP+OvnvoIdH4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTktMTItMTlUMTY6MjM6MTErMDA6MDB7cNJmAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE5LTEyLTE5VDE2OjIzOjExKzAwOjAwCi1q2gAAAABJRU5ErkJggg==") !important; + background-color: #633f7e } #toast-container .toast-success, @@ -891,4332 +907,4356 @@ body { #toast-container .toast-info, #toast-container .toast-wait, #toast-container .toast-warning { - background-color: rgba(255, 255, 255, 0.95) + background-color: rgba(255, 255, 255, 0.95) } @media all and (max-width:240px) { - box-shadow 0 0 12px $color-darkest>div { - padding: 8px 8px 8px 50px; - width: 11em - } + box-shadow 0 0 12px $color-darkest>div { + padding: 8px 8px 8px 50px; + width: 11em + } } @media all and (min-width:241px) and (max-width:480px) { - box-shadow 0 0 12px $color-darkest>div { - padding: 8px 8px 8px 50px; - width: 18em - } + box-shadow 0 0 12px $color-darkest>div { + padding: 8px 8px 8px 50px; + width: 18em + } } @media all and (min-width:481px) and (max-width:768px) { - box-shadow 0 0 12px $color-darkest>div { - padding: 15px 15px 15px 50px; - width: 25em - } + box-shadow 0 0 12px $color-darkest>div { + padding: 15px 15px 15px 50px; + width: 25em + } } box-shadow 0 0 12px $color-darkest:not(.no-enter)>div.ng-enter, box-shadow 0 0 12px $color-darkest:not(.no-leave)>div.ng-leave { - -webkit-transition: 1000ms cubic-bezier(0.25, 0.25, 0.75, 0.75) all; - -moz-transition: 1000ms cubic-bezier(0.25, 0.25, 0.75, 0.75) all; - -o-transition: 1000ms cubic-bezier(0.25, 0.25, 0.75, 0.75) all; - -ms-transition: 1000ms cubic-bezier(0.25, 0.25, 0.75, 0.75) all; - transition: 1000ms cubic-bezier(0.25, 0.25, 0.75, 0.75) all + -webkit-transition: 1000ms cubic-bezier(0.25, 0.25, 0.75, 0.75) all; + -moz-transition: 1000ms cubic-bezier(0.25, 0.25, 0.75, 0.75) all; + -o-transition: 1000ms cubic-bezier(0.25, 0.25, 0.75, 0.75) all; + -ms-transition: 1000ms cubic-bezier(0.25, 0.25, 0.75, 0.75) all; + transition: 1000ms cubic-bezier(0.25, 0.25, 0.75, 0.75) all } box-shadow 0 0 12px $color-darkest:not(.no-enter)>div.ng-enter.ng-enter-active, box-shadow 0 0 12px $color-darkest:not(.no-leave)>div.ng-leave { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) } box-shadow 0 0 12px $color-darkest:not(.no-leave)>div.ng-leave.ng-leave-active, box-shadow 0 0 12px $color-darkest:not(.no-enter)>div.ng-enter { - opacity: 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0) + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0) } body { - position: relative; - height: 100%; - background: #0c0c11; - background-image: -webkit-linear-gradient(45deg, #0c0c11, #1a173e); - background-image: -moz-linear-gradient(45deg, #0c0c11, #1a173e); - background-image: -o-linear-gradient(45deg, #0c0c11, #1a173e); - background-image: -ms-linear-gradient(45deg, #0c0c11, #1a173e); - background-image: linear-gradient(45deg, #000000, #282828) -} + position: relative; + height: 100%; + background: black; + background-image: -webkit-linear-gradient(45deg, #000000, #000000); + background-image: -moz-linear-gradient(45deg, #000000, #000000); + background-image: -o-linear-gradient(45deg, #000000, #000000); + background-image: -ms-linear-gradient(45deg, #000000, #000000); + background-image: linear-gradient(45deg, #000000, #000000); + } body.immersed { - background-image: none; + background-image: none; } body.immersed #topbar { - visibility: hidden + visibility: hidden } body #topbar { - z-index: 2; - position: absolute; - top: 0; - height: 5rem; - width: 100%; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - -webkit-app-region: drag; + z-index: 2; + position: absolute; + top: 0; + height: var(--topbar-height); + width: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-app-region: drag; } body #topbar>* { - -webkit-app-region: no-drag + -webkit-app-region: no-drag } body #topbar .logo, body #topbar .back { - position: absolute; - top: 0; - left: 0; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: var(--topbar-height); - width: var(--navbar-width) + position: absolute; + top: 0; + left: 0; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: var(--topbar-height); + width: var(--navbar-width) } body #topbar .logo img { - height: 2.5rem; - width: 2.5rem + height: 2.5rem; + width: 2.5rem } body #topbar .back .button { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - padding: .5rem; - border-radius: .75rem; - outline: none; - cursor: pointer; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + padding: .5rem; + border-radius: .75rem; + outline: none; + cursor: pointer; } body #topbar .back .button .icon { - height: 2rem; - width: 2rem; - color: #fff; - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) + height: 2rem; + width: 2rem; + color: #fff; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) } body #topbar .back .button:focus, body #topbar .back .button:hover { - background-color: rgba(255, 255, 255, 0.05); + background-color: rgba(255, 255, 255, 0.05); } body #topbar .back .button:focus .icon, body #topbar .back .button:hover .icon { - opacity: 1; - -ms-filter: none; - filter: none + opacity: 1; + -ms-filter: none; + filter: none } body #topbar #search-form-container { - position: relative; - height: 3rem; - width: 30rem; + position: relative; + height: 3rem; + width: 30rem; } body #topbar #search-form-container #search-bar { - z-index: 1; - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - height: 100%; - border-radius: 3rem; - background-color: rgba(255, 255, 255, 0.05); - overflow: hidden; + z-index: 1; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + height: 100%; + border-radius: 3rem; + background-color: rgba(255, 255, 255, 0.05); + overflow: hidden; } body #topbar #search-form-container #search-bar input { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - box-flex: 1; - -webkit-flex: auto; - -ms-flex: auto; - flex: auto; - border: none; - outline: none; - background: transparent + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto; + border: none; + outline: none; + background: transparent } body #topbar #search-form-container #search-bar button { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - box-flex: 1; - -webkit-flex: 0 0 3.5rem; - -ms-flex: 0 0 3.5rem; - flex: 0 0 3.5rem; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 100%; - opacity: .4; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; - filter: alpha(opacity=40); - background-color: transparent; - cursor: pointer; + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 0 0 3.5rem; + -ms-flex: 0 0 3.5rem; + flex: 0 0 3.5rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 100%; + opacity: .4; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + filter: alpha(opacity=40); + background-color: transparent; + cursor: pointer; } body #topbar #search-form-container #search-bar button.active { - opacity: .7; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; - filter: alpha(opacity=70) + opacity: .7; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; + filter: alpha(opacity=70) } body #topbar #search-form-container #search-bar button:hover { - opacity: 1; - -ms-filter: none; - filter: none + opacity: 1; + -ms-filter: none; + filter: none } body #topbar #search-form-container #search-bar .icon { - height: 1.6rem; - width: 1.6rem; - color: #fff + height: 1.6rem; + width: 1.6rem; + color: #fff } body #topbar #search-form-container #search-dropdown { - position: absolute; - z-index: 99; - top: 3rem; - width: 100%; - color: #fff; - border-radius: .75rem; - background-color: #282828; - -webkit-box-shadow: 0 0 2rem 0 #1a173e, 0 0 2rem 0 rgba(12, 12, 17, 0.6) inset; - box-shadow: 0 0 2rem 0 #1a173e, 0 0 2rem 0 rgba(12, 12, 17, 0.6) inset; + position: absolute; + z-index: 99; + top: 3rem; + width: 100%; + color: #fff; + border-radius: .75rem; + background-color: black; + /* -webkit-box-shadow: 0 0 2rem 0 #1a173e, 0 0 2rem 0 rgba(12, 12, 17, 0.6) inset; + box-shadow: 0 0 2rem 0 #1a173e, 0 0 2rem 0 rgba(12, 12, 17, 0.6) inset; */ } body #topbar #search-form-container #search-dropdown .last-searches-container { - padding: 1rem 1.5rem; + padding: 1rem 1.5rem; } body #topbar #search-form-container #search-dropdown .last-searches-container .header-container { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; - margin-bottom: 1rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + margin-bottom: 1rem; } body #topbar #search-form-container #search-dropdown .last-searches-container .header-container .header { - font-size: .9rem; - font-weight: 500; - color: rgba(255, 255, 255, 0.75) + font-size: .9rem; + font-weight: 500; + color: rgba(255, 255, 255, 0.75) } body #topbar #search-form-container #search-dropdown .last-searches-container .header-container .clear-button-container { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: baseline; - -moz-box-align: baseline; - -o-box-align: baseline; - -ms-flex-align: baseline; - -webkit-align-items: baseline; - align-items: baseline; - cursor: pointer; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: baseline; + -moz-box-align: baseline; + -o-box-align: baseline; + -ms-flex-align: baseline; + -webkit-align-items: baseline; + align-items: baseline; + cursor: pointer; } body #topbar #search-form-container #search-dropdown .last-searches-container .header-container .clear-button-container .label { - margin-right: .5em; - font-size: .9rem; - font-weight: 500; - color: rgba(255, 255, 255, 0.75) + margin-right: .5em; + font-size: .9rem; + font-weight: 500; + color: rgba(255, 255, 255, 0.75) } body #topbar #search-form-container #search-dropdown .last-searches-container .header-container .clear-button-container .icon { - font-size: 10px; - color: rgba(255, 255, 255, 0.75) + font-size: 10px; + color: rgba(255, 255, 255, 0.75) } body #topbar #search-form-container #search-dropdown .last-searches-container .header-container .clear-button-container:hover .label, body #topbar #search-form-container #search-dropdown .last-searches-container .header-container .clear-button-container:focus .label, body #topbar #search-form-container #search-dropdown .last-searches-container .header-container .clear-button-container:hover .icon, body #topbar #search-form-container #search-dropdown .last-searches-container .header-container .clear-button-container:focus .icon { - color: rgba(255, 255, 255, 0.5) + color: rgba(255, 255, 255, 0.5) } body #topbar #search-form-container #search-dropdown .last-searches-container .last-searches>li { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - height: 2.5rem; - padding: 0 1rem; - font-size: 1rem; - font-weight: 500; - overflow: hidden; - white-space: pre; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - border-radius: .75rem; - cursor: pointer; - outline: none; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + height: 2.5rem; + padding: 0 1rem; + font-size: 1rem; + font-weight: 500; + overflow: hidden; + white-space: pre; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + border-radius: .75rem; + cursor: pointer; + outline: none; } body #topbar #search-form-container #search-dropdown .last-searches-container .last-searches>li:hover, body #topbar #search-form-container #search-dropdown .last-searches-container .last-searches>li:focus { - background-color: rgba(255, 255, 255, 0.05) + background-color: rgba(255, 255, 255, 0.05) } body #topbar #search-form-container #search-dropdown .footer-container { - padding: 1rem; - padding-bottom: 1.5rem; + padding: 1rem; + padding-bottom: 1.5rem; } body #topbar #search-form-container #search-dropdown .footer-container .header { - margin-bottom: 2rem; - text-align: center; - font-size: .9rem; - font-weight: 500; - color: #fff; - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50) + margin-bottom: 2rem; + text-align: center; + font-size: .9rem; + font-weight: 500; + color: #fff; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) } body #topbar #search-form-container #search-dropdown .footer-container .icons { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; } body #topbar #search-form-container #search-dropdown .footer-container .icons .icon-container { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: start; - -moz-box-pack: start; - -o-box-pack: start; - -ms-flex-pack: start; - -webkit-justify-content: flex-start; - justify-content: flex-start; - width: 6rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: start; + -moz-box-pack: start; + -o-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + width: 6rem; } body #topbar #search-form-container #search-dropdown .footer-container .icons .icon-container .icon { - height: 2.5rem; - width: 2.5rem; - margin-bottom: .5rem; - color: #fff; - opacity: .15; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=15)"; - filter: alpha(opacity=15) + height: 2.5rem; + width: 2.5rem; + margin-bottom: .5rem; + color: #fff; + opacity: .15; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=15)"; + filter: alpha(opacity=15) } body #topbar #search-form-container #search-dropdown .footer-container .icons .icon-container .label { - font-family: 'PlusJakartaSans'; - font-size: .8rem; - font-weight: 500; - text-align: center; - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50) + font-family: PlusJakartaSans, Arial, Helvetica, sans-serif; + font-size: .8rem; + font-weight: 500; + text-align: center; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) } body #navbar { - z-index: 1; - position: fixed; - top: 0; - left: 0; - bottom: 0; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: start; - -moz-box-pack: start; - -o-box-pack: start; - -ms-flex-pack: start; - -webkit-justify-content: flex-start; - justify-content: flex-start; - height: 100%; - width: var(--navbar-width); - padding-top: calc(var(--topbar-height) + 1rem); - background: transparent; + z-index: 1; + position: fixed; + top: 0; + left: 0; + bottom: 0; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: start; + -moz-box-pack: start; + -o-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + height: 100%; + width: var(--navbar-width); + padding-top: calc(var(--topbar-height) + 1rem); + background: transparent; } body #navbar .tab { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - width: calc(var(--navbar-width) - 1.25rem); - padding: .5rem 0; - margin-bottom: 1rem; - border-radius: .75rem; - outline: none; - cursor: pointer; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + width: calc(var(--navbar-width) - 1.25rem); + padding: .5rem .25rem; + margin-bottom: 1rem; + border-radius: .75rem; + outline: none; + overflow: visible; + cursor: pointer; } body #navbar .tab .icon { - height: 2rem; - width: 2rem; - color: #fff; - padding-bottom: .1rem; - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) + height: 2rem; + width: 2rem; + padding-bottom: .1rem; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) } body #navbar .tab .label { - font-size: .75rem; - font-weight: 500; - opacity: 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0) + width: 100%; + font-size: .75rem; + font-weight: 500; + text-align: center; + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0) } body #navbar .tab .icon-back { - -webkit-background-size: 65%; - -moz-background-size: 65%; - background-size: 65%; - opacity: .9; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; - filter: alpha(opacity=90) + -webkit-background-size: 65%; + -moz-background-size: 65%; + background-size: 65%; + opacity: .9; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; + filter: alpha(opacity=90) } body #navbar .tab:focus, body #navbar .tab:hover { - background-color: rgba(255, 255, 255, 0.05); + background-color: rgba(255, 255, 255, 0.05); } body #navbar .tab:focus .label, body #navbar .tab:hover .label { - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50) + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) } body #navbar .tab.selected .icon { - color: #7b5bf5; - opacity: 1; - -ms-filter: none; - filter: none + color: white; + opacity: 1; + -ms-filter: none; + filter: none } @media only screen and (max-width:750px) { - #navbar .tab>span { - display: none - } + #navbar .tab>span { + display: none + } } #window-controls { - z-index: 2; - position: fixed; - height: 5rem; - top: 0; - right: 1.5rem; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: end; - -moz-box-pack: end; - -o-box-pack: end; - -ms-flex-pack: end; - -webkit-justify-content: flex-end; - justify-content: flex-end; - cursor: default !important; - -webkit-app-region: no-drag; - app-region: no-drag; - -webkit-transition: all 0.13s ease-in; - -moz-transition: all 0.13s ease-in; - -o-transition: all 0.13s ease-in; - -ms-transition: all 0.13s ease-in; - transition: all 0.13s ease-in; + z-index: 2; + position: fixed; + height: var(--topbar-height); + top: 0; + right: 1.5rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: end; + -moz-box-pack: end; + -o-box-pack: end; + -ms-flex-pack: end; + -webkit-justify-content: flex-end; + justify-content: flex-end; + cursor: default !important; + -webkit-app-region: no-drag; + app-region: no-drag; + -webkit-transition: all 0.13s ease-in; + -moz-transition: all 0.13s ease-in; + -o-transition: all 0.13s ease-in; + -ms-transition: all 0.13s ease-in; + transition: all 0.13s ease-in; } #window-controls li { - position: relative; - height: 3.15rem; - width: 3.15rem; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - margin-left: .5rem; - border-radius: .75rem; - cursor: pointer; + position: relative; + height: 3.15rem; + width: 3.15rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-left: .5rem; + border-radius: .75rem; + cursor: pointer; } #window-controls li .icon { - height: 2rem; - width: 2rem; - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) + height: 2rem; + width: 2rem; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) } #window-controls li:hover { - background-color: rgba(255, 255, 255, 0.05); + background-color: rgba(255, 255, 255, 0.05); } #window-controls li:hover .icon { - opacity: .6; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - filter: alpha(opacity=60) + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) } #window-controls .user-menu { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - cursor: pointer + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + cursor: pointer } #window-controls #user-panel { - z-index: 1; - position: absolute; - top: 5rem; - right: 0; - width: 20rem; - border-radius: .75rem; - background-color: #282828; - -webkit-box-shadow: 0 0 2rem 0 #3A3A3A; - box-shadow: 0 0 2rem 0 #3A3A3A; - overflow: hidden; + z-index: 1; + position: absolute; + top: var(--topbar-height); + right: 0; + width: 20rem; + border-radius: .75rem; + background-color: black; + /* -webkit-box-shadow: 0 0 2rem 0 rgba(123, 91, 245, 0.2); + box-shadow: 0 0 2rem 0 rgba(123, 91, 245, 0.2); */ + overflow: hidden; } #window-controls #user-panel .user-info { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - padding: 1.5rem 1rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + padding: 1.5rem 1rem; } #window-controls #user-panel .user-info .avatar { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - position: relative; - height: 3.5rem; - width: 3.5rem; - margin-right: 1.25em; - border-radius: 100%; - background-color: rgba(255, 255, 255, 0.05); - overflow: hidden; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + height: 3.5rem; + width: 3.5rem; + margin-right: 1.25em; + border-radius: 100%; + background-color: rgba(255, 255, 255, 0.05); + overflow: hidden; } #window-controls #user-panel .user-info .avatar .picture { - z-index: 1; - position: absolute; - height: 100%; + z-index: 1; + position: absolute; + height: 100%; } #window-controls #user-panel .user-info .avatar .picture.placeholder { - z-index: 0 + z-index: 0 } #window-controls #user-panel .user-info .email-container { - width: 75%; + width: 75%; } #window-controls #user-panel .user-info .email-container .email, #window-controls #user-panel .user-info .email-container .login-logout-button { - overflow: hidden; - white-space: nowrap; - -o-text-overflow: ellipsis; - text-overflow: ellipsis + overflow: hidden; + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis } #window-controls #user-panel .user-info .email-container .email { - font-size: 14px + font-size: 14px } #window-controls #user-panel .user-info .email-container .login-logout-button { - display: block; - outline: none; - color: #7a7985; - cursor: pointer; + display: block; + outline: none; + color: #7a7985; + cursor: pointer; } #window-controls #user-panel .user-info .email-container .login-logout-button:hover { - color: #fff + color: #fff } #window-controls #user-panel .section { - padding: .75rem 0; - border-top: 1px solid rgba(255, 255, 255, 0.1); + padding: .75rem 0; + border-top: 1px solid rgba(255, 255, 255, 0.1); } #window-controls #user-panel .section .option { - padding: 0 1.5rem; - height: 4em; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - cursor: pointer; + padding: 0 1.5rem; + height: 4em; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + cursor: pointer; } #window-controls #user-panel .section .option:hover { - background-color: rgba(255, 255, 255, 0.05) + background-color: rgba(255, 255, 255, 0.05) } #window-controls #user-panel .section .option .icon { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 1.75rem; - width: 1.75rem; - margin-right: 1.25rem; - color: #fff; - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30); + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 1.75rem; + width: 1.75rem; + margin-right: 1.25rem; + color: #fff; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); } #window-controls #user-panel .section .option .icon+.option-label { - padding-left: 0 + padding-left: 0 } #window-controls #user-panel .section .option .option-label { - font-size: .9rem; - font-weight: 500; - color: rgba(255, 255, 255, 0.9); - word-break: break-all + font-size: .9rem; + font-weight: 500; + color: rgba(255, 255, 255, 0.9); + word-break: break-all } #window-controls #user-panel .section .option.link { - height: 2.5rem !important + height: 2.5rem !important } #window-controls .search .icon { - display: none + display: none } #body { - z-index: 0; - position: absolute; - top: 0; - left: var(--navbar-width); - right: 0; - bottom: 0; - overflow: hidden; - -webkit-transition: all 0.25s ease-in; - -moz-transition: all 0.25s ease-in; - -o-transition: all 0.25s ease-in; - -ms-transition: all 0.25s ease-in; - transition: all 0.25s ease-in + z-index: 0; + position: absolute; + top: 0; + left: var(--navbar-width); + right: 0; + bottom: 0; + overflow: hidden; +} + +#body.bodyFullWidth { + left: 0 } #content { - position: relative; - white-space: nowrap; - overflow: visible; - padding: 0; - margin: 0; + position: relative; + white-space: nowrap; + overflow: visible; + padding: 0; + margin: 0; } #content.transition { - -webkit-transition: all 0.35s ease-in-out; - -moz-transition: all 0.35s ease-in-out; - -o-transition: all 0.35s ease-in-out; - -ms-transition: all 0.35s ease-in-out; - transition: all 0.35s ease-in-out + -webkit-transition: all 0.35s ease-in-out; + -moz-transition: all 0.35s ease-in-out; + -o-transition: all 0.35s ease-in-out; + -ms-transition: all 0.35s ease-in-out; + transition: all 0.35s ease-in-out } #content>li { - white-space: normal; - vertical-align: top; - display: inline-block; - position: relative; - width: 100%; - height: 100%; + white-space: normal; + vertical-align: top; + display: inline-block; + position: relative; + width: 100%; + height: 100%; } #content>li.hidden { - display: none + display: none } [ui-view] { - position: relative; - height: 100%; - width: 100% + position: relative; + height: 100%; + width: 100% } [ui-view]>div { - position: relative; - height: 100%; - width: 100% !important; - padding-top: calc(var(--topbar-height) + 1rem); - padding-left: 1rem + position: relative; + height: 100%; + width: 100% !important; + padding-top: calc(var(--topbar-height) + 1rem); + padding-left: 1rem } .bottom-notification { - background-color: #22b467; - position: fixed; - bottom: 0; - left: 0; - right: 0; - height: 38px; - line-height: 38px; - font-size: 15px; - font-weight: 600; - z-index: 9999999; + background-color: #22b467; + position: fixed; + bottom: 0; + left: 0; + right: 0; + height: 38px; + line-height: 38px; + font-size: 15px; + font-weight: 600; + z-index: 9999999; } .bottom-notification .right { - text-align: center; + text-align: center; } .bottom-notification .right .icon-ic_stremio_tray { - vertical-align: middle; - margin: -5px 0 0 0; - font-size: 20px + vertical-align: middle; + margin: -5px 0 0 0; + font-size: 20px } .bottom-notification .right>div { - display: inline-block; - margin: 0 8px + display: inline-block; + margin: 0 8px } .bottom-notification .call-to-action { - cursor: pointer; - color: #fff; - font-weight: bold; - text-decoration: underline; + cursor: pointer; + color: #fff; + font-weight: bold; + text-decoration: underline; } .bottom-notification .call-to-action:hover { - opacity: .7; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; - filter: alpha(opacity=70) + opacity: .7; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; + filter: alpha(opacity=70) } .bottom-notification .close { - width: 30px; - height: 36px; - line-height: 36px; - float: right; + width: 30px; + height: 36px; + line-height: 36px; + float: right; } .bottom-notification .close:hover { - opacity: .7; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; - filter: alpha(opacity=70) + opacity: .7; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; + filter: alpha(opacity=70) } #updateModal .modal-bg { - padding-bottom: 3em + padding-bottom: 3em } #updateModal img.modal-cat { - position: absolute; - width: 156px; - height: 168px; - top: -93px; - left: 60px + position: absolute; + width: 156px; + height: 168px; + top: -93px; + left: 60px } .empty-library { - position: relative; - height: 100%; - width: 100%; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - text-align: center; - padding-top: 7rem; + position: relative; + height: 100%; + width: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + text-align: center; + padding-top: 7rem; } .empty-library .placeholder { - height: 15rem; - margin-top: 2rem; + height: 15rem; + margin-top: 2rem; } .empty-library .placeholder.icon { - opacity: .2; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"; - filter: alpha(opacity=20) + opacity: .2; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"; + filter: alpha(opacity=20) } .empty-library h2 { - font-size: 2rem; - font-weight: 300; - opacity: .2; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"; - filter: alpha(opacity=20) + font-size: 2rem; + font-weight: 300; + opacity: .2; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"; + filter: alpha(opacity=20) } .empty-library h3 { - font-size: 1.5rem; - font-weight: 500 + font-size: 1.5rem; + font-weight: 500 } .empty-library button { - height: 4rem; - padding: 0 7rem; - line-height: 4.5rem; - font-size: 1.25rem; - margin-top: 1rem; + height: 4rem; + padding: 0 7rem; + line-height: 4.5rem; + font-size: 1.25rem; + margin-top: 1rem; } - +/* .empty-library button:hover { - -webkit-box-shadow: 0 0 0 .12rem #fff inset; - box-shadow: 0 0 0 .12rem #fff inset; - background-color: transparent !important -} + -webkit-box-shadow: 0 0 0 .17rem #fff inset; + box-shadow: 0 0 0 .17rem #fff inset; + background-color: transparent !important +} */ .empty-library ul { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: distribute; - -moz-box-pack: distribute; - -o-box-pack: distribute; - -ms-flex-pack: distribute; - -webkit-justify-content: space-around; - justify-content: space-around; - -webkit-box-lines: multiple; - -moz-box-lines: multiple; - -o-box-lines: multiple; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - width: 42rem; - margin: 2rem 0; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: distribute; + -moz-box-pack: distribute; + -o-box-pack: distribute; + -ms-flex-pack: distribute; + -webkit-justify-content: space-around; + justify-content: space-around; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + -o-box-lines: multiple; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + width: 42rem; + margin: 2rem 0; } .empty-library ul li { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: start; - -moz-box-pack: start; - -o-box-pack: start; - -ms-flex-pack: start; - -webkit-justify-content: flex-start; - justify-content: flex-start; - border-radius: .75rem; - width: 18rem; - padding: .5rem 1rem; - margin-bottom: 1rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: start; + -moz-box-pack: start; + -o-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + border-radius: .75rem; + width: 18rem; + padding: .5rem 1rem; + margin-bottom: 1rem; } .empty-library ul li .icon { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - height: 3.5rem; - width: 3.5rem; - opacity: .1; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)"; - filter: alpha(opacity=10) + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + height: 3.5rem; + width: 3.5rem; + opacity: .1; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)"; + filter: alpha(opacity=10) } .empty-library ul li .title { - font-size: 1.5rem; - font-weight: 700; - margin-bottom: 1rem + font-size: 1.5rem; + font-weight: 700; + margin-bottom: 1rem } .empty-library ul li .label { - font-size: 1rem; - font-weight: 500; - opacity: .6; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - filter: alpha(opacity=60); - text-align: left; - margin-left: 1rem + font-size: 1rem; + font-weight: 500; + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60); + text-align: left; + margin-left: 1rem } .empty-library ul.four li { - cursor: pointer; + cursor: pointer; } .empty-library ul.four li:hover { - background-color: rgba(255, 255, 255, 0.05) + background-color: rgba(255, 255, 255, 0.05) } .empty-library .login { - width: 100%; - margin: auto; - margin-top: 30px; - position: relative + width: 100%; + margin: auto; + margin-top: 30px; + position: relative } .empty-library .login-links { - font-size: 18px; - text-transform: uppercase; + font-size: 18px; + text-transform: uppercase; } .empty-library .login-links .log-in { - background-color: #8a5aab; - padding: 20px; - width: 230px; - color: #fff; - line-height: 1.5em; - font-weight: 500 + background-color: #8a5aab; + padding: 20px; + width: 230px; + color: #fff; + line-height: 1.5em; + font-weight: 500 } .empty-library .login-links .sign-up { - background-color: #8ca3dc; - padding: 20px; - width: 230px; - color: #fff; - line-height: 1.5em; - font-weight: 500 + background-color: #8ca3dc; + padding: 20px; + width: 230px; + color: #fff; + line-height: 1.5em; + font-weight: 500 } .empty-library.board-holder { - position: relative; - -webkit-transition: top 0.5s ease-in-out; - -moz-transition: top 0.5s ease-in-out; - -o-transition: top 0.5s ease-in-out; - -ms-transition: top 0.5s ease-in-out; - transition: top 0.5s ease-in-out + position: relative; + -webkit-transition: top 0.5s ease-in-out; + -moz-transition: top 0.5s ease-in-out; + -o-transition: top 0.5s ease-in-out; + -ms-transition: top 0.5s ease-in-out; + transition: top 0.5s ease-in-out } .stremio-no-image { - opacity: 1 !important; - -ms-filter: none !important; - filter: none !important + opacity: 1 !important; + -ms-filter: none !important; + filter: none !important } .show { - display: block !important -} - -@media (-webkit-min-device-pixel-ratio:2), -(min-resolution:192dpi) { - html { - font-size: 12px - } + display: block !important } @-moz-keyframes flash { - 0% { - opacity: .6; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - filter: alpha(opacity=60) - } - 100% { - opacity: 1; - -ms-filter: none; - filter: none - } + 0% { + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) + } + 100% { + opacity: 1; + -ms-filter: none; + filter: none + } } @-webkit-keyframes flash { - 0% { - opacity: .6; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - filter: alpha(opacity=60) - } - 100% { - opacity: 1; - -ms-filter: none; - filter: none - } + 0% { + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) + } + 100% { + opacity: 1; + -ms-filter: none; + filter: none + } } @-o-keyframes flash { - 0% { - opacity: .6; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - filter: alpha(opacity=60) - } - 100% { - opacity: 1; - -ms-filter: none; - filter: none - } + 0% { + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) + } + 100% { + opacity: 1; + -ms-filter: none; + filter: none + } } @keyframes flash { - 0% { - opacity: .6; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - filter: alpha(opacity=60) - } - 100% { - opacity: 1; - -ms-filter: none; - filter: none - } + 0% { + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) + } + 100% { + opacity: 1; + -ms-filter: none; + filter: none + } } .items { - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - -ms-backface-visibility: hidden; - backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; } .items .groupName { - font-size: 19px; - margin: 10px 5px 5px; - text-transform: capitalize + font-size: 19px; + margin: 10px 5px 5px; + text-transform: capitalize } .items .name { - display: none + display: none; + width: 100%; + overflow-wrap: anywhere } .items .thumb { - position: relative; - background-repeat: no-repeat; - -webkit-background-size: cover; - -moz-background-size: cover; - background-size: cover; - background-position: center; - -webkit-background-origin: border; - -moz-background-origin: border; - background-origin: border-box; - height: 100%; - width: 100%; - border-radius: .75rem; - cursor: pointer; - -webkit-transition: -webkit-transform 0.2s ease-in-out; - -moz-transition: -moz-transform 0.2s ease-in-out; - -o-transition: -o-transform 0.2s ease-in-out; - -ms-transition: -ms-transform 0.2s ease-in-out; - transition: transform 0.2s ease-in-out; - outline: none; - background-color: rgba(255, 255, 255, 0.05); - overflow: hidden; + position: relative; + background-repeat: no-repeat; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + background-position: center; + -webkit-background-origin: border; + -moz-background-origin: border; + background-origin: border-box; + height: 100%; + width: 100%; + border-radius: .75rem; + cursor: pointer; + -webkit-transition: -webkit-transform 0.2s ease-in-out; + -moz-transition: -moz-transform 0.2s ease-in-out; + -o-transition: -o-transform 0.2s ease-in-out; + -ms-transition: -ms-transform 0.2s ease-in-out; + transition: transform 0.2s ease-in-out; + outline: none; + background-color: rgba(255, 255, 255, 0.05); + overflow: hidden; } .items .thumb.vignette:after { - content: ""; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - background: -webkit-radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.42) 100%); - background: -moz-radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.42) 100%); - background: -o-radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.42) 100%); - background: -ms-radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.42) 100%); - background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.42) 100%) + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background: -webkit-radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.42) 100%); + background: -moz-radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.42) 100%); + background: -o-radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.42) 100%); + background: -ms-radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.42) 100%); + background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.42) 100%) } .items .thumb>img { - width: 100%; - height: 100%; - object-fit: cover + width: 100%; + height: 100%; + object-fit: cover } .items .name { - z-index: 1; - position: absolute; - padding: 1rem; - text-align: center; - font-size: 1rem; - font-weight: 500; - color: #fff; - overflow: hidden + z-index: 1; + position: absolute; + padding: 1rem; + text-align: center; + font-size: 1rem; + font-weight: 500; + color: #fff; + overflow: hidden } .items .progress { - position: absolute; - bottom: .75rem; - left: .75rem; - right: .75rem; - height: .4rem; - border-radius: .5rem; - background-color: rgba(128, 128, 128, 0.3); - overflow: hidden; + position: absolute; + bottom: .75rem; + left: .75rem; + right: .75rem; + height: .4rem; + border-radius: .5rem; + background-color: rgba(128, 128, 128, 0.3); + overflow: hidden; } .items .progress .bar { - position: relative; - height: 100%; - background-color: #fff + position: relative; + height: 100%; + background-color: #fff } .items .thumb-overflow-fixer { - position: relative; - width: 100%; - height: 100% + position: relative; + width: 100%; + height: 100% } .items .notification { - position: absolute; - z-index: 1; - width: auto; - top: 0; - left: 0; - right: 0; - cursor: pointer; + position: absolute; + z-index: 1; + width: auto; + top: 0; + left: 0; + right: 0; + cursor: pointer; } .items .notification.bottom-right { - bottom: -20px; - left: 50%; - -webkit-transform: rotate(-45deg); - -moz-transform: rotate(-45deg); - -o-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - transform: rotate(-45deg); - -webkit-transform-origin: top left; - -moz-transform-origin: top left; - -o-transform-origin: top left; - -ms-transform-origin: top left; - transform-origin: top left + bottom: -20px; + left: 50%; + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + transform: rotate(-45deg); + -webkit-transform-origin: top left; + -moz-transform-origin: top left; + -o-transform-origin: top left; + -ms-transform-origin: top left; + transform-origin: top left } .items .notification.top-right { - top: -20px; - left: 50%; - -webkit-transform-origin: bottom left; - -moz-transform-origin: bottom left; - -o-transform-origin: bottom left; - -ms-transform-origin: bottom left; - transform-origin: bottom left; - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -o-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg) + top: -20px; + left: 50%; + -webkit-transform-origin: bottom left; + -moz-transform-origin: bottom left; + -o-transform-origin: bottom left; + -ms-transform-origin: bottom left; + transform-origin: bottom left; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg) } .items .notification.bottom { - bottom: -1px; - left: -1px; - right: -1px; - height: 30px; - width: auto; - text-align: center; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 2.25rem; + top: .8rem; + left: .8rem; + right: .8rem; + padding: 0 .5rem; + border-radius: .5rem; + background-color: rgba(0, 0, 0, 0.5); + backdrop-filter: blur(5px); + overflow: hidden; } .items .notification.bottom .icon { - margin-right: 5px; - position: static; - display: inline + margin-right: 5px; + position: static; + display: inline } .items .notification.bottom a { - padding-left: 0; - font-size: 13px; - display: inline; - line-height: 30px + padding-left: 0; + font-size: .8rem; + display: inline; + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden } .items .notification.watched { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 1.25rem; - width: 1.25rem; - top: .5rem; - left: .5rem; - border-radius: 100%; - color: #fff; - background: #7b5bf5; + z-index: 99; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 1.25rem; + width: 1.25rem; + top: .5rem; + left: .5rem; + border-radius: 100%; + color: #fff; + background: #6e6e6e; } .items .notification.watched .icon { - height: .75rem; - width: .75rem + height: .75rem; + width: .75rem } .items .notification.in-cinema { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 2.25rem; - top: .8rem; - left: .8rem; - right: .8rem; - border-radius: .5rem; - background-color: rgba(0, 0, 0, 0.5); - backdrop-filter: blur(5px) + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 2.25rem; + top: .8rem; + left: .8rem; + right: .8rem; + border-radius: .5rem; + background-color: rgba(0, 0, 0, 0.5) } .items .notification a { - position: relative; - display: block; - color: #fff; - font-size: .9rem; - font-weight: 600; - margin-left: .5rem; - text-transform: uppercase; - -webkit-transition: all 0.25s ease; - -moz-transition: all 0.25s ease; - -o-transition: all 0.25s ease; - -ms-transition: all 0.25s ease; - transition: all 0.25s ease + position: relative; + display: block; + color: #fff; + font-size: .9rem; + font-weight: 600; + margin-left: .5rem; + text-transform: uppercase; + -webkit-transition: all 0.25s ease; + -moz-transition: all 0.25s ease; + -o-transition: all 0.25s ease; + -ms-transition: all 0.25s ease; + transition: all 0.25s ease } .items .notification .icon { - height: 1rem; - width: 1rem + height: 1rem; + width: 1rem } .sidebar { - z-index: 1; - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - height: 100%; - border-radius: .75rem 0 0 0; - background-color: rgba(12, 12, 17, 0.8); - overflow: hidden; + z-index: 1; + position: absolute; + top: var(--topbar-height); + bottom: 0; + right: 0; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + border-radius: .75rem 0 0 0; + background-color: rgba(12, 12, 17, 0.9); + overflow: hidden; } .sidebar .sidebar-content { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - box-flex: 1; - -webkit-flex: auto; - -ms-flex: auto; - flex: auto; - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-pack: start; - -moz-box-pack: start; - -o-box-pack: start; - -ms-flex-pack: start; - -webkit-justify-content: flex-start; - justify-content: flex-start; - height: 100%; - width: 29rem + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-pack: start; + -moz-box-pack: start; + -o-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + height: 100%; + width: 28rem } .sidebar .episodes { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -ms-flex-line-pack: end; - -webkit-align-content: flex-end; - align-content: flex-end; - height: 100%; - width: 100%; - overflow: hidden; - padding-top: 1.5rem; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-line-pack: end; + -webkit-align-content: flex-end; + align-content: flex-end; + height: 100%; + width: 100%; + overflow: hidden; + padding-top: 1.5rem; } .sidebar .episodes .heading { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: start; - -moz-box-align: start; - -o-box-align: start; - -ms-flex-align: start; - -webkit-align-items: flex-start; - align-items: flex-start; - padding: 0 1.5rem; - margin-bottom: 1rem; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: start; + -moz-box-align: start; + -o-box-align: start; + -ms-flex-align: start; + -webkit-align-items: flex-start; + align-items: flex-start; + padding: 0 1.5rem; + margin-bottom: 1rem; } .sidebar .episodes .heading .search { - position: relative; + position: relative; } .sidebar .episodes .heading .search input { - padding-right: 2.5rem + padding-right: 2.5rem } .sidebar .episodes .heading .search .icon { - position: absolute; - top: .75rem; - right: .75rem; - height: 1rem; - width: 1rem + position: absolute; + top: .75rem; + right: .75rem; + height: 1rem; + width: 1rem } .sidebar .episodes .episodes-list { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - height: 100%; - padding: .5rem 1.5rem; - overflow-y: auto; - scrollbar-width: thin; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + height: 100%; + padding: .5rem 1.5rem; + overflow-y: auto; + scrollbar-width: thin; } .sidebar .episodes .episodes-list li { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - position: relative; - height: 6rem; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - margin-bottom: .5rem; - padding: .75rem; - border-radius: .75rem; - outline: none; - cursor: pointer; - overflow: hidden; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + height: 6rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + margin-bottom: .5rem; + padding: .75rem; + border-radius: .75rem; + outline: none; + cursor: pointer; + overflow: hidden; } .sidebar .episodes .episodes-list li .thumbnail { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 100%; - width: 8rem; - margin-right: 1.25rem; - overflow: hidden; - border-radius: 2px; - background-color: rgba(255, 255, 255, 0.05); + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 100%; + width: 8rem; + margin-right: 1.25rem; + overflow: hidden; + border-radius: .75rem; + background-color: rgba(255, 255, 255, 0.05); } .sidebar .episodes .episodes-list li .thumbnail img { - height: 100%; - object-fit: cover + z-index: 0; + height: 100%; + object-fit: cover } .sidebar .episodes .episodes-list li .thumbnail .icon { - height: 2rem; - width: 2rem + z-index: 1; + position: absolute; + height: 2rem; + width: 2rem; + line-height: 2rem; + font-size: 1.5rem; + text-align: center } -.sidebar .episodes .episodes-list li .thumbnail .unavailable { - display: none +.sidebar .episodes .episodes-list li .thumbnail .upcoming { + display: none; + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) } .sidebar .episodes .episodes-list li .episode-details { - width: 100%; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; + width: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .sidebar .episodes .episodes-list li .episode-details .title { - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - margin-bottom: 1rem; - font-size: 1rem; - font-weight: 500; - overflow: hidden + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + margin-bottom: 1rem; + font-size: 1rem; + font-weight: 500; + overflow: hidden } .sidebar .episodes .episodes-list li .episode-details .footer { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; - height: 1.3rem; - width: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + height: 1.3rem; + width: 100%; } .sidebar .episodes .episodes-list li .episode-details .footer .date { - font-size: .8rem; - font-weight: 500; - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50) + font-size: .8rem; + font-weight: 500; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) } .sidebar .episodes .episodes-list li .episode-details .footer .watched { - display: none; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 100%; - padding: 0 .3rem; - line-height: 100%; - font-size: .7rem; - font-weight: 900; - color: #0c0c11; - text-transform: uppercase; - border-radius: .25rem; - background-color: #f6c700; + display: none; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 100%; + padding: 0 .3rem; + line-height: 100%; + font-size: .7rem; + font-weight: 900; + color: #0c0c11; + text-transform: uppercase; + border-radius: .25rem; + background-color: #f6c700; } .sidebar .episodes .episodes-list li .episode-details .footer .watched .icon { - height: 1rem; - width: 1rem; - margin-right: .25rem + height: 1rem; + width: 1rem; + margin-right: .25rem } .sidebar .episodes .episodes-list li.watched .watched { - display: -webkit-box !important; - display: -moz-box !important; - display: -webkit-flex !important; - display: -ms-flexbox !important; - display: box !important; - display: flex !important + display: -webkit-box !important; + display: -moz-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: box !important; + display: flex !important } -.sidebar .episodes .episodes-list li.unavailable .thumbnail .unavailable { - display: block !important +.sidebar .episodes .episodes-list li.upcoming .thumbnail img { + opacity: .25; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=25)"; + filter: alpha(opacity=25) } -.sidebar .episodes .episodes-list li.new-episode { - color: #f6c700 +.sidebar .episodes .episodes-list li.upcoming .thumbnail .upcoming { + display: block !important } -.sidebar .episodes .episodes-list li.playing { - background: rgba(255, 255, 255, 0.05) +.sidebar .episodes .episodes-list li.upcoming .episode-details { + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) } -.sidebar .episodes .episodes-list li:hover { - background: rgba(255, 255, 255, 0.05) +.sidebar .episodes .episodes-list li.new-episode { + color: #f6c700 } -.sidebar .episodes .episodes-list li:focus { - -webkit-box-shadow: 0 0 0 .2rem #fff; - box-shadow: 0 0 0 .2rem #fff +.sidebar .episodes .episodes-list li.playing { + background: rgba(255, 255, 255, 0.05) } -.sidebar .episodes .episodes-list li.unavailable { - opacity: .6; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - filter: alpha(opacity=60) +.sidebar .episodes .episodes-list li:hover { + background: rgba(255, 255, 255, 0.05) } +/* .sidebar .episodes .episodes-list li:focus { + -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff +} */ + .sidebar .ads-container { - text-align: center; - padding-right: 15px + text-align: center; + padding-right: 15px } .sidebar .showNotifs { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - margin-bottom: 1rem; - cursor: pointer + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-bottom: 1rem; + cursor: pointer } .sidebar .stream-picker { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - padding: 30px 20px; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 30px 20px; } .sidebar .stream-picker section { - margin-bottom: 10px + margin-bottom: 10px } .sidebar .stream-picker .button.show-streams { - font-size: 17px; - text-align: center; - padding: 12px 16px; - color: #fff; - background: rgba(138, 90, 171, 0.7) + font-size: 17px; + text-align: center; + padding: 12px 16px; + color: #fff; + background: rgba(138, 90, 171, 0.7) } .sidebar .details { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - padding: 0 2rem; - padding-top: 2rem; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 0 2rem; + padding-top: 2rem; } .sidebar .details .info { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; - height: 2rem; - margin-bottom: 2rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + height: 2rem; + margin-bottom: 2rem; } .sidebar .details .info li { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - font-size: 1.1rem; - font-weight: 600; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + font-size: 1.1rem; + font-weight: 600; } .sidebar .details .info li .icon { - height: 3rem; - width: 3rem; + height: 3rem; + width: 3rem; } .sidebar .details .info li .icon.imdb { - margin-left: .5rem; - color: #f5c518 + margin-left: .5rem; + color: #f5c518 } .sidebar .details .description { - font-size: 1rem; - font-weight: 500; - line-height: 1.5rem; - padding-bottom: 2rem + font-size: 1rem; + font-weight: 500; + line-height: 1.5rem; + padding-bottom: 2rem } .sidebar .details .section { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - margin: 1rem 0; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin: 1rem 0; } .sidebar .details .section .title { - font-size: .9rem; - font-weight: 700; - text-transform: uppercase; - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30); - margin-bottom: .5rem + font-size: .9rem; + font-weight: 700; + text-transform: uppercase; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); + margin-bottom: .5rem } .sidebar .details .section .links { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-lines: multiple; - -moz-box-lines: multiple; - -o-box-lines: multiple; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + -o-box-lines: multiple; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } .sidebar .details .section .links .link { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 2.2rem; - font-size: 1rem; - font-weight: 500; - padding: 0 1.5rem; - margin-right: .75rem; - margin-bottom: .75rem; - border-radius: 2rem; - background-color: rgba(255, 255, 255, 0.05); - outline: none; - cursor: pointer; - backdrop-filter: blur(10px); + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 2.2rem; + font-size: 1rem; + font-weight: 500; + padding: 0 1.5rem; + margin-right: .75rem; + margin-bottom: .75rem; + border-radius: 2rem; + background-color: rgba(255, 255, 255, 0.05); + outline: none; + cursor: pointer; } .sidebar .details .section .links .link:hover { - background-color: rgba(255, 255, 255, 0.1) + background-color: rgba(255, 255, 255, 0.1) } -.sidebar .details .section .links .link:focus { - -webkit-box-shadow: 0 0 0 .2rem #fff; - box-shadow: 0 0 0 .2rem #fff -} +/* .sidebar .details .section .links .link:focus { + -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff +} */ .sidebar .details .section .text { - max-width: 35rem; - font-size: 1rem + max-width: 35rem; + font-size: 1rem } .sidebar .head { - overflow: hidden; - padding: 2rem 2rem 0 2rem; - -webkit-align-self: stretch; - align-self: stretch; - -ms-flex-item-align: stretch; - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - box-flex: 1; - -webkit-flex: 0 0 auto; - -ms-flex: 0 0 auto; - flex: 0 0 auto; + overflow: hidden; + padding: 2rem 2rem 0 2rem; + -webkit-align-self: stretch; + align-self: stretch; + -ms-flex-item-align: stretch; + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } .sidebar .head .logo { - width: 100%; - margin: 10px auto 10px; - -webkit-background-size: contain; - -moz-background-size: contain; - background-size: contain; - background-position: center; - background-repeat: no-repeat; - height: 95px; - overflow: hidden; + width: 100%; + margin: 10px auto 10px; + -webkit-background-size: contain; + -moz-background-size: contain; + background-size: contain; + background-position: center; + background-repeat: no-repeat; + height: 95px; + overflow: hidden; } .sidebar .head .logo .fallback { - display: none + display: none } .sidebar .head .logo.stremio-no-image .fallback { - display: block + display: block } .sidebar .tvguide li { - margin-top: 30px + margin-top: 30px } .sidebar .availableOffline { - position: absolute; - width: 115px; - height: 20px; - top: 66px; - right: 10px + position: absolute; + width: 115px; + height: 20px; + top: 66px; + right: 10px } .sidebar .playback-chooser { - height: 25px; - position: absolute; - top: 16px; + height: 25px; + position: absolute; + top: 16px; } .sidebar .playback-chooser ul li { - cursor: pointer; - float: left; - padding: 1px 4px; - margin: 3px 0; - text-align: center; + cursor: pointer; + float: left; + padding: 1px 4px; + margin: 3px 0; + text-align: center; } .sidebar .playback-chooser ul li.selected { - background: #b174d7 + background: #b174d7 } .sidebar .season-chooser { - margin: 10px 0; - border-bottom: 1px solid rgba(177, 116, 215, 0.5); + margin: 10px 0; + border-bottom: 1px solid rgba(177, 116, 215, 0.5); } .sidebar .season-chooser ul { - overflow: hidden; - margin: 10px 0 0; + overflow: hidden; + margin: 10px 0 0; } .sidebar .season-chooser ul li { - float: left; - margin-right: 3px; - margin-bottom: 3px; - display: block; - padding: 0 5px; - height: 19px; - text-align: center; - cursor: pointer; - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80); + float: left; + margin-right: 3px; + margin-bottom: 3px; + display: block; + padding: 0 5px; + height: 19px; + text-align: center; + cursor: pointer; + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80); } .sidebar .season-chooser ul li.selected { - opacity: 1; - -ms-filter: none; - filter: none; - background: #b174d7 + opacity: 1; + -ms-filter: none; + filter: none; + background: #b174d7 } .sidebar .season-chooser ul li:focus { - outline: 1px solid; - outline-offset: -1px + outline: 1px solid; + outline-offset: -1px } .sidebar .season-chooser ul li.arrow { - font-size: 20px; - line-height: 12px + font-size: 20px; + line-height: 12px } .sidebar .season-chooser.small li { - font-size: 12px; - height: 16px; - padding: 2px 4px; - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80); + font-size: 12px; + height: 16px; + padding: 2px 4px; + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80); } .sidebar .season-chooser.small li.selected { - opacity: 1; - -ms-filter: none; - filter: none + opacity: 1; + -ms-filter: none; + filter: none } .sidebar .ep-numb { - margin-right: 15px; - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) + margin-right: 15px; + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) } .sidebar .uploads { - width: 355px; - margin-top: 20px; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - max-height: calc(100% - 20px) + width: 355px; + margin-top: 20px; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + max-height: calc(100% - 20px) } .sidebar .uploads .scroll-pane { - margin-top: 10px + margin-top: 10px } .sidebar .uploads li { - overflow: hidden; - margin-bottom: 3px; - margin-top: 3px; - padding: 2px 0 + overflow: hidden; + margin-bottom: 3px; + margin-top: 3px; + padding: 2px 0 } .sidebar .uploads .search { - width: calc(100% - 46px); - border: 0; - margin: 0; - height: 22px; - line-height: 22px; - padding-left: 38px; - -webkit-box-shadow: 0 1px 0 0 rgba(24, 23, 38, 0.3); - box-shadow: 0 1px 0 0 rgba(24, 23, 38, 0.3); - border-top: 1px solid rgba(255, 255, 255, 0.3); - border-bottom: 1px solid rgba(255, 255, 255, 0.3) + width: calc(100% - 46px); + border: 0; + margin: 0; + height: 22px; + line-height: 22px; + padding-left: 38px; + -webkit-box-shadow: 0 1px 0 0 rgba(24, 23, 38, 0.3); + box-shadow: 0 1px 0 0 rgba(24, 23, 38, 0.3); + border-top: 1px solid rgba(255, 255, 255, 0.3); + border-bottom: 1px solid rgba(255, 255, 255, 0.3) } .sidebar .uploads .icon-search { - width: 22px; - height: 22px; - margin-top: -28px; - margin-left: 12px; - -webkit-background-size: contain; - -moz-background-size: contain; - background-size: contain; - opacity: .6; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - filter: alpha(opacity=60) + width: 22px; + height: 22px; + margin-top: -28px; + margin-left: 12px; + -webkit-background-size: contain; + -moz-background-size: contain; + background-size: contain; + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) } .sidebar .uploads.noThumb li { - height: 40px + height: 40px } #ytPlayer { - position: absolute; - top: 35px; - bottom: 0; - left: 0; - right: 0; - z-index: 999; - background-color: #000 + position: absolute; + top: 35px; + bottom: 0; + left: 0; + right: 0; + z-index: 999; + background-color: #000 } .branding { - position: absolute; - bottom: 2px; - right: 10px; - font-size: 10px; - opacity: .6; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - filter: alpha(opacity=60); - color: #8a5aab; - font-weight: bold; + position: absolute; + bottom: 2px; + right: 10px; + font-size: 10px; + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60); + color: #8a5aab; + font-weight: bold; } .branding:before { - content: "stremio" + content: "stremio" } .modalWrap { - display: none; - z-index: 999999; - opacity: 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0); - -webkit-transition: all 0.3s ease-in-out; - -moz-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - -ms-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - width: 100%; - height: 100%; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; + display: none; + z-index: 999999; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + -ms-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } .modalWrap.visible { - display: block; - opacity: 1; - -ms-filter: none; - filter: none; + display: block; + opacity: 1; + -ms-filter: none; + filter: none; } .modalWrap.visible .modal { - bottom: -1px + bottom: -1px } .modal { - -webkit-transition: all 0.3s ease-in-out; - -moz-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - -ms-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; - overflow: auto; - display: block; - position: fixed; - bottom: -451px; - left: 0; - right: 0; - margin: 0 auto; - width: 510px; - height: 450px; - background: #282828; - -webkit-box-shadow: 0 0 2rem 0 #1a173e; - box-shadow: 0 0 2rem 0 #1a173e; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + -ms-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + overflow: auto; + display: block; + position: fixed; + bottom: -451px; + left: 0; + right: 0; + margin: 0 auto; + width: 510px; + height: 450px; + background: #0f0d26; + -webkit-box-shadow: 0 0 2rem 0 #1a173e; + box-shadow: 0 0 2rem 0 #1a173e; } .modal .close { - position: absolute; - top: 10px; - right: 10px; - width: 17px; - height: 20px; - background-repeat: no-repeat; - opacity: .85; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=85)"; - filter: alpha(opacity=85); - cursor: pointer; + position: absolute; + top: 10px; + right: 10px; + width: 17px; + height: 20px; + background-repeat: no-repeat; + opacity: .85; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=85)"; + filter: alpha(opacity=85); + cursor: pointer; } .modal .close:hover { - opacity: 1; - -ms-filter: none; - filter: none + opacity: 1; + -ms-filter: none; + filter: none } .modal .buttons { - text-align: center; - position: absolute; - bottom: 80px; - left: 0; - right: 0 + text-align: center; + position: absolute; + bottom: 80px; + left: 0; + right: 0 } .modal .title { - color: #fff; - text-align: center; - margin-top: 10px + color: #fff; + text-align: center; + margin-top: 10px } .modal .bottom { - position: absolute; - bottom: 0; - left: 0; - right: 0; - height: 205px + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 205px } .modal .bottom-right { - position: absolute; - right: 10px; - bottom: 10px + position: absolute; + right: 10px; + bottom: 10px } .modal .bottom-left { - position: absolute; - left: 10px; - bottom: 10px + position: absolute; + left: 10px; + bottom: 10px } .modal.small { - height: 220px; - width: 450px; + height: 220px; + width: 450px; } .modal.small .bottom { - height: 130px; - padding: 20px; - font-size: 14px + height: 130px; + padding: 20px; + font-size: 14px } .modalFull .close { - cursor: pointer; - opacity: .75; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)"; - filter: alpha(opacity=75); - position: absolute; - width: 20px; - height: 20px; - top: 10px; - right: 15px; - -webkit-transition: 0.15s; - -moz-transition: 0.15s; - -o-transition: 0.15s; - -ms-transition: 0.15s; - transition: 0.15s; - z-index: 1; + cursor: pointer; + opacity: .75; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)"; + filter: alpha(opacity=75); + position: absolute; + width: 20px; + height: 20px; + top: 10px; + right: 15px; + -webkit-transition: 0.15s; + -moz-transition: 0.15s; + -o-transition: 0.15s; + -ms-transition: 0.15s; + transition: 0.15s; + z-index: 1; } .modalFull .close:hover { - opacity: 1; - -ms-filter: none; - filter: none + opacity: 1; + -ms-filter: none; + filter: none } .modalFull .drag { - position: absolute; - top: 0; - left: 0; - right: 30px; - height: 40px; - -webkit-app-region: drag; - cursor: -webkit-grab; - z-index: 1 + position: absolute; + top: 0; + left: 0; + right: 30px; + height: 40px; + -webkit-app-region: drag; + cursor: -webkit-grab; + z-index: 1 } .modal-light-center-container { - background: rgba(24, 23, 38, 0.7); - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; + background: rgba(24, 23, 38, 0.7); + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; } .modal-light-center-container.visible { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex } .modal-light-center-container .modal-light-center { - position: relative; - height: auto; - width: 30em; - max-height: 90%; - font-size: 20px; - border-radius: 4px; - padding: 4px; - color: #2b2c43; - background-color: #fff; - line-height: 1.3em; + position: relative; + height: auto; + width: 30em; + max-height: 90%; + font-size: 20px; + border-radius: 4px; + padding: 4px; + color: #2b2c43; + background-color: #fff; + line-height: 1.3em; } .modal-light-center-container .modal-light-center .modal-bg { - padding: 3.5em + padding: 3.5em } .modal-light-center-container .modal-light-center .title { - font-weight: bold; - color: #000; - text-align: left; - margin: 25px 0; - font-size: 1.5em + font-weight: bold; + color: #000; + text-align: left; + margin: 25px 0; + font-size: 1.5em } .modal-light-center-container .buttons { - text-align: center; - position: static; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; - margin: 0; + text-align: center; + position: static; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + margin: 0; } .modal-light-center-container .buttons .button { - margin: 2em 0 0 0; - line-height: 3em; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-box-flex: .5; - -moz-box-flex: .5; - -o-box-flex: .5; - -ms-box-flex: .5; - box-flex: .5; - -webkit-flex-grow: .5; - flex-grow: .5; - background-color: #fff; - color: #7a7985; + margin: 2em 0 0 0; + line-height: 3em; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-box-flex: .5; + -moz-box-flex: .5; + -o-box-flex: .5; + -ms-box-flex: .5; + box-flex: .5; + -webkit-flex-grow: .5; + flex-grow: .5; + background-color: #fff; + color: #7a7985; } .modal-light-center-container .buttons .button.install-button { - color: #fff; - background-color: #22b467 + color: #fff; + background-color: #22b467 } .modal-light-center-container .buttons .button:focus { - outline: .2rem solid; - outline-offset: -4px + outline: .17rem solid; + outline-offset: -4px } .loader2 { - position: relative; - width: 100px; - height: 100px + position: relative; + width: 100px; + height: 100px } .loader2>div:before { - content: "\e9eb"; - display: inline-block; - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -o-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - width: 1em; - height: 1em; - position: absolute + content: "\e9eb"; + display: inline-block; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + width: 1em; + height: 1em; + position: absolute } .loader2-center { - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - margin: auto; - max-width: 100%; - max-height: 100%; - overflow: visible + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; + max-width: 100%; + max-height: 100%; + overflow: visible } .loader2>div { - -webkit-transform: rotate(-45deg); - -moz-transform: rotate(-45deg); - -o-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - transform: rotate(-45deg); - font-family: 'icon-full-height'; - font-size: 100px; - text-align: left; - line-height: 100px; - position: absolute; - width: 50px; - height: 50px; - overflow: hidden + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + transform: rotate(-45deg); + font-family: 'icon-full-height'; + font-size: 100px; + text-align: left; + line-height: 100px; + position: absolute; + width: 50px; + height: 50px; + overflow: hidden } .loader2 div:nth-child(1):before { - left: -.5em + left: -.5em } .loader2 div:nth-child(3):before { - top: -.5em + top: -.5em } .loader2 div:nth-child(4):before { - top: -.5em; - left: -.5em + top: -.5em; + left: -.5em } .loader-frame-1 { - top: -2px; - left: 35px; - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80); - -webkit-animation: fader-1 2.5s infinite; - -moz-animation: fader-1 2.5s infinite; - -o-animation: fader-1 2.5s infinite; - -ms-animation: fader-1 2.5s infinite; - animation: fader-1 2.5s infinite + top: -2px; + left: 35px; + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80); + -webkit-animation: fader-1 2.5s infinite; + -moz-animation: fader-1 2.5s infinite; + -o-animation: fader-1 2.5s infinite; + -ms-animation: fader-1 2.5s infinite; + animation: fader-1 2.5s infinite } .loader-frame-2 { - top: 33px; - left: 0; - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30); - -webkit-animation: fader-2 2.5s infinite; - -moz-animation: fader-2 2.5s infinite; - -o-animation: fader-2 2.5s infinite; - -ms-animation: fader-2 2.5s infinite; - animation: fader-2 2.5s infinite + top: 33px; + left: 0; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); + -webkit-animation: fader-2 2.5s infinite; + -moz-animation: fader-2 2.5s infinite; + -o-animation: fader-2 2.5s infinite; + -ms-animation: fader-2 2.5s infinite; + animation: fader-2 2.5s infinite } .loader-frame-3 { - top: 68px; - left: 35px; - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30); - -webkit-animation: fader-3 2.5s infinite; - -moz-animation: fader-3 2.5s infinite; - -o-animation: fader-3 2.5s infinite; - -ms-animation: fader-3 2.5s infinite; - animation: fader-3 2.5s infinite + top: 68px; + left: 35px; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); + -webkit-animation: fader-3 2.5s infinite; + -moz-animation: fader-3 2.5s infinite; + -o-animation: fader-3 2.5s infinite; + -ms-animation: fader-3 2.5s infinite; + animation: fader-3 2.5s infinite } .loader-frame-4 { - top: 33px; - left: 70px; - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30); - -webkit-animation: fader-4 2.5s infinite; - -moz-animation: fader-4 2.5s infinite; - -o-animation: fader-4 2.5s infinite; - -ms-animation: fader-4 2.5s infinite; - animation: fader-4 2.5s infinite + top: 33px; + left: 70px; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); + -webkit-animation: fader-4 2.5s infinite; + -moz-animation: fader-4 2.5s infinite; + -o-animation: fader-4 2.5s infinite; + -ms-animation: fader-4 2.5s infinite; + animation: fader-4 2.5s infinite } @-moz-keyframes fader-1 { - 0% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 20% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 40% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 60% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 80% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 100% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } + 0% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 20% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 40% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } } @-webkit-keyframes fader-1 { - 0% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 20% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 40% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 60% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 80% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 100% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } + 0% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 20% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 40% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } } @-o-keyframes fader-1 { - 0% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 20% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 40% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 60% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 80% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 100% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } + 0% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 20% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 40% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } } @keyframes fader-1 { - 0% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 20% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 40% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 60% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 80% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 100% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } + 0% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 20% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 40% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } } @-moz-keyframes fader-2 { - 0% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 20% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 40% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 60% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 80% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 100% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 40% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } } @-webkit-keyframes fader-2 { - 0% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 20% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 40% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 60% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 80% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 100% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 40% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } } @-o-keyframes fader-2 { - 0% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 20% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 40% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 60% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 80% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 100% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 40% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } } @keyframes fader-2 { - 0% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 20% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 40% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 60% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 80% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 100% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 40% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } } @-moz-keyframes fader-3 { - 0% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 20% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 40% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 60% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 80% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 100% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 40% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } } @-webkit-keyframes fader-3 { - 0% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 20% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 40% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 60% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 80% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 100% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 40% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } } @-o-keyframes fader-3 { - 0% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 20% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 40% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 60% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 80% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 100% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 40% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } } @keyframes fader-3 { - 0% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 20% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 40% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 60% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 80% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 100% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 40% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } } @-moz-keyframes fader-4 { - 0% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 20% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 60% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 80% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 100% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } } @-webkit-keyframes fader-4 { - 0% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 20% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 60% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 80% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 100% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } } @-o-keyframes fader-4 { - 0% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 20% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 60% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 80% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 100% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } } @keyframes fader-4 { - 0% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 20% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 60% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 80% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 100% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } } #player { - z-index: 99; - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - width: 100%; - height: 100%; - padding: 0; - background-color: #000 + z-index: 99; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: 100%; + padding: 0; + background-color: #000 } [type='range'] { - position: relative; - height: .65rem; - width: 100%; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border: none; - margin: 0; - padding: 0 1rem; - background-color: transparent; + position: relative; + top: 2rem; + height: .65rem; + width: 100%; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border: none; + margin: 0; + padding: 0 1rem; + background-color: transparent; } [type='range']:focus { - outline: 0; + outline: 0; } [type='range']:focus::-webkit-slider-runnable-track { - background: #8263f6 + background: #8263f6 } [type='range']:focus::-ms-fill-lower { - background: #7b5bf5 + background: #8A8A8A } [type='range']:focus::-ms-fill-upper { - background: #8263f6 + background: #8263f6 } [type='range']::-webkit-slider-runnable-track { - cursor: pointer; - height: .65rem; - width: 100%; - -webkit-transition: all 0.2s ease; - -moz-transition: all 0.2s ease; - -o-transition: all 0.2s ease; - -ms-transition: all 0.2s ease; - transition: all 0.2s ease; - background: #7b5bf5; - border: 0 solid transparent; - border-radius: .65rem + cursor: pointer; + height: .65rem; + width: 100%; + -webkit-transition: all 0.2s ease; + -moz-transition: all 0.2s ease; + -o-transition: all 0.2s ease; + -ms-transition: all 0.2s ease; + transition: all 0.2s ease; + background: #8A8A8A; + border: 0 solid transparent; + border-radius: .65rem } [type='range']::-webkit-slider-thumb { - margin-top: -.3rem; - -webkit-box-shadow: 0 0 0 .25rem rgba(255, 255, 255, 0.2) inset; - box-shadow: 0 0 0 .25rem rgba(255, 255, 255, 0.2) inset; - background: #7b5bf5; - border: 0 solid transparent; - border-radius: 50%; - cursor: pointer; - height: 1.25rem; - width: 1.25rem; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none + margin-top: -.3rem; + -webkit-box-shadow: 0 0 0 .25rem rgba(255, 255, 255, 0.2) inset; + box-shadow: 0 0 0 .25rem rgba(255, 255, 255, 0.2) inset; + background: #8A8A8A; + border: 0 solid transparent; + border-radius: 50%; + cursor: pointer; + height: 1.25rem; + width: 1.25rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none } [type='range']::-moz-range-track { - cursor: pointer; - height: .65rem; - width: 100%; - -webkit-transition: all 0.2s ease; - -moz-transition: all 0.2s ease; - -o-transition: all 0.2s ease; - -ms-transition: all 0.2s ease; - transition: all 0.2s ease; - background: #7b5bf5; - border: 0 solid transparent; - border-radius: .65rem + cursor: pointer; + height: .65rem; + width: 100%; + -webkit-transition: all 0.2s ease; + -moz-transition: all 0.2s ease; + -o-transition: all 0.2s ease; + -ms-transition: all 0.2s ease; + transition: all 0.2s ease; + background: #8A8A8A; + border: 0 solid transparent; + border-radius: .65rem } [type='range']::-moz-range-thumb { - margin-top: -.3rem; - -webkit-box-shadow: 0 0 0 .25rem rgba(255, 255, 255, 0.2) inset; - box-shadow: 0 0 0 .25rem rgba(255, 255, 255, 0.2) inset; - background: #7b5bf5; - border: 0 solid transparent; - border-radius: 50%; - cursor: pointer; - height: 1.25rem; - width: 1.25rem + margin-top: -.3rem; + -webkit-box-shadow: 0 0 0 .25rem rgba(255, 255, 255, 0.2) inset; + box-shadow: 0 0 0 .25rem rgba(255, 255, 255, 0.2) inset; + background: #8A8A8A; + border: 0 solid transparent; + border-radius: 50%; + cursor: pointer; + height: 1.25rem; + width: 1.25rem } [type='range']::-ms-track { - cursor: pointer; - height: .65rem; - width: 100%; - -webkit-transition: all 0.2s ease; - -moz-transition: all 0.2s ease; - -o-transition: all 0.2s ease; - -ms-transition: all 0.2s ease; - transition: all 0.2s ease; - background: transparent; - border-color: transparent; - border-width: .625rem 0; - color: transparent + cursor: pointer; + height: .65rem; + width: 100%; + -webkit-transition: all 0.2s ease; + -moz-transition: all 0.2s ease; + -o-transition: all 0.2s ease; + -ms-transition: all 0.2s ease; + transition: all 0.2s ease; + background: transparent; + border-color: transparent; + border-width: .625rem 0; + color: transparent } [type='range']::-ms-fill-lower { - background: #6e4bf4; - border: 0 solid transparent; - border-radius: 1.3rem + background: #6e4bf4; + border: 0 solid transparent; + border-radius: 1.3rem } [type='range']::-ms-fill-upper { - background: #7b5bf5; - border: 0 solid transparent; - border-radius: 1.3rem + background: #8A8A8A; + border: 0 solid transparent; + border-radius: 1.3rem } [type='range']::-ms-thumb { - margin-top: -.3rem; - -webkit-box-shadow: 0 0 0 .25rem rgba(255, 255, 255, 0.2) inset; - box-shadow: 0 0 0 .25rem rgba(255, 255, 255, 0.2) inset; - background: #7b5bf5; - border: 0 solid transparent; - border-radius: 50%; - cursor: pointer; - height: 1.25rem; - width: 1.25rem; - margin-top: 0 + margin-top: -.3rem; + -webkit-box-shadow: 0 0 0 .25rem rgba(255, 255, 255, 0.2) inset; + box-shadow: 0 0 0 .25rem rgba(255, 255, 255, 0.2) inset; + background: #8A8A8A; + border: 0 solid transparent; + border-radius: 50%; + cursor: pointer; + height: 1.25rem; + width: 1.25rem; + margin-top: 0 } #streamReport { - z-index: 99; - position: fixed; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - height: auto; - width: 22rem; - padding: 1.5rem 1rem; - min-height: 15rem; - bottom: 40%; - border-radius: .75rem; - background-color: #282828; - overflow: hidden; - visibility: hidden; - opacity: 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0); - -webkit-transition: 0.2s ease-in; - -moz-transition: 0.2s ease-in; - -o-transition: 0.2s ease-in; - -ms-transition: 0.2s ease-in; - transition: 0.2s ease-in; + z-index: 99; + position: fixed; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + height: auto; + width: 23rem; + padding: 1.5rem 1rem; + min-height: 15rem; + bottom: 40%; + border-radius: .75rem; + background-color: #0f0d26; + overflow: hidden; + visibility: hidden; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -webkit-transition: 0.2s ease-in; + -moz-transition: 0.2s ease-in; + -o-transition: 0.2s ease-in; + -ms-transition: 0.2s ease-in; + transition: 0.2s ease-in; } #streamReport.visible { - opacity: 1; - -ms-filter: none; - filter: none; - visibility: visible + opacity: 1; + -ms-filter: none; + filter: none; + visibility: visible } #streamReport .icon { - -webkit-align-self: center; - align-self: center; - -ms-flex-item-align: center; - height: 5rem; - width: 5rem + -webkit-align-self: center; + align-self: center; + -ms-flex-item-align: center; + height: 4.5rem; + width: 4.5rem } #streamReport h2.title { - text-align: center; - margin-top: 2rem; - margin-bottom: .5rem; - font-size: 1.25rem; - font-weight: 700; - color: #fff + text-align: center; + margin-top: 2rem; + margin-bottom: .5rem; + font-size: 1.25rem; + font-weight: 700; + color: #fff } #streamReport h2.white { - font-size: 1rem; - padding: 0 1rem + font-size: 1rem; + padding: 0 1rem } #streamReport h2 span { - margin-left: .5rem + margin-left: .5rem } #streamReport ul { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; - padding: 0 1rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + padding: 0 1rem; } #streamReport ul li { - font-size: 1rem; - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50); - text-align: center + color: #fff; + font-size: 1rem; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); + margin-bottom: .5rem; + text-align: center; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden } #streamReport .streamInfo { - margin: 2rem 0 0; - font-size: 1rem; - color: #fff; - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50); - text-align: center; -} - -#streamReport .streamInfo b { - color: #7b5bf5 + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-top: 2rem } #widget { - position: absolute; - z-index: 1; - width: 100%; - height: 100% + position: absolute; + z-index: 1; + width: 100%; + height: 100% } #loading-background { - background-color: #181726; - -webkit-background-size: cover; - -moz-background-size: cover; - background-size: cover; - z-index: 1 + background-color: #181726; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + z-index: 1 } #loading-background, #loading, -#loading-logo, #player-error, #player-warning { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0 + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0 } #loading { - background: rgba(24, 23, 38, 0.55); - z-index: 1 + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + background: rgba(24, 23, 38, 0.55); + z-index: 1 } #player-warning, #player-error { - height: 100%; - width: 100%; - z-index: 1; + height: 100%; + width: 100%; + z-index: 1; } #player-warning h2, #player-error h2 { - font-size: 20px + font-size: 20px } #player-warning h2, #player-error h2, #player-warning h3, #player-error h3 { - line-height: 25px; - text-align: center; - width: 80%; - margin: 0 auto + line-height: 25px; + text-align: center; + width: 80%; + margin: 0 auto } #player-warning>h2, #player-error>h2 { - margin-top: 35% + margin-top: 35% } #player-error { - background: rgba(24, 23, 38, 0.3); - z-index: 1; - text-align: center; + background: rgba(24, 23, 38, 0.3); + z-index: 1; + text-align: center; } #player-error .err-container { - display: table; - background: #282828; - width: 25rem; - height: 15rem; - position: absolute; - left: 50%; - top: 50%; - -webkit-transform: translate(-50%, -50%); - -moz-transform: translate(-50%, -50%); - -o-transform: translate(-50%, -50%); - -ms-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - border-radius: .75rem; + display: table; + background: #0f0d26; + width: 25rem; + height: 15rem; + position: absolute; + left: 50%; + top: 50%; + -webkit-transform: translate(-50%, -50%); + -moz-transform: translate(-50%, -50%); + -o-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + padding: 1.5rem; + border-radius: .75rem; } #player-error .err-container>h2, #player-error .err-container>#player-fallback { - width: 100%; - display: table-cell; - vertical-align: middle + width: 100%; + display: table-cell; + vertical-align: middle } #player-error .err-container .button-b { - margin: 20px auto; - padding: 10px 20px; - text-align: center + margin: 20px auto; + padding: 10px 20px; + text-align: center } #player-error .err-container .icon-info-circle { - display: inline-block; - width: 1.2em; - height: 1.2em; - text-align: center; - border-radius: 50%; - background-color: #fff; - color: #201f32; - margin: .4em; - font-size: 14px; + display: inline-block; + width: 1.2em; + height: 1.2em; + text-align: center; + border-radius: 50%; + background-color: #fff; + color: #201f32; + margin: .4em; + font-size: 14px; } #player-error .err-container .icon-info-circle:before { - content: 'i' + content: 'i' } -#slow-loading { - position: absolute; - margin: auto; - width: 200px; - top: 300px; - bottom: 0; - left: 0; - right: 0; - height: 120px; - text-align: center; +#slow-loading, +#player-timeout { + width: 18rem; + margin: auto; + margin-top: 3rem; + padding: 1.5rem; + font-size: 1rem; + font-weight: 500; + text-align: center; + border-radius: .75rem; + background: #0f0d26 } #slow-loading .button { - text-align: center; - padding: 10px; - min-width: 180px; - display: block; - margin: auto; - margin-top: 20px + text-align: center; + padding: 10px; + min-width: 180px; + display: block; + margin: auto; + margin-top: 20px } #slow-loading .link { - color: #7b5bf5; - font-size: 1rem; - padding: .5rem; - margin-top: 1rem -} - -#player-timeout { - border: 1px solid rgba(177, 116, 215, 0.5); - text-align: center; - padding: 20px 30px; - height: 110px; - font-size: 14px; - background: #201f32; - left: 0; - right: 0; - top: 300px; - bottom: 0; - width: 319px !important; - position: absolute; - margin: auto; - font-weight: 100; + color: #8A8A8A; + font-size: 1rem; + padding: .5rem; + margin-top: 1rem } #player-timeout .icon { - width: 48px; - font-size: 48px; - margin: auto; - -webkit-background-size: contain; - -moz-background-size: contain; - background-size: contain; - margin-bottom: 20px + width: 48px; + font-size: 48px; + margin: auto; + -webkit-background-size: contain; + -moz-background-size: contain; + background-size: contain; + margin-bottom: 20px } #loading-logo { - background-position: center; - background-repeat: no-repeat; - -webkit-background-size: contain; - -moz-background-size: contain; - background-size: contain; - background-color: transparent; - mask-image: gradient(linear, left top, right top, color-stop(0%, #000), color-stop(0%, #000), color-stop(1%, rgba(0, 0, 0, 0.15)), color-stop(100%, rgba(0, 0, 0, 0.15))); - -webkit-transition-property: all 250ms linear; - -moz-transition-property: all 250ms linear; - -o-transition-property: all 250ms linear; - -ms-transition-property: all 250ms linear; - transition-property: all 250ms linear; - width: 350px; - height: 170px; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - margin: auto; + background-position: center; + background-repeat: no-repeat; + -webkit-background-size: contain; + -moz-background-size: contain; + background-size: contain; + background-color: transparent; + mask-image: gradient(linear, left top, right top, color-stop(0%, #000), color-stop(0%, #000), color-stop(1%, rgba(0, 0, 0, 0.15)), color-stop(100%, rgba(0, 0, 0, 0.15))); + -webkit-transition-property: all 250ms linear; + -moz-transition-property: all 250ms linear; + -o-transition-property: all 250ms linear; + -ms-transition-property: all 250ms linear; + transition-property: all 250ms linear; + width: 25rem; + height: 10rem; + margin: auto; } #loading-logo.flashing { - -webkit-animation: flash ease-in 1.8s infinite; - -moz-animation: flash ease-in 1.8s infinite; - -o-animation: flash ease-in 1.8s infinite; - -ms-animation: flash ease-in 1.8s infinite; - animation: flash ease-in 1.8s infinite; - -webkit-mask: none !important + -webkit-animation: flash ease-in 1.8s infinite; + -moz-animation: flash ease-in 1.8s infinite; + -o-animation: flash ease-in 1.8s infinite; + -ms-animation: flash ease-in 1.8s infinite; + animation: flash ease-in 1.8s infinite; + -webkit-mask: none !important } #loading-logo.hide { - opacity: 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0) + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0) } #loading-logo .fallback { - height: 165px; - display: none; - text-align: center + display: none; + font-size: 3rem; + text-align: center } #loading-logo.stremio-no-image .fallback { - display: block + display: block } #device-message { - position: absolute; - left: 0; - bottom: 0; - top: 0; - right: 0; - font-size: 28px; - z-index: 1; - text-align: center; - text-shadow: 1px 1px 3px rgba(24, 23, 38, 0.55); - padding-top: 200px; - background: #181726 + position: absolute; + left: 0; + bottom: 0; + top: 0; + right: 0; + font-size: 28px; + z-index: 1; + text-align: center; + text-shadow: 1px 1px 3px rgba(24, 23, 38, 0.55); + padding-top: 200px; + background: #181726 } #player .sidebar { - z-index: 99; - position: absolute; - top: 0; - right: 0; - width: 28rem; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-transform: translateX(100%); - -moz-transform: translateX(100%); - -o-transform: translateX(100%); - -ms-transform: translateX(100%); - transform: translateX(100%); - -webkit-transition: -webkit-transform 0.3s ease-in; - -moz-transition: -moz-transform 0.3s ease-in; - -o-transition: -o-transform 0.3s ease-in; - -ms-transition: -ms-transform 0.3s ease-in; - transition: transform 0.3s ease-in; + z-index: 99; + position: absolute; + top: 0; + right: 0; + width: 28rem; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-transform: translateX(100%); + -moz-transform: translateX(100%); + -o-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + -webkit-transition: -webkit-transform 0.3s ease-in; + -moz-transition: -moz-transform 0.3s ease-in; + -o-transition: -o-transform 0.3s ease-in; + -ms-transition: -ms-transform 0.3s ease-in; + transition: transform 0.3s ease-in; } #player .sidebar.shown { - -webkit-transform: translateX(0); - -moz-transform: translateX(0); - -o-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0) + -webkit-transform: translateX(0); + -moz-transform: translateX(0); + -o-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0) } -#player .sidebar .episodes { - margin: 10px +#sidebar-handle { + z-index: 1; + position: absolute; + top: calc(50% - 5rem); + right: -6.5rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + width: 10rem; + height: 10rem; + border-radius: 100%; + background: #0f0d26; + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80); + -webkit-transition: all 0.1s ease-out; + -moz-transition: all 0.1s ease-out; + -o-transition: all 0.1s ease-out; + -ms-transition: all 0.1s ease-out; + transition: all 0.1s ease-out; + cursor: pointer; } -#player .sidebar .fallback { - font-size: 30px; - line-height: 33px; - text-align: center; - padding-top: 10px +#sidebar-handle.hidden { + -webkit-transform: translateX(calc(100% + 6.5rem)); + -moz-transform: translateX(calc(100% + 6.5rem)); + -o-transform: translateX(calc(100% + 6.5rem)); + -ms-transform: translateX(calc(100% + 6.5rem)); + transform: translateX(calc(100% + 6.5rem)) } -#sidebar-handle { - width: 160px; - height: 160px; - border-radius: 80px; - position: absolute; - top: 40%; - right: -110px; - background: #282828; - border-right: 0; - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80); - -webkit-transition: all 0.25s ease; - -moz-transition: all 0.25s ease; - -o-transition: all 0.25s ease; - -ms-transition: all 0.25s ease; - transition: all 0.25s ease; - cursor: pointer; - z-index: 1; -} - -#sidebar-handle .nipple { - font-size: 44px; - width: 18px; - height: 1em; - line-height: 1em; - position: absolute; - top: calc(50% - 22px); - left: calc(15% - 6px); - cursor: pointer; - -webkit-transition: all 0.2s ease; - -moz-transition: all 0.2s ease; - -o-transition: all 0.2s ease; - -ms-transition: all 0.2s ease; - transition: all 0.2s ease; - -webkit-background-size: contain; - -moz-background-size: contain; - background-size: contain; - background-repeat: no-repeat; - background-position: center; - -webkit-transition: -webkit-transform 0.2s ease-in-out; - -moz-transition: -moz-transform 0.2s ease-in-out; - -o-transition: -o-transform 0.2s ease-in-out; - -ms-transition: -ms-transform 0.2s ease-in-out; - transition: transform 0.2s ease-in-out +#sidebar-handle .icon { + height: 3rem; + width: 3rem; + color: #fff; + margin-left: .5rem; + -webkit-transition: -webkit-transform 0.1s ease-out; + -moz-transition: -moz-transform 0.1s ease-out; + -o-transition: -o-transform 0.1s ease-out; + -ms-transition: -ms-transform 0.1s ease-out; + transition: transform 0.1s ease-out } #sidebar-handle:hover { - opacity: 1; - -ms-filter: none; - filter: none; + opacity: 1; + -ms-filter: none; + filter: none; } -#sidebar-handle:hover .nipple { - -webkit-transform: scale(1.1); - -moz-transform: scale(1.1); - -o-transform: scale(1.1); - -ms-transform: scale(1.1); - transform: scale(1.1) -} - -#sidebar-handle.hidden { - right: -165px +#sidebar-handle:hover .icon { + -webkit-transform: scale(1.1); + -moz-transform: scale(1.1); + -o-transform: scale(1.1); + -ms-transform: scale(1.1); + transform: scale(1.1) } .player-handle { - z-index: 99; - position: absolute; - top: 0; - left: 0; - right: 0; - height: 5rem; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; - padding: 0 1rem; - background: -webkit-linear-gradient(bottom, transparent 0%, #0c0c11 100%); - background: -moz-linear-gradient(bottom, transparent 0%, #0c0c11 100%); - background: -o-linear-gradient(bottom, transparent 0%, #0c0c11 100%); - background: -ms-linear-gradient(bottom, transparent 0%, #0c0c11 100%); - background: linear-gradient(to top, transparent 0%, #0c0c11 100%); - -webkit-transition: -webkit-transform 0.13s; - -moz-transition: -moz-transform 0.13s; - -o-transition: -o-transform 0.13s; - -ms-transition: -ms-transform 0.13s; - transition: transform 0.13s; + z-index: 99; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 5rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + padding: 0 1rem; + background: -webkit-linear-gradient(bottom, transparent 0%, #000 100%); + background: -moz-linear-gradient(bottom, transparent 0%, #000 100%); + background: -o-linear-gradient(bottom, transparent 0%, #000 100%); + background: -ms-linear-gradient(bottom, transparent 0%, #000 100%); + background: linear-gradient(to top, transparent 0%, #000 100%); + -webkit-transition: -webkit-transform 0.13s; + -moz-transition: -moz-transform 0.13s; + -o-transition: -o-transform 0.13s; + -ms-transition: -ms-transform 0.13s; + transition: transform 0.13s; } .player-handle .section { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: start; - -moz-box-pack: start; - -o-box-pack: start; - -ms-flex-pack: start; - -webkit-justify-content: flex-start; - justify-content: flex-start + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: start; + -moz-box-pack: start; + -o-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start } .player-handle .tab { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - padding: .5rem; - border-radius: .75rem; - outline: none; - cursor: pointer; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + padding: .5rem; + border-radius: .75rem; + outline: none; + cursor: pointer; } .player-handle .tab .icon { - height: 2rem; - width: 2rem; - color: #fff; - padding-bottom: .1rem; - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) + height: 2rem; + width: 2rem; + color: #fff; + padding-bottom: .1rem; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) } .player-handle .tab:focus, .player-handle .tab:hover { - background-color: rgba(255, 255, 255, 0.05); + background-color: rgba(255, 255, 255, 0.05); } .player-handle .tab:focus .icon, .player-handle .tab:hover .icon { - opacity: 1; - -ms-filter: none; - filter: none + opacity: 1; + -ms-filter: none; + filter: none } .player-handle #windowTitle { - font-size: 1.25rem; - font-weight: 500; - margin-left: 1rem + font-size: 1.25rem; + font-weight: 500; + margin-left: 1rem } .player-handle.hidden { - -webkit-transform: translateY(-5rem); - -moz-transform: translateY(-5rem); - -o-transform: translateY(-5rem); - -ms-transform: translateY(-5rem); - transform: translateY(-5rem) + -webkit-transform: translateY(-5rem); + -moz-transform: translateY(-5rem); + -o-transform: translateY(-5rem); + -ms-transform: translateY(-5rem); + transform: translateY(-5rem) } #controlbar { - z-index: 99; - position: absolute; - bottom: 0; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; - height: 6rem; - width: 100%; - padding: 0 1rem; - background: -webkit-linear-gradient(top, transparent 0%, #0c0c11 100%); - background: -moz-linear-gradient(top, transparent 0%, #0c0c11 100%); - background: -o-linear-gradient(top, transparent 0%, #0c0c11 100%); - background: -ms-linear-gradient(top, transparent 0%, #0c0c11 100%); - background: linear-gradient(to bottom, transparent 0%, #0c0c11 100%); - -webkit-transition: -webkit-transform 0.13s; - -moz-transition: -moz-transform 0.13s; - -o-transition: -o-transform 0.13s; - -ms-transition: -ms-transform 0.13s; - transition: transform 0.13s; + z-index: 99; + position: absolute; + bottom: 0; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + height: 8rem; + width: 100%; + padding: 0 1rem; + background: -webkit-linear-gradient(top, transparent 0%, #000 100%); + background: -moz-linear-gradient(top, transparent 0%, #000 100%); + background: -o-linear-gradient(top, transparent 0%, #000 100%); + background: -ms-linear-gradient(top, transparent 0%, #000 100%); + background: linear-gradient(to bottom, transparent 0%, #000 100%); + -webkit-transition: -webkit-transform 0.13s; + -moz-transition: -moz-transform 0.13s; + -o-transition: -o-transform 0.13s; + -ms-transition: -ms-transform 0.13s; + transition: transform 0.13s; } #controlbar #controlbar-top { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; - height: 5rem; - bottom: 0; - left: 0; - right: 0 + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + height: 5rem; + bottom: 0; + left: 0; + right: 0 } #controlbar .controls { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center } #controlbar.hidden { - -webkit-transform: translateY(calc(6rem + 0.5rem)); - -moz-transform: translateY(calc(6rem + 0.5rem)); - -o-transform: translateY(calc(6rem + 0.5rem)); - -ms-transform: translateY(calc(6rem + 0.5rem)); - transform: translateY(calc(6rem + 0.5rem)) + -webkit-transform: translateY(calc(8rem + 0.5rem)); + -moz-transform: translateY(calc(8rem + 0.5rem)); + -o-transform: translateY(calc(8rem + 0.5rem)); + -ms-transform: translateY(calc(8rem + 0.5rem)); + transform: translateY(calc(8rem + 0.5rem)) } #controlbar .control { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - width: 4.5rem; - height: 4rem; - cursor: pointer; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + width: 4.5rem; + height: calc(4.5rem - 0.5rem); + cursor: pointer; } #controlbar .control .icon { - position: relative; - width: 3rem; - height: 3rem; - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50) + position: relative; + width: 3rem; + height: 3rem; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) } #controlbar .control:hover .icon { - opacity: 1; - -ms-filter: none; - filter: none + opacity: 1; + -ms-filter: none; + filter: none } #controlbar .control.active .popup { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex } #controlbar .popup { - position: absolute; - display: none; - -webkit-box-align: start; - -moz-box-align: start; - -o-box-align: start; - -ms-flex-align: start; - -webkit-align-items: flex-start; - align-items: flex-start; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; - bottom: 7rem; - right: 0; - cursor: default; - border-radius: .75rem; - background-color: #282828; - -webkit-box-shadow: 0 0 2rem 0 rgba(0, 0, 0, 0.4); - box-shadow: 0 0 2rem 0 rgba(0, 0, 0, 0.4); + position: absolute; + display: none; + -webkit-box-align: start; + -moz-box-align: start; + -o-box-align: start; + -ms-flex-align: start; + -webkit-align-items: flex-start; + align-items: flex-start; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + bottom: 7rem; + right: 0; + padding: .5rem 1rem; + cursor: default; + border-radius: .75rem; + background-color: #0f0d26; + -webkit-box-shadow: 0 0 2rem 0 rgba(0, 0, 0, 0.4); + box-shadow: 0 0 2rem 0 rgba(0, 0, 0, 0.4); } #controlbar .popup .popup-title { - padding: .5rem; - padding-top: 1rem; - text-align: left; - font-size: .9rem; - font-weight: 700; - white-space: nowrap; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - overflow: hidden + padding: .5rem; + padding-top: 1rem; + text-align: left; + font-size: .9rem; + font-weight: 700; + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden } #controlbar .movePlayerControlsSeparator { - left: 106px !important + left: 106px !important } #castingControl .popup { - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - padding: .5rem 1rem; - width: auto; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: auto; } #castingControl .popup .text { - padding: .5rem; - text-align: left; - font-size: .9rem; - font-weight: 700; - white-space: nowrap; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - overflow: hidden + padding: .5rem; + text-align: left; + font-size: .9rem; + font-weight: 700; + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden } #castingControl .popup .listing { - width: 100%; - overflow-y: auto; - max-height: 315px; + width: 100%; + overflow-y: auto; + max-height: 315px; } #castingControl .popup .listing li { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - height: 2.5rem; - cursor: pointer; - text-align: left; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + height: 2.5rem; + cursor: pointer; + text-align: left; } #castingControl .popup .listing li.inactive { - opacity: .4; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; - filter: alpha(opacity=40) + opacity: .4; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + filter: alpha(opacity=40) } #castingControl .popup .listing li .icon { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 1rem; - width: 1rem; - margin-right: .75rem + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 1rem; + width: 1rem; + margin-right: .75rem } #settingsControl { - text-align: center; + text-align: center; } #settingsControl #settingsMenu { - width: auto; - padding: .5rem 1rem; + width: auto; } #settingsControl #settingsMenu .player-settings-container { - overflow-y: auto + overflow-y: auto } #settingsControl #settingsMenu .player-setting { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: start; - -moz-box-pack: start; - -o-box-pack: start; - -ms-flex-pack: start; - -webkit-justify-content: flex-start; - justify-content: flex-start; - height: 3.5rem; - padding: 0 1rem; - font-size: 1rem; - margin: .5rem 0; - border-radius: .75rem; - cursor: pointer; - text-align: left; - white-space: nowrap; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - overflow: hidden; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: start; + -moz-box-pack: start; + -o-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + height: 3.5rem; + padding: 0 1rem; + font-size: 1rem; + margin: .5rem 0; + border-radius: .75rem; + cursor: pointer; + text-align: left; + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden; } #settingsControl #settingsMenu .player-setting.inactive { - opacity: .4; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; - filter: alpha(opacity=40) + opacity: .4; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + filter: alpha(opacity=40) } #settingsControl #settingsMenu .player-setting:hover:not(.inactive) { - background-color: rgba(255, 255, 255, 0.05) + background-color: rgba(255, 255, 255, 0.05) } #volumeControl { - position: relative; + position: relative; } #volumeControl .icon { - display: none + display: none } #volumeControl.level-0 .icon:nth-child(1) { - display: block + display: block } #volumeControl.level-1 .icon:nth-child(2) { - display: block + display: block } #volumeControl.level-2 .icon:nth-child(3) { - display: block + display: block } #volumeControl.level-3 .icon:nth-child(4) { - display: block + display: block } #volumeControl #volumeSlider { - height: 14rem; - width: 3rem; + height: 14rem; + width: 3rem; + left: calc(3rem - ($control-width / 2)); } #volumeControl #volumeSlider .scale { - position: relative; - height: 12rem; - width: 100%; - top: 1rem; - left: 0; - right: 0; - margin: 0 auto + position: relative; + height: 12rem; + width: 100%; + top: 1rem; + left: 0; + right: 0; + margin: 0 auto } #volumeControl #volumeSlider .scale-visual { - position: absolute; - top: 1rem; - left: 0; - right: 0; - width: .5rem; - height: 12rem; - margin: 0 auto; - border-radius: .5rem; - background: #7b5bf5; + position: absolute; + top: 1rem; + left: 0; + right: 0; + width: .5rem; + height: 12rem; + margin: 0 auto; + border-radius: .5rem; + background: #8A8A8A; } #volumeControl #volumeSlider .scale-visual.boosted { - background-image: -webkit-linear-gradient(90deg, #7b5bf5 45%, #fffa00 55%, #f00 100%); - background-image: -moz-linear-gradient(90deg, #7b5bf5 45%, #fffa00 55%, #f00 100%); - background-image: -o-linear-gradient(90deg, #7b5bf5 45%, #fffa00 55%, #f00 100%); - background-image: -ms-linear-gradient(90deg, #7b5bf5 45%, #fffa00 55%, #f00 100%); - background-image: linear-gradient(0deg, #7b5bf5 45%, #fffa00 55%, #f00 100%) + background-image: -webkit-linear-gradient(90deg, #8A8A8A 45%, #fffa00 55%, #f00 100%); + background-image: -moz-linear-gradient(90deg, #8A8A8A 45%, #fffa00 55%, #f00 100%); + background-image: -o-linear-gradient(90deg, #8A8A8A 45%, #fffa00 55%, #f00 100%); + background-image: -ms-linear-gradient(90deg, #8A8A8A 45%, #fffa00 55%, #f00 100%); + background-image: linear-gradient(0deg, #8A8A8A 45%, #fffa00 55%, #f00 100%) } #volumeControl #volumeSlider .nipple { - position: absolute; - left: 0; - right: 0; - height: 1rem; - width: 1rem; - margin: -.5rem auto; - background-color: #fff; - border-radius: 100%; - cursor: pointer + position: absolute; + left: 0; + right: 0; + height: 1rem; + width: 1rem; + background-color: #fff; + border-radius: 100%; + cursor: pointer } #play-progress-text { - font-size: 1.25rem; - color: #fff; - margin-left: 1.5rem + font-size: 1.25rem; + color: #fff; + margin-left: 1.5rem } #subtitleMenu ul.listing, #dubMenu ul.listing, #playbackSpeedMenu ul.listing, #castingControl ul.listing { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - height: 100%; - overflow: hidden; - overflow-y: auto; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + height: 100%; + overflow: hidden; + overflow-y: auto; } #subtitleMenu ul.listing li, #dubMenu ul.listing li, #playbackSpeedMenu ul.listing li, #castingControl ul.listing li { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: left; - -moz-box-pack: left; - -o-box-pack: left; - -ms-flex-pack: left; - -webkit-justify-content: left; - justify-content: left; - height: 2.5rem; - padding: 0 1rem; - font-size: 1rem; - color: #fff; - margin: .5rem 0; - border-radius: .75rem; - cursor: pointer; - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50); + position: relative; + height: 2.5rem; + line-height: 2.5rem; + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + text-align: left; + padding: 0 1rem; + font-size: 1rem; + color: #fff; + margin: .5rem 0; + border-radius: .75rem; + cursor: pointer; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); + overflow: hidden; +} + +#subtitleMenu ul.listing li:not(.separator).selected, +#dubMenu ul.listing li:not(.separator).selected, +#playbackSpeedMenu ul.listing li:not(.separator).selected, +#castingControl ul.listing li:not(.separator).selected { + padding-right: 2rem; } #subtitleMenu ul.listing li:not(.separator).selected:after, #dubMenu ul.listing li:not(.separator).selected:after, #playbackSpeedMenu ul.listing li:not(.separator).selected:after, #castingControl ul.listing li:not(.separator).selected:after { - content: ""; - position: absolute; - right: 1rem; - height: .4rem; - width: .4rem; - border-radius: 100%; - background-color: #22b365 + content: ""; + position: absolute; + top: 1rem; + right: 1rem; + height: .4rem; + width: .4rem; + border-radius: 100%; + background-color: #22b365 } #subtitleMenu ul.listing li:not(.separator).selected, @@ -5227,5758 +5267,6084 @@ body #navbar .tab.selected .icon { #dubMenu ul.listing li:not(.separator):hover, #playbackSpeedMenu ul.listing li:not(.separator):hover, #castingControl ul.listing li:not(.separator):hover { - background-color: rgba(255, 255, 255, 0.05); - opacity: 1; - -ms-filter: none; - filter: none + background-color: rgba(255, 255, 255, 0.05); + opacity: 1; + -ms-filter: none; + filter: none } #subtitleMenu .separator, #dubMenu .separator, #playbackSpeedMenu .separator, #castingControl .separator { - cursor: default; - font-size: .9rem; - color: #fff; - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30); + cursor: default; + font-size: .9rem; + color: #fff; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); } #subtitleMenu .separator.bot, #dubMenu .separator.bot, #playbackSpeedMenu .separator.bot, #castingControl .separator.bot { - border-top: 1px solid rgba(255, 255, 255, 0.2) + border-top: 1px solid rgba(255, 255, 255, 0.2); + margin-top: .5rem; + margin-bottom: 1rem } #dubMenu { - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - width: 12rem; - padding: .5rem 1rem; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: 12rem; } -#dubMenu ul { - width: 100% +#dubMenu .listing { + max-height: 20rem; + width: 100%; + overflow-y: auto } .subtitles-container { - position: fixed; - bottom: 2.3vw; - left: 0; - right: 0; - margin: 0 auto; - min-height: 40px; - max-width: 100vh; - color: #fff; - font-weight: 600; - text-align: center; - z-index: 11; - cursor: default; + position: fixed; + bottom: 2.3vw; + left: 0; + right: 0; + margin: 0 auto; + min-height: 40px; + max-width: 100vh; + color: #fff; + font-weight: 600; + text-align: center; + z-index: 11; + cursor: default; } .subtitles-container.xs { - font-size: 2.52vh + font-size: 2.52vh } .subtitles-container.s { - font-size: 3.24vh + font-size: 3.24vh } .subtitles-container.m { - font-size: 3.96vh + font-size: 3.96vh } .subtitles-container.l { - font-size: 4.68vh + font-size: 4.68vh } .subtitles-container.xl { - font-size: 5.4vh; - min-width: 50% + font-size: 5.4vh; + min-width: 50% } .subtitles-container.xxl { - font-size: 6.12vh; - font-weight: bold; - min-width: 60% + font-size: 6.12vh; + font-weight: bold; + min-width: 60% } .subtitles-container.xxxl { - font-size: 7.44vh; - font-weight: bold; - min-width: 70% + font-size: 7.44vh; + font-weight: bold; + min-width: 70% } .subtitles-container[framecolour="blackwhite"] { - color: rgba(177, 116, 215, 0.5) + color: rgba(177, 116, 215, 0.5) } .subtitles-container.rtl { - direction: rtl + direction: rtl } .subtitles-container:not(.hidden) { - bottom: calc(6rem + 1rem) + bottom: calc(8rem + 1rem) } #subtitle { - white-space: pre-wrap; - line-height: 1.4em; - box-decoration-break: clone; - -webkit-box-decoration-break: clone; - padding: 0 .2em; + white-space: pre-wrap; + line-height: 1.4em; + box-decoration-break: clone; + -webkit-box-decoration-break: clone; + padding: 0 .2em; } #subtitle:empty { - background-color: transparent !important + background-color: transparent !important } .icon .popup { - font-size: 16px + font-size: 16px } .clear { - clear: both + clear: both } #subtitleMenu { - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - height: 20rem; - min-width: 25rem; - overflow: hidden; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + height: 20rem; + min-width: 25rem; + overflow: hidden; } #subtitleMenu .listing { - margin-top: 1rem; - padding-right: 1rem; - padding-bottom: 1rem + margin-top: 1rem; + padding-right: 1rem; + padding-bottom: 1rem } #subtitleMenu .btn { - width: 18px; - height: 18px; - display: inline-block; - line-height: 18px; - font-size: 14px; - text-align: center + width: 18px; + height: 18px; + display: inline-block; + line-height: 18px; + font-size: 14px; + text-align: center } #subtitleMenu .options { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - width: 17rem; - padding: 1rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: 17rem; + padding: 1rem; } #subtitleMenu .options .headline { - font-size: .9rem; - font-weight: 700; - margin-bottom: .5rem; + font-size: .9rem; + font-weight: 700; + margin-bottom: .5rem; } #subtitleMenu .options .headline.flashing { - -webkit-animation: flash ease-in 1.8s infinite; - -moz-animation: flash ease-in 1.8s infinite; - -o-animation: flash ease-in 1.8s infinite; - -ms-animation: flash ease-in 1.8s infinite; - animation: flash ease-in 1.8s infinite; - -webkit-mask: none !important + -webkit-animation: flash ease-in 1.8s infinite; + -moz-animation: flash ease-in 1.8s infinite; + -o-animation: flash ease-in 1.8s infinite; + -ms-animation: flash ease-in 1.8s infinite; + animation: flash ease-in 1.8s infinite; + -webkit-mask: none !important } #subtitleMenu .options .box { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; - height: 3.5rem; - margin-top: 1rem; - border-radius: 3.5rem; - background-color: rgba(255, 255, 255, 0.05); + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + height: 3.5rem; + margin-top: 1rem; + border-radius: 3.5rem; + background-color: rgba(255, 255, 255, 0.05); } #subtitleMenu .options .box .value { - position: relative; - height: 100%; - line-height: 3.5rem; - font-size: 1rem; - text-align: center + position: relative; + height: 100%; + line-height: 3.5rem; + font-size: 1rem; + text-align: center } #subtitleMenu .options .box .button { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 100%; - width: 3.5rem; - color: #fff; - border-radius: 100%; - background-color: rgba(255, 255, 255, 0.05); - cursor: pointer; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 100%; + width: 3.5rem; + color: #fff; + border-radius: 100%; + background-color: rgba(255, 255, 255, 0.05); + cursor: pointer; } #subtitleMenu .options .box .button .icon { - height: 1rem; - width: 1rem; - opacity: 1 !important; - -ms-filter: none !important; - filter: none !important + height: 1rem; + width: 1rem; + opacity: 1 !important; + -ms-filter: none !important; + filter: none !important } #subtitleMenu .options .box .button:hover:not(.inactive) { - background-color: transparent + background-color: transparent } #subtitleMenu .options .hint { - font-size: .9rem; - font-weight: 500; - margin: .5rem 0; - color: #fff; - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) + font-size: .9rem; + font-weight: 500; + margin: .5rem 0; + color: #fff; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) } #subtitleMenu .options .title { - font-size: 25px + font-size: 25px } #subtitleMenu .options .bottom-left { - max-width: 70% + max-width: 70% } #subtitleMenu .options ul.select-squares { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - height: 3rem; - white-space: nowrap; - padding: .25rem 0; - overflow: hidden; - overflow-x: auto; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + height: 3rem; + white-space: nowrap; + padding: .25rem 0; + overflow: hidden; + overflow-x: auto; } #subtitleMenu .options ul.select-squares li { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 100%; - font-size: 1rem; - text-align: center; - padding: 0 .75rem; - margin-right: .5rem; - color: #fff; - border-radius: .5rem; - cursor: pointer; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 100%; + font-size: 1rem; + text-align: center; + padding: 0 .75rem; + margin-right: .5rem; + color: #fff; + border-radius: .5rem; + cursor: pointer; } #subtitleMenu .options ul.select-squares li:hover { - background-color: rgba(255, 255, 255, 0.05) + background-color: rgba(255, 255, 255, 0.05) } #subtitleMenu .options ul.select-squares li.selected { - position: relative; - background-color: #7b5bf5; - color: #fff + position: relative; + background-color: #8A8A8A; + color: #fff } #subtitleMenu .languages { - height: 100%; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - padding: 1.5rem; - width: 14rem; + height: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding-top: .5rem; + padding-bottom: 1.5rem; + width: 14rem; } #subtitleMenu .languages .toggle { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - cursor: pointer; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + cursor: pointer; } #subtitleMenu .languages .toggle input[type=checkbox] { - margin: 0; - margin-right: .75rem; - cursor: pointer + margin: 0; + margin-right: .75rem; + cursor: pointer } #subtitleMenu .languages .toggle label { - font-size: 1rem; - font-weight: 700; - cursor: pointer -} - -#subtitleMenu .languages li { - width: 100% + font-size: 1rem; + font-weight: 700; + cursor: pointer } #videoPlayer, .videoPlayer { - z-index: 0; - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - width: 100%; - height: 100%; - margin: auto + z-index: 0; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: 100%; + margin: auto } .hideCursor #videoPlayer, .hideCursor #subtitle { - cursor: url("data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="), auto + cursor: url("data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="), auto } @-moz-keyframes flash { - 0% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 50% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 100% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 50% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } } @-webkit-keyframes flash { - 0% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 50% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 100% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 50% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } } @-o-keyframes flash { - 0% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 50% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 100% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 50% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } } @keyframes flash { - 0% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } - 50% { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) - } - 100% { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) - } + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 50% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } } .ep-details { - display: flex; - align-items: center; - justify-content: center; - height: 3rem; - margin-bottom: 1rem; + display: flex; + align-items: center; + justify-content: center; + padding: 0 1.5rem; + margin-bottom: 1.5rem; } .ep-details .icon { - color: #fff; - font-size: 35px; - margin-right: 1rem + height: 2.5rem; + color: #fff; + font-size: 35px; + margin-right: 1rem } .ep-details .text-container { - display: flex; - flex-direction: column; - align-items: left; + display: flex; + flex-direction: column; + align-items: flex-start; } .ep-details .text-container .title { - color: #fff; - font-size: 1rem; - font-weight: 700; - text-transform: uppercase + color: #fff; + font-size: 1rem; + font-weight: 700; + text-transform: uppercase } .ep-details .text-container .message { - color: #fff; - font-size: .8rem; - font-weight: 700; - opacity: .5 + color: #fff; + font-size: .8rem; + font-weight: 700; + opacity: .5 } .no-streams { - display: flex; - align-items: center; - justify-content: center; - height: 4rem; - font-size: 1rem; - font-weight: 600; - color: #fff; - text-align: center + display: flex; + align-items: center; + justify-content: center; + height: 4rem; + padding: 0 1.5rem; + font-size: 1rem; + font-weight: 600; + color: #fff; + text-align: center } -.streams-quality.blocked { - display: block !important +.addons-select { + margin: 0 1.5rem; + margin-bottom: 1rem; } -.streams-container { - flex: auto; - position: relative; - display: flex; - justify-content: flex-start; - flex-direction: column; - height: 100%; - width: 29rem; - padding-top: 1.5rem; - overflow: hidden; - overflow-y: auto; -} - -.streams-container .streams-list { - position: relative; - display: flex; - flex-direction: column; -} - -.streams-container .streams-list .streams { - position: relative; - display: flex; - flex-direction: column; - align-content: flex-end; - height: 100%; - width: 100%; - overflow: hidden; - padding: .5rem 1.5rem; -} - -.streams-container .streams-list .streams .stream { - flex: none; - position: relative; - min-height: 6rem; - display: flex; - flex-direction: row; - align-items: center; - padding: .75rem; - margin-bottom: .5rem; - border-radius: .75rem; - outline: none; - cursor: pointer; - overflow: hidden; +.addons-select .icon { + right: 2.5rem !important } -.streams-container .streams-list .streams .stream:hover { - background: rgba(255, 255, 255, 0.05); -} - -.streams-container .streams-list .streams .stream:hover .description { - -webkit-mask-image: radial-gradient(circle at right center, transparent 2rem, #000 2rem); - -webkit-mask-position: -1.75rem center; - -webkit-mask-repeat: no-repeat -} - -.streams-container .streams-list .streams .stream:hover .stream-play { - opacity: 1 -} - -.streams-container .streams-list .streams .stream:focus { - box-shadow: 0 0 0 .2rem #fff -} - -.streams-container .streams-list .streams .stream .stream-content { - flex: 0 1 100%; - position: relative; - height: 100%; - display: flex; - flex-direction: row; - overflow: hidden; -} - -.streams-container .streams-list .streams .stream .stream-content .name { - flex: 0 0 6rem; - position: relative; - display: flex; - flex-direction: column; - justify-content: flex-start; - margin-right: 1rem; - font-size: 1rem; - font-weight: 500; -} - -.streams-container .streams-list .streams .stream .stream-content .name .progress { - position: absolute; - bottom: 0; - left: 0; - height: .4rem; - width: 100%; - margin-top: .5rem; - border-radius: .4rem; - background: rgba(255, 255, 255, 0.05); - overflow: hidden; -} - -.streams-container .streams-list .streams .stream .stream-content .name .progress .bar { - height: 100%; - background-color: #7b5bf5 -} - -.streams-container .streams-list .streams .stream .stream-content .description { - position: relative; - display: flex; - align-items: flex-start; - width: 100%; - white-space: pre; - text-overflow: ellipsis; - overflow: hidden; +.streams-quality.blocked { + display: block !important } -.streams-container .streams-list .streams .stream .stream-content .description .inner { - display: inline-block; - font-size: .9rem; - font-weight: 500 +.streams-container { + flex: auto; + position: relative; + display: flex; + justify-content: flex-start; + flex-direction: column; + height: 100%; + width: 29rem; + padding-top: 1.5rem; + overflow: hidden; +} + +.streams-container .streams { + flex: 1 1 100%; + position: relative; + display: flex; + flex-direction: column; + width: 100%; + padding: .5rem 1.5rem; + overflow: hidden; + overflow-y: auto; +} + +.streams-container .streams .stream { + flex: none; + position: relative; + min-height: 6rem; + display: flex; + flex-direction: row; + align-items: center; + padding: .75rem; + margin-bottom: .5rem; + border-radius: .75rem; + outline: none; + cursor: pointer; + overflow: hidden; +} + +.streams-container .streams .stream:hover { + background: rgba(255, 255, 255, 0.05); +} + +.streams-container .streams .stream:hover .description { + -webkit-mask-image: radial-gradient(circle at right center, transparent 2rem, #000 2rem); + -webkit-mask-position: -1.75rem center; + -webkit-mask-repeat: no-repeat +} + +.streams-container .streams .stream:hover .stream-play { + opacity: 1 +} + +/* .streams-container .streams .stream:focus { + box-shadow: 0 0 0 .17rem #fff +} */ + +.streams-container .streams .stream .stream-content { + flex: 0 1 100%; + position: relative; + height: 100%; + display: flex; + flex-direction: row; + overflow: hidden; +} + +.streams-container .streams .stream .stream-content .name { + flex: 0 0 6rem; + position: relative; + display: flex; + flex-direction: column; + justify-content: flex-start; + margin-right: 1rem; + font-size: 1rem; + font-weight: 500; +} + +.streams-container .streams .stream .stream-content .name .progress { + position: absolute; + bottom: 0; + left: 0; + height: .4rem; + width: 100%; + margin-top: .5rem; + border-radius: .4rem; + background: rgba(255, 255, 255, 0.05); + overflow: hidden; +} + +.streams-container .streams .stream .stream-content .name .progress .bar { + height: 100%; + background-color: #8A8A8A +} + +.streams-container .streams .stream .stream-content .description { + position: relative; + display: flex; + align-items: flex-start; + width: 100%; + white-space: pre; + text-overflow: ellipsis; + overflow: hidden; +} + +.streams-container .streams .stream .stream-content .description .inner { + display: inline-block; + font-size: .9rem; + font-weight: 500 } -.streams-container .streams-list .streams .stream .stream-content .description:hover .inner { - transform: translateX(-100%); - transition: transform 3s linear +.streams-container .streams .stream .stream-content .description:hover .inner { + transform: translateX(-100%); + transition: transform 5s linear } -.streams-container .streams-list .streams .stream .stream-play { - flex: none; - position: absolute; - right: .75rem; - display: flex; - align-items: center; - justify-content: center; - height: 3rem; - width: 3rem; - border-radius: 100%; - background-color: #22b365; - opacity: 0; +.streams-container .streams .stream .stream-play { + flex: none; + position: absolute; + right: .75rem; + display: flex; + align-items: center; + justify-content: center; + height: 3rem; + width: 3rem; + border-radius: 100%; + background-color: #22b365; + opacity: 0; } -.streams-container .streams-list .streams .stream .stream-play .icon { - flex: none; - height: 1.5rem; - width: 1.5rem +.streams-container .streams .stream .stream-play .icon { + flex: none; + height: 1.5rem; + width: 1.5rem } -.streams-container .streams-list .more-addons { - margin: 1.5rem +.streams-container .more-addons { + flex: none; + margin: 1rem 1.5rem 1.5rem 1.5rem } .streams-loader { - flex: none; - height: 5rem; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - padding: 0 1.5rem; + flex: none; + height: 5rem; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; } .streams-loader .progress-bar-header { - margin-bottom: .75em; - font-size: 1rem; - font-weight: 500; - white-space: pre; - text-overflow: ellipsis; - text-align: center; - text-transform: uppercase; - overflow: hidden + margin-bottom: .75em; + font-size: 1rem; + font-weight: 500; + white-space: pre; + text-overflow: ellipsis; + text-align: center; + text-transform: uppercase; + overflow: hidden } .streams-loader .progress-bar { - height: 5px; - border-radius: 5px; - background-color: #7b5bf5 + height: 5px; + border-radius: 5px; + background-color: #8A8A8A } .binge-group { - z-index: 98; - position: absolute; - width: 30rem; - bottom: calc(7rem + 1rem); - right: 2rem; - display: flex; - flex-direction: column; - padding: 1.5rem; - border-radius: .75rem; - background-color: #282828; - box-shadow: 0 0 2rem 0 rgba(0, 0, 0, 0.4); - backdrop-filter: blur(15px); - animation: slideIn 1s ease-in-out; + z-index: 98; + position: absolute; + width: 30rem; + bottom: calc(7rem + 1rem); + right: 2rem; + display: flex; + flex-direction: column; + padding: 1.5rem; + border-radius: .75rem; + background-color: #0f0d26; + box-shadow: 0 0 2rem 0 rgba(0, 0, 0, 0.4); + backdrop-filter: blur(15px); + animation: slideIn 1s ease-in-out; } .binge-group .title { - font-size: 1.25rem; - font-weight: bold; - color: #fff; - margin-bottom: 1.5rem; + font-size: 1.25rem; + font-weight: bold; + color: #fff; + margin-bottom: 1.5rem; } .binge-group .title .accent { - color: #7b5bf5; - margin-left: .25rem + color: #8A8A8A; + margin-left: .25rem } .binge-group .metadata { - display: flex; - margin-bottom: 1rem; + display: flex; + margin-bottom: 1rem; } .binge-group .metadata .poster { - height: 12rem; - width: calc(12rem / (40 / 27)); - flex-shrink: 0; - margin-right: 1.5rem; - border-radius: .75rem; - background-size: cover; - background-position: center + height: 12rem; + width: calc(12rem / (40 / 27)); + flex-shrink: 0; + margin-right: 1.5rem; + border-radius: .75rem; + background-size: cover; + background-position: center } .binge-group .metadata .info { - display: flex; - flex-direction: column; - color: #fff; + display: flex; + flex-direction: column; + color: #fff; } .binge-group .metadata .info .name { - font-size: 1rem; - margin-bottom: .5rem + font-size: 1rem; + margin-bottom: .5rem } .binge-group .metadata .info .description { - display: -webkit-box; - -webkit-line-clamp: 6; - -webkit-box-orient: vertical; - text-overflow: ellipsis; - overflow: hidden; - font-size: 1rem; - font-style: italic; - opacity: .7 + display: -webkit-box; + -webkit-line-clamp: 6; + -webkit-box-orient: vertical; + text-overflow: ellipsis; + overflow: hidden; + font-size: 1rem; + font-style: italic; + opacity: .7 } .binge-group .buttons { - display: flex; - justify-content: space-evenly; + display: flex; + justify-content: space-evenly; } .binge-group .buttons .button { - height: 3.5rem; - width: 100%; - display: flex; - align-items: center; - justify-content: center; - border-radius: 3.5rem; - font-family: 'PlusJakartaSans'; - font-size: 1rem; - font-weight: 500; - color: #fff; - line-height: 3.5rem; - background-color: #7b5bf5; - outline: none; + height: 3.5rem; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + border-radius: 3.5rem; + font-family: PlusJakartaSans, Arial, Helvetica, sans-serif; + font-size: 1rem; + font-weight: 500; + color: #fff; + line-height: 3.5rem; + background-color: #8A8A8A; + outline: none; } .binge-group .buttons .button:first-child { - margin-right: 1rem + margin-right: 1rem } .binge-group .buttons .button.clear { - background-color: transparent; + background-color: transparent; } .binge-group .buttons .button.clear:hover { - background-color: $tertiary-foreground-color !important + background-color: $tertiary-foreground-color !important } .binge-group .buttons .button .icon { - margin-right: 1rem + margin-right: 1rem } .binge-group .buttons .button:hover { - background-color: transparent; - box-shadow: 0 0 0 .12rem #7b5bf5 + background-color: transparent; + box-shadow: 0 0 0 .17rem #8A8A8A } - +/* .binge-group .buttons .button:focus { - box-shadow: 0 0 0 .2rem #fff -} + box-shadow: 0 0 0 .17rem #fff +} */ @-moz-keyframes slideIn { - 0% { - transform: translateX(100%) - } - 100% { - transform: translateX(0) - } + 0% { + transform: translateX(100%) + } + 100% { + transform: translateX(0) + } } @-webkit-keyframes slideIn { - 0% { - transform: translateX(100%) - } - 100% { - transform: translateX(0) - } + 0% { + transform: translateX(100%) + } + 100% { + transform: translateX(0) + } } @-o-keyframes slideIn { - 0% { - transform: translateX(100%) - } - 100% { - transform: translateX(0) - } + 0% { + transform: translateX(100%) + } + 100% { + transform: translateX(0) + } } @keyframes slideIn { - 0% { - transform: translateX(100%) - } - 100% { - transform: translateX(0) - } + 0% { + transform: translateX(100%) + } + 100% { + transform: translateX(0) + } } #playbackSpeedControl { - text-align: center; + text-align: center; } #playbackSpeedControl .popup { - flex-direction: column; - width: 12rem; - padding: .5rem 1rem; + flex-direction: column; + width: 12rem; } #playbackSpeedControl .popup ul { - width: 100% + width: 100% } .modal-dialog { - height: 100%; - width: 100%; - position: absolute; - top: 0; - display: flex; - align-items: center; - justify-content: center; + height: 100%; + width: 100%; + position: absolute; + top: 0; + display: flex; + align-items: center; + justify-content: center; } .modal-dialog .modal-backdrop { - position: absolute; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.5) + position: absolute; + height: 100%; + width: 100%; + background: rgba(0, 0, 0, 0.5) } .modal-dialog .modal-container { - box-sizing: border-box; - position: relative; - display: flex; - flex-direction: column; - gap: 1rem; - height: auto; - width: 35em; - max-height: 90%; - overflow-y: auto; - font-size: 18px; - padding: 3rem 2rem 2rem; - border-radius: 4px; - color: $primary-foreground-color; - background-color: $primary-background-color; + box-sizing: border-box; + position: relative; + display: flex; + flex-direction: column; + gap: 1rem; + height: auto; + width: 35em; + max-height: 90%; + overflow-y: auto; + font-size: 18px; + padding: 3rem 2rem 2rem; + border-radius: 4px; + color: $primary-foreground-color; + background-color: $primary-background-color; } .modal-dialog .modal-container .modal-close { - position: absolute; - top: 1rem; - right: 1rem; - display: flex; - align-items: center; - justify-content: center; - align-self: flex-end; - height: 2rem; - width: 2rem; - cursor: pointer; - opacity: .5; + position: absolute; + top: 1rem; + right: 1rem; + display: flex; + align-items: center; + justify-content: center; + align-self: flex-end; + height: 2rem; + width: 2rem; + cursor: pointer; + opacity: .5; } .modal-dialog .modal-container .modal-close:hover { - opacity: 1 + opacity: 1 } .modal-dialog .modal-container .modal-content { - display: flex; - flex-direction: column; + display: flex; + flex-direction: column; } .modal-dialog .modal-container .modal-content title { - display: block; - margin-bottom: 1rem + display: block; + margin-bottom: 1rem } .modal-dialog .modal-container .modal-content .modal-message { - font-style: italic + font-style: italic } .modal-dialog .modal-container .buttons-container { - display: flex; - justify-content: space-between; - padding-top: 2rem; - margin: 0 -.5rem; + display: flex; + justify-content: space-between; + padding-top: 2rem; + margin: 0 -.5rem; } .modal-dialog .modal-container .buttons-container .modal-button { - display: flex; - align-items: center; - justify-content: center; - flex: 1; - background-color: #fff; - color: #a8a8a8; - font-weight: 600; - padding: 1.2rem; - margin: 0 .5rem; - cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + flex: 1; + background-color: #fff; + color: #a8a8a8; + font-weight: 600; + padding: 1.2rem; + margin: 0 .5rem; + cursor: pointer; } .modal-dialog .modal-container .buttons-container .modal-button.accent { - color: #fff; - background-color: #22b467; + color: #fff; + background-color: #22b467; } .modal-dialog .modal-container .buttons-container .modal-button.accent:hover { - filter: brightness(115%) + filter: brightness(115%) } .modal-dialog .modal-container .buttons-container .modal-button:not(.accent):hover { - background-color: rgba(0, 0, 0, 0.1) + background-color: rgba(0, 0, 0, 0.1) } .modal-dialog .modal-container .buttons-container .modal-button:focus { - outline: $outline-size solid; - outline-offset: -4px + outline: $outline-size solid; + outline-offset: -4px } .loading-container { - position: relative; - display: flex; - align-items: center; - justify-content: center; - height: 100%; - width: 100%; - font-size: 1.5rem; - color: #fff; + position: relative; + display: flex; + align-items: center; + justify-content: center; + height: 100%; + width: 100%; + font-size: 1.5rem; + color: #fff; } .loading-container .loading { - position: relative; - height: 6rem; - width: 6rem; - overflow: visible; + position: relative; + height: 6rem; + width: 6rem; + overflow: visible; } .loading-container .loading .ripple { - position: absolute; - height: 100%; - width: 100%; - border: 4px solid #fff; - opacity: 1; - border-radius: 50%; - transform: scale(0); - opacity: 0; - will-change: opacity, transform; - animation: ripple 1s cubic-bezier(0, .2, .8, 1) infinite + position: absolute; + height: 100%; + width: 100%; + border: 4px solid #fff; + opacity: 1; + border-radius: 50%; + transform: scale(0); + opacity: 0; + will-change: opacity, transform; + animation: ripple 1s cubic-bezier(0, .2, .8, 1) infinite } .loading-container .loading .ripple:nth-child(2) { - animation-delay: -.5s + animation-delay: -.5s } @-moz-keyframes ripple { - 0% { - transform: scale(0); - opacity: 0 - } - 4.9% { - opacity: 0 - } - 5% { - opacity: 1 - } - 100% { - transform: scale(1.1); - opacity: 0 - } + 0% { + transform: scale(0); + opacity: 0 + } + 4.9% { + opacity: 0 + } + 5% { + opacity: 1 + } + 100% { + transform: scale(1.1); + opacity: 0 + } } @-webkit-keyframes ripple { - 0% { - transform: scale(0); - opacity: 0 - } - 4.9% { - opacity: 0 - } - 5% { - opacity: 1 - } - 100% { - transform: scale(1.1); - opacity: 0 - } + 0% { + transform: scale(0); + opacity: 0 + } + 4.9% { + opacity: 0 + } + 5% { + opacity: 1 + } + 100% { + transform: scale(1.1); + opacity: 0 + } } @-o-keyframes ripple { - 0% { - transform: scale(0); - opacity: 0 - } - 4.9% { - opacity: 0 - } - 5% { - opacity: 1 - } - 100% { - transform: scale(1.1); - opacity: 0 - } + 0% { + transform: scale(0); + opacity: 0 + } + 4.9% { + opacity: 0 + } + 5% { + opacity: 1 + } + 100% { + transform: scale(1.1); + opacity: 0 + } } @keyframes ripple { - 0% { - transform: scale(0); - opacity: 0 - } - 4.9% { - opacity: 0 - } - 5% { - opacity: 1 - } - 100% { - transform: scale(1.1); - opacity: 0 - } + 0% { + transform: scale(0); + opacity: 0 + } + 4.9% { + opacity: 0 + } + 5% { + opacity: 1 + } + 100% { + transform: scale(1.1); + opacity: 0 + } +} + +#event-modal .container { + z-index: 99; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + display: flex; + align-items: center; + justify-content: center; +} + +#event-modal .container .backdrop { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + backdrop-filter: blur(10px) +} + +#event-modal .container .content { + position: relative; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 1rem; + width: 36rem; + padding: 12rem 4rem 4rem; + text-align: center; + border-radius: .75rem; + background-color: #0f0d26; + box-shadow: 0 0 2rem 0 #1a173e; +} + +#event-modal .container .content .close-button { + position: absolute; + top: 1rem; + right: 1rem; + display: flex; + align-items: center; + justify-content: center; + height: 2rem; + width: 2rem; + opacity: .5; + cursor: pointer; +} + +#event-modal .container .content .close-button .icon { + height: 1.75rem; + width: 1.75rem +} + +#event-modal .container .content .close-button:hover { + opacity: 1 +} + +#event-modal .container .content img { + z-index: 0; + position: absolute; + top: -10rem; + height: 30rem; + width: 30rem; + object-fit: contain +} + +#event-modal .container .content .title { + z-index: 1; + font-size: 1.4rem; + font-family: PlusJakartaSans; + color: #fff +} + +#event-modal .container .content .message { + z-index: 1; + font-size: 1.2rem; + font-family: PlusJakartaSans; + color: #fff; + opacity: .5 +} + +#event-modal .container .content .addon-container { + z-index: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 1rem; + margin-top: 1rem; +} + +#event-modal .container .content .addon-container .icon { + height: 2.5rem; + width: 2.5rem; + color: #8A8A8A +} + +#event-modal .container .content .addon-container .name { + font-size: 1.2rem; + font-family: PlusJakartaSans; + color: #fff; + opacity: .8 +} + +#event-modal .container .content .button { + z-index: 1; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + gap: .75rem; + height: 3.5rem; + border-radius: 3.5rem; + padding: 0 3rem; + margin-top: 2rem; + font-size: 1rem; + font-family: PlusJakartaSans; + font-weight: 700; + color: #8A8A8A; + background-color: #fff; +} + +#event-modal .container .content .button .icon { + height: 1.25rem; + width: 1.25rem +} + +#event-modal .container .content .button.install { + color: #fff; + background-color: #22b365 } +/* #event-modal .container .content .button:hover { + box-shadow: 0 0 0 .17rem #fff inset; + background-color: transparent +} */ + #detail { - position: absolute; - top: 0; - left: 0; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; - height: 100%; - overflow: hidden; + position: absolute; + top: 0; + left: 0; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + height: 100%; + overflow: hidden; } #detail.visible { - z-index: 99 + z-index: 99 } #detail .background { - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; + z-index: 0; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; } #detail .background .overlay { - z-index: 1; - position: absolute; - height: 100%; - width: 100%; - background-color: rgba(12, 12, 17, 0.65) + z-index: 1; + position: absolute; + height: 100%; + width: 100%; + background-color: rgba(12, 12, 17, 0.65) } #detail .background .image { - z-index: 0; - position: absolute; - height: 100%; - width: 100%; - -webkit-background-size: cover; - -moz-background-size: cover; - background-size: cover; - background-repeat: no-repeat + z-index: 0; + position: absolute; + height: 100%; + width: 100%; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + background-repeat: no-repeat +} + +#detail .detail-error { + z-index: 1; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 1rem; +} + +#detail .detail-error img { + width: 10rem +} + +#detail .detail-error .info-text { + max-width: 25rem; + font-size: 1.5rem; + font-weight: 500; + color: #fff; + text-align: center } #detail .content { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - box-flex: 1; - -webkit-flex: auto; - -ms-flex: auto; - flex: auto; - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - padding: 0 .5rem; - padding-bottom: 3rem; + z-index: 1; + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 0 .5rem; + padding-bottom: 3rem; + padding-left: calc(var(--navbar-width) - 0.5rem); } #detail .content .logo { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: start; - -moz-box-pack: start; - -o-box-pack: start; - -ms-flex-pack: start; - -webkit-justify-content: flex-start; - justify-content: flex-start; - height: 8rem; - max-width: 30rem; - margin-bottom: 2rem; - background-color: transparent; - overflow: hidden; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: start; + -moz-box-pack: start; + -o-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + height: 8rem; + max-width: 30rem; + padding: 0 .5rem; + margin-bottom: 2rem; + background-color: transparent; + overflow: hidden; } #detail .content .logo img { - height: 100%; - width: 100%; - object-fit: contain; - object-position: center left; - font-size: 3rem; - font-weight: bold; - line-height: 100% -} - -#detail .content .info { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: start; - -moz-box-pack: start; - -o-box-pack: start; - -ms-flex-pack: start; - -webkit-justify-content: flex-start; - justify-content: flex-start; - width: 25rem; - margin-bottom: 2rem; -} - -#detail .content .info li { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - margin-right: 4rem; - font-size: 1.1rem; - font-weight: 600; -} - -#detail .content .info li .icon { - height: 3rem; - width: 3rem; -} - -#detail .content .info li .icon.imdb { - margin-left: .5rem; - color: #f5c518 -} - -#detail .content .info li.external { - cursor: pointer -} - -#detail .content .section { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - margin-bottom: 2rem; -} - -#detail .content .section .title { - font-size: .9rem; - font-weight: 700; - text-transform: uppercase; - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30); - margin-bottom: .5rem -} - -#detail .content .section .links { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-lines: multiple; - -moz-box-lines: multiple; - -o-box-lines: multiple; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; -} - -#detail .content .section .links .link { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 2.2rem; - font-size: 1rem; - font-weight: 500; - padding: 0 1.5rem; - margin-right: .75rem; - margin-bottom: .75rem; - border-radius: 2rem; - background-color: rgba(255, 255, 255, 0.05); - outline: none; - cursor: pointer; - backdrop-filter: blur(10px); -} - -#detail .content .section .links .link:hover { - background-color: rgba(255, 255, 255, 0.1) -} - -#detail .content .section .links .link:focus { - -webkit-box-shadow: 0 0 0 .2rem #fff; - box-shadow: 0 0 0 .2rem #fff -} - -#detail .content .section .text { - max-width: 35rem; - font-size: 1rem; - line-height: 1.5rem + height: 100%; + width: 100%; + object-fit: contain; + object-position: center left; + font-size: 3rem; + font-weight: bold; + line-height: 100% +} + +#detail .content .details { + max-width: 35rem; + position: relative; + margin-bottom: 1rem; + overflow-y: auto; + padding: 0 .5rem; +} + +#detail .content .details .info { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: start; + -moz-box-pack: start; + -o-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + width: 25rem; + margin-bottom: 2rem; +} + +#detail .content .details .info li { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-right: 4rem; + font-size: 1.1rem; + font-weight: 600; +} + +#detail .content .details .info li .icon { + height: 3rem; + width: 3rem; +} + +#detail .content .details .info li .icon.imdb { + margin-left: .5rem; + color: #f5c518 +} + +#detail .content .details .info li.external { + cursor: pointer +} + +#detail .content .details .section { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-bottom: 2rem; +} + +#detail .content .details .section .title { + font-size: .9rem; + font-weight: 700; + text-transform: uppercase; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); + margin-bottom: .5rem +} + +#detail .content .details .section .links { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + -o-box-lines: multiple; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +#detail .content .details .section .links .link { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 2.2rem; + font-size: 1rem; + font-weight: 500; + padding: 0 1.5rem; + margin-right: .75rem; + margin-bottom: .75rem; + border-radius: 2rem; + background-color: rgba(255, 255, 255, 0.05); + outline: none; + cursor: pointer; + backdrop-filter: blur(10px); +} + +#detail .content .details .section .links .link:hover { + background-color: rgba(255, 255, 255, 0.1) +} +/* +#detail .content .details .section .links .link:focus { + -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff +} */ + +#detail .content .details .section .text { + font-size: 1rem; + line-height: 1.5rem } #detail .content .action-buttons { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-lines: multiple; - -moz-box-lines: multiple; - -o-box-lines: multiple; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + -o-box-lines: multiple; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: 0 .5rem; } #detail .content .action-buttons .button-b { - font-size: .9rem; - padding: 0 2rem; - margin-right: 1rem; - margin-bottom: 1rem; - backdrop-filter: blur(10px); + font-size: .9rem; + padding: 0 2rem; + margin-right: 1rem; + margin-bottom: 1rem; + backdrop-filter: blur(10px); } #detail .content .action-buttons .button-b .icon { - height: 1.5rem; - width: 1.5rem; - margin-right: 1rem + height: 1.5rem; + width: 1.5rem; + margin-right: 1rem } -#detail .content .action-buttons .button-b:hover { - -webkit-box-shadow: 0 0 0 .12rem #fff inset; - box-shadow: 0 0 0 .12rem #fff inset; - background-color: transparent -} +/* #detail .content .action-buttons .button-b:hover { + -webkit-box-shadow: 0 0 0 .17rem #fff inset; + box-shadow: 0 0 0 .17rem #fff inset; + background-color: transparent +} */ #detail .content .spacing { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - box-flex: 1; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1 -} - -#detail .detail-error { - position: relative; - width: 46%; - margin: 4em auto 0 auto; - text-align: center; -} - -#detail .detail-error img { - width: 25%; - padding: 44px 0 -} - -#detail .detail-error .info-text { - font-weight: 100; - line-height: 1.4em; - letter-spacing: .03em; - font-size: 22px; - color: #c1b2cb + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1 } #detail .cinema-tickets { - font-size: 16px; - text-align: center; - width: 140px; - height: 26px; - padding: 7px; - font-weight: bold; - margin: 10px auto; - padding: 9px 6px; - background-color: #f6c700; + font-size: 16px; + text-align: center; + width: 140px; + height: 26px; + padding: 7px; + font-weight: bold; + margin: 10px auto; + padding: 9px 6px; + background-color: #f6c700; } #detail .cinema-tickets:hover, #detail .cinema-tickets:focus { - background-color: #f6c700 !important + background-color: #f6c700 !important } #detail .play-button, #detail .movie-nostream { - position: absolute; - top: 31%; - right: 17%; - z-index: 1000; + position: absolute; + top: 31%; + right: 17%; + z-index: 1000; } #detail .play-button span, #detail .movie-nostream span { - text-transform: uppercase; - font-size: 18px; - margin-top: 10px; - display: inline-block + text-transform: uppercase; + font-size: 18px; + margin-top: 10px; + display: inline-block } #detail .movie-notavailable { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 3rem; - color: #fff; - margin-bottom: 1rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 3rem; + color: #fff; + margin-bottom: 1rem; } #detail .movie-notavailable .icon { - height: 2.5rem; - width: 2.5rem; - margin-right: 1rem + height: 2.5rem; + width: 2.5rem; + margin-right: 1rem } #detail .movie-notavailable .message { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: start; - -moz-box-align: start; - -o-box-align: start; - -ms-flex-align: start; - -webkit-align-items: flex-start; - align-items: flex-start; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: start; + -moz-box-align: start; + -o-box-align: start; + -ms-flex-align: start; + -webkit-align-items: flex-start; + align-items: flex-start; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; } #detail .movie-notavailable .message h3 { - font-size: 1rem; - text-transform: uppercase + font-size: 1rem; + text-transform: uppercase } #detail .movie-notavailable .message h4 { - font-size: .8rem; - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50) + font-size: .8rem; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) } #detail .guide { - position: absolute; - bottom: 20px; - height: 90px; - left: 20px; - right: 402px; - overflow: auto; - overflow-y: hidden; - white-space: nowrap; + position: absolute; + bottom: 20px; + height: 90px; + left: 20px; + right: 402px; + overflow: auto; + overflow-y: hidden; + white-space: nowrap; } #detail .guide .programme { - display: inline-block; - overflow: hidden; - height: 100%; - -webkit-transition: all 0.3s ease-in; - -moz-transition: all 0.3s ease-in; - -o-transition: all 0.3s ease-in; - -ms-transition: all 0.3s ease-in; - transition: all 0.3s ease-in; - position: relative; + display: inline-block; + overflow: hidden; + height: 100%; + -webkit-transition: all 0.3s ease-in; + -moz-transition: all 0.3s ease-in; + -o-transition: all 0.3s ease-in; + -ms-transition: all 0.3s ease-in; + transition: all 0.3s ease-in; + position: relative; } #detail .guide .programme .inner { - position: absolute; - top: 4px; - bottom: 3px; - left: 3px; - right: 3px; - padding: 5px; - background-color: rgba(99, 63, 126, 0.3) + position: absolute; + top: 4px; + bottom: 3px; + left: 3px; + right: 3px; + padding: 5px; + background-color: rgba(99, 63, 126, 0.3) } #detail .guide .programme h4 { - white-space: nowrap; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - overflow: hidden + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden } #detail .guide .programme.current .inner { - background-color: rgba(99, 63, 126, 0.5) + background-color: rgba(99, 63, 126, 0.5) } #detail .guide .programme.small>.inner>* { - opacity: 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0) + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0) } #detail .guide .programme:hover { - min-width: 160px; + min-width: 160px; } #detail .guide .programme:hover>.inner>* { - opacity: 1; - -ms-filter: none; - filter: none + opacity: 1; + -ms-filter: none; + filter: none } #addons { - position: relative; - height: 100%; - width: 100%; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column + position: relative; + height: 100%; + width: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column } #addonPromptModal { - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; } #addonPromptModal.visible { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex } #addonPromptModal .ucfirst { - text-transform: capitalize + text-transform: capitalize } #addonPromptModal .modal { - position: relative; - height: auto; - width: 35em; - max-height: 90%; - font-size: 1rem; - border-radius: .75rem; - color: #fff; - background-color: #282828; - overflow-y: auto; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - -ms-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000; - -moz-perspective: 1000; - -ms-perspective: 1000; - perspective: 1000; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -o-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); + position: relative; + height: auto; + width: 35em; + max-height: 90%; + font-size: 1rem; + border-radius: .75rem; + color: #fff; + background-color: #0f0d26; + overflow-y: auto; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + -moz-perspective: 1000; + -ms-perspective: 1000; + perspective: 1000; + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -o-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); } #addonPromptModal .modal .modal-bg { - padding: 2rem 2.5rem; - -webkit-background-size: cover; - -moz-background-size: cover; - background-size: cover; - background-position: center; - background-color: #282828; - background-blend-mode: color + padding: 2rem 2.5rem; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + background-position: center; + background-color: #0f0d26; + background-blend-mode: color } #addonPromptModal .modal p, #addonPromptModal .modal li { - font-weight: 500 + font-weight: 500 } #addonPromptModal .modal a { - cursor: pointer; + cursor: pointer; } #addonPromptModal .modal a:hover { - text-decoration: underline + text-decoration: underline } #addonPromptModal .modal .nowrap { - white-space: nowrap; - overflow: hidden; - -o-text-overflow: ellipsis; - text-overflow: ellipsis + white-space: nowrap; + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis } #addonPromptModal .modal .title { - color: #fff; - text-align: left; - margin: 25px 0; - max-height: 2.5em; - overflow: hidden; + color: #fff; + text-align: left; + margin: 25px 0; + max-height: 2.5em; + overflow: hidden; } #addonPromptModal .modal .title small { - font-size: .5em + font-size: .5em } #addonPromptModal .modal .title img { - height: 1.2em; - margin-right: .4em; - float: left + height: 1.2em; + margin-right: .4em; + float: left } #addonPromptModal .modal .close { - color: #fff; - top: 1.5em; - right: 1.5em + color: #fff; + top: 1.5em; + right: 1.5em } #addonPromptModal .buttons { - position: static; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; - margin: 0; + position: static; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + margin: 0; } #addonPromptModal .buttons .button { - margin: 2em 0 0 0; - -webkit-box-flex: .3; - -moz-box-flex: .3; - -o-box-flex: .3; - -ms-box-flex: .3; - box-flex: .3; - -webkit-flex-grow: .3; - flex-grow: .3; - font-size: 1rem; - font-weight: 600; - outline: none; + margin: 2em 0 0 0; + -webkit-box-flex: .3; + -moz-box-flex: .3; + -o-box-flex: .3; + -ms-box-flex: .3; + box-flex: .3; + -webkit-flex-grow: .3; + flex-grow: .3; + font-size: 1rem; + font-weight: 600; + outline: none; } #addonPromptModal .buttons .button.install-button { - color: #fff; - background-color: #22b365; + color: #fff; + background-color: #22b365; } #addonPromptModal .buttons .button.install-button:hover { - background-color: transparent; - -webkit-box-shadow: 0 0 0 .12rem #22b365; - box-shadow: 0 0 0 .12rem #22b365 + background-color: transparent; + -webkit-box-shadow: 0 0 0 .17rem #22b365; + box-shadow: 0 0 0 .17rem #22b365 } - +/* #addonPromptModal .buttons .button:focus { - -webkit-box-shadow: 0 0 0 .2rem #fff; - box-shadow: 0 0 0 .2rem #fff -} + -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff +} */ #addonsCatalog { - position: relative; - height: 100%; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: start; - -moz-box-align: start; - -o-box-align: start; - -ms-flex-align: start; - -webkit-align-items: flex-start; - align-items: flex-start + position: relative; + height: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: start; + -moz-box-align: start; + -o-box-align: start; + -ms-flex-align: start; + -webkit-align-items: flex-start; + align-items: flex-start } #addonsCatalog .options { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; - padding: 0 1rem; - margin-bottom: 1rem; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + gap: 1rem; + padding: 0 1rem; + margin-bottom: 1rem; } #addonsCatalog .options .filters { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; } #addonsCatalog .options .filters .segments { - margin-right: 2.5rem + margin-right: 2.5rem } #addonsCatalog .options .addon-search { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 2.5rem; - background-color: rgba(255, 255, 255, 0.05); - border: none; - border-radius: 2.5rem; - padding: 0 1.5rem; - margin: 0; - outline: none; - overflow: hidden; -} - -#addonsCatalog .options .addon-search:focus { - -webkit-box-shadow: 0 0 0 .2rem #fff; - box-shadow: 0 0 0 .2rem #fff -} + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 2.5rem; + background-color: rgba(255, 255, 255, 0.05); + border: none; + border-radius: 2.5rem; + padding: 0 1.5rem; + margin: 0; + outline: none; + overflow: hidden; +} + +/* #addonsCatalog .options .addon-search:focus { + -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff +} */ #addonsCatalog .options .addon-search .icon { - height: 1.25rem; - width: 1.25rem; - color: #fff; - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50) + height: 1.25rem; + width: 1.25rem; + color: #fff; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) } #addonsCatalog .options .addon-search .addon-search-input { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - -ms-box-flex: 1; - box-flex: 1; - -webkit-flex-grow: 1; - flex-grow: 1; + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + -ms-box-flex: 1; + box-flex: 1; + -webkit-flex-grow: 1; + flex-grow: 1; } #addonsCatalog .options .addon-search .addon-search-input input[type="text"] { - width: 100%; - margin: 0; - padding: 0; - border: none; - font-size: 1rem; - font-weight: 500; - color: #fff; - background-color: transparent + width: 100%; + margin: 0; + padding: 0; + border: none; + font-size: 1rem; + font-weight: 500; + color: #fff; + background-color: transparent } #addonsCatalog .options .addon-search .submit { - position: absolute; - left: -9999px; - width: 1px; - height: 1px; - border: none; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none + position: absolute; + left: -9999px; + width: 1px; + height: 1px; + border: none; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none } #addonsCatalog .content { - position: relative; - height: 100%; - width: 100%; - padding: 0 1rem; - padding-top: 1rem; - overflow-y: auto; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - -ms-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000; - -moz-perspective: 1000; - -ms-perspective: 1000; - perspective: 1000; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -o-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); + position: relative; + height: 100%; + width: 100%; + padding: 0 1rem; + padding-top: 1rem; + overflow-y: auto; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + -moz-perspective: 1000; + -ms-perspective: 1000; + perspective: 1000; + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -o-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); } #addonsCatalog .content #top-bar { - background-color: #3a497d; - height: 52px; - border-bottom: 1px solid #3a497d; - position: fixed; - top: 0; - width: 100%; - z-index: 999; + background-color: #3a497d; + height: 52px; + border-bottom: 1px solid #3a497d; + position: fixed; + top: 0; + width: 100%; + z-index: 999; } #addonsCatalog .content #top-bar h1 { - font-size: 20px; - font-weight: 300; - text-transform: initial; - text-align: initial; - margin: 0; - position: absolute; - top: 10px; - left: 20px; - padding: 5px 0 5px + font-size: 20px; + font-weight: 300; + text-transform: initial; + text-align: initial; + margin: 0; + position: absolute; + top: 10px; + left: 20px; + padding: 5px 0 5px } #addonsCatalog .content #top-bar .title { - padding: 5px 0 5px 45px; - background-image: url("http://www.strem.io/images/addons/stremio-logo.png"); - background-position: -1px -2px; - background-repeat: no-repeat + padding: 5px 0 5px 45px; + background-image: url("http://www.strem.io/images/addons/stremio-logo.png"); + background-position: -1px -2px; + background-repeat: no-repeat } #addonsCatalog .content #top-bar .label { - font-size: 24px; - color: rgba(255, 255, 255, 0.55); - font-weight: 300; - margin: 0 10px 20px; - display: inline-block + font-size: 24px; + color: rgba(255, 255, 255, 0.55); + font-weight: 300; + margin: 0 10px 20px; + display: inline-block } .addon { - position: relative; - padding: 2rem; - margin-bottom: 1rem; - border-radius: .75rem; - background-color: rgba(255, 255, 255, 0.05); - outline: none; + position: relative; + padding: 2rem; + margin-bottom: 1rem; + border-radius: .75rem; + background-color: rgba(255, 255, 255, 0.05); + outline: none; } .addon:focus { - -webkit-box-shadow: 0 0 0 .2rem #fff; - box-shadow: 0 0 0 .2rem #fff + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff */ } .addon .desc-row { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .addon .desc-row .icon { - font-size: .8em; - width: 1em; - height: 1em; - -webkit-background-size: contain; - -moz-background-size: contain; - background-size: contain; - background-position: center bottom; - margin: 0 1em + font-size: .8em; + width: 1em; + height: 1em; + -webkit-background-size: contain; + -moz-background-size: contain; + background-size: contain; + background-position: center bottom; + margin: 0 1em } .addon .desc-row .icon-ic_check { - color: #19fbb8 + color: #19fbb8 } .addon .desc-row .icon-ic_warning { - color: #f6c700 + color: #f6c700 } .addon .addon-content { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; -} - -@media screen and (max-width:1170px) { - .addon .addon-content { - display: block - } + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex } .addon .icon { - display: inline-block + display: inline-block } .addon .icon.icon-online, .addon .icon.icon-offline { - width: .5em; - height: .5em; - margin: .5em 1em; - border-radius: 50% + width: .5em; + height: .5em; + margin: .5em 1em; + border-radius: 50% } .addon .icon.icon-online { - background-color: #19fbb8 + background-color: #19fbb8 } .addon .icon.icon-offline { - background-color: #fb5e19 + background-color: #fb5e19 } .addon .heading { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - margin-bottom: .5rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + margin-bottom: .5rem; } .addon .heading .title { - font-size: 1.5rem + font-size: 1.5rem } .addon .left-pane { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - -ms-box-flex: 1; - box-flex: 1; - -webkit-flex-grow: 1; - flex-grow: 1; - -webkit-flex-basis: 600px; - flex-basis: 600px; -} - -.addon .left-pane .repos { - clear: both; -} - -.addon .left-pane .repos .repo { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - vertical-align: baseline; -} - -.addon .left-pane .repos .repo .col { - white-space: nowrap; - overflow: hidden; - -o-text-overflow: ellipsis; - text-overflow: ellipsis -} - -.addon .left-pane .repos .repo .col-mw { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - -ms-box-flex: 1; - box-flex: 1; - -webkit-flex-grow: 1; - flex-grow: 1 -} - -.addon .left-pane .repos .repo .col-sm { - width: 2em -} - -.addon .left-pane .repos .repo .col-md { - width: 275px + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto } .addon .right-pane { - -webkit-flex-basis: 200px; - flex-basis: 200px + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 0 0 15rem; + -ms-flex: 0 0 15rem; + flex: 0 0 15rem } .addon .addon-logo { - float: left; - width: 7rem; - height: 7rem; - -webkit-background-size: contain; - -moz-background-size: contain; - background-size: contain; - background-position: center center; - background-repeat: no-repeat; - border-radius: .75rem; - margin: 0 2rem 0 0; - -webkit-mask-repeat: no-repeat; - -webkit-mask-position: center; - -webkit-mask-size: contain; - mask-repeat: no-repeat; - mask-position: center; - mask-size: contain; - overflow: hidden; + float: left; + width: 7rem; + height: 7rem; + -webkit-background-size: contain; + -moz-background-size: contain; + background-size: contain; + background-position: center center; + background-repeat: no-repeat; + border-radius: .75rem; + margin: 0 2rem 0 0; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + -webkit-mask-size: contain; + mask-repeat: no-repeat; + mask-position: center; + mask-size: contain; + overflow: hidden; } .addon .addon-logo img { - width: 100%; - height: 100%; - object-fit: contain + width: 100%; + height: 100%; + object-fit: contain } .addon .description { - overflow: hidden; - line-height: 1.3em; + overflow: hidden; + line-height: 1.3em; } .addon .description span { - font-size: 15px; - line-height: 1.3em; - font-weight: 300 + font-size: 15px; + line-height: 1.3em; + font-weight: 300 } .addon .buttons { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - position: relative; - -webkit-transition: opacity 0.25s ease-in; - -moz-transition: opacity 0.25s ease-in; - -o-transition: opacity 0.25s ease-in; - -ms-transition: opacity 0.25s ease-in; - transition: opacity 0.25s ease-in; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + position: relative; + -webkit-transition: opacity 0.25s ease-in; + -moz-transition: opacity 0.25s ease-in; + -o-transition: opacity 0.25s ease-in; + -ms-transition: opacity 0.25s ease-in; + transition: opacity 0.25s ease-in; } .addon .buttons .remove { - background: none; - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30); + background: none; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); } .addon .buttons .remove:hover { - -webkit-box-shadow: 0 0 0 .12rem #fff; - box-shadow: 0 0 0 .12rem #fff + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff */ } .addon .buttons .install { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - box-flex: 1; - -webkit-flex: 1 0 auto; - -ms-flex: 1 0 auto; - flex: 1 0 auto; - background-color: #22b365; - color: #fff + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + background-color: #22b365; + color: #fff } .addon .buttons .configure { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - box-flex: 1; - -webkit-flex: 1 0 auto; - -ms-flex: 1 0 auto; - flex: 1 0 auto; - min-width: 3rem; - background-color: #22b365; - color: #fff; + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + min-width: 3rem; + background-color: #22b365; + color: #fff; } .addon .buttons .configure.small { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - box-flex: 1; - -webkit-flex: 0 1 auto; - -ms-flex: 0 1 auto; - flex: 0 1 auto; - margin-right: .75rem + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + margin-right: .75rem } .addon .buttons>a { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 3rem; - border-radius: 3rem; - font-size: 1rem; - font-weight: 600; - text-align: center; - cursor: pointer; - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - -ms-box-flex: 1; - box-flex: 1; - -webkit-flex-grow: 1; - flex-grow: 1; - overflow: hidden; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 3rem; + border-radius: 3rem; + font-size: 1rem; + font-weight: 600; + text-align: center; + cursor: pointer; + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + -ms-box-flex: 1; + box-flex: 1; + -webkit-flex-grow: 1; + flex-grow: 1; + overflow: hidden; } .addon .buttons>a .icon { - height: 1.5rem; - width: 1.5rem + height: 1.5rem; + width: 1.5rem } .addon .buttons>a .label { - margin-left: .5rem + margin-left: .5rem } .addon .buttons>a:not(.remove):hover { - background-color: transparent; - -webkit-box-shadow: 0 0 0 .12rem #22b365; - box-shadow: 0 0 0 .12rem #22b365 + background-color: transparent; + -webkit-box-shadow: 0 0 0 .17rem #22b365; + box-shadow: 0 0 0 .17rem #22b365 } .addon .background { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80); - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - -webkit-background-size: cover; - -moz-background-size: cover; - background-size: cover; - background-position: center + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80); + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + background-position: center } .addon .addon-type { - font-size: 1rem; - margin-bottom: .5rem; - white-space: nowrap; - overflow: hidden; - text-transform: capitalize; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - opacity: .4; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; - filter: alpha(opacity=40) + font-size: 1rem; + margin-bottom: .5rem; + white-space: nowrap; + overflow: hidden; + text-transform: capitalize; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + opacity: .4; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + filter: alpha(opacity=40) } .addon .version { - font-size: 1rem; - margin: 0 1em; - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50) + font-size: 1rem; + margin: 0 1em; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) } .addon .share { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 3rem; - margin-top: 1.5rem; - font-size: 1rem; - font-weight: 500; - cursor: pointer; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 3rem; + margin-top: 1.5rem; + font-size: 1rem; + font-weight: 500; + cursor: pointer; } .addon .share .icon { - height: 1.25rem; - width: 1.25rem; - margin-right: .75rem + height: 1.25rem; + width: 1.25rem; + margin-right: .75rem } #introModal { - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - padding: 0; - background-color: #100f1e; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + padding: 0; + background-color: #100f1e; } #introModal .background { - z-index: -1; - position: fixed; - top: -5%; - bottom: -5%; - left: -5%; - right: -5%; - background-color: #0c0c11; - background-position: bottom left, top right; - -webkit-background-size: 53%, 54%; - -moz-background-size: 53%, 54%; - background-size: 53%, 54%; - background-repeat: no-repeat; - filter: blur(6rem) + z-index: -1; + position: fixed; + top: -5%; + bottom: -5%; + left: -5%; + right: -5%; + background-color: #0c0c11; + background-position: bottom left, top right; + -webkit-background-size: 53%, 54%; + -moz-background-size: 53%, 54%; + background-size: 53%, 54%; + background-repeat: no-repeat; + filter: blur(6rem) } #introModal .button { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 3.5rem; - width: 100%; - border-radius: 4rem; - margin-bottom: 1rem; - padding: 0 1rem; - font-family: 'PlusJakartaSans'; - font-size: 1rem; - font-weight: 500; - text-align: center; - color: #fff; - -webkit-box-shadow: 0 0 0 .12rem #fff; - box-shadow: 0 0 0 .12rem #fff; - background-color: transparent; - cursor: pointer; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 3.5rem; + width: 100%; + border-radius: 4rem; + margin-bottom: 1rem; + padding: 0 1rem; + font-family: PlusJakartaSans, Arial, Helvetica, sans-serif; + font-size: 1rem; + font-weight: 500; + text-align: center; + color: #fff; + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff; */ + background-color: transparent; + cursor: pointer; } #introModal .button.inactive { - opacity: .55; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=55)"; - filter: alpha(opacity=55); - cursor: default + opacity: .55; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=55)"; + filter: alpha(opacity=55); + cursor: default } #introModal .button.fb { - font-weight: 700; - border: none; - color: #fff !important; - background-color: #1877f2 !important; - -webkit-box-shadow: 0 0 0 .12rem #1877f2; - box-shadow: 0 0 0 .12rem #1877f2; + font-weight: 700; + border: none; + color: #fff !important; + /* background-color: #1877f2 !important; + -webkit-box-shadow: 0 0 0 .17rem #1877f2; + box-shadow: 0 0 0 .17rem #1877f2; */ } #introModal .button.fb .icon { - height: 2rem; - margin-right: .5rem + height: 2rem; + margin-right: .5rem } #introModal .button.fb:hover { - color: #1877f2 !important; - background-color: transparent !important + color: #1877f2 !important; + background-color: transparent !important } #introModal .button:hover { - font-weight: 700; - color: #0c0c11; - border: none; - background-color: #fff + font-weight: 700; + color: #0c0c11; + border: none; + background-color: #fff } #intro { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - height: 100%; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: default; - text-align: center; - overflow-y: auto; - overflow-x: hidden; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + height: 100%; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; + text-align: center; + overflow-y: auto; + overflow-x: hidden; } #intro .separator { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - height: 2rem; - margin: auto + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + height: 2rem; + margin: auto } #intro .pres { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - z-index: 1; - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + z-index: 1; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } #intro .pres .logo { - height: 4.5rem; - margin-bottom: 3rem; - object-fit: contain + height: 4.5rem; + margin-bottom: 3rem; + object-fit: contain } #intro .pres h1 { - font-size: 2.5rem; - font-weight: 600; - text-transform: inherit; - margin: 0 + font-size: 2.5rem; + font-weight: 600; + text-transform: inherit; + margin: 0 } #intro .pres h2 { - font-size: 1.25rem; - font-weight: 400; - margin: 0; - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50); - text-transform: lowercase; + font-size: 1.25rem; + font-weight: 400; + margin: 0; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); + text-transform: lowercase; } #intro .pres h2:first-letter { - text-transform: uppercase + text-transform: uppercase } #intro .login-form { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: start; - -moz-box-align: start; - -o-box-align: start; - -ms-flex-align: start; - -webkit-align-items: flex-start; - align-items: flex-start; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - -webkit-box-lines: multiple; - -moz-box-lines: multiple; - -o-box-lines: multiple; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - margin-top: 3rem; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: start; + -moz-box-align: start; + -o-box-align: start; + -ms-flex-align: start; + -webkit-align-items: flex-start; + align-items: flex-start; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + -o-box-lines: multiple; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-top: 3rem; } #intro .login-form .form { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - width: 18rem; - margin: 1rem 1.25rem; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: 18rem; + margin: 1rem 1.25rem; } #intro .login-form .form .login-user { - margin-bottom: .75rem + margin-bottom: .75rem } #intro input:not([type=checkbox]) { - position: relative; - height: 3.5rem; - width: 100%; - padding: 0 1.75rem; - margin-bottom: 1rem; - font-size: 1rem; - font-weight: 500; - border: none + position: relative; + height: 3.5rem; + width: 100%; + padding: 0 1.75rem; + margin-bottom: 1rem; + font-size: 1rem; + font-weight: 500; + border: none } #intro .alt-opts { - width: 18rem; - margin: 1rem 1.25rem + width: 18rem; + margin: 1rem 1.25rem } #intro .accept { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - padding: .25rem; - margin-bottom: .5rem; - text-align: left; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + padding: .25rem; + margin-bottom: .5rem; + text-align: left; } #intro .accept input { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - margin: 0; - margin-right: .75rem + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + margin: 0; + margin-right: .75rem } #intro .accept span { - font-size: .9rem; - padding: .1rem + font-size: .9rem; + padding: .1rem } #intro .accept-link { - cursor: pointer + cursor: pointer } #intro .error-label { - font-size: 1rem; - text-align: center; - color: #f6c700; - margin-bottom: 1.5rem; + font-size: 1rem; + text-align: center; + color: #f6c700; + margin-bottom: 1.5rem; } #intro .error-label .wrong-pass { - font-size: 1rem + font-size: 1rem } #intro .error-label a { - text-decoration: underline; - cursor: pointer + text-decoration: underline; + cursor: pointer } #intro .import, #intro .accept { - font-size: 1rem; - font-weight: 500; + font-size: 1rem; + font-weight: 500; } #intro .import b, #intro .accept b { - font-weight: normal; - cursor: pointer + font-weight: normal; + cursor: pointer } #intro .accept .acc { - opacity: .6; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - filter: alpha(opacity=60) + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) } #intro .login-fbuser { - margin: 60px auto 25px auto + margin: 60px auto 25px auto } #intro .login-fbuser .avatar { - height: 80px; - width: 80px; - border-radius: 50%; - margin: 10px auto; - -webkit-background-size: 100% 100%; - -moz-background-size: 100% 100%; - background-size: 100% 100% + height: 80px; + width: 80px; + border-radius: 50%; + margin: 10px auto; + -webkit-background-size: 100% 100%; + -moz-background-size: 100% 100%; + background-size: 100% 100% } #intro .login-fbuser .name { - text-align: center; - font-size: 16px + text-align: center; + font-size: 16px } #intro .accept-fb { - margin-top: 10px; - text-align: center; + margin-top: 10px; + text-align: center; } #intro .accept-fb .acc { - opacity: .6; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - filter: alpha(opacity=60) + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) } #intro .loader { - position: fixed; - top: 0; - left: 0; - bottom: 0; - right: 0; - display: block; - z-index: 100; - background: rgba(0, 0, 0, 0.8); + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + display: block; + z-index: 100; + background: rgba(0, 0, 0, 0.8); } #intro .loader .loader-actions { - position: absolute; - top: 50%; - left: 50%; - -webkit-transform: translate(-50%, calc(-50% + 120px)); - -moz-transform: translate(-50%, calc(-50% + 120px)); - -o-transform: translate(-50%, calc(-50% + 120px)); - -ms-transform: translate(-50%, calc(-50% + 120px)); - transform: translate(-50%, calc(-50% + 120px)); + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, calc(-50% + 120px)); + -moz-transform: translate(-50%, calc(-50% + 120px)); + -o-transform: translate(-50%, calc(-50% + 120px)); + -ms-transform: translate(-50%, calc(-50% + 120px)); + transform: translate(-50%, calc(-50% + 120px)); } #intro .loader .loader-actions .label { - font-size: 1.25rem + font-size: 1.25rem } #intro .loader .loader-actions .button { - margin-top: 2rem + margin-top: 2rem } #discover { - position: relative; - height: 100%; - width: 100%; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; + position: relative; + height: 100%; + width: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; } #discover .content { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - box-flex: 1; - -webkit-flex: auto; - -ms-flex: auto; - flex: auto; - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - height: 100%; - width: 100%; + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + height: 100%; + width: 100%; } #discover .content .filters { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - padding-left: 1rem; - margin-bottom: 1rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + padding-left: 1rem; + margin-bottom: 1rem; } #discover .content .filters .custom-select { - margin-right: 1rem + margin-right: 1rem } #discover .content .items { - position: relative; - height: 100%; - width: 100%; - display: grid; - grid-template-columns: repeat(auto-fill, minmax(calc(11rem - 1rem), 1fr)); - grid-template-rows: auto auto auto 1fr; - gap: 1.5rem; - padding: .5rem 1rem 1rem 1rem; - overflow-y: auto; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - -ms-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000; - -moz-perspective: 1000; - -ms-perspective: 1000; - perspective: 1000; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -o-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); + position: relative; + height: 100%; + width: 100%; + display: grid; + grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr)); + gap: 1.5rem; + -ms-flex-line-pack: start; + -webkit-align-content: flex-start; + align-content: flex-start; + padding: .5rem 1rem 1rem 1rem; + overflow-y: auto; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + -moz-perspective: 1000; + -ms-perspective: 1000; + perspective: 1000; + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -o-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); } #discover .content .items li { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - box-flex: 1; - -webkit-flex: auto; - -ms-flex: auto; - flex: auto; - position: relative; - height: calc(calc(11rem - 1rem) / (27 / 40)); - width: calc(11rem - 1rem); - border-radius: .75rem; - outline: none; -} - -#discover .content .items li:hover, -#discover .content .items li:focus { - -webkit-box-shadow: 0 0 0 .2rem #fff; - box-shadow: 0 0 0 .2rem #fff + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto; + position: relative; + height: calc(10rem / (27 / 40)); + width: 10rem; + border-radius: .75rem; + outline: none; +} +/* +#discover .content .items li:hover { + -webkit-box-shadow: 0 0 0 .12rem #fff; + box-shadow: 0 0 0 .12rem #fff } +#discover .content .items li:focus { + -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff +} */ + #discover .content .items.square li { - height: calc(11rem - 1rem) + height: 10rem } #discover .info-box { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - box-flex: 1; - -webkit-flex: 0 0 29rem; - -ms-flex: 0 0 29rem; - flex: 0 0 29rem; - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; - height: calc(100% - 3rem); - margin-left: 1rem; - border-radius: .75rem 0 0 .75rem; - overflow: hidden; + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 0 0 27rem; + -ms-flex: 0 0 27rem; + flex: 0 0 27rem; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + height: 100%; + margin-left: 1rem; + border-radius: .75rem 0 0 0; + overflow: hidden; +} + +#discover .info-box .bkg { + position: absolute; + top: -10px; + right: -10px; + left: -10px; + bottom: -10px; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + background-position: center; + background-repeat: no-repeat; + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80); + filter: blur(15px) +} + +#discover .info-box .overlay { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + background: rgba(12, 12, 17, 0.5) } #discover .info-box .content { - z-index: 1; - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; - padding-bottom: 2.5rem; + z-index: 1; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + padding-bottom: 2.5rem; } #discover .info-box .content .details { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - overflow-y: auto; - padding: 0 2.5rem; - padding-top: 3rem; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + overflow-y: auto; + padding: 0 2.5rem; + padding-top: 3rem; } #discover .info-box .content .details .logo { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 6rem; - margin-bottom: 1.5rem; - overflow: hidden; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 6rem; + margin-bottom: 1.5rem; + overflow: hidden; } #discover .info-box .content .details .logo img { - height: 100%; - width: 100%; - object-fit: contain + height: 100%; + width: 100%; + object-fit: contain } #discover .info-box .content .details .info { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; - height: 2rem; - margin-bottom: 2rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + height: 2rem; + margin-bottom: 2rem; } #discover .info-box .content .details .info li { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - font-size: 1.1rem; - font-weight: 600; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + font-size: 1.1rem; + font-weight: 600; } #discover .info-box .content .details .info li .icon { - height: 3rem; - width: 3rem; + height: 3rem; + width: 3rem; } #discover .info-box .content .details .info li .icon.imdb { - margin-left: .5rem; - color: #f5c518 + margin-left: .5rem; + color: #f5c518 } #discover .info-box .content .details .info li.external { - cursor: pointer + cursor: pointer } #discover .info-box .content .details .description { - font-size: 1rem; - font-weight: 400; - line-height: 1.5rem; - padding-bottom: 2rem + font-size: 1rem; + font-weight: 400; + line-height: 1.5rem; + padding-bottom: 2rem } #discover .info-box .content .details .section { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - margin: 1rem 0; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin: 1rem 0; } #discover .info-box .content .details .section .title { - font-size: .9rem; - font-weight: 700; - text-transform: uppercase; - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30); - margin-bottom: .5rem + font-size: .9rem; + font-weight: 700; + text-transform: uppercase; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); + margin-bottom: .5rem } #discover .info-box .content .details .section .links { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-lines: multiple; - -moz-box-lines: multiple; - -o-box-lines: multiple; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + -o-box-lines: multiple; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } #discover .info-box .content .details .section .links .link { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 2.2rem; - font-size: 1rem; - font-weight: 500; - padding: 0 1.5rem; - margin-right: .75rem; - margin-bottom: .75rem; - border-radius: 2rem; - background-color: rgba(255, 255, 255, 0.05); - outline: none; - cursor: pointer; - backdrop-filter: blur(10px); + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 2.2rem; + font-size: 1rem; + font-weight: 500; + padding: 0 1.5rem; + margin-right: .75rem; + margin-bottom: .75rem; + border-radius: 2rem; + background-color: rgba(255, 255, 255, 0.05); + outline: none; + cursor: pointer; } #discover .info-box .content .details .section .links .link:hover { - background-color: rgba(255, 255, 255, 0.1) + background-color: rgba(255, 255, 255, 0.1) } -#discover .info-box .content .details .section .links .link:focus { - -webkit-box-shadow: 0 0 0 .2rem #fff; - box-shadow: 0 0 0 .2rem #fff -} +/* #discover .info-box .content .details .section .links .link:focus { + -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff +} */ #discover .info-box .content .details .section .text { - max-width: 35rem; - font-size: 1rem + max-width: 35rem; + font-size: 1rem } #discover .info-box .content .actions { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; - padding: 0 2.5rem; - padding-top: 1rem; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + gap: 1.5rem; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + -o-box-lines: multiple; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: 0 2.5rem; + padding-top: 1rem; } #discover .info-box .content .actions .button { - position: relative; - height: 3.5rem; - width: 3.5rem; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - border-radius: 100%; - background-color: rgba(255, 255, 255, 0.05); - outline: none; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + height: 3.5rem; + width: 3.5rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + border-radius: 100%; + background-color: rgba(255, 255, 255, 0.05); + outline: none; } #discover .info-box .content .actions .button .icon { - height: 1.75rem; - width: 1.75rem + height: 1.75rem; + width: 1.75rem } #discover .info-box .content .actions .button.play { - width: auto; - padding: 0 4.5rem; - padding-right: 6rem; - border-radius: 3.5rem; + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto; + padding: 0 2.5rem; + padding-right: 5rem; + border-radius: 3.5rem; } #discover .info-box .content .actions .button.play .icon-container { - position: absolute; - top: 0; - right: 0; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 3.5rem; - width: 3.5rem; - border-radius: 100%; - background-color: #22b365 + position: absolute; + top: 0; + right: 0; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 3.5rem; + width: 3.5rem; + border-radius: 100%; + background-color: #22b365 } #discover .info-box .content .actions .button.play .label { - font-size: 1.2rem; - font-weight: 500 + font-size: 1.2rem; + font-weight: 500 } #discover .info-box .content .actions .button:hover { - background-color: #22b365; + background-color: #22b365; } #discover .info-box .content .actions .button:hover .label { - font-weight: 600 + font-weight: 600 } - +/* #discover .info-box .content .actions .button:focus { - -webkit-box-shadow: 0 0 0 .2rem #fff; - box-shadow: 0 0 0 .2rem #fff -} + -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff +} */ #discover .adex-adview, #discover .missing-addon { - margin: 0 auto; - width: 100%; - max-width: 728px + margin: 0 auto; + width: 100%; + max-width: 728px } #discover .adex-adview img, #discover .adex-adview video { - width: 100% + width: 100% } #discover .missing-addon { - font-size: 18px; - text-align: center; - padding: .5em; + font-size: 18px; + text-align: center; + padding: .5em; } #discover .missing-addon .message { - margin-bottom: .5em + margin-bottom: .5em } #discover .missing-addon .install { - padding: .5em 1em; - display: inline-block; - -webkit-transition: opacity 0.25s ease-in; - -moz-transition: opacity 0.25s ease-in; - -o-transition: opacity 0.25s ease-in; - -ms-transition: opacity 0.25s ease-in; - transition: opacity 0.25s ease-in; - background-color: #22b467; - color: #fff; - font-weight: bold; - cursor: pointer; + padding: .5em 1em; + display: inline-block; + -webkit-transition: opacity 0.25s ease-in; + -moz-transition: opacity 0.25s ease-in; + -o-transition: opacity 0.25s ease-in; + -ms-transition: opacity 0.25s ease-in; + transition: opacity 0.25s ease-in; + background-color: #22b467; + color: #fff; + font-weight: bold; + cursor: pointer; } #discover .missing-addon .install:hover { - opacity: 1; - -ms-filter: none; - filter: none; - filter: brightness(80%) + opacity: 1; + -ms-filter: none; + filter: none; + filter: brightness(80%) } #discover #discover-backdrop { - margin: 10rem auto 0 auto; - text-align: center; -} - -#discover #discover-backdrop .header, -#discover #discover-backdrop .info-text { - font-weight: 100; - line-height: 1.4em; - letter-spacing: .03em -} - -#discover #discover-backdrop .header { - font-size: 3rem; - font-weight: 300; - color: #7b5bf5 -} - -#discover #discover-backdrop img { - width: 14rem -} - -#discover #discover-backdrop .info-text { - font-size: 1.25rem; - font-weight: 400; - opacity: .2; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"; - filter: alpha(opacity=20) -} - -#discover #discover-backdrop .yes-button { - margin-top: 3.5rem + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 1.5rem; + margin-top: 5rem; +} + +#discover #discover-backdrop .heading { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +#discover #discover-backdrop .heading img { + width: 10rem +} + +#discover #discover-backdrop .heading .header { + font-size: 2.5rem; + font-weight: 500; + color: #8A8A8A; + margin-bottom: .5rem +} + +#discover #discover-backdrop .heading .info-text { + font-size: 1.25rem; + font-weight: 400; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) +} + +#discover #discover-backdrop .buttons { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + gap: 1.5rem } #search .holder { - left: 10px; - top: 0 + left: 10px; + top: 0 } #search h2.noResults { - text-align: center; - width: 100%; - margin-top: 15% -} - -.info-box .bkg { - position: absolute; - top: -10px; - right: -10px; - left: -10px; - bottom: -10px; - -webkit-background-size: cover; - -moz-background-size: cover; - background-size: cover; - background-position: center; - background-repeat: no-repeat; - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80); - filter: blur(15px) -} - -.info-box .overlay { - background: rgba(12, 12, 17, 0.5); - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0 -} - -@media only screen and (max-width:800px) { - #discover .info-box { - display: none - } - #discover .holder { - right: 10px !important - } - #discover .items li { - width: 31.33% !important - } + text-align: center; + width: 100%; + margin-top: 15% } #library { - position: relative; - height: 100%; - width: 100%; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; + position: relative; + height: 100%; + width: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } #library .options { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - padding-left: 1rem; - margin-bottom: 1rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + padding-left: 1rem; + margin-bottom: 1rem; } #library .options .segments { - padding-left: 2.5rem + padding-left: 2.5rem } #library .items { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - box-flex: 1; - -webkit-flex: auto; - -ms-flex: auto; - flex: auto; - position: relative; - height: 100%; - width: 100%; - display: grid; - grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr)); - grid-template-rows: auto auto auto 1fr; - gap: 1.5rem; - overflow-y: auto; - padding: .5rem 1rem 1rem 1rem; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - -ms-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000; - -moz-perspective: 1000; - -ms-perspective: 1000; - perspective: 1000; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -o-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto; + position: relative; + height: 100%; + width: 100%; + display: grid; + grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr)); + gap: 1.5rem; + -ms-flex-line-pack: start; + -webkit-align-content: flex-start; + align-content: flex-start; + overflow-y: auto; + padding: .5rem 1rem 1rem 1rem; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + -moz-perspective: 1000; + -ms-perspective: 1000; + perspective: 1000; + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -o-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); } #library .items li { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - box-flex: 1; - -webkit-flex: auto; - -ms-flex: auto; - flex: auto; - position: relative; - height: calc(11rem / (27 / 40)); - width: 11rem; - border-radius: .75rem; - outline: none; -} - -#library .items li.selected, -#library .items li:focus, -#library .items li:hover { - -webkit-box-shadow: 0 0 0 .2rem #fff; - box-shadow: 0 0 0 .2rem #fff -} + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto; + position: relative; + height: calc(10rem / (27 / 40)); + width: 10rem; + border-radius: .75rem; + outline: none; +} + +/* #library .items li:hover { + -webkit-box-shadow: 0 0 0 .12rem #fff; + box-shadow: 0 0 0 .12rem #fff +} + +#library .items li:focus { + -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff +} */ #library .items.square li { - height: 11rem + height: 10rem } #calendar { - height: 100%; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: start; - -moz-box-align: start; - -o-box-align: start; - -ms-flex-align: start; - -webkit-align-items: flex-start; - align-items: flex-start + height: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: start; + -moz-box-align: start; + -o-box-align: start; + -ms-flex-align: start; + -webkit-align-items: flex-start; + align-items: flex-start } #series-calendar { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - box-flex: 1; - -webkit-flex: auto; - -ms-flex: auto; - flex: auto; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - height: 100%; - padding-left: 1rem; - padding-right: .5rem; + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + height: 100%; + padding-left: 1rem; + padding-right: .5rem; } #series-calendar .selectMonth { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 4rem; - margin-bottom: 1rem; - overflow: hidden; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 4rem; + margin-bottom: 1rem; + overflow: hidden; } #series-calendar .selectMonth>* { - float: left + float: left } #series-calendar .selectMonth ul { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 100%; } #series-calendar .selectMonth ul li { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 100%; - width: 8rem; - padding: 0 1rem; - font-size: 1rem; - font-weight: 500; - color: #fff; - border-radius: .75rem; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - white-space: nowrap; - outline: none; - overflow: hidden; - cursor: pointer; -} - + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 100%; + width: 8rem; + padding: 0 1rem; + font-size: 1rem; + font-weight: 500; + color: #fff; + border-radius: .75rem; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + white-space: nowrap; + outline: none; + overflow: hidden; + cursor: pointer; +} +/* #series-calendar .selectMonth ul li:focus { - -webkit-box-shadow: 0 0 0 .2rem #fff inset; - box-shadow: 0 0 0 .2rem #fff inset -} + -webkit-box-shadow: 0 0 0 .17rem #fff inset; + box-shadow: 0 0 0 .17rem #fff inset +} */ #series-calendar .selectMonth ul li.current { - font-size: 1.5rem; - margin: 0 1rem + font-size: 1.5rem; + margin: 0 1rem } #series-calendar .selectMonth ul li.previous, #series-calendar .selectMonth ul li.next { - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50); + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); } #series-calendar .selectMonth ul li.previous:hover, #series-calendar .selectMonth ul li.next:hover { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80) + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) } #series-calendar .selectMonth ul li.previous label, #series-calendar .selectMonth ul li.next label { - cursor: pointer + cursor: pointer } #series-calendar .selectMonth ul li.hide { - color: rgba(255, 255, 255, 0.3) + color: rgba(255, 255, 255, 0.3) } #series-calendar ul.days { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - position: relative; - display: grid; - grid-template-columns: repeat(7, minmax(5rem, 1fr)); - gap: 1px; - height: 2rem; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + display: grid; + grid-template-columns: repeat(7, minmax(5rem, 1fr)); + gap: 1px; + height: 2rem; } #series-calendar ul.days li.label { - font-size: 1rem; - font-weight: 500; - padding: 0 .25rem; - color: #fff; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - overflow: hidden + font-size: 1rem; + font-weight: 500; + padding: 0 .25rem; + color: #fff; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden } #series-calendar ul.month { - display: grid; - grid-template-columns: repeat(7, minmax(5rem, 1fr)); - gap: 1px; - padding-bottom: 1rem; - border-radius: .75rem; - overflow-y: auto; + display: grid; + grid-template-columns: repeat(7, minmax(5rem, 1fr)); + gap: 1px; + padding-bottom: 1rem; + border-radius: .75rem; + height: 100%; } #series-calendar ul.month li.day { - position: relative; - height: 9vw; - background: rgba(255, 255, 255, 0.05); - outline: none; - overflow: hidden; + position: relative; + background: rgba(255, 255, 255, 0.05); + outline: none; + overflow: hidden; } #series-calendar ul.month li.day:first-child { - border-radius: .75rem 0 0 0 + border-radius: .75rem 0 0 0 } #series-calendar ul.month li.day:last-child { - border-radius: 0 0 .75rem 0 + border-radius: 0 0 .75rem 0 } #series-calendar ul.month li.day:nth-child(7) { - border-radius: 0 .75rem 0 0 + border-radius: 0 .75rem 0 0 } #series-calendar ul.month li.day:nth-child(29) { - border-radius: 0 0 0 .75rem + border-radius: 0 0 0 .75rem } #series-calendar ul.month li.day:hover { - cursor: pointer + cursor: pointer } - +/* #series-calendar ul.month li.day:focus { - -webkit-box-shadow: 0 0 0 .2rem #fff inset; - box-shadow: 0 0 0 .2rem #fff inset -} + -webkit-box-shadow: 0 0 0 .17rem #fff inset; + box-shadow: 0 0 0 .17rem #fff inset +} */ #series-calendar ul.month li.day.today .date { - background: #7b5bf5; - color: #fff; - font-size: 1rem; - border-radius: 100% + background: #8A8A8A; + color: #fff; + font-size: 1rem; + border-radius: 100% } #series-calendar ul.month li.day.selected { - background: rgba(255, 255, 255, 0.1); - z-index: 50 + background: rgba(255, 255, 255, 0.1); + z-index: 50 } #series-calendar ul.month li.day .date { - width: 2rem; - height: 2rem; - position: absolute; - top: .75rem; - left: 1rem; - font-size: 1rem; - font-weight: 500; - color: #fff; - display: table; - text-align: center; + width: 2rem; + height: 2rem; + position: absolute; + top: .75rem; + left: 1rem; + font-size: 1rem; + font-weight: 500; + color: #fff; + display: table; + text-align: center; } #series-calendar ul.month li.day .date span { - display: table-cell; - vertical-align: middle + display: table-cell; + vertical-align: middle } #series-calendar ul.month li.day .more { - position: absolute; - background: rgba(99, 63, 126, 0.5); - border-radius: 18px; - padding: 4px 6px; - top: 5px; - right: 5px; - left: auto; - color: #fff + position: absolute; + background: rgba(99, 63, 126, 0.5); + border-radius: 18px; + padding: 4px 6px; + top: 5px; + right: 5px; + left: auto; + color: #fff } #series-calendar ul.month li.day div.ep-holder { - position: absolute; - top: 50%; - left: 0; - right: 0; - bottom: 0; + position: absolute; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + height: calc(100% - 3.5rem); + left: .17rem; + right: .17rem; + bottom: .17rem; + overflow: hidden; } #series-calendar ul.month li.day div.ep-holder .episode { - height: 100%; - float: left; - width: calc(33.33% - 1px); - margin-right: 1px; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + width: calc(33.33% - 1px); + margin-right: 1px; } #series-calendar ul.month li.day div.ep-holder .episode .name, #series-calendar ul.month li.day div.ep-holder .episode .num { - float: left + float: left } #series-calendar ul.month li.day div.ep-holder .episode .name { - width: 75%; - margin-right: 5%; - overflow: hidden; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - white-space: nowrap + width: 75%; + margin-right: 5%; + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + white-space: nowrap } #series-calendar ul.month li.day div.ep-holder .episode .num { - width: 20% + width: 20% } #series-calendar ul.month li.day div.ep-holder .episode.available { - opacity: .4; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; - filter: alpha(opacity=40) + opacity: .4; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + filter: alpha(opacity=40) } #series-calendar ul.month li.day .thumb { - height: 100%; - background-repeat: no-repeat; - -webkit-background-size: cover; - -moz-background-size: cover; - background-size: cover; - background-position: center; -} - -#series-calendar ul.month li.day .thumb:before { - content: ""; - display: block; - padding-top: 146.4% + height: 100%; + background-repeat: no-repeat; + -webkit-background-size: contain; + -moz-background-size: contain; + background-size: contain; + background-position: center bottom } #future-episodes { - -webkit-box-flex: 1; - -moz-box-flex: 1; - -o-box-flex: 1; - box-flex: 1; - -webkit-flex: 0 0 20rem; - -ms-flex: 0 0 20rem; - flex: 0 0 20rem; - height: 100%; - padding-left: .5rem; - padding-right: 1rem; - overflow-y: auto; + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 0 0 20rem; + -ms-flex: 0 0 20rem; + flex: 0 0 20rem; + height: 100%; + padding-left: .5rem; + padding-right: 1rem; + overflow-y: auto; } #future-episodes li { - position: relative; - margin-bottom: 1rem; - border-radius: .75rem; - background: rgba(255, 255, 255, 0.05); - outline: none; - overflow: hidden; + position: relative; + margin-bottom: 1rem; + border-radius: .75rem; + background: rgba(255, 255, 255, 0.05); + outline: none; + overflow: hidden; } #future-episodes li.selected .date { - background: #7b5bf5 + background: #8A8A8A } #future-episodes .date { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - height: 3rem; - width: 100%; - padding: 0 1rem; - cursor: default; - font-size: 1rem; - font-weight: 500; - color: #fff; - text-align: left + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + height: 3rem; + width: 100%; + padding: 0 1rem; + cursor: default; + font-size: 1rem; + font-weight: 500; + color: #fff; + text-align: left } #future-episodes .today .episode { - opacity: 1; - -ms-filter: none; - filter: none + opacity: 1; + -ms-filter: none; + filter: none } #future-episodes .episode { - padding: 1rem; - overflow: hidden; - cursor: default; - outline: none; - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50); + padding: 1rem; + overflow: hidden; + cursor: default; + outline: none; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); } #future-episodes .episode.active, #future-episodes .episode:hover, #future-episodes .episode:focus { - opacity: 1; - -ms-filter: none; - filter: none; - background: rgba(255, 255, 255, 0.05) + opacity: 1; + -ms-filter: none; + filter: none; + background: rgba(255, 255, 255, 0.05) } #future-episodes .episode .seriesName, #future-episodes .episode .epNumber { - display: inline-block; - text-align: left; - width: 70%; - font-size: .9rem; - font-weight: 500; - overflow: hidden; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - white-space: nowrap; - vertical-align: top; - color: #fff + display: inline-block; + text-align: left; + width: 70%; + font-size: .9rem; + font-weight: 500; + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + white-space: nowrap; + vertical-align: top; + color: #fff } #future-episodes .episode .epNumber { - width: 30%; - text-align: right + width: 30%; + text-align: right } #future-episodes .episode .name { - font-size: .8rem; - color: #fff; - margin-top: .5rem + font-size: .8rem; + color: #fff; + margin-top: .5rem } #future-episodes .episode .play { - height: 2rem; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - margin-top: 1rem; - font-weight: 500; - border-radius: .5rem; - cursor: pointer; - text-align: center; - text-transform: uppercase; + height: 2.5rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-top: 1rem; + border-radius: .5rem; + cursor: pointer; + text-align: center; + text-transform: uppercase; } #future-episodes .episode .play .icon { - height: 1rem + height: 1rem } #future-episodes .episode .play label { - font-weight: 700; - cursor: pointer; - margin-left: .5rem + font-size: .8rem; + font-weight: 700; + cursor: pointer; + margin-left: .5rem } #future-episodes .episode .play:hover { - background-color: rgba(255, 255, 255, 0.05) + background-color: rgba(255, 255, 255, 0.05) } #board { - position: relative; - height: 100%; - width: 100%; + position: relative; + height: 100%; + width: 100%; } #board .board-container li .heading { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: justify; - -moz-box-pack: justify; - -o-box-pack: justify; - -ms-flex-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; - padding-left: 1rem; - padding-right: .75rem; - margin-bottom: .5rem; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + padding-left: 1rem; + padding-right: .75rem; + margin-bottom: .5rem; } #board .board-container li .heading .heading-title { - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - font-size: 1.5rem; - font-weight: 500; - text-transform: capitalize; - color: #fff; - opacity: .9; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; - filter: alpha(opacity=90) + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + font-size: 1.5rem; + font-weight: 500; + text-transform: capitalize; + color: #fff; + opacity: .9; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; + filter: alpha(opacity=90) } #board .board-container li .heading .heading-button { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-align: center; - -moz-box-align: center; - -o-box-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: center; - -moz-box-pack: center; - -o-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - height: 2.5rem; - padding-left: 1.5rem; - padding-right: .5rem; - border-radius: 2.5rem; - font-size: 1rem; - font-weight: 500; - color: #fff; - white-space: nowrap; - text-transform: capitalize; - cursor: pointer; - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50); + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 2.5rem; + padding-left: 1.5rem; + padding-right: .5rem; + border-radius: 2.5rem; + font-size: 1rem; + font-weight: 500; + color: #fff; + white-space: nowrap; + text-transform: capitalize; + cursor: pointer; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); } #board .board-container li .heading .heading-button:hover { - background-color: rgba(255, 255, 255, 0.05); - opacity: 1; - -ms-filter: none; - filter: none + background-color: rgba(255, 255, 255, 0.05); + opacity: 1; + -ms-filter: none; + filter: none } #board .board-container li .heading .heading-button .icon { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - height: 1.5rem; - width: 1.5rem; - margin-left: .5rem + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + height: 1.5rem; + width: 1.5rem; + margin-left: .5rem } #board .board-container li .board-row { - z-index: 0; - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - padding: 1rem; - overflow-y: hidden; - overflow-x: auto; + z-index: 0; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + padding: 1rem; + overflow-y: hidden; + overflow-x: auto; +} + +#board .board-container li .board-row:after { + content: ""; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + height: .5rem; + width: .5rem } #board .board-container li .board-row li { - -webkit-box-flex: 0; - -moz-box-flex: 0; - -o-box-flex: 0; - box-flex: 0; - -webkit-flex: none; - -ms-flex: none; - flex: none; - position: relative; - height: calc(11rem / (27 / 40)); - width: 11rem; - margin-right: 1.5rem; - border-radius: .75rem; - background-color: rgba(255, 255, 255, 0.05); - outline: none; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + height: calc(10rem / (27 / 40)); + width: 10rem; + margin-right: 1.5rem; + border-radius: .75rem; + background-color: rgba(255, 255, 255, 0.05); + outline: none; + transition: transform .2s; +} + +#board .board-container li .board-row li:hover { + transform: scale(1.1); +} + +#board .board-container li .board-row li .image { + z-index: 0; + position: relative; + height: 100%; + width: 100%; +} + +#board .board-container li .board-row li .image .thumb, +#board .board-container li .board-row li .image .placeholder { + position: absolute; + height: 100%; + width: 100%; + border-radius: .75rem; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + background-color: rgba(255, 255, 255, 0.05); + background-repeat: no-repeat } #board .board-container li .board-row li .info { - z-index: 99; - position: absolute; - height: 3.5rem; - bottom: calc(-3.5rem + -1rem); - left: 0; - right: 0; - cursor: pointer; + z-index: 1; + position: absolute; + height: 2.5rem; + bottom: calc(-2.5rem + -1rem); + left: 0; + right: 0; + cursor: pointer; } #board .board-container li .board-row li .info .title { - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - font-size: 1rem; - font-weight: 400; - color: rgba(255, 255, 255, 0.9); - text-align: center; - margin-bottom: .25rem; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - overflow: hidden + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + font-size: 1rem; + font-weight: 400; + color: rgba(255, 255, 255, 0.9); + text-align: center; + margin-bottom: .25rem; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden } #board .board-container li .board-row li .info .name { - white-space: nowrap; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - font-size: .9rem; - color: #fff; - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50); - overflow: hidden -} - -#board .board-container li .board-row li:hover, -#board .board-container li .board-row li:focus { - -webkit-box-shadow: 0 0 0 .2rem #fff; - box-shadow: 0 0 0 .2rem #fff -} + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + font-size: .9rem; + color: #fff; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); + overflow: hidden +} + +/* #board .board-container li .board-row li:hover { + -webkit-box-shadow: 0 0 0 .12rem #fff; + box-shadow: 0 0 0 .12rem #fff +} */ + +/* #board .board-container li .board-row li:focus { + -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff +} */ #board .board-container li .board-row.show-title { - padding-bottom: calc(3.5rem + 1rem) + padding-bottom: calc(2.5rem + 1.5rem) } #board .board-container li .board-row.square li { - height: 11rem + height: 10rem } #board .board-container li .board-row.landscape li { - height: 11rem; - width: calc(11rem / (9 / 16)) + height: 10rem; + width: calc(10rem / (9 / 16)) } #board .board-container li .board-row.board-notif li { - overflow: hidden; + overflow: hidden; } #board .board-container li .board-row.board-notif li .info { - bottom: 0; - height: 100%; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: end; - -moz-box-pack: end; - -o-box-pack: end; - -ms-flex-pack: end; - -webkit-justify-content: flex-end; - justify-content: flex-end; - padding: 0 1rem; - padding-bottom: 1rem; - background: -webkit-linear-gradient(90deg, #0c0c11 10%, transparent 80%); - background: -moz-linear-gradient(90deg, #0c0c11 10%, transparent 80%); - background: -o-linear-gradient(90deg, #0c0c11 10%, transparent 80%); - background: -ms-linear-gradient(90deg, #0c0c11 10%, transparent 80%); - background: linear-gradient(0deg, #0c0c11 10%, transparent 80%); + bottom: 0; + height: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: end; + -moz-box-pack: end; + -o-box-pack: end; + -ms-flex-pack: end; + -webkit-justify-content: flex-end; + justify-content: flex-end; + padding: 0 1rem; + padding-bottom: 1rem; + background: -webkit-linear-gradient(90deg, #0c0c11 10%, transparent 80%); + background: -moz-linear-gradient(90deg, #0c0c11 10%, transparent 80%); + background: -o-linear-gradient(90deg, #0c0c11 10%, transparent 80%); + background: -ms-linear-gradient(90deg, #0c0c11 10%, transparent 80%); + background: linear-gradient(0deg, #0c0c11 10%, transparent 80%); } #board .board-container li .board-row.board-notif li .info .title { - text-align: left + text-align: left +} + +#board .board-container li .board-row.board-notif .board-explanation { + background: none; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +#board .board-container li .board-row.recent-board li .thumb .play { + position: absolute; + top: 50%; + left: 50%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 3.15rem; + width: 3.15rem; + margin-top: calc(3.15rem / -2); + margin-left: calc(3.15rem / -2); + color: #fff; + background-color: rgba(12, 12, 17, 0.4); + border-radius: 100%; + -webkit-box-shadow: 0 0 0 .15rem currentColor; + box-shadow: 0 0 0 .15rem currentColor; + -webkit-transition: all 0.1s ease-in; + -moz-transition: all 0.1s ease-in; + -o-transition: all 0.1s ease-in; + -ms-transition: all 0.1s ease-in; + transition: all 0.1s ease-in; + cursor: pointer; +} + +#board .board-container li .board-row.recent-board li .thumb .play .icon { + height: 2rem; + width: 2rem; + color: #fff +} + +#board .board-container li .board-row.recent-board li .thumb .play:hover { + -webkit-box-shadow: 0 0 0 .3rem currentColor; + box-shadow: 0 0 0 .3rem currentColor +} + +#board .board-container li .board-row.recent-board li .thumb:hover { + cursor: pointer; + /* -webkit-box-shadow: 0 0 0 .3rem currentColor; + box-shadow: 0 0 0 .3rem currentColor; */ +} + +#board .board-container li .board-row.recent-board li .info .icon { + position: absolute; + top: 0; + right: 0; + height: 1.5rem; + width: 1.5rem; + margin-left: .5rem; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0) +} + +#board .board-container li .board-row.recent-board li:hover .close .icon, +#board .board-container li .board-row.recent-board li:focus .close .icon { + opacity: 1; + -ms-filter: none; + filter: none +} + +#board .board-container li .board-row.recent-board li:hover .thumb .play, +#board .board-container li .board-row.recent-board li:focus .thumb .play { + color: #22b365; + background-color: #22b365 } #board .board-container li .board-row::-webkit-scrollbar { - display: none + display: none } #board .bubble-notif { - position: absolute; - top: 50%; - width: 460px; - margin-top: -48px; - background: #b174d7; - display: inline-block; - padding: 26px 15px; - font-size: 18px; - left: 37px; - line-height: 22px; + position: absolute; + top: 50%; + left: 0; + margin-top: -3.5rem; + background: #8A8A8A; + padding: 1.25rem 1.5rem; + font-size: 1rem; + border-radius: .75rem; } #board .bubble-notif:after { - right: 100%; - top: 50%; - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; - pointer-events: none; - border-color: $darkest-55; - border-right-color: #b174d7; - border-width: 11px; - margin-top: -11px 1 + content: ""; + position: absolute; + top: 50%; + right: 100%; + height: 0; + width: 0; + margin-top: -.75rem; + border: solid transparent; + border-width: .75rem; + border-right-color: #8A8A8A; + pointer-events: none } #board .bubble-icon { - width: 29px; - height: 32px; - float: left; - margin-right: 12px; - margin-top: 5px + width: 29px; + height: 32px; + float: left; + margin-right: 12px; + margin-top: 5px } #board .board-container { - height: 100%; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - -ms-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000; - -moz-perspective: 1000; - -ms-perspective: 1000; - perspective: 1000; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -o-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); - overflow-y: auto + height: 100%; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + -moz-perspective: 1000; + -ms-perspective: 1000; + perspective: 1000; + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -o-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); + overflow-y: auto } #board .board-item { - overflow: visible + overflow: visible } #board .board-notif li, #board li.board-item { - position: relative; - -webkit-background-size: cover; - -moz-background-size: cover; - background-size: cover; + position: relative; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; } #board .board-notif li.dismissed, #board li.board-item.dismissed { - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50) + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) } #board .board-notif li.clickable, #board li.board-item.clickable { - cursor: pointer -} - -#board .board-notif li .image, -#board li.board-item .image { - position: relative; - height: 100%; - width: 100%; -} - -#board .board-notif li .image .thumb, -#board li.board-item .image .thumb, -#board .board-notif li .image .placeholder, -#board li.board-item .image .placeholder { - position: absolute; - height: 100%; - width: 100%; - border-radius: .75rem; - -webkit-background-size: cover; - -moz-background-size: cover; - background-size: cover; - background-color: rgba(255, 255, 255, 0.05); - background-repeat: no-repeat -} - -#board .board-notif li .info, -#board li.board-item .info { - z-index: 99; - position: absolute; - height: 3.5rem; - bottom: calc(-3.5rem + -1rem); - left: 0; - right: 0 + cursor: pointer } #board .notif .close, #board .resume .close { - position: absolute; - top: 7px; - right: 7px; - height: 20px; - width: 0; - line-height: 20px; - font-size: 8px; - padding-left: 6px; - padding-right: 14px; - border-radius: 100%; - background-color: #201f32; - z-index: 100; - cursor: pointer; - opacity: 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0); - -webkit-transition: opacity 0.4s ease-in-out; - -moz-transition: opacity 0.4s ease-in-out; - -o-transition: opacity 0.4s ease-in-out; - -ms-transition: opacity 0.4s ease-in-out; - transition: opacity 0.4s ease-in-out -} - -#board .notif .close:hover, -#board .resume .close:hover, -#board .notif .close:focus, -#board .resume .close:focus { - opacity: 1; - -ms-filter: none; - filter: none + z-index: 2; + position: absolute; + top: .5rem; + right: .5rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 1.5rem; + width: 1.5rem; + border-radius: 100%; + background-color: #1a173e; + cursor: pointer; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -webkit-transition: opacity 0.1s ease-in; + -moz-transition: opacity 0.1s ease-in; + -o-transition: opacity 0.1s ease-in; + -ms-transition: opacity 0.1s ease-in; + transition: opacity 0.1s ease-in; +} + +#board .notif .close .icon, +#board .resume .close .icon { + height: 1.1rem; + width: 1.1rem; + color: #fff } #board .notif:hover .close, -#board .resume:hover .close, -#board .notif:focus .close, -#board .resume:focus .close { - opacity: .8 !important; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)" !important; - filter: alpha(opacity=80) !important +#board .resume:hover .close { + opacity: 1; + -ms-filter: none; + filter: none } #board .notif { - height: 10rem !important; - width: 18rem !important + height: 10rem !important; + width: 18rem !important } #board .purple { - font-size: 22px; - color: #8ca3dc; - line-height: 27px; - padding-left: 6px + font-size: 22px; + color: #8ca3dc; + line-height: 27px; + padding-left: 6px } #board .gray { - font-size: 22px; - color: #7a7985; - line-height: 27px; - padding-left: 6px + font-size: 22px; + color: #7a7985; + line-height: 27px; + padding-left: 6px } #board .board-4-container { - padding-top: 0 + padding-top: 0 } #board .board-row-icon { - height: 1.75rem; - margin-right: 1rem; - -webkit-mask-size: contain; - -webkit-mask-repeat: no-repeat; - -webkit-mask-position: center + height: 1.75rem; + margin-right: 1rem; + -webkit-mask-size: contain; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center } #board .board-row-icon.logo { - width: 1.75rem; - border-radius: 50%; - -webkit-background-size: cover; - -moz-background-size: cover; - background-size: cover + width: 1.75rem; + border-radius: 50%; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover } #board .board-row-icon.poster { - width: 1.75rem; - border-radius: 50%; - -webkit-background-size: cover; - -moz-background-size: cover; - background-size: cover + width: 1.75rem; + border-radius: 50%; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover } #board .board-row-icon.notif-counter { - position: relative; - padding: 0 .75rem; - line-height: 1.75rem; - font-size: 1rem; - border-radius: 1.75rem; - background-color: #7b5bf5 + position: relative; + padding: 0 .75rem; + line-height: 1.75rem; + font-size: 1rem; + border-radius: 1.75rem; + background-color: white; + color: black; } #board .carousel-holder { - width: 100%; - max-width: 100%; - position: relative + width: 100%; + max-width: 100%; + position: relative } #board .carousel-button { - position: absolute; - top: 4rem; - bottom: 0; - width: 5rem; - z-index: 99; - cursor: pointer; - display: block; - opacity: 1; - -ms-filter: none; - filter: none; + position: absolute; + top: 4rem; + bottom: 0; + width: 5rem; + z-index: 99; + cursor: pointer; + display: block; + opacity: 1; + -ms-filter: none; + filter: none; } #board .carousel-button .arrow-middle { - opacity: 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0) + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0) } #board .carousel-left { - left: 0 + left: 0 } #board .carousel-right { - right: 0 + right: 0 } #board .board-notif-holder .board-title-clickable { - cursor: pointer + cursor: pointer } #board .board-container>li { - position: relative; - display: -webkit-box; - display: -moz-box; - display: -webkit-flex; - display: -ms-flexbox; - display: box; - display: flex; - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -o-box-orient: vertical; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - margin-bottom: 2rem + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-bottom: 3rem } #board .board-container>li:hover .carousel-button .arrow-middle { - -webkit-transition: opacity 0.2s ease-in-out; - -moz-transition: opacity 0.2s ease-in-out; - -o-transition: opacity 0.2s ease-in-out; - -ms-transition: opacity 0.2s ease-in-out; - transition: opacity 0.2s ease-in-out; - opacity: 1; - -ms-filter: none; - filter: none + -webkit-transition: opacity 0.2s ease-in-out; + -moz-transition: opacity 0.2s ease-in-out; + -o-transition: opacity 0.2s ease-in-out; + -ms-transition: opacity 0.2s ease-in-out; + transition: opacity 0.2s ease-in-out; + opacity: 1; + -ms-filter: none; + filter: none } #board .hidden-button { - opacity: 0 !important; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)" !important; - filter: alpha(opacity=0) !important; - display: none + opacity: 0 !important; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)" !important; + filter: alpha(opacity=0) !important; + display: none } #board .arrow-middle { - position: absolute; - height: 100%; - width: 100% + position: absolute; + height: 100%; + width: 100% } #board .arrow-center { - position: absolute; - top: calc(50% - 3rem); - left: 50%; - -webkit-transform: translateX(-50%); - -moz-transform: translateX(-50%); - -o-transform: translateX(-50%); - -ms-transform: translateX(-50%); - transform: translateX(-50%) + position: absolute; + top: calc(50% - 3rem); + left: 50%; + -webkit-transform: translateX(-50%); + -moz-transform: translateX(-50%); + -o-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%) } #board .arrow-sides { - font-size: 3.25rem; - margin: auto; - position: relative; - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80); - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - -ms-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out + font-size: 3.25rem; + margin: auto; + position: relative; + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out } #board .carousel-button:hover .arrow-sides { - opacity: 1; - -ms-filter: none; - filter: none; - -webkit-transform: scale(1.1); - -moz-transform: scale(1.1); - -o-transform: scale(1.1); - -ms-transform: scale(1.1); - transform: scale(1.1) + opacity: 1; + -ms-filter: none; + filter: none; + -webkit-transform: scale(1.1); + -moz-transform: scale(1.1); + -o-transform: scale(1.1); + -ms-transform: scale(1.1); + transform: scale(1.1) } #board .carousel-button:active .arrow-sides { - opacity: .8; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; - filter: alpha(opacity=80); - -webkit-transform: scale(1); - -moz-transform: scale(1); - -o-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1) + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80); + -webkit-transform: scale(1); + -moz-transform: scale(1); + -o-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1) } #taste { - position: fixed; - top: 0; - bottom: 0; - right: 0; - left: 0; - -webkit-background-size: cover; - -moz-background-size: cover; - background-size: cover; - width: 100%; - height: 100%; - overflow: auto; + position: fixed; + top: 0; + bottom: 0; + right: 0; + left: 0; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + width: 100%; + height: 100%; + overflow: auto; } #taste .header { - position: absolute; - top: 30px; - left: 30px; + position: absolute; + top: 30px; + left: 30px; } #taste .header .back { - margin: auto; - position: relative; - float: left; - margin-top: 10px; - padding: 2px; + margin: auto; + position: relative; + float: left; + margin-top: 10px; + padding: 2px; } #taste .header .back .icon { - width: 16px; - height: 28px + width: 16px; + height: 28px } #taste .header .back:hover { - background-color: #201f32 + background-color: #201f32 } #taste .header .account { - position: relative; - float: left; + position: relative; + float: left; } #taste .header .account .picture { - border-radius: 50%; - width: 50px; - height: 50px; - float: left; - margin-left: 20px; - margin-right: 20px + border-radius: 50%; + width: 50px; + height: 50px; + float: left; + margin-left: 20px; + margin-right: 20px } #taste .header .account .email { - float: left; - font-size: 16px; - padding-top: 13px + float: left; + font-size: 16px; + padding-top: 13px } #taste .center { - text-align: center; - margin-top: 100px; + text-align: center; + margin-top: 100px; } #taste .center .subtitle { - font-size: 32px; - line-height: 36px; - font-weight: 100; - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50) + font-size: 32px; + line-height: 36px; + font-weight: 100; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) } #taste .center .title { - font-size: 36px; - line-height: 40px; - margin-top: 15px; - font-weight: 600; - text-transform: uppercase + font-size: 36px; + line-height: 40px; + margin-top: 15px; + font-weight: 600; + text-transform: uppercase } #taste .grid { - left: 0; - right: 0; - clear: both; - margin-top: 50px; - width: 1290px; - margin: 45px auto; + left: 0; + right: 0; + clear: both; + margin-top: 50px; + width: 1290px; + margin: 45px auto; } #taste .grid .tile { - float: left; - width: 238px; - height: 125px; - text-align: center; - text-transform: uppercase; - background-repeat: no-repeat; - -webkit-background-size: cover; - -moz-background-size: cover; - background-size: cover; - font-size: 24px; - line-height: 30px; - font-weight: 700; - margin: 10px; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - -ms-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - position: relative; + float: left; + width: 238px; + height: 125px; + text-align: center; + text-transform: uppercase; + background-repeat: no-repeat; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + font-size: 24px; + line-height: 30px; + font-weight: 700; + margin: 10px; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + position: relative; } #taste .grid .tile .bg { - width: 238px; - height: 125px; - position: absolute; - opacity: .4; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; - filter: alpha(opacity=40); - -webkit-background-size: cover; - -moz-background-size: cover; - background-size: cover; - background-position: center; - background-repeat: no-repeat + width: 238px; + height: 125px; + position: absolute; + opacity: .4; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + filter: alpha(opacity=40); + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + background-position: center; + background-repeat: no-repeat } #taste .grid .tile .overlay { - position: absolute; - width: 238px; - height: 125px + position: absolute; + width: 238px; + height: 125px } #taste .grid .tile .text { - position: absolute; - text-align: center; - width: 208px; - height: 105px; - left: 15px; - top: 10px; + position: absolute; + text-align: center; + width: 208px; + height: 105px; + left: 15px; + top: 10px; } #taste .grid .tile .text span { - position: absolute; - left: 0; - width: 208px; - top: 50%; - -webkit-transform: translateY(-50%); - -moz-transform: translateY(-50%); - -o-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%); - letter-spacing: 1px + position: absolute; + left: 0; + width: 208px; + top: 50%; + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + -o-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); + letter-spacing: 1px } #taste .grid .tile.selected { - -webkit-transform: scale(.9); - -moz-transform: scale(.9); - -o-transform: scale(.9); - -ms-transform: scale(.9); - transform: scale(.9); + -webkit-transform: scale(.9); + -moz-transform: scale(.9); + -o-transform: scale(.9); + -ms-transform: scale(.9); + transform: scale(.9); } #taste .grid .tile.selected .bg { - opacity: .3; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; - filter: alpha(opacity=30) + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) } #taste .grid .tile.selected .overlay { - background-color: rgba(138, 90, 171, 0.7) + background-color: rgba(138, 90, 171, 0.7) } #taste .grid .tile.selected .text span { - color: rgba(24, 23, 38, 0.55); - font-weight: 700 + color: rgba(24, 23, 38, 0.55); + font-weight: 700 } #taste .grid .tile:hover { - -webkit-transform: scale(1.11); - -moz-transform: scale(1.11); - -o-transform: scale(1.11); - -ms-transform: scale(1.11); - transform: scale(1.11); - z-index: 999 + -webkit-transform: scale(1.11); + -moz-transform: scale(1.11); + -o-transform: scale(1.11); + -ms-transform: scale(1.11); + transform: scale(1.11); + z-index: 999 } #taste .button { - font-size: 15px; - display: block; - color: #fff; - text-align: center; - text-transform: uppercase; - padding: 15px 0; - margin: 15px auto; - width: 174px; - text-align: center; - font-weight: 700; - letter-spacing: .05em + font-size: 15px; + display: block; + color: #fff; + text-align: center; + text-transform: uppercase; + padding: 15px 0; + margin: 15px auto; + width: 174px; + text-align: center; + font-weight: 700; + letter-spacing: .05em } #taste .error-label { - text-align: center; - color: $tertiary-accent-color + text-align: center; + color: $tertiary-accent-color } #taste .label { - text-align: center; - color: $color-white-50; - font-size: 14px; - font-weight: 100; - opacity: .5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50) + text-align: center; + color: $color-white-50; + font-size: 14px; + font-weight: 100; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) } @media only screen and (max-width:1340px) { - #taste .grid { - width: 1032px - } + #taste .grid { + width: 1032px + } } @media only screen and (max-width:1082px) { - #taste .grid { - width: 774px - } + #taste .grid { + width: 774px + } } @media only screen and (max-width:824px) { - #taste .grid { - width: 516px - } + #taste .grid { + width: 516px + } } @media only screen and (max-width:566px) { - #taste .grid { - width: 258px - } + #taste .grid { + width: 258px + } } #search { - height: 100%; + height: 100%; } #search #board { - height: 100%; - margin-right: 10px; - margin-top: 20px + height: 100%; + margin-right: 10px; + margin-top: 20px } #search .scroll-pane { - height: 100%; - overflow-y: auto + height: 100%; + overflow-y: auto } .settings-container { - display: flex; - height: 100%; + display: flex; + height: 100%; } .settings-container h2, .settings-container h3 { - margin-bottom: 2em + margin-bottom: 2em } .settings-container a { - cursor: pointer -} - -.settings-container .button-s { - font-size: .95rem; -} - -.settings-container .button-s .icon { - display: inline-block; - vertical-align: bottom; - width: 20px; - height: 20px; - background-size: contain; - margin-right: 10px -} - -.settings-container .button-s:hover, -.settings-container .button-s:focus { - transform: none + cursor: pointer } .settings-container .sections { - flex: 0 0 15rem; - position: relative; - padding: 0 1rem; + flex: 0 0 15rem; + position: relative; + padding: 0 1rem; } .settings-container .sections a { - display: flex; - align-items: center; - height: 3.5rem; - margin-bottom: 1em; - padding: 0 2em; - border-radius: 3.5rem; + display: flex; + align-items: center; + height: 3.5rem; + margin-bottom: 1em; + padding: 0 2em; + border-radius: 3.5rem; } .settings-container .sections a .label { - line-height: 3.5rem; - font-size: 1.1rem; - font-weight: 400; - opacity: .4; - pointer-events: none + line-height: 3.5rem; + font-size: 1.1rem; + font-weight: 400; + opacity: .4; + pointer-events: none } .settings-container .sections a:hover .label { - font-weight: 500 + font-weight: 500 } .settings-container .sections a.active .label { - font-weight: 600; - opacity: 1 + font-weight: 600; + opacity: 1 } .settings-container .sections a:hover, .settings-container .sections a.active { - background-color: rgba(255, 255, 255, 0.05) + background-color: rgba(255, 255, 255, 0.05) } -.settings-container .sections a:focus { - box-shadow: 0 0 0 .2rem #fff -} +/* .settings-container .sections a:focus { + box-shadow: 0 0 0 .17rem #fff +} */ .settings-container .settings-panel { - overflow-y: auto; - padding: 0 2rem; - flex: 1 1; + overflow-y: auto; + padding: 0 2rem; + flex: 1 1; } .settings-container .settings-panel label { - font-size: .9rem; - font-weight: 500 + font-size: .9rem; + font-weight: 500 } .settings-container .settings-panel .blue { - color: #8ca3dc + color: #8ca3dc } .settings-container .settings-panel section { - width: 31rem; + width: 31rem; } .settings-container .settings-panel section.last { - height: 100%; - padding-bottom: 0 + height: 100%; + padding-bottom: 0 } .settings-container .settings-panel section p { - margin-bottom: 1em; + margin-bottom: 1em; } .settings-container .settings-panel section p a { - display: inline + display: inline } .settings-container .settings-panel section .category { - margin-bottom: 3rem; - padding-bottom: 3rem; - border-bottom: 1px solid rgba(255, 255, 255, 0.05); + margin-bottom: 3rem; + padding-bottom: 3rem; + border-bottom: 1px solid rgba(255, 255, 255, 0.05); } .settings-container .settings-panel section .category .title { - display: flex; - align-items: center; - font-size: 1rem; - font-weight: 700; - margin-bottom: 1.5rem; + display: flex; + align-items: center; + font-size: 1rem; + font-weight: 700; + margin-bottom: 1.5rem; } .settings-container .settings-panel section .category .title .icon { - height: 1.5rem; - width: 1.5rem; - margin-right: .7rem; - opacity: .7 + height: 1.5rem; + width: 1.5rem; + margin-right: .7rem; + opacity: .7 } .settings-container .settings-panel section .category .setting { - display: flex; - align-items: center; - justify-content: space-between; - padding: .5rem 0; + display: flex; + align-items: center; + justify-content: space-between; + padding: .5rem 0; } .settings-container .settings-panel section .category .setting .shortcut-keys { - padding: 1em 0; - outline: none; - border-radius: .75rem; + flex: none; + display: flex; + justify-content: flex-end; + padding: 1em 0; + outline: none; + border-radius: .75rem; } .settings-container .settings-panel section .category .setting .shortcut-keys kbd { - font-family: 'PlusJakartaSans'; - font-size: .8rem; - font-weight: 700; - padding: .75em 1em; - margin: 0 .5em; - border: 1px solid rgba(255, 255, 255, 0.05); - border-radius: .5em; - box-shadow: 0 2px 0 4px rgba(0, 0, 0, 0.1); - background: radial-gradient(circle, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.05) 100%) + font-family: Arial, Helvetica, sans-serif; + font-size: .8rem; + font-weight: 700; + padding: .75em 1em; + margin: 0 .5em; + border: 1px solid rgba(255, 255, 255, 0.05); + border-radius: .5em; + box-shadow: 0 2px 0 4px rgba(0, 0, 0, 0.1); + background: radial-gradient(circle, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.05) 100%) } -.settings-container .settings-panel section .category .setting .shortcut-keys:focus { - box-shadow: 0 0 0 .2rem #fff -} +/* .settings-container .settings-panel section .category .setting .shortcut-keys:focus { + box-shadow: 0 0 0 .17rem #fff +} */ .settings-container .settings-panel section .category .setting label { - opacity: .9 + opacity: .9 } .settings-container .settings-panel section .category .setting input, .settings-container .settings-panel section .category .setting select, .settings-container .settings-panel section .category .setting .button-s { - margin: 0 + margin: 0 } .settings-container .settings-panel section .category .setting .button-s { - width: 100% + width: 100% } .settings-container .settings-panel section .category .setting .custom-select, .settings-container .settings-panel section .category .setting .custom-color { - flex: 0 0 auto; - max-width: 11rem + flex: 0 0 auto; + max-width: 11rem } .settings-container .settings-panel section .category .setting .stremio-checkbox { - width: 100%; - margin: 0; + width: 100%; + margin: 0; } .settings-container .settings-panel section .category .setting .stremio-checkbox .option-toggle { - display: flex; - flex-direction: row-reverse; - justify-content: space-between + display: flex; + flex-direction: row-reverse; + justify-content: space-between } .settings-container .settings-panel a { - display: block; - margin: .75rem 0; - cursor: pointer; - font-size: .9rem; - font-weight: 500; - border-radius: 1rem; - color: #7b5bf5; + display: block; + margin: .75rem 0; + cursor: pointer; + font-size: .9rem; + font-weight: 500; + border-radius: 1rem; + color: #8A8A8A; } .settings-container .settings-panel a:hover { - color: #fff + color: #fff } -.settings-container .settings-panel a:focus { - box-shadow: 0 0 0 .2rem #fff -} +/* .settings-container .settings-panel a:focus { + box-shadow: 0 0 0 .17rem #fff +} */ .settings-container .settings-panel input[type="color"] { - height: 2.5rem; - border-radius: 2.5rem; - padding: 0; - border: none + height: 2.5rem; + border-radius: 2.5rem; + padding: 0; + border: none } .settings-container .settings-panel .custom-select, .settings-container .settings-panel .custom-color, .settings-container .settings-panel select, .settings-container .settings-panel input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="hidden"]) { - width: 100% + width: 100% } .settings-container .settings-panel .option-toggle { - cursor: pointer; - color: #7a7985; + cursor: pointer; + color: #7a7985; } .settings-container .settings-panel .option-toggle .setting { - flex-direction: row-reverse + flex-direction: row-reverse } .settings-container .settings-panel .option-toggle input[checked="checked"]+label { - color: #fff + color: #fff } .settings-container .settings-panel .icon-ic_check { - color: #19fbb8 + color: #19fbb8 } .settings-container .settings-panel .icon-ic_x { - color: #fb5e19 + color: #fb5e19 } .settings-container .settings-panel .section { - margin-bottom: 1em + margin-bottom: 1em } .settings-container .settings-panel .account { - display: flex; - flex-direction: row; - align-items: center; + display: flex; + flex-direction: row; + align-items: center; } .settings-container .settings-panel .account .profile-picture { - position: relative; - display: inline-block; - height: 4rem; - width: 4rem; - vertical-align: middle; - border: 2px solid #7b5bf5; - border-radius: 100%; - overflow: hidden; + position: relative; + display: inline-block; + height: 4rem; + width: 4rem; + vertical-align: middle; + border: 2px solid #8A8A8A; + border-radius: 100%; + overflow: hidden; } .settings-container .settings-panel .account .profile-picture .icon, .settings-container .settings-panel .account .profile-picture .picture { - z-index: 1; - position: absolute; - height: 100%; + z-index: 1; + position: absolute; + height: 100%; } .settings-container .settings-panel .account .profile-picture .icon.placeholder, .settings-container .settings-panel .account .profile-picture .picture.placeholder { - z-index: 0 + z-index: 0 } .settings-container .settings-panel .account .info { - padding-left: 1rem; + padding-left: 1rem; } .settings-container .settings-panel .account .info .email { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - font-size: 1rem; - font-weight: 500; - color: #fff; - opacity: .5 + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + font-size: 1rem; + font-weight: 500; + color: #fff; + opacity: .5 } .settings-container .settings-panel .account .info a { - display: flex; - margin: 0; - margin-top: .25rem + display: flex; + margin: 0; + margin-top: .25rem } .settings-container .settings-panel .data-caching .option { - display: inline-block; - padding: 0 !important; - width: 47%; + display: inline-block; + padding: 0 !important; + width: 47%; } .settings-container .settings-panel .data-caching .option:first-child { - margin-right: 6% + margin-right: 6% } .settings-container .settings-panel .data-caching .option .custom-select { - width: 100%; + width: 100%; } .settings-container .settings-panel .data-caching .option .custom-select select { - width: 100% + width: 100% } .settings-container .settings-panel .server-status { - display: flex; - align-items: center; - width: auto !important; - height: 2.5rem; + display: flex; + align-items: center; + justify-content: center; + gap: .5rem; + width: auto !important; + height: 2.5rem; + padding: 0 .5rem; } .settings-container .settings-panel .server-status .icon { - height: 1rem; - width: 1rem; - margin-right: .5rem + height: 1rem; + width: 1rem +} + +.settings-container .settings-panel .server-status.online .icon { + color: #22b365 +} + +.settings-container .settings-panel .server-status:not(.online) .icon { + color: #f33f3f } .settings-container .settings-panel .option-image { - padding-bottom: 20px; - text-align: center; + padding-bottom: 20px; + text-align: center; } .settings-container .settings-panel .option-image img { - display: block; - margin: 10px auto + display: block; + margin: 10px auto } .settings-container .settings-panel .trakt { - display: flex; - align-items: center; - justify-content: space-between; - overflow: hidden; + display: flex; + align-items: center; + justify-content: space-between; } .settings-container .settings-panel .trakt .trak-info { - display: flex; - flex-direction: row; - align-items: center; + display: flex; + flex-direction: row; + align-items: center; } .settings-container .settings-panel .trakt .trak-info .label { - margin-left: .5rem + margin-left: .5rem } .settings-container .settings-panel .trakt .trak-info .icon { - height: 3.25rem; - width: 3.25rem; - color: #ed1c24 + height: 3.25rem; + width: 3.25rem; + color: #ed1c24 } .settings-container .settings-panel .trakt .button { - height: 2.5rem + height: 2.5rem } .settings-container .settings-panel .ro-copy-text-container { - display: flex; + display: flex; } .settings-container .settings-panel .ro-copy-text-container input { - width: 14rem !important; - margin: 0; - padding-right: 1rem; - border-radius: 2.5rem 0 0 2.5rem + width: 14rem !important; + margin: 0; + padding-right: 1rem; + border-radius: 2.5rem 0 0 2.5rem } .settings-container .settings-panel .ro-copy-text-container button { - height: 2.5rem; - padding-left: 1rem; - border-radius: 0 2.5rem 2.5rem 0 + height: 2.5rem; + padding-left: 1rem; + border-radius: 0 2.5rem 2.5rem 0 } .settings-container hr { - margin: 1em 0 + margin: 1em 0 } .settings-container .bottom { - width: 100%; - position: absolute; - bottom: 0; - font-size: 12px; - line-height: 18px; - text-align: left; - cursor: pointer; - padding: 1em 0; + width: 100%; + position: absolute; + bottom: 0; + font-size: .75rem; + text-align: left; + cursor: pointer; + padding: 1em 0; } .settings-container .bottom div { - padding: 0 1em; - display: inline-block; - width: 65%; - color: #fff; - opacity: .5 + padding: 0 1em; + display: inline-block; + width: 65%; + color: #fff; + opacity: .5 } @font-face { - font-family: 'icon-full-height'; - src: url('fonts/icon-full-height.ttf?3lc42w') format('truetype'), url('fonts/icon-full-height.woff?3lc42w') format('woff'), url('fonts/icon-full-height.svg?3lc42w#icon-full-height') format('svg'); - font-weight: normal; - font-style: normal; + font-family: 'icon-full-height'; + src: url('https://app.strem.io/shell-v4.4/fonts/icon-full-height.ttf?3lc42w') format('truetype'), url('https://app.strem.io/shell-v4.4/fonts/icon-full-height.woff?3lc42w') format('woff'), url('https://app.strem.io/shell-v4.4/fonts/icon-full-height.svg?3lc42w#icon-full-height') format('svg'); + font-weight: normal; + font-style: normal; } [class^="icon-"], [class*=" icon-"] { - /* use !important to prevent issues with browser extensions that change fonts */ - font-family: 'icon-full-height' !important; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'icon-full-height' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } .icon-ic_sort_down:before { - content: "\e964"; + content: "\e964"; } .icon-ic_sort_up:before { - content: "\e965"; + content: "\e965"; } .icon-ic_speedometer:before { - content: "\e961"; + content: "\e961"; } .icon-ic_ghost:before { - content: "\e962"; + content: "\e962"; } .icon-ic_hourglass_tilted:before { - content: "\e963"; + content: "\e963"; } .icon-ic_adult:before { - content: "\e954"; + content: "\e954"; } .icon-ic_arrow_thin_down:before { - content: "\e955"; + content: "\e955"; } .icon-ic_arrow_thin_up:before { - content: "\e956"; + content: "\e956"; } .icon-ic_book:before { - content: "\e957"; + content: "\e957"; } .icon-ic_circle:before { - content: "\e958"; + content: "\e958"; } .icon-ic_games:before { - content: "\e959"; + content: "\e959"; } .icon-ic_info:before { - content: "\e95a"; + content: "\e95a"; } .icon-ic_music:before { - content: "\e95b"; + content: "\e95b"; } .icon-ic_play_next:before { - content: "\e95c"; + content: "\e95c"; } .icon-ic_play_prev:before { - content: "\e95d"; + content: "\e95d"; } .icon-ic_podcast:before { - content: "\e95e"; + content: "\e95e"; } .icon-ic_radio:before { - content: "\e95f"; + content: "\e95f"; } .icon-ic_videos:before { - content: "\e960"; + content: "\e960"; } .icon-ic_arrow_right:before { - content: "\e92a"; + content: "\e92a"; } .icon-ic_arrow_thin_left:before { - content: "\e945"; + content: "\e945"; } .icon-ic_arrow_thin_right:before { - content: "\e946"; + content: "\e946"; } .icon-ic_arrow_up:before { - content: "\e947"; + content: "\e947"; } .icon-ic_bell:before { - content: "\e948"; + content: "\e948"; } .icon-ic_bell_dot:before { - content: "\e949"; + content: "\e949"; } .icon-ic_broken_link:before { - content: "\e94a"; + content: "\e94a"; } .icon-ic_data_export:before { - content: "\e94b"; + content: "\e94b"; } .icon-ic_exit_fullscreen:before { - content: "\e94c"; + content: "\e94c"; } .icon-ic_folder:before { - content: "\e94d"; + content: "\e94d"; } .icon-ic_fullscreen:before { - content: "\e94e"; + content: "\e94e"; } .icon-ic_laptop:before { - content: "\e94f"; + content: "\e94f"; } .icon-ic_p2p:before { - content: "\e950"; + content: "\e950"; } .icon-ic_reset_2:before { - content: "\e951"; + content: "\e951"; } .icon-ic_search_link:before { - content: "\e952"; + content: "\e952"; } .icon-ic_triangle_down:before { - content: "\e953"; + content: "\e953"; } .icon-ic_tv:before { - content: "\e9e3"; + content: "\e9e3"; } .icon-ic_highspeaker:before { - content: "\e9e4"; + content: "\e9e4"; } .icon-ic_list:before { - content: "\e9e5"; + content: "\e9e5"; } .icon-ic_volume0:before { - content: "\e9e6"; + content: "\e9e6"; } .icon-ic_network:before { - content: "\e9e7"; + content: "\e9e7"; } .icon-ic_person:before { - content: "\e9e8"; + content: "\e9e8"; } .icon-ic_report:before { - content: "\e9e9"; + content: "\e9e9"; } .icon-ic_reset_1:before { - content: "\e9ea"; + content: "\e9ea"; } .icon-ic_stremio_tray:before { - content: "\e9eb"; + content: "\e9eb"; } .icon-ic_trakt:before { - content: "\e9ec"; + content: "\e9ec"; } .icon-ic_twitter:before { - content: "\e9ed"; + content: "\e9ed"; } .icon-ic_volume1:before { - content: "\e9ee"; + content: "\e9ee"; } .icon-ic_volume2:before { - content: "\e9ef"; + content: "\e9ef"; } .icon-ic_volume3:before { - content: "\e9f0"; + content: "\e9f0"; } .icon-ic_arrow_left:before { - content: "\e9f1"; + content: "\e9f1"; } .icon-ic_user:before { - content: "\e9f3"; + content: "\e9f3"; } .icon-ic_cloud:before { - content: "\e9f4"; + content: "\e9f4"; } .icon-ic_arrow_down:before { - content: "\e9f6"; + content: "\e9f6"; } .icon-ic_chromecast:before { - content: "\e9f7"; + content: "\e9f7"; } .icon-ic_cinema:before { - content: "\e9f8"; + content: "\e9f8"; } .icon-ic_ellipsis:before { - content: "\e9f9"; + content: "\e9f9"; } .icon-ic_glasses:before { - content: "\e9fa"; + content: "\e9fa"; } .icon-ic_grid:before { - content: "\e9fc"; + content: "\e9fc"; } .icon-ic_imdbnoframe:before { - content: "\e93d"; + content: "\e93d"; } .icon-ic_time:before { - content: "\e93e"; + content: "\e93e"; } .icon-ic_addlib:before { - content: "\e93f"; + content: "\e93f"; } .icon-ic_minus:before { - content: "\e940"; + content: "\e940"; } .icon-ic_plus:before { - content: "\e941"; + content: "\e941"; } .icon-ic_removelib:before { - content: "\e942"; + content: "\e942"; } .icon-ic_upload:before { - content: "\e943"; + content: "\e943"; } .icon-ic_back_android:before { - content: "\e930"; + content: "\e930"; } .icon-ic_back_ios:before { - content: "\e931"; + content: "\e931"; } .icon-ic_box_empty:before { - content: "\e932"; + content: "\e932"; } .icon-ic_cast_connected:before { - content: "\e933"; + content: "\e933"; } .icon-ic_cast_load1 .path1:before { - content: "\e934"; - color: rgb(0, 0, 0); + content: "\e934"; + color: rgb(0, 0, 0); } .icon-ic_cast_load1 .path2:before { - content: "\e935"; - margin-left: -1.21875em; - color: rgb(0, 0, 0); - opacity: 0.3; + content: "\e935"; + margin-left: -1.21875em; + color: rgb(0, 0, 0); + opacity: 0.3; } .icon-ic_cast_load1 .path3:before { - content: "\e936"; - margin-left: -1.21875em; - color: rgb(0, 0, 0); - opacity: 0.3; + content: "\e936"; + margin-left: -1.21875em; + color: rgb(0, 0, 0); + opacity: 0.3; } .icon-ic_cast_load1 .path4:before { - content: "\e937"; - margin-left: -1.21875em; - color: rgb(0, 0, 0); + content: "\e937"; + margin-left: -1.21875em; + color: rgb(0, 0, 0); } .icon-ic_cast_load2 .path1:before { - content: "\e938"; - color: rgb(0, 0, 0); + content: "\e938"; + color: rgb(0, 0, 0); } .icon-ic_cast_load2 .path2:before { - content: "\e939"; - margin-left: -1.21875em; - color: rgb(0, 0, 0); - opacity: 0.3; + content: "\e939"; + margin-left: -1.21875em; + color: rgb(0, 0, 0); + opacity: 0.3; } .icon-ic_cast_load2 .path3:before { - content: "\e93a"; - margin-left: -1.21875em; - color: rgb(0, 0, 0); + content: "\e93a"; + margin-left: -1.21875em; + color: rgb(0, 0, 0); } .icon-ic_cast_load2 .path4:before { - content: "\e93b"; - margin-left: -1.21875em; - color: rgb(0, 0, 0); + content: "\e93b"; + margin-left: -1.21875em; + color: rgb(0, 0, 0); } .icon-ic_globe:before { - content: "\e93c"; + content: "\e93c"; } .icon-ic_auto:before { - content: "\e91c"; + content: "\e91c"; } .icon-ic_forw15:before { - content: "\e91d"; + content: "\e91d"; } .icon-ic_forw30:before { - content: "\e91e"; + content: "\e91e"; } .icon-ic_forward:before { - content: "\e91f"; + content: "\e91f"; } .icon-ic_lock:before { - content: "\e920"; + content: "\e920"; } .icon-ic_rew15:before { - content: "\e921"; + content: "\e921"; } .icon-ic_rew30:before { - content: "\e922"; + content: "\e922"; } .icon-ic_rewind:before { - content: "\e923"; + content: "\e923"; } .icon-ic_share:before { - content: "\e924"; + content: "\e924"; } .icon-ic_sidebar:before { - content: "\e925"; + content: "\e925"; } .icon-ic_sub:before { - content: "\e926"; + content: "\e926"; } .icon-ic_vlc:before { - content: "\e927"; + content: "\e927"; } .icon-ic_warning:before { - content: "\e928"; + content: "\e928"; } .icon-ic_x:before { - content: "\e929"; + content: "\e929"; } .icon-ic_youtube_small:before { - content: "\e944"; + content: "\e944"; } .icon-ic_blind:before { - content: "\e92b"; + content: "\e92b"; } .icon-ic_check:before { - content: "\e92c"; + content: "\e92c"; } .icon-ic_magnet:before { - content: "\e92d"; + content: "\e92d"; } .icon-ic_pause:before { - content: "\e92e"; + content: "\e92e"; } .icon-ic_stremio:before { - content: "\e92f"; + content: "\e92f"; } .icon-ic_actor:before { - content: "\e918"; + content: "\e918"; } .icon-ic_back:before { - content: "\e919"; + content: "\e919"; } .icon-ic_imdb:before { - content: "\e91a"; + content: "\e91a"; } .icon-ic_link:before { - content: "\e91b"; + content: "\e91b"; } .icon-ic_filter:before { - content: "\e917"; + content: "\e917"; } .icon-ic_addons:before { - content: "\e900"; + content: "\e900"; } .icon-ic_board:before { - content: "\e901"; + content: "\e901"; } .icon-ic_calendar:before { - content: "\e902"; + content: "\e902"; } .icon-ic_cast:before { - content: "\e903"; + content: "\e903"; } .icon-ic_channels:before { - content: "\e904"; + content: "\e904"; } .icon-ic_continue:before { - content: "\e905"; + content: "\e905"; } .icon-ic_discover:before { - content: "\e906"; + content: "\e906"; } .icon-ic_downloads:before { - content: "\e907"; + content: "\e907"; } .icon-ic_drawer:before { - content: "\e908"; + content: "\e908"; } .icon-ic_eye:before { - content: "\e909"; + content: "\e909"; } .icon-ic_facebook:before { - content: "\e90a"; + content: "\e90a"; } .icon-ic_help:before { - content: "\e90b"; + content: "\e90b"; } .icon-ic_library:before { - content: "\e90c"; + content: "\e90c"; } .icon-ic_more:before { - content: "\e90d"; + content: "\e90d"; } .icon-ic_movies:before { - content: "\e90e"; + content: "\e90e"; } .icon-ic_play:before { - content: "\e90f"; + content: "\e90f"; } .icon-ic_remote:before { - content: "\e910"; + content: "\e910"; } .icon-ic_reset:before { - content: "\e911"; + content: "\e911"; } .icon-ic_search:before { - content: "\e912"; + content: "\e912"; } .icon-ic_series:before { - content: "\e913"; + content: "\e913"; } .icon-ic_settings:before { - content: "\e914"; + content: "\e914"; } .icon-ic_star:before { - content: "\e915"; + content: "\e915"; } .icon-ic_live_tv:before { - content: "\e916"; + content: "\e916"; } \ No newline at end of file diff --git a/examples/apple.theme.css b/examples/apple.theme.css new file mode 100644 index 0000000..a855c9d --- /dev/null +++ b/examples/apple.theme.css @@ -0,0 +1,11348 @@ +/** + * @name Apple Theme + * @description A theme that uses Apple's design. + * @website https://github.com/REVEMGE977/BetterEpisodeList + * @updateUrl https://raw.githubusercontent.com/REVENGE977/BetterEpisodeList/main/BetterEpisodeList.plugin.js + * @version 1.0.0 + * @author REVENGE977 + */ + +@font-face { + font-family: 'PlusJakartaSans'; + src: url("https://app.strem.io/shell-v4.4/fonts/PlusJakartaSans.ttf") format('truetype') +} + +h1 { + font: 24px/22px, Arial, Helvetica, sans-serif; + font-weight: 100; + text-transform: uppercase; + line-height: 1.2 +} + +:root { + --topbar-height: 5rem; + --navbar-width: 5.5rem; + --text-size: 16px +} + +* { + margin: 0; + padding: 0; + border: none; + list-style: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box +} + +body, +html { + height: 100%; + cursor: default; + overflow: hidden; + -webkit-font-smoothing: subpixel-antialiased; + background-color: transparent !important +} + +html { + background-color: #0c0c11 !important; + font-size: var(--text-size); + font-family: PlusJakartaSans, Arial, Helvetica, sans-serif +} + +body { + color: #fff !important +} + +span { + cursor: inherit +} + +h2 { + font-size: 1.5rem; + font-family: "PlusJakartaSans", Verdana, Geneva, sans-serif +} + +h2.purple { + color: #c1b2cb +} + +h2.white { + color: rgba(255, 255, 255, 0.55) +} + +.icon { + background-repeat: no-repeat; + background-position: center +} + +a { + text-decoration: none; + color: inherit; + -webkit-user-drag: none; + outline: none +} + +img { + -webkit-user-drag: none +} + +input, +select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 2.5rem; + padding: 0 1.5rem; + font-family: PlusJakartaSans, Arial, Helvetica, sans-serif; + font-size: 1rem; + font-weight: 500; + color: #fff; + background-color: rgba(255, 255, 255, 0.05); + border-radius: 2.5rem; + outline: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text +} + +select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: start; + -moz-box-pack: start; + -o-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + min-width: 11rem; + margin: 0; + padding-right: 2.5rem; + color: #fff; + text-transform: capitalize; + border: none; + outline: none; +} + +select option { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 2.5rem; + font-family: PlusJakartaSans, Arial, Helvetica, sans-serif; + font-size: 1rem; + font-weight: 500; + color: #fff; + background-color: #2F2F2F +} + +select:focus { + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff */ +} + +.custom-select { + position: relative; + height: 2.5rem; + border-radius: 2.5rem; + outline: none; +} + +.custom-select .icon { + position: absolute; + top: calc(50% - 0.55rem) !important; + right: 1rem !important; + width: 1rem !important; + color: #fff; + pointer-events: none !important; + opacity: .4; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + filter: alpha(opacity=40) +} + +.custom-select select { + width: 100% +} + +.custom-select:focus { + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff */ +} + +.segments { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; +} + +.segments li { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 2.5rem; + margin-right: .5rem; + padding: 0 2rem; + border-radius: 2.5rem; + font-family: PlusJakartaSans, Arial, Helvetica, sans-serif; + font-size: 1rem; + font-weight: 500; + text-transform: capitalize; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + white-space: nowrap; + color: #fff; + cursor: pointer; + outline: none; +} + +.segments li:hover { + background-color: rgba(255, 255, 255, 0.05) +} + +.segments li:focus { + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff */ +} + +.segments li.selected { + background-color: #1245a6 +} + +.number-picker { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + margin: 5px 0; + border: 1px solid rgba(177, 116, 215, 0.5); +} + +.number-picker input { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + height: 40px; + min-width: 100px; + margin: 0; + border: none; + text-align: center; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -moz-appearance: textfield; +} + +.number-picker input::-webkit-outer-spin-button, +.number-picker input::-webkit-inner-spin-button { + -webkit-appearance: none +} + +.number-picker .button { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 40px; + width: 40px; + background-color: rgba(255, 255, 255, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.number-picker .button:not(.disabled):hover { + background-color: rgba(255, 255, 255, 0.3) +} + +.number-picker .button.disabled { + cursor: default; +} + +.number-picker .button.disabled .icon { + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) +} + +input[type=checkbox] { + float: left; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + position: relative; + display: inline-block; + background: none; + font-size: 17px; + width: 2.5rem; + height: 1.5rem; + margin: .2em .7em; + background-color: rgba(255, 255, 255, 0.05); + padding: 0; + border: none; + border-radius: 1em +} + +input[type=checkbox]:focus { + -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff +} + +input[type=checkbox]:after { + content: ''; + display: block; + border-radius: 50%; + position: absolute; + background-color: #7a7985; + top: .25rem; + -webkit-transition: left 0.2s; + -moz-transition: left 0.2s; + -o-transition: left 0.2s; + -ms-transition: left 0.2s; + transition: left 0.2s +} + +input[type=checkbox]:after { + background-color: #fff; + width: 1rem; + height: 1rem +} + +input[type=checkbox]:checked:after { + left: 52% +} + +input[type=checkbox]:not(:checked):after { + left: 10% +} + +input[type=checkbox]:checked { + background-color: #1564DC +} + +button { + outline: 0 +} + +button[disabled], +.button-b[disabled] { + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); + cursor: default +} + +.cond { + font-family: Arial, Helvetica, sans-serif +} + +.vert-sep, +.vert-sep-bottom { + border-left: 1px solid #fff; + float: left; + -webkit-background-size: 100% 100%; + -moz-background-size: 100% 100%; + background-size: 100% 100% +} + +.vert-sep { + height: 40px +} + +.vert-sep-bottom { + height: 30px +} + +.uppercase { + text-transform: uppercase; + display: block +} + +.button-b, +.button { + cursor: pointer; + -webkit-transition: -webkit-transform 0.15s ease-in; + -moz-transition: -moz-transform 0.15s ease-in; + -o-transition: -o-transform 0.15s ease-in; + -ms-transition: -ms-transform 0.15s ease-in; + transition: transform 0.15s ease-in +} + +.button-b, +.button-s { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + font-family: PlusJakartaSans, Arial, Helvetica, sans-serif; + font-size: 1rem; + font-weight: 500; + height: 3.5rem; + padding: 0 1.5rem; + color: #fff; + background-color: #1564DC; + background-repeat: no-repeat; + border-radius: 3.5rem; + cursor: pointer; + outline: none; + overflow: hidden; +} + +.button-b.disabled, +.button-s.disabled { + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) +} + +.button-b:hover:not([disabled]), +.button-s:hover:not([disabled]) { + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff; */ + background-color: #0d52b9 +} + +.button-b:focus:not([disabled]), +.button-s:focus:not([disabled]) { + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff */ +} + +.bodyTop { + top: 0 !important +} + +.gradient-effect { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0 +} + +::-webkit-scrollbar { + width: 5px +} + +::-webkit-scrollbar:horizontal { + height: 5px +} + +::-webkit-scrollbar-track { + width: 5px; + background: transparent +} + +::-webkit-scrollbar-track:horizontal { + height: 5px; + background: transparent +} + +::-webkit-scrollbar-thumb { + width: 5px; + border-radius: .5rem; + background-color: rgba(255, 255, 255, 0.25) +} + +::-webkit-scrollbar-thumb:horizontal { + height: 5px; + border-radius: .5rem; + background-color: rgba(255, 255, 255, 0.25) +} + +body { + scrollbar-width: thin; + scrollbar-color: rgba(255, 255, 255, 0.25) transparent +} + +::-webkit-input-placeholder { + font-size: 1rem; + color: #fff; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) +} + +.clearfix:after { + visibility: hidden; + display: block; + font-size: 0; + content: " "; + clear: both; + height: 0 +} + +.ng-hide { + display: none !important; +} + +.ng-hide.ng-hide-animate { + display: none !important +} + +@media only screen and (min-width:4000px) and (-webkit-min-device-pixel-ratio:1) { + html { + font-size: calc(var(--text-size) + 7px) + } +} + +@media only screen and (min-width:3500px) and (-webkit-min-device-pixel-ratio:1) { + html { + font-size: calc(var(--text-size) + 6.125px) + } +} + +@media only screen and (min-width:3000px) and (-webkit-min-device-pixel-ratio:1) { + html { + font-size: calc(var(--text-size) + 5.25px) + } +} + +@media only screen and (min-width:2500px) and (-webkit-min-device-pixel-ratio:1) { + html { + font-size: calc(var(--text-size) + 4.375px) + } +} + +@media only screen and (max-width:1500px) and (-webkit-min-device-pixel-ratio:1) { + html { + font-size: calc(var(--text-size) - 2.625px) + } +} + +@media only screen and (max-width:1200px) and (-webkit-min-device-pixel-ratio:1) { + html { + font-size: calc(var(--text-size) - 3px) + } +} + +@media (-webkit-min-device-pixel-ratio:2), +(min-resolution:192dpi) { + html { + font-size: calc(var(--text-size) - 2.5px) + } +} + +@media only screen and (max-width:1800px) and (-webkit-min-device-pixel-ratio:2), +only screen and (max-width:1800px) and (min-resolution:192dpi) { + html { + font-size: calc(var(--text-size) - 1px) + } +} + +@media only screen and (max-width:1500px) and (-webkit-min-device-pixel-ratio:2), +only screen and (max-width:1500px) and (min-resolution:192dpi) { + html { + font-size: calc(var(--text-size) - 2.5px) + } +} + +@media only screen and (max-width:1200px) and (-webkit-min-device-pixel-ratio:2), +only screen and (max-width:1200px) and (min-resolution:192dpi) { + html { + font-size: calc(var(--text-size) - 4px) + } +} + +@media only screen and (max-width:900px) and (-webkit-min-device-pixel-ratio:2), +only screen and (max-width:900px) and (min-resolution:192dpi) { + html { + font-size: calc(var(--text-size) - 5.5px) + } +} + +@media only screen and (max-width:600px) and (-webkit-min-device-pixel-ratio:2), +only screen and (max-width:600px) and (min-resolution:192dpi) { + html { + font-size: calc(var(--text-size) - 7px) + } +} + +#toast-container { + position: fixed; + z-index: 9999999; + pointer-events: auto; +} + +#toast-container * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box +} + +#toast-container>div { + margin: 0 0 6px; + width: 30rem; + border-radius: 3px 3px 3px 3px; + background-position: 15px center; + background-repeat: no-repeat; + color: #201f32; + opacity: .95; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=95)"; + filter: alpha(opacity=95); + -ms-filter: unqoute("progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"); + filter: unqoute("alpha(opacity=80)"); + position: relative +} + +#toast-container> :hover { + opacity: 1; + -ms-filter: none; + filter: none; + -ms-filter: unqoute("progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"); + filter: unqoute("alpha(opacity=100)"); + cursor: pointer +} + +#toast-container.toast-center, +#toast-container.toast-top-center, +#toast-container.toast-bottom-center { + width: 100%; + pointer-events: none +} + +#toast-container.toast-center>div, +#toast-container.toast-top-center>div, +#toast-container.toast-bottom-center>div { + margin: auto; + pointer-events: auto +} + +#toast-container.toast-center>button, +#toast-container.toast-top-center>button, +#toast-container.toast-bottom-center>button { + pointer-events: auto +} + +#toast-container.toast-top-full-width>div, +#toast-container.toast-bottom-full-width>div { + width: 96%; + margin: auto +} + +#toast-container .toast-title { + font-size: 1rem; + font-weight: 600; + color: #fff +} + +#toast-container .toast-message { + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + -ms-word-wrap: break-word; + word-wrap: break-word; + font-size: 1rem; + color: #fff; + margin-top: .5rem; +} + +#toast-container .toast-message a:hover { + color: #a8a8a8; + text-decoration: none +} + +#toast-container .toast-message a, +#toast-container .toast-message label { + color: #201f32 +} + +#toast-container .toast-close-button { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + position: absolute; + top: .75rem; + right: .75rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 2rem; + width: 2rem; + font-size: 20px; + font-weight: bold; + color: #fff; + background-color: transparent; + border-radius: 1rem; + border: 0; + cursor: pointer; +} + +#toast-container .toast-close-button span { + font-size: .75rem +} + +#toast-container .toast-close-button:hover, +#toast-container .toast-close-button:focus { + background-color: rgba(26, 23, 62, 0.1) +} + +#toast-container.toast-top-full-width { + top: var(--topbar-height); + right: 0; + width: 100% +} + +#toast-container.toast-bottom-full-width { + bottom: 0; + right: 0; + width: 100% +} + +#toast-container.toast-top-left { + top: var(--topbar-height); + left: 22px +} + +#toast-container.toast-top-center { + top: var(--topbar-height) +} + +#toast-container.toast-top-right { + top: var(--topbar-height); + right: 22px +} + +#toast-container.toast-bottom-right { + right: 22px; + bottom: 12px +} + +#toast-container.toast-bottom-center { + bottom: 12px +} + +#toast-container.toast-bottom-left { + bottom: 12px; + left: 22px +} + +#toast-container.toast-center { + top: 45% +} + +#toast-container .toast { + border-radius: 0; + background-color: #0c0c11; + padding: 1.5rem 3rem 1.5rem 4rem; + border-radius: .75rem; + -webkit-box-shadow: 0 0 2rem 0 rgba(0, 0, 0, 0.4); + box-shadow: 0 0 2rem 0 rgba(0, 0, 0, 0.4); +} + +#toast-container .toast:after { + content: " "; + position: absolute; + left: 0; + width: 4rem; + height: 100%; + top: 0; + background-position: center; + background-repeat: no-repeat; + -webkit-background-size: 35%; + -moz-background-size: 35%; + background-size: 35% +} + +#toast-container .toast progress-bar { + position: absolute; + left: 0; + bottom: 0; + height: 4px; + background-color: #8a5aab +} + +#toast-container .toast.toast-info { + background-color: #8A8A8A !important; +} + +#toast-container .toast.toast-info:after { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAYAAACO98lFAAAACXBIWXMAAAsSAAALEgHS3X78AAABXElEQVR42u3azW3CQBBA4UeUe5IKcAdJB3E6CBXE6YASKIESSAd0EEqADkwHdgWbg5eIAz8+7aLljeSD5ZG8fBp5ltVMQgjcezxgiCBCZoQG2AIhXi2wAJ5zLGaS4cO4Ar7OPNsBNdCVXAnzCwAAr8Cy9EpogemIvJeU1ZC6EqYj897sDrZIEUQ4iqJb5M+InH3cSBXbIqv4A58u5HwAm5IroY07wv2JZz0wSw2Qa9t8iM+j/UALrFN/C24Bwe4ggggi3GQ8ZnpvxXC6VMf7bTxHaLOsJoSQ+mpCCF04HU2G9SRvkTXweyXnm+EIrth9wgZ4v5LTk/jANTXC2Jcl/f9gdxBBBBFEEEEEEUQQQQQRRBBBBBFEEEEEEUQQQQQRRBBBBBFEEEGEohB2I3J6Eg94p0ZYjMhZknq8N8Og1Dycj9U9DG4domYY4avifccwrLXOsRgHvO0OIvzHH1G/2+U39m5qAAAAAElFTkSuQmCC") !important +} + +#toast-container .toast.toast-wait:after { + background-image: url("data:image/gif;base64,R0lGODlhIAAgAIQAAAQCBISGhMzKzERCROTm5CQiJKyurHx+fPz+/ExOTOzu7Dw+PIyOjCwqLFRWVAwKDIyKjMzOzOzq7CQmJLy6vFRSVPTy9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCQAXACwAAAAAIAAgAAAF3eAljmRpnmh6VRSVqLDpIDTixOdUlFSNUDhSQUAT7ES9GnD0SFQAKWItMqr4bqKHVPDI+WiTkaOFFVlrFe83rDrT0qeIjwrT0iLdU0GOiBxhAA4VeSk6QYeIOAsQEAuJKgw+EI8nA18IA48JBAQvFxCXDI8SNAQikV+iiaQIpheWX5mJmxKeF6g0qpQmA4yOu8C7EwYWCgZswRcTFj4KyMAGlwYxDwcHhCXMXxYxBzQHKNo+3DDeCOAn0V/TddbYJA0K48gAEAFQicMWFsfwNA3JSgAIAAFfwIMIL4QAACH5BAkJABoALAAAAAAgACAAhAQCBIyKjERCRMzOzCQiJPTy9DQyNGRmZMTCxOTm5CwqLHx+fBQWFJyenNTW1Pz6/Dw6PGxubAwKDIyOjNTS1CQmJCwuLPz+/Dw+PHRydAAAAAAAAAAAAAAAAAAAAAAAAAXboCaOZGmeaKoxWcSosMkk15W8cZ7VdZaXkcEgQtrxfD9RhHchima1GwlCGUBSFCaFxMrgRtnLFhWujWHhs2nJc8KoVlWGQnEn7/i8XgOwWAB7JwoONQ4KgSQAZRcOgHgSCwsSIhZMNRZ5CzULIgaWF5h4mhecfIQ8jXmQkiODhYeIiRYGjrG2PxgBARi3IhNMAbcCnwI5BAQpAZ8TIwK6vCQVDwUVKL+WzAANTA210g/VJ8OWxQefByQE4dZMzBoInwh4zrtgn2p725YNthUFTNRuGYB3AYGBHCEAACH5BAkJAB0ALAAAAAAgACAAhAQCBISChFRWVMzKzCQiJOTm5GxqbCwuLJSWlPz6/NTW1AwODJSSlGRmZCwqLOzu7HR2dDQ2NAQGBISGhFxaXNTS1CQmJOzq7GxubDQyNKSmpPz+/Nza3AAAAAAAAAAAAAXfYCeOZGmeaKqurHBdAiuP17Zdc0lMAVHWt9yI8LA9fCPB4xEjARoNSWpis01kBpshFahurqzsZosiGpErScMAUO0maKF8Tq/bTQCIQgFp30cQXhB1BHEcXhx0FgkJFiOHVYlzi42AgoRxeRx8fn+en3UABwedKgsBAwMBCygOCjYKDisLFV4VrCUAtVUKpSZdXl8mB8EbByQWcQPFAyYZxccdB7sV0cvBzbmvvG0LBV4FrFTBYCWuNhyyHRTFFB20trh4BxmdYl4YIqepq0IRxRE+IfDCAFQHARo0NGERAgAh+QQJCQAgACwAAAAAIAAgAIUEAgSEgoRMTkzMyswcHhzk5uR0cnQUFhRcXlwsKiz09vQMCgyMiozU1tQkJiR8fnxkZmT8/vwEBgSEhoRcWlzU0tQkIiT08vR0dnQcGhxkYmQ0MjT8+vwMDgyMjozc2twAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG+UCQcEgsGo/IpHLJXDweC6Z0+IhEHlOjRGIMWLHZoUZx0RQlAajxkFFKFFYFl5m5KNpIySU+X2bIBEoQZBBZGQdMElFhjI2Oj5AgHQEDAw8dQxYeDBaNHRVWVhWYCXsRFwmMXqFWEyAerB6MA6xWA6+xs7URt6VWqIwTu64gDh4eDp6goaORQ5OVAZjO1EgEGhB4RwAYDQ0YAEwIcBEKFEgYrBhLBORxgUYfrB9LELuF8fNDAAaVBuEg7NXCVyRdqHVCGLBiIIQAB1Yc4BXh9uEbwAXuyi2iQI7DuSwHdiFqCEGDtizLRFUDsaGAlQIbVoJYIEDAIiZBAAAh+QQJCQAbACwAAAAAIAAgAIQEAgSMioxcWlz08vQcHhysqqwMDgx8enwsKiykoqRkZmT8+vzEwsQMCgyUlpQkJiS0srQEBgSMjoxcXlz09vQkIiSsrqwUEhQ0MjRsamz8/vwAAAAAAAAAAAAAAAAAAAAF7+AmjmRpnmiqruz2PG0sIssCj4CQJAIgj4/abRNJaI6agu9kCAQaphdJgEQKUIFjgGWsahJYLdf7RTWfLKr3+jsBClVlG5Xb9eb4fImgUBBKDVB4ExRHFGwbGRQLGXMEhUgUfw2QC4IyCmSNDQtHlm2ZXgoiGQsUjW0EnUgLfyKBeYSeiHojfH61uS0GBisVEgEVLRcWRxAXKAgDRwMILMVIECgSVRIrBmS9JtRI1iMVBweuGxerSNolyszOIhjLGs0jEFXSKA8SEkMbcEgWIxfzNBxrw6AKgxIGkM05UOWALhERHJhysOThBgAVWYQAACH5BAkJABkALAAAAAAgACAAhAQGBIyKjERCRMzOzCwuLGRiZPz6/OTm5AwODLSytFRSVNTW1Dw6PHx6fAwKDJSSlERGRNTS1DQyNGxqbPz+/BQSFLy6vFRWVNza3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAXqYCaO5FgFwxBUZeu61ULNFMa+eBvQdJD/owFvFhkBBAwHsBQZUooZyWF2YOQkBNJu6ANMaQeli0AxSEwymi0DcUJeEgPlbEJFAghRe/h+Eeg/Dl9UYks5DF9VhksOAgKFi5GSSwh5kzgVCXIJNxknD5aSCTwJIw8zD5MITpanFKmSCHI8NxUPoJejNKWXLZkznL0vCJ3CxsckDpA/ChYJFzkTBgYTSxc80C4OswbLLhY8Fi/bMwYAJVgl4DTiL9LUJADrFuci1zTZLwD1IwU8BSQuWLCQb1EDHg2QiSDALYvCDAISJLDy8FIIACH5BAkJAB4ALAAAAAAgACAAhAQGBISGhFRSVNTW1CQiJKyqrGRmZOzu7CwuLIyOjGxubPz6/BQSFGRiZOTi5CwqLLy6vDQ2NIyKjFRWVCQmJKyurGxqbPT29DQyNJSSlHRydPz+/BQWFOzq7AAAAAAAAAXhoCeOJElYClGubOs117YtjWuvxCLLi3qbhc6h4FPsdorfiNI5dige43GT9AAkHUcCwCpMNxVP7tgTJY4J1uF7EBl0M8Ooueuo2SOCIkVa11kVX2E2EmgsFH4yBz4uAAkdHVstBAUHQ4xKmZqbnJ2bAhAQAiURGJ4eE0cTIxgzpp0QRxCsrp6xO7MjpaepO6unKxOhv8DFxsfIJBwaChw2DAkZDEocDjIOzi0ZMhlKUjIaLtsb3T8aR+EtDBkJ0yQUBQVQI9XX2ZsDMgMlyxr3mzE2XEgmotCGAARFIHiQ0FMIACH5BAkJABgALAAAAAAgACAAhAQCBISGhDw+POTi5CwuLLS2tPTy9BQSFJyenGRiZDQ2NIyOjLy+vPz6/BweHIyKjFRSVOzq7DQyNLy6vBQWFHRydDw6PPz+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXXICaOZHkcZaquIjVd10SxtFrAcFGrVhBYIwoON9uNAsOA6DCEFTEKBEKxEjQvAtELNxkpGrAGNfW4Plpb2QgxRKjKzfPoVGLj3CnLNUv7hscpSDhKOxJSgDwPP0ZGAACMjAQFDQYFBJA0BAZDBpeYGBQVFUU3TV2YFAMwAzNgTQ2PkBVDFRiuQ7CYszi1pUOnkKmrM5qcnqiiTwQTDQ2Wn9DR0tPUfRKQEBEREDQSFw3XRhEwEd3f4TvjF+XWKgJ8JNnb0QkwCdUlCzAL+CQODAwc9BtIMAQAOw==") !important +} + +#toast-container .toast.toast-error { + background-color: #fb5e19 !important; +} + +#toast-container .toast.toast-error:after { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAYAAACO98lFAAAACXBIWXMAAAsSAAALEgHS3X78AAACXklEQVR42u3b0XGDMAwG4D9c38MGzQZhBEboBqUbZIRuUrpBugHdgGyQEegE6kOVax8CQbZly6l1x+WSBqx852KQ8YaI8N+jQomCUBAKQkEQI3QAjgAGAD2/txod50kAJs67vbkXEc1tNRGNdD1G/juMbEu5EhF1S/svHXjpoJYg6hW5EhG1c8eoFrrV/kYn2nPXqxN2/5pz2K/47kF6TmhXJpESQgKw+JvmEHaCZFJASAEAYCtFGIVJxYRwAQCATynC0SG5GBCuAODhXTxE9uQWWqPG2lFgLienIdIShC9A7YNgAUIVYC1CSoiGiCbttiUJxYbwARgkbUoTiwXhA9BLwV26qDZEVABXBE2I6AA+CBoQSQB8EUJCJAMIgRACIilAKARfiKQARIRNwBmoHsBzpFvp95C1zpDV5o6TywpAo+SuDREcQGveQQtCBUBz8iU0hBqA9gxUKAhVAABBRweNUeMDwNM9zEUOHvu2AJrcEToAbx77bxmxyRXh4AkQDULrnKBx9fjF/x5jDj1B6/JZrUdUmQCoQlQZAahBVIkBvvhaIC1EwlrCxAWVUMfIrrx2LflkEFYAkkJYAkgGYQ0gCYRFgOhtWQWI2qZlgMv2qt22dYDL1mnmkAOAOkQuACEgdlKE1iCAL0QvfbbZpbh54huaUfkusgfw4livvBoPM583DgAtftYYxIieXyXlu0fprfTZMIBrjzhJEQbjAC4QR5d6Qi6LPtacLM9Lud7L8p8LxDSTa+P7kEbHo0WN38VVPWxGzbnu+P2IFU/sx5iLNB9lXWRBKAgF4W98A3DhluKqdY+QAAAAAElFTkSuQmCC") !important +} + +#toast-container .toast.toast-success { + background-color: #1564DC !important; +} + +#toast-container .toast.toast-success:after { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAYAAACO98lFAAAACXBIWXMAAAsSAAALEgHS3X78AAACFElEQVR42u3a623CMBSG4Zeo/8sIbEC7ASOwQcMG7QZ0g2zQdAO6AWyQbsAIMMHpjzpVRLnFt9iOPwkJNYDpI9sk52QiIow9BTkZISNkhIyQETJCRjifh5H8nwv1ADgAG2D/d1REUn5MRWQr57NuXzdJ+LR5CmyB+ZXXvAFVqgj3AAAcgVkxYgCAR2BZjBigTVIzQQcA4JDKnqALAPBcjBxgBzSxzwQTgCMwAw6xz4TKAGChzh6jvnaogRcDgCb2CyhrALEiWAWIEcE6QGwITgBiQnAGEAuCUwD4X1kqgaU6CdmrCswmZQCAbgWmuVCB2arjvqtClehn0Wes9klz40MbzxClAUDZd7w+A/qC8ArQImx6DOIawjuAiFCoTfDezNVFi4uUwIfme1dqE9VLz5nQpk5hBnSXw6vm4HUKAC3CVET2A0EMDtD9iXwSkYNniCAAugi+IYIBOEXwBbE0AFi7+Gk+90eXEEMsOy0EV182SIBrCO2X1k0VC8AtBFsbWNAA9yCYQqxDB+hzk4bJeb1OPtWYXlL0qPCsUgToW2P0AeEdQKfQ6hJiEABA+8Yt23vElyrwEhOCTYjvbod4iJj0HWwsjcEBbDRfan7vBYwWwHQ5mDRJggGw2YYr1e4eHYDtXuQ9EMEBuGjIlsD7hWO7EAFs7gmnmXUau6imbkOgSfku98GWQ0bICBkhI2SEjJBIfgDOD0D2WHdauQAAAABJRU5ErkJggg==") !important +} + +#toast-container .toast.toast-warning { + background-color: #e2b700 !important; +} + +#toast-container .toast.toast-warning:after { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAYAAACO98lFAAAACXBIWXMAAAsSAAALEgHS3X78AAACn0lEQVR42u2b0XGcMBCGf3v8bqUCXwcmFZhUENLBpQM6MOmAEkgHpIKcKzCpILgDXIHyIjz4cuPbhdVKB9oZXm6kPfGx+2uFxJW1Flu3ayRLEBKEBCFBeGc3Af87A5ADMABaAF2ogVwFmCINgAbA16PfnwAUAIYtQGhPAJiCyNeuCfkHAADgAcB+7ZHQA7g70+YVwE4zLTQjoSIAAIBb13Z1kbAD8JfZ57PWjKEVCY1Sn2ghFE7wuHYPoFxDOhgX0ncz+6uIpO9IKBcAGEWyvuRIyAA8C/n6AuBwiZFQR+pLDcKeIYYvRJGsLikdjKsMbwltf7gw/00Uycz5ljVrrfRVW5r11lrj+rTEPq2H8YpDyCzdikm/nbV2IPbLpSFIawK1yvvlltTThVUt/B9B0qEkPsnBPflTPnqijyrGdDCMcP7oBnIBkMEgNMTBdwRfVJE8xAQhZ4ghRdQ4IlnEAqEjDrhh+KxmTLPBIFSMHOYOVk0kl3TmhG3pOc12oSBoCJiKSGqIYaYUbXttCNR8rQWE16fuzIagqtwa0H2GZ2HlSluv6ccdzEG7mtMQSU7jIkRdP3N9UvqAYEKt8BasVI00BI4YwvMlXqZTxVBygRTbgg2SYtgoAPCxdD8LYe+7UIlBJIOocUSv885CqAPWBNIi2c6BwHl1ngWEICKSS8WwDgiAK5I9B0LJcGoigLD4TfcSh0UEAEREcm5oHSICwBXJ/8Y+3ZXOibvDAPDdy+7w8oOij8S236bbgFMInTsHsAV7cdv8w/SQRrkhAHDnqMrjSBiIhyrWZp8ADNcul7YIYDxclr58GSH0G77/YQrh5wYBPLkZ8U0Yx++QHjYC4I/TwuHUEb5iFIsVW3d0XirIN1BRCmOCkBAkCAnCaP8AxcPoIB/kiq0AAAAASUVORK5CYII=") !important +} + +#toast-container .toast.toast-competition:after { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAA6CAYAAADRN1sJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4wwTEBosRYvjtAAABmRJREFUWMPFmWtsVFUQx3/3dkupUEEetdAqRAUqUCTEGAWDifERAmpEAY1IokYD4fUFTCQaBQkQghJAkQDxjfGDxAQR8YNv0QLKQx6iEq1CEURKodj37vhh5u7e3t7dvV1AJznZe849Z+Z/ZubMzLnrkAOJiPd4N9AMbAVwHKfDvCKt8An0UyGwEWgEHjAgbZnnACgtAF9zRaSziEwQkXoROSsid9mY4597MTQwDngIKAUGApfb+J/Az0A18Cbwcc4aCOw22AaIyKeSnraKSP9MPKICcESk1NQdZNIvDYiPRKRvyPyYfzxIbnDXRmXAcqBfCMbfgZ0h45XAsZDxwcALQM8wWW7AHzoD3YGHgfuBKcBlNu7NjQGD7PkHYL89D/L5lGtregKPAROBCcClQAFB3zNEvURktYjsF5E6U+s5668VkWKb111ENojIXBEpMVPNE5E3RKSrz0xvi8hBOykiIrUisldElopIURtz+NQyRkSqArY9YsfMO2KdRKR3iK17i0i+76hOFpGTAV4HReTmdv4QYLQgsGhJlpORqa0P8JoZ6gOB81oCnAE+A2qtjzcvSjPKt7Ungc+Bf4A+fl6eQ/mpE7AXeAfYDlwPXGeO00THqDPwCTAfOADcAvS1TSf8np80g6/vP7DJsaiRLQOvpHCPVxCA0vZhqef8HtB6DqSZ6CTgFmprrVExTh7csDu1Kw+AVFaEcShA48GFIkH9qd0u/D7gWr8ZGAWstH60tJaeHKAeeARNWGXWPwZIzCbcBjyKRq4vgAbgWtpGyvOhM8AYNCQPA+qA9cAKRyorJgKrTOhfJjgBFBExXUeguLXfgPeBcuAOYJ4jlRV7gC7AeOAwMAtYEpHxcfTo9ogwtwV4EK2ieqBlXBcXqDC17zMt7EDLrCj0IvB6xLkCnLXnGmAXMNBF7fy3b2KJ7SqeheEhYIMBOJFl7knUD7r6xhqBWMxQFftebAdmo455T2AHR4Aq1IM32u9x4BnUpn2Aq/CFXKM1qO0PW78TMAA4HkMLidG28FdrLwHn0LLbc0TH5s42oR4lgHXWrgbWBgA0oLlgt29sFDASeM8FXgF6AwtpG3x2A6cCO7nPdtstRM19gMXArYHxo8BPvn45sMzMstIFNgMr0IplGVq1gB6ZXwLM8oBpwKQQANOMR5AOoMfbE/4acCUwB9gXA1qBRagzzjFbz0Gd5jvgphCm9fbrz2wNhNNO9AgOAV5F68wngE2QCsWNwAI0Zz9tO50FbAOm0zYi1pl2hgNTbc0aU3MrbcN7I+o3Q9H7Qi804m7xJsRKxx2ienM5aA5YijrfQhO6HnW4vj6mcWAm6ries91r2moJADiC+tVy9Co3BXVIAJwb9/nScSorOjZxGfAtejqGkBv9YVo5CzxuIJPCPWFJCqTm8ahzelVMrvSlmerHoPB2AEJA3A6sBq7JUfgW1IeqwoSHAggBMRINMoM7KHwreilJ3paCwtMCCAExCXgLrXSzUQJ15DHAN5mEQ3Tblpjwd4EPCa+S4mg1vQo9CaOJUNbFsk1A74jPoonkefRbwMtobk8qDE3Nz6GRtBwNZtWmuZwBOGiqnYfWCQdt/APgTjRgOQbgezRC1pP6iHHkfDUgwFfW/LQJzZq9rH8GjY4enaJ9Iku7ww6RzznHojmkET3nyXSbzuFy0UAm6odWuHE0JO/uiGCPzifCFXkbJpXC/xcArgcgzS3rogOA8ArpogPwq737fwIgoOIGtFY4jtYBYXOyUrQvpW2Z5qMVzgBSZjiN5v79+C41UU5FxmOY/GawYwRIawy9vBajN91epOpBFy061qHRrwYnv9Vbn+nDRjQTlM2AltN9kda5SHwWEi9E4vVIvNFaPRKPIfGpSOuTtJzuwxUzzt8EtoNuwHQkXky8rhBJ5IGkWecIjhsnr6gRJ+8EWszUZtJAFABlwNdo5BM0xifSLMkzM4H6xCjgaCYAUUOxd1E9DExGb7dBroL6xwagP1qMZqWO5oImA1GT5n0dviMZhXIJRG6O7y4YgESO70Ipqgk8e5eit6cGwn2gC6m/cSJtLi0AqayAqsXQ/6kmtLQuMCFjs/CsQ6viaqCJqkXJSJpDWS5DcS8ZQdHwMtyCThDxrzAch0RTM3V7qknU7wJnXzoAWUzgjCfRMJ/abS10/IOlg+Pmg7MA/QAWSv8CP+OvnvoIdH4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTktMTItMTlUMTY6MjM6MTErMDA6MDB7cNJmAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE5LTEyLTE5VDE2OjIzOjExKzAwOjAwCi1q2gAAAABJRU5ErkJggg==") !important; + background-color: #633f7e +} + +#toast-container .toast-success, +#toast-container .toast-error, +#toast-container .toast-info, +#toast-container .toast-wait, +#toast-container .toast-warning { + background-color: rgba(255, 255, 255, 0.95) +} + +@media all and (max-width:240px) { + box-shadow 0 0 12px $color-darkest>div { + padding: 8px 8px 8px 50px; + width: 11em + } +} + +@media all and (min-width:241px) and (max-width:480px) { + box-shadow 0 0 12px $color-darkest>div { + padding: 8px 8px 8px 50px; + width: 18em + } +} + +@media all and (min-width:481px) and (max-width:768px) { + box-shadow 0 0 12px $color-darkest>div { + padding: 15px 15px 15px 50px; + width: 25em + } +} + +box-shadow 0 0 12px $color-darkest:not(.no-enter)>div.ng-enter, +box-shadow 0 0 12px $color-darkest:not(.no-leave)>div.ng-leave { + -webkit-transition: 1000ms cubic-bezier(0.25, 0.25, 0.75, 0.75) all; + -moz-transition: 1000ms cubic-bezier(0.25, 0.25, 0.75, 0.75) all; + -o-transition: 1000ms cubic-bezier(0.25, 0.25, 0.75, 0.75) all; + -ms-transition: 1000ms cubic-bezier(0.25, 0.25, 0.75, 0.75) all; + transition: 1000ms cubic-bezier(0.25, 0.25, 0.75, 0.75) all +} + +box-shadow 0 0 12px $color-darkest:not(.no-enter)>div.ng-enter.ng-enter-active, +box-shadow 0 0 12px $color-darkest:not(.no-leave)>div.ng-leave { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) +} + +box-shadow 0 0 12px $color-darkest:not(.no-leave)>div.ng-leave.ng-leave-active, +box-shadow 0 0 12px $color-darkest:not(.no-enter)>div.ng-enter { + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0) +} + +/*Main background colors here:*/ +body { + position: relative; + height: 100%; + background: #1E1F21; + background-image: -webkit-linear-gradient(45deg, #1E1F22, #1E1F22); + background-image: -moz-linear-gradient(45deg, #1E1F22, #1E1F22); + background-image: -o-linear-gradient(45deg, #1E1F22, #1E1F22); + background-image: -ms-linear-gradient(45deg, #1E1F22, #1E1F22); + background-image: linear-gradient(45deg, #1E1F22, #1E1F22) +} + +body.immersed { + background-image: none; +} + +body.immersed #topbar { + visibility: hidden +} + +body #topbar { + z-index: 2; + position: absolute; + top: 0; + height: var(--topbar-height); + width: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-app-region: drag; +} + +body #topbar>* { + -webkit-app-region: no-drag +} + +body #topbar .logo, +body #topbar .back { + position: absolute; + top: 0; + left: 0; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: var(--topbar-height); + width: var(--navbar-width) +} + +body #topbar .logo img { + height: 2.5rem; + width: 2.5rem +} + +body #topbar .back .button { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + padding: .5rem; + border-radius: .75rem; + outline: none; + cursor: pointer; +} + +body #topbar .back .button .icon { + height: 2rem; + width: 2rem; + color: #fff; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) +} + +body #topbar .back .button:focus, +body #topbar .back .button:hover { + background-color: rgba(255, 255, 255, 0.05); +} + +body #topbar .back .button:focus .icon, +body #topbar .back .button:hover .icon { + opacity: 1; + -ms-filter: none; + filter: none +} + +body #topbar #search-form-container { + position: relative; + height: 3rem; + width: 30rem; +} + +body #topbar #search-form-container #search-bar { + z-index: 1; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + height: 100%; + border-radius: 3rem; + background-color: rgba(255, 255, 255, 0.05); + overflow: hidden; +} + +body #topbar #search-form-container #search-bar input { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto; + border: none; + outline: none; + background: transparent +} + +body #topbar #search-form-container #search-bar button { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 0 0 3.5rem; + -ms-flex: 0 0 3.5rem; + flex: 0 0 3.5rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 100%; + opacity: .4; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + filter: alpha(opacity=40); + background-color: transparent; + cursor: pointer; +} + +body #topbar #search-form-container #search-bar button.active { + opacity: .7; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; + filter: alpha(opacity=70) +} + +body #topbar #search-form-container #search-bar button:hover { + opacity: 1; + -ms-filter: none; + filter: none +} + +body #topbar #search-form-container #search-bar .icon { + height: 1.6rem; + width: 1.6rem; + color: #fff +} + +body #topbar #search-form-container #search-dropdown { + position: absolute; + z-index: 99; + top: 3rem; + width: 100%; + color: #fff; + border-radius: .75rem; + background-color: #2F2F2F; + /* -webkit-box-shadow: 0 0 2rem 0 #1a173e, 0 0 2rem 0 rgba(12, 12, 17, 0.6) inset; + box-shadow: 0 0 2rem 0 #1a173e, 0 0 2rem 0 rgba(12, 12, 17, 0.6) inset; */ +} + +body #topbar #search-form-container #search-dropdown .last-searches-container { + padding: 1rem 1.5rem; +} + +body #topbar #search-form-container #search-dropdown .last-searches-container .header-container { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + margin-bottom: 1rem; +} + +body #topbar #search-form-container #search-dropdown .last-searches-container .header-container .header { + font-size: .9rem; + font-weight: 500; + color: rgba(255, 255, 255, 0.75) +} + +body #topbar #search-form-container #search-dropdown .last-searches-container .header-container .clear-button-container { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: baseline; + -moz-box-align: baseline; + -o-box-align: baseline; + -ms-flex-align: baseline; + -webkit-align-items: baseline; + align-items: baseline; + cursor: pointer; +} + +body #topbar #search-form-container #search-dropdown .last-searches-container .header-container .clear-button-container .label { + margin-right: .5em; + font-size: .9rem; + font-weight: 500; + color: rgba(255, 255, 255, 0.75) +} + +body #topbar #search-form-container #search-dropdown .last-searches-container .header-container .clear-button-container .icon { + font-size: 10px; + color: rgba(255, 255, 255, 0.75) +} + +body #topbar #search-form-container #search-dropdown .last-searches-container .header-container .clear-button-container:hover .label, +body #topbar #search-form-container #search-dropdown .last-searches-container .header-container .clear-button-container:focus .label, +body #topbar #search-form-container #search-dropdown .last-searches-container .header-container .clear-button-container:hover .icon, +body #topbar #search-form-container #search-dropdown .last-searches-container .header-container .clear-button-container:focus .icon { + color: rgba(255, 255, 255, 0.5) +} + +body #topbar #search-form-container #search-dropdown .last-searches-container .last-searches>li { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + height: 2.5rem; + padding: 0 1rem; + font-size: 1rem; + font-weight: 500; + overflow: hidden; + white-space: pre; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + border-radius: .75rem; + cursor: pointer; + outline: none; +} + +body #topbar #search-form-container #search-dropdown .last-searches-container .last-searches>li:hover, +body #topbar #search-form-container #search-dropdown .last-searches-container .last-searches>li:focus { + background-color: rgba(255, 255, 255, 0.05) +} + +body #topbar #search-form-container #search-dropdown .footer-container { + padding: 1rem; + padding-bottom: 1.5rem; +} + +body #topbar #search-form-container #search-dropdown .footer-container .header { + margin-bottom: 2rem; + text-align: center; + font-size: .9rem; + font-weight: 500; + color: #fff; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) +} + +body #topbar #search-form-container #search-dropdown .footer-container .icons { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; +} + +body #topbar #search-form-container #search-dropdown .footer-container .icons .icon-container { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: start; + -moz-box-pack: start; + -o-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + width: 6rem; +} + +body #topbar #search-form-container #search-dropdown .footer-container .icons .icon-container .icon { + height: 2.5rem; + width: 2.5rem; + margin-bottom: .5rem; + color: #fff; + opacity: .15; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=15)"; + filter: alpha(opacity=15) +} + +body #topbar #search-form-container #search-dropdown .footer-container .icons .icon-container .label { + font-family: PlusJakartaSans, Arial, Helvetica, sans-serif; + font-size: .8rem; + font-weight: 500; + text-align: center; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) +} + +body #navbar { + z-index: 1; + position: fixed; + top: 0; + left: 0; + bottom: 0; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: start; + -moz-box-pack: start; + -o-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + height: 100%; + width: var(--navbar-width); + padding-top: calc(var(--topbar-height) + 1rem); + background: transparent; +} + +body #navbar .tab { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + width: calc(var(--navbar-width) - 1.25rem); + padding: .5rem .25rem; + margin-bottom: 1rem; + border-radius: .75rem; + outline: none; + overflow: visible; + cursor: pointer; +} + +body #navbar .tab .icon { + height: 2rem; + width: 2rem; + color: #fff; + padding-bottom: .1rem; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) +} + +body #navbar .tab .label { + width: 100%; + font-size: .75rem; + font-weight: 500; + text-align: center; + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0) +} + +body #navbar .tab .icon-back { + -webkit-background-size: 65%; + -moz-background-size: 65%; + background-size: 65%; + opacity: .9; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; + filter: alpha(opacity=90) +} + +body #navbar .tab:focus, +body #navbar .tab:hover { + background-color: rgba(255, 255, 255, 0.05); +} + +body #navbar .tab:focus .label, +body #navbar .tab:hover .label { + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) +} + +body #navbar .tab.selected .icon { + color: #1564DC; + opacity: 1; + -ms-filter: none; + filter: none +} + +@media only screen and (max-width:750px) { + #navbar .tab>span { + display: none + } +} + +#window-controls { + z-index: 2; + position: fixed; + height: var(--topbar-height); + top: 0; + right: 1.5rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: end; + -moz-box-pack: end; + -o-box-pack: end; + -ms-flex-pack: end; + -webkit-justify-content: flex-end; + justify-content: flex-end; + cursor: default !important; + -webkit-app-region: no-drag; + app-region: no-drag; + -webkit-transition: all 0.13s ease-in; + -moz-transition: all 0.13s ease-in; + -o-transition: all 0.13s ease-in; + -ms-transition: all 0.13s ease-in; + transition: all 0.13s ease-in; +} + +#window-controls li { + position: relative; + height: 3.15rem; + width: 3.15rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-left: .5rem; + border-radius: .75rem; + cursor: pointer; +} + +#window-controls li .icon { + height: 2rem; + width: 2rem; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) +} + +#window-controls li:hover { + background-color: rgba(255, 255, 255, 0.05); +} + +#window-controls li:hover .icon { + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) +} + +#window-controls .user-menu { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + cursor: pointer +} + +#window-controls #user-panel { + z-index: 1; + position: absolute; + top: var(--topbar-height); + right: 0; + width: 20rem; + border-radius: .75rem; + background-color: #2F2F2F; + /* -webkit-box-shadow: 0 0 2rem 0 rgba(123, 91, 245, 0.2); + box-shadow: 0 0 2rem 0 rgba(123, 91, 245, 0.2); */ + overflow: hidden; +} + +#window-controls #user-panel .user-info { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + padding: 1.5rem 1rem; +} + +#window-controls #user-panel .user-info .avatar { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + height: 3.5rem; + width: 3.5rem; + margin-right: 1.25em; + border-radius: 100%; + background-color: rgba(255, 255, 255, 0.05); + overflow: hidden; +} + +#window-controls #user-panel .user-info .avatar .picture { + z-index: 1; + position: absolute; + height: 100%; +} + +#window-controls #user-panel .user-info .avatar .picture.placeholder { + z-index: 0 +} + +#window-controls #user-panel .user-info .email-container { + width: 75%; +} + +#window-controls #user-panel .user-info .email-container .email, +#window-controls #user-panel .user-info .email-container .login-logout-button { + overflow: hidden; + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis +} + +#window-controls #user-panel .user-info .email-container .email { + font-size: 14px +} + +#window-controls #user-panel .user-info .email-container .login-logout-button { + display: block; + outline: none; + color: #7a7985; + cursor: pointer; +} + +#window-controls #user-panel .user-info .email-container .login-logout-button:hover { + color: #fff +} + +#window-controls #user-panel .section { + padding: .75rem 0; + border-top: 1px solid rgba(255, 255, 255, 0.1); +} + +#window-controls #user-panel .section .option { + padding: 0 1.5rem; + height: 4em; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + cursor: pointer; +} + +#window-controls #user-panel .section .option:hover { + background-color: rgba(255, 255, 255, 0.05) +} + +#window-controls #user-panel .section .option .icon { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 1.75rem; + width: 1.75rem; + margin-right: 1.25rem; + color: #fff; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); +} + +#window-controls #user-panel .section .option .icon+.option-label { + padding-left: 0 +} + +#window-controls #user-panel .section .option .option-label { + font-size: .9rem; + font-weight: 500; + color: rgba(255, 255, 255, 0.9); + word-break: break-all +} + +#window-controls #user-panel .section .option.link { + height: 2.5rem !important +} + +#window-controls .search .icon { + display: none +} + +#body { + z-index: 0; + position: absolute; + top: 0; + left: var(--navbar-width); + right: 0; + bottom: 0; + overflow: hidden; +} + +#body.bodyFullWidth { + left: 0 +} + +#content { + position: relative; + white-space: nowrap; + overflow: visible; + padding: 0; + margin: 0; +} + +#content.transition { + -webkit-transition: all 0.35s ease-in-out; + -moz-transition: all 0.35s ease-in-out; + -o-transition: all 0.35s ease-in-out; + -ms-transition: all 0.35s ease-in-out; + transition: all 0.35s ease-in-out +} + +#content>li { + white-space: normal; + vertical-align: top; + display: inline-block; + position: relative; + width: 100%; + height: 100%; +} + +#content>li.hidden { + display: none +} + +[ui-view] { + position: relative; + height: 100%; + width: 100% +} + +[ui-view]>div { + position: relative; + height: 100%; + width: 100% !important; + padding-top: calc(var(--topbar-height) + 1rem); + padding-left: 1rem +} + +.bottom-notification { + background-color: #22b467; + position: fixed; + bottom: 0; + left: 0; + right: 0; + height: 38px; + line-height: 38px; + font-size: 15px; + font-weight: 600; + z-index: 9999999; +} + +.bottom-notification .right { + text-align: center; +} + +.bottom-notification .right .icon-ic_stremio_tray { + vertical-align: middle; + margin: -5px 0 0 0; + font-size: 20px +} + +.bottom-notification .right>div { + display: inline-block; + margin: 0 8px +} + +.bottom-notification .call-to-action { + cursor: pointer; + color: #fff; + font-weight: bold; + text-decoration: underline; +} + +.bottom-notification .call-to-action:hover { + opacity: .7; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; + filter: alpha(opacity=70) +} + +.bottom-notification .close { + width: 30px; + height: 36px; + line-height: 36px; + float: right; +} + +.bottom-notification .close:hover { + opacity: .7; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; + filter: alpha(opacity=70) +} + +#updateModal .modal-bg { + padding-bottom: 3em +} + +#updateModal img.modal-cat { + position: absolute; + width: 156px; + height: 168px; + top: -93px; + left: 60px +} + +.empty-library { + position: relative; + height: 100%; + width: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + text-align: center; + padding-top: 7rem; +} + +.empty-library .placeholder { + height: 15rem; + margin-top: 2rem; +} + +.empty-library .placeholder.icon { + opacity: .2; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"; + filter: alpha(opacity=20) +} + +.empty-library h2 { + font-size: 2rem; + font-weight: 300; + opacity: .2; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"; + filter: alpha(opacity=20) +} + +.empty-library h3 { + font-size: 1.5rem; + font-weight: 500 +} + +.empty-library button { + height: 4rem; + padding: 0 7rem; + line-height: 4.5rem; + font-size: 1.25rem; + margin-top: 1rem; +} + +.empty-library button:hover { + -webkit-box-shadow: 0 0 0 .17rem #fff inset; + box-shadow: 0 0 0 .17rem #fff inset; + background-color: transparent !important +} + +.empty-library ul { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: distribute; + -moz-box-pack: distribute; + -o-box-pack: distribute; + -ms-flex-pack: distribute; + -webkit-justify-content: space-around; + justify-content: space-around; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + -o-box-lines: multiple; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + width: 42rem; + margin: 2rem 0; +} + +.empty-library ul li { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: start; + -moz-box-pack: start; + -o-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + border-radius: .75rem; + width: 18rem; + padding: .5rem 1rem; + margin-bottom: 1rem; +} + +.empty-library ul li .icon { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + height: 3.5rem; + width: 3.5rem; + opacity: .1; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)"; + filter: alpha(opacity=10) +} + +.empty-library ul li .title { + font-size: 1.5rem; + font-weight: 700; + margin-bottom: 1rem +} + +.empty-library ul li .label { + font-size: 1rem; + font-weight: 500; + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60); + text-align: left; + margin-left: 1rem +} + +.empty-library ul.four li { + cursor: pointer; +} + +.empty-library ul.four li:hover { + background-color: rgba(255, 255, 255, 0.05) +} + +.empty-library .login { + width: 100%; + margin: auto; + margin-top: 30px; + position: relative +} + +.empty-library .login-links { + font-size: 18px; + text-transform: uppercase; +} + +.empty-library .login-links .log-in { + background-color: #8a5aab; + padding: 20px; + width: 230px; + color: #fff; + line-height: 1.5em; + font-weight: 500 +} + +.empty-library .login-links .sign-up { + background-color: #8ca3dc; + padding: 20px; + width: 230px; + color: #fff; + line-height: 1.5em; + font-weight: 500 +} + +.empty-library.board-holder { + position: relative; + -webkit-transition: top 0.5s ease-in-out; + -moz-transition: top 0.5s ease-in-out; + -o-transition: top 0.5s ease-in-out; + -ms-transition: top 0.5s ease-in-out; + transition: top 0.5s ease-in-out +} + +.stremio-no-image { + opacity: 1 !important; + -ms-filter: none !important; + filter: none !important +} + +.show { + display: block !important +} + +@-moz-keyframes flash { + 0% { + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) + } + 100% { + opacity: 1; + -ms-filter: none; + filter: none + } +} + +@-webkit-keyframes flash { + 0% { + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) + } + 100% { + opacity: 1; + -ms-filter: none; + filter: none + } +} + +@-o-keyframes flash { + 0% { + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) + } + 100% { + opacity: 1; + -ms-filter: none; + filter: none + } +} + +@keyframes flash { + 0% { + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) + } + 100% { + opacity: 1; + -ms-filter: none; + filter: none + } +} + +.items { + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; +} + +.items .groupName { + font-size: 19px; + margin: 10px 5px 5px; + text-transform: capitalize +} + +.items .name { + display: none; + width: 100%; + overflow-wrap: anywhere +} + +.items .thumb { + position: relative; + background-repeat: no-repeat; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + background-position: center; + -webkit-background-origin: border; + -moz-background-origin: border; + background-origin: border-box; + height: 100%; + width: 100%; + border-radius: .75rem; + cursor: pointer !important; + -webkit-transition: -webkit-transform 0.2s ease-in-out; + -moz-transition: -moz-transform 0.2s ease-in-out; + -o-transition: -o-transform 0.2s ease-in-out; + -ms-transition: -ms-transform 0.2s ease-in-out; + transition: transform 0.2s ease-in-out; + outline: none; + background-color: rgba(255, 255, 255, 0.05); + overflow: hidden; +} + +.items .thumb.vignette:after { + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background: -webkit-radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.42) 100%); + background: -moz-radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.42) 100%); + background: -o-radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.42) 100%); + background: -ms-radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.42) 100%); + background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.42) 100%) +} + +.items .thumb>img { + width: 100%; + height: 100%; + object-fit: cover +} + +.items .name { + z-index: 1; + position: absolute; + padding: 1rem; + text-align: center; + font-size: 1rem; + font-weight: 500; + color: #fff; + overflow: hidden +} + +.items .progress { + position: absolute; + bottom: .75rem; + left: .75rem; + right: .75rem; + height: .4rem; + border-radius: .5rem; + background-color: rgba(128, 128, 128, 0.3); + overflow: hidden; +} + +.items .progress .bar { + position: relative; + height: 100%; + background-color: #fff +} + +.items .thumb-overflow-fixer { + position: relative; + width: 100%; + height: 100% +} + +.items .notification { + position: absolute; + z-index: 1; + width: auto; + top: 0; + left: 0; + right: 0; + cursor: pointer; +} + +.items .notification.bottom-right { + bottom: -20px; + left: 50%; + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + transform: rotate(-45deg); + -webkit-transform-origin: top left; + -moz-transform-origin: top left; + -o-transform-origin: top left; + -ms-transform-origin: top left; + transform-origin: top left +} + +.items .notification.top-right { + top: -20px; + left: 50%; + -webkit-transform-origin: bottom left; + -moz-transform-origin: bottom left; + -o-transform-origin: bottom left; + -ms-transform-origin: bottom left; + transform-origin: bottom left; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg) +} + +.items .notification.bottom { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 2.25rem; + top: .8rem; + left: .8rem; + right: .8rem; + padding: 0 .5rem; + border-radius: .5rem; + background-color: rgba(0, 0, 0, 0.5); + backdrop-filter: blur(5px); + overflow: hidden; +} + +.items .notification.bottom .icon { + margin-right: 5px; + position: static; + display: inline +} + +.items .notification.bottom a { + padding-left: 0; + font-size: .8rem; + display: inline; + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden +} + +.items .notification.watched { + z-index: 99; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 1.25rem; + width: 1.25rem; + top: .5rem; + left: .5rem; + border-radius: 100%; + color: #fff; + background: #6e6e6e; +} + +.items .notification.watched .icon { + height: .75rem; + width: .75rem +} + +.items .notification.in-cinema { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 2.25rem; + top: .8rem; + left: .8rem; + right: .8rem; + border-radius: .5rem; + background-color: rgba(0, 0, 0, 0.5) +} + +.items .notification a { + position: relative; + display: block; + color: #fff; + font-size: .9rem; + font-weight: 600; + margin-left: .5rem; + text-transform: uppercase; + -webkit-transition: all 0.25s ease; + -moz-transition: all 0.25s ease; + -o-transition: all 0.25s ease; + -ms-transition: all 0.25s ease; + transition: all 0.25s ease +} + +.items .notification .icon { + height: 1rem; + width: 1rem +} + +.sidebar { + z-index: 1; + position: absolute; + top: var(--topbar-height); + bottom: 0; + right: 0; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + border-radius: .75rem 0 0 0; + background-color: transparent; + overflow: hidden; + backdrop-filter: blur(30px); +} + +.sidebar .sidebar-content { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-pack: start; + -moz-box-pack: start; + -o-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + height: 100%; + width: 28rem +} + +.sidebar .episodes { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-line-pack: end; + -webkit-align-content: flex-end; + align-content: flex-end; + height: 100%; + width: 100%; + overflow: hidden; + padding-top: 1.5rem; +} + +.sidebar .episodes .heading { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: start; + -moz-box-align: start; + -o-box-align: start; + -ms-flex-align: start; + -webkit-align-items: flex-start; + align-items: flex-start; + padding: 0 1.5rem; + margin-bottom: 1rem; +} + +.sidebar .episodes .heading .search { + position: relative; +} + +.sidebar .episodes .heading .search input { + padding-right: 2.5rem +} + +.sidebar .episodes .heading .search .icon { + position: absolute; + top: .75rem; + right: .75rem; + height: 1rem; + width: 1rem +} + +.sidebar .episodes .episodes-list { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + height: 100%; + padding: .5rem 1.5rem; + overflow-y: auto; + scrollbar-width: thin; +} + +.sidebar .episodes .episodes-list li { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + height: 6rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + margin-bottom: .5rem; + padding: .75rem; + border-radius: .75rem; + outline: none; + cursor: pointer; + overflow: hidden; +} + +.sidebar .episodes .episodes-list li .thumbnail { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 100%; + width: 8rem; + margin-right: 1.25rem; + overflow: hidden; + border-radius: .75rem; + background-color: rgba(255, 255, 255, 0.05); +} + +.sidebar .episodes .episodes-list li .thumbnail img { + z-index: 0; + height: 100%; + object-fit: cover +} + +.sidebar .episodes .episodes-list li .thumbnail .icon { + z-index: 1; + position: absolute; + height: 2rem; + width: 2rem; + line-height: 2rem; + font-size: 1.5rem; + text-align: center +} + +.sidebar .episodes .episodes-list li .thumbnail .upcoming { + display: none; + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) +} + +.sidebar .episodes .episodes-list li .episode-details { + width: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.sidebar .episodes .episodes-list li .episode-details .title { + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + margin-bottom: 1rem; + font-size: 1rem; + font-weight: 500; + overflow: hidden +} + +.sidebar .episodes .episodes-list li .episode-details .footer { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + height: 1.3rem; + width: 100%; +} + +.sidebar .episodes .episodes-list li .episode-details .footer .date { + font-size: .8rem; + font-weight: 500; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) +} + +.sidebar .episodes .episodes-list li .episode-details .footer .watched { + display: none; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 100%; + padding: 0 .3rem; + line-height: 100%; + font-size: .7rem; + font-weight: 900; + color: #0c0c11; + text-transform: uppercase; + border-radius: .25rem; + background-color: #f6c700; +} + +.sidebar .episodes .episodes-list li .episode-details .footer .watched .icon { + height: 1rem; + width: 1rem; + margin-right: .25rem +} + +.sidebar .episodes .episodes-list li.watched .watched { + display: -webkit-box !important; + display: -moz-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: box !important; + display: flex !important +} + +.sidebar .episodes .episodes-list li.upcoming .thumbnail img { + opacity: .25; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=25)"; + filter: alpha(opacity=25) +} + +.sidebar .episodes .episodes-list li.upcoming .thumbnail .upcoming { + display: block !important +} + +.sidebar .episodes .episodes-list li.upcoming .episode-details { + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) +} + +.sidebar .episodes .episodes-list li.new-episode { + color: #f6c700 +} + +.sidebar .episodes .episodes-list li.playing { + background: #1564DC; +} + +.sidebar .episodes .episodes-list li:hover { + background: #0d52b9; +} + +.sidebar .episodes .episodes-list li:focus { + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff */ +} + +.sidebar .ads-container { + text-align: center; + padding-right: 15px +} + +.sidebar .showNotifs { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-bottom: 1rem; + cursor: pointer +} + +.sidebar .stream-picker { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 30px 20px; +} + +.sidebar .stream-picker section { + margin-bottom: 10px +} + +.sidebar .stream-picker .button.show-streams { + font-size: 17px; + text-align: center; + padding: 12px 16px; + color: #fff; + background: rgba(138, 90, 171, 0.7) +} + +.sidebar .details { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 0 2rem; + padding-top: 2rem; +} + +.sidebar .details .info { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + height: 2rem; + margin-bottom: 2rem; +} + +.sidebar .details .info li { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + font-size: 1.1rem; + font-weight: 600; +} + +.sidebar .details .info li .icon { + height: 3rem; + width: 3rem; +} + +.sidebar .details .info li .icon.imdb { + margin-left: .5rem; + color: #f5c518 +} + +.sidebar .details .description { + font-size: 1rem; + font-weight: 500; + line-height: 1.5rem; + padding-bottom: 2rem +} + +.sidebar .details .section { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin: 1rem 0; +} + +.sidebar .details .section .title { + font-size: .9rem; + font-weight: 700; + text-transform: uppercase; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); + margin-bottom: .5rem +} + +.sidebar .details .section .links { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + -o-box-lines: multiple; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.sidebar .details .section .links .link { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 2.2rem; + font-size: 1rem; + font-weight: 500; + padding: 0 1.5rem; + margin-right: .75rem; + margin-bottom: .75rem; + border-radius: 2rem; + background-color: rgba(255, 255, 255, 0.05); + outline: none; + cursor: pointer; +} + +.sidebar .details .section .links .link:hover { + background-color: rgba(255, 255, 255, 0.1) +} + +.sidebar .details .section .links .link:focus { + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff */ +} + +.sidebar .details .section .text { + max-width: 35rem; + font-size: 1rem +} + +.sidebar .head { + overflow: hidden; + padding: 2rem 2rem 0 2rem; + -webkit-align-self: stretch; + align-self: stretch; + -ms-flex-item-align: stretch; + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} + +.sidebar .head .logo { + width: 100%; + margin: 10px auto 10px; + -webkit-background-size: contain; + -moz-background-size: contain; + background-size: contain; + background-position: center; + background-repeat: no-repeat; + height: 95px; + overflow: hidden; +} + +.sidebar .head .logo .fallback { + display: none +} + +.sidebar .head .logo.stremio-no-image .fallback { + display: block +} + +.sidebar .tvguide li { + margin-top: 30px +} + +.sidebar .availableOffline { + position: absolute; + width: 115px; + height: 20px; + top: 66px; + right: 10px +} + +.sidebar .playback-chooser { + height: 25px; + position: absolute; + top: 16px; +} + +.sidebar .playback-chooser ul li { + cursor: pointer; + float: left; + padding: 1px 4px; + margin: 3px 0; + text-align: center; +} + +.sidebar .playback-chooser ul li.selected { + background: #b174d7 +} + +.sidebar .season-chooser { + margin: 10px 0; + border-bottom: 1px solid rgba(177, 116, 215, 0.5); +} + +.sidebar .season-chooser ul { + overflow: hidden; + margin: 10px 0 0; +} + +.sidebar .season-chooser ul li { + float: left; + margin-right: 3px; + margin-bottom: 3px; + display: block; + padding: 0 5px; + height: 19px; + text-align: center; + cursor: pointer; + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80); +} + +.sidebar .season-chooser ul li.selected { + opacity: 1; + -ms-filter: none; + filter: none; + background: #b174d7 +} + +.sidebar .season-chooser ul li:focus { + /* outline: 1px solid; + outline-offset: -1px */ +} + +.sidebar .season-chooser ul li.arrow { + font-size: 20px; + line-height: 12px +} + +.sidebar .season-chooser.small li { + font-size: 12px; + height: 16px; + padding: 2px 4px; + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80); +} + +.sidebar .season-chooser.small li.selected { + opacity: 1; + -ms-filter: none; + filter: none +} + +.sidebar .ep-numb { + margin-right: 15px; + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) +} + +.sidebar .uploads { + width: 355px; + margin-top: 20px; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + max-height: calc(100% - 20px) +} + +.sidebar .uploads .scroll-pane { + margin-top: 10px +} + +.sidebar .uploads li { + overflow: hidden; + margin-bottom: 3px; + margin-top: 3px; + padding: 2px 0 +} + +.sidebar .uploads .search { + width: calc(100% - 46px); + border: 0; + margin: 0; + height: 22px; + line-height: 22px; + padding-left: 38px; + -webkit-box-shadow: 0 1px 0 0 rgba(24, 23, 38, 0.3); + box-shadow: 0 1px 0 0 rgba(24, 23, 38, 0.3); + border-top: 1px solid rgba(255, 255, 255, 0.3); + border-bottom: 1px solid rgba(255, 255, 255, 0.3) +} + +.sidebar .uploads .icon-search { + width: 22px; + height: 22px; + margin-top: -28px; + margin-left: 12px; + -webkit-background-size: contain; + -moz-background-size: contain; + background-size: contain; + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) +} + +.sidebar .uploads.noThumb li { + height: 40px +} + +#ytPlayer { + position: absolute; + top: 35px; + bottom: 0; + left: 0; + right: 0; + z-index: 999; + background-color: #000 +} + +.branding { + position: absolute; + bottom: 2px; + right: 10px; + font-size: 10px; + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60); + color: #8a5aab; + font-weight: bold; +} + +.branding:before { + content: "stremio" +} + +.modalWrap { + display: none; + z-index: 999999; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + -ms-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.modalWrap.visible { + display: block; + opacity: 1; + -ms-filter: none; + filter: none; +} + +.modalWrap.visible .modal { + bottom: -1px +} + +.modal { + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + -ms-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + overflow: auto; + display: block; + position: fixed; + bottom: -451px; + left: 0; + right: 0; + margin: 0 auto; + width: 510px; + height: 450px; + background: #2F2F2F; + -webkit-box-shadow: 0 0 2rem 0 #1564DC; + box-shadow: 0 0 2rem 0 #1564DC; +} + +.modal .close { + position: absolute; + top: 10px; + right: 10px; + width: 17px; + height: 20px; + background-repeat: no-repeat; + opacity: .85; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=85)"; + filter: alpha(opacity=85); + cursor: pointer; +} + +.modal .close:hover { + opacity: 1; + -ms-filter: none; + filter: none +} + +.modal .buttons { + text-align: center; + position: absolute; + bottom: 80px; + left: 0; + right: 0 +} + +.modal .title { + color: #fff; + text-align: center; + margin-top: 10px +} + +.modal .bottom { + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 205px +} + +.modal .bottom-right { + position: absolute; + right: 10px; + bottom: 10px +} + +.modal .bottom-left { + position: absolute; + left: 10px; + bottom: 10px +} + +.modal.small { + height: 220px; + width: 450px; +} + +.modal.small .bottom { + height: 130px; + padding: 20px; + font-size: 14px +} + +.modalFull .close { + cursor: pointer; + opacity: .75; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)"; + filter: alpha(opacity=75); + position: absolute; + width: 20px; + height: 20px; + top: 10px; + right: 15px; + -webkit-transition: 0.15s; + -moz-transition: 0.15s; + -o-transition: 0.15s; + -ms-transition: 0.15s; + transition: 0.15s; + z-index: 1; +} + +.modalFull .close:hover { + opacity: 1; + -ms-filter: none; + filter: none +} + +.modalFull .drag { + position: absolute; + top: 0; + left: 0; + right: 30px; + height: 40px; + -webkit-app-region: drag; + cursor: -webkit-grab; + z-index: 1 +} + +.modal-light-center-container { + background: rgba(24, 23, 38, 0.7); + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +.modal-light-center-container.visible { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex +} + +.modal-light-center-container .modal-light-center { + position: relative; + height: auto; + width: 30em; + max-height: 90%; + font-size: 20px; + border-radius: 4px; + padding: 4px; + color: #2b2c43; + background-color: #fff; + line-height: 1.3em; +} + +.modal-light-center-container .modal-light-center .modal-bg { + padding: 3.5em +} + +.modal-light-center-container .modal-light-center .title { + font-weight: bold; + color: #000; + text-align: left; + margin: 25px 0; + font-size: 1.5em +} + +.modal-light-center-container .buttons { + text-align: center; + position: static; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + margin: 0; +} + +.modal-light-center-container .buttons .button { + margin: 2em 0 0 0; + line-height: 3em; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-box-flex: .5; + -moz-box-flex: .5; + -o-box-flex: .5; + -ms-box-flex: .5; + box-flex: .5; + -webkit-flex-grow: .5; + flex-grow: .5; + background-color: #fff; + color: #7a7985; +} + +.modal-light-center-container .buttons .button.install-button { + color: #fff; + background-color: #22b467 +} + +.modal-light-center-container .buttons .button:focus { + /* outline: .17rem solid; + outline-offset: -4px */ +} + +.loader2 { + position: relative; + width: 100px; + height: 100px +} + +.loader2>div:before { + content: "\e9eb"; + display: inline-block; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + width: 1em; + height: 1em; + position: absolute +} + +.loader2-center { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; + max-width: 100%; + max-height: 100%; + overflow: visible +} + +.loader2>div { + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + transform: rotate(-45deg); + font-family: 'icon-full-height'; + font-size: 100px; + text-align: left; + line-height: 100px; + position: absolute; + width: 50px; + height: 50px; + overflow: hidden +} + +.loader2 div:nth-child(1):before { + left: -.5em +} + +.loader2 div:nth-child(3):before { + top: -.5em +} + +.loader2 div:nth-child(4):before { + top: -.5em; + left: -.5em +} + +.loader-frame-1 { + top: -2px; + left: 35px; + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80); + -webkit-animation: fader-1 2.5s infinite; + -moz-animation: fader-1 2.5s infinite; + -o-animation: fader-1 2.5s infinite; + -ms-animation: fader-1 2.5s infinite; + animation: fader-1 2.5s infinite +} + +.loader-frame-2 { + top: 33px; + left: 0; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); + -webkit-animation: fader-2 2.5s infinite; + -moz-animation: fader-2 2.5s infinite; + -o-animation: fader-2 2.5s infinite; + -ms-animation: fader-2 2.5s infinite; + animation: fader-2 2.5s infinite +} + +.loader-frame-3 { + top: 68px; + left: 35px; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); + -webkit-animation: fader-3 2.5s infinite; + -moz-animation: fader-3 2.5s infinite; + -o-animation: fader-3 2.5s infinite; + -ms-animation: fader-3 2.5s infinite; + animation: fader-3 2.5s infinite +} + +.loader-frame-4 { + top: 33px; + left: 70px; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); + -webkit-animation: fader-4 2.5s infinite; + -moz-animation: fader-4 2.5s infinite; + -o-animation: fader-4 2.5s infinite; + -ms-animation: fader-4 2.5s infinite; + animation: fader-4 2.5s infinite +} + +@-moz-keyframes fader-1 { + 0% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 20% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 40% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } +} + +@-webkit-keyframes fader-1 { + 0% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 20% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 40% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } +} + +@-o-keyframes fader-1 { + 0% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 20% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 40% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } +} + +@keyframes fader-1 { + 0% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 20% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 40% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } +} + +@-moz-keyframes fader-2 { + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 40% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } +} + +@-webkit-keyframes fader-2 { + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 40% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } +} + +@-o-keyframes fader-2 { + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 40% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } +} + +@keyframes fader-2 { + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 40% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } +} + +@-moz-keyframes fader-3 { + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 40% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } +} + +@-webkit-keyframes fader-3 { + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 40% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } +} + +@-o-keyframes fader-3 { + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 40% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } +} + +@keyframes fader-3 { + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 40% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } +} + +@-moz-keyframes fader-4 { + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } +} + +@-webkit-keyframes fader-4 { + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } +} + +@-o-keyframes fader-4 { + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } +} + +@keyframes fader-4 { + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 20% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 60% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 80% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } +} + +#player { + z-index: 99; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: 100%; + padding: 0; + background-color: #000 +} + +[type='range'] { + position: relative; + top: 2rem; + height: .65rem; + width: 100%; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border: none; + margin: 0; + padding: 0 1rem; + background-color: transparent; +} + +[type='range']:focus { + outline: 0; +} + +[type='range']:focus::-webkit-slider-runnable-track { + background: #8263f6 +} + +[type='range']:focus::-ms-fill-lower { + background: #8A8A8A +} + +[type='range']:focus::-ms-fill-upper { + background: #8263f6 +} + +[type='range']::-webkit-slider-runnable-track { + cursor: pointer; + height: .65rem; + width: 100%; + -webkit-transition: all 0.2s ease; + -moz-transition: all 0.2s ease; + -o-transition: all 0.2s ease; + -ms-transition: all 0.2s ease; + transition: all 0.2s ease; + background: #8A8A8A; + border: 0 solid transparent; + border-radius: .65rem +} + +[type='range']::-webkit-slider-thumb { + margin-top: -.3rem; + -webkit-box-shadow: 0 0 0 .25rem rgba(255, 255, 255, 0.2) inset; + box-shadow: 0 0 0 .25rem rgba(255, 255, 255, 0.2) inset; + background: #8A8A8A; + border: 0 solid transparent; + border-radius: 50%; + cursor: pointer; + height: 1.25rem; + width: 1.25rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none +} + +[type='range']::-moz-range-track { + cursor: pointer; + height: .65rem; + width: 100%; + -webkit-transition: all 0.2s ease; + -moz-transition: all 0.2s ease; + -o-transition: all 0.2s ease; + -ms-transition: all 0.2s ease; + transition: all 0.2s ease; + background: #8A8A8A; + border: 0 solid transparent; + border-radius: .65rem +} + +[type='range']::-moz-range-thumb { + margin-top: -.3rem; + -webkit-box-shadow: 0 0 0 .25rem rgba(255, 255, 255, 0.2) inset; + box-shadow: 0 0 0 .25rem rgba(255, 255, 255, 0.2) inset; + background: #8A8A8A; + border: 0 solid transparent; + border-radius: 50%; + cursor: pointer; + height: 1.25rem; + width: 1.25rem +} + +[type='range']::-ms-track { + cursor: pointer; + height: .65rem; + width: 100%; + -webkit-transition: all 0.2s ease; + -moz-transition: all 0.2s ease; + -o-transition: all 0.2s ease; + -ms-transition: all 0.2s ease; + transition: all 0.2s ease; + background: transparent; + border-color: transparent; + border-width: .625rem 0; + color: transparent +} + +[type='range']::-ms-fill-lower { + background: #6e4bf4; + border: 0 solid transparent; + border-radius: 1.3rem +} + +[type='range']::-ms-fill-upper { + background: #8A8A8A; + border: 0 solid transparent; + border-radius: 1.3rem +} + +[type='range']::-ms-thumb { + margin-top: -.3rem; + -webkit-box-shadow: 0 0 0 .25rem rgba(255, 255, 255, 0.2) inset; + box-shadow: 0 0 0 .25rem rgba(255, 255, 255, 0.2) inset; + background: #8A8A8A; + border: 0 solid transparent; + border-radius: 50%; + cursor: pointer; + height: 1.25rem; + width: 1.25rem; + margin-top: 0 +} + +#streamReport { + z-index: 99; + position: fixed; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + height: auto; + width: 23rem; + padding: 1.5rem 1rem; + min-height: 15rem; + bottom: 40%; + border-radius: .75rem; + background-color: #2F2F2F; + overflow: hidden; + visibility: hidden; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -webkit-transition: 0.2s ease-in; + -moz-transition: 0.2s ease-in; + -o-transition: 0.2s ease-in; + -ms-transition: 0.2s ease-in; + transition: 0.2s ease-in; +} + +#streamReport.visible { + opacity: 1; + -ms-filter: none; + filter: none; + visibility: visible +} + +#streamReport .icon { + -webkit-align-self: center; + align-self: center; + -ms-flex-item-align: center; + height: 4.5rem; + width: 4.5rem +} + +#streamReport h2.title { + text-align: center; + margin-top: 2rem; + margin-bottom: .5rem; + font-size: 1.25rem; + font-weight: 700; + color: #fff +} + +#streamReport h2.white { + font-size: 1rem; + padding: 0 1rem +} + +#streamReport h2 span { + margin-left: .5rem +} + +#streamReport ul { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + padding: 0 1rem; +} + +#streamReport ul li { + color: #fff; + font-size: 1rem; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); + margin-bottom: .5rem; + text-align: center; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden +} + +#streamReport .streamInfo { + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-top: 2rem +} + +#widget { + position: absolute; + z-index: 1; + width: 100%; + height: 100% +} + +#loading-background { + background-color: #181726; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + z-index: 1 +} + +#loading-background, +#loading, +#player-error, +#player-warning { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0 +} + +#loading { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + background: rgba(24, 23, 38, 0.55); + z-index: 1 +} + +#player-warning, +#player-error { + height: 100%; + width: 100%; + z-index: 1; +} + +#player-warning h2, +#player-error h2 { + font-size: 20px +} + +#player-warning h2, +#player-error h2, +#player-warning h3, +#player-error h3 { + line-height: 25px; + text-align: center; + width: 80%; + margin: 0 auto +} + +#player-warning>h2, +#player-error>h2 { + margin-top: 35% +} + +#player-error { + background: rgba(24, 23, 38, 0.3); + z-index: 1; + text-align: center; +} + +#player-error .err-container { + display: table; + background: #2F2F2F; + width: 25rem; + height: 15rem; + position: absolute; + left: 50%; + top: 50%; + -webkit-transform: translate(-50%, -50%); + -moz-transform: translate(-50%, -50%); + -o-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + padding: 1.5rem; + border-radius: .75rem; +} + +#player-error .err-container>h2, +#player-error .err-container>#player-fallback { + width: 100%; + display: table-cell; + vertical-align: middle +} + +#player-error .err-container .button-b { + margin: 20px auto; + padding: 10px 20px; + text-align: center +} + +#player-error .err-container .icon-info-circle { + display: inline-block; + width: 1.2em; + height: 1.2em; + text-align: center; + border-radius: 50%; + background-color: #fff; + color: #201f32; + margin: .4em; + font-size: 14px; +} + +#player-error .err-container .icon-info-circle:before { + content: 'i' +} + +#slow-loading, +#player-timeout { + width: 18rem; + margin: auto; + margin-top: 3rem; + padding: 1.5rem; + font-size: 1rem; + font-weight: 500; + text-align: center; + border-radius: .75rem; + background: #2F2F2F +} + +#slow-loading .button { + text-align: center; + padding: 10px; + min-width: 180px; + display: block; + margin: auto; + margin-top: 20px +} + +#slow-loading .link { + color: #8A8A8A; + font-size: 1rem; + padding: .5rem; + margin-top: 1rem +} + +#player-timeout .icon { + width: 48px; + font-size: 48px; + margin: auto; + -webkit-background-size: contain; + -moz-background-size: contain; + background-size: contain; + margin-bottom: 20px +} + +#loading-logo { + background-position: center; + background-repeat: no-repeat; + -webkit-background-size: contain; + -moz-background-size: contain; + background-size: contain; + background-color: transparent; + mask-image: gradient(linear, left top, right top, color-stop(0%, #000), color-stop(0%, #000), color-stop(1%, rgba(0, 0, 0, 0.15)), color-stop(100%, rgba(0, 0, 0, 0.15))); + -webkit-transition-property: all 250ms linear; + -moz-transition-property: all 250ms linear; + -o-transition-property: all 250ms linear; + -ms-transition-property: all 250ms linear; + transition-property: all 250ms linear; + width: 25rem; + height: 10rem; + margin: auto; +} + +#loading-logo.flashing { + -webkit-animation: flash ease-in 1.8s infinite; + -moz-animation: flash ease-in 1.8s infinite; + -o-animation: flash ease-in 1.8s infinite; + -ms-animation: flash ease-in 1.8s infinite; + animation: flash ease-in 1.8s infinite; + -webkit-mask: none !important +} + +#loading-logo.hide { + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0) +} + +#loading-logo .fallback { + display: none; + font-size: 3rem; + text-align: center +} + +#loading-logo.stremio-no-image .fallback { + display: block +} + +#device-message { + position: absolute; + left: 0; + bottom: 0; + top: 0; + right: 0; + font-size: 28px; + z-index: 1; + text-align: center; + text-shadow: 1px 1px 3px rgba(24, 23, 38, 0.55); + padding-top: 200px; + background: #181726 +} + +#player .sidebar { + z-index: 99; + position: absolute; + top: 0; + right: 0; + width: 28rem; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-transform: translateX(100%); + -moz-transform: translateX(100%); + -o-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + -webkit-transition: -webkit-transform 0.3s ease-in; + -moz-transition: -moz-transform 0.3s ease-in; + -o-transition: -o-transform 0.3s ease-in; + -ms-transition: -ms-transform 0.3s ease-in; + transition: transform 0.3s ease-in; +} + +#player .sidebar.shown { + -webkit-transform: translateX(0); + -moz-transform: translateX(0); + -o-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0) +} + +#sidebar-handle { + z-index: 1; + position: absolute; + top: calc(50% - 5rem); + right: -6.5rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + width: 10rem; + height: 10rem; + border-radius: 100%; + background: #2F2F2F; + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80); + -webkit-transition: all 0.1s ease-out; + -moz-transition: all 0.1s ease-out; + -o-transition: all 0.1s ease-out; + -ms-transition: all 0.1s ease-out; + transition: all 0.1s ease-out; + cursor: pointer; +} + +#sidebar-handle.hidden { + -webkit-transform: translateX(calc(100% + 6.5rem)); + -moz-transform: translateX(calc(100% + 6.5rem)); + -o-transform: translateX(calc(100% + 6.5rem)); + -ms-transform: translateX(calc(100% + 6.5rem)); + transform: translateX(calc(100% + 6.5rem)) +} + +#sidebar-handle .icon { + height: 3rem; + width: 3rem; + color: #fff; + margin-left: .5rem; + -webkit-transition: -webkit-transform 0.1s ease-out; + -moz-transition: -moz-transform 0.1s ease-out; + -o-transition: -o-transform 0.1s ease-out; + -ms-transition: -ms-transform 0.1s ease-out; + transition: transform 0.1s ease-out +} + +#sidebar-handle:hover { + opacity: 1; + -ms-filter: none; + filter: none; +} + +#sidebar-handle:hover .icon { + -webkit-transform: scale(1.1); + -moz-transform: scale(1.1); + -o-transform: scale(1.1); + -ms-transform: scale(1.1); + transform: scale(1.1) +} + +.player-handle { + z-index: 99; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 5rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + padding: 0 1rem; + background: -webkit-linear-gradient(bottom, transparent 0%, #000 100%); + background: -moz-linear-gradient(bottom, transparent 0%, #000 100%); + background: -o-linear-gradient(bottom, transparent 0%, #000 100%); + background: -ms-linear-gradient(bottom, transparent 0%, #000 100%); + background: linear-gradient(to top, transparent 0%, #000 100%); + -webkit-transition: -webkit-transform 0.13s; + -moz-transition: -moz-transform 0.13s; + -o-transition: -o-transform 0.13s; + -ms-transition: -ms-transform 0.13s; + transition: transform 0.13s; +} + +.player-handle .section { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: start; + -moz-box-pack: start; + -o-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start +} + +.player-handle .tab { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + padding: .5rem; + border-radius: .75rem; + outline: none; + cursor: pointer; +} + +.player-handle .tab .icon { + height: 2rem; + width: 2rem; + color: #fff; + padding-bottom: .1rem; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) +} + +.player-handle .tab:focus, +.player-handle .tab:hover { + background-color: rgba(255, 255, 255, 0.05); +} + +.player-handle .tab:focus .icon, +.player-handle .tab:hover .icon { + opacity: 1; + -ms-filter: none; + filter: none +} + +.player-handle #windowTitle { + font-size: 1.25rem; + font-weight: 500; + margin-left: 1rem +} + +.player-handle.hidden { + -webkit-transform: translateY(-5rem); + -moz-transform: translateY(-5rem); + -o-transform: translateY(-5rem); + -ms-transform: translateY(-5rem); + transform: translateY(-5rem) +} + +#controlbar { + z-index: 99; + position: absolute; + bottom: 0; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + height: 8rem; + width: 100%; + padding: 0 1rem; + background: -webkit-linear-gradient(top, transparent 0%, #000 100%); + background: -moz-linear-gradient(top, transparent 0%, #000 100%); + background: -o-linear-gradient(top, transparent 0%, #000 100%); + background: -ms-linear-gradient(top, transparent 0%, #000 100%); + background: linear-gradient(to bottom, transparent 0%, #000 100%); + -webkit-transition: -webkit-transform 0.13s; + -moz-transition: -moz-transform 0.13s; + -o-transition: -o-transform 0.13s; + -ms-transition: -ms-transform 0.13s; + transition: transform 0.13s; +} + +#controlbar #controlbar-top { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + height: 5rem; + bottom: 0; + left: 0; + right: 0 +} + +#controlbar .controls { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center +} + +#controlbar.hidden { + -webkit-transform: translateY(calc(8rem + 0.5rem)); + -moz-transform: translateY(calc(8rem + 0.5rem)); + -o-transform: translateY(calc(8rem + 0.5rem)); + -ms-transform: translateY(calc(8rem + 0.5rem)); + transform: translateY(calc(8rem + 0.5rem)) +} + +#controlbar .control { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + width: 4.5rem; + height: calc(4.5rem - 0.5rem); + cursor: pointer; +} + +#controlbar .control .icon { + position: relative; + width: 3rem; + height: 3rem; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) +} + +#controlbar .control:hover .icon { + opacity: 1; + -ms-filter: none; + filter: none +} + +#controlbar .control.active .popup { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex +} + +#controlbar .popup { + position: absolute; + display: none; + -webkit-box-align: start; + -moz-box-align: start; + -o-box-align: start; + -ms-flex-align: start; + -webkit-align-items: flex-start; + align-items: flex-start; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + bottom: 7rem; + right: 0; + padding: .5rem 1rem; + cursor: default; + border-radius: .75rem; + background-color: #2F2F2F; + -webkit-box-shadow: 0 0 2rem 0 rgba(0, 0, 0, 0.4); + box-shadow: 0 0 2rem 0 rgba(0, 0, 0, 0.4); +} + +#controlbar .popup .popup-title { + padding: .5rem; + padding-top: 1rem; + text-align: left; + font-size: .9rem; + font-weight: 700; + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden +} + +#controlbar .movePlayerControlsSeparator { + left: 106px !important +} + +#castingControl .popup { + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: auto; +} + +#castingControl .popup .text { + padding: .5rem; + text-align: left; + font-size: .9rem; + font-weight: 700; + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden +} + +#castingControl .popup .listing { + width: 100%; + overflow-y: auto; + max-height: 315px; +} + +#castingControl .popup .listing li { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + height: 2.5rem; + cursor: pointer; + text-align: left; +} + +#castingControl .popup .listing li.inactive { + opacity: .4; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + filter: alpha(opacity=40) +} + +#castingControl .popup .listing li .icon { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 1rem; + width: 1rem; + margin-right: .75rem +} + +#settingsControl { + text-align: center; +} + +#settingsControl #settingsMenu { + width: auto; +} + +#settingsControl #settingsMenu .player-settings-container { + overflow-y: auto +} + +#settingsControl #settingsMenu .player-setting { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: start; + -moz-box-pack: start; + -o-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + height: 3.5rem; + padding: 0 1rem; + font-size: 1rem; + margin: .5rem 0; + border-radius: .75rem; + cursor: pointer; + text-align: left; + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden; +} + +#settingsControl #settingsMenu .player-setting.inactive { + opacity: .4; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + filter: alpha(opacity=40) +} + +#settingsControl #settingsMenu .player-setting:hover:not(.inactive) { + background-color: rgba(255, 255, 255, 0.05) +} + +#volumeControl { + position: relative; +} + +#volumeControl .icon { + display: none +} + +#volumeControl.level-0 .icon:nth-child(1) { + display: block +} + +#volumeControl.level-1 .icon:nth-child(2) { + display: block +} + +#volumeControl.level-2 .icon:nth-child(3) { + display: block +} + +#volumeControl.level-3 .icon:nth-child(4) { + display: block +} + +#volumeControl #volumeSlider { + height: 14rem; + width: 3rem; + left: calc(3rem - ($control-width / 2)); +} + +#volumeControl #volumeSlider .scale { + position: relative; + height: 12rem; + width: 100%; + top: 1rem; + left: 0; + right: 0; + margin: 0 auto +} + +#volumeControl #volumeSlider .scale-visual { + position: absolute; + top: 1rem; + left: 0; + right: 0; + width: .5rem; + height: 12rem; + margin: 0 auto; + border-radius: .5rem; + background: #8A8A8A; +} + +#volumeControl #volumeSlider .scale-visual.boosted { + background-image: -webkit-linear-gradient(90deg, #8A8A8A 45%, #fffa00 55%, #f00 100%); + background-image: -moz-linear-gradient(90deg, #8A8A8A 45%, #fffa00 55%, #f00 100%); + background-image: -o-linear-gradient(90deg, #8A8A8A 45%, #fffa00 55%, #f00 100%); + background-image: -ms-linear-gradient(90deg, #8A8A8A 45%, #fffa00 55%, #f00 100%); + background-image: linear-gradient(0deg, #8A8A8A 45%, #fffa00 55%, #f00 100%) +} + +#volumeControl #volumeSlider .nipple { + position: absolute; + left: 0; + right: 0; + height: 1rem; + width: 1rem; + background-color: #fff; + border-radius: 100%; + cursor: pointer +} + +#play-progress-text { + font-size: 1.25rem; + color: #fff; + margin-left: 1.5rem +} + +#subtitleMenu ul.listing, +#dubMenu ul.listing, +#playbackSpeedMenu ul.listing, +#castingControl ul.listing { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + height: 100%; + overflow: hidden; + overflow-y: auto; +} + +#subtitleMenu ul.listing li, +#dubMenu ul.listing li, +#playbackSpeedMenu ul.listing li, +#castingControl ul.listing li { + position: relative; + height: 2.5rem; + line-height: 2.5rem; + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + text-align: left; + padding: 0 1rem; + font-size: 1rem; + color: #fff; + margin: .5rem 0; + border-radius: .75rem; + cursor: pointer; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); + overflow: hidden; +} + +#subtitleMenu ul.listing li:not(.separator).selected, +#dubMenu ul.listing li:not(.separator).selected, +#playbackSpeedMenu ul.listing li:not(.separator).selected, +#castingControl ul.listing li:not(.separator).selected { + padding-right: 2rem; +} + +#subtitleMenu ul.listing li:not(.separator).selected:after, +#dubMenu ul.listing li:not(.separator).selected:after, +#playbackSpeedMenu ul.listing li:not(.separator).selected:after, +#castingControl ul.listing li:not(.separator).selected:after { + content: ""; + position: absolute; + top: 1rem; + right: 1rem; + height: .4rem; + width: .4rem; + border-radius: 100%; + background-color: #1564DC +} + +#subtitleMenu ul.listing li:not(.separator).selected, +#dubMenu ul.listing li:not(.separator).selected, +#playbackSpeedMenu ul.listing li:not(.separator).selected, +#castingControl ul.listing li:not(.separator).selected, +#subtitleMenu ul.listing li:not(.separator):hover, +#dubMenu ul.listing li:not(.separator):hover, +#playbackSpeedMenu ul.listing li:not(.separator):hover, +#castingControl ul.listing li:not(.separator):hover { + background-color: rgba(255, 255, 255, 0.05); + opacity: 1; + -ms-filter: none; + filter: none +} + +#subtitleMenu .separator, +#dubMenu .separator, +#playbackSpeedMenu .separator, +#castingControl .separator { + cursor: default; + font-size: .9rem; + color: #fff; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); +} + +#subtitleMenu .separator.bot, +#dubMenu .separator.bot, +#playbackSpeedMenu .separator.bot, +#castingControl .separator.bot { + border-top: 1px solid rgba(255, 255, 255, 0.2); + margin-top: .5rem; + margin-bottom: 1rem +} + +#dubMenu { + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: 12rem; +} + +#dubMenu .listing { + max-height: 20rem; + width: 100%; + overflow-y: auto +} + +.subtitles-container { + position: fixed; + bottom: 2.3vw; + left: 0; + right: 0; + margin: 0 auto; + min-height: 40px; + max-width: 100vh; + color: #fff; + font-weight: 600; + text-align: center; + z-index: 11; + cursor: default; +} + +.subtitles-container.xs { + font-size: 2.52vh +} + +.subtitles-container.s { + font-size: 3.24vh +} + +.subtitles-container.m { + font-size: 3.96vh +} + +.subtitles-container.l { + font-size: 4.68vh +} + +.subtitles-container.xl { + font-size: 5.4vh; + min-width: 50% +} + +.subtitles-container.xxl { + font-size: 6.12vh; + font-weight: bold; + min-width: 60% +} + +.subtitles-container.xxxl { + font-size: 7.44vh; + font-weight: bold; + min-width: 70% +} + +.subtitles-container[framecolour="blackwhite"] { + color: rgba(177, 116, 215, 0.5) +} + +.subtitles-container.rtl { + direction: rtl +} + +.subtitles-container:not(.hidden) { + bottom: calc(8rem + 1rem) +} + +#subtitle { + white-space: pre-wrap; + line-height: 1.4em; + box-decoration-break: clone; + -webkit-box-decoration-break: clone; + padding: 0 .2em; +} + +#subtitle:empty { + background-color: transparent !important +} + +.icon .popup { + font-size: 16px +} + +.clear { + clear: both +} + +#subtitleMenu { + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + height: 20rem; + min-width: 25rem; + overflow: hidden; +} + +#subtitleMenu .listing { + margin-top: 1rem; + padding-right: 1rem; + padding-bottom: 1rem +} + +#subtitleMenu .btn { + width: 18px; + height: 18px; + display: inline-block; + line-height: 18px; + font-size: 14px; + text-align: center +} + +#subtitleMenu .options { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: 17rem; + padding: 1rem; +} + +#subtitleMenu .options .headline { + font-size: .9rem; + font-weight: 700; + margin-bottom: .5rem; +} + +#subtitleMenu .options .headline.flashing { + -webkit-animation: flash ease-in 1.8s infinite; + -moz-animation: flash ease-in 1.8s infinite; + -o-animation: flash ease-in 1.8s infinite; + -ms-animation: flash ease-in 1.8s infinite; + animation: flash ease-in 1.8s infinite; + -webkit-mask: none !important +} + +#subtitleMenu .options .box { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + height: 3.5rem; + margin-top: 1rem; + border-radius: 3.5rem; + background-color: rgba(255, 255, 255, 0.05); +} + +#subtitleMenu .options .box .value { + position: relative; + height: 100%; + line-height: 3.5rem; + font-size: 1rem; + text-align: center +} + +#subtitleMenu .options .box .button { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 100%; + width: 3.5rem; + color: #fff; + border-radius: 100%; + background-color: rgba(255, 255, 255, 0.05); + cursor: pointer; +} + +#subtitleMenu .options .box .button .icon { + height: 1rem; + width: 1rem; + opacity: 1 !important; + -ms-filter: none !important; + filter: none !important +} + +#subtitleMenu .options .box .button:hover:not(.inactive) { + background-color: transparent +} + +#subtitleMenu .options .hint { + font-size: .9rem; + font-weight: 500; + margin: .5rem 0; + color: #fff; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) +} + +#subtitleMenu .options .title { + font-size: 25px +} + +#subtitleMenu .options .bottom-left { + max-width: 70% +} + +#subtitleMenu .options ul.select-squares { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + height: 3rem; + white-space: nowrap; + padding: .25rem 0; + overflow: hidden; + overflow-x: auto; +} + +#subtitleMenu .options ul.select-squares li { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 100%; + font-size: 1rem; + text-align: center; + padding: 0 .75rem; + margin-right: .5rem; + color: #fff; + border-radius: .5rem; + cursor: pointer; +} + +#subtitleMenu .options ul.select-squares li:hover { + background-color: rgba(255, 255, 255, 0.05) +} + +#subtitleMenu .options ul.select-squares li.selected { + position: relative; + background-color: #8A8A8A; + color: #fff +} + +#subtitleMenu .languages { + height: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding-top: .5rem; + padding-bottom: 1.5rem; + width: 14rem; +} + +#subtitleMenu .languages .toggle { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + cursor: pointer; +} + +#subtitleMenu .languages .toggle input[type=checkbox] { + margin: 0; + margin-right: .75rem; + cursor: pointer +} + +#subtitleMenu .languages .toggle label { + font-size: 1rem; + font-weight: 700; + cursor: pointer +} + +#videoPlayer, +.videoPlayer { + z-index: 0; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: 100%; + margin: auto +} + +.hideCursor #videoPlayer, +.hideCursor #subtitle { + cursor: url("data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="), auto +} + +@-moz-keyframes flash { + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 50% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } +} + +@-webkit-keyframes flash { + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 50% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } +} + +@-o-keyframes flash { + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 50% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } +} + +@keyframes flash { + 0% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } + 50% { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) + } + 100% { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) + } +} + +.ep-details { + display: flex; + align-items: center; + justify-content: center; + padding: 0 1.5rem; + margin-bottom: 1.5rem; +} + +.ep-details .icon { + height: 2.5rem; + color: #fff; + font-size: 35px; + margin-right: 1rem +} + +.ep-details .text-container { + display: flex; + flex-direction: column; + align-items: flex-start; +} + +.ep-details .text-container .title { + color: #fff; + font-size: 1rem; + font-weight: 700; + text-transform: uppercase +} + +.ep-details .text-container .message { + color: #fff; + font-size: .8rem; + font-weight: 700; + opacity: .5 +} + +.no-streams { + display: flex; + align-items: center; + justify-content: center; + height: 4rem; + padding: 0 1.5rem; + font-size: 1rem; + font-weight: 600; + color: #fff; + text-align: center +} + +.addons-select { + margin: 0 1.5rem; + margin-bottom: 1rem; +} + +.addons-select .icon { + right: 2.5rem !important +} + +.streams-quality.blocked { + display: block !important +} + +.streams-container { + flex: auto; + position: relative; + display: flex; + justify-content: flex-start; + flex-direction: column; + height: 100%; + width: 29rem; + padding-top: 1.5rem; + overflow: hidden; +} + +.streams-container .streams { + flex: 1 1 100%; + position: relative; + display: flex; + flex-direction: column; + width: 100%; + padding: .5rem 1.5rem; + overflow: hidden; + overflow-y: auto; +} + +.streams-container .streams .stream { + flex: none; + position: relative; + min-height: 6rem; + display: flex; + flex-direction: row; + align-items: center; + padding: .75rem; + margin-bottom: .5rem; + border-radius: .75rem; + outline: none; + cursor: pointer; + overflow: hidden; +} + +.streams-container .streams .stream:hover { + background: rgba(255, 255, 255, 0.05); +} + +.streams-container .streams .stream:hover .description { + -webkit-mask-image: radial-gradient(circle at right center, transparent 2rem, #000 2rem); + -webkit-mask-position: -1.75rem center; + -webkit-mask-repeat: no-repeat +} + +.streams-container .streams .stream:hover .stream-play { + opacity: 1 +} + +.streams-container .streams .stream:focus { + /* box-shadow: 0 0 0 .17rem #fff */ +} + +.streams-container .streams .stream .stream-content { + flex: 0 1 100%; + position: relative; + height: 100%; + display: flex; + flex-direction: row; + overflow: hidden; +} + +.streams-container .streams .stream .stream-content .name { + flex: 0 0 6rem; + position: relative; + display: flex; + flex-direction: column; + justify-content: flex-start; + margin-right: 1rem; + font-size: 1rem; + font-weight: 500; +} + +.streams-container .streams .stream .stream-content .name .progress { + position: absolute; + bottom: 0; + left: 0; + height: .4rem; + width: 100%; + margin-top: .5rem; + border-radius: .4rem; + background: rgba(255, 255, 255, 0.05); + overflow: hidden; +} + +.streams-container .streams .stream .stream-content .name .progress .bar { + height: 100%; + background-color: #8A8A8A +} + +.streams-container .streams .stream .stream-content .description { + position: relative; + display: flex; + align-items: flex-start; + width: 100%; + white-space: pre; + text-overflow: ellipsis; + overflow: hidden; +} + +.streams-container .streams .stream .stream-content .description .inner { + display: inline-block; + font-size: .9rem; + font-weight: 500 +} + +.streams-container .streams .stream .stream-content .description:hover .inner { + transform: translateX(-100%); + transition: transform 5s linear +} + +.streams-container .streams .stream .stream-play { + flex: none; + position: absolute; + right: .75rem; + display: flex; + align-items: center; + justify-content: center; + height: 3rem; + width: 3rem; + border-radius: 100%; + background-color: #1564DC; + opacity: 0; +} + +.streams-container .streams .stream .stream-play .icon { + flex: none; + height: 1.5rem; + width: 1.5rem +} + +.streams-container .more-addons { + flex: none; + margin: 1rem 1.5rem 1.5rem 1.5rem +} + +.streams-loader { + flex: none; + height: 5rem; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.streams-loader .progress-bar-header { + margin-bottom: .75em; + font-size: 1rem; + font-weight: 500; + white-space: pre; + text-overflow: ellipsis; + text-align: center; + text-transform: uppercase; + overflow: hidden +} + +.streams-loader .progress-bar { + height: 5px; + border-radius: 5px; + background-color: #8A8A8A +} + +.binge-group { + z-index: 98; + position: absolute; + width: 30rem; + bottom: calc(7rem + 1rem); + right: 2rem; + display: flex; + flex-direction: column; + padding: 1.5rem; + border-radius: .75rem; + background-color: #2F2F2F; + box-shadow: 0 0 2rem 0 rgba(0, 0, 0, 0.4); + backdrop-filter: blur(15px); + animation: slideIn 1s ease-in-out; +} + +.binge-group .title { + font-size: 1.25rem; + font-weight: bold; + color: #fff; + margin-bottom: 1.5rem; +} + +.binge-group .title .accent { + color: #8A8A8A; + margin-left: .25rem +} + +.binge-group .metadata { + display: flex; + margin-bottom: 1rem; +} + +.binge-group .metadata .poster { + height: 12rem; + width: calc(12rem / (40 / 27)); + flex-shrink: 0; + margin-right: 1.5rem; + border-radius: .75rem; + background-size: cover; + background-position: center +} + +.binge-group .metadata .info { + display: flex; + flex-direction: column; + color: #fff; +} + +.binge-group .metadata .info .name { + font-size: 1rem; + margin-bottom: .5rem +} + +.binge-group .metadata .info .description { + display: -webkit-box; + -webkit-line-clamp: 6; + -webkit-box-orient: vertical; + text-overflow: ellipsis; + overflow: hidden; + font-size: 1rem; + font-style: italic; + opacity: .7 +} + +.binge-group .buttons { + display: flex; + justify-content: space-evenly; +} + +.binge-group .buttons .button { + height: 3.5rem; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + border-radius: 3.5rem; + font-family: PlusJakartaSans, Arial, Helvetica, sans-serif; + font-size: 1rem; + font-weight: 500; + color: #fff; + line-height: 3.5rem; + background-color: #8A8A8A; + outline: none; +} + +.binge-group .buttons .button:first-child { + margin-right: 1rem +} + +.binge-group .buttons .button.clear { + background-color: transparent; +} + +.binge-group .buttons .button.clear:hover { + background-color: $tertiary-foreground-color !important +} + +.binge-group .buttons .button .icon { + margin-right: 1rem +} + +.binge-group .buttons .button:hover { + background-color: transparent; + box-shadow: 0 0 0 .17rem #8A8A8A +} + +.binge-group .buttons .button:focus { + /* box-shadow: 0 0 0 .17rem #fff */ +} + +@-moz-keyframes slideIn { + 0% { + transform: translateX(100%) + } + 100% { + transform: translateX(0) + } +} + +@-webkit-keyframes slideIn { + 0% { + transform: translateX(100%) + } + 100% { + transform: translateX(0) + } +} + +@-o-keyframes slideIn { + 0% { + transform: translateX(100%) + } + 100% { + transform: translateX(0) + } +} + +@keyframes slideIn { + 0% { + transform: translateX(100%) + } + 100% { + transform: translateX(0) + } +} + +#playbackSpeedControl { + text-align: center; +} + +#playbackSpeedControl .popup { + flex-direction: column; + width: 12rem; +} + +#playbackSpeedControl .popup ul { + width: 100% +} + +.modal-dialog { + height: 100%; + width: 100%; + position: absolute; + top: 0; + display: flex; + align-items: center; + justify-content: center; +} + +.modal-dialog .modal-backdrop { + position: absolute; + height: 100%; + width: 100%; + background: rgba(0, 0, 0, 0.5) +} + +.modal-dialog .modal-container { + box-sizing: border-box; + position: relative; + display: flex; + flex-direction: column; + gap: 1rem; + height: auto; + width: 35em; + max-height: 90%; + overflow-y: auto; + font-size: 18px; + padding: 3rem 2rem 2rem; + border-radius: 4px; + color: $primary-foreground-color; + background-color: $primary-background-color; +} + +.modal-dialog .modal-container .modal-close { + position: absolute; + top: 1rem; + right: 1rem; + display: flex; + align-items: center; + justify-content: center; + align-self: flex-end; + height: 2rem; + width: 2rem; + cursor: pointer; + opacity: .5; +} + +.modal-dialog .modal-container .modal-close:hover { + opacity: 1 +} + +.modal-dialog .modal-container .modal-content { + display: flex; + flex-direction: column; +} + +.modal-dialog .modal-container .modal-content title { + display: block; + margin-bottom: 1rem +} + +.modal-dialog .modal-container .modal-content .modal-message { + font-style: italic +} + +.modal-dialog .modal-container .buttons-container { + display: flex; + justify-content: space-between; + padding-top: 2rem; + margin: 0 -.5rem; +} + +.modal-dialog .modal-container .buttons-container .modal-button { + display: flex; + align-items: center; + justify-content: center; + flex: 1; + background-color: #fff; + color: #a8a8a8; + font-weight: 600; + padding: 1.2rem; + margin: 0 .5rem; + cursor: pointer; +} + +.modal-dialog .modal-container .buttons-container .modal-button.accent { + color: #fff; + background-color: #22b467; +} + +.modal-dialog .modal-container .buttons-container .modal-button.accent:hover { + filter: brightness(115%) +} + +.modal-dialog .modal-container .buttons-container .modal-button:not(.accent):hover { + background-color: rgba(0, 0, 0, 0.1) +} + +.modal-dialog .modal-container .buttons-container .modal-button:focus { + /* outline: $outline-size solid; + outline-offset: -4px */ +} + +.loading-container { + position: relative; + display: flex; + align-items: center; + justify-content: center; + height: 100%; + width: 100%; + font-size: 1.5rem; + color: #fff; +} + +.loading-container .loading { + position: relative; + height: 6rem; + width: 6rem; + overflow: visible; +} + +.loading-container .loading .ripple { + position: absolute; + height: 100%; + width: 100%; + border: 4px solid #fff; + opacity: 1; + border-radius: 50%; + transform: scale(0); + opacity: 0; + will-change: opacity, transform; + animation: ripple 1s cubic-bezier(0, .2, .8, 1) infinite +} + +.loading-container .loading .ripple:nth-child(2) { + animation-delay: -.5s +} + +@-moz-keyframes ripple { + 0% { + transform: scale(0); + opacity: 0 + } + 4.9% { + opacity: 0 + } + 5% { + opacity: 1 + } + 100% { + transform: scale(1.1); + opacity: 0 + } +} + +@-webkit-keyframes ripple { + 0% { + transform: scale(0); + opacity: 0 + } + 4.9% { + opacity: 0 + } + 5% { + opacity: 1 + } + 100% { + transform: scale(1.1); + opacity: 0 + } +} + +@-o-keyframes ripple { + 0% { + transform: scale(0); + opacity: 0 + } + 4.9% { + opacity: 0 + } + 5% { + opacity: 1 + } + 100% { + transform: scale(1.1); + opacity: 0 + } +} + +@keyframes ripple { + 0% { + transform: scale(0); + opacity: 0 + } + 4.9% { + opacity: 0 + } + 5% { + opacity: 1 + } + 100% { + transform: scale(1.1); + opacity: 0 + } +} + +#event-modal .container { + z-index: 99; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + display: flex; + align-items: center; + justify-content: center; +} + +#event-modal .container .backdrop { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + backdrop-filter: blur(10px) +} + +#event-modal .container .content { + position: relative; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 1rem; + width: 36rem; + padding: 12rem 4rem 4rem; + text-align: center; + border-radius: .75rem; + background-color: #2F2F2F; + box-shadow: 0 0 2rem 0 #1564DC; +} + +#event-modal .container .content .close-button { + position: absolute; + top: 1rem; + right: 1rem; + display: flex; + align-items: center; + justify-content: center; + height: 2rem; + width: 2rem; + opacity: .5; + cursor: pointer; +} + +#event-modal .container .content .close-button .icon { + height: 1.75rem; + width: 1.75rem +} + +#event-modal .container .content .close-button:hover { + opacity: 1 +} + +#event-modal .container .content img { + z-index: 0; + position: absolute; + top: -10rem; + height: 30rem; + width: 30rem; + object-fit: contain +} + +#event-modal .container .content .title { + z-index: 1; + font-size: 1.4rem; + font-family: PlusJakartaSans; + color: #fff +} + +#event-modal .container .content .message { + z-index: 1; + font-size: 1.2rem; + font-family: PlusJakartaSans; + color: #fff; + opacity: .5 +} + +#event-modal .container .content .addon-container { + z-index: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 1rem; + margin-top: 1rem; +} + +#event-modal .container .content .addon-container .icon { + height: 2.5rem; + width: 2.5rem; + color: #8A8A8A +} + +#event-modal .container .content .addon-container .name { + font-size: 1.2rem; + font-family: PlusJakartaSans; + color: #fff; + opacity: .8 +} + +#event-modal .container .content .button { + z-index: 1; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + gap: .75rem; + height: 3.5rem; + border-radius: 3.5rem; + padding: 0 3rem; + margin-top: 2rem; + font-size: 1rem; + font-family: PlusJakartaSans; + font-weight: 700; + color: #8A8A8A; + background-color: #fff; +} + +#event-modal .container .content .button .icon { + height: 1.25rem; + width: 1.25rem +} + +#event-modal .container .content .button.install { + color: #fff; + background-color: #1564DC +} + +#event-modal .container .content .button:hover { + box-shadow: 0 0 0 .17rem #fff inset; + background-color: transparent +} + +#detail { + position: absolute; + top: 0; + left: 0; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + height: 100%; + overflow: hidden; +} + +#detail.visible { + z-index: 99 +} + +#detail .background { + z-index: 0; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; +} + +#detail .background .overlay { + z-index: 1; + position: absolute; + height: 100%; + width: 100%; + background-color: rgba(12, 12, 17, 0.65) +} + +#detail .background .image { + z-index: 0; + position: absolute; + height: 100%; + width: 100%; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + background-repeat: no-repeat +} + +#detail .detail-error { + z-index: 1; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 1rem; +} + +#detail .detail-error img { + width: 10rem +} + +#detail .detail-error .info-text { + max-width: 25rem; + font-size: 1.5rem; + font-weight: 500; + color: #fff; + text-align: center +} + +#detail .content { + z-index: 1; + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 0 .5rem; + padding-bottom: 3rem; + padding-left: calc(var(--navbar-width) - 0.5rem); +} + +#detail .content .logo { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: start; + -moz-box-pack: start; + -o-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + height: 8rem; + max-width: 30rem; + padding: 0 .5rem; + margin-bottom: 2rem; + background-color: transparent; + overflow: hidden; +} + +#detail .content .logo img { + height: 100%; + width: 100%; + object-fit: contain; + object-position: center left; + font-size: 3rem; + font-weight: bold; + line-height: 100% +} + +#detail .content .details { + max-width: 35rem; + position: relative; + margin-bottom: 1rem; + overflow-y: auto; + padding: 0 .5rem; +} + +#detail .content .details .info { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: start; + -moz-box-pack: start; + -o-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + width: 25rem; + margin-bottom: 2rem; +} + +#detail .content .details .info li { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-right: 4rem; + font-size: 1.1rem; + font-weight: 600; +} + +#detail .content .details .info li .icon { + height: 3rem; + width: 3rem; +} + +#detail .content .details .info li .icon.imdb { + margin-left: .5rem; + color: #f5c518 +} + +#detail .content .details .info li.external { + cursor: pointer +} + +#detail .content .details .section { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-bottom: 2rem; +} + +#detail .content .details .section .title { + font-size: .9rem; + font-weight: 700; + text-transform: uppercase; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); + margin-bottom: .5rem +} + +#detail .content .details .section .links { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + -o-box-lines: multiple; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +#detail .content .details .section .links .link { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 2.2rem; + font-size: 1rem; + font-weight: 500; + padding: 0 1.5rem; + margin-right: .75rem; + margin-bottom: .75rem; + border-radius: 2rem; + background-color: rgba(255, 255, 255, 0.05); + outline: none; + cursor: pointer; + backdrop-filter: blur(10px); +} + +#detail .content .details .section .links .link:hover { + background-color: rgba(255, 255, 255, 0.1) +} + +#detail .content .details .section .links .link:focus { + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff */ +} + +#detail .content .details .section .text { + font-size: 1rem; + line-height: 1.5rem +} + +#detail .content .action-buttons { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + -o-box-lines: multiple; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: 0 .5rem; +} + +#detail .content .action-buttons .button-b { + font-size: .9rem; + padding: 0 2rem; + margin-right: 1rem; + margin-bottom: 1rem; + backdrop-filter: blur(10px); +} + +#detail .content .action-buttons .button-b .icon { + height: 1.5rem; + width: 1.5rem; + margin-right: 1rem +} + +#detail .content .action-buttons .button-b:hover { + /* -webkit-box-shadow: 0 0 0 .17rem #fff inset; + box-shadow: 0 0 0 .17rem #fff inset; */ + background-color: #0d52b9 +} + +#detail .content .spacing { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1 +} + +#detail .cinema-tickets { + font-size: 16px; + text-align: center; + width: 140px; + height: 26px; + padding: 7px; + font-weight: bold; + margin: 10px auto; + padding: 9px 6px; + background-color: #f6c700; +} + +#detail .cinema-tickets:hover, +#detail .cinema-tickets:focus { + background-color: #f6c700 !important +} + +#detail .play-button, +#detail .movie-nostream { + position: absolute; + top: 31%; + right: 17%; + z-index: 1000; +} + +#detail .play-button span, +#detail .movie-nostream span { + text-transform: uppercase; + font-size: 18px; + margin-top: 10px; + display: inline-block +} + +#detail .movie-notavailable { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 3rem; + color: #fff; + margin-bottom: 1rem; +} + +#detail .movie-notavailable .icon { + height: 2.5rem; + width: 2.5rem; + margin-right: 1rem +} + +#detail .movie-notavailable .message { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: start; + -moz-box-align: start; + -o-box-align: start; + -ms-flex-align: start; + -webkit-align-items: flex-start; + align-items: flex-start; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +#detail .movie-notavailable .message h3 { + font-size: 1rem; + text-transform: uppercase +} + +#detail .movie-notavailable .message h4 { + font-size: .8rem; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) +} + +#detail .guide { + position: absolute; + bottom: 20px; + height: 90px; + left: 20px; + right: 402px; + overflow: auto; + overflow-y: hidden; + white-space: nowrap; +} + +#detail .guide .programme { + display: inline-block; + overflow: hidden; + height: 100%; + -webkit-transition: all 0.3s ease-in; + -moz-transition: all 0.3s ease-in; + -o-transition: all 0.3s ease-in; + -ms-transition: all 0.3s ease-in; + transition: all 0.3s ease-in; + position: relative; +} + +#detail .guide .programme .inner { + position: absolute; + top: 4px; + bottom: 3px; + left: 3px; + right: 3px; + padding: 5px; + background-color: rgba(99, 63, 126, 0.3) +} + +#detail .guide .programme h4 { + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden +} + +#detail .guide .programme.current .inner { + background-color: rgba(99, 63, 126, 0.5) +} + +#detail .guide .programme.small>.inner>* { + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0) +} + +#detail .guide .programme:hover { + min-width: 160px; +} + +#detail .guide .programme:hover>.inner>* { + opacity: 1; + -ms-filter: none; + filter: none +} + +#addons { + position: relative; + height: 100%; + width: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column +} + +#addonPromptModal { + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +#addonPromptModal.visible { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex +} + +#addonPromptModal .ucfirst { + text-transform: capitalize +} + +#addonPromptModal .modal { + position: relative; + height: auto; + width: 35em; + max-height: 90%; + font-size: 1rem; + border-radius: .75rem; + color: #fff; + background-color: #2F2F2F; + overflow-y: auto; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + -moz-perspective: 1000; + -ms-perspective: 1000; + perspective: 1000; + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -o-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); +} + +#addonPromptModal .modal .modal-bg { + padding: 2rem 2.5rem; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + background-position: center; + background-color: #2F2F2F; + background-blend-mode: color +} + +#addonPromptModal .modal p, +#addonPromptModal .modal li { + font-weight: 500 +} + +#addonPromptModal .modal a { + cursor: pointer; +} + +#addonPromptModal .modal a:hover { + text-decoration: underline +} + +#addonPromptModal .modal .nowrap { + white-space: nowrap; + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis +} + +#addonPromptModal .modal .title { + color: #fff; + text-align: left; + margin: 25px 0; + max-height: 2.5em; + overflow: hidden; +} + +#addonPromptModal .modal .title small { + font-size: .5em +} + +#addonPromptModal .modal .title img { + height: 1.2em; + margin-right: .4em; + float: left +} + +#addonPromptModal .modal .close { + color: #fff; + top: 1.5em; + right: 1.5em +} + +#addonPromptModal .buttons { + position: static; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + margin: 0; +} + +#addonPromptModal .buttons .button { + margin: 2em 0 0 0; + -webkit-box-flex: .3; + -moz-box-flex: .3; + -o-box-flex: .3; + -ms-box-flex: .3; + box-flex: .3; + -webkit-flex-grow: .3; + flex-grow: .3; + font-size: 1rem; + font-weight: 600; + outline: none; +} + +#addonPromptModal .buttons .button.install-button { + color: #fff; + background-color: #1564DC; +} + +#addonPromptModal .buttons .button.install-button:hover { + background-color: transparent; + -webkit-box-shadow: 0 0 0 .17rem #1564DC; + box-shadow: 0 0 0 .17rem #1564DC +} + +#addonPromptModal .buttons .button:focus { + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff */ +} + +#addonsCatalog { + position: relative; + height: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: start; + -moz-box-align: start; + -o-box-align: start; + -ms-flex-align: start; + -webkit-align-items: flex-start; + align-items: flex-start +} + +#addonsCatalog .options { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + gap: 1rem; + padding: 0 1rem; + margin-bottom: 1rem; +} + +#addonsCatalog .options .filters { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; +} + +#addonsCatalog .options .filters .segments { + margin-right: 2.5rem +} + +#addonsCatalog .options .addon-search { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 2.5rem; + background-color: rgba(255, 255, 255, 0.05); + border: none; + border-radius: 2.5rem; + padding: 0 1.5rem; + margin: 0; + outline: none; + overflow: hidden; +} + +#addonsCatalog .options .addon-search:focus { + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff */ +} + +#addonsCatalog .options .addon-search .icon { + height: 1.25rem; + width: 1.25rem; + color: #fff; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) +} + +#addonsCatalog .options .addon-search .addon-search-input { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + -ms-box-flex: 1; + box-flex: 1; + -webkit-flex-grow: 1; + flex-grow: 1; +} + +#addonsCatalog .options .addon-search .addon-search-input input[type="text"] { + width: 100%; + margin: 0; + padding: 0; + border: none; + font-size: 1rem; + font-weight: 500; + color: #fff; + background-color: transparent +} + +#addonsCatalog .options .addon-search .submit { + position: absolute; + left: -9999px; + width: 1px; + height: 1px; + border: none; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +#addonsCatalog .content { + position: relative; + height: 100%; + width: 100%; + padding: 0 1rem; + padding-top: 1rem; + overflow-y: auto; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + -moz-perspective: 1000; + -ms-perspective: 1000; + perspective: 1000; + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -o-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); +} + +#addonsCatalog .content #top-bar { + background-color: #3a497d; + height: 52px; + border-bottom: 1px solid #3a497d; + position: fixed; + top: 0; + width: 100%; + z-index: 999; +} + +#addonsCatalog .content #top-bar h1 { + font-size: 20px; + font-weight: 300; + text-transform: initial; + text-align: initial; + margin: 0; + position: absolute; + top: 10px; + left: 20px; + padding: 5px 0 5px +} + +#addonsCatalog .content #top-bar .title { + padding: 5px 0 5px 45px; + background-image: url("http://www.strem.io/images/addons/stremio-logo.png"); + background-position: -1px -2px; + background-repeat: no-repeat +} + +#addonsCatalog .content #top-bar .label { + font-size: 24px; + color: rgba(255, 255, 255, 0.55); + font-weight: 300; + margin: 0 10px 20px; + display: inline-block +} + +.addon { + position: relative; + padding: 2rem; + margin-bottom: 1rem; + border-radius: .75rem; + background-color: rgba(255, 255, 255, 0.05); + outline: none; +} + +.addon:focus { + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff */ +} + +.addon .desc-row { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.addon .desc-row .icon { + font-size: .8em; + width: 1em; + height: 1em; + -webkit-background-size: contain; + -moz-background-size: contain; + background-size: contain; + background-position: center bottom; + margin: 0 1em +} + +.addon .desc-row .icon-ic_check { + color: #19fbb8 +} + +.addon .desc-row .icon-ic_warning { + color: #f6c700 +} + +.addon .addon-content { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex +} + +.addon .icon { + display: inline-block +} + +.addon .icon.icon-online, +.addon .icon.icon-offline { + width: .5em; + height: .5em; + margin: .5em 1em; + border-radius: 50% +} + +.addon .icon.icon-online { + background-color: #19fbb8 +} + +.addon .icon.icon-offline { + background-color: #fb5e19 +} + +.addon .heading { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + margin-bottom: .5rem; +} + +.addon .heading .title { + font-size: 1.5rem +} + +.addon .left-pane { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto +} + +.addon .right-pane { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 0 0 15rem; + -ms-flex: 0 0 15rem; + flex: 0 0 15rem +} + +.addon .addon-logo { + float: left; + width: 7rem; + height: 7rem; + -webkit-background-size: contain; + -moz-background-size: contain; + background-size: contain; + background-position: center center; + background-repeat: no-repeat; + border-radius: .75rem; + margin: 0 2rem 0 0; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + -webkit-mask-size: contain; + mask-repeat: no-repeat; + mask-position: center; + mask-size: contain; + overflow: hidden; +} + +.addon .addon-logo img { + width: 100%; + height: 100%; + object-fit: contain +} + +.addon .description { + overflow: hidden; + line-height: 1.3em; +} + +.addon .description span { + font-size: 15px; + line-height: 1.3em; + font-weight: 300 +} + +.addon .buttons { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + position: relative; + -webkit-transition: opacity 0.25s ease-in; + -moz-transition: opacity 0.25s ease-in; + -o-transition: opacity 0.25s ease-in; + -ms-transition: opacity 0.25s ease-in; + transition: opacity 0.25s ease-in; +} + +.addon .buttons .remove { + background: none; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); +} + +.addon .buttons .remove:hover { + -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff +} + +.addon .buttons .install { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + background-color: #1564DC; + color: #fff +} + +.addon .buttons .configure { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + min-width: 3rem; + background-color: #1564DC; + color: #fff; +} + +.addon .buttons .configure.small { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + margin-right: .75rem +} + +.addon .buttons>a { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 3rem; + border-radius: 3rem; + font-size: 1rem; + font-weight: 600; + text-align: center; + cursor: pointer; + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + -ms-box-flex: 1; + box-flex: 1; + -webkit-flex-grow: 1; + flex-grow: 1; + overflow: hidden; +} + +.addon .buttons>a .icon { + height: 1.5rem; + width: 1.5rem +} + +.addon .buttons>a .label { + margin-left: .5rem +} + +.addon .buttons>a:not(.remove):hover { + background-color: transparent; + -webkit-box-shadow: 0 0 0 .17rem #1564DC; + box-shadow: 0 0 0 .17rem #1564DC +} + +.addon .background { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80); + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + background-position: center +} + +.addon .addon-type { + font-size: 1rem; + margin-bottom: .5rem; + white-space: nowrap; + overflow: hidden; + text-transform: capitalize; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + opacity: .4; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + filter: alpha(opacity=40) +} + +.addon .version { + font-size: 1rem; + margin: 0 1em; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) +} + +.addon .share { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 3rem; + margin-top: 1.5rem; + font-size: 1rem; + font-weight: 500; + cursor: pointer; +} + +.addon .share .icon { + height: 1.25rem; + width: 1.25rem; + margin-right: .75rem +} + +#introModal { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + padding: 0; + background-color: #100f1e; +} + +#introModal .background { + z-index: -1; + position: fixed; + top: -5%; + bottom: -5%; + left: -5%; + right: -5%; + background-color: #0c0c11; + background-position: bottom left, top right; + -webkit-background-size: 53%, 54%; + -moz-background-size: 53%, 54%; + background-size: 53%, 54%; + background-repeat: no-repeat; + filter: blur(6rem) +} + +#introModal .button { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 3.5rem; + width: 100%; + border-radius: 4rem; + margin-bottom: 1rem; + padding: 0 1rem; + font-family: PlusJakartaSans, Arial, Helvetica, sans-serif; + font-size: 1rem; + font-weight: 500; + text-align: center; + color: #fff; + -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff; + background-color: transparent; + cursor: pointer; +} + +#introModal .button.inactive { + opacity: .55; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=55)"; + filter: alpha(opacity=55); + cursor: default +} + +#introModal .button.fb { + font-weight: 700; + border: none; + color: #fff !important; + background-color: #1877f2 !important; + -webkit-box-shadow: 0 0 0 .17rem #1877f2; + box-shadow: 0 0 0 .17rem #1877f2; +} + +#introModal .button.fb .icon { + height: 2rem; + margin-right: .5rem +} + +#introModal .button.fb:hover { + color: #1877f2 !important; + background-color: transparent !important +} + +#introModal .button:hover { + font-weight: 700; + color: #0c0c11; + border: none; + background-color: #fff +} + +#intro { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + height: 100%; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; + text-align: center; + overflow-y: auto; + overflow-x: hidden; +} + +#intro .separator { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + height: 2rem; + margin: auto +} + +#intro .pres { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + z-index: 1; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +#intro .pres .logo { + height: 4.5rem; + margin-bottom: 3rem; + object-fit: contain +} + +#intro .pres h1 { + font-size: 2.5rem; + font-weight: 600; + text-transform: inherit; + margin: 0 +} + +#intro .pres h2 { + font-size: 1.25rem; + font-weight: 400; + margin: 0; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); + text-transform: lowercase; +} + +#intro .pres h2:first-letter { + text-transform: uppercase +} + +#intro .login-form { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: start; + -moz-box-align: start; + -o-box-align: start; + -ms-flex-align: start; + -webkit-align-items: flex-start; + align-items: flex-start; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + -o-box-lines: multiple; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-top: 3rem; +} + +#intro .login-form .form { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: 18rem; + margin: 1rem 1.25rem; +} + +#intro .login-form .form .login-user { + margin-bottom: .75rem +} + +#intro input:not([type=checkbox]) { + position: relative; + height: 3.5rem; + width: 100%; + padding: 0 1.75rem; + margin-bottom: 1rem; + font-size: 1rem; + font-weight: 500; + border: none +} + +#intro .alt-opts { + width: 18rem; + margin: 1rem 1.25rem +} + +#intro .accept { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + padding: .25rem; + margin-bottom: .5rem; + text-align: left; +} + +#intro .accept input { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + margin: 0; + margin-right: .75rem +} + +#intro .accept span { + font-size: .9rem; + padding: .1rem +} + +#intro .accept-link { + cursor: pointer +} + +#intro .error-label { + font-size: 1rem; + text-align: center; + color: #f6c700; + margin-bottom: 1.5rem; +} + +#intro .error-label .wrong-pass { + font-size: 1rem +} + +#intro .error-label a { + text-decoration: underline; + cursor: pointer +} + +#intro .import, +#intro .accept { + font-size: 1rem; + font-weight: 500; +} + +#intro .import b, +#intro .accept b { + font-weight: normal; + cursor: pointer +} + +#intro .accept .acc { + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) +} + +#intro .login-fbuser { + margin: 60px auto 25px auto +} + +#intro .login-fbuser .avatar { + height: 80px; + width: 80px; + border-radius: 50%; + margin: 10px auto; + -webkit-background-size: 100% 100%; + -moz-background-size: 100% 100%; + background-size: 100% 100% +} + +#intro .login-fbuser .name { + text-align: center; + font-size: 16px +} + +#intro .accept-fb { + margin-top: 10px; + text-align: center; +} + +#intro .accept-fb .acc { + opacity: .6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + filter: alpha(opacity=60) +} + +#intro .loader { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + display: block; + z-index: 100; + background: rgba(0, 0, 0, 0.8); +} + +#intro .loader .loader-actions { + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, calc(-50% + 120px)); + -moz-transform: translate(-50%, calc(-50% + 120px)); + -o-transform: translate(-50%, calc(-50% + 120px)); + -ms-transform: translate(-50%, calc(-50% + 120px)); + transform: translate(-50%, calc(-50% + 120px)); +} + +#intro .loader .loader-actions .label { + font-size: 1.25rem +} + +#intro .loader .loader-actions .button { + margin-top: 2rem +} + +#discover { + position: relative; + height: 100%; + width: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; +} + +#discover .content { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + height: 100%; + width: 100%; +} + +#discover .content .filters { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + padding-left: 1rem; + margin-bottom: 1rem; +} + +#discover .content .filters .custom-select { + margin-right: 1rem +} + +#discover .content .items { + position: relative; + height: 100%; + width: 100%; + display: grid; + grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr)); + gap: 1.5rem; + -ms-flex-line-pack: start; + -webkit-align-content: flex-start; + align-content: flex-start; + padding: .5rem 1rem 1rem 1rem; + overflow-y: auto; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + -moz-perspective: 1000; + -ms-perspective: 1000; + perspective: 1000; + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -o-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); +} + +#discover .content .items li { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto; + position: relative; + height: calc(10rem / (27 / 40)); + width: 10rem; + border-radius: .75rem; + outline: none; +} + +#discover .content .items li:hover { + /* -webkit-box-shadow: 0 0 0 .12rem #fff; + box-shadow: 0 0 0 .12rem #fff */ +} + +#discover .content .items li:focus { + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff */ +} + +#discover .content .items.square li { + height: 10rem +} + +#discover .info-box { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 0 0 27rem; + -ms-flex: 0 0 27rem; + flex: 0 0 27rem; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + height: 100%; + margin-left: 1rem; + border-radius: .75rem 0 0 0; + overflow: hidden; +} + +#discover .info-box .bkg { + position: absolute; + top: -10px; + right: -10px; + left: -10px; + bottom: -10px; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + background-position: center; + background-repeat: no-repeat; + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80); + filter: blur(15px) +} + +#discover .info-box .overlay { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + background: rgba(12, 12, 17, 0.5) +} + +#discover .info-box .content { + z-index: 1; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + padding-bottom: 2.5rem; +} + +#discover .info-box .content .details { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + overflow-y: auto; + padding: 0 2.5rem; + padding-top: 3rem; +} + +#discover .info-box .content .details .logo { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 6rem; + margin-bottom: 1.5rem; + overflow: hidden; +} + +#discover .info-box .content .details .logo img { + height: 100%; + width: 100%; + object-fit: contain +} + +#discover .info-box .content .details .info { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + height: 2rem; + margin-bottom: 2rem; +} + +#discover .info-box .content .details .info li { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + font-size: 1.1rem; + font-weight: 600; +} + +#discover .info-box .content .details .info li .icon { + height: 3rem; + width: 3rem; +} + +#discover .info-box .content .details .info li .icon.imdb { + margin-left: .5rem; + color: #f5c518 +} + +#discover .info-box .content .details .info li.external { + cursor: pointer +} + +#discover .info-box .content .details .description { + font-size: 1rem; + font-weight: 400; + line-height: 1.5rem; + padding-bottom: 2rem +} + +#discover .info-box .content .details .section { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin: 1rem 0; +} + +#discover .info-box .content .details .section .title { + font-size: .9rem; + font-weight: 700; + text-transform: uppercase; + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); + margin-bottom: .5rem +} + +#discover .info-box .content .details .section .links { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + -o-box-lines: multiple; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +#discover .info-box .content .details .section .links .link { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 2.2rem; + font-size: 1rem; + font-weight: 500; + padding: 0 1.5rem; + margin-right: .75rem; + margin-bottom: .75rem; + border-radius: 2rem; + background-color: rgba(255, 255, 255, 0.05); + outline: none; + cursor: pointer; +} + +#discover .info-box .content .details .section .links .link:hover { + background-color: rgba(255, 255, 255, 0.1) +} + +#discover .info-box .content .details .section .links .link:focus { + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff */ +} + +#discover .info-box .content .details .section .text { + max-width: 35rem; + font-size: 1rem +} + +#discover .info-box .content .actions { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + gap: 1.5rem; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + -o-box-lines: multiple; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: 0 2.5rem; + padding-top: 1rem; +} + +#discover .info-box .content .actions .button { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + height: 3.5rem; + width: 3.5rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + border-radius: 100%; + background-color: rgba(255, 255, 255, 0.05); + outline: none; +} + +#discover .info-box .content .actions .button .icon { + height: 1.75rem; + width: 1.75rem +} + +#discover .info-box .content .actions .button.play { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto; + padding: 0 2.5rem; + padding-right: 5rem; + border-radius: 3.5rem; +} + +#discover .info-box .content .actions .button.play .icon-container { + position: absolute; + top: 0; + right: 0; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 3.5rem; + width: 3.5rem; + border-radius: 100%; + background-color: #1564DC +} + +#discover .info-box .content .actions .button.play .label { + font-size: 1.2rem; + font-weight: 500 +} + +#discover .info-box .content .actions .button:hover { + background-color: #1564DC; +} + +#discover .info-box .content .actions .button:hover .label { + font-weight: 600 +} + +#discover .info-box .content .actions .button:focus { + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff */ +} + +#discover .adex-adview, +#discover .missing-addon { + margin: 0 auto; + width: 100%; + max-width: 728px +} + +#discover .adex-adview img, +#discover .adex-adview video { + width: 100% +} + +#discover .missing-addon { + font-size: 18px; + text-align: center; + padding: .5em; +} + +#discover .missing-addon .message { + margin-bottom: .5em +} + +#discover .missing-addon .install { + padding: .5em 1em; + display: inline-block; + -webkit-transition: opacity 0.25s ease-in; + -moz-transition: opacity 0.25s ease-in; + -o-transition: opacity 0.25s ease-in; + -ms-transition: opacity 0.25s ease-in; + transition: opacity 0.25s ease-in; + background-color: #22b467; + color: #fff; + font-weight: bold; + cursor: pointer; +} + +#discover .missing-addon .install:hover { + opacity: 1; + -ms-filter: none; + filter: none; + filter: brightness(80%) +} + +#discover #discover-backdrop { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 1.5rem; + margin-top: 5rem; +} + +#discover #discover-backdrop .heading { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +#discover #discover-backdrop .heading img { + width: 10rem +} + +#discover #discover-backdrop .heading .header { + font-size: 2.5rem; + font-weight: 500; + color: #8A8A8A; + margin-bottom: .5rem +} + +#discover #discover-backdrop .heading .info-text { + font-size: 1.25rem; + font-weight: 400; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) +} + +#discover #discover-backdrop .buttons { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + gap: 1.5rem +} + +#search .holder { + left: 10px; + top: 0 +} + +#search h2.noResults { + text-align: center; + width: 100%; + margin-top: 15% +} + +#library { + position: relative; + height: 100%; + width: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +#library .options { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + padding-left: 1rem; + margin-bottom: 1rem; +} + +#library .options .segments { + padding-left: 2.5rem +} + +#library .items { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto; + position: relative; + height: 100%; + width: 100%; + display: grid; + grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr)); + gap: 1.5rem; + -ms-flex-line-pack: start; + -webkit-align-content: flex-start; + align-content: flex-start; + overflow-y: auto; + padding: .5rem 1rem 1rem 1rem; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + -moz-perspective: 1000; + -ms-perspective: 1000; + perspective: 1000; + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -o-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); +} + +#library .items li { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto; + position: relative; + height: calc(10rem / (27 / 40)); + width: 10rem; + border-radius: .75rem; + outline: none; +} + +#library .items li:hover { + -webkit-box-shadow: 0 0 0 .12rem #fff; + box-shadow: 0 0 0 .12rem #fff +} + +#library .items li:focus { + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff */ +} + +#library .items.square li { + height: 10rem +} + +#calendar { + height: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: start; + -moz-box-align: start; + -o-box-align: start; + -ms-flex-align: start; + -webkit-align-items: flex-start; + align-items: flex-start +} + +#series-calendar { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: auto; + -ms-flex: auto; + flex: auto; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + height: 100%; + padding-left: 1rem; + padding-right: .5rem; +} + +#series-calendar .selectMonth { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 4rem; + margin-bottom: 1rem; + overflow: hidden; +} + +#series-calendar .selectMonth>* { + float: left +} + +#series-calendar .selectMonth ul { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 100%; +} + +#series-calendar .selectMonth ul li { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 100%; + width: 8rem; + padding: 0 1rem; + font-size: 1rem; + font-weight: 500; + color: #fff; + border-radius: .75rem; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + white-space: nowrap; + outline: none; + overflow: hidden; + cursor: pointer; +} + +#series-calendar .selectMonth ul li:focus { + /* -webkit-box-shadow: 0 0 0 .17rem #fff inset; + box-shadow: 0 0 0 .17rem #fff inset */ +} + +#series-calendar .selectMonth ul li.current { + font-size: 1.5rem; + margin: 0 1rem +} + +#series-calendar .selectMonth ul li.previous, +#series-calendar .selectMonth ul li.next { + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); +} + +#series-calendar .selectMonth ul li.previous:hover, +#series-calendar .selectMonth ul li.next:hover { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80) +} + +#series-calendar .selectMonth ul li.previous label, +#series-calendar .selectMonth ul li.next label { + cursor: pointer +} + +#series-calendar .selectMonth ul li.hide { + color: rgba(255, 255, 255, 0.3) +} + +#series-calendar ul.days { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + display: grid; + grid-template-columns: repeat(7, minmax(5rem, 1fr)); + gap: 1px; + height: 2rem; +} + +#series-calendar ul.days li.label { + font-size: 1rem; + font-weight: 500; + padding: 0 .25rem; + color: #fff; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden +} + +#series-calendar ul.month { + display: grid; + grid-template-columns: repeat(7, minmax(5rem, 1fr)); + gap: 1px; + padding-bottom: 1rem; + border-radius: .75rem; + height: 100%; +} + +#series-calendar ul.month li.day { + position: relative; + background: rgba(255, 255, 255, 0.05); + outline: none; + overflow: hidden; +} + +#series-calendar ul.month li.day:first-child { + border-radius: .75rem 0 0 0 +} + +#series-calendar ul.month li.day:last-child { + border-radius: 0 0 .75rem 0 +} + +#series-calendar ul.month li.day:nth-child(7) { + border-radius: 0 .75rem 0 0 +} + +#series-calendar ul.month li.day:nth-child(29) { + border-radius: 0 0 0 .75rem +} + +#series-calendar ul.month li.day:hover { + cursor: pointer +} + +#series-calendar ul.month li.day:focus { + /* -webkit-box-shadow: 0 0 0 .17rem #fff inset; + box-shadow: 0 0 0 .17rem #fff inset */ +} + +#series-calendar ul.month li.day.today .date { + background: #8A8A8A; + color: #fff; + font-size: 1rem; + border-radius: 100% +} + +#series-calendar ul.month li.day.selected { + background: rgba(255, 255, 255, 0.1); + z-index: 50 +} + +#series-calendar ul.month li.day .date { + width: 2rem; + height: 2rem; + position: absolute; + top: .75rem; + left: 1rem; + font-size: 1rem; + font-weight: 500; + color: #fff; + display: table; + text-align: center; +} + +#series-calendar ul.month li.day .date span { + display: table-cell; + vertical-align: middle +} + +#series-calendar ul.month li.day .more { + position: absolute; + background: rgba(99, 63, 126, 0.5); + border-radius: 18px; + padding: 4px 6px; + top: 5px; + right: 5px; + left: auto; + color: #fff +} + +#series-calendar ul.month li.day div.ep-holder { + position: absolute; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + height: calc(100% - 3.5rem); + left: .17rem; + right: .17rem; + bottom: .17rem; + overflow: hidden; +} + +#series-calendar ul.month li.day div.ep-holder .episode { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + width: calc(33.33% - 1px); + margin-right: 1px; +} + +#series-calendar ul.month li.day div.ep-holder .episode .name, +#series-calendar ul.month li.day div.ep-holder .episode .num { + float: left +} + +#series-calendar ul.month li.day div.ep-holder .episode .name { + width: 75%; + margin-right: 5%; + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + white-space: nowrap +} + +#series-calendar ul.month li.day div.ep-holder .episode .num { + width: 20% +} + +#series-calendar ul.month li.day div.ep-holder .episode.available { + opacity: .4; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + filter: alpha(opacity=40) +} + +#series-calendar ul.month li.day .thumb { + height: 100%; + background-repeat: no-repeat; + -webkit-background-size: contain; + -moz-background-size: contain; + background-size: contain; + background-position: center bottom +} + +#future-episodes { + -webkit-box-flex: 1; + -moz-box-flex: 1; + -o-box-flex: 1; + box-flex: 1; + -webkit-flex: 0 0 20rem; + -ms-flex: 0 0 20rem; + flex: 0 0 20rem; + height: 100%; + padding-left: .5rem; + padding-right: 1rem; + overflow-y: auto; +} + +#future-episodes li { + position: relative; + margin-bottom: 1rem; + border-radius: .75rem; + background: rgba(255, 255, 255, 0.05); + outline: none; + overflow: hidden; +} + +#future-episodes li.selected .date { + background: #8A8A8A +} + +#future-episodes .date { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + height: 3rem; + width: 100%; + padding: 0 1rem; + cursor: default; + font-size: 1rem; + font-weight: 500; + color: #fff; + text-align: left +} + +#future-episodes .today .episode { + opacity: 1; + -ms-filter: none; + filter: none +} + +#future-episodes .episode { + padding: 1rem; + overflow: hidden; + cursor: default; + outline: none; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); +} + +#future-episodes .episode.active, +#future-episodes .episode:hover, +#future-episodes .episode:focus { + opacity: 1; + -ms-filter: none; + filter: none; + background: rgba(255, 255, 255, 0.05) +} + +#future-episodes .episode .seriesName, +#future-episodes .episode .epNumber { + display: inline-block; + text-align: left; + width: 70%; + font-size: .9rem; + font-weight: 500; + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + white-space: nowrap; + vertical-align: top; + color: #fff +} + +#future-episodes .episode .epNumber { + width: 30%; + text-align: right +} + +#future-episodes .episode .name { + font-size: .8rem; + color: #fff; + margin-top: .5rem +} + +#future-episodes .episode .play { + height: 2.5rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-top: 1rem; + border-radius: .5rem; + cursor: pointer; + text-align: center; + text-transform: uppercase; +} + +#future-episodes .episode .play .icon { + height: 1rem +} + +#future-episodes .episode .play label { + font-size: .8rem; + font-weight: 700; + cursor: pointer; + margin-left: .5rem +} + +#future-episodes .episode .play:hover { + background-color: rgba(255, 255, 255, 0.05) +} + +#board { + position: relative; + height: 100%; + width: 100%; +} + +#board .board-container li .heading { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: justify; + -moz-box-pack: justify; + -o-box-pack: justify; + -ms-flex-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + padding-left: 1rem; + padding-right: .75rem; + margin-bottom: .5rem; +} + +#board .board-container li .heading .heading-title { + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + font-size: 1.5rem; + font-weight: 500; + text-transform: capitalize; + color: #fff; + opacity: .9; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; + filter: alpha(opacity=90) +} + +#board .board-container li .heading .heading-button { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 2.5rem; + padding-left: 1.5rem; + padding-right: .5rem; + border-radius: 2.5rem; + font-size: 1rem; + font-weight: 500; + color: #fff; + white-space: nowrap; + text-transform: capitalize; + cursor: pointer; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); +} + +#board .board-container li .heading .heading-button:hover { + background-color: rgba(255, 255, 255, 0.05); + opacity: 1; + -ms-filter: none; + filter: none +} + +#board .board-container li .heading .heading-button .icon { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + height: 1.5rem; + width: 1.5rem; + margin-left: .5rem +} + +#board .board-container li .board-row { + z-index: 0; + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + -o-box-orient: horizontal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + padding: 1rem; + overflow-y: hidden; + overflow-x: auto; +} + +#board .board-container li .board-row:after { + content: ""; + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + height: .5rem; + width: .5rem +} + +#board .board-container li .board-row li { + -webkit-box-flex: 0; + -moz-box-flex: 0; + -o-box-flex: 0; + box-flex: 0; + -webkit-flex: none; + -ms-flex: none; + flex: none; + position: relative; + height: calc(10rem / (27 / 40)); + width: 10rem; + margin-right: 1.5rem; + border-radius: .75rem; + background-color: rgba(255, 255, 255, 0.05); + outline: none; +} + +#board .board-container li .board-row li .image { + z-index: 0; + position: relative; + height: 100%; + width: 100%; +} + +#board .board-container li .board-row li .image .thumb, +#board .board-container li .board-row li .image .placeholder { + position: absolute; + height: 100%; + width: 100%; + border-radius: .75rem; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + background-color: rgba(255, 255, 255, 0.05); + background-repeat: no-repeat +} + +#board .board-container li .board-row li .info { + z-index: 1; + position: absolute; + height: 2.5rem; + bottom: calc(-2.5rem + -1rem); + left: 0; + right: 0; + cursor: pointer; +} + +#board .board-container li .board-row li .info .title { + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + font-size: 1rem; + font-weight: 400; + color: rgba(255, 255, 255, 0.9); + text-align: center; + margin-bottom: .25rem; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden +} + +#board .board-container li .board-row li .info .name { + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + font-size: .9rem; + color: #fff; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); + overflow: hidden +} + +#board .board-container li .board-row li:hover { + -webkit-box-shadow: 0 0 0 .12rem #fff; + box-shadow: 0 0 0 .12rem #fff +} + +#board .board-container li .board-row li:focus { + /* -webkit-box-shadow: 0 0 0 .17rem #fff; + box-shadow: 0 0 0 .17rem #fff */ +} + +#board .board-container li .board-row.show-title { + padding-bottom: calc(2.5rem + 1.5rem) +} + +#board .board-container li .board-row.square li { + height: 10rem +} + +#board .board-container li .board-row.landscape li { + height: 10rem; + width: calc(10rem / (9 / 16)) +} + +#board .board-container li .board-row.board-notif li { + overflow: hidden; +} + +#board .board-container li .board-row.board-notif li .info { + bottom: 0; + height: 100%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: end; + -moz-box-pack: end; + -o-box-pack: end; + -ms-flex-pack: end; + -webkit-justify-content: flex-end; + justify-content: flex-end; + padding: 0 1rem; + padding-bottom: 1rem; + background: -webkit-linear-gradient(90deg, #0c0c11 10%, transparent 80%); + background: -moz-linear-gradient(90deg, #0c0c11 10%, transparent 80%); + background: -o-linear-gradient(90deg, #0c0c11 10%, transparent 80%); + background: -ms-linear-gradient(90deg, #0c0c11 10%, transparent 80%); + background: linear-gradient(0deg, #0c0c11 10%, transparent 80%); +} + +#board .board-container li .board-row.board-notif li .info .title { + text-align: left +} + +#board .board-container li .board-row.board-notif .board-explanation { + background: none; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +#board .board-container li .board-row.recent-board li .thumb .play { + position: absolute; + top: 50%; + left: 50%; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 3.15rem; + width: 3.15rem; + margin-top: calc(3.15rem / -2); + margin-left: calc(3.15rem / -2); + color: #fff; + background-color: rgba(12, 12, 17, 0.4); + border-radius: 100%; + -webkit-box-shadow: 0 0 0 .15rem currentColor; + box-shadow: 0 0 0 .15rem currentColor; + -webkit-transition: all 0.1s ease-in; + -moz-transition: all 0.1s ease-in; + -o-transition: all 0.1s ease-in; + -ms-transition: all 0.1s ease-in; + transition: all 0.1s ease-in; + cursor: pointer; +} + +#board .board-container li .board-row.recent-board li .thumb .play .icon { + height: 2rem; + width: 2rem; + color: #fff +} + +#board .board-container li .board-row.recent-board li .thumb .play:hover { + -webkit-box-shadow: 0 0 0 .3rem currentColor; + box-shadow: 0 0 0 .3rem currentColor +} + +#board .board-container li .board-row.recent-board li .thumb:hover { + cursor: zoom-in +} + +#board .board-container li .board-row.recent-board li .info .icon { + position: absolute; + top: 0; + right: 0; + height: 1.5rem; + width: 1.5rem; + margin-left: .5rem; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0) +} + +#board .board-container li .board-row.recent-board li:hover .close .icon, +#board .board-container li .board-row.recent-board li:focus .close .icon { + opacity: 1; + -ms-filter: none; + filter: none +} + +#board .board-container li .board-row.recent-board li:hover .thumb .play, +#board .board-container li .board-row.recent-board li:focus .thumb .play { + color: #1564DC; + background-color: #1564DC +} + +#board .board-container li .board-row::-webkit-scrollbar { + display: none +} + +#board .bubble-notif { + position: absolute; + top: 50%; + left: 0; + margin-top: -3.5rem; + background: #8A8A8A; + padding: 1.25rem 1.5rem; + font-size: 1rem; + border-radius: .75rem; +} + +#board .bubble-notif:after { + content: ""; + position: absolute; + top: 50%; + right: 100%; + height: 0; + width: 0; + margin-top: -.75rem; + border: solid transparent; + border-width: .75rem; + border-right-color: #8A8A8A; + pointer-events: none +} + +#board .bubble-icon { + width: 29px; + height: 32px; + float: left; + margin-right: 12px; + margin-top: 5px +} + +#board .board-container { + height: 100%; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + -moz-perspective: 1000; + -ms-perspective: 1000; + perspective: 1000; + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -o-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); + overflow-y: auto +} + +#board .board-item { + overflow: visible +} + +#board .board-notif li, +#board li.board-item { + position: relative; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; +} + +#board .board-notif li.dismissed, +#board li.board-item.dismissed { + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) +} + +#board .board-notif li.clickable, +#board li.board-item.clickable { + cursor: pointer +} + +#board .notif .close, +#board .resume .close { + z-index: 2; + position: absolute; + top: .5rem; + right: .5rem; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + -o-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -moz-box-pack: center; + -o-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 1.5rem; + width: 1.5rem; + border-radius: 100%; + background-color: #1564DC; + cursor: pointer; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -webkit-transition: opacity 0.1s ease-in; + -moz-transition: opacity 0.1s ease-in; + -o-transition: opacity 0.1s ease-in; + -ms-transition: opacity 0.1s ease-in; + transition: opacity 0.1s ease-in; +} + +#board .notif .close .icon, +#board .resume .close .icon { + height: 1.1rem; + width: 1.1rem; + color: #fff +} + +#board .notif:hover .close, +#board .resume:hover .close { + opacity: 1; + -ms-filter: none; + filter: none +} + +#board .notif { + height: 10rem !important; + width: 18rem !important +} + +#board .purple { + font-size: 22px; + color: #8ca3dc; + line-height: 27px; + padding-left: 6px +} + +#board .gray { + font-size: 22px; + color: #7a7985; + line-height: 27px; + padding-left: 6px +} + +#board .board-4-container { + padding-top: 0 +} + +#board .board-row-icon { + height: 1.75rem; + margin-right: 1rem; + -webkit-mask-size: contain; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center +} + +#board .board-row-icon.logo { + width: 1.75rem; + border-radius: 50%; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover +} + +#board .board-row-icon.poster { + width: 1.75rem; + border-radius: 50%; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover +} + +#board .board-row-icon.notif-counter { + position: relative; + padding: 0 .75rem; + line-height: 1.75rem; + font-size: 1rem; + border-radius: 1.75rem; + background-color: #1564DC; +} + +#board .carousel-holder { + width: 100%; + max-width: 100%; + position: relative +} + +#board .carousel-button { + position: absolute; + top: 4rem; + bottom: 0; + width: 5rem; + z-index: 99; + cursor: pointer; + display: block; + opacity: 1; + -ms-filter: none; + filter: none; +} + +#board .carousel-button .arrow-middle { + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0) +} + +#board .carousel-left { + left: 0 +} + +#board .carousel-right { + right: 0 +} + +#board .board-notif-holder .board-title-clickable { + cursor: pointer +} + +#board .board-container>li { + position: relative; + display: -webkit-box; + display: -moz-box; + display: -webkit-flex; + display: -ms-flexbox; + display: box; + display: flex; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -o-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-bottom: 3rem +} + +#board .board-container>li:hover .carousel-button .arrow-middle { + -webkit-transition: opacity 0.2s ease-in-out; + -moz-transition: opacity 0.2s ease-in-out; + -o-transition: opacity 0.2s ease-in-out; + -ms-transition: opacity 0.2s ease-in-out; + transition: opacity 0.2s ease-in-out; + opacity: 1; + -ms-filter: none; + filter: none +} + +#board .hidden-button { + opacity: 0 !important; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)" !important; + filter: alpha(opacity=0) !important; + display: none +} + +#board .arrow-middle { + position: absolute; + height: 100%; + width: 100% +} + +#board .arrow-center { + position: absolute; + top: calc(50% - 3rem); + left: 50%; + -webkit-transform: translateX(-50%); + -moz-transform: translateX(-50%); + -o-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%) +} + +#board .arrow-sides { + font-size: 3.25rem; + margin: auto; + position: relative; + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out +} + +#board .carousel-button:hover .arrow-sides { + opacity: 1; + -ms-filter: none; + filter: none; + -webkit-transform: scale(1.1); + -moz-transform: scale(1.1); + -o-transform: scale(1.1); + -ms-transform: scale(1.1); + transform: scale(1.1) +} + +#board .carousel-button:active .arrow-sides { + opacity: .8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80); + -webkit-transform: scale(1); + -moz-transform: scale(1); + -o-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1) +} + +#taste { + position: fixed; + top: 0; + bottom: 0; + right: 0; + left: 0; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + width: 100%; + height: 100%; + overflow: auto; +} + +#taste .header { + position: absolute; + top: 30px; + left: 30px; +} + +#taste .header .back { + margin: auto; + position: relative; + float: left; + margin-top: 10px; + padding: 2px; +} + +#taste .header .back .icon { + width: 16px; + height: 28px +} + +#taste .header .back:hover { + background-color: #201f32 +} + +#taste .header .account { + position: relative; + float: left; +} + +#taste .header .account .picture { + border-radius: 50%; + width: 50px; + height: 50px; + float: left; + margin-left: 20px; + margin-right: 20px +} + +#taste .header .account .email { + float: left; + font-size: 16px; + padding-top: 13px +} + +#taste .center { + text-align: center; + margin-top: 100px; +} + +#taste .center .subtitle { + font-size: 32px; + line-height: 36px; + font-weight: 100; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) +} + +#taste .center .title { + font-size: 36px; + line-height: 40px; + margin-top: 15px; + font-weight: 600; + text-transform: uppercase +} + +#taste .grid { + left: 0; + right: 0; + clear: both; + margin-top: 50px; + width: 1290px; + margin: 45px auto; +} + +#taste .grid .tile { + float: left; + width: 238px; + height: 125px; + text-align: center; + text-transform: uppercase; + background-repeat: no-repeat; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + font-size: 24px; + line-height: 30px; + font-weight: 700; + margin: 10px; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + position: relative; +} + +#taste .grid .tile .bg { + width: 238px; + height: 125px; + position: absolute; + opacity: .4; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + filter: alpha(opacity=40); + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + background-position: center; + background-repeat: no-repeat +} + +#taste .grid .tile .overlay { + position: absolute; + width: 238px; + height: 125px +} + +#taste .grid .tile .text { + position: absolute; + text-align: center; + width: 208px; + height: 105px; + left: 15px; + top: 10px; +} + +#taste .grid .tile .text span { + position: absolute; + left: 0; + width: 208px; + top: 50%; + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + -o-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); + letter-spacing: 1px +} + +#taste .grid .tile.selected { + -webkit-transform: scale(.9); + -moz-transform: scale(.9); + -o-transform: scale(.9); + -ms-transform: scale(.9); + transform: scale(.9); +} + +#taste .grid .tile.selected .bg { + opacity: .3; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30) +} + +#taste .grid .tile.selected .overlay { + background-color: rgba(138, 90, 171, 0.7) +} + +#taste .grid .tile.selected .text span { + color: rgba(24, 23, 38, 0.55); + font-weight: 700 +} + +#taste .grid .tile:hover { + -webkit-transform: scale(1.11); + -moz-transform: scale(1.11); + -o-transform: scale(1.11); + -ms-transform: scale(1.11); + transform: scale(1.11); + z-index: 999 +} + +#taste .button { + font-size: 15px; + display: block; + color: #fff; + text-align: center; + text-transform: uppercase; + padding: 15px 0; + margin: 15px auto; + width: 174px; + text-align: center; + font-weight: 700; + letter-spacing: .05em +} + +#taste .error-label { + text-align: center; + color: $tertiary-accent-color +} + +#taste .label { + text-align: center; + color: $color-white-50; + font-size: 14px; + font-weight: 100; + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50) +} + +@media only screen and (max-width:1340px) { + #taste .grid { + width: 1032px + } +} + +@media only screen and (max-width:1082px) { + #taste .grid { + width: 774px + } +} + +@media only screen and (max-width:824px) { + #taste .grid { + width: 516px + } +} + +@media only screen and (max-width:566px) { + #taste .grid { + width: 258px + } +} + +#search { + height: 100%; +} + +#search #board { + height: 100%; + margin-right: 10px; + margin-top: 20px +} + +#search .scroll-pane { + height: 100%; + overflow-y: auto +} + +.settings-container { + display: flex; + height: 100%; +} + +.settings-container h2, +.settings-container h3 { + margin-bottom: 2em +} + +.settings-container a { + cursor: pointer +} + +.settings-container .sections { + flex: 0 0 15rem; + position: relative; + padding: 0 1rem; +} + +.settings-container .sections a { + display: flex; + align-items: center; + height: 3.5rem; + margin-bottom: 1em; + padding: 0 2em; + border-radius: 3.5rem; +} + +.settings-container .sections a .label { + line-height: 3.5rem; + font-size: 1.1rem; + font-weight: 400; + opacity: .4; + pointer-events: none +} + +.settings-container .sections a:hover .label { + font-weight: 500 +} + +.settings-container .sections a.active .label { + font-weight: 600; + opacity: 1 +} + +.settings-container .sections a:hover, +.settings-container .sections a.active { + background-color: rgba(255, 255, 255, 0.05) +} + +.settings-container .sections a:focus { + /* box-shadow: 0 0 0 .17rem #fff */ +} + +.settings-container .settings-panel { + overflow-y: auto; + padding: 0 2rem; + flex: 1 1; +} + +.settings-container .settings-panel label { + font-size: .9rem; + font-weight: 500 +} + +.settings-container .settings-panel .blue { + color: #8ca3dc +} + +.settings-container .settings-panel section { + width: 31rem; +} + +.settings-container .settings-panel section.last { + height: 100%; + padding-bottom: 0 +} + +.settings-container .settings-panel section p { + margin-bottom: 1em; +} + +.settings-container .settings-panel section p a { + display: inline +} + +.settings-container .settings-panel section .category { + margin-bottom: 3rem; + padding-bottom: 3rem; + border-bottom: 1px solid rgba(255, 255, 255, 0.05); +} + +.settings-container .settings-panel section .category .title { + display: flex; + align-items: center; + font-size: 1rem; + font-weight: 700; + margin-bottom: 1.5rem; +} + +.settings-container .settings-panel section .category .title .icon { + height: 1.5rem; + width: 1.5rem; + margin-right: .7rem; + opacity: .7 +} + +.settings-container .settings-panel section .category .setting { + display: flex; + align-items: center; + justify-content: space-between; + padding: .5rem 0; +} + +.settings-container .settings-panel section .category .setting .shortcut-keys { + flex: none; + display: flex; + justify-content: flex-end; + padding: 1em 0; + outline: none; + border-radius: .75rem; +} + +.settings-container .settings-panel section .category .setting .shortcut-keys kbd { + font-family: Arial, Helvetica, sans-serif; + font-size: .8rem; + font-weight: 700; + padding: .75em 1em; + margin: 0 .5em; + border: 1px solid rgba(255, 255, 255, 0.05); + border-radius: .5em; + box-shadow: 0 2px 0 4px rgba(0, 0, 0, 0.1); + background: radial-gradient(circle, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.05) 100%) +} + +.settings-container .settings-panel section .category .setting .shortcut-keys:focus { + /* box-shadow: 0 0 0 .17rem #fff */ +} + +.settings-container .settings-panel section .category .setting label { + opacity: .9 +} + +.settings-container .settings-panel section .category .setting input, +.settings-container .settings-panel section .category .setting select, +.settings-container .settings-panel section .category .setting .button-s { + margin: 0 +} + +.settings-container .settings-panel section .category .setting .button-s { + width: 100% +} + +.settings-container .settings-panel section .category .setting .custom-select, +.settings-container .settings-panel section .category .setting .custom-color { + flex: 0 0 auto; + max-width: 11rem +} + +.settings-container .settings-panel section .category .setting .stremio-checkbox { + width: 100%; + margin: 0; +} + +.settings-container .settings-panel section .category .setting .stremio-checkbox .option-toggle { + display: flex; + flex-direction: row-reverse; + justify-content: space-between +} + +.settings-container .settings-panel a { + display: block; + margin: .75rem 0; + cursor: pointer; + font-size: .9rem; + font-weight: 500; + border-radius: 1rem; + color: #8A8A8A; +} + +.settings-container .settings-panel a:hover { + color: #fff +} + +.settings-container .settings-panel a:focus { + /* box-shadow: 0 0 0 .17rem #fff */ +} + +.settings-container .settings-panel input[type="color"] { + height: 2.5rem; + border-radius: 2.5rem; + padding: 0; + border: none +} + +.settings-container .settings-panel .custom-select, +.settings-container .settings-panel .custom-color, +.settings-container .settings-panel select, +.settings-container .settings-panel input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="hidden"]) { + width: 100% +} + +.settings-container .settings-panel .option-toggle { + cursor: pointer; + color: #7a7985; +} + +.settings-container .settings-panel .option-toggle .setting { + flex-direction: row-reverse +} + +.settings-container .settings-panel .option-toggle input[checked="checked"]+label { + color: #fff +} + +.settings-container .settings-panel .icon-ic_check { + color: #19fbb8 +} + +.settings-container .settings-panel .icon-ic_x { + color: #fb5e19 +} + +.settings-container .settings-panel .section { + margin-bottom: 1em +} + +.settings-container .settings-panel .account { + display: flex; + flex-direction: row; + align-items: center; +} + +.settings-container .settings-panel .account .profile-picture { + position: relative; + display: inline-block; + height: 4rem; + width: 4rem; + vertical-align: middle; + border: 2px solid #8A8A8A; + border-radius: 100%; + overflow: hidden; +} + +.settings-container .settings-panel .account .profile-picture .icon, +.settings-container .settings-panel .account .profile-picture .picture { + z-index: 1; + position: absolute; + height: 100%; +} + +.settings-container .settings-panel .account .profile-picture .icon.placeholder, +.settings-container .settings-panel .account .profile-picture .picture.placeholder { + z-index: 0 +} + +.settings-container .settings-panel .account .info { + padding-left: 1rem; +} + +.settings-container .settings-panel .account .info .email { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + font-size: 1rem; + font-weight: 500; + color: #fff; + opacity: .5 +} + +.settings-container .settings-panel .account .info a { + display: flex; + margin: 0; + margin-top: .25rem +} + +.settings-container .settings-panel .data-caching .option { + display: inline-block; + padding: 0 !important; + width: 47%; +} + +.settings-container .settings-panel .data-caching .option:first-child { + margin-right: 6% +} + +.settings-container .settings-panel .data-caching .option .custom-select { + width: 100%; +} + +.settings-container .settings-panel .data-caching .option .custom-select select { + width: 100% +} + +.settings-container .settings-panel .server-status { + display: flex; + align-items: center; + justify-content: center; + gap: .5rem; + width: auto !important; + height: 2.5rem; + padding: 0 .5rem; +} + +.settings-container .settings-panel .server-status .icon { + height: 1rem; + width: 1rem +} + +.settings-container .settings-panel .server-status.online .icon { + color: #1564DC +} + +.settings-container .settings-panel .server-status:not(.online) .icon { + color: #f33f3f +} + +.settings-container .settings-panel .option-image { + padding-bottom: 20px; + text-align: center; +} + +.settings-container .settings-panel .option-image img { + display: block; + margin: 10px auto +} + +.settings-container .settings-panel .trakt { + display: flex; + align-items: center; + justify-content: space-between; +} + +.settings-container .settings-panel .trakt .trak-info { + display: flex; + flex-direction: row; + align-items: center; +} + +.settings-container .settings-panel .trakt .trak-info .label { + margin-left: .5rem +} + +.settings-container .settings-panel .trakt .trak-info .icon { + height: 3.25rem; + width: 3.25rem; + color: #ed1c24 +} + +.settings-container .settings-panel .trakt .button { + height: 2.5rem +} + +.settings-container .settings-panel .ro-copy-text-container { + display: flex; +} + +.settings-container .settings-panel .ro-copy-text-container input { + width: 14rem !important; + margin: 0; + padding-right: 1rem; + border-radius: 2.5rem 0 0 2.5rem +} + +.settings-container .settings-panel .ro-copy-text-container button { + height: 2.5rem; + padding-left: 1rem; + border-radius: 0 2.5rem 2.5rem 0 +} + +.settings-container hr { + margin: 1em 0 +} + +.settings-container .bottom { + width: 100%; + position: absolute; + bottom: 0; + font-size: .75rem; + text-align: left; + cursor: pointer; + padding: 1em 0; +} + +.settings-container .bottom div { + padding: 0 1em; + display: inline-block; + width: 65%; + color: #fff; + opacity: .5 +} + +@font-face { + font-family: 'icon-full-height'; + src: url('https://app.strem.io/shell-v4.4/fonts/icon-full-height.ttf?3lc42w') format('truetype'), url('https://app.strem.io/shell-v4.4/fonts/icon-full-height.woff?3lc42w') format('woff'), url('https://app.strem.io/shell-v4.4/fonts/icon-full-height.svg?3lc42w#icon-full-height') format('svg'); + font-weight: normal; + font-style: normal; +} + +[class^="icon-"], +[class*=" icon-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'icon-full-height' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-ic_sort_down:before { + content: "\e964"; +} + +.icon-ic_sort_up:before { + content: "\e965"; +} + +.icon-ic_speedometer:before { + content: "\e961"; +} + +.icon-ic_ghost:before { + content: "\e962"; +} + +.icon-ic_hourglass_tilted:before { + content: "\e963"; +} + +.icon-ic_adult:before { + content: "\e954"; +} + +.icon-ic_arrow_thin_down:before { + content: "\e955"; +} + +.icon-ic_arrow_thin_up:before { + content: "\e956"; +} + +.icon-ic_book:before { + content: "\e957"; +} + +.icon-ic_circle:before { + content: "\e958"; +} + +.icon-ic_games:before { + content: "\e959"; +} + +.icon-ic_info:before { + content: "\e95a"; +} + +.icon-ic_music:before { + content: "\e95b"; +} + +.icon-ic_play_next:before { + content: "\e95c"; +} + +.icon-ic_play_prev:before { + content: "\e95d"; +} + +.icon-ic_podcast:before { + content: "\e95e"; +} + +.icon-ic_radio:before { + content: "\e95f"; +} + +.icon-ic_videos:before { + content: "\e960"; +} + +.icon-ic_arrow_right:before { + content: "\e92a"; +} + +.icon-ic_arrow_thin_left:before { + content: "\e945"; +} + +.icon-ic_arrow_thin_right:before { + content: "\e946"; +} + +.icon-ic_arrow_up:before { + content: "\e947"; +} + +.icon-ic_bell:before { + content: "\e948"; +} + +.icon-ic_bell_dot:before { + content: "\e949"; +} + +.icon-ic_broken_link:before { + content: "\e94a"; +} + +.icon-ic_data_export:before { + content: "\e94b"; +} + +.icon-ic_exit_fullscreen:before { + content: "\e94c"; +} + +.icon-ic_folder:before { + content: "\e94d"; +} + +.icon-ic_fullscreen:before { + content: "\e94e"; +} + +.icon-ic_laptop:before { + content: "\e94f"; +} + +.icon-ic_p2p:before { + content: "\e950"; +} + +.icon-ic_reset_2:before { + content: "\e951"; +} + +.icon-ic_search_link:before { + content: "\e952"; +} + +.icon-ic_triangle_down:before { + content: "\e953"; +} + +.icon-ic_tv:before { + content: "\e9e3"; +} + +.icon-ic_highspeaker:before { + content: "\e9e4"; +} + +.icon-ic_list:before { + content: "\e9e5"; +} + +.icon-ic_volume0:before { + content: "\e9e6"; +} + +.icon-ic_network:before { + content: "\e9e7"; +} + +.icon-ic_person:before { + content: "\e9e8"; +} + +.icon-ic_report:before { + content: "\e9e9"; +} + +.icon-ic_reset_1:before { + content: "\e9ea"; +} + +.icon-ic_stremio_tray:before { + content: "\e9eb"; +} + +.icon-ic_trakt:before { + content: "\e9ec"; +} + +.icon-ic_twitter:before { + content: "\e9ed"; +} + +.icon-ic_volume1:before { + content: "\e9ee"; +} + +.icon-ic_volume2:before { + content: "\e9ef"; +} + +.icon-ic_volume3:before { + content: "\e9f0"; +} + +.icon-ic_arrow_left:before { + content: "\e9f1"; +} + +.icon-ic_user:before { + content: "\e9f3"; +} + +.icon-ic_cloud:before { + content: "\e9f4"; +} + +.icon-ic_arrow_down:before { + content: "\e9f6"; +} + +.icon-ic_chromecast:before { + content: "\e9f7"; +} + +.icon-ic_cinema:before { + content: "\e9f8"; +} + +.icon-ic_ellipsis:before { + content: "\e9f9"; +} + +.icon-ic_glasses:before { + content: "\e9fa"; +} + +.icon-ic_grid:before { + content: "\e9fc"; +} + +.icon-ic_imdbnoframe:before { + content: "\e93d"; +} + +.icon-ic_time:before { + content: "\e93e"; +} + +.icon-ic_addlib:before { + content: "\e93f"; +} + +.icon-ic_minus:before { + content: "\e940"; +} + +.icon-ic_plus:before { + content: "\e941"; +} + +.icon-ic_removelib:before { + content: "\e942"; +} + +.icon-ic_upload:before { + content: "\e943"; +} + +.icon-ic_back_android:before { + content: "\e930"; +} + +.icon-ic_back_ios:before { + content: "\e931"; +} + +.icon-ic_box_empty:before { + content: "\e932"; +} + +.icon-ic_cast_connected:before { + content: "\e933"; +} + +.icon-ic_cast_load1 .path1:before { + content: "\e934"; + color: rgb(0, 0, 0); +} + +.icon-ic_cast_load1 .path2:before { + content: "\e935"; + margin-left: -1.21875em; + color: rgb(0, 0, 0); + opacity: 0.3; +} + +.icon-ic_cast_load1 .path3:before { + content: "\e936"; + margin-left: -1.21875em; + color: rgb(0, 0, 0); + opacity: 0.3; +} + +.icon-ic_cast_load1 .path4:before { + content: "\e937"; + margin-left: -1.21875em; + color: rgb(0, 0, 0); +} + +.icon-ic_cast_load2 .path1:before { + content: "\e938"; + color: rgb(0, 0, 0); +} + +.icon-ic_cast_load2 .path2:before { + content: "\e939"; + margin-left: -1.21875em; + color: rgb(0, 0, 0); + opacity: 0.3; +} + +.icon-ic_cast_load2 .path3:before { + content: "\e93a"; + margin-left: -1.21875em; + color: rgb(0, 0, 0); +} + +.icon-ic_cast_load2 .path4:before { + content: "\e93b"; + margin-left: -1.21875em; + color: rgb(0, 0, 0); +} + +.icon-ic_globe:before { + content: "\e93c"; +} + +.icon-ic_auto:before { + content: "\e91c"; +} + +.icon-ic_forw15:before { + content: "\e91d"; +} + +.icon-ic_forw30:before { + content: "\e91e"; +} + +.icon-ic_forward:before { + content: "\e91f"; +} + +.icon-ic_lock:before { + content: "\e920"; +} + +.icon-ic_rew15:before { + content: "\e921"; +} + +.icon-ic_rew30:before { + content: "\e922"; +} + +.icon-ic_rewind:before { + content: "\e923"; +} + +.icon-ic_share:before { + content: "\e924"; +} + +.icon-ic_sidebar:before { + content: "\e925"; +} + +.icon-ic_sub:before { + content: "\e926"; +} + +.icon-ic_vlc:before { + content: "\e927"; +} + +.icon-ic_warning:before { + content: "\e928"; +} + +.icon-ic_x:before { + content: "\e929"; +} + +.icon-ic_youtube_small:before { + content: "\e944"; +} + +.icon-ic_blind:before { + content: "\e92b"; +} + +.icon-ic_check:before { + content: "\e92c"; +} + +.icon-ic_magnet:before { + content: "\e92d"; +} + +.icon-ic_pause:before { + content: "\e92e"; +} + +.icon-ic_stremio:before { + content: "\e92f"; +} + +.icon-ic_actor:before { + content: "\e918"; +} + +.icon-ic_back:before { + content: "\e919"; +} + +.icon-ic_imdb:before { + content: "\e91a"; +} + +.icon-ic_link:before { + content: "\e91b"; +} + +.icon-ic_filter:before { + content: "\e917"; +} + +.icon-ic_addons:before { + content: "\e900"; +} + +.icon-ic_board:before { + content: "\e901"; +} + +.icon-ic_calendar:before { + content: "\e902"; +} + +.icon-ic_cast:before { + content: "\e903"; +} + +.icon-ic_channels:before { + content: "\e904"; +} + +.icon-ic_continue:before { + content: "\e905"; +} + +.icon-ic_discover:before { + content: "\e906"; +} + +.icon-ic_downloads:before { + content: "\e907"; +} + +.icon-ic_drawer:before { + content: "\e908"; +} + +.icon-ic_eye:before { + content: "\e909"; +} + +.icon-ic_facebook:before { + content: "\e90a"; +} + +.icon-ic_help:before { + content: "\e90b"; +} + +.icon-ic_library:before { + content: "\e90c"; +} + +.icon-ic_more:before { + content: "\e90d"; +} + +.icon-ic_movies:before { + content: "\e90e"; +} + +.icon-ic_play:before { + content: "\e90f"; +} + +.icon-ic_remote:before { + content: "\e910"; +} + +.icon-ic_reset:before { + content: "\e911"; +} + +.icon-ic_search:before { + content: "\e912"; +} + +.icon-ic_series:before { + content: "\e913"; +} + +.icon-ic_settings:before { + content: "\e914"; +} + +.icon-ic_star:before { + content: "\e915"; +} + +.icon-ic_live_tv:before { + content: "\e916"; +} \ No newline at end of file diff --git a/examples/slashtosearch.plugin.js b/examples/slashtosearch.plugin.js index eadb5a7..3ce075a 100644 --- a/examples/slashtosearch.plugin.js +++ b/examples/slashtosearch.plugin.js @@ -1,3 +1,12 @@ +/** + * @name SlashToSearch + * @description Whenever the slash key is pressed while in the main menu, the search bar will be focused. + * @website https://github.com/REVEMGE977/BetterEpisodeList + * @updateUrl https://raw.githubusercontent.com/REVENGE977/BetterEpisodeList/main/BetterEpisodeList.plugin.js + * @version 1.0.0 + * @author REVENGE977 + */ + document.addEventListener("keyup", (e) => { if(e.key == "/") { console.log("[ SLASHTOSEARCH ] slash pressed, focusing searchbar.") diff --git a/images/amoled_screenshot.png b/images/amoled_screenshot.png index cacbbcc..895521e 100644 Binary files a/images/amoled_screenshot.png and b/images/amoled_screenshot.png differ diff --git a/images/settings_screenshot.png b/images/settings_screenshot.png index fd712c8..3a2cabe 100644 Binary files a/images/settings_screenshot.png and b/images/settings_screenshot.png differ diff --git a/package-lock.json b/package-lock.json index 88bcc64..2883247 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,24 +1,26 @@ { "name": "stremio-enhanced", - "version": "0.0.1", + "version": "0.0.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "stremio-enhanced", - "version": "0.0.1", + "version": "0.0.3", "license": "MIT", "dependencies": { - "@electron/remote": "^2.0.8", - "@types/express": "^4.17.14", + "angular": "^1.8.3", "electron-prompt": "^1.7.0", "electron-updater": "^5.3.0", "express": "^4.18.2" }, "devDependencies": { + "@types/angular": "^1.8.9", + "@types/electron": "^1.6.10", + "@types/express": "^4.17.21", "@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/parser": "^4.33.0", - "electron": "^20.0.1", + "electron": "^28.1.4", "electron-builder": "^23.6.0", "electron-packager": "^17.1.1", "eslint": "^7.32.0", @@ -147,32 +149,31 @@ } }, "node_modules/@electron/get": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", - "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", - "license": "MIT", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", + "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", + "dev": true, "dependencies": { "debug": "^4.1.1", "env-paths": "^2.2.0", "fs-extra": "^8.1.0", - "got": "^9.6.0", + "got": "^11.8.5", "progress": "^2.0.3", "semver": "^6.2.0", "sumchecker": "^3.0.1" }, "engines": { - "node": ">=8.6" + "node": ">=12" }, "optionalDependencies": { - "global-agent": "^3.0.0", - "global-tunnel-ng": "^2.7.1" + "global-agent": "^3.0.0" } }, "node_modules/@electron/get/node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "license": "MIT", + "dev": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -182,54 +183,11 @@ "node": ">=6 <7 || >=8" } }, - "node_modules/@electron/get/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@electron/get/node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/@electron/get/node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@electron/get/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "license": "ISC", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -309,15 +267,6 @@ "node": ">=12.0.0" } }, - "node_modules/@electron/remote": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@electron/remote/-/remote-2.0.8.tgz", - "integrity": "sha512-P10v3+iFCIvEPeYzTWWGwwHmqWnjoh8RYnbtZAb3RlQefy4guagzIwcWtfftABIfm6JJTNQf4WPSKWZOpLmHXw==", - "license": "MIT", - "peerDependencies": { - "electron": ">= 13.0.0" - } - }, "node_modules/@electron/universal": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.3.4.tgz", @@ -559,27 +508,6 @@ "node": ">= 8" } }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "license": "MIT", - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -590,11 +518,17 @@ "node": ">= 10" } }, + "node_modules/@types/angular": { + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/@types/angular/-/angular-1.8.9.tgz", + "integrity": "sha512-Z0HukqZkx0fotsV3QO00yqU9NzcQI+tMcrum+8MvfB4ePqCawZctF/gz6QiuII+T1ax+LitNoPx/eICTgnF4sg==", + "dev": true + }, "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "license": "MIT", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -614,10 +548,10 @@ } }, "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "license": "MIT", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, "dependencies": { "@types/node": "*" } @@ -632,27 +566,38 @@ "@types/ms": "*" } }, + "node_modules/@types/electron": { + "version": "1.6.10", + "resolved": "https://registry.npmjs.org/@types/electron/-/electron-1.6.10.tgz", + "integrity": "sha512-MOCVyzIwkBEloreoCVrTV108vSf8fFIJPsGruLCoAoBZdxtnJUqKA4lNonf/2u1twSjAspPEfmEheC+TLm/cMw==", + "deprecated": "This is a stub types definition for electron (https://github.com/electron/electron). electron provides its own type definitions, so you don't need @types/electron installed!", + "dev": true, + "dependencies": { + "electron": "*" + } + }, "node_modules/@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", - "license": "MIT", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", - "license": "MIT", + "version": "4.17.41", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", + "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", + "dev": true, "dependencies": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "node_modules/@types/fs-extra": { @@ -684,6 +629,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", @@ -702,10 +653,10 @@ } }, "node_modules/@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "license": "MIT" + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true }, "node_modules/@types/minimatch": { "version": "5.1.2", @@ -723,22 +674,25 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "18.6.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.4.tgz", - "integrity": "sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg==", - "license": "MIT" + "version": "18.19.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.8.tgz", + "integrity": "sha512-g1pZtPhsvGVTwmeVoexWZLTQaOvXwoSq//pTL0DHeNzUDrFnir4fgETdhjhIxjVnN+hKOuh98+E1eMLnUXstFg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "license": "MIT" + "version": "6.9.11", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", + "dev": true }, "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "license": "MIT" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true }, "node_modules/@types/responselike": { "version": "1.0.0", @@ -756,12 +710,23 @@ "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", "license": "MIT" }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, "node_modules/@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "license": "MIT", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "dev": true, "dependencies": { + "@types/http-errors": "*", "@types/mime": "*", "@types/node": "*" } @@ -787,6 +752,7 @@ "version": "2.10.0", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -1076,6 +1042,12 @@ "ajv": "^6.9.1" } }, + "node_modules/angular": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/angular/-/angular-1.8.3.tgz", + "integrity": "sha512-5qjkWIQQVsHj4Sb5TcEs4WZWpFeVFHXwxEBHUhrny41D8UrBAd6T/6nPPAsLngJCReIOqi95W3mxdveveutpZw==", + "deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward." + }, "node_modules/ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -1493,6 +1465,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "dev": true, "license": "MIT", "optional": true }, @@ -1542,6 +1515,7 @@ "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, "license": "MIT", "engines": { "node": "*" @@ -1632,42 +1606,6 @@ "node": ">=10.6.0" } }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "license": "MIT", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "license": "MIT", - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/cacheable-request/node_modules/responselike/node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -1805,6 +1743,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, "license": "MIT", "dependencies": { "mimic-response": "^1.0.0" @@ -1883,17 +1822,6 @@ "dev": true, "license": "MIT" }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -1993,18 +1921,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "license": "MIT" }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -2012,16 +1928,11 @@ "dev": true, "license": "MIT" }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "license": "MIT" - }, "node_modules/define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -2068,6 +1979,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, "license": "MIT", "optional": true }, @@ -2166,12 +2078,6 @@ "dev": true, "license": "BSD-2-Clause" }, - "node_modules/duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", - "license": "BSD-3-Clause" - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -2195,21 +2101,21 @@ } }, "node_modules/electron": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-20.0.1.tgz", - "integrity": "sha512-5c7zr8oy1JsCV86BaoIPVLo4yevDfvPEsMQcGlgfJ5PS7ouAVvR1aHt0tjF65bL1vYdoQ1olvpextg2T8FyICA==", + "version": "28.1.4", + "resolved": "https://registry.npmjs.org/electron/-/electron-28.1.4.tgz", + "integrity": "sha512-WE6go611KOhtH6efRPMnVC7FE7DCKnQ3ZyHFeI1DbaCy8OU4UjZ8/CZGcuZmZgRdxSBEHoHdgaJkWRHZzF0FOg==", + "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { - "@electron/get": "^1.14.1", - "@types/node": "^16.11.26", + "@electron/get": "^2.0.0", + "@types/node": "^18.11.18", "extract-zip": "^2.0.1" }, "bin": { "electron": "cli.js" }, "engines": { - "node": ">= 10.17.0" + "node": ">= 12.20.55" } }, "node_modules/electron-builder": { @@ -2329,53 +2235,6 @@ "url": "https://github.com/electron/electron-packager?sponsor=1" } }, - "node_modules/electron-packager/node_modules/@electron/get": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz", - "integrity": "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "env-paths": "^2.2.0", - "fs-extra": "^8.1.0", - "got": "^11.8.5", - "progress": "^2.0.3", - "semver": "^6.2.0", - "sumchecker": "^3.0.1" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "global-agent": "^3.0.0" - } - }, - "node_modules/electron-packager/node_modules/@electron/get/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/electron-packager/node_modules/@electron/get/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/electron-packager/node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -2443,12 +2302,6 @@ "typed-emitter": "^2.1.0" } }, - "node_modules/electron/node_modules/@types/node": { - "version": "16.11.47", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.47.tgz", - "integrity": "sha512-fpP+jk2zJ4VW66+wAMFoBJlx1bxmBKx4DUFf68UHgdGCOuyUTDlLWqsaNPJh7xhNDykyJ9eIzAygilP/4WoN8g==", - "license": "MIT" - }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -2469,6 +2322,7 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, "license": "MIT", "dependencies": { "once": "^1.4.0" @@ -2491,6 +2345,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -2510,6 +2365,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, "license": "MIT", "optional": true }, @@ -2849,6 +2705,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", @@ -2917,6 +2774,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, "license": "MIT", "dependencies": { "pend": "~1.2.0" @@ -3301,6 +3159,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, "license": "MIT", "dependencies": { "pump": "^3.0.0" @@ -3350,6 +3209,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, "license": "BSD-3-Clause", "optional": true, "dependencies": { @@ -3364,22 +3224,6 @@ "node": ">=10.0" } }, - "node_modules/global-tunnel-ng": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", - "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", - "license": "BSD-3-Clause", - "optional": true, - "dependencies": { - "encodeurl": "^1.0.2", - "lodash": "^4.17.10", - "npm-conf": "^1.1.3", - "tunnel": "^0.0.6" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/globals": { "version": "13.17.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", @@ -3400,6 +3244,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -3632,6 +3477,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -3645,6 +3491,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -3685,6 +3532,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true, "license": "BSD-2-Clause" }, "node_modules/http-errors": { @@ -3819,13 +3667,6 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "license": "ISC", - "optional": true - }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -4011,12 +3852,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "license": "MIT" - }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -4035,6 +3870,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, "license": "ISC", "optional": true }, @@ -4055,6 +3891,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -4070,15 +3907,6 @@ "node": ">=8" } }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.0" - } - }, "node_modules/lazy-val": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", @@ -4133,7 +3961,7 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/lodash.escaperegexp": { @@ -4173,6 +4001,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4194,6 +4023,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -4207,6 +4037,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, "license": "MIT", "optional": true, "engines": { @@ -4301,6 +4132,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -4494,39 +4326,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm-conf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", - "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", - "license": "MIT", - "optional": true, - "dependencies": { - "config-chain": "^1.1.11", - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-conf/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=4" - } - }, "node_modules/object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", @@ -4540,6 +4339,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, "license": "MIT", "optional": true, "engines": { @@ -4562,6 +4362,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -4585,15 +4386,6 @@ "node": ">= 0.8.0" } }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -4738,6 +4530,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, "license": "MIT" }, "node_modules/picomatch": { @@ -4787,31 +4580,16 @@ "node": ">= 0.8.0" } }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.4.0" } }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "license": "ISC", - "optional": true - }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -4836,6 +4614,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", @@ -5109,6 +4888,7 @@ "version": "2.15.4", "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, "license": "BSD-3-Clause", "optional": true, "dependencies": { @@ -5127,6 +4907,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true, "license": "BSD-3-Clause", "optional": true }, @@ -5230,6 +5011,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true, "license": "MIT", "optional": true }, @@ -5276,6 +5058,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -5292,6 +5075,7 @@ "version": "0.13.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, "license": "(MIT OR CC0-1.0)", "optional": true, "engines": { @@ -5561,6 +5345,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, "license": "Apache-2.0", "dependencies": { "debug": "^4.1.0" @@ -5708,15 +5493,6 @@ "tmp": "^0.2.0" } }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -5798,16 +5574,6 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -5877,10 +5643,17 @@ "dev": true, "license": "MIT" }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4.0.0" @@ -5905,18 +5678,6 @@ "punycode": "^2.1.0" } }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "license": "MIT", - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", @@ -6008,6 +5769,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, "license": "ISC" }, "node_modules/xmlbuilder": { @@ -6069,6 +5831,7 @@ "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", @@ -6164,16 +5927,16 @@ } }, "@electron/get": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", - "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", + "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", + "dev": true, "requires": { "debug": "^4.1.1", "env-paths": "^2.2.0", "fs-extra": "^8.1.0", "global-agent": "^3.0.0", - "global-tunnel-ng": "^2.7.1", - "got": "^9.6.0", + "got": "^11.8.5", "progress": "^2.0.3", "semver": "^6.2.0", "sumchecker": "^3.0.1" @@ -6183,47 +5946,18 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true } } }, @@ -6281,12 +6015,6 @@ "plist": "^3.0.5" } }, - "@electron/remote": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@electron/remote/-/remote-2.0.8.tgz", - "integrity": "sha512-P10v3+iFCIvEPeYzTWWGwwHmqWnjoh8RYnbtZAb3RlQefy4guagzIwcWtfftABIfm6JJTNQf4WPSKWZOpLmHXw==", - "requires": {} - }, "@electron/universal": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.3.4.tgz", @@ -6464,29 +6192,23 @@ "fastq": "^1.6.0" } }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "requires": { - "defer-to-connect": "^1.0.1" - } - }, "@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true }, + "@types/angular": { + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/@types/angular/-/angular-1.8.9.tgz", + "integrity": "sha512-Z0HukqZkx0fotsV3QO00yqU9NzcQI+tMcrum+8MvfB4ePqCawZctF/gz6QiuII+T1ax+LitNoPx/eICTgnF4sg==", + "dev": true + }, "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, "requires": { "@types/connect": "*", "@types/node": "*" @@ -6505,9 +6227,10 @@ } }, "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, "requires": { "@types/node": "*" } @@ -6521,25 +6244,37 @@ "@types/ms": "*" } }, + "@types/electron": { + "version": "1.6.10", + "resolved": "https://registry.npmjs.org/@types/electron/-/electron-1.6.10.tgz", + "integrity": "sha512-MOCVyzIwkBEloreoCVrTV108vSf8fFIJPsGruLCoAoBZdxtnJUqKA4lNonf/2u1twSjAspPEfmEheC+TLm/cMw==", + "dev": true, + "requires": { + "electron": "*" + } + }, "@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, "requires": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } }, "@types/express-serve-static-core": { - "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "version": "4.17.41", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", + "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", + "dev": true, "requires": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "@types/fs-extra": { @@ -6568,6 +6303,12 @@ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", "dev": true }, + "@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, "@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", @@ -6584,9 +6325,10 @@ } }, "@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true }, "@types/minimatch": { "version": "5.1.2", @@ -6602,19 +6344,25 @@ "dev": true }, "@types/node": { - "version": "18.6.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.4.tgz", - "integrity": "sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg==" + "version": "18.19.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.8.tgz", + "integrity": "sha512-g1pZtPhsvGVTwmeVoexWZLTQaOvXwoSq//pTL0DHeNzUDrFnir4fgETdhjhIxjVnN+hKOuh98+E1eMLnUXstFg==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } }, "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + "version": "6.9.11", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", + "dev": true }, "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true }, "@types/responselike": { "version": "1.0.0", @@ -6630,11 +6378,23 @@ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" }, + "@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, "@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "dev": true, "requires": { + "@types/http-errors": "*", "@types/mime": "*", "@types/node": "*" } @@ -6658,6 +6418,7 @@ "version": "2.10.0", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, "optional": true, "requires": { "@types/node": "*" @@ -6827,6 +6588,11 @@ "dev": true, "requires": {} }, + "angular": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/angular/-/angular-1.8.3.tgz", + "integrity": "sha512-5qjkWIQQVsHj4Sb5TcEs4WZWpFeVFHXwxEBHUhrny41D8UrBAd6T/6nPPAsLngJCReIOqi95W3mxdveveutpZw==" + }, "ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -7128,6 +6894,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "dev": true, "optional": true }, "brace-expansion": { @@ -7168,7 +6935,8 @@ "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true }, "buffer-equal": { "version": "1.0.1", @@ -7233,37 +7001,6 @@ "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", "dev": true }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "requires": { - "lowercase-keys": "^1.0.0" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - } - } - } - } - }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -7355,6 +7092,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, "requires": { "mimic-response": "^1.0.0" } @@ -7407,16 +7145,6 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "optional": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, "content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -7477,29 +7205,17 @@ } } }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "requires": { - "mimic-response": "^1.0.0" - } - }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, "define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, "optional": true, "requires": { "has-property-descriptors": "^1.0.0", @@ -7526,6 +7242,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, "optional": true }, "dir-compare": { @@ -7602,11 +7319,6 @@ "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", "dev": true }, - "duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -7622,20 +7334,14 @@ } }, "electron": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-20.0.1.tgz", - "integrity": "sha512-5c7zr8oy1JsCV86BaoIPVLo4yevDfvPEsMQcGlgfJ5PS7ouAVvR1aHt0tjF65bL1vYdoQ1olvpextg2T8FyICA==", + "version": "28.1.4", + "resolved": "https://registry.npmjs.org/electron/-/electron-28.1.4.tgz", + "integrity": "sha512-WE6go611KOhtH6efRPMnVC7FE7DCKnQ3ZyHFeI1DbaCy8OU4UjZ8/CZGcuZmZgRdxSBEHoHdgaJkWRHZzF0FOg==", + "dev": true, "requires": { - "@electron/get": "^1.14.1", - "@types/node": "^16.11.26", + "@electron/get": "^2.0.0", + "@types/node": "^18.11.18", "extract-zip": "^2.0.1" - }, - "dependencies": { - "@types/node": { - "version": "16.11.47", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.47.tgz", - "integrity": "sha512-fpP+jk2zJ4VW66+wAMFoBJlx1bxmBKx4DUFf68UHgdGCOuyUTDlLWqsaNPJh7xhNDykyJ9eIzAygilP/4WoN8g==" - } } }, "electron-builder": { @@ -7725,41 +7431,6 @@ "yargs-parser": "^21.1.1" }, "dependencies": { - "@electron/get": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz", - "integrity": "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "env-paths": "^2.2.0", - "fs-extra": "^8.1.0", - "global-agent": "^3.0.0", - "got": "^11.8.5", - "progress": "^2.0.3", - "semver": "^6.2.0", - "sumchecker": "^3.0.1" - }, - "dependencies": { - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, "semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -7830,6 +7501,7 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -7846,7 +7518,8 @@ "env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true }, "error-ex": { "version": "1.3.2", @@ -7861,6 +7534,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, "optional": true }, "escalade": { @@ -8113,6 +7787,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, "requires": { "@types/yauzl": "^2.9.1", "debug": "^4.1.1", @@ -8164,6 +7839,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, "requires": { "pend": "~1.2.0" } @@ -8464,6 +8140,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -8495,6 +8172,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, "optional": true, "requires": { "boolean": "^3.0.1", @@ -8505,18 +8183,6 @@ "serialize-error": "^7.0.1" } }, - "global-tunnel-ng": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", - "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", - "optional": true, - "requires": { - "encodeurl": "^1.0.2", - "lodash": "^4.17.10", - "npm-conf": "^1.1.3", - "tunnel": "^0.0.6" - } - }, "globals": { "version": "13.17.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", @@ -8530,6 +8196,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, "optional": true, "requires": { "define-properties": "^1.1.3" @@ -8685,6 +8352,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, "optional": true, "requires": { "get-intrinsic": "^1.1.1" @@ -8694,6 +8362,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "dev": true, "optional": true, "requires": { "function-bind": "^1.1.1", @@ -8720,7 +8389,8 @@ "http-cache-semantics": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true }, "http-errors": { "version": "2.0.0", @@ -8816,12 +8486,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "optional": true - }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -8940,11 +8604,6 @@ "argparse": "^2.0.1" } }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -8961,6 +8620,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, "optional": true }, "json5": { @@ -8973,6 +8633,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -8983,14 +8644,6 @@ "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", "dev": true }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "requires": { - "json-buffer": "3.0.0" - } - }, "lazy-val": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", @@ -9032,7 +8685,7 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "devOptional": true + "dev": true }, "lodash.escaperegexp": { "version": "4.1.2", @@ -9065,7 +8718,8 @@ "lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true }, "lru-cache": { "version": "6.0.0", @@ -9079,6 +8733,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, "optional": true, "requires": { "escape-string-regexp": "^4.0.0" @@ -9088,6 +8743,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, "optional": true } } @@ -9144,7 +8800,8 @@ "mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true }, "minimatch": { "version": "3.1.2", @@ -9278,29 +8935,6 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - }, - "npm-conf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", - "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", - "optional": true, - "requires": { - "config-chain": "^1.1.11", - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "optional": true - } - } - }, "object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", @@ -9310,6 +8944,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, "optional": true }, "on-finished": { @@ -9324,6 +8959,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "requires": { "wrappy": "1" } @@ -9342,11 +8978,6 @@ "word-wrap": "^1.2.3" } }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -9444,7 +9075,8 @@ "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true }, "picomatch": { "version": "2.3.1", @@ -9474,21 +9106,11 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==" - }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "optional": true + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true }, "proxy-addr": { "version": "2.0.7", @@ -9509,6 +9131,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -9677,6 +9300,7 @@ "version": "2.15.4", "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, "optional": true, "requires": { "boolean": "^3.0.1", @@ -9691,6 +9315,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true, "optional": true } } @@ -9755,6 +9380,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true, "optional": true }, "send": { @@ -9798,6 +9424,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, "optional": true, "requires": { "type-fest": "^0.13.1" @@ -9807,6 +9434,7 @@ "version": "0.13.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, "optional": true } } @@ -9996,6 +9624,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, "requires": { "debug": "^4.1.0" } @@ -10107,11 +9736,6 @@ "tmp": "^0.2.0" } }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -10168,12 +9792,6 @@ "tslib": "^1.8.1" } }, - "tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "optional": true - }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -10218,10 +9836,17 @@ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", "dev": true }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "unpipe": { "version": "1.0.0", @@ -10237,14 +9862,6 @@ "punycode": "^2.1.0" } }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "requires": { - "prepend-http": "^2.0.0" - } - }, "utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", @@ -10306,7 +9923,8 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true }, "xmlbuilder": { "version": "15.1.1", @@ -10350,6 +9968,7 @@ "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, "requires": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" diff --git a/package.json b/package.json index 8b762e5..db31f1c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stremio-enhanced", - "version": "0.0.2", + "version": "0.0.3", "description": "basically a custom stremio client that gives the user the ability to use custom themes & plugins.", "main": "./dist/main.js", "scripts": { @@ -11,7 +11,8 @@ "package-all": "yarn build && npx electron-packager ./ stremio-enhanced --overwrite --asar --platform=all --arch=x64 --prune=true --out=release-builds --icon=./images/icon.ico", "package-win32": "yarn build && npx electron-packager ./ stremio-enhanced --overwrite --asar --platform=win32 --arch=x64 --prune=true --out=release-builds --icon=./images/icon.ico", "package-macos": "yarn build && npx electron-packager ./ stremio-enhanced --overwrite --asar --platform=darwin --arch=x64 --prune=true --out=release-builds --icon=./images/icon.ico", - "package-linux": "yarn build && npx electron-packager ./ stremio-enhanced --overwrite --asar --platform=linux --arch=x64 --prune=true --out=release-builds --icon=./images/icon.ico" + "package-linux": "yarn build && npx electron-packager ./ stremio-enhanced --overwrite --asar --platform=linux --arch=x64 --prune=true --out=release-builds --icon=./images/icon.ico", + "package-macos-arm": "yarn build && npx electron-packager ./ stremio-enhanced --overwrite --asar --platform=darwin --arch=arm64 --prune=true --out=release-builds --icon=./images/icon.ico" }, "repository": "https://github.com/REVENGE977/stremio-enhanced.git", "publish": { @@ -21,9 +22,12 @@ "author": "REVENGE", "license": "MIT", "devDependencies": { + "@types/angular": "^1.8.9", + "@types/electron": "^1.6.10", + "@types/express": "^4.17.21", "@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/parser": "^4.33.0", - "electron": "^20.0.1", + "electron": "^28.1.4", "electron-builder": "^23.6.0", "electron-packager": "^17.1.1", "eslint": "^7.32.0", @@ -31,8 +35,7 @@ "typescript": "^4.7.2" }, "dependencies": { - "@electron/remote": "^2.0.8", - "@types/express": "^4.17.14", + "angular": "^1.8.3", "electron-prompt": "^1.7.0", "electron-updater": "^5.3.0", "express": "^4.18.2" diff --git a/src/constants.ts b/src/constants.ts deleted file mode 100644 index 7e495b8..0000000 --- a/src/constants.ts +++ /dev/null @@ -1,2 +0,0 @@ -export const themeLinkSelector:string = "head > link:nth-child(23)"; -export const defaultThemeFileName:string = "blob.css?ver=07b393"; \ No newline at end of file diff --git a/src/helpers.ts b/src/helpers.ts new file mode 100644 index 0000000..1bbfe2c --- /dev/null +++ b/src/helpers.ts @@ -0,0 +1,156 @@ +import { readFileSync, existsSync } from "fs"; +import { join, resolve } from "path"; +import { dialog, BrowserWindow } from "electron"; +import { spawnSync } from "child_process" + +class Helpers { + private static instance: Helpers; + private mainWindow: BrowserWindow | null = null; + + private constructor() {} + + static getInstance(): Helpers { + if (!Helpers.instance) { + Helpers.instance = new Helpers(); + } + return Helpers.instance; + } + + setMainWindow(mainWindow: BrowserWindow): void { + this.mainWindow = mainWindow; + } + + extractMetadataFromFile(filePath:string) { + try { + const fileContent = readFileSync(filePath, 'utf8'); + + const commentBlockRegex = /\/\*\*([\s\S]*?)\*\//; + const commentBlockMatch = fileContent.match(commentBlockRegex); + + if (commentBlockMatch && commentBlockMatch[1]) { + const metadataRegex = /@(\w+)\s+([^\n\r]+)/g; + const metadataMatches = commentBlockMatch[1].matchAll(metadataRegex); + + const metadata:any = {}; + + for (const match of metadataMatches) { + metadata[match[1].trim()] = match[2].trim(); + } + + return metadata; + } else { + console.error('Comment block not found in file ' + filePath); + return null; + } + } catch (error) { + console.error('Error reading the file:', error); + return null; + } + } + + + checkExecutableExists() { + let installationPath: string | undefined; + + switch (process.platform) { + case 'win32': + installationPath = join(process.env.LOCALAPPDATA || '', 'Programs', 'StremioService', `stremio-service.exe`); + break; + case 'darwin': + installationPath = join(process.env.HOME || '', 'Applications', 'StremioService', `stremio-service.app`, 'Contents', 'MacOS', `stremio-service`); + break; + case 'linux': + installationPath = join(process.env.HOME || '', 'bin', `stremio-service`); + break; + default: + console.error('Unsupported operating system'); + return null; + } + + if (!installationPath) { + console.error('Failed to determine installation path for the current operating system'); + return null; + } + + const fullPath = resolve(installationPath); + + try { + if (existsSync(fullPath)) { + return fullPath; + } + } catch (error) { + console.error(`Error checking stremio-service existence in ${fullPath}:`, error.message); + } + + return null; + } + + async showAlert(alertType: 'info' | 'warning' | 'error', title: string, message: string, buttons: Array) : Promise { + const options: Electron.MessageBoxOptions = { + type: alertType, + title: title, + message: message, + buttons: buttons + } + + try { + const response = await dialog.showMessageBox(this.mainWindow!, options) + return response.response; + } catch (error) { + console.error('Error displaying alert:', error); + return -1; + } + } + + async isProcessRunning(processName: string) { + const result = spawnSync('tasklist', ['/fo', 'csv', '/nh', '/v']); + + if (result.error) { + console.error('Error executing tasklist:', result.error.message); + return false; + } + + return result.stdout.toString().toLowerCase().includes(processName.toLowerCase()); + } + + // static killProcess(processName: string): Promise { + // return new Promise((resolve, reject) => { + // const isWindows = process.platform === 'win32'; + + // const findCommand = isWindows + // ? `tasklist /FI "IMAGENAME eq ${processName}.exe" /NH /FO CSV` + // : `pgrep ${processName}`; + + // exec(findCommand, (error, stdout) => { + // if (error) { + // reject(`Error finding process: ${error.message}`); + // return; + // } + + // const pid = stdout.trim(); + + // if (pid) { + // const killCommand = isWindows ? `taskkill /F /PID ${pid}` : `kill -9 ${pid}`; + + // exec(killCommand, (killError) => { + // if (killError) { + // reject(`Error killing process ${processName} (PID: ${pid}): ${killError.message}`); + // } else { + // console.log(`Process ${processName} (PID: ${pid}) killed successfully.`); + // resolve(); + // } + // }); + // } else { + // console.log(`No process found with name ${processName}.`); + // resolve(); + // } + // }); + // }); + // } + +} + +const helpersInstance = Helpers.getInstance(); + + +export default helpersInstance; \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index 35ab71e..14cba29 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,12 +1,13 @@ -import { app, BrowserWindow, shell } from "electron"; -import { resolve, join } from "path"; -import { fork } from "child_process"; +import { app, BrowserWindow, shell, ipcMain } from "electron"; +import { join } from "path"; +import { exec } from "child_process"; import { mkdirSync, existsSync } from "fs"; -import * as express from "express"; +import express from "express"; +import helpers from './helpers'; +import Updater from "./updater"; +var mainWindow: BrowserWindow | null; -var mainWindow:any; - -function createWindow() { +async function createWindow() { mainWindow = new BrowserWindow({ height: 850, webPreferences: { @@ -15,28 +16,41 @@ function createWindow() { nodeIntegration: true }, width: 1500, - icon: "./images/icon.ico" + icon: "./images/icon.ico", + backgroundColor: '#000000' }); - + mainWindow.setMenu(null); mainWindow.loadURL("https://app.strem.io/shell-v4.4/?streamingServer=http%3A%2F%2F127.0.0.1%3A11470#/"); + helpers.setMainWindow(mainWindow); + + ipcMain.on('update-check-on-startup', async (event:any, checkForUpdatesOnStartup) => { + console.log("[ INFO ] Checking for updates on startup: " + checkForUpdatesOnStartup); + if(checkForUpdatesOnStartup == "true") await Updater.checkForUpdates(false); + }); + + ipcMain.on('update-check-userrequest', async (event:any) => { + console.log("[ INFO ] Checking for updates on user request."); + await Updater.checkForUpdates(true); + }); mainWindow.webContents.setWindowOpenHandler((edata:any) => { shell.openExternal(edata.url); return { action: "deny" }; }); - - if(process.argv[3] == "--devtools") { + + if(process.argv.includes("--devtools")) { console.log("[ INFO ] Opening devtools."); mainWindow.webContents.openDevTools(); - } + } } -function RunStreamServer() { - setTimeout(() => { fork(resolve(__dirname, './server.js'), { stdio: "ignore" }) && console.log("[ INFO ] stremio server is running on port 11470.") }, 0); +function RunStremioService(ServicePath: string) { + setTimeout(() => { exec(ServicePath) && console.log("[ INFO ] Stremio Service Started.") }, 0); } -app.on("ready", () => { +app.on("ready", async () => { + console.log("[ INFO ] Running on NodeJS version: " + process.version) if(!existsSync(`${process.env.APPDATA}\\stremio-enhanced`) || !existsSync(`${process.env.APPDATA}\\stremio-enhanced\\themes`) || !existsSync(`${process.env.APPDATA}\\stremio-enhanced\\plugins`)) { try { if(!existsSync(`${process.env.APPDATA}\\stremio-enhanced`)) mkdirSync(`${process.env.APPDATA}\\stremio-enhanced`); @@ -44,17 +58,40 @@ app.on("ready", () => { if(!existsSync(`${process.env.APPDATA}\\stremio-enhanced\\plugins`)) mkdirSync(`${process.env.APPDATA}\\stremio-enhanced\\plugins`); }catch {} } - - const app = express(); - - app.use(express.static(`${process.env.APPDATA}\\stremio-enhanced`)); - app.listen(3000, () => console.log("[ INFO ] listening on port 3000")); - - RunStreamServer(); + const web = express(); + + web.use(express.static(`${process.env.APPDATA}\\stremio-enhanced`)); + + web.listen(3000, () => console.log("[ INFO ] Listening on port 3000.")); + + if(!process.argv.includes("--no-stremio-service")) { + const stremioServicePath = helpers.checkExecutableExists(); + if(!stremioServicePath) { + const buttonClicked = await helpers.showAlert("error", "Stremio Service Is Required!", "Stremio Service not found. Please install it from https://github.com/Stremio/stremio-service", ['OK']); + + if(buttonClicked == 0) { + shell.openExternal("https://github.com/Stremio/stremio-service/releases/latest"); + } + + return process.exit(); + } + + //check if stremio service is running or not, and if not start it. + helpers.isProcessRunning("stremio-service") + .then((result) => { + if (result) { + console.log(`[ INFO ] Stremio Service is already running.`); + } else { + console.log(`[ INFO ] Stremio Service is not running, starting...`); + RunStremioService(stremioServicePath); + } + }).catch((error) => console.error('Error checking process:', error)); + } else console.log("[ INFO ] Launching without Stremio Service."); + createWindow(); - - app.on("activate", function () { + + app.on("activate", () => { if (BrowserWindow.getAllWindows().length === 0) createWindow(); }); }); @@ -63,4 +100,13 @@ app.on("window-all-closed", () => { if (process.platform !== "darwin") { app.quit(); } +}); + +app.on('browser-window-created', (e:any, window) => { + window.webContents.on('before-input-event', (event:any, input:any) => { + if (input.control && input.shift && input.key === 'I') { + window.webContents.toggleDevTools(); + event.preventDefault(); + } + }); }); \ No newline at end of file diff --git a/src/modManager.ts b/src/modManager.ts new file mode 100644 index 0000000..934b398 --- /dev/null +++ b/src/modManager.ts @@ -0,0 +1,158 @@ +import { Settings } from "./settings"; +import { readFileSync } from "fs"; +import { exec } from "child_process"; +import properties from "./properties" + +class ModManager { + static loadPlugin(pluginName:string) { + let plugin = readFileSync(`${process.env.APPDATA}\\stremio-enhanced\\plugins\\${pluginName}`, "utf-8"); + let script = document.createElement("script"); + script.innerHTML = plugin + script.id = pluginName + + document.body.appendChild(script); + + let enabledPlugins = JSON.parse(localStorage.getItem("enabledPlugins")); + if(enabledPlugins.includes(pluginName) == false) { + enabledPlugins.push(pluginName) + localStorage.setItem("enabledPlugins", JSON.stringify(enabledPlugins)); + } + + console.log(`[ INFO ] plugin ${pluginName} loaded !`); + } + + static unloadPlugin(pluginName:string) { + document.getElementById(pluginName).remove(); + + let enabledPlugins = JSON.parse(localStorage.getItem("enabledPlugins")); + enabledPlugins = enabledPlugins.filter((x:string) => x !== pluginName); + localStorage.setItem("enabledPlugins", JSON.stringify(enabledPlugins)); + + console.log(`[ INFO ] plugin ${pluginName} unloaded !`); + } + + + // not sure if this is the best way to do this, but hey at least it works. + static togglePluginListener() { + let pluginCheckboxes = document.getElementsByClassName("plugin") as HTMLCollectionOf + + for(let i = 0; i < pluginCheckboxes.length; i++) { + pluginCheckboxes[i].addEventListener("click", () => { + if(pluginCheckboxes[i].checked) { + this.loadPlugin(pluginCheckboxes[i].name) + } else { + this.unloadPlugin(pluginCheckboxes[i].name); + document.querySelector("#enhanced > div:nth-child(3)").innerHTML += `

Reload is required to disable plugins. Press F5 to reload.

` + } + }) + } + } + + + static openThemesFolder() { + let button = document.getElementById("openthemesfolderBtn"); + button.addEventListener("click", () => { + exec(`start "" "${process.env.APPDATA}\\stremio-enhanced\\themes"`); + }) + } + + static openPluginsFolder() { + let button = document.getElementById("openpluginsfolderBtn"); + button.addEventListener("click", () => { + exec(`start "" "${process.env.APPDATA}\\stremio-enhanced\\plugins"`); + }) + } + + public static handleScroll(): void { + console.log("handling scroll") + document.addEventListener("scroll", () => { + let generalSection:HTMLElement = document.querySelector('#settingsPage > div.sections > nav > a:nth-child(1)'); + let playerSection:HTMLElement = document.querySelector('#settingsPage > div.sections > nav > a:nth-child(2)'); + let streamingSection:HTMLElement = document.querySelector('#settingsPage > div.sections > nav > a:nth-child(3)'); + let shortcutsSection:HTMLElement = document.querySelector('#settingsPage > div.sections > nav > a:nth-child(4)'); + //let enhancedSection:HTMLElement = document.querySelector('#settingsPage > div.sections > nav > a:nth-child(5)'); + + if (window.scrollY >= generalSection.getBoundingClientRect().top) { + Settings.activeSection(generalSection); + } + + if (window.scrollY >= playerSection.getBoundingClientRect().top) { + Settings.activeSection(playerSection); + } + + if (window.scrollY >= streamingSection.getBoundingClientRect().top) { + Settings.activeSection(streamingSection); + } + + if (window.scrollY >= shortcutsSection.getBoundingClientRect().top) { + Settings.activeSection(shortcutsSection); + } + + // if (this.isElementInViewport(enhancedSection)) { + // Settings.activeSection(enhancedSection); + // } + }); + } + + static scrollListener() { + let generalSection = document.querySelector('#settingsPage > div.sections > nav > a:nth-child(1)'); + generalSection.addEventListener("click", () => { + document.querySelector("#settings-user-prefs").scrollIntoView(); + Settings.activeSection(generalSection); + }) + + let playerSection = document.querySelector('#settingsPage > div.sections > nav > a:nth-child(2)'); + playerSection.addEventListener("click", () => { + document.querySelector("#settings-player-prefs").scrollIntoView(); + Settings.activeSection(playerSection); + }) + + let streamingSection = document.querySelector('#settingsPage > div.sections > nav > a:nth-child(3)'); + streamingSection.addEventListener("click", () => { + document.querySelector("#settings-streaming-prefs").scrollIntoView(); + Settings.activeSection(streamingSection); + }) + + let shortcutsSection = document.querySelector('#settingsPage > div.sections > nav > a:nth-child(4)'); + shortcutsSection.addEventListener("click", () => { + document.querySelector("#settings-shortcuts").scrollIntoView(); + Settings.activeSection(shortcutsSection); + }) + + let enhancedSection = document.querySelector('#settingsPage > div.sections > nav > a:nth-child(5)'); + enhancedSection.addEventListener("click", () => { + document.querySelector("#enhanced > h2").scrollIntoView(); + Settings.activeSection(enhancedSection); + }) + } + + static addApplyThemeFunction() { + let script = document.createElement("script"); + script.innerHTML = + `function applyTheme(theme) { + let link = document.querySelector("${properties.themeLinkSelector}"); + if(theme != "Default") { + link.setAttribute("href", \`http://localhost:3000/themes/\${theme}\`); + } else link.setAttribute("href", \`${properties.defaultThemeFileName}\`); + + let currentTheme = localStorage.getItem("currentTheme"); + if(currentTheme != null) { + document.getElementById(currentTheme).disabled = false; + document.getElementById(currentTheme).innerText = "Apply"; + } + + localStorage.setItem("currentTheme", theme); + document.getElementById(theme).disabled = true; + document.getElementById(theme).innerText = "Applied"; + console.log(\`[ INFO ] \${theme} applied !\`); + }` + + document.body.appendChild(script); + } + + static checkForItemUpdates() { + + } +} + + export default ModManager; \ No newline at end of file diff --git a/src/preload.ts b/src/preload.ts index 646f9d0..727ef2c 100644 --- a/src/preload.ts +++ b/src/preload.ts @@ -1,55 +1,39 @@ import { ipcRenderer } from "electron"; -import { exec } from "child_process"; -import { readdirSync, readFileSync } from "fs"; -import settings from "./settings"; -import { themeLinkSelector, defaultThemeFileName } from "./constants" - -/* - angular.element($0).scope().episodesBySeason(angular.element($0).scope().info, seasonNumber) - use thie line of code to grab episodes for a certain season in a show. - - angular.element($0).scope().info.getSeasons() - to get an array of available seasons. -*/ - -ipcRenderer.on("autoUpdate-status", (event, code) => { - switch(code) { - case "update-available": - prompt("Update available for Stremio-Enhanced, update now ?"); - break; - case "error": - alert("Error in the autoupdate system") - break; - case "update-downloaded": - alert("Update download finished, restart app to install the update.") - break; - } -}) +import { readdirSync } from "fs"; +import { Settings } from "./settings"; +import properties from "./properties" +import { existsSync } from "fs"; +import ModManager from "./modManager"; +import Helpers from "./helpers"; +import Updater from "./updater"; window.addEventListener("DOMContentLoaded", () => { //removes the toast that appears on startup automatically. - settings.waitForElm('#toast-container > div > div > button').then((elm) => { - document.querySelector('#toast-container > div > div > button').click(); + Settings.waitForElm('#toast-container > div > div > button').then((elm:HTMLElement) => { + elm.click(); }) if(localStorage.getItem("enabledPlugins") == null || localStorage.getItem("enabledPlugins") == "") localStorage.setItem("enabledPlugins", "[]"); + if(localStorage.getItem("checkForUpdatesOnStartup") == null || localStorage.getItem("checkForUpdatesOnStartup") == "") localStorage.setItem("checkForUpdatesOnStartup", "true"); + ipcRenderer.send('update-check-on-startup', localStorage.getItem('checkForUpdatesOnStartup')); if(localStorage.getItem("currentTheme") != null) { let currentTheme = localStorage.getItem("currentTheme"); - let link = document.querySelector(themeLinkSelector); - if(currentTheme != "Default") { + let link = document.querySelector(properties.themeLinkSelector); + properties.defaultThemeFileName = link.getAttribute("href"); + if(currentTheme != "Default" && existsSync(`${process.env.APPDATA}\\stremio-enhanced\\themes\\${currentTheme}`)) { link.setAttribute("href", `http://localhost:3000/themes/${currentTheme}`); } else { - link.setAttribute("href", defaultThemeFileName); + link.setAttribute("href", properties.defaultThemeFileName); } - } + } else localStorage.setItem("currentTheme", "Default"); //loads enabled plugins. let pluginsToLoad = readdirSync(`${process.env.APPDATA}\\stremio-enhanced\\plugins`).filter((fileName) => { return fileName.endsWith(".plugin.js") }); pluginsToLoad.forEach(plugin => { let enabledPlugins = JSON.parse(localStorage.getItem("enabledPlugins")); - if(enabledPlugins.includes(plugin)) loadPlugin(plugin); + if(enabledPlugins.includes(plugin)) ModManager.loadPlugin(plugin); }) let settingsBtn = document.querySelector("#user-panel > div:nth-child(3) > div:nth-child(1)"); @@ -57,156 +41,75 @@ window.addEventListener("DOMContentLoaded", () => { [settingsBtn, navBarSettingsBtn].forEach(element => { element.addEventListener("click", e => { - settings.waitForElm('#settingsPage > div.sections > nav').then((elm) => { - addApplyThemeFunction(); + Settings.waitForElm('#settingsPage > div.sections > nav').then(() => { + if(document.querySelector(`a[href="#settings-enhanced"]`)) return; + ModManager.addApplyThemeFunction(); let themesList = readdirSync(`${process.env.APPDATA}\\stremio-enhanced\\themes`).filter((fileName) => { return fileName.endsWith(".theme.css") }) let pluginsList = readdirSync(`${process.env.APPDATA}\\stremio-enhanced\\plugins`).filter((fileName) => { return fileName.endsWith(".plugin.js") }) - let enabledPlugins = JSON.parse(localStorage.getItem("enabledPlugins")); //sets the #enhanced section as the last section instead of #settings-shortcuts. document.querySelector("#settings-shortcuts").classList.remove("last"); - settings.addIcon("\E9B0", "ias-icon-colors"); - settings.addSeciton("enhanced", "Stremio Enhanced", true); - settings.addCategory("Themes", "enhanced", "ias-icon-colors"); - settings.addCategory("Plugins", "enhanced", "ias-icon-colors"); - settings.addCategory("About", "enhanced", "ias-icon-colors"); - - settings.addButton("Open Themes Folder", "openthemesfolderBtn", "#enhanced > div:nth-child(2)"); - settings.addButton("Open Plugins Folder", "openpluginsfolderBtn", "#enhanced > div:nth-child(3)"); - document.querySelector("#enhanced > div:nth-child(4)").innerHTML += `

Developed By:

REVENGE977


Version: v0.2

` + Settings.addSeciton("enhanced", "Enhanced", true); + Settings.addCategory("Themes", "enhanced", ` `); + Settings.addCategory("Plugins", "enhanced", ``); + Settings.addCategory("About", "enhanced", ` `); + Settings.addButton("Open Themes Folder", "openthemesfolderBtn", "#enhanced > div:nth-child(2)"); + Settings.addButton("Open Plugins Folder", "openpluginsfolderBtn", "#enhanced > div:nth-child(3)"); + + document.querySelector("#enhanced > div:nth-child(4)").innerHTML += ` +

Developed By: +

REVENGE977


Version: v${Updater.getCurrentVersion()}

+
+
+
+
+
+
` + + Settings.addButton("Check For Updates", "checkforupdatesBtn", "#enhanced > div:nth-child(4)"); + document.getElementById("checkforupdatesBtn").addEventListener("click", async () => { + ipcRenderer.send("update-check-userrequest"); + }) + + document.getElementById("checkForUpdatesOnStartup").addEventListener("click", (e) => { + if ((e.target as HTMLInputElement).checked) { + localStorage.setItem("checkForUpdatesOnStartup", "true") + } else { + localStorage.setItem("checkForUpdatesOnStartup", "false") + } + }) + //default theme document.querySelector("#enhanced > div:nth-child(2)").innerHTML += `
` themesList.forEach(theme => { - document.querySelector("#enhanced > div:nth-child(2)").innerHTML += `
` + //document.querySelector("#enhanced > div:nth-child(2)").innerHTML += `
` + console.log("reading metadata for " + theme) + let readMetaData = Helpers.extractMetadataFromFile(`${process.env.APPDATA}\\stremio-enhanced\\themes\\${theme}`); + + if (readMetaData && Object.keys(readMetaData).length > 0) { + Settings.addItem("theme", theme, readMetaData); + } }) pluginsList.forEach(plugin => { - document.querySelector("#enhanced > div:nth-child(3)").innerHTML += `
` + //document.querySelector("#enhanced > div:nth-child(3)").innerHTML += `
` + let readMetaData = Helpers.extractMetadataFromFile(`${process.env.APPDATA}\\stremio-enhanced\\plugins\\${plugin}`); + + if (readMetaData && Object.keys(readMetaData).length > 0) { + Settings.addItem("plugin", plugin, readMetaData); + } }) - togglePluginListener(); - scrollListener(); - openThemesFolder(); - openPluginsFolder(); + ModManager.togglePluginListener(); + ModManager.scrollListener(); + ModManager.openThemesFolder(); + ModManager.openPluginsFolder(); + ModManager.handleScroll(); }); }) }) -}) - -function loadPlugin(pluginName:string) { - let plugin = readFileSync(`${process.env.APPDATA}\\stremio-enhanced\\plugins\\${pluginName}`, "utf-8"); - let script = document.createElement("script"); - script.innerHTML = plugin - script.id = pluginName - - document.body.appendChild(script); - - let enabledPlugins = JSON.parse(localStorage.getItem("enabledPlugins")); - if(enabledPlugins.includes(pluginName) == false) { - enabledPlugins.push(pluginName) - localStorage.setItem("enabledPlugins", JSON.stringify(enabledPlugins)); - } - - console.log(`[ INFO ] plugin ${pluginName} loaded !`); -} - -function unloadPlugin(pluginName:string) { - document.getElementById(pluginName).remove(); - - let enabledPlugins = JSON.parse(localStorage.getItem("enabledPlugins")); - enabledPlugins = enabledPlugins.filter((x:string) => x !== pluginName); - localStorage.setItem("enabledPlugins", JSON.stringify(enabledPlugins)); - - console.log(`[ INFO ] plugin ${pluginName} unloaded !`); -} - - -// not sure if this is the best way to do this, but hey at least it works. -function togglePluginListener() { - let pluginCheckboxes = document.getElementsByClassName("plugin") as HTMLCollectionOf - - for(let i = 0; i < pluginCheckboxes.length; i++) { - pluginCheckboxes[i].addEventListener("click", () => { - if(pluginCheckboxes[i].checked) { - loadPlugin(pluginCheckboxes[i].name) - } else { - unloadPlugin(pluginCheckboxes[i].name); - document.querySelector("#enhanced > div:nth-child(3)").innerHTML += `

reload is required to disable plugins, click here to reload

` - } - }) - } -} - -function addApplyThemeFunction() { - let script = document.createElement("script"); - script.innerHTML = - `function applyTheme(theme) { - let link = document.querySelector("${themeLinkSelector}"); - if(theme != "Default") { - link.setAttribute("href", \`http://localhost:3000/themes/\${theme}\`); - } else link.setAttribute("href", \`${defaultThemeFileName}\`); - - let currentTheme = localStorage.getItem("currentTheme"); - if(currentTheme != null) { - document.getElementById(currentTheme).disabled = false; - document.getElementById(currentTheme).innerText = "Apply"; - } - - localStorage.setItem("currentTheme", theme); - document.getElementById(theme).disabled = true; - document.getElementById(theme).innerText = "Applied"; - console.log(\`[ INFO ] \${theme} applied !\`); - }` - - document.body.appendChild(script); -} - -function openThemesFolder() { - let button = document.getElementById("openthemesfolderBtn"); - button.addEventListener("click", () => { - exec(`start "" "${process.env.APPDATA}\\stremio-enhanced\\themes"`); - }) -} - -function openPluginsFolder() { - let button = document.getElementById("openpluginsfolderBtn"); - button.addEventListener("click", () => { - exec(`start "" "${process.env.APPDATA}\\stremio-enhanced\\plugins"`); - }) -} - -// had to make scroll thing for every section because for some reason after adding the stremio enhanced section buttons stopped working for other sections. -function scrollListener() { - let generalSection = document.querySelector('#settingsPage > div.sections > nav > a:nth-child(1)'); - generalSection.addEventListener("click", () => { - document.querySelector("#settings-user-prefs").scrollIntoView(); - settings.activeSection(generalSection); - }) - - let playerSection = document.querySelector('#settingsPage > div.sections > nav > a:nth-child(2)'); - playerSection.addEventListener("click", () => { - document.querySelector("#settings-player-prefs").scrollIntoView(); - settings.activeSection(playerSection); - }) - - let streamingSection = document.querySelector('#settingsPage > div.sections > nav > a:nth-child(3)'); - streamingSection.addEventListener("click", () => { - document.querySelector("#settings-streaming-prefs").scrollIntoView(); - settings.activeSection(streamingSection); - }) - - let shortcutsSection = document.querySelector('#settingsPage > div.sections > nav > a:nth-child(4)'); - shortcutsSection.addEventListener("click", () => { - document.querySelector("#settings-shortcuts").scrollIntoView(); - settings.activeSection(shortcutsSection); - }) - - let enhancedSection = document.querySelector('#settingsPage > div.sections > nav > a:nth-child(5)'); - enhancedSection.addEventListener("click", () => { - document.querySelector("#enhanced > h2").scrollIntoView(); - settings.activeSection(enhancedSection); - }) -} \ No newline at end of file +}) \ No newline at end of file diff --git a/src/properties.ts b/src/properties.ts new file mode 100644 index 0000000..5b49217 --- /dev/null +++ b/src/properties.ts @@ -0,0 +1,6 @@ +class Properties { + public static themeLinkSelector: string = "head > link[rel=stylesheet]"; + public static defaultThemeFileName: string = "blob.css?ver=07b393"; +} + +export default Properties; \ No newline at end of file diff --git a/src/server.js b/src/server.js deleted file mode 100644 index 56d4a0f..0000000 --- a/src/server.js +++ /dev/null @@ -1,157019 +0,0 @@ -window={};module.parent=module.parent||{};process.env.NODE_ENV="production";require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o "html" - * - * // Accept: text/*, application/json - * this.types('html'); - * // => "html" - * this.types('text/html'); - * // => "text/html" - * this.types('json', 'text'); - * // => "json" - * this.types('application/json'); - * // => "application/json" - * - * // Accept: text/*, application/json - * this.types('image/png'); - * this.types('png'); - * // => undefined - * - * // Accept: text/*;q=.5, application/json - * this.types(['html', 'json']); - * this.types('html', 'json'); - * // => "json" - * - * @param {String|Array} types... - * @return {String|Array|Boolean} - * @public - */ - -Accepts.prototype.type = -Accepts.prototype.types = function (types_) { - var types = types_ - - // support flattened arguments - if (types && !Array.isArray(types)) { - types = new Array(arguments.length) - for (var i = 0; i < types.length; i++) { - types[i] = arguments[i] - } - } - - // no types, return all requested types - if (!types || types.length === 0) { - return this.negotiator.mediaTypes() - } - - // no accept header, return first given type - if (!this.headers.accept) { - return types[0] - } - - var mimes = types.map(extToMime) - var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)) - var first = accepts[0] - - return first - ? types[mimes.indexOf(first)] - : false -} - -/** - * Return accepted encodings or best fit based on `encodings`. - * - * Given `Accept-Encoding: gzip, deflate` - * an array sorted by quality is returned: - * - * ['gzip', 'deflate'] - * - * @param {String|Array} encodings... - * @return {String|Array} - * @public - */ - -Accepts.prototype.encoding = -Accepts.prototype.encodings = function (encodings_) { - var encodings = encodings_ - - // support flattened arguments - if (encodings && !Array.isArray(encodings)) { - encodings = new Array(arguments.length) - for (var i = 0; i < encodings.length; i++) { - encodings[i] = arguments[i] - } - } - - // no encodings, return all requested encodings - if (!encodings || encodings.length === 0) { - return this.negotiator.encodings() - } - - return this.negotiator.encodings(encodings)[0] || false -} - -/** - * Return accepted charsets or best fit based on `charsets`. - * - * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5` - * an array sorted by quality is returned: - * - * ['utf-8', 'utf-7', 'iso-8859-1'] - * - * @param {String|Array} charsets... - * @return {String|Array} - * @public - */ - -Accepts.prototype.charset = -Accepts.prototype.charsets = function (charsets_) { - var charsets = charsets_ - - // support flattened arguments - if (charsets && !Array.isArray(charsets)) { - charsets = new Array(arguments.length) - for (var i = 0; i < charsets.length; i++) { - charsets[i] = arguments[i] - } - } - - // no charsets, return all requested charsets - if (!charsets || charsets.length === 0) { - return this.negotiator.charsets() - } - - return this.negotiator.charsets(charsets)[0] || false -} - -/** - * Return accepted languages or best fit based on `langs`. - * - * Given `Accept-Language: en;q=0.8, es, pt` - * an array sorted by quality is returned: - * - * ['es', 'pt', 'en'] - * - * @param {String|Array} langs... - * @return {Array|String} - * @public - */ - -Accepts.prototype.lang = -Accepts.prototype.langs = -Accepts.prototype.language = -Accepts.prototype.languages = function (languages_) { - var languages = languages_ - - // support flattened arguments - if (languages && !Array.isArray(languages)) { - languages = new Array(arguments.length) - for (var i = 0; i < languages.length; i++) { - languages[i] = arguments[i] - } - } - - // no languages, return all requested languages - if (!languages || languages.length === 0) { - return this.negotiator.languages() - } - - return this.negotiator.languages(languages)[0] || false -} - -/** - * Convert extnames to mime. - * - * @param {String} type - * @return {String} - * @private - */ - -function extToMime (type) { - return type.indexOf('/') === -1 - ? mime.lookup(type) - : type -} - -/** - * Check if mime is valid. - * - * @param {String} type - * @return {String} - * @private - */ - -function validMime (type) { - return typeof type === 'string' -} - -},{"mime-types":4,"negotiator":577}],2:[function(require,module,exports){ -module.exports={ - "application/1d-interleaved-parityfec": { - "source": "iana" - }, - "application/3gpdash-qoe-report+xml": { - "source": "iana" - }, - "application/3gpp-ims+xml": { - "source": "iana" - }, - "application/a2l": { - "source": "iana" - }, - "application/activemessage": { - "source": "iana" - }, - "application/alto-costmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-costmapfilter+json": { - "source": "iana", - "compressible": true - }, - "application/alto-directory+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointcost+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointcostparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointprop+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointpropparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-error+json": { - "source": "iana", - "compressible": true - }, - "application/alto-networkmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-networkmapfilter+json": { - "source": "iana", - "compressible": true - }, - "application/aml": { - "source": "iana" - }, - "application/andrew-inset": { - "source": "iana", - "extensions": ["ez"] - }, - "application/applefile": { - "source": "iana" - }, - "application/applixware": { - "source": "apache", - "extensions": ["aw"] - }, - "application/atf": { - "source": "iana" - }, - "application/atfx": { - "source": "iana" - }, - "application/atom+xml": { - "source": "iana", - "compressible": true, - "extensions": ["atom"] - }, - "application/atomcat+xml": { - "source": "iana", - "extensions": ["atomcat"] - }, - "application/atomdeleted+xml": { - "source": "iana" - }, - "application/atomicmail": { - "source": "iana" - }, - "application/atomsvc+xml": { - "source": "iana", - "extensions": ["atomsvc"] - }, - "application/atxml": { - "source": "iana" - }, - "application/auth-policy+xml": { - "source": "iana" - }, - "application/bacnet-xdd+zip": { - "source": "iana" - }, - "application/batch-smtp": { - "source": "iana" - }, - "application/bdoc": { - "compressible": false, - "extensions": ["bdoc"] - }, - "application/beep+xml": { - "source": "iana" - }, - "application/calendar+json": { - "source": "iana", - "compressible": true - }, - "application/calendar+xml": { - "source": "iana" - }, - "application/call-completion": { - "source": "iana" - }, - "application/cals-1840": { - "source": "iana" - }, - "application/cbor": { - "source": "iana" - }, - "application/cccex": { - "source": "iana" - }, - "application/ccmp+xml": { - "source": "iana" - }, - "application/ccxml+xml": { - "source": "iana", - "extensions": ["ccxml"] - }, - "application/cdfx+xml": { - "source": "iana" - }, - "application/cdmi-capability": { - "source": "iana", - "extensions": ["cdmia"] - }, - "application/cdmi-container": { - "source": "iana", - "extensions": ["cdmic"] - }, - "application/cdmi-domain": { - "source": "iana", - "extensions": ["cdmid"] - }, - "application/cdmi-object": { - "source": "iana", - "extensions": ["cdmio"] - }, - "application/cdmi-queue": { - "source": "iana", - "extensions": ["cdmiq"] - }, - "application/cdni": { - "source": "iana" - }, - "application/cea": { - "source": "iana" - }, - "application/cea-2018+xml": { - "source": "iana" - }, - "application/cellml+xml": { - "source": "iana" - }, - "application/cfw": { - "source": "iana" - }, - "application/clue_info+xml": { - "source": "iana" - }, - "application/cms": { - "source": "iana" - }, - "application/cnrp+xml": { - "source": "iana" - }, - "application/coap-group+json": { - "source": "iana", - "compressible": true - }, - "application/coap-payload": { - "source": "iana" - }, - "application/commonground": { - "source": "iana" - }, - "application/conference-info+xml": { - "source": "iana" - }, - "application/cose": { - "source": "iana" - }, - "application/cose-key": { - "source": "iana" - }, - "application/cose-key-set": { - "source": "iana" - }, - "application/cpl+xml": { - "source": "iana" - }, - "application/csrattrs": { - "source": "iana" - }, - "application/csta+xml": { - "source": "iana" - }, - "application/cstadata+xml": { - "source": "iana" - }, - "application/csvm+json": { - "source": "iana", - "compressible": true - }, - "application/cu-seeme": { - "source": "apache", - "extensions": ["cu"] - }, - "application/cybercash": { - "source": "iana" - }, - "application/dart": { - "compressible": true - }, - "application/dash+xml": { - "source": "iana", - "extensions": ["mpd"] - }, - "application/dashdelta": { - "source": "iana" - }, - "application/davmount+xml": { - "source": "iana", - "extensions": ["davmount"] - }, - "application/dca-rft": { - "source": "iana" - }, - "application/dcd": { - "source": "iana" - }, - "application/dec-dx": { - "source": "iana" - }, - "application/dialog-info+xml": { - "source": "iana" - }, - "application/dicom": { - "source": "iana" - }, - "application/dicom+json": { - "source": "iana", - "compressible": true - }, - "application/dicom+xml": { - "source": "iana" - }, - "application/dii": { - "source": "iana" - }, - "application/dit": { - "source": "iana" - }, - "application/dns": { - "source": "iana" - }, - "application/docbook+xml": { - "source": "apache", - "extensions": ["dbk"] - }, - "application/dskpp+xml": { - "source": "iana" - }, - "application/dssc+der": { - "source": "iana", - "extensions": ["dssc"] - }, - "application/dssc+xml": { - "source": "iana", - "extensions": ["xdssc"] - }, - "application/dvcs": { - "source": "iana" - }, - "application/ecmascript": { - "source": "iana", - "compressible": true, - "extensions": ["ecma"] - }, - "application/edi-consent": { - "source": "iana" - }, - "application/edi-x12": { - "source": "iana", - "compressible": false - }, - "application/edifact": { - "source": "iana", - "compressible": false - }, - "application/efi": { - "source": "iana" - }, - "application/emergencycalldata.comment+xml": { - "source": "iana" - }, - "application/emergencycalldata.control+xml": { - "source": "iana" - }, - "application/emergencycalldata.deviceinfo+xml": { - "source": "iana" - }, - "application/emergencycalldata.ecall.msd": { - "source": "iana" - }, - "application/emergencycalldata.providerinfo+xml": { - "source": "iana" - }, - "application/emergencycalldata.serviceinfo+xml": { - "source": "iana" - }, - "application/emergencycalldata.subscriberinfo+xml": { - "source": "iana" - }, - "application/emergencycalldata.veds+xml": { - "source": "iana" - }, - "application/emma+xml": { - "source": "iana", - "extensions": ["emma"] - }, - "application/emotionml+xml": { - "source": "iana" - }, - "application/encaprtp": { - "source": "iana" - }, - "application/epp+xml": { - "source": "iana" - }, - "application/epub+zip": { - "source": "iana", - "extensions": ["epub"] - }, - "application/eshop": { - "source": "iana" - }, - "application/exi": { - "source": "iana", - "extensions": ["exi"] - }, - "application/fastinfoset": { - "source": "iana" - }, - "application/fastsoap": { - "source": "iana" - }, - "application/fdt+xml": { - "source": "iana" - }, - "application/fhir+xml": { - "source": "iana" - }, - "application/fido.trusted-apps+json": { - "compressible": true - }, - "application/fits": { - "source": "iana" - }, - "application/font-sfnt": { - "source": "iana" - }, - "application/font-tdpfr": { - "source": "iana", - "extensions": ["pfr"] - }, - "application/font-woff": { - "source": "iana", - "compressible": false, - "extensions": ["woff"] - }, - "application/framework-attributes+xml": { - "source": "iana" - }, - "application/geo+json": { - "source": "iana", - "compressible": true, - "extensions": ["geojson"] - }, - "application/geo+json-seq": { - "source": "iana" - }, - "application/geoxacml+xml": { - "source": "iana" - }, - "application/gml+xml": { - "source": "iana", - "extensions": ["gml"] - }, - "application/gpx+xml": { - "source": "apache", - "extensions": ["gpx"] - }, - "application/gxf": { - "source": "apache", - "extensions": ["gxf"] - }, - "application/gzip": { - "source": "iana", - "compressible": false, - "extensions": ["gz"] - }, - "application/h224": { - "source": "iana" - }, - "application/held+xml": { - "source": "iana" - }, - "application/hjson": { - "extensions": ["hjson"] - }, - "application/http": { - "source": "iana" - }, - "application/hyperstudio": { - "source": "iana", - "extensions": ["stk"] - }, - "application/ibe-key-request+xml": { - "source": "iana" - }, - "application/ibe-pkg-reply+xml": { - "source": "iana" - }, - "application/ibe-pp-data": { - "source": "iana" - }, - "application/iges": { - "source": "iana" - }, - "application/im-iscomposing+xml": { - "source": "iana" - }, - "application/index": { - "source": "iana" - }, - "application/index.cmd": { - "source": "iana" - }, - "application/index.obj": { - "source": "iana" - }, - "application/index.response": { - "source": "iana" - }, - "application/index.vnd": { - "source": "iana" - }, - "application/inkml+xml": { - "source": "iana", - "extensions": ["ink","inkml"] - }, - "application/iotp": { - "source": "iana" - }, - "application/ipfix": { - "source": "iana", - "extensions": ["ipfix"] - }, - "application/ipp": { - "source": "iana" - }, - "application/isup": { - "source": "iana" - }, - "application/its+xml": { - "source": "iana" - }, - "application/java-archive": { - "source": "apache", - "compressible": false, - "extensions": ["jar","war","ear"] - }, - "application/java-serialized-object": { - "source": "apache", - "compressible": false, - "extensions": ["ser"] - }, - "application/java-vm": { - "source": "apache", - "compressible": false, - "extensions": ["class"] - }, - "application/javascript": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["js","mjs"] - }, - "application/jf2feed+json": { - "source": "iana", - "compressible": true - }, - "application/jose": { - "source": "iana" - }, - "application/jose+json": { - "source": "iana", - "compressible": true - }, - "application/jrd+json": { - "source": "iana", - "compressible": true - }, - "application/json": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["json","map"] - }, - "application/json-patch+json": { - "source": "iana", - "compressible": true - }, - "application/json-seq": { - "source": "iana" - }, - "application/json5": { - "extensions": ["json5"] - }, - "application/jsonml+json": { - "source": "apache", - "compressible": true, - "extensions": ["jsonml"] - }, - "application/jwk+json": { - "source": "iana", - "compressible": true - }, - "application/jwk-set+json": { - "source": "iana", - "compressible": true - }, - "application/jwt": { - "source": "iana" - }, - "application/kpml-request+xml": { - "source": "iana" - }, - "application/kpml-response+xml": { - "source": "iana" - }, - "application/ld+json": { - "source": "iana", - "compressible": true, - "extensions": ["jsonld"] - }, - "application/lgr+xml": { - "source": "iana" - }, - "application/link-format": { - "source": "iana" - }, - "application/load-control+xml": { - "source": "iana" - }, - "application/lost+xml": { - "source": "iana", - "extensions": ["lostxml"] - }, - "application/lostsync+xml": { - "source": "iana" - }, - "application/lxf": { - "source": "iana" - }, - "application/mac-binhex40": { - "source": "iana", - "extensions": ["hqx"] - }, - "application/mac-compactpro": { - "source": "apache", - "extensions": ["cpt"] - }, - "application/macwriteii": { - "source": "iana" - }, - "application/mads+xml": { - "source": "iana", - "extensions": ["mads"] - }, - "application/manifest+json": { - "charset": "UTF-8", - "compressible": true, - "extensions": ["webmanifest"] - }, - "application/marc": { - "source": "iana", - "extensions": ["mrc"] - }, - "application/marcxml+xml": { - "source": "iana", - "extensions": ["mrcx"] - }, - "application/mathematica": { - "source": "iana", - "extensions": ["ma","nb","mb"] - }, - "application/mathml+xml": { - "source": "iana", - "extensions": ["mathml"] - }, - "application/mathml-content+xml": { - "source": "iana" - }, - "application/mathml-presentation+xml": { - "source": "iana" - }, - "application/mbms-associated-procedure-description+xml": { - "source": "iana" - }, - "application/mbms-deregister+xml": { - "source": "iana" - }, - "application/mbms-envelope+xml": { - "source": "iana" - }, - "application/mbms-msk+xml": { - "source": "iana" - }, - "application/mbms-msk-response+xml": { - "source": "iana" - }, - "application/mbms-protection-description+xml": { - "source": "iana" - }, - "application/mbms-reception-report+xml": { - "source": "iana" - }, - "application/mbms-register+xml": { - "source": "iana" - }, - "application/mbms-register-response+xml": { - "source": "iana" - }, - "application/mbms-schedule+xml": { - "source": "iana" - }, - "application/mbms-user-service-description+xml": { - "source": "iana" - }, - "application/mbox": { - "source": "iana", - "extensions": ["mbox"] - }, - "application/media-policy-dataset+xml": { - "source": "iana" - }, - "application/media_control+xml": { - "source": "iana" - }, - "application/mediaservercontrol+xml": { - "source": "iana", - "extensions": ["mscml"] - }, - "application/merge-patch+json": { - "source": "iana", - "compressible": true - }, - "application/metalink+xml": { - "source": "apache", - "extensions": ["metalink"] - }, - "application/metalink4+xml": { - "source": "iana", - "extensions": ["meta4"] - }, - "application/mets+xml": { - "source": "iana", - "extensions": ["mets"] - }, - "application/mf4": { - "source": "iana" - }, - "application/mikey": { - "source": "iana" - }, - "application/mmt-usd+xml": { - "source": "iana" - }, - "application/mods+xml": { - "source": "iana", - "extensions": ["mods"] - }, - "application/moss-keys": { - "source": "iana" - }, - "application/moss-signature": { - "source": "iana" - }, - "application/mosskey-data": { - "source": "iana" - }, - "application/mosskey-request": { - "source": "iana" - }, - "application/mp21": { - "source": "iana", - "extensions": ["m21","mp21"] - }, - "application/mp4": { - "source": "iana", - "extensions": ["mp4s","m4p"] - }, - "application/mpeg4-generic": { - "source": "iana" - }, - "application/mpeg4-iod": { - "source": "iana" - }, - "application/mpeg4-iod-xmt": { - "source": "iana" - }, - "application/mrb-consumer+xml": { - "source": "iana" - }, - "application/mrb-publish+xml": { - "source": "iana" - }, - "application/msc-ivr+xml": { - "source": "iana" - }, - "application/msc-mixer+xml": { - "source": "iana" - }, - "application/msword": { - "source": "iana", - "compressible": false, - "extensions": ["doc","dot"] - }, - "application/mud+json": { - "source": "iana", - "compressible": true - }, - "application/mxf": { - "source": "iana", - "extensions": ["mxf"] - }, - "application/n-quads": { - "source": "iana" - }, - "application/n-triples": { - "source": "iana" - }, - "application/nasdata": { - "source": "iana" - }, - "application/news-checkgroups": { - "source": "iana" - }, - "application/news-groupinfo": { - "source": "iana" - }, - "application/news-transmission": { - "source": "iana" - }, - "application/nlsml+xml": { - "source": "iana" - }, - "application/node": { - "source": "iana" - }, - "application/nss": { - "source": "iana" - }, - "application/ocsp-request": { - "source": "iana" - }, - "application/ocsp-response": { - "source": "iana" - }, - "application/octet-stream": { - "source": "iana", - "compressible": false, - "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"] - }, - "application/oda": { - "source": "iana", - "extensions": ["oda"] - }, - "application/odx": { - "source": "iana" - }, - "application/oebps-package+xml": { - "source": "iana", - "extensions": ["opf"] - }, - "application/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["ogx"] - }, - "application/omdoc+xml": { - "source": "apache", - "extensions": ["omdoc"] - }, - "application/onenote": { - "source": "apache", - "extensions": ["onetoc","onetoc2","onetmp","onepkg"] - }, - "application/oxps": { - "source": "iana", - "extensions": ["oxps"] - }, - "application/p2p-overlay+xml": { - "source": "iana" - }, - "application/parityfec": { - "source": "iana" - }, - "application/passport": { - "source": "iana" - }, - "application/patch-ops-error+xml": { - "source": "iana", - "extensions": ["xer"] - }, - "application/pdf": { - "source": "iana", - "compressible": false, - "extensions": ["pdf"] - }, - "application/pdx": { - "source": "iana" - }, - "application/pgp-encrypted": { - "source": "iana", - "compressible": false, - "extensions": ["pgp"] - }, - "application/pgp-keys": { - "source": "iana" - }, - "application/pgp-signature": { - "source": "iana", - "extensions": ["asc","sig"] - }, - "application/pics-rules": { - "source": "apache", - "extensions": ["prf"] - }, - "application/pidf+xml": { - "source": "iana" - }, - "application/pidf-diff+xml": { - "source": "iana" - }, - "application/pkcs10": { - "source": "iana", - "extensions": ["p10"] - }, - "application/pkcs12": { - "source": "iana" - }, - "application/pkcs7-mime": { - "source": "iana", - "extensions": ["p7m","p7c"] - }, - "application/pkcs7-signature": { - "source": "iana", - "extensions": ["p7s"] - }, - "application/pkcs8": { - "source": "iana", - "extensions": ["p8"] - }, - "application/pkcs8-encrypted": { - "source": "iana" - }, - "application/pkix-attr-cert": { - "source": "iana", - "extensions": ["ac"] - }, - "application/pkix-cert": { - "source": "iana", - "extensions": ["cer"] - }, - "application/pkix-crl": { - "source": "iana", - "extensions": ["crl"] - }, - "application/pkix-pkipath": { - "source": "iana", - "extensions": ["pkipath"] - }, - "application/pkixcmp": { - "source": "iana", - "extensions": ["pki"] - }, - "application/pls+xml": { - "source": "iana", - "extensions": ["pls"] - }, - "application/poc-settings+xml": { - "source": "iana" - }, - "application/postscript": { - "source": "iana", - "compressible": true, - "extensions": ["ai","eps","ps"] - }, - "application/ppsp-tracker+json": { - "source": "iana", - "compressible": true - }, - "application/problem+json": { - "source": "iana", - "compressible": true - }, - "application/problem+xml": { - "source": "iana" - }, - "application/provenance+xml": { - "source": "iana" - }, - "application/prs.alvestrand.titrax-sheet": { - "source": "iana" - }, - "application/prs.cww": { - "source": "iana", - "extensions": ["cww"] - }, - "application/prs.hpub+zip": { - "source": "iana" - }, - "application/prs.nprend": { - "source": "iana" - }, - "application/prs.plucker": { - "source": "iana" - }, - "application/prs.rdf-xml-crypt": { - "source": "iana" - }, - "application/prs.xsf+xml": { - "source": "iana" - }, - "application/pskc+xml": { - "source": "iana", - "extensions": ["pskcxml"] - }, - "application/qsig": { - "source": "iana" - }, - "application/raml+yaml": { - "compressible": true, - "extensions": ["raml"] - }, - "application/raptorfec": { - "source": "iana" - }, - "application/rdap+json": { - "source": "iana", - "compressible": true - }, - "application/rdf+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rdf"] - }, - "application/reginfo+xml": { - "source": "iana", - "extensions": ["rif"] - }, - "application/relax-ng-compact-syntax": { - "source": "iana", - "extensions": ["rnc"] - }, - "application/remote-printing": { - "source": "iana" - }, - "application/reputon+json": { - "source": "iana", - "compressible": true - }, - "application/resource-lists+xml": { - "source": "iana", - "extensions": ["rl"] - }, - "application/resource-lists-diff+xml": { - "source": "iana", - "extensions": ["rld"] - }, - "application/rfc+xml": { - "source": "iana" - }, - "application/riscos": { - "source": "iana" - }, - "application/rlmi+xml": { - "source": "iana" - }, - "application/rls-services+xml": { - "source": "iana", - "extensions": ["rs"] - }, - "application/route-apd+xml": { - "source": "iana" - }, - "application/route-s-tsid+xml": { - "source": "iana" - }, - "application/route-usd+xml": { - "source": "iana" - }, - "application/rpki-ghostbusters": { - "source": "iana", - "extensions": ["gbr"] - }, - "application/rpki-manifest": { - "source": "iana", - "extensions": ["mft"] - }, - "application/rpki-publication": { - "source": "iana" - }, - "application/rpki-roa": { - "source": "iana", - "extensions": ["roa"] - }, - "application/rpki-updown": { - "source": "iana" - }, - "application/rsd+xml": { - "source": "apache", - "extensions": ["rsd"] - }, - "application/rss+xml": { - "source": "apache", - "compressible": true, - "extensions": ["rss"] - }, - "application/rtf": { - "source": "iana", - "compressible": true, - "extensions": ["rtf"] - }, - "application/rtploopback": { - "source": "iana" - }, - "application/rtx": { - "source": "iana" - }, - "application/samlassertion+xml": { - "source": "iana" - }, - "application/samlmetadata+xml": { - "source": "iana" - }, - "application/sbml+xml": { - "source": "iana", - "extensions": ["sbml"] - }, - "application/scaip+xml": { - "source": "iana" - }, - "application/scim+json": { - "source": "iana", - "compressible": true - }, - "application/scvp-cv-request": { - "source": "iana", - "extensions": ["scq"] - }, - "application/scvp-cv-response": { - "source": "iana", - "extensions": ["scs"] - }, - "application/scvp-vp-request": { - "source": "iana", - "extensions": ["spq"] - }, - "application/scvp-vp-response": { - "source": "iana", - "extensions": ["spp"] - }, - "application/sdp": { - "source": "iana", - "extensions": ["sdp"] - }, - "application/sep+xml": { - "source": "iana" - }, - "application/sep-exi": { - "source": "iana" - }, - "application/session-info": { - "source": "iana" - }, - "application/set-payment": { - "source": "iana" - }, - "application/set-payment-initiation": { - "source": "iana", - "extensions": ["setpay"] - }, - "application/set-registration": { - "source": "iana" - }, - "application/set-registration-initiation": { - "source": "iana", - "extensions": ["setreg"] - }, - "application/sgml": { - "source": "iana" - }, - "application/sgml-open-catalog": { - "source": "iana" - }, - "application/shf+xml": { - "source": "iana", - "extensions": ["shf"] - }, - "application/sieve": { - "source": "iana" - }, - "application/simple-filter+xml": { - "source": "iana" - }, - "application/simple-message-summary": { - "source": "iana" - }, - "application/simplesymbolcontainer": { - "source": "iana" - }, - "application/slate": { - "source": "iana" - }, - "application/smil": { - "source": "iana" - }, - "application/smil+xml": { - "source": "iana", - "extensions": ["smi","smil"] - }, - "application/smpte336m": { - "source": "iana" - }, - "application/soap+fastinfoset": { - "source": "iana" - }, - "application/soap+xml": { - "source": "iana", - "compressible": true - }, - "application/sparql-query": { - "source": "iana", - "extensions": ["rq"] - }, - "application/sparql-results+xml": { - "source": "iana", - "extensions": ["srx"] - }, - "application/spirits-event+xml": { - "source": "iana" - }, - "application/sql": { - "source": "iana" - }, - "application/srgs": { - "source": "iana", - "extensions": ["gram"] - }, - "application/srgs+xml": { - "source": "iana", - "extensions": ["grxml"] - }, - "application/sru+xml": { - "source": "iana", - "extensions": ["sru"] - }, - "application/ssdl+xml": { - "source": "apache", - "extensions": ["ssdl"] - }, - "application/ssml+xml": { - "source": "iana", - "extensions": ["ssml"] - }, - "application/tamp-apex-update": { - "source": "iana" - }, - "application/tamp-apex-update-confirm": { - "source": "iana" - }, - "application/tamp-community-update": { - "source": "iana" - }, - "application/tamp-community-update-confirm": { - "source": "iana" - }, - "application/tamp-error": { - "source": "iana" - }, - "application/tamp-sequence-adjust": { - "source": "iana" - }, - "application/tamp-sequence-adjust-confirm": { - "source": "iana" - }, - "application/tamp-status-query": { - "source": "iana" - }, - "application/tamp-status-response": { - "source": "iana" - }, - "application/tamp-update": { - "source": "iana" - }, - "application/tamp-update-confirm": { - "source": "iana" - }, - "application/tar": { - "compressible": true - }, - "application/tei+xml": { - "source": "iana", - "extensions": ["tei","teicorpus"] - }, - "application/thraud+xml": { - "source": "iana", - "extensions": ["tfi"] - }, - "application/timestamp-query": { - "source": "iana" - }, - "application/timestamp-reply": { - "source": "iana" - }, - "application/timestamped-data": { - "source": "iana", - "extensions": ["tsd"] - }, - "application/tnauthlist": { - "source": "iana" - }, - "application/trig": { - "source": "iana" - }, - "application/ttml+xml": { - "source": "iana" - }, - "application/tve-trigger": { - "source": "iana" - }, - "application/ulpfec": { - "source": "iana" - }, - "application/urc-grpsheet+xml": { - "source": "iana" - }, - "application/urc-ressheet+xml": { - "source": "iana" - }, - "application/urc-targetdesc+xml": { - "source": "iana" - }, - "application/urc-uisocketdesc+xml": { - "source": "iana" - }, - "application/vcard+json": { - "source": "iana", - "compressible": true - }, - "application/vcard+xml": { - "source": "iana" - }, - "application/vemmi": { - "source": "iana" - }, - "application/vividence.scriptfile": { - "source": "apache" - }, - "application/vnd.1000minds.decision-model+xml": { - "source": "iana" - }, - "application/vnd.3gpp-prose+xml": { - "source": "iana" - }, - "application/vnd.3gpp-prose-pc3ch+xml": { - "source": "iana" - }, - "application/vnd.3gpp-v2x-local-service-information": { - "source": "iana" - }, - "application/vnd.3gpp.access-transfer-events+xml": { - "source": "iana" - }, - "application/vnd.3gpp.bsf+xml": { - "source": "iana" - }, - "application/vnd.3gpp.gmop+xml": { - "source": "iana" - }, - "application/vnd.3gpp.mcptt-affiliation-command+xml": { - "source": "iana" - }, - "application/vnd.3gpp.mcptt-floor-request+xml": { - "source": "iana" - }, - "application/vnd.3gpp.mcptt-info+xml": { - "source": "iana" - }, - "application/vnd.3gpp.mcptt-location-info+xml": { - "source": "iana" - }, - "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { - "source": "iana" - }, - "application/vnd.3gpp.mcptt-signed+xml": { - "source": "iana" - }, - "application/vnd.3gpp.mid-call+xml": { - "source": "iana" - }, - "application/vnd.3gpp.pic-bw-large": { - "source": "iana", - "extensions": ["plb"] - }, - "application/vnd.3gpp.pic-bw-small": { - "source": "iana", - "extensions": ["psb"] - }, - "application/vnd.3gpp.pic-bw-var": { - "source": "iana", - "extensions": ["pvb"] - }, - "application/vnd.3gpp.sms": { - "source": "iana" - }, - "application/vnd.3gpp.sms+xml": { - "source": "iana" - }, - "application/vnd.3gpp.srvcc-ext+xml": { - "source": "iana" - }, - "application/vnd.3gpp.srvcc-info+xml": { - "source": "iana" - }, - "application/vnd.3gpp.state-and-event-info+xml": { - "source": "iana" - }, - "application/vnd.3gpp.ussd+xml": { - "source": "iana" - }, - "application/vnd.3gpp2.bcmcsinfo+xml": { - "source": "iana" - }, - "application/vnd.3gpp2.sms": { - "source": "iana" - }, - "application/vnd.3gpp2.tcap": { - "source": "iana", - "extensions": ["tcap"] - }, - "application/vnd.3lightssoftware.imagescal": { - "source": "iana" - }, - "application/vnd.3m.post-it-notes": { - "source": "iana", - "extensions": ["pwn"] - }, - "application/vnd.accpac.simply.aso": { - "source": "iana", - "extensions": ["aso"] - }, - "application/vnd.accpac.simply.imp": { - "source": "iana", - "extensions": ["imp"] - }, - "application/vnd.acucobol": { - "source": "iana", - "extensions": ["acu"] - }, - "application/vnd.acucorp": { - "source": "iana", - "extensions": ["atc","acutc"] - }, - "application/vnd.adobe.air-application-installer-package+zip": { - "source": "apache", - "extensions": ["air"] - }, - "application/vnd.adobe.flash.movie": { - "source": "iana" - }, - "application/vnd.adobe.formscentral.fcdt": { - "source": "iana", - "extensions": ["fcdt"] - }, - "application/vnd.adobe.fxp": { - "source": "iana", - "extensions": ["fxp","fxpl"] - }, - "application/vnd.adobe.partial-upload": { - "source": "iana" - }, - "application/vnd.adobe.xdp+xml": { - "source": "iana", - "extensions": ["xdp"] - }, - "application/vnd.adobe.xfdf": { - "source": "iana", - "extensions": ["xfdf"] - }, - "application/vnd.aether.imp": { - "source": "iana" - }, - "application/vnd.ah-barcode": { - "source": "iana" - }, - "application/vnd.ahead.space": { - "source": "iana", - "extensions": ["ahead"] - }, - "application/vnd.airzip.filesecure.azf": { - "source": "iana", - "extensions": ["azf"] - }, - "application/vnd.airzip.filesecure.azs": { - "source": "iana", - "extensions": ["azs"] - }, - "application/vnd.amadeus+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.amazon.ebook": { - "source": "apache", - "extensions": ["azw"] - }, - "application/vnd.amazon.mobi8-ebook": { - "source": "iana" - }, - "application/vnd.americandynamics.acc": { - "source": "iana", - "extensions": ["acc"] - }, - "application/vnd.amiga.ami": { - "source": "iana", - "extensions": ["ami"] - }, - "application/vnd.amundsen.maze+xml": { - "source": "iana" - }, - "application/vnd.android.package-archive": { - "source": "apache", - "compressible": false, - "extensions": ["apk"] - }, - "application/vnd.anki": { - "source": "iana" - }, - "application/vnd.anser-web-certificate-issue-initiation": { - "source": "iana", - "extensions": ["cii"] - }, - "application/vnd.anser-web-funds-transfer-initiation": { - "source": "apache", - "extensions": ["fti"] - }, - "application/vnd.antix.game-component": { - "source": "iana", - "extensions": ["atx"] - }, - "application/vnd.apache.thrift.binary": { - "source": "iana" - }, - "application/vnd.apache.thrift.compact": { - "source": "iana" - }, - "application/vnd.apache.thrift.json": { - "source": "iana" - }, - "application/vnd.api+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.apothekende.reservation+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.apple.installer+xml": { - "source": "iana", - "extensions": ["mpkg"] - }, - "application/vnd.apple.mpegurl": { - "source": "iana", - "extensions": ["m3u8"] - }, - "application/vnd.apple.pkpass": { - "compressible": false, - "extensions": ["pkpass"] - }, - "application/vnd.arastra.swi": { - "source": "iana" - }, - "application/vnd.aristanetworks.swi": { - "source": "iana", - "extensions": ["swi"] - }, - "application/vnd.artsquare": { - "source": "iana" - }, - "application/vnd.astraea-software.iota": { - "source": "iana", - "extensions": ["iota"] - }, - "application/vnd.audiograph": { - "source": "iana", - "extensions": ["aep"] - }, - "application/vnd.autopackage": { - "source": "iana" - }, - "application/vnd.avalon+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.avistar+xml": { - "source": "iana" - }, - "application/vnd.balsamiq.bmml+xml": { - "source": "iana" - }, - "application/vnd.balsamiq.bmpr": { - "source": "iana" - }, - "application/vnd.bbf.usp.msg": { - "source": "iana" - }, - "application/vnd.bbf.usp.msg+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.bekitzur-stech+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.bint.med-content": { - "source": "iana" - }, - "application/vnd.biopax.rdf+xml": { - "source": "iana" - }, - "application/vnd.blink-idb-value-wrapper": { - "source": "iana" - }, - "application/vnd.blueice.multipass": { - "source": "iana", - "extensions": ["mpm"] - }, - "application/vnd.bluetooth.ep.oob": { - "source": "iana" - }, - "application/vnd.bluetooth.le.oob": { - "source": "iana" - }, - "application/vnd.bmi": { - "source": "iana", - "extensions": ["bmi"] - }, - "application/vnd.businessobjects": { - "source": "iana", - "extensions": ["rep"] - }, - "application/vnd.cab-jscript": { - "source": "iana" - }, - "application/vnd.canon-cpdl": { - "source": "iana" - }, - "application/vnd.canon-lips": { - "source": "iana" - }, - "application/vnd.capasystems-pg+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.cendio.thinlinc.clientconf": { - "source": "iana" - }, - "application/vnd.century-systems.tcp_stream": { - "source": "iana" - }, - "application/vnd.chemdraw+xml": { - "source": "iana", - "extensions": ["cdxml"] - }, - "application/vnd.chess-pgn": { - "source": "iana" - }, - "application/vnd.chipnuts.karaoke-mmd": { - "source": "iana", - "extensions": ["mmd"] - }, - "application/vnd.cinderella": { - "source": "iana", - "extensions": ["cdy"] - }, - "application/vnd.cirpack.isdn-ext": { - "source": "iana" - }, - "application/vnd.citationstyles.style+xml": { - "source": "iana" - }, - "application/vnd.claymore": { - "source": "iana", - "extensions": ["cla"] - }, - "application/vnd.cloanto.rp9": { - "source": "iana", - "extensions": ["rp9"] - }, - "application/vnd.clonk.c4group": { - "source": "iana", - "extensions": ["c4g","c4d","c4f","c4p","c4u"] - }, - "application/vnd.cluetrust.cartomobile-config": { - "source": "iana", - "extensions": ["c11amc"] - }, - "application/vnd.cluetrust.cartomobile-config-pkg": { - "source": "iana", - "extensions": ["c11amz"] - }, - "application/vnd.coffeescript": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.document": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.document-template": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.presentation": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.presentation-template": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.spreadsheet": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.spreadsheet-template": { - "source": "iana" - }, - "application/vnd.collection+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.collection.doc+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.collection.next+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.comicbook+zip": { - "source": "iana" - }, - "application/vnd.comicbook-rar": { - "source": "iana" - }, - "application/vnd.commerce-battelle": { - "source": "iana" - }, - "application/vnd.commonspace": { - "source": "iana", - "extensions": ["csp"] - }, - "application/vnd.contact.cmsg": { - "source": "iana", - "extensions": ["cdbcmsg"] - }, - "application/vnd.coreos.ignition+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.cosmocaller": { - "source": "iana", - "extensions": ["cmc"] - }, - "application/vnd.crick.clicker": { - "source": "iana", - "extensions": ["clkx"] - }, - "application/vnd.crick.clicker.keyboard": { - "source": "iana", - "extensions": ["clkk"] - }, - "application/vnd.crick.clicker.palette": { - "source": "iana", - "extensions": ["clkp"] - }, - "application/vnd.crick.clicker.template": { - "source": "iana", - "extensions": ["clkt"] - }, - "application/vnd.crick.clicker.wordbank": { - "source": "iana", - "extensions": ["clkw"] - }, - "application/vnd.criticaltools.wbs+xml": { - "source": "iana", - "extensions": ["wbs"] - }, - "application/vnd.ctc-posml": { - "source": "iana", - "extensions": ["pml"] - }, - "application/vnd.ctct.ws+xml": { - "source": "iana" - }, - "application/vnd.cups-pdf": { - "source": "iana" - }, - "application/vnd.cups-postscript": { - "source": "iana" - }, - "application/vnd.cups-ppd": { - "source": "iana", - "extensions": ["ppd"] - }, - "application/vnd.cups-raster": { - "source": "iana" - }, - "application/vnd.cups-raw": { - "source": "iana" - }, - "application/vnd.curl": { - "source": "iana" - }, - "application/vnd.curl.car": { - "source": "apache", - "extensions": ["car"] - }, - "application/vnd.curl.pcurl": { - "source": "apache", - "extensions": ["pcurl"] - }, - "application/vnd.cyan.dean.root+xml": { - "source": "iana" - }, - "application/vnd.cybank": { - "source": "iana" - }, - "application/vnd.d2l.coursepackage1p0+zip": { - "source": "iana" - }, - "application/vnd.dart": { - "source": "iana", - "compressible": true, - "extensions": ["dart"] - }, - "application/vnd.data-vision.rdz": { - "source": "iana", - "extensions": ["rdz"] - }, - "application/vnd.datapackage+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.dataresource+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.debian.binary-package": { - "source": "iana" - }, - "application/vnd.dece.data": { - "source": "iana", - "extensions": ["uvf","uvvf","uvd","uvvd"] - }, - "application/vnd.dece.ttml+xml": { - "source": "iana", - "extensions": ["uvt","uvvt"] - }, - "application/vnd.dece.unspecified": { - "source": "iana", - "extensions": ["uvx","uvvx"] - }, - "application/vnd.dece.zip": { - "source": "iana", - "extensions": ["uvz","uvvz"] - }, - "application/vnd.denovo.fcselayout-link": { - "source": "iana", - "extensions": ["fe_launch"] - }, - "application/vnd.desmume-movie": { - "source": "iana" - }, - "application/vnd.desmume.movie": { - "source": "apache" - }, - "application/vnd.dir-bi.plate-dl-nosuffix": { - "source": "iana" - }, - "application/vnd.dm.delegation+xml": { - "source": "iana" - }, - "application/vnd.dna": { - "source": "iana", - "extensions": ["dna"] - }, - "application/vnd.document+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.dolby.mlp": { - "source": "apache", - "extensions": ["mlp"] - }, - "application/vnd.dolby.mobile.1": { - "source": "iana" - }, - "application/vnd.dolby.mobile.2": { - "source": "iana" - }, - "application/vnd.doremir.scorecloud-binary-document": { - "source": "iana" - }, - "application/vnd.dpgraph": { - "source": "iana", - "extensions": ["dpg"] - }, - "application/vnd.dreamfactory": { - "source": "iana", - "extensions": ["dfac"] - }, - "application/vnd.drive+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ds-keypoint": { - "source": "apache", - "extensions": ["kpxx"] - }, - "application/vnd.dtg.local": { - "source": "iana" - }, - "application/vnd.dtg.local.flash": { - "source": "iana" - }, - "application/vnd.dtg.local.html": { - "source": "iana" - }, - "application/vnd.dvb.ait": { - "source": "iana", - "extensions": ["ait"] - }, - "application/vnd.dvb.dvbj": { - "source": "iana" - }, - "application/vnd.dvb.esgcontainer": { - "source": "iana" - }, - "application/vnd.dvb.ipdcdftnotifaccess": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgaccess": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgaccess2": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgpdd": { - "source": "iana" - }, - "application/vnd.dvb.ipdcroaming": { - "source": "iana" - }, - "application/vnd.dvb.iptv.alfec-base": { - "source": "iana" - }, - "application/vnd.dvb.iptv.alfec-enhancement": { - "source": "iana" - }, - "application/vnd.dvb.notif-aggregate-root+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-container+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-generic+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-ia-msglist+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-ia-registration-request+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-ia-registration-response+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-init+xml": { - "source": "iana" - }, - "application/vnd.dvb.pfr": { - "source": "iana" - }, - "application/vnd.dvb.service": { - "source": "iana", - "extensions": ["svc"] - }, - "application/vnd.dxr": { - "source": "iana" - }, - "application/vnd.dynageo": { - "source": "iana", - "extensions": ["geo"] - }, - "application/vnd.dzr": { - "source": "iana" - }, - "application/vnd.easykaraoke.cdgdownload": { - "source": "iana" - }, - "application/vnd.ecdis-update": { - "source": "iana" - }, - "application/vnd.ecip.rlp": { - "source": "iana" - }, - "application/vnd.ecowin.chart": { - "source": "iana", - "extensions": ["mag"] - }, - "application/vnd.ecowin.filerequest": { - "source": "iana" - }, - "application/vnd.ecowin.fileupdate": { - "source": "iana" - }, - "application/vnd.ecowin.series": { - "source": "iana" - }, - "application/vnd.ecowin.seriesrequest": { - "source": "iana" - }, - "application/vnd.ecowin.seriesupdate": { - "source": "iana" - }, - "application/vnd.efi.img": { - "source": "iana" - }, - "application/vnd.efi.iso": { - "source": "iana" - }, - "application/vnd.emclient.accessrequest+xml": { - "source": "iana" - }, - "application/vnd.enliven": { - "source": "iana", - "extensions": ["nml"] - }, - "application/vnd.enphase.envoy": { - "source": "iana" - }, - "application/vnd.eprints.data+xml": { - "source": "iana" - }, - "application/vnd.epson.esf": { - "source": "iana", - "extensions": ["esf"] - }, - "application/vnd.epson.msf": { - "source": "iana", - "extensions": ["msf"] - }, - "application/vnd.epson.quickanime": { - "source": "iana", - "extensions": ["qam"] - }, - "application/vnd.epson.salt": { - "source": "iana", - "extensions": ["slt"] - }, - "application/vnd.epson.ssf": { - "source": "iana", - "extensions": ["ssf"] - }, - "application/vnd.ericsson.quickcall": { - "source": "iana" - }, - "application/vnd.espass-espass+zip": { - "source": "iana" - }, - "application/vnd.eszigno3+xml": { - "source": "iana", - "extensions": ["es3","et3"] - }, - "application/vnd.etsi.aoc+xml": { - "source": "iana" - }, - "application/vnd.etsi.asic-e+zip": { - "source": "iana" - }, - "application/vnd.etsi.asic-s+zip": { - "source": "iana" - }, - "application/vnd.etsi.cug+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvcommand+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvdiscovery+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvprofile+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsad-bc+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsad-cod+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsad-npvr+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvservice+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsync+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvueprofile+xml": { - "source": "iana" - }, - "application/vnd.etsi.mcid+xml": { - "source": "iana" - }, - "application/vnd.etsi.mheg5": { - "source": "iana" - }, - "application/vnd.etsi.overload-control-policy-dataset+xml": { - "source": "iana" - }, - "application/vnd.etsi.pstn+xml": { - "source": "iana" - }, - "application/vnd.etsi.sci+xml": { - "source": "iana" - }, - "application/vnd.etsi.simservs+xml": { - "source": "iana" - }, - "application/vnd.etsi.timestamp-token": { - "source": "iana" - }, - "application/vnd.etsi.tsl+xml": { - "source": "iana" - }, - "application/vnd.etsi.tsl.der": { - "source": "iana" - }, - "application/vnd.eudora.data": { - "source": "iana" - }, - "application/vnd.evolv.ecig.profile": { - "source": "iana" - }, - "application/vnd.evolv.ecig.settings": { - "source": "iana" - }, - "application/vnd.evolv.ecig.theme": { - "source": "iana" - }, - "application/vnd.ezpix-album": { - "source": "iana", - "extensions": ["ez2"] - }, - "application/vnd.ezpix-package": { - "source": "iana", - "extensions": ["ez3"] - }, - "application/vnd.f-secure.mobile": { - "source": "iana" - }, - "application/vnd.fastcopy-disk-image": { - "source": "iana" - }, - "application/vnd.fdf": { - "source": "iana", - "extensions": ["fdf"] - }, - "application/vnd.fdsn.mseed": { - "source": "iana", - "extensions": ["mseed"] - }, - "application/vnd.fdsn.seed": { - "source": "iana", - "extensions": ["seed","dataless"] - }, - "application/vnd.ffsns": { - "source": "iana" - }, - "application/vnd.filmit.zfc": { - "source": "iana" - }, - "application/vnd.fints": { - "source": "iana" - }, - "application/vnd.firemonkeys.cloudcell": { - "source": "iana" - }, - "application/vnd.flographit": { - "source": "iana", - "extensions": ["gph"] - }, - "application/vnd.fluxtime.clip": { - "source": "iana", - "extensions": ["ftc"] - }, - "application/vnd.font-fontforge-sfd": { - "source": "iana" - }, - "application/vnd.framemaker": { - "source": "iana", - "extensions": ["fm","frame","maker","book"] - }, - "application/vnd.frogans.fnc": { - "source": "iana", - "extensions": ["fnc"] - }, - "application/vnd.frogans.ltf": { - "source": "iana", - "extensions": ["ltf"] - }, - "application/vnd.fsc.weblaunch": { - "source": "iana", - "extensions": ["fsc"] - }, - "application/vnd.fujitsu.oasys": { - "source": "iana", - "extensions": ["oas"] - }, - "application/vnd.fujitsu.oasys2": { - "source": "iana", - "extensions": ["oa2"] - }, - "application/vnd.fujitsu.oasys3": { - "source": "iana", - "extensions": ["oa3"] - }, - "application/vnd.fujitsu.oasysgp": { - "source": "iana", - "extensions": ["fg5"] - }, - "application/vnd.fujitsu.oasysprs": { - "source": "iana", - "extensions": ["bh2"] - }, - "application/vnd.fujixerox.art-ex": { - "source": "iana" - }, - "application/vnd.fujixerox.art4": { - "source": "iana" - }, - "application/vnd.fujixerox.ddd": { - "source": "iana", - "extensions": ["ddd"] - }, - "application/vnd.fujixerox.docuworks": { - "source": "iana", - "extensions": ["xdw"] - }, - "application/vnd.fujixerox.docuworks.binder": { - "source": "iana", - "extensions": ["xbd"] - }, - "application/vnd.fujixerox.docuworks.container": { - "source": "iana" - }, - "application/vnd.fujixerox.hbpl": { - "source": "iana" - }, - "application/vnd.fut-misnet": { - "source": "iana" - }, - "application/vnd.fuzzysheet": { - "source": "iana", - "extensions": ["fzs"] - }, - "application/vnd.genomatix.tuxedo": { - "source": "iana", - "extensions": ["txd"] - }, - "application/vnd.geo+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.geocube+xml": { - "source": "iana" - }, - "application/vnd.geogebra.file": { - "source": "iana", - "extensions": ["ggb"] - }, - "application/vnd.geogebra.tool": { - "source": "iana", - "extensions": ["ggt"] - }, - "application/vnd.geometry-explorer": { - "source": "iana", - "extensions": ["gex","gre"] - }, - "application/vnd.geonext": { - "source": "iana", - "extensions": ["gxt"] - }, - "application/vnd.geoplan": { - "source": "iana", - "extensions": ["g2w"] - }, - "application/vnd.geospace": { - "source": "iana", - "extensions": ["g3w"] - }, - "application/vnd.gerber": { - "source": "iana" - }, - "application/vnd.globalplatform.card-content-mgt": { - "source": "iana" - }, - "application/vnd.globalplatform.card-content-mgt-response": { - "source": "iana" - }, - "application/vnd.gmx": { - "source": "iana", - "extensions": ["gmx"] - }, - "application/vnd.google-apps.document": { - "compressible": false, - "extensions": ["gdoc"] - }, - "application/vnd.google-apps.presentation": { - "compressible": false, - "extensions": ["gslides"] - }, - "application/vnd.google-apps.spreadsheet": { - "compressible": false, - "extensions": ["gsheet"] - }, - "application/vnd.google-earth.kml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["kml"] - }, - "application/vnd.google-earth.kmz": { - "source": "iana", - "compressible": false, - "extensions": ["kmz"] - }, - "application/vnd.gov.sk.e-form+xml": { - "source": "iana" - }, - "application/vnd.gov.sk.e-form+zip": { - "source": "iana" - }, - "application/vnd.gov.sk.xmldatacontainer+xml": { - "source": "iana" - }, - "application/vnd.grafeq": { - "source": "iana", - "extensions": ["gqf","gqs"] - }, - "application/vnd.gridmp": { - "source": "iana" - }, - "application/vnd.groove-account": { - "source": "iana", - "extensions": ["gac"] - }, - "application/vnd.groove-help": { - "source": "iana", - "extensions": ["ghf"] - }, - "application/vnd.groove-identity-message": { - "source": "iana", - "extensions": ["gim"] - }, - "application/vnd.groove-injector": { - "source": "iana", - "extensions": ["grv"] - }, - "application/vnd.groove-tool-message": { - "source": "iana", - "extensions": ["gtm"] - }, - "application/vnd.groove-tool-template": { - "source": "iana", - "extensions": ["tpl"] - }, - "application/vnd.groove-vcard": { - "source": "iana", - "extensions": ["vcg"] - }, - "application/vnd.hal+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hal+xml": { - "source": "iana", - "extensions": ["hal"] - }, - "application/vnd.handheld-entertainment+xml": { - "source": "iana", - "extensions": ["zmm"] - }, - "application/vnd.hbci": { - "source": "iana", - "extensions": ["hbci"] - }, - "application/vnd.hc+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hcl-bireports": { - "source": "iana" - }, - "application/vnd.hdt": { - "source": "iana" - }, - "application/vnd.heroku+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hhe.lesson-player": { - "source": "iana", - "extensions": ["les"] - }, - "application/vnd.hp-hpgl": { - "source": "iana", - "extensions": ["hpgl"] - }, - "application/vnd.hp-hpid": { - "source": "iana", - "extensions": ["hpid"] - }, - "application/vnd.hp-hps": { - "source": "iana", - "extensions": ["hps"] - }, - "application/vnd.hp-jlyt": { - "source": "iana", - "extensions": ["jlt"] - }, - "application/vnd.hp-pcl": { - "source": "iana", - "extensions": ["pcl"] - }, - "application/vnd.hp-pclxl": { - "source": "iana", - "extensions": ["pclxl"] - }, - "application/vnd.httphone": { - "source": "iana" - }, - "application/vnd.hydrostatix.sof-data": { - "source": "iana", - "extensions": ["sfd-hdstx"] - }, - "application/vnd.hyper-item+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hyperdrive+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hzn-3d-crossword": { - "source": "iana" - }, - "application/vnd.ibm.afplinedata": { - "source": "iana" - }, - "application/vnd.ibm.electronic-media": { - "source": "iana" - }, - "application/vnd.ibm.minipay": { - "source": "iana", - "extensions": ["mpy"] - }, - "application/vnd.ibm.modcap": { - "source": "iana", - "extensions": ["afp","listafp","list3820"] - }, - "application/vnd.ibm.rights-management": { - "source": "iana", - "extensions": ["irm"] - }, - "application/vnd.ibm.secure-container": { - "source": "iana", - "extensions": ["sc"] - }, - "application/vnd.iccprofile": { - "source": "iana", - "extensions": ["icc","icm"] - }, - "application/vnd.ieee.1905": { - "source": "iana" - }, - "application/vnd.igloader": { - "source": "iana", - "extensions": ["igl"] - }, - "application/vnd.imagemeter.folder+zip": { - "source": "iana" - }, - "application/vnd.imagemeter.image+zip": { - "source": "iana" - }, - "application/vnd.immervision-ivp": { - "source": "iana", - "extensions": ["ivp"] - }, - "application/vnd.immervision-ivu": { - "source": "iana", - "extensions": ["ivu"] - }, - "application/vnd.ims.imsccv1p1": { - "source": "iana" - }, - "application/vnd.ims.imsccv1p2": { - "source": "iana" - }, - "application/vnd.ims.imsccv1p3": { - "source": "iana" - }, - "application/vnd.ims.lis.v2.result+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolconsumerprofile+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolproxy+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolproxy.id+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolsettings+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolsettings.simple+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.informedcontrol.rms+xml": { - "source": "iana" - }, - "application/vnd.informix-visionary": { - "source": "iana" - }, - "application/vnd.infotech.project": { - "source": "iana" - }, - "application/vnd.infotech.project+xml": { - "source": "iana" - }, - "application/vnd.innopath.wamp.notification": { - "source": "iana" - }, - "application/vnd.insors.igm": { - "source": "iana", - "extensions": ["igm"] - }, - "application/vnd.intercon.formnet": { - "source": "iana", - "extensions": ["xpw","xpx"] - }, - "application/vnd.intergeo": { - "source": "iana", - "extensions": ["i2g"] - }, - "application/vnd.intertrust.digibox": { - "source": "iana" - }, - "application/vnd.intertrust.nncp": { - "source": "iana" - }, - "application/vnd.intu.qbo": { - "source": "iana", - "extensions": ["qbo"] - }, - "application/vnd.intu.qfx": { - "source": "iana", - "extensions": ["qfx"] - }, - "application/vnd.iptc.g2.catalogitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.conceptitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.knowledgeitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.newsitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.newsmessage+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.packageitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.planningitem+xml": { - "source": "iana" - }, - "application/vnd.ipunplugged.rcprofile": { - "source": "iana", - "extensions": ["rcprofile"] - }, - "application/vnd.irepository.package+xml": { - "source": "iana", - "extensions": ["irp"] - }, - "application/vnd.is-xpr": { - "source": "iana", - "extensions": ["xpr"] - }, - "application/vnd.isac.fcs": { - "source": "iana", - "extensions": ["fcs"] - }, - "application/vnd.jam": { - "source": "iana", - "extensions": ["jam"] - }, - "application/vnd.japannet-directory-service": { - "source": "iana" - }, - "application/vnd.japannet-jpnstore-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-payment-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-registration": { - "source": "iana" - }, - "application/vnd.japannet-registration-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-setstore-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-verification": { - "source": "iana" - }, - "application/vnd.japannet-verification-wakeup": { - "source": "iana" - }, - "application/vnd.jcp.javame.midlet-rms": { - "source": "iana", - "extensions": ["rms"] - }, - "application/vnd.jisp": { - "source": "iana", - "extensions": ["jisp"] - }, - "application/vnd.joost.joda-archive": { - "source": "iana", - "extensions": ["joda"] - }, - "application/vnd.jsk.isdn-ngn": { - "source": "iana" - }, - "application/vnd.kahootz": { - "source": "iana", - "extensions": ["ktz","ktr"] - }, - "application/vnd.kde.karbon": { - "source": "iana", - "extensions": ["karbon"] - }, - "application/vnd.kde.kchart": { - "source": "iana", - "extensions": ["chrt"] - }, - "application/vnd.kde.kformula": { - "source": "iana", - "extensions": ["kfo"] - }, - "application/vnd.kde.kivio": { - "source": "iana", - "extensions": ["flw"] - }, - "application/vnd.kde.kontour": { - "source": "iana", - "extensions": ["kon"] - }, - "application/vnd.kde.kpresenter": { - "source": "iana", - "extensions": ["kpr","kpt"] - }, - "application/vnd.kde.kspread": { - "source": "iana", - "extensions": ["ksp"] - }, - "application/vnd.kde.kword": { - "source": "iana", - "extensions": ["kwd","kwt"] - }, - "application/vnd.kenameaapp": { - "source": "iana", - "extensions": ["htke"] - }, - "application/vnd.kidspiration": { - "source": "iana", - "extensions": ["kia"] - }, - "application/vnd.kinar": { - "source": "iana", - "extensions": ["kne","knp"] - }, - "application/vnd.koan": { - "source": "iana", - "extensions": ["skp","skd","skt","skm"] - }, - "application/vnd.kodak-descriptor": { - "source": "iana", - "extensions": ["sse"] - }, - "application/vnd.las.las+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.las.las+xml": { - "source": "iana", - "extensions": ["lasxml"] - }, - "application/vnd.liberty-request+xml": { - "source": "iana" - }, - "application/vnd.llamagraphics.life-balance.desktop": { - "source": "iana", - "extensions": ["lbd"] - }, - "application/vnd.llamagraphics.life-balance.exchange+xml": { - "source": "iana", - "extensions": ["lbe"] - }, - "application/vnd.lotus-1-2-3": { - "source": "iana", - "extensions": ["123"] - }, - "application/vnd.lotus-approach": { - "source": "iana", - "extensions": ["apr"] - }, - "application/vnd.lotus-freelance": { - "source": "iana", - "extensions": ["pre"] - }, - "application/vnd.lotus-notes": { - "source": "iana", - "extensions": ["nsf"] - }, - "application/vnd.lotus-organizer": { - "source": "iana", - "extensions": ["org"] - }, - "application/vnd.lotus-screencam": { - "source": "iana", - "extensions": ["scm"] - }, - "application/vnd.lotus-wordpro": { - "source": "iana", - "extensions": ["lwp"] - }, - "application/vnd.macports.portpkg": { - "source": "iana", - "extensions": ["portpkg"] - }, - "application/vnd.mapbox-vector-tile": { - "source": "iana" - }, - "application/vnd.marlin.drm.actiontoken+xml": { - "source": "iana" - }, - "application/vnd.marlin.drm.conftoken+xml": { - "source": "iana" - }, - "application/vnd.marlin.drm.license+xml": { - "source": "iana" - }, - "application/vnd.marlin.drm.mdcf": { - "source": "iana" - }, - "application/vnd.mason+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.maxmind.maxmind-db": { - "source": "iana" - }, - "application/vnd.mcd": { - "source": "iana", - "extensions": ["mcd"] - }, - "application/vnd.medcalcdata": { - "source": "iana", - "extensions": ["mc1"] - }, - "application/vnd.mediastation.cdkey": { - "source": "iana", - "extensions": ["cdkey"] - }, - "application/vnd.meridian-slingshot": { - "source": "iana" - }, - "application/vnd.mfer": { - "source": "iana", - "extensions": ["mwf"] - }, - "application/vnd.mfmp": { - "source": "iana", - "extensions": ["mfm"] - }, - "application/vnd.micro+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.micrografx.flo": { - "source": "iana", - "extensions": ["flo"] - }, - "application/vnd.micrografx.igx": { - "source": "iana", - "extensions": ["igx"] - }, - "application/vnd.microsoft.portable-executable": { - "source": "iana" - }, - "application/vnd.microsoft.windows.thumbnail-cache": { - "source": "iana" - }, - "application/vnd.miele+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.mif": { - "source": "iana", - "extensions": ["mif"] - }, - "application/vnd.minisoft-hp3000-save": { - "source": "iana" - }, - "application/vnd.mitsubishi.misty-guard.trustweb": { - "source": "iana" - }, - "application/vnd.mobius.daf": { - "source": "iana", - "extensions": ["daf"] - }, - "application/vnd.mobius.dis": { - "source": "iana", - "extensions": ["dis"] - }, - "application/vnd.mobius.mbk": { - "source": "iana", - "extensions": ["mbk"] - }, - "application/vnd.mobius.mqy": { - "source": "iana", - "extensions": ["mqy"] - }, - "application/vnd.mobius.msl": { - "source": "iana", - "extensions": ["msl"] - }, - "application/vnd.mobius.plc": { - "source": "iana", - "extensions": ["plc"] - }, - "application/vnd.mobius.txf": { - "source": "iana", - "extensions": ["txf"] - }, - "application/vnd.mophun.application": { - "source": "iana", - "extensions": ["mpn"] - }, - "application/vnd.mophun.certificate": { - "source": "iana", - "extensions": ["mpc"] - }, - "application/vnd.motorola.flexsuite": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.adsi": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.fis": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.gotap": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.kmr": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.ttc": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.wem": { - "source": "iana" - }, - "application/vnd.motorola.iprm": { - "source": "iana" - }, - "application/vnd.mozilla.xul+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xul"] - }, - "application/vnd.ms-3mfdocument": { - "source": "iana" - }, - "application/vnd.ms-artgalry": { - "source": "iana", - "extensions": ["cil"] - }, - "application/vnd.ms-asf": { - "source": "iana" - }, - "application/vnd.ms-cab-compressed": { - "source": "iana", - "extensions": ["cab"] - }, - "application/vnd.ms-color.iccprofile": { - "source": "apache" - }, - "application/vnd.ms-excel": { - "source": "iana", - "compressible": false, - "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] - }, - "application/vnd.ms-excel.addin.macroenabled.12": { - "source": "iana", - "extensions": ["xlam"] - }, - "application/vnd.ms-excel.sheet.binary.macroenabled.12": { - "source": "iana", - "extensions": ["xlsb"] - }, - "application/vnd.ms-excel.sheet.macroenabled.12": { - "source": "iana", - "extensions": ["xlsm"] - }, - "application/vnd.ms-excel.template.macroenabled.12": { - "source": "iana", - "extensions": ["xltm"] - }, - "application/vnd.ms-fontobject": { - "source": "iana", - "compressible": true, - "extensions": ["eot"] - }, - "application/vnd.ms-htmlhelp": { - "source": "iana", - "extensions": ["chm"] - }, - "application/vnd.ms-ims": { - "source": "iana", - "extensions": ["ims"] - }, - "application/vnd.ms-lrm": { - "source": "iana", - "extensions": ["lrm"] - }, - "application/vnd.ms-office.activex+xml": { - "source": "iana" - }, - "application/vnd.ms-officetheme": { - "source": "iana", - "extensions": ["thmx"] - }, - "application/vnd.ms-opentype": { - "source": "apache", - "compressible": true - }, - "application/vnd.ms-outlook": { - "compressible": false, - "extensions": ["msg"] - }, - "application/vnd.ms-package.obfuscated-opentype": { - "source": "apache" - }, - "application/vnd.ms-pki.seccat": { - "source": "apache", - "extensions": ["cat"] - }, - "application/vnd.ms-pki.stl": { - "source": "apache", - "extensions": ["stl"] - }, - "application/vnd.ms-playready.initiator+xml": { - "source": "iana" - }, - "application/vnd.ms-powerpoint": { - "source": "iana", - "compressible": false, - "extensions": ["ppt","pps","pot"] - }, - "application/vnd.ms-powerpoint.addin.macroenabled.12": { - "source": "iana", - "extensions": ["ppam"] - }, - "application/vnd.ms-powerpoint.presentation.macroenabled.12": { - "source": "iana", - "extensions": ["pptm"] - }, - "application/vnd.ms-powerpoint.slide.macroenabled.12": { - "source": "iana", - "extensions": ["sldm"] - }, - "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { - "source": "iana", - "extensions": ["ppsm"] - }, - "application/vnd.ms-powerpoint.template.macroenabled.12": { - "source": "iana", - "extensions": ["potm"] - }, - "application/vnd.ms-printdevicecapabilities+xml": { - "source": "iana" - }, - "application/vnd.ms-printing.printticket+xml": { - "source": "apache" - }, - "application/vnd.ms-printschematicket+xml": { - "source": "iana" - }, - "application/vnd.ms-project": { - "source": "iana", - "extensions": ["mpp","mpt"] - }, - "application/vnd.ms-tnef": { - "source": "iana" - }, - "application/vnd.ms-windows.devicepairing": { - "source": "iana" - }, - "application/vnd.ms-windows.nwprinting.oob": { - "source": "iana" - }, - "application/vnd.ms-windows.printerpairing": { - "source": "iana" - }, - "application/vnd.ms-windows.wsd.oob": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.lic-chlg-req": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.lic-resp": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.meter-chlg-req": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.meter-resp": { - "source": "iana" - }, - "application/vnd.ms-word.document.macroenabled.12": { - "source": "iana", - "extensions": ["docm"] - }, - "application/vnd.ms-word.template.macroenabled.12": { - "source": "iana", - "extensions": ["dotm"] - }, - "application/vnd.ms-works": { - "source": "iana", - "extensions": ["wps","wks","wcm","wdb"] - }, - "application/vnd.ms-wpl": { - "source": "iana", - "extensions": ["wpl"] - }, - "application/vnd.ms-xpsdocument": { - "source": "iana", - "compressible": false, - "extensions": ["xps"] - }, - "application/vnd.msa-disk-image": { - "source": "iana" - }, - "application/vnd.mseq": { - "source": "iana", - "extensions": ["mseq"] - }, - "application/vnd.msign": { - "source": "iana" - }, - "application/vnd.multiad.creator": { - "source": "iana" - }, - "application/vnd.multiad.creator.cif": { - "source": "iana" - }, - "application/vnd.music-niff": { - "source": "iana" - }, - "application/vnd.musician": { - "source": "iana", - "extensions": ["mus"] - }, - "application/vnd.muvee.style": { - "source": "iana", - "extensions": ["msty"] - }, - "application/vnd.mynfc": { - "source": "iana", - "extensions": ["taglet"] - }, - "application/vnd.ncd.control": { - "source": "iana" - }, - "application/vnd.ncd.reference": { - "source": "iana" - }, - "application/vnd.nearst.inv+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.nervana": { - "source": "iana" - }, - "application/vnd.netfpx": { - "source": "iana" - }, - "application/vnd.neurolanguage.nlu": { - "source": "iana", - "extensions": ["nlu"] - }, - "application/vnd.nintendo.nitro.rom": { - "source": "iana" - }, - "application/vnd.nintendo.snes.rom": { - "source": "iana" - }, - "application/vnd.nitf": { - "source": "iana", - "extensions": ["ntf","nitf"] - }, - "application/vnd.noblenet-directory": { - "source": "iana", - "extensions": ["nnd"] - }, - "application/vnd.noblenet-sealer": { - "source": "iana", - "extensions": ["nns"] - }, - "application/vnd.noblenet-web": { - "source": "iana", - "extensions": ["nnw"] - }, - "application/vnd.nokia.catalogs": { - "source": "iana" - }, - "application/vnd.nokia.conml+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.conml+xml": { - "source": "iana" - }, - "application/vnd.nokia.iptv.config+xml": { - "source": "iana" - }, - "application/vnd.nokia.isds-radio-presets": { - "source": "iana" - }, - "application/vnd.nokia.landmark+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.landmark+xml": { - "source": "iana" - }, - "application/vnd.nokia.landmarkcollection+xml": { - "source": "iana" - }, - "application/vnd.nokia.n-gage.ac+xml": { - "source": "iana" - }, - "application/vnd.nokia.n-gage.data": { - "source": "iana", - "extensions": ["ngdat"] - }, - "application/vnd.nokia.n-gage.symbian.install": { - "source": "iana", - "extensions": ["n-gage"] - }, - "application/vnd.nokia.ncd": { - "source": "iana" - }, - "application/vnd.nokia.pcd+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.pcd+xml": { - "source": "iana" - }, - "application/vnd.nokia.radio-preset": { - "source": "iana", - "extensions": ["rpst"] - }, - "application/vnd.nokia.radio-presets": { - "source": "iana", - "extensions": ["rpss"] - }, - "application/vnd.novadigm.edm": { - "source": "iana", - "extensions": ["edm"] - }, - "application/vnd.novadigm.edx": { - "source": "iana", - "extensions": ["edx"] - }, - "application/vnd.novadigm.ext": { - "source": "iana", - "extensions": ["ext"] - }, - "application/vnd.ntt-local.content-share": { - "source": "iana" - }, - "application/vnd.ntt-local.file-transfer": { - "source": "iana" - }, - "application/vnd.ntt-local.ogw_remote-access": { - "source": "iana" - }, - "application/vnd.ntt-local.sip-ta_remote": { - "source": "iana" - }, - "application/vnd.ntt-local.sip-ta_tcp_stream": { - "source": "iana" - }, - "application/vnd.oasis.opendocument.chart": { - "source": "iana", - "extensions": ["odc"] - }, - "application/vnd.oasis.opendocument.chart-template": { - "source": "iana", - "extensions": ["otc"] - }, - "application/vnd.oasis.opendocument.database": { - "source": "iana", - "extensions": ["odb"] - }, - "application/vnd.oasis.opendocument.formula": { - "source": "iana", - "extensions": ["odf"] - }, - "application/vnd.oasis.opendocument.formula-template": { - "source": "iana", - "extensions": ["odft"] - }, - "application/vnd.oasis.opendocument.graphics": { - "source": "iana", - "compressible": false, - "extensions": ["odg"] - }, - "application/vnd.oasis.opendocument.graphics-template": { - "source": "iana", - "extensions": ["otg"] - }, - "application/vnd.oasis.opendocument.image": { - "source": "iana", - "extensions": ["odi"] - }, - "application/vnd.oasis.opendocument.image-template": { - "source": "iana", - "extensions": ["oti"] - }, - "application/vnd.oasis.opendocument.presentation": { - "source": "iana", - "compressible": false, - "extensions": ["odp"] - }, - "application/vnd.oasis.opendocument.presentation-template": { - "source": "iana", - "extensions": ["otp"] - }, - "application/vnd.oasis.opendocument.spreadsheet": { - "source": "iana", - "compressible": false, - "extensions": ["ods"] - }, - "application/vnd.oasis.opendocument.spreadsheet-template": { - "source": "iana", - "extensions": ["ots"] - }, - "application/vnd.oasis.opendocument.text": { - "source": "iana", - "compressible": false, - "extensions": ["odt"] - }, - "application/vnd.oasis.opendocument.text-master": { - "source": "iana", - "extensions": ["odm"] - }, - "application/vnd.oasis.opendocument.text-template": { - "source": "iana", - "extensions": ["ott"] - }, - "application/vnd.oasis.opendocument.text-web": { - "source": "iana", - "extensions": ["oth"] - }, - "application/vnd.obn": { - "source": "iana" - }, - "application/vnd.ocf+cbor": { - "source": "iana" - }, - "application/vnd.oftn.l10n+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.contentaccessdownload+xml": { - "source": "iana" - }, - "application/vnd.oipf.contentaccessstreaming+xml": { - "source": "iana" - }, - "application/vnd.oipf.cspg-hexbinary": { - "source": "iana" - }, - "application/vnd.oipf.dae.svg+xml": { - "source": "iana" - }, - "application/vnd.oipf.dae.xhtml+xml": { - "source": "iana" - }, - "application/vnd.oipf.mippvcontrolmessage+xml": { - "source": "iana" - }, - "application/vnd.oipf.pae.gem": { - "source": "iana" - }, - "application/vnd.oipf.spdiscovery+xml": { - "source": "iana" - }, - "application/vnd.oipf.spdlist+xml": { - "source": "iana" - }, - "application/vnd.oipf.ueprofile+xml": { - "source": "iana" - }, - "application/vnd.oipf.userprofile+xml": { - "source": "iana" - }, - "application/vnd.olpc-sugar": { - "source": "iana", - "extensions": ["xo"] - }, - "application/vnd.oma-scws-config": { - "source": "iana" - }, - "application/vnd.oma-scws-http-request": { - "source": "iana" - }, - "application/vnd.oma-scws-http-response": { - "source": "iana" - }, - "application/vnd.oma.bcast.associated-procedure-parameter+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.drm-trigger+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.imd+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.ltkm": { - "source": "iana" - }, - "application/vnd.oma.bcast.notification+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.provisioningtrigger": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgboot": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgdd+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgdu": { - "source": "iana" - }, - "application/vnd.oma.bcast.simple-symbol-container": { - "source": "iana" - }, - "application/vnd.oma.bcast.smartcard-trigger+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.sprov+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.stkm": { - "source": "iana" - }, - "application/vnd.oma.cab-address-book+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-feature-handler+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-pcc+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-subs-invite+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-user-prefs+xml": { - "source": "iana" - }, - "application/vnd.oma.dcd": { - "source": "iana" - }, - "application/vnd.oma.dcdc": { - "source": "iana" - }, - "application/vnd.oma.dd2+xml": { - "source": "iana", - "extensions": ["dd2"] - }, - "application/vnd.oma.drm.risd+xml": { - "source": "iana" - }, - "application/vnd.oma.group-usage-list+xml": { - "source": "iana" - }, - "application/vnd.oma.lwm2m+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.lwm2m+tlv": { - "source": "iana" - }, - "application/vnd.oma.pal+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.detailed-progress-report+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.final-report+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.groups+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.invocation-descriptor+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.optimized-progress-report+xml": { - "source": "iana" - }, - "application/vnd.oma.push": { - "source": "iana" - }, - "application/vnd.oma.scidm.messages+xml": { - "source": "iana" - }, - "application/vnd.oma.xcap-directory+xml": { - "source": "iana" - }, - "application/vnd.omads-email+xml": { - "source": "iana" - }, - "application/vnd.omads-file+xml": { - "source": "iana" - }, - "application/vnd.omads-folder+xml": { - "source": "iana" - }, - "application/vnd.omaloc-supl-init": { - "source": "iana" - }, - "application/vnd.onepager": { - "source": "iana" - }, - "application/vnd.onepagertamp": { - "source": "iana" - }, - "application/vnd.onepagertamx": { - "source": "iana" - }, - "application/vnd.onepagertat": { - "source": "iana" - }, - "application/vnd.onepagertatp": { - "source": "iana" - }, - "application/vnd.onepagertatx": { - "source": "iana" - }, - "application/vnd.openblox.game+xml": { - "source": "iana" - }, - "application/vnd.openblox.game-binary": { - "source": "iana" - }, - "application/vnd.openeye.oeb": { - "source": "iana" - }, - "application/vnd.openofficeorg.extension": { - "source": "apache", - "extensions": ["oxt"] - }, - "application/vnd.openstreetmap.data+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.custom-properties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawing+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.extended-properties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation": { - "source": "iana", - "compressible": false, - "extensions": ["pptx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slide": { - "source": "iana", - "extensions": ["sldx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { - "source": "iana", - "extensions": ["ppsx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.template": { - "source": "iana", - "extensions": ["potx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { - "source": "iana", - "compressible": false, - "extensions": ["xlsx"] - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { - "source": "iana", - "extensions": ["xltx"] - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.theme+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.themeoverride+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.vmldrawing": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { - "source": "iana", - "compressible": false, - "extensions": ["docx"] - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { - "source": "iana", - "extensions": ["dotx"] - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-package.core-properties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-package.relationships+xml": { - "source": "iana" - }, - "application/vnd.oracle.resource+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.orange.indata": { - "source": "iana" - }, - "application/vnd.osa.netdeploy": { - "source": "iana" - }, - "application/vnd.osgeo.mapguide.package": { - "source": "iana", - "extensions": ["mgp"] - }, - "application/vnd.osgi.bundle": { - "source": "iana" - }, - "application/vnd.osgi.dp": { - "source": "iana", - "extensions": ["dp"] - }, - "application/vnd.osgi.subsystem": { - "source": "iana", - "extensions": ["esa"] - }, - "application/vnd.otps.ct-kip+xml": { - "source": "iana" - }, - "application/vnd.oxli.countgraph": { - "source": "iana" - }, - "application/vnd.pagerduty+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.palm": { - "source": "iana", - "extensions": ["pdb","pqa","oprc"] - }, - "application/vnd.panoply": { - "source": "iana" - }, - "application/vnd.paos+xml": { - "source": "iana" - }, - "application/vnd.paos.xml": { - "source": "apache" - }, - "application/vnd.patentdive": { - "source": "iana" - }, - "application/vnd.pawaafile": { - "source": "iana", - "extensions": ["paw"] - }, - "application/vnd.pcos": { - "source": "iana" - }, - "application/vnd.pg.format": { - "source": "iana", - "extensions": ["str"] - }, - "application/vnd.pg.osasli": { - "source": "iana", - "extensions": ["ei6"] - }, - "application/vnd.piaccess.application-licence": { - "source": "iana" - }, - "application/vnd.picsel": { - "source": "iana", - "extensions": ["efif"] - }, - "application/vnd.pmi.widget": { - "source": "iana", - "extensions": ["wg"] - }, - "application/vnd.poc.group-advertisement+xml": { - "source": "iana" - }, - "application/vnd.pocketlearn": { - "source": "iana", - "extensions": ["plf"] - }, - "application/vnd.powerbuilder6": { - "source": "iana", - "extensions": ["pbd"] - }, - "application/vnd.powerbuilder6-s": { - "source": "iana" - }, - "application/vnd.powerbuilder7": { - "source": "iana" - }, - "application/vnd.powerbuilder7-s": { - "source": "iana" - }, - "application/vnd.powerbuilder75": { - "source": "iana" - }, - "application/vnd.powerbuilder75-s": { - "source": "iana" - }, - "application/vnd.preminet": { - "source": "iana" - }, - "application/vnd.previewsystems.box": { - "source": "iana", - "extensions": ["box"] - }, - "application/vnd.proteus.magazine": { - "source": "iana", - "extensions": ["mgz"] - }, - "application/vnd.publishare-delta-tree": { - "source": "iana", - "extensions": ["qps"] - }, - "application/vnd.pvi.ptid1": { - "source": "iana", - "extensions": ["ptid"] - }, - "application/vnd.pwg-multiplexed": { - "source": "iana" - }, - "application/vnd.pwg-xhtml-print+xml": { - "source": "iana" - }, - "application/vnd.qualcomm.brew-app-res": { - "source": "iana" - }, - "application/vnd.quarantainenet": { - "source": "iana" - }, - "application/vnd.quark.quarkxpress": { - "source": "iana", - "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] - }, - "application/vnd.quobject-quoxdocument": { - "source": "iana" - }, - "application/vnd.radisys.moml+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-conf+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-conn+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-dialog+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-stream+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-conf+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-base+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-fax-detect+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-group+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-speech+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-transform+xml": { - "source": "iana" - }, - "application/vnd.rainstor.data": { - "source": "iana" - }, - "application/vnd.rapid": { - "source": "iana" - }, - "application/vnd.rar": { - "source": "iana" - }, - "application/vnd.realvnc.bed": { - "source": "iana", - "extensions": ["bed"] - }, - "application/vnd.recordare.musicxml": { - "source": "iana", - "extensions": ["mxl"] - }, - "application/vnd.recordare.musicxml+xml": { - "source": "iana", - "extensions": ["musicxml"] - }, - "application/vnd.renlearn.rlprint": { - "source": "iana" - }, - "application/vnd.restful+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.rig.cryptonote": { - "source": "iana", - "extensions": ["cryptonote"] - }, - "application/vnd.rim.cod": { - "source": "apache", - "extensions": ["cod"] - }, - "application/vnd.rn-realmedia": { - "source": "apache", - "extensions": ["rm"] - }, - "application/vnd.rn-realmedia-vbr": { - "source": "apache", - "extensions": ["rmvb"] - }, - "application/vnd.route66.link66+xml": { - "source": "iana", - "extensions": ["link66"] - }, - "application/vnd.rs-274x": { - "source": "iana" - }, - "application/vnd.ruckus.download": { - "source": "iana" - }, - "application/vnd.s3sms": { - "source": "iana" - }, - "application/vnd.sailingtracker.track": { - "source": "iana", - "extensions": ["st"] - }, - "application/vnd.sbm.cid": { - "source": "iana" - }, - "application/vnd.sbm.mid2": { - "source": "iana" - }, - "application/vnd.scribus": { - "source": "iana" - }, - "application/vnd.sealed.3df": { - "source": "iana" - }, - "application/vnd.sealed.csf": { - "source": "iana" - }, - "application/vnd.sealed.doc": { - "source": "iana" - }, - "application/vnd.sealed.eml": { - "source": "iana" - }, - "application/vnd.sealed.mht": { - "source": "iana" - }, - "application/vnd.sealed.net": { - "source": "iana" - }, - "application/vnd.sealed.ppt": { - "source": "iana" - }, - "application/vnd.sealed.tiff": { - "source": "iana" - }, - "application/vnd.sealed.xls": { - "source": "iana" - }, - "application/vnd.sealedmedia.softseal.html": { - "source": "iana" - }, - "application/vnd.sealedmedia.softseal.pdf": { - "source": "iana" - }, - "application/vnd.seemail": { - "source": "iana", - "extensions": ["see"] - }, - "application/vnd.sema": { - "source": "iana", - "extensions": ["sema"] - }, - "application/vnd.semd": { - "source": "iana", - "extensions": ["semd"] - }, - "application/vnd.semf": { - "source": "iana", - "extensions": ["semf"] - }, - "application/vnd.shana.informed.formdata": { - "source": "iana", - "extensions": ["ifm"] - }, - "application/vnd.shana.informed.formtemplate": { - "source": "iana", - "extensions": ["itp"] - }, - "application/vnd.shana.informed.interchange": { - "source": "iana", - "extensions": ["iif"] - }, - "application/vnd.shana.informed.package": { - "source": "iana", - "extensions": ["ipk"] - }, - "application/vnd.sigrok.session": { - "source": "iana" - }, - "application/vnd.simtech-mindmapper": { - "source": "iana", - "extensions": ["twd","twds"] - }, - "application/vnd.siren+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.smaf": { - "source": "iana", - "extensions": ["mmf"] - }, - "application/vnd.smart.notebook": { - "source": "iana" - }, - "application/vnd.smart.teacher": { - "source": "iana", - "extensions": ["teacher"] - }, - "application/vnd.software602.filler.form+xml": { - "source": "iana" - }, - "application/vnd.software602.filler.form-xml-zip": { - "source": "iana" - }, - "application/vnd.solent.sdkm+xml": { - "source": "iana", - "extensions": ["sdkm","sdkd"] - }, - "application/vnd.spotfire.dxp": { - "source": "iana", - "extensions": ["dxp"] - }, - "application/vnd.spotfire.sfs": { - "source": "iana", - "extensions": ["sfs"] - }, - "application/vnd.sqlite3": { - "source": "iana" - }, - "application/vnd.sss-cod": { - "source": "iana" - }, - "application/vnd.sss-dtf": { - "source": "iana" - }, - "application/vnd.sss-ntf": { - "source": "iana" - }, - "application/vnd.stardivision.calc": { - "source": "apache", - "extensions": ["sdc"] - }, - "application/vnd.stardivision.draw": { - "source": "apache", - "extensions": ["sda"] - }, - "application/vnd.stardivision.impress": { - "source": "apache", - "extensions": ["sdd"] - }, - "application/vnd.stardivision.math": { - "source": "apache", - "extensions": ["smf"] - }, - "application/vnd.stardivision.writer": { - "source": "apache", - "extensions": ["sdw","vor"] - }, - "application/vnd.stardivision.writer-global": { - "source": "apache", - "extensions": ["sgl"] - }, - "application/vnd.stepmania.package": { - "source": "iana", - "extensions": ["smzip"] - }, - "application/vnd.stepmania.stepchart": { - "source": "iana", - "extensions": ["sm"] - }, - "application/vnd.street-stream": { - "source": "iana" - }, - "application/vnd.sun.wadl+xml": { - "source": "iana", - "compressible": true, - "extensions": ["wadl"] - }, - "application/vnd.sun.xml.calc": { - "source": "apache", - "extensions": ["sxc"] - }, - "application/vnd.sun.xml.calc.template": { - "source": "apache", - "extensions": ["stc"] - }, - "application/vnd.sun.xml.draw": { - "source": "apache", - "extensions": ["sxd"] - }, - "application/vnd.sun.xml.draw.template": { - "source": "apache", - "extensions": ["std"] - }, - "application/vnd.sun.xml.impress": { - "source": "apache", - "extensions": ["sxi"] - }, - "application/vnd.sun.xml.impress.template": { - "source": "apache", - "extensions": ["sti"] - }, - "application/vnd.sun.xml.math": { - "source": "apache", - "extensions": ["sxm"] - }, - "application/vnd.sun.xml.writer": { - "source": "apache", - "extensions": ["sxw"] - }, - "application/vnd.sun.xml.writer.global": { - "source": "apache", - "extensions": ["sxg"] - }, - "application/vnd.sun.xml.writer.template": { - "source": "apache", - "extensions": ["stw"] - }, - "application/vnd.sus-calendar": { - "source": "iana", - "extensions": ["sus","susp"] - }, - "application/vnd.svd": { - "source": "iana", - "extensions": ["svd"] - }, - "application/vnd.swiftview-ics": { - "source": "iana" - }, - "application/vnd.symbian.install": { - "source": "apache", - "extensions": ["sis","sisx"] - }, - "application/vnd.syncml+xml": { - "source": "iana", - "extensions": ["xsm"] - }, - "application/vnd.syncml.dm+wbxml": { - "source": "iana", - "extensions": ["bdm"] - }, - "application/vnd.syncml.dm+xml": { - "source": "iana", - "extensions": ["xdm"] - }, - "application/vnd.syncml.dm.notification": { - "source": "iana" - }, - "application/vnd.syncml.dmddf+wbxml": { - "source": "iana" - }, - "application/vnd.syncml.dmddf+xml": { - "source": "iana" - }, - "application/vnd.syncml.dmtnds+wbxml": { - "source": "iana" - }, - "application/vnd.syncml.dmtnds+xml": { - "source": "iana" - }, - "application/vnd.syncml.ds.notification": { - "source": "iana" - }, - "application/vnd.tableschema+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.tao.intent-module-archive": { - "source": "iana", - "extensions": ["tao"] - }, - "application/vnd.tcpdump.pcap": { - "source": "iana", - "extensions": ["pcap","cap","dmp"] - }, - "application/vnd.tmd.mediaflex.api+xml": { - "source": "iana" - }, - "application/vnd.tml": { - "source": "iana" - }, - "application/vnd.tmobile-livetv": { - "source": "iana", - "extensions": ["tmo"] - }, - "application/vnd.tri.onesource": { - "source": "iana" - }, - "application/vnd.trid.tpt": { - "source": "iana", - "extensions": ["tpt"] - }, - "application/vnd.triscape.mxs": { - "source": "iana", - "extensions": ["mxs"] - }, - "application/vnd.trueapp": { - "source": "iana", - "extensions": ["tra"] - }, - "application/vnd.truedoc": { - "source": "iana" - }, - "application/vnd.ubisoft.webplayer": { - "source": "iana" - }, - "application/vnd.ufdl": { - "source": "iana", - "extensions": ["ufd","ufdl"] - }, - "application/vnd.uiq.theme": { - "source": "iana", - "extensions": ["utz"] - }, - "application/vnd.umajin": { - "source": "iana", - "extensions": ["umj"] - }, - "application/vnd.unity": { - "source": "iana", - "extensions": ["unityweb"] - }, - "application/vnd.uoml+xml": { - "source": "iana", - "extensions": ["uoml"] - }, - "application/vnd.uplanet.alert": { - "source": "iana" - }, - "application/vnd.uplanet.alert-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.bearer-choice": { - "source": "iana" - }, - "application/vnd.uplanet.bearer-choice-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.cacheop": { - "source": "iana" - }, - "application/vnd.uplanet.cacheop-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.channel": { - "source": "iana" - }, - "application/vnd.uplanet.channel-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.list": { - "source": "iana" - }, - "application/vnd.uplanet.list-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.listcmd": { - "source": "iana" - }, - "application/vnd.uplanet.listcmd-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.signal": { - "source": "iana" - }, - "application/vnd.uri-map": { - "source": "iana" - }, - "application/vnd.valve.source.material": { - "source": "iana" - }, - "application/vnd.vcx": { - "source": "iana", - "extensions": ["vcx"] - }, - "application/vnd.vd-study": { - "source": "iana" - }, - "application/vnd.vectorworks": { - "source": "iana" - }, - "application/vnd.vel+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.verimatrix.vcas": { - "source": "iana" - }, - "application/vnd.vidsoft.vidconference": { - "source": "iana" - }, - "application/vnd.visio": { - "source": "iana", - "extensions": ["vsd","vst","vss","vsw"] - }, - "application/vnd.visionary": { - "source": "iana", - "extensions": ["vis"] - }, - "application/vnd.vividence.scriptfile": { - "source": "iana" - }, - "application/vnd.vsf": { - "source": "iana", - "extensions": ["vsf"] - }, - "application/vnd.wap.sic": { - "source": "iana" - }, - "application/vnd.wap.slc": { - "source": "iana" - }, - "application/vnd.wap.wbxml": { - "source": "iana", - "extensions": ["wbxml"] - }, - "application/vnd.wap.wmlc": { - "source": "iana", - "extensions": ["wmlc"] - }, - "application/vnd.wap.wmlscriptc": { - "source": "iana", - "extensions": ["wmlsc"] - }, - "application/vnd.webturbo": { - "source": "iana", - "extensions": ["wtb"] - }, - "application/vnd.wfa.p2p": { - "source": "iana" - }, - "application/vnd.wfa.wsc": { - "source": "iana" - }, - "application/vnd.windows.devicepairing": { - "source": "iana" - }, - "application/vnd.wmc": { - "source": "iana" - }, - "application/vnd.wmf.bootstrap": { - "source": "iana" - }, - "application/vnd.wolfram.mathematica": { - "source": "iana" - }, - "application/vnd.wolfram.mathematica.package": { - "source": "iana" - }, - "application/vnd.wolfram.player": { - "source": "iana", - "extensions": ["nbp"] - }, - "application/vnd.wordperfect": { - "source": "iana", - "extensions": ["wpd"] - }, - "application/vnd.wqd": { - "source": "iana", - "extensions": ["wqd"] - }, - "application/vnd.wrq-hp3000-labelled": { - "source": "iana" - }, - "application/vnd.wt.stf": { - "source": "iana", - "extensions": ["stf"] - }, - "application/vnd.wv.csp+wbxml": { - "source": "iana" - }, - "application/vnd.wv.csp+xml": { - "source": "iana" - }, - "application/vnd.wv.ssp+xml": { - "source": "iana" - }, - "application/vnd.xacml+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.xara": { - "source": "iana", - "extensions": ["xar"] - }, - "application/vnd.xfdl": { - "source": "iana", - "extensions": ["xfdl"] - }, - "application/vnd.xfdl.webform": { - "source": "iana" - }, - "application/vnd.xmi+xml": { - "source": "iana" - }, - "application/vnd.xmpie.cpkg": { - "source": "iana" - }, - "application/vnd.xmpie.dpkg": { - "source": "iana" - }, - "application/vnd.xmpie.plan": { - "source": "iana" - }, - "application/vnd.xmpie.ppkg": { - "source": "iana" - }, - "application/vnd.xmpie.xlim": { - "source": "iana" - }, - "application/vnd.yamaha.hv-dic": { - "source": "iana", - "extensions": ["hvd"] - }, - "application/vnd.yamaha.hv-script": { - "source": "iana", - "extensions": ["hvs"] - }, - "application/vnd.yamaha.hv-voice": { - "source": "iana", - "extensions": ["hvp"] - }, - "application/vnd.yamaha.openscoreformat": { - "source": "iana", - "extensions": ["osf"] - }, - "application/vnd.yamaha.openscoreformat.osfpvg+xml": { - "source": "iana", - "extensions": ["osfpvg"] - }, - "application/vnd.yamaha.remote-setup": { - "source": "iana" - }, - "application/vnd.yamaha.smaf-audio": { - "source": "iana", - "extensions": ["saf"] - }, - "application/vnd.yamaha.smaf-phrase": { - "source": "iana", - "extensions": ["spf"] - }, - "application/vnd.yamaha.through-ngn": { - "source": "iana" - }, - "application/vnd.yamaha.tunnel-udpencap": { - "source": "iana" - }, - "application/vnd.yaoweme": { - "source": "iana" - }, - "application/vnd.yellowriver-custom-menu": { - "source": "iana", - "extensions": ["cmp"] - }, - "application/vnd.youtube.yt": { - "source": "iana" - }, - "application/vnd.zul": { - "source": "iana", - "extensions": ["zir","zirz"] - }, - "application/vnd.zzazz.deck+xml": { - "source": "iana", - "extensions": ["zaz"] - }, - "application/voicexml+xml": { - "source": "iana", - "extensions": ["vxml"] - }, - "application/voucher-cms+json": { - "source": "iana", - "compressible": true - }, - "application/vq-rtcpxr": { - "source": "iana" - }, - "application/wasm": { - "compressible": true, - "extensions": ["wasm"] - }, - "application/watcherinfo+xml": { - "source": "iana" - }, - "application/webpush-options+json": { - "source": "iana", - "compressible": true - }, - "application/whoispp-query": { - "source": "iana" - }, - "application/whoispp-response": { - "source": "iana" - }, - "application/widget": { - "source": "iana", - "extensions": ["wgt"] - }, - "application/winhlp": { - "source": "apache", - "extensions": ["hlp"] - }, - "application/wita": { - "source": "iana" - }, - "application/wordperfect5.1": { - "source": "iana" - }, - "application/wsdl+xml": { - "source": "iana", - "extensions": ["wsdl"] - }, - "application/wspolicy+xml": { - "source": "iana", - "extensions": ["wspolicy"] - }, - "application/x-7z-compressed": { - "source": "apache", - "compressible": false, - "extensions": ["7z"] - }, - "application/x-abiword": { - "source": "apache", - "extensions": ["abw"] - }, - "application/x-ace-compressed": { - "source": "apache", - "extensions": ["ace"] - }, - "application/x-amf": { - "source": "apache" - }, - "application/x-apple-diskimage": { - "source": "apache", - "extensions": ["dmg"] - }, - "application/x-arj": { - "compressible": false, - "extensions": ["arj"] - }, - "application/x-authorware-bin": { - "source": "apache", - "extensions": ["aab","x32","u32","vox"] - }, - "application/x-authorware-map": { - "source": "apache", - "extensions": ["aam"] - }, - "application/x-authorware-seg": { - "source": "apache", - "extensions": ["aas"] - }, - "application/x-bcpio": { - "source": "apache", - "extensions": ["bcpio"] - }, - "application/x-bdoc": { - "compressible": false, - "extensions": ["bdoc"] - }, - "application/x-bittorrent": { - "source": "apache", - "extensions": ["torrent"] - }, - "application/x-blorb": { - "source": "apache", - "extensions": ["blb","blorb"] - }, - "application/x-bzip": { - "source": "apache", - "compressible": false, - "extensions": ["bz"] - }, - "application/x-bzip2": { - "source": "apache", - "compressible": false, - "extensions": ["bz2","boz"] - }, - "application/x-cbr": { - "source": "apache", - "extensions": ["cbr","cba","cbt","cbz","cb7"] - }, - "application/x-cdlink": { - "source": "apache", - "extensions": ["vcd"] - }, - "application/x-cfs-compressed": { - "source": "apache", - "extensions": ["cfs"] - }, - "application/x-chat": { - "source": "apache", - "extensions": ["chat"] - }, - "application/x-chess-pgn": { - "source": "apache", - "extensions": ["pgn"] - }, - "application/x-chrome-extension": { - "extensions": ["crx"] - }, - "application/x-cocoa": { - "source": "nginx", - "extensions": ["cco"] - }, - "application/x-compress": { - "source": "apache" - }, - "application/x-conference": { - "source": "apache", - "extensions": ["nsc"] - }, - "application/x-cpio": { - "source": "apache", - "extensions": ["cpio"] - }, - "application/x-csh": { - "source": "apache", - "extensions": ["csh"] - }, - "application/x-deb": { - "compressible": false - }, - "application/x-debian-package": { - "source": "apache", - "extensions": ["deb","udeb"] - }, - "application/x-dgc-compressed": { - "source": "apache", - "extensions": ["dgc"] - }, - "application/x-director": { - "source": "apache", - "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] - }, - "application/x-doom": { - "source": "apache", - "extensions": ["wad"] - }, - "application/x-dtbncx+xml": { - "source": "apache", - "extensions": ["ncx"] - }, - "application/x-dtbook+xml": { - "source": "apache", - "extensions": ["dtb"] - }, - "application/x-dtbresource+xml": { - "source": "apache", - "extensions": ["res"] - }, - "application/x-dvi": { - "source": "apache", - "compressible": false, - "extensions": ["dvi"] - }, - "application/x-envoy": { - "source": "apache", - "extensions": ["evy"] - }, - "application/x-eva": { - "source": "apache", - "extensions": ["eva"] - }, - "application/x-font-bdf": { - "source": "apache", - "extensions": ["bdf"] - }, - "application/x-font-dos": { - "source": "apache" - }, - "application/x-font-framemaker": { - "source": "apache" - }, - "application/x-font-ghostscript": { - "source": "apache", - "extensions": ["gsf"] - }, - "application/x-font-libgrx": { - "source": "apache" - }, - "application/x-font-linux-psf": { - "source": "apache", - "extensions": ["psf"] - }, - "application/x-font-pcf": { - "source": "apache", - "extensions": ["pcf"] - }, - "application/x-font-snf": { - "source": "apache", - "extensions": ["snf"] - }, - "application/x-font-speedo": { - "source": "apache" - }, - "application/x-font-sunos-news": { - "source": "apache" - }, - "application/x-font-type1": { - "source": "apache", - "extensions": ["pfa","pfb","pfm","afm"] - }, - "application/x-font-vfont": { - "source": "apache" - }, - "application/x-freearc": { - "source": "apache", - "extensions": ["arc"] - }, - "application/x-futuresplash": { - "source": "apache", - "extensions": ["spl"] - }, - "application/x-gca-compressed": { - "source": "apache", - "extensions": ["gca"] - }, - "application/x-glulx": { - "source": "apache", - "extensions": ["ulx"] - }, - "application/x-gnumeric": { - "source": "apache", - "extensions": ["gnumeric"] - }, - "application/x-gramps-xml": { - "source": "apache", - "extensions": ["gramps"] - }, - "application/x-gtar": { - "source": "apache", - "extensions": ["gtar"] - }, - "application/x-gzip": { - "source": "apache" - }, - "application/x-hdf": { - "source": "apache", - "extensions": ["hdf"] - }, - "application/x-httpd-php": { - "compressible": true, - "extensions": ["php"] - }, - "application/x-install-instructions": { - "source": "apache", - "extensions": ["install"] - }, - "application/x-iso9660-image": { - "source": "apache", - "extensions": ["iso"] - }, - "application/x-java-archive-diff": { - "source": "nginx", - "extensions": ["jardiff"] - }, - "application/x-java-jnlp-file": { - "source": "apache", - "compressible": false, - "extensions": ["jnlp"] - }, - "application/x-javascript": { - "compressible": true - }, - "application/x-latex": { - "source": "apache", - "compressible": false, - "extensions": ["latex"] - }, - "application/x-lua-bytecode": { - "extensions": ["luac"] - }, - "application/x-lzh-compressed": { - "source": "apache", - "extensions": ["lzh","lha"] - }, - "application/x-makeself": { - "source": "nginx", - "extensions": ["run"] - }, - "application/x-mie": { - "source": "apache", - "extensions": ["mie"] - }, - "application/x-mobipocket-ebook": { - "source": "apache", - "extensions": ["prc","mobi"] - }, - "application/x-mpegurl": { - "compressible": false - }, - "application/x-ms-application": { - "source": "apache", - "extensions": ["application"] - }, - "application/x-ms-shortcut": { - "source": "apache", - "extensions": ["lnk"] - }, - "application/x-ms-wmd": { - "source": "apache", - "extensions": ["wmd"] - }, - "application/x-ms-wmz": { - "source": "apache", - "extensions": ["wmz"] - }, - "application/x-ms-xbap": { - "source": "apache", - "extensions": ["xbap"] - }, - "application/x-msaccess": { - "source": "apache", - "extensions": ["mdb"] - }, - "application/x-msbinder": { - "source": "apache", - "extensions": ["obd"] - }, - "application/x-mscardfile": { - "source": "apache", - "extensions": ["crd"] - }, - "application/x-msclip": { - "source": "apache", - "extensions": ["clp"] - }, - "application/x-msdos-program": { - "extensions": ["exe"] - }, - "application/x-msdownload": { - "source": "apache", - "extensions": ["exe","dll","com","bat","msi"] - }, - "application/x-msmediaview": { - "source": "apache", - "extensions": ["mvb","m13","m14"] - }, - "application/x-msmetafile": { - "source": "apache", - "extensions": ["wmf","wmz","emf","emz"] - }, - "application/x-msmoney": { - "source": "apache", - "extensions": ["mny"] - }, - "application/x-mspublisher": { - "source": "apache", - "extensions": ["pub"] - }, - "application/x-msschedule": { - "source": "apache", - "extensions": ["scd"] - }, - "application/x-msterminal": { - "source": "apache", - "extensions": ["trm"] - }, - "application/x-mswrite": { - "source": "apache", - "extensions": ["wri"] - }, - "application/x-netcdf": { - "source": "apache", - "extensions": ["nc","cdf"] - }, - "application/x-ns-proxy-autoconfig": { - "compressible": true, - "extensions": ["pac"] - }, - "application/x-nzb": { - "source": "apache", - "extensions": ["nzb"] - }, - "application/x-perl": { - "source": "nginx", - "extensions": ["pl","pm"] - }, - "application/x-pilot": { - "source": "nginx", - "extensions": ["prc","pdb"] - }, - "application/x-pkcs12": { - "source": "apache", - "compressible": false, - "extensions": ["p12","pfx"] - }, - "application/x-pkcs7-certificates": { - "source": "apache", - "extensions": ["p7b","spc"] - }, - "application/x-pkcs7-certreqresp": { - "source": "apache", - "extensions": ["p7r"] - }, - "application/x-rar-compressed": { - "source": "apache", - "compressible": false, - "extensions": ["rar"] - }, - "application/x-redhat-package-manager": { - "source": "nginx", - "extensions": ["rpm"] - }, - "application/x-research-info-systems": { - "source": "apache", - "extensions": ["ris"] - }, - "application/x-sea": { - "source": "nginx", - "extensions": ["sea"] - }, - "application/x-sh": { - "source": "apache", - "compressible": true, - "extensions": ["sh"] - }, - "application/x-shar": { - "source": "apache", - "extensions": ["shar"] - }, - "application/x-shockwave-flash": { - "source": "apache", - "compressible": false, - "extensions": ["swf"] - }, - "application/x-silverlight-app": { - "source": "apache", - "extensions": ["xap"] - }, - "application/x-sql": { - "source": "apache", - "extensions": ["sql"] - }, - "application/x-stuffit": { - "source": "apache", - "compressible": false, - "extensions": ["sit"] - }, - "application/x-stuffitx": { - "source": "apache", - "extensions": ["sitx"] - }, - "application/x-subrip": { - "source": "apache", - "extensions": ["srt"] - }, - "application/x-sv4cpio": { - "source": "apache", - "extensions": ["sv4cpio"] - }, - "application/x-sv4crc": { - "source": "apache", - "extensions": ["sv4crc"] - }, - "application/x-t3vm-image": { - "source": "apache", - "extensions": ["t3"] - }, - "application/x-tads": { - "source": "apache", - "extensions": ["gam"] - }, - "application/x-tar": { - "source": "apache", - "compressible": true, - "extensions": ["tar"] - }, - "application/x-tcl": { - "source": "apache", - "extensions": ["tcl","tk"] - }, - "application/x-tex": { - "source": "apache", - "extensions": ["tex"] - }, - "application/x-tex-tfm": { - "source": "apache", - "extensions": ["tfm"] - }, - "application/x-texinfo": { - "source": "apache", - "extensions": ["texinfo","texi"] - }, - "application/x-tgif": { - "source": "apache", - "extensions": ["obj"] - }, - "application/x-ustar": { - "source": "apache", - "extensions": ["ustar"] - }, - "application/x-virtualbox-hdd": { - "compressible": true, - "extensions": ["hdd"] - }, - "application/x-virtualbox-ova": { - "compressible": true, - "extensions": ["ova"] - }, - "application/x-virtualbox-ovf": { - "compressible": true, - "extensions": ["ovf"] - }, - "application/x-virtualbox-vbox": { - "compressible": true, - "extensions": ["vbox"] - }, - "application/x-virtualbox-vbox-extpack": { - "compressible": false, - "extensions": ["vbox-extpack"] - }, - "application/x-virtualbox-vdi": { - "compressible": true, - "extensions": ["vdi"] - }, - "application/x-virtualbox-vhd": { - "compressible": true, - "extensions": ["vhd"] - }, - "application/x-virtualbox-vmdk": { - "compressible": true, - "extensions": ["vmdk"] - }, - "application/x-wais-source": { - "source": "apache", - "extensions": ["src"] - }, - "application/x-web-app-manifest+json": { - "compressible": true, - "extensions": ["webapp"] - }, - "application/x-www-form-urlencoded": { - "source": "iana", - "compressible": true - }, - "application/x-x509-ca-cert": { - "source": "apache", - "extensions": ["der","crt","pem"] - }, - "application/x-xfig": { - "source": "apache", - "extensions": ["fig"] - }, - "application/x-xliff+xml": { - "source": "apache", - "extensions": ["xlf"] - }, - "application/x-xpinstall": { - "source": "apache", - "compressible": false, - "extensions": ["xpi"] - }, - "application/x-xz": { - "source": "apache", - "extensions": ["xz"] - }, - "application/x-zmachine": { - "source": "apache", - "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] - }, - "application/x400-bp": { - "source": "iana" - }, - "application/xacml+xml": { - "source": "iana" - }, - "application/xaml+xml": { - "source": "apache", - "extensions": ["xaml"] - }, - "application/xcap-att+xml": { - "source": "iana" - }, - "application/xcap-caps+xml": { - "source": "iana" - }, - "application/xcap-diff+xml": { - "source": "iana", - "extensions": ["xdf"] - }, - "application/xcap-el+xml": { - "source": "iana" - }, - "application/xcap-error+xml": { - "source": "iana" - }, - "application/xcap-ns+xml": { - "source": "iana" - }, - "application/xcon-conference-info+xml": { - "source": "iana" - }, - "application/xcon-conference-info-diff+xml": { - "source": "iana" - }, - "application/xenc+xml": { - "source": "iana", - "extensions": ["xenc"] - }, - "application/xhtml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xhtml","xht"] - }, - "application/xhtml-voice+xml": { - "source": "apache" - }, - "application/xml": { - "source": "iana", - "compressible": true, - "extensions": ["xml","xsl","xsd","rng"] - }, - "application/xml-dtd": { - "source": "iana", - "compressible": true, - "extensions": ["dtd"] - }, - "application/xml-external-parsed-entity": { - "source": "iana" - }, - "application/xml-patch+xml": { - "source": "iana" - }, - "application/xmpp+xml": { - "source": "iana" - }, - "application/xop+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xop"] - }, - "application/xproc+xml": { - "source": "apache", - "extensions": ["xpl"] - }, - "application/xslt+xml": { - "source": "iana", - "extensions": ["xslt"] - }, - "application/xspf+xml": { - "source": "apache", - "extensions": ["xspf"] - }, - "application/xv+xml": { - "source": "iana", - "extensions": ["mxml","xhvml","xvml","xvm"] - }, - "application/yang": { - "source": "iana", - "extensions": ["yang"] - }, - "application/yang-data+json": { - "source": "iana", - "compressible": true - }, - "application/yang-data+xml": { - "source": "iana" - }, - "application/yang-patch+json": { - "source": "iana", - "compressible": true - }, - "application/yang-patch+xml": { - "source": "iana" - }, - "application/yin+xml": { - "source": "iana", - "extensions": ["yin"] - }, - "application/zip": { - "source": "iana", - "compressible": false, - "extensions": ["zip"] - }, - "application/zlib": { - "source": "iana" - }, - "audio/1d-interleaved-parityfec": { - "source": "iana" - }, - "audio/32kadpcm": { - "source": "iana" - }, - "audio/3gpp": { - "source": "iana", - "compressible": false, - "extensions": ["3gpp"] - }, - "audio/3gpp2": { - "source": "iana" - }, - "audio/ac3": { - "source": "iana" - }, - "audio/adpcm": { - "source": "apache", - "extensions": ["adp"] - }, - "audio/amr": { - "source": "iana" - }, - "audio/amr-wb": { - "source": "iana" - }, - "audio/amr-wb+": { - "source": "iana" - }, - "audio/aptx": { - "source": "iana" - }, - "audio/asc": { - "source": "iana" - }, - "audio/atrac-advanced-lossless": { - "source": "iana" - }, - "audio/atrac-x": { - "source": "iana" - }, - "audio/atrac3": { - "source": "iana" - }, - "audio/basic": { - "source": "iana", - "compressible": false, - "extensions": ["au","snd"] - }, - "audio/bv16": { - "source": "iana" - }, - "audio/bv32": { - "source": "iana" - }, - "audio/clearmode": { - "source": "iana" - }, - "audio/cn": { - "source": "iana" - }, - "audio/dat12": { - "source": "iana" - }, - "audio/dls": { - "source": "iana" - }, - "audio/dsr-es201108": { - "source": "iana" - }, - "audio/dsr-es202050": { - "source": "iana" - }, - "audio/dsr-es202211": { - "source": "iana" - }, - "audio/dsr-es202212": { - "source": "iana" - }, - "audio/dv": { - "source": "iana" - }, - "audio/dvi4": { - "source": "iana" - }, - "audio/eac3": { - "source": "iana" - }, - "audio/encaprtp": { - "source": "iana" - }, - "audio/evrc": { - "source": "iana" - }, - "audio/evrc-qcp": { - "source": "iana" - }, - "audio/evrc0": { - "source": "iana" - }, - "audio/evrc1": { - "source": "iana" - }, - "audio/evrcb": { - "source": "iana" - }, - "audio/evrcb0": { - "source": "iana" - }, - "audio/evrcb1": { - "source": "iana" - }, - "audio/evrcnw": { - "source": "iana" - }, - "audio/evrcnw0": { - "source": "iana" - }, - "audio/evrcnw1": { - "source": "iana" - }, - "audio/evrcwb": { - "source": "iana" - }, - "audio/evrcwb0": { - "source": "iana" - }, - "audio/evrcwb1": { - "source": "iana" - }, - "audio/evs": { - "source": "iana" - }, - "audio/fwdred": { - "source": "iana" - }, - "audio/g711-0": { - "source": "iana" - }, - "audio/g719": { - "source": "iana" - }, - "audio/g722": { - "source": "iana" - }, - "audio/g7221": { - "source": "iana" - }, - "audio/g723": { - "source": "iana" - }, - "audio/g726-16": { - "source": "iana" - }, - "audio/g726-24": { - "source": "iana" - }, - "audio/g726-32": { - "source": "iana" - }, - "audio/g726-40": { - "source": "iana" - }, - "audio/g728": { - "source": "iana" - }, - "audio/g729": { - "source": "iana" - }, - "audio/g7291": { - "source": "iana" - }, - "audio/g729d": { - "source": "iana" - }, - "audio/g729e": { - "source": "iana" - }, - "audio/gsm": { - "source": "iana" - }, - "audio/gsm-efr": { - "source": "iana" - }, - "audio/gsm-hr-08": { - "source": "iana" - }, - "audio/ilbc": { - "source": "iana" - }, - "audio/ip-mr_v2.5": { - "source": "iana" - }, - "audio/isac": { - "source": "apache" - }, - "audio/l16": { - "source": "iana" - }, - "audio/l20": { - "source": "iana" - }, - "audio/l24": { - "source": "iana", - "compressible": false - }, - "audio/l8": { - "source": "iana" - }, - "audio/lpc": { - "source": "iana" - }, - "audio/melp": { - "source": "iana" - }, - "audio/melp1200": { - "source": "iana" - }, - "audio/melp2400": { - "source": "iana" - }, - "audio/melp600": { - "source": "iana" - }, - "audio/midi": { - "source": "apache", - "extensions": ["mid","midi","kar","rmi"] - }, - "audio/mobile-xmf": { - "source": "iana" - }, - "audio/mp3": { - "compressible": false, - "extensions": ["mp3"] - }, - "audio/mp4": { - "source": "iana", - "compressible": false, - "extensions": ["m4a","mp4a"] - }, - "audio/mp4a-latm": { - "source": "iana" - }, - "audio/mpa": { - "source": "iana" - }, - "audio/mpa-robust": { - "source": "iana" - }, - "audio/mpeg": { - "source": "iana", - "compressible": false, - "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] - }, - "audio/mpeg4-generic": { - "source": "iana" - }, - "audio/musepack": { - "source": "apache" - }, - "audio/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["oga","ogg","spx"] - }, - "audio/opus": { - "source": "iana" - }, - "audio/parityfec": { - "source": "iana" - }, - "audio/pcma": { - "source": "iana" - }, - "audio/pcma-wb": { - "source": "iana" - }, - "audio/pcmu": { - "source": "iana" - }, - "audio/pcmu-wb": { - "source": "iana" - }, - "audio/prs.sid": { - "source": "iana" - }, - "audio/qcelp": { - "source": "iana" - }, - "audio/raptorfec": { - "source": "iana" - }, - "audio/red": { - "source": "iana" - }, - "audio/rtp-enc-aescm128": { - "source": "iana" - }, - "audio/rtp-midi": { - "source": "iana" - }, - "audio/rtploopback": { - "source": "iana" - }, - "audio/rtx": { - "source": "iana" - }, - "audio/s3m": { - "source": "apache", - "extensions": ["s3m"] - }, - "audio/silk": { - "source": "apache", - "extensions": ["sil"] - }, - "audio/smv": { - "source": "iana" - }, - "audio/smv-qcp": { - "source": "iana" - }, - "audio/smv0": { - "source": "iana" - }, - "audio/sp-midi": { - "source": "iana" - }, - "audio/speex": { - "source": "iana" - }, - "audio/t140c": { - "source": "iana" - }, - "audio/t38": { - "source": "iana" - }, - "audio/telephone-event": { - "source": "iana" - }, - "audio/tone": { - "source": "iana" - }, - "audio/uemclip": { - "source": "iana" - }, - "audio/ulpfec": { - "source": "iana" - }, - "audio/vdvi": { - "source": "iana" - }, - "audio/vmr-wb": { - "source": "iana" - }, - "audio/vnd.3gpp.iufp": { - "source": "iana" - }, - "audio/vnd.4sb": { - "source": "iana" - }, - "audio/vnd.audiokoz": { - "source": "iana" - }, - "audio/vnd.celp": { - "source": "iana" - }, - "audio/vnd.cisco.nse": { - "source": "iana" - }, - "audio/vnd.cmles.radio-events": { - "source": "iana" - }, - "audio/vnd.cns.anp1": { - "source": "iana" - }, - "audio/vnd.cns.inf1": { - "source": "iana" - }, - "audio/vnd.dece.audio": { - "source": "iana", - "extensions": ["uva","uvva"] - }, - "audio/vnd.digital-winds": { - "source": "iana", - "extensions": ["eol"] - }, - "audio/vnd.dlna.adts": { - "source": "iana" - }, - "audio/vnd.dolby.heaac.1": { - "source": "iana" - }, - "audio/vnd.dolby.heaac.2": { - "source": "iana" - }, - "audio/vnd.dolby.mlp": { - "source": "iana" - }, - "audio/vnd.dolby.mps": { - "source": "iana" - }, - "audio/vnd.dolby.pl2": { - "source": "iana" - }, - "audio/vnd.dolby.pl2x": { - "source": "iana" - }, - "audio/vnd.dolby.pl2z": { - "source": "iana" - }, - "audio/vnd.dolby.pulse.1": { - "source": "iana" - }, - "audio/vnd.dra": { - "source": "iana", - "extensions": ["dra"] - }, - "audio/vnd.dts": { - "source": "iana", - "extensions": ["dts"] - }, - "audio/vnd.dts.hd": { - "source": "iana", - "extensions": ["dtshd"] - }, - "audio/vnd.dvb.file": { - "source": "iana" - }, - "audio/vnd.everad.plj": { - "source": "iana" - }, - "audio/vnd.hns.audio": { - "source": "iana" - }, - "audio/vnd.lucent.voice": { - "source": "iana", - "extensions": ["lvp"] - }, - "audio/vnd.ms-playready.media.pya": { - "source": "iana", - "extensions": ["pya"] - }, - "audio/vnd.nokia.mobile-xmf": { - "source": "iana" - }, - "audio/vnd.nortel.vbk": { - "source": "iana" - }, - "audio/vnd.nuera.ecelp4800": { - "source": "iana", - "extensions": ["ecelp4800"] - }, - "audio/vnd.nuera.ecelp7470": { - "source": "iana", - "extensions": ["ecelp7470"] - }, - "audio/vnd.nuera.ecelp9600": { - "source": "iana", - "extensions": ["ecelp9600"] - }, - "audio/vnd.octel.sbc": { - "source": "iana" - }, - "audio/vnd.presonus.multitrack": { - "source": "iana" - }, - "audio/vnd.qcelp": { - "source": "iana" - }, - "audio/vnd.rhetorex.32kadpcm": { - "source": "iana" - }, - "audio/vnd.rip": { - "source": "iana", - "extensions": ["rip"] - }, - "audio/vnd.rn-realaudio": { - "compressible": false - }, - "audio/vnd.sealedmedia.softseal.mpeg": { - "source": "iana" - }, - "audio/vnd.vmx.cvsd": { - "source": "iana" - }, - "audio/vnd.wave": { - "compressible": false - }, - "audio/vorbis": { - "source": "iana", - "compressible": false - }, - "audio/vorbis-config": { - "source": "iana" - }, - "audio/wav": { - "compressible": false, - "extensions": ["wav"] - }, - "audio/wave": { - "compressible": false, - "extensions": ["wav"] - }, - "audio/webm": { - "source": "apache", - "compressible": false, - "extensions": ["weba"] - }, - "audio/x-aac": { - "source": "apache", - "compressible": false, - "extensions": ["aac"] - }, - "audio/x-aiff": { - "source": "apache", - "extensions": ["aif","aiff","aifc"] - }, - "audio/x-caf": { - "source": "apache", - "compressible": false, - "extensions": ["caf"] - }, - "audio/x-flac": { - "source": "apache", - "extensions": ["flac"] - }, - "audio/x-m4a": { - "source": "nginx", - "extensions": ["m4a"] - }, - "audio/x-matroska": { - "source": "apache", - "extensions": ["mka"] - }, - "audio/x-mpegurl": { - "source": "apache", - "extensions": ["m3u"] - }, - "audio/x-ms-wax": { - "source": "apache", - "extensions": ["wax"] - }, - "audio/x-ms-wma": { - "source": "apache", - "extensions": ["wma"] - }, - "audio/x-pn-realaudio": { - "source": "apache", - "extensions": ["ram","ra"] - }, - "audio/x-pn-realaudio-plugin": { - "source": "apache", - "extensions": ["rmp"] - }, - "audio/x-realaudio": { - "source": "nginx", - "extensions": ["ra"] - }, - "audio/x-tta": { - "source": "apache" - }, - "audio/x-wav": { - "source": "apache", - "extensions": ["wav"] - }, - "audio/xm": { - "source": "apache", - "extensions": ["xm"] - }, - "chemical/x-cdx": { - "source": "apache", - "extensions": ["cdx"] - }, - "chemical/x-cif": { - "source": "apache", - "extensions": ["cif"] - }, - "chemical/x-cmdf": { - "source": "apache", - "extensions": ["cmdf"] - }, - "chemical/x-cml": { - "source": "apache", - "extensions": ["cml"] - }, - "chemical/x-csml": { - "source": "apache", - "extensions": ["csml"] - }, - "chemical/x-pdb": { - "source": "apache" - }, - "chemical/x-xyz": { - "source": "apache", - "extensions": ["xyz"] - }, - "font/collection": { - "source": "iana", - "extensions": ["ttc"] - }, - "font/otf": { - "source": "iana", - "compressible": true, - "extensions": ["otf"] - }, - "font/sfnt": { - "source": "iana" - }, - "font/ttf": { - "source": "iana", - "extensions": ["ttf"] - }, - "font/woff": { - "source": "iana", - "extensions": ["woff"] - }, - "font/woff2": { - "source": "iana", - "extensions": ["woff2"] - }, - "image/aces": { - "source": "iana" - }, - "image/apng": { - "compressible": false, - "extensions": ["apng"] - }, - "image/bmp": { - "source": "iana", - "compressible": true, - "extensions": ["bmp"] - }, - "image/cgm": { - "source": "iana", - "extensions": ["cgm"] - }, - "image/dicom-rle": { - "source": "iana" - }, - "image/emf": { - "source": "iana" - }, - "image/fits": { - "source": "iana" - }, - "image/g3fax": { - "source": "iana", - "extensions": ["g3"] - }, - "image/gif": { - "source": "iana", - "compressible": false, - "extensions": ["gif"] - }, - "image/ief": { - "source": "iana", - "extensions": ["ief"] - }, - "image/jls": { - "source": "iana" - }, - "image/jp2": { - "source": "iana", - "compressible": false, - "extensions": ["jp2","jpg2"] - }, - "image/jpeg": { - "source": "iana", - "compressible": false, - "extensions": ["jpeg","jpg","jpe"] - }, - "image/jpm": { - "source": "iana", - "compressible": false, - "extensions": ["jpm"] - }, - "image/jpx": { - "source": "iana", - "compressible": false, - "extensions": ["jpx","jpf"] - }, - "image/ktx": { - "source": "iana", - "extensions": ["ktx"] - }, - "image/naplps": { - "source": "iana" - }, - "image/pjpeg": { - "compressible": false - }, - "image/png": { - "source": "iana", - "compressible": false, - "extensions": ["png"] - }, - "image/prs.btif": { - "source": "iana", - "extensions": ["btif"] - }, - "image/prs.pti": { - "source": "iana" - }, - "image/pwg-raster": { - "source": "iana" - }, - "image/sgi": { - "source": "apache", - "extensions": ["sgi"] - }, - "image/svg+xml": { - "source": "iana", - "compressible": true, - "extensions": ["svg","svgz"] - }, - "image/t38": { - "source": "iana" - }, - "image/tiff": { - "source": "iana", - "compressible": false, - "extensions": ["tiff","tif"] - }, - "image/tiff-fx": { - "source": "iana" - }, - "image/vnd.adobe.photoshop": { - "source": "iana", - "compressible": true, - "extensions": ["psd"] - }, - "image/vnd.airzip.accelerator.azv": { - "source": "iana" - }, - "image/vnd.cns.inf2": { - "source": "iana" - }, - "image/vnd.dece.graphic": { - "source": "iana", - "extensions": ["uvi","uvvi","uvg","uvvg"] - }, - "image/vnd.djvu": { - "source": "iana", - "extensions": ["djvu","djv"] - }, - "image/vnd.dvb.subtitle": { - "source": "iana", - "extensions": ["sub"] - }, - "image/vnd.dwg": { - "source": "iana", - "extensions": ["dwg"] - }, - "image/vnd.dxf": { - "source": "iana", - "extensions": ["dxf"] - }, - "image/vnd.fastbidsheet": { - "source": "iana", - "extensions": ["fbs"] - }, - "image/vnd.fpx": { - "source": "iana", - "extensions": ["fpx"] - }, - "image/vnd.fst": { - "source": "iana", - "extensions": ["fst"] - }, - "image/vnd.fujixerox.edmics-mmr": { - "source": "iana", - "extensions": ["mmr"] - }, - "image/vnd.fujixerox.edmics-rlc": { - "source": "iana", - "extensions": ["rlc"] - }, - "image/vnd.globalgraphics.pgb": { - "source": "iana" - }, - "image/vnd.microsoft.icon": { - "source": "iana" - }, - "image/vnd.mix": { - "source": "iana" - }, - "image/vnd.mozilla.apng": { - "source": "iana" - }, - "image/vnd.ms-modi": { - "source": "iana", - "extensions": ["mdi"] - }, - "image/vnd.ms-photo": { - "source": "apache", - "extensions": ["wdp"] - }, - "image/vnd.net-fpx": { - "source": "iana", - "extensions": ["npx"] - }, - "image/vnd.radiance": { - "source": "iana" - }, - "image/vnd.sealed.png": { - "source": "iana" - }, - "image/vnd.sealedmedia.softseal.gif": { - "source": "iana" - }, - "image/vnd.sealedmedia.softseal.jpg": { - "source": "iana" - }, - "image/vnd.svf": { - "source": "iana" - }, - "image/vnd.tencent.tap": { - "source": "iana" - }, - "image/vnd.valve.source.texture": { - "source": "iana" - }, - "image/vnd.wap.wbmp": { - "source": "iana", - "extensions": ["wbmp"] - }, - "image/vnd.xiff": { - "source": "iana", - "extensions": ["xif"] - }, - "image/vnd.zbrush.pcx": { - "source": "iana" - }, - "image/webp": { - "source": "apache", - "extensions": ["webp"] - }, - "image/wmf": { - "source": "iana" - }, - "image/x-3ds": { - "source": "apache", - "extensions": ["3ds"] - }, - "image/x-cmu-raster": { - "source": "apache", - "extensions": ["ras"] - }, - "image/x-cmx": { - "source": "apache", - "extensions": ["cmx"] - }, - "image/x-freehand": { - "source": "apache", - "extensions": ["fh","fhc","fh4","fh5","fh7"] - }, - "image/x-icon": { - "source": "apache", - "compressible": true, - "extensions": ["ico"] - }, - "image/x-jng": { - "source": "nginx", - "extensions": ["jng"] - }, - "image/x-mrsid-image": { - "source": "apache", - "extensions": ["sid"] - }, - "image/x-ms-bmp": { - "source": "nginx", - "compressible": true, - "extensions": ["bmp"] - }, - "image/x-pcx": { - "source": "apache", - "extensions": ["pcx"] - }, - "image/x-pict": { - "source": "apache", - "extensions": ["pic","pct"] - }, - "image/x-portable-anymap": { - "source": "apache", - "extensions": ["pnm"] - }, - "image/x-portable-bitmap": { - "source": "apache", - "extensions": ["pbm"] - }, - "image/x-portable-graymap": { - "source": "apache", - "extensions": ["pgm"] - }, - "image/x-portable-pixmap": { - "source": "apache", - "extensions": ["ppm"] - }, - "image/x-rgb": { - "source": "apache", - "extensions": ["rgb"] - }, - "image/x-tga": { - "source": "apache", - "extensions": ["tga"] - }, - "image/x-xbitmap": { - "source": "apache", - "extensions": ["xbm"] - }, - "image/x-xcf": { - "compressible": false - }, - "image/x-xpixmap": { - "source": "apache", - "extensions": ["xpm"] - }, - "image/x-xwindowdump": { - "source": "apache", - "extensions": ["xwd"] - }, - "message/cpim": { - "source": "iana" - }, - "message/delivery-status": { - "source": "iana" - }, - "message/disposition-notification": { - "source": "iana", - "extensions": [ - "disposition-notification" - ] - }, - "message/external-body": { - "source": "iana" - }, - "message/feedback-report": { - "source": "iana" - }, - "message/global": { - "source": "iana", - "extensions": ["u8msg"] - }, - "message/global-delivery-status": { - "source": "iana", - "extensions": ["u8dsn"] - }, - "message/global-disposition-notification": { - "source": "iana", - "extensions": ["u8mdn"] - }, - "message/global-headers": { - "source": "iana", - "extensions": ["u8hdr"] - }, - "message/http": { - "source": "iana", - "compressible": false - }, - "message/imdn+xml": { - "source": "iana", - "compressible": true - }, - "message/news": { - "source": "iana" - }, - "message/partial": { - "source": "iana", - "compressible": false - }, - "message/rfc822": { - "source": "iana", - "compressible": true, - "extensions": ["eml","mime"] - }, - "message/s-http": { - "source": "iana" - }, - "message/sip": { - "source": "iana" - }, - "message/sipfrag": { - "source": "iana" - }, - "message/tracking-status": { - "source": "iana" - }, - "message/vnd.si.simp": { - "source": "iana" - }, - "message/vnd.wfa.wsc": { - "source": "iana", - "extensions": ["wsc"] - }, - "model/3mf": { - "source": "iana" - }, - "model/gltf+json": { - "source": "iana", - "compressible": true, - "extensions": ["gltf"] - }, - "model/gltf-binary": { - "source": "iana", - "compressible": true, - "extensions": ["glb"] - }, - "model/iges": { - "source": "iana", - "compressible": false, - "extensions": ["igs","iges"] - }, - "model/mesh": { - "source": "iana", - "compressible": false, - "extensions": ["msh","mesh","silo"] - }, - "model/vnd.collada+xml": { - "source": "iana", - "extensions": ["dae"] - }, - "model/vnd.dwf": { - "source": "iana", - "extensions": ["dwf"] - }, - "model/vnd.flatland.3dml": { - "source": "iana" - }, - "model/vnd.gdl": { - "source": "iana", - "extensions": ["gdl"] - }, - "model/vnd.gs-gdl": { - "source": "apache" - }, - "model/vnd.gs.gdl": { - "source": "iana" - }, - "model/vnd.gtw": { - "source": "iana", - "extensions": ["gtw"] - }, - "model/vnd.moml+xml": { - "source": "iana" - }, - "model/vnd.mts": { - "source": "iana", - "extensions": ["mts"] - }, - "model/vnd.opengex": { - "source": "iana" - }, - "model/vnd.parasolid.transmit.binary": { - "source": "iana" - }, - "model/vnd.parasolid.transmit.text": { - "source": "iana" - }, - "model/vnd.rosette.annotated-data-model": { - "source": "iana" - }, - "model/vnd.valve.source.compiled-map": { - "source": "iana" - }, - "model/vnd.vtu": { - "source": "iana", - "extensions": ["vtu"] - }, - "model/vrml": { - "source": "iana", - "compressible": false, - "extensions": ["wrl","vrml"] - }, - "model/x3d+binary": { - "source": "apache", - "compressible": false, - "extensions": ["x3db","x3dbz"] - }, - "model/x3d+fastinfoset": { - "source": "iana" - }, - "model/x3d+vrml": { - "source": "apache", - "compressible": false, - "extensions": ["x3dv","x3dvz"] - }, - "model/x3d+xml": { - "source": "iana", - "compressible": true, - "extensions": ["x3d","x3dz"] - }, - "model/x3d-vrml": { - "source": "iana" - }, - "multipart/alternative": { - "source": "iana", - "compressible": false - }, - "multipart/appledouble": { - "source": "iana" - }, - "multipart/byteranges": { - "source": "iana" - }, - "multipart/digest": { - "source": "iana" - }, - "multipart/encrypted": { - "source": "iana", - "compressible": false - }, - "multipart/form-data": { - "source": "iana", - "compressible": false - }, - "multipart/header-set": { - "source": "iana" - }, - "multipart/mixed": { - "source": "iana", - "compressible": false - }, - "multipart/multilingual": { - "source": "iana" - }, - "multipart/parallel": { - "source": "iana" - }, - "multipart/related": { - "source": "iana", - "compressible": false - }, - "multipart/report": { - "source": "iana" - }, - "multipart/signed": { - "source": "iana", - "compressible": false - }, - "multipart/vnd.bint.med-plus": { - "source": "iana" - }, - "multipart/voice-message": { - "source": "iana" - }, - "multipart/x-mixed-replace": { - "source": "iana" - }, - "text/1d-interleaved-parityfec": { - "source": "iana" - }, - "text/cache-manifest": { - "source": "iana", - "compressible": true, - "extensions": ["appcache","manifest"] - }, - "text/calendar": { - "source": "iana", - "extensions": ["ics","ifb"] - }, - "text/calender": { - "compressible": true - }, - "text/cmd": { - "compressible": true - }, - "text/coffeescript": { - "extensions": ["coffee","litcoffee"] - }, - "text/css": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["css"] - }, - "text/csv": { - "source": "iana", - "compressible": true, - "extensions": ["csv"] - }, - "text/csv-schema": { - "source": "iana" - }, - "text/directory": { - "source": "iana" - }, - "text/dns": { - "source": "iana" - }, - "text/ecmascript": { - "source": "iana" - }, - "text/encaprtp": { - "source": "iana" - }, - "text/enriched": { - "source": "iana" - }, - "text/fwdred": { - "source": "iana" - }, - "text/grammar-ref-list": { - "source": "iana" - }, - "text/html": { - "source": "iana", - "compressible": true, - "extensions": ["html","htm","shtml"] - }, - "text/jade": { - "extensions": ["jade"] - }, - "text/javascript": { - "source": "iana", - "compressible": true - }, - "text/jcr-cnd": { - "source": "iana" - }, - "text/jsx": { - "compressible": true, - "extensions": ["jsx"] - }, - "text/less": { - "extensions": ["less"] - }, - "text/markdown": { - "source": "iana", - "compressible": true, - "extensions": ["markdown","md"] - }, - "text/mathml": { - "source": "nginx", - "extensions": ["mml"] - }, - "text/mizar": { - "source": "iana" - }, - "text/n3": { - "source": "iana", - "compressible": true, - "extensions": ["n3"] - }, - "text/parameters": { - "source": "iana" - }, - "text/parityfec": { - "source": "iana" - }, - "text/plain": { - "source": "iana", - "compressible": true, - "extensions": ["txt","text","conf","def","list","log","in","ini"] - }, - "text/provenance-notation": { - "source": "iana" - }, - "text/prs.fallenstein.rst": { - "source": "iana" - }, - "text/prs.lines.tag": { - "source": "iana", - "extensions": ["dsc"] - }, - "text/prs.prop.logic": { - "source": "iana" - }, - "text/raptorfec": { - "source": "iana" - }, - "text/red": { - "source": "iana" - }, - "text/rfc822-headers": { - "source": "iana" - }, - "text/richtext": { - "source": "iana", - "compressible": true, - "extensions": ["rtx"] - }, - "text/rtf": { - "source": "iana", - "compressible": true, - "extensions": ["rtf"] - }, - "text/rtp-enc-aescm128": { - "source": "iana" - }, - "text/rtploopback": { - "source": "iana" - }, - "text/rtx": { - "source": "iana" - }, - "text/sgml": { - "source": "iana", - "extensions": ["sgml","sgm"] - }, - "text/shex": { - "extensions": ["shex"] - }, - "text/slim": { - "extensions": ["slim","slm"] - }, - "text/strings": { - "source": "iana" - }, - "text/stylus": { - "extensions": ["stylus","styl"] - }, - "text/t140": { - "source": "iana" - }, - "text/tab-separated-values": { - "source": "iana", - "compressible": true, - "extensions": ["tsv"] - }, - "text/troff": { - "source": "iana", - "extensions": ["t","tr","roff","man","me","ms"] - }, - "text/turtle": { - "source": "iana", - "extensions": ["ttl"] - }, - "text/ulpfec": { - "source": "iana" - }, - "text/uri-list": { - "source": "iana", - "compressible": true, - "extensions": ["uri","uris","urls"] - }, - "text/vcard": { - "source": "iana", - "compressible": true, - "extensions": ["vcard"] - }, - "text/vnd.a": { - "source": "iana" - }, - "text/vnd.abc": { - "source": "iana" - }, - "text/vnd.ascii-art": { - "source": "iana" - }, - "text/vnd.curl": { - "source": "iana", - "extensions": ["curl"] - }, - "text/vnd.curl.dcurl": { - "source": "apache", - "extensions": ["dcurl"] - }, - "text/vnd.curl.mcurl": { - "source": "apache", - "extensions": ["mcurl"] - }, - "text/vnd.curl.scurl": { - "source": "apache", - "extensions": ["scurl"] - }, - "text/vnd.debian.copyright": { - "source": "iana" - }, - "text/vnd.dmclientscript": { - "source": "iana" - }, - "text/vnd.dvb.subtitle": { - "source": "iana", - "extensions": ["sub"] - }, - "text/vnd.esmertec.theme-descriptor": { - "source": "iana" - }, - "text/vnd.fly": { - "source": "iana", - "extensions": ["fly"] - }, - "text/vnd.fmi.flexstor": { - "source": "iana", - "extensions": ["flx"] - }, - "text/vnd.graphviz": { - "source": "iana", - "extensions": ["gv"] - }, - "text/vnd.in3d.3dml": { - "source": "iana", - "extensions": ["3dml"] - }, - "text/vnd.in3d.spot": { - "source": "iana", - "extensions": ["spot"] - }, - "text/vnd.iptc.newsml": { - "source": "iana" - }, - "text/vnd.iptc.nitf": { - "source": "iana" - }, - "text/vnd.latex-z": { - "source": "iana" - }, - "text/vnd.motorola.reflex": { - "source": "iana" - }, - "text/vnd.ms-mediapackage": { - "source": "iana" - }, - "text/vnd.net2phone.commcenter.command": { - "source": "iana" - }, - "text/vnd.radisys.msml-basic-layout": { - "source": "iana" - }, - "text/vnd.si.uricatalogue": { - "source": "iana" - }, - "text/vnd.sun.j2me.app-descriptor": { - "source": "iana", - "extensions": ["jad"] - }, - "text/vnd.trolltech.linguist": { - "source": "iana" - }, - "text/vnd.wap.si": { - "source": "iana" - }, - "text/vnd.wap.sl": { - "source": "iana" - }, - "text/vnd.wap.wml": { - "source": "iana", - "extensions": ["wml"] - }, - "text/vnd.wap.wmlscript": { - "source": "iana", - "extensions": ["wmls"] - }, - "text/vtt": { - "charset": "UTF-8", - "compressible": true, - "extensions": ["vtt"] - }, - "text/x-asm": { - "source": "apache", - "extensions": ["s","asm"] - }, - "text/x-c": { - "source": "apache", - "extensions": ["c","cc","cxx","cpp","h","hh","dic"] - }, - "text/x-component": { - "source": "nginx", - "extensions": ["htc"] - }, - "text/x-fortran": { - "source": "apache", - "extensions": ["f","for","f77","f90"] - }, - "text/x-gwt-rpc": { - "compressible": true - }, - "text/x-handlebars-template": { - "extensions": ["hbs"] - }, - "text/x-java-source": { - "source": "apache", - "extensions": ["java"] - }, - "text/x-jquery-tmpl": { - "compressible": true - }, - "text/x-lua": { - "extensions": ["lua"] - }, - "text/x-markdown": { - "compressible": true, - "extensions": ["mkd"] - }, - "text/x-nfo": { - "source": "apache", - "extensions": ["nfo"] - }, - "text/x-opml": { - "source": "apache", - "extensions": ["opml"] - }, - "text/x-org": { - "compressible": true, - "extensions": ["org"] - }, - "text/x-pascal": { - "source": "apache", - "extensions": ["p","pas"] - }, - "text/x-processing": { - "compressible": true, - "extensions": ["pde"] - }, - "text/x-sass": { - "extensions": ["sass"] - }, - "text/x-scss": { - "extensions": ["scss"] - }, - "text/x-setext": { - "source": "apache", - "extensions": ["etx"] - }, - "text/x-sfv": { - "source": "apache", - "extensions": ["sfv"] - }, - "text/x-suse-ymp": { - "compressible": true, - "extensions": ["ymp"] - }, - "text/x-uuencode": { - "source": "apache", - "extensions": ["uu"] - }, - "text/x-vcalendar": { - "source": "apache", - "extensions": ["vcs"] - }, - "text/x-vcard": { - "source": "apache", - "extensions": ["vcf"] - }, - "text/xml": { - "source": "iana", - "compressible": true, - "extensions": ["xml"] - }, - "text/xml-external-parsed-entity": { - "source": "iana" - }, - "text/yaml": { - "extensions": ["yaml","yml"] - }, - "video/1d-interleaved-parityfec": { - "source": "iana" - }, - "video/3gpp": { - "source": "iana", - "extensions": ["3gp","3gpp"] - }, - "video/3gpp-tt": { - "source": "iana" - }, - "video/3gpp2": { - "source": "iana", - "extensions": ["3g2"] - }, - "video/bmpeg": { - "source": "iana" - }, - "video/bt656": { - "source": "iana" - }, - "video/celb": { - "source": "iana" - }, - "video/dv": { - "source": "iana" - }, - "video/encaprtp": { - "source": "iana" - }, - "video/h261": { - "source": "iana", - "extensions": ["h261"] - }, - "video/h263": { - "source": "iana", - "extensions": ["h263"] - }, - "video/h263-1998": { - "source": "iana" - }, - "video/h263-2000": { - "source": "iana" - }, - "video/h264": { - "source": "iana", - "extensions": ["h264"] - }, - "video/h264-rcdo": { - "source": "iana" - }, - "video/h264-svc": { - "source": "iana" - }, - "video/h265": { - "source": "iana" - }, - "video/iso.segment": { - "source": "iana" - }, - "video/jpeg": { - "source": "iana", - "extensions": ["jpgv"] - }, - "video/jpeg2000": { - "source": "iana" - }, - "video/jpm": { - "source": "apache", - "extensions": ["jpm","jpgm"] - }, - "video/mj2": { - "source": "iana", - "extensions": ["mj2","mjp2"] - }, - "video/mp1s": { - "source": "iana" - }, - "video/mp2p": { - "source": "iana" - }, - "video/mp2t": { - "source": "iana", - "extensions": ["ts"] - }, - "video/mp4": { - "source": "iana", - "compressible": false, - "extensions": ["mp4","mp4v","mpg4"] - }, - "video/mp4v-es": { - "source": "iana" - }, - "video/mpeg": { - "source": "iana", - "compressible": false, - "extensions": ["mpeg","mpg","mpe","m1v","m2v"] - }, - "video/mpeg4-generic": { - "source": "iana" - }, - "video/mpv": { - "source": "iana" - }, - "video/nv": { - "source": "iana" - }, - "video/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["ogv"] - }, - "video/parityfec": { - "source": "iana" - }, - "video/pointer": { - "source": "iana" - }, - "video/quicktime": { - "source": "iana", - "compressible": false, - "extensions": ["qt","mov"] - }, - "video/raptorfec": { - "source": "iana" - }, - "video/raw": { - "source": "iana" - }, - "video/rtp-enc-aescm128": { - "source": "iana" - }, - "video/rtploopback": { - "source": "iana" - }, - "video/rtx": { - "source": "iana" - }, - "video/smpte291": { - "source": "iana" - }, - "video/smpte292m": { - "source": "iana" - }, - "video/ulpfec": { - "source": "iana" - }, - "video/vc1": { - "source": "iana" - }, - "video/vnd.cctv": { - "source": "iana" - }, - "video/vnd.dece.hd": { - "source": "iana", - "extensions": ["uvh","uvvh"] - }, - "video/vnd.dece.mobile": { - "source": "iana", - "extensions": ["uvm","uvvm"] - }, - "video/vnd.dece.mp4": { - "source": "iana" - }, - "video/vnd.dece.pd": { - "source": "iana", - "extensions": ["uvp","uvvp"] - }, - "video/vnd.dece.sd": { - "source": "iana", - "extensions": ["uvs","uvvs"] - }, - "video/vnd.dece.video": { - "source": "iana", - "extensions": ["uvv","uvvv"] - }, - "video/vnd.directv.mpeg": { - "source": "iana" - }, - "video/vnd.directv.mpeg-tts": { - "source": "iana" - }, - "video/vnd.dlna.mpeg-tts": { - "source": "iana" - }, - "video/vnd.dvb.file": { - "source": "iana", - "extensions": ["dvb"] - }, - "video/vnd.fvt": { - "source": "iana", - "extensions": ["fvt"] - }, - "video/vnd.hns.video": { - "source": "iana" - }, - "video/vnd.iptvforum.1dparityfec-1010": { - "source": "iana" - }, - "video/vnd.iptvforum.1dparityfec-2005": { - "source": "iana" - }, - "video/vnd.iptvforum.2dparityfec-1010": { - "source": "iana" - }, - "video/vnd.iptvforum.2dparityfec-2005": { - "source": "iana" - }, - "video/vnd.iptvforum.ttsavc": { - "source": "iana" - }, - "video/vnd.iptvforum.ttsmpeg2": { - "source": "iana" - }, - "video/vnd.motorola.video": { - "source": "iana" - }, - "video/vnd.motorola.videop": { - "source": "iana" - }, - "video/vnd.mpegurl": { - "source": "iana", - "extensions": ["mxu","m4u"] - }, - "video/vnd.ms-playready.media.pyv": { - "source": "iana", - "extensions": ["pyv"] - }, - "video/vnd.nokia.interleaved-multimedia": { - "source": "iana" - }, - "video/vnd.nokia.mp4vr": { - "source": "iana" - }, - "video/vnd.nokia.videovoip": { - "source": "iana" - }, - "video/vnd.objectvideo": { - "source": "iana" - }, - "video/vnd.radgamettools.bink": { - "source": "iana" - }, - "video/vnd.radgamettools.smacker": { - "source": "iana" - }, - "video/vnd.sealed.mpeg1": { - "source": "iana" - }, - "video/vnd.sealed.mpeg4": { - "source": "iana" - }, - "video/vnd.sealed.swf": { - "source": "iana" - }, - "video/vnd.sealedmedia.softseal.mov": { - "source": "iana" - }, - "video/vnd.uvvu.mp4": { - "source": "iana", - "extensions": ["uvu","uvvu"] - }, - "video/vnd.vivo": { - "source": "iana", - "extensions": ["viv"] - }, - "video/vp8": { - "source": "iana" - }, - "video/webm": { - "source": "apache", - "compressible": false, - "extensions": ["webm"] - }, - "video/x-f4v": { - "source": "apache", - "extensions": ["f4v"] - }, - "video/x-fli": { - "source": "apache", - "extensions": ["fli"] - }, - "video/x-flv": { - "source": "apache", - "compressible": false, - "extensions": ["flv"] - }, - "video/x-m4v": { - "source": "apache", - "extensions": ["m4v"] - }, - "video/x-matroska": { - "source": "apache", - "compressible": false, - "extensions": ["mkv","mk3d","mks"] - }, - "video/x-mng": { - "source": "apache", - "extensions": ["mng"] - }, - "video/x-ms-asf": { - "source": "apache", - "extensions": ["asf","asx"] - }, - "video/x-ms-vob": { - "source": "apache", - "extensions": ["vob"] - }, - "video/x-ms-wm": { - "source": "apache", - "extensions": ["wm"] - }, - "video/x-ms-wmv": { - "source": "apache", - "compressible": false, - "extensions": ["wmv"] - }, - "video/x-ms-wmx": { - "source": "apache", - "extensions": ["wmx"] - }, - "video/x-ms-wvx": { - "source": "apache", - "extensions": ["wvx"] - }, - "video/x-msvideo": { - "source": "apache", - "extensions": ["avi"] - }, - "video/x-sgi-movie": { - "source": "apache", - "extensions": ["movie"] - }, - "video/x-smv": { - "source": "apache", - "extensions": ["smv"] - }, - "x-conference/x-cooltalk": { - "source": "apache", - "extensions": ["ice"] - }, - "x-shader/x-fragment": { - "compressible": true - }, - "x-shader/x-vertex": { - "compressible": true - } -} - -},{}],3:[function(require,module,exports){ -/*! - * mime-db - * Copyright(c) 2014 Jonathan Ong - * MIT Licensed - */ - -/** - * Module exports. - */ - -module.exports = require('./db.json') - -},{"./db.json":2}],4:[function(require,module,exports){ -/*! - * mime-types - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var db = require('mime-db') -var extname = require('path').extname - -/** - * Module variables. - * @private - */ - -var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ -var TEXT_TYPE_REGEXP = /^text\//i - -/** - * Module exports. - * @public - */ - -exports.charset = charset -exports.charsets = { lookup: charset } -exports.contentType = contentType -exports.extension = extension -exports.extensions = Object.create(null) -exports.lookup = lookup -exports.types = Object.create(null) - -// Populate the extensions/types maps -populateMaps(exports.extensions, exports.types) - -/** - * Get the default charset for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - -function charset (type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = EXTRACT_TYPE_REGEXP.exec(type) - var mime = match && db[match[1].toLowerCase()] - - if (mime && mime.charset) { - return mime.charset - } - - // default text/* to utf-8 - if (match && TEXT_TYPE_REGEXP.test(match[1])) { - return 'UTF-8' - } - - return false -} - -/** - * Create a full Content-Type header given a MIME type or extension. - * - * @param {string} str - * @return {boolean|string} - */ - -function contentType (str) { - // TODO: should this even be in this module? - if (!str || typeof str !== 'string') { - return false - } - - var mime = str.indexOf('/') === -1 - ? exports.lookup(str) - : str - - if (!mime) { - return false - } - - // TODO: use content-type or other module - if (mime.indexOf('charset') === -1) { - var charset = exports.charset(mime) - if (charset) mime += '; charset=' + charset.toLowerCase() - } - - return mime -} - -/** - * Get the default extension for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - -function extension (type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = EXTRACT_TYPE_REGEXP.exec(type) - - // get extensions - var exts = match && exports.extensions[match[1].toLowerCase()] - - if (!exts || !exts.length) { - return false - } - - return exts[0] -} - -/** - * Lookup the MIME type for a file path/extension. - * - * @param {string} path - * @return {boolean|string} - */ - -function lookup (path) { - if (!path || typeof path !== 'string') { - return false - } - - // get the extension ("ext" or ".ext" or full path) - var extension = extname('x.' + path) - .toLowerCase() - .substr(1) - - if (!extension) { - return false - } - - return exports.types[extension] || false -} - -/** - * Populate the extensions and types maps. - * @private - */ - -function populateMaps (extensions, types) { - // source preference (least -> most) - var preference = ['nginx', 'apache', undefined, 'iana'] - - Object.keys(db).forEach(function forEachMimeType (type) { - var mime = db[type] - var exts = mime.extensions - - if (!exts || !exts.length) { - return - } - - // mime -> extensions - extensions[type] = exts - - // extension -> mime - for (var i = 0; i < exts.length; i++) { - var extension = exts[i] - - if (types[extension]) { - var from = preference.indexOf(db[types[extension]].source) - var to = preference.indexOf(mime.source) - - if (types[extension] !== 'application/octet-stream' && - (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) { - // skip the remapping - continue - } - } - - // set the extension -> mime - types[extension] = type - } - }) -} - -},{"mime-db":3,"path":undefined}],5:[function(require,module,exports){ -var ADDR_RE = /^\[?([^\]]+)\]?:(\d+)$/ // ipv4/ipv6/hostname + port - -var cache = {} - -// reset cache when it gets to 100,000 elements (~ 600KB of ipv4 addresses) -// so it will not grow to consume all memory in long-running processes -var size = 0 - -module.exports = function addrToIPPort (addr) { - if (size === 100000) module.exports.reset() - if (!cache[addr]) { - var m = ADDR_RE.exec(addr) - if (!m) throw new Error('invalid addr: ' + addr) - cache[addr] = [ m[1], Number(m[2]) ] - size += 1 - } - return cache[addr] -} - -module.exports.reset = function reset () { - cache = {} - size = 0 -} - -},{}],6:[function(require,module,exports){ -'use strict' - -/** - * Expose `arrayFlatten`. - */ -module.exports = flatten -module.exports.from = flattenFrom -module.exports.depth = flattenDepth -module.exports.fromDepth = flattenFromDepth - -/** - * Flatten an array. - * - * @param {Array} array - * @return {Array} - */ -function flatten (array) { - if (!Array.isArray(array)) { - throw new TypeError('Expected value to be an array') - } - - return flattenFrom(array) -} - -/** - * Flatten an array-like structure. - * - * @param {Array} array - * @return {Array} - */ -function flattenFrom (array) { - return flattenDown(array, []) -} - -/** - * Flatten an array-like structure with depth. - * - * @param {Array} array - * @param {number} depth - * @return {Array} - */ -function flattenDepth (array, depth) { - if (!Array.isArray(array)) { - throw new TypeError('Expected value to be an array') - } - - return flattenFromDepth(array, depth) -} - -/** - * Flatten an array-like structure with depth. - * - * @param {Array} array - * @param {number} depth - * @return {Array} - */ -function flattenFromDepth (array, depth) { - if (typeof depth !== 'number') { - throw new TypeError('Expected the depth to be a number') - } - - return flattenDownDepth(array, [], depth) -} - -/** - * Flatten an array indefinitely. - * - * @param {Array} array - * @param {Array} result - * @return {Array} - */ -function flattenDown (array, result) { - for (var i = 0; i < array.length; i++) { - var value = array[i] - - if (Array.isArray(value)) { - flattenDown(value, result) - } else { - result.push(value) - } - } - - return result -} - -/** - * Flatten an array with depth. - * - * @param {Array} array - * @param {Array} result - * @param {number} depth - * @return {Array} - */ -function flattenDownDepth (array, result, depth) { - depth-- - - for (var i = 0; i < array.length; i++) { - var value = array[i] - - if (depth > -1 && Array.isArray(value)) { - flattenDownDepth(value, result, depth) - } else { - result.push(value) - } - } - - return result -} - -},{}],7:[function(require,module,exports){ -/*! - * async - * https://github.com/caolan/async - * - * Copyright 2010-2014 Caolan McMahon - * Released under the MIT license - */ -(function () { - - var async = {}; - function noop() {} - function identity(v) { - return v; - } - function toBool(v) { - return !!v; - } - function notId(v) { - return !v; - } - - // global on the server, window in the browser - var previous_async; - - // Establish the root object, `window` (`self`) in the browser, `global` - // on the server, or `this` in some virtual machines. We use `self` - // instead of `window` for `WebWorker` support. - var root = typeof self === 'object' && self.self === self && self || - typeof global === 'object' && global.global === global && global || - this; - - if (root != null) { - previous_async = root.async; - } - - async.noConflict = function () { - root.async = previous_async; - return async; - }; - - function only_once(fn) { - return function() { - if (fn === null) throw new Error("Callback was already called."); - fn.apply(this, arguments); - fn = null; - }; - } - - function _once(fn) { - return function() { - if (fn === null) return; - fn.apply(this, arguments); - fn = null; - }; - } - - //// cross-browser compatiblity functions //// - - var _toString = Object.prototype.toString; - - var _isArray = Array.isArray || function (obj) { - return _toString.call(obj) === '[object Array]'; - }; - - // Ported from underscore.js isObject - var _isObject = function(obj) { - var type = typeof obj; - return type === 'function' || type === 'object' && !!obj; - }; - - function _isArrayLike(arr) { - return _isArray(arr) || ( - // has a positive integer length property - typeof arr.length === "number" && - arr.length >= 0 && - arr.length % 1 === 0 - ); - } - - function _arrayEach(arr, iterator) { - var index = -1, - length = arr.length; - - while (++index < length) { - iterator(arr[index], index, arr); - } - } - - function _map(arr, iterator) { - var index = -1, - length = arr.length, - result = Array(length); - - while (++index < length) { - result[index] = iterator(arr[index], index, arr); - } - return result; - } - - function _range(count) { - return _map(Array(count), function (v, i) { return i; }); - } - - function _reduce(arr, iterator, memo) { - _arrayEach(arr, function (x, i, a) { - memo = iterator(memo, x, i, a); - }); - return memo; - } - - function _forEachOf(object, iterator) { - _arrayEach(_keys(object), function (key) { - iterator(object[key], key); - }); - } - - function _indexOf(arr, item) { - for (var i = 0; i < arr.length; i++) { - if (arr[i] === item) return i; - } - return -1; - } - - var _keys = Object.keys || function (obj) { - var keys = []; - for (var k in obj) { - if (obj.hasOwnProperty(k)) { - keys.push(k); - } - } - return keys; - }; - - function _keyIterator(coll) { - var i = -1; - var len; - var keys; - if (_isArrayLike(coll)) { - len = coll.length; - return function next() { - i++; - return i < len ? i : null; - }; - } else { - keys = _keys(coll); - len = keys.length; - return function next() { - i++; - return i < len ? keys[i] : null; - }; - } - } - - // Similar to ES6's rest param (http://ariya.ofilabs.com/2013/03/es6-and-rest-parameter.html) - // This accumulates the arguments passed into an array, after a given index. - // From underscore.js (https://github.com/jashkenas/underscore/pull/2140). - function _restParam(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0); - var rest = Array(length); - for (var index = 0; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - } - // Currently unused but handle cases outside of the switch statement: - // var args = Array(startIndex + 1); - // for (index = 0; index < startIndex; index++) { - // args[index] = arguments[index]; - // } - // args[startIndex] = rest; - // return func.apply(this, args); - }; - } - - function _withoutIndex(iterator) { - return function (value, index, callback) { - return iterator(value, callback); - }; - } - - //// exported async module functions //// - - //// nextTick implementation with browser-compatible fallback //// - - // capture the global reference to guard against fakeTimer mocks - var _setImmediate = typeof setImmediate === 'function' && setImmediate; - - var _delay = _setImmediate ? function(fn) { - // not a direct alias for IE10 compatibility - _setImmediate(fn); - } : function(fn) { - setTimeout(fn, 0); - }; - - if (typeof process === 'object' && typeof process.nextTick === 'function') { - async.nextTick = process.nextTick; - } else { - async.nextTick = _delay; - } - async.setImmediate = _setImmediate ? _delay : async.nextTick; - - - async.forEach = - async.each = function (arr, iterator, callback) { - return async.eachOf(arr, _withoutIndex(iterator), callback); - }; - - async.forEachSeries = - async.eachSeries = function (arr, iterator, callback) { - return async.eachOfSeries(arr, _withoutIndex(iterator), callback); - }; - - - async.forEachLimit = - async.eachLimit = function (arr, limit, iterator, callback) { - return _eachOfLimit(limit)(arr, _withoutIndex(iterator), callback); - }; - - async.forEachOf = - async.eachOf = function (object, iterator, callback) { - callback = _once(callback || noop); - object = object || []; - - var iter = _keyIterator(object); - var key, completed = 0; - - while ((key = iter()) != null) { - completed += 1; - iterator(object[key], key, only_once(done)); - } - - if (completed === 0) callback(null); - - function done(err) { - completed--; - if (err) { - callback(err); - } - // Check key is null in case iterator isn't exhausted - // and done resolved synchronously. - else if (key === null && completed <= 0) { - callback(null); - } - } - }; - - async.forEachOfSeries = - async.eachOfSeries = function (obj, iterator, callback) { - callback = _once(callback || noop); - obj = obj || []; - var nextKey = _keyIterator(obj); - var key = nextKey(); - function iterate() { - var sync = true; - if (key === null) { - return callback(null); - } - iterator(obj[key], key, only_once(function (err) { - if (err) { - callback(err); - } - else { - key = nextKey(); - if (key === null) { - return callback(null); - } else { - if (sync) { - async.setImmediate(iterate); - } else { - iterate(); - } - } - } - })); - sync = false; - } - iterate(); - }; - - - - async.forEachOfLimit = - async.eachOfLimit = function (obj, limit, iterator, callback) { - _eachOfLimit(limit)(obj, iterator, callback); - }; - - function _eachOfLimit(limit) { - - return function (obj, iterator, callback) { - callback = _once(callback || noop); - obj = obj || []; - var nextKey = _keyIterator(obj); - if (limit <= 0) { - return callback(null); - } - var done = false; - var running = 0; - var errored = false; - - (function replenish () { - if (done && running <= 0) { - return callback(null); - } - - while (running < limit && !errored) { - var key = nextKey(); - if (key === null) { - done = true; - if (running <= 0) { - callback(null); - } - return; - } - running += 1; - iterator(obj[key], key, only_once(function (err) { - running -= 1; - if (err) { - callback(err); - errored = true; - } - else { - replenish(); - } - })); - } - })(); - }; - } - - - function doParallel(fn) { - return function (obj, iterator, callback) { - return fn(async.eachOf, obj, iterator, callback); - }; - } - function doParallelLimit(fn) { - return function (obj, limit, iterator, callback) { - return fn(_eachOfLimit(limit), obj, iterator, callback); - }; - } - function doSeries(fn) { - return function (obj, iterator, callback) { - return fn(async.eachOfSeries, obj, iterator, callback); - }; - } - - function _asyncMap(eachfn, arr, iterator, callback) { - callback = _once(callback || noop); - arr = arr || []; - var results = _isArrayLike(arr) ? [] : {}; - eachfn(arr, function (value, index, callback) { - iterator(value, function (err, v) { - results[index] = v; - callback(err); - }); - }, function (err) { - callback(err, results); - }); - } - - async.map = doParallel(_asyncMap); - async.mapSeries = doSeries(_asyncMap); - async.mapLimit = doParallelLimit(_asyncMap); - - // reduce only has a series version, as doing reduce in parallel won't - // work in many situations. - async.inject = - async.foldl = - async.reduce = function (arr, memo, iterator, callback) { - async.eachOfSeries(arr, function (x, i, callback) { - iterator(memo, x, function (err, v) { - memo = v; - callback(err); - }); - }, function (err) { - callback(err, memo); - }); - }; - - async.foldr = - async.reduceRight = function (arr, memo, iterator, callback) { - var reversed = _map(arr, identity).reverse(); - async.reduce(reversed, memo, iterator, callback); - }; - - async.transform = function (arr, memo, iterator, callback) { - if (arguments.length === 3) { - callback = iterator; - iterator = memo; - memo = _isArray(arr) ? [] : {}; - } - - async.eachOf(arr, function(v, k, cb) { - iterator(memo, v, k, cb); - }, function(err) { - callback(err, memo); - }); - }; - - function _filter(eachfn, arr, iterator, callback) { - var results = []; - eachfn(arr, function (x, index, callback) { - iterator(x, function (v) { - if (v) { - results.push({index: index, value: x}); - } - callback(); - }); - }, function () { - callback(_map(results.sort(function (a, b) { - return a.index - b.index; - }), function (x) { - return x.value; - })); - }); - } - - async.select = - async.filter = doParallel(_filter); - - async.selectLimit = - async.filterLimit = doParallelLimit(_filter); - - async.selectSeries = - async.filterSeries = doSeries(_filter); - - function _reject(eachfn, arr, iterator, callback) { - _filter(eachfn, arr, function(value, cb) { - iterator(value, function(v) { - cb(!v); - }); - }, callback); - } - async.reject = doParallel(_reject); - async.rejectLimit = doParallelLimit(_reject); - async.rejectSeries = doSeries(_reject); - - function _createTester(eachfn, check, getResult) { - return function(arr, limit, iterator, cb) { - function done() { - if (cb) cb(getResult(false, void 0)); - } - function iteratee(x, _, callback) { - if (!cb) return callback(); - iterator(x, function (v) { - if (cb && check(v)) { - cb(getResult(true, x)); - cb = iterator = false; - } - callback(); - }); - } - if (arguments.length > 3) { - eachfn(arr, limit, iteratee, done); - } else { - cb = iterator; - iterator = limit; - eachfn(arr, iteratee, done); - } - }; - } - - async.any = - async.some = _createTester(async.eachOf, toBool, identity); - - async.someLimit = _createTester(async.eachOfLimit, toBool, identity); - - async.all = - async.every = _createTester(async.eachOf, notId, notId); - - async.everyLimit = _createTester(async.eachOfLimit, notId, notId); - - function _findGetResult(v, x) { - return x; - } - async.detect = _createTester(async.eachOf, identity, _findGetResult); - async.detectSeries = _createTester(async.eachOfSeries, identity, _findGetResult); - async.detectLimit = _createTester(async.eachOfLimit, identity, _findGetResult); - - async.sortBy = function (arr, iterator, callback) { - async.map(arr, function (x, callback) { - iterator(x, function (err, criteria) { - if (err) { - callback(err); - } - else { - callback(null, {value: x, criteria: criteria}); - } - }); - }, function (err, results) { - if (err) { - return callback(err); - } - else { - callback(null, _map(results.sort(comparator), function (x) { - return x.value; - })); - } - - }); - - function comparator(left, right) { - var a = left.criteria, b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - } - }; - - async.auto = function (tasks, concurrency, callback) { - if (typeof arguments[1] === 'function') { - // concurrency is optional, shift the args. - callback = concurrency; - concurrency = null; - } - callback = _once(callback || noop); - var keys = _keys(tasks); - var remainingTasks = keys.length; - if (!remainingTasks) { - return callback(null); - } - if (!concurrency) { - concurrency = remainingTasks; - } - - var results = {}; - var runningTasks = 0; - - var hasError = false; - - var listeners = []; - function addListener(fn) { - listeners.unshift(fn); - } - function removeListener(fn) { - var idx = _indexOf(listeners, fn); - if (idx >= 0) listeners.splice(idx, 1); - } - function taskComplete() { - remainingTasks--; - _arrayEach(listeners.slice(0), function (fn) { - fn(); - }); - } - - addListener(function () { - if (!remainingTasks) { - callback(null, results); - } - }); - - _arrayEach(keys, function (k) { - if (hasError) return; - var task = _isArray(tasks[k]) ? tasks[k]: [tasks[k]]; - var taskCallback = _restParam(function(err, args) { - runningTasks--; - if (args.length <= 1) { - args = args[0]; - } - if (err) { - var safeResults = {}; - _forEachOf(results, function(val, rkey) { - safeResults[rkey] = val; - }); - safeResults[k] = args; - hasError = true; - - callback(err, safeResults); - } - else { - results[k] = args; - async.setImmediate(taskComplete); - } - }); - var requires = task.slice(0, task.length - 1); - // prevent dead-locks - var len = requires.length; - var dep; - while (len--) { - if (!(dep = tasks[requires[len]])) { - throw new Error('Has nonexistent dependency in ' + requires.join(', ')); - } - if (_isArray(dep) && _indexOf(dep, k) >= 0) { - throw new Error('Has cyclic dependencies'); - } - } - function ready() { - return runningTasks < concurrency && _reduce(requires, function (a, x) { - return (a && results.hasOwnProperty(x)); - }, true) && !results.hasOwnProperty(k); - } - if (ready()) { - runningTasks++; - task[task.length - 1](taskCallback, results); - } - else { - addListener(listener); - } - function listener() { - if (ready()) { - runningTasks++; - removeListener(listener); - task[task.length - 1](taskCallback, results); - } - } - }); - }; - - - - async.retry = function(times, task, callback) { - var DEFAULT_TIMES = 5; - var DEFAULT_INTERVAL = 0; - - var attempts = []; - - var opts = { - times: DEFAULT_TIMES, - interval: DEFAULT_INTERVAL - }; - - function parseTimes(acc, t){ - if(typeof t === 'number'){ - acc.times = parseInt(t, 10) || DEFAULT_TIMES; - } else if(typeof t === 'object'){ - acc.times = parseInt(t.times, 10) || DEFAULT_TIMES; - acc.interval = parseInt(t.interval, 10) || DEFAULT_INTERVAL; - } else { - throw new Error('Unsupported argument type for \'times\': ' + typeof t); - } - } - - var length = arguments.length; - if (length < 1 || length > 3) { - throw new Error('Invalid arguments - must be either (task), (task, callback), (times, task) or (times, task, callback)'); - } else if (length <= 2 && typeof times === 'function') { - callback = task; - task = times; - } - if (typeof times !== 'function') { - parseTimes(opts, times); - } - opts.callback = callback; - opts.task = task; - - function wrappedTask(wrappedCallback, wrappedResults) { - function retryAttempt(task, finalAttempt) { - return function(seriesCallback) { - task(function(err, result){ - seriesCallback(!err || finalAttempt, {err: err, result: result}); - }, wrappedResults); - }; - } - - function retryInterval(interval){ - return function(seriesCallback){ - setTimeout(function(){ - seriesCallback(null); - }, interval); - }; - } - - while (opts.times) { - - var finalAttempt = !(opts.times-=1); - attempts.push(retryAttempt(opts.task, finalAttempt)); - if(!finalAttempt && opts.interval > 0){ - attempts.push(retryInterval(opts.interval)); - } - } - - async.series(attempts, function(done, data){ - data = data[data.length - 1]; - (wrappedCallback || opts.callback)(data.err, data.result); - }); - } - - // If a callback is passed, run this as a controll flow - return opts.callback ? wrappedTask() : wrappedTask; - }; - - async.waterfall = function (tasks, callback) { - callback = _once(callback || noop); - if (!_isArray(tasks)) { - var err = new Error('First argument to waterfall must be an array of functions'); - return callback(err); - } - if (!tasks.length) { - return callback(); - } - function wrapIterator(iterator) { - return _restParam(function (err, args) { - if (err) { - callback.apply(null, [err].concat(args)); - } - else { - var next = iterator.next(); - if (next) { - args.push(wrapIterator(next)); - } - else { - args.push(callback); - } - ensureAsync(iterator).apply(null, args); - } - }); - } - wrapIterator(async.iterator(tasks))(); - }; - - function _parallel(eachfn, tasks, callback) { - callback = callback || noop; - var results = _isArrayLike(tasks) ? [] : {}; - - eachfn(tasks, function (task, key, callback) { - task(_restParam(function (err, args) { - if (args.length <= 1) { - args = args[0]; - } - results[key] = args; - callback(err); - })); - }, function (err) { - callback(err, results); - }); - } - - async.parallel = function (tasks, callback) { - _parallel(async.eachOf, tasks, callback); - }; - - async.parallelLimit = function(tasks, limit, callback) { - _parallel(_eachOfLimit(limit), tasks, callback); - }; - - async.series = function(tasks, callback) { - _parallel(async.eachOfSeries, tasks, callback); - }; - - async.iterator = function (tasks) { - function makeCallback(index) { - function fn() { - if (tasks.length) { - tasks[index].apply(null, arguments); - } - return fn.next(); - } - fn.next = function () { - return (index < tasks.length - 1) ? makeCallback(index + 1): null; - }; - return fn; - } - return makeCallback(0); - }; - - async.apply = _restParam(function (fn, args) { - return _restParam(function (callArgs) { - return fn.apply( - null, args.concat(callArgs) - ); - }); - }); - - function _concat(eachfn, arr, fn, callback) { - var result = []; - eachfn(arr, function (x, index, cb) { - fn(x, function (err, y) { - result = result.concat(y || []); - cb(err); - }); - }, function (err) { - callback(err, result); - }); - } - async.concat = doParallel(_concat); - async.concatSeries = doSeries(_concat); - - async.whilst = function (test, iterator, callback) { - callback = callback || noop; - if (test()) { - var next = _restParam(function(err, args) { - if (err) { - callback(err); - } else if (test.apply(this, args)) { - iterator(next); - } else { - callback.apply(null, [null].concat(args)); - } - }); - iterator(next); - } else { - callback(null); - } - }; - - async.doWhilst = function (iterator, test, callback) { - var calls = 0; - return async.whilst(function() { - return ++calls <= 1 || test.apply(this, arguments); - }, iterator, callback); - }; - - async.until = function (test, iterator, callback) { - return async.whilst(function() { - return !test.apply(this, arguments); - }, iterator, callback); - }; - - async.doUntil = function (iterator, test, callback) { - return async.doWhilst(iterator, function() { - return !test.apply(this, arguments); - }, callback); - }; - - async.during = function (test, iterator, callback) { - callback = callback || noop; - - var next = _restParam(function(err, args) { - if (err) { - callback(err); - } else { - args.push(check); - test.apply(this, args); - } - }); - - var check = function(err, truth) { - if (err) { - callback(err); - } else if (truth) { - iterator(next); - } else { - callback(null); - } - }; - - test(check); - }; - - async.doDuring = function (iterator, test, callback) { - var calls = 0; - async.during(function(next) { - if (calls++ < 1) { - next(null, true); - } else { - test.apply(this, arguments); - } - }, iterator, callback); - }; - - function _queue(worker, concurrency, payload) { - if (concurrency == null) { - concurrency = 1; - } - else if(concurrency === 0) { - throw new Error('Concurrency must not be zero'); - } - function _insert(q, data, pos, callback) { - if (callback != null && typeof callback !== "function") { - throw new Error("task callback must be a function"); - } - q.started = true; - if (!_isArray(data)) { - data = [data]; - } - if(data.length === 0 && q.idle()) { - // call drain immediately if there are no tasks - return async.setImmediate(function() { - q.drain(); - }); - } - _arrayEach(data, function(task) { - var item = { - data: task, - callback: callback || noop - }; - - if (pos) { - q.tasks.unshift(item); - } else { - q.tasks.push(item); - } - - if (q.tasks.length === q.concurrency) { - q.saturated(); - } - }); - async.setImmediate(q.process); - } - function _next(q, tasks) { - return function(){ - workers -= 1; - - var removed = false; - var args = arguments; - _arrayEach(tasks, function (task) { - _arrayEach(workersList, function (worker, index) { - if (worker === task && !removed) { - workersList.splice(index, 1); - removed = true; - } - }); - - task.callback.apply(task, args); - }); - if (q.tasks.length + workers === 0) { - q.drain(); - } - q.process(); - }; - } - - var workers = 0; - var workersList = []; - var q = { - tasks: [], - concurrency: concurrency, - payload: payload, - saturated: noop, - empty: noop, - drain: noop, - started: false, - paused: false, - push: function (data, callback) { - _insert(q, data, false, callback); - }, - kill: function () { - q.drain = noop; - q.tasks = []; - }, - unshift: function (data, callback) { - _insert(q, data, true, callback); - }, - process: function () { - while(!q.paused && workers < q.concurrency && q.tasks.length){ - - var tasks = q.payload ? - q.tasks.splice(0, q.payload) : - q.tasks.splice(0, q.tasks.length); - - var data = _map(tasks, function (task) { - return task.data; - }); - - if (q.tasks.length === 0) { - q.empty(); - } - workers += 1; - workersList.push(tasks[0]); - var cb = only_once(_next(q, tasks)); - worker(data, cb); - } - }, - length: function () { - return q.tasks.length; - }, - running: function () { - return workers; - }, - workersList: function () { - return workersList; - }, - idle: function() { - return q.tasks.length + workers === 0; - }, - pause: function () { - q.paused = true; - }, - resume: function () { - if (q.paused === false) { return; } - q.paused = false; - var resumeCount = Math.min(q.concurrency, q.tasks.length); - // Need to call q.process once per concurrent - // worker to preserve full concurrency after pause - for (var w = 1; w <= resumeCount; w++) { - async.setImmediate(q.process); - } - } - }; - return q; - } - - async.queue = function (worker, concurrency) { - var q = _queue(function (items, cb) { - worker(items[0], cb); - }, concurrency, 1); - - return q; - }; - - async.priorityQueue = function (worker, concurrency) { - - function _compareTasks(a, b){ - return a.priority - b.priority; - } - - function _binarySearch(sequence, item, compare) { - var beg = -1, - end = sequence.length - 1; - while (beg < end) { - var mid = beg + ((end - beg + 1) >>> 1); - if (compare(item, sequence[mid]) >= 0) { - beg = mid; - } else { - end = mid - 1; - } - } - return beg; - } - - function _insert(q, data, priority, callback) { - if (callback != null && typeof callback !== "function") { - throw new Error("task callback must be a function"); - } - q.started = true; - if (!_isArray(data)) { - data = [data]; - } - if(data.length === 0) { - // call drain immediately if there are no tasks - return async.setImmediate(function() { - q.drain(); - }); - } - _arrayEach(data, function(task) { - var item = { - data: task, - priority: priority, - callback: typeof callback === 'function' ? callback : noop - }; - - q.tasks.splice(_binarySearch(q.tasks, item, _compareTasks) + 1, 0, item); - - if (q.tasks.length === q.concurrency) { - q.saturated(); - } - async.setImmediate(q.process); - }); - } - - // Start with a normal queue - var q = async.queue(worker, concurrency); - - // Override push to accept second parameter representing priority - q.push = function (data, priority, callback) { - _insert(q, data, priority, callback); - }; - - // Remove unshift function - delete q.unshift; - - return q; - }; - - async.cargo = function (worker, payload) { - return _queue(worker, 1, payload); - }; - - function _console_fn(name) { - return _restParam(function (fn, args) { - fn.apply(null, args.concat([_restParam(function (err, args) { - if (typeof console === 'object') { - if (err) { - if (console.error) { - console.error(err); - } - } - else if (console[name]) { - _arrayEach(args, function (x) { - console[name](x); - }); - } - } - })])); - }); - } - async.log = _console_fn('log'); - async.dir = _console_fn('dir'); - /*async.info = _console_fn('info'); - async.warn = _console_fn('warn'); - async.error = _console_fn('error');*/ - - async.memoize = function (fn, hasher) { - var memo = {}; - var queues = {}; - var has = Object.prototype.hasOwnProperty; - hasher = hasher || identity; - var memoized = _restParam(function memoized(args) { - var callback = args.pop(); - var key = hasher.apply(null, args); - if (has.call(memo, key)) { - async.setImmediate(function () { - callback.apply(null, memo[key]); - }); - } - else if (has.call(queues, key)) { - queues[key].push(callback); - } - else { - queues[key] = [callback]; - fn.apply(null, args.concat([_restParam(function (args) { - memo[key] = args; - var q = queues[key]; - delete queues[key]; - for (var i = 0, l = q.length; i < l; i++) { - q[i].apply(null, args); - } - })])); - } - }); - memoized.memo = memo; - memoized.unmemoized = fn; - return memoized; - }; - - async.unmemoize = function (fn) { - return function () { - return (fn.unmemoized || fn).apply(null, arguments); - }; - }; - - function _times(mapper) { - return function (count, iterator, callback) { - mapper(_range(count), iterator, callback); - }; - } - - async.times = _times(async.map); - async.timesSeries = _times(async.mapSeries); - async.timesLimit = function (count, limit, iterator, callback) { - return async.mapLimit(_range(count), limit, iterator, callback); - }; - - async.seq = function (/* functions... */) { - var fns = arguments; - return _restParam(function (args) { - var that = this; - - var callback = args[args.length - 1]; - if (typeof callback == 'function') { - args.pop(); - } else { - callback = noop; - } - - async.reduce(fns, args, function (newargs, fn, cb) { - fn.apply(that, newargs.concat([_restParam(function (err, nextargs) { - cb(err, nextargs); - })])); - }, - function (err, results) { - callback.apply(that, [err].concat(results)); - }); - }); - }; - - async.compose = function (/* functions... */) { - return async.seq.apply(null, Array.prototype.reverse.call(arguments)); - }; - - - function _applyEach(eachfn) { - return _restParam(function(fns, args) { - var go = _restParam(function(args) { - var that = this; - var callback = args.pop(); - return eachfn(fns, function (fn, _, cb) { - fn.apply(that, args.concat([cb])); - }, - callback); - }); - if (args.length) { - return go.apply(this, args); - } - else { - return go; - } - }); - } - - async.applyEach = _applyEach(async.eachOf); - async.applyEachSeries = _applyEach(async.eachOfSeries); - - - async.forever = function (fn, callback) { - var done = only_once(callback || noop); - var task = ensureAsync(fn); - function next(err) { - if (err) { - return done(err); - } - task(next); - } - next(); - }; - - function ensureAsync(fn) { - return _restParam(function (args) { - var callback = args.pop(); - args.push(function () { - var innerArgs = arguments; - if (sync) { - async.setImmediate(function () { - callback.apply(null, innerArgs); - }); - } else { - callback.apply(null, innerArgs); - } - }); - var sync = true; - fn.apply(this, args); - sync = false; - }); - } - - async.ensureAsync = ensureAsync; - - async.constant = _restParam(function(values) { - var args = [null].concat(values); - return function (callback) { - return callback.apply(this, args); - }; - }); - - async.wrapSync = - async.asyncify = function asyncify(func) { - return _restParam(function (args) { - var callback = args.pop(); - var result; - try { - result = func.apply(this, args); - } catch (e) { - return callback(e); - } - // if result is Promise object - if (_isObject(result) && typeof result.then === "function") { - result.then(function(value) { - callback(null, value); - })["catch"](function(err) { - callback(err.message ? err : new Error(err)); - }); - } else { - callback(null, result); - } - }); - }; - - // Node.js - if (typeof module === 'object' && module.exports) { - module.exports = async; - } - // AMD / RequireJS - else if (typeof define === 'function' && define.amd) { - define([], function () { - return async; - }); - } - // included directly via ', '{'); - } catch (err) { - let args = findJSON('watch.html', 'player_response', body, /\bytplayer\.config\s*=\s*{/, '', '{'); - info.player_response = findPlayerResponse('watch.html', args); - } - info.response = findJSON('watch.html', 'response', body, /\bytInitialData("\])?\s*=\s*\{/i, '', '{'); - info.html5player = getHTML5player(body); - return info; -}; - - -const INFO_HOST = 'www.youtube.com'; -const INFO_PATH = '/get_video_info'; -const VIDEO_EURL = 'https://youtube.googleapis.com/v/'; -const getVideoInfoPage = async(id, options) => { - const url = new URL(`https://${INFO_HOST}${INFO_PATH}`); - url.searchParams.set('video_id', id); - url.searchParams.set('c', 'TVHTML5'); - url.searchParams.set('cver', `7${cver.substr(1)}`); - url.searchParams.set('eurl', VIDEO_EURL + id); - url.searchParams.set('ps', 'default'); - url.searchParams.set('gl', 'US'); - url.searchParams.set('hl', options.lang || 'en'); - url.searchParams.set('html5', '1'); - const body = await utils.exposedMiniget(url.toString(), options).text(); - let info = querystring.parse(body); - info.player_response = findPlayerResponse('get_video_info', info); - return info; -}; - - -/** - * @param {Object} player_response - * @returns {Array.} - */ -const parseFormats = player_response => { - let formats = []; - if (player_response && player_response.streamingData) { - formats = formats - .concat(player_response.streamingData.formats || []) - .concat(player_response.streamingData.adaptiveFormats || []); - } - return formats; -}; - - -/** - * Gets info from a video additional formats and deciphered URLs. - * - * @param {string} id - * @param {Object} options - * @returns {Promise} - */ -exports.getInfo = async(id, options) => { - let info = await exports.getBasicInfo(id, options); - const hasManifest = - info.player_response && info.player_response.streamingData && ( - info.player_response.streamingData.dashManifestUrl || - info.player_response.streamingData.hlsManifestUrl - ); - let funcs = []; - if (info.formats.length) { - info.html5player = info.html5player || - getHTML5player(await getWatchHTMLPageBody(id, options)) || getHTML5player(await getEmbedPageBody(id, options)); - if (!info.html5player) { - throw Error('Unable to find html5player file'); - } - const html5player = new URL(info.html5player, BASE_URL).toString(); - funcs.push(sig.decipherFormats(info.formats, html5player, options)); - } - if (hasManifest && info.player_response.streamingData.dashManifestUrl) { - let url = info.player_response.streamingData.dashManifestUrl; - funcs.push(getDashManifest(url, options)); - } - if (hasManifest && info.player_response.streamingData.hlsManifestUrl) { - let url = info.player_response.streamingData.hlsManifestUrl; - funcs.push(getM3U8(url, options)); - } - - let results = await Promise.all(funcs); - info.formats = Object.values(Object.assign({}, ...results)); - info.formats = info.formats.map(formatUtils.addFormatMeta); - info.formats.sort(formatUtils.sortFormats); - info.full = true; - return info; -}; - - -/** - * Gets additional DASH formats. - * - * @param {string} url - * @param {Object} options - * @returns {Promise>} - */ -const getDashManifest = (url, options) => new Promise((resolve, reject) => { - let formats = {}; - const parser = sax.parser(false); - parser.onerror = reject; - let adaptationSet; - parser.onopentag = node => { - if (node.name === 'ADAPTATIONSET') { - adaptationSet = node.attributes; - } else if (node.name === 'REPRESENTATION') { - const itag = parseInt(node.attributes.ID); - if (!isNaN(itag)) { - formats[url] = Object.assign({ - itag, url, - bitrate: parseInt(node.attributes.BANDWIDTH), - mimeType: `${adaptationSet.MIMETYPE}; codecs="${node.attributes.CODECS}"`, - }, node.attributes.HEIGHT ? { - width: parseInt(node.attributes.WIDTH), - height: parseInt(node.attributes.HEIGHT), - fps: parseInt(node.attributes.FRAMERATE), - } : { - audioSampleRate: node.attributes.AUDIOSAMPLINGRATE, - }); - } - } - }; - parser.onend = () => { resolve(formats); }; - const req = utils.exposedMiniget(new URL(url, BASE_URL).toString(), options); - req.setEncoding('utf8'); - req.on('error', reject); - req.on('data', chunk => { parser.write(chunk); }); - req.on('end', parser.close.bind(parser)); -}); - - -/** - * Gets additional formats. - * - * @param {string} url - * @param {Object} options - * @returns {Promise>} - */ -const getM3U8 = async(url, options) => { - url = new URL(url, BASE_URL); - const body = await utils.exposedMiniget(url.toString(), options).text(); - let formats = {}; - body - .split('\n') - .filter(line => /^https?:\/\//.test(line)) - .forEach(line => { - const itag = parseInt(line.match(/\/itag\/(\d+)\//)[1]); - formats[line] = { itag, url: line }; - }); - return formats; -}; - - -// Cache get info functions. -// In case a user wants to get a video's info before downloading. -for (let funcName of ['getBasicInfo', 'getInfo']) { - /** - * @param {string} link - * @param {Object} options - * @returns {Promise} - */ - const func = exports[funcName]; - exports[funcName] = async(link, options = {}) => { - utils.checkForUpdates(); - let id = await urlUtils.getVideoID(link); - const key = [funcName, id, options.lang].join('-'); - return exports.cache.getOrSet(key, () => func(id, options)); - }; -} - - -// Export a few helpers. -exports.validateID = urlUtils.validateID; -exports.validateURL = urlUtils.validateURL; -exports.getURLVideoID = urlUtils.getURLVideoID; -exports.getVideoID = urlUtils.getVideoID; - -},{"./cache":831,"./format-utils":832,"./info-extras":835,"./sig":837,"./url-utils":838,"./utils":839,"miniget":555,"querystring":undefined,"sax":840,"timers":undefined}],837:[function(require,module,exports){ -const querystring = require('querystring'); -const Cache = require('./cache'); -const utils = require('./utils'); - - -// A shared cache to keep track of html5player.js tokens. -exports.cache = new Cache(); - - -/** - * Extract signature deciphering tokens from html5player file. - * - * @param {string} html5playerfile - * @param {Object} options - * @returns {Promise>} - */ -exports.getTokens = (html5playerfile, options) => exports.cache.getOrSet(html5playerfile, async() => { - const body = await utils.exposedMiniget(html5playerfile, options).text(); - const tokens = exports.extractActions(body); - if (!tokens || !tokens.length) { - throw Error('Could not extract signature deciphering actions'); - } - exports.cache.set(html5playerfile, tokens); - return tokens; -}); - - -/** - * Decipher a signature based on action tokens. - * - * @param {Array.} tokens - * @param {string} sig - * @returns {string} - */ -exports.decipher = (tokens, sig) => { - sig = sig.split(''); - for (let i = 0, len = tokens.length; i < len; i++) { - let token = tokens[i], pos; - switch (token[0]) { - case 'r': - sig = sig.reverse(); - break; - case 'w': - pos = ~~token.slice(1); - sig = swapHeadAndPosition(sig, pos); - break; - case 's': - pos = ~~token.slice(1); - sig = sig.slice(pos); - break; - case 'p': - pos = ~~token.slice(1); - sig.splice(0, pos); - break; - } - } - return sig.join(''); -}; - - -/** - * Swaps the first element of an array with one of given position. - * - * @param {Array.} arr - * @param {number} position - * @returns {Array.} - */ -const swapHeadAndPosition = (arr, position) => { - const first = arr[0]; - arr[0] = arr[position % arr.length]; - arr[position] = first; - return arr; -}; - - -const jsVarStr = '[a-zA-Z_\\$][a-zA-Z_0-9]*'; -const jsSingleQuoteStr = `'[^'\\\\]*(:?\\\\[\\s\\S][^'\\\\]*)*'`; -const jsDoubleQuoteStr = `"[^"\\\\]*(:?\\\\[\\s\\S][^"\\\\]*)*"`; -const jsQuoteStr = `(?:${jsSingleQuoteStr}|${jsDoubleQuoteStr})`; -const jsKeyStr = `(?:${jsVarStr}|${jsQuoteStr})`; -const jsPropStr = `(?:\\.${jsVarStr}|\\[${jsQuoteStr}\\])`; -const jsEmptyStr = `(?:''|"")`; -const reverseStr = ':function\\(a\\)\\{' + - '(?:return )?a\\.reverse\\(\\)' + -'\\}'; -const sliceStr = ':function\\(a,b\\)\\{' + - 'return a\\.slice\\(b\\)' + -'\\}'; -const spliceStr = ':function\\(a,b\\)\\{' + - 'a\\.splice\\(0,b\\)' + -'\\}'; -const swapStr = ':function\\(a,b\\)\\{' + - 'var c=a\\[0\\];a\\[0\\]=a\\[b(?:%a\\.length)?\\];a\\[b(?:%a\\.length)?\\]=c(?:;return a)?' + -'\\}'; -const actionsObjRegexp = new RegExp( - `var (${jsVarStr})=\\{((?:(?:${ - jsKeyStr}${reverseStr}|${ - jsKeyStr}${sliceStr}|${ - jsKeyStr}${spliceStr}|${ - jsKeyStr}${swapStr - }),?\\r?\\n?)+)\\};`); -const actionsFuncRegexp = new RegExp(`${`function(?: ${jsVarStr})?\\(a\\)\\{` + - `a=a\\.split\\(${jsEmptyStr}\\);\\s*` + - `((?:(?:a=)?${jsVarStr}`}${ - jsPropStr -}\\(a,\\d+\\);)+)` + - `return a\\.join\\(${jsEmptyStr}\\)` + - `\\}`); -const reverseRegexp = new RegExp(`(?:^|,)(${jsKeyStr})${reverseStr}`, 'm'); -const sliceRegexp = new RegExp(`(?:^|,)(${jsKeyStr})${sliceStr}`, 'm'); -const spliceRegexp = new RegExp(`(?:^|,)(${jsKeyStr})${spliceStr}`, 'm'); -const swapRegexp = new RegExp(`(?:^|,)(${jsKeyStr})${swapStr}`, 'm'); - - -/** - * Extracts the actions that should be taken to decipher a signature. - * - * This searches for a function that performs string manipulations on - * the signature. We already know what the 3 possible changes to a signature - * are in order to decipher it. There is - * - * * Reversing the string. - * * Removing a number of characters from the beginning. - * * Swapping the first character with another position. - * - * Note, `Array#slice()` used to be used instead of `Array#splice()`, - * it's kept in case we encounter any older html5player files. - * - * After retrieving the function that does this, we can see what actions - * it takes on a signature. - * - * @param {string} body - * @returns {Array.} - */ -exports.extractActions = body => { - const objResult = actionsObjRegexp.exec(body); - const funcResult = actionsFuncRegexp.exec(body); - if (!objResult || !funcResult) { return null; } - - const obj = objResult[1].replace(/\$/g, '\\$'); - const objBody = objResult[2].replace(/\$/g, '\\$'); - const funcBody = funcResult[1].replace(/\$/g, '\\$'); - - let result = reverseRegexp.exec(objBody); - const reverseKey = result && result[1] - .replace(/\$/g, '\\$') - .replace(/\$|^'|^"|'$|"$/g, ''); - result = sliceRegexp.exec(objBody); - const sliceKey = result && result[1] - .replace(/\$/g, '\\$') - .replace(/\$|^'|^"|'$|"$/g, ''); - result = spliceRegexp.exec(objBody); - const spliceKey = result && result[1] - .replace(/\$/g, '\\$') - .replace(/\$|^'|^"|'$|"$/g, ''); - result = swapRegexp.exec(objBody); - const swapKey = result && result[1] - .replace(/\$/g, '\\$') - .replace(/\$|^'|^"|'$|"$/g, ''); - - const keys = `(${[reverseKey, sliceKey, spliceKey, swapKey].join('|')})`; - const myreg = `(?:a=)?${obj - }(?:\\.${keys}|\\['${keys}'\\]|\\["${keys}"\\])` + - `\\(a,(\\d+)\\)`; - const tokenizeRegexp = new RegExp(myreg, 'g'); - const tokens = []; - while ((result = tokenizeRegexp.exec(funcBody)) !== null) { - let key = result[1] || result[2] || result[3]; - switch (key) { - case swapKey: - tokens.push(`w${result[4]}`); - break; - case reverseKey: - tokens.push('r'); - break; - case sliceKey: - tokens.push(`s${result[4]}`); - break; - case spliceKey: - tokens.push(`p${result[4]}`); - break; - } - } - return tokens; -}; - - -/** - * @param {Object} format - * @param {string} sig - */ -exports.setDownloadURL = (format, sig) => { - let decodedUrl; - if (format.url) { - decodedUrl = format.url; - } else { - return; - } - - try { - decodedUrl = decodeURIComponent(decodedUrl); - } catch (err) { - return; - } - - // Make some adjustments to the final url. - const parsedUrl = new URL(decodedUrl); - - // This is needed for a speedier download. - // See https://github.com/fent/node-ytdl-core/issues/127 - parsedUrl.searchParams.set('ratebypass', 'yes'); - - if (sig) { - // When YouTube provides a `sp` parameter the signature `sig` must go - // into the parameter it specifies. - // See https://github.com/fent/node-ytdl-core/issues/417 - parsedUrl.searchParams.set(format.sp || 'signature', sig); - } - - format.url = parsedUrl.toString(); -}; - - -/** - * Applies `sig.decipher()` to all format URL's. - * - * @param {Array.} formats - * @param {string} html5player - * @param {Object} options - */ -exports.decipherFormats = async(formats, html5player, options) => { - let decipheredFormats = {}; - let tokens = await exports.getTokens(html5player, options); - formats.forEach(format => { - let cipher = format.signatureCipher || format.cipher; - if (cipher) { - Object.assign(format, querystring.parse(cipher)); - delete format.signatureCipher; - delete format.cipher; - } - const sig = tokens && format.s ? exports.decipher(tokens, format.s) : null; - exports.setDownloadURL(format, sig); - decipheredFormats[format.url] = format; - }); - return decipheredFormats; -}; - -},{"./cache":831,"./utils":839,"querystring":undefined}],838:[function(require,module,exports){ -/** - * Get video ID. - * - * There are a few type of video URL formats. - * - https://www.youtube.com/watch?v=VIDEO_ID - * - https://m.youtube.com/watch?v=VIDEO_ID - * - https://youtu.be/VIDEO_ID - * - https://www.youtube.com/v/VIDEO_ID - * - https://www.youtube.com/embed/VIDEO_ID - * - https://music.youtube.com/watch?v=VIDEO_ID - * - https://gaming.youtube.com/watch?v=VIDEO_ID - * - * @param {string} link - * @return {string} - * @throws {Error} If unable to find a id - * @throws {TypeError} If videoid doesn't match specs - */ -const validQueryDomains = new Set([ - 'youtube.com', - 'www.youtube.com', - 'm.youtube.com', - 'music.youtube.com', - 'gaming.youtube.com', -]); -const validPathDomains = /^https?:\/\/(youtu\.be\/|(www\.)?youtube.com\/(embed|v|shorts)\/)/; -exports.getURLVideoID = link => { - const parsed = new URL(link); - let id = parsed.searchParams.get('v'); - if (validPathDomains.test(link) && !id) { - const paths = parsed.pathname.split('/'); - id = paths[paths.length - 1]; - } else if (parsed.hostname && !validQueryDomains.has(parsed.hostname)) { - throw Error('Not a YouTube domain'); - } - if (!id) { - throw Error(`No video id found: ${link}`); - } - id = id.substring(0, 11); - if (!exports.validateID(id)) { - throw TypeError(`Video id (${id}) does not match expected ` + - `format (${idRegex.toString()})`); - } - return id; -}; - - -/** - * Gets video ID either from a url or by checking if the given string - * matches the video ID format. - * - * @param {string} str - * @returns {string} - * @throws {Error} If unable to find a id - * @throws {TypeError} If videoid doesn't match specs - */ -const urlRegex = /^https?:\/\//; -exports.getVideoID = str => { - if (exports.validateID(str)) { - return str; - } else if (urlRegex.test(str)) { - return exports.getURLVideoID(str); - } else { - throw Error(`No video id found: ${str}`); - } -}; - - -/** - * Returns true if given id satifies YouTube's id format. - * - * @param {string} id - * @return {boolean} - */ -const idRegex = /^[a-zA-Z0-9-_]{11}$/; -exports.validateID = id => idRegex.test(id); - - -/** - * Checks wether the input string includes a valid id. - * - * @param {string} string - * @returns {boolean} - */ -exports.validateURL = string => { - try { - exports.getURLVideoID(string); - return true; - } catch (e) { - return false; - } -}; - -},{}],839:[function(require,module,exports){ -const miniget = require('miniget'); - - -/** - * Extract string inbetween another. - * - * @param {string} haystack - * @param {string} left - * @param {string} right - * @returns {string} - */ -exports.between = (haystack, left, right) => { - let pos; - if (left instanceof RegExp) { - const match = haystack.match(left); - if (!match) { return ''; } - pos = match.index + match[0].length; - } else { - pos = haystack.indexOf(left); - if (pos === -1) { return ''; } - pos += left.length; - } - haystack = haystack.slice(pos); - pos = haystack.indexOf(right); - if (pos === -1) { return ''; } - haystack = haystack.slice(0, pos); - return haystack; -}; - - -/** - * Get a number from an abbreviated number string. - * - * @param {string} string - * @returns {number} - */ -exports.parseAbbreviatedNumber = string => { - const match = string - .replace(',', '.') - .replace(' ', '') - .match(/([\d,.]+)([MK]?)/); - if (match) { - let [, num, multi] = match; - num = parseFloat(num); - return Math.round(multi === 'M' ? num * 1000000 : - multi === 'K' ? num * 1000 : num); - } - return null; -}; - - -/** - * Match begin and end braces of input JSON, return only json - * - * @param {string} mixedJson - * @returns {string} -*/ -exports.cutAfterJSON = mixedJson => { - let open, close; - if (mixedJson[0] === '[') { - open = '['; - close = ']'; - } else if (mixedJson[0] === '{') { - open = '{'; - close = '}'; - } - - if (!open) { - throw new Error(`Can't cut unsupported JSON (need to begin with [ or { ) but got: ${mixedJson[0]}`); - } - - // States if the loop is currently in a string - let isString = false; - - // States if the current character is treated as escaped or not - let isEscaped = false; - - // Current open brackets to be closed - let counter = 0; - - let i; - for (i = 0; i < mixedJson.length; i++) { - // Toggle the isString boolean when leaving/entering string - if (mixedJson[i] === '"' && !isEscaped) { - isString = !isString; - continue; - } - - // Toggle the isEscaped boolean for every backslash - // Reset for every regular character - isEscaped = mixedJson[i] === '\\' && !isEscaped; - - if (isString) continue; - - if (mixedJson[i] === open) { - counter++; - } else if (mixedJson[i] === close) { - counter--; - } - - // All brackets have been closed, thus end of JSON is reached - if (counter === 0) { - // Return the cut JSON - return mixedJson.substr(0, i + 1); - } - } - - // We ran through the whole string and ended up with an unclosed bracket - throw Error("Can't cut unsupported JSON (no matching closing bracket found)"); -}; - - -/** - * Checks if there is a playability error. - * - * @param {Object} player_response - * @param {Array.} statuses - * @param {Error} ErrorType - * @returns {!Error} - */ -exports.playError = (player_response, statuses, ErrorType = Error) => { - let playability = player_response && player_response.playabilityStatus; - if (playability && statuses.includes(playability.status)) { - return new ErrorType(playability.reason || (playability.messages && playability.messages[0])); - } - return null; -}; - -/** - * Does a miniget request and calls options.requestCallback if present - * - * @param {string} url the request url - * @param {Object} options an object with optional requestOptions and requestCallback parameters - * @param {Object} requestOptionsOverwrite overwrite of options.requestOptions - * @returns {miniget.Stream} - */ -exports.exposedMiniget = (url, options = {}, requestOptionsOverwrite) => { - const req = miniget(url, requestOptionsOverwrite || options.requestOptions); - if (typeof options.requestCallback === 'function') options.requestCallback(req); - return req; -}; - -/** - * Temporary helper to help deprecating a few properties. - * - * @param {Object} obj - * @param {string} prop - * @param {Object} value - * @param {string} oldPath - * @param {string} newPath - */ -exports.deprecate = (obj, prop, value, oldPath, newPath) => { - Object.defineProperty(obj, prop, { - get: () => { - console.warn(`\`${oldPath}\` will be removed in a near future release, ` + - `use \`${newPath}\` instead.`); - return value; - }, - }); -}; - - -// Check for updates. -const pkg = require('../package.json'); -const UPDATE_INTERVAL = 1000 * 60 * 60 * 12; -exports.lastUpdateCheck = 0; -exports.checkForUpdates = () => { - if (!process.env.YTDL_NO_UPDATE && !pkg.version.startsWith('0.0.0-') && - Date.now() - exports.lastUpdateCheck >= UPDATE_INTERVAL) { - exports.lastUpdateCheck = Date.now(); - return miniget('https://api.github.com/repos/fent/node-ytdl-core/releases/latest', { - headers: { 'User-Agent': 'ytdl-core' }, - }).text().then(response => { - if (JSON.parse(response).tag_name !== `v${pkg.version}`) { - console.warn('\x1b[33mWARNING:\x1B[0m ytdl-core is out of date! Update with "npm install ytdl-core@latest".'); - } - }, err => { - console.warn('Error checking for updates:', err.message); - console.warn('You can disable this check by setting the `YTDL_NO_UPDATE` env variable.'); - }); - } - return null; -}; - -},{"../package.json":841,"miniget":555}],840:[function(require,module,exports){ -arguments[4][506][0].apply(exports,arguments) -},{"dup":506,"stream":undefined,"string_decoder":undefined}],841:[function(require,module,exports){ -module.exports={ - "name": "ytdl-core", - "description": "YouTube video downloader in pure javascript.", - "keywords": [ - "youtube", - "video", - "download" - ], - "version": "4.9.0", - "repository": { - "type": "git", - "url": "git://github.com/fent/node-ytdl-core.git" - }, - "author": "fent (https://github.com/fent)", - "contributors": [ - "Tobias Kutscha (https://github.com/TimeForANinja)", - "Andrew Kelley (https://github.com/andrewrk)", - "Mauricio Allende (https://github.com/mallendeo)", - "Rodrigo Altamirano (https://github.com/raltamirano)", - "Jim Buck (https://github.com/JimmyBoh)" - ], - "main": "./lib/index.js", - "types": "./typings/index.d.ts", - "files": [ - "lib", - "typings" - ], - "scripts": { - "test": "nyc --reporter=lcov --reporter=text-summary npm run test:unit", - "test:unit": "mocha --ignore test/irl-test.js test/*-test.js --timeout 4000", - "test:irl": "mocha --timeout 16000 test/irl-test.js", - "lint": "eslint ./", - "lint:fix": "eslint --fix ./", - "lint:typings": "tslint typings/index.d.ts", - "lint:typings:fix": "tslint --fix typings/index.d.ts" - }, - "dependencies": { - "m3u8stream": "^0.8.3", - "miniget": "^4.0.0", - "sax": "^1.1.3" - }, - "devDependencies": { - "@types/node": "^13.1.0", - "assert-diff": "^3.0.1", - "dtslint": "^3.6.14", - "eslint": "^6.8.0", - "mocha": "^7.0.0", - "muk-require": "^1.2.0", - "nock": "^13.0.4", - "nyc": "^15.0.0", - "sinon": "^9.0.0", - "stream-equal": "~1.1.0", - "typescript": "^3.9.7" - }, - "engines": { - "node": ">=10" - }, - "license": "MIT" -} - -},{}],842:[function(require,module,exports){ - -var bops = require("bops"); - -exports.BufferIO = function () { - var self = {}; - var buffers = []; - - // TODO read size - self.read = function () { - consolidate(buffers); - return buffers.shift(); - }; - - self.write = function (buffer) { - buffers.push(bops.from(buffer)); - }; - - self.close = function () { - }; - - self.destroy = function () { - }; - - self.toBuffer = function () { - consolidate(buffers); - // for whatever reason, the buffer constructor does - // not copy buffers in v0.3.3 XXX TODO: how about with bops? - var buffer = bops.create(buffers[0].length); - bops.copy(buffers[0], buffer, 0, 0, buffers[0].length); - return buffer; - }; - - return self; -}; - -exports.consolidate = consolidate; -function consolidate(buffers) { - var length = 0; - var at; - var i; - var ii = buffers.length; - var buffer; - var result; - for (i = 0; i < ii; i++) { - buffer = buffers[i]; - length += buffer.length; - } - result = bops.create(length); - at = 0; - for (i = 0; i < ii; i++) { - buffer = buffers[i]; - bops.copy(buffer, result, at, 0, buffer.length); - at += buffer.length; - } - buffers.splice(0, ii, result); -} - - -},{"bops":105}],843:[function(require,module,exports){ -/* Copyright (C) 1999 Masanao Izumo - * Version: 1.0.0.1 - * LastModified: Dec 25 1999 - * - * Ported to CommonJS by Tom Robinson, 2010 -*/ - -var BufferIO = require("./buffer-io").BufferIO; -var bops = require("bops"); - -exports.inflate = function (input) { - - // all of these variables must be reset between runs otherwise we get very strange bugs - // so we've wrapped the whole thing in a closure which is also the CommonJS API. - - /* constant parameters */ - var WSIZE = 32768; // Sliding Window size - var STORED_BLOCK = 0; - var STATIC_TREES = 1; - var DYN_TREES = 2; - - /* for inflate */ - var lbits = 9; // bits in base literal/length lookup table - var dbits = 6; // bits in base distance lookup table - var INBUFSIZ = 32768; // Input buffer size - var INBUF_EXTRA = 64; // Extra buffer - - /* variables (inflate) */ - var slide; - var wp; // current position in slide - var fixed_tl = null; // inflate static - var fixed_td; // inflate static - var fixed_bl, fixed_bd; // inflate static - var bit_buf; // bit buffer - var bit_len; // bits in bit buffer - var method; - var eof; - var copy_leng; - var copy_dist; - var tl, td; // literal/length and distance decoder tables - var bl, bd; // number of bits decoded by tl and td - - var inflate_data; - var inflate_pos; - - - /* constant tables (inflate) */ - var MASK_BITS = [ - 0x0000, - 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, - 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff - ]; - // Tables for deflate from PKZIP's appnote.txt. - var cplens = [ // Copy lengths for literal codes 257..285 - 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, - 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 - ]; - /* note: see note #13 above about the 258 in this list. */ - var cplext = [ // Extra bits for literal codes 257..285 - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, - 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99 - ]; // 99==invalid - var cpdist = [ // Copy offsets for distance codes 0..29 - 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, - 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, - 8193, 12289, 16385, 24577 - ]; - var cpdext = [ // Extra bits for distance codes - 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, - 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, - 12, 12, 13, 13 - ]; - var border = [ // Order of the bit length code lengths - 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 - ]; - /* objects (inflate) */ - - function HuftList() { - this.next = null; - this.list = null; - } - - function HuftNode() { - this.e = 0; // number of extra bits or operation - this.b = 0; // number of bits in this code or subcode - - // union - this.n = 0; // literal, length base, or distance base - this.t = null; // (HuftNode) pointer to next level of table - } - - function HuftBuild(b, // code lengths in bits (all assumed <= BMAX) - n, // number of codes (assumed <= N_MAX) - s, // number of simple-valued codes (0..s-1) - d, // list of base values for non-simple codes - e, // list of extra bits for non-simple codes - mm // maximum lookup bits - ) { - this.BMAX = 16; // maximum bit length of any code - this.N_MAX = 288; // maximum number of codes in any set - this.status = 0; // 0: success, 1: incomplete table, 2: bad input - this.root = null; // (HuftList) starting table - this.m = 0; // maximum lookup bits, returns actual - - /* Given a list of code lengths and a maximum table size, make a set of - tables to decode that set of codes. Return zero on success, one if - the given code set is incomplete (the tables are still built in this - case), two if the input is invalid (all zero length codes or an - oversubscribed set of lengths), and three if not enough memory. - The code with value 256 is special, and the tables are constructed - so that no bits beyond that code are fetched when that code is - decoded. */ - { - var a; // counter for codes of length k - var c = new Array(this.BMAX+1); // bit length count table - var el; // length of EOB code (value 256) - var f; // i repeats in table every f entries - var g; // maximum code length - var h; // table level - var i; // counter, current code - var j; // counter - var k; // number of bits in current code - var lx = new Array(this.BMAX+1); // stack of bits per table - var p; // pointer into c[], b[], or v[] - var pidx; // index of p - var q; // (HuftNode) points to current table - var r = new HuftNode(); // table entry for structure assignment - var u = new Array(this.BMAX); // HuftNode[BMAX][] table stack - var v = new Array(this.N_MAX); // values in order of bit length - var w; - var x = new Array(this.BMAX+1);// bit offsets, then code stack - var xp; // pointer into x or c - var y; // number of dummy codes added - var z; // number of entries in current table - var o; - var tail; // (HuftList) - - tail = this.root = null; - for(i = 0; i < c.length; i++) - c[i] = 0; - for(i = 0; i < lx.length; i++) - lx[i] = 0; - for(i = 0; i < u.length; i++) - u[i] = null; - for(i = 0; i < v.length; i++) - v[i] = 0; - for(i = 0; i < x.length; i++) - x[i] = 0; - - // Generate counts for each bit length - el = n > 256 ? b[256] : this.BMAX; // set length of EOB code, if any - p = b; pidx = 0; - i = n; - do { - c[p[pidx]]++; // assume all entries <= BMAX - pidx++; - } while(--i > 0); - if(c[0] == n) { // null input--all zero length codes - this.root = null; - this.m = 0; - this.status = 0; - return; - } - - // Find minimum and maximum length, bound *m by those - for(j = 1; j <= this.BMAX; j++) - if(c[j] != 0) - break; - k = j; // minimum code length - if(mm < j) - mm = j; - for(i = this.BMAX; i != 0; i--) - if(c[i] != 0) - break; - g = i; // maximum code length - if(mm > i) - mm = i; - - // Adjust last length count to fill out codes, if needed - for(y = 1 << j; j < i; j++, y <<= 1) - if((y -= c[j]) < 0) { - this.status = 2; // bad input: more codes than bits - this.m = mm; - return; - } - if((y -= c[i]) < 0) { - this.status = 2; - this.m = mm; - return; - } - c[i] += y; - - // Generate starting offsets into the value table for each length - x[1] = j = 0; - p = c; - pidx = 1; - xp = 2; - while(--i > 0) // note that i == g from above - x[xp++] = (j += p[pidx++]); - - // Make a table of values in order of bit lengths - p = b; pidx = 0; - i = 0; - do { - if((j = p[pidx++]) != 0) - v[x[j]++] = i; - } while(++i < n); - n = x[g]; // set n to length of v - - // Generate the Huffman codes and for each, make the table entries - x[0] = i = 0; // first Huffman code is zero - p = v; pidx = 0; // grab values in bit order - h = -1; // no tables yet--level -1 - w = lx[0] = 0; // no bits decoded yet - q = null; // ditto - z = 0; // ditto - - // go through the bit lengths (k already is bits in shortest code) - for(; k <= g; k++) { - a = c[k]; - while(a-- > 0) { - // here i is the Huffman code of length k bits for value p[pidx] - // make tables up to required level - while(k > w + lx[1 + h]) { - w += lx[1 + h]; // add bits already decoded - h++; - - // compute minimum size table less than or equal to *m bits - z = (z = g - w) > mm ? mm : z; // upper limit - if((f = 1 << (j = k - w)) > a + 1) { // try a k-w bit table - // too few codes for k-w bit table - f -= a + 1; // deduct codes from patterns left - xp = k; - while(++j < z) { // try smaller tables up to z bits - if((f <<= 1) <= c[++xp]) - break; // enough codes to use up j bits - f -= c[xp]; // else deduct codes from patterns - } - } - if(w + j > el && w < el) - j = el - w; // make EOB code end at table - z = 1 << j; // table entries for j-bit table - lx[1 + h] = j; // set table size in stack - - // allocate and link in new table - q = new Array(z); - for(o = 0; o < z; o++) { - q[o] = new HuftNode(); - } - - if(tail == null) - tail = this.root = new HuftList(); - else - tail = tail.next = new HuftList(); - tail.next = null; - tail.list = q; - u[h] = q; // table starts after link - - /* connect to last table, if there is one */ - if(h > 0) { - x[h] = i; // save pattern for backing up - r.b = lx[h]; // bits to dump before this table - r.e = 16 + j; // bits in this table - r.t = q; // pointer to this table - j = (i & ((1 << w) - 1)) >> (w - lx[h]); - u[h-1][j].e = r.e; - u[h-1][j].b = r.b; - u[h-1][j].n = r.n; - u[h-1][j].t = r.t; - } - } - - // set up table entry in r - r.b = k - w; - if(pidx >= n) - r.e = 99; // out of values--invalid code - else if(p[pidx] < s) { - r.e = (p[pidx] < 256 ? 16 : 15); // 256 is end-of-block code - r.n = p[pidx++]; // simple code is just the value - } else { - r.e = e[p[pidx] - s]; // non-simple--look up in lists - r.n = d[p[pidx++] - s]; - } - - // fill code-like entries with r // - f = 1 << (k - w); - for(j = i >> w; j < z; j += f) { - q[j].e = r.e; - q[j].b = r.b; - q[j].n = r.n; - q[j].t = r.t; - } - - // backwards increment the k-bit code i - for(j = 1 << (k - 1); (i & j) != 0; j >>= 1) - i ^= j; - i ^= j; - - // backup over finished tables - while((i & ((1 << w) - 1)) != x[h]) { - w -= lx[h]; // don't need to update q - h--; - } - } - } - - /* return actual size of base table */ - this.m = lx[1]; - - /* Return true (1) if we were given an incomplete table */ - this.status = ((y != 0 && g != 1) ? 1 : 0); - } /* end of constructor */ - } - - - /* routines (inflate) */ - - function GET_BYTE() { - if(inflate_data.length == inflate_pos) - return -1; - return bops.readUInt8(inflate_data, inflate_pos++); - } - - function NEEDBITS(n) { - while(bit_len < n) { - bit_buf |= GET_BYTE() << bit_len; - bit_len += 8; - } - } - - function GETBITS(n) { - return bit_buf & MASK_BITS[n]; - } - - function DUMPBITS(n) { - bit_buf >>= n; - bit_len -= n; - } - - function inflate_codes(buff, off, size) { - /* inflate (decompress) the codes in a deflated (compressed) block. - Return an error code or zero if it all goes ok. */ - var e; // table entry flag/number of extra bits - var t; // (HuftNode) pointer to table entry - var n; - - if(size == 0) - return 0; - - // inflate the coded data - n = 0; - for(;;) { // do until end of block - NEEDBITS(bl); - t = tl.list[GETBITS(bl)]; - e = t.e; - while(e > 16) { - if(e == 99) - return -1; - DUMPBITS(t.b); - e -= 16; - NEEDBITS(e); - t = t.t[GETBITS(e)]; - e = t.e; - } - DUMPBITS(t.b); - - if(e == 16) { // then it's a literal - wp &= WSIZE - 1; - buff[off + n++] = slide[wp++] = t.n; - if(n == size) - return size; - continue; - } - - // exit if end of block - if(e == 15) - break; - - // it's an EOB or a length - - // get length of block to copy - NEEDBITS(e); - copy_leng = t.n + GETBITS(e); - DUMPBITS(e); - - // decode distance of block to copy - NEEDBITS(bd); - t = td.list[GETBITS(bd)]; - e = t.e; - - while(e > 16) { - if(e == 99) - return -1; - DUMPBITS(t.b); - e -= 16; - NEEDBITS(e); - t = t.t[GETBITS(e)]; - e = t.e; - } - DUMPBITS(t.b); - NEEDBITS(e); - copy_dist = wp - t.n - GETBITS(e); - DUMPBITS(e); - - // do the copy - while(copy_leng > 0 && n < size) { - copy_leng--; - copy_dist &= WSIZE - 1; - wp &= WSIZE - 1; - buff[off + n++] = slide[wp++] - = slide[copy_dist++]; - } - - if(n == size) - return size; - } - - method = -1; // done - return n; - } - - function inflate_stored(buff, off, size) { - /* "decompress" an inflated type 0 (stored) block. */ - var n; - - // go to byte boundary - n = bit_len & 7; - DUMPBITS(n); - - // get the length and its complement - NEEDBITS(16); - n = GETBITS(16); - DUMPBITS(16); - NEEDBITS(16); - if(n != ((~bit_buf) & 0xffff)) - return -1; // error in compressed data - DUMPBITS(16); - - // read and output the compressed data - copy_leng = n; - - n = 0; - while(copy_leng > 0 && n < size) { - copy_leng--; - wp &= WSIZE - 1; - NEEDBITS(8); - buff[off + n++] = slide[wp++] = - GETBITS(8); - DUMPBITS(8); - } - - if(copy_leng == 0) - method = -1; // done - return n; - } - - function inflate_fixed(buff, off, size) { - /* decompress an inflated type 1 (fixed Huffman codes) block. We should - either replace this with a custom decoder, or at least precompute the - Huffman tables. */ - - // if first time, set up tables for fixed blocks - if(fixed_tl == null) { - var i; // temporary variable - var l = new Array(288); // length list for huft_build - var h; // HuftBuild - - // literal table - for(i = 0; i < 144; i++) - l[i] = 8; - for(; i < 256; i++) - l[i] = 9; - for(; i < 280; i++) - l[i] = 7; - for(; i < 288; i++) // make a complete, but wrong code set - l[i] = 8; - fixed_bl = 7; - - h = new HuftBuild(l, 288, 257, cplens, cplext, - fixed_bl); - if(h.status != 0) { - alert("HufBuild error: "+h.status); - return -1; - } - fixed_tl = h.root; - fixed_bl = h.m; - - // distance table - for(i = 0; i < 30; i++) // make an incomplete code set - l[i] = 5; - var fixed_bd = 5; - - h = new HuftBuild(l, 30, 0, cpdist, cpdext, fixed_bd); - if(h.status > 1) { - fixed_tl = null; - alert("HufBuild error: "+h.status); - return -1; - } - fixed_td = h.root; - fixed_bd = h.m; - } - - tl = fixed_tl; - td = fixed_td; - bl = fixed_bl; - bd = fixed_bd; - return inflate_codes(buff, off, size); - } - - function inflate_dynamic(buff, off, size) { - // decompress an inflated type 2 (dynamic Huffman codes) block. - var i; // temporary variables - var j; - var l; // last length - var n; // number of lengths to get - var t; // (HuftNode) literal/length code table - var nb; // number of bit length codes - var nl; // number of literal/length codes - var nd; // number of distance codes - var ll = new Array(286+30); // literal/length and distance code lengths - var h; // (HuftBuild) - - for(i = 0; i < ll.length; i++) - ll[i] = 0; - - // read in table lengths - NEEDBITS(5); - nl = 257 + GETBITS(5); // number of literal/length codes - DUMPBITS(5); - NEEDBITS(5); - nd = 1 + GETBITS(5); // number of distance codes - DUMPBITS(5); - NEEDBITS(4); - nb = 4 + GETBITS(4); // number of bit length codes - DUMPBITS(4); - if(nl > 286 || nd > 30) - return -1; // bad lengths - - // read in bit-length-code lengths - for(j = 0; j < nb; j++) - { - NEEDBITS(3); - ll[border[j]] = GETBITS(3); - DUMPBITS(3); - } - for(; j < 19; j++) - ll[border[j]] = 0; - - // build decoding table for trees--single level, 7 bit lookup - bl = 7; - h = new HuftBuild(ll, 19, 19, null, null, bl); - if(h.status != 0) - return -1; // incomplete code set - - tl = h.root; - bl = h.m; - - // read in literal and distance code lengths - n = nl + nd; - i = l = 0; - while(i < n) { - NEEDBITS(bl); - t = tl.list[GETBITS(bl)]; - j = t.b; - DUMPBITS(j); - j = t.n; - if(j < 16) // length of code in bits (0..15) - ll[i++] = l = j; // save last length in l - else if(j == 16) { // repeat last length 3 to 6 times - NEEDBITS(2); - j = 3 + GETBITS(2); - DUMPBITS(2); - if(i + j > n) - return -1; - while(j-- > 0) - ll[i++] = l; - } else if(j == 17) { // 3 to 10 zero length codes - NEEDBITS(3); - j = 3 + GETBITS(3); - DUMPBITS(3); - if(i + j > n) - return -1; - while(j-- > 0) - ll[i++] = 0; - l = 0; - } else { // j == 18: 11 to 138 zero length codes - NEEDBITS(7); - j = 11 + GETBITS(7); - DUMPBITS(7); - if(i + j > n) - return -1; - while(j-- > 0) - ll[i++] = 0; - l = 0; - } - } - - // build the decoding tables for literal/length and distance codes - bl = lbits; - h = new HuftBuild(ll, nl, 257, cplens, cplext, bl); - if(bl == 0) // no literals or lengths - h.status = 1; - if(h.status != 0) { - if(h.status == 1) - ;// **incomplete literal tree** - return -1; // incomplete code set - } - tl = h.root; - bl = h.m; - - for(i = 0; i < nd; i++) - ll[i] = ll[i + nl]; - bd = dbits; - h = new HuftBuild(ll, nd, 0, cpdist, cpdext, bd); - td = h.root; - bd = h.m; - - if(bd == 0 && nl > 257) { // lengths but no distances - // **incomplete distance tree** - return -1; - } - - if(h.status == 1) { - ;// **incomplete distance tree** - } - if(h.status != 0) - return -1; - - // decompress until an end-of-block code - return inflate_codes(buff, off, size); - } - - function inflate_start() { - var i; - - if(slide == null) - slide = new Array(2 * WSIZE); - wp = 0; - bit_buf = 0; - bit_len = 0; - method = -1; - eof = false; - copy_leng = copy_dist = 0; - tl = null; - } - - function inflate_internal(buff, off, size) { - // decompress an inflated entry - var n, i; - - n = 0; - while(n < size) { - if(eof && method == -1) - return n; - - if(copy_leng > 0) { - if(method != STORED_BLOCK) { - // STATIC_TREES or DYN_TREES - while(copy_leng > 0 && n < size) { - copy_leng--; - copy_dist &= WSIZE - 1; - wp &= WSIZE - 1; - buff[off + n++] = slide[wp++] = - slide[copy_dist++]; - } - } else { - while(copy_leng > 0 && n < size) { - copy_leng--; - wp &= WSIZE - 1; - NEEDBITS(8); - buff[off + n++] = slide[wp++] = GETBITS(8); - DUMPBITS(8); - } - if(copy_leng == 0) - method = -1; // done - } - if(n == size) - return n; - } - - if(method == -1) { - - if(eof) - break; - - // read in last block bit - NEEDBITS(1); - if(GETBITS(1) != 0) - eof = true; - DUMPBITS(1); - - // read in block type - NEEDBITS(2); - method = GETBITS(2); - DUMPBITS(2); - tl = null; - copy_leng = 0; - } - - switch(method) { - case 0: // STORED_BLOCK - i = inflate_stored(buff, off + n, size - n); - break; - - case 1: // STATIC_TREES - if(tl != null) - i = inflate_codes(buff, off + n, size - n); - else - i = inflate_fixed(buff, off + n, size - n); - break; - - case 2: // DYN_TREES - if(tl != null) - i = inflate_codes(buff, off + n, size - n); - else - i = inflate_dynamic(buff, off + n, size - n); - break; - - default: // error - i = -1; - break; - } - - if(i == -1) { - if(eof) - return 0; - return -1; - } - n += i; - } - return n; - } - - var inflate = function (bytes) { - var out, buff; - var i, j; - - inflate_start(); - inflate_data = bytes; - inflate_pos = 0; - - buff = new Array(1024); - out = new BufferIO(); // XXX TODO - while((i = inflate_internal(buff, 0, buff.length)) > 0) { - out.write(buff.slice(0, i)); // XXX TODO - } - inflate_data = undefined; // G.C. - return out.toBuffer(); - } - - return inflate(input); - -}; - - -},{"./buffer-io":842,"bops":105}],844:[function(require,module,exports){ -// Tom Robinson -// Kris Kowal - -var INFLATE = require("./inflate"); -var bops = require("bops"); - -var LOCAL_FILE_HEADER = 0x04034b50; -var CENTRAL_DIRECTORY_FILE_HEADER = 0x02014b50; -var END_OF_CENTRAL_DIRECTORY_RECORD = 0x06054b50; -var MADE_BY_UNIX = 3; // See http://www.pkware.com/documents/casestudies/APPNOTE.TXT - -var Reader = exports.Reader = function (data) { - if (!(this instanceof Reader)) - return new Reader(data); - this._source = new BufferSource(data); - this._offset = 0; -} - -function BufferSource(buffer) { - this._buffer = buffer; - this.length = function() { - return buffer.length; - } - this.read = function (start, length) { - var bytes = bops.subarray(this._buffer, start, start+length); - return bytes; - } -} - -Reader.prototype.length = function () { - return this._source.length(); -} - -Reader.prototype.position = function () { - return this._offset; -} - -Reader.prototype.seek = function (offset) { - this._offset = offset; -} - -Reader.prototype.read = function (length) { - var bytes = this._source.read(this._offset, length); - this._offset += length; - return bytes; -} - -Reader.prototype.readInteger = function (length, bigEndian) { - if (bigEndian) - return bytesToNumberBE(this.read(length)); - else - return bytesToNumberLE(this.read(length)); -} - -Reader.prototype.readString = function (length, charset) { - return bops.to(this.read(length), charset || "utf8"); -} - -Reader.prototype.readUncompressed = function (length, method) { - var compressed = this.read(length); - var uncompressed = null; - if (method === 0) - uncompressed = compressed; - else if (method === 8) - uncompressed = INFLATE.inflate(compressed); - else - throw new Error("Unknown compression method: " + structure.compression_method); - return uncompressed; -} - -Reader.prototype.readStructure = function () { - var stream = this; - var structure = {}; - - // local file header signature 4 bytes (0x04034b50) - structure.signature = stream.readInteger(4); - - switch (structure.signature) { - case LOCAL_FILE_HEADER : - this.readLocalFileHeader(structure); - break; - case CENTRAL_DIRECTORY_FILE_HEADER : - this.readCentralDirectoryFileHeader(structure); - break; - case END_OF_CENTRAL_DIRECTORY_RECORD : - this.readEndOfCentralDirectoryRecord(structure); - break; - default: - throw new Error("Unknown ZIP structure signature: 0x" + structure.signature.toString(16)); - } - - return structure; -} - -// ZIP local file header -// Offset Bytes Description -// 0 4 Local file header signature = 0x04034b50 -// 4 2 Version needed to extract (minimum) -// 6 2 General purpose bit flag -// 8 2 Compression method -// 10 2 File last modification time -// 12 2 File last modification date -// 14 4 CRC-32 -// 18 4 Compressed size -// 22 4 Uncompressed size -// 26 2 File name length (n) -// 28 2 Extra field length (m) -// 30 n File name -// 30+n m Extra field -Reader.prototype.readLocalFileHeader = function (structure) { - var stream = this; - structure = structure || {}; - - if (!structure.signature) - structure.signature = stream.readInteger(4); // Local file header signature = 0x04034b50 - - if (structure.signature !== LOCAL_FILE_HEADER) - throw new Error("ZIP local file header signature invalid (expects 0x04034b50, actually 0x" + structure.signature.toString(16) +")"); - - structure.version_needed = stream.readInteger(2); // Version needed to extract (minimum) - structure.flags = stream.readInteger(2); // General purpose bit flag - structure.compression_method = stream.readInteger(2); // Compression method - structure.last_mod_file_time = stream.readInteger(2); // File last modification time - structure.last_mod_file_date = stream.readInteger(2); // File last modification date - structure.crc_32 = stream.readInteger(4); // CRC-32 - structure.compressed_size = stream.readInteger(4); // Compressed size - structure.uncompressed_size = stream.readInteger(4); // Uncompressed size - structure.file_name_length = stream.readInteger(2); // File name length (n) - structure.extra_field_length = stream.readInteger(2); // Extra field length (m) - - var n = structure.file_name_length; - var m = structure.extra_field_length; - - structure.file_name = stream.readString(n); // File name - structure.extra_field = stream.read(m); // Extra fieldFile name - - return structure; -} - -// ZIP central directory file header -// Offset Bytes Description -// 0 4 Central directory file header signature = 0x02014b50 -// 4 2 Version made by -// 6 2 Version needed to extract (minimum) -// 8 2 General purpose bit flag -// 10 2 Compression method -// 12 2 File last modification time -// 14 2 File last modification date -// 16 4 CRC-32 -// 20 4 Compressed size -// 24 4 Uncompressed size -// 28 2 File name length (n) -// 30 2 Extra field length (m) -// 32 2 File comment length (k) -// 34 2 Disk number where file starts -// 36 2 Internal file attributes -// 38 4 External file attributes -// 42 4 Relative offset of local file header -// 46 n File name -// 46+n m Extra field -// 46+n+m k File comment -Reader.prototype.readCentralDirectoryFileHeader = function (structure) { - var stream = this; - structure = structure || {}; - - if (!structure.signature) - structure.signature = stream.readInteger(4); // Central directory file header signature = 0x02014b50 - - if (structure.signature !== CENTRAL_DIRECTORY_FILE_HEADER) - throw new Error("ZIP central directory file header signature invalid (expects 0x02014b50, actually 0x" + structure.signature.toString(16) +")"); - - structure.version = stream.readInteger(2); // Version made by - structure.version_needed = stream.readInteger(2); // Version needed to extract (minimum) - structure.flags = stream.readInteger(2); // General purpose bit flag - structure.compression_method = stream.readInteger(2); // Compression method - structure.last_mod_file_time = stream.readInteger(2); // File last modification time - structure.last_mod_file_date = stream.readInteger(2); // File last modification date - structure.crc_32 = stream.readInteger(4); // CRC-32 - structure.compressed_size = stream.readInteger(4); // Compressed size - structure.uncompressed_size = stream.readInteger(4); // Uncompressed size - structure.file_name_length = stream.readInteger(2); // File name length (n) - structure.extra_field_length = stream.readInteger(2); // Extra field length (m) - structure.file_comment_length = stream.readInteger(2); // File comment length (k) - structure.disk_number = stream.readInteger(2); // Disk number where file starts - structure.internal_file_attributes = stream.readInteger(2); // Internal file attributes - structure.external_file_attributes = stream.readInteger(4); // External file attributes - structure.local_file_header_offset = stream.readInteger(4); // Relative offset of local file header - - var n = structure.file_name_length; - var m = structure.extra_field_length; - var k = structure.file_comment_length; - - structure.file_name = stream.readString(n); // File name - structure.extra_field = stream.read(m); // Extra field - structure.file_comment = stream.readString(k); // File comment - structure.mode = stream.detectChmod(structure.version, structure.external_file_attributes); // chmod - - return structure; -} - -Reader.prototype.detectChmod = function(versionMadeBy, externalFileAttributes) { - var madeBy = versionMadeBy >> 8, - mode = externalFileAttributes >>> 16, - chmod = false; - - mode = (mode & 0x1ff); - if (madeBy === MADE_BY_UNIX && (process.platform === 'darwin' || process.platform === 'linux')) { - chmod = mode.toString(8); - } - return chmod; -} - -// finds the end of central directory record -// I'd like to slap whoever thought it was a good idea to put a variable length comment field here -Reader.prototype.locateEndOfCentralDirectoryRecord = function () { - var length = this.length(); - var minPosition = length - Math.pow(2, 16) - 22; - - var position = length - 22 + 1; - while (--position) { - if (position < minPosition) - throw new Error("Unable to find end of central directory record"); - - this.seek(position); - var possibleSignature = this.readInteger(4); - if (possibleSignature !== END_OF_CENTRAL_DIRECTORY_RECORD) - continue; - - this.seek(position + 20); - var possibleFileCommentLength = this.readInteger(2); - if (position + 22 + possibleFileCommentLength === length) - break; - } - - this.seek(position); - return position; -}; - -// ZIP end of central directory record -// Offset Bytes Description -// 0 4 End of central directory signature = 0x06054b50 -// 4 2 Number of this disk -// 6 2 Disk where central directory starts -// 8 2 Number of central directory records on this disk -// 10 2 Total number of central directory records -// 12 4 Size of central directory (bytes) -// 16 4 Offset of start of central directory, relative to start of archive -// 20 2 ZIP file comment length (n) -// 22 n ZIP file comment -Reader.prototype.readEndOfCentralDirectoryRecord = function (structure) { - var stream = this; - structure = structure || {}; - - if (!structure.signature) - structure.signature = stream.readInteger(4); // End of central directory signature = 0x06054b50 - - if (structure.signature !== END_OF_CENTRAL_DIRECTORY_RECORD) - throw new Error("ZIP end of central directory record signature invalid (expects 0x06054b50, actually 0x" + structure.signature.toString(16) +")"); - - structure.disk_number = stream.readInteger(2); // Number of this disk - structure.central_dir_disk_number = stream.readInteger(2); // Disk where central directory starts - structure.central_dir_disk_records = stream.readInteger(2); // Number of central directory records on this disk - structure.central_dir_total_records = stream.readInteger(2); // Total number of central directory records - structure.central_dir_size = stream.readInteger(4); // Size of central directory (bytes) - structure.central_dir_offset = stream.readInteger(4); // Offset of start of central directory, relative to start of archive - structure.file_comment_length = stream.readInteger(2); // ZIP file comment length (n) - - var n = structure.file_comment_length; - - structure.file_comment = stream.readString(n); // ZIP file comment - - return structure; -} - -Reader.prototype.readDataDescriptor = function () { - var stream = this; - var descriptor = {}; - - descriptor.crc_32 = stream.readInteger(4); - if (descriptor.crc_32 === 0x08074b50) - descriptor.crc_32 = stream.readInteger(4); // CRC-32 - - descriptor.compressed_size = stream.readInteger(4); // Compressed size - descriptor.uncompressed_size = stream.readInteger(4); // Uncompressed size - - return descriptor; -} - -Reader.prototype.iterator = function () { - var stream = this; - - // find the end record and read it - stream.locateEndOfCentralDirectoryRecord(); - var endRecord = stream.readEndOfCentralDirectoryRecord(); - - // seek to the beginning of the central directory - stream.seek(endRecord.central_dir_offset); - - var count = endRecord.central_dir_disk_records; - - return { - next: function () { - if ((count--) === 0) - throw "stop-iteration"; - - // read the central directory header - var centralHeader = stream.readCentralDirectoryFileHeader(); - - // save our new position so we can restore it - var saved = stream.position(); - - // seek to the local header and read it - stream.seek(centralHeader.local_file_header_offset); - var localHeader = stream.readLocalFileHeader(); - - // dont read the content just save the position for later use - var start = stream.position(); - - // seek back to the next central directory header - stream.seek(saved); - - return new Entry(localHeader, stream, start, centralHeader.compressed_size, centralHeader.compression_method, centralHeader.mode); - } - }; -}; - -Reader.prototype.forEach = function (block, context) { - var iterator = this.iterator(); - var next; - while (true) { - try { - next = iterator.next(); - } catch (exception) { - if (exception === "stop-iteration") - break; - if (exception === "skip-iteration") - continue; - throw exception; - } - block.call(context, next); - } -}; - -Reader.prototype.toObject = function (charset) { - var object = {}; - this.forEach(function (entry) { - if (entry.isFile()) { - var data = entry.getData(); - if (charset) - data = data.toString(charset); - object[entry.getName()] = data; - } - }); - return object; -}; - -Reader.prototype.close = function (mode, options) { -}; - -var Entry = exports.Entry = function (header, realStream, start, compressedSize, compressionMethod, mode) { - this._mode = mode; - this._header = header; - this._realStream = realStream; - this._stream = null; - this._start = start; - this._compressedSize = compressedSize; - this._compressionMethod = compressionMethod; -}; - -Entry.prototype.getName = function () { - return this._header.file_name; -}; - -Entry.prototype.isFile = function () { - return !this.isDirectory(); -}; - -Entry.prototype.isDirectory = function () { - return this.getName().slice(-1) === "/"; -}; - -Entry.prototype.lastModified = function () { - return decodeDateTime(this._header.last_mod_file_date, this._header.last_mod_file_time); -}; - -Entry.prototype.getData = function () { - if (this._stream == null) { - var bookmark = this._realStream.position(); - this._realStream.seek(this._start); - this._stream = this._realStream.readUncompressed(this._compressedSize, this._compressionMethod); - this._realStream.seek(bookmark); - } - return this._stream; -}; - -Entry.prototype.getMode = function () { - return this._mode; -}; - -var bytesToNumberLE = function (bytes) { - var acc = 0; - for (var i = 0; i < bytes.length; i++) - acc += bops.readUInt8(bytes, i) << (8*i); - return acc; -}; - -var bytesToNumberBE = function (bytes) { - var acc = 0; - for (var i = 0; i < bytes.length; i++) - acc = (acc << 8) + bops.readUInt8(bytes, i); - return acc; -}; - -var numberToBytesLE = function (number, length) { - var bytes = []; - for (var i = 0; i < length; i++) - bytes[i] = (number >> (8*i)) & 0xFF; - return new bops.from(bytes); -}; - -var numberToBytesBE = function (number, length) { - var bytes = []; - for (var i = 0; i < length; i++) - bytes[length-i-1] = (number >> (8*i)) & 0xFF; - return new bops.from(bytes); -}; - -var decodeDateTime = function (date, time) { - return new Date( - (date >>> 9) + 1980, - ((date >>> 5) & 15) - 1, - (date) & 31, - (time >>> 11) & 31, - (time >>> 5) & 63, - (time & 63) * 2 - ); -} - - -},{"./inflate":843,"bops":105}],"bluebird":[function(require,module,exports){ -"use strict"; -var old; -if (typeof Promise !== "undefined") old = Promise; -function noConflict() { - try { if (Promise === bluebird) Promise = old; } - catch (e) {} - return bluebird; -} -var bluebird = require("./promise")(); -bluebird.noConflict = noConflict; -module.exports = bluebird; - -},{"./promise":71}],"bytebuffer":[function(require,module,exports){ -/* - Copyright 2013 Daniel Wirtz - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ -var ByteBufferNB = require("./dist/ByteBufferNB.js"), - ByteBufferAB = require("./dist/ByteBufferAB.js"); - -module.exports = ByteBufferNB; -module.exports.ByteBufferNB = ByteBufferNB; // node Buffer backed -module.exports.ByteBufferAB = ByteBufferAB; // ArrayBuffer backed - -},{"./dist/ByteBufferAB.js":119,"./dist/ByteBufferNB.js":120}],"debug":[function(require,module,exports){ -module.exports = require('./src/node'); - -},{"./src/node":204}],"memcpy":[function(require,module,exports){ -module.exports = null -},{}],"node-fetch":[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var Stream = require('stream'); -var Stream__default = _interopDefault(Stream); -var http = require('http'); -var http__default = _interopDefault(http); -var url = require('url'); -var https = _interopDefault(require('https')); -var zlib = _interopDefault(require('zlib')); - -// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js -// (MIT licensed) - -const BUFFER = Symbol('buffer'); -const TYPE = Symbol('type'); - -class Blob { - constructor() { - this[TYPE] = ''; - - const blobParts = arguments[0]; - const options = arguments[1]; - - const buffers = []; - - if (blobParts) { - const a = blobParts; - const length = Number(a.length); - for (let i = 0; i < length; i++) { - const element = a[i]; - let buffer; - if (element instanceof Buffer) { - buffer = element; - } else if (ArrayBuffer.isView(element)) { - buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); - } else if (element instanceof ArrayBuffer) { - buffer = Buffer.from(element); - } else if (element instanceof Blob) { - buffer = element[BUFFER]; - } else { - buffer = Buffer.from(typeof element === 'string' ? element : String(element)); - } - buffers.push(buffer); - } - } - - this[BUFFER] = Buffer.concat(buffers); - - let type = options && options.type !== undefined && String(options.type).toLowerCase(); - if (type && !/[^\u0020-\u007E]/.test(type)) { - this[TYPE] = type; - } - } - get size() { - return this[BUFFER].length; - } - get type() { - return this[TYPE]; - } - slice() { - const size = this.size; - - const start = arguments[0]; - const end = arguments[1]; - let relativeStart, relativeEnd; - if (start === undefined) { - relativeStart = 0; - } else if (start < 0) { - relativeStart = Math.max(size + start, 0); - } else { - relativeStart = Math.min(start, size); - } - if (end === undefined) { - relativeEnd = size; - } else if (end < 0) { - relativeEnd = Math.max(size + end, 0); - } else { - relativeEnd = Math.min(end, size); - } - const span = Math.max(relativeEnd - relativeStart, 0); - - const buffer = this[BUFFER]; - const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); - const blob = new Blob([], { type: arguments[2] }); - blob[BUFFER] = slicedBuffer; - return blob; - } -} - -Object.defineProperties(Blob.prototype, { - size: { enumerable: true }, - type: { enumerable: true }, - slice: { enumerable: true } -}); - -Object.defineProperty(Blob.prototype, Symbol.toStringTag, { - value: 'Blob', - writable: false, - enumerable: false, - configurable: true -}); - -/** - * fetch-error.js - * - * FetchError interface for operational errors - */ - -/** - * Create FetchError instance - * - * @param String message Error message for human - * @param String type Error type for machine - * @param String systemError For Node.js system error - * @return FetchError - */ -function FetchError(message, type, systemError) { - Error.call(this, message); - - this.message = message; - this.type = type; - - // when err.type is `system`, err.code contains system error code - if (systemError) { - this.code = this.errno = systemError.code; - } - - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); -} - -FetchError.prototype = Object.create(Error.prototype); -FetchError.prototype.constructor = FetchError; -FetchError.prototype.name = 'FetchError'; - -let convert; -try { - convert = require('encoding').convert; -} catch (e) {} - -const INTERNALS = Symbol('Body internals'); - -/** - * Body mixin - * - * Ref: https://fetch.spec.whatwg.org/#body - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -function Body(body) { - var _this = this; - - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - _ref$size = _ref.size; - - let size = _ref$size === undefined ? 0 : _ref$size; - var _ref$timeout = _ref.timeout; - let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; - - if (body == null) { - // body is undefined or null - body = null; - } else if (typeof body === 'string') ; else if (isURLSearchParams(body)) ; else if (body instanceof Blob) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') ; else if (ArrayBuffer.isView(body)) ; else if (body instanceof Stream__default) ; else { - // none of the above - // coerce to string - body = String(body); - } - this[INTERNALS] = { - body, - disturbed: false, - error: null - }; - this.size = size; - this.timeout = timeout; - - if (body instanceof Stream__default) { - body.on('error', function (err) { - _this[INTERNALS].error = new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); - }); - } -} - -Body.prototype = { - get body() { - return this[INTERNALS].body; - }, - - get bodyUsed() { - return this[INTERNALS].disturbed; - }, - - /** - * Decode response as ArrayBuffer - * - * @return Promise - */ - arrayBuffer() { - return consumeBody.call(this).then(function (buf) { - return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - }); - }, - - /** - * Return raw response as Blob - * - * @return Promise - */ - blob() { - let ct = this.headers && this.headers.get('content-type') || ''; - return consumeBody.call(this).then(function (buf) { - return Object.assign( - // Prevent copying - new Blob([], { - type: ct.toLowerCase() - }), { - [BUFFER]: buf - }); - }); - }, - - /** - * Decode response as json - * - * @return Promise - */ - json() { - var _this2 = this; - - return consumeBody.call(this).then(function (buffer) { - try { - return JSON.parse(buffer.toString()); - } catch (err) { - return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json')); - } - }); - }, - - /** - * Decode response as text - * - * @return Promise - */ - text() { - return consumeBody.call(this).then(function (buffer) { - return buffer.toString(); - }); - }, - - /** - * Decode response as buffer (non-spec api) - * - * @return Promise - */ - buffer() { - return consumeBody.call(this); - }, - - /** - * Decode response as text, while automatically detecting the encoding and - * trying to decode to UTF-8 (non-spec api) - * - * @return Promise - */ - textConverted() { - var _this3 = this; - - return consumeBody.call(this).then(function (buffer) { - return convertBody(buffer, _this3.headers); - }); - } - -}; - -// In browsers, all properties are enumerable. -Object.defineProperties(Body.prototype, { - body: { enumerable: true }, - bodyUsed: { enumerable: true }, - arrayBuffer: { enumerable: true }, - blob: { enumerable: true }, - json: { enumerable: true }, - text: { enumerable: true } -}); - -Body.mixIn = function (proto) { - for (const name of Object.getOwnPropertyNames(Body.prototype)) { - // istanbul ignore else: future proof - if (!(name in proto)) { - const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); - Object.defineProperty(proto, name, desc); - } - } -}; - -/** - * Consume and convert an entire Body to a Buffer. - * - * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body - * - * @return Promise - */ -function consumeBody() { - var _this4 = this; - - if (this[INTERNALS].disturbed) { - return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); - } - - this[INTERNALS].disturbed = true; - - if (this[INTERNALS].error) { - return Body.Promise.reject(this[INTERNALS].error); - } - - // body is null - if (this.body === null) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - - // body is string - if (typeof this.body === 'string') { - return Body.Promise.resolve(Buffer.from(this.body)); - } - - // body is blob - if (this.body instanceof Blob) { - return Body.Promise.resolve(this.body[BUFFER]); - } - - // body is buffer - if (Buffer.isBuffer(this.body)) { - return Body.Promise.resolve(this.body); - } - - // body is ArrayBuffer - if (Object.prototype.toString.call(this.body) === '[object ArrayBuffer]') { - return Body.Promise.resolve(Buffer.from(this.body)); - } - - // body is ArrayBufferView - if (ArrayBuffer.isView(this.body)) { - return Body.Promise.resolve(Buffer.from(this.body.buffer, this.body.byteOffset, this.body.byteLength)); - } - - // istanbul ignore if: should never happen - if (!(this.body instanceof Stream__default)) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - - // body is stream - // get ready to actually consume the body - let accum = []; - let accumBytes = 0; - let abort = false; - - return new Body.Promise(function (resolve, reject) { - let resTimeout; - - // allow timeout on slow response body - if (_this4.timeout) { - resTimeout = setTimeout(function () { - abort = true; - reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout')); - }, _this4.timeout); - } - - // handle stream error, such as incorrect content-encoding - _this4.body.on('error', function (err) { - reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); - }); - - _this4.body.on('data', function (chunk) { - if (abort || chunk === null) { - return; - } - - if (_this4.size && accumBytes + chunk.length > _this4.size) { - abort = true; - reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); - return; - } - - accumBytes += chunk.length; - accum.push(chunk); - }); - - _this4.body.on('end', function () { - if (abort) { - return; - } - - clearTimeout(resTimeout); - - try { - resolve(Buffer.concat(accum)); - } catch (err) { - // handle streams that have accumulated too much data (issue #414) - reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); - } - }); - }); -} - -/** - * Detect buffer encoding and convert to target encoding - * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding - * - * @param Buffer buffer Incoming buffer - * @param String encoding Target encoding - * @return String - */ -function convertBody(buffer, headers) { - if (typeof convert !== 'function') { - throw new Error('The package `encoding` must be installed to use the textConverted() function'); - } - - const ct = headers.get('content-type'); - let charset = 'utf-8'; - let res, str; - - // header - if (ct) { - res = /charset=([^;]*)/i.exec(ct); - } - - // no charset in content type, peek at response body for at most 1024 bytes - str = buffer.slice(0, 1024).toString(); - - // html5 - if (!res && str) { - res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined; - - this[MAP] = Object.create(null); - - if (init instanceof Headers) { - const rawHeaders = init.raw(); - const headerNames = Object.keys(rawHeaders); - - for (const headerName of headerNames) { - for (const value of rawHeaders[headerName]) { - this.append(headerName, value); - } - } - - return; - } - - // We don't worry about converting prop to ByteString here as append() - // will handle it. - if (init == null) ; else if (typeof init === 'object') { - const method = init[Symbol.iterator]; - if (method != null) { - if (typeof method !== 'function') { - throw new TypeError('Header pairs must be iterable'); - } - - // sequence> - // Note: per spec we have to first exhaust the lists then process them - const pairs = []; - for (const pair of init) { - if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { - throw new TypeError('Each header pair must be iterable'); - } - pairs.push(Array.from(pair)); - } - - for (const pair of pairs) { - if (pair.length !== 2) { - throw new TypeError('Each header pair must be a name/value tuple'); - } - this.append(pair[0], pair[1]); - } - } else { - // record - for (const key of Object.keys(init)) { - const value = init[key]; - this.append(key, value); - } - } - } else { - throw new TypeError('Provided initializer must be an object'); - } - } - - /** - * Return combined header value given name - * - * @param String name Header name - * @return Mixed - */ - get(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key === undefined) { - return null; - } - - return this[MAP][key].join(', '); - } - - /** - * Iterate over all headers - * - * @param Function callback Executed for each item with parameters (value, name, thisArg) - * @param Boolean thisArg `this` context for callback function - * @return Void - */ - forEach(callback) { - let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; - - let pairs = getHeaders(this); - let i = 0; - while (i < pairs.length) { - var _pairs$i = pairs[i]; - const name = _pairs$i[0], - value = _pairs$i[1]; - - callback.call(thisArg, value, name, this); - pairs = getHeaders(this); - i++; - } - } - - /** - * Overwrite header values given name - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - set(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - this[MAP][key !== undefined ? key : name] = [value]; - } - - /** - * Append a value onto existing header - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - append(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - if (key !== undefined) { - this[MAP][key].push(value); - } else { - this[MAP][name] = [value]; - } - } - - /** - * Check for header name existence - * - * @param String name Header name - * @return Boolean - */ - has(name) { - name = `${name}`; - validateName(name); - return find(this[MAP], name) !== undefined; - } - - /** - * Delete all header values given name - * - * @param String name Header name - * @return Void - */ - delete(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key !== undefined) { - delete this[MAP][key]; - } - } - - /** - * Return raw headers (non-spec api) - * - * @return Object - */ - raw() { - return this[MAP]; - } - - /** - * Get an iterator on keys. - * - * @return Iterator - */ - keys() { - return createHeadersIterator(this, 'key'); - } - - /** - * Get an iterator on values. - * - * @return Iterator - */ - values() { - return createHeadersIterator(this, 'value'); - } - - /** - * Get an iterator on entries. - * - * This is the default iterator of the Headers object. - * - * @return Iterator - */ - [Symbol.iterator]() { - return createHeadersIterator(this, 'key+value'); - } -} -Headers.prototype.entries = Headers.prototype[Symbol.iterator]; - -Object.defineProperty(Headers.prototype, Symbol.toStringTag, { - value: 'Headers', - writable: false, - enumerable: false, - configurable: true -}); - -Object.defineProperties(Headers.prototype, { - get: { enumerable: true }, - forEach: { enumerable: true }, - set: { enumerable: true }, - append: { enumerable: true }, - has: { enumerable: true }, - delete: { enumerable: true }, - keys: { enumerable: true }, - values: { enumerable: true }, - entries: { enumerable: true } -}); - -function getHeaders(headers) { - let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value'; - - const keys = Object.keys(headers[MAP]).sort(); - return keys.map(kind === 'key' ? function (k) { - return k.toLowerCase(); - } : kind === 'value' ? function (k) { - return headers[MAP][k].join(', '); - } : function (k) { - return [k.toLowerCase(), headers[MAP][k].join(', ')]; - }); -} - -const INTERNAL = Symbol('internal'); - -function createHeadersIterator(target, kind) { - const iterator = Object.create(HeadersIteratorPrototype); - iterator[INTERNAL] = { - target, - kind, - index: 0 - }; - return iterator; -} - -const HeadersIteratorPrototype = Object.setPrototypeOf({ - next() { - // istanbul ignore if - if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { - throw new TypeError('Value of `this` is not a HeadersIterator'); - } - - var _INTERNAL = this[INTERNAL]; - const target = _INTERNAL.target, - kind = _INTERNAL.kind, - index = _INTERNAL.index; - - const values = getHeaders(target, kind); - const len = values.length; - if (index >= len) { - return { - value: undefined, - done: true - }; - } - - this[INTERNAL].index = index + 1; - - return { - value: values[index], - done: false - }; - } -}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); - -Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { - value: 'HeadersIterator', - writable: false, - enumerable: false, - configurable: true -}); - -/** - * Export the Headers object in a form that Node.js can consume. - * - * @param Headers headers - * @return Object - */ -function exportNodeCompatibleHeaders(headers) { - const obj = Object.assign({ __proto__: null }, headers[MAP]); - - // http.request() only supports string as Host header. This hack makes - // specifying custom Host header possible. - const hostHeaderKey = find(headers[MAP], 'Host'); - if (hostHeaderKey !== undefined) { - obj[hostHeaderKey] = obj[hostHeaderKey][0]; - } - - return obj; -} - -/** - * Create a Headers object from an object of headers, ignoring those that do - * not conform to HTTP grammar productions. - * - * @param Object obj Object of headers - * @return Headers - */ -function createHeadersLenient(obj) { - const headers = new Headers(); - for (const name of Object.keys(obj)) { - if (invalidTokenRegex.test(name)) { - continue; - } - if (Array.isArray(obj[name])) { - for (const val of obj[name]) { - if (invalidHeaderCharRegex.test(val)) { - continue; - } - if (headers[MAP][name] === undefined) { - headers[MAP][name] = [val]; - } else { - headers[MAP][name].push(val); - } - } - } else if (!invalidHeaderCharRegex.test(obj[name])) { - headers[MAP][name] = [obj[name]]; - } - } - return headers; -} - -const INTERNALS$1 = Symbol('Response internals'); - -/** - * Response class - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -class Response { - constructor() { - let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - Body.call(this, body, opts); - - const status = opts.status || 200; - - this[INTERNALS$1] = { - url: opts.url, - status, - statusText: opts.statusText || http.STATUS_CODES[status], - headers: new Headers(opts.headers) - }; - } - - get url() { - return this[INTERNALS$1].url; - } - - get status() { - return this[INTERNALS$1].status; - } - - /** - * Convenience property representing if the request ended normally - */ - get ok() { - return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; - } - - get statusText() { - return this[INTERNALS$1].statusText; - } - - get headers() { - return this[INTERNALS$1].headers; - } - - /** - * Clone this response - * - * @return Response - */ - clone() { - return new Response(clone(this), { - url: this.url, - status: this.status, - statusText: this.statusText, - headers: this.headers, - ok: this.ok - }); - } -} - -Body.mixIn(Response.prototype); - -Object.defineProperties(Response.prototype, { - url: { enumerable: true }, - status: { enumerable: true }, - ok: { enumerable: true }, - statusText: { enumerable: true }, - headers: { enumerable: true }, - clone: { enumerable: true } -}); - -Object.defineProperty(Response.prototype, Symbol.toStringTag, { - value: 'Response', - writable: false, - enumerable: false, - configurable: true -}); - -const INTERNALS$2 = Symbol('Request internals'); - -/** - * Check if a value is an instance of Request. - * - * @param Mixed input - * @return Boolean - */ -function isRequest(input) { - return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; -} - -/** - * Request class - * - * @param Mixed input Url or Request instance - * @param Object init Custom options - * @return Void - */ -class Request { - constructor(input) { - let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - let parsedURL; - - // normalize input - if (!isRequest(input)) { - if (input && input.href) { - // in order to support Node.js' Url objects; though WHATWG's URL objects - // will fall into this branch also (since their `toString()` will return - // `href` property anyway) - parsedURL = url.parse(input.href); - } else { - // coerce input to a string before attempting to parse - parsedURL = url.parse(`${input}`); - } - input = {}; - } else { - parsedURL = url.parse(input.url); - } - - let method = init.method || input.method || 'GET'; - method = method.toUpperCase(); - - if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) { - throw new TypeError('Request with GET/HEAD method cannot have body'); - } - - let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; - - Body.call(this, inputBody, { - timeout: init.timeout || input.timeout || 0, - size: init.size || input.size || 0 - }); - - const headers = new Headers(init.headers || input.headers || {}); - - if (init.body != null) { - const contentType = extractContentType(this); - if (contentType !== null && !headers.has('Content-Type')) { - headers.append('Content-Type', contentType); - } - } - - this[INTERNALS$2] = { - method, - redirect: init.redirect || input.redirect || 'follow', - headers, - parsedURL - }; - - // node-fetch-only options - this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; - this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true; - this.counter = init.counter || input.counter || 0; - this.agent = init.agent || input.agent; - } - - get method() { - return this[INTERNALS$2].method; - } - - get url() { - return url.format(this[INTERNALS$2].parsedURL); - } - - get headers() { - return this[INTERNALS$2].headers; - } - - get redirect() { - return this[INTERNALS$2].redirect; - } - - /** - * Clone this request - * - * @return Request - */ - clone() { - return new Request(this); - } -} - -Body.mixIn(Request.prototype); - -Object.defineProperty(Request.prototype, Symbol.toStringTag, { - value: 'Request', - writable: false, - enumerable: false, - configurable: true -}); - -Object.defineProperties(Request.prototype, { - method: { enumerable: true }, - url: { enumerable: true }, - headers: { enumerable: true }, - redirect: { enumerable: true }, - clone: { enumerable: true } -}); - -/** - * Convert a Request to Node.js http request options. - * - * @param Request A Request instance - * @return Object The options object to be passed to http.request - */ -function getNodeRequestOptions(request) { - const parsedURL = request[INTERNALS$2].parsedURL; - const headers = new Headers(request[INTERNALS$2].headers); - - // fetch step 1.3 - if (!headers.has('Accept')) { - headers.set('Accept', '*/*'); - } - - // Basic fetch - if (!parsedURL.protocol || !parsedURL.hostname) { - throw new TypeError('Only absolute URLs are supported'); - } - - if (!/^https?:$/.test(parsedURL.protocol)) { - throw new TypeError('Only HTTP(S) protocols are supported'); - } - - // HTTP-network-or-cache fetch steps 2.4-2.7 - let contentLengthValue = null; - if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { - contentLengthValue = '0'; - } - if (request.body != null) { - const totalBytes = getTotalBytes(request); - if (typeof totalBytes === 'number') { - contentLengthValue = String(totalBytes); - } - } - if (contentLengthValue) { - headers.set('Content-Length', contentLengthValue); - } - - // HTTP-network-or-cache fetch step 2.11 - if (!headers.has('User-Agent')) { - headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); - } - - // HTTP-network-or-cache fetch step 2.15 - if (request.compress) { - headers.set('Accept-Encoding', 'gzip,deflate'); - } - if (!headers.has('Connection') && !request.agent) { - headers.set('Connection', 'close'); - } - - // HTTP-network fetch step 4.2 - // chunked encoding is handled by Node.js - - return Object.assign({}, parsedURL, { - method: request.method, - headers: exportNodeCompatibleHeaders(headers), - agent: request.agent - }); -} - -/** - * Fetch function - * - * @param Mixed url Absolute url or Request instance - * @param Object opts Fetch options - * @return Promise - */ -function fetch(url$$1, opts) { - - // allow custom promise - if (!fetch.Promise) { - throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); - } - - Body.Promise = fetch.Promise; - - // wrap http.request into fetch - return new fetch.Promise(function (resolve, reject) { - // build request object - const request = new Request(url$$1, opts); - const options = getNodeRequestOptions(request); - - const send = (options.protocol === 'https:' ? https : http__default).request; - - // send request - const req = send(options); - let reqTimeout; - - function finalize() { - req.abort(); - clearTimeout(reqTimeout); - } - - if (request.timeout) { - req.once('socket', function (socket) { - reqTimeout = setTimeout(function () { - reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); - finalize(); - }, request.timeout); - }); - } - - req.on('error', function (err) { - reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); - finalize(); - }); - - req.on('response', function (res) { - clearTimeout(reqTimeout); - - const headers = createHeadersLenient(res.headers); - - // HTTP fetch step 5 - if (fetch.isRedirect(res.statusCode)) { - // HTTP fetch step 5.2 - const location = headers.get('Location'); - - // HTTP fetch step 5.3 - const locationURL = location === null ? null : url.resolve(request.url, location); - - // HTTP fetch step 5.5 - switch (request.redirect) { - case 'error': - reject(new FetchError(`redirect mode is set to error: ${request.url}`, 'no-redirect')); - finalize(); - return; - case 'manual': - // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. - if (locationURL !== null) { - headers.set('Location', locationURL); - } - break; - case 'follow': - // HTTP-redirect fetch step 2 - if (locationURL === null) { - break; - } - - // HTTP-redirect fetch step 5 - if (request.counter >= request.follow) { - reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); - finalize(); - return; - } - - // HTTP-redirect fetch step 6 (counter increment) - // Create a new Request object. - const requestOpts = { - headers: new Headers(request.headers), - follow: request.follow, - counter: request.counter + 1, - agent: request.agent, - compress: request.compress, - method: request.method, - body: request.body - }; - - // HTTP-redirect fetch step 9 - if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { - reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); - finalize(); - return; - } - - // HTTP-redirect fetch step 11 - if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { - requestOpts.method = 'GET'; - requestOpts.body = undefined; - requestOpts.headers.delete('content-length'); - } - - // HTTP-redirect fetch step 15 - resolve(fetch(new Request(locationURL, requestOpts))); - finalize(); - return; - } - } - - // prepare response - let body = res.pipe(new Stream.PassThrough()); - const response_options = { - url: request.url, - status: res.statusCode, - statusText: res.statusMessage, - headers: headers, - size: request.size, - timeout: request.timeout - }; - - // HTTP-network fetch step 12.1.1.3 - const codings = headers.get('Content-Encoding'); - - // HTTP-network fetch step 12.1.1.4: handle content codings - - // in following scenarios we ignore compression support - // 1. compression support is disabled - // 2. HEAD request - // 3. no Content-Encoding header - // 4. no content response (204) - // 5. content not modified response (304) - if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { - resolve(new Response(body, response_options)); - return; - } - - // For Node v6+ - // Be less strict when decoding compressed responses, since sometimes - // servers send slightly invalid responses that are still accepted - // by common browsers. - // Always using Z_SYNC_FLUSH is what cURL does. - const zlibOptions = { - flush: zlib.Z_SYNC_FLUSH, - finishFlush: zlib.Z_SYNC_FLUSH - }; - - // for gzip - if (codings == 'gzip' || codings == 'x-gzip') { - body = body.pipe(zlib.createGunzip(zlibOptions)); - resolve(new Response(body, response_options)); - return; - } - - // for deflate - if (codings == 'deflate' || codings == 'x-deflate') { - // handle the infamous raw deflate response from old servers - // a hack for old IIS and Apache servers - const raw = res.pipe(new Stream.PassThrough()); - raw.once('data', function (chunk) { - // see http://stackoverflow.com/questions/37519828 - if ((chunk[0] & 0x0F) === 0x08) { - body = body.pipe(zlib.createInflate()); - } else { - body = body.pipe(zlib.createInflateRaw()); - } - resolve(new Response(body, response_options)); - }); - return; - } - - // otherwise, use response as-is - resolve(new Response(body, response_options)); - }); - - writeToStream(req, request); - }); -} -/** - * Redirect code matching - * - * @param Number code Status code - * @return Boolean - */ -fetch.isRedirect = function (code) { - return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; -}; - -// expose Promise -fetch.Promise = global.Promise; - -module.exports = exports = fetch; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = exports; -exports.Headers = Headers; -exports.Request = Request; -exports.Response = Response; -exports.FetchError = FetchError; - -},{"encoding":113,"http":undefined,"https":undefined,"stream":undefined,"url":undefined,"zlib":undefined}]},{},[727]); diff --git a/src/settings.ts b/src/settings.ts index 9b93cb9..43aafd5 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -1,23 +1,56 @@ -class settings { + +interface MetaData { + name:string, + description:string, + author:string + source:string, + updateUrl:string, + version:string +} + +export class Settings { + public static addSeciton(sectionid:string, title:string, last:Boolean) { document.querySelector("#settingsPage > div.sections > nav").innerHTML += `
${title}
`; document.querySelector("#settingsPanel").innerHTML += `

${title}


` } public static addCategory(title:string, sectionid:string, icon:string) { - document.getElementById(sectionid).innerHTML += `
${title}
` + document.getElementById(sectionid).innerHTML += `
${icon} ${title}
` } public static addButton(title:string, id:string, query:string) { document.querySelector(query).innerHTML += `
${title}
` } - public static addIcon(icon:string, classname:string) { - let style = document.createElement('style'); - style.type = 'text/css'; - style.innerHTML = `.${classname}:before { - content: ${icon}; - }`; + public static addItem(type: "theme" | "plugin", fileName:string, metaData:MetaData) { + if(type == "theme") { + document.querySelector(`#enhanced > div:nth-child(2)`).innerHTML += ` +
+
+
${metaData.name}
+ +
`; + } else if(type == "plugin") { + let enabledPlugins = JSON.parse(localStorage.getItem("enabledPlugins")); + + document.querySelector(`#enhanced > div:nth-child(3)`).innerHTML += ` +
+
+
${metaData.name}
+ +
`; + } } public static waitForElm(selector:string) { @@ -47,6 +80,4 @@ class settings { element.classList.add("active"); } -} - -export default settings; \ No newline at end of file +} \ No newline at end of file diff --git a/src/updater.ts b/src/updater.ts new file mode 100644 index 0000000..fbb2e75 --- /dev/null +++ b/src/updater.ts @@ -0,0 +1,40 @@ +import { readFileSync } from "fs"; +import { shell } from "electron"; +import helpers from './helpers'; + +class Updater { + public static async checkForUpdates(noUpdatePrompt: boolean) { + try { + let latestVersion = await this.getLatestVersion(); + if(latestVersion > this.getCurrentVersion()) { + let updatePrompt = await helpers.showAlert("info", "Update Available", "An update is available. Open latest release page?", ["Yes", "No"]); + if(updatePrompt == 0) { + shell.openExternal("https://github.com/REVENGE977/stremio-enhanced-community/releases/latest"); + return true; + } + } else if(noUpdatePrompt) { + await helpers.showAlert("info", "No update available!", "You seem to have the latest version.", ["OK"]); + return false; + } + } catch(e) { + console.error(e); + return false; + } + } + + public static async getLatestVersion() { + const request = await fetch("https://github.com/REVENGE977/stremio-enhanced-community/raw/main/version"); + const response = await request.text(); + + console.log(`[ UpdateChecker ] Latest version fetch returned status code: ${request.status}`); + return response; + } + + public static getCurrentVersion() { + const currentVersion = readFileSync(__dirname + "/version", "utf-8"); + console.log("[ UpdateChecker ] Current Version is " + currentVersion); + return currentVersion; + } +} + +export default Updater; \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index ed493e8..350354f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,14 +1,17 @@ { "compilerOptions": { "lib": ["es5", "es6", "dom"], - "module": "commonjs", + "module": "CommonJS", "noImplicitAny": true, + "downlevelIteration": true, "sourceMap": true, + "types": ["express"], "outDir": "dist", "baseUrl": ".", "paths": { "*": ["node_modules/*"] - } + }, + "esModuleInterop": true, }, "include": [ "src/**/*" diff --git a/version b/version new file mode 100644 index 0000000..1d71ef9 --- /dev/null +++ b/version @@ -0,0 +1 @@ +0.3 \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index ea0bd03..0f92e38 100644 --- a/yarn.lock +++ b/yarn.lock @@ -43,26 +43,10 @@ optionalDependencies: "@types/glob" "^7.1.1" -"@electron/get@^1.14.1": - "integrity" "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==" - "resolved" "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz" - "version" "1.14.1" - dependencies: - "debug" "^4.1.1" - "env-paths" "^2.2.0" - "fs-extra" "^8.1.0" - "got" "^9.6.0" - "progress" "^2.0.3" - "semver" "^6.2.0" - "sumchecker" "^3.0.1" - optionalDependencies: - "global-agent" "^3.0.0" - "global-tunnel-ng" "^2.7.1" - "@electron/get@^2.0.0": - "integrity" "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==" - "resolved" "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz" - "version" "2.0.2" + "integrity" "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==" + "resolved" "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz" + "version" "2.0.3" dependencies: "debug" "^4.1.1" "env-paths" "^2.2.0" @@ -94,11 +78,6 @@ "minimist" "^1.2.6" "plist" "^3.0.5" -"@electron/remote@^2.0.8": - "integrity" "sha512-P10v3+iFCIvEPeYzTWWGwwHmqWnjoh8RYnbtZAb3RlQefy4guagzIwcWtfftABIfm6JJTNQf4WPSKWZOpLmHXw==" - "resolved" "https://registry.npmjs.org/@electron/remote/-/remote-2.0.8.tgz" - "version" "2.0.8" - "@electron/universal@^1.3.2": "integrity" "sha512-BdhBgm2ZBnYyYRLRgOjM5VHkyFItsbggJ0MHycOjKWdFGYwK97ZFXH54dTvUWEfha81vfvwr5On6XBjt99uDcg==" "resolved" "https://registry.npmjs.org/@electron/universal/-/universal-1.3.4.tgz" @@ -192,23 +171,11 @@ "@nodelib/fs.scandir" "2.1.5" "fastq" "^1.6.0" -"@sindresorhus/is@^0.14.0": - "integrity" "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" - "version" "0.14.0" - "@sindresorhus/is@^4.0.0": "integrity" "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz" "version" "4.6.0" -"@szmarczak/http-timer@^1.1.2": - "integrity" "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==" - "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "defer-to-connect" "^1.0.1" - "@szmarczak/http-timer@^4.0.5": "integrity" "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==" "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" @@ -221,10 +188,15 @@ "resolved" "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" "version" "2.0.0" +"@types/angular@^1.8.9": + "integrity" "sha512-Z0HukqZkx0fotsV3QO00yqU9NzcQI+tMcrum+8MvfB4ePqCawZctF/gz6QiuII+T1ax+LitNoPx/eICTgnF4sg==" + "resolved" "https://registry.npmjs.org/@types/angular/-/angular-1.8.9.tgz" + "version" "1.8.9" + "@types/body-parser@*": - "integrity" "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==" - "resolved" "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" - "version" "1.19.2" + "integrity" "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==" + "resolved" "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz" + "version" "1.19.5" dependencies: "@types/connect" "*" "@types/node" "*" @@ -240,9 +212,9 @@ "@types/responselike" "^1.0.0" "@types/connect@*": - "integrity" "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==" - "resolved" "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" - "version" "3.4.35" + "integrity" "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==" + "resolved" "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz" + "version" "3.4.38" dependencies: "@types/node" "*" @@ -253,22 +225,30 @@ dependencies: "@types/ms" "*" -"@types/express-serve-static-core@^4.17.18": - "integrity" "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==" - "resolved" "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz" - "version" "4.17.31" +"@types/electron@^1.6.10": + "integrity" "sha512-MOCVyzIwkBEloreoCVrTV108vSf8fFIJPsGruLCoAoBZdxtnJUqKA4lNonf/2u1twSjAspPEfmEheC+TLm/cMw==" + "resolved" "https://registry.npmjs.org/@types/electron/-/electron-1.6.10.tgz" + "version" "1.6.10" + dependencies: + "electron" "*" + +"@types/express-serve-static-core@^4.17.33": + "integrity" "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==" + "resolved" "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz" + "version" "4.17.41" dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" + "@types/send" "*" -"@types/express@^4.17.14": - "integrity" "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==" - "resolved" "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz" - "version" "4.17.14" +"@types/express@^4.17.21": + "integrity" "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==" + "resolved" "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz" + "version" "4.17.21" dependencies: "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" + "@types/express-serve-static-core" "^4.17.33" "@types/qs" "*" "@types/serve-static" "*" @@ -292,6 +272,11 @@ "resolved" "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz" "version" "4.0.1" +"@types/http-errors@*": + "integrity" "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + "resolved" "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz" + "version" "2.0.4" + "@types/json-schema@^7.0.7": "integrity" "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" @@ -304,10 +289,10 @@ dependencies: "@types/node" "*" -"@types/mime@*": - "integrity" "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" - "resolved" "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" - "version" "3.0.1" +"@types/mime@*", "@types/mime@^1": + "integrity" "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + "resolved" "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz" + "version" "1.3.5" "@types/minimatch@*": "integrity" "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" @@ -319,25 +304,22 @@ "resolved" "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz" "version" "0.7.31" -"@types/node@*": - "integrity" "sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-18.6.4.tgz" - "version" "18.6.4" - -"@types/node@^16.11.26": - "integrity" "sha512-fpP+jk2zJ4VW66+wAMFoBJlx1bxmBKx4DUFf68UHgdGCOuyUTDlLWqsaNPJh7xhNDykyJ9eIzAygilP/4WoN8g==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-16.11.47.tgz" - "version" "16.11.47" +"@types/node@*", "@types/node@^18.11.18": + "integrity" "sha512-g1pZtPhsvGVTwmeVoexWZLTQaOvXwoSq//pTL0DHeNzUDrFnir4fgETdhjhIxjVnN+hKOuh98+E1eMLnUXstFg==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-18.19.8.tgz" + "version" "18.19.8" + dependencies: + "undici-types" "~5.26.4" "@types/qs@*": - "integrity" "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - "resolved" "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" - "version" "6.9.7" + "integrity" "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==" + "resolved" "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz" + "version" "6.9.11" "@types/range-parser@*": - "integrity" "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - "resolved" "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" - "version" "1.2.4" + "integrity" "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + "resolved" "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz" + "version" "1.2.7" "@types/responselike@^1.0.0": "integrity" "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==" @@ -351,11 +333,20 @@ "resolved" "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz" "version" "7.3.13" +"@types/send@*": + "integrity" "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==" + "resolved" "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz" + "version" "0.17.4" + dependencies: + "@types/mime" "^1" + "@types/node" "*" + "@types/serve-static@*": - "integrity" "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==" - "resolved" "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz" - "version" "1.15.0" + "integrity" "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==" + "resolved" "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz" + "version" "1.15.5" dependencies: + "@types/http-errors" "*" "@types/mime" "*" "@types/node" "*" @@ -508,6 +499,11 @@ "require-from-string" "^2.0.2" "uri-js" "^4.2.2" +"angular@^1.8.3": + "integrity" "sha512-5qjkWIQQVsHj4Sb5TcEs4WZWpFeVFHXwxEBHUhrny41D8UrBAd6T/6nPPAsLngJCReIOqi95W3mxdveveutpZw==" + "resolved" "https://registry.npmjs.org/angular/-/angular-1.8.3.tgz" + "version" "1.8.3" + "ansi-colors@^4.1.1": "integrity" "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" @@ -792,19 +788,6 @@ "resolved" "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz" "version" "5.0.4" -"cacheable-request@^6.0.0": - "integrity" "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==" - "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "clone-response" "^1.0.2" - "get-stream" "^5.1.0" - "http-cache-semantics" "^4.0.0" - "keyv" "^3.0.0" - "lowercase-keys" "^2.0.0" - "normalize-url" "^4.1.0" - "responselike" "^1.0.2" - "cacheable-request@^7.0.2": "integrity" "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==" "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz" @@ -952,14 +935,6 @@ "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" "version" "0.0.1" -"config-chain@^1.1.11": - "integrity" "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==" - "resolved" "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz" - "version" "1.1.13" - dependencies: - "ini" "^1.3.4" - "proto-list" "~1.2.1" - "content-disposition@0.5.4": "integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" @@ -1042,13 +1017,6 @@ dependencies: "ms" "2.0.0" -"decompress-response@^3.3.0": - "integrity" "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==" - "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "mimic-response" "^1.0.0" - "decompress-response@^6.0.0": "integrity" "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==" "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" @@ -1061,11 +1029,6 @@ "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" "version" "0.1.4" -"defer-to-connect@^1.0.1": - "integrity" "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" - "version" "1.1.3" - "defer-to-connect@^2.0.0": "integrity" "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" @@ -1155,11 +1118,6 @@ "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz" "version" "9.0.2" -"duplexer3@^0.1.4": - "integrity" "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" - "resolved" "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" - "version" "0.1.5" - "ee-first@1.1.1": "integrity" "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" @@ -1260,13 +1218,13 @@ "semver" "^7.3.5" "typed-emitter" "^2.1.0" -"electron@^20.0.1", "electron@>= 13.0.0": - "integrity" "sha512-5c7zr8oy1JsCV86BaoIPVLo4yevDfvPEsMQcGlgfJ5PS7ouAVvR1aHt0tjF65bL1vYdoQ1olvpextg2T8FyICA==" - "resolved" "https://registry.npmjs.org/electron/-/electron-20.0.1.tgz" - "version" "20.0.1" +"electron@*", "electron@^28.1.4": + "integrity" "sha512-WE6go611KOhtH6efRPMnVC7FE7DCKnQ3ZyHFeI1DbaCy8OU4UjZ8/CZGcuZmZgRdxSBEHoHdgaJkWRHZzF0FOg==" + "resolved" "https://registry.npmjs.org/electron/-/electron-28.1.4.tgz" + "version" "28.1.4" dependencies: - "@electron/get" "^1.14.1" - "@types/node" "^16.11.26" + "@electron/get" "^2.0.0" + "@types/node" "^18.11.18" "extract-zip" "^2.0.1" "emoji-regex@^8.0.0": @@ -1274,7 +1232,7 @@ "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" "version" "8.0.0" -"encodeurl@^1.0.2", "encodeurl@~1.0.2": +"encodeurl@~1.0.2": "integrity" "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" "version" "1.0.2" @@ -1764,13 +1722,6 @@ "lodash.get" "^4.0.0" "read-pkg-up" "^2.0.0" -"get-stream@^4.1.0": - "integrity" "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "pump" "^3.0.0" - "get-stream@^5.1.0": "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" @@ -1809,16 +1760,6 @@ "semver" "^7.3.2" "serialize-error" "^7.0.1" -"global-tunnel-ng@^2.7.1": - "integrity" "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==" - "resolved" "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "encodeurl" "^1.0.2" - "lodash" "^4.17.10" - "npm-conf" "^1.1.3" - "tunnel" "^0.0.6" - "globals@^13.6.0", "globals@^13.9.0": "integrity" "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==" "resolved" "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz" @@ -1862,23 +1803,6 @@ "p-cancelable" "^2.0.0" "responselike" "^2.0.0" -"got@^9.6.0": - "integrity" "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==" - "resolved" "https://registry.npmjs.org/got/-/got-9.6.0.tgz" - "version" "9.6.0" - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - "cacheable-request" "^6.0.0" - "decompress-response" "^3.3.0" - "duplexer3" "^0.1.4" - "get-stream" "^4.1.0" - "lowercase-keys" "^1.0.1" - "mimic-response" "^1.0.1" - "p-cancelable" "^1.0.0" - "to-readable-stream" "^1.0.0" - "url-parse-lax" "^3.0.0" - "graceful-fs@^4.1.2", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0": "integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" @@ -2031,11 +1955,6 @@ "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" "version" "2.0.4" -"ini@^1.3.4": - "integrity" "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" - "version" "1.3.8" - "ipaddr.js@1.9.1": "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" @@ -2148,11 +2067,6 @@ dependencies: "argparse" "^2.0.1" -"json-buffer@3.0.0": - "integrity" "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" - "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" - "version" "3.0.0" - "json-buffer@3.0.1": "integrity" "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" @@ -2204,13 +2118,6 @@ "resolved" "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz" "version" "3.1.0" -"keyv@^3.0.0": - "integrity" "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==" - "resolved" "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "json-buffer" "3.0.0" - "keyv@^4.0.0": "integrity" "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==" "resolved" "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz" @@ -2274,21 +2181,11 @@ "resolved" "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" "version" "4.4.2" -"lodash@^4.17.10", "lodash@^4.17.15": +"lodash@^4.17.15": "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" "version" "4.17.21" -"lowercase-keys@^1.0.0": - "integrity" "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" - "version" "1.0.1" - -"lowercase-keys@^1.0.1": - "integrity" "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" - "version" "1.0.1" - "lowercase-keys@^2.0.0": "integrity" "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" @@ -2358,7 +2255,7 @@ "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" "version" "1.6.0" -"mimic-response@^1.0.0", "mimic-response@^1.0.1": +"mimic-response@^1.0.0": "integrity" "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" "version" "1.0.1" @@ -2484,24 +2381,11 @@ "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" "version" "3.0.0" -"normalize-url@^4.1.0": - "integrity" "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" - "version" "4.5.1" - "normalize-url@^6.0.1": "integrity" "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" "version" "6.1.0" -"npm-conf@^1.1.3": - "integrity" "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==" - "resolved" "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "config-chain" "^1.1.11" - "pify" "^3.0.0" - "object-inspect@^1.9.0": "integrity" "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" @@ -2538,11 +2422,6 @@ "type-check" "^0.4.0" "word-wrap" "^1.2.3" -"p-cancelable@^1.0.0": - "integrity" "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" - "version" "1.1.0" - "p-cancelable@^2.0.0": "integrity" "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz" @@ -2645,11 +2524,6 @@ "resolved" "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" "version" "2.3.0" -"pify@^3.0.0": - "integrity" "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" - "resolved" "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" - "version" "3.0.0" - "plist@^3.0.0", "plist@^3.0.1", "plist@^3.0.4", "plist@^3.0.5": "integrity" "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==" "resolved" "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz" @@ -2663,21 +2537,11 @@ "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" "version" "1.2.1" -"prepend-http@^2.0.0": - "integrity" "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==" - "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" - "version" "2.0.0" - "progress@^2.0.0", "progress@^2.0.3": "integrity" "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" "resolved" "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" "version" "2.0.3" -"proto-list@~1.2.1": - "integrity" "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" - "resolved" "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" - "version" "1.2.4" - "proxy-addr@~2.0.7": "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" @@ -2812,13 +2676,6 @@ "path-parse" "^1.0.7" "supports-preserve-symlinks-flag" "^1.0.0" -"responselike@^1.0.2": - "integrity" "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==" - "resolved" "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "lowercase-keys" "^1.0.0" - "responselike@^2.0.0": "integrity" "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==" "resolved" "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz" @@ -2895,9 +2752,9 @@ "version" "5.7.1" "semver@^6.2.0": - "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - "version" "6.3.0" + "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + "version" "6.3.1" "semver@^7.1.3": "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" @@ -3181,11 +3038,6 @@ dependencies: "rimraf" "^3.0.0" -"to-readable-stream@^1.0.0": - "integrity" "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - "resolved" "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" - "version" "1.0.0" - "to-regex-range@^5.0.1": "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" @@ -3236,11 +3088,6 @@ dependencies: "tslib" "^1.8.1" -"tunnel@^0.0.6": - "integrity" "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" - "resolved" "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz" - "version" "0.0.6" - "type-check@^0.4.0", "type-check@~0.4.0": "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" @@ -3283,6 +3130,11 @@ "resolved" "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz" "version" "2.0.5" +"undici-types@~5.26.4": + "integrity" "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "resolved" "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" + "version" "5.26.5" + "universalify@^0.1.0": "integrity" "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" @@ -3305,13 +3157,6 @@ dependencies: "punycode" "^2.1.0" -"url-parse-lax@^3.0.0": - "integrity" "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==" - "resolved" "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "prepend-http" "^2.0.0" - "utf8-byte-length@^1.0.1": "integrity" "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" "resolved" "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz"