diff --git a/CONTRIBUTING.md b/.github/CONTRIBUTING.md similarity index 97% rename from CONTRIBUTING.md rename to .github/CONTRIBUTING.md index a8f16e206e..ab8c853cc9 100644 --- a/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -40,7 +40,7 @@ Here are some things you should know when contributing: ``` ## Versioning -As of NamelessMC 2.0.0 (to be released at time of writing), we use a unique versioning system. +As of NamelessMC 2.0.0, we use a unique versioning system. Similar to [semver](https://semver.org), we follow the `major.minor.patch` versioning pattern, however there are a few things to note: - We use the naming `constant.major.patch` compared to semver. - The `constant` version is pinned at `2` for the time being. @@ -89,6 +89,6 @@ After adding a new module to core, you need to do the following: ## Releasing a new version 1. Ensure you have a clean copy of the source code without leftover files from testing. For example, clone the Nameless repository into a new directory -2. Run ./release.sh. Release zip files are produced and placed in `./release`. +2. Run ./dev/scripts/release.sh. Release zip files are produced and placed in `./release`. 3. TODO: Add instructions for producing a zip only containing files changed since the last release 4. TODO: Add instructions for publishing a release diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index a8c48e130f..ad28534a97 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -16,11 +16,8 @@ body: description: From StaffCP -> Overview options: - Development version - - 2.0.3 - - 2.0.2 - - 2.0.1 - - 2.0.0 - - < 2.0.0 + - 2.1.0 + - < 2.1.0 validations: required: true diff --git a/SECURITY.md b/.github/SECURITY.md similarity index 73% rename from SECURITY.md rename to .github/SECURITY.md index c2c8234d9d..cdf3e43ac9 100644 --- a/SECURITY.md +++ b/.github/SECURITY.md @@ -6,11 +6,11 @@ We endeavour to respond to and patch high-severity security vulnerabilities as s The following NamelessMC releases are supported by the development team -| Version | Supported | -|---------------|--------------------| -| 2.0.x | :white_check_mark: | -| <= 2.0.0-pr13 | :x: | -| <= 1.0.22 | :x: | +| Version | Supported | +|-----------|--------------------| +| 2.1.x | :white_check_mark: | +| <= 2.0.3 | :x: | +| <= 1.0.22 | :x: | ## Reporting a Vulnerability diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b7aacf6793..86974b4295 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/checkout@v2 - name: Setup PHP - uses: shivammathur/setup-php@2.16.0 + uses: shivammathur/setup-php@2.24.0 with: php-version: ${{ matrix.php-versions }} @@ -21,7 +21,7 @@ jobs: run: composer update --no-interaction --no-suggest --no-progress - name: Execute PHPStan - run: vendor/bin/phpstan + run: vendor/bin/phpstan --configuration=dev/phpstan.neon code-style: runs-on: ubuntu-latest @@ -31,7 +31,7 @@ jobs: - name: PHP Code Style (phpcs) uses: chindit/actions-phpcs@master with: - cli: "-q" + cli: -q --standard=dev/phpcs.xml unused-language-term-check: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index a5fc4d2dfe..01e57edf56 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +/.fleet/ /.idea/ /core/config.php /cache @@ -10,5 +11,6 @@ /uploads/avatars/** /node_modules/ composer.lock +checksums.json /.node_cache/ /release/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 40dfe9eea4..12d7752888 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,107 @@ # NamelessMC v2 Changelog -## [Unreleased](https://github.com/NamelessMC/Nameless/compare/v2.0.0...v2) -> [Milestone](https://github.com/NamelessMC/Nameless/milestone/18) +## [Unreleased](https://github.com/NamelessMC/Nameless/compare/v2.1.0...v2) +> [Milestone](https://github.com/NamelessMC/Nameless/milestone/21) + +## [2.1.0](https://github.com/NamelessMC/Nameless/compare/v2.0.3...v2.1.0) - 2023-05-01 +### Added +- Add dark mode toggle switch [#2877](https://github.com/NamelessMC/Nameless/pull/2877) +- Add option to use OAuth linking method for Discord Integration [#3051](https://github.com/NamelessMC/Nameless/pull/3051) +- Add limit setting to latest posts widget [#2862](https://github.com/NamelessMC/Nameless/issues/2862), [#3107](https://github.com/NamelessMC/Nameless/pull/3107) +- Add option for user to reset their avatar [#3042](https://github.com/NamelessMC/Nameless/issues/3042), [#3100](https://github.com/NamelessMC/Nameless/pull/3100) +- Add integrations settings system & Setting to turn off mc username requirement [#3043](https://github.com/NamelessMC/Nameless/issues/3043), [#3109](https://github.com/NamelessMC/Nameless/pull/3109) +- Add semantic config and change node_modules copy method [#3111](https://github.com/NamelessMC/Nameless/pull/3111) +- Add createWebhookEndpoint [#3096](https://github.com/NamelessMC/Nameless/pull/3096) +- Add new webhook events for profile posts and profile post replies [#3073](https://github.com/NamelessMC/Nameless/pull/3073) +- Add Finnish language [#3117](https://github.com/NamelessMC/Nameless/pull/3117) +- Add groups parameter to list users endpoint [#3052](https://github.com/NamelessMC/Nameless/issues/3052), [#3193](https://github.com/NamelessMC/Nameless/pull/3193) +- Add support for automatically verifying emails from OAuth register [#3203](https://github.com/NamelessMC/Nameless/pull/3203) +- Add ability to query servers via plugin [#3244](https://github.com/NamelessMC/Nameless/pull/3244) +- Allow selecting between native/twemoji/emojione emojis [#3269](https://github.com/NamelessMC/Nameless/pull/3269) +- Add Latvian language [#3277](https://github.com/NamelessMC/Nameless/pull/3277) +- Create Members module with member list page [#3106](https://github.com/NamelessMC/Nameless/pull/3106) +- Allow enabling/disabling modules during installer [#3273](https://github.com/NamelessMC/Nameless/pull/3273) +- Add delete button for placeholders [#3069](https://github.com/NamelessMC/Nameless/issues/3069), [#3283](https://github.com/NamelessMC/Nameless/pull/3283) +- Queue system [#3274](https://github.com/NamelessMC/Nameless/pull/3274) +- Add support to customise OAuth login buttons [#3285](https://github.com/NamelessMC/Nameless/pull/3285) +- Add ability to customise number of news items on front page [#3303](https://github.com/NamelessMC/Nameless/pull/3303) +- Create `HasWebhookParams` interface [#3275](https://github.com/NamelessMC/Nameless/issues/3275), [#3281](https://github.com/NamelessMC/Nameless/pull/3281) +- Integrity checking system [#3159](https://github.com/NamelessMC/Nameless/pull/3159) +- Cancellable events [#3329](https://github.com/NamelessMC/Nameless/pull/3329) +- Add dependency injection library + task to generate sitemap [#3332](https://github.com/NamelessMC/Nameless/pull/3332) + +### Changed +- Handle OAuth errors [#3030](https://github.com/NamelessMC/Nameless/pull/3030) +- Allow OAuth providers to pass additional options to provider constructor [#3062](https://github.com/NamelessMC/Nameless/pull/3062) +- Place dark mode toggle inline [#3054](https://github.com/NamelessMC/Nameless/pull/3054) +- Use composer platform php version [#3063](https://github.com/NamelessMC/Nameless/pull/3063) +- Convert error page to Fomantic UI [#3029](https://github.com/NamelessMC/Nameless/pull/3029) +- Update TFA page to use a post request to disable TFA [#3080](https://github.com/NamelessMC/Nameless/pull/3080) +- Show message if there was an error loading a widget [#3138](https://github.com/NamelessMC/Nameless/pull/3138) +- Clarify meaning of "query" [#3142](https://github.com/NamelessMC/Nameless/pull/3142) +- Change exception page Prism theme to One Light [#3163](https://github.com/NamelessMC/Nameless/pull/3163) +- Update Prism token colours [#3169](https://github.com/NamelessMC/Nameless/pull/3169) +- Catch exception when installing modules [#2875](https://github.com/NamelessMC/Nameless/issues/2875), [#3143](https://github.com/NamelessMC/Nameless/pull/3143) +- Remove group sync info from user info endpoint [#3194](https://github.com/NamelessMC/Nameless/pull/3194) +- PHPDoc: Use debian image and speed up build [#3201](https://github.com/NamelessMC/Nameless/pull/3201) +- Check for pdo_mysql extension, mysqli is no longer used [#3202](https://github.com/NamelessMC/Nameless/pull/3202) +- Remove panel template "Find Templates" section [#3196](https://github.com/NamelessMC/Nameless/pull/3196) +- Small email tidy up [#3215](https://github.com/NamelessMC/Nameless/pull/3215) +- Swap API URL and API key fields [#3218](https://github.com/NamelessMC/Nameless/pull/3218) +- AuthMe improvements and fixes [#3198](https://github.com/NamelessMC/Nameless/pull/3198) +- Update server status page to refresh every 5 seconds [#3223](https://github.com/NamelessMC/Nameless/pull/3223) +- Remove status page cache [#3228](https://github.com/NamelessMC/Nameless/pull/3228) +- Remove MCAssoc [#3220](https://github.com/NamelessMC/Nameless/pull/3220) +- Don't validate unused parameters [#3235](https://github.com/NamelessMC/Nameless/pull/3235) +- Rewrite Discord group sync to use v5 Nameless-Link API [#2945](https://github.com/NamelessMC/Nameless/issues/2945), [#3222](https://github.com/NamelessMC/Nameless/pull/3222) +- Update contributing documentation to mention npm [#3242](https://github.com/NamelessMC/Nameless/pull/3242) +- Remove query interval cache [#3247](https://github.com/NamelessMC/Nameless/pull/3247) +- Attempt to remove roles in Discord when unlinking Discord integration [#3236](https://github.com/NamelessMC/Nameless/pull/3236) +- Remove MINECRAFT constant [#3225](https://github.com/NamelessMC/Nameless/pull/3225) +- Remove code scheduled for removal in 2.1.0 [#3165](https://github.com/NamelessMC/Nameless/pull/3165) +- Misc fixes and improvements [#3265](https://github.com/NamelessMC/Nameless/issues/3265), [#3267](https://github.com/NamelessMC/Nameless/issues/3267), [#2861](https://github.com/NamelessMC/Nameless/issues/2861), [#3270](https://github.com/NamelessMC/Nameless/pull/3270), [#3284](https://github.com/NamelessMC/Nameless/pull/3284) +- Make sure the dark mode switcher has a pointer cursor [#3289](https://github.com/NamelessMC/Nameless/pull/3289) +- Make sure that installation has finished [#3297](https://github.com/NamelessMC/Nameless/pull/3297) +- Use labels instead of code within installer [#3296](https://github.com/NamelessMC/Nameless/pull/3296) +- Make sure the Like button is at the bottom [#2892](https://github.com/NamelessMC/Nameless/issues/2892), [#3305](https://github.com/NamelessMC/Nameless/pull/3305) +- Use regex to determine which files to treat as migration files [#3287](https://github.com/NamelessMC/Nameless/issues/3287), [#3308](https://github.com/NamelessMC/Nameless/pull/3308) +- Better handling of closures in exception frames [#3309](https://github.com/NamelessMC/Nameless/pull/3309) +- Remove the v1 converter during installation [#3293](https://github.com/NamelessMC/Nameless/pull/3293) +- Deprecate codeTransform and decode methods within ContentHook [#3250](https://github.com/NamelessMC/Nameless/pull/3250) +- Don't decode before encoding for new installations [#3171](https://github.com/NamelessMC/Nameless/pull/3171) +- Do not encode welcome post [#3316](https://github.com/NamelessMC/Nameless/pull/3316) +- Use relative paths so phpdoc treats it as a single docset [#3318](https://github.com/NamelessMC/Nameless/issues/3318), [#3324](https://github.com/NamelessMC/Nameless/pull/3324) +- Use utf8mb4_unicode_ci for DB class to match Phinx [#3179](https://github.com/NamelessMC/Nameless/issues/3179), [#3317](https://github.com/NamelessMC/Nameless/pull/3317) +- Setting constants [#3232](https://github.com/NamelessMC/Nameless/pull/3232) +- Replace manual queries with util setting functions [#3224](https://github.com/NamelessMC/Nameless/pull/3224) +- Improve release script [#3325](https://github.com/NamelessMC/Nameless/pull/3325) +- Allow correct webhook action types in endpoint [#3326](https://github.com/NamelessMC/Nameless/pull/3326) +- Use CSS instead of the script to put the footer at the bottom [#3301](https://github.com/NamelessMC/Nameless/pull/3301) +- Make sure module is enabled to process task [#3331](https://github.com/NamelessMC/Nameless/pull/3331) +- Initialise tasks in installer [#3342](https://github.com/NamelessMC/Nameless/pull/3342) +- Dependency updates +- Translation updates [#3252](https://github.com/NamelessMC/Nameless/pull/3252) + +### Fixed +- Fix private profiles [#3020](https://github.com/NamelessMC/Nameless/pull/3020) +- Fix for some pages which don't show the updated values/data [#3105](https://github.com/NamelessMC/Nameless/pull/3105) +- Fix Discord verify command translation [#3087](https://github.com/NamelessMC/Nameless/pull/3087) +- Fix hardcoded language terms [#3036](https://github.com/NamelessMC/Nameless/issues/3036), [#3113](https://github.com/NamelessMC/Nameless/pull/3113) +- Fix ROOT_PATH in cli installer [#3123](https://github.com/NamelessMC/Nameless/pull/3123) +- Use X-Real-IP header last [#3230](https://github.com/NamelessMC/Nameless/pull/3230) +- Fix `register_method` column not being filled when accounts are created [#3231](https://github.com/NamelessMC/Nameless/pull/3231) +- Add smarty.js to postinstall script [#3245](https://github.com/NamelessMC/Nameless/pull/3245) +- Fix member module issues [#3282](https://github.com/NamelessMC/Nameless/pull/3282) +- Fix permissions not being respected for news posts [#3290](https://github.com/NamelessMC/Nameless/pull/3290) +- Fix errors during admin creation [#3295](https://github.com/NamelessMC/Nameless/pull/3295) +- Fix nofollow noopener on external links [#3306](https://github.com/NamelessMC/Nameless/pull/3306) +- Make like button text not hardcoded [#3304](https://github.com/NamelessMC/Nameless/pull/3304) +- Recaptcha v3 validation not working [#3276](https://github.com/NamelessMC/Nameless/issues/3276), [#3307](https://github.com/NamelessMC/Nameless/pull/3307) +- Fix missing event in regular webhook [#3327](https://github.com/NamelessMC/Nameless/pull/3327) +- Fix default user template setting [#3330](https://github.com/NamelessMC/Nameless/pull/3330) +- Add missing avatar upload directory [#3333](https://github.com/NamelessMC/Nameless/pull/3333) +- Fix cookie text on StaffCP permissions page [#3336](https://github.com/NamelessMC/Nameless/pull/3336) +- Fix DataCollector not found error [#3341](https://github.com/NamelessMC/Nameless/pull/3341) ## [2.0.3](https://github.com/NamelessMC/Nameless/compare/v2.0.2...v2.0.3) - 2023-01-28 ### Added diff --git a/Dockerfile.phpdoc b/Dockerfile.phpdoc index 9b7049f92e..777ca827f1 100644 --- a/Dockerfile.phpdoc +++ b/Dockerfile.phpdoc @@ -2,13 +2,18 @@ FROM phpdoc/phpdoc as doc_builder COPY . /source +WORKDIR /source + RUN mkdir /target && \ - phpdoc -d /source/core/classes \ - -d /source/modules/Core/classes \ - -d "/source/modules/Discord Integration/classes" \ - -d "/source/modules/Cookie Consent/classes" \ - -d /source/modules/Forum/classes \ - -d /source/modules/Members/classes -t /target -i /vendor + phpdoc \ + -d 'core/classes' \ + -d 'modules/Core/classes' \ + -d 'modules/Discord Integration/classes' \ + -d 'modules/Cookie Consent/classes' \ + -d 'modules/Forum/classes' \ + -d 'modules/Members/classes' \ + -i vendor \ + -t /target FROM nginxinc/nginx-unprivileged:stable diff --git a/README.md b/README.md index 35ce810c2c..db8d31c346 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# NamelessMC - v2.0 +# NamelessMC version 2 ![NamelessMC Banner](https://i.imgur.com/gt8uezk.png) NamelessMC is a free, easy to use & powerful website software for your Minecraft server, which includes a large range of features. @@ -33,6 +33,7 @@ The following list is a brief summary of the features available in v2: - ✏️ New template and language systems, allowing for total customisation. - ✨ Pretty URL option (requires mod_rewrite or special nginx config). - 🎛 Widgets: allows modules to create widgets which can be displayed on most user-facing pages and display almost anything. +- ⏳ Queue: schedule tasks to happen at a certain point in the future - 🚩 Translated into [over 20 languages](https://github.com/NamelessMC/Nameless/tree/v2/custom/languages) @@ -74,5 +75,4 @@ Please see the contributing document for information on how to contribute to Nam The security policy for NamelessMC can be found [here](https://github.com/NamelessMC/Nameless/blob/v2/SECURITY.md). ## Special Thanks -- All NamelessMC [contributors](https://github.com/NamelessMC/Nameless/graphs/contributors). -- [JetBrains](https://www.jetbrains.com/), whose products are used to develop the NamelessMC project. +- All NamelessMC [contributors](https://github.com/NamelessMC/Nameless/graphs/contributors). \ No newline at end of file diff --git a/composer.json b/composer.json index 217f4a9cbd..c69b127e98 100644 --- a/composer.json +++ b/composer.json @@ -31,7 +31,8 @@ "symfony/http-foundation": "^5.4.17", "joypixels/emoji-toolkit": "^7.0", "geoip2/geoip2": "^2.13", - "jenssegers/agent": "^2.6" + "jenssegers/agent": "^2.6", + "php-di/php-di": "^6.4" }, "require-dev": { "phpstan/phpstan": "1.6.9", diff --git a/core/assets/css/fomantic.toast.min.css b/core/assets/css/fomantic.toast.min.css deleted file mode 100644 index 2168567013..0000000000 --- a/core/assets/css/fomantic.toast.min.css +++ /dev/null @@ -1,27 +0,0 @@ -/*! - * # Fomantic-UI 2.8.8 - Toast - * http://github.com/fomantic/Fomantic-UI/ - * - * - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */.ui.toast-container{position:fixed;z-index:9999}.ui.toast-container.ui.attached{width:100%;left:0}.ui.toast-container.ui.attached .vertical.attached{border-radius:0}.ui.toast-container.ui.attached.ui.ui .attached.actions .button{border-radius:0}.ui.toast-container.ui.attached .toast-box{margin:0;width:100%;border-radius:0}.ui.toast-container.ui.attached .toast-box>.ui.message,.ui.toast-container.ui.attached .toast-box>.ui.toast{margin-left:0}.ui.toast-container.ui.attached .toast-box.floating,.ui.toast-container.ui.attached .toast-box.hoverfloating:hover{border:none}.ui.toast-container.ui.attached .toast-box>.vertical>.content{-webkit-box-flex:1;-ms-flex:1;flex:1}.ui.toast-container.ui.attached .toast-box>*{width:100%;border-radius:0}.ui.toast-container.ui.attached .toast-box>*>.vertical:not(.actions){-webkit-box-flex:1;-ms-flex:1;flex:1}.ui.toast-container.ui.attached .toast-box>.attached.actions{margin-right:1px}.ui.toast-container.ui.attached.top{top:0}.ui.toast-container.ui.attached.bottom{bottom:0}.ui.toast-container.top.right{top:.85714286em;right:.85714286em;margin-left:.85714286em}.ui.toast-container.top.left{top:.85714286em;left:.85714286em;margin-right:.85714286em}.ui.toast-container.top.center{left:50%;-webkit-transform:translate(-50%,0);transform:translate(-50%,0);top:.85714286em}.ui.toast-container.bottom.right{bottom:.85714286em;right:.85714286em;margin-left:.85714286em}.ui.toast-container.bottom.left{bottom:.85714286em;left:.85714286em;margin-right:.85714286em}.ui.toast-container.bottom.center{left:50%;-webkit-transform:translate(-50%,0);transform:translate(-50%,0);bottom:.85714286em}.ui.toast-container .animating.toast-box,.ui.toast-container .toast-box,.ui.toast-container .visible.toast-box{display:table!important}.ui.toast-container.horizontal{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.ui.toast-container.horizontal .toast-box{margin-right:.5em}.ui.toast-container .toast-box{margin-bottom:.5em;border-radius:.28571429rem;cursor:default}.ui.toast-container .toast-box:hover{opacity:1}.ui.toast-container .toast-box:not(.unclickable):hover{cursor:pointer}.ui.toast-container .toast-box.floating,.ui.toast-container .toast-box.hoverfloating:hover{-webkit-box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);border:1px solid rgba(34,36,38,.12)}.ui.toast-container .toast-box.compact,.ui.toast-container .toast-box>.compact{width:350px}.ui.toast-container .toast-box>.ui.message,.ui.toast-container .toast-box>.ui.toast{margin:0 -1px -.01em;position:relative}.ui.toast-container .toast-box>.attached.progress{z-index:1}.ui.toast-container .toast-box>.attached.progress.bottom{margin:-.2em -1px -.01em}.ui.toast-container .toast-box>.attached.progress.top{margin:-.01em -1px -.2em}.ui.toast-container .toast-box>.attached.progress .bar{min-width:0}.ui.toast-container .toast-box>.attached.progress.info .bar.bar.bar{background:#12a1bf}.ui.toast-container .toast-box>.attached.progress.warning .bar.bar.bar{background:#cf9b0d}.ui.toast-container .toast-box>.attached.progress.success .bar.bar.bar{background:#15792d}.ui.toast-container .toast-box>.attached.progress.error .bar.bar.bar{background:#9c1a1a}.ui.toast-container .toast-box>.attached.progress.neutral .bar.bar.bar{background:#d9d9d9}.ui.toast-container .toast-box>.ui.message>.close.icon{top:.3em;right:.3em}.ui.toast-container .toast-box>.ui.message>.actions:last-child{margin-bottom:-1em}.ui.toast-container .toast-box>.ui.message.icon{-webkit-box-align:inherit;-ms-flex-align:inherit;align-items:inherit}.ui.toast-container .toast-box>.ui.message.icon>:not(.icon):not(.actions){padding-left:5rem}.ui.toast-container .toast-box>.ui.message.icon>i.icon:not(.close){display:inline-block;position:absolute;width:4rem;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.ui.toast-container .toast-box>.ui.message.icon:not(.vertical).actions>i.icon:not(.close){top:calc(50% - 1.2em);-webkit-transform:none;transform:none}.ui.toast-container .toast-box>.ui.message.icon:not(.vertical).icon.icon.icon{display:block}.ui.toast-container .toast-box .ui.toast>.close.icon{cursor:pointer;margin:0;opacity:.7;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.toast-container .toast-box .ui.toast>.close.icon:hover{opacity:1}.ui.toast-container .toast-box .ui.toast.vertical>.close.icon{margin-top:-.3em;margin-right:-.3em}.ui.toast-container .toast-box .ui.toast:not(.vertical)>.close.icon{position:absolute;top:.3em}.ui.toast-container .toast-box .ui.toast:not(.vertical)>.close.icon:not(.left){right:.3em}.ui.toast-container .toast-box .ui.toast:not(.vertical)>.close.icon.left{margin-left:-.3em}.ui.toast-container .toast-box .ui.card{margin:0}.ui.toast-container .toast-box .ui.card.attached:not(.vertical).bottom{border-top-left-radius:0;border-top-right-radius:0}.ui.toast-container .toast-box .ui.card.attached:not(.vertical).bottom.horizontal>.image>img{border-top-left-radius:0}.ui.toast-container .toast-box .ui.card.attached:not(.vertical).bottom.horizontal>.image:last-child>img{border-top-right-radius:0}.ui.toast-container .toast-box .ui.card.attached:not(.vertical).top{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui.toast-container .toast-box .ui.card.attached:not(.vertical).top.horizontal>.image>img{border-bottom-left-radius:0}.ui.toast-container .toast-box .ui.card.attached:not(.vertical).top.horizontal>.image:last-child>img{border-bottom-right-radius:0}.ui.toast-container .toast-box .ui.card.horizontal.actions>.image>img{border-bottom-left-radius:0}.ui.toast-container .toast-box .ui.card.horizontal.actions>.image:last-child>img{border-bottom-right-radius:0}.ui.toast-container .toast-box .progressing{-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-timing-function:linear;animation-timing-function:linear}.ui.toast-container .toast-box .progressing.up{-webkit-animation-name:progressUp;animation-name:progressUp}.ui.toast-container .toast-box .progressing.down{-webkit-animation-name:progressDown;animation-name:progressDown}.ui.toast-container .toast-box .progressing.wait{-webkit-animation-name:progressWait;animation-name:progressWait}.ui.toast-container .toast-box:hover .pausable.progressing{-webkit-animation-play-state:paused;animation-play-state:paused}.ui.toast-container .toast-box .ui.toast:not(.vertical){display:block}.ui.toast-container .toast-box :not(.comment):not(.card) .actions{margin:.5em -1em -1em -1em}.ui.toast-container .toast-box :not(.comment) .actions{padding:.5em .5em .75em .5em;text-align:right}.ui.toast-container .toast-box :not(.comment) .actions.attached:not(.vertical){margin-right:1px}.ui.toast-container .toast-box :not(.comment) .actions:not(.basic):not(.attached){background:rgba(255,255,255,.25);border-top:1px solid rgba(0,0,0,.2)}.ui.toast-container .toast-box :not(.comment) .actions.left{text-align:left}.ui.toast-container .toast-box .vertical.actions>.button,.ui.toast-container .toast-box>.vertical.vertical.vertical,.ui.toast-container .toast-box>.vertical>.vertical.vertical{display:-webkit-box;display:-ms-flexbox;display:flex}.ui.toast-container .toast-box :not(.comment) .vertical.actions{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ui.toast-container .toast-box :not(.comment) .vertical.actions>.button{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.ui.toast-container .toast-box :not(.comment) .vertical.actions.attached>.button{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ui.toast-container .toast-box :not(.comment) .vertical.actions:not(.attached){border-top:0;margin-top:-.75em;margin-bottom:-.75em;margin-left:1em;-ms-flex-pack:distribute;justify-content:space-around}.ui.toast-container .toast-box :not(.comment) .vertical.actions:not(.attached):not(.basic){border-left:1px solid rgba(0,0,0,.2)}.ui.toast-container .toast-box :not(.comment) .vertical.actions:not(.attached)>.button:not(:last-child){margin-bottom:.3em}.ui.toast-container .toast-box :not(.comment) .vertical.actions:not(.attached).top{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.ui.toast-container .toast-box :not(.comment) .vertical.actions:not(.attached).bottom{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.ui.vertical.attached:not(.left).card>.image>img{border-top-right-radius:0}.ui.vertical.attached:not(.left).card.horizontal>.image:last-child>img{border-top-right-radius:0;border-bottom-right-radius:0}.ui.vertical.attached:not(.left).card,.ui.vertical.attached:not(.left).toast{border-top-right-radius:0;border-bottom-right-radius:0}.ui.vertical.attached:not(.left).actions{border-top-right-radius:.28571429rem;border-bottom-right-radius:.28571429rem}.ui.vertical.attached:not(.left).actions .button:first-child,.ui.vertical.attached:not(.left).actions .button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.ui.vertical.attached:not(.left).message{border-top-right-radius:0;border-bottom-left-radius:.28571429rem}.ui.vertical.attached.left.card>.image>img{border-top-left-radius:0}.ui.vertical.attached.left.card.horizontal>.image>img{border-top-left-radius:0;border-bottom-left-radius:0}.ui.vertical.attached.left.card,.ui.vertical.attached.left.toast{border-top-left-radius:0;border-bottom-left-radius:0}.ui.vertical.attached.left.actions{border-top-left-radius:.28571429rem;border-bottom-left-radius:.28571429rem}.ui.vertical.attached.left.actions .button:first-child,.ui.vertical.attached.left.actions .button:last-child{border-top-right-radius:0;border-bottom-right-radius:0}.ui.vertical.attached.left.message.message.message{border-top-right-radius:.28571429rem;border-bottom-right-radius:.28571429rem}.ui.attached:not(.vertical):not(.top).actions{border-bottom-left-radius:.28571429rem;border-bottom-right-radius:.28571429rem}.ui.attached:not(.vertical):not(.top).actions .button:first-child{border-bottom-left-radius:.28571429rem}.ui.attached:not(.vertical):not(.top).actions .button:last-child{border-bottom-right-radius:.28571429rem}.ui.attached:not(.vertical).top.actions{border-top-left-radius:.28571429rem;border-top-right-radius:.28571429rem}.ui.attached:not(.vertical).top.actions .button:first-child{border-top-left-radius:.28571429rem}.ui.attached:not(.vertical).top.actions .button:last-child{border-top-right-radius:.28571429rem}.ui.toast{display:none;border-radius:.28571429rem;padding:.78571429em 1em;margin:0 -1px -.01em;color:rgba(0,0,0,.87);background-color:#fff}.ui.toast>.content>.header{font-weight:700;color:inherit;margin:0}.ui.toast.info{background-color:#31ccec;color:rgba(255,255,255,.9)}.ui.toast.warning{background-color:#f2c037;color:rgba(255,255,255,.9)}.ui.toast.success{background-color:#21ba45;color:rgba(255,255,255,.9)}.ui.toast.error{background-color:#db2828;color:rgba(255,255,255,.9)}.ui.toast.neutral{background-color:#fff;color:rgba(0,0,0,.87)}.ui.toast>i.icon:not(.close){font-size:1.5em}.ui.toast:not(.vertical):not(.centered):not(.center)>i.icon:not(.close){position:absolute}.ui.toast:not(.vertical):not(.centered):not(.center)>.ui.image{position:absolute}.ui.toast:not(.vertical)>i.icon:not(.close)+.content{padding-left:3em}.ui.toast:not(.vertical)>.close.icon+.content{padding-left:1.5em}.ui.toast:not(.vertical)>.ui.image.avatar+.content{padding-left:3em;min-height:2em}.ui.toast:not(.vertical)>.ui.image.mini+.content{padding-left:3.4em;min-height:35px}.ui.toast:not(.vertical)>.ui.image.tiny+.content{padding-left:7em;min-height:80px}.ui.toast:not(.vertical)>.ui.image.small+.content{padding-left:12em;min-height:150px}.ui.toast:not(.vertical):not(.centered):not(.center)>.centered.icon,.ui.toast:not(.vertical):not(.centered):not(.center)>.centered.image{-webkit-transform:translateY(-50%);transform:translateY(-50%);top:50%}.ui.toast:not(.vertical).actions>.centered.image{top:calc(50% - 2em)}.ui.toast:not(.vertical).actions>.centered.icon{top:calc(50% - 1.2em)}.ui.toast.vertical>.close.icon+.content{padding-left:1em}.ui.toast.vertical>.ui.image+.content,.ui.toast.vertical>i.icon:not(.close)+.content{padding-left:1em}.ui.toast.vertical>.ui.image{-ms-flex-item-align:start;align-self:flex-start;-ms-flex-negative:0;flex-shrink:0}.ui.toast.vertical>.centered.icon,.ui.toast.vertical>.centered.image{-ms-flex-item-align:center;align-self:center}.ui.toast.attached.bottom{border-top-left-radius:0;border-top-right-radius:0}.ui.toast.attached.top{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui.hoverfloating.message:hover{-webkit-box-shadow:0 0 0 1px inset,0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);box-shadow:0 0 0 1px inset,0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.center.toast-container .toast-box,.ui.right.toast-container .toast-box{margin-left:auto}.ui.center.toast-container .toast-box{margin-right:auto}.ui.ui.toast-container .toast-box .center.aligned.toast,.ui.ui.toast-container .toast-box .centered.toast{text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.ui.ui.toast-container .toast-box .center.aligned.toast>.content,.ui.ui.toast-container .toast-box .center.aligned.toast>.ui.image,.ui.ui.toast-container .toast-box .center.aligned.toast>i.icon:not(.close),.ui.ui.toast-container .toast-box .centered.toast>.content,.ui.ui.toast-container .toast-box .centered.toast>.ui.image,.ui.ui.toast-container .toast-box .centered.toast>i.icon:not(.close){-ms-flex-item-align:center;align-self:center}.ui.toast-container .toast-box .toast .center.aligned.content,.ui.toast-container .toast-box .toast .centered.content{text-align:center}.ui.toast-container .toast-box .center.aligned.actions,.ui.toast-container .toast-box .centered.actions{text-align:center}.ui.toast-container .toast-box .center.aligned.actions:not(.attached)>.button:not(.fluid),.ui.toast-container .toast-box .centered.actions:not(.attached)>.button:not(.fluid){margin-left:.25em;margin-right:.25em}.ui.primary.toast{background-color:#2185d0;color:rgba(255,255,255,.9)}.ui.inverted.primary.toast,.ui.toast-container .toast-box>.inverted.primary.attached.progress .bar{background-color:#54c8ff;color:rgba(0,0,0,.87)}.ui.secondary.toast{background-color:#1b1c1d;color:rgba(255,255,255,.9)}.ui.inverted.secondary.toast,.ui.toast-container .toast-box>.inverted.secondary.attached.progress .bar{background-color:#545454;color:rgba(0,0,0,.87)}.ui.red.toast{background-color:#db2828;color:rgba(255,255,255,.9)}.ui.inverted.red.toast,.ui.toast-container .toast-box>.inverted.red.attached.progress .bar{background-color:#ff695e;color:rgba(0,0,0,.87)}.ui.orange.toast{background-color:#f2711c;color:rgba(255,255,255,.9)}.ui.inverted.orange.toast,.ui.toast-container .toast-box>.inverted.orange.attached.progress .bar{background-color:#ff851b;color:rgba(0,0,0,.87)}.ui.yellow.toast{background-color:#fbbd08;color:rgba(255,255,255,.9)}.ui.inverted.yellow.toast,.ui.toast-container .toast-box>.inverted.yellow.attached.progress .bar{background-color:#ffe21f;color:rgba(0,0,0,.87)}.ui.olive.toast{background-color:#b5cc18;color:rgba(255,255,255,.9)}.ui.inverted.olive.toast,.ui.toast-container .toast-box>.inverted.olive.attached.progress .bar{background-color:#d9e778;color:rgba(0,0,0,.87)}.ui.green.toast{background-color:#21ba45;color:rgba(255,255,255,.9)}.ui.inverted.green.toast,.ui.toast-container .toast-box>.inverted.green.attached.progress .bar{background-color:#2ecc40;color:rgba(0,0,0,.87)}.ui.teal.toast{background-color:#00b5ad;color:rgba(255,255,255,.9)}.ui.inverted.teal.toast,.ui.toast-container .toast-box>.inverted.teal.attached.progress .bar{background-color:#6dffff;color:rgba(0,0,0,.87)}.ui.blue.toast{background-color:#2185d0;color:rgba(255,255,255,.9)}.ui.inverted.blue.toast,.ui.toast-container .toast-box>.inverted.blue.attached.progress .bar{background-color:#54c8ff;color:rgba(0,0,0,.87)}.ui.violet.toast{background-color:#6435c9;color:rgba(255,255,255,.9)}.ui.inverted.violet.toast,.ui.toast-container .toast-box>.inverted.violet.attached.progress .bar{background-color:#a291fb;color:rgba(0,0,0,.87)}.ui.purple.toast{background-color:#a333c8;color:rgba(255,255,255,.9)}.ui.inverted.purple.toast,.ui.toast-container .toast-box>.inverted.purple.attached.progress .bar{background-color:#dc73ff;color:rgba(0,0,0,.87)}.ui.pink.toast{background-color:#e03997;color:rgba(255,255,255,.9)}.ui.inverted.pink.toast,.ui.toast-container .toast-box>.inverted.pink.attached.progress .bar{background-color:#ff8edf;color:rgba(0,0,0,.87)}.ui.brown.toast{background-color:#a5673f;color:rgba(255,255,255,.9)}.ui.inverted.brown.toast,.ui.toast-container .toast-box>.inverted.brown.attached.progress .bar{background-color:#d67c1c;color:rgba(0,0,0,.87)}.ui.grey.toast{background-color:#767676;color:rgba(255,255,255,.9)}.ui.inverted.grey.toast,.ui.toast-container .toast-box>.inverted.grey.attached.progress .bar{background-color:#dcddde;color:rgba(0,0,0,.87)}.ui.black.toast{background-color:#1b1c1d;color:rgba(255,255,255,.9)}.ui.inverted.black.toast,.ui.toast-container .toast-box>.inverted.black.attached.progress .bar{background-color:#545454;color:rgba(0,0,0,.87)}.ui.inverted.toast{color:rgba(255,255,255,.9);background-color:#1b1c1d}@media only screen and (max-width:420px){.ui.toast-container .toast-box.toast-box,.ui.toast-container .toast-box>*,.ui.toast-container .toast-box>.compact,.ui.toast-container .toast-box>.vertical>*{width:auto;max-width:100%}.ui.toast-container .toast-box>:not(.vertical){min-width:280px}.ui.toast-container .toast-box>.ui.card.horizontal,.ui.toast-container .toast-box>.vertical>.ui.horizontal.card{min-width:initial}}@-webkit-keyframes progressDown{0%{width:100%}100%{width:0}}@keyframes progressDown{0%{width:100%}100%{width:0}}@-webkit-keyframes progressUp{0%{width:0}100%{width:100%}}@keyframes progressUp{0%{width:0}100%{width:100%}}@-webkit-keyframes progressWait{0%{opacity:1}100%{opacity:0}}@keyframes progressWait{0%{opacity:1}100%{opacity:0}} -/*! - * # Fomantic-UI 2.8.8 - Progress Bar - * http://github.com/fomantic/Fomantic-UI/ - * - * - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */.ui.progress{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;max-width:100%;border:none;margin:1em 0 2.5em;-webkit-box-shadow:none;box-shadow:none;background:rgba(0,0,0,.1);padding:0;border-radius:.28571429rem}.ui.progress:first-child{margin:0 0 2.5em}.ui.progress:last-child{margin:0 0 1.5em}.ui.progress .bar{display:block;line-height:1;position:relative;width:0;min-width:2em;background:#888;border-radius:.28571429rem;-webkit-transition:width .1s ease,background-color .1s ease;transition:width .1s ease,background-color .1s ease;overflow:hidden}.ui.ui.ui.progress:not([data-percent]):not(.indeterminate) .bar,.ui.ui.ui.progress[data-percent="0"]:not(.indeterminate) .bar{background:0 0}.ui.progress[data-percent="0"] .bar .progress{color:rgba(0,0,0,.87)}.ui.inverted.progress[data-percent="0"] .bar .progress{color:rgba(255,255,255,.9)}.ui.progress .bar>.progress{white-space:nowrap;position:absolute;width:auto;font-size:.92857143em;top:50%;right:.5em;left:auto;bottom:auto;color:rgba(255,255,255,.7);text-shadow:none;margin-top:-.5em;font-weight:700;text-align:left}.ui.right.aligned.progress{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.ui.right.aligned.progress .bar>.progress{left:.5em;right:auto}.ui.progress>.label{position:absolute;width:100%;font-size:1em;top:100%;right:auto;left:0;bottom:auto;color:rgba(0,0,0,.87);font-weight:700;text-shadow:none;margin-top:.2em;text-align:center;-webkit-transition:color .4s ease;transition:color .4s ease}.ui.indicating.progress[data-percent^="1"] .bar,.ui.indicating.progress[data-percent^="2"] .bar{background-color:#d95c5c}.ui.indicating.progress[data-percent^="3"] .bar{background-color:#efbc72}.ui.indicating.progress[data-percent^="4"] .bar,.ui.indicating.progress[data-percent^="5"] .bar{background-color:#e6bb48}.ui.indicating.progress[data-percent^="6"] .bar{background-color:#ddc928}.ui.indicating.progress[data-percent^="7"] .bar,.ui.indicating.progress[data-percent^="8"] .bar{background-color:#b4d95c}.ui.indicating.progress[data-percent^="100"] .bar,.ui.indicating.progress[data-percent^="9"] .bar{background-color:#66da81}.ui.indicating.progress[data-percent^="1"] .label,.ui.indicating.progress[data-percent^="2"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent^="3"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent^="4"] .label,.ui.indicating.progress[data-percent^="5"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent^="6"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent^="7"] .label,.ui.indicating.progress[data-percent^="8"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent^="100"] .label,.ui.indicating.progress[data-percent^="9"] .label{color:rgba(0,0,0,.87)}.ui.inverted.indicating.progress[data-percent^="1"] .label,.ui.inverted.indicating.progress[data-percent^="2"] .label{color:rgba(255,255,255,.9)}.ui.inverted.indicating.progress[data-percent^="3"] .label{color:rgba(255,255,255,.9)}.ui.inverted.indicating.progress[data-percent^="4"] .label,.ui.inverted.indicating.progress[data-percent^="5"] .label{color:rgba(255,255,255,.9)}.ui.inverted.indicating.progress[data-percent^="6"] .label{color:rgba(255,255,255,.9)}.ui.inverted.indicating.progress[data-percent^="7"] .label,.ui.inverted.indicating.progress[data-percent^="8"] .label{color:rgba(255,255,255,.9)}.ui.inverted.indicating.progress[data-percent^="100"] .label,.ui.inverted.indicating.progress[data-percent^="9"] .label{color:rgba(255,255,255,.9)}.ui.indicating.progress[data-percent="1"] .bar,.ui.indicating.progress[data-percent="2"] .bar,.ui.indicating.progress[data-percent="3"] .bar,.ui.indicating.progress[data-percent="4"] .bar,.ui.indicating.progress[data-percent="5"] .bar,.ui.indicating.progress[data-percent="6"] .bar,.ui.indicating.progress[data-percent="7"] .bar,.ui.indicating.progress[data-percent="8"] .bar,.ui.indicating.progress[data-percent="9"] .bar,.ui.indicating.progress[data-percent^="1."] .bar,.ui.indicating.progress[data-percent^="2."] .bar,.ui.indicating.progress[data-percent^="3."] .bar,.ui.indicating.progress[data-percent^="4."] .bar,.ui.indicating.progress[data-percent^="5."] .bar,.ui.indicating.progress[data-percent^="6."] .bar,.ui.indicating.progress[data-percent^="7."] .bar,.ui.indicating.progress[data-percent^="8."] .bar,.ui.indicating.progress[data-percent^="9."] .bar{background-color:#d95c5c}.ui.indicating.progress[data-percent="0"] .label,.ui.indicating.progress[data-percent="1"] .label,.ui.indicating.progress[data-percent="2"] .label,.ui.indicating.progress[data-percent="3"] .label,.ui.indicating.progress[data-percent="4"] .label,.ui.indicating.progress[data-percent="5"] .label,.ui.indicating.progress[data-percent="6"] .label,.ui.indicating.progress[data-percent="7"] .label,.ui.indicating.progress[data-percent="8"] .label,.ui.indicating.progress[data-percent="9"] .label,.ui.indicating.progress[data-percent^="0."] .label,.ui.indicating.progress[data-percent^="1."] .label,.ui.indicating.progress[data-percent^="2."] .label,.ui.indicating.progress[data-percent^="3."] .label,.ui.indicating.progress[data-percent^="4."] .label,.ui.indicating.progress[data-percent^="5."] .label,.ui.indicating.progress[data-percent^="6."] .label,.ui.indicating.progress[data-percent^="7."] .label,.ui.indicating.progress[data-percent^="8."] .label,.ui.indicating.progress[data-percent^="9."] .label{color:rgba(0,0,0,.87)}.ui.inverted.indicating.progress[data-percent="0"] .label,.ui.inverted.indicating.progress[data-percent="1"] .label,.ui.inverted.indicating.progress[data-percent="2"] .label,.ui.inverted.indicating.progress[data-percent="3"] .label,.ui.inverted.indicating.progress[data-percent="4"] .label,.ui.inverted.indicating.progress[data-percent="5"] .label,.ui.inverted.indicating.progress[data-percent="6"] .label,.ui.inverted.indicating.progress[data-percent="7"] .label,.ui.inverted.indicating.progress[data-percent="8"] .label,.ui.inverted.indicating.progress[data-percent="9"] .label,.ui.inverted.indicating.progress[data-percent^="0."] .label,.ui.inverted.indicating.progress[data-percent^="1."] .label,.ui.inverted.indicating.progress[data-percent^="2."] .label,.ui.inverted.indicating.progress[data-percent^="3."] .label,.ui.inverted.indicating.progress[data-percent^="4."] .label,.ui.inverted.indicating.progress[data-percent^="5."] .label,.ui.inverted.indicating.progress[data-percent^="6."] .label,.ui.inverted.indicating.progress[data-percent^="7."] .label,.ui.inverted.indicating.progress[data-percent^="8."] .label,.ui.inverted.indicating.progress[data-percent^="9."] .label{color:rgba(255,255,255,.9)}.ui.ui.indicating.progress.success .label{color:#1a531b}.ui.ui.progress.success .bar{background-color:#21ba45}.ui.ui.progress.success .bar,.ui.ui.progress.success .bar::after{-webkit-animation:none;animation:none}.ui.progress.success>.label{color:#1a531b}.ui.ui.progress.warning .bar{background-color:#f2c037}.ui.ui.progress.warning .bar,.ui.ui.progress.warning .bar::after{-webkit-animation:none;animation:none}.ui.progress.warning>.label{color:#794b02}.ui.ui.progress.error .bar{background-color:#db2828}.ui.ui.progress.error .bar,.ui.ui.progress.error .bar::after{-webkit-animation:none;animation:none}.ui.progress.error>.label{color:#912d2b}.ui.active.progress .bar{position:relative;min-width:2em}.ui.active.progress .bar::after{content:'';opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;background:#fff;border-radius:.28571429rem;-webkit-animation:progress-active 2s ease infinite;animation:progress-active 2s ease infinite;-webkit-transform-origin:left;transform-origin:left}.ui.active.right.aligned.progress .bar::after{-webkit-transform-origin:right;transform-origin:right}@-webkit-keyframes progress-active{0%{opacity:.3;-webkit-transform:scale(0,1);transform:scale(0,1)}100%{opacity:0;-webkit-transform:scale(1);transform:scale(1)}}@keyframes progress-active{0%{opacity:.3;-webkit-transform:scale(0,1);transform:scale(0,1)}100%{opacity:0;-webkit-transform:scale(1);transform:scale(1)}}.ui.disabled.progress{opacity:.35}.ui.ui.disabled.progress .bar,.ui.ui.disabled.progress .bar::after{-webkit-animation:none;animation:none}.ui.inverted.progress{background:rgba(255,255,255,.08);border:none}.ui.inverted.progress .bar{background:#888}.ui.inverted.progress .bar>.progress{color:#1b1c1d}.ui.inverted.progress>.label{color:#fff}.ui.inverted.progress.success>.label{color:#21ba45}.ui.inverted.progress.warning>.label{color:#f2c037}.ui.inverted.progress.error>.label{color:#db2828}.ui.progress.attached{background:0 0;position:relative;border:none;margin:0}.ui.progress.attached,.ui.progress.attached .bar{height:.2rem;padding:0;overflow:hidden;border-radius:0 0 .28571429rem .28571429rem}.ui.progress.attached .bar{border-radius:0}.ui.progress.top.attached,.ui.progress.top.attached .bar{top:0;border-radius:.28571429rem .28571429rem 0 0}.ui.progress.top.attached .bar{border-radius:0}.ui.card>.ui.attached.progress,.ui.segment>.ui.attached.progress{position:absolute;top:auto;left:0;bottom:100%;width:100%}.ui.card>.ui.bottom.attached.progress,.ui.segment>.ui.bottom.attached.progress{top:100%;bottom:auto}.ui.indeterminate.primary.progress .bar::before,.ui.primary.progress .bar,.ui.progress .primary.bar{background-color:#2185d0}.ui.inverted.indeterminate.primary.progress .bar::before,.ui.inverted.progress .primary.bar,.ui.primary.inverted.progress .bar{background-color:#54c8ff}.ui.indeterminate.secondary.progress .bar::before,.ui.progress .secondary.bar,.ui.secondary.progress .bar{background-color:#1b1c1d}.ui.inverted.indeterminate.secondary.progress .bar::before,.ui.inverted.progress .secondary.bar,.ui.secondary.inverted.progress .bar{background-color:#545454}.ui.indeterminate.red.progress .bar::before,.ui.progress .red.bar,.ui.red.progress .bar{background-color:#db2828}.ui.inverted.indeterminate.red.progress .bar::before,.ui.inverted.progress .red.bar,.ui.red.inverted.progress .bar{background-color:#ff695e}.ui.indeterminate.orange.progress .bar::before,.ui.orange.progress .bar,.ui.progress .orange.bar{background-color:#f2711c}.ui.inverted.indeterminate.orange.progress .bar::before,.ui.inverted.progress .orange.bar,.ui.orange.inverted.progress .bar{background-color:#ff851b}.ui.indeterminate.yellow.progress .bar::before,.ui.progress .yellow.bar,.ui.yellow.progress .bar{background-color:#fbbd08}.ui.inverted.indeterminate.yellow.progress .bar::before,.ui.inverted.progress .yellow.bar,.ui.yellow.inverted.progress .bar{background-color:#ffe21f}.ui.indeterminate.olive.progress .bar::before,.ui.olive.progress .bar,.ui.progress .olive.bar{background-color:#b5cc18}.ui.inverted.indeterminate.olive.progress .bar::before,.ui.inverted.progress .olive.bar,.ui.olive.inverted.progress .bar{background-color:#d9e778}.ui.green.progress .bar,.ui.indeterminate.green.progress .bar::before,.ui.progress .green.bar{background-color:#21ba45}.ui.green.inverted.progress .bar,.ui.inverted.indeterminate.green.progress .bar::before,.ui.inverted.progress .green.bar{background-color:#2ecc40}.ui.indeterminate.teal.progress .bar::before,.ui.progress .teal.bar,.ui.teal.progress .bar{background-color:#00b5ad}.ui.inverted.indeterminate.teal.progress .bar::before,.ui.inverted.progress .teal.bar,.ui.teal.inverted.progress .bar{background-color:#6dffff}.ui.blue.progress .bar,.ui.indeterminate.blue.progress .bar::before,.ui.progress .blue.bar{background-color:#2185d0}.ui.blue.inverted.progress .bar,.ui.inverted.indeterminate.blue.progress .bar::before,.ui.inverted.progress .blue.bar{background-color:#54c8ff}.ui.indeterminate.violet.progress .bar::before,.ui.progress .violet.bar,.ui.violet.progress .bar{background-color:#6435c9}.ui.inverted.indeterminate.violet.progress .bar::before,.ui.inverted.progress .violet.bar,.ui.violet.inverted.progress .bar{background-color:#a291fb}.ui.indeterminate.purple.progress .bar::before,.ui.progress .purple.bar,.ui.purple.progress .bar{background-color:#a333c8}.ui.inverted.indeterminate.purple.progress .bar::before,.ui.inverted.progress .purple.bar,.ui.purple.inverted.progress .bar{background-color:#dc73ff}.ui.indeterminate.pink.progress .bar::before,.ui.pink.progress .bar,.ui.progress .pink.bar{background-color:#e03997}.ui.inverted.indeterminate.pink.progress .bar::before,.ui.inverted.progress .pink.bar,.ui.pink.inverted.progress .bar{background-color:#ff8edf}.ui.brown.progress .bar,.ui.indeterminate.brown.progress .bar::before,.ui.progress .brown.bar{background-color:#a5673f}.ui.brown.inverted.progress .bar,.ui.inverted.indeterminate.brown.progress .bar::before,.ui.inverted.progress .brown.bar{background-color:#d67c1c}.ui.grey.progress .bar,.ui.indeterminate.grey.progress .bar::before,.ui.progress .grey.bar{background-color:#767676}.ui.grey.inverted.progress .bar,.ui.inverted.indeterminate.grey.progress .bar::before,.ui.inverted.progress .grey.bar{background-color:#dcddde}.ui.black.progress .bar,.ui.indeterminate.black.progress .bar::before,.ui.progress .black.bar{background-color:#1b1c1d}.ui.black.inverted.progress .bar,.ui.inverted.indeterminate.black.progress .bar::before,.ui.inverted.progress .black.bar{background-color:#545454}.ui.progress{font-size:1rem}.ui.progress .bar{height:1.75em}.ui.mini.progress{font-size:.78571429rem}.ui.mini.progress .bar{height:.3em}.ui.tiny.progress{font-size:.85714286rem}.ui.tiny.progress .bar{height:.5em}.ui.small.progress{font-size:.92857143rem}.ui.small.progress .bar{height:1em}.ui.large.progress{font-size:1.14285714rem}.ui.large.progress .bar{height:2.5em}.ui.big.progress{font-size:1.28571429rem}.ui.big.progress .bar{height:3.5em}.ui.huge.progress{font-size:1.42857143rem}.ui.huge.progress .bar{height:4em}.ui.massive.progress{font-size:1.71428571rem}.ui.massive.progress .bar{height:5em}.ui.indeterminate.progress .bar{width:100%}.ui.indeterminate.progress .bar .progress,.ui.progress .bar .centered.progress{text-align:center;position:relative;right:0}.ui.indeterminate.progress .bar::before{content:'';position:absolute;top:0;bottom:0;border-radius:.28571429rem;-webkit-animation:progress-pulsating 2s ease infinite;animation:progress-pulsating 2s ease infinite;-webkit-transform-origin:center;transform-origin:center;width:100%}.ui.slow.indeterminate.progress .bar::before{-webkit-animation-duration:4s;animation-duration:4s}.ui.fast.indeterminate.progress .bar::before{-webkit-animation-duration:1s;animation-duration:1s}.ui.swinging.indeterminate.progress .bar::before{-webkit-transform-origin:left;transform-origin:left;-webkit-animation-name:progress-swinging;animation-name:progress-swinging}.ui.sliding.indeterminate.progress .bar::before{-webkit-transform-origin:left;transform-origin:left;-webkit-animation-name:progress-sliding;animation-name:progress-sliding}.ui.filling.indeterminate.progress .bar::before{-webkit-animation-name:progress-filling;animation-name:progress-filling}.ui.indeterminate.progress:not(.sliding):not(.filling):not(.swinging) .bar::before{background:#fff}.ui.filling.indeterminate.progress .bar,.ui.sliding.indeterminate.progress .bar,.ui.swinging.indeterminate.progress .bar{background:rgba(0,0,0,.1)}.ui.sliding.indeterminate.progress .bar .progress,.ui.swinging.indeterminate.progress .bar .progress{color:#1b1c1d}.ui.inverted.filling.indeterminate.progress .bar,.ui.inverted.sliding.indeterminate.progress .bar,.ui.inverted.swinging.indeterminate.progress .bar{background:rgba(255,255,255,.08)}.ui.inverted.sliding.indeterminate.progress .bar .progress,.ui.inverted.swinging.indeterminate.progress .bar .progress{color:rgba(255,255,255,.7)}@-webkit-keyframes progress-swinging{0%,100%{width:10%;left:-25%}25%,65%{width:70%}50%{width:10%;left:100%}}@keyframes progress-swinging{0%,100%{width:10%;left:-25%}25%,65%{width:70%}50%{width:10%;left:100%}}@-webkit-keyframes progress-sliding{0%{width:10%;left:-25%}50%{width:70%}100%{width:10%;left:100%}}@keyframes progress-sliding{0%{width:10%;left:-25%}50%{width:70%}100%{width:10%;left:100%}}@-webkit-keyframes progress-filling{0%{-webkit-transform:scale(0,1);transform:scale(0,1)}80%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{opacity:0}}@keyframes progress-filling{0%{-webkit-transform:scale(0,1);transform:scale(0,1)}80%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{opacity:0}}@-webkit-keyframes progress-pulsating{0%{-webkit-transform:scale(0,1);transform:scale(0,1);opacity:.7}100%{-webkit-transform:scale(1);transform:scale(1);opacity:0}}@keyframes progress-pulsating{0%{-webkit-transform:scale(0,1);transform:scale(0,1);opacity:.7}100%{-webkit-transform:scale(1);transform:scale(1);opacity:0}} - /*! - * # Fomantic-UI 2.8.8 - Transition - * http://github.com/fomantic/Fomantic-UI/ - * - * - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */.transition{-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease;animation-timing-function:ease;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{-webkit-animation-play-state:paused;animation-play-state:paused}.looping.transition{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.transition.browse{-webkit-animation-duration:.5s;animation-duration:.5s}.transition.browse.in{-webkit-animation-name:browseIn;animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{-webkit-animation-name:browseOutLeft;animation-name:browseOutLeft}.transition.browse.right.out{-webkit-animation-name:browseOutRight;animation-name:browseOutRight}@-webkit-keyframes browseIn{0%{-webkit-transform:scale(.8) translateZ(0);transform:scale(.8) translateZ(0);z-index:-1}10%{-webkit-transform:scale(.8) translateZ(0);transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{-webkit-transform:scale(1.05) translateZ(0);transform:scale(1.05) translateZ(0);opacity:1;z-index:999}100%{-webkit-transform:scale(1) translateZ(0);transform:scale(1) translateZ(0);z-index:999}}@keyframes browseIn{0%{-webkit-transform:scale(.8) translateZ(0);transform:scale(.8) translateZ(0);z-index:-1}10%{-webkit-transform:scale(.8) translateZ(0);transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{-webkit-transform:scale(1.05) translateZ(0);transform:scale(1.05) translateZ(0);opacity:1;z-index:999}100%{-webkit-transform:scale(1) translateZ(0);transform:scale(1) translateZ(0);z-index:999}}@-webkit-keyframes browseOutLeft{0%{z-index:999;-webkit-transform:translateX(0) rotateY(0) rotateX(0);transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;-webkit-transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px);transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}100%{z-index:-1;-webkit-transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutLeft{0%{z-index:999;-webkit-transform:translateX(0) rotateY(0) rotateX(0);transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;-webkit-transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px);transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}100%{z-index:-1;-webkit-transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@-webkit-keyframes browseOutRight{0%{z-index:999;-webkit-transform:translateX(0) rotateY(0) rotateX(0);transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;-webkit-transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px);transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}100%{z-index:1;-webkit-transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;-webkit-transform:translateX(0) rotateY(0) rotateX(0);transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;-webkit-transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px);transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}100%{z-index:1;-webkit-transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-duration:.4s;animation-duration:.4s;-webkit-animation-timing-function:cubic-bezier(.34,1.61,.7,1);animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{-webkit-animation-name:dropIn;animation-name:dropIn}.drop.transition.out{-webkit-animation-name:dropOut;animation-name:dropOut}@-webkit-keyframes dropIn{0%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes dropIn{0%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes dropOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}}@keyframes dropOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}}.transition.fade.in{-webkit-animation-name:fadeIn;animation-name:fadeIn}.transition[class*="fade up"].in{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}.transition[class*="fade down"].in{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}.transition[class*="fade left"].in{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}.transition[class*="fade right"].in{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}.transition.fade.out{-webkit-animation-name:fadeOut;animation-name:fadeOut}.transition[class*="fade up"].out{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}.transition[class*="fade down"].out{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}.transition[class*="fade left"].out{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}.transition[class*="fade right"].out{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(10%);transform:translateY(10%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(10%);transform:translateY(10%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-10%);transform:translateY(-10%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-10%);transform:translateY(-10%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(10%);transform:translateX(10%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(10%);transform:translateX(10%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(-10%);transform:translateX(-10%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(-10%);transform:translateX(-10%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(5%);transform:translateY(5%)}}@keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(5%);transform:translateY(5%)}}@-webkit-keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-5%);transform:translateY(-5%)}}@keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-5%);transform:translateY(-5%)}}@-webkit-keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(5%);transform:translateX(5%)}}@keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(5%);transform:translateX(5%)}}@-webkit-keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-5%);transform:translateX(-5%)}}@keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-5%);transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{-webkit-animation-duration:.6s;animation-duration:.6s}.horizontal.flip.transition.in{-webkit-animation-name:horizontalFlipIn;animation-name:horizontalFlipIn}.horizontal.flip.transition.out{-webkit-animation-name:horizontalFlipOut;animation-name:horizontalFlipOut}.vertical.flip.transition.in{-webkit-animation-name:verticalFlipIn;animation-name:verticalFlipIn}.vertical.flip.transition.out{-webkit-animation-name:verticalFlipOut;animation-name:verticalFlipOut}@-webkit-keyframes horizontalFlipIn{0%{-webkit-transform:perspective(2000px) rotateY(-90deg);transform:perspective(2000px) rotateY(-90deg);opacity:0}100%{-webkit-transform:perspective(2000px) rotateY(0);transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes horizontalFlipIn{0%{-webkit-transform:perspective(2000px) rotateY(-90deg);transform:perspective(2000px) rotateY(-90deg);opacity:0}100%{-webkit-transform:perspective(2000px) rotateY(0);transform:perspective(2000px) rotateY(0);opacity:1}}@-webkit-keyframes verticalFlipIn{0%{-webkit-transform:perspective(2000px) rotateX(-90deg);transform:perspective(2000px) rotateX(-90deg);opacity:0}100%{-webkit-transform:perspective(2000px) rotateX(0);transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes verticalFlipIn{0%{-webkit-transform:perspective(2000px) rotateX(-90deg);transform:perspective(2000px) rotateX(-90deg);opacity:0}100%{-webkit-transform:perspective(2000px) rotateX(0);transform:perspective(2000px) rotateX(0);opacity:1}}@-webkit-keyframes horizontalFlipOut{0%{-webkit-transform:perspective(2000px) rotateY(0);transform:perspective(2000px) rotateY(0);opacity:1}100%{-webkit-transform:perspective(2000px) rotateY(90deg);transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes horizontalFlipOut{0%{-webkit-transform:perspective(2000px) rotateY(0);transform:perspective(2000px) rotateY(0);opacity:1}100%{-webkit-transform:perspective(2000px) rotateY(90deg);transform:perspective(2000px) rotateY(90deg);opacity:0}}@-webkit-keyframes verticalFlipOut{0%{-webkit-transform:perspective(2000px) rotateX(0);transform:perspective(2000px) rotateX(0);opacity:1}100%{-webkit-transform:perspective(2000px) rotateX(-90deg);transform:perspective(2000px) rotateX(-90deg);opacity:0}}@keyframes verticalFlipOut{0%{-webkit-transform:perspective(2000px) rotateX(0);transform:perspective(2000px) rotateX(0);opacity:1}100%{-webkit-transform:perspective(2000px) rotateX(-90deg);transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{-webkit-animation-name:scaleIn;animation-name:scaleIn}.scale.transition.out{-webkit-animation-name:scaleOut;animation-name:scaleOut}@-webkit-keyframes scaleIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes scaleIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes scaleOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.9);transform:scale(.9)}}@keyframes scaleOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.9);transform:scale(.9)}}.transition.fly{-webkit-animation-duration:.6s;animation-duration:.6s;-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{-webkit-animation-name:flyIn;animation-name:flyIn}.transition[class*="fly up"].in{-webkit-animation-name:flyInUp;animation-name:flyInUp}.transition[class*="fly down"].in{-webkit-animation-name:flyInDown;animation-name:flyInDown}.transition[class*="fly left"].in{-webkit-animation-name:flyInLeft;animation-name:flyInLeft}.transition[class*="fly right"].in{-webkit-animation-name:flyInRight;animation-name:flyInRight}.transition.fly.out{-webkit-animation-name:flyOut;animation-name:flyOut}.transition[class*="fly up"].out{-webkit-animation-name:flyOutUp;animation-name:flyOutUp}.transition[class*="fly down"].out{-webkit-animation-name:flyOutDown;animation-name:flyOutDown}.transition[class*="fly left"].out{-webkit-animation-name:flyOutLeft;animation-name:flyOutLeft}.transition[class*="fly right"].out{-webkit-animation-name:flyOutRight;animation-name:flyOutRight}@-webkit-keyframes flyIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes flyIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@-webkit-keyframes flyInUp{0%{opacity:0;-webkit-transform:translate3d(0,1500px,0);transform:translate3d(0,1500px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes flyInUp{0%{opacity:0;-webkit-transform:translate3d(0,1500px,0);transform:translate3d(0,1500px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@-webkit-keyframes flyInDown{0%{opacity:0;-webkit-transform:translate3d(0,-1500px,0);transform:translate3d(0,-1500px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes flyInDown{0%{opacity:0;-webkit-transform:translate3d(0,-1500px,0);transform:translate3d(0,-1500px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@-webkit-keyframes flyInLeft{0%{opacity:0;-webkit-transform:translate3d(1500px,0,0);transform:translate3d(1500px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes flyInLeft{0%{opacity:0;-webkit-transform:translate3d(1500px,0,0);transform:translate3d(1500px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@-webkit-keyframes flyInRight{0%{opacity:0;-webkit-transform:translate3d(-1500px,0,0);transform:translate3d(-1500px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes flyInRight{0%{opacity:0;-webkit-transform:translate3d(-1500px,0,0);transform:translate3d(-1500px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@-webkit-keyframes flyOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes flyOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@-webkit-keyframes flyOutUp{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes flyOutUp{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@-webkit-keyframes flyOutDown{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes flyOutDown{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@-webkit-keyframes flyOutRight{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes flyOutRight{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@-webkit-keyframes flyOutLeft{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{-webkit-animation-name:slideInY;animation-name:slideInY;-webkit-transform-origin:top center;transform-origin:top center}.transition[class*="slide up"].in{-webkit-animation-name:slideInY;animation-name:slideInY;-webkit-transform-origin:bottom center;transform-origin:bottom center}.transition[class*="slide left"].in{-webkit-animation-name:slideInX;animation-name:slideInX;-webkit-transform-origin:right center;transform-origin:right center}.transition[class*="slide right"].in{-webkit-animation-name:slideInX;animation-name:slideInX;-webkit-transform-origin:left center;transform-origin:left center}.transition.slide.out,.transition[class*="slide down"].out{-webkit-animation-name:slideOutY;animation-name:slideOutY;-webkit-transform-origin:top center;transform-origin:top center}.transition[class*="slide up"].out{-webkit-animation-name:slideOutY;animation-name:slideOutY;-webkit-transform-origin:bottom center;transform-origin:bottom center}.transition[class*="slide left"].out{-webkit-animation-name:slideOutX;animation-name:slideOutX;-webkit-transform-origin:right center;transform-origin:right center}.transition[class*="slide right"].out{-webkit-animation-name:slideOutX;animation-name:slideOutX;-webkit-transform-origin:left center;transform-origin:left center}@-webkit-keyframes slideInY{0%{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}100%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes slideInY{0%{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}100%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1)}}@-webkit-keyframes slideInX{0%{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}100%{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes slideInX{0%{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}100%{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@-webkit-keyframes slideOutY{0%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1)}100%{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}}@keyframes slideOutY{0%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1)}100%{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}}@-webkit-keyframes slideOutX{0%{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}100%{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}}@keyframes slideOutX{0%{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}100%{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}}.transition.swing{-webkit-animation-duration:.8s;animation-duration:.8s}.transition[class*="swing down"].in{-webkit-animation-name:swingInX;animation-name:swingInX;-webkit-transform-origin:top center;transform-origin:top center}.transition[class*="swing up"].in{-webkit-animation-name:swingInX;animation-name:swingInX;-webkit-transform-origin:bottom center;transform-origin:bottom center}.transition[class*="swing left"].in{-webkit-animation-name:swingInY;animation-name:swingInY;-webkit-transform-origin:right center;transform-origin:right center}.transition[class*="swing right"].in{-webkit-animation-name:swingInY;animation-name:swingInY;-webkit-transform-origin:left center;transform-origin:left center}.transition.swing.out,.transition[class*="swing down"].out{-webkit-animation-name:swingOutX;animation-name:swingOutX;-webkit-transform-origin:top center;transform-origin:top center}.transition[class*="swing up"].out{-webkit-animation-name:swingOutX;animation-name:swingOutX;-webkit-transform-origin:bottom center;transform-origin:bottom center}.transition[class*="swing left"].out{-webkit-animation-name:swingOutY;animation-name:swingOutY;-webkit-transform-origin:right center;transform-origin:right center}.transition[class*="swing right"].out{-webkit-animation-name:swingOutY;animation-name:swingOutY;-webkit-transform-origin:left center;transform-origin:left center}@-webkit-keyframes swingInX{0%{-webkit-transform:perspective(1000px) rotateX(90deg);transform:perspective(1000px) rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(1000px) rotateX(-30deg);transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{-webkit-transform:perspective(1000px) rotateX(15deg);transform:perspective(1000px) rotateX(15deg)}80%{-webkit-transform:perspective(1000px) rotateX(-7.5deg);transform:perspective(1000px) rotateX(-7.5deg)}100%{-webkit-transform:perspective(1000px) rotateX(0);transform:perspective(1000px) rotateX(0)}}@keyframes swingInX{0%{-webkit-transform:perspective(1000px) rotateX(90deg);transform:perspective(1000px) rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(1000px) rotateX(-30deg);transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{-webkit-transform:perspective(1000px) rotateX(15deg);transform:perspective(1000px) rotateX(15deg)}80%{-webkit-transform:perspective(1000px) rotateX(-7.5deg);transform:perspective(1000px) rotateX(-7.5deg)}100%{-webkit-transform:perspective(1000px) rotateX(0);transform:perspective(1000px) rotateX(0)}}@-webkit-keyframes swingInY{0%{-webkit-transform:perspective(1000px) rotateY(-90deg);transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{-webkit-transform:perspective(1000px) rotateY(30deg);transform:perspective(1000px) rotateY(30deg);opacity:1}60%{-webkit-transform:perspective(1000px) rotateY(-17.5deg);transform:perspective(1000px) rotateY(-17.5deg)}80%{-webkit-transform:perspective(1000px) rotateY(7.5deg);transform:perspective(1000px) rotateY(7.5deg)}100%{-webkit-transform:perspective(1000px) rotateY(0);transform:perspective(1000px) rotateY(0)}}@keyframes swingInY{0%{-webkit-transform:perspective(1000px) rotateY(-90deg);transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{-webkit-transform:perspective(1000px) rotateY(30deg);transform:perspective(1000px) rotateY(30deg);opacity:1}60%{-webkit-transform:perspective(1000px) rotateY(-17.5deg);transform:perspective(1000px) rotateY(-17.5deg)}80%{-webkit-transform:perspective(1000px) rotateY(7.5deg);transform:perspective(1000px) rotateY(7.5deg)}100%{-webkit-transform:perspective(1000px) rotateY(0);transform:perspective(1000px) rotateY(0)}}@-webkit-keyframes swingOutX{0%{-webkit-transform:perspective(1000px) rotateX(0);transform:perspective(1000px) rotateX(0)}40%{-webkit-transform:perspective(1000px) rotateX(-7.5deg);transform:perspective(1000px) rotateX(-7.5deg)}60%{-webkit-transform:perspective(1000px) rotateX(17.5deg);transform:perspective(1000px) rotateX(17.5deg)}80%{-webkit-transform:perspective(1000px) rotateX(-30deg);transform:perspective(1000px) rotateX(-30deg);opacity:1}100%{-webkit-transform:perspective(1000px) rotateX(90deg);transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutX{0%{-webkit-transform:perspective(1000px) rotateX(0);transform:perspective(1000px) rotateX(0)}40%{-webkit-transform:perspective(1000px) rotateX(-7.5deg);transform:perspective(1000px) rotateX(-7.5deg)}60%{-webkit-transform:perspective(1000px) rotateX(17.5deg);transform:perspective(1000px) rotateX(17.5deg)}80%{-webkit-transform:perspective(1000px) rotateX(-30deg);transform:perspective(1000px) rotateX(-30deg);opacity:1}100%{-webkit-transform:perspective(1000px) rotateX(90deg);transform:perspective(1000px) rotateX(90deg);opacity:0}}@-webkit-keyframes swingOutY{0%{-webkit-transform:perspective(1000px) rotateY(0);transform:perspective(1000px) rotateY(0)}40%{-webkit-transform:perspective(1000px) rotateY(7.5deg);transform:perspective(1000px) rotateY(7.5deg)}60%{-webkit-transform:perspective(1000px) rotateY(-10deg);transform:perspective(1000px) rotateY(-10deg)}80%{-webkit-transform:perspective(1000px) rotateY(30deg);transform:perspective(1000px) rotateY(30deg);opacity:1}100%{-webkit-transform:perspective(1000px) rotateY(-90deg);transform:perspective(1000px) rotateY(-90deg);opacity:0}}@keyframes swingOutY{0%{-webkit-transform:perspective(1000px) rotateY(0);transform:perspective(1000px) rotateY(0)}40%{-webkit-transform:perspective(1000px) rotateY(7.5deg);transform:perspective(1000px) rotateY(7.5deg)}60%{-webkit-transform:perspective(1000px) rotateY(-10deg);transform:perspective(1000px) rotateY(-10deg)}80%{-webkit-transform:perspective(1000px) rotateY(30deg);transform:perspective(1000px) rotateY(30deg);opacity:1}100%{-webkit-transform:perspective(1000px) rotateY(-90deg);transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{-webkit-animation-name:zoomIn;animation-name:zoomIn}.transition.zoom.out{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomIn{0%{opacity:1;-webkit-transform:scale(0);transform:scale(0)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes zoomIn{0%{opacity:1;-webkit-transform:scale(0);transform:scale(0)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:1;-webkit-transform:scale(0);transform:scale(0)}}@keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:1;-webkit-transform:scale(0);transform:scale(0)}}.flash.transition{-webkit-animation-duration:750ms;animation-duration:750ms;-webkit-animation-name:flash;animation-name:flash}.shake.transition{-webkit-animation-duration:750ms;animation-duration:750ms;-webkit-animation-name:shake;animation-name:shake}.bounce.transition{-webkit-animation-duration:750ms;animation-duration:750ms;-webkit-animation-name:bounce;animation-name:bounce}.tada.transition{-webkit-animation-duration:750ms;animation-duration:750ms;-webkit-animation-name:tada;animation-name:tada}.pulse.transition{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-name:pulse;animation-name:pulse}.jiggle.transition{-webkit-animation-duration:750ms;animation-duration:750ms;-webkit-animation-name:jiggle;animation-name:jiggle}.transition.glow{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:cubic-bezier(.19,1,.22,1);animation-timing-function:cubic-bezier(.19,1,.22,1)}.transition.glow{-webkit-animation-name:glow;animation-name:glow}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@-webkit-keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0);transform:translateY(0)}40%{-webkit-transform:translateY(-30px);transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px);transform:translateY(-15px)}}@keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0);transform:translateY(0)}40%{-webkit-transform:translateY(-30px);transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px);transform:translateY(-15px)}}@-webkit-keyframes tada{0%{-webkit-transform:scale(1);transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg);transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg);transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg);transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0);transform:scale(1) rotate(0)}}@keyframes tada{0%{-webkit-transform:scale(1);transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg);transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg);transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg);transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0);transform:scale(1) rotate(0)}}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}50%{-webkit-transform:scale(.9);transform:scale(.9);opacity:.7}100%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes pulse{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}50%{-webkit-transform:scale(.9);transform:scale(.9);opacity:.7}100%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes jiggle{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes jiggle{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@-webkit-keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}100%{background-color:#fcfcfd}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}100%{background-color:#fcfcfd}} \ No newline at end of file diff --git a/core/assets/img/google_logo.png b/core/assets/img/google_logo.png new file mode 100644 index 0000000000..bcce241b78 Binary files /dev/null and b/core/assets/img/google_logo.png differ diff --git a/core/assets/js/fomantic.toast.min.js b/core/assets/js/fomantic.toast.min.js deleted file mode 100644 index a9b8314d32..0000000000 --- a/core/assets/js/fomantic.toast.min.js +++ /dev/null @@ -1,33 +0,0 @@ -/* - * # Fomantic UI - 2.8.8 - * https://github.com/fomantic/Fomantic-UI - * http://fomantic-ui.com/ - * - * Copyright 2021 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ -!function(A,e,n,D){"use strict";A.isFunction=A.isFunction||function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},e=void 0!==e&&e.Math==Math?e:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),A.fn.toast=function(w){var k,e=A(this),T=e.selector||"",x=(new Date).getTime(),I=[],P=w,O="string"==typeof P,M=[].slice.call(arguments,1);return e.each(function(){var o,s,a,i,c,l,r,u,d=A.isPlainObject(w)?A.extend(!0,{},A.fn.toast.settings,w):A.extend({},A.fn.toast.settings),p=d.className,f=d.selector,m=d.error,e=d.namespace,g=d.fields,n="."+e,t=e+"-module",h=A(this),v=d.context?A(d.context):A("body"),b=h.hasClass("toast")||h.hasClass("message")||h.hasClass("card"),C=this,y=b?h.data(t):D;u={initialize:function(){u.verbose("Initializing element"),u.has.container()||u.create.container(),(b||""!==d.message||""!==d.title||""!==u.get.iconClass()||d.showImage||u.has.configActions())&&("string"==typeof d.showProgress&&-1!==[p.top,p.bottom].indexOf(d.showProgress)||(d.showProgress=!1),u.create.toast(),d.closeOnClick&&(d.closeIcon||0",{class:d.position+" "+p.container+" "+(d.horizontal?p.horizontal:"")}))},toast:function(){o=A("
",{class:p.box});var e=u.get.iconClass();if(b)s=d.cloneModule?h.clone().removeAttr("id"):h,r=s.find("> i"+u.helpers.toClass(p.close)),d.closeIcon=0");var n=A("
",{class:p.content});""!==e&&s.append(A("",{class:e+" "+p.icon})),d.showImage&&s.append(A("",{class:p.image+" "+d.classImage,src:d.showImage})),""!==d.title&&n.append(A("
",{class:p.title,text:d.title})),n.append(A("
",{class:p.message,html:u.helpers.escape(d.message,d.preserveHTML)})),s.addClass(d.class+" "+p.toast).append(n),s.css("opacity",d.opacity),d.closeIcon&&((r=A("",{class:p.close+" "+("string"==typeof d.closeIcon?d.closeIcon:"")})).hasClass(p.left)?s.prepend(r):s.append(r))}if(s.hasClass(p.compact)&&(d.compact=!0),s.hasClass("card")&&(d.compact=!1),a=s.find(".actions"),u.has.configActions()&&(0===a.length&&(a=A("
",{class:p.actions+" "+(d.classActions||"")}).appendTo(s)),s.hasClass("card")&&!a.hasClass(p.attached)&&(a.addClass(p.extraContent),a.hasClass(p.vertical)&&(a.removeClass(p.vertical),u.error(m.verticalCard))),d.actions.forEach(function(e){var n=e[g.icon]?'':"",t=u.helpers.escape(e[g.text]||"",d.preserveHTML),o=u.helpers.deQuote(e[g.class]||""),s=e[g.click]&&A.isFunction(e[g.click])?e[g.click]:function(){};a.append(A("'+ - '
'+ - '
'+ - '
' -); - -_display.modal = function ( options ) { - return function ( row, update, render ) { - if ( ! $.fn.modal ) { - _original( row, update, render ); - } - else { - if ( ! update ) { - if ( options && options.header ) { - _modal.find('div.header') - .empty() - .append( '

'+options.header( row )+'

' ); - } - - _modal.find( 'div.content' ) - .empty() - .append( render() ); - - _modal - .appendTo( 'body' ) - .modal('show'); - } - } - }; -}; - - -return DataTable.Responsive; -})); diff --git a/core/assets/plugins/dataTables/Responsive-2.2.0/js/responsive.fomanticui.min.js b/core/assets/plugins/dataTables/Responsive-2.2.0/js/responsive.fomanticui.min.js deleted file mode 100644 index 42978b1c69..0000000000 --- a/core/assets/plugins/dataTables/Responsive-2.2.0/js/responsive.fomanticui.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! - Bootstrap integration for DataTables' Responsive - ©2015-2016 SpryMedia Ltd - datatables.net/license -*/ -(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-se","datatables.net-responsive"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-se")(a,b).$;b.fn.dataTable.Responsive||require("datatables.net-responsive")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable,b=a.Responsive.display,g=b.modal,d=c('
+
+
+
+ + + +
+
+
diff --git a/custom/panel_templates/Default/core/hooks_edit.tpl b/custom/panel_templates/Default/core/hooks_edit.tpl index d818737667..1e7b14320c 100644 --- a/custom/panel_templates/Default/core/hooks_edit.tpl +++ b/custom/panel_templates/Default/core/hooks_edit.tpl @@ -64,18 +64,26 @@
- {foreach from=$ALL_EVENTS key=key item=item} + {foreach from=$ALL_EVENTS key=key item=meta}
- +
{/foreach} @@ -109,4 +117,4 @@ - \ No newline at end of file + diff --git a/custom/panel_templates/Default/core/hooks_new.tpl b/custom/panel_templates/Default/core/hooks_new.tpl index 8ec3f24fbb..6cc9779498 100644 --- a/custom/panel_templates/Default/core/hooks_new.tpl +++ b/custom/panel_templates/Default/core/hooks_new.tpl @@ -64,19 +64,28 @@
- {foreach from=$ALL_EVENTS key=key item=item} -
- - -
+ {foreach from=$ALL_EVENTS key=key item=meta} +
+ + +
{/foreach}
@@ -108,4 +117,4 @@ - \ No newline at end of file + diff --git a/custom/panel_templates/Default/core/images.tpl b/custom/panel_templates/Default/core/images.tpl index 3a214db1c0..6a6e86ac22 100644 --- a/custom/panel_templates/Default/core/images.tpl +++ b/custom/panel_templates/Default/core/images.tpl @@ -39,28 +39,36 @@ {include file='includes/alerts.tpl'} - {if isset($BACKGROUNDS_NOT_WRITABLE) || isset($TEMPLATE_BANNERS_DIRECTORY_NOT_WRITABLE) || - isset($LOGOS_DIRECTORY_NOT_WRITABLE) || isset($FAVICONS_DIRECTORY_NOT_WRITABLE)} -
-
{$ERRORS_TITLE}
-
    - {if isset($BACKGROUNDS_NOT_WRITABLE)} -
  • {$BACKGROUNDS_NOT_WRITABLE}
  • - {/if} - - {if isset($TEMPLATE_BANNERS_DIRECTORY_NOT_WRITABLE)} -
  • {$TEMPLATE_BANNERS_DIRECTORY_NOT_WRITABLE}
  • - {/if} - - {if isset($LOGOS_DIRECTORY_NOT_WRITABLE)} -
  • {$LOGOS_DIRECTORY_NOT_WRITABLE}
  • - {/if} - - {if isset($FAVICONS_DIRECTORY_NOT_WRITABLE)} -
  • {$FAVICONS_DIRECTORY_NOT_WRITABLE}
  • - {/if} -
-
+ {if isset($BACKGROUNDS_NOT_WRITABLE) + || isset($TEMPLATE_BANNERS_DIRECTORY_NOT_WRITABLE) + || isset($LOGOS_DIRECTORY_NOT_WRITABLE) + || isset($FAVICONS_DIRECTORY_NOT_WRITABLE) + || isset($OG_IMAGES_DIRECTORY_NOT_WRITABLE) + } +
+
{$ERRORS_TITLE}
+
    + {if isset($BACKGROUNDS_NOT_WRITABLE)} +
  • {$BACKGROUNDS_NOT_WRITABLE}
  • + {/if} + + {if isset($TEMPLATE_BANNERS_DIRECTORY_NOT_WRITABLE)} +
  • {$TEMPLATE_BANNERS_DIRECTORY_NOT_WRITABLE}
  • + {/if} + + {if isset($LOGOS_DIRECTORY_NOT_WRITABLE)} +
  • {$LOGOS_DIRECTORY_NOT_WRITABLE}
  • + {/if} + + {if isset($FAVICONS_DIRECTORY_NOT_WRITABLE)} +
  • {$FAVICONS_DIRECTORY_NOT_WRITABLE}
  • + {/if} + + {if isset($OG_IMAGES_DIRECTORY_NOT_WRITABLE)} +
  • {$OG_IMAGES_DIRECTORY_NOT_WRITABLE}
  • + {/if} +
+
{/if}

{$BANNER_IMAGE}

@@ -68,8 +76,9 @@
@@ -77,8 +86,7 @@
{$RESET_BANNER} - +
@@ -87,8 +95,9 @@
@@ -96,8 +105,7 @@
{$RESET_LOGO} - +
@@ -106,8 +114,9 @@
@@ -115,8 +124,26 @@
{$RESET_FAVICON} - + + +
+ +

{$FALLBACK_OG_IMAGE}

+ +
+ + + +
+ + {$RESET_OG_IMAGE} +
@@ -135,14 +162,12 @@
- - - - + + diff --git a/custom/panel_templates/Default/core/seo.tpl b/custom/panel_templates/Default/core/seo.tpl index a2ac26e10c..0ff8df2315 100644 --- a/custom/panel_templates/Default/core/seo.tpl +++ b/custom/panel_templates/Default/core/seo.tpl @@ -116,4 +116,4 @@ - \ No newline at end of file + diff --git a/custom/panel_templates/Default/core/seo_metadata_edit.tpl b/custom/panel_templates/Default/core/seo_metadata_edit.tpl index db2e073c15..1117217af5 100644 --- a/custom/panel_templates/Default/core/seo_metadata_edit.tpl +++ b/custom/panel_templates/Default/core/seo_metadata_edit.tpl @@ -58,6 +58,18 @@
+ {if $OG_IMAGES_ARRAY|count} +
+ + +
+ {/if}
@@ -85,6 +97,10 @@ {include file='scripts.tpl'} + + - \ No newline at end of file + diff --git a/custom/panel_templates/Default/core/user.tpl b/custom/panel_templates/Default/core/user.tpl index 3501154df5..328292ff1a 100644 --- a/custom/panel_templates/Default/core/user.tpl +++ b/custom/panel_templates/Default/core/user.tpl @@ -79,44 +79,38 @@
- +
- +
- +
- +
- +
{if isset($EMAIL_ADDRESS)}
- +
{/if} @@ -129,6 +123,12 @@
{/if} +
+
+ + +
+
@@ -201,4 +201,4 @@ - \ No newline at end of file + diff --git a/custom/panel_templates/Default/core/users_edit.tpl b/custom/panel_templates/Default/core/users_edit.tpl index e581798587..493dab4877 100644 --- a/custom/panel_templates/Default/core/users_edit.tpl +++ b/custom/panel_templates/Default/core/users_edit.tpl @@ -90,13 +90,13 @@ placeholder="{$USERNAME}" value="{$USERNAME_VALUE}"> {if $DISPLAYNAMES eq true} -
- - -
+
+ + +
{else} - + {/if}
@@ -109,18 +109,38 @@ placeholder="{$USER_TITLE}" value="{$USER_TITLE_VALUE}">
{if $PRIVATE_PROFILE_ENABLED eq true} +
+ + +
+ {else} + + {/if}
- - + {foreach from=$LANGUAGES item=language} + + {/foreach} + +
+
+ +
- {else} - - {/if}
+
+ + +
+
@@ -61,6 +66,7 @@ {$USE_REACTIONS}
+
diff --git a/custom/panel_templates/Default/integrations/minecraft/placeholders.tpl b/custom/panel_templates/Default/integrations/minecraft/placeholders.tpl index 52ffdb2813..b7a04c4013 100644 --- a/custom/panel_templates/Default/integrations/minecraft/placeholders.tpl +++ b/custom/panel_templates/Default/integrations/minecraft/placeholders.tpl @@ -49,6 +49,8 @@ {if count($ALL_PLACEHOLDERS)}
+ +
{$LEADERBOARD_ENABLED} {$LEADERBOARD_SETTINGS} + @@ -132,6 +135,11 @@ + + + {$DELETE} + + {/foreach} @@ -160,9 +168,54 @@
+ +
+ {include file='scripts.tpl'} diff --git a/custom/panel_templates/Default/members/member_lists.tpl b/custom/panel_templates/Default/members/member_lists.tpl index 81e58c7ad2..e0667f3196 100644 --- a/custom/panel_templates/Default/members/member_lists.tpl +++ b/custom/panel_templates/Default/members/member_lists.tpl @@ -25,6 +25,7 @@

{$MEMBER_LISTS}

diff --git a/custom/panel_templates/Default/template.php b/custom/panel_templates/Default/template.php index 13b962b7ff..247b9bf700 100644 --- a/custom/panel_templates/Default/template.php +++ b/custom/panel_templates/Default/template.php @@ -5,7 +5,7 @@ * * For NamelessMC * https://github.com/NamelessMC/Nameless/ - * NamelessMC version 2.0.0 + * NamelessMC version 2.1.0 * * License: MIT * @@ -24,8 +24,8 @@ public function __construct(Smarty $smarty, Language $language) { parent::__construct( 'Default', // Template name - '2.0.3', // Template version - '2.0.3', // Nameless version template is made for + '2.1.0', // Template version + '2.1.0', // Nameless version template is made for 'Coldfire' // Author, you can use HTML here ); @@ -40,7 +40,7 @@ public function __construct(Smarty $smarty, Language $language) { $this->addCSSFiles([ (defined('CONFIG_PATH') ? CONFIG_PATH : '') . '/custom/panel_templates/Default/assets/css/sb-admin-2.min.css' => [], 'https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i' => [], - (defined('CONFIG_PATH') ? CONFIG_PATH : '') . '/custom/panel_templates/Default/assets/css/custom.css?v=200' => [], + (defined('CONFIG_PATH') ? CONFIG_PATH : '') . '/custom/panel_templates/Default/assets/css/custom.css?v=210' => [], ]); $this->addJSFiles([ @@ -154,13 +154,6 @@ public function onPageLoad() { $this->assets()->include([ AssetTree::DATATABLES ]); - $this->addCSSFiles([ - (defined('CONFIG_PATH') ? CONFIG_PATH : '') . '/core/assets/css/fomantic.toast.min.css' => [], - ]); - - $this->addJSFiles([ - (defined('CONFIG_PATH') ? CONFIG_PATH : '') . '/core/assets/js/fomantic.toast.min.js' => [], - ]); $this->addJSScript(' $(document).ready(function() { @@ -224,16 +217,7 @@ public function onPageLoad() { AssetTree::TINYMCE, ]); - $this->addCSSFiles([ - (defined('CONFIG_PATH') ? CONFIG_PATH : '') . '/core/assets/css/fomantic.toast.min.css' => [] - ]); - - $this->addJSFiles([ - (defined('CONFIG_PATH') ? CONFIG_PATH : '') . '/core/assets/js/fomantic.toast.min.js' => [], - ]); - $this->addJSScript(Input::createTinyEditor($this->_language, 'InputMaintenanceMessage', null, false, true)); - break; case 'privacy_and_terms': diff --git a/custom/templates/DefaultRevamp/css/custom.css b/custom/templates/DefaultRevamp/css/custom.css index 2c996acedb..0bc22da520 100755 --- a/custom/templates/DefaultRevamp/css/custom.css +++ b/custom/templates/DefaultRevamp/css/custom.css @@ -9,6 +9,13 @@ body { body.pushable>.pusher { background: #f3f6fa; + display: flex; + min-height: 100vh; + flex-direction: column; +} + +#wrapper { + margin-bottom: 1rem; } /* @@ -264,8 +271,13 @@ body.pushable>.pusher { } } +#topic-post #post-content { + display: flex; + flex-direction: column; +} + #topic-post #post-content #reactions { - margin-top: 1rem; + margin-top: auto; padding: .7em 1.2em .7em 1.2em; min-height: 32.5px; font-size: .85em; @@ -456,7 +468,8 @@ body.pushable>.pusher { */ .ui.footer.segment { - margin: 1rem 0 -.5rem 0; + position: relative; + margin: auto 0 -.5rem 0; padding: 3em 0; } @@ -653,7 +666,6 @@ body.pushable>.pusher { flex: 0 0 auto; width: auto; line-height: 1; - vertical-align: middle; font-size: 3em; opacity: .8; } @@ -958,6 +970,10 @@ select { height: auto; } +#post-content .forum_post { + margin-bottom: 1rem; +} + .ui.checkbox .box:before { margin-top: 4px; } @@ -992,7 +1008,7 @@ select { position: absolute; } -.darkmode-toggle:checked + .darkmode-toggle-label .darkmode-ball { +.darkmode-toggle:checked+.darkmode-toggle-label .darkmode-ball { transform: translateX(24px); } @@ -1006,6 +1022,7 @@ select { padding: 5px; height: 26px; width: 50px; + cursor: pointer; } .darkmode-ball { @@ -1024,13 +1041,13 @@ select { } .fa-sun { - color:#f39c00; + color: #f39c00; } /* Member list search images */ -.ui.search > .results .result .image { +.ui.search>.results .result .image { border-radius: 0; } @@ -1045,10 +1062,12 @@ select { padding: 0.5em; } +/* * [ EMOJI SIZING ] */ -.joypixels, .twemoji { +.joypixels, +.twemoji { height: 1em; width: 1em; vertical-align: middle; @@ -1456,4 +1475,4 @@ body.dark .cc-window.cc-floating .cc-highlight .cc-btn.cc-allow { body.dark .white { color: #fff; -} +} \ No newline at end of file diff --git a/custom/templates/DefaultRevamp/footer.tpl b/custom/templates/DefaultRevamp/footer.tpl index 40a1bd0f73..dec3163d49 100755 --- a/custom/templates/DefaultRevamp/footer.tpl +++ b/custom/templates/DefaultRevamp/footer.tpl @@ -19,7 +19,7 @@
- + - {if !$LOGGED_IN_USER} - + {if isset($AUTO_LANGUAGE)} + {/if} @@ -104,29 +104,34 @@ return false; } - {if !$LOGGED_IN_USER} - const autoLanguage = document.getElementById('auto-language'); - const autoLanguageValue = $.cookie('auto_language') ?? 'true'; - autoLanguage.innerText = '{$AUTO_LANGUAGE_TEXT} (' + (autoLanguageValue === 'true' ? '{$ENABLED}' : '{$DISABLED}') + ')'; - {/if} + {if isset($AUTO_LANGUAGE)} + const autoLanguage = document.getElementById('auto-language'); + const autoLanguageValue = $.cookie('auto_language') ?? 'true'; + autoLanguage.innerText = '{$AUTO_LANGUAGE_TEXT} (' + (autoLanguageValue === 'true' ? '{$ENABLED}' : '{$DISABLED}') + ')'; + {if isset($AUTO_LANGUAGE_VALUE)} + if (autoLanguageValue) { + autoLanguage.title = '{$AUTO_LANGUAGE_VALUE}'; + } + {/if} - function toggleAutoLanguage() { - $.cookie( - 'auto_language', - autoLanguageValue === 'true' ? 'false' : 'true', - { path: '/' } - ); - window.location.reload(); - } + function toggleAutoLanguage() { + $.cookie( + 'auto_language', + autoLanguageValue === 'true' ? 'false' : 'true', + { path: '/' } + ); + window.location.reload(); + } + {/if} {if isset($NEW_UPDATE) && ($NEW_UPDATE_URGENT != true)} - + {/if} {if !isset($EXCLUDE_END_BODY)} -{if isset($DEBUGBAR_HTML)} -{$DEBUGBAR_HTML} + {if isset($DEBUGBAR_HTML)} + {$DEBUGBAR_HTML} {/if} diff --git a/custom/templates/DefaultRevamp/forum/move.tpl b/custom/templates/DefaultRevamp/forum/move.tpl index eee0a0120f..f9eaafac4d 100755 --- a/custom/templates/DefaultRevamp/forum/move.tpl +++ b/custom/templates/DefaultRevamp/forum/move.tpl @@ -18,15 +18,15 @@
{$MOVE_TO}
@@ -41,4 +41,4 @@ -{include file='footer.tpl'} \ No newline at end of file +{include file='footer.tpl'} diff --git a/custom/templates/DefaultRevamp/forum/view_topic.tpl b/custom/templates/DefaultRevamp/forum/view_topic.tpl index 89a7725ba8..620558ff75 100755 --- a/custom/templates/DefaultRevamp/forum/view_topic.tpl +++ b/custom/templates/DefaultRevamp/forum/view_topic.tpl @@ -180,7 +180,7 @@ {if (isset($LOGGED_IN_USER) && $reply.user_id !== $USER_ID || count($reply.post_reactions))}
{if (isset($LOGGED_IN_USER) && $reply.user_id !== $USER_ID)} - Like + {$LIKE}