├── .eslintrc.cjs
├── .github
└── workflows
│ └── deploy.yml
├── .gitignore
├── LICENSE
├── Licence.txt
├── README.md
├── index.html
├── package-lock.json
├── package.json
├── public
└── favicon.ico
├── src
├── App.jsx
├── assets
│ ├── css
│ │ ├── LineIcons.2.0.css
│ │ ├── animate.css
│ │ ├── bootstrap.min.css
│ │ └── main.css
│ ├── fonts
│ │ ├── LineIcons.eot
│ │ ├── LineIcons.svg
│ │ ├── LineIcons.ttf
│ │ ├── LineIcons.woff
│ │ └── LineIcons.woff2
│ └── images
│ │ └── Jonathan Dominion Template.gif
├── components
│ ├── 1. Header Components
│ │ ├── Hero
│ │ │ ├── Hero.css
│ │ │ └── Hero.jsx
│ │ ├── Navbar
│ │ │ ├── Navbar.css
│ │ │ └── Navbar.jsx
│ │ └── Typewriter
│ │ │ ├── Typewriter.css
│ │ │ └── Typewriter.jsx
│ ├── 2. Content Components
│ │ ├── Achievement
│ │ │ ├── Achievement.css
│ │ │ └── Achievement.jsx
│ │ ├── Projects
│ │ │ ├── Projects.css
│ │ │ └── Projects.jsx
│ │ └── Skillz
│ │ │ ├── Skillz.css
│ │ │ └── Skillz.jsx
│ ├── 3. Footer Components
│ │ ├── AboutMe
│ │ │ ├── AboutMe.css
│ │ │ └── AboutMe.jsx
│ │ └── ContactMe
│ │ │ ├── ContactMe.css
│ │ │ └── ContactMe.jsx
│ └── 4. Utility Components
│ │ ├── ScrollToTopButton
│ │ ├── ScrollToTopButton.css
│ │ └── ScrollToTopButton.jsx
│ │ └── Spinner
│ │ ├── Spinner.css
│ │ └── Spinner.jsx
├── main.jsx
└── your_info.jsx
└── vite.config.js
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | env: { browser: true, es2020: true },
3 | extends: [
4 | 'eslint:recommended',
5 | 'plugin:react/recommended',
6 | 'plugin:react/jsx-runtime',
7 | 'plugin:react-hooks/recommended',
8 | ],
9 | parserOptions: { ecmaVersion: 'latest', sourceType: 'module' },
10 | settings: { react: { version: '18.2' } },
11 | plugins: ['react-refresh'],
12 | rules: {
13 | 'react-refresh/only-export-components': 'warn',
14 | },
15 | }
16 |
--------------------------------------------------------------------------------
/.github/workflows/deploy.yml:
--------------------------------------------------------------------------------
1 | name: Deploy
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 |
8 | jobs:
9 | build:
10 | name: Build
11 | runs-on: ubuntu-latest
12 |
13 | steps:
14 | - name: Checkout repo
15 | uses: actions/checkout@v2
16 |
17 | - name: Setup Node
18 | uses: actions/setup-node@v1
19 | with:
20 | node-version: 16
21 |
22 | - name: Install dependencies
23 | uses: bahmutov/npm-install@v1
24 |
25 | - name: Build project
26 | run: npm run build
27 |
28 | - name: Upload production-ready build files
29 | uses: actions/upload-artifact@v2
30 | with:
31 | name: production-files
32 | path: ./dist
33 |
34 | deploy:
35 | name: Deploy
36 | needs: build
37 | runs-on: ubuntu-latest
38 | if: github.ref == 'refs/heads/main'
39 |
40 | steps:
41 | - name: Download artifact
42 | uses: actions/download-artifact@v2
43 | with:
44 | name: production-files
45 | path: ./dist
46 |
47 | - name: Deploy to GitHub Pages
48 | uses: peaceiris/actions-gh-pages@v3
49 | with:
50 | github_token: ${{ secrets.GITHUB_TOKEN }}
51 | publish_dir: ./dist
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Christoph Pfrommer
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Licence.txt:
--------------------------------------------------------------------------------
1 | Copyright 2023 Christoph Pfrommer // https://github.com/Pfrommer1982
2 |
3 | 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:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | 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.
8 |
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | *** Complete React Vite Portfolio Template ***
2 |
3 | Welcome to Complete Portfolio! This project provides a customizable template for creating amazing web applications.
4 |
5 | ## Features
6 |
7 | - Personalize your web application by providing your information from just one file: 'your_info.jsx' .
8 | - Color customization: Modify the :root colors in 'src/assets/css/main.css' to easily change the color scheme.
9 | - Integration with emailjs: The project utilizes emailjs for seamless email functionality. (contact form)
10 | - Open-source and free to use: Feel free to use this template for your personal or commercial projects.
11 | - If you use this template and created something awesome, let me know! *I love to see your creativity!*
12 |
13 | ## Installation
14 |
15 | 1. Clone the repository:
16 |
17 | ```shell
18 | git clone https://github.com/Pfrommer1982/Complete_Portfolio
19 |
20 | 2. Navigate to the project directory:
21 |
22 | ```shell
23 | cd Complete_Portfolio
24 |
25 | 3. Install dependencies:
26 |
27 | ```shell
28 | npm install
29 |
30 | ## Usage
31 |
32 | 1. Update your information:
33 |
34 | - Open 'src/your_info.jsx'.
35 | - Customize the variables and content to reflect your own information. (there are extra instructions in the file)
36 | - Save the file.
37 |
38 | 2. Customize colors:
39 |
40 | - Open 'src/assets/css/main.css'.
41 | - Modify the root colors according to your preference.
42 | - Save the file.
43 |
44 | 3. Start the development server:
45 | ```shell
46 | npm run dev
47 |
48 | 4. Access the application at http://localhost:3000.
49 |
50 | ## Contributing
51 | Contributions are welcome! If you have any ideas, suggestions, or bug reports, please open an issue or submit a pull request.
52 |
53 | ## License
54 | This project is licensed under the MIT License.
55 |
56 |
57 | ## Examples:
58 | ### Photographer Portfolio Example
59 | 
60 |
61 | ### Food / Health Blogger Example
62 | 
63 |
64 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Complete.Portfolio.Template",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "license": "MIT",
7 | "scripts": {
8 | "dev": "vite",
9 | "build": "vite build",
10 | "lint": "eslint src --ext js,jsx --report-unused-disable-directives --max-warnings 0",
11 | "preview": "vite preview",
12 | "homepage": "https://github.com/Pfrommer1982/Complete_React_Portfolio",
13 | "predeploy": "npm run build",
14 | "deploy": "gh-pages -d build"
15 | },
16 | "dependencies": {
17 | "emailjs-com": "^3.2.0",
18 | "react": "^18.2.0",
19 | "react-color": "^2.19.3",
20 | "react-countup": "^6.4.2",
21 | "react-dom": "^18.2.0",
22 | "react-intersection-observer": "^9.4.4",
23 | "react-slick": "^0.29.0",
24 | "react-thumbnail": "^1.0.0",
25 | "slick-carousel": "^1.8.1",
26 | "wow.js": "^1.2.2"
27 | },
28 | "devDependencies": {
29 | "@types/react": "^18.0.37",
30 | "@types/react-dom": "^18.0.11",
31 | "@vitejs/plugin-react": "^4.0.0",
32 | "eslint": "^8.38.0",
33 | "eslint-plugin-react": "^7.32.2",
34 | "eslint-plugin-react-hooks": "^4.6.0",
35 | "eslint-plugin-react-refresh": "^0.3.4",
36 | "gh-pages": "^5.0.0",
37 | "vite": "^4.3.9"
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Pfrommer1982/Complete_Portfolio/4454476e1cfe6438c6f48e7db883263310cac0f8/public/favicon.ico
--------------------------------------------------------------------------------
/src/App.jsx:
--------------------------------------------------------------------------------
1 | import React, { useState, useEffect } from 'react';
2 |
3 | // 1. Header Components
4 | import Hero from './components/1. Header Components/Hero/Hero';
5 |
6 | // 2. Content Components
7 | import Skillz from './components/2. Content Components/Skillz/Skillz';
8 | import Achievement from './components/2. Content Components/Achievement/Achievement';
9 | import Projects from './components/2. Content Components/Projects/Projects';
10 |
11 |
12 | // 3. Footer Component
13 | import AboutMe from './components/3. Footer Components/AboutMe/AboutMe';
14 |
15 | // 4. Utility Components
16 | import Spinner from './components/4. Utility Components/Spinner/Spinner';
17 | import { name } from './your_info';
18 | import ScrollToTopButton from './components/4. Utility Components/ScrollToTopButton/ScrollToTopButton';
19 |
20 |
21 | function App() {
22 | const [loading, setLoading] = useState(true);
23 |
24 |
25 | useEffect(() => {
26 | document.title = `${name.firstname} ${name.lastname}`;
27 | setTimeout(() => {
28 | setLoading(false);
29 | }, 800);
30 | }, []);
31 |
32 | return (
33 | <>
34 | {loading ? (
35 |
36 | ) : (
37 | <>
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 | >
46 | )}
47 | >
48 | );
49 | }
50 |
51 | export default App;
52 |
53 |
54 |
--------------------------------------------------------------------------------
/src/assets/css/LineIcons.2.0.css:
--------------------------------------------------------------------------------
1 | /*--------------------------------
2 |
3 | LineIcons Free Web Font
4 | Author: lineicons.com
5 |
6 | -------------------------------- */
7 | @font-face {
8 | font-family: 'LineIcons';
9 | src: url('../fonts/LineIcons.eot');
10 | src: url('../fonts/LineIcons.eot') format('embedded-opentype'), url('../fonts/LineIcons.woff2') format('woff2'), url('../fonts/LineIcons.woff') format('woff'), url('../fonts/LineIcons.ttf') format('truetype'), url('../fonts/LineIcons.svg') format('svg');
11 | font-weight: normal;
12 | font-style: normal;
13 | }
14 | /*------------------------
15 | base class definition
16 | -------------------------*/
17 | .lni {
18 | display: inline-block;
19 | font: normal normal normal 1em/1 'LineIcons';
20 | speak: none;
21 | text-transform: none;
22 | /* Better Font Rendering */
23 | -webkit-font-smoothing: antialiased;
24 | -moz-osx-font-smoothing: grayscale;
25 | }
26 | /*------------------------
27 | change icon size
28 | -------------------------*/
29 | /* relative units */
30 | .lni-sm {
31 | font-size: 0.8em;
32 | }
33 | .lni-lg {
34 | font-size: 1.2em;
35 | }
36 | /* absolute units */
37 | .lni-16 {
38 | font-size: 16px;
39 | }
40 | .lni-32 {
41 | font-size: 32px;
42 | }
43 | /*----------------------------------
44 | add a square/circle background
45 | -----------------------------------*/
46 | .lni-bg-square,
47 | .lni-bg-circle {
48 | padding: 0.35em;
49 | background-color: #eee;
50 | }
51 | .lni-bg-circle {
52 | border-radius: 50%;
53 | }
54 | /*------------------------------------
55 | use icons as list item markers
56 | -------------------------------------*/
57 | .lni-ul {
58 | padding-left: 0;
59 | list-style-type: none;
60 | }
61 | .lni-ul > li {
62 | display: flex;
63 | align-items: flex-start;
64 | line-height: 1.4;
65 | }
66 | .lni-ul > li > .lni {
67 | margin-right: 0.4em;
68 | line-height: inherit;
69 | }
70 | /*------------------------
71 | spinning icons
72 | -------------------------*/
73 | .lni-is-spinning {
74 | -webkit-animation: lni-spin 2s infinite linear;
75 | -moz-animation: lni-spin 2s infinite linear;
76 | animation: lni-spin 2s infinite linear;
77 | }
78 | @-webkit-keyframes lni-spin {
79 | 0% {
80 | -webkit-transform: rotate(0deg);
81 | }
82 | 100% {
83 | -webkit-transform: rotate(360deg);
84 | }
85 | }
86 | @-moz-keyframes lni-spin {
87 | 0% {
88 | -moz-transform: rotate(0deg);
89 | }
90 | 100% {
91 | -moz-transform: rotate(360deg);
92 | }
93 | }
94 | @keyframes lni-spin {
95 | 0% {
96 | -webkit-transform: rotate(0deg);
97 | -moz-transform: rotate(0deg);
98 | -ms-transform: rotate(0deg);
99 | -o-transform: rotate(0deg);
100 | transform: rotate(0deg);
101 | }
102 | 100% {
103 | -webkit-transform: rotate(360deg);
104 | -moz-transform: rotate(360deg);
105 | -ms-transform: rotate(360deg);
106 | -o-transform: rotate(360deg);
107 | transform: rotate(360deg);
108 | }
109 | }
110 | /*------------------------
111 | rotated/flipped icons
112 | -------------------------*/
113 | .lni-rotate-90 {
114 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
115 | -webkit-transform: rotate(90deg);
116 | -moz-transform: rotate(90deg);
117 | -ms-transform: rotate(90deg);
118 | -o-transform: rotate(90deg);
119 | transform: rotate(90deg);
120 | }
121 | .lni-rotate-180 {
122 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
123 | -webkit-transform: rotate(180deg);
124 | -moz-transform: rotate(180deg);
125 | -ms-transform: rotate(180deg);
126 | -o-transform: rotate(180deg);
127 | transform: rotate(180deg);
128 | }
129 | .lni-rotate-270 {
130 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
131 | -webkit-transform: rotate(270deg);
132 | -moz-transform: rotate(270deg);
133 | -ms-transform: rotate(270deg);
134 | -o-transform: rotate(270deg);
135 | transform: rotate(270deg);
136 | }
137 | .lni-flip-y {
138 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0);
139 | -webkit-transform: scale(-1, 1);
140 | -moz-transform: scale(-1, 1);
141 | -ms-transform: scale(-1, 1);
142 | -o-transform: scale(-1, 1);
143 | transform: scale(-1, 1);
144 | }
145 | .lni-flip-x {
146 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
147 | -webkit-transform: scale(1, -1);
148 | -moz-transform: scale(1, -1);
149 | -ms-transform: scale(1, -1);
150 | -o-transform: scale(1, -1);
151 | transform: scale(1, -1);
152 | }
153 | /*------------------------
154 | icons
155 | -------------------------*/
156 |
157 | .lni-500px::before {
158 | content: "\ea02";
159 | }
160 |
161 | .lni-add-files::before {
162 | content: "\ea03";
163 | }
164 |
165 | .lni-alarm-clock::before {
166 | content: "\ea04";
167 | }
168 |
169 | .lni-alarm::before {
170 | content: "\ea05";
171 | }
172 |
173 | .lni-airbnb::before {
174 | content: "\ea06";
175 | }
176 |
177 | .lni-adobe::before {
178 | content: "\ea07";
179 | }
180 |
181 | .lni-amazon-pay::before {
182 | content: "\ea08";
183 | }
184 |
185 | .lni-amazon::before {
186 | content: "\ea09";
187 | }
188 |
189 | .lni-amex::before {
190 | content: "\ea0a";
191 | }
192 |
193 | .lni-anchor::before {
194 | content: "\ea0b";
195 | }
196 |
197 | .lni-amazon-original::before {
198 | content: "\ea0c";
199 | }
200 |
201 | .lni-android-original::before {
202 | content: "\ea0d";
203 | }
204 |
205 | .lni-android::before {
206 | content: "\ea0e";
207 | }
208 |
209 | .lni-angellist::before {
210 | content: "\ea0f";
211 | }
212 |
213 | .lni-angle-double-down::before {
214 | content: "\ea10";
215 | }
216 |
217 | .lni-angle-double-left::before {
218 | content: "\ea11";
219 | }
220 |
221 | .lni-angle-double-right::before {
222 | content: "\ea12";
223 | }
224 |
225 | .lni-angle-double-up::before {
226 | content: "\ea13";
227 | }
228 |
229 | .lni-angular::before {
230 | content: "\ea14";
231 | }
232 |
233 | .lni-apartment::before {
234 | content: "\ea15";
235 | }
236 |
237 | .lni-app-store::before {
238 | content: "\ea16";
239 | }
240 |
241 | .lni-apple-pay::before {
242 | content: "\ea17";
243 | }
244 |
245 | .lni-apple::before {
246 | content: "\ea18";
247 | }
248 |
249 | .lni-archive::before {
250 | content: "\ea19";
251 | }
252 |
253 | .lni-arrow-down-circle::before {
254 | content: "\ea1a";
255 | }
256 |
257 | .lni-arrow-left-circle::before {
258 | content: "\ea1b";
259 | }
260 |
261 | .lni-arrow-left::before {
262 | content: "\ea1c";
263 | }
264 |
265 | .lni-arrow-right-circle::before {
266 | content: "\ea1d";
267 | }
268 |
269 | .lni-arrow-right::before {
270 | content: "\ea1e";
271 | }
272 |
273 | .lni-arrow-top-left::before {
274 | content: "\ea1f";
275 | }
276 |
277 | .lni-arrow-top-right::before {
278 | content: "\ea20";
279 | }
280 |
281 | .lni-arrow-up-circle::before {
282 | content: "\ea21";
283 | }
284 |
285 | .lni-arrow-up::before {
286 | content: "\ea22";
287 | }
288 |
289 | .lni-arrows-horizontal::before {
290 | content: "\ea23";
291 | }
292 |
293 | .lni-arrows-vertical::before {
294 | content: "\ea24";
295 | }
296 |
297 | .lni-atlassian::before {
298 | content: "\ea25";
299 | }
300 |
301 | .lni-aws::before {
302 | content: "\ea26";
303 | }
304 |
305 | .lni-arrow-down::before {
306 | content: "\ea27";
307 | }
308 |
309 | .lni-ambulance::before {
310 | content: "\ea28";
311 | }
312 |
313 | .lni-agenda::before {
314 | content: "\ea29";
315 | }
316 |
317 | .lni-backward::before {
318 | content: "\ea2a";
319 | }
320 |
321 | .lni-baloon::before {
322 | content: "\ea2b";
323 | }
324 |
325 | .lni-ban::before {
326 | content: "\ea2c";
327 | }
328 |
329 | .lni-bar-chart::before {
330 | content: "\ea2d";
331 | }
332 |
333 | .lni-behance-original::before {
334 | content: "\ea2e";
335 | }
336 |
337 | .lni-bitbucket::before {
338 | content: "\ea2f";
339 | }
340 |
341 | .lni-bitcoin::before {
342 | content: "\ea30";
343 | }
344 |
345 | .lni-blackboard::before {
346 | content: "\ea31";
347 | }
348 |
349 | .lni-blogger::before {
350 | content: "\ea32";
351 | }
352 |
353 | .lni-bluetooth::before {
354 | content: "\ea33";
355 | }
356 |
357 | .lni-bold::before {
358 | content: "\ea34";
359 | }
360 |
361 | .lni-bolt-alt::before {
362 | content: "\ea35";
363 | }
364 |
365 | .lni-bolt::before {
366 | content: "\ea36";
367 | }
368 |
369 | .lni-book::before {
370 | content: "\ea37";
371 | }
372 |
373 | .lni-bookmark-alt::before {
374 | content: "\ea38";
375 | }
376 |
377 | .lni-bookmark::before {
378 | content: "\ea39";
379 | }
380 |
381 | .lni-bootstrap::before {
382 | content: "\ea3a";
383 | }
384 |
385 | .lni-bricks::before {
386 | content: "\ea3b";
387 | }
388 |
389 | .lni-bridge::before {
390 | content: "\ea3c";
391 | }
392 |
393 | .lni-briefcase::before {
394 | content: "\ea3d";
395 | }
396 |
397 | .lni-brush-alt::before {
398 | content: "\ea3e";
399 | }
400 |
401 | .lni-brush::before {
402 | content: "\ea3f";
403 | }
404 |
405 | .lni-bubble::before {
406 | content: "\ea40";
407 | }
408 |
409 | .lni-bug::before {
410 | content: "\ea41";
411 | }
412 |
413 | .lni-bulb::before {
414 | content: "\ea42";
415 | }
416 |
417 | .lni-bullhorn::before {
418 | content: "\ea43";
419 | }
420 |
421 | .lni-burger::before {
422 | content: "\ea44";
423 | }
424 |
425 | .lni-bus::before {
426 | content: "\ea45";
427 | }
428 |
429 | .lni-cake::before {
430 | content: "\ea46";
431 | }
432 |
433 | .lni-calculator::before {
434 | content: "\ea47";
435 | }
436 |
437 | .lni-calendar::before {
438 | content: "\ea48";
439 | }
440 |
441 | .lni-camera::before {
442 | content: "\ea49";
443 | }
444 |
445 | .lni-candy-cane::before {
446 | content: "\ea4a";
447 | }
448 |
449 | .lni-candy::before {
450 | content: "\ea4b";
451 | }
452 |
453 | .lni-capsule::before {
454 | content: "\ea4c";
455 | }
456 |
457 | .lni-car-alt::before {
458 | content: "\ea4d";
459 | }
460 |
461 | .lni-car::before {
462 | content: "\ea4e";
463 | }
464 |
465 | .lni-caravan::before {
466 | content: "\ea4f";
467 | }
468 |
469 | .lni-cart-full::before {
470 | content: "\ea50";
471 | }
472 |
473 | .lni-cart::before {
474 | content: "\ea51";
475 | }
476 |
477 | .lni-certificate::before {
478 | content: "\ea52";
479 | }
480 |
481 | .lni-checkbox::before {
482 | content: "\ea53";
483 | }
484 |
485 | .lni-checkmark-circle::before {
486 | content: "\ea54";
487 | }
488 |
489 | .lni-checkmark::before {
490 | content: "\ea55";
491 | }
492 |
493 | .lni-chef-hat::before {
494 | content: "\ea56";
495 | }
496 |
497 | .lni-chevron-down-circle::before {
498 | content: "\ea57";
499 | }
500 |
501 | .lni-chevron-down::before {
502 | content: "\ea58";
503 | }
504 |
505 | .lni-chevron-left-circle::before {
506 | content: "\ea59";
507 | }
508 |
509 | .lni-chevron-left::before {
510 | content: "\ea5a";
511 | }
512 |
513 | .lni-chevron-right-circle::before {
514 | content: "\ea5b";
515 | }
516 |
517 | .lni-chevron-right::before {
518 | content: "\ea5c";
519 | }
520 |
521 | .lni-chevron-up-circle::before {
522 | content: "\ea5d";
523 | }
524 |
525 | .lni-chevron-up::before {
526 | content: "\ea5e";
527 | }
528 |
529 | .lni-chrome::before {
530 | content: "\ea5f";
531 | }
532 |
533 | .lni-circle-minus::before {
534 | content: "\ea60";
535 | }
536 |
537 | .lni-circle-plus::before {
538 | content: "\ea61";
539 | }
540 |
541 | .lni-clipboard::before {
542 | content: "\ea62";
543 | }
544 |
545 | .lni-close::before {
546 | content: "\ea63";
547 | }
548 |
549 | .lni-cloud-check::before {
550 | content: "\ea64";
551 | }
552 |
553 | .lni-cloud-download::before {
554 | content: "\ea65";
555 | }
556 |
557 | .lni-cloud-network::before {
558 | content: "\ea66";
559 | }
560 |
561 | .lni-cloud-sync::before {
562 | content: "\ea67";
563 | }
564 |
565 | .lni-cloud-upload::before {
566 | content: "\ea68";
567 | }
568 |
569 | .lni-cloud::before {
570 | content: "\ea69";
571 | }
572 |
573 | .lni-cloudy-sun::before {
574 | content: "\ea6a";
575 | }
576 |
577 | .lni-code-alt::before {
578 | content: "\ea6b";
579 | }
580 |
581 | .lni-code::before {
582 | content: "\ea6c";
583 | }
584 |
585 | .lni-codepen::before {
586 | content: "\ea6d";
587 | }
588 |
589 | .lni-coffee-cup::before {
590 | content: "\ea6e";
591 | }
592 |
593 | .lni-cog::before {
594 | content: "\ea6f";
595 | }
596 |
597 | .lni-cogs::before {
598 | content: "\ea70";
599 | }
600 |
601 | .lni-coin::before {
602 | content: "\ea71";
603 | }
604 |
605 | .lni-comments-alt::before {
606 | content: "\ea72";
607 | }
608 |
609 | .lni-comments-reply::before {
610 | content: "\ea73";
611 | }
612 |
613 | .lni-comments::before {
614 | content: "\ea74";
615 | }
616 |
617 | .lni-compass::before {
618 | content: "\ea75";
619 | }
620 |
621 | .lni-construction-hammer::before {
622 | content: "\ea76";
623 | }
624 |
625 | .lni-construction::before {
626 | content: "\ea77";
627 | }
628 |
629 | .lni-consulting::before {
630 | content: "\ea78";
631 | }
632 |
633 | .lni-control-panel::before {
634 | content: "\ea79";
635 | }
636 |
637 | .lni-cpanel::before {
638 | content: "\ea7a";
639 | }
640 |
641 | .lni-creative-commons::before {
642 | content: "\ea7b";
643 | }
644 |
645 | .lni-credit-cards::before {
646 | content: "\ea7c";
647 | }
648 |
649 | .lni-crop::before {
650 | content: "\ea7d";
651 | }
652 |
653 | .lni-cross-circle::before {
654 | content: "\ea7e";
655 | }
656 |
657 | .lni-crown::before {
658 | content: "\ea7f";
659 | }
660 |
661 | .lni-css3::before {
662 | content: "\ea80";
663 | }
664 |
665 | .lni-cup::before {
666 | content: "\ea81";
667 | }
668 |
669 | .lni-customer::before {
670 | content: "\ea82";
671 | }
672 |
673 | .lni-cut::before {
674 | content: "\ea83";
675 | }
676 |
677 | .lni-dashboard::before {
678 | content: "\ea84";
679 | }
680 |
681 | .lni-database::before {
682 | content: "\ea85";
683 | }
684 |
685 | .lni-delivery::before {
686 | content: "\ea86";
687 | }
688 |
689 | .lni-dev::before {
690 | content: "\ea87";
691 | }
692 |
693 | .lni-diamond-alt::before {
694 | content: "\ea88";
695 | }
696 |
697 | .lni-diamond::before {
698 | content: "\ea89";
699 | }
700 |
701 | .lni-diners-club::before {
702 | content: "\ea8a";
703 | }
704 |
705 | .lni-dinner::before {
706 | content: "\ea8b";
707 | }
708 |
709 | .lni-direction-alt::before {
710 | content: "\ea8c";
711 | }
712 |
713 | .lni-direction-ltr::before {
714 | content: "\ea8d";
715 | }
716 |
717 | .lni-direction-rtl::before {
718 | content: "\ea8e";
719 | }
720 |
721 | .lni-direction::before {
722 | content: "\ea8f";
723 | }
724 |
725 | .lni-discord::before {
726 | content: "\ea90";
727 | }
728 |
729 | .lni-discover::before {
730 | content: "\ea91";
731 | }
732 |
733 | .lni-display-alt::before {
734 | content: "\ea92";
735 | }
736 |
737 | .lni-display::before {
738 | content: "\ea93";
739 | }
740 |
741 | .lni-docker::before {
742 | content: "\ea94";
743 | }
744 |
745 | .lni-dollar::before {
746 | content: "\ea95";
747 | }
748 |
749 | .lni-domain::before {
750 | content: "\ea96";
751 | }
752 |
753 | .lni-download::before {
754 | content: "\ea97";
755 | }
756 |
757 | .lni-dribbble::before {
758 | content: "\ea98";
759 | }
760 |
761 | .lni-drop::before {
762 | content: "\ea99";
763 | }
764 |
765 | .lni-dropbox-original::before {
766 | content: "\ea9a";
767 | }
768 |
769 | .lni-dropbox::before {
770 | content: "\ea9b";
771 | }
772 |
773 | .lni-drupal-original::before {
774 | content: "\ea9c";
775 | }
776 |
777 | .lni-drupal::before {
778 | content: "\ea9d";
779 | }
780 |
781 | .lni-dumbbell::before {
782 | content: "\ea9e";
783 | }
784 |
785 | .lni-edge::before {
786 | content: "\ea9f";
787 | }
788 |
789 | .lni-emoji-cool::before {
790 | content: "\eaa0";
791 | }
792 |
793 | .lni-emoji-friendly::before {
794 | content: "\eaa1";
795 | }
796 |
797 | .lni-emoji-happy::before {
798 | content: "\eaa2";
799 | }
800 |
801 | .lni-emoji-sad::before {
802 | content: "\eaa3";
803 | }
804 |
805 | .lni-emoji-smile::before {
806 | content: "\eaa4";
807 | }
808 |
809 | .lni-emoji-speechless::before {
810 | content: "\eaa5";
811 | }
812 |
813 | .lni-emoji-suspect::before {
814 | content: "\eaa6";
815 | }
816 |
817 | .lni-emoji-tounge::before {
818 | content: "\eaa7";
819 | }
820 |
821 | .lni-empty-file::before {
822 | content: "\eaa8";
823 | }
824 |
825 | .lni-enter::before {
826 | content: "\eaa9";
827 | }
828 |
829 | .lni-envato::before {
830 | content: "\eaaa";
831 | }
832 |
833 | .lni-envelope::before {
834 | content: "\eaab";
835 | }
836 |
837 | .lni-eraser::before {
838 | content: "\eaac";
839 | }
840 |
841 | .lni-euro::before {
842 | content: "\eaad";
843 | }
844 |
845 | .lni-exit-down::before {
846 | content: "\eaae";
847 | }
848 |
849 | .lni-exit-up::before {
850 | content: "\eaaf";
851 | }
852 |
853 | .lni-exit::before {
854 | content: "\eab0";
855 | }
856 |
857 | .lni-eye::before {
858 | content: "\eab1";
859 | }
860 |
861 | .lni-facebook-filled::before {
862 | content: "\eab2";
863 | }
864 |
865 | .lni-facebook-messenger::before {
866 | content: "\eab3";
867 | }
868 |
869 | .lni-facebook-original::before {
870 | content: "\eab4";
871 | }
872 |
873 | .lni-facebook-oval::before {
874 | content: "\eab5";
875 | }
876 |
877 | .lni-facebook::before {
878 | content: "\eab6";
879 | }
880 |
881 | .lni-figma::before {
882 | content: "\eab7";
883 | }
884 |
885 | .lni-files::before {
886 | content: "\eab8";
887 | }
888 |
889 | .lni-firefox-original::before {
890 | content: "\eab9";
891 | }
892 |
893 | .lni-firefox::before {
894 | content: "\eaba";
895 | }
896 |
897 | .lni-fireworks::before {
898 | content: "\eabb";
899 | }
900 |
901 | .lni-first-aid::before {
902 | content: "\eabc";
903 | }
904 |
905 | .lni-flag-alt::before {
906 | content: "\eabd";
907 | }
908 |
909 | .lni-flag::before {
910 | content: "\eabe";
911 | }
912 |
913 | .lni-flags::before {
914 | content: "\eabf";
915 | }
916 |
917 | .lni-flickr::before {
918 | content: "\eac0";
919 | }
920 |
921 | .lni-basketball::before {
922 | content: "\eac1";
923 | }
924 |
925 | .lni-behance::before {
926 | content: "\eac2";
927 | }
928 |
929 | .lni-forward::before {
930 | content: "\eac3";
931 | }
932 |
933 | .lni-frame-expand::before {
934 | content: "\eac4";
935 | }
936 |
937 | .lni-flower::before {
938 | content: "\eac5";
939 | }
940 |
941 | .lni-full-screen::before {
942 | content: "\eac6";
943 | }
944 |
945 | .lni-funnel::before {
946 | content: "\eac7";
947 | }
948 |
949 | .lni-gallery::before {
950 | content: "\eac8";
951 | }
952 |
953 | .lni-game::before {
954 | content: "\eac9";
955 | }
956 |
957 | .lni-gift::before {
958 | content: "\eaca";
959 | }
960 |
961 | .lni-git::before {
962 | content: "\eacb";
963 | }
964 |
965 | .lni-github-original::before {
966 | content: "\eacc";
967 | }
968 |
969 | .lni-github::before {
970 | content: "\eacd";
971 | }
972 |
973 | .lni-goodreads::before {
974 | content: "\eace";
975 | }
976 |
977 | .lni-google-drive::before {
978 | content: "\eacf";
979 | }
980 |
981 | .lni-google-pay::before {
982 | content: "\ead0";
983 | }
984 |
985 | .lni-fresh-juice::before {
986 | content: "\ead1";
987 | }
988 |
989 | .lni-folder::before {
990 | content: "\ead2";
991 | }
992 |
993 | .lni-bi-cycle::before {
994 | content: "\ead3";
995 | }
996 |
997 | .lni-graph::before {
998 | content: "\ead4";
999 | }
1000 |
1001 | .lni-grid-alt::before {
1002 | content: "\ead5";
1003 | }
1004 |
1005 | .lni-grid::before {
1006 | content: "\ead6";
1007 | }
1008 |
1009 | .lni-google-wallet::before {
1010 | content: "\ead7";
1011 | }
1012 |
1013 | .lni-grow::before {
1014 | content: "\ead8";
1015 | }
1016 |
1017 | .lni-hammer::before {
1018 | content: "\ead9";
1019 | }
1020 |
1021 | .lni-hand::before {
1022 | content: "\eada";
1023 | }
1024 |
1025 | .lni-handshake::before {
1026 | content: "\eadb";
1027 | }
1028 |
1029 | .lni-harddrive::before {
1030 | content: "\eadc";
1031 | }
1032 |
1033 | .lni-headphone-alt::before {
1034 | content: "\eadd";
1035 | }
1036 |
1037 | .lni-headphone::before {
1038 | content: "\eade";
1039 | }
1040 |
1041 | .lni-heart-filled::before {
1042 | content: "\eadf";
1043 | }
1044 |
1045 | .lni-heart-monitor::before {
1046 | content: "\eae0";
1047 | }
1048 |
1049 | .lni-heart::before {
1050 | content: "\eae1";
1051 | }
1052 |
1053 | .lni-helicopter::before {
1054 | content: "\eae2";
1055 | }
1056 |
1057 | .lni-helmet::before {
1058 | content: "\eae3";
1059 | }
1060 |
1061 | .lni-help::before {
1062 | content: "\eae4";
1063 | }
1064 |
1065 | .lni-highlight-alt::before {
1066 | content: "\eae5";
1067 | }
1068 |
1069 | .lni-highlight::before {
1070 | content: "\eae6";
1071 | }
1072 |
1073 | .lni-home::before {
1074 | content: "\eae7";
1075 | }
1076 |
1077 | .lni-hospital::before {
1078 | content: "\eae8";
1079 | }
1080 |
1081 | .lni-hourglass::before {
1082 | content: "\eae9";
1083 | }
1084 |
1085 | .lni-html5::before {
1086 | content: "\eaea";
1087 | }
1088 |
1089 | .lni-image::before {
1090 | content: "\eaeb";
1091 | }
1092 |
1093 | .lni-inbox::before {
1094 | content: "\eaec";
1095 | }
1096 |
1097 | .lni-indent-decrease::before {
1098 | content: "\eaed";
1099 | }
1100 |
1101 | .lni-indent-increase::before {
1102 | content: "\eaee";
1103 | }
1104 |
1105 | .lni-infinite::before {
1106 | content: "\eaef";
1107 | }
1108 |
1109 | .lni-information::before {
1110 | content: "\eaf0";
1111 | }
1112 |
1113 | .lni-instagram-filled::before {
1114 | content: "\eaf1";
1115 | }
1116 |
1117 | .lni-instagram-original::before {
1118 | content: "\eaf2";
1119 | }
1120 |
1121 | .lni-instagram::before {
1122 | content: "\eaf3";
1123 | }
1124 |
1125 | .lni-invention::before {
1126 | content: "\eaf4";
1127 | }
1128 |
1129 | .lni-graduation::before {
1130 | content: "\eaf5";
1131 | }
1132 |
1133 | .lni-invest-monitor::before {
1134 | content: "\eaf6";
1135 | }
1136 |
1137 | .lni-island::before {
1138 | content: "\eaf7";
1139 | }
1140 |
1141 | .lni-italic::before {
1142 | content: "\eaf8";
1143 | }
1144 |
1145 | .lni-java::before {
1146 | content: "\eaf9";
1147 | }
1148 |
1149 | .lni-javascript::before {
1150 | content: "\eafa";
1151 | }
1152 |
1153 | .lni-jcb::before {
1154 | content: "\eafb";
1155 | }
1156 |
1157 | .lni-joomla-original::before {
1158 | content: "\eafc";
1159 | }
1160 |
1161 | .lni-joomla::before {
1162 | content: "\eafd";
1163 | }
1164 |
1165 | .lni-jsfiddle::before {
1166 | content: "\eafe";
1167 | }
1168 |
1169 | .lni-juice::before {
1170 | content: "\eaff";
1171 | }
1172 |
1173 | .lni-key::before {
1174 | content: "\eb00";
1175 | }
1176 |
1177 | .lni-keyboard::before {
1178 | content: "\eb01";
1179 | }
1180 |
1181 | .lni-keyword-research::before {
1182 | content: "\eb02";
1183 | }
1184 |
1185 | .lni-hacker-news::before {
1186 | content: "\eb03";
1187 | }
1188 |
1189 | .lni-google::before {
1190 | content: "\eb04";
1191 | }
1192 |
1193 | .lni-laravel::before {
1194 | content: "\eb05";
1195 | }
1196 |
1197 | .lni-layers::before {
1198 | content: "\eb06";
1199 | }
1200 |
1201 | .lni-layout::before {
1202 | content: "\eb07";
1203 | }
1204 |
1205 | .lni-leaf::before {
1206 | content: "\eb08";
1207 | }
1208 |
1209 | .lni-library::before {
1210 | content: "\eb09";
1211 | }
1212 |
1213 | .lni-licencse::before {
1214 | content: "\eb0a";
1215 | }
1216 |
1217 | .lni-life-ring::before {
1218 | content: "\eb0b";
1219 | }
1220 |
1221 | .lni-line-dashed::before {
1222 | content: "\eb0c";
1223 | }
1224 |
1225 | .lni-line-dotted::before {
1226 | content: "\eb0d";
1227 | }
1228 |
1229 | .lni-line-double::before {
1230 | content: "\eb0e";
1231 | }
1232 |
1233 | .lni-line-spacing::before {
1234 | content: "\eb0f";
1235 | }
1236 |
1237 | .lni-line::before {
1238 | content: "\eb10";
1239 | }
1240 |
1241 | .lni-lineicons-alt::before {
1242 | content: "\eb11";
1243 | }
1244 |
1245 | .lni-lineicons::before {
1246 | content: "\eb12";
1247 | }
1248 |
1249 | .lni-link::before {
1250 | content: "\eb13";
1251 | }
1252 |
1253 | .lni-linkedin-original::before {
1254 | content: "\eb14";
1255 | }
1256 |
1257 | .lni-linkedin::before {
1258 | content: "\eb15";
1259 | }
1260 |
1261 | .lni-list::before {
1262 | content: "\eb16";
1263 | }
1264 |
1265 | .lni-lock-alt::before {
1266 | content: "\eb17";
1267 | }
1268 |
1269 | .lni-lock::before {
1270 | content: "\eb18";
1271 | }
1272 |
1273 | .lni-magnet::before {
1274 | content: "\eb19";
1275 | }
1276 |
1277 | .lni-magnifier::before {
1278 | content: "\eb1a";
1279 | }
1280 |
1281 | .lni-mailchimp::before {
1282 | content: "\eb1b";
1283 | }
1284 |
1285 | .lni-map-marker::before {
1286 | content: "\eb1c";
1287 | }
1288 |
1289 | .lni-map::before {
1290 | content: "\eb1d";
1291 | }
1292 |
1293 | .lni-mashroom::before {
1294 | content: "\eb1e";
1295 | }
1296 |
1297 | .lni-mastercard::before {
1298 | content: "\eb1f";
1299 | }
1300 |
1301 | .lni-medall-alt::before {
1302 | content: "\eb20";
1303 | }
1304 |
1305 | .lni-medall::before {
1306 | content: "\eb21";
1307 | }
1308 |
1309 | .lni-medium::before {
1310 | content: "\eb22";
1311 | }
1312 |
1313 | .lni-laptop::before {
1314 | content: "\eb23";
1315 | }
1316 |
1317 | .lni-investment::before {
1318 | content: "\eb24";
1319 | }
1320 |
1321 | .lni-laptop-phone::before {
1322 | content: "\eb25";
1323 | }
1324 |
1325 | .lni-megento::before {
1326 | content: "\eb26";
1327 | }
1328 |
1329 | .lni-mic::before {
1330 | content: "\eb27";
1331 | }
1332 |
1333 | .lni-microphone::before {
1334 | content: "\eb28";
1335 | }
1336 |
1337 | .lni-menu::before {
1338 | content: "\eb29";
1339 | }
1340 |
1341 | .lni-microscope::before {
1342 | content: "\eb2a";
1343 | }
1344 |
1345 | .lni-money-location::before {
1346 | content: "\eb2b";
1347 | }
1348 |
1349 | .lni-minus::before {
1350 | content: "\eb2c";
1351 | }
1352 |
1353 | .lni-mobile::before {
1354 | content: "\eb2d";
1355 | }
1356 |
1357 | .lni-more-alt::before {
1358 | content: "\eb2e";
1359 | }
1360 |
1361 | .lni-mouse::before {
1362 | content: "\eb2f";
1363 | }
1364 |
1365 | .lni-move::before {
1366 | content: "\eb30";
1367 | }
1368 |
1369 | .lni-music::before {
1370 | content: "\eb31";
1371 | }
1372 |
1373 | .lni-network::before {
1374 | content: "\eb32";
1375 | }
1376 |
1377 | .lni-night::before {
1378 | content: "\eb33";
1379 | }
1380 |
1381 | .lni-nodejs-alt::before {
1382 | content: "\eb34";
1383 | }
1384 |
1385 | .lni-nodejs::before {
1386 | content: "\eb35";
1387 | }
1388 |
1389 | .lni-notepad::before {
1390 | content: "\eb36";
1391 | }
1392 |
1393 | .lni-npm::before {
1394 | content: "\eb37";
1395 | }
1396 |
1397 | .lni-offer::before {
1398 | content: "\eb38";
1399 | }
1400 |
1401 | .lni-opera::before {
1402 | content: "\eb39";
1403 | }
1404 |
1405 | .lni-package::before {
1406 | content: "\eb3a";
1407 | }
1408 |
1409 | .lni-page-break::before {
1410 | content: "\eb3b";
1411 | }
1412 |
1413 | .lni-pagination::before {
1414 | content: "\eb3c";
1415 | }
1416 |
1417 | .lni-paint-bucket::before {
1418 | content: "\eb3d";
1419 | }
1420 |
1421 | .lni-paint-roller::before {
1422 | content: "\eb3e";
1423 | }
1424 |
1425 | .lni-pallet::before {
1426 | content: "\eb3f";
1427 | }
1428 |
1429 | .lni-paperclip::before {
1430 | content: "\eb40";
1431 | }
1432 |
1433 | .lni-more::before {
1434 | content: "\eb41";
1435 | }
1436 |
1437 | .lni-pause::before {
1438 | content: "\eb42";
1439 | }
1440 |
1441 | .lni-paypal-original::before {
1442 | content: "\eb43";
1443 | }
1444 |
1445 | .lni-microsoft::before {
1446 | content: "\eb44";
1447 | }
1448 |
1449 | .lni-money-protection::before {
1450 | content: "\eb45";
1451 | }
1452 |
1453 | .lni-pencil::before {
1454 | content: "\eb46";
1455 | }
1456 |
1457 | .lni-paypal::before {
1458 | content: "\eb47";
1459 | }
1460 |
1461 | .lni-pencil-alt::before {
1462 | content: "\eb48";
1463 | }
1464 |
1465 | .lni-patreon::before {
1466 | content: "\eb49";
1467 | }
1468 |
1469 | .lni-phone-set::before {
1470 | content: "\eb4a";
1471 | }
1472 |
1473 | .lni-phone::before {
1474 | content: "\eb4b";
1475 | }
1476 |
1477 | .lni-pin::before {
1478 | content: "\eb4c";
1479 | }
1480 |
1481 | .lni-pinterest::before {
1482 | content: "\eb4d";
1483 | }
1484 |
1485 | .lni-pie-chart::before {
1486 | content: "\eb4e";
1487 | }
1488 |
1489 | .lni-pilcrow::before {
1490 | content: "\eb4f";
1491 | }
1492 |
1493 | .lni-plane::before {
1494 | content: "\eb50";
1495 | }
1496 |
1497 | .lni-play::before {
1498 | content: "\eb51";
1499 | }
1500 |
1501 | .lni-plug::before {
1502 | content: "\eb52";
1503 | }
1504 |
1505 | .lni-plus::before {
1506 | content: "\eb53";
1507 | }
1508 |
1509 | .lni-pointer-down::before {
1510 | content: "\eb54";
1511 | }
1512 |
1513 | .lni-pointer-left::before {
1514 | content: "\eb55";
1515 | }
1516 |
1517 | .lni-pointer-right::before {
1518 | content: "\eb56";
1519 | }
1520 |
1521 | .lni-pointer-up::before {
1522 | content: "\eb57";
1523 | }
1524 |
1525 | .lni-play-store::before {
1526 | content: "\eb58";
1527 | }
1528 |
1529 | .lni-pizza::before {
1530 | content: "\eb59";
1531 | }
1532 |
1533 | .lni-postcard::before {
1534 | content: "\eb5a";
1535 | }
1536 |
1537 | .lni-pound::before {
1538 | content: "\eb5b";
1539 | }
1540 |
1541 | .lni-power-switch::before {
1542 | content: "\eb5c";
1543 | }
1544 |
1545 | .lni-printer::before {
1546 | content: "\eb5d";
1547 | }
1548 |
1549 | .lni-producthunt::before {
1550 | content: "\eb5e";
1551 | }
1552 |
1553 | .lni-protection::before {
1554 | content: "\eb5f";
1555 | }
1556 |
1557 | .lni-pulse::before {
1558 | content: "\eb60";
1559 | }
1560 |
1561 | .lni-pyramids::before {
1562 | content: "\eb61";
1563 | }
1564 |
1565 | .lni-python::before {
1566 | content: "\eb62";
1567 | }
1568 |
1569 | .lni-pointer::before {
1570 | content: "\eb63";
1571 | }
1572 |
1573 | .lni-popup::before {
1574 | content: "\eb64";
1575 | }
1576 |
1577 | .lni-quotation::before {
1578 | content: "\eb65";
1579 | }
1580 |
1581 | .lni-radio-button::before {
1582 | content: "\eb66";
1583 | }
1584 |
1585 | .lni-rain::before {
1586 | content: "\eb67";
1587 | }
1588 |
1589 | .lni-quora::before {
1590 | content: "\eb68";
1591 | }
1592 |
1593 | .lni-react::before {
1594 | content: "\eb69";
1595 | }
1596 |
1597 | .lni-question-circle::before {
1598 | content: "\eb6a";
1599 | }
1600 |
1601 | .lni-php::before {
1602 | content: "\eb6b";
1603 | }
1604 |
1605 | .lni-reddit::before {
1606 | content: "\eb6c";
1607 | }
1608 |
1609 | .lni-reload::before {
1610 | content: "\eb6d";
1611 | }
1612 |
1613 | .lni-restaurant::before {
1614 | content: "\eb6e";
1615 | }
1616 |
1617 | .lni-road::before {
1618 | content: "\eb6f";
1619 | }
1620 |
1621 | .lni-rocket::before {
1622 | content: "\eb70";
1623 | }
1624 |
1625 | .lni-rss-feed::before {
1626 | content: "\eb71";
1627 | }
1628 |
1629 | .lni-ruler-alt::before {
1630 | content: "\eb72";
1631 | }
1632 |
1633 | .lni-ruler-pencil::before {
1634 | content: "\eb73";
1635 | }
1636 |
1637 | .lni-ruler::before {
1638 | content: "\eb74";
1639 | }
1640 |
1641 | .lni-rupee::before {
1642 | content: "\eb75";
1643 | }
1644 |
1645 | .lni-save::before {
1646 | content: "\eb76";
1647 | }
1648 |
1649 | .lni-school-bench-alt::before {
1650 | content: "\eb77";
1651 | }
1652 |
1653 | .lni-school-bench::before {
1654 | content: "\eb78";
1655 | }
1656 |
1657 | .lni-scooter::before {
1658 | content: "\eb79";
1659 | }
1660 |
1661 | .lni-scroll-down::before {
1662 | content: "\eb7a";
1663 | }
1664 |
1665 | .lni-search-alt::before {
1666 | content: "\eb7b";
1667 | }
1668 |
1669 | .lni-search::before {
1670 | content: "\eb7c";
1671 | }
1672 |
1673 | .lni-select::before {
1674 | content: "\eb7d";
1675 | }
1676 |
1677 | .lni-seo::before {
1678 | content: "\eb7e";
1679 | }
1680 |
1681 | .lni-service::before {
1682 | content: "\eb7f";
1683 | }
1684 |
1685 | .lni-share-alt::before {
1686 | content: "\eb80";
1687 | }
1688 |
1689 | .lni-share::before {
1690 | content: "\eb81";
1691 | }
1692 |
1693 | .lni-shield::before {
1694 | content: "\eb82";
1695 | }
1696 |
1697 | .lni-shift-left::before {
1698 | content: "\eb83";
1699 | }
1700 |
1701 | .lni-shift-right::before {
1702 | content: "\eb84";
1703 | }
1704 |
1705 | .lni-ship::before {
1706 | content: "\eb85";
1707 | }
1708 |
1709 | .lni-shopify::before {
1710 | content: "\eb86";
1711 | }
1712 |
1713 | .lni-shopping-basket::before {
1714 | content: "\eb87";
1715 | }
1716 |
1717 | .lni-shortcode::before {
1718 | content: "\eb88";
1719 | }
1720 |
1721 | .lni-shovel::before {
1722 | content: "\eb89";
1723 | }
1724 |
1725 | .lni-shuffle::before {
1726 | content: "\eb8a";
1727 | }
1728 |
1729 | .lni-signal::before {
1730 | content: "\eb8b";
1731 | }
1732 |
1733 | .lni-sketch::before {
1734 | content: "\eb8c";
1735 | }
1736 |
1737 | .lni-skipping-rope::before {
1738 | content: "\eb8d";
1739 | }
1740 |
1741 | .lni-skype::before {
1742 | content: "\eb8e";
1743 | }
1744 |
1745 | .lni-slack::before {
1746 | content: "\eb8f";
1747 | }
1748 |
1749 | .lni-slice::before {
1750 | content: "\eb90";
1751 | }
1752 |
1753 | .lni-slideshare::before {
1754 | content: "\eb91";
1755 | }
1756 |
1757 | .lni-slim::before {
1758 | content: "\eb92";
1759 | }
1760 |
1761 | .lni-reply::before {
1762 | content: "\eb93";
1763 | }
1764 |
1765 | .lni-sort-alpha-asc::before {
1766 | content: "\eb94";
1767 | }
1768 |
1769 | .lni-remove-file::before {
1770 | content: "\eb95";
1771 | }
1772 |
1773 | .lni-sort-amount-dsc::before {
1774 | content: "\eb96";
1775 | }
1776 |
1777 | .lni-sort-amount-asc::before {
1778 | content: "\eb97";
1779 | }
1780 |
1781 | .lni-soundcloud::before {
1782 | content: "\eb98";
1783 | }
1784 |
1785 | .lni-souncloud-original::before {
1786 | content: "\eb99";
1787 | }
1788 |
1789 | .lni-spiner-solid::before {
1790 | content: "\eb9a";
1791 | }
1792 |
1793 | .lni-revenue::before {
1794 | content: "\eb9b";
1795 | }
1796 |
1797 | .lni-spinner::before {
1798 | content: "\eb9c";
1799 | }
1800 |
1801 | .lni-spellcheck::before {
1802 | content: "\eb9d";
1803 | }
1804 |
1805 | .lni-spotify::before {
1806 | content: "\eb9e";
1807 | }
1808 |
1809 | .lni-spray::before {
1810 | content: "\eb9f";
1811 | }
1812 |
1813 | .lni-sprout::before {
1814 | content: "\eba0";
1815 | }
1816 |
1817 | .lni-snapchat::before {
1818 | content: "\eba1";
1819 | }
1820 |
1821 | .lni-stamp::before {
1822 | content: "\eba2";
1823 | }
1824 |
1825 | .lni-star-empty::before {
1826 | content: "\eba3";
1827 | }
1828 |
1829 | .lni-star-filled::before {
1830 | content: "\eba4";
1831 | }
1832 |
1833 | .lni-star-half::before {
1834 | content: "\eba5";
1835 | }
1836 |
1837 | .lni-star::before {
1838 | content: "\eba6";
1839 | }
1840 |
1841 | .lni-stats-down::before {
1842 | content: "\eba7";
1843 | }
1844 |
1845 | .lni-spinner-arrow::before {
1846 | content: "\eba8";
1847 | }
1848 |
1849 | .lni-steam::before {
1850 | content: "\eba9";
1851 | }
1852 |
1853 | .lni-stackoverflow::before {
1854 | content: "\ebaa";
1855 | }
1856 |
1857 | .lni-stop::before {
1858 | content: "\ebab";
1859 | }
1860 |
1861 | .lni-strikethrough::before {
1862 | content: "\ebac";
1863 | }
1864 |
1865 | .lni-sthethoscope::before {
1866 | content: "\ebad";
1867 | }
1868 |
1869 | .lni-stumbleupon::before {
1870 | content: "\ebae";
1871 | }
1872 |
1873 | .lni-sun::before {
1874 | content: "\ebaf";
1875 | }
1876 |
1877 | .lni-support::before {
1878 | content: "\ebb0";
1879 | }
1880 |
1881 | .lni-surf-board::before {
1882 | content: "\ebb1";
1883 | }
1884 |
1885 | .lni-swift::before {
1886 | content: "\ebb2";
1887 | }
1888 |
1889 | .lni-syringe::before {
1890 | content: "\ebb3";
1891 | }
1892 |
1893 | .lni-tab::before {
1894 | content: "\ebb4";
1895 | }
1896 |
1897 | .lni-tag::before {
1898 | content: "\ebb5";
1899 | }
1900 |
1901 | .lni-target-customer::before {
1902 | content: "\ebb6";
1903 | }
1904 |
1905 | .lni-target-revenue::before {
1906 | content: "\ebb7";
1907 | }
1908 |
1909 | .lni-target::before {
1910 | content: "\ebb8";
1911 | }
1912 |
1913 | .lni-taxi::before {
1914 | content: "\ebb9";
1915 | }
1916 |
1917 | .lni-stats-up::before {
1918 | content: "\ebba";
1919 | }
1920 |
1921 | .lni-telegram-original::before {
1922 | content: "\ebbb";
1923 | }
1924 |
1925 | .lni-telegram::before {
1926 | content: "\ebbc";
1927 | }
1928 |
1929 | .lni-text-align-center::before {
1930 | content: "\ebbd";
1931 | }
1932 |
1933 | .lni-text-align-justify::before {
1934 | content: "\ebbe";
1935 | }
1936 |
1937 | .lni-text-align-left::before {
1938 | content: "\ebbf";
1939 | }
1940 |
1941 | .lni-text-format-remove::before {
1942 | content: "\ebc0";
1943 | }
1944 |
1945 | .lni-text-align-right::before {
1946 | content: "\ebc1";
1947 | }
1948 |
1949 | .lni-text-format::before {
1950 | content: "\ebc2";
1951 | }
1952 |
1953 | .lni-thought::before {
1954 | content: "\ebc3";
1955 | }
1956 |
1957 | .lni-thumbs-down::before {
1958 | content: "\ebc4";
1959 | }
1960 |
1961 | .lni-thumbs-up::before {
1962 | content: "\ebc5";
1963 | }
1964 |
1965 | .lni-thunder-alt::before {
1966 | content: "\ebc6";
1967 | }
1968 |
1969 | .lni-thunder::before {
1970 | content: "\ebc7";
1971 | }
1972 |
1973 | .lni-ticket-alt::before {
1974 | content: "\ebc8";
1975 | }
1976 |
1977 | .lni-ticket::before {
1978 | content: "\ebc9";
1979 | }
1980 |
1981 | .lni-timer::before {
1982 | content: "\ebca";
1983 | }
1984 |
1985 | .lni-train-alt::before {
1986 | content: "\ebcb";
1987 | }
1988 |
1989 | .lni-train::before {
1990 | content: "\ebcc";
1991 | }
1992 |
1993 | .lni-trash::before {
1994 | content: "\ebcd";
1995 | }
1996 |
1997 | .lni-travel::before {
1998 | content: "\ebce";
1999 | }
2000 |
2001 | .lni-tree::before {
2002 | content: "\ebcf";
2003 | }
2004 |
2005 | .lni-trees::before {
2006 | content: "\ebd0";
2007 | }
2008 |
2009 | .lni-trello::before {
2010 | content: "\ebd1";
2011 | }
2012 |
2013 | .lni-trowel::before {
2014 | content: "\ebd2";
2015 | }
2016 |
2017 | .lni-tshirt::before {
2018 | content: "\ebd3";
2019 | }
2020 |
2021 | .lni-tumblr::before {
2022 | content: "\ebd4";
2023 | }
2024 |
2025 | .lni-twitch::before {
2026 | content: "\ebd5";
2027 | }
2028 |
2029 | .lni-twitter-filled::before {
2030 | content: "\ebd6";
2031 | }
2032 |
2033 | .lni-twitter-original::before {
2034 | content: "\ebd7";
2035 | }
2036 |
2037 | .lni-twitter::before {
2038 | content: "\ebd8";
2039 | }
2040 |
2041 | .lni-ubuntu::before {
2042 | content: "\ebd9";
2043 | }
2044 |
2045 | .lni-underline::before {
2046 | content: "\ebda";
2047 | }
2048 |
2049 | .lni-unlink::before {
2050 | content: "\ebdb";
2051 | }
2052 |
2053 | .lni-unlock::before {
2054 | content: "\ebdc";
2055 | }
2056 |
2057 | .lni-upload::before {
2058 | content: "\ebdd";
2059 | }
2060 |
2061 | .lni-user::before {
2062 | content: "\ebde";
2063 | }
2064 |
2065 | .lni-users::before {
2066 | content: "\ebdf";
2067 | }
2068 |
2069 | .lni-ux::before {
2070 | content: "\ebe0";
2071 | }
2072 |
2073 | .lni-vector::before {
2074 | content: "\ebe1";
2075 | }
2076 |
2077 | .lni-video::before {
2078 | content: "\ebe2";
2079 | }
2080 |
2081 | .lni-vimeo::before {
2082 | content: "\ebe3";
2083 | }
2084 |
2085 | .lni-visa::before {
2086 | content: "\ebe4";
2087 | }
2088 |
2089 | .lni-vk::before {
2090 | content: "\ebe5";
2091 | }
2092 |
2093 | .lni-volume-high::before {
2094 | content: "\ebe6";
2095 | }
2096 |
2097 | .lni-volume-low::before {
2098 | content: "\ebe7";
2099 | }
2100 |
2101 | .lni-volume-medium::before {
2102 | content: "\ebe8";
2103 | }
2104 |
2105 | .lni-volume-mute::before {
2106 | content: "\ebe9";
2107 | }
2108 |
2109 | .lni-volume::before {
2110 | content: "\ebea";
2111 | }
2112 |
2113 | .lni-wallet::before {
2114 | content: "\ebeb";
2115 | }
2116 |
2117 | .lni-warning::before {
2118 | content: "\ebec";
2119 | }
2120 |
2121 | .lni-website-alt::before {
2122 | content: "\ebed";
2123 | }
2124 |
2125 | .lni-website::before {
2126 | content: "\ebee";
2127 | }
2128 |
2129 | .lni-wechat::before {
2130 | content: "\ebef";
2131 | }
2132 |
2133 | .lni-weight::before {
2134 | content: "\ebf0";
2135 | }
2136 |
2137 | .lni-whatsapp::before {
2138 | content: "\ebf1";
2139 | }
2140 |
2141 | .lni-wheelbarrow::before {
2142 | content: "\ebf2";
2143 | }
2144 |
2145 | .lni-wheelchair::before {
2146 | content: "\ebf3";
2147 | }
2148 |
2149 | .lni-windows::before {
2150 | content: "\ebf4";
2151 | }
2152 |
2153 | .lni-wordpress-filled::before {
2154 | content: "\ebf5";
2155 | }
2156 |
2157 | .lni-wordpress::before {
2158 | content: "\ebf6";
2159 | }
2160 |
2161 | .lni-world-alt::before {
2162 | content: "\ebf7";
2163 | }
2164 |
2165 | .lni-world::before {
2166 | content: "\ebf8";
2167 | }
2168 |
2169 | .lni-write::before {
2170 | content: "\ebf9";
2171 | }
2172 |
2173 | .lni-yahoo::before {
2174 | content: "\ebfa";
2175 | }
2176 |
2177 | .lni-ycombinator::before {
2178 | content: "\ebfb";
2179 | }
2180 |
2181 | .lni-yen::before {
2182 | content: "\ebfc";
2183 | }
2184 |
2185 | .lni-youtube::before {
2186 | content: "\ebfd";
2187 | }
2188 |
2189 | .lni-zip::before {
2190 | content: "\ebfe";
2191 | }
2192 |
2193 | .lni-zoom-in::before {
2194 | content: "\ebff";
2195 | }
2196 |
2197 | .lni-zoom-out::before {
2198 | content: "\ec00";
2199 | }
2200 |
2201 | .lni-teabag::before {
2202 | content: "\ec01";
2203 | }
2204 |
2205 | .lni-stripe::before {
2206 | content: "\ec02";
2207 | }
2208 |
2209 | .lni-spotify-original::before {
2210 | content: "\ec03";
2211 | }
2212 |
2213 |
--------------------------------------------------------------------------------
/src/assets/css/animate.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 |
3 | .animated {
4 | -webkit-animation-duration: 1s;
5 | animation-duration: 1s;
6 | -webkit-animation-fill-mode: both;
7 | animation-fill-mode: both;
8 | }
9 |
10 | .animated.hinge {
11 | -webkit-animation-duration: 2s;
12 | animation-duration: 2s;
13 | }
14 |
15 | @-webkit-keyframes bounce {
16 | 0%, 20%, 50%, 80%, 100% {
17 | -webkit-transform: translateY(0);
18 | transform: translateY(0);
19 | }
20 |
21 | 40% {
22 | -webkit-transform: translateY(-30px);
23 | transform: translateY(-30px);
24 | }
25 |
26 | 60% {
27 | -webkit-transform: translateY(-15px);
28 | transform: translateY(-15px);
29 | }
30 | }
31 |
32 | @keyframes bounce {
33 | 0%, 20%, 50%, 80%, 100% {
34 | -webkit-transform: translateY(0);
35 | -ms-transform: translateY(0);
36 | transform: translateY(0);
37 | }
38 |
39 | 40% {
40 | -webkit-transform: translateY(-30px);
41 | -ms-transform: translateY(-30px);
42 | transform: translateY(-30px);
43 | }
44 |
45 | 60% {
46 | -webkit-transform: translateY(-15px);
47 | -ms-transform: translateY(-15px);
48 | transform: translateY(-15px);
49 | }
50 | }
51 |
52 | .bounce {
53 | -webkit-animation-name: bounce;
54 | animation-name: bounce;
55 | }
56 |
57 | @-webkit-keyframes flash {
58 | 0%, 50%, 100% {
59 | opacity: 1;
60 | }
61 |
62 | 25%, 75% {
63 | opacity: 0;
64 | }
65 | }
66 |
67 | @keyframes flash {
68 | 0%, 50%, 100% {
69 | opacity: 1;
70 | }
71 |
72 | 25%, 75% {
73 | opacity: 0;
74 | }
75 | }
76 |
77 | .flash {
78 | -webkit-animation-name: flash;
79 | animation-name: flash;
80 | }
81 |
82 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
83 |
84 | @-webkit-keyframes pulse {
85 | 0% {
86 | -webkit-transform: scale(1);
87 | transform: scale(1);
88 | }
89 |
90 | 50% {
91 | -webkit-transform: scale(1.1);
92 | transform: scale(1.1);
93 | }
94 |
95 | 100% {
96 | -webkit-transform: scale(1);
97 | transform: scale(1);
98 | }
99 | }
100 |
101 | @keyframes pulse {
102 | 0% {
103 | -webkit-transform: scale(1);
104 | -ms-transform: scale(1);
105 | transform: scale(1);
106 | }
107 |
108 | 50% {
109 | -webkit-transform: scale(1.1);
110 | -ms-transform: scale(1.1);
111 | transform: scale(1.1);
112 | }
113 |
114 | 100% {
115 | -webkit-transform: scale(1);
116 | -ms-transform: scale(1);
117 | transform: scale(1);
118 | }
119 | }
120 |
121 | .pulse {
122 | -webkit-animation-name: pulse;
123 | animation-name: pulse;
124 | }
125 |
126 | @-webkit-keyframes shake {
127 | 0%, 100% {
128 | -webkit-transform: translateX(0);
129 | transform: translateX(0);
130 | }
131 |
132 | 10%, 30%, 50%, 70%, 90% {
133 | -webkit-transform: translateX(-10px);
134 | transform: translateX(-10px);
135 | }
136 |
137 | 20%, 40%, 60%, 80% {
138 | -webkit-transform: translateX(10px);
139 | transform: translateX(10px);
140 | }
141 | }
142 |
143 | @keyframes shake {
144 | 0%, 100% {
145 | -webkit-transform: translateX(0);
146 | -ms-transform: translateX(0);
147 | transform: translateX(0);
148 | }
149 |
150 | 10%, 30%, 50%, 70%, 90% {
151 | -webkit-transform: translateX(-10px);
152 | -ms-transform: translateX(-10px);
153 | transform: translateX(-10px);
154 | }
155 |
156 | 20%, 40%, 60%, 80% {
157 | -webkit-transform: translateX(10px);
158 | -ms-transform: translateX(10px);
159 | transform: translateX(10px);
160 | }
161 | }
162 |
163 | .shake {
164 | -webkit-animation-name: shake;
165 | animation-name: shake;
166 | }
167 |
168 | @-webkit-keyframes swing {
169 | 20% {
170 | -webkit-transform: rotate(15deg);
171 | transform: rotate(15deg);
172 | }
173 |
174 | 40% {
175 | -webkit-transform: rotate(-10deg);
176 | transform: rotate(-10deg);
177 | }
178 |
179 | 60% {
180 | -webkit-transform: rotate(5deg);
181 | transform: rotate(5deg);
182 | }
183 |
184 | 80% {
185 | -webkit-transform: rotate(-5deg);
186 | transform: rotate(-5deg);
187 | }
188 |
189 | 100% {
190 | -webkit-transform: rotate(0deg);
191 | transform: rotate(0deg);
192 | }
193 | }
194 |
195 | @keyframes swing {
196 | 20% {
197 | -webkit-transform: rotate(15deg);
198 | -ms-transform: rotate(15deg);
199 | transform: rotate(15deg);
200 | }
201 |
202 | 40% {
203 | -webkit-transform: rotate(-10deg);
204 | -ms-transform: rotate(-10deg);
205 | transform: rotate(-10deg);
206 | }
207 |
208 | 60% {
209 | -webkit-transform: rotate(5deg);
210 | -ms-transform: rotate(5deg);
211 | transform: rotate(5deg);
212 | }
213 |
214 | 80% {
215 | -webkit-transform: rotate(-5deg);
216 | -ms-transform: rotate(-5deg);
217 | transform: rotate(-5deg);
218 | }
219 |
220 | 100% {
221 | -webkit-transform: rotate(0deg);
222 | -ms-transform: rotate(0deg);
223 | transform: rotate(0deg);
224 | }
225 | }
226 |
227 | .swing {
228 | -webkit-transform-origin: top center;
229 | -ms-transform-origin: top center;
230 | transform-origin: top center;
231 | -webkit-animation-name: swing;
232 | animation-name: swing;
233 | }
234 |
235 | @-webkit-keyframes tada {
236 | 0% {
237 | -webkit-transform: scale(1);
238 | transform: scale(1);
239 | }
240 |
241 | 10%, 20% {
242 | -webkit-transform: scale(0.9) rotate(-3deg);
243 | transform: scale(0.9) rotate(-3deg);
244 | }
245 |
246 | 30%, 50%, 70%, 90% {
247 | -webkit-transform: scale(1.1) rotate(3deg);
248 | transform: scale(1.1) rotate(3deg);
249 | }
250 |
251 | 40%, 60%, 80% {
252 | -webkit-transform: scale(1.1) rotate(-3deg);
253 | transform: scale(1.1) rotate(-3deg);
254 | }
255 |
256 | 100% {
257 | -webkit-transform: scale(1) rotate(0);
258 | transform: scale(1) rotate(0);
259 | }
260 | }
261 |
262 | @keyframes tada {
263 | 0% {
264 | -webkit-transform: scale(1);
265 | -ms-transform: scale(1);
266 | transform: scale(1);
267 | }
268 |
269 | 10%, 20% {
270 | -webkit-transform: scale(0.9) rotate(-3deg);
271 | -ms-transform: scale(0.9) rotate(-3deg);
272 | transform: scale(0.9) rotate(-3deg);
273 | }
274 |
275 | 30%, 50%, 70%, 90% {
276 | -webkit-transform: scale(1.1) rotate(3deg);
277 | -ms-transform: scale(1.1) rotate(3deg);
278 | transform: scale(1.1) rotate(3deg);
279 | }
280 |
281 | 40%, 60%, 80% {
282 | -webkit-transform: scale(1.1) rotate(-3deg);
283 | -ms-transform: scale(1.1) rotate(-3deg);
284 | transform: scale(1.1) rotate(-3deg);
285 | }
286 |
287 | 100% {
288 | -webkit-transform: scale(1) rotate(0);
289 | -ms-transform: scale(1) rotate(0);
290 | transform: scale(1) rotate(0);
291 | }
292 | }
293 |
294 | .tada {
295 | -webkit-animation-name: tada;
296 | animation-name: tada;
297 | }
298 |
299 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
300 |
301 | @-webkit-keyframes wobble {
302 | 0% {
303 | -webkit-transform: translateX(0%);
304 | transform: translateX(0%);
305 | }
306 |
307 | 15% {
308 | -webkit-transform: translateX(-25%) rotate(-5deg);
309 | transform: translateX(-25%) rotate(-5deg);
310 | }
311 |
312 | 30% {
313 | -webkit-transform: translateX(20%) rotate(3deg);
314 | transform: translateX(20%) rotate(3deg);
315 | }
316 |
317 | 45% {
318 | -webkit-transform: translateX(-15%) rotate(-3deg);
319 | transform: translateX(-15%) rotate(-3deg);
320 | }
321 |
322 | 60% {
323 | -webkit-transform: translateX(10%) rotate(2deg);
324 | transform: translateX(10%) rotate(2deg);
325 | }
326 |
327 | 75% {
328 | -webkit-transform: translateX(-5%) rotate(-1deg);
329 | transform: translateX(-5%) rotate(-1deg);
330 | }
331 |
332 | 100% {
333 | -webkit-transform: translateX(0%);
334 | transform: translateX(0%);
335 | }
336 | }
337 |
338 | @keyframes wobble {
339 | 0% {
340 | -webkit-transform: translateX(0%);
341 | -ms-transform: translateX(0%);
342 | transform: translateX(0%);
343 | }
344 |
345 | 15% {
346 | -webkit-transform: translateX(-25%) rotate(-5deg);
347 | -ms-transform: translateX(-25%) rotate(-5deg);
348 | transform: translateX(-25%) rotate(-5deg);
349 | }
350 |
351 | 30% {
352 | -webkit-transform: translateX(20%) rotate(3deg);
353 | -ms-transform: translateX(20%) rotate(3deg);
354 | transform: translateX(20%) rotate(3deg);
355 | }
356 |
357 | 45% {
358 | -webkit-transform: translateX(-15%) rotate(-3deg);
359 | -ms-transform: translateX(-15%) rotate(-3deg);
360 | transform: translateX(-15%) rotate(-3deg);
361 | }
362 |
363 | 60% {
364 | -webkit-transform: translateX(10%) rotate(2deg);
365 | -ms-transform: translateX(10%) rotate(2deg);
366 | transform: translateX(10%) rotate(2deg);
367 | }
368 |
369 | 75% {
370 | -webkit-transform: translateX(-5%) rotate(-1deg);
371 | -ms-transform: translateX(-5%) rotate(-1deg);
372 | transform: translateX(-5%) rotate(-1deg);
373 | }
374 |
375 | 100% {
376 | -webkit-transform: translateX(0%);
377 | -ms-transform: translateX(0%);
378 | transform: translateX(0%);
379 | }
380 | }
381 |
382 | .wobble {
383 | -webkit-animation-name: wobble;
384 | animation-name: wobble;
385 | }
386 |
387 | @-webkit-keyframes bounceIn {
388 | 0% {
389 | opacity: 0;
390 | -webkit-transform: scale(.3);
391 | transform: scale(.3);
392 | }
393 |
394 | 50% {
395 | opacity: 1;
396 | -webkit-transform: scale(1.05);
397 | transform: scale(1.05);
398 | }
399 |
400 | 70% {
401 | -webkit-transform: scale(.9);
402 | transform: scale(.9);
403 | }
404 |
405 | 100% {
406 | -webkit-transform: scale(1);
407 | transform: scale(1);
408 | }
409 | }
410 |
411 | @keyframes bounceIn {
412 | 0% {
413 | opacity: 0;
414 | -webkit-transform: scale(.3);
415 | -ms-transform: scale(.3);
416 | transform: scale(.3);
417 | }
418 |
419 | 50% {
420 | opacity: 1;
421 | -webkit-transform: scale(1.05);
422 | -ms-transform: scale(1.05);
423 | transform: scale(1.05);
424 | }
425 |
426 | 70% {
427 | -webkit-transform: scale(.9);
428 | -ms-transform: scale(.9);
429 | transform: scale(.9);
430 | }
431 |
432 | 100% {
433 | -webkit-transform: scale(1);
434 | -ms-transform: scale(1);
435 | transform: scale(1);
436 | }
437 | }
438 |
439 | .bounceIn {
440 | -webkit-animation-name: bounceIn;
441 | animation-name: bounceIn;
442 | }
443 |
444 | @-webkit-keyframes bounceInDown {
445 | 0% {
446 | opacity: 0;
447 | -webkit-transform: translateY(-2000px);
448 | transform: translateY(-2000px);
449 | }
450 |
451 | 60% {
452 | opacity: 1;
453 | -webkit-transform: translateY(30px);
454 | transform: translateY(30px);
455 | }
456 |
457 | 80% {
458 | -webkit-transform: translateY(-10px);
459 | transform: translateY(-10px);
460 | }
461 |
462 | 100% {
463 | -webkit-transform: translateY(0);
464 | transform: translateY(0);
465 | }
466 | }
467 |
468 | @keyframes bounceInDown {
469 | 0% {
470 | opacity: 0;
471 | -webkit-transform: translateY(-2000px);
472 | -ms-transform: translateY(-2000px);
473 | transform: translateY(-2000px);
474 | }
475 |
476 | 60% {
477 | opacity: 1;
478 | -webkit-transform: translateY(30px);
479 | -ms-transform: translateY(30px);
480 | transform: translateY(30px);
481 | }
482 |
483 | 80% {
484 | -webkit-transform: translateY(-10px);
485 | -ms-transform: translateY(-10px);
486 | transform: translateY(-10px);
487 | }
488 |
489 | 100% {
490 | -webkit-transform: translateY(0);
491 | -ms-transform: translateY(0);
492 | transform: translateY(0);
493 | }
494 | }
495 |
496 | .bounceInDown {
497 | -webkit-animation-name: bounceInDown;
498 | animation-name: bounceInDown;
499 | }
500 |
501 | @-webkit-keyframes bounceInLeft {
502 | 0% {
503 | opacity: 0;
504 | -webkit-transform: translateX(-2000px);
505 | transform: translateX(-2000px);
506 | }
507 |
508 | 60% {
509 | opacity: 1;
510 | -webkit-transform: translateX(30px);
511 | transform: translateX(30px);
512 | }
513 |
514 | 80% {
515 | -webkit-transform: translateX(-10px);
516 | transform: translateX(-10px);
517 | }
518 |
519 | 100% {
520 | -webkit-transform: translateX(0);
521 | transform: translateX(0);
522 | }
523 | }
524 |
525 | @keyframes bounceInLeft {
526 | 0% {
527 | opacity: 0;
528 | -webkit-transform: translateX(-2000px);
529 | -ms-transform: translateX(-2000px);
530 | transform: translateX(-2000px);
531 | }
532 |
533 | 60% {
534 | opacity: 1;
535 | -webkit-transform: translateX(30px);
536 | -ms-transform: translateX(30px);
537 | transform: translateX(30px);
538 | }
539 |
540 | 80% {
541 | -webkit-transform: translateX(-10px);
542 | -ms-transform: translateX(-10px);
543 | transform: translateX(-10px);
544 | }
545 |
546 | 100% {
547 | -webkit-transform: translateX(0);
548 | -ms-transform: translateX(0);
549 | transform: translateX(0);
550 | }
551 | }
552 |
553 | .bounceInLeft {
554 | -webkit-animation-name: bounceInLeft;
555 | animation-name: bounceInLeft;
556 | }
557 |
558 | @-webkit-keyframes bounceInRight {
559 | 0% {
560 | opacity: 0;
561 | -webkit-transform: translateX(2000px);
562 | transform: translateX(2000px);
563 | }
564 |
565 | 60% {
566 | opacity: 1;
567 | -webkit-transform: translateX(-30px);
568 | transform: translateX(-30px);
569 | }
570 |
571 | 80% {
572 | -webkit-transform: translateX(10px);
573 | transform: translateX(10px);
574 | }
575 |
576 | 100% {
577 | -webkit-transform: translateX(0);
578 | transform: translateX(0);
579 | }
580 | }
581 |
582 | @keyframes bounceInRight {
583 | 0% {
584 | opacity: 0;
585 | -webkit-transform: translateX(2000px);
586 | -ms-transform: translateX(2000px);
587 | transform: translateX(2000px);
588 | }
589 |
590 | 60% {
591 | opacity: 1;
592 | -webkit-transform: translateX(-30px);
593 | -ms-transform: translateX(-30px);
594 | transform: translateX(-30px);
595 | }
596 |
597 | 80% {
598 | -webkit-transform: translateX(10px);
599 | -ms-transform: translateX(10px);
600 | transform: translateX(10px);
601 | }
602 |
603 | 100% {
604 | -webkit-transform: translateX(0);
605 | -ms-transform: translateX(0);
606 | transform: translateX(0);
607 | }
608 | }
609 |
610 | .bounceInRight {
611 | -webkit-animation-name: bounceInRight;
612 | animation-name: bounceInRight;
613 | }
614 |
615 | @-webkit-keyframes bounceInUp {
616 | 0% {
617 | opacity: 0;
618 | -webkit-transform: translateY(2000px);
619 | transform: translateY(2000px);
620 | }
621 |
622 | 60% {
623 | opacity: 1;
624 | -webkit-transform: translateY(-30px);
625 | transform: translateY(-30px);
626 | }
627 |
628 | 80% {
629 | -webkit-transform: translateY(10px);
630 | transform: translateY(10px);
631 | }
632 |
633 | 100% {
634 | -webkit-transform: translateY(0);
635 | transform: translateY(0);
636 | }
637 | }
638 |
639 | @keyframes bounceInUp {
640 | 0% {
641 | opacity: 0;
642 | -webkit-transform: translateY(2000px);
643 | -ms-transform: translateY(2000px);
644 | transform: translateY(2000px);
645 | }
646 |
647 | 60% {
648 | opacity: 1;
649 | -webkit-transform: translateY(-30px);
650 | -ms-transform: translateY(-30px);
651 | transform: translateY(-30px);
652 | }
653 |
654 | 80% {
655 | -webkit-transform: translateY(10px);
656 | -ms-transform: translateY(10px);
657 | transform: translateY(10px);
658 | }
659 |
660 | 100% {
661 | -webkit-transform: translateY(0);
662 | -ms-transform: translateY(0);
663 | transform: translateY(0);
664 | }
665 | }
666 |
667 | .bounceInUp {
668 | -webkit-animation-name: bounceInUp;
669 | animation-name: bounceInUp;
670 | }
671 |
672 | @-webkit-keyframes bounceOut {
673 | 0% {
674 | -webkit-transform: scale(1);
675 | transform: scale(1);
676 | }
677 |
678 | 25% {
679 | -webkit-transform: scale(.95);
680 | transform: scale(.95);
681 | }
682 |
683 | 50% {
684 | opacity: 1;
685 | -webkit-transform: scale(1.1);
686 | transform: scale(1.1);
687 | }
688 |
689 | 100% {
690 | opacity: 0;
691 | -webkit-transform: scale(.3);
692 | transform: scale(.3);
693 | }
694 | }
695 |
696 | @keyframes bounceOut {
697 | 0% {
698 | -webkit-transform: scale(1);
699 | -ms-transform: scale(1);
700 | transform: scale(1);
701 | }
702 |
703 | 25% {
704 | -webkit-transform: scale(.95);
705 | -ms-transform: scale(.95);
706 | transform: scale(.95);
707 | }
708 |
709 | 50% {
710 | opacity: 1;
711 | -webkit-transform: scale(1.1);
712 | -ms-transform: scale(1.1);
713 | transform: scale(1.1);
714 | }
715 |
716 | 100% {
717 | opacity: 0;
718 | -webkit-transform: scale(.3);
719 | -ms-transform: scale(.3);
720 | transform: scale(.3);
721 | }
722 | }
723 |
724 | .bounceOut {
725 | -webkit-animation-name: bounceOut;
726 | animation-name: bounceOut;
727 | }
728 |
729 | @-webkit-keyframes bounceOutDown {
730 | 0% {
731 | -webkit-transform: translateY(0);
732 | transform: translateY(0);
733 | }
734 |
735 | 20% {
736 | opacity: 1;
737 | -webkit-transform: translateY(-20px);
738 | transform: translateY(-20px);
739 | }
740 |
741 | 100% {
742 | opacity: 0;
743 | -webkit-transform: translateY(2000px);
744 | transform: translateY(2000px);
745 | }
746 | }
747 |
748 | @keyframes bounceOutDown {
749 | 0% {
750 | -webkit-transform: translateY(0);
751 | -ms-transform: translateY(0);
752 | transform: translateY(0);
753 | }
754 |
755 | 20% {
756 | opacity: 1;
757 | -webkit-transform: translateY(-20px);
758 | -ms-transform: translateY(-20px);
759 | transform: translateY(-20px);
760 | }
761 |
762 | 100% {
763 | opacity: 0;
764 | -webkit-transform: translateY(2000px);
765 | -ms-transform: translateY(2000px);
766 | transform: translateY(2000px);
767 | }
768 | }
769 |
770 | .bounceOutDown {
771 | -webkit-animation-name: bounceOutDown;
772 | animation-name: bounceOutDown;
773 | }
774 |
775 | @-webkit-keyframes bounceOutLeft {
776 | 0% {
777 | -webkit-transform: translateX(0);
778 | transform: translateX(0);
779 | }
780 |
781 | 20% {
782 | opacity: 1;
783 | -webkit-transform: translateX(20px);
784 | transform: translateX(20px);
785 | }
786 |
787 | 100% {
788 | opacity: 0;
789 | -webkit-transform: translateX(-2000px);
790 | transform: translateX(-2000px);
791 | }
792 | }
793 |
794 | @keyframes bounceOutLeft {
795 | 0% {
796 | -webkit-transform: translateX(0);
797 | -ms-transform: translateX(0);
798 | transform: translateX(0);
799 | }
800 |
801 | 20% {
802 | opacity: 1;
803 | -webkit-transform: translateX(20px);
804 | -ms-transform: translateX(20px);
805 | transform: translateX(20px);
806 | }
807 |
808 | 100% {
809 | opacity: 0;
810 | -webkit-transform: translateX(-2000px);
811 | -ms-transform: translateX(-2000px);
812 | transform: translateX(-2000px);
813 | }
814 | }
815 |
816 | .bounceOutLeft {
817 | -webkit-animation-name: bounceOutLeft;
818 | animation-name: bounceOutLeft;
819 | }
820 |
821 | @-webkit-keyframes bounceOutRight {
822 | 0% {
823 | -webkit-transform: translateX(0);
824 | transform: translateX(0);
825 | }
826 |
827 | 20% {
828 | opacity: 1;
829 | -webkit-transform: translateX(-20px);
830 | transform: translateX(-20px);
831 | }
832 |
833 | 100% {
834 | opacity: 0;
835 | -webkit-transform: translateX(2000px);
836 | transform: translateX(2000px);
837 | }
838 | }
839 |
840 | @keyframes bounceOutRight {
841 | 0% {
842 | -webkit-transform: translateX(0);
843 | -ms-transform: translateX(0);
844 | transform: translateX(0);
845 | }
846 |
847 | 20% {
848 | opacity: 1;
849 | -webkit-transform: translateX(-20px);
850 | -ms-transform: translateX(-20px);
851 | transform: translateX(-20px);
852 | }
853 |
854 | 100% {
855 | opacity: 0;
856 | -webkit-transform: translateX(2000px);
857 | -ms-transform: translateX(2000px);
858 | transform: translateX(2000px);
859 | }
860 | }
861 |
862 | .bounceOutRight {
863 | -webkit-animation-name: bounceOutRight;
864 | animation-name: bounceOutRight;
865 | }
866 |
867 | @-webkit-keyframes bounceOutUp {
868 | 0% {
869 | -webkit-transform: translateY(0);
870 | transform: translateY(0);
871 | }
872 |
873 | 20% {
874 | opacity: 1;
875 | -webkit-transform: translateY(20px);
876 | transform: translateY(20px);
877 | }
878 |
879 | 100% {
880 | opacity: 0;
881 | -webkit-transform: translateY(-2000px);
882 | transform: translateY(-2000px);
883 | }
884 | }
885 |
886 | @keyframes bounceOutUp {
887 | 0% {
888 | -webkit-transform: translateY(0);
889 | -ms-transform: translateY(0);
890 | transform: translateY(0);
891 | }
892 |
893 | 20% {
894 | opacity: 1;
895 | -webkit-transform: translateY(20px);
896 | -ms-transform: translateY(20px);
897 | transform: translateY(20px);
898 | }
899 |
900 | 100% {
901 | opacity: 0;
902 | -webkit-transform: translateY(-2000px);
903 | -ms-transform: translateY(-2000px);
904 | transform: translateY(-2000px);
905 | }
906 | }
907 |
908 | .bounceOutUp {
909 | -webkit-animation-name: bounceOutUp;
910 | animation-name: bounceOutUp;
911 | }
912 |
913 | @-webkit-keyframes fadeIn {
914 | 0% {
915 | opacity: 0;
916 | }
917 |
918 | 100% {
919 | opacity: 1;
920 | }
921 | }
922 |
923 | @keyframes fadeIn {
924 | 0% {
925 | opacity: 0;
926 | }
927 |
928 | 100% {
929 | opacity: 1;
930 | }
931 | }
932 |
933 | .fadeIn {
934 | -webkit-animation-name: fadeIn;
935 | animation-name: fadeIn;
936 | }
937 |
938 | @-webkit-keyframes fadeInDown {
939 | 0% {
940 | opacity: 0;
941 | -webkit-transform: translateY(-20px);
942 | transform: translateY(-20px);
943 | }
944 |
945 | 100% {
946 | opacity: 1;
947 | -webkit-transform: translateY(0);
948 | transform: translateY(0);
949 | }
950 | }
951 |
952 | @keyframes fadeInDown {
953 | 0% {
954 | opacity: 0;
955 | -webkit-transform: translateY(-20px);
956 | -ms-transform: translateY(-20px);
957 | transform: translateY(-20px);
958 | }
959 |
960 | 100% {
961 | opacity: 1;
962 | -webkit-transform: translateY(0);
963 | -ms-transform: translateY(0);
964 | transform: translateY(0);
965 | }
966 | }
967 |
968 | .fadeInDown {
969 | -webkit-animation-name: fadeInDown;
970 | animation-name: fadeInDown;
971 | }
972 |
973 | @-webkit-keyframes fadeInDownBig {
974 | 0% {
975 | opacity: 0;
976 | -webkit-transform: translateY(-2000px);
977 | transform: translateY(-2000px);
978 | }
979 |
980 | 100% {
981 | opacity: 1;
982 | -webkit-transform: translateY(0);
983 | transform: translateY(0);
984 | }
985 | }
986 |
987 | @keyframes fadeInDownBig {
988 | 0% {
989 | opacity: 0;
990 | -webkit-transform: translateY(-2000px);
991 | -ms-transform: translateY(-2000px);
992 | transform: translateY(-2000px);
993 | }
994 |
995 | 100% {
996 | opacity: 1;
997 | -webkit-transform: translateY(0);
998 | -ms-transform: translateY(0);
999 | transform: translateY(0);
1000 | }
1001 | }
1002 |
1003 | .fadeInDownBig {
1004 | -webkit-animation-name: fadeInDownBig;
1005 | animation-name: fadeInDownBig;
1006 | }
1007 |
1008 | @-webkit-keyframes fadeInLeft {
1009 | 0% {
1010 | opacity: 0;
1011 | -webkit-transform: translateX(-20px);
1012 | transform: translateX(-20px);
1013 | }
1014 |
1015 | 100% {
1016 | opacity: 1;
1017 | -webkit-transform: translateX(0);
1018 | transform: translateX(0);
1019 | }
1020 | }
1021 |
1022 | @keyframes fadeInLeft {
1023 | 0% {
1024 | opacity: 0;
1025 | -webkit-transform: translateX(-20px);
1026 | -ms-transform: translateX(-20px);
1027 | transform: translateX(-20px);
1028 | }
1029 |
1030 | 100% {
1031 | opacity: 1;
1032 | -webkit-transform: translateX(0);
1033 | -ms-transform: translateX(0);
1034 | transform: translateX(0);
1035 | }
1036 | }
1037 |
1038 | .fadeInLeft {
1039 | -webkit-animation-name: fadeInLeft;
1040 | animation-name: fadeInLeft;
1041 | }
1042 |
1043 | @-webkit-keyframes fadeInLeftBig {
1044 | 0% {
1045 | opacity: 0;
1046 | -webkit-transform: translateX(-2000px);
1047 | transform: translateX(-2000px);
1048 | }
1049 |
1050 | 100% {
1051 | opacity: 1;
1052 | -webkit-transform: translateX(0);
1053 | transform: translateX(0);
1054 | }
1055 | }
1056 |
1057 | @keyframes fadeInLeftBig {
1058 | 0% {
1059 | opacity: 0;
1060 | -webkit-transform: translateX(-2000px);
1061 | -ms-transform: translateX(-2000px);
1062 | transform: translateX(-2000px);
1063 | }
1064 |
1065 | 100% {
1066 | opacity: 1;
1067 | -webkit-transform: translateX(0);
1068 | -ms-transform: translateX(0);
1069 | transform: translateX(0);
1070 | }
1071 | }
1072 |
1073 | .fadeInLeftBig {
1074 | -webkit-animation-name: fadeInLeftBig;
1075 | animation-name: fadeInLeftBig;
1076 | }
1077 |
1078 | @-webkit-keyframes fadeInRight {
1079 | 0% {
1080 | opacity: 0;
1081 | -webkit-transform: translateX(20px);
1082 | transform: translateX(20px);
1083 | }
1084 |
1085 | 100% {
1086 | opacity: 1;
1087 | -webkit-transform: translateX(0);
1088 | transform: translateX(0);
1089 | }
1090 | }
1091 |
1092 | @keyframes fadeInRight {
1093 | 0% {
1094 | opacity: 0;
1095 | -webkit-transform: translateX(20px);
1096 | -ms-transform: translateX(20px);
1097 | transform: translateX(20px);
1098 | }
1099 |
1100 | 100% {
1101 | opacity: 1;
1102 | -webkit-transform: translateX(0);
1103 | -ms-transform: translateX(0);
1104 | transform: translateX(0);
1105 | }
1106 | }
1107 |
1108 | .fadeInRight {
1109 | -webkit-animation-name: fadeInRight;
1110 | animation-name: fadeInRight;
1111 | }
1112 |
1113 | @-webkit-keyframes fadeInRightBig {
1114 | 0% {
1115 | opacity: 0;
1116 | -webkit-transform: translateX(2000px);
1117 | transform: translateX(2000px);
1118 | }
1119 |
1120 | 100% {
1121 | opacity: 1;
1122 | -webkit-transform: translateX(0);
1123 | transform: translateX(0);
1124 | }
1125 | }
1126 |
1127 | @keyframes fadeInRightBig {
1128 | 0% {
1129 | opacity: 0;
1130 | -webkit-transform: translateX(2000px);
1131 | -ms-transform: translateX(2000px);
1132 | transform: translateX(2000px);
1133 | }
1134 |
1135 | 100% {
1136 | opacity: 1;
1137 | -webkit-transform: translateX(0);
1138 | -ms-transform: translateX(0);
1139 | transform: translateX(0);
1140 | }
1141 | }
1142 |
1143 | .fadeInRightBig {
1144 | -webkit-animation-name: fadeInRightBig;
1145 | animation-name: fadeInRightBig;
1146 | }
1147 |
1148 | @-webkit-keyframes fadeInUp {
1149 | 0% {
1150 | opacity: 0;
1151 | -webkit-transform: translateY(20px);
1152 | transform: translateY(20px);
1153 | }
1154 |
1155 | 100% {
1156 | opacity: 1;
1157 | -webkit-transform: translateY(0);
1158 | transform: translateY(0);
1159 | }
1160 | }
1161 |
1162 | @keyframes fadeInUp {
1163 | 0% {
1164 | opacity: 0;
1165 | -webkit-transform: translateY(20px);
1166 | -ms-transform: translateY(20px);
1167 | transform: translateY(20px);
1168 | }
1169 |
1170 | 100% {
1171 | opacity: 1;
1172 | -webkit-transform: translateY(0);
1173 | -ms-transform: translateY(0);
1174 | transform: translateY(0);
1175 | }
1176 | }
1177 |
1178 | .fadeInUp {
1179 | -webkit-animation-name: fadeInUp;
1180 | animation-name: fadeInUp;
1181 | }
1182 |
1183 | @-webkit-keyframes fadeInUpBig {
1184 | 0% {
1185 | opacity: 0;
1186 | -webkit-transform: translateY(2000px);
1187 | transform: translateY(2000px);
1188 | }
1189 |
1190 | 100% {
1191 | opacity: 1;
1192 | -webkit-transform: translateY(0);
1193 | transform: translateY(0);
1194 | }
1195 | }
1196 |
1197 | @keyframes fadeInUpBig {
1198 | 0% {
1199 | opacity: 0;
1200 | -webkit-transform: translateY(2000px);
1201 | -ms-transform: translateY(2000px);
1202 | transform: translateY(2000px);
1203 | }
1204 |
1205 | 100% {
1206 | opacity: 1;
1207 | -webkit-transform: translateY(0);
1208 | -ms-transform: translateY(0);
1209 | transform: translateY(0);
1210 | }
1211 | }
1212 |
1213 | .fadeInUpBig {
1214 | -webkit-animation-name: fadeInUpBig;
1215 | animation-name: fadeInUpBig;
1216 | }
1217 |
1218 | @-webkit-keyframes fadeOut {
1219 | 0% {
1220 | opacity: 1;
1221 | }
1222 |
1223 | 100% {
1224 | opacity: 0;
1225 | }
1226 | }
1227 |
1228 | @keyframes fadeOut {
1229 | 0% {
1230 | opacity: 1;
1231 | }
1232 |
1233 | 100% {
1234 | opacity: 0;
1235 | }
1236 | }
1237 |
1238 | .fadeOut {
1239 | -webkit-animation-name: fadeOut;
1240 | animation-name: fadeOut;
1241 | }
1242 |
1243 | @-webkit-keyframes fadeOutDown {
1244 | 0% {
1245 | opacity: 1;
1246 | -webkit-transform: translateY(0);
1247 | transform: translateY(0);
1248 | }
1249 |
1250 | 100% {
1251 | opacity: 0;
1252 | -webkit-transform: translateY(20px);
1253 | transform: translateY(20px);
1254 | }
1255 | }
1256 |
1257 | @keyframes fadeOutDown {
1258 | 0% {
1259 | opacity: 1;
1260 | -webkit-transform: translateY(0);
1261 | -ms-transform: translateY(0);
1262 | transform: translateY(0);
1263 | }
1264 |
1265 | 100% {
1266 | opacity: 0;
1267 | -webkit-transform: translateY(20px);
1268 | -ms-transform: translateY(20px);
1269 | transform: translateY(20px);
1270 | }
1271 | }
1272 |
1273 | .fadeOutDown {
1274 | -webkit-animation-name: fadeOutDown;
1275 | animation-name: fadeOutDown;
1276 | }
1277 |
1278 | @-webkit-keyframes fadeOutDownBig {
1279 | 0% {
1280 | opacity: 1;
1281 | -webkit-transform: translateY(0);
1282 | transform: translateY(0);
1283 | }
1284 |
1285 | 100% {
1286 | opacity: 0;
1287 | -webkit-transform: translateY(2000px);
1288 | transform: translateY(2000px);
1289 | }
1290 | }
1291 |
1292 | @keyframes fadeOutDownBig {
1293 | 0% {
1294 | opacity: 1;
1295 | -webkit-transform: translateY(0);
1296 | -ms-transform: translateY(0);
1297 | transform: translateY(0);
1298 | }
1299 |
1300 | 100% {
1301 | opacity: 0;
1302 | -webkit-transform: translateY(2000px);
1303 | -ms-transform: translateY(2000px);
1304 | transform: translateY(2000px);
1305 | }
1306 | }
1307 |
1308 | .fadeOutDownBig {
1309 | -webkit-animation-name: fadeOutDownBig;
1310 | animation-name: fadeOutDownBig;
1311 | }
1312 |
1313 | @-webkit-keyframes fadeOutLeft {
1314 | 0% {
1315 | opacity: 1;
1316 | -webkit-transform: translateX(0);
1317 | transform: translateX(0);
1318 | }
1319 |
1320 | 100% {
1321 | opacity: 0;
1322 | -webkit-transform: translateX(-20px);
1323 | transform: translateX(-20px);
1324 | }
1325 | }
1326 |
1327 | @keyframes fadeOutLeft {
1328 | 0% {
1329 | opacity: 1;
1330 | -webkit-transform: translateX(0);
1331 | -ms-transform: translateX(0);
1332 | transform: translateX(0);
1333 | }
1334 |
1335 | 100% {
1336 | opacity: 0;
1337 | -webkit-transform: translateX(-20px);
1338 | -ms-transform: translateX(-20px);
1339 | transform: translateX(-20px);
1340 | }
1341 | }
1342 |
1343 | .fadeOutLeft {
1344 | -webkit-animation-name: fadeOutLeft;
1345 | animation-name: fadeOutLeft;
1346 | }
1347 |
1348 | @-webkit-keyframes fadeOutLeftBig {
1349 | 0% {
1350 | opacity: 1;
1351 | -webkit-transform: translateX(0);
1352 | transform: translateX(0);
1353 | }
1354 |
1355 | 100% {
1356 | opacity: 0;
1357 | -webkit-transform: translateX(-2000px);
1358 | transform: translateX(-2000px);
1359 | }
1360 | }
1361 |
1362 | @keyframes fadeOutLeftBig {
1363 | 0% {
1364 | opacity: 1;
1365 | -webkit-transform: translateX(0);
1366 | -ms-transform: translateX(0);
1367 | transform: translateX(0);
1368 | }
1369 |
1370 | 100% {
1371 | opacity: 0;
1372 | -webkit-transform: translateX(-2000px);
1373 | -ms-transform: translateX(-2000px);
1374 | transform: translateX(-2000px);
1375 | }
1376 | }
1377 |
1378 | .fadeOutLeftBig {
1379 | -webkit-animation-name: fadeOutLeftBig;
1380 | animation-name: fadeOutLeftBig;
1381 | }
1382 |
1383 | @-webkit-keyframes fadeOutRight {
1384 | 0% {
1385 | opacity: 1;
1386 | -webkit-transform: translateX(0);
1387 | transform: translateX(0);
1388 | }
1389 |
1390 | 100% {
1391 | opacity: 0;
1392 | -webkit-transform: translateX(20px);
1393 | transform: translateX(20px);
1394 | }
1395 | }
1396 |
1397 | @keyframes fadeOutRight {
1398 | 0% {
1399 | opacity: 1;
1400 | -webkit-transform: translateX(0);
1401 | -ms-transform: translateX(0);
1402 | transform: translateX(0);
1403 | }
1404 |
1405 | 100% {
1406 | opacity: 0;
1407 | -webkit-transform: translateX(20px);
1408 | -ms-transform: translateX(20px);
1409 | transform: translateX(20px);
1410 | }
1411 | }
1412 |
1413 | .fadeOutRight {
1414 | -webkit-animation-name: fadeOutRight;
1415 | animation-name: fadeOutRight;
1416 | }
1417 |
1418 | @-webkit-keyframes fadeOutRightBig {
1419 | 0% {
1420 | opacity: 1;
1421 | -webkit-transform: translateX(0);
1422 | transform: translateX(0);
1423 | }
1424 |
1425 | 100% {
1426 | opacity: 0;
1427 | -webkit-transform: translateX(2000px);
1428 | transform: translateX(2000px);
1429 | }
1430 | }
1431 |
1432 | @keyframes fadeOutRightBig {
1433 | 0% {
1434 | opacity: 1;
1435 | -webkit-transform: translateX(0);
1436 | -ms-transform: translateX(0);
1437 | transform: translateX(0);
1438 | }
1439 |
1440 | 100% {
1441 | opacity: 0;
1442 | -webkit-transform: translateX(2000px);
1443 | -ms-transform: translateX(2000px);
1444 | transform: translateX(2000px);
1445 | }
1446 | }
1447 |
1448 | .fadeOutRightBig {
1449 | -webkit-animation-name: fadeOutRightBig;
1450 | animation-name: fadeOutRightBig;
1451 | }
1452 |
1453 | @-webkit-keyframes fadeOutUp {
1454 | 0% {
1455 | opacity: 1;
1456 | -webkit-transform: translateY(0);
1457 | transform: translateY(0);
1458 | }
1459 |
1460 | 100% {
1461 | opacity: 0;
1462 | -webkit-transform: translateY(-20px);
1463 | transform: translateY(-20px);
1464 | }
1465 | }
1466 |
1467 | @keyframes fadeOutUp {
1468 | 0% {
1469 | opacity: 1;
1470 | -webkit-transform: translateY(0);
1471 | -ms-transform: translateY(0);
1472 | transform: translateY(0);
1473 | }
1474 |
1475 | 100% {
1476 | opacity: 0;
1477 | -webkit-transform: translateY(-20px);
1478 | -ms-transform: translateY(-20px);
1479 | transform: translateY(-20px);
1480 | }
1481 | }
1482 |
1483 | .fadeOutUp {
1484 | -webkit-animation-name: fadeOutUp;
1485 | animation-name: fadeOutUp;
1486 | }
1487 |
1488 | @-webkit-keyframes fadeOutUpBig {
1489 | 0% {
1490 | opacity: 1;
1491 | -webkit-transform: translateY(0);
1492 | transform: translateY(0);
1493 | }
1494 |
1495 | 100% {
1496 | opacity: 0;
1497 | -webkit-transform: translateY(-2000px);
1498 | transform: translateY(-2000px);
1499 | }
1500 | }
1501 |
1502 | @keyframes fadeOutUpBig {
1503 | 0% {
1504 | opacity: 1;
1505 | -webkit-transform: translateY(0);
1506 | -ms-transform: translateY(0);
1507 | transform: translateY(0);
1508 | }
1509 |
1510 | 100% {
1511 | opacity: 0;
1512 | -webkit-transform: translateY(-2000px);
1513 | -ms-transform: translateY(-2000px);
1514 | transform: translateY(-2000px);
1515 | }
1516 | }
1517 |
1518 | .fadeOutUpBig {
1519 | -webkit-animation-name: fadeOutUpBig;
1520 | animation-name: fadeOutUpBig;
1521 | }
1522 |
1523 | @-webkit-keyframes flip {
1524 | 0% {
1525 | -webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
1526 | transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
1527 | -webkit-animation-timing-function: ease-out;
1528 | animation-timing-function: ease-out;
1529 | }
1530 |
1531 | 40% {
1532 | -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
1533 | transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
1534 | -webkit-animation-timing-function: ease-out;
1535 | animation-timing-function: ease-out;
1536 | }
1537 |
1538 | 50% {
1539 | -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
1540 | transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
1541 | -webkit-animation-timing-function: ease-in;
1542 | animation-timing-function: ease-in;
1543 | }
1544 |
1545 | 80% {
1546 | -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
1547 | transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
1548 | -webkit-animation-timing-function: ease-in;
1549 | animation-timing-function: ease-in;
1550 | }
1551 |
1552 | 100% {
1553 | -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
1554 | transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
1555 | -webkit-animation-timing-function: ease-in;
1556 | animation-timing-function: ease-in;
1557 | }
1558 | }
1559 |
1560 | @keyframes flip {
1561 | 0% {
1562 | -webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
1563 | -ms-transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
1564 | transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
1565 | -webkit-animation-timing-function: ease-out;
1566 | animation-timing-function: ease-out;
1567 | }
1568 |
1569 | 40% {
1570 | -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
1571 | -ms-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
1572 | transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
1573 | -webkit-animation-timing-function: ease-out;
1574 | animation-timing-function: ease-out;
1575 | }
1576 |
1577 | 50% {
1578 | -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
1579 | -ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
1580 | transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
1581 | -webkit-animation-timing-function: ease-in;
1582 | animation-timing-function: ease-in;
1583 | }
1584 |
1585 | 80% {
1586 | -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
1587 | -ms-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
1588 | transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
1589 | -webkit-animation-timing-function: ease-in;
1590 | animation-timing-function: ease-in;
1591 | }
1592 |
1593 | 100% {
1594 | -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
1595 | -ms-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
1596 | transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
1597 | -webkit-animation-timing-function: ease-in;
1598 | animation-timing-function: ease-in;
1599 | }
1600 | }
1601 |
1602 | .animated.flip {
1603 | -webkit-backface-visibility: visible;
1604 | -ms-backface-visibility: visible;
1605 | backface-visibility: visible;
1606 | -webkit-animation-name: flip;
1607 | animation-name: flip;
1608 | }
1609 |
1610 | @-webkit-keyframes flipInX {
1611 | 0% {
1612 | -webkit-transform: perspective(400px) rotateX(90deg);
1613 | transform: perspective(400px) rotateX(90deg);
1614 | opacity: 0;
1615 | }
1616 |
1617 | 40% {
1618 | -webkit-transform: perspective(400px) rotateX(-10deg);
1619 | transform: perspective(400px) rotateX(-10deg);
1620 | }
1621 |
1622 | 70% {
1623 | -webkit-transform: perspective(400px) rotateX(10deg);
1624 | transform: perspective(400px) rotateX(10deg);
1625 | }
1626 |
1627 | 100% {
1628 | -webkit-transform: perspective(400px) rotateX(0deg);
1629 | transform: perspective(400px) rotateX(0deg);
1630 | opacity: 1;
1631 | }
1632 | }
1633 |
1634 | @keyframes flipInX {
1635 | 0% {
1636 | -webkit-transform: perspective(400px) rotateX(90deg);
1637 | -ms-transform: perspective(400px) rotateX(90deg);
1638 | transform: perspective(400px) rotateX(90deg);
1639 | opacity: 0;
1640 | }
1641 |
1642 | 40% {
1643 | -webkit-transform: perspective(400px) rotateX(-10deg);
1644 | -ms-transform: perspective(400px) rotateX(-10deg);
1645 | transform: perspective(400px) rotateX(-10deg);
1646 | }
1647 |
1648 | 70% {
1649 | -webkit-transform: perspective(400px) rotateX(10deg);
1650 | -ms-transform: perspective(400px) rotateX(10deg);
1651 | transform: perspective(400px) rotateX(10deg);
1652 | }
1653 |
1654 | 100% {
1655 | -webkit-transform: perspective(400px) rotateX(0deg);
1656 | -ms-transform: perspective(400px) rotateX(0deg);
1657 | transform: perspective(400px) rotateX(0deg);
1658 | opacity: 1;
1659 | }
1660 | }
1661 |
1662 | .flipInX {
1663 | -webkit-backface-visibility: visible !important;
1664 | -ms-backface-visibility: visible !important;
1665 | backface-visibility: visible !important;
1666 | -webkit-animation-name: flipInX;
1667 | animation-name: flipInX;
1668 | }
1669 |
1670 | @-webkit-keyframes flipInY {
1671 | 0% {
1672 | -webkit-transform: perspective(400px) rotateY(90deg);
1673 | transform: perspective(400px) rotateY(90deg);
1674 | opacity: 0;
1675 | }
1676 |
1677 | 40% {
1678 | -webkit-transform: perspective(400px) rotateY(-10deg);
1679 | transform: perspective(400px) rotateY(-10deg);
1680 | }
1681 |
1682 | 70% {
1683 | -webkit-transform: perspective(400px) rotateY(10deg);
1684 | transform: perspective(400px) rotateY(10deg);
1685 | }
1686 |
1687 | 100% {
1688 | -webkit-transform: perspective(400px) rotateY(0deg);
1689 | transform: perspective(400px) rotateY(0deg);
1690 | opacity: 1;
1691 | }
1692 | }
1693 |
1694 | @keyframes flipInY {
1695 | 0% {
1696 | -webkit-transform: perspective(400px) rotateY(90deg);
1697 | -ms-transform: perspective(400px) rotateY(90deg);
1698 | transform: perspective(400px) rotateY(90deg);
1699 | opacity: 0;
1700 | }
1701 |
1702 | 40% {
1703 | -webkit-transform: perspective(400px) rotateY(-10deg);
1704 | -ms-transform: perspective(400px) rotateY(-10deg);
1705 | transform: perspective(400px) rotateY(-10deg);
1706 | }
1707 |
1708 | 70% {
1709 | -webkit-transform: perspective(400px) rotateY(10deg);
1710 | -ms-transform: perspective(400px) rotateY(10deg);
1711 | transform: perspective(400px) rotateY(10deg);
1712 | }
1713 |
1714 | 100% {
1715 | -webkit-transform: perspective(400px) rotateY(0deg);
1716 | -ms-transform: perspective(400px) rotateY(0deg);
1717 | transform: perspective(400px) rotateY(0deg);
1718 | opacity: 1;
1719 | }
1720 | }
1721 |
1722 | .flipInY {
1723 | -webkit-backface-visibility: visible !important;
1724 | -ms-backface-visibility: visible !important;
1725 | backface-visibility: visible !important;
1726 | -webkit-animation-name: flipInY;
1727 | animation-name: flipInY;
1728 | }
1729 |
1730 | @-webkit-keyframes flipOutX {
1731 | 0% {
1732 | -webkit-transform: perspective(400px) rotateX(0deg);
1733 | transform: perspective(400px) rotateX(0deg);
1734 | opacity: 1;
1735 | }
1736 |
1737 | 100% {
1738 | -webkit-transform: perspective(400px) rotateX(90deg);
1739 | transform: perspective(400px) rotateX(90deg);
1740 | opacity: 0;
1741 | }
1742 | }
1743 |
1744 | @keyframes flipOutX {
1745 | 0% {
1746 | -webkit-transform: perspective(400px) rotateX(0deg);
1747 | -ms-transform: perspective(400px) rotateX(0deg);
1748 | transform: perspective(400px) rotateX(0deg);
1749 | opacity: 1;
1750 | }
1751 |
1752 | 100% {
1753 | -webkit-transform: perspective(400px) rotateX(90deg);
1754 | -ms-transform: perspective(400px) rotateX(90deg);
1755 | transform: perspective(400px) rotateX(90deg);
1756 | opacity: 0;
1757 | }
1758 | }
1759 |
1760 | .flipOutX {
1761 | -webkit-animation-name: flipOutX;
1762 | animation-name: flipOutX;
1763 | -webkit-backface-visibility: visible !important;
1764 | -ms-backface-visibility: visible !important;
1765 | backface-visibility: visible !important;
1766 | }
1767 |
1768 | @-webkit-keyframes flipOutY {
1769 | 0% {
1770 | -webkit-transform: perspective(400px) rotateY(0deg);
1771 | transform: perspective(400px) rotateY(0deg);
1772 | opacity: 1;
1773 | }
1774 |
1775 | 100% {
1776 | -webkit-transform: perspective(400px) rotateY(90deg);
1777 | transform: perspective(400px) rotateY(90deg);
1778 | opacity: 0;
1779 | }
1780 | }
1781 |
1782 | @keyframes flipOutY {
1783 | 0% {
1784 | -webkit-transform: perspective(400px) rotateY(0deg);
1785 | -ms-transform: perspective(400px) rotateY(0deg);
1786 | transform: perspective(400px) rotateY(0deg);
1787 | opacity: 1;
1788 | }
1789 |
1790 | 100% {
1791 | -webkit-transform: perspective(400px) rotateY(90deg);
1792 | -ms-transform: perspective(400px) rotateY(90deg);
1793 | transform: perspective(400px) rotateY(90deg);
1794 | opacity: 0;
1795 | }
1796 | }
1797 |
1798 | .flipOutY {
1799 | -webkit-backface-visibility: visible !important;
1800 | -ms-backface-visibility: visible !important;
1801 | backface-visibility: visible !important;
1802 | -webkit-animation-name: flipOutY;
1803 | animation-name: flipOutY;
1804 | }
1805 |
1806 | @-webkit-keyframes lightSpeedIn {
1807 | 0% {
1808 | -webkit-transform: translateX(100%) skewX(-30deg);
1809 | transform: translateX(100%) skewX(-30deg);
1810 | opacity: 0;
1811 | }
1812 |
1813 | 60% {
1814 | -webkit-transform: translateX(-20%) skewX(30deg);
1815 | transform: translateX(-20%) skewX(30deg);
1816 | opacity: 1;
1817 | }
1818 |
1819 | 80% {
1820 | -webkit-transform: translateX(0%) skewX(-15deg);
1821 | transform: translateX(0%) skewX(-15deg);
1822 | opacity: 1;
1823 | }
1824 |
1825 | 100% {
1826 | -webkit-transform: translateX(0%) skewX(0deg);
1827 | transform: translateX(0%) skewX(0deg);
1828 | opacity: 1;
1829 | }
1830 | }
1831 |
1832 | @keyframes lightSpeedIn {
1833 | 0% {
1834 | -webkit-transform: translateX(100%) skewX(-30deg);
1835 | -ms-transform: translateX(100%) skewX(-30deg);
1836 | transform: translateX(100%) skewX(-30deg);
1837 | opacity: 0;
1838 | }
1839 |
1840 | 60% {
1841 | -webkit-transform: translateX(-20%) skewX(30deg);
1842 | -ms-transform: translateX(-20%) skewX(30deg);
1843 | transform: translateX(-20%) skewX(30deg);
1844 | opacity: 1;
1845 | }
1846 |
1847 | 80% {
1848 | -webkit-transform: translateX(0%) skewX(-15deg);
1849 | -ms-transform: translateX(0%) skewX(-15deg);
1850 | transform: translateX(0%) skewX(-15deg);
1851 | opacity: 1;
1852 | }
1853 |
1854 | 100% {
1855 | -webkit-transform: translateX(0%) skewX(0deg);
1856 | -ms-transform: translateX(0%) skewX(0deg);
1857 | transform: translateX(0%) skewX(0deg);
1858 | opacity: 1;
1859 | }
1860 | }
1861 |
1862 | .lightSpeedIn {
1863 | -webkit-animation-name: lightSpeedIn;
1864 | animation-name: lightSpeedIn;
1865 | -webkit-animation-timing-function: ease-out;
1866 | animation-timing-function: ease-out;
1867 | }
1868 |
1869 | @-webkit-keyframes lightSpeedOut {
1870 | 0% {
1871 | -webkit-transform: translateX(0%) skewX(0deg);
1872 | transform: translateX(0%) skewX(0deg);
1873 | opacity: 1;
1874 | }
1875 |
1876 | 100% {
1877 | -webkit-transform: translateX(100%) skewX(-30deg);
1878 | transform: translateX(100%) skewX(-30deg);
1879 | opacity: 0;
1880 | }
1881 | }
1882 |
1883 | @keyframes lightSpeedOut {
1884 | 0% {
1885 | -webkit-transform: translateX(0%) skewX(0deg);
1886 | -ms-transform: translateX(0%) skewX(0deg);
1887 | transform: translateX(0%) skewX(0deg);
1888 | opacity: 1;
1889 | }
1890 |
1891 | 100% {
1892 | -webkit-transform: translateX(100%) skewX(-30deg);
1893 | -ms-transform: translateX(100%) skewX(-30deg);
1894 | transform: translateX(100%) skewX(-30deg);
1895 | opacity: 0;
1896 | }
1897 | }
1898 |
1899 | .lightSpeedOut {
1900 | -webkit-animation-name: lightSpeedOut;
1901 | animation-name: lightSpeedOut;
1902 | -webkit-animation-timing-function: ease-in;
1903 | animation-timing-function: ease-in;
1904 | }
1905 |
1906 | @-webkit-keyframes rotateIn {
1907 | 0% {
1908 | -webkit-transform-origin: center center;
1909 | transform-origin: center center;
1910 | -webkit-transform: rotate(-200deg);
1911 | transform: rotate(-200deg);
1912 | opacity: 0;
1913 | }
1914 |
1915 | 100% {
1916 | -webkit-transform-origin: center center;
1917 | transform-origin: center center;
1918 | -webkit-transform: rotate(0);
1919 | transform: rotate(0);
1920 | opacity: 1;
1921 | }
1922 | }
1923 |
1924 | @keyframes rotateIn {
1925 | 0% {
1926 | -webkit-transform-origin: center center;
1927 | -ms-transform-origin: center center;
1928 | transform-origin: center center;
1929 | -webkit-transform: rotate(-200deg);
1930 | -ms-transform: rotate(-200deg);
1931 | transform: rotate(-200deg);
1932 | opacity: 0;
1933 | }
1934 |
1935 | 100% {
1936 | -webkit-transform-origin: center center;
1937 | -ms-transform-origin: center center;
1938 | transform-origin: center center;
1939 | -webkit-transform: rotate(0);
1940 | -ms-transform: rotate(0);
1941 | transform: rotate(0);
1942 | opacity: 1;
1943 | }
1944 | }
1945 |
1946 | .rotateIn {
1947 | -webkit-animation-name: rotateIn;
1948 | animation-name: rotateIn;
1949 | }
1950 |
1951 | @-webkit-keyframes rotateInDownLeft {
1952 | 0% {
1953 | -webkit-transform-origin: left bottom;
1954 | transform-origin: left bottom;
1955 | -webkit-transform: rotate(-90deg);
1956 | transform: rotate(-90deg);
1957 | opacity: 0;
1958 | }
1959 |
1960 | 100% {
1961 | -webkit-transform-origin: left bottom;
1962 | transform-origin: left bottom;
1963 | -webkit-transform: rotate(0);
1964 | transform: rotate(0);
1965 | opacity: 1;
1966 | }
1967 | }
1968 |
1969 | @keyframes rotateInDownLeft {
1970 | 0% {
1971 | -webkit-transform-origin: left bottom;
1972 | -ms-transform-origin: left bottom;
1973 | transform-origin: left bottom;
1974 | -webkit-transform: rotate(-90deg);
1975 | -ms-transform: rotate(-90deg);
1976 | transform: rotate(-90deg);
1977 | opacity: 0;
1978 | }
1979 |
1980 | 100% {
1981 | -webkit-transform-origin: left bottom;
1982 | -ms-transform-origin: left bottom;
1983 | transform-origin: left bottom;
1984 | -webkit-transform: rotate(0);
1985 | -ms-transform: rotate(0);
1986 | transform: rotate(0);
1987 | opacity: 1;
1988 | }
1989 | }
1990 |
1991 | .rotateInDownLeft {
1992 | -webkit-animation-name: rotateInDownLeft;
1993 | animation-name: rotateInDownLeft;
1994 | }
1995 |
1996 | @-webkit-keyframes rotateInDownRight {
1997 | 0% {
1998 | -webkit-transform-origin: right bottom;
1999 | transform-origin: right bottom;
2000 | -webkit-transform: rotate(90deg);
2001 | transform: rotate(90deg);
2002 | opacity: 0;
2003 | }
2004 |
2005 | 100% {
2006 | -webkit-transform-origin: right bottom;
2007 | transform-origin: right bottom;
2008 | -webkit-transform: rotate(0);
2009 | transform: rotate(0);
2010 | opacity: 1;
2011 | }
2012 | }
2013 |
2014 | @keyframes rotateInDownRight {
2015 | 0% {
2016 | -webkit-transform-origin: right bottom;
2017 | -ms-transform-origin: right bottom;
2018 | transform-origin: right bottom;
2019 | -webkit-transform: rotate(90deg);
2020 | -ms-transform: rotate(90deg);
2021 | transform: rotate(90deg);
2022 | opacity: 0;
2023 | }
2024 |
2025 | 100% {
2026 | -webkit-transform-origin: right bottom;
2027 | -ms-transform-origin: right bottom;
2028 | transform-origin: right bottom;
2029 | -webkit-transform: rotate(0);
2030 | -ms-transform: rotate(0);
2031 | transform: rotate(0);
2032 | opacity: 1;
2033 | }
2034 | }
2035 |
2036 | .rotateInDownRight {
2037 | -webkit-animation-name: rotateInDownRight;
2038 | animation-name: rotateInDownRight;
2039 | }
2040 |
2041 | @-webkit-keyframes rotateInUpLeft {
2042 | 0% {
2043 | -webkit-transform-origin: left bottom;
2044 | transform-origin: left bottom;
2045 | -webkit-transform: rotate(90deg);
2046 | transform: rotate(90deg);
2047 | opacity: 0;
2048 | }
2049 |
2050 | 100% {
2051 | -webkit-transform-origin: left bottom;
2052 | transform-origin: left bottom;
2053 | -webkit-transform: rotate(0);
2054 | transform: rotate(0);
2055 | opacity: 1;
2056 | }
2057 | }
2058 |
2059 | @keyframes rotateInUpLeft {
2060 | 0% {
2061 | -webkit-transform-origin: left bottom;
2062 | -ms-transform-origin: left bottom;
2063 | transform-origin: left bottom;
2064 | -webkit-transform: rotate(90deg);
2065 | -ms-transform: rotate(90deg);
2066 | transform: rotate(90deg);
2067 | opacity: 0;
2068 | }
2069 |
2070 | 100% {
2071 | -webkit-transform-origin: left bottom;
2072 | -ms-transform-origin: left bottom;
2073 | transform-origin: left bottom;
2074 | -webkit-transform: rotate(0);
2075 | -ms-transform: rotate(0);
2076 | transform: rotate(0);
2077 | opacity: 1;
2078 | }
2079 | }
2080 |
2081 | .rotateInUpLeft {
2082 | -webkit-animation-name: rotateInUpLeft;
2083 | animation-name: rotateInUpLeft;
2084 | }
2085 |
2086 | @-webkit-keyframes rotateInUpRight {
2087 | 0% {
2088 | -webkit-transform-origin: right bottom;
2089 | transform-origin: right bottom;
2090 | -webkit-transform: rotate(-90deg);
2091 | transform: rotate(-90deg);
2092 | opacity: 0;
2093 | }
2094 |
2095 | 100% {
2096 | -webkit-transform-origin: right bottom;
2097 | transform-origin: right bottom;
2098 | -webkit-transform: rotate(0);
2099 | transform: rotate(0);
2100 | opacity: 1;
2101 | }
2102 | }
2103 |
2104 | @keyframes rotateInUpRight {
2105 | 0% {
2106 | -webkit-transform-origin: right bottom;
2107 | -ms-transform-origin: right bottom;
2108 | transform-origin: right bottom;
2109 | -webkit-transform: rotate(-90deg);
2110 | -ms-transform: rotate(-90deg);
2111 | transform: rotate(-90deg);
2112 | opacity: 0;
2113 | }
2114 |
2115 | 100% {
2116 | -webkit-transform-origin: right bottom;
2117 | -ms-transform-origin: right bottom;
2118 | transform-origin: right bottom;
2119 | -webkit-transform: rotate(0);
2120 | -ms-transform: rotate(0);
2121 | transform: rotate(0);
2122 | opacity: 1;
2123 | }
2124 | }
2125 |
2126 | .rotateInUpRight {
2127 | -webkit-animation-name: rotateInUpRight;
2128 | animation-name: rotateInUpRight;
2129 | }
2130 |
2131 | @-webkit-keyframes rotateOut {
2132 | 0% {
2133 | -webkit-transform-origin: center center;
2134 | transform-origin: center center;
2135 | -webkit-transform: rotate(0);
2136 | transform: rotate(0);
2137 | opacity: 1;
2138 | }
2139 |
2140 | 100% {
2141 | -webkit-transform-origin: center center;
2142 | transform-origin: center center;
2143 | -webkit-transform: rotate(200deg);
2144 | transform: rotate(200deg);
2145 | opacity: 0;
2146 | }
2147 | }
2148 |
2149 | @keyframes rotateOut {
2150 | 0% {
2151 | -webkit-transform-origin: center center;
2152 | -ms-transform-origin: center center;
2153 | transform-origin: center center;
2154 | -webkit-transform: rotate(0);
2155 | -ms-transform: rotate(0);
2156 | transform: rotate(0);
2157 | opacity: 1;
2158 | }
2159 |
2160 | 100% {
2161 | -webkit-transform-origin: center center;
2162 | -ms-transform-origin: center center;
2163 | transform-origin: center center;
2164 | -webkit-transform: rotate(200deg);
2165 | -ms-transform: rotate(200deg);
2166 | transform: rotate(200deg);
2167 | opacity: 0;
2168 | }
2169 | }
2170 |
2171 | .rotateOut {
2172 | -webkit-animation-name: rotateOut;
2173 | animation-name: rotateOut;
2174 | }
2175 |
2176 | @-webkit-keyframes rotateOutDownLeft {
2177 | 0% {
2178 | -webkit-transform-origin: left bottom;
2179 | transform-origin: left bottom;
2180 | -webkit-transform: rotate(0);
2181 | transform: rotate(0);
2182 | opacity: 1;
2183 | }
2184 |
2185 | 100% {
2186 | -webkit-transform-origin: left bottom;
2187 | transform-origin: left bottom;
2188 | -webkit-transform: rotate(90deg);
2189 | transform: rotate(90deg);
2190 | opacity: 0;
2191 | }
2192 | }
2193 |
2194 | @keyframes rotateOutDownLeft {
2195 | 0% {
2196 | -webkit-transform-origin: left bottom;
2197 | -ms-transform-origin: left bottom;
2198 | transform-origin: left bottom;
2199 | -webkit-transform: rotate(0);
2200 | -ms-transform: rotate(0);
2201 | transform: rotate(0);
2202 | opacity: 1;
2203 | }
2204 |
2205 | 100% {
2206 | -webkit-transform-origin: left bottom;
2207 | -ms-transform-origin: left bottom;
2208 | transform-origin: left bottom;
2209 | -webkit-transform: rotate(90deg);
2210 | -ms-transform: rotate(90deg);
2211 | transform: rotate(90deg);
2212 | opacity: 0;
2213 | }
2214 | }
2215 |
2216 | .rotateOutDownLeft {
2217 | -webkit-animation-name: rotateOutDownLeft;
2218 | animation-name: rotateOutDownLeft;
2219 | }
2220 |
2221 | @-webkit-keyframes rotateOutDownRight {
2222 | 0% {
2223 | -webkit-transform-origin: right bottom;
2224 | transform-origin: right bottom;
2225 | -webkit-transform: rotate(0);
2226 | transform: rotate(0);
2227 | opacity: 1;
2228 | }
2229 |
2230 | 100% {
2231 | -webkit-transform-origin: right bottom;
2232 | transform-origin: right bottom;
2233 | -webkit-transform: rotate(-90deg);
2234 | transform: rotate(-90deg);
2235 | opacity: 0;
2236 | }
2237 | }
2238 |
2239 | @keyframes rotateOutDownRight {
2240 | 0% {
2241 | -webkit-transform-origin: right bottom;
2242 | -ms-transform-origin: right bottom;
2243 | transform-origin: right bottom;
2244 | -webkit-transform: rotate(0);
2245 | -ms-transform: rotate(0);
2246 | transform: rotate(0);
2247 | opacity: 1;
2248 | }
2249 |
2250 | 100% {
2251 | -webkit-transform-origin: right bottom;
2252 | -ms-transform-origin: right bottom;
2253 | transform-origin: right bottom;
2254 | -webkit-transform: rotate(-90deg);
2255 | -ms-transform: rotate(-90deg);
2256 | transform: rotate(-90deg);
2257 | opacity: 0;
2258 | }
2259 | }
2260 |
2261 | .rotateOutDownRight {
2262 | -webkit-animation-name: rotateOutDownRight;
2263 | animation-name: rotateOutDownRight;
2264 | }
2265 |
2266 | @-webkit-keyframes rotateOutUpLeft {
2267 | 0% {
2268 | -webkit-transform-origin: left bottom;
2269 | transform-origin: left bottom;
2270 | -webkit-transform: rotate(0);
2271 | transform: rotate(0);
2272 | opacity: 1;
2273 | }
2274 |
2275 | 100% {
2276 | -webkit-transform-origin: left bottom;
2277 | transform-origin: left bottom;
2278 | -webkit-transform: rotate(-90deg);
2279 | transform: rotate(-90deg);
2280 | opacity: 0;
2281 | }
2282 | }
2283 |
2284 | @keyframes rotateOutUpLeft {
2285 | 0% {
2286 | -webkit-transform-origin: left bottom;
2287 | -ms-transform-origin: left bottom;
2288 | transform-origin: left bottom;
2289 | -webkit-transform: rotate(0);
2290 | -ms-transform: rotate(0);
2291 | transform: rotate(0);
2292 | opacity: 1;
2293 | }
2294 |
2295 | 100% {
2296 | -webkit-transform-origin: left bottom;
2297 | -ms-transform-origin: left bottom;
2298 | transform-origin: left bottom;
2299 | -webkit-transform: rotate(-90deg);
2300 | -ms-transform: rotate(-90deg);
2301 | transform: rotate(-90deg);
2302 | opacity: 0;
2303 | }
2304 | }
2305 |
2306 | .rotateOutUpLeft {
2307 | -webkit-animation-name: rotateOutUpLeft;
2308 | animation-name: rotateOutUpLeft;
2309 | }
2310 |
2311 | @-webkit-keyframes rotateOutUpRight {
2312 | 0% {
2313 | -webkit-transform-origin: right bottom;
2314 | transform-origin: right bottom;
2315 | -webkit-transform: rotate(0);
2316 | transform: rotate(0);
2317 | opacity: 1;
2318 | }
2319 |
2320 | 100% {
2321 | -webkit-transform-origin: right bottom;
2322 | transform-origin: right bottom;
2323 | -webkit-transform: rotate(90deg);
2324 | transform: rotate(90deg);
2325 | opacity: 0;
2326 | }
2327 | }
2328 |
2329 | @keyframes rotateOutUpRight {
2330 | 0% {
2331 | -webkit-transform-origin: right bottom;
2332 | -ms-transform-origin: right bottom;
2333 | transform-origin: right bottom;
2334 | -webkit-transform: rotate(0);
2335 | -ms-transform: rotate(0);
2336 | transform: rotate(0);
2337 | opacity: 1;
2338 | }
2339 |
2340 | 100% {
2341 | -webkit-transform-origin: right bottom;
2342 | -ms-transform-origin: right bottom;
2343 | transform-origin: right bottom;
2344 | -webkit-transform: rotate(90deg);
2345 | -ms-transform: rotate(90deg);
2346 | transform: rotate(90deg);
2347 | opacity: 0;
2348 | }
2349 | }
2350 |
2351 | .rotateOutUpRight {
2352 | -webkit-animation-name: rotateOutUpRight;
2353 | animation-name: rotateOutUpRight;
2354 | }
2355 |
2356 | @-webkit-keyframes slideInDown {
2357 | 0% {
2358 | opacity: 0;
2359 | -webkit-transform: translateY(-2000px);
2360 | transform: translateY(-2000px);
2361 | }
2362 |
2363 | 100% {
2364 | -webkit-transform: translateY(0);
2365 | transform: translateY(0);
2366 | }
2367 | }
2368 |
2369 | @keyframes slideInDown {
2370 | 0% {
2371 | opacity: 0;
2372 | -webkit-transform: translateY(-2000px);
2373 | -ms-transform: translateY(-2000px);
2374 | transform: translateY(-2000px);
2375 | }
2376 |
2377 | 100% {
2378 | -webkit-transform: translateY(0);
2379 | -ms-transform: translateY(0);
2380 | transform: translateY(0);
2381 | }
2382 | }
2383 |
2384 | .slideInDown {
2385 | -webkit-animation-name: slideInDown;
2386 | animation-name: slideInDown;
2387 | }
2388 |
2389 | @-webkit-keyframes slideInLeft {
2390 | 0% {
2391 | opacity: 0;
2392 | -webkit-transform: translateX(-2000px);
2393 | transform: translateX(-2000px);
2394 | }
2395 |
2396 | 100% {
2397 | -webkit-transform: translateX(0);
2398 | transform: translateX(0);
2399 | }
2400 | }
2401 |
2402 | @keyframes slideInLeft {
2403 | 0% {
2404 | opacity: 0;
2405 | -webkit-transform: translateX(-2000px);
2406 | -ms-transform: translateX(-2000px);
2407 | transform: translateX(-2000px);
2408 | }
2409 |
2410 | 100% {
2411 | -webkit-transform: translateX(0);
2412 | -ms-transform: translateX(0);
2413 | transform: translateX(0);
2414 | }
2415 | }
2416 |
2417 | .slideInLeft {
2418 | -webkit-animation-name: slideInLeft;
2419 | animation-name: slideInLeft;
2420 | }
2421 |
2422 | @-webkit-keyframes slideInRight {
2423 | 0% {
2424 | opacity: 0;
2425 | -webkit-transform: translateX(2000px);
2426 | transform: translateX(2000px);
2427 | }
2428 |
2429 | 100% {
2430 | -webkit-transform: translateX(0);
2431 | transform: translateX(0);
2432 | }
2433 | }
2434 |
2435 | @keyframes slideInRight {
2436 | 0% {
2437 | opacity: 0;
2438 | -webkit-transform: translateX(2000px);
2439 | -ms-transform: translateX(2000px);
2440 | transform: translateX(2000px);
2441 | }
2442 |
2443 | 100% {
2444 | -webkit-transform: translateX(0);
2445 | -ms-transform: translateX(0);
2446 | transform: translateX(0);
2447 | }
2448 | }
2449 |
2450 | .slideInRight {
2451 | -webkit-animation-name: slideInRight;
2452 | animation-name: slideInRight;
2453 | }
2454 |
2455 | @-webkit-keyframes slideOutLeft {
2456 | 0% {
2457 | -webkit-transform: translateX(0);
2458 | transform: translateX(0);
2459 | }
2460 |
2461 | 100% {
2462 | opacity: 0;
2463 | -webkit-transform: translateX(-2000px);
2464 | transform: translateX(-2000px);
2465 | }
2466 | }
2467 |
2468 | @keyframes slideOutLeft {
2469 | 0% {
2470 | -webkit-transform: translateX(0);
2471 | -ms-transform: translateX(0);
2472 | transform: translateX(0);
2473 | }
2474 |
2475 | 100% {
2476 | opacity: 0;
2477 | -webkit-transform: translateX(-2000px);
2478 | -ms-transform: translateX(-2000px);
2479 | transform: translateX(-2000px);
2480 | }
2481 | }
2482 |
2483 | .slideOutLeft {
2484 | -webkit-animation-name: slideOutLeft;
2485 | animation-name: slideOutLeft;
2486 | }
2487 |
2488 | @-webkit-keyframes slideOutRight {
2489 | 0% {
2490 | -webkit-transform: translateX(0);
2491 | transform: translateX(0);
2492 | }
2493 |
2494 | 100% {
2495 | opacity: 0;
2496 | -webkit-transform: translateX(2000px);
2497 | transform: translateX(2000px);
2498 | }
2499 | }
2500 |
2501 | @keyframes slideOutRight {
2502 | 0% {
2503 | -webkit-transform: translateX(0);
2504 | -ms-transform: translateX(0);
2505 | transform: translateX(0);
2506 | }
2507 |
2508 | 100% {
2509 | opacity: 0;
2510 | -webkit-transform: translateX(2000px);
2511 | -ms-transform: translateX(2000px);
2512 | transform: translateX(2000px);
2513 | }
2514 | }
2515 |
2516 | .slideOutRight {
2517 | -webkit-animation-name: slideOutRight;
2518 | animation-name: slideOutRight;
2519 | }
2520 |
2521 | @-webkit-keyframes slideOutUp {
2522 | 0% {
2523 | -webkit-transform: translateY(0);
2524 | transform: translateY(0);
2525 | }
2526 |
2527 | 100% {
2528 | opacity: 0;
2529 | -webkit-transform: translateY(-2000px);
2530 | transform: translateY(-2000px);
2531 | }
2532 | }
2533 |
2534 | @keyframes slideOutUp {
2535 | 0% {
2536 | -webkit-transform: translateY(0);
2537 | -ms-transform: translateY(0);
2538 | transform: translateY(0);
2539 | }
2540 |
2541 | 100% {
2542 | opacity: 0;
2543 | -webkit-transform: translateY(-2000px);
2544 | -ms-transform: translateY(-2000px);
2545 | transform: translateY(-2000px);
2546 | }
2547 | }
2548 |
2549 | .slideOutUp {
2550 | -webkit-animation-name: slideOutUp;
2551 | animation-name: slideOutUp;
2552 | }
2553 |
2554 | @-webkit-keyframes hinge {
2555 | 0% {
2556 | -webkit-transform: rotate(0);
2557 | transform: rotate(0);
2558 | -webkit-transform-origin: top left;
2559 | transform-origin: top left;
2560 | -webkit-animation-timing-function: ease-in-out;
2561 | animation-timing-function: ease-in-out;
2562 | }
2563 |
2564 | 20%, 60% {
2565 | -webkit-transform: rotate(80deg);
2566 | transform: rotate(80deg);
2567 | -webkit-transform-origin: top left;
2568 | transform-origin: top left;
2569 | -webkit-animation-timing-function: ease-in-out;
2570 | animation-timing-function: ease-in-out;
2571 | }
2572 |
2573 | 40% {
2574 | -webkit-transform: rotate(60deg);
2575 | transform: rotate(60deg);
2576 | -webkit-transform-origin: top left;
2577 | transform-origin: top left;
2578 | -webkit-animation-timing-function: ease-in-out;
2579 | animation-timing-function: ease-in-out;
2580 | }
2581 |
2582 | 80% {
2583 | -webkit-transform: rotate(60deg) translateY(0);
2584 | transform: rotate(60deg) translateY(0);
2585 | opacity: 1;
2586 | -webkit-transform-origin: top left;
2587 | transform-origin: top left;
2588 | -webkit-animation-timing-function: ease-in-out;
2589 | animation-timing-function: ease-in-out;
2590 | }
2591 |
2592 | 100% {
2593 | -webkit-transform: translateY(700px);
2594 | transform: translateY(700px);
2595 | opacity: 0;
2596 | }
2597 | }
2598 |
2599 | @keyframes hinge {
2600 | 0% {
2601 | -webkit-transform: rotate(0);
2602 | -ms-transform: rotate(0);
2603 | transform: rotate(0);
2604 | -webkit-transform-origin: top left;
2605 | -ms-transform-origin: top left;
2606 | transform-origin: top left;
2607 | -webkit-animation-timing-function: ease-in-out;
2608 | animation-timing-function: ease-in-out;
2609 | }
2610 |
2611 | 20%, 60% {
2612 | -webkit-transform: rotate(80deg);
2613 | -ms-transform: rotate(80deg);
2614 | transform: rotate(80deg);
2615 | -webkit-transform-origin: top left;
2616 | -ms-transform-origin: top left;
2617 | transform-origin: top left;
2618 | -webkit-animation-timing-function: ease-in-out;
2619 | animation-timing-function: ease-in-out;
2620 | }
2621 |
2622 | 40% {
2623 | -webkit-transform: rotate(60deg);
2624 | -ms-transform: rotate(60deg);
2625 | transform: rotate(60deg);
2626 | -webkit-transform-origin: top left;
2627 | -ms-transform-origin: top left;
2628 | transform-origin: top left;
2629 | -webkit-animation-timing-function: ease-in-out;
2630 | animation-timing-function: ease-in-out;
2631 | }
2632 |
2633 | 80% {
2634 | -webkit-transform: rotate(60deg) translateY(0);
2635 | -ms-transform: rotate(60deg) translateY(0);
2636 | transform: rotate(60deg) translateY(0);
2637 | opacity: 1;
2638 | -webkit-transform-origin: top left;
2639 | -ms-transform-origin: top left;
2640 | transform-origin: top left;
2641 | -webkit-animation-timing-function: ease-in-out;
2642 | animation-timing-function: ease-in-out;
2643 | }
2644 |
2645 | 100% {
2646 | -webkit-transform: translateY(700px);
2647 | -ms-transform: translateY(700px);
2648 | transform: translateY(700px);
2649 | opacity: 0;
2650 | }
2651 | }
2652 |
2653 | .hinge {
2654 | -webkit-animation-name: hinge;
2655 | animation-name: hinge;
2656 | }
2657 |
2658 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
2659 |
2660 | @-webkit-keyframes rollIn {
2661 | 0% {
2662 | opacity: 0;
2663 | -webkit-transform: translateX(-100%) rotate(-120deg);
2664 | transform: translateX(-100%) rotate(-120deg);
2665 | }
2666 |
2667 | 100% {
2668 | opacity: 1;
2669 | -webkit-transform: translateX(0px) rotate(0deg);
2670 | transform: translateX(0px) rotate(0deg);
2671 | }
2672 | }
2673 |
2674 | @keyframes rollIn {
2675 | 0% {
2676 | opacity: 0;
2677 | -webkit-transform: translateX(-100%) rotate(-120deg);
2678 | -ms-transform: translateX(-100%) rotate(-120deg);
2679 | transform: translateX(-100%) rotate(-120deg);
2680 | }
2681 |
2682 | 100% {
2683 | opacity: 1;
2684 | -webkit-transform: translateX(0px) rotate(0deg);
2685 | -ms-transform: translateX(0px) rotate(0deg);
2686 | transform: translateX(0px) rotate(0deg);
2687 | }
2688 | }
2689 |
2690 | .rollIn {
2691 | -webkit-animation-name: rollIn;
2692 | animation-name: rollIn;
2693 | }
2694 |
2695 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
2696 |
2697 | @-webkit-keyframes rollOut {
2698 | 0% {
2699 | opacity: 1;
2700 | -webkit-transform: translateX(0px) rotate(0deg);
2701 | transform: translateX(0px) rotate(0deg);
2702 | }
2703 |
2704 | 100% {
2705 | opacity: 0;
2706 | -webkit-transform: translateX(100%) rotate(120deg);
2707 | transform: translateX(100%) rotate(120deg);
2708 | }
2709 | }
2710 |
2711 | @keyframes rollOut {
2712 | 0% {
2713 | opacity: 1;
2714 | -webkit-transform: translateX(0px) rotate(0deg);
2715 | -ms-transform: translateX(0px) rotate(0deg);
2716 | transform: translateX(0px) rotate(0deg);
2717 | }
2718 |
2719 | 100% {
2720 | opacity: 0;
2721 | -webkit-transform: translateX(100%) rotate(120deg);
2722 | -ms-transform: translateX(100%) rotate(120deg);
2723 | transform: translateX(100%) rotate(120deg);
2724 | }
2725 | }
2726 |
2727 | .rollOut {
2728 | -webkit-animation-name: rollOut;
2729 | animation-name: rollOut;
2730 | }
2731 | @-webkit-keyframes zoomIn {
2732 | from {
2733 | opacity: 0;
2734 | -webkit-transform: scale3d(.3, .3, .3);
2735 | transform: scale3d(.3, .3, .3);
2736 | }
2737 |
2738 | 50% {
2739 | opacity: 1;
2740 | }
2741 | }
2742 |
2743 | @keyframes zoomIn {
2744 | from {
2745 | opacity: 0;
2746 | -webkit-transform: scale3d(.3, .3, .3);
2747 | transform: scale3d(.3, .3, .3);
2748 | }
2749 |
2750 | 50% {
2751 | opacity: 1;
2752 | }
2753 | }
2754 |
2755 | .zoomIn {
2756 | -webkit-animation-name: zoomIn;
2757 | animation-name: zoomIn;
2758 | }
2759 |
2760 | @-webkit-keyframes zoomInDown {
2761 | from {
2762 | opacity: 0;
2763 | -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
2764 | transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
2765 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2766 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2767 | }
2768 |
2769 | 60% {
2770 | opacity: 1;
2771 | -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
2772 | transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
2773 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2774 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2775 | }
2776 | }
2777 |
2778 | @keyframes zoomInDown {
2779 | from {
2780 | opacity: 0;
2781 | -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
2782 | transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
2783 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2784 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2785 | }
2786 |
2787 | 60% {
2788 | opacity: 1;
2789 | -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
2790 | transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
2791 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2792 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2793 | }
2794 | }
2795 |
2796 | .zoomInDown {
2797 | -webkit-animation-name: zoomInDown;
2798 | animation-name: zoomInDown;
2799 | }
2800 |
2801 | @-webkit-keyframes zoomInLeft {
2802 | from {
2803 | opacity: 0;
2804 | -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
2805 | transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
2806 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2807 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2808 | }
2809 |
2810 | 60% {
2811 | opacity: 1;
2812 | -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
2813 | transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
2814 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2815 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2816 | }
2817 | }
2818 |
2819 | @keyframes zoomInLeft {
2820 | from {
2821 | opacity: 0;
2822 | -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
2823 | transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
2824 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2825 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2826 | }
2827 |
2828 | 60% {
2829 | opacity: 1;
2830 | -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
2831 | transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
2832 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2833 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2834 | }
2835 | }
2836 |
2837 | .zoomInLeft {
2838 | -webkit-animation-name: zoomInLeft;
2839 | animation-name: zoomInLeft;
2840 | }
2841 |
2842 | @-webkit-keyframes zoomInRight {
2843 | from {
2844 | opacity: 0;
2845 | -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
2846 | transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
2847 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2848 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2849 | }
2850 |
2851 | 60% {
2852 | opacity: 1;
2853 | -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
2854 | transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
2855 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2856 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2857 | }
2858 | }
2859 |
2860 | @keyframes zoomInRight {
2861 | from {
2862 | opacity: 0;
2863 | -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
2864 | transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
2865 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2866 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2867 | }
2868 |
2869 | 60% {
2870 | opacity: 1;
2871 | -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
2872 | transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
2873 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2874 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2875 | }
2876 | }
2877 |
2878 | .zoomInRight {
2879 | -webkit-animation-name: zoomInRight;
2880 | animation-name: zoomInRight;
2881 | }
2882 |
2883 | @-webkit-keyframes zoomInUp {
2884 | from {
2885 | opacity: 0;
2886 | -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
2887 | transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
2888 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2889 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2890 | }
2891 |
2892 | 60% {
2893 | opacity: 1;
2894 | -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
2895 | transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
2896 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2897 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2898 | }
2899 | }
2900 |
2901 | @keyframes zoomInUp {
2902 | from {
2903 | opacity: 0;
2904 | -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
2905 | transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
2906 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2907 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2908 | }
2909 |
2910 | 60% {
2911 | opacity: 1;
2912 | -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
2913 | transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
2914 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2915 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2916 | }
2917 | }
2918 |
2919 | .zoomInUp {
2920 | -webkit-animation-name: zoomInUp;
2921 | animation-name: zoomInUp;
2922 | }
2923 |
2924 | @-webkit-keyframes zoomOut {
2925 | from {
2926 | opacity: 1;
2927 | }
2928 |
2929 | 50% {
2930 | opacity: 0;
2931 | -webkit-transform: scale3d(.3, .3, .3);
2932 | transform: scale3d(.3, .3, .3);
2933 | }
2934 |
2935 | to {
2936 | opacity: 0;
2937 | }
2938 | }
2939 |
2940 | @keyframes zoomOut {
2941 | from {
2942 | opacity: 1;
2943 | }
2944 |
2945 | 50% {
2946 | opacity: 0;
2947 | -webkit-transform: scale3d(.3, .3, .3);
2948 | transform: scale3d(.3, .3, .3);
2949 | }
2950 |
2951 | to {
2952 | opacity: 0;
2953 | }
2954 | }
2955 |
2956 | .zoomOut {
2957 | -webkit-animation-name: zoomOut;
2958 | animation-name: zoomOut;
2959 | }
2960 |
2961 | @-webkit-keyframes zoomOutDown {
2962 | 40% {
2963 | opacity: 1;
2964 | -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
2965 | transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
2966 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2967 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2968 | }
2969 |
2970 | to {
2971 | opacity: 0;
2972 | -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
2973 | transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
2974 | -webkit-transform-origin: center bottom;
2975 | transform-origin: center bottom;
2976 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2977 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2978 | }
2979 | }
2980 |
2981 | @keyframes zoomOutDown {
2982 | 40% {
2983 | opacity: 1;
2984 | -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
2985 | transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
2986 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2987 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2988 | }
2989 |
2990 | to {
2991 | opacity: 0;
2992 | -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
2993 | transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
2994 | -webkit-transform-origin: center bottom;
2995 | transform-origin: center bottom;
2996 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2997 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2998 | }
2999 | }
3000 |
3001 | .zoomOutDown {
3002 | -webkit-animation-name: zoomOutDown;
3003 | animation-name: zoomOutDown;
3004 | }
3005 |
3006 | @-webkit-keyframes zoomOutLeft {
3007 | 40% {
3008 | opacity: 1;
3009 | -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3010 | transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3011 | }
3012 |
3013 | to {
3014 | opacity: 0;
3015 | -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);
3016 | transform: scale(.1) translate3d(-2000px, 0, 0);
3017 | -webkit-transform-origin: left center;
3018 | transform-origin: left center;
3019 | }
3020 | }
3021 |
3022 | @keyframes zoomOutLeft {
3023 | 40% {
3024 | opacity: 1;
3025 | -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3026 | transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3027 | }
3028 |
3029 | to {
3030 | opacity: 0;
3031 | -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);
3032 | transform: scale(.1) translate3d(-2000px, 0, 0);
3033 | -webkit-transform-origin: left center;
3034 | transform-origin: left center;
3035 | }
3036 | }
3037 |
3038 | .zoomOutLeft {
3039 | -webkit-animation-name: zoomOutLeft;
3040 | animation-name: zoomOutLeft;
3041 | }
3042 |
3043 | @-webkit-keyframes zoomOutRight {
3044 | 40% {
3045 | opacity: 1;
3046 | -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3047 | transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3048 | }
3049 |
3050 | to {
3051 | opacity: 0;
3052 | -webkit-transform: scale(.1) translate3d(2000px, 0, 0);
3053 | transform: scale(.1) translate3d(2000px, 0, 0);
3054 | -webkit-transform-origin: right center;
3055 | transform-origin: right center;
3056 | }
3057 | }
3058 |
3059 | @keyframes zoomOutRight {
3060 | 40% {
3061 | opacity: 1;
3062 | -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3063 | transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3064 | }
3065 |
3066 | to {
3067 | opacity: 0;
3068 | -webkit-transform: scale(.1) translate3d(2000px, 0, 0);
3069 | transform: scale(.1) translate3d(2000px, 0, 0);
3070 | -webkit-transform-origin: right center;
3071 | transform-origin: right center;
3072 | }
3073 | }
3074 |
3075 | .zoomOutRight {
3076 | -webkit-animation-name: zoomOutRight;
3077 | animation-name: zoomOutRight;
3078 | }
3079 |
3080 | @-webkit-keyframes zoomOutUp {
3081 | 40% {
3082 | opacity: 1;
3083 | -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3084 | transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3085 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3086 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3087 | }
3088 |
3089 | to {
3090 | opacity: 0;
3091 | -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
3092 | transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
3093 | -webkit-transform-origin: center bottom;
3094 | transform-origin: center bottom;
3095 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3096 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3097 | }
3098 | }
3099 |
3100 | @keyframes zoomOutUp {
3101 | 40% {
3102 | opacity: 1;
3103 | -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3104 | transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3105 | -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3106 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3107 | }
3108 |
3109 | to {
3110 | opacity: 0;
3111 | -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
3112 | transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
3113 | -webkit-transform-origin: center bottom;
3114 | transform-origin: center bottom;
3115 | -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3116 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3117 | }
3118 | }
3119 |
3120 | .zoomOutUp {
3121 | -webkit-animation-name: zoomOutUp;
3122 | animation-name: zoomOutUp;
3123 | }
--------------------------------------------------------------------------------
/src/assets/css/main.css:
--------------------------------------------------------------------------------
1 |
2 | @import url('https://fonts.googleapis.com/css2?family=Alex+Brush&family=Oswald:wght@200&display=swap');
3 |
4 | @import url('https://fonts.googleapis.com/css2?family=Alex+Brush&family=Oswald:wght@200&display=swap');
5 |
6 | @import url('https://fonts.googleapis.com/css2?family=PT+Sans&display=swap');
7 |
8 | @import url('https://fonts.googleapis.com/css2?family=Oswald:wght@200&display=swap');
9 |
10 | :root {
11 | --light-white: #f2fbfc ;
12 | --light-color: #ffffff;
13 | --medium-color: #B9BAB3;
14 | --dark-color: #001F26;
15 | --highlight-color: #cfe5eb;
16 | --accent-color: #6d8a92;
17 |
18 | }
19 |
20 | * {
21 | margin: 0;
22 | padding: 0;
23 | }
24 |
25 | html {
26 | scroll-behavior: smooth;
27 |
28 | }
29 |
30 | body {
31 |
32 | letter-spacing: 0.2em;
33 | font-weight: normal;
34 | font-style: normal;
35 | overflow-x: hidden;
36 |
37 | }
38 |
39 | h1, h2, h3 {
40 | font-family: 'Alex Brush', sans-serif;
41 | }
42 |
43 | p {
44 | font-family: 'Oswald', sans-serif;
45 | }
46 |
47 | /* h2 {
48 | font-family: 'Roboto', sans-serif;
49 | } */
50 |
51 | h3 {
52 | font-family: 'PT Sans', sans-serif;
53 | }
54 |
55 |
56 |
57 | @media only screen and (min-width: 480px) and (max-width: 767px) {
58 | .container {
59 | width: 450px;
60 | }
61 | }
62 |
63 | .section {
64 | padding-top: 100px;
65 | padding-bottom: 100px;
66 | position: relative;
67 | }
68 |
69 |
70 |
71 | @media only screen and (min-width: 768px) and (max-width: 991px) {
72 | .section {
73 | padding-top: 60px;
74 | padding-bottom: 60px;
75 | }
76 | }
77 |
78 | @media (max-width: 767px) {
79 | .section {
80 | padding-top: 50px;
81 | padding-bottom: 50px;
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/src/assets/fonts/LineIcons.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Pfrommer1982/Complete_Portfolio/4454476e1cfe6438c6f48e7db883263310cac0f8/src/assets/fonts/LineIcons.eot
--------------------------------------------------------------------------------
/src/assets/fonts/LineIcons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Pfrommer1982/Complete_Portfolio/4454476e1cfe6438c6f48e7db883263310cac0f8/src/assets/fonts/LineIcons.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/LineIcons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Pfrommer1982/Complete_Portfolio/4454476e1cfe6438c6f48e7db883263310cac0f8/src/assets/fonts/LineIcons.woff
--------------------------------------------------------------------------------
/src/assets/fonts/LineIcons.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Pfrommer1982/Complete_Portfolio/4454476e1cfe6438c6f48e7db883263310cac0f8/src/assets/fonts/LineIcons.woff2
--------------------------------------------------------------------------------
/src/assets/images/Jonathan Dominion Template.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Pfrommer1982/Complete_Portfolio/4454476e1cfe6438c6f48e7db883263310cac0f8/src/assets/images/Jonathan Dominion Template.gif
--------------------------------------------------------------------------------
/src/components/1. Header Components/Hero/Hero.css:
--------------------------------------------------------------------------------
1 | @import url('../../../assets/css/main.css');
2 |
3 | .hero-area {
4 | position: relative;
5 | padding: 25px 0 100px 0;
6 | background-size: 150% auto;
7 | filter: brightness(0.8) contrast(1.2);
8 | background-position: right bottom ;
9 | background-repeat: no-repeat;
10 | }
11 |
12 | .hero-content,
13 | .name-container {
14 | text-align: center;
15 | }
16 |
17 | .hero-content h1 {
18 | font-size: 4rem;
19 | font-weight: bold;
20 | text-transform: uppercase;
21 | color: var(--light-color);
22 | margin: 0;
23 | display: flex;
24 | flex-direction: column;
25 | align-items: center;
26 | }
27 |
28 | .hero-content h1 span {
29 | border-top: 1px solid var(--light-color);
30 | padding-top: 10px;
31 | }
32 |
33 | .hero-content p {
34 | margin-top: 15px;
35 | margin-bottom: 2em;
36 |
37 | }
38 |
39 | #button {
40 | padding: 0.4em 3em;
41 | margin-top: 0.6em;
42 | border: 1px solid var(--accent-color);
43 | background-color: var(--accent-color);
44 | border-radius: 6px;
45 | }
46 |
47 | #button:hover {
48 | background-color: var(--highlight-color);
49 | border-color: var(--highlight-color);
50 | }
51 |
52 | .btn:hover {
53 | box-shadow: 0px 5px 20px var(--dark-color);
54 | background-color: var(--accent-color);
55 | }
56 |
57 | .hero-area .hero-content {
58 | border-radius: 0;
59 | position: relative;
60 | z-index: 1;
61 | text-align: center;
62 | }
63 |
64 | .hero-area .hero-content h1 {
65 | font-size: 10vh;
66 | padding-bottom: 0.1em;
67 | font-weight: 800;
68 | line-height: 50px;
69 | color: var(--highlight-color);
70 | text-shadow: 0px 3px 8px var(--dark-color);
71 | text-transform: capitalize;
72 | align-items: center;
73 | --text-shadow-color: 0px 3px 8px var(--dark-color);
74 | }
75 |
76 | h1.first-name {
77 | margin-top: 0.8em;
78 | margin-bottom: 0.4em;
79 | padding-bottom: 1em;
80 | letter-spacing: 0.4em;
81 | text-align: center;
82 | color: var(--highlight-color);
83 | }
84 |
85 | h1.last-name {
86 | text-align: center;
87 | padding-bottom: 2.4em;
88 | margin-bottom: 2em;
89 | }
90 |
91 | .hero-area .hero-content h1 span {
92 | display: block;
93 | }
94 |
95 | .hero-area .hero-content p {
96 | margin-top: 2.8em;
97 | font-size: 2em;
98 | color: var(--light-color);
99 | }
100 |
101 | .hero-area .hero-content {
102 | margin-top: 40px;
103 | }
104 |
105 | .hero-area .hero-content .btn {
106 | color: var(--highlight-color);
107 | margin-right: 12px;
108 | }
109 |
110 | .hero-area .hero-content .btn i {
111 | display: flex;
112 | font-size: 1.2em;
113 | text-align: center;
114 | align-items: center;
115 | }
116 |
117 | .hero-area .hero-content .btn:hover {
118 | background-color: var(--highlight-color);
119 | color: var(--light-color);
120 | text-align: center;
121 | }
122 |
123 | @keyframes pulse-border {
124 | 0% {
125 | transform: scale(1);
126 | opacity: 1;
127 | }
128 | 100% {
129 | transform: scale(1.3);
130 | opacity: 0;
131 | }
132 | }
133 |
134 | @keyframes pulse-border-2 {
135 | 0% {
136 | transform: scale(1);
137 | opacity: 1;
138 | }
139 | 100% {
140 | transform: scale(1.5);
141 | opacity: 0;
142 | }
143 | }
144 |
145 | @media only screen and (min-width: 992px) and (max-width: 1199px) {
146 | .hero-area {
147 | position: relative;
148 | padding: 25px 0 100px 0;
149 | background-size: 150% auto;
150 | filter: brightness(0.8) contrast(1.2);
151 | background-position: right bottom ;
152 | background-repeat: no-repeat;
153 | }
154 | .hero-area .hero-content h1 {
155 | font-size: 10vh;
156 | }
157 |
158 | p {
159 | margin-bottom: 250px;
160 | }
161 | }
162 |
163 | @media only screen and (min-width: 768px) and (max-width: 991px) {
164 |
165 | .hero-area {
166 | position: relative;
167 | padding: 25px 0 100px 0;
168 | background-size: 150% auto;
169 | filter: brightness(0.8) contrast(1.2);
170 | background-position: right bottom ;
171 | background-repeat: no-repeat;
172 | }
173 |
174 | .hero-area .hero-content {
175 | text-align: center;
176 | }
177 |
178 | .hero-area .hero-content h1 {
179 | font-size: 8vh;
180 | font-weight: 700;
181 | line-height: 38px;
182 | }
183 |
184 | .hero-area .hero-content p {
185 | font-size: 2.5vh;
186 | }
187 |
188 | h1.first-name {
189 | margin-top: 30px;
190 | }
191 |
192 | h1.last-name {
193 | margin-bottom: 1px;
194 | }
195 | }
196 |
197 | @media (max-width: 767px) {
198 | .hero-area {
199 | position: relative;
200 | padding: 25px 0 100px 0;
201 | background-size: 150% auto;
202 | filter: brightness(0.8) contrast(1.2);
203 | background-position: right bottom ;
204 | background-repeat: no-repeat;
205 | }
206 | .hero-area .hero-content {
207 | padding: 0 10px;
208 | text-align: center;
209 | }
210 |
211 | .hero-area .hero-content h1 {
212 | font-size: 5vh;
213 | line-height: 32px;
214 | }
215 |
216 | .hero-area .hero-content p {
217 | margin-top: 15px;
218 | font-size: 2.5vh;
219 | }
220 | h1.first-name {
221 | margin-top: 0px;
222 | }
223 |
224 | h1.last-name {
225 | margin-bottom: 1px;
226 | }
227 | }
228 |
229 | @media (max-width: 500px) {
230 | .hero-area {
231 | position: relative;
232 | padding: 25px 0 100px 0;
233 | background-size: 150% auto;
234 | filter: brightness(0.8) contrast(1.2);
235 | background-position: right bottom ;
236 | background-repeat: no-repeat;
237 | }
238 |
239 | h1.first-name {
240 | margin-top: 0px;
241 | }
242 |
243 | h1.last-name {
244 | margin-bottom: 1px;
245 | }
246 | }
247 |
248 |
249 |
250 | @media only screen and (max-width: 767px) {
251 | .btn {
252 | margin-bottom: 5px;
253 | }
254 | }
255 |
256 | @media only screen and (min-width: 768px) {
257 | .btn {
258 | margin-right: 5px;
259 | }
260 | }
261 |
--------------------------------------------------------------------------------
/src/components/1. Header Components/Hero/Hero.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { name, socialProfiles } from '../../../your_info';
3 | import Navbar from '../Navbar/Navbar';
4 | import Typewriter from '../Typewriter/Typewriter';
5 | import './Hero.css';
6 | import { backgroundImageUrl } from '../../../your_info';
7 |
8 |
9 | const Hero = () => {
10 | const { firstname, lastname } = name;
11 |
12 | const heroStyle = {
13 | backgroundImage: `url(${backgroundImageUrl})`,
14 | };
15 |
16 | return (
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | {firstname}
25 | {lastname}
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | {socialProfiles.map((profile, index) => (
34 |
41 |
42 |
43 | ))}
44 |
45 |
46 |
47 |
48 |
49 | );
50 | };
51 |
52 | export default Hero;
53 |
--------------------------------------------------------------------------------
/src/components/1. Header Components/Navbar/Navbar.css:
--------------------------------------------------------------------------------
1 | @import url('../../../assets/css/main.css');
2 |
3 | .hero-blur {
4 | position: fixed;
5 | top: 0;
6 | left: 0;
7 | width: 100%;
8 | height: 100%;
9 | z-index: 3;
10 | backdrop-filter: blur(8px);
11 | pointer-events: none;
12 | transition: opacity 0.3s ease-in-out;
13 | }
14 |
15 | .hero-blur.blur {
16 | opacity: 0;
17 | pointer-events: auto;
18 | }
19 |
20 | .slide-in {
21 | animation: slide-in 0.3s ease-in-out forwards;
22 | }
23 |
24 | @keyframes slide-in {
25 | from {
26 | transform: translateY(-100%);
27 | }
28 |
29 | to {
30 | transform: translateY(0);
31 | }
32 | }
33 |
34 | .nav-item {
35 | padding-top: 20px;
36 | }
37 |
38 | .navbar-toggler:focus {
39 | box-shadow: none !important;
40 | }
41 |
42 | .nav-link {
43 | font-size: 18px;
44 | text-transform: uppercase;
45 | transition: all 0.3s;
46 | padding: 5px 0;
47 | position: relative;
48 | display: flex;
49 | align-items: center;
50 | }
51 |
52 | .nav-link::before {
53 | content: '';
54 | position: absolute;
55 | width: 100%;
56 | height: 2px;
57 | bottom: -5px;
58 | left: 0;
59 | transform: scaleX(0);
60 | transform-origin: center;
61 | transition: transform 0.3s;
62 | }
63 |
64 | .nav-link:hover {
65 | text-decoration: none;
66 | }
67 |
68 | .link-span {
69 | color: var(--light-color);
70 | }
71 |
72 | .link-span:hover {
73 | color: var(--light-white);
74 | }
75 |
76 | .nav-link:hover::before {
77 | transform: scaleX(1);
78 | background-color: var(--accent-color);
79 | }
80 |
81 | .navbar-nav li {
82 | padding-left: 35px;
83 | margin-top: -15px;
84 | }
85 |
86 | .icon {
87 | padding-right: 5px;
88 | padding-left: 5px;
89 | transform: translateY(-2px);
90 | }
91 |
92 | .nav-link:hover .icon {
93 | animation: download 0.82s cubic-bezier(0.2, 0.46, 0.69, 0.47) both;
94 | animation-delay: 150ms;
95 | }
96 |
97 | @keyframes download {
98 | 10%,
99 | 90% {
100 | transform: translate3d(0, -2px, 0);
101 | }
102 |
103 | 20%,
104 | 80% {
105 | transform: translate3d(0, 4px, 0);
106 | }
107 |
108 | 30%,
109 | 50%,
110 | 70% {
111 | transform: translate3d(0, -8px, 0);
112 | }
113 |
114 | 40%,
115 | 60% {
116 | transform: translate3d(0, 8px, 0);
117 | }
118 | }
119 |
120 | @media screen and (max-width: 991px) {
121 | #nav-length {
122 | width: 100%;
123 | }
124 |
125 | .border-hover {
126 | border-top: 0;
127 | }
128 |
129 | .nav-item {
130 | padding-top: 15px;
131 | margin-top: 10px;
132 | }
133 |
134 | .navbar-nav {
135 | align-items: center;
136 | margin-top: 40px;
137 | }
138 |
139 | .navbar li {
140 | padding-top: 20px;
141 | }
142 |
143 | .navbar-collapse {
144 | position: fixed;
145 | top: 0;
146 | bottom: 0;
147 | right: -100%;
148 | width: 70%;
149 | max-width: 300px;
150 | background-color: var(--medium-color);
151 | transition: right 0.3s;
152 | z-index: 999;
153 | box-shadow: var(--dark-color) 5px;
154 | }
155 |
156 | .navbar-open .navbar-collapse {
157 | right: 0;
158 | }
159 |
160 | .navbar-toggler.custom-toggler {
161 | position: fixed;
162 | top: 15px;
163 | right: 15px;
164 | z-index: 1000;
165 | background-color: transparent;
166 | border: none;
167 | outline: none;
168 | cursor: pointer;
169 | padding: 0;
170 | width: 30px;
171 | height: 30px;
172 | display: flex;
173 | flex-direction: column;
174 | justify-content: space-between;
175 | }
176 |
177 | .navbar-toggler.custom-toggler span {
178 | display: block;
179 | width: 100%;
180 | height: 2px;
181 | background-color: var(--light-color);
182 | margin-bottom: 4px;
183 | transition: transform 0.3s, opacity 0.3s;
184 | }
185 |
186 | .navbar-toggler.custom-toggler.open span:nth-child(1) {
187 | transform-origin: top left;
188 | transform: rotate(45deg) translate(3px, -1px);
189 | }
190 |
191 | .navbar-toggler.custom-toggler.open span:nth-child(2) {
192 | opacity: 0;
193 | }
194 |
195 | .navbar-toggler.custom-toggler.open span:nth-child(3) {
196 | transform-origin: bottom left;
197 | transform: rotate(-45deg) translate(3px, 1px);
198 | }
199 |
200 | .navbar-toggler.custom-toggler.open span:nth-child(1),
201 | .navbar-toggler.custom-toggler.open span:nth-child(2),
202 | .navbar-toggler.custom-toggler.open span:nth-child(3) {
203 | background-color: var(--light-color);
204 | }
205 |
206 | .navbar-nav {
207 | display: flex;
208 | flex-direction: column;
209 | align-items: flex-start;
210 | height: 100%;
211 | }
212 |
213 | .nav-item {
214 | margin-bottom: 2em;
215 | padding-left: 20px;
216 | }
217 |
218 | .nav-link {
219 | font-size: 18px;
220 | text-transform: uppercase;
221 | transition: all 0.3s;
222 | padding: 5px 0;
223 | position: relative;
224 | display: flex;
225 | align-items: center;
226 | }
227 |
228 | .nav-link::before {
229 | content: '';
230 | position: absolute;
231 | width: 100%;
232 | height: 2px;
233 | background-color: var(--hightlight-color);
234 | bottom: -5px;
235 | left: 0;
236 | transform: scaleX(0);
237 | transform-origin: center;
238 | transition: transform 0.3s;
239 | }
240 |
241 | .nav-link:hover {
242 | text-decoration: none;
243 | }
244 |
245 | .nav-link:hover::before {
246 | transform: scaleX(1);
247 | }
248 |
249 | @media screen and (min-width: 992px) {
250 | .nav-item:hover .nav-link::before {
251 | transform: scaleX(1);
252 | background-color: var(--accent-color);
253 | }
254 | }
255 | }
256 |
257 | @media screen and (max-width: 500px) {
258 | .navbar-collapse {
259 | position: fixed;
260 | top: 0;
261 | bottom: 0;
262 | right: -100%;
263 | width: 70%;
264 | max-width: 300px;
265 | background-color: var(--medium-color);
266 | transition: right 0.3s;
267 | z-index: 999;
268 |
269 | }
270 | }
271 |
--------------------------------------------------------------------------------
/src/components/1. Header Components/Navbar/Navbar.jsx:
--------------------------------------------------------------------------------
1 | import React, { useState, useEffect } from 'react';
2 | import './Navbar.css';
3 | import { name } from '../../../your_info';
4 |
5 |
6 | const Navbar = () => {
7 | const { url } = name;
8 | const [isMenuOpen, setIsMenuOpen] = useState(false);
9 |
10 | const toggleMenu = () => {
11 | setIsMenuOpen(!isMenuOpen);
12 | };
13 |
14 | useEffect(() => {
15 | const handleResize = () => {
16 | if (window.innerWidth >= 992) {
17 | setIsMenuOpen(false);
18 | }
19 | };
20 |
21 | window.addEventListener('resize', handleResize);
22 |
23 | return () => {
24 | window.removeEventListener('resize', handleResize);
25 | };
26 | }, []);
27 |
28 | return (
29 | <>
30 |
77 | {isMenuOpen && }
78 | >
79 | );
80 | };
81 |
82 | export default Navbar;
83 |
--------------------------------------------------------------------------------
/src/components/1. Header Components/Typewriter/Typewriter.css:
--------------------------------------------------------------------------------
1 | @import url('../../../assets/css/main.css');
2 |
3 |
4 | .section.aboutme p {
5 | color: var(--accent-color);
6 | font-size: 24px;
7 | font-weight: bold;
8 | margin-top: 10px;
9 |
10 | }
11 |
12 | .blinking-cursor {
13 | display: inline-block;
14 | vertical-align: bottom;
15 | width: 0.2em;
16 | height: 1.2em;
17 | margin-left: 0.1em;
18 | background-color: var(--highlight-color);
19 | animation: blink 1s infinite;
20 | }
21 |
22 | @keyframes blink {
23 | 0% {
24 | opacity: 0;
25 | }
26 | 50% {
27 | opacity: 1;
28 | }
29 | 100% {
30 | opacity: 0;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/components/1. Header Components/Typewriter/Typewriter.jsx:
--------------------------------------------------------------------------------
1 | import React, { useState, useEffect, useMemo } from 'react';
2 | import { typeWriterText } from '../../../your_info'
3 | import './Typewriter.css';
4 |
5 |
6 | const typing_speed = 150;
7 | const backspace_speed = 50;
8 |
9 | function Typewriter() {
10 | const [skill, setSkill] = useState("");
11 | const [isDeleting, setIsDeleting] = useState(false);
12 | const [index, setIndex] = useState(0);
13 | const [isFullyDisplayed, setIsFullyDisplayed] = useState(false);
14 |
15 | useEffect(() => {
16 | let interval = setInterval(() => {
17 | if (isDeleting) {
18 | setSkill(prevSkill => prevSkill.substring(0, prevSkill.length - 1));
19 | if (skill === '') {
20 | setIsDeleting(false);
21 | setIsFullyDisplayed(false);
22 | }
23 | } else {
24 | const nextSkill = typeWriterText[index];
25 | setSkill(prevSkill => nextSkill.substring(0, prevSkill.length + 1));
26 | if (skill === nextSkill) {
27 | setIsFullyDisplayed(true);
28 | setTimeout(() => {
29 | setIsDeleting(true);
30 | setTimeout(() => {
31 | setIsFullyDisplayed(false);
32 | setIndex((index + 1) % typeWriterText.length);
33 | }, 500);
34 | }, 1000);
35 | }
36 | }
37 | }, isFullyDisplayed ? backspace_speed : typing_speed);
38 |
39 | return () => clearInterval(interval);
40 | }, [skill, isDeleting, index, isFullyDisplayed]);
41 |
42 | const blinkingCursor = useMemo(() => {
43 | return isFullyDisplayed ? '' : _;
44 | }, [isFullyDisplayed]);
45 |
46 | return (
47 | {skill}{blinkingCursor}
48 | );
49 | }
50 |
51 | export default Typewriter;
52 |
--------------------------------------------------------------------------------
/src/components/2. Content Components/Achievement/Achievement.css:
--------------------------------------------------------------------------------
1 | @import url('../../../assets/css/main.css');
2 |
3 | .our-achievement {
4 | background-color: var(--dark-color);
5 | text-align: center;
6 | padding: 130px 0;
7 | }
8 |
9 | @media only screen and (min-width: 768px) and (max-width: 991px) {
10 | .our-achievement {
11 | padding: 80px 0;
12 | }
13 | }
14 |
15 | @media (max-width: 767px) {
16 | .our-achievement {
17 | padding: 60px 0;
18 | }
19 | }
20 |
21 | .our-achievement .title h2 {
22 | color: var(--light-color);
23 | font-weight: 700;
24 | font-size: 35px;
25 | margin-bottom: 10px;
26 | }
27 |
28 | .our-achievement .title p {
29 | color: var(--light-color);
30 | }
31 |
32 | .our-achievement .single-achievement {
33 | margin-top: 50px;
34 | text-align: center;
35 | padding: 0px 10px;
36 | }
37 |
38 | .our-achievement .single-achievement h3 {
39 | font-size: 35px;
40 | font-weight: 800;
41 | display: block;
42 | margin-bottom: 5px;
43 | color: var(--highlight-color);
44 | }
45 |
46 | .our-achievement .single-achievement p {
47 | font-size: 15px;
48 | color: var(--light-color);
49 | font-weight: 500;
50 | text-transform: capitalize;
51 | }
52 |
53 | @media only screen and (min-width: 768px) and (max-width: 991px), (max-width: 767px) {
54 | .our-achievement .title h2 {
55 | font-size: 24px;
56 | line-height: 32px;
57 | }
58 | .our-achievement .single-achievement {
59 | margin-top: 30px;
60 | }
61 | .our-achievement .single-achievement h3 {
62 | font-size: 28px;
63 | }
64 | }
--------------------------------------------------------------------------------
/src/components/2. Content Components/Achievement/Achievement.jsx:
--------------------------------------------------------------------------------
1 | import React, { useEffect, useRef, useState } from 'react';
2 | import CountUp from 'react-countup';
3 | import { useInView } from 'react-intersection-observer';
4 | import './Achievement.css';
5 | import { achievements } from '../../../your_info';
6 |
7 | const Achievement = () => {
8 | const [isVisible, setIsVisible] = useState(false);
9 | const [ref, inView] = useInView({
10 | triggerOnce: true,
11 | threshold: 0.1,
12 | });
13 |
14 | useEffect(() => {
15 | if (inView) {
16 | setIsVisible(true);
17 | }
18 | }, [inView]);
19 |
20 | return (
21 |
22 |
23 |
24 |
25 |
26 |
"Lorem ipsum dolor sit amet, consectetur adipiscing"
27 |
Fusce at libero id massa ornare molestie sed eu tellus.
28 |
29 |
30 |
31 |
32 |
33 |
34 | {achievements.map((info, index) => (
35 |
36 |
37 | {isVisible && (
38 |
39 |
40 | {info.unit}
41 |
42 | )}
43 |
{info.word}
44 |
45 |
46 | ))}
47 |
48 |
49 |
50 |
51 |
52 | );
53 | };
54 |
55 | export default Achievement;
56 |
--------------------------------------------------------------------------------
/src/components/2. Content Components/Projects/Projects.css:
--------------------------------------------------------------------------------
1 | @import url('../../../assets/css/main.css');
2 |
3 | .demo-container {
4 | position: relative;
5 | width: 100%;
6 | height: 0;
7 | padding-bottom: 75%;
8 | }
9 |
10 | .demo-container img,
11 | .demo-container iframe {
12 | position: absolute;
13 | top: 0;
14 | left: 0;
15 | width: 100%;
16 | height: 100%;
17 | }
18 |
19 | h2, h3, p {
20 | text-align: center;
21 | }
22 |
23 |
24 |
25 | .card-content {
26 | display: flex;
27 | flex-direction: column;
28 | justify-content: space-between;
29 | height: 100%;
30 | }
31 |
32 | .card-header {
33 | margin-bottom: 1rem;
34 | background-color: var(--light-color)!important;
35 |
36 | }
37 |
38 | .card-title {
39 | font-size: 1.5rem;
40 | font-weight: bold;
41 | }
42 |
43 | .card-description {
44 | margin-top: 0.5rem;
45 | }
46 |
47 | .card-footer {
48 | display: flex;
49 | justify-content: space-between;
50 | align-items: center;
51 | margin-top: 1rem;
52 | background-color: var(--light-color)!important;
53 | border: none !important;
54 | }
55 |
56 | .card-footer .btn {
57 | flex: 1;
58 | margin: 0 0.5rem;
59 | }
60 |
61 | .card {
62 | background-color: var(--light-color);
63 | width: 100%;
64 | border-radius: 6px;
65 | box-shadow: 0 2px 4px var(--medium-color);
66 | margin-bottom: 20px;
67 | margin-right: 20px;
68 | margin-left: 20px;
69 | }
70 |
71 |
72 | .card:last-child {
73 | margin-right: 0;
74 | }
75 |
76 | .card-content {
77 | margin-left: -20px;
78 | margin-right: 20px;
79 | padding: 20px;
80 | background-color: var(--light-color) !important;
81 | }
82 |
83 | .card-title {
84 | font-size: 18px;
85 | font-weight: bold;
86 | margin-bottom: 10px;
87 | }
88 |
89 | .card-description {
90 | margin-bottom: 20px;
91 | }
92 |
93 | .btn-primary {
94 | background-color: var(--accent-color) !important;
95 | color: var(--dark-color) !important;
96 | border-radius: 4px;
97 | border: none !important;
98 | padding: 8px 16px;
99 | cursor: pointer;
100 | }
101 |
102 | .btn-primary:hover {
103 | background-color: var(--highlight-color) !important;
104 | color: var(--dark-color) !important;
105 | transform: translateY(-1px);
106 | }
107 |
108 | .btn-secondary {
109 | background-color: var(--medium-color) !important;
110 | color: var(--light-color) !important;
111 | border-radius: 4px;
112 | border: none !important;
113 | padding: 8px 16px;
114 | cursor: pointer;
115 | }
116 |
117 | .btn-secondary:hover {
118 | background-color: var(--medium-color) !important;
119 | color: var(--dark-color) !important;
120 | transform: translateY(-1px);
121 | }
122 |
123 |
124 | .iframe-container {
125 | position: relative;
126 | width: 100%;
127 | height: 400px;
128 | }
129 |
130 | .iframe-container iframe {
131 | position: absolute;
132 | top: 0;
133 | left: 0;
134 | width: 100%;
135 | height: 100%;
136 | border: 0;
137 | }
138 |
139 | .button-container {
140 | display: flex;
141 | justify-content: center;
142 | align-items: center;
143 | }
144 |
145 | .button-container .btn {
146 | flex: 1;
147 | margin: 0 5px;
148 | text-align: center;
149 | }
150 |
151 | .slick-prev:before,
152 | .slick-next:before {
153 | color: var(--dark-color);
154 | font-size: 30px;
155 | }
156 |
157 | .slick-prev {
158 | left: -30px;
159 | }
160 |
161 | .slick-next {
162 | right: -30px;
163 | }
164 |
--------------------------------------------------------------------------------
/src/components/2. Content Components/Projects/Projects.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './Projects.css';
3 | import { projectData } from '../../../your_info';
4 | import Slider from 'react-slick';
5 | import 'slick-carousel/slick/slick.css';
6 | import 'slick-carousel/slick/slick-theme.css';
7 |
8 | const Projects = () => {
9 | const settings = {
10 | dots: true,
11 | infinite: true,
12 | speed: 500,
13 | slidesToShow: 1, // Aangepaste waarde
14 | slidesToScroll: 1,
15 | responsive: [
16 | {
17 | breakpoint: 768,
18 | settings: {
19 | slidesToShow: 1,
20 | },
21 | },
22 | {
23 | breakpoint: 992,
24 | settings: {
25 | slidesToShow: 1,
26 | },
27 | },
28 | ],
29 | };
30 |
31 |
32 | const renderDemoContent = (project) => {
33 | if (isImageURL(project.demoUrl)) {
34 | return
;
35 | } else {
36 | return ;
37 | }
38 | };
39 |
40 | const isImageURL = (url) => {
41 | const imageExtensions = ['.jpg', '.jpeg', '.png', '.gif'];
42 | return imageExtensions.some((extension) => url.toLowerCase().endsWith(extension));
43 | };
44 |
45 | return (
46 |
47 |
48 |
49 |
50 | Projects
51 |
52 |
53 | Lorem Ipsum
54 |
55 |
56 | A diverse set of skills and technologies I have acquired to develop impactful solutions
57 |
58 |
59 |
60 | {projectData.map((project, index) => (
61 |
62 |
63 |
64 |
65 |
{project.title}
66 |
{project.description}
67 |
68 |
69 | {renderDemoContent(project)}
70 |
71 |
79 |
80 |
81 |
82 | ))}
83 |
84 |
85 |
86 | );
87 | };
88 |
89 | export default Projects;
90 |
--------------------------------------------------------------------------------
/src/components/2. Content Components/Skillz/Skillz.css:
--------------------------------------------------------------------------------
1 | @import url('../../../assets/css/main.css');
2 |
3 | .skills {
4 | background-color: var(--medium-color);
5 | }
6 |
7 | .skills .section-title {
8 | margin-bottom: 30px;
9 | text-align: center;
10 | }
11 |
12 | .skills .section-title h3 {
13 | font-size: 3em;
14 | }
15 |
16 | .skills .single-feature {
17 | text-align: center; /* Change to center alignment */
18 | padding: 35px;
19 | background-color: var(--light-color);
20 | border-radius: 6px;
21 | position: relative;
22 | margin-top: 30px;
23 | border: 1px solid var(--medium-color);
24 | transition: all 0.5s cubic-bezier(0.68, -0.55, 0.27, 1.55) 0s;
25 | box-shadow: 0px 4px 6px var(--medium-color);
26 | }
27 |
28 | .skills .single-feature:hover {
29 | box-shadow: 0px 3px 5px var(--medium-color);
30 | transform: translateY(-5px);
31 | }
32 |
33 | .skills .single-feature i {
34 | height: 60px;
35 | width: 60px;
36 | line-height: 60px;
37 | text-align: center;
38 | display: inline-block;
39 | vertical-align: middle;
40 | background-color: var(--accent-color);
41 | color: var(--light-color);
42 | font-size: 20px;
43 | border-radius: 7px;
44 | box-shadow: 0px 4px 6px var(--medium-color);
45 |
46 | margin: 0px 5px 30px 5px;
47 | }
48 |
49 | .skills .single-feature h3 {
50 | font-size: 18px;
51 | font-weight: 500;
52 | margin-bottom: 20px;
53 | }
54 |
55 | .skills .single-feature p {
56 | line-height: 22px;
57 | }
58 |
59 |
60 |
--------------------------------------------------------------------------------
/src/components/2. Content Components/Skillz/Skillz.jsx:
--------------------------------------------------------------------------------
1 | import React, { useEffect } from 'react';
2 | import './Skillz.css';
3 | import WOW from 'wow.js';
4 | import { categories } from '../../../your_info';
5 |
6 | const Skillz = () => {
7 | useEffect(() => {
8 | new WOW().init();
9 | }, []);
10 |
11 | return (
12 |
13 |
14 |
15 |
16 |
17 |
18 | Skills
19 |
20 |
21 | Exploring and Expanding My area of focus
22 |
23 |
24 | A diverse set of skills and technologies I have acquired to develop impactful solutions
25 |
26 |
27 |
28 |
29 |
30 | {categories.map((category) => (
31 |
35 |
39 |
40 | {category.skills.map((skill, index) => {
41 | const iconClasses = skill.icon.split(' ');
42 | return (
43 |
48 | );
49 | })}
50 |
51 |
{category.title}
52 |
{category.description}
53 |
54 |
55 | ))}
56 |
57 |
58 |
59 | );
60 | };
61 |
62 | export default Skillz;
63 |
--------------------------------------------------------------------------------
/src/components/3. Footer Components/AboutMe/AboutMe.css:
--------------------------------------------------------------------------------
1 | @import url('../../../assets/css/main.css');
2 |
3 | .About {
4 | background-color: var(--dark-color);
5 | }
6 |
7 | .About .cta-content {
8 | text-transform: none !important;
9 | text-align: center;
10 | padding: 0px 50px;
11 | }
12 |
13 | @media only screen and (min-width: 768px) and (max-width: 991px) {
14 | .About .cta-content {
15 | padding: 0;
16 | }
17 | }
18 |
19 | @media (max-width: 767px) {
20 | .About .cta-content {
21 | padding: 0;
22 | }
23 | }
24 |
25 | .About .cta-content h2 {
26 | color: var(--light-color);
27 | line-height: 50px;
28 | font-size: 38px;
29 | font-weight: 700;
30 | margin-bottom: 1em;
31 | }
32 |
33 | .About .cta-content h3 {
34 | margin-top: 1em;
35 | }
36 |
37 | @media only screen and (min-width: 768px) and (max-width: 991px) {
38 | .About .cta-content h2 {
39 | font-size: 32px;
40 | line-height: 45px;
41 | }
42 | }
43 |
44 | @media (max-width: 767px) {
45 | .About .cta-content h2 {
46 | font-size: 25px;
47 | line-height: 35px;
48 | }
49 | }
50 |
51 | .About .cta-content p {
52 | font-family: 'Oswald', sans-serif;
53 | color: var(--light-color);
54 | }
55 |
56 | h3 {
57 | font-family: 'Bebas Neue';
58 | }
59 |
60 | @media only screen and (min-width: 768px) and (max-width: 991px) {
61 | .About .cta-content p {
62 | padding: 0;
63 | }
64 | }
65 |
66 | @media (max-width: 767px) {
67 | .About .cta-content p {
68 | padding: 0;
69 | }
70 | }
71 |
72 | .About .cta-content .button {
73 | margin-top: 40px;
74 | }
75 |
76 | .About .cta-content .button .btn {
77 | background-color: var(--accent-color);
78 | color: var(--dark-color);
79 | }
80 |
81 | .About .cta-content .button .btn:hover {
82 | color: var(--dark-color);
83 | background-color: var(--highlight-color);
84 | }
85 |
86 |
--------------------------------------------------------------------------------
/src/components/3. Footer Components/AboutMe/AboutMe.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './AboutMe.css';
3 | import ContactMe from '../ContactMe/ContactMe';
4 | import { aboutMeText } from '../../../your_info';
5 |
6 | const AboutMe = () => {
7 | const { infotext , power_slogan } = aboutMeText;
8 | return (
9 |
10 |
11 |
12 |
13 |
14 |
15 | About me:
16 |
17 |
18 |
19 |
{infotext}
20 |
21 |
22 |
{power_slogan}
23 |
24 |
25 |
26 |
31 |
32 |
33 |
34 | );
35 | };
36 |
37 | export default AboutMe;
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/src/components/3. Footer Components/ContactMe/ContactMe.css:
--------------------------------------------------------------------------------
1 | @import url('../../../assets/css/main.css');
2 |
3 | body {
4 | background-color: var(--medium-color) !important;
5 | }
6 |
7 | .contact-form-wrapper {
8 | -webkit-transition: all 0.5s cubic-bezier(0.68, -0.55, 0.27, 1.55) 0s;
9 | transition: all 0.5s cubic-bezier(0.68, -0.55, 0.27, 1.55) 0s;
10 | }
11 |
12 | .contact-form {
13 | padding: 30px 40px;
14 | background-color: var(--light-color);
15 | border-radius: 6px;
16 | max-width: 400px;
17 | border: 1px solid var(--light-color);
18 | }
19 |
20 | .contact-form input,
21 | .contact-form textarea,
22 | .contact-form button {
23 | background-color: var(--light-white);
24 | height: 50px;
25 | padding-left: 16px;
26 | border: 1px solid var(--light-color);
27 | border-radius: 6px;
28 | }
29 |
30 | .contact-form textarea {
31 | height: auto;
32 | }
33 |
34 | .contact-form input:focus,
35 | .contact-form textarea:focus,
36 | .contact-form button:focus {
37 | outline: none;
38 |
39 | }
40 |
41 | .contact-form input::placeholder,
42 | .contact-form textarea::placeholder,
43 | .contact-form button::placeholder {
44 | color: var(--medium-color);
45 | font-weight: 500;
46 | opacity: 1;
47 | }
48 |
49 | .contact-form input:-ms-input-placeholder,
50 | .contact-form textarea:-ms-input-placeholder,
51 | .contact-form button:-ms-input-placeholder {
52 | color: var(--medium-color);
53 | font-weight: 500;
54 | }
55 |
56 | .contact-form input::-ms-input-placeholder,
57 | .contact-form textarea::-ms-input-placeholder,
58 | .contact-form button::-ms-input-placeholder {
59 | color: var(--medium-color);
60 | font-weight: 500;
61 | }
62 |
63 | .contact-form .title {
64 | text-align: center;
65 | font-size: 24px;
66 | font-weight: 500;
67 | }
68 |
69 | .contact-form .description {
70 | color: var(--medium-color);
71 | font-size: 14px;
72 | text-align: center;
73 | }
74 |
75 | .contact-form .submit-button-wrapper {
76 | text-align: center;
77 | }
78 |
79 | .contact-form button[type='submit'] {
80 | background-color: var(--accent-color);
81 | color: var(--dark-color);
82 | text-transform: uppercase;
83 | padding: 10px 60px;
84 | font-weight: 500;
85 | letter-spacing: 2px;
86 | margin-top: 16px;
87 | }
88 |
89 | .contact-form button[type='submit']:hover {
90 | background-color: var(--highlight-color) !important;
91 | color: var(--dark-color) !important;
92 | transform: translateY(-1px);
93 | border: none;
94 | }
95 |
96 |
97 |
98 |
99 | .submit-button:hover {
100 | background-color: var(--highlight-color);
101 | transform: translateY(-1px);
102 | box-shadow: 0px 2px 4px var(--dark-color);
103 | }
104 | @media (max-width: 767px) {
105 | .contact-form {
106 | margin-top: 1.7em;
107 | }
108 | }
109 |
110 | @media only screen and (min-width: 768px) and (max-width: 991px) {
111 | .contact-form {
112 | margin-top: 1.7em;
113 | }
114 | }
--------------------------------------------------------------------------------
/src/components/3. Footer Components/ContactMe/ContactMe.jsx:
--------------------------------------------------------------------------------
1 | import React, { useRef, useState } from 'react';
2 | import './ContactMe.css';
3 | import emailjs from 'emailjs-com';
4 | import { emailConfig } from '../../../your_info';
5 |
6 | const ContactMe = () => {
7 | const form = useRef();
8 | const [isMessageSent, setMessageSent] = useState(false);
9 |
10 | const sendEmail = (e) => {
11 | e.preventDefault();
12 |
13 | const { serviceID, templateID, userID } = emailConfig;
14 |
15 | emailjs
16 | .sendForm(serviceID, templateID, form.current, userID)
17 | .then((result) => {
18 | console.log(result.text);
19 | setMessageSent(true);
20 | e.target.reset();
21 | })
22 | .catch((error) => {
23 | console.log(error.text);
24 | });
25 | };
26 |
27 | return (
28 |
82 | );
83 | };
84 |
85 | export default ContactMe;
86 |
--------------------------------------------------------------------------------
/src/components/4. Utility Components/ScrollToTopButton/ScrollToTopButton.css:
--------------------------------------------------------------------------------
1 | @import url('../../../assets/css/main.css');
2 |
3 | .scroll-to-top {
4 | position: fixed;
5 | bottom: 20px;
6 | right: 20px;
7 | display: flex;
8 | align-items: center;
9 | justify-content: center;
10 | width: 50px;
11 | height: 50px;
12 | border-radius: 7px;
13 | border: none;
14 | outline: none;
15 | cursor: pointer;
16 | background-color: var(--accent-color);
17 | color: var(--dark-color);
18 | font-size: 20px;
19 | z-index: 999;
20 | }
21 |
22 |
23 | .scroll-to-top:hover {
24 | background-color: var(--highlight-color);
25 | color: var(--dark-color);
26 | }
27 |
28 |
--------------------------------------------------------------------------------
/src/components/4. Utility Components/ScrollToTopButton/ScrollToTopButton.jsx:
--------------------------------------------------------------------------------
1 | import React, { useState, useEffect } from 'react';
2 | import './ScrollToTopButton.css';
3 |
4 | const ScrollToTopButton = () => {
5 | const [isVisible, setIsVisible] = useState(false);
6 |
7 | const handleScroll = () => {
8 | const scrollTop = window.pageYOffset;
9 |
10 | if (scrollTop > 300) {
11 | setIsVisible(true);
12 | } else {
13 | setIsVisible(false);
14 | }
15 | };
16 |
17 | const scrollToTop = () => {
18 | window.scrollTo({
19 | top: 0,
20 | behavior: 'smooth',
21 | });
22 | };
23 |
24 | useEffect(() => {
25 | window.addEventListener('scroll', handleScroll);
26 | return () => {
27 | window.removeEventListener('scroll', handleScroll);
28 | };
29 | }, []);
30 |
31 | return (
32 | <>
33 | {isVisible && (
34 |
50 | )}
51 | >
52 | );
53 | };
54 |
55 | export default ScrollToTopButton;
56 |
--------------------------------------------------------------------------------
/src/components/4. Utility Components/Spinner/Spinner.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css?family=Bebas+Neue&display=swap');
2 | @import url('../../../assets/css/main.css');
3 |
4 | #page-loader {
5 | position: fixed;
6 | top: 0;
7 | left: 0;
8 | margin: auto;
9 | text-align: center;
10 | height: 100%;
11 | width: 100%;
12 | background: var(--dark-color);
13 | z-index: 9999;
14 | }
15 |
16 | .team-loader {
17 | position: absolute;
18 | top: 50%;
19 | left: 50%;
20 | margin: auto;
21 | text-align: center;
22 | transform: translate(-50%, -50%);
23 | }
24 |
25 | #loader-text {
26 | font-size: 2em;
27 | margin-bottom: 20px;
28 | text-transform: uppercase;
29 | color: var(--medium-color);
30 | font-family: 'Bebas Neue', cursive;
31 | }
32 |
33 | .pulse-loader {
34 | position: relative;
35 | border: 3px solid var(--highlight-color);
36 | border-radius: 50%;
37 | height: 100px;
38 | width: 100px;
39 | animation: pulsate 1s ease-out infinite;
40 | opacity: 0.0;
41 | }
42 |
43 | .countup {
44 | position: absolute;
45 | top: 50%;
46 | left: 50%;
47 | transform: translate(-50%, -50%);
48 | font-size: 2em;
49 | color: var(--highlight-color);
50 | }
51 |
52 | @keyframes pulsate {
53 | 0% {
54 | transform: scale(0.1, 0.1);
55 | opacity: 0.0;
56 | }
57 | 50% {
58 | opacity: 1.0;
59 | }
60 | 100% {
61 | transform: scale(1.3, 1.3);
62 | opacity: 0.0;
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/src/components/4. Utility Components/Spinner/Spinner.jsx:
--------------------------------------------------------------------------------
1 | import React, { useEffect, useState } from 'react';
2 | import './Spinner.css';
3 |
4 | const Spinner = () => {
5 | const [count, setCount] = useState(0);
6 |
7 | useEffect(() => {
8 | const interval = setInterval(() => {
9 | setCount(prevCount => {
10 | if (prevCount === 100) {
11 | clearInterval(interval);
12 | return prevCount;
13 | }
14 | return prevCount + 1;
15 | });
16 | }, 6);
17 |
18 | return () => {
19 | clearInterval(interval);
20 | };
21 | }, []);
22 |
23 | return (
24 |
25 |
26 |
27 | WELCOME
28 |
29 |
32 |
33 |
34 | );
35 | };
36 |
37 | export default Spinner;
38 |
--------------------------------------------------------------------------------
/src/main.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom/client';
3 | import App from './App';
4 | import './assets/css/bootstrap.min.css';
5 | import './assets/css/animate.css';
6 | import './assets/css/LineIcons.2.0.css';
7 | import './assets/css/main.css';
8 |
9 |
10 |
11 |
12 | const root = ReactDOM.createRoot(document.getElementById('root'));
13 | root.render(
14 |
15 |
16 |
17 | );
18 |
19 |
--------------------------------------------------------------------------------
/src/your_info.jsx:
--------------------------------------------------------------------------------
1 | //////////////////////////////////////// ** HEADER / HERO SECTION **///////////////////////////////////////////
2 |
3 | // your_info.jsx
4 |
5 | const backgroundImageUrl = 'https://images.wallpaperscraft.com/image/single/man_photographer_roof_146991_3840x2400.jpg';
6 |
7 |
8 | // Enter here your first and last name
9 | const name = {
10 | firstname: 'Jonathan',
11 | lastname: 'Dominion',
12 | // Enter as url a link where your resume can be downloaded ( dropbox, OneDrive, ect )
13 | url: 'https://www.google.com',
14 | };
15 |
16 | // Display your job title or skills or whatever you want in the typewriter
17 | const typeWriterText = [
18 | 'Photographer...',
19 | 'UX/UI designer...',
20 | 'Cool dude...'
21 | ];
22 |
23 | // Social media profiles buttons
24 | const socialProfiles = [
25 | {
26 | name: 'LinkedIn',
27 | icon: 'lni lni-linkedin',
28 | url: 'https://www.linkedin.com/in/christoph-pfrommer',
29 | },
30 | {
31 | name: 'GitHub',
32 | icon: 'lni lni-github',
33 | url: 'https://github.com/Pfrommer1982',
34 | },
35 | // Add more social profiles here, it will automatically add more link-buttons with icons (if available)
36 | // {
37 | // name: 'Twitter',
38 | // icon: 'lni lni-twitter',
39 | // url: 'https://twitter.com/your-username',
40 | // },
41 | // {
42 | // name: 'Facebook',
43 | // icon: 'lni lni-facebook',
44 | // url: 'https://facebook.com/your-username',
45 | // },
46 | ];
47 |
48 | //////////////////////////////////////// ** CONTENT SECTION **//////////////////////////////////////////////////
49 |
50 |
51 | const categories = [
52 | {
53 | name: 'Web Development',
54 | icon: 'lni lni-code',
55 | title: 'Photography',
56 | description:
57 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas diam lorem, tempus at dapibus vitae, vehicula sit amet dui. Fusce at libero id massa ornare molestie sed eu tellus.",
58 | skills: [
59 | {
60 | icon: 'lni lni-camera',
61 | title: 'HTML5',
62 | },
63 | {
64 | icon: 'lni lni-certificate',
65 | title: 'CSS3',
66 | },
67 | {
68 | icon: 'lni lni-instagram',
69 | title: 'JavaScript',
70 | },
71 | ],
72 | },
73 | {
74 | name: 'Software',
75 | icon: 'lni lni-code',
76 | title: 'Software',
77 | description:
78 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas diam lorem, tempus at dapibus vitae, vehicula sit amet dui. Fusce at libero id massa ornare molestie sed eu tellus.",
79 | skills: [
80 | {
81 | icon: 'lni lni-adobe',
82 | title: 'adobe',
83 | },
84 | {
85 | icon: 'lni lni-code',
86 | title: 'Code',
87 | },
88 | {
89 | icon: 'lni lni-sketch',
90 | title: 'Sketch'
91 | },
92 |
93 |
94 | ],
95 | },
96 | {
97 | name: 'brands',
98 | icon: 'lni lni-code',
99 | title: 'Brands',
100 | description:
101 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas diam lorem, tempus at dapibus vitae, vehicula sit amet dui. Fusce at libero id massa ornare molestie sed eu tellus.",
102 | skills: [
103 | {
104 | icon: 'lni lni-pinterest',
105 | title: 'Pinterest',
106 | },
107 | {
108 | icon: 'lni lni-crop',
109 | title: 'Crop',
110 | },
111 |
112 | ],
113 | },
114 |
115 | ];
116 |
117 | // Here you can give in your achiements in a number counter animation
118 | const achievements = [
119 | { word: 'bullshit', value: 100, unit: '%' },
120 | { word: 'finished projects', value: 7500, unit: '' },
121 | { word: 'experience', value: 20, unit: ' years' },
122 | ];
123 |
124 |
125 |
126 | // If you already have some projects, fill the url
127 | const projectData = [
128 | {
129 | title: 'Project 1',
130 | description: 'Description of Project 1',
131 | demoUrl: 'https://wallpaperaccess.com/full/530366.jpg'
132 | },
133 | {
134 | title: 'Project 2',
135 | description: 'Description of Project 2',
136 | demoUrl: 'https://wallpapercave.com/wp/wp1933134.jpg'
137 | },
138 | {
139 | title: 'Project 3',
140 | description: 'Description of Project 3',
141 | demoUrl: 'https://c4.wallpaperflare.com/wallpaper/43/399/700/photography-camera-birds-animals-wallpaper-preview.jpg'
142 | },
143 | {
144 | title: 'Project 2',
145 | description: 'Description of Project 2',
146 | demoUrl: 'src/assets/images/Jonathan Dominion Template.gif'
147 | },
148 |
149 | ];
150 |
151 |
152 | //////////////////////////////////////// ** FOOTER SECTION **//////////////////////////////////////////////////
153 |
154 |
155 |
156 | // You can tell something about yourself in the infotext.
157 | const aboutMeText = {
158 | infotext: `Hi there, I'm Jonathan. With 20 years of experience as photographer Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas diam lorem, tempus at dapibus vitae, vehicula sit amet dui. Fusce at libero id massa ornare molestie sed eu tellus.
159 | `,
160 | power_slogan: `Lorem ipsum dolor sit amet`,
161 | };
162 |
163 | // For contact form: You need to make an account on emailjs.com
164 | // There you can choose a free tier ( 200 emails per month )
165 | // In your account settings you can see 'serviceID, templateID and userID.
166 | // Fill them here and it will automatically work.
167 |
168 | const emailConfig = {
169 | serviceID: 'service_XXXXXXX',
170 | templateID: 'template_XXXXXXXX',
171 | userID: 'XXXXXXXXXXXX',
172 | };
173 |
174 | export {
175 | backgroundImageUrl,
176 | name,
177 | typeWriterText,
178 | socialProfiles,
179 | categories,
180 | achievements,
181 | projectData,
182 | aboutMeText,
183 | emailConfig,
184 | };
185 |
--------------------------------------------------------------------------------
/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [react()],
7 | base: "/Complete_Portfolio/"
8 | })
9 |
--------------------------------------------------------------------------------