commit 9c8766a1a43020b4af6eab9325f8b67a1093d17a Author: john Date: Wed Jul 10 14:57:22 2024 +0800 🎉 init: diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..5d12634 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +# editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..261ae5d --- /dev/null +++ b/.gitignore @@ -0,0 +1,92 @@ +# Created by .ignore support plugin (hsz.mobi) +### Node template +# Logs +/logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +/server +*.zip +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# next.js build output +.next + +# nuxt.js build output +.nuxt + +# Nuxt generate +dist + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless + +# IDE / Editor +.idea + +# Service worker +sw.* + +# macOS +.DS_Store + +# Vim swap files +*.swp diff --git a/README.md b/README.md new file mode 100644 index 0000000..91748af --- /dev/null +++ b/README.md @@ -0,0 +1,69 @@ +# demo + +## Build Setup + +```bash +# install dependencies +$ yarn install + +# serve with hot reload at localhost:3000 +$ yarn dev + +# build for production and launch server +$ yarn build +$ yarn start + +# generate static project +$ yarn generate +``` + +For detailed explanation on how things work, check out the [documentation](https://nuxtjs.org). + +## Special Directories + +You can create the following extra directories, some of which have special behaviors. Only `pages` is required; you can delete them if you don't want to use their functionality. + +### `assets` + +The assets directory contains your uncompiled assets such as Stylus or Sass files, images, or fonts. + +More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/assets). + +### `components` + +The components directory contains your Vue.js components. Components make up the different parts of your page and can be reused and imported into your pages, layouts and even other components. + +More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/components). + +### `layouts` + +Layouts are a great help when you want to change the look and feel of your Nuxt app, whether you want to include a sidebar or have distinct layouts for mobile and desktop. + +More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/layouts). + + +### `pages` + +This directory contains your application views and routes. Nuxt will read all the `*.vue` files inside this directory and setup Vue Router automatically. + +More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/get-started/routing). + +### `plugins` + +The plugins directory contains JavaScript plugins that you want to run before instantiating the root Vue.js Application. This is the place to add Vue plugins and to inject functions or constants. Every time you need to use `Vue.use()`, you should create a file in `plugins/` and add its path to plugins in `nuxt.config.js`. + +More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/plugins). + +### `static` + +This directory contains your static files. Each file inside this directory is mapped to `/`. + +Example: `/static/robots.txt` is mapped as `/robots.txt`. + +More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/static). + +### `store` + +This directory contains your Vuex store files. Creating a file in this directory automatically activates Vuex. + +More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/store). diff --git a/assets/data/q3.json b/assets/data/q3.json new file mode 100644 index 0000000..b96a5da --- /dev/null +++ b/assets/data/q3.json @@ -0,0 +1 @@ +{"v":"5.6.10","fr":30,"ip":0,"op":81,"w":630,"h":630,"nm":"合成 3","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"X","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[315,315,0],"ix":2},"a":{"a":0,"k":[-25.813,-34.125,0],"ix":1},"s":{"a":0,"k":[160,160,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-44.625,-62.75],[-64,-62.75],[-36.25,-34],[-64.625,-5.625],[-44.25,-5.625],[-25.125,-23.75],[-7.5,-5.5],[13,-5.5],[-15.375,-33.5],[12.875,-62.75],[-7.125,-62.75],[-25.5,-44.5]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.917647058824,0.607843137255,0.078431372549,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.917647058824,0.607843137255,0.078431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":459,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"白色圆","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[315,315,0],"ix":2},"a":{"a":0,"k":[9.5,-4,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"ef":[{"ty":5,"nm":"发光","np":16,"mn":"ADBE Glo2","ix":1,"en":1,"ef":[{"ty":7,"nm":"发光基于","mn":"ADBE Glo2-0001","ix":1,"v":{"a":0,"k":2,"ix":1}},{"ty":0,"nm":"发光阈值","mn":"ADBE Glo2-0002","ix":2,"v":{"a":0,"k":46,"ix":2}},{"ty":0,"nm":"发光半径","mn":"ADBE Glo2-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[40]},{"t":81,"s":[0]}],"ix":3}},{"ty":0,"nm":"发光强度","mn":"ADBE Glo2-0004","ix":4,"v":{"a":0,"k":4.74,"ix":4}},{"ty":7,"nm":"合成原始项目","mn":"ADBE Glo2-0005","ix":5,"v":{"a":0,"k":2,"ix":5}},{"ty":7,"nm":"发光操作","mn":"ADBE Glo2-0006","ix":6,"v":{"a":0,"k":3,"ix":6}},{"ty":7,"nm":"发光颜色","mn":"ADBE Glo2-0007","ix":7,"v":{"a":0,"k":1,"ix":7}},{"ty":7,"nm":"颜色循环","mn":"ADBE Glo2-0008","ix":8,"v":{"a":0,"k":3,"ix":8}},{"ty":0,"nm":"颜色循环","mn":"ADBE Glo2-0009","ix":9,"v":{"a":0,"k":1,"ix":9}},{"ty":0,"nm":"色彩相位","mn":"ADBE Glo2-0010","ix":10,"v":{"a":0,"k":0,"ix":10}},{"ty":0,"nm":"A 和 B 中点","mn":"ADBE Glo2-0011","ix":11,"v":{"a":0,"k":0.5,"ix":11}},{"ty":2,"nm":"颜色 A","mn":"ADBE Glo2-0012","ix":12,"v":{"a":0,"k":[1,1,1,0],"ix":12}},{"ty":2,"nm":"颜色 B","mn":"ADBE Glo2-0013","ix":13,"v":{"a":0,"k":[1,1,1,1],"ix":13}},{"ty":7,"nm":"发光维度","mn":"ADBE Glo2-0014","ix":14,"v":{"a":0,"k":1,"ix":14}}]}],"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[292,292],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.917646998985,0.60784295774,0.078431006039,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[9.5,-4],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":450,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"圆圈","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[315,315,0],"ix":2},"a":{"a":0,"k":[403.5,-201.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[233,233],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.917646998985,0.60784295774,0.078431006039,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.917633056641,0.607818603516,0.078430175781,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[404.96,-201.85],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[111.937,111.937],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 3","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[241,241],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.917646998985,0.60784295774,0.078431006039,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.917633056641,0.607818603516,0.078430175781,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[403.5,-201.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150.877,150.877],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":5,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"st","c":{"a":0,"k":[0.917646998985,0.60784295774,0.078431006039,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.917633056641,0.607818603516,0.078430175781,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":450,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"黄色圆","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":81,"s":[360]}],"ix":10},"p":{"a":0,"k":[315.5,315,0],"ix":2},"a":{"a":0,"k":[2885.821,-136.692,0],"ix":1},"s":{"a":0,"k":[9,9,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[268,268],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.917647058824,0.607843137255,0.078431372549,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.917647058824,0.607843137255,0.078431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-408.624,-136.692],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":450,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"小圆 3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":33,"s":[100]},{"t":58,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[315,315,0],"ix":2},"a":{"a":0,"k":[-177,-129,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":10,"s":[137,137,100]},{"t":40,"s":[220,220,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[268,268],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.917647058824,0.607843137255,0.078431372549,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-177,-129],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":10,"op":460,"st":10,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"小圆","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":23,"s":[100]},{"t":48,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[315,315,0],"ix":2},"a":{"a":0,"k":[-177,-129,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[137,137,100]},{"t":30,"s":[220,220,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[268,268],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.917647058824,0.607843137255,0.078431372549,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-177,-129],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":450,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"大圆","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":84,"ix":10},"p":{"a":0,"k":[315,315,0],"ix":2},"a":{"a":0,"k":[-177,-129,0],"ix":1},"s":{"a":0,"k":[220,220,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[268,268],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.917647058824,0.607843137255,0.078431372549,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.976470588235,0.976470588235,0.976470588235,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-177,-129],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":450,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/assets/fonts/Manrope-Bold.ttf b/assets/fonts/Manrope-Bold.ttf new file mode 100644 index 0000000..db03274 Binary files /dev/null and b/assets/fonts/Manrope-Bold.ttf differ diff --git a/assets/fonts/Manrope-Regular.ttf b/assets/fonts/Manrope-Regular.ttf new file mode 100644 index 0000000..7cf09bf Binary files /dev/null and b/assets/fonts/Manrope-Regular.ttf differ diff --git a/assets/js/static.js b/assets/js/static.js new file mode 100644 index 0000000..0ec1a81 --- /dev/null +++ b/assets/js/static.js @@ -0,0 +1,128 @@ +export const tabs=[ + { + name:'index', + title:'Home', + icon:'home' + }, + { + name:'startups', + icon:'startups', + title:'Startups' + }, { + name:'innovation', + icon:'innovationInsights', + title:'Innovation Insights' + }, { + name:'LPLogin', + icon:'LPLogin', + title:'LP Login' + }, + { + name:'joinUs', + icon:'joinLightLimX', + title:'Join LightLimX' + }, + { + name:'contact', + icon:'contactUs', + title:'Contact Us' + }, +] +export const footerLink=[ + { + name:'startups', + title:'Startups', + type:'link' + }, + { + name:'LPLogin', + title:'LP Login', + type:'link' + }, + { + name:'partners', + title:'Partners', + type:'href', + link:'/' + }, + { + name:'portfolio', + title:'Portfolio', + type:'href', + link:'/' + }, + { + name:'focusAreas', + title:'Focus Areas', + type:'href', + link:'/' + }, + { + name:'aboutUs', + title:'About Us', + type:'href', + link:'/' + }, { + name:'innovation', + title:'Innovation Insights', + type:'link' + }, + { + name:'joinUs', + title:'Join LightLimX', + type:'link' + }, + { + name:'contact', + title:'Contact Us', + type:'link' + }, +] +export const portfolios=[ + { + time:'.3s', + img:'Accelerator', + title:'Accelerator', + content:'We leverage proprietary processes to build market-leading companies from scratch. Our extensive operational support team accelerates the growth of ventures we partner with.', + link:'/startups' + },{ + time:'.6s', + img:'Investment', + title:'Investment', + content:'We bring our wealth of venture experience and leverage our global resources to help projects and maximize their potential.', + link:'/startups' + },{ + time:'.9s', + img:'Growth', + title:'Growth', + content:'We drive strategic growth, shorten the time to reach global scale, facilitate introductions, but we don’t stop there. ', + link:'/startups' + }, +] +export const partners=[ + { + img:'images/1.png', + link:'' + }, { + img:'images/2.png', + link:'' + }, { + img:'images/3.png', + link:'' + }, { + img:'images/4.png', + link:'' + }, { + img:'images/5.png', + link:'' + } +] +export const banners=[ + { + img:'images/b.png', + },{ + img:'images/1.png', + },{ + img:'images/2.png', + }, +] diff --git a/assets/style/animate.css b/assets/style/animate.css new file mode 100644 index 0000000..458dc69 --- /dev/null +++ b/assets/style/animate.css @@ -0,0 +1,2866 @@ +@charset "UTF-8"; + + +/*! +Animate.css - http://daneden.me/animate +Licensed under the MIT license + +Copyright (c) 2013 Daniel Eden + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +.animated { + -webkit-animation-duration: 1s; + animation-duration: 1s; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.animated.hinge { + -webkit-animation-duration: 2s; + animation-duration: 2s; +} + +@-webkit-keyframes bounce { + 0%, 20%, 50%, 80%, 100% { + -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%, 20%, 50%, 80%, 100% { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } + + 40% { + -webkit-transform: translateY(-30px); + -ms-transform: translateY(-30px); + transform: translateY(-30px); + } + + 60% { + -webkit-transform: translateY(-15px); + -ms-transform: translateY(-15px); + transform: translateY(-15px); + } +} + +.bounce { + -webkit-animation-name: bounce; + animation-name: bounce; +} + +@-webkit-keyframes flash { + 0%, 50%, 100% { + opacity: 1; + } + + 25%, 75% { + opacity: 0; + } +} + +@keyframes flash { + 0%, 50%, 100% { + opacity: 1; + } + + 25%, 75% { + opacity: 0; + } +} + +.flash { + -webkit-animation-name: flash; + animation-name: flash; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes pulse { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + } + + 50% { + -webkit-transform: scale(1.1); + transform: scale(1.1); + } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@keyframes pulse { + 0% { + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); + } + + 50% { + -webkit-transform: scale(1.1); + -ms-transform: scale(1.1); + transform: scale(1.1); + } + + 100% { + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); + } +} + +.pulse { + -webkit-animation-name: pulse; + animation-name: pulse; +} + +@-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); + -ms-transform: translateX(0); + transform: translateX(0); + } + + 10%, 30%, 50%, 70%, 90% { + -webkit-transform: translateX(-10px); + -ms-transform: translateX(-10px); + transform: translateX(-10px); + } + + 20%, 40%, 60%, 80% { + -webkit-transform: translateX(10px); + -ms-transform: translateX(10px); + transform: translateX(10px); + } +} +.shake { + -webkit-animation-name: shake; + animation-name: shake; +} + +@-webkit-keyframes shakeY { + 0%, 100% { + -webkit-transform: translateY(0); + transform: translateY(0); + } + + 10%, 30%, 50%, 70%, 90% { + -webkit-transform: translateY(-10px); + transform: translateY(-10px); + } + + 20%, 40%, 60%, 80% { + -webkit-transform: translateY(10px); + transform: translateY(10px); + } +} + +@keyframes shakeY { + 0%, 100% { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } + + 10%, 30%, 50%, 70%, 90% { + -webkit-transform: translateY(-10px); + -ms-transform: translateY(-10px); + transform: translateY(-10px); + } + + 20%, 40%, 60%, 80% { + -webkit-transform: translateY(10px); + -ms-transform: translateY(10px); + transform: translateY(10px); + } +} + +.shakeY { + -webkit-animation-name: shakeY; + animation-name: shakeY; +} + +@-webkit-keyframes swing { + 20% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); + } + + 40% { + -webkit-transform: rotate(-10deg); + transform: rotate(-10deg); + } + + 60% { + -webkit-transform: rotate(5deg); + transform: rotate(5deg); + } + + 80% { + -webkit-transform: rotate(-5deg); + transform: rotate(-5deg); + } + + 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } +} + +@keyframes swing { + 20% { + -webkit-transform: rotate(15deg); + -ms-transform: rotate(15deg); + transform: rotate(15deg); + } + + 40% { + -webkit-transform: rotate(-10deg); + -ms-transform: rotate(-10deg); + transform: rotate(-10deg); + } + + 60% { + -webkit-transform: rotate(5deg); + -ms-transform: rotate(5deg); + transform: rotate(5deg); + } + + 80% { + -webkit-transform: rotate(-5deg); + -ms-transform: rotate(-5deg); + transform: rotate(-5deg); + } + + 100% { + -webkit-transform: rotate(0deg); + -ms-transform: rotate(0deg); + transform: rotate(0deg); + } +} + +.swing { + -webkit-transform-origin: top center; + -ms-transform-origin: top center; + transform-origin: top center; + -webkit-animation-name: swing; + animation-name: swing; +} + +@-webkit-keyframes tada { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + } + + 10%, 20% { + -webkit-transform: scale(0.9) rotate(-3deg); + transform: scale(0.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); + -ms-transform: scale(1); + transform: scale(1); + } + + 10%, 20% { + -webkit-transform: scale(0.9) rotate(-3deg); + -ms-transform: scale(0.9) rotate(-3deg); + transform: scale(0.9) rotate(-3deg); + } + + 30%, 50%, 70%, 90% { + -webkit-transform: scale(1.1) rotate(3deg); + -ms-transform: scale(1.1) rotate(3deg); + transform: scale(1.1) rotate(3deg); + } + + 40%, 60%, 80% { + -webkit-transform: scale(1.1) rotate(-3deg); + -ms-transform: scale(1.1) rotate(-3deg); + transform: scale(1.1) rotate(-3deg); + } + + 100% { + -webkit-transform: scale(1) rotate(0); + -ms-transform: scale(1) rotate(0); + transform: scale(1) rotate(0); + } +} + +.tada { + -webkit-animation-name: tada; + animation-name: tada; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes wobble { + 0% { + -webkit-transform: translateX(0%); + transform: translateX(0%); + } + + 15% { + -webkit-transform: translateX(-25%) rotate(-5deg); + transform: translateX(-25%) rotate(-5deg); + } + + 30% { + -webkit-transform: translateX(20%) rotate(3deg); + transform: translateX(20%) rotate(3deg); + } + + 45% { + -webkit-transform: translateX(-15%) rotate(-3deg); + transform: translateX(-15%) rotate(-3deg); + } + + 60% { + -webkit-transform: translateX(10%) rotate(2deg); + transform: translateX(10%) rotate(2deg); + } + + 75% { + -webkit-transform: translateX(-5%) rotate(-1deg); + transform: translateX(-5%) rotate(-1deg); + } + + 100% { + -webkit-transform: translateX(0%); + transform: translateX(0%); + } +} + +@keyframes wobble { + 0% { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + } + + 15% { + -webkit-transform: translateX(-25%) rotate(-5deg); + -ms-transform: translateX(-25%) rotate(-5deg); + transform: translateX(-25%) rotate(-5deg); + } + + 30% { + -webkit-transform: translateX(20%) rotate(3deg); + -ms-transform: translateX(20%) rotate(3deg); + transform: translateX(20%) rotate(3deg); + } + + 45% { + -webkit-transform: translateX(-15%) rotate(-3deg); + -ms-transform: translateX(-15%) rotate(-3deg); + transform: translateX(-15%) rotate(-3deg); + } + + 60% { + -webkit-transform: translateX(10%) rotate(2deg); + -ms-transform: translateX(10%) rotate(2deg); + transform: translateX(10%) rotate(2deg); + } + + 75% { + -webkit-transform: translateX(-5%) rotate(-1deg); + -ms-transform: translateX(-5%) rotate(-1deg); + transform: translateX(-5%) rotate(-1deg); + } + + 100% { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + } +} + +.wobble { + -webkit-animation-name: wobble; + animation-name: wobble; +} + +@-webkit-keyframes bounceIn { + 0% { + opacity: 0; + -webkit-transform: scale(.3); + transform: scale(.3); + } + + 50% { + opacity: 1; + -webkit-transform: scale(1.05); + transform: scale(1.05); + } + + 70% { + -webkit-transform: scale(.9); + transform: scale(.9); + } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@keyframes bounceIn { + 0% { + opacity: 0; + -webkit-transform: scale(.3); + -ms-transform: scale(.3); + transform: scale(.3); + } + + 50% { + opacity: 1; + -webkit-transform: scale(1.05); + -ms-transform: scale(1.05); + transform: scale(1.05); + } + + 70% { + -webkit-transform: scale(.9); + -ms-transform: scale(.9); + transform: scale(.9); + } + + 100% { + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); + } +} + +.bounceIn { + -webkit-animation-name: bounceIn; + animation-name: bounceIn; +} + +@-webkit-keyframes bounceInDown { + 0% { + opacity: 0; + -webkit-transform: translateY(-2000px); + transform: translateY(-2000px); + } + + 60% { + opacity: 1; + -webkit-transform: translateY(30px); + transform: translateY(30px); + } + + 80% { + -webkit-transform: translateY(-10px); + transform: translateY(-10px); + } + + 100% { + -webkit-transform: translateY(0); + transform: translateY(0); + } +} + +@keyframes bounceInDown { + 0% { + opacity: 0; + -webkit-transform: translateY(-2000px); + -ms-transform: translateY(-2000px); + transform: translateY(-2000px); + } + + 60% { + opacity: 1; + -webkit-transform: translateY(30px); + -ms-transform: translateY(30px); + transform: translateY(30px); + } + + 80% { + -webkit-transform: translateY(-10px); + -ms-transform: translateY(-10px); + transform: translateY(-10px); + } + + 100% { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } +} + +.bounceInDown { + -webkit-animation-name: bounceInDown; + animation-name: bounceInDown; +} + +@-webkit-keyframes bounceInLeft { + 0% { + opacity: 0; + -webkit-transform: translateX(-2000px); + transform: translateX(-2000px); + } + + 60% { + opacity: 1; + -webkit-transform: translateX(30px); + transform: translateX(30px); + } + + 80% { + -webkit-transform: translateX(-10px); + transform: translateX(-10px); + } + + 100% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} + +@keyframes bounceInLeft { + 0% { + opacity: 0; + -webkit-transform: translateX(-2000px); + -ms-transform: translateX(-2000px); + transform: translateX(-2000px); + } + + 60% { + opacity: 1; + -webkit-transform: translateX(30px); + -ms-transform: translateX(30px); + transform: translateX(30px); + } + + 80% { + -webkit-transform: translateX(-10px); + -ms-transform: translateX(-10px); + transform: translateX(-10px); + } + + 100% { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } +} + +.bounceInLeft { + -webkit-animation-name: bounceInLeft; + animation-name: bounceInLeft; +} + +@-webkit-keyframes bounceInRight { + 0% { + opacity: 0; + -webkit-transform: translateX(2000px); + transform: translateX(2000px); + } + + 60% { + opacity: 1; + -webkit-transform: translateX(-30px); + transform: translateX(-30px); + } + + 80% { + -webkit-transform: translateX(10px); + transform: translateX(10px); + } + + 100% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} + +@keyframes bounceInRight { + 0% { + opacity: 0; + -webkit-transform: translateX(2000px); + -ms-transform: translateX(2000px); + transform: translateX(2000px); + } + + 60% { + opacity: 1; + -webkit-transform: translateX(-30px); + -ms-transform: translateX(-30px); + transform: translateX(-30px); + } + + 80% { + -webkit-transform: translateX(10px); + -ms-transform: translateX(10px); + transform: translateX(10px); + } + + 100% { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } +} + +.bounceInRight { + -webkit-animation-name: bounceInRight; + animation-name: bounceInRight; +} + +@-webkit-keyframes bounceInUp { + 0% { + opacity: 0; + -webkit-transform: translateY(2000px); + transform: translateY(2000px); + } + + 60% { + opacity: 1; + -webkit-transform: translateY(-30px); + transform: translateY(-30px); + } + + 80% { + -webkit-transform: translateY(10px); + transform: translateY(10px); + } + + 100% { + -webkit-transform: translateY(0); + transform: translateY(0); + } +} + +@keyframes bounceInUp { + 0% { + opacity: 0; + -webkit-transform: translateY(2000px); + -ms-transform: translateY(2000px); + transform: translateY(2000px); + } + + 60% { + opacity: 1; + -webkit-transform: translateY(-30px); + -ms-transform: translateY(-30px); + transform: translateY(-30px); + } + + 80% { + -webkit-transform: translateY(10px); + -ms-transform: translateY(10px); + transform: translateY(10px); + } + + 100% { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } +} + +.bounceInUp { + -webkit-animation-name: bounceInUp; + animation-name: bounceInUp; +} + +@-webkit-keyframes bounceOut { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + } + + 25% { + -webkit-transform: scale(.95); + transform: scale(.95); + } + + 50% { + opacity: 1; + -webkit-transform: scale(1.1); + transform: scale(1.1); + } + + 100% { + opacity: 0; + -webkit-transform: scale(.3); + transform: scale(.3); + } +} + +@keyframes bounceOut { + 0% { + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); + } + + 25% { + -webkit-transform: scale(.95); + -ms-transform: scale(.95); + transform: scale(.95); + } + + 50% { + opacity: 1; + -webkit-transform: scale(1.1); + -ms-transform: scale(1.1); + transform: scale(1.1); + } + + 100% { + opacity: 0; + -webkit-transform: scale(.3); + -ms-transform: scale(.3); + transform: scale(.3); + } +} + +.bounceOut { + -webkit-animation-name: bounceOut; + animation-name: bounceOut; +} + +@-webkit-keyframes bounceOutDown { + 0% { + -webkit-transform: translateY(0); + transform: translateY(0); + } + + 20% { + opacity: 1; + -webkit-transform: translateY(-20px); + transform: translateY(-20px); + } + + 100% { + opacity: 0; + -webkit-transform: translateY(2000px); + transform: translateY(2000px); + } +} + +@keyframes bounceOutDown { + 0% { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } + + 20% { + opacity: 1; + -webkit-transform: translateY(-20px); + -ms-transform: translateY(-20px); + transform: translateY(-20px); + } + + 100% { + opacity: 0; + -webkit-transform: translateY(2000px); + -ms-transform: translateY(2000px); + transform: translateY(2000px); + } +} + +.bounceOutDown { + -webkit-animation-name: bounceOutDown; + animation-name: bounceOutDown; +} + +@-webkit-keyframes bounceOutLeft { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + + 20% { + opacity: 1; + -webkit-transform: translateX(20px); + transform: translateX(20px); + } + + 100% { + opacity: 0; + -webkit-transform: translateX(-2000px); + transform: translateX(-2000px); + } +} + +@keyframes bounceOutLeft { + 0% { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + 20% { + opacity: 1; + -webkit-transform: translateX(20px); + -ms-transform: translateX(20px); + transform: translateX(20px); + } + + 100% { + opacity: 0; + -webkit-transform: translateX(-2000px); + -ms-transform: translateX(-2000px); + transform: translateX(-2000px); + } +} + +.bounceOutLeft { + -webkit-animation-name: bounceOutLeft; + animation-name: bounceOutLeft; +} + +@-webkit-keyframes bounceOutRight { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + + 20% { + opacity: 1; + -webkit-transform: translateX(-20px); + transform: translateX(-20px); + } + + 100% { + opacity: 0; + -webkit-transform: translateX(2000px); + transform: translateX(2000px); + } +} + +@keyframes bounceOutRight { + 0% { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + 20% { + opacity: 1; + -webkit-transform: translateX(-20px); + -ms-transform: translateX(-20px); + transform: translateX(-20px); + } + + 100% { + opacity: 0; + -webkit-transform: translateX(2000px); + -ms-transform: translateX(2000px); + transform: translateX(2000px); + } +} + +.bounceOutRight { + -webkit-animation-name: bounceOutRight; + animation-name: bounceOutRight; +} + +@-webkit-keyframes bounceOutUp { + 0% { + -webkit-transform: translateY(0); + transform: translateY(0); + } + + 20% { + opacity: 1; + -webkit-transform: translateY(20px); + transform: translateY(20px); + } + + 100% { + opacity: 0; + -webkit-transform: translateY(-2000px); + transform: translateY(-2000px); + } +} + +@keyframes bounceOutUp { + 0% { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } + + 20% { + opacity: 1; + -webkit-transform: translateY(20px); + -ms-transform: translateY(20px); + transform: translateY(20px); + } + + 100% { + opacity: 0; + -webkit-transform: translateY(-2000px); + -ms-transform: translateY(-2000px); + transform: translateY(-2000px); + } +} + +.bounceOutUp { + -webkit-animation-name: bounceOutUp; + animation-name: bounceOutUp; +} + +@-webkit-keyframes fadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +@keyframes fadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +.fadeIn { + -webkit-animation-name: fadeIn; + animation-name: fadeIn; +} + +@-webkit-keyframes fadeInDown { + 0% { + opacity: 0; + -webkit-transform: translateY(-20px); + transform: translateY(-20px); + } + + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} + +@keyframes fadeInDown { + 0% { + opacity: 0; + -webkit-transform: translateY(-20px); + -ms-transform: translateY(-20px); + transform: translateY(-20px); + } + + 100% { + opacity: 1; + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } +} + +.fadeInDown { + -webkit-animation-name: fadeInDown; + animation-name: fadeInDown; +} + +@-webkit-keyframes fadeInDownBig { + 0% { + opacity: 0; + -webkit-transform: translateY(-2000px); + transform: translateY(-2000px); + } + + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} + +@keyframes fadeInDownBig { + 0% { + opacity: 0; + -webkit-transform: translateY(-2000px); + -ms-transform: translateY(-2000px); + transform: translateY(-2000px); + } + + 100% { + opacity: 1; + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } +} + +.fadeInDownBig { + -webkit-animation-name: fadeInDownBig; + animation-name: fadeInDownBig; +} + +@-webkit-keyframes fadeInLeft { + 0% { + opacity: 0; + -webkit-transform: translateX(-20px); + transform: translateX(-20px); + } + + 100% { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } +} + +@keyframes fadeInLeft { + 0% { + opacity: 0; + -webkit-transform: translateX(-20px); + -ms-transform: translateX(-20px); + transform: translateX(-20px); + } + + 100% { + opacity: 1; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } +} + +.fadeInLeft { + -webkit-animation-name: fadeInLeft; + animation-name: fadeInLeft; +} + +@-webkit-keyframes fadeInLeftBig { + 0% { + opacity: 0; + -webkit-transform: translateX(-2000px); + transform: translateX(-2000px); + } + + 100% { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } +} + +@keyframes fadeInLeftBig { + 0% { + opacity: 0; + -webkit-transform: translateX(-2000px); + -ms-transform: translateX(-2000px); + transform: translateX(-2000px); + } + + 100% { + opacity: 1; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } +} + +.fadeInLeftBig { + -webkit-animation-name: fadeInLeftBig; + animation-name: fadeInLeftBig; +} + +@-webkit-keyframes fadeInRight { + 0% { + opacity: 0; + -webkit-transform: translateX(20px); + transform: translateX(20px); + } + + 100% { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } +} + +@keyframes fadeInRight { + 0% { + opacity: 0; + -webkit-transform: translateX(20px); + -ms-transform: translateX(20px); + transform: translateX(20px); + } + + 100% { + opacity: 1; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } +} + +.fadeInRight { + -webkit-animation-name: fadeInRight; + animation-name: fadeInRight; +} + +@-webkit-keyframes fadeInRightBig { + 0% { + opacity: 0; + -webkit-transform: translateX(2000px); + transform: translateX(2000px); + } + + 100% { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } +} + +@keyframes fadeInRightBig { + 0% { + opacity: 0; + -webkit-transform: translateX(2000px); + -ms-transform: translateX(2000px); + transform: translateX(2000px); + } + + 100% { + opacity: 1; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } +} + +.fadeInRightBig { + -webkit-animation-name: fadeInRightBig; + animation-name: fadeInRightBig; +} + +@-webkit-keyframes fadeInUp { + 0% { + opacity: 0; + -webkit-transform: translateY(20px); + transform: translateY(20px); + } + + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} + +@keyframes fadeInUp { + 0% { + opacity: 0; + -webkit-transform: translateY(20px); + -ms-transform: translateY(20px); + transform: translateY(20px); + } + + 100% { + opacity: 1; + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } +} + +.fadeInUp { + -webkit-animation-name: fadeInUp; + animation-name: fadeInUp; +} + +@-webkit-keyframes fadeInUpBig { + 0% { + opacity: 0; + -webkit-transform: translateY(2000px); + transform: translateY(2000px); + } + + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} + +@keyframes fadeInUpBig { + 0% { + opacity: 0; + -webkit-transform: translateY(2000px); + -ms-transform: translateY(2000px); + transform: translateY(2000px); + } + + 100% { + opacity: 1; + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } +} + +.fadeInUpBig { + -webkit-animation-name: fadeInUpBig; + animation-name: fadeInUpBig; +} + +@-webkit-keyframes fadeOut { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + } +} + +@keyframes fadeOut { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + } +} + +.fadeOut { + -webkit-animation-name: fadeOut; + animation-name: fadeOut; +} + +@-webkit-keyframes fadeOutDown { + 0% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateY(20px); + transform: translateY(20px); + } +} + +@keyframes fadeOutDown { + 0% { + opacity: 1; + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateY(20px); + -ms-transform: translateY(20px); + transform: translateY(20px); + } +} + +.fadeOutDown { + -webkit-animation-name: fadeOutDown; + animation-name: fadeOutDown; +} + +@-webkit-keyframes fadeOutDownBig { + 0% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateY(2000px); + transform: translateY(2000px); + } +} + +@keyframes fadeOutDownBig { + 0% { + opacity: 1; + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateY(2000px); + -ms-transform: translateY(2000px); + transform: translateY(2000px); + } +} + +.fadeOutDownBig { + -webkit-animation-name: fadeOutDownBig; + animation-name: fadeOutDownBig; +} + +@-webkit-keyframes fadeOutLeft { + 0% { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateX(-20px); + transform: translateX(-20px); + } +} + +@keyframes fadeOutLeft { + 0% { + opacity: 1; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateX(-20px); + -ms-transform: translateX(-20px); + transform: translateX(-20px); + } +} + +.fadeOutLeft { + -webkit-animation-name: fadeOutLeft; + animation-name: fadeOutLeft; +} + +@-webkit-keyframes fadeOutLeftBig { + 0% { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateX(-2000px); + transform: translateX(-2000px); + } +} + +@keyframes fadeOutLeftBig { + 0% { + opacity: 1; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateX(-2000px); + -ms-transform: translateX(-2000px); + transform: translateX(-2000px); + } +} + +.fadeOutLeftBig { + -webkit-animation-name: fadeOutLeftBig; + animation-name: fadeOutLeftBig; +} + +@-webkit-keyframes fadeOutRight { + 0% { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateX(20px); + transform: translateX(20px); + } +} + +@keyframes fadeOutRight { + 0% { + opacity: 1; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateX(20px); + -ms-transform: translateX(20px); + transform: translateX(20px); + } +} + +.fadeOutRight { + -webkit-animation-name: fadeOutRight; + animation-name: fadeOutRight; +} + +@-webkit-keyframes fadeOutRightBig { + 0% { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateX(2000px); + transform: translateX(2000px); + } +} + +@keyframes fadeOutRightBig { + 0% { + opacity: 1; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateX(2000px); + -ms-transform: translateX(2000px); + transform: translateX(2000px); + } +} + +.fadeOutRightBig { + -webkit-animation-name: fadeOutRightBig; + animation-name: fadeOutRightBig; +} + +@-webkit-keyframes fadeOutUp { + 0% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateY(-20px); + transform: translateY(-20px); + } +} + +@keyframes fadeOutUp { + 0% { + opacity: 1; + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateY(-20px); + -ms-transform: translateY(-20px); + transform: translateY(-20px); + } +} + +.fadeOutUp { + -webkit-animation-name: fadeOutUp; + animation-name: fadeOutUp; +} + +@-webkit-keyframes fadeOutUpBig { + 0% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateY(-2000px); + transform: translateY(-2000px); + } +} + +@keyframes fadeOutUpBig { + 0% { + opacity: 1; + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateY(-2000px); + -ms-transform: translateY(-2000px); + transform: translateY(-2000px); + } +} + +.fadeOutUpBig { + -webkit-animation-name: fadeOutUpBig; + animation-name: fadeOutUpBig; +} + +@-webkit-keyframes flip { + 0% { + -webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1); + transform: perspective(400px) translateZ(0) rotateY(0) scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 40% { + -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); + transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 50% { + -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); + transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 80% { + -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); + transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 100% { + -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); + transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } +} + +@keyframes flip { + 0% { + -webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1); + -ms-transform: perspective(400px) translateZ(0) rotateY(0) scale(1); + transform: perspective(400px) translateZ(0) rotateY(0) scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 40% { + -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); + -ms-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); + transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 50% { + -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); + -ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); + transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 80% { + -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); + -ms-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); + transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 100% { + -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); + -ms-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); + transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } +} + +.animated.flip { + -webkit-backface-visibility: visible; + -ms-backface-visibility: visible; + backface-visibility: visible; + -webkit-animation-name: flip; + animation-name: flip; +} + +@-webkit-keyframes flipInX { + 0% { + -webkit-transform: perspective(400px) rotateX(90deg); + transform: perspective(400px) rotateX(90deg); + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotateX(-10deg); + transform: perspective(400px) rotateX(-10deg); + } + + 70% { + -webkit-transform: perspective(400px) rotateX(10deg); + transform: perspective(400px) rotateX(10deg); + } + + 100% { + -webkit-transform: perspective(400px) rotateX(0deg); + transform: perspective(400px) rotateX(0deg); + opacity: 1; + } +} + +@keyframes flipInX { + 0% { + -webkit-transform: perspective(400px) rotateX(90deg); + -ms-transform: perspective(400px) rotateX(90deg); + transform: perspective(400px) rotateX(90deg); + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotateX(-10deg); + -ms-transform: perspective(400px) rotateX(-10deg); + transform: perspective(400px) rotateX(-10deg); + } + + 70% { + -webkit-transform: perspective(400px) rotateX(10deg); + -ms-transform: perspective(400px) rotateX(10deg); + transform: perspective(400px) rotateX(10deg); + } + + 100% { + -webkit-transform: perspective(400px) rotateX(0deg); + -ms-transform: perspective(400px) rotateX(0deg); + transform: perspective(400px) rotateX(0deg); + opacity: 1; + } +} + +.flipInX { + -webkit-backface-visibility: visible !important; + -ms-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipInX; + animation-name: flipInX; +} + +@-webkit-keyframes flipInY { + 0% { + -webkit-transform: perspective(400px) rotateY(90deg); + transform: perspective(400px) rotateY(90deg); + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotateY(-10deg); + transform: perspective(400px) rotateY(-10deg); + } + + 70% { + -webkit-transform: perspective(400px) rotateY(10deg); + transform: perspective(400px) rotateY(10deg); + } + + 100% { + -webkit-transform: perspective(400px) rotateY(0deg); + transform: perspective(400px) rotateY(0deg); + opacity: 1; + } +} + +@keyframes flipInY { + 0% { + -webkit-transform: perspective(400px) rotateY(90deg); + -ms-transform: perspective(400px) rotateY(90deg); + transform: perspective(400px) rotateY(90deg); + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotateY(-10deg); + -ms-transform: perspective(400px) rotateY(-10deg); + transform: perspective(400px) rotateY(-10deg); + } + + 70% { + -webkit-transform: perspective(400px) rotateY(10deg); + -ms-transform: perspective(400px) rotateY(10deg); + transform: perspective(400px) rotateY(10deg); + } + + 100% { + -webkit-transform: perspective(400px) rotateY(0deg); + -ms-transform: perspective(400px) rotateY(0deg); + transform: perspective(400px) rotateY(0deg); + opacity: 1; + } +} + +.flipInY { + -webkit-backface-visibility: visible !important; + -ms-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipInY; + animation-name: flipInY; +} + +@-webkit-keyframes flipOutX { + 0% { + -webkit-transform: perspective(400px) rotateX(0deg); + transform: perspective(400px) rotateX(0deg); + opacity: 1; + } + + 100% { + -webkit-transform: perspective(400px) rotateX(90deg); + transform: perspective(400px) rotateX(90deg); + opacity: 0; + } +} + +@keyframes flipOutX { + 0% { + -webkit-transform: perspective(400px) rotateX(0deg); + -ms-transform: perspective(400px) rotateX(0deg); + transform: perspective(400px) rotateX(0deg); + opacity: 1; + } + + 100% { + -webkit-transform: perspective(400px) rotateX(90deg); + -ms-transform: perspective(400px) rotateX(90deg); + transform: perspective(400px) rotateX(90deg); + opacity: 0; + } +} + +.flipOutX { + -webkit-animation-name: flipOutX; + animation-name: flipOutX; + -webkit-backface-visibility: visible !important; + -ms-backface-visibility: visible !important; + backface-visibility: visible !important; +} + +@-webkit-keyframes flipOutY { + 0% { + -webkit-transform: perspective(400px) rotateY(0deg); + transform: perspective(400px) rotateY(0deg); + opacity: 1; + } + + 100% { + -webkit-transform: perspective(400px) rotateY(90deg); + transform: perspective(400px) rotateY(90deg); + opacity: 0; + } +} + +@keyframes flipOutY { + 0% { + -webkit-transform: perspective(400px) rotateY(0deg); + -ms-transform: perspective(400px) rotateY(0deg); + transform: perspective(400px) rotateY(0deg); + opacity: 1; + } + + 100% { + -webkit-transform: perspective(400px) rotateY(90deg); + -ms-transform: perspective(400px) rotateY(90deg); + transform: perspective(400px) rotateY(90deg); + opacity: 0; + } +} + +.flipOutY { + -webkit-backface-visibility: visible !important; + -ms-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipOutY; + animation-name: flipOutY; +} + +@-webkit-keyframes lightSpeedIn { + 0% { + -webkit-transform: translateX(100%) skewX(-30deg); + transform: translateX(100%) skewX(-30deg); + opacity: 0; + } + + 60% { + -webkit-transform: translateX(-20%) skewX(30deg); + transform: translateX(-20%) skewX(30deg); + opacity: 1; + } + + 80% { + -webkit-transform: translateX(0%) skewX(-15deg); + transform: translateX(0%) skewX(-15deg); + opacity: 1; + } + + 100% { + -webkit-transform: translateX(0%) skewX(0deg); + transform: translateX(0%) skewX(0deg); + opacity: 1; + } +} + +@keyframes lightSpeedIn { + 0% { + -webkit-transform: translateX(100%) skewX(-30deg); + -ms-transform: translateX(100%) skewX(-30deg); + transform: translateX(100%) skewX(-30deg); + opacity: 0; + } + + 60% { + -webkit-transform: translateX(-20%) skewX(30deg); + -ms-transform: translateX(-20%) skewX(30deg); + transform: translateX(-20%) skewX(30deg); + opacity: 1; + } + + 80% { + -webkit-transform: translateX(0%) skewX(-15deg); + -ms-transform: translateX(0%) skewX(-15deg); + transform: translateX(0%) skewX(-15deg); + opacity: 1; + } + + 100% { + -webkit-transform: translateX(0%) skewX(0deg); + -ms-transform: translateX(0%) skewX(0deg); + transform: translateX(0%) skewX(0deg); + opacity: 1; + } +} + +.lightSpeedIn { + -webkit-animation-name: lightSpeedIn; + animation-name: lightSpeedIn; + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; +} + +@-webkit-keyframes lightSpeedOut { + 0% { + -webkit-transform: translateX(0%) skewX(0deg); + transform: translateX(0%) skewX(0deg); + opacity: 1; + } + + 100% { + -webkit-transform: translateX(100%) skewX(-30deg); + transform: translateX(100%) skewX(-30deg); + opacity: 0; + } +} + +@keyframes lightSpeedOut { + 0% { + -webkit-transform: translateX(0%) skewX(0deg); + -ms-transform: translateX(0%) skewX(0deg); + transform: translateX(0%) skewX(0deg); + opacity: 1; + } + + 100% { + -webkit-transform: translateX(100%) skewX(-30deg); + -ms-transform: translateX(100%) skewX(-30deg); + transform: translateX(100%) skewX(-30deg); + opacity: 0; + } +} + +.lightSpeedOut { + -webkit-animation-name: lightSpeedOut; + animation-name: lightSpeedOut; + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; +} + +@-webkit-keyframes rotateIn { + 0% { + -webkit-transform-origin: center center; + transform-origin: center center; + -webkit-transform: rotate(-200deg); + transform: rotate(-200deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: center center; + transform-origin: center center; + -webkit-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } +} + +@keyframes rotateIn { + 0% { + -webkit-transform-origin: center center; + -ms-transform-origin: center center; + transform-origin: center center; + -webkit-transform: rotate(-200deg); + -ms-transform: rotate(-200deg); + transform: rotate(-200deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: center center; + -ms-transform-origin: center center; + transform-origin: center center; + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } +} + +.rotateIn { + -webkit-animation-name: rotateIn; + animation-name: rotateIn; +} + +@-webkit-keyframes rotateInDownLeft { + 0% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate(-90deg); + transform: rotate(-90deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } +} + +@keyframes rotateInDownLeft { + 0% { + -webkit-transform-origin: left bottom; + -ms-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + transform: rotate(-90deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: left bottom; + -ms-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } +} + +.rotateInDownLeft { + -webkit-animation-name: rotateInDownLeft; + animation-name: rotateInDownLeft; +} + +@-webkit-keyframes rotateInDownRight { + 0% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } +} + +@keyframes rotateInDownRight { + 0% { + -webkit-transform-origin: right bottom; + -ms-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: right bottom; + -ms-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } +} + +.rotateInDownRight { + -webkit-animation-name: rotateInDownRight; + animation-name: rotateInDownRight; +} + +@-webkit-keyframes rotateInUpLeft { + 0% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } +} + +@keyframes rotateInUpLeft { + 0% { + -webkit-transform-origin: left bottom; + -ms-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: left bottom; + -ms-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } +} + +.rotateInUpLeft { + -webkit-animation-name: rotateInUpLeft; + animation-name: rotateInUpLeft; +} + +@-webkit-keyframes rotateInUpRight { + 0% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate(-90deg); + transform: rotate(-90deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } +} + +@keyframes rotateInUpRight { + 0% { + -webkit-transform-origin: right bottom; + -ms-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + transform: rotate(-90deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: right bottom; + -ms-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } +} + +.rotateInUpRight { + -webkit-animation-name: rotateInUpRight; + animation-name: rotateInUpRight; +} + +@-webkit-keyframes rotateOut { + 0% { + -webkit-transform-origin: center center; + transform-origin: center center; + -webkit-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } + + 100% { + -webkit-transform-origin: center center; + transform-origin: center center; + -webkit-transform: rotate(200deg); + transform: rotate(200deg); + opacity: 0; + } +} + +@keyframes rotateOut { + 0% { + -webkit-transform-origin: center center; + -ms-transform-origin: center center; + transform-origin: center center; + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } + + 100% { + -webkit-transform-origin: center center; + -ms-transform-origin: center center; + transform-origin: center center; + -webkit-transform: rotate(200deg); + -ms-transform: rotate(200deg); + transform: rotate(200deg); + opacity: 0; + } +} + +.rotateOut { + -webkit-animation-name: rotateOut; + animation-name: rotateOut; +} + +@-webkit-keyframes rotateOutDownLeft { + 0% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } + + 100% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + opacity: 0; + } +} + +@keyframes rotateOutDownLeft { + 0% { + -webkit-transform-origin: left bottom; + -ms-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } + + 100% { + -webkit-transform-origin: left bottom; + -ms-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); + opacity: 0; + } +} + +.rotateOutDownLeft { + -webkit-animation-name: rotateOutDownLeft; + animation-name: rotateOutDownLeft; +} + +@-webkit-keyframes rotateOutDownRight { + 0% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } + + 100% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate(-90deg); + transform: rotate(-90deg); + opacity: 0; + } +} + +@keyframes rotateOutDownRight { + 0% { + -webkit-transform-origin: right bottom; + -ms-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } + + 100% { + -webkit-transform-origin: right bottom; + -ms-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + transform: rotate(-90deg); + opacity: 0; + } +} + +.rotateOutDownRight { + -webkit-animation-name: rotateOutDownRight; + animation-name: rotateOutDownRight; +} + +@-webkit-keyframes rotateOutUpLeft { + 0% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } + + 100% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate(-90deg); + transform: rotate(-90deg); + opacity: 0; + } +} + +@keyframes rotateOutUpLeft { + 0% { + -webkit-transform-origin: left bottom; + -ms-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } + + 100% { + -webkit-transform-origin: left bottom; + -ms-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + transform: rotate(-90deg); + opacity: 0; + } +} + +.rotateOutUpLeft { + -webkit-animation-name: rotateOutUpLeft; + animation-name: rotateOutUpLeft; +} + +@-webkit-keyframes rotateOutUpRight { + 0% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } + + 100% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + opacity: 0; + } +} + +@keyframes rotateOutUpRight { + 0% { + -webkit-transform-origin: right bottom; + -ms-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + opacity: 1; + } + + 100% { + -webkit-transform-origin: right bottom; + -ms-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); + opacity: 0; + } +} + +.rotateOutUpRight { + -webkit-animation-name: rotateOutUpRight; + animation-name: rotateOutUpRight; +} + +@-webkit-keyframes slideInDown { + 0% { + opacity: 0; + -webkit-transform: translateY(-2000px); + transform: translateY(-2000px); + } + + 100% { + -webkit-transform: translateY(0); + transform: translateY(0); + } +} + +@keyframes slideInDown { + 0% { + opacity: 0; + -webkit-transform: translateY(-2000px); + -ms-transform: translateY(-2000px); + transform: translateY(-2000px); + } + + 100% { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } +} + +.slideInDown { + -webkit-animation-name: slideInDown; + animation-name: slideInDown; +} + +@-webkit-keyframes slideInLeft { + 0% { + opacity: 0; + -webkit-transform: translateX(-2000px); + transform: translateX(-2000px); + } + + 100% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} + +@keyframes slideInLeft { + 0% { + opacity: 0; + -webkit-transform: translateX(-2000px); + -ms-transform: translateX(-2000px); + transform: translateX(-2000px); + } + + 100% { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } +} + +.slideInLeft { + -webkit-animation-name: slideInLeft; + animation-name: slideInLeft; +} + +@-webkit-keyframes slideInRight { + 0% { + opacity: 0; + -webkit-transform: translateX(2000px); + transform: translateX(2000px); + } + + 100% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} + +@keyframes slideInRight { + 0% { + opacity: 0; + -webkit-transform: translateX(2000px); + -ms-transform: translateX(2000px); + transform: translateX(2000px); + } + + 100% { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } +} + +.slideInRight { + -webkit-animation-name: slideInRight; + animation-name: slideInRight; +} + +@-webkit-keyframes slideOutLeft { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateX(-2000px); + transform: translateX(-2000px); + } +} + +@keyframes slideOutLeft { + 0% { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateX(-2000px); + -ms-transform: translateX(-2000px); + transform: translateX(-2000px); + } +} + +.slideOutLeft { + -webkit-animation-name: slideOutLeft; + animation-name: slideOutLeft; +} + +@-webkit-keyframes slideOutRight { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateX(2000px); + transform: translateX(2000px); + } +} + +@keyframes slideOutRight { + 0% { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateX(2000px); + -ms-transform: translateX(2000px); + transform: translateX(2000px); + } +} + +.slideOutRight { + -webkit-animation-name: slideOutRight; + animation-name: slideOutRight; +} + +@-webkit-keyframes slideOutUp { + 0% { + -webkit-transform: translateY(0); + transform: translateY(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateY(-2000px); + transform: translateY(-2000px); + } +} + +@keyframes slideOutUp { + 0% { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateY(-2000px); + -ms-transform: translateY(-2000px); + transform: translateY(-2000px); + } +} + +.slideOutUp { + -webkit-animation-name: slideOutUp; + animation-name: slideOutUp; +} + +@-webkit-keyframes hinge { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 20%, 60% { + -webkit-transform: rotate(80deg); + transform: rotate(80deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 40% { + -webkit-transform: rotate(60deg); + transform: rotate(60deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 80% { + -webkit-transform: rotate(60deg) translateY(0); + transform: rotate(60deg) translateY(0); + opacity: 1; + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 100% { + -webkit-transform: translateY(700px); + transform: translateY(700px); + opacity: 0; + } +} + +@keyframes hinge { + 0% { + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + -webkit-transform-origin: top left; + -ms-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 20%, 60% { + -webkit-transform: rotate(80deg); + -ms-transform: rotate(80deg); + transform: rotate(80deg); + -webkit-transform-origin: top left; + -ms-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 40% { + -webkit-transform: rotate(60deg); + -ms-transform: rotate(60deg); + transform: rotate(60deg); + -webkit-transform-origin: top left; + -ms-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 80% { + -webkit-transform: rotate(60deg) translateY(0); + -ms-transform: rotate(60deg) translateY(0); + transform: rotate(60deg) translateY(0); + opacity: 1; + -webkit-transform-origin: top left; + -ms-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 100% { + -webkit-transform: translateY(700px); + -ms-transform: translateY(700px); + transform: translateY(700px); + opacity: 0; + } +} + +.hinge { + -webkit-animation-name: hinge; + animation-name: hinge; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes rollIn { + 0% { + opacity: 0; + -webkit-transform: translateX(-100%) rotate(-120deg); + transform: translateX(-100%) rotate(-120deg); + } + + 100% { + opacity: 1; + -webkit-transform: translateX(0px) rotate(0deg); + transform: translateX(0px) rotate(0deg); + } +} + +@keyframes rollIn { + 0% { + opacity: 0; + -webkit-transform: translateX(-100%) rotate(-120deg); + -ms-transform: translateX(-100%) rotate(-120deg); + transform: translateX(-100%) rotate(-120deg); + } + + 100% { + opacity: 1; + -webkit-transform: translateX(0px) rotate(0deg); + -ms-transform: translateX(0px) rotate(0deg); + transform: translateX(0px) rotate(0deg); + } +} + +.rollIn { + -webkit-animation-name: rollIn; + animation-name: rollIn; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes rollOut { + 0% { + opacity: 1; + -webkit-transform: translateX(0px) rotate(0deg); + transform: translateX(0px) rotate(0deg); + } + + 100% { + opacity: 0; + -webkit-transform: translateX(100%) rotate(120deg); + transform: translateX(100%) rotate(120deg); + } +} + +@keyframes rollOut { + 0% { + opacity: 1; + -webkit-transform: translateX(0px) rotate(0deg); + -ms-transform: translateX(0px) rotate(0deg); + transform: translateX(0px) rotate(0deg); + } + + 100% { + opacity: 0; + -webkit-transform: translateX(100%) rotate(120deg); + -ms-transform: translateX(100%) rotate(120deg); + transform: translateX(100%) rotate(120deg); + } +} + +.rollOut { + -webkit-animation-name: rollOut; + animation-name: rollOut; +} + + +@-webkit-keyframes lightSpeedInRight{ + 0%{ + -webkit-transform:translate3d(100%,0,0) skewX(-30deg); + transform:translate3d(100%,0,0) skewX(-30deg); + opacity:0 + } + 60%{ + -webkit-transform:skewX(20deg); + transform:skewX(20deg);opacity:1 + } + 80%{ + -webkit-transform:skewX(-5deg); + transform:skewX(-5deg) + } + to{ + -webkit-transform:translateZ(0); + transform:translateZ(0) + } +} +@keyframes lightSpeedInRight{ + 0%{ + -webkit-transform:translate3d(100%,0,0) skewX(-30deg); + transform:translate3d(100%,0,0) skewX(-30deg); + opacity:0 + } + 60%{ + -webkit-transform:skewX(20deg); + transform:skewX(20deg); + opacity:1 + } + 80%{ + -webkit-transform:skewX(-5deg); + transform:skewX(-5deg) + } + 100% { + -webkit-transform:translateZ(0); + transform:translateZ(0) + } +} +.lightSpeedInRight{ + -webkit-animation-name:lightSpeedInRight; + animation-name:lightSpeedInRight; + -webkit-animation-timing-function:ease-out; + animation-timing-function:ease-out; +} + +@keyframes flipInX{ + 0%{ + -webkit-transform:perspective(400px) rotateX(90deg); + transform:perspective(400px) rotateX(90deg); + -webkit-animation-timing-function:ease-in; + animation-timing-function:ease-in; + opacity:0 + } + 40%{ + -webkit-transform:perspective(400px) rotateX(-20deg); + transform:perspective(400px) rotateX(-20deg); + -webkit-animation-timing-function:ease-in; + animation-timing-function:ease-in + } + 60%{ + -webkit-transform:perspective(400px) rotateX(10deg); + transform:perspective(400px) rotateX(10deg); + opacity:1 + } + 80%{ + -webkit-transform:perspective(400px) rotateX(-5deg); + transform:perspective(400px) rotateX(-5deg) + } + to { + -webkit-transform:perspective(400px);transform:perspective(400px) + } +} +.flipInX{ + -webkit-backface-visibility:visible!important; + backface-visibility:visible!important; + -webkit-animation-name:flipInX; + animation-name:flipInX +} diff --git a/assets/style/animate2.css b/assets/style/animate2.css new file mode 100644 index 0000000..cd6869d --- /dev/null +++ b/assets/style/animate2.css @@ -0,0 +1,7 @@ +@charset "UTF-8";/*! + * animate.css - https://animate.style/ + * Version - 4.1.1 + * Licensed under the MIT license - http://opensource.org/licenses/MIT + * + * Copyright (c) 2020 Animate.css + */:root{--animate-duration:1s;--animate-delay:1s;--animate-repeat:1}.animate__animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-duration:var(--animate-duration);animation-duration:var(--animate-duration);-webkit-animation-fill-mode:both;animation-fill-mode:both}.animate__animated.animate__infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animate__animated.animate__repeat-1{-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-iteration-count:var(--animate-repeat);animation-iteration-count:var(--animate-repeat)}.animate__animated.animate__repeat-2{-webkit-animation-iteration-count:2;animation-iteration-count:2;-webkit-animation-iteration-count:calc(var(--animate-repeat)*2);animation-iteration-count:calc(var(--animate-repeat)*2)}.animate__animated.animate__repeat-3{-webkit-animation-iteration-count:3;animation-iteration-count:3;-webkit-animation-iteration-count:calc(var(--animate-repeat)*3);animation-iteration-count:calc(var(--animate-repeat)*3)}.animate__animated.animate__delay-1s{-webkit-animation-delay:1s;animation-delay:1s;-webkit-animation-delay:var(--animate-delay);animation-delay:var(--animate-delay)}.animate__animated.animate__delay-2s{-webkit-animation-delay:2s;animation-delay:2s;-webkit-animation-delay:calc(var(--animate-delay)*2);animation-delay:calc(var(--animate-delay)*2)}.animate__animated.animate__delay-3s{-webkit-animation-delay:3s;animation-delay:3s;-webkit-animation-delay:calc(var(--animate-delay)*3);animation-delay:calc(var(--animate-delay)*3)}.animate__animated.animate__delay-4s{-webkit-animation-delay:4s;animation-delay:4s;-webkit-animation-delay:calc(var(--animate-delay)*4);animation-delay:calc(var(--animate-delay)*4)}.animate__animated.animate__delay-5s{-webkit-animation-delay:5s;animation-delay:5s;-webkit-animation-delay:calc(var(--animate-delay)*5);animation-delay:calc(var(--animate-delay)*5)}.animate__animated.animate__faster{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-duration:calc(var(--animate-duration)/2);animation-duration:calc(var(--animate-duration)/2)}.animate__animated.animate__fast{-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-duration:calc(var(--animate-duration)*0.8);animation-duration:calc(var(--animate-duration)*0.8)}.animate__animated.animate__slow{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2)}.animate__animated.animate__slower{-webkit-animation-duration:3s;animation-duration:3s;-webkit-animation-duration:calc(var(--animate-duration)*3);animation-duration:calc(var(--animate-duration)*3)}@media (prefers-reduced-motion:reduce),print{.animate__animated{-webkit-animation-duration:1ms!important;animation-duration:1ms!important;-webkit-transition-duration:1ms!important;transition-duration:1ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important}.animate__animated[class*=Out]{opacity:0}}@-webkit-keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}@keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}.animate__bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.animate__flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__pulse{-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(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)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(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)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.animate__shakeX{-webkit-animation-name:shakeX;animation-name:shakeX}@-webkit-keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}@keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}.animate__shakeY{-webkit-animation-name:shakeY;animation-name:shakeY}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}.animate__headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}.animate__swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.animate__jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}.animate__heartBeat{-webkit-animation-name:heartBeat;animation-name:heartBeat;-webkit-animation-duration:1.3s;animation-duration:1.3s;-webkit-animation-duration:calc(var(--animate-duration)*1.3);animation-duration:calc(var(--animate-duration)*1.3);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInDown{-webkit-animation-name:backInDown;animation-name:backInDown}@-webkit-keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInLeft{-webkit-animation-name:backInLeft;animation-name:backInLeft}@-webkit-keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInRight{-webkit-animation-name:backInRight;animation-name:backInRight}@-webkit-keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInUp{-webkit-animation-name:backInUp;animation-name:backInUp}@-webkit-keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}@keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}.animate__backOutDown{-webkit-animation-name:backOutDown;animation-name:backOutDown}@-webkit-keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}}@keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}}.animate__backOutLeft{-webkit-animation-name:backOutLeft;animation-name:backOutLeft}@-webkit-keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}}@keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}}.animate__backOutRight{-webkit-animation-name:backOutRight;animation-name:backOutRight}@-webkit-keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}@keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}.animate__backOutUp{-webkit-animation-name:backOutUp;animation-name:backOutUp}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}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)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}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)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__bounceIn{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{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)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{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)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.animate__bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}.animate__bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}.animate__bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}.animate__bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}.animate__bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate__fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInTopLeft{-webkit-animation-name:fadeInTopLeft;animation-name:fadeInTopLeft}@-webkit-keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInTopRight{-webkit-animation-name:fadeInTopRight;animation-name:fadeInTopRight}@-webkit-keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInBottomLeft{-webkit-animation-name:fadeInBottomLeft;animation-name:fadeInBottomLeft}@-webkit-keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInBottomRight{-webkit-animation-name:fadeInBottomRight;animation-name:fadeInBottomRight}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.animate__fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.animate__fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.animate__fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.animate__fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.animate__fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.animate__fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.animate__fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.animate__fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.animate__fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}@keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}.animate__fadeOutTopLeft{-webkit-animation-name:fadeOutTopLeft;animation-name:fadeOutTopLeft}@-webkit-keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}@keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}.animate__fadeOutTopRight{-webkit-animation-name:fadeOutTopRight;animation-name:fadeOutTopRight}@-webkit-keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}@keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}.animate__fadeOutBottomRight{-webkit-animation-name:fadeOutBottomRight;animation-name:fadeOutBottomRight}@-webkit-keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}@keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}.animate__fadeOutBottomLeft{-webkit-animation-name:fadeOutBottomLeft;animation-name:fadeOutBottomLeft}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animate__animated.animate__flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.animate__flipOutX{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}.animate__flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__lightSpeedInRight{-webkit-animation-name:lightSpeedInRight;animation-name:lightSpeedInRight;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skewX(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skewX(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skewX(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skewX(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skewX(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skewX(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__lightSpeedInLeft{-webkit-animation-name:lightSpeedInLeft;animation-name:lightSpeedInLeft;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.animate__lightSpeedOutRight{-webkit-animation-name:lightSpeedOutRight;animation-name:lightSpeedOutRight;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skewX(-30deg);opacity:0}}@keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skewX(-30deg);opacity:0}}.animate__lightSpeedOutLeft{-webkit-animation-name:lightSpeedOutLeft;animation-name:lightSpeedOutLeft;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}.animate__rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}.animate__rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.animate__rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.animate__rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.animate__rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.animate__hinge{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2);-webkit-animation-name:hinge;animation-name:hinge;-webkit-transform-origin:top left;transform-origin:top left}@-webkit-keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.animate__jackInTheBox{-webkit-animation-name:jackInTheBox;animation-name:jackInTheBox}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}@keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}.animate__rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.animate__zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.animate__zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}.animate__zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft;-webkit-transform-origin:left center;transform-origin:left center}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}.animate__zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight;-webkit-transform-origin:right center;transform-origin:right center}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.animate__slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.animate__slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.animate__slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.animate__slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp} diff --git a/assets/style/reset.less b/assets/style/reset.less new file mode 100644 index 0000000..9bea60a --- /dev/null +++ b/assets/style/reset.less @@ -0,0 +1,63 @@ +@font-face { + font-family: 'Manrope'; /*给自定义字体命名*/ + src: url('~/assets/fonts/Manrope-Regular.ttf') format('truetype'); + font-weight:normal; + font-style: normal; +} +@font-face { + font-family: 'Manrope'; /*给自定义字体命名*/ + src: url('~/assets/fonts/Manrope-Bold.ttf') format('truetype'); + font-weight:Bold; + font-style: normal; +} +body,dl,dt,dd,ul,ol,li,pre,form,fieldset,input,p,blockquote,th,td{;font-weight:400;margin:0;padding:0}h1,h2,h3,h4,h4,h5{margin:0;padding:0}body{background-color:#f7f7f7;color:#666;font-family:Helvetica,Arial,sans-serif;font-size:14px;text-align:left}select{font-size:14px}table{border-collapse:collapse}fieldset,img{border:0 none}fieldset{margin:0;padding:0}fieldset p{margin:0;padding:0 0 0 8px}legend{display:none}address,caption,em,strong,th,i{font-style:normal;font-weight:400}table caption{margin-left:-1px}hr{border-bottom:1px solid #fff;border-top:1px solid #eee;border-width:1px 0;clear:both;height:2px;margin:5px 0;overflow:hidden}ol,ul{list-style-image:none;list-style-position:outside;list-style-type:none}caption,th{text-align:left}q:before,q:after,blockquote:before,blockquote:after{content:''}.clearfix{clear: both;}.fl{float: left;}.fr{float: right;}html,body{height: 100%} +#__layout,#__nuxt{ + height: 100%; + display: block; +} +body{ + overflow-x: hidden !important; +} +div[class*="-h5-wrap"]{ + width: 100%; + max-width: 13rem; + margin: 0 auto; +} +@media screen and (max-width: 1300px) { + div[class*="-h5-wrap"]{ + padding: 0 .15rem; + box-sizing: border-box; + white-space:pre-wrap; + //overflow--y: visible; + } +} +@media screen and (max-width: 768px) { + div[class*="-h5-wrap"]{ + padding: 0 .15rem; + box-sizing: border-box; + white-space:pre-wrap; + overflow-x:hidden ; + height: auto !important; + } +} +.h5-scroll-bar{ + overflow-y: auto; +} +.h5-scroll-bar::-webkit-scrollbar{ + width:4px; + height:4px; +} +.h5-scroll-bar::-webkit-scrollbar-track{ + background: #f6f6f6; + border-radius:2px; +} +.h5-scroll-bar::-webkit-scrollbar-thumb{ + background: #aaa; + border-radius:2px; +} +.h5-scroll-bar::-webkit-scrollbar-thumb:hover{ + background: #747474; +} +.h5-scroll-bar::-webkit-scrollbar-corner{ + background: #f6f6f6; +} diff --git a/assets/svg/LPLogin.svg b/assets/svg/LPLogin.svg new file mode 100644 index 0000000..a9a7ef7 --- /dev/null +++ b/assets/svg/LPLogin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/arrow.svg b/assets/svg/arrow.svg new file mode 100644 index 0000000..9325f64 --- /dev/null +++ b/assets/svg/arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/close.svg b/assets/svg/close.svg new file mode 100644 index 0000000..44fcd29 --- /dev/null +++ b/assets/svg/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/contactUs.svg b/assets/svg/contactUs.svg new file mode 100644 index 0000000..90b5f9c --- /dev/null +++ b/assets/svg/contactUs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/copy.svg b/assets/svg/copy.svg new file mode 100644 index 0000000..59a323f --- /dev/null +++ b/assets/svg/copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/cuarr.svg b/assets/svg/cuarr.svg new file mode 100644 index 0000000..4978623 --- /dev/null +++ b/assets/svg/cuarr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/filter-ar.svg b/assets/svg/filter-ar.svg new file mode 100644 index 0000000..e834c20 --- /dev/null +++ b/assets/svg/filter-ar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/filter.svg b/assets/svg/filter.svg new file mode 100644 index 0000000..b5471df --- /dev/null +++ b/assets/svg/filter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/flower.svg b/assets/svg/flower.svg new file mode 100644 index 0000000..1506b88 --- /dev/null +++ b/assets/svg/flower.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/footerLogo.svg b/assets/svg/footerLogo.svg new file mode 100644 index 0000000..dcb58cd --- /dev/null +++ b/assets/svg/footerLogo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/home.svg b/assets/svg/home.svg new file mode 100644 index 0000000..49123e1 --- /dev/null +++ b/assets/svg/home.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/hstart.svg b/assets/svg/hstart.svg new file mode 100644 index 0000000..6ae5038 --- /dev/null +++ b/assets/svg/hstart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/innovationInsights.svg b/assets/svg/innovationInsights.svg new file mode 100644 index 0000000..4333344 --- /dev/null +++ b/assets/svg/innovationInsights.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/joinLightLimX.svg b/assets/svg/joinLightLimX.svg new file mode 100644 index 0000000..cbc0279 --- /dev/null +++ b/assets/svg/joinLightLimX.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/loading.svg b/assets/svg/loading.svg new file mode 100644 index 0000000..e1ceefd --- /dev/null +++ b/assets/svg/loading.svg @@ -0,0 +1 @@ +资源 17 \ No newline at end of file diff --git a/assets/svg/logo.svg b/assets/svg/logo.svg new file mode 100644 index 0000000..dcb58cd --- /dev/null +++ b/assets/svg/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/menu.svg b/assets/svg/menu.svg new file mode 100644 index 0000000..09e0d06 --- /dev/null +++ b/assets/svg/menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/start.svg b/assets/svg/start.svg new file mode 100644 index 0000000..b685101 --- /dev/null +++ b/assets/svg/start.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/startups.svg b/assets/svg/startups.svg new file mode 100644 index 0000000..4c96b1f --- /dev/null +++ b/assets/svg/startups.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/sun.svg b/assets/svg/sun.svg new file mode 100644 index 0000000..a744f19 --- /dev/null +++ b/assets/svg/sun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/components/AboutUs/index.vue b/components/AboutUs/index.vue new file mode 100644 index 0000000..5764f2e --- /dev/null +++ b/components/AboutUs/index.vue @@ -0,0 +1,202 @@ + + + + + diff --git a/components/Banners/index.vue b/components/Banners/index.vue new file mode 100644 index 0000000..0aadb05 --- /dev/null +++ b/components/Banners/index.vue @@ -0,0 +1,160 @@ + + + + diff --git a/components/EmailFooter/index.vue b/components/EmailFooter/index.vue new file mode 100644 index 0000000..bd01967 --- /dev/null +++ b/components/EmailFooter/index.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/components/FilterInput/index.vue b/components/FilterInput/index.vue new file mode 100644 index 0000000..c1d440a --- /dev/null +++ b/components/FilterInput/index.vue @@ -0,0 +1,231 @@ + + + + + + diff --git a/components/FocusAreas/ScrollTrigger.js b/components/FocusAreas/ScrollTrigger.js new file mode 100644 index 0000000..3a5c75b --- /dev/null +++ b/components/FocusAreas/ScrollTrigger.js @@ -0,0 +1,1923 @@ +/*! + * ScrollTrigger 3.9.1 + * https://greensock.com + * + * @license Copyright 2008-2021, GreenSock. All rights reserved. + * Subject to the terms at https://greensock.com/standard-license or for + * Club GreenSock members, the agreement issued with that membership. + * @author: Jack Doyle, jack@greensock.com +*/ + +/* eslint-disable */ +var gsap, + _coreInitted, + _win, + _doc, + _docEl, + _body, + _root, + _resizeDelay, + _toArray, + _clamp, + _time2, + _syncInterval, + _refreshing, + _pointerIsDown, + _transformProp, + _i, + _prevWidth, + _prevHeight, + _autoRefresh, + _sort, + _suppressOverwrites, + _ignoreResize, + _limitCallbacks, + // if true, we'll only trigger callbacks if the active state toggles, so if you scroll immediately past both the start and end positions of a ScrollTrigger (thus inactive to inactive), neither its onEnter nor onLeave will be called. This is useful during startup. +_startup = 1, + _proxies = [], + _scrollers = [], + _getTime = Date.now, + _time1 = _getTime(), + _lastScrollTime = 0, + _enabled = 1, + _passThrough = function _passThrough(v) { + return v; +}, + _getTarget = function _getTarget(t) { + return _toArray(t)[0] || (_isString(t) && gsap.config().nullTargetWarn !== false ? console.warn("Element not found:", t) : null); +}, + _round = function _round(value) { + return Math.round(value * 100000) / 100000 || 0; +}, + _windowExists = function _windowExists() { + return typeof window !== "undefined"; +}, + _getGSAP = function _getGSAP() { + return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap; +}, + _isViewport = function _isViewport(e) { + return !!~_root.indexOf(e); +}, + _getProxyProp = function _getProxyProp(element, property) { + return ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property]; +}, + _getScrollFunc = function _getScrollFunc(element, _ref) { + var s = _ref.s, + sc = _ref.sc; + + // we store the scroller functions in a alternating sequenced Array like [element, verticalScrollFunc, horizontalScrollFunc, ...] so that we can minimize memory, maximize performance, and we also record the last position as a ".rec" property in order to revert to that after refreshing to ensure things don't shift around. + var i = _scrollers.indexOf(element), + offset = sc === _vertical.sc ? 1 : 2; + + !~i && (i = _scrollers.push(element) - 1); + return _scrollers[i + offset] || (_scrollers[i + offset] = _getProxyProp(element, s) || (_isViewport(element) ? sc : function (value) { + return arguments.length ? element[s] = value : element[s]; + })); +}, + _getBoundsFunc = function _getBoundsFunc(element) { + return _getProxyProp(element, "getBoundingClientRect") || (_isViewport(element) ? function () { + _winOffsets.width = _win.innerWidth; + _winOffsets.height = _win.innerHeight; + return _winOffsets; + } : function () { + return _getBounds(element); + }); +}, + _getSizeFunc = function _getSizeFunc(scroller, isViewport, _ref2) { + var d = _ref2.d, + d2 = _ref2.d2, + a = _ref2.a; + return (a = _getProxyProp(scroller, "getBoundingClientRect")) ? function () { + return a()[d]; + } : function () { + return (isViewport ? _win["inner" + d2] : scroller["client" + d2]) || 0; + }; +}, + _getOffsetsFunc = function _getOffsetsFunc(element, isViewport) { + return !isViewport || ~_proxies.indexOf(element) ? _getBoundsFunc(element) : function () { + return _winOffsets; + }; +}, + _maxScroll = function _maxScroll(element, _ref3) { + var s = _ref3.s, + d2 = _ref3.d2, + d = _ref3.d, + a = _ref3.a; + return (s = "scroll" + d2) && (a = _getProxyProp(element, s)) ? a() - _getBoundsFunc(element)()[d] : _isViewport(element) ? (_body[s] || _docEl[s]) - (_win["inner" + d2] || _docEl["client" + d2] || _body["client" + d2]) : element[s] - element["offset" + d2]; +}, + _iterateAutoRefresh = function _iterateAutoRefresh(func, events) { + for (var i = 0; i < _autoRefresh.length; i += 3) { + (!events || ~events.indexOf(_autoRefresh[i + 1])) && func(_autoRefresh[i], _autoRefresh[i + 1], _autoRefresh[i + 2]); + } +}, + _isString = function _isString(value) { + return typeof value === "string"; +}, + _isFunction = function _isFunction(value) { + return typeof value === "function"; +}, + _isNumber = function _isNumber(value) { + return typeof value === "number"; +}, + _isObject = function _isObject(value) { + return typeof value === "object"; +}, + _callIfFunc = function _callIfFunc(value) { + return _isFunction(value) && value(); +}, + _combineFunc = function _combineFunc(f1, f2) { + return function () { + var result1 = _callIfFunc(f1), + result2 = _callIfFunc(f2); + + return function () { + _callIfFunc(result1); + + _callIfFunc(result2); + }; + }; +}, + _endAnimation = function _endAnimation(animation, reversed, pause) { + return animation && animation.progress(reversed ? 0 : 1) && pause && animation.pause(); +}, + _callback = function _callback(self, func) { + if (self.enabled) { + var result = func(self); + result && result.totalTime && (self.callbackAnimation = result); + } +}, + _abs = Math.abs, + _scrollLeft = "scrollLeft", + _scrollTop = "scrollTop", + _left = "left", + _top = "top", + _right = "right", + _bottom = "bottom", + _width = "width", + _height = "height", + _Right = "Right", + _Left = "Left", + _Top = "Top", + _Bottom = "Bottom", + _padding = "padding", + _margin = "margin", + _Width = "Width", + _Height = "Height", + _px = "px", + _horizontal = { + s: _scrollLeft, + p: _left, + p2: _Left, + os: _right, + os2: _Right, + d: _width, + d2: _Width, + a: "x", + sc: function sc(value) { + return arguments.length ? _win.scrollTo(value, _vertical.sc()) : _win.pageXOffset || _doc[_scrollLeft] || _docEl[_scrollLeft] || _body[_scrollLeft] || 0; + } +}, + _vertical = { + s: _scrollTop, + p: _top, + p2: _Top, + os: _bottom, + os2: _Bottom, + d: _height, + d2: _Height, + a: "y", + op: _horizontal, + sc: function sc(value) { + return arguments.length ? _win.scrollTo(_horizontal.sc(), value) : _win.pageYOffset || _doc[_scrollTop] || _docEl[_scrollTop] || _body[_scrollTop] || 0; + } +}, + _getComputedStyle = function _getComputedStyle(element) { + return _win.getComputedStyle(element); +}, + _makePositionable = function _makePositionable(element) { + // if the element already has position: absolute or fixed, leave that, otherwise make it position: relative + var position = _getComputedStyle(element).position; + + element.style.position = position === "absolute" || position === "fixed" ? position : "relative"; +}, + _setDefaults = function _setDefaults(obj, defaults) { + for (var p in defaults) { + p in obj || (obj[p] = defaults[p]); + } + + return obj; +}, + _getBounds = function _getBounds(element, withoutTransforms) { + var tween = withoutTransforms && _getComputedStyle(element)[_transformProp] !== "matrix(1, 0, 0, 1, 0, 0)" && gsap.to(element, { + x: 0, + y: 0, + xPercent: 0, + yPercent: 0, + rotation: 0, + rotationX: 0, + rotationY: 0, + scale: 1, + skewX: 0, + skewY: 0 + }).progress(1), + bounds = element.getBoundingClientRect(); + tween && tween.progress(0).kill(); + return bounds; +}, + _getSize = function _getSize(element, _ref4) { + var d2 = _ref4.d2; + return element["offset" + d2] || element["client" + d2] || 0; +}, + _getLabelRatioArray = function _getLabelRatioArray(timeline) { + var a = [], + labels = timeline.labels, + duration = timeline.duration(), + p; + + for (p in labels) { + a.push(labels[p] / duration); + } + + return a; +}, + _getClosestLabel = function _getClosestLabel(animation) { + return function (value) { + return gsap.utils.snap(_getLabelRatioArray(animation), value); + }; +}, + _snapDirectional = function _snapDirectional(snapIncrementOrArray) { + var snap = gsap.utils.snap(snapIncrementOrArray), + a = Array.isArray(snapIncrementOrArray) && snapIncrementOrArray.slice(0).sort(function (a, b) { + return a - b; + }); + return a ? function (value, direction, threshold) { + if (threshold === void 0) { + threshold = 1e-3; + } + + var i; + + if (!direction) { + return snap(value); + } + + if (direction > 0) { + value -= threshold; // to avoid rounding errors. If we're too strict, it might snap forward, then immediately again, and again. + + for (i = 0; i < a.length; i++) { + if (a[i] >= value) { + return a[i]; + } + } + + return a[i - 1]; + } else { + i = a.length; + value += threshold; + + while (i--) { + if (a[i] <= value) { + return a[i]; + } + } + } + + return a[0]; + } : function (value, direction, threshold) { + if (threshold === void 0) { + threshold = 1e-3; + } + + var snapped = snap(value); + return !direction || Math.abs(snapped - value) < threshold || snapped - value < 0 === direction < 0 ? snapped : snap(direction < 0 ? value - snapIncrementOrArray : value + snapIncrementOrArray); + }; +}, + _getLabelAtDirection = function _getLabelAtDirection(timeline) { + return function (value, st) { + return _snapDirectional(_getLabelRatioArray(timeline))(value, st.direction); + }; +}, + _multiListener = function _multiListener(func, element, types, callback) { + return types.split(",").forEach(function (type) { + return func(element, type, callback); + }); +}, + _addListener = function _addListener(element, type, func) { + return element.addEventListener(type, func, { + passive: true + }); +}, + _removeListener = function _removeListener(element, type, func) { + return element.removeEventListener(type, func); +}, + _markerDefaults = { + startColor: "green", + endColor: "red", + indent: 0, + fontSize: "16px", + fontWeight: "normal" +}, + _defaults = { + toggleActions: "play", + anticipatePin: 0 +}, + _keywords = { + top: 0, + left: 0, + center: 0.5, + bottom: 1, + right: 1 +}, + _offsetToPx = function _offsetToPx(value, size) { + if (_isString(value)) { + var eqIndex = value.indexOf("="), + relative = ~eqIndex ? +(value.charAt(eqIndex - 1) + 1) * parseFloat(value.substr(eqIndex + 1)) : 0; + + if (~eqIndex) { + value.indexOf("%") > eqIndex && (relative *= size / 100); + value = value.substr(0, eqIndex - 1); + } + + value = relative + (value in _keywords ? _keywords[value] * size : ~value.indexOf("%") ? parseFloat(value) * size / 100 : parseFloat(value) || 0); + } + + return value; +}, + _createMarker = function _createMarker(type, name, container, direction, _ref5, offset, matchWidthEl, containerAnimation) { + var startColor = _ref5.startColor, + endColor = _ref5.endColor, + fontSize = _ref5.fontSize, + indent = _ref5.indent, + fontWeight = _ref5.fontWeight; + + var e = _doc.createElement("div"), + useFixedPosition = _isViewport(container) || _getProxyProp(container, "pinType") === "fixed", + isScroller = type.indexOf("scroller") !== -1, + parent = useFixedPosition ? _body : container, + isStart = type.indexOf("start") !== -1, + color = isStart ? startColor : endColor, + css = "border-color:" + color + ";font-size:" + fontSize + ";color:" + color + ";font-weight:" + fontWeight + ";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;"; + + css += "position:" + ((isScroller || containerAnimation) && useFixedPosition ? "fixed;" : "absolute;"); + (isScroller || containerAnimation || !useFixedPosition) && (css += (direction === _vertical ? _right : _bottom) + ":" + (offset + parseFloat(indent)) + "px;"); + matchWidthEl && (css += "box-sizing:border-box;text-align:left;width:" + matchWidthEl.offsetWidth + "px;"); + e._isStart = isStart; + e.setAttribute("class", "gsap-marker-" + type + (name ? " marker-" + name : "")); + e.style.cssText = css; + e.innerText = name || name === 0 ? type + "-" + name : type; + parent.children[0] ? parent.insertBefore(e, parent.children[0]) : parent.appendChild(e); + e._offset = e["offset" + direction.op.d2]; + + _positionMarker(e, 0, direction, isStart); + + return e; +}, + _positionMarker = function _positionMarker(marker, start, direction, flipped) { + var vars = { + display: "block" + }, + side = direction[flipped ? "os2" : "p2"], + oppositeSide = direction[flipped ? "p2" : "os2"]; + marker._isFlipped = flipped; + vars[direction.a + "Percent"] = flipped ? -100 : 0; + vars[direction.a] = flipped ? "1px" : 0; + vars["border" + side + _Width] = 1; + vars["border" + oppositeSide + _Width] = 0; + vars[direction.p] = start + "px"; + gsap.set(marker, vars); +}, + _triggers = [], + _ids = {}, + _sync = function _sync() { + return _getTime() - _lastScrollTime > 34 && _updateAll(); +}, + _onScroll = function _onScroll() { + // previously, we tried to optimize performance by batching/deferring to the next requestAnimationFrame(), but discovered that Safari has a few bugs that make this unworkable (especially on iOS). See https://codepen.io/GreenSock/pen/16c435b12ef09c38125204818e7b45fc?editors=0010 + _updateAll(); + + _lastScrollTime || _dispatch("scrollStart"); + _lastScrollTime = _getTime(); +}, + _onResize = function _onResize() { + return !_refreshing && !_ignoreResize && !_doc.fullscreenElement && _resizeDelay.restart(true); +}, + // ignore resizes triggered by refresh() +_listeners = {}, + _emptyArray = [], + _media = [], + _creatingMedia, + // when ScrollTrigger.matchMedia() is called, we record the current media key here (like "(min-width: 800px)") so that we can assign it to everything that's created during that call. Then we can revert just those when necessary. In the ScrollTrigger's init() call, the _creatingMedia is recorded as a "media" property on the instance. +_lastMediaTick, + _onMediaChange = function _onMediaChange(e) { + var tick = gsap.ticker.frame, + matches = [], + i = 0, + index; + + if (_lastMediaTick !== tick || _startup) { + _revertAll(); + + for (; i < _media.length; i += 4) { + index = _win.matchMedia(_media[i]).matches; + + if (index !== _media[i + 3]) { + // note: some browsers fire the matchMedia event multiple times, like when going full screen, so we shouldn't call the function multiple times. Check to see if it's already matched. + _media[i + 3] = index; + index ? matches.push(i) : _revertAll(1, _media[i]) || _isFunction(_media[i + 2]) && _media[i + 2](); // Firefox doesn't update the "matches" property of the MediaQueryList object correctly - it only does so as it calls its change handler - so we must re-create a media query here to ensure it's accurate. + } + } + + _revertRecorded(); // in case killing/reverting any of the animations actually added inline styles back. + + + for (i = 0; i < matches.length; i++) { + index = matches[i]; + _creatingMedia = _media[index]; + _media[index + 2] = _media[index + 1](e); + } + + _creatingMedia = 0; + _coreInitted && _refreshAll(0, 1); + _lastMediaTick = tick; + + _dispatch("matchMedia"); + } +}, + _softRefresh = function _softRefresh() { + return _removeListener(ScrollTrigger, "scrollEnd", _softRefresh) || _refreshAll(true); +}, + _dispatch = function _dispatch(type) { + return _listeners[type] && _listeners[type].map(function (f) { + return f(); + }) || _emptyArray; +}, + _savedStyles = [], + // when ScrollTrigger.saveStyles() is called, the inline styles are recorded in this Array in a sequential format like [element, cssText, gsCache, media]. This keeps it very memory-efficient and fast to iterate through. +_revertRecorded = function _revertRecorded(media) { + for (var i = 0; i < _savedStyles.length; i += 5) { + if (!media || _savedStyles[i + 4] === media) { + _savedStyles[i].style.cssText = _savedStyles[i + 1]; + _savedStyles[i].getBBox && _savedStyles[i].setAttribute("transform", _savedStyles[i + 2] || ""); + _savedStyles[i + 3].uncache = 1; + } + } +}, + _revertAll = function _revertAll(kill, media) { + var trigger; + + for (_i = 0; _i < _triggers.length; _i++) { + trigger = _triggers[_i]; + + if (!media || trigger.media === media) { + if (kill) { + trigger.kill(1); + } else { + trigger.revert(); + } + } + } + + media && _revertRecorded(media); + media || _dispatch("revert"); +}, + _clearScrollMemory = function _clearScrollMemory() { + return _scrollers.forEach(function (obj) { + return typeof obj === "function" && (obj.rec = 0); + }); +}, + // zero-out all the recorded scroll positions. Don't use _triggers because if, for example, .matchMedia() is used to create some ScrollTriggers and then the user resizes and it removes ALL ScrollTriggers, and then go back to a size where there are ScrollTriggers, it would have kept the position(s) saved from the initial state. +_refreshingAll, + _refreshAll = function _refreshAll(force, skipRevert) { + if (_lastScrollTime && !force) { + _addListener(ScrollTrigger, "scrollEnd", _softRefresh); + + return; + } + + _refreshingAll = true; + + var refreshInits = _dispatch("refreshInit"); + + _sort && ScrollTrigger.sort(); + skipRevert || _revertAll(); + + _triggers.forEach(function (t) { + return t.refresh(); + }); // don't loop with _i because during a refresh() someone could call ScrollTrigger.update() which would iterate through _i resulting in a skip. + + + _triggers.forEach(function (t) { + return t.vars.end === "max" && t.setPositions(t.start, _maxScroll(t.scroller, t._dir)); + }); // the scroller's max scroll position may change after all the ScrollTriggers refreshed (like pinning could push it down), so we need to loop back and correct any with end: "max". + + + refreshInits.forEach(function (result) { + return result && result.render && result.render(-1); + }); // if the onRefreshInit() returns an animation (typically a gsap.set()), revert it. This makes it easy to put things in a certain spot before refreshing for measurement purposes, and then put things back. + + _clearScrollMemory(); + + _resizeDelay.pause(); + + _refreshingAll = false; + + _dispatch("refresh"); +}, + _lastScroll = 0, + _direction = 1, + _updateAll = function _updateAll() { + if (!_refreshingAll) { + var l = _triggers.length, + time = _getTime(), + recordVelocity = time - _time1 >= 50, + scroll = l && _triggers[0].scroll(); + + _direction = _lastScroll > scroll ? -1 : 1; + _lastScroll = scroll; + + if (recordVelocity) { + if (_lastScrollTime && !_pointerIsDown && time - _lastScrollTime > 200) { + _lastScrollTime = 0; + + _dispatch("scrollEnd"); + } + + _time2 = _time1; + _time1 = time; + } + + if (_direction < 0) { + _i = l; + + while (_i-- > 0) { + _triggers[_i] && _triggers[_i].update(0, recordVelocity); + } + + _direction = 1; + } else { + for (_i = 0; _i < l; _i++) { + _triggers[_i] && _triggers[_i].update(0, recordVelocity); + } + } + } +}, + _propNamesToCopy = [_left, _top, _bottom, _right, _margin + _Bottom, _margin + _Right, _margin + _Top, _margin + _Left, "display", "flexShrink", "float", "zIndex", "gridColumnStart", "gridColumnEnd", "gridRowStart", "gridRowEnd", "gridArea", "justifySelf", "alignSelf", "placeSelf", "order"], + _stateProps = _propNamesToCopy.concat([_width, _height, "boxSizing", "max" + _Width, "max" + _Height, "position", _margin, _padding, _padding + _Top, _padding + _Right, _padding + _Bottom, _padding + _Left]), + _swapPinOut = function _swapPinOut(pin, spacer, state) { + _setState(state); + + var cache = pin._gsap; + + if (cache.spacerIsNative) { + _setState(cache.spacerState); + } else if (pin.parentNode === spacer) { + var parent = spacer.parentNode; + + if (parent) { + parent.insertBefore(pin, spacer); + parent.removeChild(spacer); + } + } +}, + _swapPinIn = function _swapPinIn(pin, spacer, cs, spacerState) { + if (pin.parentNode !== spacer) { + var i = _propNamesToCopy.length, + spacerStyle = spacer.style, + pinStyle = pin.style, + p; + + while (i--) { + p = _propNamesToCopy[i]; + spacerStyle[p] = cs[p]; + } + + spacerStyle.position = cs.position === "absolute" ? "absolute" : "relative"; + cs.display === "inline" && (spacerStyle.display = "inline-block"); + pinStyle[_bottom] = pinStyle[_right] = spacerStyle.flexBasis = "auto"; + spacerStyle.overflow = "visible"; + spacerStyle.boxSizing = "border-box"; + spacerStyle[_width] = _getSize(pin, _horizontal) + _px; + spacerStyle[_height] = _getSize(pin, _vertical) + _px; + spacerStyle[_padding] = pinStyle[_margin] = pinStyle[_top] = pinStyle[_left] = "0"; + + _setState(spacerState); + + pinStyle[_width] = pinStyle["max" + _Width] = cs[_width]; + pinStyle[_height] = pinStyle["max" + _Height] = cs[_height]; + pinStyle[_padding] = cs[_padding]; + pin.parentNode.insertBefore(spacer, pin); + spacer.appendChild(pin); + } +}, + _capsExp = /([A-Z])/g, + _setState = function _setState(state) { + if (state) { + var style = state.t.style, + l = state.length, + i = 0, + p, + value; + (state.t._gsap || gsap.core.getCache(state.t)).uncache = 1; // otherwise transforms may be off + + for (; i < l; i += 2) { + value = state[i + 1]; + p = state[i]; + + if (value) { + style[p] = value; + } else if (style[p]) { + style.removeProperty(p.replace(_capsExp, "-$1").toLowerCase()); + } + } + } +}, + _getState = function _getState(element) { + // returns an Array with alternating values like [property, value, property, value] and a "t" property pointing to the target (element). Makes it fast and cheap. + var l = _stateProps.length, + style = element.style, + state = [], + i = 0; + + for (; i < l; i++) { + state.push(_stateProps[i], style[_stateProps[i]]); + } + + state.t = element; + return state; +}, + _copyState = function _copyState(state, override, omitOffsets) { + var result = [], + l = state.length, + i = omitOffsets ? 8 : 0, + // skip top, left, right, bottom if omitOffsets is true + p; + + for (; i < l; i += 2) { + p = state[i]; + result.push(p, p in override ? override[p] : state[i + 1]); + } + + result.t = state.t; + return result; +}, + _winOffsets = { + left: 0, + top: 0 +}, + // // potential future feature (?) Allow users to calculate where a trigger hits (scroll position) like getScrollPosition("#id", "top bottom") +// _getScrollPosition = (trigger, position, {scroller, containerAnimation, horizontal}) => { +// scroller = _getTarget(scroller || _win); +// let direction = horizontal ? _horizontal : _vertical, +// isViewport = _isViewport(scroller); +// _getSizeFunc(scroller, isViewport, direction); +// return _parsePosition(position, _getTarget(trigger), _getSizeFunc(scroller, isViewport, direction)(), direction, _getScrollFunc(scroller, direction)(), 0, 0, 0, _getOffsetsFunc(scroller, isViewport)(), isViewport ? 0 : parseFloat(_getComputedStyle(scroller)["border" + direction.p2 + _Width]) || 0, 0, containerAnimation ? containerAnimation.duration() : _maxScroll(scroller), containerAnimation); +// }, +_parsePosition = function _parsePosition(value, trigger, scrollerSize, direction, scroll, marker, markerScroller, self, scrollerBounds, borderWidth, useFixedPosition, scrollerMax, containerAnimation) { + _isFunction(value) && (value = value(self)); + + if (_isString(value) && value.substr(0, 3) === "max") { + value = scrollerMax + (value.charAt(4) === "=" ? _offsetToPx("0" + value.substr(3), scrollerSize) : 0); + } + + var time = containerAnimation ? containerAnimation.time() : 0, + p1, + p2, + element; + containerAnimation && containerAnimation.seek(0); + + if (!_isNumber(value)) { + _isFunction(trigger) && (trigger = trigger(self)); + var offsets = value.split(" "), + bounds, + localOffset, + globalOffset, + display; + element = _getTarget(trigger) || _body; + bounds = _getBounds(element) || {}; + + if ((!bounds || !bounds.left && !bounds.top) && _getComputedStyle(element).display === "none") { + // if display is "none", it won't report getBoundingClientRect() properly + display = element.style.display; + element.style.display = "block"; + bounds = _getBounds(element); + display ? element.style.display = display : element.style.removeProperty("display"); + } + + localOffset = _offsetToPx(offsets[0], bounds[direction.d]); + globalOffset = _offsetToPx(offsets[1] || "0", scrollerSize); + value = bounds[direction.p] - scrollerBounds[direction.p] - borderWidth + localOffset + scroll - globalOffset; + markerScroller && _positionMarker(markerScroller, globalOffset, direction, scrollerSize - globalOffset < 20 || markerScroller._isStart && globalOffset > 20); + scrollerSize -= scrollerSize - globalOffset; // adjust for the marker + } else if (markerScroller) { + _positionMarker(markerScroller, scrollerSize, direction, true); + } + + if (marker) { + var position = value + scrollerSize, + isStart = marker._isStart; + p1 = "scroll" + direction.d2; + + _positionMarker(marker, position, direction, isStart && position > 20 || !isStart && (useFixedPosition ? Math.max(_body[p1], _docEl[p1]) : marker.parentNode[p1]) <= position + 1); + + if (useFixedPosition) { + scrollerBounds = _getBounds(markerScroller); + useFixedPosition && (marker.style[direction.op.p] = scrollerBounds[direction.op.p] - direction.op.m - marker._offset + _px); + } + } + + if (containerAnimation && element) { + p1 = _getBounds(element); + containerAnimation.seek(scrollerMax); + p2 = _getBounds(element); + containerAnimation._caScrollDist = p1[direction.p] - p2[direction.p]; + value = value / containerAnimation._caScrollDist * scrollerMax; + } + + containerAnimation && containerAnimation.seek(time); + return containerAnimation ? value : Math.round(value); +}, + _prefixExp = /(?:webkit|moz|length|cssText|inset)/i, + _reparent = function _reparent(element, parent, top, left) { + if (element.parentNode !== parent) { + var style = element.style, + p, + cs; + + if (parent === _body) { + element._stOrig = style.cssText; // record original inline styles so we can revert them later + + cs = _getComputedStyle(element); + + for (p in cs) { + // must copy all relevant styles to ensure that nothing changes visually when we reparent to the . Skip the vendor prefixed ones. + if (!+p && !_prefixExp.test(p) && cs[p] && typeof style[p] === "string" && p !== "0") { + style[p] = cs[p]; + } + } + + style.top = top; + style.left = left; + } else { + style.cssText = element._stOrig; + } + + gsap.core.getCache(element).uncache = 1; + parent.appendChild(element); + } +}, + // _mergeAnimations = animations => { +// let tl = gsap.timeline({smoothChildTiming: true}).startTime(Math.min(...animations.map(a => a.globalTime(0)))); +// animations.forEach(a => {let time = a.totalTime(); tl.add(a); a.totalTime(time); }); +// tl.smoothChildTiming = false; +// return tl; +// }, +// returns a function that can be used to tween the scroll position in the direction provided, and when doing so it'll add a .tween property to the FUNCTION itself, and remove it when the tween completes or gets killed. This gives us a way to have multiple ScrollTriggers use a central function for any given scroller and see if there's a scroll tween running (which would affect if/how things get updated) +_getTweenCreator = function _getTweenCreator(scroller, direction) { + var getScroll = _getScrollFunc(scroller, direction), + prop = "_scroll" + direction.p2, + // add a tweenable property to the scroller that's a getter/setter function, like _scrollTop or _scrollLeft. This way, if someone does gsap.killTweensOf(scroller) it'll kill the scroll tween. + lastScroll1, + lastScroll2, + getTween = function getTween(scrollTo, vars, initialValue, change1, change2) { + var tween = getTween.tween, + onComplete = vars.onComplete, + modifiers = {}; + tween && tween.kill(); + lastScroll1 = Math.round(initialValue); + vars[prop] = scrollTo; + vars.modifiers = modifiers; + + modifiers[prop] = function (value) { + value = _round(getScroll()); // round because in some [very uncommon] Windows environments, it can get reported with decimals even though it was set without. + + if (value !== lastScroll1 && value !== lastScroll2 && Math.abs(value - lastScroll1) > 2 && Math.abs(value - lastScroll2) > 2) { + // if the user scrolls, kill the tween. iOS Safari intermittently misreports the scroll position, it may be the most recently-set one or the one before that! When Safari is zoomed (CMD-+), it often misreports as 1 pixel off too! So if we set the scroll position to 125, for example, it'll actually report it as 124. + tween.kill(); + getTween.tween = 0; + } else { + value = initialValue + change1 * tween.ratio + change2 * tween.ratio * tween.ratio; + } + + lastScroll2 = lastScroll1; + return lastScroll1 = _round(value); + }; + + vars.onComplete = function () { + getTween.tween = 0; + onComplete && onComplete.call(tween); + }; + + tween = getTween.tween = gsap.to(scroller, vars); + return tween; + }; + + scroller[prop] = getScroll; + + _addListener(scroller, "wheel", function () { + return getTween.tween && getTween.tween.kill() && (getTween.tween = 0); + }); // Windows machines handle mousewheel scrolling in chunks (like "3 lines per scroll") meaning the typical strategy for cancelling the scroll isn't as sensitive. It's much more likely to match one of the previous 2 scroll event positions. So we kill any snapping as soon as there's a wheel event. + + + return getTween; +}; + +_horizontal.op = _vertical; +export var ScrollTrigger = /*#__PURE__*/function () { + function ScrollTrigger(vars, animation) { + _coreInitted || ScrollTrigger.register(gsap) || console.warn("Please gsap.registerPlugin(ScrollTrigger)"); + this.init(vars, animation); + } + + var _proto = ScrollTrigger.prototype; + + _proto.init = function init(vars, animation) { + this.progress = this.start = 0; + this.vars && this.kill(1); // in case it's being initted again + + if (!_enabled) { + this.update = this.refresh = this.kill = _passThrough; + return; + } + + vars = _setDefaults(_isString(vars) || _isNumber(vars) || vars.nodeType ? { + trigger: vars + } : vars, _defaults); + + var _vars = vars, + onUpdate = _vars.onUpdate, + toggleClass = _vars.toggleClass, + id = _vars.id, + onToggle = _vars.onToggle, + onRefresh = _vars.onRefresh, + scrub = _vars.scrub, + trigger = _vars.trigger, + pin = _vars.pin, + pinSpacing = _vars.pinSpacing, + invalidateOnRefresh = _vars.invalidateOnRefresh, + anticipatePin = _vars.anticipatePin, + onScrubComplete = _vars.onScrubComplete, + onSnapComplete = _vars.onSnapComplete, + once = _vars.once, + snap = _vars.snap, + pinReparent = _vars.pinReparent, + pinSpacer = _vars.pinSpacer, + containerAnimation = _vars.containerAnimation, + fastScrollEnd = _vars.fastScrollEnd, + preventOverlaps = _vars.preventOverlaps, + direction = vars.horizontal || vars.containerAnimation && vars.horizontal !== false ? _horizontal : _vertical, + isToggle = !scrub && scrub !== 0, + scroller = _getTarget(vars.scroller || _win), + scrollerCache = gsap.core.getCache(scroller), + isViewport = _isViewport(scroller), + useFixedPosition = ("pinType" in vars ? vars.pinType : _getProxyProp(scroller, "pinType") || isViewport && "fixed") === "fixed", + callbacks = [vars.onEnter, vars.onLeave, vars.onEnterBack, vars.onLeaveBack], + toggleActions = isToggle && vars.toggleActions.split(" "), + markers = "markers" in vars ? vars.markers : _defaults.markers, + borderWidth = isViewport ? 0 : parseFloat(_getComputedStyle(scroller)["border" + direction.p2 + _Width]) || 0, + self = this, + onRefreshInit = vars.onRefreshInit && function () { + return vars.onRefreshInit(self); + }, + getScrollerSize = _getSizeFunc(scroller, isViewport, direction), + getScrollerOffsets = _getOffsetsFunc(scroller, isViewport), + lastSnap = 0, + scrollFunc = _getScrollFunc(scroller, direction), + tweenTo, + pinCache, + snapFunc, + scroll1, + scroll2, + start, + end, + markerStart, + markerEnd, + markerStartTrigger, + markerEndTrigger, + markerVars, + change, + pinOriginalState, + pinActiveState, + pinState, + spacer, + offset, + pinGetter, + pinSetter, + pinStart, + pinChange, + spacingStart, + spacerState, + markerStartSetter, + markerEndSetter, + cs, + snap1, + snap2, + scrubTween, + scrubSmooth, + snapDurClamp, + snapDelayedCall, + prevProgress, + prevScroll, + prevAnimProgress, + caMarkerSetter; + + self.media = _creatingMedia; + self._dir = direction; + anticipatePin *= 45; + self.scroller = scroller; + self.scroll = containerAnimation ? containerAnimation.time.bind(containerAnimation) : scrollFunc; + scroll1 = scrollFunc(); + self.vars = vars; + animation = animation || vars.animation; + "refreshPriority" in vars && (_sort = 1); + scrollerCache.tweenScroll = scrollerCache.tweenScroll || { + top: _getTweenCreator(scroller, _vertical), + left: _getTweenCreator(scroller, _horizontal) + }; + self.tweenTo = tweenTo = scrollerCache.tweenScroll[direction.p]; + + if (animation) { + animation.vars.lazy = false; + animation._initted || animation.vars.immediateRender !== false && vars.immediateRender !== false && animation.render(0, true, true); + self.animation = animation.pause(); + animation.scrollTrigger = self; + scrubSmooth = _isNumber(scrub) && scrub; + scrubSmooth && (scrubTween = gsap.to(animation, { + ease: "power3", + duration: scrubSmooth, + onComplete: function onComplete() { + return onScrubComplete && onScrubComplete(self); + } + })); + snap1 = 0; + id || (id = animation.vars.id); + } + + _triggers.push(self); + + if (snap) { + if (!_isObject(snap) || snap.push) { + snap = { + snapTo: snap + }; + } + + "scrollBehavior" in _body.style && gsap.set(isViewport ? [_body, _docEl] : scroller, { + scrollBehavior: "auto" + }); // smooth scrolling doesn't work with snap. + + snapFunc = _isFunction(snap.snapTo) ? snap.snapTo : snap.snapTo === "labels" ? _getClosestLabel(animation) : snap.snapTo === "labelsDirectional" ? _getLabelAtDirection(animation) : snap.directional !== false ? function (value, st) { + return _snapDirectional(snap.snapTo)(value, st.direction); + } : gsap.utils.snap(snap.snapTo); + snapDurClamp = snap.duration || { + min: 0.1, + max: 2 + }; + snapDurClamp = _isObject(snapDurClamp) ? _clamp(snapDurClamp.min, snapDurClamp.max) : _clamp(snapDurClamp, snapDurClamp); + snapDelayedCall = gsap.delayedCall(snap.delay || scrubSmooth / 2 || 0.1, function () { + if (Math.abs(self.getVelocity()) < 10 && !_pointerIsDown && lastSnap !== scrollFunc()) { + var totalProgress = animation && !isToggle ? animation.totalProgress() : self.progress, + velocity = (totalProgress - snap2) / (_getTime() - _time2) * 1000 || 0, + change1 = gsap.utils.clamp(-self.progress, 1 - self.progress, _abs(velocity / 2) * velocity / 0.185), + naturalEnd = self.progress + (snap.inertia === false ? 0 : change1), + endValue = _clamp(0, 1, snapFunc(naturalEnd, self)), + scroll = scrollFunc(), + endScroll = Math.round(start + endValue * change), + _snap = snap, + onStart = _snap.onStart, + _onInterrupt = _snap.onInterrupt, + _onComplete = _snap.onComplete, + tween = tweenTo.tween; + + if (scroll <= end && scroll >= start && endScroll !== scroll) { + if (tween && !tween._initted && tween.data <= _abs(endScroll - scroll)) { + // there's an overlapping snap! So we must figure out which one is closer and let that tween live. + return; + } + + if (snap.inertia === false) { + change1 = endValue - self.progress; + } + + tweenTo(endScroll, { + duration: snapDurClamp(_abs(Math.max(_abs(naturalEnd - totalProgress), _abs(endValue - totalProgress)) * 0.185 / velocity / 0.05 || 0)), + ease: snap.ease || "power3", + data: _abs(endScroll - scroll), + // record the distance so that if another snap tween occurs (conflict) we can prioritize the closest snap. + onInterrupt: function onInterrupt() { + return snapDelayedCall.restart(true) && _onInterrupt && _onInterrupt(self); + }, + onComplete: function onComplete() { + self.update(); + lastSnap = scrollFunc(); + snap1 = snap2 = animation && !isToggle ? animation.totalProgress() : self.progress; + onSnapComplete && onSnapComplete(self); + _onComplete && _onComplete(self); + } + }, scroll, change1 * change, endScroll - scroll - change1 * change); + onStart && onStart(self, tweenTo.tween); + } + } else if (self.isActive) { + snapDelayedCall.restart(true); + } + }).pause(); + } + + id && (_ids[id] = self); + trigger = self.trigger = _getTarget(trigger || pin); + pin = pin === true ? trigger : _getTarget(pin); + _isString(toggleClass) && (toggleClass = { + targets: trigger, + className: toggleClass + }); + + if (pin) { + pinSpacing === false || pinSpacing === _margin || (pinSpacing = !pinSpacing && _getComputedStyle(pin.parentNode).display === "flex" ? false : _padding); // if the parent is display: flex, don't apply pinSpacing by default. + + self.pin = pin; + vars.force3D !== false && gsap.set(pin, { + force3D: true + }); + pinCache = gsap.core.getCache(pin); + + if (!pinCache.spacer) { + // record the spacer and pinOriginalState on the cache in case someone tries pinning the same element with MULTIPLE ScrollTriggers - we don't want to have multiple spacers or record the "original" pin state after it has already been affected by another ScrollTrigger. + if (pinSpacer) { + pinSpacer = _getTarget(pinSpacer); + pinSpacer && !pinSpacer.nodeType && (pinSpacer = pinSpacer.current || pinSpacer.nativeElement); // for React & Angular + + pinCache.spacerIsNative = !!pinSpacer; + pinSpacer && (pinCache.spacerState = _getState(pinSpacer)); + } + + pinCache.spacer = spacer = pinSpacer || _doc.createElement("div"); + spacer.classList.add("pin-spacer"); + id && spacer.classList.add("pin-spacer-" + id); + pinCache.pinState = pinOriginalState = _getState(pin); + } else { + pinOriginalState = pinCache.pinState; + } + + self.spacer = spacer = pinCache.spacer; + cs = _getComputedStyle(pin); + spacingStart = cs[pinSpacing + direction.os2]; + pinGetter = gsap.getProperty(pin); + pinSetter = gsap.quickSetter(pin, direction.a, _px); // pin.firstChild && !_maxScroll(pin, direction) && (pin.style.overflow = "hidden"); // protects from collapsing margins, but can have unintended consequences as demonstrated here: https://codepen.io/GreenSock/pen/1e42c7a73bfa409d2cf1e184e7a4248d so it was removed in favor of just telling people to set up their CSS to avoid the collapsing margins (overflow: hidden | auto is just one option. Another is border-top: 1px solid transparent). + + _swapPinIn(pin, spacer, cs); + + pinState = _getState(pin); + } + + if (markers) { + markerVars = _isObject(markers) ? _setDefaults(markers, _markerDefaults) : _markerDefaults; + markerStartTrigger = _createMarker("scroller-start", id, scroller, direction, markerVars, 0); + markerEndTrigger = _createMarker("scroller-end", id, scroller, direction, markerVars, 0, markerStartTrigger); + offset = markerStartTrigger["offset" + direction.op.d2]; + markerStart = _createMarker("start", id, scroller, direction, markerVars, offset, 0, containerAnimation); + markerEnd = _createMarker("end", id, scroller, direction, markerVars, offset, 0, containerAnimation); + containerAnimation && (caMarkerSetter = gsap.quickSetter([markerStart, markerEnd], direction.a, _px)); + + if (!useFixedPosition && !(_proxies.length && _getProxyProp(scroller, "fixedMarkers") === true)) { + _makePositionable(isViewport ? _body : scroller); + + gsap.set([markerStartTrigger, markerEndTrigger], { + force3D: true + }); + markerStartSetter = gsap.quickSetter(markerStartTrigger, direction.a, _px); + markerEndSetter = gsap.quickSetter(markerEndTrigger, direction.a, _px); + } + } + + if (containerAnimation) { + var oldOnUpdate = containerAnimation.vars.onUpdate, + oldParams = containerAnimation.vars.onUpdateParams; + containerAnimation.eventCallback("onUpdate", function () { + self.update(0, 0, 1); + oldOnUpdate && oldOnUpdate.apply(oldParams || []); + }); + } + + self.previous = function () { + return _triggers[_triggers.indexOf(self) - 1]; + }; + + self.next = function () { + return _triggers[_triggers.indexOf(self) + 1]; + }; + + self.revert = function (revert) { + var r = revert !== false || !self.enabled, + prevRefreshing = _refreshing; + + if (r !== self.isReverted) { + if (r) { + self.scroll.rec || (self.scroll.rec = scrollFunc()); + prevScroll = Math.max(scrollFunc(), self.scroll.rec || 0); // record the scroll so we can revert later (repositioning/pinning things can affect scroll position). In the static refresh() method, we first record all the scroll positions as a reference. + + prevProgress = self.progress; + prevAnimProgress = animation && animation.progress(); + } + + markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) { + return m.style.display = r ? "none" : "block"; + }); + r && (_refreshing = 1); + self.update(r); // make sure the pin is back in its original position so that all the measurements are correct. + + _refreshing = prevRefreshing; + pin && (r ? _swapPinOut(pin, spacer, pinOriginalState) : (!pinReparent || !self.isActive) && _swapPinIn(pin, spacer, _getComputedStyle(pin), spacerState)); + self.isReverted = r; + } + }; + + self.refresh = function (soft, force) { + if ((_refreshing || !self.enabled) && !force) { + return; + } + + if (pin && soft && _lastScrollTime) { + _addListener(ScrollTrigger, "scrollEnd", _softRefresh); + + return; + } + + _refreshing = 1; + scrubTween && scrubTween.pause(); + invalidateOnRefresh && animation && animation.time(-0.01, true).invalidate(); + self.isReverted || self.revert(); + + var size = getScrollerSize(), + scrollerBounds = getScrollerOffsets(), + max = containerAnimation ? containerAnimation.duration() : _maxScroll(scroller, direction), + offset = 0, + otherPinOffset = 0, + parsedEnd = vars.end, + parsedEndTrigger = vars.endTrigger || trigger, + parsedStart = vars.start || (vars.start === 0 || !trigger ? 0 : pin ? "0 0" : "0 100%"), + pinnedContainer = vars.pinnedContainer && _getTarget(vars.pinnedContainer), + triggerIndex = trigger && Math.max(0, _triggers.indexOf(self)) || 0, + i = triggerIndex, + cs, + bounds, + scroll, + isVertical, + override, + curTrigger, + curPin, + oppositeScroll, + initted, + revertedPins; + + while (i--) { + // user might try to pin the same element more than once, so we must find any prior triggers with the same pin, revert them, and determine how long they're pinning so that we can offset things appropriately. Make sure we revert from last to first so that things "rewind" properly. + curTrigger = _triggers[i]; + curTrigger.end || curTrigger.refresh(0, 1) || (_refreshing = 1); // if it's a timeline-based trigger that hasn't been fully initialized yet because it's waiting for 1 tick, just force the refresh() here, otherwise if it contains a pin that's supposed to affect other ScrollTriggers further down the page, they won't be adjusted properly. + + curPin = curTrigger.pin; + + if (curPin && (curPin === trigger || curPin === pin) && !curTrigger.isReverted) { + revertedPins || (revertedPins = []); + revertedPins.unshift(curTrigger); // we'll revert from first to last to make sure things reach their end state properly + + curTrigger.revert(); + } + } + + _isFunction(parsedStart) && (parsedStart = parsedStart(self)); + start = _parsePosition(parsedStart, trigger, size, direction, scrollFunc(), markerStart, markerStartTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation) || (pin ? -0.001 : 0); + _isFunction(parsedEnd) && (parsedEnd = parsedEnd(self)); + + if (_isString(parsedEnd) && !parsedEnd.indexOf("+=")) { + if (~parsedEnd.indexOf(" ")) { + parsedEnd = (_isString(parsedStart) ? parsedStart.split(" ")[0] : "") + parsedEnd; + } else { + offset = _offsetToPx(parsedEnd.substr(2), size); + parsedEnd = _isString(parsedStart) ? parsedStart : start + offset; // _parsePosition won't factor in the offset if the start is a number, so do it here. + + parsedEndTrigger = trigger; + } + } + + end = Math.max(start, _parsePosition(parsedEnd || (parsedEndTrigger ? "100% 0" : max), parsedEndTrigger, size, direction, scrollFunc() + offset, markerEnd, markerEndTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation)) || -0.001; + change = end - start || (start -= 0.01) && 0.001; + offset = 0; + i = triggerIndex; + + while (i--) { + curTrigger = _triggers[i]; + curPin = curTrigger.pin; + + if (curPin && curTrigger.start - curTrigger._pinPush < start && !containerAnimation) { + cs = curTrigger.end - curTrigger.start; + + if ((curPin === trigger || curPin === pinnedContainer) && !_isNumber(parsedStart)) { + // numeric start values shouldn't be offset at all - treat them as absolute + offset += cs * (1 - curTrigger.progress); + } + + curPin === pin && (otherPinOffset += cs); + } + } + + start += offset; + end += offset; + self._pinPush = otherPinOffset; + + if (markerStart && offset) { + // offset the markers if necessary + cs = {}; + cs[direction.a] = "+=" + offset; + pinnedContainer && (cs[direction.p] = "-=" + scrollFunc()); + gsap.set([markerStart, markerEnd], cs); + } + + if (pin) { + cs = _getComputedStyle(pin); + isVertical = direction === _vertical; + scroll = scrollFunc(); // recalculate because the triggers can affect the scroll + + pinStart = parseFloat(pinGetter(direction.a)) + otherPinOffset; + !max && end > 1 && ((isViewport ? _body : scroller).style["overflow-" + direction.a] = "scroll"); // makes sure the scroller has a scrollbar, otherwise if something has width: 100%, for example, it would be too big (exclude the scrollbar). See https://greensock.com/forums/topic/25182-scrolltrigger-width-of-page-increase-where-markers-are-set-to-false/ + + _swapPinIn(pin, spacer, cs); + + pinState = _getState(pin); // transforms will interfere with the top/left/right/bottom placement, so remove them temporarily. getBoundingClientRect() factors in transforms. + + bounds = _getBounds(pin, true); + oppositeScroll = useFixedPosition && _getScrollFunc(scroller, isVertical ? _horizontal : _vertical)(); + + if (pinSpacing) { + spacerState = [pinSpacing + direction.os2, change + otherPinOffset + _px]; + spacerState.t = spacer; + i = pinSpacing === _padding ? _getSize(pin, direction) + change + otherPinOffset : 0; + i && spacerState.push(direction.d, i + _px); // for box-sizing: border-box (must include padding). + + _setState(spacerState); + + useFixedPosition && scrollFunc(prevScroll); + } + + if (useFixedPosition) { + override = { + top: bounds.top + (isVertical ? scroll - start : oppositeScroll) + _px, + left: bounds.left + (isVertical ? oppositeScroll : scroll - start) + _px, + boxSizing: "border-box", + position: "fixed" + }; + override[_width] = override["max" + _Width] = Math.ceil(bounds.width) + _px; + override[_height] = override["max" + _Height] = Math.ceil(bounds.height) + _px; + override[_margin] = override[_margin + _Top] = override[_margin + _Right] = override[_margin + _Bottom] = override[_margin + _Left] = "0"; + override[_padding] = cs[_padding]; + override[_padding + _Top] = cs[_padding + _Top]; + override[_padding + _Right] = cs[_padding + _Right]; + override[_padding + _Bottom] = cs[_padding + _Bottom]; + override[_padding + _Left] = cs[_padding + _Left]; + pinActiveState = _copyState(pinOriginalState, override, pinReparent); + } + + if (animation) { + // the animation might be affecting the transform, so we must jump to the end, check the value, and compensate accordingly. Otherwise, when it becomes unpinned, the pinSetter() will get set to a value that doesn't include whatever the animation did. + initted = animation._initted; // if not, we must invalidate() after this step, otherwise it could lock in starting values prematurely. + + _suppressOverwrites(1); + + animation.render(animation.duration(), true, true); + pinChange = pinGetter(direction.a) - pinStart + change + otherPinOffset; + change !== pinChange && pinActiveState.splice(pinActiveState.length - 2, 2); // transform is the last property/value set in the state Array. Since the animation is controlling that, we should omit it. + + animation.render(0, true, true); + initted || animation.invalidate(); + + _suppressOverwrites(0); + } else { + pinChange = change; + } + } else if (trigger && scrollFunc() && !containerAnimation) { + // it may be INSIDE a pinned element, so walk up the tree and look for any elements with _pinOffset to compensate because anything with pinSpacing that's already scrolled would throw off the measurements in getBoundingClientRect() + bounds = trigger.parentNode; + + while (bounds && bounds !== _body) { + if (bounds._pinOffset) { + start -= bounds._pinOffset; + end -= bounds._pinOffset; + } + + bounds = bounds.parentNode; + } + } + + revertedPins && revertedPins.forEach(function (t) { + return t.revert(false); + }); + self.start = start; + self.end = end; + scroll1 = scroll2 = scrollFunc(); // reset velocity + + if (!containerAnimation) { + scroll1 < prevScroll && scrollFunc(prevScroll); + self.scroll.rec = 0; + } + + self.revert(false); + _refreshing = 0; + animation && isToggle && animation._initted && animation.progress() !== prevAnimProgress && animation.progress(prevAnimProgress, true).render(animation.time(), true, true); // must force a re-render because if saveStyles() was used on the target(s), the styles could have been wiped out during the refresh(). + + if (prevProgress !== self.progress || containerAnimation) { + // ensures that the direction is set properly (when refreshing, progress is set back to 0 initially, then back again to wherever it needs to be) and that callbacks are triggered. + animation && !isToggle && animation.totalProgress(prevProgress, true); // to avoid issues where animation callbacks like onStart aren't triggered. + + self.progress = prevProgress; + self.update(0, 0, 1); + } + + pin && pinSpacing && (spacer._pinOffset = Math.round(self.progress * pinChange)); + onRefresh && onRefresh(self); + }; + + self.getVelocity = function () { + return (scrollFunc() - scroll2) / (_getTime() - _time2) * 1000 || 0; + }; + + self.endAnimation = function () { + _endAnimation(self.callbackAnimation); + + if (animation) { + scrubTween ? scrubTween.progress(1) : !animation.paused() ? _endAnimation(animation, animation.reversed()) : isToggle || _endAnimation(animation, self.direction < 0, 1); + } + }; + + self.labelToScroll = function (label) { + return animation && animation.labels && (start || self.refresh() || start) + animation.labels[label] / animation.duration() * change || 0; + }; + + self.getTrailing = function (name) { + var i = _triggers.indexOf(self), + a = self.direction > 0 ? _triggers.slice(0, i).reverse() : _triggers.slice(i + 1); + + return _isString(name) ? a.filter(function (t) { + return t.vars.preventOverlaps === name; + }) : a; + }; + + self.update = function (reset, recordVelocity, forceFake) { + if (containerAnimation && !forceFake && !reset) { + return; + } + + var scroll = self.scroll(), + p = reset ? 0 : (scroll - start) / change, + clipped = p < 0 ? 0 : p > 1 ? 1 : p || 0, + prevProgress = self.progress, + isActive, + wasActive, + toggleState, + action, + stateChanged, + toggled, + isAtMax, + isTakingAction; + + if (recordVelocity) { + scroll2 = scroll1; + scroll1 = containerAnimation ? scrollFunc() : scroll; + + if (snap) { + snap2 = snap1; + snap1 = animation && !isToggle ? animation.totalProgress() : clipped; + } + } // anticipate the pinning a few ticks ahead of time based on velocity to avoid a visual glitch due to the fact that most browsers do scrolling on a separate thread (not synced with requestAnimationFrame). + + + anticipatePin && !clipped && pin && !_refreshing && !_startup && _lastScrollTime && start < scroll + (scroll - scroll2) / (_getTime() - _time2) * anticipatePin && (clipped = 0.0001); + + if (clipped !== prevProgress && self.enabled) { + isActive = self.isActive = !!clipped && clipped < 1; + wasActive = !!prevProgress && prevProgress < 1; + toggled = isActive !== wasActive; + stateChanged = toggled || !!clipped !== !!prevProgress; // could go from start all the way to end, thus it didn't toggle but it did change state in a sense (may need to fire a callback) + + self.direction = clipped > prevProgress ? 1 : -1; + self.progress = clipped; + + if (stateChanged && !_refreshing) { + toggleState = clipped && !prevProgress ? 0 : clipped === 1 ? 1 : prevProgress === 1 ? 2 : 3; // 0 = enter, 1 = leave, 2 = enterBack, 3 = leaveBack (we prioritize the FIRST encounter, thus if you scroll really fast past the onEnter and onLeave in one tick, it'd prioritize onEnter. + + if (isToggle) { + action = !toggled && toggleActions[toggleState + 1] !== "none" && toggleActions[toggleState + 1] || toggleActions[toggleState]; // if it didn't toggle, that means it shot right past and since we prioritize the "enter" action, we should switch to the "leave" in this case (but only if one is defined) + + isTakingAction = animation && (action === "complete" || action === "reset" || action in animation); + } + } + + preventOverlaps && toggled && (isTakingAction || scrub || !animation) && (_isFunction(preventOverlaps) ? preventOverlaps(self) : self.getTrailing(preventOverlaps).forEach(function (t) { + return t.endAnimation(); + })); + + if (!isToggle) { + if (scrubTween && !_refreshing && !_startup) { + scrubTween.vars.totalProgress = clipped; + scrubTween.invalidate().restart(); + } else if (animation) { + animation.totalProgress(clipped, !!_refreshing); + } + } + + if (pin) { + reset && pinSpacing && (spacer.style[pinSpacing + direction.os2] = spacingStart); + + if (!useFixedPosition) { + pinSetter(pinStart + pinChange * clipped); + } else if (stateChanged) { + isAtMax = !reset && clipped > prevProgress && end + 1 > scroll && scroll + 1 >= _maxScroll(scroller, direction); // if it's at the VERY end of the page, don't switch away from position: fixed because it's pointless and it could cause a brief flash when the user scrolls back up (when it gets pinned again) + + if (pinReparent) { + if (!reset && (isActive || isAtMax)) { + var bounds = _getBounds(pin, true), + _offset = scroll - start; + + _reparent(pin, _body, bounds.top + (direction === _vertical ? _offset : 0) + _px, bounds.left + (direction === _vertical ? 0 : _offset) + _px); + } else { + _reparent(pin, spacer); + } + } + + _setState(isActive || isAtMax ? pinActiveState : pinState); + + pinChange !== change && clipped < 1 && isActive || pinSetter(pinStart + (clipped === 1 && !isAtMax ? pinChange : 0)); + } + } + + snap && !tweenTo.tween && !_refreshing && !_startup && snapDelayedCall.restart(true); + toggleClass && (toggled || once && clipped && (clipped < 1 || !_limitCallbacks)) && _toArray(toggleClass.targets).forEach(function (el) { + return el.classList[isActive || once ? "add" : "remove"](toggleClass.className); + }); // classes could affect positioning, so do it even if reset or refreshing is true. + + onUpdate && !isToggle && !reset && onUpdate(self); + + if (stateChanged && !_refreshing) { + if (isToggle) { + if (isTakingAction) { + if (action === "complete") { + animation.pause().totalProgress(1); + } else if (action === "reset") { + animation.restart(true).pause(); + } else if (action === "restart") { + animation.restart(true); + } else { + animation[action](); + } + } + + onUpdate && onUpdate(self); + } + + if (toggled || !_limitCallbacks) { + // on startup, the page could be scrolled and we don't want to fire callbacks that didn't toggle. For example onEnter shouldn't fire if the ScrollTrigger isn't actually entered. + onToggle && toggled && _callback(self, onToggle); + callbacks[toggleState] && _callback(self, callbacks[toggleState]); + once && (clipped === 1 ? self.kill(false, 1) : callbacks[toggleState] = 0); // a callback shouldn't be called again if once is true. + + if (!toggled) { + // it's possible to go completely past, like from before the start to after the end (or vice-versa) in which case BOTH callbacks should be fired in that order + toggleState = clipped === 1 ? 1 : 3; + callbacks[toggleState] && _callback(self, callbacks[toggleState]); + } + } + + if (fastScrollEnd && !isActive && Math.abs(self.getVelocity()) > (_isNumber(fastScrollEnd) ? fastScrollEnd : 2500)) { + _endAnimation(self.callbackAnimation); + + scrubTween ? scrubTween.progress(1) : _endAnimation(animation, !clipped, 1); + } + } else if (isToggle && onUpdate && !_refreshing) { + onUpdate(self); + } + } // update absolutely-positioned markers (only if the scroller isn't the viewport) + + + if (markerEndSetter) { + var n = containerAnimation ? scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0) : scroll; + markerStartSetter(n + (markerStartTrigger._isFlipped ? 1 : 0)); + markerEndSetter(n); + } + + caMarkerSetter && caMarkerSetter(-scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0)); + }; + + self.enable = function (reset, refresh) { + if (!self.enabled) { + self.enabled = true; + + _addListener(scroller, "resize", _onResize); + + _addListener(scroller, "scroll", _onScroll); + + onRefreshInit && _addListener(ScrollTrigger, "refreshInit", onRefreshInit); + + if (reset !== false) { + self.progress = prevProgress = 0; + scroll1 = scroll2 = lastSnap = scrollFunc(); + } + + refresh !== false && self.refresh(); + } + }; + + self.getTween = function (snap) { + return snap && tweenTo ? tweenTo.tween : scrubTween; + }; + + self.setPositions = function (newStart, newEnd) { + // doesn't persist after refresh()! Intended to be a way to override values that were set during refresh(), like you could set it in onRefresh() + if (pin) { + pinStart += newStart - start; + pinChange += newEnd - newStart - change; + } + + self.start = start = newStart; + self.end = end = newEnd; + change = newEnd - newStart; + self.update(); + }; + + self.disable = function (reset, allowAnimation) { + if (self.enabled) { + reset !== false && self.revert(); + self.enabled = self.isActive = false; + allowAnimation || scrubTween && scrubTween.pause(); + prevScroll = 0; + pinCache && (pinCache.uncache = 1); + onRefreshInit && _removeListener(ScrollTrigger, "refreshInit", onRefreshInit); + + if (snapDelayedCall) { + snapDelayedCall.pause(); + tweenTo.tween && tweenTo.tween.kill() && (tweenTo.tween = 0); + } + + if (!isViewport) { + var i = _triggers.length; + + while (i--) { + if (_triggers[i].scroller === scroller && _triggers[i] !== self) { + return; //don't remove the listeners if there are still other triggers referencing it. + } + } + + _removeListener(scroller, "resize", _onResize); + + _removeListener(scroller, "scroll", _onScroll); + } + } + }; + + self.kill = function (revert, allowAnimation) { + self.disable(revert, allowAnimation); + scrubTween && scrubTween.kill(); + id && delete _ids[id]; + + var i = _triggers.indexOf(self); + + i >= 0 && _triggers.splice(i, 1); + i === _i && _direction > 0 && _i--; // if we're in the middle of a refresh() or update(), splicing would cause skips in the index, so adjust... + // if no other ScrollTrigger instances of the same scroller are found, wipe out any recorded scroll position. Otherwise, in a single page application, for example, it could maintain scroll position when it really shouldn't. + + i = 0; + + _triggers.forEach(function (t) { + return t.scroller === self.scroller && (i = 1); + }); + + i || (self.scroll.rec = 0); + + if (animation) { + animation.scrollTrigger = null; + revert && animation.render(-1); + allowAnimation || animation.kill(); + } + + markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) { + return m.parentNode && m.parentNode.removeChild(m); + }); + + if (pin) { + pinCache && (pinCache.uncache = 1); + i = 0; + + _triggers.forEach(function (t) { + return t.pin === pin && i++; + }); + + i || (pinCache.spacer = 0); // if there aren't any more ScrollTriggers with the same pin, remove the spacer, otherwise it could be contaminated with old/stale values if the user re-creates a ScrollTrigger for the same element. + } + }; + + self.enable(false, false); + !animation || !animation.add || change ? self.refresh() : gsap.delayedCall(0.01, function () { + return start || end || self.refresh(); + }) && (change = 0.01) && (start = end = 0); // if the animation is a timeline, it may not have been populated yet, so it wouldn't render at the proper place on the first refresh(), thus we should schedule one for the next tick. If "change" is defined, we know it must be re-enabling, thus we can refresh() right away. + }; + + ScrollTrigger.register = function register(core) { + if (!_coreInitted) { + gsap = core || _getGSAP(); + + if (_windowExists() && window.document) { + _win = window; + _doc = document; + _docEl = _doc.documentElement; + _body = _doc.body; + } + + if (gsap) { + _toArray = gsap.utils.toArray; + _clamp = gsap.utils.clamp; + _suppressOverwrites = gsap.core.suppressOverwrites || _passThrough; + gsap.core.globals("ScrollTrigger", ScrollTrigger); // must register the global manually because in Internet Explorer, functions (classes) don't have a "name" property. + + if (_body) { + _addListener(_win, "wheel", _onScroll); + + _root = [_win, _doc, _docEl, _body]; + + _addListener(_doc, "scroll", _onScroll); // some browsers (like Chrome), the window stops dispatching scroll events on the window if you scroll really fast, but it's consistent on the document! + + + var bodyStyle = _body.style, + border = bodyStyle.borderTopStyle, + bounds; + bodyStyle.borderTopStyle = "solid"; // works around an issue where a margin of a child element could throw off the bounds of the _body, making it seem like there's a margin when there actually isn't. The border ensures that the bounds are accurate. + + bounds = _getBounds(_body); + _vertical.m = Math.round(bounds.top + _vertical.sc()) || 0; // accommodate the offset of the caused by margins and/or padding + + _horizontal.m = Math.round(bounds.left + _horizontal.sc()) || 0; + border ? bodyStyle.borderTopStyle = border : bodyStyle.removeProperty("border-top-style"); + _syncInterval = setInterval(_sync, 200); + gsap.delayedCall(0.5, function () { + return _startup = 0; + }); + + _addListener(_doc, "touchcancel", _passThrough); // some older Android devices intermittently stop dispatching "touchmove" events if we don't listen for "touchcancel" on the document. + + + _addListener(_body, "touchstart", _passThrough); //works around Safari bug: https://greensock.com/forums/topic/21450-draggable-in-iframe-on-mobile-is-buggy/ + + + _multiListener(_addListener, _doc, "pointerdown,touchstart,mousedown", function () { + return _pointerIsDown = 1; + }); + + _multiListener(_addListener, _doc, "pointerup,touchend,mouseup", function () { + return _pointerIsDown = 0; + }); + + _transformProp = gsap.utils.checkPrefix("transform"); + + _stateProps.push(_transformProp); + + _coreInitted = _getTime(); + _resizeDelay = gsap.delayedCall(0.2, _refreshAll).pause(); + _autoRefresh = [_doc, "visibilitychange", function () { + var w = _win.innerWidth, + h = _win.innerHeight; + + if (_doc.hidden) { + _prevWidth = w; + _prevHeight = h; + } else if (_prevWidth !== w || _prevHeight !== h) { + _onResize(); + } + }, _doc, "DOMContentLoaded", _refreshAll, _win, "load", function () { + return _lastScrollTime || _refreshAll(); + }, _win, "resize", _onResize]; + + _iterateAutoRefresh(_addListener); + } + } + } + + return _coreInitted; + }; + + ScrollTrigger.defaults = function defaults(config) { + if (config) { + for (var p in config) { + _defaults[p] = config[p]; + } + } + + return _defaults; + }; + + ScrollTrigger.kill = function kill() { + _enabled = 0; + + _triggers.slice(0).forEach(function (trigger) { + return trigger.kill(1); + }); + }; + + ScrollTrigger.config = function config(vars) { + "limitCallbacks" in vars && (_limitCallbacks = !!vars.limitCallbacks); + var ms = vars.syncInterval; + ms && clearInterval(_syncInterval) || (_syncInterval = ms) && setInterval(_sync, ms); + + if ("autoRefreshEvents" in vars) { + _iterateAutoRefresh(_removeListener) || _iterateAutoRefresh(_addListener, vars.autoRefreshEvents || "none"); + _ignoreResize = (vars.autoRefreshEvents + "").indexOf("resize") === -1; + } + }; + + ScrollTrigger.scrollerProxy = function scrollerProxy(target, vars) { + var t = _getTarget(target), + i = _scrollers.indexOf(t), + isViewport = _isViewport(t); + + if (~i) { + _scrollers.splice(i, isViewport ? 6 : 2); + } + + if (vars) { + isViewport ? _proxies.unshift(_win, vars, _body, vars, _docEl, vars) : _proxies.unshift(t, vars); + } + }; + + ScrollTrigger.matchMedia = function matchMedia(vars) { + // _media is populated in the following order: mediaQueryString, onMatch, onUnmatch, isMatched. So if there are two media queries, the Array would have a length of 8 + var mq, p, i, func, result; + + for (p in vars) { + i = _media.indexOf(p); + func = vars[p]; + _creatingMedia = p; + + if (p === "all") { + func(); + } else { + mq = _win.matchMedia(p); + + if (mq) { + mq.matches && (result = func()); + + if (~i) { + _media[i + 1] = _combineFunc(_media[i + 1], func); + _media[i + 2] = _combineFunc(_media[i + 2], result); + } else { + i = _media.length; + + _media.push(p, func, result); + + mq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener("change", _onMediaChange); + } + + _media[i + 3] = mq.matches; + } + } + + _creatingMedia = 0; + } + + return _media; + }; + + ScrollTrigger.clearMatchMedia = function clearMatchMedia(query) { + query || (_media.length = 0); + query = _media.indexOf(query); + query >= 0 && _media.splice(query, 4); + }; + + ScrollTrigger.isInViewport = function isInViewport(element, ratio, horizontal) { + var bounds = (_isString(element) ? _getTarget(element) : element).getBoundingClientRect(), + offset = bounds[horizontal ? _width : _height] * ratio || 0; + return horizontal ? bounds.right - offset > 0 && bounds.left + offset < _win.innerWidth : bounds.bottom - offset > 0 && bounds.top + offset < _win.innerHeight; + }; + + ScrollTrigger.positionInViewport = function positionInViewport(element, referencePoint, horizontal) { + _isString(element) && (element = _getTarget(element)); + var bounds = element.getBoundingClientRect(), + size = bounds[horizontal ? _width : _height], + offset = referencePoint == null ? size / 2 : referencePoint in _keywords ? _keywords[referencePoint] * size : ~referencePoint.indexOf("%") ? parseFloat(referencePoint) * size / 100 : parseFloat(referencePoint) || 0; + return horizontal ? (bounds.left + offset) / _win.innerWidth : (bounds.top + offset) / _win.innerHeight; + }; + + return ScrollTrigger; +}(); +ScrollTrigger.version = "3.9.1"; + +ScrollTrigger.saveStyles = function (targets) { + return targets ? _toArray(targets).forEach(function (target) { + // saved styles are recorded in a consecutive alternating Array, like [element, cssText, transform attribute, cache, matchMedia, ...] + if (target && target.style) { + var i = _savedStyles.indexOf(target); + + i >= 0 && _savedStyles.splice(i, 5); + + _savedStyles.push(target, target.style.cssText, target.getBBox && target.getAttribute("transform"), gsap.core.getCache(target), _creatingMedia); + } + }) : _savedStyles; +}; + +ScrollTrigger.revert = function (soft, media) { + return _revertAll(!soft, media); +}; + +ScrollTrigger.create = function (vars, animation) { + return new ScrollTrigger(vars, animation); +}; + +ScrollTrigger.refresh = function (safe) { + return safe ? _onResize() : (_coreInitted || ScrollTrigger.register()) && _refreshAll(true); +}; + +ScrollTrigger.update = _updateAll; +ScrollTrigger.clearScrollMemory = _clearScrollMemory; + +ScrollTrigger.maxScroll = function (element, horizontal) { + return _maxScroll(element, horizontal ? _horizontal : _vertical); +}; + +ScrollTrigger.getScrollFunc = function (element, horizontal) { + return _getScrollFunc(_getTarget(element), horizontal ? _horizontal : _vertical); +}; + +ScrollTrigger.getById = function (id) { + return _ids[id]; +}; + +ScrollTrigger.getAll = function () { + return _triggers.slice(0); +}; + +ScrollTrigger.isScrolling = function () { + return !!_lastScrollTime; +}; + +ScrollTrigger.snapDirectional = _snapDirectional; + +ScrollTrigger.addEventListener = function (type, callback) { + var a = _listeners[type] || (_listeners[type] = []); + ~a.indexOf(callback) || a.push(callback); +}; + +ScrollTrigger.removeEventListener = function (type, callback) { + var a = _listeners[type], + i = a && a.indexOf(callback); + i >= 0 && a.splice(i, 1); +}; + +ScrollTrigger.batch = function (targets, vars) { + var result = [], + varsCopy = {}, + interval = vars.interval || 0.016, + batchMax = vars.batchMax || 1e9, + proxyCallback = function proxyCallback(type, callback) { + var elements = [], + triggers = [], + delay = gsap.delayedCall(interval, function () { + callback(elements, triggers); + elements = []; + triggers = []; + }).pause(); + return function (self) { + elements.length || delay.restart(true); + elements.push(self.trigger); + triggers.push(self); + batchMax <= elements.length && delay.progress(1); + }; + }, + p; + + for (p in vars) { + varsCopy[p] = p.substr(0, 2) === "on" && _isFunction(vars[p]) && p !== "onRefreshInit" ? proxyCallback(p, vars[p]) : vars[p]; + } + + if (_isFunction(batchMax)) { + batchMax = batchMax(); + + _addListener(ScrollTrigger, "refresh", function () { + return batchMax = vars.batchMax(); + }); + } + + _toArray(targets).forEach(function (target) { + var config = {}; + + for (p in varsCopy) { + config[p] = varsCopy[p]; + } + + config.trigger = target; + result.push(ScrollTrigger.create(config)); + }); + + return result; +}; + +ScrollTrigger.sort = function (func) { + return _triggers.sort(func || function (a, b) { + return (a.vars.refreshPriority || 0) * -1e6 + a.start - (b.start + (b.vars.refreshPriority || 0) * -1e6); + }); +}; + +_getGSAP() && gsap.registerPlugin(ScrollTrigger); +export { ScrollTrigger as default }; \ No newline at end of file diff --git a/components/FocusAreas/index.less b/components/FocusAreas/index.less new file mode 100644 index 0000000..a8a0967 --- /dev/null +++ b/components/FocusAreas/index.less @@ -0,0 +1,264 @@ +#home-circles,.spin-circle-container{ + width: 100%; + height: 100%; + margin: 0 auto; +} +#home-hero { + overflow-x: hidden; + overflow-y: hidden; + min-height: 100%; + width: 100%; + height: 100%; + position: relative; + padding-top: 0; + // background-color: #010101; + color: #fff; + // background-image: url("../images/home-hero-mobile.jpg"); + background-size: cover; + background-position: center bottom; + display: flex; + flex-direction: column; + // min-height: 1000px; + } + #home-hero .primary { + font-size: 1.125rem; + line-height: 1.8125rem; + font-weight: 700; + letter-spacing: 0.06em; + } + #home-hero .hero-circle-text { + text-align: center; + z-index: 1; + // padding: 4rem 2rem; + } + + #home-hero .hero-circle-text p { + margin-left: auto; + margin-right: auto; + margin-bottom: 0; + font-size: 0.2rem; + font-family: Manrope; + font-weight: bold; + color: #FFFFFF; + opacity: 1; + line-height: 0.4rem; + } + + @media (max-width: 991px) { + #home-content { + // padding-top: 8rem; + } + + .hero-circle-text-container { + // padding-top: 18rem; + } + + #home-hero .hero-circle-text{ + bottom: 0.5rem !important; + } + + .home-hero-mobile { + padding: 0 1rem; + } + .home-hero-mobile img { + width: 100%; + height: auto; + } + + .heading { + max-width: 490px; + } + + .primary, + .secondary { + max-width: 500px; + } + } + @media (max-width: 1024px) { + #home-hero .container { + max-width: 80%; + } + } + + + + @media (min-width: 992px) { + #home-hero { + //overflow: hidden; + // background-image: url("../images/home-hero.jpg"); + background-size: cover; + background-position: center bottom; + } + #home-hero .heading { + max-width: 560px; + } + #home-hero .primary { + max-width: 540px; + } + #home-hero .secondary { + max-width: 500px; + } + #home-hero .hero-circle-text { + background: none; + position: absolute; + // max-width: 520px; + left: 0; + right: 0; + bottom: 0.7rem ; + margin: 0 auto; + text-align: center; + } + #home-hero .hero-circle-text p { + max-width: none; + } + } + + + + /* Spin Circle Containers */ + .spin-circle-container { + position: relative; + display: flex; + flex-grow: 1; + text-align: center; + width: 100%; + } + + .spin-outer-container, + .spin-inner-container { + position: absolute; + left: 0; + right: 0; + margin: 0 auto; + } + + #spinOuterCircle, + #spinInnerCircle { + margin: 10px auto; + border: 2px solid #F49F00; + position: relative; + border-radius: 50%; + } + + .inner-item, + .outer-item { + text-align: center; + border-radius: 50%; + position: absolute; + display: flex; + align-items: center; + justify-content: center; + } + .inner-item img, + .outer-item img { + width: 100%; + height: auto; + border-radius: 100%; + } + + #spinOuterCircle { + width: 600px; + height: 600px; + } + #spinInnerCircle { + width: 600px; + height: 600px; + } + + .outer-item, + .inner-item { + width: 42px; + height: 42px; + line-height: 42px; + } + @media screen and (max-width: 768px){ + #home-hero .hero-circle-text{ + bottom: 0.65rem !important + } + #home-hero{ + min-height: 530px; + } + } + @media (min-width: 768px) { + .outer-item { + width: 68px; + height: 68px; + line-height: 68px; + } + + .inner-item { + width: 48px; + height: 48px; + line-height: 48px; + } + } + @media (min-width: 992px) { + .outer-item { + width: 60px; + height: 60px; + line-height: 60px; + } + + .inner-item { + width: 51px; + height: 51px; + line-height: 51px; + } + } + @media (min-width: 1024px) { + .outer-item { + width: 80px; + height: 80px; + line-height: 80px; + } + + .inner-item { + width: 68px; + height: 68px; + line-height: 68px; + } + #home-hero .hero-circle-text{ + // bottom: 5rem; + } + } + @media (min-width: 1399px) { + .outer-item { + width: 109px; + height: 109px; + line-height: 109px; + } + + .inner-item { + width: 93px; + height: 93px; + line-height: 93px; + } + } + + #home-hero .hero-circle-text { + background: none; + position: absolute; + // max-width: 520px; + left: 0; + right: 0; + margin: 0 auto; + z-index: 1; + text-align: center; + // bottom: 2.8rem; + } + #home-hero .hero-circle-text p { + max-width: none; + } + + @media (min-width: 1500px) { + #home-hero { + // min-height: 790px; + } + #home-hero .container { + width: 90%; + max-width: 1500px; + } + #home-hero .hero-circle-text{ + bottom: 1rem; + } + } diff --git a/components/FocusAreas/index.vue b/components/FocusAreas/index.vue new file mode 100644 index 0000000..704f408 --- /dev/null +++ b/components/FocusAreas/index.vue @@ -0,0 +1,331 @@ + + + diff --git a/components/InnovationBlock/index.vue b/components/InnovationBlock/index.vue new file mode 100644 index 0000000..05b603f --- /dev/null +++ b/components/InnovationBlock/index.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/components/JoinUsTabs/index.vue b/components/JoinUsTabs/index.vue new file mode 100644 index 0000000..9191685 --- /dev/null +++ b/components/JoinUsTabs/index.vue @@ -0,0 +1,188 @@ + + + + + diff --git a/components/Loading/index.vue b/components/Loading/index.vue new file mode 100644 index 0000000..5a2c7c5 --- /dev/null +++ b/components/Loading/index.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/components/MyFooter/index.vue b/components/MyFooter/index.vue new file mode 100644 index 0000000..78e5425 --- /dev/null +++ b/components/MyFooter/index.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/components/MyHeader/index.vue b/components/MyHeader/index.vue new file mode 100644 index 0000000..bd2d8f5 --- /dev/null +++ b/components/MyHeader/index.vue @@ -0,0 +1,273 @@ + + + + + + diff --git a/components/MyPagination/index.vue b/components/MyPagination/index.vue new file mode 100644 index 0000000..0126ebd --- /dev/null +++ b/components/MyPagination/index.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/components/OurFounders/index.vue b/components/OurFounders/index.vue new file mode 100644 index 0000000..801053e --- /dev/null +++ b/components/OurFounders/index.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/components/OurPortfolio/index.vue b/components/OurPortfolio/index.vue new file mode 100644 index 0000000..c984d59 --- /dev/null +++ b/components/OurPortfolio/index.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/components/OurPortfolioItem/index.vue b/components/OurPortfolioItem/index.vue new file mode 100644 index 0000000..0ce1c97 --- /dev/null +++ b/components/OurPortfolioItem/index.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/components/Partners/index.vue b/components/Partners/index.vue new file mode 100644 index 0000000..c6ab28b --- /dev/null +++ b/components/Partners/index.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/components/Portfolio/index.vue b/components/Portfolio/index.vue new file mode 100644 index 0000000..3fe2625 --- /dev/null +++ b/components/Portfolio/index.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/components/PublicSelect/index.vue b/components/PublicSelect/index.vue new file mode 100644 index 0000000..ff81da1 --- /dev/null +++ b/components/PublicSelect/index.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/components/SectionLimitX/index.vue b/components/SectionLimitX/index.vue new file mode 100644 index 0000000..8481133 --- /dev/null +++ b/components/SectionLimitX/index.vue @@ -0,0 +1,178 @@ + + + + + diff --git a/components/SectionView/index.vue b/components/SectionView/index.vue new file mode 100644 index 0000000..cc1c7b8 --- /dev/null +++ b/components/SectionView/index.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/components/Situation/index.vue b/components/Situation/index.vue new file mode 100644 index 0000000..917fffc --- /dev/null +++ b/components/Situation/index.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/components/StartUpBlock/index.vue b/components/StartUpBlock/index.vue new file mode 100644 index 0000000..5e0e61c --- /dev/null +++ b/components/StartUpBlock/index.vue @@ -0,0 +1,72 @@ + + + + diff --git a/components/StartupContent/index.vue b/components/StartupContent/index.vue new file mode 100644 index 0000000..72dd1bf --- /dev/null +++ b/components/StartupContent/index.vue @@ -0,0 +1,207 @@ + + + + + diff --git a/components/SvgIcon.vue b/components/SvgIcon.vue new file mode 100644 index 0000000..de7cc9f --- /dev/null +++ b/components/SvgIcon.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/ecosystem.config.js b/ecosystem.config.js new file mode 100644 index 0000000..7c4305c --- /dev/null +++ b/ecosystem.config.js @@ -0,0 +1,22 @@ +module.exports = { + apps : [{ + name: "Limix", + script: "./node_modules/nuxt/bin/nuxt.js", + // watch: ["src"], + //ignore_watch: ["node_modules", "logger"], + //max_memory_restart: "300M", + exec_mode: "cluster", // 开启多线程模式,用于负载均衡 + instances: "max", // 启用多少个实例,可用于负载均衡 + //autorestart: true, + //pm2:true, + args: 'start', + //kill_timeout: 3000, + //instance_var: "INSTANCE_ID", + //env: { + // NODE_ENV: "development", + //}, + //env_production: { + // NODE_ENV: "production", + //} + }] +} diff --git a/layouts/index.vue b/layouts/index.vue new file mode 100644 index 0000000..96a60a9 --- /dev/null +++ b/layouts/index.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/middleware/authenticated.js b/middleware/authenticated.js new file mode 100644 index 0000000..bf0a4a2 --- /dev/null +++ b/middleware/authenticated.js @@ -0,0 +1,9 @@ +export default function ({ store, redirect }) { + // If the user is not authenticated + // if (store.state.loading) { + // return redirect('/loading') + // } + // if (!store.state.loading) { + // return redirect('/') + // } +} diff --git a/middleware/i18n.js b/middleware/i18n.js new file mode 100644 index 0000000..d011b13 --- /dev/null +++ b/middleware/i18n.js @@ -0,0 +1,21 @@ +export default function ({ isHMR, app, store, route, params, error, redirect }) { + const defaultLocale = app.i18n.fallbackLocale + // If middleware is called from hot module replacement, ignore it + if (isHMR) return + // Get locale from params + const locale = params.lang || defaultLocale + if (store.state.locales.indexOf(locale) === -1) { + return error({ message: 'This page could not be found.', statusCode: 404 }) + } + // Set locale + store.commit('SET_LANG', locale || 'en-US') + app.i18n.locale = store.state.locale + // If route is //... -> redirect to /... + if (locale === defaultLocale && route.fullPath.indexOf('/' + defaultLocale) === 0) { + const toReplace = '^/' + defaultLocale + (route.fullPath.indexOf('/' + defaultLocale + '/') === 0 ? '/' : '') + const re = new RegExp(toReplace) + return redirect( + route.fullPath.replace(re, '/') + ) + } +} diff --git a/nuxt.config.js b/nuxt.config.js new file mode 100644 index 0000000..c3eb430 --- /dev/null +++ b/nuxt.config.js @@ -0,0 +1,130 @@ +import redirectSSL from 'redirect-ssl' +import serveStatic from 'serve-static' +import {resolve} from "path"; +const baseUrl = process.env.BASE_URL || 'https://api.lightlimx.live/api' +export default { + loading: '~/components/Loading/index.vue', + serverMiddleware: [ + // redirectSSL.create({ + // enabled: process.env.NODE_ENV === 'production' + // }), + { path: '/static', handler: serveStatic(__dirname + '/static') } + ], + telemetry:false, + publicRuntimeConfig: { + baseURL: baseUrl, + axios: { + baseURL: baseUrl + } + }, + env: { + baseUrl: process.env.BASE_URL || 'http://localhost:3000', + apiUrl: '/api' + }, + alias: { + '@': resolve(__dirname), + '~': resolve(__dirname), + style: resolve(__dirname, './assets/style'), + images: resolve(__dirname, './assets/images'), + data: resolve(__dirname, './assets/data') + }, + // Global page headers: https://go.nuxtjs.dev/config-head + head: { + title: 'LightLimX', + htmlAttrs: { + lang: 'en', + }, + bodyAttrs: { + class: 'h5-scroll-bar' + }, + meta: [ + { charset: 'utf-8' }, + //width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no + { name: 'viewport', content: 'width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,minimal-ui,viewport-fit=cover' }, + { hid: 'description', name: 'description', content: '' }, + { name: 'format-detection', content: 'telephone=no' } + ], + link: [ + { rel: 'icon', type: 'image/x-icon', href: '/favicon.png' } + ] + }, + + // Global CSS: https://go.nuxtjs.dev/config-css + css: [ + '~/assets/style/reset.less', + '~/assets/style/animate.css', + 'vant/lib/index.css' + ], + + // Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins + plugins: [ + { src: '~/plugins/remJs.js', mode: 'client' }, + '@/plugins/vant', + '~/plugins/axios.js', + '~/plugins/vueTooltip.js', + // { src: '~/plugins/vueAnimate.js', mode: 'client' }, + { src: '~/plugins/vueClipboard.js', mode: 'client' }, + { src: '~/plugins/lottieWeb.js', mode: 'client' }, + { src: '~/plugins/svgIcon.js', mode: 'client' }, + { src: '~/plugins/wow.js', mode: 'client' }, + { src: '~/plugins/element.js', mode: 'client' }, + ], + router: { + // base: '/assets/', + middleware: ['authenticated'] + }, + // Auto import components: https://go.nuxtjs.dev/config-components + components: true, + + // Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules + buildModules: [ + ], + + // Modules: https://go.nuxtjs.dev/config-modules + modules: [ + ['nuxt-svg-sprite-loader', { + symbolId: 'icon-[name]' + }], + '@nuxtjs/axios' + ], + + // Build Configuration: https://go.nuxtjs.dev/config-build + build: { + transpile: ['vue-tooltip'], + extractCSS: { + // allChunks: true, + filename: '[name].css', + chunkFilename: '[id].css', + ignoreOrder: true + }, + babel: { + plugins: [ + [ + 'component', + { + 'libraryName': 'element-ui', + // 'style': false // 不引入对应的css文件 + 'styleLibraryName': 'theme-chalk' + } + ] + ] + }, + extend (config, { isDev, isClient }) { + if (isClient) { + // 排除 nuxt 原配置的影响,Nuxt 默认有vue-loader,会处理svg,img等 + // 找到匹配.svg的规则,然后将存放svg文件的目录排除 + const svgRule = config.module.rules.find(rule => rule.test.test('.svg')) + svgRule.exclude = [resolve('assets/svg')] + // 添加loader规则 + } + config.module.rules.push({ + test: /\.(mpg|ts|pm4)$/i, + loader: 'url-loader', + options: { + outputPath: '/static/video/', + publicPath: '/static/video/' + } + }) + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..d7aee77 --- /dev/null +++ b/package.json @@ -0,0 +1,49 @@ +{ + "name": "demo", + "version": "1.0.0", + "private": true, + "scripts": { + "dev": "nuxt", + "build": "nuxt build", + "start": "nuxt start", + "generate": "nuxt generate", + "pm2": "pm2 start", + "deylop": "node ./script/deploy/index.js" + }, + "dependencies": { + "@nuxtjs/axios": "^5.13.6", + "animate.css": "^4.1.1", + "core-js": "^3.19.3", + "element-ui": "^2.15.6", + "gsap": "^3.9.1", + "jquery": "^3.6.0", + "js-cookie": "^3.0.1", + "nuxt": "^2.15.8", + "vant": "^2.12.36", + "vue": "^2.6.14", + "vue-pagination-2": "^3.0.91", + "vue-server-renderer": "^2.6.14", + "vue-template-compiler": "^2.6.14", + "webpack": "^4.46.0" + }, + "devDependencies": { + "archiver": "^4.0.1", + "babel-plugin-component": "^1.1.1", + "chalk": "^4.0.0", + "crypto-js": "^4.1.1", + "fs-extra": "^9.0.0", + "less": "^4.1.2", + "less-loader": "^7.1.0", + "lottie-web": "^5.8.1", + "lottie-web-vue": "^1.2.1", + "moment": "^2.29.1", + "node-cmd": "^5.0.0", + "node-ssh": "^8.0.0", + "nuxt-svg-sprite-loader": "^2.0.7", + "redirect-ssl": "^3.0.0", + "svg-sprite-loader": "^6.0.11", + "v-tooltip": "^2.1.3", + "vue-animate-plugin": "^1.0.1", + "vue-clipboard2": "^0.3.3" + } +} diff --git a/pages/LPLogin/index.vue b/pages/LPLogin/index.vue new file mode 100644 index 0000000..e011dc5 --- /dev/null +++ b/pages/LPLogin/index.vue @@ -0,0 +1,229 @@ + + + + diff --git a/pages/contact/_id.vue b/pages/contact/_id.vue new file mode 100644 index 0000000..c644d60 --- /dev/null +++ b/pages/contact/_id.vue @@ -0,0 +1,115 @@ + + + + diff --git a/pages/contact/index.vue b/pages/contact/index.vue new file mode 100644 index 0000000..8172c07 --- /dev/null +++ b/pages/contact/index.vue @@ -0,0 +1,487 @@ + + + + + diff --git a/pages/index.vue b/pages/index.vue new file mode 100644 index 0000000..ef7e105 --- /dev/null +++ b/pages/index.vue @@ -0,0 +1,310 @@ + + + diff --git a/pages/innovation/index.vue b/pages/innovation/index.vue new file mode 100644 index 0000000..c56d6c4 --- /dev/null +++ b/pages/innovation/index.vue @@ -0,0 +1,123 @@ + + + + diff --git a/pages/joinUs/index.vue b/pages/joinUs/index.vue new file mode 100644 index 0000000..d3c9141 --- /dev/null +++ b/pages/joinUs/index.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/pages/startups/index.vue b/pages/startups/index.vue new file mode 100644 index 0000000..ef522cc --- /dev/null +++ b/pages/startups/index.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/plugins/axios.js b/plugins/axios.js new file mode 100644 index 0000000..c6954dd --- /dev/null +++ b/plugins/axios.js @@ -0,0 +1,53 @@ +export default function ({ store, redirect, req, router, app: { $axios } }) { + // 数据访问前缀 + $axios.defaults.headers = { + Authorization: store.getters.myAuthorization||'' + } + // request拦截器 + // $axios.onRequest(config => { + // if(process.client){ + // 客户端下,请求进度条开始 + // NProgress.start(); + // } + // 将获取到token加入到请求头中 + // }); + // response拦截器,数据返回后,可以先在这里进行一个简单的判断 + $axios.interceptors.response.use( + response => { + if (process.client) { + // 客户端下, 请求进度条结束 + // NProgress.done(); + } + // return response + if (response.data.code == 401) { + // 返回401,token验证失败,清除客户端cookie + // Cookie.remove("token"); + // 重定向到登录页面, 这里做一个判断,容错:req.url 未定义 + // if(req.url){ + // redirect("/sign?ref="+req.url) + // }else{ + // redirect("/sign") + // } + } else if (response.data.code == 404) { + // 重定向到404页面 + // redirect("/") + } else { + // 请求接口数据正常,返回数据 + return response + } + }, + error => { + if (process.client) { + // NProgress.done(); + } + if (error.response.status == 500) { + // http状态500,服务器内部错误,重定向到500页面 + // redirect("/500.htm") + } + if (error.response.status == 404) { + // http状态500,请求API找不到,重定向到404页面 + // redirect("/404.html") + } + return Promise.reject(error.response) // 返回接口返回的错误信息 + }) +} diff --git a/plugins/element.js b/plugins/element.js new file mode 100644 index 0000000..f410604 --- /dev/null +++ b/plugins/element.js @@ -0,0 +1,3 @@ +import Vue from 'vue'; +import { Pagination as ElPagination } from 'element-ui'; +Vue.use(ElPagination) diff --git a/plugins/lottieWeb.js b/plugins/lottieWeb.js new file mode 100644 index 0000000..25a72b8 --- /dev/null +++ b/plugins/lottieWeb.js @@ -0,0 +1,3 @@ +import Vue from 'vue' +import LottieAnimation from 'lottie-web-vue' +Vue.use(LottieAnimation); // add lottie-animation to your global scope diff --git a/plugins/remJs.js b/plugins/remJs.js new file mode 100644 index 0000000..e2c29f4 --- /dev/null +++ b/plugins/remJs.js @@ -0,0 +1,25 @@ +(function(){ + function bindEvent(type){ + return (data)=>{ + const e = new Event(type); + e.data = data; + window.dispatchEvent(e); + } + } + const event_trigger = bindEvent("hadSetRem") + function remCurrent(){ + const clientWidth=document.documentElement.clientWidth; + let fontSize = clientWidth / 19.2 +'px'; + if(clientWidth<=750){ + fontSize = clientWidth / 7.5 + 'px'; + }else if(750{ + event_trigger(true) + },1000) +})() diff --git a/plugins/svgIcon.js b/plugins/svgIcon.js new file mode 100644 index 0000000..e209832 --- /dev/null +++ b/plugins/svgIcon.js @@ -0,0 +1,9 @@ +// plugins/svgIcon.js +import Vue from 'vue' +import SvgIcon from '@/components/SvgIcon.vue'// Nuxt 默认@指向根目录 + +// 注册组件 +Vue.component('svg-icon', SvgIcon) +// 预请求svg组件(通过之前的svg-sprite-loader加载) +const req = require.context('@/assets/svg', false, /\.svg$/) +req.keys().map(req) diff --git a/plugins/vant.js b/plugins/vant.js new file mode 100644 index 0000000..debcfe3 --- /dev/null +++ b/plugins/vant.js @@ -0,0 +1,8 @@ +import Vue from 'vue' +import Vant,{Lazyload } from 'vant' + +Vue.use(Vant) +Vue.use(Lazyload) +Vue.use(Lazyload, { + lazyComponent: true, +}); diff --git a/plugins/vueAnimate.js b/plugins/vueAnimate.js new file mode 100644 index 0000000..41d3da1 --- /dev/null +++ b/plugins/vueAnimate.js @@ -0,0 +1,9 @@ +import Vue from 'vue'; +import VueAnimate from 'vue-animate-plugin'; + +Vue.use(VueAnimate, { + valueof: ':', // 表示v-animate指令修饰符中键与值使用什么字符分割,默认使用':' + begin: 'begin', // 表示v-animate指令修饰符中动画开始之前的挂钩点的名称,可以通过方式`.begin:onBegin`注入钩子函数,它可以是async function + after: 'complete', // 表示v-animate指令修饰符中动画结束之后的挂钩点的名称,`.complete:onComplete`方式注入钩子,它可以是async function + callback: null // 表示v-animate指令中,动画部分(包括之后的衔接部分)完全执行完毕后的钩子函数注入口 +}); diff --git a/plugins/vueClipboard.js b/plugins/vueClipboard.js new file mode 100644 index 0000000..cde3c14 --- /dev/null +++ b/plugins/vueClipboard.js @@ -0,0 +1,4 @@ +import Vue from 'vue' +import VueClipboard from 'vue-clipboard2' +VueClipboard.config.autoSetContainer = true +Vue.use(VueClipboard) diff --git a/plugins/vueFullPage.js b/plugins/vueFullPage.js new file mode 100644 index 0000000..81e2bde --- /dev/null +++ b/plugins/vueFullPage.js @@ -0,0 +1,4 @@ +import 'animate.css' +import 'vue-fullpage/vue-fullpage.css' +import VueFullpage from 'vue-fullpage' +Vue.use(VueFullpage) diff --git a/plugins/vueTooltip.js b/plugins/vueTooltip.js new file mode 100644 index 0000000..77513f7 --- /dev/null +++ b/plugins/vueTooltip.js @@ -0,0 +1,4 @@ +import Vue from 'vue' +import VTooltip from 'v-tooltip' + +Vue.use(VTooltip) diff --git a/plugins/wow.js b/plugins/wow.js new file mode 100644 index 0000000..6dd0c84 --- /dev/null +++ b/plugins/wow.js @@ -0,0 +1,514 @@ +(function () { + var MutationObserver; var Util; var WeakMap; var getComputedStyle; var getComputedStyleRX + var bind = function (fn, me) { return function () { return fn.apply(me, arguments) } } + var indexOf = [].indexOf || function (item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i } return -1 } + + Util = (function () { + function Util () {} + + Util.prototype.extend = function (custom, defaults) { + var key, value + for (key in defaults) { + value = defaults[key] + if (custom[key] == null) { + custom[key] = value + } + } + return custom + } + + Util.prototype.isMobile = function (agent) { + return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(agent) + } + + Util.prototype.createEvent = function (event, bubble, cancel, detail) { + var customEvent + if (bubble == null) { + bubble = false + } + if (cancel == null) { + cancel = false + } + if (detail == null) { + detail = null + } + if (document.createEvent != null) { + customEvent = document.createEvent('CustomEvent') + customEvent.initCustomEvent(event, bubble, cancel, detail) + } else if (document.createEventObject != null) { + customEvent = document.createEventObject() + customEvent.eventType = event + } else { + customEvent.eventName = event + } + return customEvent + } + + Util.prototype.emitEvent = function (elem, event) { + if (elem.dispatchEvent != null) { + return elem.dispatchEvent(event) + } else if (event in (elem != null)) { + return elem[event]() + } else if (('on' + event) in (elem != null)) { + return elem['on' + event]() + } + } + + Util.prototype.addEvent = function (elem, event, fn) { + if (elem.addEventListener != null) { + return elem.addEventListener(event, fn, false) + } else if (elem.attachEvent != null) { + return elem.attachEvent('on' + event, fn) + } else { + return elem[event] = fn + } + } + + Util.prototype.removeEvent = function (elem, event, fn) { + if (elem.removeEventListener != null) { + return elem.removeEventListener(event, fn, false) + } else if (elem.detachEvent != null) { + return elem.detachEvent('on' + event, fn) + } else { + return delete elem[event] + } + } + + Util.prototype.innerHeight = function () { + if ('innerHeight' in window) { + return window.innerHeight + } else { + return document.documentElement.clientHeight + } + } + + return Util + + })() + + WeakMap = this.WeakMap || this.MozWeakMap || (WeakMap = (function () { + function WeakMap () { + this.keys = [] + this.values = [] + } + + WeakMap.prototype.get = function (key) { + var i, item, j, len, ref + ref = this.keys + for (i = j = 0, len = ref.length; j < len; i = ++j) { + item = ref[i] + if (item === key) { + return this.values[i] + } + } + } + + WeakMap.prototype.set = function (key, value) { + var i, item, j, len, ref + ref = this.keys + for (i = j = 0, len = ref.length; j < len; i = ++j) { + item = ref[i] + if (item === key) { + this.values[i] = value + return + } + } + this.keys.push(key) + return this.values.push(value) + } + + return WeakMap + + })()) + + MutationObserver = this.MutationObserver || this.WebkitMutationObserver || this.MozMutationObserver || (MutationObserver = (function () { + function MutationObserver () { + if (typeof console !== 'undefined' && console !== null) { + console.warn('MutationObserver is not supported by your browser.') + } + if (typeof console !== 'undefined' && console !== null) { + console.warn('WOW.js cannot detect dom mutations, please call .sync() after loading new content.') + } + } + + MutationObserver.notSupported = true + + MutationObserver.prototype.observe = function () {} + + return MutationObserver + + })()) + + getComputedStyle = this.getComputedStyle || function (el, pseudo) { + this.getPropertyValue = function (prop) { + var ref + if (prop === 'float') { + prop = 'styleFloat' + } + if (getComputedStyleRX.test(prop)) { + prop.replace(getComputedStyleRX, function (_, _char) { + return _char.toUpperCase() + }) + } + return ((ref = el.currentStyle) != null ? ref[prop] : void 0) || null + } + return this + } + + getComputedStyleRX = /(\-([a-z]){1})/g + + this.WOW = (function () { + WOW.prototype.defaults = { + boxClass: 'wow', + animateClass: 'animated', + offset: 0, + mobile: true, + live: true, + callback: null, + scrollContainer: null + } + + function WOW (options) { + if (options == null) { + options = {} + } + this.scrollCallback = bind(this.scrollCallback, this) + this.scrollHandler = bind(this.scrollHandler, this) + this.resetAnimation = bind(this.resetAnimation, this) + this.start = bind(this.start, this) + this.scrolled = true + this.config = this.util().extend(options, this.defaults) + if (options.scrollContainer != null) { + this.config.scrollContainer = document.querySelector(options.scrollContainer) + } + this.animationNameCache = new WeakMap() + this.wowEvent = this.util().createEvent(this.config.boxClass) + } + + WOW.prototype.init = function () { + var ref + this.element = window.document.documentElement + if ((ref = document.readyState) === 'interactive' || ref === 'complete') { + this.start() + } else { + this.util().addEvent(document, 'DOMContentLoaded', this.start) + } + return this.finished = [] + } + + WOW.prototype.start = function () { + var box, j, len, ref + this.stopped = false + this.boxes = (function () { + var j, len, ref, results + ref = this.element.querySelectorAll('.' + this.config.boxClass) + results = [] + for (j = 0, len = ref.length; j < len; j++) { + box = ref[j] + results.push(box) + } + return results + }.call(this)) + this.all = (function () { + var j, len, ref, results + ref = this.boxes + results = [] + for (j = 0, len = ref.length; j < len; j++) { + box = ref[j] + results.push(box) + } + return results + }.call(this)) + if (this.boxes.length) { + if (this.disabled()) { + this.resetStyle() + } else { + ref = this.boxes + for (j = 0, len = ref.length; j < len; j++) { + box = ref[j] + this.applyStyle(box, true) + } + } + } + if (!this.disabled()) { + this.util().addEvent(this.config.scrollContainer || window, 'scroll', this.scrollHandler) + this.util().addEvent(window, 'resize', this.scrollHandler) + this.interval = setInterval(this.scrollCallback, 50) + } + if (this.config.live) { + return new MutationObserver((function (_this) { + return function (records) { + var k, len1, node, record, results + results = [] + for (k = 0, len1 = records.length; k < len1; k++) { + record = records[k] + results.push(function () { + var l, len2, ref1, results1 + ref1 = record.addedNodes || [] + results1 = [] + for (l = 0, len2 = ref1.length; l < len2; l++) { + node = ref1[l] + results1.push(this.doSync(node)) + } + return results1 + }.call(_this)) + } + return results + } + })(this)).observe(document.body, { + childList: true, + subtree: true + }) + } + } + + WOW.prototype.stop = function () { + this.stopped = true + this.util().removeEvent(this.config.scrollContainer || window, 'scroll', this.scrollHandler) + this.util().removeEvent(window, 'resize', this.scrollHandler) + if (this.interval != null) { + return clearInterval(this.interval) + } + } + + WOW.prototype.sync = function (element) { + if (MutationObserver.notSupported) { + return this.doSync(this.element) + } + } + + WOW.prototype.doSync = function (element) { + var box, j, len, ref, results + if (element == null) { + element = this.element + } + if (element.nodeType !== 1) { + return + } + element = element.parentNode || element + ref = element.querySelectorAll('.' + this.config.boxClass) + results = [] + for (j = 0, len = ref.length; j < len; j++) { + box = ref[j] + if (indexOf.call(this.all, box) < 0) { + this.boxes.push(box) + this.all.push(box) + if (this.stopped || this.disabled()) { + this.resetStyle() + } else { + this.applyStyle(box, true) + } + results.push(this.scrolled = true) + } else { + results.push(void 0) + } + } + return results + } + + WOW.prototype.show = function (box) { + this.applyStyle(box) + box.className = box.className + ' ' + this.config.animateClass + if (this.config.callback != null) { + this.config.callback(box) + } + this.util().emitEvent(box, this.wowEvent) + this.util().addEvent(box, 'animationend', this.resetAnimation) + this.util().addEvent(box, 'oanimationend', this.resetAnimation) + this.util().addEvent(box, 'webkitAnimationEnd', this.resetAnimation) + this.util().addEvent(box, 'MSAnimationEnd', this.resetAnimation) + return box + } + + WOW.prototype.applyStyle = function (box, hidden) { + var delay, duration, iteration + duration = box.getAttribute('data-wow-duration') + delay = box.getAttribute('data-wow-delay') + iteration = box.getAttribute('data-wow-iteration') + return this.animate((function (_this) { + return function () { + return _this.customStyle(box, hidden, duration, delay, iteration) + } + })(this)) + } + + WOW.prototype.animate = (function () { + if ('requestAnimationFrame' in window) { + return function (callback) { + return window.requestAnimationFrame(callback) + } + } else { + return function (callback) { + return callback() + } + } + })() + + WOW.prototype.resetStyle = function () { + var box, j, len, ref, results + ref = this.boxes + results = [] + for (j = 0, len = ref.length; j < len; j++) { + box = ref[j] + results.push(box.style.visibility = 'visible') + } + return results + } + + WOW.prototype.resetAnimation = function (event) { + var target + if (event.type.toLowerCase().indexOf('animationend') >= 0) { + target = event.target || event.srcElement + return target.className = target.className.replace(this.config.animateClass, '').trim() + } + } + + WOW.prototype.customStyle = function (box, hidden, duration, delay, iteration) { + if (hidden) { + this.cacheAnimationName(box) + } + box.style.visibility = hidden ? 'hidden' : 'visible' + if (duration) { + this.vendorSet(box.style, { + animationDuration: duration + }) + } + if (delay) { + this.vendorSet(box.style, { + animationDelay: delay + }) + } + if (iteration) { + this.vendorSet(box.style, { + animationIterationCount: iteration + }) + } + this.vendorSet(box.style, { + animationName: hidden ? 'none' : this.cachedAnimationName(box) + }) + return box + } + + WOW.prototype.vendors = ['moz', 'webkit'] + + WOW.prototype.vendorSet = function (elem, properties) { + var name, results, value, vendor + results = [] + for (name in properties) { + value = properties[name] + elem['' + name] = value + results.push(function () { + var j, len, ref, results1 + ref = this.vendors + results1 = [] + for (j = 0, len = ref.length; j < len; j++) { + vendor = ref[j] + results1.push(elem['' + vendor + (name.charAt(0).toUpperCase()) + (name.substr(1))] = value) + } + return results1 + }.call(this)) + } + return results + } + + WOW.prototype.vendorCSS = function (elem, property) { + var j, len, ref, result, style, vendor + style = getComputedStyle(elem) + result = style.getPropertyCSSValue(property) + ref = this.vendors + for (j = 0, len = ref.length; j < len; j++) { + vendor = ref[j] + result = result || style.getPropertyCSSValue('-' + vendor + '-' + property) + } + return result + } + + WOW.prototype.animationName = function (box) { + var animationName, error + try { + animationName = this.vendorCSS(box, 'animation-name').cssText + } catch (error) { + animationName = getComputedStyle(box).getPropertyValue('animation-name') + } + if (animationName === 'none') { + return '' + } else { + return animationName + } + } + + WOW.prototype.cacheAnimationName = function (box) { + return this.animationNameCache.set(box, this.animationName(box)) + } + + WOW.prototype.cachedAnimationName = function (box) { + return this.animationNameCache.get(box) + } + + WOW.prototype.scrollHandler = function () { + return this.scrolled = true + } + + WOW.prototype.scrollCallback = function () { + var box + if (this.scrolled) { + this.scrolled = false + this.boxes = (function () { + var j, len, ref, results + ref = this.boxes + results = [] + for (j = 0, len = ref.length; j < len; j++) { + box = ref[j] + if (!(box)) { + continue + } + if (this.isVisible(box)) { + this.show(box) + continue + } + results.push(box) + } + return results + }.call(this)) + if (!(this.boxes.length || this.config.live)) { + return this.stop() + } + } + } + + WOW.prototype.offsetTop = function (element) { + var top + while (element.offsetTop === void 0) { + element = element.parentNode + } + top = element.offsetTop + while (element = element.offsetParent) { + top += element.offsetTop + } + return top + } + + WOW.prototype.isVisible = function (box) { + var bottom, offset, top, viewBottom, viewTop + offset = box.getAttribute('data-wow-offset') || this.config.offset + viewTop = (this.config.scrollContainer && this.config.scrollContainer.scrollTop) || window.pageYOffset + viewBottom = viewTop + Math.min(this.element.clientHeight, this.util().innerHeight()) - offset + top = this.offsetTop(box) + bottom = top + box.clientHeight + return top <= viewBottom && bottom >= viewTop + } + + WOW.prototype.util = function () { + return this._util != null ? this._util : this._util = new Util() + } + + WOW.prototype.disabled = function () { + return !this.config.mobile && this.util().isMobile(navigator.userAgent) + } + + return WOW + + })() + +}).call(this) +window.WOW=this.WOW diff --git a/script/deploy/file.js b/script/deploy/file.js new file mode 100644 index 0000000..a1ef88d --- /dev/null +++ b/script/deploy/file.js @@ -0,0 +1,63 @@ +/* eslint-disable */ +const path = require('path'); +const fsEx = require('fs-extra'); +const chalk = require('chalk') +const archiver = require('archiver'); +const fs = require('fs'); +const root = process.cwd() +const moment=require('moment') +console.log(chalk.green(`root path :${root}`)) +const resolve = (url) => { + return path.join(root, url) +} + +const copy = async (from, to) => { + try { + await fsEx.copy(resolve(from), resolve(to)); + console.log(chalk.green(`success:${from}===>${to}`)); + } catch (error) { + console.log(chalk.red(`errors:=>${error}`)); + } +}; + +const copyFile = async () => { + await Promise.all([ + copy('/static/', '/server/static/'), + copy('/.nuxt/', '/server/.nuxt/'), + copy('/ecosystem.config.js', '/server/ecosystem.config.js'), + copy('/package.json', '/server/package.json'), + copy('/nuxt.config.js', '/server/nuxt.config.js'), + ]); +}; + + + +function zipFile() { + return new Promise((resolve, reject) => { + const archive = archiver('zip', { + zlib: { + level: 5, + }, + }).on('error', (err) => { + reject(err) + }); + const output = fs.createWriteStream(`${root}/Limx${moment(new Date()).format('HH时mm分ss秒')}.zip`) + .on('close', (err) => { + if (err) { + reject(err) + } + resolve(); + }); + archive.pipe(output); + archive.directory(path.join(root, `/server`), `/server`); + archive.finalize(); + }) +} + + +// copyFile(); +module.exports = { + copy, + copyFile, + zipFile +} diff --git a/script/deploy/index.js b/script/deploy/index.js new file mode 100644 index 0000000..ba2e698 --- /dev/null +++ b/script/deploy/index.js @@ -0,0 +1,47 @@ +/* eslint-disable */ +const { + copyFile, + zipFile, +} = require('./file'); +const chalk = require('chalk'); +const path = require('path'); + +const root = process.cwd(); +const node_ssh = require('node-ssh'); + +const ssh = new node_ssh(); + +const deploy = async() => { + await copyFile(); + await zipFile(); + // await ssh.connect({ + // host : '---', + // username: '----', + // password: '----', + // port : --, + // }); + // + // await ssh.putFile(`${root}/server/server.zip`, '/usr/local/smart-library/server-pkg/server.zip').then(() => { + // console.log('The File thing is done'); + // }, (error) => { + // console.log('Something\'s wrong'); + // console.log(error); + // }); + // + // + // await ssh.exec('sh', ['./deploy.sh'], { + // cwd: '/usr/local/smart-library/server-pkg', + // onStdout(chunk) { + // console.log(chalk.green(chunk.toString('utf8'))); + // }, + // onStderr(chunk) { + // console.log(chalk.red(chunk.toString('utf8'))); + // }, + // }); + // console.log('success'); + process.exit(0); +}; +deploy().catch((e) => { + console.log(e); + process.exit(0); +}); diff --git a/startScript.js b/startScript.js new file mode 100644 index 0000000..31e9100 --- /dev/null +++ b/startScript.js @@ -0,0 +1,2 @@ +const cmd=require('node-cmd'); +cmd.run('yarn start'); \ No newline at end of file diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000..7efec8f Binary files /dev/null and b/static/favicon.png differ diff --git a/static/images/Accelerator.png b/static/images/Accelerator.png new file mode 100644 index 0000000..aec6164 Binary files /dev/null and b/static/images/Accelerator.png differ diff --git a/static/images/ContactUs/ContactUs_banner.png b/static/images/ContactUs/ContactUs_banner.png new file mode 100644 index 0000000..fc768d8 Binary files /dev/null and b/static/images/ContactUs/ContactUs_banner.png differ diff --git a/static/images/ContactUs/ContactUs_banner_h5.jpg b/static/images/ContactUs/ContactUs_banner_h5.jpg new file mode 100644 index 0000000..ea80ec8 Binary files /dev/null and b/static/images/ContactUs/ContactUs_banner_h5.jpg differ diff --git a/static/images/ContactUs/ContactUs_c.png b/static/images/ContactUs/ContactUs_c.png new file mode 100644 index 0000000..00f835e Binary files /dev/null and b/static/images/ContactUs/ContactUs_c.png differ diff --git a/static/images/ContactUs/Details.png b/static/images/ContactUs/Details.png new file mode 100644 index 0000000..76d87ce Binary files /dev/null and b/static/images/ContactUs/Details.png differ diff --git a/static/images/ContactUs/arrow.png b/static/images/ContactUs/arrow.png new file mode 100644 index 0000000..b5c70bc Binary files /dev/null and b/static/images/ContactUs/arrow.png differ diff --git a/static/images/ContactUs/file.png b/static/images/ContactUs/file.png new file mode 100644 index 0000000..8fca861 Binary files /dev/null and b/static/images/ContactUs/file.png differ diff --git a/static/images/FocusAreas/1.png b/static/images/FocusAreas/1.png new file mode 100644 index 0000000..af6b4f8 Binary files /dev/null and b/static/images/FocusAreas/1.png differ diff --git a/static/images/FocusAreas/10.png b/static/images/FocusAreas/10.png new file mode 100644 index 0000000..0d1f58e Binary files /dev/null and b/static/images/FocusAreas/10.png differ diff --git a/static/images/FocusAreas/2.png b/static/images/FocusAreas/2.png new file mode 100644 index 0000000..aaa12ba Binary files /dev/null and b/static/images/FocusAreas/2.png differ diff --git a/static/images/FocusAreas/3.png b/static/images/FocusAreas/3.png new file mode 100644 index 0000000..909a39e Binary files /dev/null and b/static/images/FocusAreas/3.png differ diff --git a/static/images/FocusAreas/4.png b/static/images/FocusAreas/4.png new file mode 100644 index 0000000..d1631c8 Binary files /dev/null and b/static/images/FocusAreas/4.png differ diff --git a/static/images/FocusAreas/5.png b/static/images/FocusAreas/5.png new file mode 100644 index 0000000..120523d Binary files /dev/null and b/static/images/FocusAreas/5.png differ diff --git a/static/images/FocusAreas/6.png b/static/images/FocusAreas/6.png new file mode 100644 index 0000000..23048a6 Binary files /dev/null and b/static/images/FocusAreas/6.png differ diff --git a/static/images/FocusAreas/7.png b/static/images/FocusAreas/7.png new file mode 100644 index 0000000..d617fae Binary files /dev/null and b/static/images/FocusAreas/7.png differ diff --git a/static/images/FocusAreas/8.png b/static/images/FocusAreas/8.png new file mode 100644 index 0000000..8105d98 Binary files /dev/null and b/static/images/FocusAreas/8.png differ diff --git a/static/images/FocusAreas/9.png b/static/images/FocusAreas/9.png new file mode 100644 index 0000000..4013130 Binary files /dev/null and b/static/images/FocusAreas/9.png differ diff --git a/static/images/FocusAreas/FocusAreas_bj.png b/static/images/FocusAreas/FocusAreas_bj.png new file mode 100644 index 0000000..e8bf972 Binary files /dev/null and b/static/images/FocusAreas/FocusAreas_bj.png differ diff --git a/static/images/Growth.png b/static/images/Growth.png new file mode 100644 index 0000000..2aa4b23 Binary files /dev/null and b/static/images/Growth.png differ diff --git a/static/images/Investment.png b/static/images/Investment.png new file mode 100644 index 0000000..6572c1b Binary files /dev/null and b/static/images/Investment.png differ diff --git a/static/images/apply.png b/static/images/apply.png new file mode 100644 index 0000000..ef8bdc7 Binary files /dev/null and b/static/images/apply.png differ diff --git a/static/images/ball.png b/static/images/ball.png new file mode 100644 index 0000000..fe2ad42 Binary files /dev/null and b/static/images/ball.png differ diff --git a/static/images/banners/图层 1@2x.png b/static/images/banners/图层 1@2x.png new file mode 100644 index 0000000..350f101 Binary files /dev/null and b/static/images/banners/图层 1@2x.png differ diff --git a/static/images/banners/图层 2@2x.png b/static/images/banners/图层 2@2x.png new file mode 100644 index 0000000..409093a Binary files /dev/null and b/static/images/banners/图层 2@2x.png differ diff --git a/static/images/banners/图层 3@2x.png b/static/images/banners/图层 3@2x.png new file mode 100644 index 0000000..d255466 Binary files /dev/null and b/static/images/banners/图层 3@2x.png differ diff --git a/static/images/banners/图层-4@2x.png b/static/images/banners/图层-4@2x.png new file mode 100644 index 0000000..57a9cf9 Binary files /dev/null and b/static/images/banners/图层-4@2x.png differ diff --git a/static/images/hstart.png b/static/images/hstart.png new file mode 100644 index 0000000..cec40be Binary files /dev/null and b/static/images/hstart.png differ diff --git a/static/images/innovation/innovation.png b/static/images/innovation/innovation.png new file mode 100644 index 0000000..9724598 Binary files /dev/null and b/static/images/innovation/innovation.png differ diff --git a/static/images/invest.png b/static/images/invest.png new file mode 100644 index 0000000..a957402 Binary files /dev/null and b/static/images/invest.png differ diff --git a/static/images/join/join.png b/static/images/join/join.png new file mode 100644 index 0000000..d0f14a7 Binary files /dev/null and b/static/images/join/join.png differ diff --git a/static/images/me.png b/static/images/me.png new file mode 100644 index 0000000..0916271 Binary files /dev/null and b/static/images/me.png differ diff --git a/static/images/partners/组 725@2x.png b/static/images/partners/组 725@2x.png new file mode 100644 index 0000000..adf11da Binary files /dev/null and b/static/images/partners/组 725@2x.png differ diff --git a/static/images/partners/组 726@2x.png b/static/images/partners/组 726@2x.png new file mode 100644 index 0000000..e7344e0 Binary files /dev/null and b/static/images/partners/组 726@2x.png differ diff --git a/static/images/partners/组 727@2x.png b/static/images/partners/组 727@2x.png new file mode 100644 index 0000000..1a46641 Binary files /dev/null and b/static/images/partners/组 727@2x.png differ diff --git a/static/images/partners/组 728@2x.png b/static/images/partners/组 728@2x.png new file mode 100644 index 0000000..0120bea Binary files /dev/null and b/static/images/partners/组 728@2x.png differ diff --git a/static/images/partners/组 729@2x.png b/static/images/partners/组 729@2x.png new file mode 100644 index 0000000..25348fc Binary files /dev/null and b/static/images/partners/组 729@2x.png differ diff --git a/static/images/partners/组 730@2x.png b/static/images/partners/组 730@2x.png new file mode 100644 index 0000000..5d0988f Binary files /dev/null and b/static/images/partners/组 730@2x.png differ diff --git a/static/images/partners/组 731@2x.png b/static/images/partners/组 731@2x.png new file mode 100644 index 0000000..3258d5f Binary files /dev/null and b/static/images/partners/组 731@2x.png differ diff --git a/static/images/partners/组 732@2x.png b/static/images/partners/组 732@2x.png new file mode 100644 index 0000000..830f180 Binary files /dev/null and b/static/images/partners/组 732@2x.png differ diff --git a/static/images/partners/组 733@2x.png b/static/images/partners/组 733@2x.png new file mode 100644 index 0000000..ff73826 Binary files /dev/null and b/static/images/partners/组 733@2x.png differ diff --git a/static/images/partners/组 734@2x.png b/static/images/partners/组 734@2x.png new file mode 100644 index 0000000..45d1eb0 Binary files /dev/null and b/static/images/partners/组 734@2x.png differ diff --git a/static/images/partners/组 735@2x.png b/static/images/partners/组 735@2x.png new file mode 100644 index 0000000..13bddeb Binary files /dev/null and b/static/images/partners/组 735@2x.png differ diff --git a/static/images/partners/组 736@2x.png b/static/images/partners/组 736@2x.png new file mode 100644 index 0000000..dd2177d Binary files /dev/null and b/static/images/partners/组 736@2x.png differ diff --git a/static/images/partners/组 737@2x.png b/static/images/partners/组 737@2x.png new file mode 100644 index 0000000..e056d1f Binary files /dev/null and b/static/images/partners/组 737@2x.png differ diff --git a/static/images/partners/组 738@2x.png b/static/images/partners/组 738@2x.png new file mode 100644 index 0000000..cffc31b Binary files /dev/null and b/static/images/partners/组 738@2x.png differ diff --git a/static/images/partners/组 739@2x.png b/static/images/partners/组 739@2x.png new file mode 100644 index 0000000..68febb9 Binary files /dev/null and b/static/images/partners/组 739@2x.png differ diff --git a/static/images/partners/组 740@2x.png b/static/images/partners/组 740@2x.png new file mode 100644 index 0000000..ed2ac6e Binary files /dev/null and b/static/images/partners/组 740@2x.png differ diff --git a/static/images/partners/组 741@2x.png b/static/images/partners/组 741@2x.png new file mode 100644 index 0000000..09c9a50 Binary files /dev/null and b/static/images/partners/组 741@2x.png differ diff --git a/static/images/partners/组 742@2x.png b/static/images/partners/组 742@2x.png new file mode 100644 index 0000000..bfa1c5f Binary files /dev/null and b/static/images/partners/组 742@2x.png differ diff --git a/static/images/partners/组 743@2x.png b/static/images/partners/组 743@2x.png new file mode 100644 index 0000000..db4885f Binary files /dev/null and b/static/images/partners/组 743@2x.png differ diff --git a/static/images/partners/组 744@2x.png b/static/images/partners/组 744@2x.png new file mode 100644 index 0000000..4a1a0b8 Binary files /dev/null and b/static/images/partners/组 744@2x.png differ diff --git a/static/images/partners/组 745@2x.png b/static/images/partners/组 745@2x.png new file mode 100644 index 0000000..96d658f Binary files /dev/null and b/static/images/partners/组 745@2x.png differ diff --git a/static/images/partners/组 746@2x.png b/static/images/partners/组 746@2x.png new file mode 100644 index 0000000..66d444e Binary files /dev/null and b/static/images/partners/组 746@2x.png differ diff --git a/static/images/partners/组 747@2x.png b/static/images/partners/组 747@2x.png new file mode 100644 index 0000000..02b521b Binary files /dev/null and b/static/images/partners/组 747@2x.png differ diff --git a/static/images/partners/组 748@2x.png b/static/images/partners/组 748@2x.png new file mode 100644 index 0000000..3115616 Binary files /dev/null and b/static/images/partners/组 748@2x.png differ diff --git a/static/images/partners/组 749@2x.png b/static/images/partners/组 749@2x.png new file mode 100644 index 0000000..4e84b40 Binary files /dev/null and b/static/images/partners/组 749@2x.png differ diff --git a/static/images/partners/组 750@2x.png b/static/images/partners/组 750@2x.png new file mode 100644 index 0000000..4c70a7f Binary files /dev/null and b/static/images/partners/组 750@2x.png differ diff --git a/static/images/partners/组 751@2x.png b/static/images/partners/组 751@2x.png new file mode 100644 index 0000000..c1a859c Binary files /dev/null and b/static/images/partners/组 751@2x.png differ diff --git a/static/images/partners/组 752@2x.png b/static/images/partners/组 752@2x.png new file mode 100644 index 0000000..56fe8b5 Binary files /dev/null and b/static/images/partners/组 752@2x.png differ diff --git a/static/images/partners/组 753@2x.png b/static/images/partners/组 753@2x.png new file mode 100644 index 0000000..37004c9 Binary files /dev/null and b/static/images/partners/组 753@2x.png differ diff --git a/static/images/partners/组 754@2x.png b/static/images/partners/组 754@2x.png new file mode 100644 index 0000000..8f4a817 Binary files /dev/null and b/static/images/partners/组 754@2x.png differ diff --git a/static/images/partners/组 755@2x.png b/static/images/partners/组 755@2x.png new file mode 100644 index 0000000..689520b Binary files /dev/null and b/static/images/partners/组 755@2x.png differ diff --git a/static/images/partners/组 756@2x.png b/static/images/partners/组 756@2x.png new file mode 100644 index 0000000..7928af9 Binary files /dev/null and b/static/images/partners/组 756@2x.png differ diff --git a/static/images/partners/组 757@2x.png b/static/images/partners/组 757@2x.png new file mode 100644 index 0000000..e4d2127 Binary files /dev/null and b/static/images/partners/组 757@2x.png differ diff --git a/static/images/partners/组 758@2x.png b/static/images/partners/组 758@2x.png new file mode 100644 index 0000000..c222d2b Binary files /dev/null and b/static/images/partners/组 758@2x.png differ diff --git a/static/images/partners/组 759@2x.png b/static/images/partners/组 759@2x.png new file mode 100644 index 0000000..3ae4bd6 Binary files /dev/null and b/static/images/partners/组 759@2x.png differ diff --git a/static/images/partners/组 761@2x.png b/static/images/partners/组 761@2x.png new file mode 100644 index 0000000..3a1a42e Binary files /dev/null and b/static/images/partners/组 761@2x.png differ diff --git a/static/images/partners/组 762@2x.png b/static/images/partners/组 762@2x.png new file mode 100644 index 0000000..a637bd7 Binary files /dev/null and b/static/images/partners/组 762@2x.png differ diff --git a/static/images/partners/组 763@2x.png b/static/images/partners/组 763@2x.png new file mode 100644 index 0000000..c481f50 Binary files /dev/null and b/static/images/partners/组 763@2x.png differ diff --git a/static/images/partners/组 764@2x.png b/static/images/partners/组 764@2x.png new file mode 100644 index 0000000..f3b9976 Binary files /dev/null and b/static/images/partners/组 764@2x.png differ diff --git a/static/images/portfolio/组 698@2x.png b/static/images/portfolio/组 698@2x.png new file mode 100644 index 0000000..55306d7 Binary files /dev/null and b/static/images/portfolio/组 698@2x.png differ diff --git a/static/images/portfolio/组 699@2x.png b/static/images/portfolio/组 699@2x.png new file mode 100644 index 0000000..da7ac4a Binary files /dev/null and b/static/images/portfolio/组 699@2x.png differ diff --git a/static/images/portfolio/组 701@2x.png b/static/images/portfolio/组 701@2x.png new file mode 100644 index 0000000..e170afa Binary files /dev/null and b/static/images/portfolio/组 701@2x.png differ diff --git a/static/images/portfolio/组 702@2x.png b/static/images/portfolio/组 702@2x.png new file mode 100644 index 0000000..d40d7ba Binary files /dev/null and b/static/images/portfolio/组 702@2x.png differ diff --git a/static/images/portfolio/组 703@2x.png b/static/images/portfolio/组 703@2x.png new file mode 100644 index 0000000..ac72d14 Binary files /dev/null and b/static/images/portfolio/组 703@2x.png differ diff --git a/static/images/portfolio/组 704@2x.png b/static/images/portfolio/组 704@2x.png new file mode 100644 index 0000000..02566b0 Binary files /dev/null and b/static/images/portfolio/组 704@2x.png differ diff --git a/static/images/portfolio/组 705@2x.png b/static/images/portfolio/组 705@2x.png new file mode 100644 index 0000000..240729a Binary files /dev/null and b/static/images/portfolio/组 705@2x.png differ diff --git a/static/images/portfolio/组 706@2x.png b/static/images/portfolio/组 706@2x.png new file mode 100644 index 0000000..d9c6b07 Binary files /dev/null and b/static/images/portfolio/组 706@2x.png differ diff --git a/static/images/portfolio/组 707@2x.png b/static/images/portfolio/组 707@2x.png new file mode 100644 index 0000000..1f8327c Binary files /dev/null and b/static/images/portfolio/组 707@2x.png differ diff --git a/static/images/portfolio/组 708@2x.png b/static/images/portfolio/组 708@2x.png new file mode 100644 index 0000000..79dd0b2 Binary files /dev/null and b/static/images/portfolio/组 708@2x.png differ diff --git a/static/images/portfolio/组 709@2x.png b/static/images/portfolio/组 709@2x.png new file mode 100644 index 0000000..915b070 Binary files /dev/null and b/static/images/portfolio/组 709@2x.png differ diff --git a/static/images/portfolio/组 710@2x.png b/static/images/portfolio/组 710@2x.png new file mode 100644 index 0000000..ca0395a Binary files /dev/null and b/static/images/portfolio/组 710@2x.png differ diff --git a/static/images/portfolio/组 711@2x.png b/static/images/portfolio/组 711@2x.png new file mode 100644 index 0000000..b8ef966 Binary files /dev/null and b/static/images/portfolio/组 711@2x.png differ diff --git a/static/images/portfolio/组 712@2x.png b/static/images/portfolio/组 712@2x.png new file mode 100644 index 0000000..6ad842a Binary files /dev/null and b/static/images/portfolio/组 712@2x.png differ diff --git a/static/images/portfolio/组 713@2x.png b/static/images/portfolio/组 713@2x.png new file mode 100644 index 0000000..bedd632 Binary files /dev/null and b/static/images/portfolio/组 713@2x.png differ diff --git a/static/images/portfolio/组 714@2x.png b/static/images/portfolio/组 714@2x.png new file mode 100644 index 0000000..2515337 Binary files /dev/null and b/static/images/portfolio/组 714@2x.png differ diff --git a/static/images/portfolio/组 715@2x.png b/static/images/portfolio/组 715@2x.png new file mode 100644 index 0000000..e56c48b Binary files /dev/null and b/static/images/portfolio/组 715@2x.png differ diff --git a/static/images/portfolio/组 716@2x.png b/static/images/portfolio/组 716@2x.png new file mode 100644 index 0000000..ad3fb9b Binary files /dev/null and b/static/images/portfolio/组 716@2x.png differ diff --git a/static/images/portfolio/组 717@2x.png b/static/images/portfolio/组 717@2x.png new file mode 100644 index 0000000..382584b Binary files /dev/null and b/static/images/portfolio/组 717@2x.png differ diff --git a/static/images/portfolio/组 718@2x.png b/static/images/portfolio/组 718@2x.png new file mode 100644 index 0000000..563e59c Binary files /dev/null and b/static/images/portfolio/组 718@2x.png differ diff --git a/static/images/portfolio/组 719@2x.png b/static/images/portfolio/组 719@2x.png new file mode 100644 index 0000000..9fa1649 Binary files /dev/null and b/static/images/portfolio/组 719@2x.png differ diff --git a/static/images/portfolio/组 722@2x.png b/static/images/portfolio/组 722@2x.png new file mode 100644 index 0000000..2c1c660 Binary files /dev/null and b/static/images/portfolio/组 722@2x.png differ diff --git a/static/images/portfolio/组 723@2x.png b/static/images/portfolio/组 723@2x.png new file mode 100644 index 0000000..816ea87 Binary files /dev/null and b/static/images/portfolio/组 723@2x.png differ diff --git a/static/images/portfolio/组 864@2x.png b/static/images/portfolio/组 864@2x.png new file mode 100644 index 0000000..8f6c9ac Binary files /dev/null and b/static/images/portfolio/组 864@2x.png differ diff --git a/static/images/startUp.png b/static/images/startUp.png new file mode 100644 index 0000000..647f8e6 Binary files /dev/null and b/static/images/startUp.png differ diff --git a/static/images/startup/1.png b/static/images/startup/1.png new file mode 100644 index 0000000..577f420 Binary files /dev/null and b/static/images/startup/1.png differ diff --git a/static/images/startup/2.png b/static/images/startup/2.png new file mode 100644 index 0000000..dd25513 Binary files /dev/null and b/static/images/startup/2.png differ diff --git a/static/images/startup/3.png b/static/images/startup/3.png new file mode 100644 index 0000000..a0b65a1 Binary files /dev/null and b/static/images/startup/3.png differ diff --git a/static/images/startup/4.png b/static/images/startup/4.png new file mode 100644 index 0000000..c874829 Binary files /dev/null and b/static/images/startup/4.png differ diff --git a/static/images/startup/5.png b/static/images/startup/5.png new file mode 100644 index 0000000..c4ee2f5 Binary files /dev/null and b/static/images/startup/5.png differ diff --git a/static/images/startup/6.png b/static/images/startup/6.png new file mode 100644 index 0000000..bac6bde Binary files /dev/null and b/static/images/startup/6.png differ diff --git a/static/images/startup/7.png b/static/images/startup/7.png new file mode 100644 index 0000000..a7da557 Binary files /dev/null and b/static/images/startup/7.png differ diff --git a/static/images/startup/8.png b/static/images/startup/8.png new file mode 100644 index 0000000..947b4f1 Binary files /dev/null and b/static/images/startup/8.png differ diff --git a/static/images/startup/9.png b/static/images/startup/9.png new file mode 100644 index 0000000..a3766b0 Binary files /dev/null and b/static/images/startup/9.png differ diff --git a/static/images/te.png b/static/images/te.png new file mode 100644 index 0000000..fe2f26a Binary files /dev/null and b/static/images/te.png differ diff --git a/static/images/tw.png b/static/images/tw.png new file mode 100644 index 0000000..2d74035 Binary files /dev/null and b/static/images/tw.png differ diff --git a/static/images/x.png b/static/images/x.png new file mode 100644 index 0000000..6c6e493 Binary files /dev/null and b/static/images/x.png differ diff --git a/store/README.md b/store/README.md new file mode 100644 index 0000000..1972d27 --- /dev/null +++ b/store/README.md @@ -0,0 +1,10 @@ +# STORE + +**This directory is not required, you can delete it if you don't want to use it.** + +This directory contains your Vuex Store files. +Vuex Store option is implemented in the Nuxt.js framework. + +Creating a file in this directory automatically activates the option in the framework. + +More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/vuex-store). diff --git a/store/index.js b/store/index.js new file mode 100644 index 0000000..342473b --- /dev/null +++ b/store/index.js @@ -0,0 +1,63 @@ +import Cookies from 'js-cookie' +export const state = () => ({ + locales: ['en-US', 'zh-CN'], + locale: 'en-US', + userInfo: {}, + authorization: '', + loading:true +}) +export const getters = { + isLoading(){ + return this.loading; + }, + myAuthorization (state) { + return state.authorization + }, + userInfo (state) { + return state.userInfo + } +} +export const mutations = { + SET_LOADING(state,loading){ + state.loading=loading + }, + SET_LANG (state, locale) { + Cookies.set('lang', JSON.stringify(locale), { expires: 7 }) + if (state.locales.indexOf(locale) !== -1) { + state.locale = locale + } + }, + SET_USER_INFO (state, userInfo) { + Cookies.set('userInfo', JSON.stringify(userInfo), { expires: 7 }) + state.userInfo = userInfo + }, + SET_AUTHORIZATION (state, authorization) { + // 继续 时间 继续 有 cookie + Cookies.set('authorization', JSON.stringify(authorization), { expires: 7 }) + state.authorization = authorization + } +} +export const actions = { + // nuxtClientInit ({ commit }, { req }) { + // const autho = localStorage.getItem('auth._token.local') // or whatever yours is called + // commit('SET_AUTHO', autho) + // console.log('From nuxtClientInit - ' + autho) + // }, + // // 仅 在 当前 index 文件中生效 + nuxtServerInit ({ commit }, data) { + const { req } = data + const authorization = req.headers.authorization || req.headers.Authorization || '' + const configCookie = Cookies.get() + if (authorization) { + commit('SET_AUTHORIZATION', authorization) + } + if (configCookie) { + if (configCookie.userInfo) { + commit('SET_USER_INFO', req.cookie.userInfo) + } + if (configCookie.lang) { + commit('SET_LANG', req.cookie.lang) + } + } + } +} diff --git a/utils/animateMixin.js b/utils/animateMixin.js new file mode 100644 index 0000000..4c0bf67 --- /dev/null +++ b/utils/animateMixin.js @@ -0,0 +1,61 @@ +export default { + mounted(){ + var wow = new window.WOW( + { + boxClass: 'wow', // animated element css class (default is wow) + animateClass: 'animated', // animation css class (default is animated) + offset: 0, // distance to the element when triggering the animation (default is 0) + mobile: true, // trigger animations on mobile devices (default is true) + live: false, // act on asynchronously loaded content (default is true) + callback: function(box) { + // the callback is fired every time an animation is started + // the argument that is passed in is the DOM node being animated + }, + scrollContainer: null // optional scroll container selector, otherwise use window + } + ); + wow.init(); + }, + methods:{ + // 一般 用在 请求接口 数据 + // 防抖动 作用 在 滚动 resize ,scroll ,输入框内容校 监听, + debounce(func, wait=0) { + if (typeof func !== 'function') { + throw new TypeError('need a function arguments') + } + let timeid = null; + let result; + + return function() { + let context = this; + let args = arguments; + + if (timeid) { + clearTimeout(timeid); + } + timeid = setTimeout(function() { + result = func.apply(context, args); + }, wait); + + return result; + } + }, + // 一般 用在 请求接口 数据 + // 节流 作用 在 滚动 resize ,scroll ,输入框内容校 监听, + throttle (func, delay) { + if (typeof func !== 'function') { + throw new TypeError('need a function arguments') + } + var prev = Date.now(); + return function() { + var context = this; + var args = arguments; + var now = Date.now(); + if (now - prev >= delay) { + func.apply(context, args); + prev = Date.now(); + } + } + } + } +} diff --git a/utils/filter.js b/utils/filter.js new file mode 100644 index 0000000..491d2de --- /dev/null +++ b/utils/filter.js @@ -0,0 +1,45 @@ +// { +// title:'Infrastructure', +// images:[ +// 'images/pro/1.png', +// 'images/pro/2.png', +// 'images/pro/3.png', +// 'images/pro/4.png', +// 'images/pro/5.png', +// ] +// }, +export const hanldePortflioData=(data)=>{ + if(!data){ + return [] + } + let target=new Array(); + let map = new Map(); + for(const item of data){ + if(map.has(item.portfolio_type_id)) { // 如果有该key值 + map.set(item.portfolio_type_id, true); + const index= target.findIndex((i)=>i.id===item.portfolio_type_id) + if(index>-1){ + continue + } + target[index].images.push( + { + logo:item.logo, + url:item.url, + } + ) + } else { + map.set(item.portfolio_type_id, false); // 如果没有该key值 + target.push({ + id:item.portfolio_type_id, + title:item.portfolio_type.name, + images:[ + { + logo:item.logo, + url:item.url, + } + ] + }); + } + } + return target +} diff --git a/utils/index.js b/utils/index.js new file mode 100644 index 0000000..d4226f2 --- /dev/null +++ b/utils/index.js @@ -0,0 +1,67 @@ +import cryptoJs from 'crypto-js' + +const assetsUri = (src) => { + if (src && (src.includes('https://') || src.includes('http://'))) { + return src + } + return require(`~/static/${src}`) +} +function getUrlParams (params) { + const urlObj = {} + if (!window.location.search) { return false } + const urlParams = window.location.search.substring(1) + const urlArr = urlParams.split('&') + for (let i = 0; i < urlArr.length; i++) { + const urlArrItem = urlArr[i].split('=') + urlObj[urlArrItem[0]] = urlArrItem[1] + } + // 判断是否有参数 + if (arguments.length >= 1) { + return urlObj[params] + } + return urlObj +} +// const staticUri = (src) => { +// if (src && (src.includes('https://') || src.includes('http://'))) { +// return src +// } +// return require(`/static/${src}`) +// } + + +class Web3Utils { + static base64UrlEncode (str) { + let encodedSource = cryptoJs.enc.Base64.stringify(str) + const reg = new RegExp('/', 'g') + + encodedSource = encodedSource.replace(/[=]+$/, '').replace(/\+/g, '-').replace(reg, '_') + return encodedSource + } + + static jiami (accounts) { + const header = JSON.stringify({ + alg: 'HS256', + typ: 'JWT' + }) + + const payload = JSON.stringify({ + address: accounts + }) + + const secretSalt = 'JCA3bTd8XW7pkJmQMJT1ZiY75uhwjrmXPvisjAzVcWlOQ5LvqF' + + const before_sign = `${Web3Utils.base64UrlEncode(cryptoJs.enc.Utf8.parse(header))}.${Web3Utils.base64UrlEncode(cryptoJs.enc.Utf8.parse(payload))}` + + let signature = cryptoJs.HmacSHA256(before_sign, secretSalt) + + signature = Web3Utils.base64UrlEncode(signature) + + return `${before_sign}.${signature}` + } +} + + + +export { + assetsUri, getUrlParams,Web3Utils +}