Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wiki-js
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
wiki-js
Commits
3d20fee5
Commit
3d20fee5
authored
Oct 30, 2016
by
NGPixel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Local authentication
parent
dc6fc449
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
92 additions
and
44 deletions
+92
-44
README.md
README.md
+3
-2
login.css
assets/css/login.css
+2
-2
login.scss
client/scss/login.scss
+43
-1
auth.js
controllers/auth.js
+16
-18
ws.js
controllers/ws.js
+3
-1
auth.js
libs/auth.js
+12
-11
user.js
models/user.js
+2
-3
login.pug
views/auth/login.pug
+11
-6
No files found.
README.md
View file @
3d20fee5
...
...
@@ -19,11 +19,12 @@
-
[
Installation Guide
](
https://requarks-wiki.readme.io/docs/prerequisites
)
##### Milestones
-
[
]
Account Management
-
[
]
Assets Management
-
[
x
]
Images
-
[
]
Files/Documents
-
[
]
Authentication
-
[
]
Local
-
[
x
]
Authentication
-
[
x
]
Local
-
[
x
]
Microsoft Account
-
[
x
]
Google ID
-
[
x
]
Facebook
...
...
assets/css/login.css
View file @
3d20fee5
#bg
,
#bg
>
div
{
width
:
100%
;
height
:
100%
;
top
:
0
;
left
:
0
}
#root
,
#root
button
,
#root
h1
,
a
{
color
:
#FFF
}
html
{
box-sizing
:
border-box
}
*,
:after
,
:before
{
box-sizing
:
inherit
}
[
v-cloak
]
{
display
:
none
}
body
{
padding
:
0
;
margin
:
0
;
font-family
:
-apple-system
,
BlinkMacSystemFont
,
"Segoe UI"
,
Roboto
,
Helvetica
,
Arial
,
sans-serif
,
"Apple Color Emoji"
,
"Segoe UI Emoji"
,
"Segoe UI Symbol"
;
font-size
:
14px
}
a
{
transition
:
color
.4s
ease
;
text-decoration
:
none
}
a
:hover
{
color
:
#FB8C00
;
text-decoration
:
underline
}
#bg
{
position
:
fixed
;
z-index
:
1
;
background-color
:
#000
}
#bg
>
div
{
background-size
:
cover
;
background-position
:
center
center
;
position
:
absolute
;
opacity
:
0
;
visibility
:
hidden
;
transition
:
opacity
3s
ease
,
visibility
3s
;
animation
:
bg
30s
linear
infinite
}
#copyright
,
#root
{
left
:
10vw
;
z-index
:
2
}
#bg
>
div
:nth-child
(
1
)
{
animation-delay
:
10s
}
#bg
>
div
:nth-child
(
2
)
{
animation-delay
:
20s
}
#root
h1
,
#root
h2
{
animation
:
headerIntro
3s
ease
;
padding
:
0
}
#root
{
position
:
fixed
;
top
:
15vh
;
display
:
flex
;
flex-direction
:
column
}
#root
h1
{
font-size
:
4rem
;
margin
:
0
}
#root
h2
{
font-size
:
1.5rem
;
font-weight
:
400
;
color
:
rgba
(
255
,
255
,
255
,
.7
);
margin
:
0
0
25px
}
#root
input
[
type
=
password
],
#root
input
[
type
=
text
]
{
width
:
350px
;
max-width
:
80vw
;
border
:
1px
solid
rgba
(
255
,
255
,
255
,
.3
);
border-radius
:
3px
;
background-color
:
rgba
(
0
,
0
,
0
,
.2
);
padding
:
0
15px
;
height
:
40px
;
margin
:
0
0
10px
;
color
:
#FFF
;
font-weight
:
700
;
font-size
:
14px
;
transition
:
all
.4s
ease
}
#root
input
[
type
=
password
]
:focus
,
#root
input
[
type
=
text
]
:focus
{
outline
:
0
;
border-color
:
rgba
(
255
,
255
,
255
,
.8
)}
#root
button
{
background-color
:
#FB8C00
;
border
:
1px
solid
#ffa32f
;
border-radius
:
3px
;
height
:
40px
;
width
:
125px
;
padding
:
0
;
font-weight
:
700
;
margin
:
15px
0
0
;
transition
:
all
.4s
ease
;
cursor
:
pointer
}
#root
button
:focus
{
outline
:
0
;
border-color
:
#FFF
}
#root
button
:hover
{
background-color
:
#c87000
}
#root
#social
{
margin-top
:
25px
}
#root
#social
>
span
{
display
:
block
;
font-weight
:
700
;
color
:
rgba
(
255
,
255
,
255
,
.7
)}
#root
#social
button
{
margin-right
:
5px
;
width
:
auto
;
padding
:
0
15px
}
#root
#social
button
>
i
{
margin-right
:
10px
;
font-size
:
16px
}
#root
#social
button
.ms
{
background-color
:
#009688
;
border-color
:
#00c9b6
}
#root
#social
button
.ms
:hover
{
background-color
:
#00635a
}
#root
#social
button
.google
{
background-color
:
#2196F3
;
border-color
:
#51adf6
}
#root
#social
button
.google
:hover
{
background-color
:
#0c7cd5
}
#root
#social
button
.facebook
{
background-color
:
#673AB7
;
border-color
:
#8259cb
}
#root
#social
button
.facebook
:hover
{
background-color
:
#512e90
}
#copyright
{
display
:
flex
;
align-items
:
center
;
justify-content
:
flex-start
;
position
:
absolute
;
bottom
:
10vh
;
color
:
rgba
(
255
,
255
,
255
,
.5
);
font-weight
:
700
}
#copyright
.icon
{
font-size
:
1.2rem
;
margin
:
0
8px
}
#copyright
a
{
opacity
:
.75
}
@-webkit-keyframes
bg
{
0
%
{
-webkit-transform
:
scale
(
1
,
1
);
-moz-transform
:
scale
(
1
,
1
);
-ms-transform
:
scale
(
1
,
1
);
-o-transform
:
scale
(
1
,
1
);
transform
:
scale
(
1
,
1
);
visibility
:
visible
;
opacity
:
0
}
33
%,
5
%
{
opacity
:
.5
}
38
%
{
-webkit-transform
:
scale
(
1.2
,
1.2
);
-moz-transform
:
scale
(
1.2
,
1.2
);
-ms-transform
:
scale
(
1.2
,
1.2
);
-o-transform
:
scale
(
1.2
,
1.2
);
transform
:
scale
(
1.2
,
1.2
);
opacity
:
0
}
39
%
{
visibility
:
hidden
}
100
%
{
visibility
:
hidden
;
opacity
:
0
}}
@-moz-keyframes
bg
{
0
%
{
-webkit-transform
:
scale
(
1
,
1
);
-moz-transform
:
scale
(
1
,
1
);
-ms-transform
:
scale
(
1
,
1
);
-o-transform
:
scale
(
1
,
1
);
transform
:
scale
(
1
,
1
);
visibility
:
visible
;
opacity
:
0
}
33
%,
5
%
{
opacity
:
.5
}
38
%
{
-webkit-transform
:
scale
(
1.2
,
1.2
);
-moz-transform
:
scale
(
1.2
,
1.2
);
-ms-transform
:
scale
(
1.2
,
1.2
);
-o-transform
:
scale
(
1.2
,
1.2
);
transform
:
scale
(
1.2
,
1.2
);
opacity
:
0
}
39
%
{
visibility
:
hidden
}
100
%
{
visibility
:
hidden
;
opacity
:
0
}}
@-o-keyframes
bg
{
0
%
{
-webkit-transform
:
scale
(
1
,
1
);
-moz-transform
:
scale
(
1
,
1
);
-ms-transform
:
scale
(
1
,
1
);
-o-transform
:
scale
(
1
,
1
);
transform
:
scale
(
1
,
1
);
visibility
:
visible
;
opacity
:
0
}
33
%,
5
%
{
opacity
:
.5
}
38
%
{
-webkit-transform
:
scale
(
1.2
,
1.2
);
-moz-transform
:
scale
(
1.2
,
1.2
);
-ms-transform
:
scale
(
1.2
,
1.2
);
-o-transform
:
scale
(
1.2
,
1.2
);
transform
:
scale
(
1.2
,
1.2
);
opacity
:
0
}
39
%
{
visibility
:
hidden
}
100
%
{
visibility
:
hidden
;
opacity
:
0
}}
@keyframes
bg
{
0
%
{
-webkit-transform
:
scale
(
1
,
1
);
-moz-transform
:
scale
(
1
,
1
);
-ms-transform
:
scale
(
1
,
1
);
-o-transform
:
scale
(
1
,
1
);
transform
:
scale
(
1
,
1
);
visibility
:
visible
;
opacity
:
0
}
33
%,
5
%
{
opacity
:
.5
}
38
%
{
-webkit-transform
:
scale
(
1.2
,
1.2
);
-moz-transform
:
scale
(
1.2
,
1.2
);
-ms-transform
:
scale
(
1.2
,
1.2
);
-o-transform
:
scale
(
1.2
,
1.2
);
transform
:
scale
(
1.2
,
1.2
);
opacity
:
0
}
39
%
{
visibility
:
hidden
}
100
%
{
visibility
:
hidden
;
opacity
:
0
}}
@-webkit-keyframes
headerIntro
{
0
%
{
opacity
:
0
}
100
%
{
opacity
:
1
}}
@-moz-keyframes
headerIntro
{
0
%
{
opacity
:
0
}
100
%
{
opacity
:
1
}}
@-o-keyframes
headerIntro
{
0
%
{
opacity
:
0
}
100
%
{
opacity
:
1
}}
@keyframes
headerIntro
{
0
%
{
opacity
:
0
}
100
%
{
opacity
:
1
}}
\ No newline at end of file
@charset
"UTF-8"
;
#bg
,
#bg
>
div
{
width
:
100%
;
height
:
100%
;
top
:
0
;
left
:
0
}
#root
h2
,
#root
h4
{
font-weight
:
400
;
color
:
rgba
(
255
,
255
,
255
,
.7
)}
#root
,
#root
button
,
#root
h1
,
a
{
color
:
#FFF
}
.animated
{
-webkit-animation-duration
:
1s
;
animation-duration
:
1s
;
-webkit-animation-fill-mode
:
both
;
animation-fill-mode
:
both
}
.animated.infinite
{
-webkit-animation-iteration-count
:
infinite
;
animation-iteration-count
:
infinite
}
.animated.hinge
{
-webkit-animation-duration
:
2s
;
animation-duration
:
2s
}
.animated.bounceIn
,
.animated.bounceOut
,
.animated.flipOutX
,
.animated.flipOutY
{
-webkit-animation-duration
:
.75s
;
animation-duration
:
.75s
}
@-webkit-keyframes
bounce
{
0
%,
20
%,
53
%,
80
%,
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-transform
:
translate3d
(
0
,
-30px
,
0
);
transform
:
translate3d
(
0
,
-30px
,
0
)}
40
%,
43
%,
70
%
{
-webkit-animation-timing-function
:
cubic-bezier
(
.755
,
.05
,
.855
,
.06
);
animation-timing-function
:
cubic-bezier
(
.755
,
.05
,
.855
,
.06
)}
70
%
{
-webkit-transform
:
translate3d
(
0
,
-15px
,
0
);
transform
:
translate3d
(
0
,
-15px
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
0
,
-4px
,
0
);
transform
:
translate3d
(
0
,
-4px
,
0
)}}
@keyframes
bounce
{
0
%,
20
%,
53
%,
80
%,
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-transform
:
translate3d
(
0
,
-30px
,
0
);
transform
:
translate3d
(
0
,
-30px
,
0
)}
40
%,
43
%,
70
%
{
-webkit-animation-timing-function
:
cubic-bezier
(
.755
,
.05
,
.855
,
.06
);
animation-timing-function
:
cubic-bezier
(
.755
,
.05
,
.855
,
.06
)}
70
%
{
-webkit-transform
:
translate3d
(
0
,
-15px
,
0
);
transform
:
translate3d
(
0
,
-15px
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
0
,
-4px
,
0
);
transform
:
translate3d
(
0
,
-4px
,
0
)}}
.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
}}
.flash
{
-webkit-animation-name
:
flash
;
animation-name
:
flash
}
@-webkit-keyframes
pulse
{
0
%,
to
{
-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
)}}
@keyframes
pulse
{
0
%,
to
{
-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
)}}
.pulse
{
-webkit-animation-name
:
pulse
;
animation-name
:
pulse
}
@-webkit-keyframes
rubberBand
{
0
%,
to
{
-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
)}}
@keyframes
rubberBand
{
0
%,
to
{
-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
)}}
.rubberBand
{
-webkit-animation-name
:
rubberBand
;
animation-name
:
rubberBand
}
@-webkit-keyframes
shake
{
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
shake
{
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
)}}
.shake
{
-webkit-animation-name
:
shake
;
animation-name
:
shake
}
@-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
)}}
.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
(
0
);
transform
:
rotate
(
0
)}}
@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
(
0
);
transform
:
rotate
(
0
)}}
.swing
{
-webkit-transform-origin
:
top
center
;
transform-origin
:
top
center
;
-webkit-animation-name
:
swing
;
animation-name
:
swing
}
@-webkit-keyframes
tada
{
0
%,
to
{
-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
)}}
@keyframes
tada
{
0
%,
to
{
-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
)}}
.tada
{
-webkit-animation-name
:
tada
;
animation-name
:
tada
}
@-webkit-keyframes
wobble
{
0
%,
to
{
-webkit-transform
:
none
;
transform
:
none
}
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
)}}
@keyframes
wobble
{
0
%,
to
{
-webkit-transform
:
none
;
transform
:
none
}
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
)}}
.wobble
{
-webkit-animation-name
:
wobble
;
animation-name
:
wobble
}
@-webkit-keyframes
jello
{
0
%,
11
.1
%,
to
{
-webkit-transform
:
none
;
transform
:
none
}
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
:
none
;
transform
:
none
}
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
)}}
.jello
{
-webkit-animation-name
:
jello
;
animation-name
:
jello
;
-webkit-transform-origin
:
center
;
transform-origin
:
center
}
@-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
)}}
.bounceIn
{
-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
);
transform
:
translate3d
(
0
,
-3000px
,
0
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
0
,
25px
,
0
);
transform
:
translate3d
(
0
,
25px
,
0
)}
75
%
{
-webkit-transform
:
translate3d
(
0
,
-10px
,
0
);
transform
:
translate3d
(
0
,
-10px
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
0
,
5px
,
0
);
transform
:
translate3d
(
0
,
5px
,
0
)}
to
{
-webkit-transform
:
none
;
transform
:
none
}}
@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
);
transform
:
translate3d
(
0
,
-3000px
,
0
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
0
,
25px
,
0
);
transform
:
translate3d
(
0
,
25px
,
0
)}
75
%
{
-webkit-transform
:
translate3d
(
0
,
-10px
,
0
);
transform
:
translate3d
(
0
,
-10px
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
0
,
5px
,
0
);
transform
:
translate3d
(
0
,
5px
,
0
)}
to
{
-webkit-transform
:
none
;
transform
:
none
}}
.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
);
transform
:
translate3d
(
-3000px
,
0
,
0
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
25px
,
0
,
0
);
transform
:
translate3d
(
25px
,
0
,
0
)}
75
%
{
-webkit-transform
:
translate3d
(
-10px
,
0
,
0
);
transform
:
translate3d
(
-10px
,
0
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
5px
,
0
,
0
);
transform
:
translate3d
(
5px
,
0
,
0
)}
to
{
-webkit-transform
:
none
;
transform
:
none
}}
@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
);
transform
:
translate3d
(
-3000px
,
0
,
0
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
25px
,
0
,
0
);
transform
:
translate3d
(
25px
,
0
,
0
)}
75
%
{
-webkit-transform
:
translate3d
(
-10px
,
0
,
0
);
transform
:
translate3d
(
-10px
,
0
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
5px
,
0
,
0
);
transform
:
translate3d
(
5px
,
0
,
0
)}
to
{
-webkit-transform
:
none
;
transform
:
none
}}
.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
);
transform
:
translate3d
(
3000px
,
0
,
0
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
-25px
,
0
,
0
);
transform
:
translate3d
(
-25px
,
0
,
0
)}
75
%
{
-webkit-transform
:
translate3d
(
10px
,
0
,
0
);
transform
:
translate3d
(
10px
,
0
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
-5px
,
0
,
0
);
transform
:
translate3d
(
-5px
,
0
,
0
)}
to
{
-webkit-transform
:
none
;
transform
:
none
}}
@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
);
transform
:
translate3d
(
3000px
,
0
,
0
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
-25px
,
0
,
0
);
transform
:
translate3d
(
-25px
,
0
,
0
)}
75
%
{
-webkit-transform
:
translate3d
(
10px
,
0
,
0
);
transform
:
translate3d
(
10px
,
0
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
-5px
,
0
,
0
);
transform
:
translate3d
(
-5px
,
0
,
0
)}
to
{
-webkit-transform
:
none
;
transform
:
none
}}
.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
);
transform
:
translate3d
(
0
,
3000px
,
0
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
0
,
-20px
,
0
);
transform
:
translate3d
(
0
,
-20px
,
0
)}
75
%
{
-webkit-transform
:
translate3d
(
0
,
10px
,
0
);
transform
:
translate3d
(
0
,
10px
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
0
,
-5px
,
0
);
transform
:
translate3d
(
0
,
-5px
,
0
)}
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
);
transform
:
translate3d
(
0
,
3000px
,
0
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
0
,
-20px
,
0
);
transform
:
translate3d
(
0
,
-20px
,
0
)}
75
%
{
-webkit-transform
:
translate3d
(
0
,
10px
,
0
);
transform
:
translate3d
(
0
,
10px
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
0
,
-5px
,
0
);
transform
:
translate3d
(
0
,
-5px
,
0
)}
to
{
-webkit-transform
:
translateZ
(
0
);
transform
:
translateZ
(
0
)}}
.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
)}}
.bounceOut
{
-webkit-animation-name
:
bounceOut
;
animation-name
:
bounceOut
}
@-webkit-keyframes
bounceOutDown
{
20
%
{
-webkit-transform
:
translate3d
(
0
,
10px
,
0
);
transform
:
translate3d
(
0
,
10px
,
0
)}
40
%,
45
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
0
,
-20px
,
0
);
transform
:
translate3d
(
0
,
-20px
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
2000px
,
0
);
transform
:
translate3d
(
0
,
2000px
,
0
)}}
@keyframes
bounceOutDown
{
20
%
{
-webkit-transform
:
translate3d
(
0
,
10px
,
0
);
transform
:
translate3d
(
0
,
10px
,
0
)}
40
%,
45
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
0
,
-20px
,
0
);
transform
:
translate3d
(
0
,
-20px
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
2000px
,
0
);
transform
:
translate3d
(
0
,
2000px
,
0
)}}
.bounceOutDown
{
-webkit-animation-name
:
bounceOutDown
;
animation-name
:
bounceOutDown
}
@-webkit-keyframes
bounceOutLeft
{
20
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
20px
,
0
,
0
);
transform
:
translate3d
(
20px
,
0
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
-2000px
,
0
,
0
);
transform
:
translate3d
(
-2000px
,
0
,
0
)}}
@keyframes
bounceOutLeft
{
20
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
20px
,
0
,
0
);
transform
:
translate3d
(
20px
,
0
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
-2000px
,
0
,
0
);
transform
:
translate3d
(
-2000px
,
0
,
0
)}}
.bounceOutLeft
{
-webkit-animation-name
:
bounceOutLeft
;
animation-name
:
bounceOutLeft
}
@-webkit-keyframes
bounceOutRight
{
20
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
-20px
,
0
,
0
);
transform
:
translate3d
(
-20px
,
0
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
2000px
,
0
,
0
);
transform
:
translate3d
(
2000px
,
0
,
0
)}}
@keyframes
bounceOutRight
{
20
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
-20px
,
0
,
0
);
transform
:
translate3d
(
-20px
,
0
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
2000px
,
0
,
0
);
transform
:
translate3d
(
2000px
,
0
,
0
)}}
.bounceOutRight
{
-webkit-animation-name
:
bounceOutRight
;
animation-name
:
bounceOutRight
}
@-webkit-keyframes
bounceOutUp
{
20
%
{
-webkit-transform
:
translate3d
(
0
,
-10px
,
0
);
transform
:
translate3d
(
0
,
-10px
,
0
)}
40
%,
45
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
0
,
20px
,
0
);
transform
:
translate3d
(
0
,
20px
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
-2000px
,
0
);
transform
:
translate3d
(
0
,
-2000px
,
0
)}}
@keyframes
bounceOutUp
{
20
%
{
-webkit-transform
:
translate3d
(
0
,
-10px
,
0
);
transform
:
translate3d
(
0
,
-10px
,
0
)}
40
%,
45
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
0
,
20px
,
0
);
transform
:
translate3d
(
0
,
20px
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
-2000px
,
0
);
transform
:
translate3d
(
0
,
-2000px
,
0
)}}
.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
}}
.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
:
none
;
transform
:
none
}}
@keyframes
fadeInDown
{
0
%
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
-100%
,
0
);
transform
:
translate3d
(
0
,
-100%
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
.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
:
none
;
transform
:
none
}}
@keyframes
fadeInDownBig
{
0
%
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
-2000px
,
0
);
transform
:
translate3d
(
0
,
-2000px
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
.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
:
none
;
transform
:
none
}}
@keyframes
fadeInLeft
{
0
%
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
-100%
,
0
,
0
);
transform
:
translate3d
(
-100%
,
0
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
.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
:
none
;
transform
:
none
}}
@keyframes
fadeInLeftBig
{
0
%
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
-2000px
,
0
,
0
);
transform
:
translate3d
(
-2000px
,
0
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
.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
:
none
;
transform
:
none
}}
@keyframes
fadeInRight
{
0
%
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
100%
,
0
,
0
);
transform
:
translate3d
(
100%
,
0
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
.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
:
none
;
transform
:
none
}}
@keyframes
fadeInRightBig
{
0
%
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
2000px
,
0
,
0
);
transform
:
translate3d
(
2000px
,
0
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
.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
:
none
;
transform
:
none
}}
@keyframes
fadeInUp
{
0
%
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
100%
,
0
);
transform
:
translate3d
(
0
,
100%
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
.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
:
none
;
transform
:
none
}}
@keyframes
fadeInUpBig
{
0
%
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
2000px
,
0
);
transform
:
translate3d
(
0
,
2000px
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
.fadeInUpBig
{
-webkit-animation-name
:
fadeInUpBig
;
animation-name
:
fadeInUpBig
}
@-webkit-keyframes
fadeOut
{
0
%
{
opacity
:
1
}
to
{
opacity
:
0
}}
@keyframes
fadeOut
{
0
%
{
opacity
:
1
}
to
{
opacity
:
0
}}
.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
)}}
.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
)}}
.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
)}}
.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
)}}
.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
)}}
.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
)}}
.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
)}}
.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
)}}
.fadeOutUpBig
{
-webkit-animation-name
:
fadeOutUpBig
;
animation-name
:
fadeOutUpBig
}
@-webkit-keyframes
flip
{
0
%
{
-webkit-transform
:
perspective
(
400px
)
rotateY
(
-1turn
);
transform
:
perspective
(
400px
)
rotateY
(
-1turn
)}
0
%,
40
%
{
-webkit-animation-timing-function
:
ease-out
;
animation-timing-function
:
ease-out
}
40
%
{
-webkit-transform
:
perspective
(
400px
)
translateZ
(
150px
)
rotateY
(
-190deg
);
transform
:
perspective
(
400px
)
translateZ
(
150px
)
rotateY
(
-190deg
)}
50
%
{
-webkit-transform
:
perspective
(
400px
)
translateZ
(
150px
)
rotateY
(
-170deg
);
transform
:
perspective
(
400px
)
translateZ
(
150px
)
rotateY
(
-170deg
)}
50
%,
80
%
{
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}
80
%
{
-webkit-transform
:
perspective
(
400px
)
scale3d
(
.95
,
.95
,
.95
);
transform
:
perspective
(
400px
)
scale3d
(
.95
,
.95
,
.95
)}
to
{
-webkit-transform
:
perspective
(
400px
);
transform
:
perspective
(
400px
);
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}}
@keyframes
flip
{
0
%
{
-webkit-transform
:
perspective
(
400px
)
rotateY
(
-1turn
);
transform
:
perspective
(
400px
)
rotateY
(
-1turn
)}
0
%,
40
%
{
-webkit-animation-timing-function
:
ease-out
;
animation-timing-function
:
ease-out
}
40
%
{
-webkit-transform
:
perspective
(
400px
)
translateZ
(
150px
)
rotateY
(
-190deg
);
transform
:
perspective
(
400px
)
translateZ
(
150px
)
rotateY
(
-190deg
)}
50
%
{
-webkit-transform
:
perspective
(
400px
)
translateZ
(
150px
)
rotateY
(
-170deg
);
transform
:
perspective
(
400px
)
translateZ
(
150px
)
rotateY
(
-170deg
)}
50
%,
80
%
{
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}
80
%
{
-webkit-transform
:
perspective
(
400px
)
scale3d
(
.95
,
.95
,
.95
);
transform
:
perspective
(
400px
)
scale3d
(
.95
,
.95
,
.95
)}
to
{
-webkit-transform
:
perspective
(
400px
);
transform
:
perspective
(
400px
);
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}}
.animated.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
);
opacity
:
0
}
0
%,
40
%
{
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}
40
%
{
-webkit-transform
:
perspective
(
400px
)
rotateX
(
-20deg
);
transform
:
perspective
(
400px
)
rotateX
(
-20deg
)}
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
);
opacity
:
0
}
0
%,
40
%
{
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}
40
%
{
-webkit-transform
:
perspective
(
400px
)
rotateX
(
-20deg
);
transform
:
perspective
(
400px
)
rotateX
(
-20deg
)}
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
}
.flipInY
,
.flipOutX
{
-webkit-backface-visibility
:
visible
!important
}
@-webkit-keyframes
flipInY
{
0
%
{
-webkit-transform
:
perspective
(
400px
)
rotateY
(
90deg
);
transform
:
perspective
(
400px
)
rotateY
(
90deg
);
opacity
:
0
}
0
%,
40
%
{
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}
40
%
{
-webkit-transform
:
perspective
(
400px
)
rotateY
(
-20deg
);
transform
:
perspective
(
400px
)
rotateY
(
-20deg
)}
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
);
opacity
:
0
}
0
%,
40
%
{
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}
40
%
{
-webkit-transform
:
perspective
(
400px
)
rotateY
(
-20deg
);
transform
:
perspective
(
400px
)
rotateY
(
-20deg
)}
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
)}}
.flipInY
{
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
}}
.flipOutX
{
-webkit-animation-name
:
flipOutX
;
animation-name
:
flipOutX
;
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
}}
.flipOutY
{
-webkit-backface-visibility
:
visible
!important
;
backface-visibility
:
visible
!important
;
-webkit-animation-name
:
flipOutY
;
animation-name
:
flipOutY
}
@-webkit-keyframes
lightSpeedIn
{
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
)}
60
%,
80
%
{
opacity
:
1
}
80
%
{
-webkit-transform
:
skewX
(
-5deg
);
transform
:
skewX
(
-5deg
)}
to
{
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
@keyframes
lightSpeedIn
{
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
)}
60
%,
80
%
{
opacity
:
1
}
80
%
{
-webkit-transform
:
skewX
(
-5deg
);
transform
:
skewX
(
-5deg
)}
to
{
-webkit-transform
:
none
;
transform
:
none
;
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
%
{
opacity
:
1
}
to
{
-webkit-transform
:
translate3d
(
100%
,
0
,
0
)
skewX
(
30deg
);
transform
:
translate3d
(
100%
,
0
,
0
)
skewX
(
30deg
);
opacity
:
0
}}
@keyframes
lightSpeedOut
{
0
%
{
opacity
:
1
}
to
{
-webkit-transform
:
translate3d
(
100%
,
0
,
0
)
skewX
(
30deg
);
transform
:
translate3d
(
100%
,
0
,
0
)
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
%
{
transform-origin
:
center
;
-webkit-transform
:
rotate
(
-200deg
);
transform
:
rotate
(
-200deg
);
opacity
:
0
}
0
%,
to
{
-webkit-transform-origin
:
center
}
to
{
transform-origin
:
center
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
@keyframes
rotateIn
{
0
%
{
transform-origin
:
center
;
-webkit-transform
:
rotate
(
-200deg
);
transform
:
rotate
(
-200deg
);
opacity
:
0
}
0
%,
to
{
-webkit-transform-origin
:
center
}
to
{
transform-origin
:
center
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
.rotateIn
{
-webkit-animation-name
:
rotateIn
;
animation-name
:
rotateIn
}
@-webkit-keyframes
rotateInDownLeft
{
0
%
{
transform-origin
:
left
bottom
;
-webkit-transform
:
rotate
(
-45deg
);
transform
:
rotate
(
-45deg
);
opacity
:
0
}
0
%,
to
{
-webkit-transform-origin
:
left
bottom
}
to
{
transform-origin
:
left
bottom
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
@keyframes
rotateInDownLeft
{
0
%
{
transform-origin
:
left
bottom
;
-webkit-transform
:
rotate
(
-45deg
);
transform
:
rotate
(
-45deg
);
opacity
:
0
}
0
%,
to
{
-webkit-transform-origin
:
left
bottom
}
to
{
transform-origin
:
left
bottom
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
.rotateInDownLeft
{
-webkit-animation-name
:
rotateInDownLeft
;
animation-name
:
rotateInDownLeft
}
@-webkit-keyframes
rotateInDownRight
{
0
%
{
transform-origin
:
right
bottom
;
-webkit-transform
:
rotate
(
45deg
);
transform
:
rotate
(
45deg
);
opacity
:
0
}
0
%,
to
{
-webkit-transform-origin
:
right
bottom
}
to
{
transform-origin
:
right
bottom
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
@keyframes
rotateInDownRight
{
0
%
{
transform-origin
:
right
bottom
;
-webkit-transform
:
rotate
(
45deg
);
transform
:
rotate
(
45deg
);
opacity
:
0
}
0
%,
to
{
-webkit-transform-origin
:
right
bottom
}
to
{
transform-origin
:
right
bottom
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
.rotateInDownRight
{
-webkit-animation-name
:
rotateInDownRight
;
animation-name
:
rotateInDownRight
}
@-webkit-keyframes
rotateInUpLeft
{
0
%
{
transform-origin
:
left
bottom
;
-webkit-transform
:
rotate
(
45deg
);
transform
:
rotate
(
45deg
);
opacity
:
0
}
0
%,
to
{
-webkit-transform-origin
:
left
bottom
}
to
{
transform-origin
:
left
bottom
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
@keyframes
rotateInUpLeft
{
0
%
{
transform-origin
:
left
bottom
;
-webkit-transform
:
rotate
(
45deg
);
transform
:
rotate
(
45deg
);
opacity
:
0
}
0
%,
to
{
-webkit-transform-origin
:
left
bottom
}
to
{
transform-origin
:
left
bottom
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
.rotateInUpLeft
{
-webkit-animation-name
:
rotateInUpLeft
;
animation-name
:
rotateInUpLeft
}
@-webkit-keyframes
rotateInUpRight
{
0
%
{
transform-origin
:
right
bottom
;
-webkit-transform
:
rotate
(
-90deg
);
transform
:
rotate
(
-90deg
);
opacity
:
0
}
0
%,
to
{
-webkit-transform-origin
:
right
bottom
}
to
{
transform-origin
:
right
bottom
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
@keyframes
rotateInUpRight
{
0
%
{
transform-origin
:
right
bottom
;
-webkit-transform
:
rotate
(
-90deg
);
transform
:
rotate
(
-90deg
);
opacity
:
0
}
0
%,
to
{
-webkit-transform-origin
:
right
bottom
}
to
{
transform-origin
:
right
bottom
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
.rotateInUpRight
{
-webkit-animation-name
:
rotateInUpRight
;
animation-name
:
rotateInUpRight
}
@-webkit-keyframes
rotateOut
{
0
%
{
transform-origin
:
center
;
opacity
:
1
}
0
%,
to
{
-webkit-transform-origin
:
center
}
to
{
transform-origin
:
center
;
-webkit-transform
:
rotate
(
200deg
);
transform
:
rotate
(
200deg
);
opacity
:
0
}}
@keyframes
rotateOut
{
0
%
{
transform-origin
:
center
;
opacity
:
1
}
0
%,
to
{
-webkit-transform-origin
:
center
}
to
{
transform-origin
:
center
;
-webkit-transform
:
rotate
(
200deg
);
transform
:
rotate
(
200deg
);
opacity
:
0
}}
.rotateOut
{
-webkit-animation-name
:
rotateOut
;
animation-name
:
rotateOut
}
@-webkit-keyframes
rotateOutDownLeft
{
0
%
{
transform-origin
:
left
bottom
;
opacity
:
1
}
0
%,
to
{
-webkit-transform-origin
:
left
bottom
}
to
{
transform-origin
:
left
bottom
;
-webkit-transform
:
rotate
(
45deg
);
transform
:
rotate
(
45deg
);
opacity
:
0
}}
@keyframes
rotateOutDownLeft
{
0
%
{
transform-origin
:
left
bottom
;
opacity
:
1
}
0
%,
to
{
-webkit-transform-origin
:
left
bottom
}
to
{
transform-origin
:
left
bottom
;
-webkit-transform
:
rotate
(
45deg
);
transform
:
rotate
(
45deg
);
opacity
:
0
}}
.rotateOutDownLeft
{
-webkit-animation-name
:
rotateOutDownLeft
;
animation-name
:
rotateOutDownLeft
}
@-webkit-keyframes
rotateOutDownRight
{
0
%
{
transform-origin
:
right
bottom
;
opacity
:
1
}
0
%,
to
{
-webkit-transform-origin
:
right
bottom
}
to
{
transform-origin
:
right
bottom
;
-webkit-transform
:
rotate
(
-45deg
);
transform
:
rotate
(
-45deg
);
opacity
:
0
}}
@keyframes
rotateOutDownRight
{
0
%
{
transform-origin
:
right
bottom
;
opacity
:
1
}
0
%,
to
{
-webkit-transform-origin
:
right
bottom
}
to
{
transform-origin
:
right
bottom
;
-webkit-transform
:
rotate
(
-45deg
);
transform
:
rotate
(
-45deg
);
opacity
:
0
}}
.rotateOutDownRight
{
-webkit-animation-name
:
rotateOutDownRight
;
animation-name
:
rotateOutDownRight
}
@-webkit-keyframes
rotateOutUpLeft
{
0
%
{
transform-origin
:
left
bottom
;
opacity
:
1
}
0
%,
to
{
-webkit-transform-origin
:
left
bottom
}
to
{
transform-origin
:
left
bottom
;
-webkit-transform
:
rotate
(
-45deg
);
transform
:
rotate
(
-45deg
);
opacity
:
0
}}
@keyframes
rotateOutUpLeft
{
0
%
{
transform-origin
:
left
bottom
;
opacity
:
1
}
0
%,
to
{
-webkit-transform-origin
:
left
bottom
}
to
{
transform-origin
:
left
bottom
;
-webkit-transform
:
rotate
(
-45deg
);
transform
:
rotate
(
-45deg
);
opacity
:
0
}}
.rotateOutUpLeft
{
-webkit-animation-name
:
rotateOutUpLeft
;
animation-name
:
rotateOutUpLeft
}
@-webkit-keyframes
rotateOutUpRight
{
0
%
{
transform-origin
:
right
bottom
;
opacity
:
1
}
0
%,
to
{
-webkit-transform-origin
:
right
bottom
}
to
{
transform-origin
:
right
bottom
;
-webkit-transform
:
rotate
(
90deg
);
transform
:
rotate
(
90deg
);
opacity
:
0
}}
@keyframes
rotateOutUpRight
{
0
%
{
transform-origin
:
right
bottom
;
opacity
:
1
}
0
%,
to
{
-webkit-transform-origin
:
right
bottom
}
to
{
transform-origin
:
right
bottom
;
-webkit-transform
:
rotate
(
90deg
);
transform
:
rotate
(
90deg
);
opacity
:
0
}}
.rotateOutUpRight
{
-webkit-animation-name
:
rotateOutUpRight
;
animation-name
:
rotateOutUpRight
}
@-webkit-keyframes
hinge
{
0
%
{
transform-origin
:
top
left
}
0
%,
20
%,
60
%
{
-webkit-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
);
transform-origin
:
top
left
}
40
%,
80
%
{
-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
;
opacity
:
1
}
to
{
-webkit-transform
:
translate3d
(
0
,
700px
,
0
);
transform
:
translate3d
(
0
,
700px
,
0
);
opacity
:
0
}}
@keyframes
hinge
{
0
%
{
transform-origin
:
top
left
}
0
%,
20
%,
60
%
{
-webkit-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
);
transform-origin
:
top
left
}
40
%,
80
%
{
-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
;
opacity
:
1
}
to
{
-webkit-transform
:
translate3d
(
0
,
700px
,
0
);
transform
:
translate3d
(
0
,
700px
,
0
);
opacity
:
0
}}
.hinge
{
-webkit-animation-name
:
hinge
;
animation-name
:
hinge
}
@-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
:
none
;
transform
:
none
}}
@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
:
none
;
transform
:
none
}}
.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
)}}
.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
}}
.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
)}}
.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
)}}
.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
)}}
.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
)}}
.zoomInUp
{
-webkit-animation-name
:
zoomInUp
;
animation-name
:
zoomInUp
}
@-webkit-keyframes
zoomOut
{
0
%
{
opacity
:
1
}
50
%
{
-webkit-transform
:
scale3d
(
.3
,
.3
,
.3
);
transform
:
scale3d
(
.3
,
.3
,
.3
)}
50
%,
to
{
opacity
:
0
}}
@keyframes
zoomOut
{
0
%
{
opacity
:
1
}
50
%
{
-webkit-transform
:
scale3d
(
.3
,
.3
,
.3
);
transform
:
scale3d
(
.3
,
.3
,
.3
)}
50
%,
to
{
opacity
:
0
}}
.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-transform-origin
:
center
bottom
;
transform-origin
:
center
bottom
;
-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-transform-origin
:
center
bottom
;
transform-origin
:
center
bottom
;
-webkit-animation-timing-function
:
cubic-bezier
(
.175
,
.885
,
.32
,
1
);
animation-timing-function
:
cubic-bezier
(
.175
,
.885
,
.32
,
1
)}}
.zoomOutDown
{
-webkit-animation-name
:
zoomOutDown
;
animation-name
:
zoomOutDown
}
@-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
);
-webkit-transform-origin
:
left
center
;
transform-origin
:
left
center
}}
@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
);
-webkit-transform-origin
:
left
center
;
transform-origin
:
left
center
}}
.zoomOutLeft
{
-webkit-animation-name
:
zoomOutLeft
;
animation-name
:
zoomOutLeft
}
@-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
);
-webkit-transform-origin
:
right
center
;
transform-origin
:
right
center
}}
@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
);
-webkit-transform-origin
:
right
center
;
transform-origin
:
right
center
}}
.zoomOutRight
{
-webkit-animation-name
:
zoomOutRight
;
animation-name
:
zoomOutRight
}
@-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-transform-origin
:
center
bottom
;
transform-origin
:
center
bottom
;
-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-transform-origin
:
center
bottom
;
transform-origin
:
center
bottom
;
-webkit-animation-timing-function
:
cubic-bezier
(
.175
,
.885
,
.32
,
1
);
animation-timing-function
:
cubic-bezier
(
.175
,
.885
,
.32
,
1
)}}
.zoomOutUp
{
-webkit-animation-name
:
zoomOutUp
;
animation-name
:
zoomOutUp
}
@-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
)}}
.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
)}}
.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
)}}
.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
)}}
.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
)}}
.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
)}}
.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
)}}
.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
)}}
.slideOutUp
{
-webkit-animation-name
:
slideOutUp
;
animation-name
:
slideOutUp
}
html
{
box-sizing
:
border-box
}
*,
:after
,
:before
{
box-sizing
:
inherit
}
[
v-cloak
]
{
display
:
none
}
body
{
padding
:
0
;
margin
:
0
;
font-family
:
-apple-system
,
BlinkMacSystemFont
,
"Segoe UI"
,
Roboto
,
Helvetica
,
Arial
,
sans-serif
,
"Apple Color Emoji"
,
"Segoe UI Emoji"
,
"Segoe UI Symbol"
;
font-size
:
14px
}
a
{
transition
:
color
.4s
ease
;
text-decoration
:
none
}
a
:hover
{
color
:
#FB8C00
;
text-decoration
:
underline
}
#bg
{
position
:
fixed
;
z-index
:
1
;
background-color
:
#000
}
#bg
>
div
{
background-size
:
cover
;
background-position
:
center
center
;
position
:
absolute
;
opacity
:
0
;
visibility
:
hidden
;
transition
:
opacity
3s
ease
,
visibility
3s
;
animation
:
bg
30s
linear
infinite
}
#copyright
,
#root
{
left
:
10vw
;
z-index
:
2
}
#bg
>
div
:nth-child
(
1
)
{
animation-delay
:
10s
}
#bg
>
div
:nth-child
(
2
)
{
animation-delay
:
20s
}
#root
h1
,
#root
h2
{
animation
:
headerIntro
3s
ease
;
padding
:
0
}
#root
{
position
:
fixed
;
top
:
15vh
;
display
:
flex
;
flex-direction
:
column
}
#root
h1
{
font-size
:
4rem
;
margin
:
0
}
#root
h2
{
font-size
:
1.5rem
;
margin
:
0
0
25px
}
#root
h3
{
font-size
:
1.25rem
;
font-weight
:
400
;
color
:
#FB8C00
;
padding
:
0
;
margin
:
0
;
animation
:
shake
1s
ease
}
#root
h3
>
.fa
{
margin-right
:
7px
}
#root
h4
{
font-size
:
.8rem
;
padding
:
0
;
margin
:
0
0
15px
;
animation
:
fadeIn
3s
ease
}
#root
form
{
display
:
flex
;
flex-direction
:
column
}
#root
input
[
type
=
password
],
#root
input
[
type
=
text
]
{
width
:
350px
;
max-width
:
80vw
;
border
:
1px
solid
rgba
(
255
,
255
,
255
,
.3
);
border-radius
:
3px
;
background-color
:
rgba
(
0
,
0
,
0
,
.2
);
padding
:
0
15px
;
height
:
40px
;
margin
:
0
0
10px
;
color
:
#FFF
;
font-weight
:
700
;
font-size
:
14px
;
transition
:
all
.4s
ease
}
#root
input
[
type
=
password
]
:focus
,
#root
input
[
type
=
text
]
:focus
{
outline
:
0
;
border-color
:
#FB8C00
}
#root
button
{
background-color
:
#FB8C00
;
border
:
1px
solid
#ffa32f
;
border-radius
:
3px
;
height
:
40px
;
width
:
125px
;
padding
:
0
;
font-weight
:
700
;
margin
:
15px
0
0
;
transition
:
all
.4s
ease
;
cursor
:
pointer
}
#root
button
:focus
{
outline
:
0
;
border-color
:
#FFF
}
#root
button
:hover
{
background-color
:
#c87000
}
#root
#social
{
margin-top
:
25px
}
#root
#social
>
span
{
display
:
block
;
font-weight
:
700
;
color
:
rgba
(
255
,
255
,
255
,
.7
)}
#root
#social
button
{
margin-right
:
5px
;
width
:
auto
;
padding
:
0
15px
}
#root
#social
button
>
i
{
margin-right
:
10px
;
font-size
:
16px
}
#root
#social
button
.ms
{
background-color
:
#009688
;
border-color
:
#00c9b6
}
#root
#social
button
.ms
:focus
{
border-color
:
#FFF
}
#root
#social
button
.ms
:hover
{
background-color
:
#00635a
}
#root
#social
button
.google
{
background-color
:
#2196F3
;
border-color
:
#51adf6
}
#root
#social
button
.google
:focus
{
border-color
:
#FFF
}
#root
#social
button
.google
:hover
{
background-color
:
#0c7cd5
}
#root
#social
button
.facebook
{
background-color
:
#673AB7
;
border-color
:
#8259cb
}
#root
#social
button
.facebook
:focus
{
border-color
:
#FFF
}
#root
#social
button
.facebook
:hover
{
background-color
:
#512e90
}
#copyright
{
display
:
flex
;
align-items
:
center
;
justify-content
:
flex-start
;
position
:
absolute
;
bottom
:
10vh
;
color
:
rgba
(
255
,
255
,
255
,
.5
);
font-weight
:
700
}
#copyright
.icon
{
font-size
:
1.2rem
;
margin
:
0
8px
}
#copyright
a
{
opacity
:
.75
}
@-webkit-keyframes
bg
{
0
%
{
-webkit-transform
:
scale
(
1
,
1
);
-moz-transform
:
scale
(
1
,
1
);
-ms-transform
:
scale
(
1
,
1
);
-o-transform
:
scale
(
1
,
1
);
transform
:
scale
(
1
,
1
);
visibility
:
visible
;
opacity
:
0
}
33
%,
5
%
{
opacity
:
.5
}
38
%
{
-webkit-transform
:
scale
(
1.2
,
1.2
);
-moz-transform
:
scale
(
1.2
,
1.2
);
-ms-transform
:
scale
(
1.2
,
1.2
);
-o-transform
:
scale
(
1.2
,
1.2
);
transform
:
scale
(
1.2
,
1.2
);
opacity
:
0
}
39
%
{
visibility
:
hidden
}
100
%
{
visibility
:
hidden
;
opacity
:
0
}}
@-moz-keyframes
bg
{
0
%
{
-webkit-transform
:
scale
(
1
,
1
);
-moz-transform
:
scale
(
1
,
1
);
-ms-transform
:
scale
(
1
,
1
);
-o-transform
:
scale
(
1
,
1
);
transform
:
scale
(
1
,
1
);
visibility
:
visible
;
opacity
:
0
}
33
%,
5
%
{
opacity
:
.5
}
38
%
{
-webkit-transform
:
scale
(
1.2
,
1.2
);
-moz-transform
:
scale
(
1.2
,
1.2
);
-ms-transform
:
scale
(
1.2
,
1.2
);
-o-transform
:
scale
(
1.2
,
1.2
);
transform
:
scale
(
1.2
,
1.2
);
opacity
:
0
}
39
%
{
visibility
:
hidden
}
100
%
{
visibility
:
hidden
;
opacity
:
0
}}
@-o-keyframes
bg
{
0
%
{
-webkit-transform
:
scale
(
1
,
1
);
-moz-transform
:
scale
(
1
,
1
);
-ms-transform
:
scale
(
1
,
1
);
-o-transform
:
scale
(
1
,
1
);
transform
:
scale
(
1
,
1
);
visibility
:
visible
;
opacity
:
0
}
33
%,
5
%
{
opacity
:
.5
}
38
%
{
-webkit-transform
:
scale
(
1.2
,
1.2
);
-moz-transform
:
scale
(
1.2
,
1.2
);
-ms-transform
:
scale
(
1.2
,
1.2
);
-o-transform
:
scale
(
1.2
,
1.2
);
transform
:
scale
(
1.2
,
1.2
);
opacity
:
0
}
39
%
{
visibility
:
hidden
}
100
%
{
visibility
:
hidden
;
opacity
:
0
}}
@keyframes
bg
{
0
%
{
-webkit-transform
:
scale
(
1
,
1
);
-moz-transform
:
scale
(
1
,
1
);
-ms-transform
:
scale
(
1
,
1
);
-o-transform
:
scale
(
1
,
1
);
transform
:
scale
(
1
,
1
);
visibility
:
visible
;
opacity
:
0
}
33
%,
5
%
{
opacity
:
.5
}
38
%
{
-webkit-transform
:
scale
(
1.2
,
1.2
);
-moz-transform
:
scale
(
1.2
,
1.2
);
-ms-transform
:
scale
(
1.2
,
1.2
);
-o-transform
:
scale
(
1.2
,
1.2
);
transform
:
scale
(
1.2
,
1.2
);
opacity
:
0
}
39
%
{
visibility
:
hidden
}
100
%
{
visibility
:
hidden
;
opacity
:
0
}}
@-webkit-keyframes
headerIntro
{
0
%
{
opacity
:
0
}
100
%
{
opacity
:
1
}}
@-moz-keyframes
headerIntro
{
0
%
{
opacity
:
0
}
100
%
{
opacity
:
1
}}
@-o-keyframes
headerIntro
{
0
%
{
opacity
:
0
}
100
%
{
opacity
:
1
}}
@keyframes
headerIntro
{
0
%
{
opacity
:
0
}
100
%
{
opacity
:
1
}}
\ No newline at end of file
client/scss/login.scss
View file @
3d20fee5
@import
'./layout/_base'
;
@import
'./layout/_mixins'
;
@import
'./libs/animate.min.css'
;
body
{
padding
:
0
;
margin
:
0
;
...
...
@@ -80,6 +82,34 @@ a {
animation
:
headerIntro
3s
ease
;
}
h3
{
font-size
:
1
.25rem
;
font-weight
:
normal
;
color
:
#FB8C00
;
padding
:
0
;
margin
:
0
;
animation
:
shake
1s
ease
;
>
.fa
{
margin-right
:
7px
;
}
}
h4
{
font-size
:
0
.8rem
;
font-weight
:
normal
;
color
:
rgba
(
255
,
255
,
255
,
0
.7
);
padding
:
0
;
margin
:
0
0
15px
0
;
animation
:
fadeIn
3s
ease
;
}
form
{
display
:
flex
;
flex-direction
:
column
;
}
input
[
type
=
text
],
input
[
type
=
password
]
{
width
:
350px
;
max-width
:
80vw
;
...
...
@@ -96,7 +126,7 @@ a {
&
:focus
{
outline
:
none
;
border-color
:
rgba
(
255
,
255
,
255
,
0
.8
)
;
border-color
:
#FB8C00
;
}
}
...
...
@@ -148,6 +178,10 @@ a {
background-color
:
#009688
;
border-color
:
lighten
(
#009688
,
10%
);
&
:focus
{
border-color
:
#FFF
;
}
&
:hover
{
background-color
:
darken
(
#009688
,
10%
);
}
...
...
@@ -158,6 +192,10 @@ a {
background-color
:
#2196F3
;
border-color
:
lighten
(
#2196F3
,
10%
);
&
:focus
{
border-color
:
#FFF
;
}
&
:hover
{
background-color
:
darken
(
#2196F3
,
10%
);
}
...
...
@@ -168,6 +206,10 @@ a {
background-color
:
#673AB7
;
border-color
:
lighten
(
#673AB7
,
10%
);
&
:focus
{
border-color
:
#FFF
;
}
&
:hover
{
background-color
:
darken
(
#673AB7
,
10%
);
}
...
...
controllers/auth.js
View file @
3d20fee5
...
...
@@ -35,28 +35,26 @@ router.get('/login', function(req, res, next) {
});
router
.
post
(
'/login'
,
bruteforce
.
prevent
,
function
(
req
,
res
,
next
)
{
passport
.
authenticate
(
'local'
,
function
(
err
,
user
,
info
)
{
passport
.
authenticate
(
'local'
,
function
(
err
,
user
,
info
)
{
if
(
err
)
{
return
next
(
err
);
}
if
(
err
)
{
return
next
(
err
);
}
if
(
!
user
)
{
req
.
flash
(
'alert'
,
{
class
:
'error'
,
title
:
'Invalid login'
,
message
:
"The email or password is invalid."
,
iconClass
:
'fa-times'
});
return
res
.
redirect
(
'/login'
);
}
if
(
!
user
)
{
req
.
flash
(
'alert'
,
{
title
:
'Invalid login'
,
message
:
"The email or password is invalid."
});
return
res
.
redirect
(
'/login'
);
}
req
.
logIn
(
user
,
function
(
err
)
{
if
(
err
)
{
return
next
(
err
);
}
req
.
brute
.
reset
(
function
()
{
return
res
.
redirect
(
'/'
);
});
});
req
.
logIn
(
user
,
function
(
err
)
{
if
(
err
)
{
return
next
(
err
);
}
req
.
brute
.
reset
(
function
()
{
return
res
.
redirect
(
'/'
);
});
});
})(
req
,
res
,
next
);
})(
req
,
res
,
next
);
});
/**
...
...
controllers/ws.js
View file @
3d20fee5
...
...
@@ -2,7 +2,9 @@
module
.
exports
=
(
socket
)
=>
{
console
.
log
(
socket
.
request
.
user
);
if
(
!
socket
.
request
.
user
.
logged_in
)
{
return
;
}
//-----------------------------------------
// SEARCH
...
...
libs/auth.js
View file @
3d20fee5
...
...
@@ -34,23 +34,24 @@ module.exports = function(passport, appconfig) {
passport
.
use
(
'local'
,
new
LocalStrategy
({
usernameField
:
'email'
,
passwordField
:
'password'
,
passReqToCallback
:
true
passwordField
:
'password'
},
function
(
req
,
uEmail
,
uPassword
,
done
)
{
db
.
User
.
findOne
({
'email'
:
uEmail
}).
then
((
user
)
=>
{
if
(
user
)
{
user
.
validatePassword
(
uPassword
).
then
((
isValid
)
=>
{
return
(
isValid
)
?
done
(
null
,
user
)
:
done
(
null
,
false
);
(
uEmail
,
uPassword
,
done
)
=>
{
db
.
User
.
findOne
({
email
:
uEmail
,
provider
:
'local'
}).
then
((
user
)
=>
{
if
(
user
)
{
return
user
.
validatePassword
(
uPassword
).
then
(()
=>
{
return
done
(
null
,
user
)
||
true
;
}).
catch
((
err
)
=>
{
return
done
(
err
,
null
);
});
}
else
{
return
done
(
n
ull
,
false
);
return
done
(
n
ew
Error
(
'Invalid Login'
),
null
);
}
}).
catch
((
err
)
=>
{
done
(
err
)
;
done
(
err
,
null
)
;
});
}
)
);
}
)
)
;
}
...
...
models/user.js
View file @
3d20fee5
...
...
@@ -78,9 +78,8 @@ userSchema.statics.hashPassword = (rawPwd) => {
};
userSchema
.
methods
.
validatePassword
=
function
(
rawPwd
)
{
let
self
=
this
;
return
bcrypt
.
hash
(
rawPwd
).
then
((
pwd
)
=>
{
return
(
self
.
password
===
pwd
)
?
true
:
Promise
.
reject
(
new
Error
(
'Invalid Password'
));
return
bcrypt
.
compare
(
rawPwd
,
this
.
password
).
then
((
isValid
)
=>
{
return
(
isValid
)
?
true
:
Promise
.
reject
(
new
Error
(
'Invalid Login'
));
});
};
...
...
views/auth/login.pug
View file @
3d20fee5
...
...
@@ -32,10 +32,16 @@ html
#root
h1= appconfig.title
h2 Login required
if appflash.length > 0
h3
i.fa.fa-warning
= appflash[0].title
h4= appflash[0].message
if appconfig.auth.local.enabled
input#login-user(type='text', placeholder='Email address')
input#login-pass(type='password', placeholder='Password')
button Log In
form(method='post', action='/login')
input#login-user(type='text', name='email', placeholder='Email address')
input#login-pass(type='password', name='password', placeholder='Password')
button(type='submit') Log In
if appconfig.authStrategies.socialEnabled
#social
if appconfig.auth.local.enabled
...
...
@@ -58,5 +64,4 @@ html
= t('footer.poweredby') + ' '
a.icon(href='https://github.com/Requarks/wiki')
i.fa.fa-github
a(href='https://github.com/Requarks/wiki') Requarks Wiki
\ No newline at end of file
a(href='https://github.com/Requarks/wiki') Requarks Wiki
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment