├── favicon.ico
├── favicon-16x16.png
├── favicon-32x32.png
├── images
├── landing.jpg
├── landing.webp
├── cabinets-m.jpg
├── cabinets2.jpg
├── landing-m.jpg
├── landing-m.webp
├── logo-blue.png
├── logo-light.png
├── cabinets2-m.jpg
├── cabinets2-m.webp
├── construction.jpg
├── construction-m.jpg
├── construction-m.webp
├── portfolio
│ ├── port1.jpg
│ ├── port2.jpg
│ ├── port3.jpg
│ ├── port4.jpg
│ ├── port5.jpg
│ ├── port6.jpg
│ ├── port7.jpg
│ ├── port8.jpg
│ ├── port9.jpg
│ ├── port1-m.jpg
│ ├── port2-m.jpg
│ ├── port3-m.jpg
│ ├── port4-m.jpg
│ ├── port5-m.jpg
│ ├── port6-m.jpg
│ ├── port7-m.jpg
│ ├── port8-m.jpg
│ └── port9-m.jpg
├── service2.svg
├── moon.svg
├── service1.svg
├── check.svg
├── profile-woman.svg
├── profile.svg
├── service3.svg
├── sun.svg
├── stars.svg
├── sun-icon.svg
└── content-circles.svg
├── mstile-150x150.png
├── apple-touch-icon.png
├── android-chrome-192x192.png
├── android-chrome-384x384.png
├── fonts
├── roboto-v29-latin-700.woff
├── roboto-v29-latin-900.woff
├── roboto-v29-latin-700.woff2
├── roboto-v29-latin-900.woff2
├── roboto-v29-latin-regular.woff
└── roboto-v29-latin-regular.woff2
├── browserconfig.xml
├── css
├── nav.js
├── dark.css
├── dark.less
├── projects.css
├── critical.css
├── reviews.css
├── about.css
├── critical.less
├── projects.less
├── about.less
├── reviews.less
├── contact.css
├── local.css
├── contact.less
├── local.less
├── mobile-nav-options.css
└── mobile-nav-options.less
├── nav.js
├── site.webmanifest
├── dark.js
├── LICENSE
├── README.md
├── contact.html
├── about.html
└── projects.html
/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/favicon.ico
--------------------------------------------------------------------------------
/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/favicon-16x16.png
--------------------------------------------------------------------------------
/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/favicon-32x32.png
--------------------------------------------------------------------------------
/images/landing.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/landing.jpg
--------------------------------------------------------------------------------
/images/landing.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/landing.webp
--------------------------------------------------------------------------------
/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/mstile-150x150.png
--------------------------------------------------------------------------------
/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/apple-touch-icon.png
--------------------------------------------------------------------------------
/images/cabinets-m.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/cabinets-m.jpg
--------------------------------------------------------------------------------
/images/cabinets2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/cabinets2.jpg
--------------------------------------------------------------------------------
/images/landing-m.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/landing-m.jpg
--------------------------------------------------------------------------------
/images/landing-m.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/landing-m.webp
--------------------------------------------------------------------------------
/images/logo-blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/logo-blue.png
--------------------------------------------------------------------------------
/images/logo-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/logo-light.png
--------------------------------------------------------------------------------
/images/cabinets2-m.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/cabinets2-m.jpg
--------------------------------------------------------------------------------
/images/cabinets2-m.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/cabinets2-m.webp
--------------------------------------------------------------------------------
/images/construction.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/construction.jpg
--------------------------------------------------------------------------------
/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/android-chrome-192x192.png
--------------------------------------------------------------------------------
/android-chrome-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/android-chrome-384x384.png
--------------------------------------------------------------------------------
/images/construction-m.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/construction-m.jpg
--------------------------------------------------------------------------------
/images/construction-m.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/construction-m.webp
--------------------------------------------------------------------------------
/images/portfolio/port1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/portfolio/port1.jpg
--------------------------------------------------------------------------------
/images/portfolio/port2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/portfolio/port2.jpg
--------------------------------------------------------------------------------
/images/portfolio/port3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/portfolio/port3.jpg
--------------------------------------------------------------------------------
/images/portfolio/port4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/portfolio/port4.jpg
--------------------------------------------------------------------------------
/images/portfolio/port5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/portfolio/port5.jpg
--------------------------------------------------------------------------------
/images/portfolio/port6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/portfolio/port6.jpg
--------------------------------------------------------------------------------
/images/portfolio/port7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/portfolio/port7.jpg
--------------------------------------------------------------------------------
/images/portfolio/port8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/portfolio/port8.jpg
--------------------------------------------------------------------------------
/images/portfolio/port9.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/portfolio/port9.jpg
--------------------------------------------------------------------------------
/images/portfolio/port1-m.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/portfolio/port1-m.jpg
--------------------------------------------------------------------------------
/images/portfolio/port2-m.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/portfolio/port2-m.jpg
--------------------------------------------------------------------------------
/images/portfolio/port3-m.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/portfolio/port3-m.jpg
--------------------------------------------------------------------------------
/images/portfolio/port4-m.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/portfolio/port4-m.jpg
--------------------------------------------------------------------------------
/images/portfolio/port5-m.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/portfolio/port5-m.jpg
--------------------------------------------------------------------------------
/images/portfolio/port6-m.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/portfolio/port6-m.jpg
--------------------------------------------------------------------------------
/images/portfolio/port7-m.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/portfolio/port7-m.jpg
--------------------------------------------------------------------------------
/images/portfolio/port8-m.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/portfolio/port8-m.jpg
--------------------------------------------------------------------------------
/images/portfolio/port9-m.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/images/portfolio/port9-m.jpg
--------------------------------------------------------------------------------
/fonts/roboto-v29-latin-700.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/fonts/roboto-v29-latin-700.woff
--------------------------------------------------------------------------------
/fonts/roboto-v29-latin-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/fonts/roboto-v29-latin-900.woff
--------------------------------------------------------------------------------
/fonts/roboto-v29-latin-700.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/fonts/roboto-v29-latin-700.woff2
--------------------------------------------------------------------------------
/fonts/roboto-v29-latin-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/fonts/roboto-v29-latin-900.woff2
--------------------------------------------------------------------------------
/fonts/roboto-v29-latin-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/fonts/roboto-v29-latin-regular.woff
--------------------------------------------------------------------------------
/fonts/roboto-v29-latin-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Oak-Harbor-Kits/Starter-KitV3/HEAD/fonts/roboto-v29-latin-regular.woff2
--------------------------------------------------------------------------------
/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #da532c
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/css/nav.js:
--------------------------------------------------------------------------------
1 |
2 | // Toggle navigation open
3 |
4 | const navbarMenu = document.querySelector("#navigation #navbar-menu");
5 | const hamburgerMenu = document.querySelector("#navigation .hamburger-menu");
6 |
7 | hamburgerMenu.addEventListener('click', function() {
8 | navbarMenu.classList.toggle("open");
9 | });
--------------------------------------------------------------------------------
/nav.js:
--------------------------------------------------------------------------------
1 | //
2 | // Toggle Mobile Navigation
3 | //
4 | const navbarMenu = document.querySelector("#navigation #navbar-menu");
5 | const hamburgerMenu = document.querySelector("#navigation .hamburger-menu");
6 |
7 | hamburgerMenu.addEventListener('click', function() {
8 | navbarMenu.classList.toggle("open");
9 | hamburgerMenu.classList.toggle("clicked");
10 | });
11 |
--------------------------------------------------------------------------------
/images/service2.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/images/moon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/site.webmanifest:
--------------------------------------------------------------------------------
1 | {
2 | "name": "",
3 | "short_name": "",
4 | "icons": [
5 | {
6 | "src": "/android-chrome-192x192.png",
7 | "sizes": "192x192",
8 | "type": "image/png"
9 | },
10 | {
11 | "src": "/android-chrome-384x384.png",
12 | "sizes": "384x384",
13 | "type": "image/png"
14 | }
15 | ],
16 | "theme_color": "#ffffff",
17 | "background_color": "#ffffff",
18 | "display": "standalone"
19 | }
20 |
--------------------------------------------------------------------------------
/images/service1.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/dark.js:
--------------------------------------------------------------------------------
1 |
2 |
3 | //
4 | // The Dark Mode System
5 | //
6 |
7 | /* Body and Toggle */
8 | var body = document.querySelector("body");
9 | const darkModeToggle = document.querySelector("#dark-mode-toggle");
10 |
11 | // Get Status of Dark Mode
12 | let darkMode = localStorage.getItem("darkMode");
13 |
14 | // Enable Dark Mode
15 | const enableDarkMode = () => {
16 | body.classList.add("dark-mode");
17 | localStorage.setItem("darkMode", "enabled")
18 | }
19 |
20 | // Disable Dark mode
21 | const disableDarkMode = () => {
22 | body.classList.remove("dark-mode");
23 | localStorage.setItem("darkMode", null)
24 | }
25 |
26 | // Check the state of dark mode in local storage
27 | if (darkMode == "enabled") {
28 | enableDarkMode();
29 | }
30 |
31 | // add event listener to the dark mode button toggle
32 | darkModeToggle.addEventListener('click', () => {
33 | // on click, check localstorage for the dark mode value
34 | darkMode = localStorage.getItem("darkMode");
35 | if (darkMode !== "enabled") {
36 | // if dark mode is not enabled, run this function to set it to enabled
37 | enableDarkMode();
38 | } else {
39 | // if dark mode is enabled, run this function to set it to disabled
40 | disableDarkMode();
41 | }
42 | })
--------------------------------------------------------------------------------
/images/check.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/images/profile-woman.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/images/profile.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/images/service3.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/css/dark.css:
--------------------------------------------------------------------------------
1 | /*-- -------------------------- -->
2 | <--- Core Dark Styles -->
3 | <--- -------------------------- -*/
4 | /* Mobile */
5 | @media only screen and (min-width: 0em) {
6 | :root {
7 | --dark: #082032;
8 | --medium: #2C394B;
9 | --accent: #334756;
10 | }
11 | body.dark-mode {
12 | background-color: var(--dark);
13 | }
14 | body.dark-mode p,
15 | body.dark-mode li,
16 | body.dark-mode h1,
17 | body.dark-mode h2,
18 | body.dark-mode h3,
19 | body.dark-mode h4,
20 | body.dark-mode h5,
21 | body.dark-mode h6 {
22 | color: #fff;
23 | }
24 | body.dark-mode .light {
25 | display: none;
26 | }
27 | body.dark-mode .dark {
28 | display: block !important;
29 | }
30 | .dark {
31 | display: none;
32 | }
33 | }
34 | /*-- -------------------------- -->
35 | <--- Dark Mode Toggle -->
36 | <--- -------------------------- -*/
37 | /* Mobile */
38 | @media only screen and (min-width: 0em) {
39 | body.dark-mode #dark-mode-toggle .sun {
40 | transform: translate(-50%, -50%);
41 | opacity: 1;
42 | }
43 | body.dark-mode #dark-mode-toggle .moon {
44 | transform: translate(-50%, -150%);
45 | opacity: 0;
46 | }
47 | #dark-mode-toggle {
48 | display: block;
49 | position: absolute;
50 | top: 50%;
51 | transform: translateY(-50%);
52 | right: 3.75em;
53 | width: 3em;
54 | height: 3em;
55 | background: transparent;
56 | border: none;
57 | overflow: hidden;
58 | padding: 0;
59 | }
60 | #dark-mode-toggle img,
61 | #dark-mode-toggle svg {
62 | position: absolute;
63 | top: 50%;
64 | left: 50%;
65 | transform: translate(-50%, -50%);
66 | width: 1.5625em;
67 | height: 1.5625em;
68 | pointer-events: none;
69 | }
70 | #dark-mode-toggle .moon {
71 | z-index: 2;
72 | transition: transform .3s, opacity .3s, fill .3s;
73 | fill: #000;
74 | }
75 | #dark-mode-toggle .sun {
76 | z-index: 1;
77 | transform: translate(-50%, 100%);
78 | opacity: 0;
79 | transition: transform .3s, opacity .3s;
80 | }
81 | }
82 | /* Desktop */
83 | @media only screen and (min-width: 64em) {
84 | #dark-mode-toggle {
85 | position: relative;
86 | top: auto;
87 | right: auto;
88 | transform: none;
89 | margin-left: 1.875em;
90 | margin-bottom: 0em;
91 | }
92 | #dark-mode-toggle .moon {
93 | fill: #fff;
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/images/sun.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
20 |
21 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/images/stars.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/css/dark.less:
--------------------------------------------------------------------------------
1 | /*-- -------------------------- -->
2 | <--- Core Dark Styles -->
3 | <--- -------------------------- -*/
4 |
5 | /* Mobile */
6 | @media only screen and (min-width: 0em) {
7 |
8 | // Dark Mode Color Scheme
9 | :root {
10 | --dark: #082032;
11 | --medium: #2C394B;
12 | --accent: #334756;
13 | }
14 |
15 | body.dark-mode {
16 | background-color: var(--dark);
17 |
18 | p, li, h1, h2, h3, h4, h5, h6 {
19 | color: #fff;
20 | }
21 |
22 | // hide all light classes
23 | .light {
24 | display: none;
25 | }
26 |
27 | // show all dark classes
28 | .dark {
29 | display: block !important;
30 | }
31 | }
32 |
33 | .dark {
34 | display: none;
35 | }
36 | }
37 |
38 | /*-- -------------------------- -->
39 | <--- Dark Mode Toggle -->
40 | <--- -------------------------- -*/
41 |
42 | /* Mobile */
43 | @media only screen and (min-width: 0em) {
44 |
45 | // Dark Mode Toggle Switch Animation
46 | body.dark-mode {
47 | #dark-mode-toggle {
48 | .sun {
49 | transform: translate(-50%, -50%);
50 | opacity: 1;
51 | }
52 |
53 | .moon {
54 | transform: translate(-50%, -150%);
55 | opacity: 0;
56 | }
57 | }
58 | }
59 |
60 | // Toggle
61 | #dark-mode-toggle {
62 | display: block;
63 | position: absolute;
64 | top: 50%;
65 | transform: translateY(-50%);
66 | right: 60/16em;
67 | width: 48/16em;
68 | height: 48/16em;
69 | background: transparent;
70 | border: none;
71 | overflow: hidden;
72 | padding: 0;
73 |
74 | //center image inside button
75 | img, svg {
76 | position: absolute;
77 | top: 50%;
78 | left: 50%;
79 | transform: translate(-50%, -50%);
80 | width: 25/16em;
81 | height: 25/16em;
82 | pointer-events: none;
83 |
84 | }
85 |
86 | .moon {
87 | z-index: 2;
88 | // Transition properties
89 | transition: transform .3s, opacity .3s, fill .3s;
90 | fill: #000; // --> change the color of the moon graphic based ont he background being lighter or darker
91 | }
92 |
93 | .sun {
94 | z-index: 1;
95 | // Transition property
96 | transform: translate(-50%, 100%);
97 | opacity: 0;
98 | transition: transform .3s, opacity .3s;
99 | }
100 |
101 | }
102 | }
103 |
104 | /* Desktop */
105 | @media only screen and (min-width: 64em) {
106 | #dark-mode-toggle {
107 | position: relative;
108 | top: auto;
109 | right: auto;
110 | transform: none;
111 | margin-left: 30/16em;
112 | margin-bottom: 0/16em;
113 |
114 | .moon {
115 | fill: #fff;
116 | }
117 | }
118 | }
--------------------------------------------------------------------------------
/images/sun-icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/css/projects.css:
--------------------------------------------------------------------------------
1 | /*-- -------------------------- -->
2 | <--- Portfolio -->
3 | <--- -------------------------- -*/
4 | /* Mobile */
5 | @media only screen and (min-width: 0em) {
6 | #portfolio {
7 | padding-top: 3.125em;
8 | padding-bottom: 35%;
9 | position: relative;
10 | z-index: 5;
11 | }
12 | #portfolio .container {
13 | width: 96%;
14 | max-width: 82.625em;
15 | padding: 0;
16 | margin: auto;
17 | display: -webkit-box;
18 | display: -ms-flexbox;
19 | display: flex;
20 | -webkit-box-pack: center;
21 | -ms-flex-pack: center;
22 | justify-content: center;
23 | -webkit-box-align: start;
24 | -ms-flex-align: start;
25 | align-items: flex-start;
26 | -ms-flex-wrap: wrap;
27 | flex-wrap: wrap;
28 | gap: 1.875em;
29 | font-size: min(1.3vw, 1em);
30 | }
31 | #portfolio .container .row {
32 | display: -webkit-box;
33 | display: -ms-flexbox;
34 | display: flex;
35 | -webkit-box-orient: vertical;
36 | -webkit-box-direction: normal;
37 | -ms-flex-direction: column;
38 | flex-direction: column;
39 | -webkit-box-pack: start;
40 | -ms-flex-pack: start;
41 | justify-content: flex-start;
42 | gap: 1.875em;
43 | }
44 | #portfolio .container .row:nth-of-type(1) picture:nth-of-type(1) {
45 | width: 26.25em;
46 | height: 35.4375em;
47 | }
48 | #portfolio .container .row:nth-of-type(1) picture:nth-of-type(2) {
49 | width: 26.25em;
50 | height: 39.3125em;
51 | }
52 | #portfolio .container .row:nth-of-type(1) picture:nth-of-type(3) {
53 | width: 26.25em;
54 | height: 32em;
55 | }
56 | #portfolio .container .row:nth-of-type(2) picture:nth-of-type(1) {
57 | width: 26.25em;
58 | height: 30.75em;
59 | }
60 | #portfolio .container .row:nth-of-type(2) picture:nth-of-type(2) {
61 | width: 26.25em;
62 | height: 32.3125em;
63 | }
64 | #portfolio .container .row:nth-of-type(2) picture:nth-of-type(3) {
65 | width: 26.25em;
66 | height: 39.3125em;
67 | }
68 | #portfolio .container .row:nth-of-type(3) picture:nth-of-type(1) {
69 | width: 26.25em;
70 | height: 39.0625em;
71 | }
72 | #portfolio .container .row:nth-of-type(3) picture:nth-of-type(2) {
73 | width: 26.25em;
74 | height: 28.25em;
75 | }
76 | #portfolio .container .row:nth-of-type(3) picture:nth-of-type(3) {
77 | width: 26.25em;
78 | height: 39.3125em;
79 | }
80 | #portfolio .container .row picture {
81 | position: relative;
82 | display: block;
83 | }
84 | #portfolio .container .row picture img {
85 | position: absolute;
86 | top: 0;
87 | left: 0;
88 | height: 100%;
89 | width: 100%;
90 | -o-object-fit: cover;
91 | object-fit: cover;
92 | border-radius: 0.5em;
93 | }
94 | }
95 | /* Small Desktop */
96 | @media only screen and (min-width: 64em) {
97 | #portfolio {
98 | padding: 9.375em 0;
99 | }
100 | }
101 | /*-- -------------------------- -->
102 | <--- Final Call To Action -->
103 | <--- -------------------------- -*/
104 | /* Mobile */
105 | @media only screen and (min-width: 0em) {
106 | #cta {
107 | position: relative;
108 | padding: 3.125em 0;
109 | }
110 | #cta:before {
111 | content: '';
112 | position: absolute;
113 | display: block;
114 | height: 100%;
115 | width: 100%;
116 | background: #000;
117 | opacity: .7;
118 | top: 0;
119 | left: 0;
120 | z-index: -1;
121 | }
122 | #cta .container {
123 | text-align: center;
124 | }
125 | #cta picture {
126 | position: absolute;
127 | top: 0;
128 | left: 0;
129 | height: 100%;
130 | width: 100%;
131 | z-index: -2;
132 | }
133 | #cta picture img {
134 | position: absolute;
135 | top: 0;
136 | left: 0;
137 | height: 100%;
138 | width: 100%;
139 | -o-object-fit: cover;
140 | object-fit: cover;
141 | }
142 | #cta .title {
143 | font-weight: 900;
144 | font-size: min(9vw, 3em);
145 | line-height: 1.20833333;
146 | color: #fff;
147 | position: relative;
148 | margin-bottom: 0.75em;
149 | text-align: center;
150 | }
151 | #cta p {
152 | color: #fff;
153 | text-align: center;
154 | opacity: 1;
155 | margin: auto;
156 | margin-bottom: 2em;
157 | width: 96%;
158 | max-width: 33.22222222em;
159 | }
160 | }
161 | /* Small Desktop */
162 | @media only screen and (min-width: 64em) {
163 | #cta {
164 | padding: 10.5em 0;
165 | }
166 | }
167 | /* Large Desktop */
168 | @media only screen and (min-width: 1300px) {
169 | #cta {
170 | position: relative;
171 | margin-top: 6.25em;
172 | }
173 | #cta:before {
174 | display: none;
175 | }
176 | #cta:after {
177 | content: '';
178 | position: absolute;
179 | display: block;
180 | height: 69.25em;
181 | width: 125em;
182 | background: url("../images/cta-squares.svg");
183 | background-size: contain;
184 | background-position: center;
185 | background-repeat: no-repeat;
186 | opacity: 1;
187 | bottom: 0;
188 | left: 50%;
189 | -webkit-transform: translateX(-50%);
190 | transform: translateX(-50%);
191 | z-index: -3;
192 | }
193 | #cta .container {
194 | width: 90.0625%;
195 | margin: auto;
196 | }
197 | #cta picture {
198 | width: 90.0625%;
199 | left: 50%;
200 | -webkit-transform: translateX(-50%);
201 | transform: translateX(-50%);
202 | }
203 | #cta picture:before {
204 | content: '';
205 | position: absolute;
206 | display: block;
207 | height: 100%;
208 | width: 100%;
209 | background: #000;
210 | opacity: .7;
211 | top: 0;
212 | left: 0;
213 | z-index: 1;
214 | }
215 | }
216 | /* Dark Mode */
217 | @media only screen and (min-width: 0em) {
218 | body.dark-mode #cta:after {
219 | display: none;
220 | }
221 | }
222 |
--------------------------------------------------------------------------------
/css/critical.css:
--------------------------------------------------------------------------------
1 | /*-- -------------------------- -->
2 | <--- Landing -->
3 | <--- -------------------------- -*/
4 | /* Mobile */
5 | @media only screen and (min-width: 0em) {
6 | #hero {
7 | font-size: inherit;
8 | padding-bottom: 16.875em;
9 | padding-top: 9.375em;
10 | position: relative;
11 | z-index: 1;
12 | }
13 | #hero:before {
14 | content: '';
15 | position: absolute;
16 | display: block;
17 | height: 100%;
18 | width: 100%;
19 | background: #000;
20 | opacity: .65;
21 | top: 0;
22 | left: 0;
23 | z-index: -10;
24 | }
25 | #hero picture {
26 | position: absolute;
27 | top: 0;
28 | left: 0;
29 | height: 100%;
30 | width: 100%;
31 | z-index: -11;
32 | }
33 | #hero picture img {
34 | position: absolute;
35 | top: 0;
36 | left: 0;
37 | height: 100%;
38 | width: 100%;
39 | -o-object-fit: cover;
40 | object-fit: cover;
41 | }
42 | #hero .hero-content {
43 | width: 96%;
44 | max-width: 71.5em;
45 | margin: auto;
46 | position: relative;
47 | z-index: 10;
48 | text-align: center;
49 | }
50 | #hero .hero-content {
51 | padding: 0;
52 | }
53 | #hero .heroText {
54 | width: 100%;
55 | margin: auto;
56 | max-width: 56.875em;
57 | }
58 | #hero h1 {
59 | font-weight: bold;
60 | font-size: min(12vw, 4em);
61 | color: #fff;
62 | text-align: center;
63 | line-height: 1.203125;
64 | margin: auto;
65 | width: 100%;
66 | max-width: 14.125em;
67 | margin-bottom: 1.4375em;
68 | position: relative;
69 | }
70 | #hero h1:before {
71 | content: '';
72 | position: absolute;
73 | display: block;
74 | height: 0.0625em;
75 | width: 1.515625em;
76 | background: var(--primary);
77 | opacity: 1;
78 | bottom: -0.25em;
79 | left: 50%;
80 | -webkit-transform: translateX(-50%);
81 | transform: translateX(-50%);
82 | }
83 | #hero p {
84 | line-height: 1.55em;
85 | margin: auto;
86 | margin-bottom: 1.72222222em;
87 | color: #fff;
88 | width: 100%;
89 | text-align: center;
90 | max-width: 34.27777778em;
91 | opacity: 1;
92 | }
93 | #hero .button-solid {
94 | margin: auto;
95 | display: inline-block;
96 | width: auto;
97 | }
98 | }
99 | /* Tablet */
100 | @media only screen and (min-width: 48em) {
101 | #hero {
102 | padding: 12.5em 0 18.75em 0;
103 | z-index: 1;
104 | overflow: hidden;
105 | }
106 | #hero .hero-content {
107 | display: -webkit-box;
108 | display: -ms-flexbox;
109 | display: flex;
110 | -webkit-box-pack: justify;
111 | -ms-flex-pack: justify;
112 | justify-content: space-between;
113 | position: relative;
114 | }
115 | }
116 | /* Small Desktop */
117 | @media only screen and (min-width: 1300px) {
118 | #hero {
119 | padding-top: 17.0625em;
120 | padding-bottom: 19.1875em;
121 | background: url("../images/landing.jpg");
122 | background-size: cover;
123 | background-position: center;
124 | background-repeat: no-repeat;
125 | background-attachment: fixed;
126 | }
127 | #hero picture {
128 | display: none;
129 | }
130 | }
131 | /*-- -------------------------- -->
132 | <--- Services -->
133 | <--- -------------------------- -*/
134 | /* Mobile */
135 | @media only screen and (min-width: 0em) {
136 | .services {
137 | border-radius: 0.3125em;
138 | margin: auto;
139 | margin-top: -10.4375em;
140 | position: relative;
141 | z-index: 100;
142 | background: #fff;
143 | width: 90%;
144 | max-width: 82.5em;
145 | padding: 3.125em 1.25em;
146 | border-top: 0.375em solid var(--primary);
147 | -webkit-box-shadow: 0px 20px 40px rgba(0, 0, 0, 0.05);
148 | box-shadow: 0px 20px 40px rgba(0, 0, 0, 0.05);
149 | margin-bottom: 3.125em;
150 | }
151 | .services .card {
152 | display: block;
153 | width: 100%;
154 | max-width: 22.3125em;
155 | margin: auto;
156 | margin-bottom: 3.125em;
157 | }
158 | .services .card:last-of-type {
159 | margin-bottom: 0;
160 | }
161 | .services .card picture {
162 | background: var(--primary);
163 | width: 5.5em;
164 | height: 5.5em;
165 | display: -webkit-box;
166 | display: -ms-flexbox;
167 | display: flex;
168 | -webkit-box-pack: center;
169 | -ms-flex-pack: center;
170 | justify-content: center;
171 | -webkit-box-align: center;
172 | -ms-flex-align: center;
173 | align-items: center;
174 | margin: auto;
175 | margin-bottom: 1.4375em;
176 | border-radius: 50%;
177 | }
178 | .services .card picture img {
179 | width: 3em;
180 | height: 3em;
181 | }
182 | .services .card h2 {
183 | text-align: center;
184 | font-size: 2em;
185 | line-height: 1.35em;
186 | font-weight: 700;
187 | color: #1a1a1a;
188 | margin-bottom: 0.65em;
189 | }
190 | .services .card p {
191 | text-align: center;
192 | line-height: 1.33333333em;
193 | width: 100%;
194 | opacity: .7;
195 | }
196 | }
197 | /* Inbetween */
198 | @media only screen and (min-width: 768px) {
199 | .services {
200 | font-size: min(1.8vw, 1em);
201 | display: -webkit-box;
202 | display: -ms-flexbox;
203 | display: flex;
204 | -webkit-box-pack: justify;
205 | -ms-flex-pack: justify;
206 | justify-content: space-between;
207 | -webkit-box-align: start;
208 | -ms-flex-align: start;
209 | align-items: flex-start;
210 | width: 98%;
211 | }
212 | .services .card {
213 | margin: 0;
214 | max-width: 20.3125em;
215 | }
216 | }
217 | /* Large Desktop */
218 | @media only screen and (min-width: 1300px) {
219 | .services {
220 | padding: 3.125em 5em;
221 | }
222 | .services .card {
223 | max-width: 22.3125em;
224 | }
225 | }
226 | /* Dark mode */
227 | @media only screen and (min-width: 0em) {
228 | body.dark-mode #services {
229 | background: var(--medium);
230 | }
231 | body.dark-mode #services picture {
232 | background: var(--primaryDark);
233 | }
234 | body.dark-mode #services h2 {
235 | color: #fff;
236 | font-weight: bold;
237 | }
238 | }
239 |
--------------------------------------------------------------------------------
/css/reviews.css:
--------------------------------------------------------------------------------
1 | /*-- -------------------------- -->
2 | <--- Reviews -->
3 | <--- -------------------------- -*/
4 | /* Mobile */
5 | @media only screen and (min-width: 0em) {
6 | #reviews {
7 | padding-top: 7.5em;
8 | padding-bottom: 3.125em;
9 | margin: auto;
10 | }
11 | #reviews .container {
12 | width: 96%;
13 | max-width: 82.5em;
14 | }
15 | #reviews .review {
16 | padding: 4em 1.875em 1.125em 1.875em;
17 | -webkit-box-shadow: 0px 20px 40px rgba(0, 0, 0, 0.05);
18 | box-shadow: 0px 20px 40px rgba(0, 0, 0, 0.05);
19 | width: 100%;
20 | max-width: 25.625em;
21 | margin: auto;
22 | margin-bottom: 6.25em;
23 | border-radius: 0.3125em;
24 | position: relative;
25 | background: #fff;
26 | display: -webkit-box;
27 | display: -ms-flexbox;
28 | display: flex;
29 | -webkit-box-orient: vertical;
30 | -webkit-box-direction: normal;
31 | -ms-flex-direction: column;
32 | flex-direction: column;
33 | }
34 | #reviews .review:last-of-type {
35 | margin-bottom: 0;
36 | }
37 | #reviews .review .profile {
38 | display: block;
39 | height: 6.1875em;
40 | width: 6.1875em;
41 | margin-left: 0;
42 | border-radius: 50%;
43 | margin-bottom: 1em;
44 | position: absolute;
45 | left: 1.875em;
46 | top: -3.1875em;
47 | }
48 | #reviews .review p {
49 | line-height: 1.33333333;
50 | margin-bottom: 1.55555556em;
51 | text-align: left;
52 | }
53 | #reviews .review .star-group {
54 | border-top: 1px solid #E7E7E7;
55 | padding-top: 1em;
56 | display: -webkit-box;
57 | display: -ms-flexbox;
58 | display: flex;
59 | -webkit-box-pack: justify;
60 | -ms-flex-pack: justify;
61 | justify-content: space-between;
62 | -webkit-box-align: center;
63 | -ms-flex-align: center;
64 | align-items: center;
65 | -ms-flex-wrap: nowrap;
66 | flex-wrap: nowrap;
67 | margin-top: auto;
68 | }
69 | #reviews .review .star-group .name {
70 | color: #1A1A1A;
71 | line-height: 1.33333333em;
72 | text-align: left;
73 | font-weight: bold;
74 | display: block;
75 | }
76 | #reviews .review .star-group .desc {
77 | color: #575757;
78 | font-weight: 400;
79 | display: block;
80 | }
81 | #reviews .review .star-group img {
82 | display: block;
83 | width: 5.6875em;
84 | height: 0.9375em;
85 | margin: 0;
86 | }
87 | }
88 | /* Tablet */
89 | @media only screen and (min-width: 48em) {
90 | #reviews {
91 | padding-top: 9.375em;
92 | padding-bottom: 3.125em;
93 | }
94 | #reviews .container {
95 | font-size: min(1.4vw, 1em);
96 | display: -webkit-box;
97 | display: -ms-flexbox;
98 | display: flex;
99 | -webkit-box-pack: center;
100 | -ms-flex-pack: center;
101 | justify-content: center;
102 | -ms-flex-wrap: wrap;
103 | flex-wrap: wrap;
104 | padding: 0;
105 | -webkit-column-gap: 1.875em;
106 | column-gap: 1.875em;
107 | }
108 | #reviews .review {
109 | margin: 0;
110 | margin-bottom: 9.375em;
111 | }
112 | #reviews .review:last-of-type {
113 | margin-bottom: 9.375em;
114 | }
115 | }
116 | /* Dark Mode */
117 | @media only screen and (min-width: 0em) {
118 | body.dark-mode #reviews .review {
119 | background: var(--medium);
120 | }
121 | body.dark-mode #reviews .review .name {
122 | color: #fff;
123 | }
124 | body.dark-mode #reviews .review .desc {
125 | color: #fff;
126 | opacity: .7;
127 | }
128 | }
129 | /*-- -------------------------- -->
130 | <--- Final Call To Action -->
131 | <--- -------------------------- -*/
132 | /* Mobile */
133 | @media only screen and (min-width: 0em) {
134 | #cta {
135 | position: relative;
136 | padding: 3.125em 0;
137 | }
138 | #cta:before {
139 | content: '';
140 | position: absolute;
141 | display: block;
142 | height: 100%;
143 | width: 100%;
144 | background: #000;
145 | opacity: .7;
146 | top: 0;
147 | left: 0;
148 | z-index: -1;
149 | }
150 | #cta .container {
151 | text-align: center;
152 | }
153 | #cta picture {
154 | position: absolute;
155 | top: 0;
156 | left: 0;
157 | height: 100%;
158 | width: 100%;
159 | z-index: -2;
160 | }
161 | #cta picture img {
162 | position: absolute;
163 | top: 0;
164 | left: 0;
165 | height: 100%;
166 | width: 100%;
167 | -o-object-fit: cover;
168 | object-fit: cover;
169 | }
170 | #cta .title {
171 | font-weight: 900;
172 | font-size: min(9vw, 3em);
173 | line-height: 1.20833333;
174 | color: #fff;
175 | position: relative;
176 | margin-bottom: 0.75em;
177 | text-align: center;
178 | }
179 | #cta p {
180 | color: #fff;
181 | text-align: center;
182 | opacity: 1;
183 | margin: auto;
184 | margin-bottom: 2em;
185 | width: 96%;
186 | max-width: 33.22222222em;
187 | }
188 | }
189 | /* Small Desktop */
190 | @media only screen and (min-width: 64em) {
191 | #cta {
192 | padding: 10.5em 0;
193 | }
194 | }
195 | /* Large Desktop */
196 | @media only screen and (min-width: 1300px) {
197 | #cta {
198 | position: relative;
199 | margin-top: 6.25em;
200 | }
201 | #cta:before {
202 | display: none;
203 | }
204 | #cta:after {
205 | content: '';
206 | position: absolute;
207 | display: block;
208 | height: 69.25em;
209 | width: 125em;
210 | background: url("../images/cta-squares.svg");
211 | background-size: contain;
212 | background-position: center;
213 | background-repeat: no-repeat;
214 | opacity: 1;
215 | bottom: 0;
216 | left: 50%;
217 | -webkit-transform: translateX(-50%);
218 | transform: translateX(-50%);
219 | z-index: -3;
220 | }
221 | #cta .container {
222 | width: 90.0625%;
223 | margin: auto;
224 | }
225 | #cta picture {
226 | width: 90.0625%;
227 | left: 50%;
228 | -webkit-transform: translateX(-50%);
229 | transform: translateX(-50%);
230 | }
231 | #cta picture:before {
232 | content: '';
233 | position: absolute;
234 | display: block;
235 | height: 100%;
236 | width: 100%;
237 | background: #000;
238 | opacity: .7;
239 | top: 0;
240 | left: 0;
241 | z-index: 1;
242 | }
243 | }
244 | /* Dark Mode */
245 | @media only screen and (min-width: 0em) {
246 | body.dark-mode #cta:after {
247 | display: none;
248 | }
249 | }
250 |
--------------------------------------------------------------------------------
/css/about.css:
--------------------------------------------------------------------------------
1 | /*-- -------------------------- -->
2 | <--- Side By Side -->
3 | <--- -------------------------- -*/
4 | /* Mobile */
5 | @media only screen and (min-width: 0em) {
6 | #sidebyside {
7 | padding: 50px 0;
8 | }
9 | #sidebyside .container {
10 | display: -webkit-box;
11 | display: -ms-flexbox;
12 | display: flex;
13 | -webkit-box-pack: center;
14 | -ms-flex-pack: center;
15 | justify-content: center;
16 | -webkit-box-orient: vertical;
17 | -webkit-box-direction: normal;
18 | -ms-flex-direction: column;
19 | flex-direction: column;
20 | -webkit-box-align: center;
21 | -ms-flex-align: center;
22 | align-items: center;
23 | }
24 | #sidebyside .content {
25 | -webkit-box-ordinal-group: 3;
26 | -ms-flex-order: 2;
27 | order: 2;
28 | margin: auto;
29 | margin-top: 4.6875em;
30 | max-width: 38.1875em;
31 | }
32 | #sidebyside .content h2 {
33 | font-size: 3em;
34 | margin-bottom: 0.875em;
35 | }
36 | #sidebyside .content p {
37 | margin-bottom: 1.11111111em;
38 | }
39 | #sidebyside .content ul {
40 | padding-left: 1.25em;
41 | margin-bottom: 1.25em;
42 | }
43 | #sidebyside .content ul li {
44 | list-style: none;
45 | display: -webkit-box;
46 | display: -ms-flexbox;
47 | display: flex;
48 | -webkit-box-pack: start;
49 | -ms-flex-pack: start;
50 | justify-content: flex-start;
51 | -webkit-box-align: start;
52 | -ms-flex-align: start;
53 | align-items: flex-start;
54 | }
55 | #sidebyside .content ul li img {
56 | margin-right: 0.625em;
57 | margin-top: 0.22222222em;
58 | }
59 | #sidebyside .content .button-solid {
60 | margin-top: 1.78571429em;
61 | }
62 | #sidebyside .image-box {
63 | display: block;
64 | position: relative;
65 | margin: auto;
66 | width: 38.1875em;
67 | height: 53.8125em;
68 | font-size: min(1.4vw, 1em);
69 | }
70 | #sidebyside .image-box:before {
71 | content: '';
72 | position: absolute;
73 | display: block;
74 | height: 100%;
75 | width: 100%;
76 | background: var(--primary);
77 | opacity: 1;
78 | top: 2.5em;
79 | left: -2.5em;
80 | }
81 | #sidebyside .image-box:after {
82 | content: '';
83 | position: absolute;
84 | display: block;
85 | height: 32.25em;
86 | width: 28.75em;
87 | background: url("/images/content-circles.svg");
88 | background-size: contain;
89 | background-position: center;
90 | background-repeat: no-repeat;
91 | opacity: 1;
92 | top: -14.125em;
93 | right: -6.8125em;
94 | z-index: -1;
95 | }
96 | #sidebyside .image-box img {
97 | position: absolute;
98 | top: 0;
99 | left: 0;
100 | height: 100%;
101 | width: 100%;
102 | -o-object-fit: cover;
103 | object-fit: cover;
104 | }
105 | }
106 | /* Inbetween */
107 | @media only screen and (min-width: 666px) {
108 | #sidebyside {
109 | padding: 6.25em 0;
110 | }
111 | }
112 | /* Small Desktop */
113 | @media only screen and (min-width: 1300px) {
114 | #sidebyside {
115 | padding: 9.375em 0;
116 | }
117 | #sidebyside .container {
118 | max-width: 86.9375em;
119 | -webkit-box-orient: horizontal;
120 | -webkit-box-direction: normal;
121 | -ms-flex-direction: row;
122 | flex-direction: row;
123 | -webkit-box-pack: justify;
124 | -ms-flex-pack: justify;
125 | justify-content: space-between;
126 | -webkit-box-align: start;
127 | -ms-flex-align: start;
128 | align-items: flex-start;
129 | }
130 | #sidebyside .content {
131 | margin: 0;
132 | width: 60%;
133 | }
134 | #sidebyside .image-box {
135 | margin: 0;
136 | margin-right: 10.625em;
137 | }
138 | }
139 | /*-- -------------------------- -->
140 | <--- Final Call To Action -->
141 | <--- -------------------------- -*/
142 | /* Mobile */
143 | @media only screen and (min-width: 0em) {
144 | #cta {
145 | position: relative;
146 | padding: 3.125em 0;
147 | }
148 | #cta:before {
149 | content: '';
150 | position: absolute;
151 | display: block;
152 | height: 100%;
153 | width: 100%;
154 | background: #000;
155 | opacity: .7;
156 | top: 0;
157 | left: 0;
158 | z-index: -1;
159 | }
160 | #cta .container {
161 | text-align: center;
162 | }
163 | #cta picture {
164 | position: absolute;
165 | top: 0;
166 | left: 0;
167 | height: 100%;
168 | width: 100%;
169 | z-index: -2;
170 | }
171 | #cta picture img {
172 | position: absolute;
173 | top: 0;
174 | left: 0;
175 | height: 100%;
176 | width: 100%;
177 | -o-object-fit: cover;
178 | object-fit: cover;
179 | }
180 | #cta .title {
181 | font-weight: 900;
182 | font-size: min(9vw, 3em);
183 | line-height: 1.20833333;
184 | color: #fff;
185 | position: relative;
186 | margin-bottom: 0.75em;
187 | text-align: center;
188 | }
189 | #cta p {
190 | color: #fff;
191 | text-align: center;
192 | opacity: 1;
193 | margin: auto;
194 | margin-bottom: 2em;
195 | width: 96%;
196 | max-width: 33.22222222em;
197 | }
198 | }
199 | /* Small Desktop */
200 | @media only screen and (min-width: 64em) {
201 | #cta {
202 | padding: 10.5em 0;
203 | }
204 | }
205 | /* Large Desktop */
206 | @media only screen and (min-width: 1300px) {
207 | #cta {
208 | position: relative;
209 | margin-top: 6.25em;
210 | }
211 | #cta:before {
212 | display: none;
213 | }
214 | #cta:after {
215 | content: '';
216 | position: absolute;
217 | display: block;
218 | height: 69.25em;
219 | width: 125em;
220 | background: url("../images/cta-squares.svg");
221 | background-size: contain;
222 | background-position: center;
223 | background-repeat: no-repeat;
224 | opacity: 1;
225 | bottom: 0;
226 | left: 50%;
227 | -webkit-transform: translateX(-50%);
228 | transform: translateX(-50%);
229 | z-index: -3;
230 | }
231 | #cta .container {
232 | width: 90.0625%;
233 | margin: auto;
234 | }
235 | #cta picture {
236 | width: 90.0625%;
237 | left: 50%;
238 | -webkit-transform: translateX(-50%);
239 | transform: translateX(-50%);
240 | }
241 | #cta picture:before {
242 | content: '';
243 | position: absolute;
244 | display: block;
245 | height: 100%;
246 | width: 100%;
247 | background: #000;
248 | opacity: .7;
249 | top: 0;
250 | left: 0;
251 | z-index: 1;
252 | }
253 | }
254 | /* Dark Mode */
255 | @media only screen and (min-width: 0em) {
256 | body.dark-mode #cta:after {
257 | display: none;
258 | }
259 | }
260 |
--------------------------------------------------------------------------------
/css/critical.less:
--------------------------------------------------------------------------------
1 |
2 | /*-- -------------------------- -->
3 | <--- Landing -->
4 | <--- -------------------------- -*/
5 |
6 | /* Mobile */
7 | @media only screen and (min-width: 0em) {
8 |
9 | #hero {
10 | font-size: inherit;
11 | padding-bottom: 270/16em;
12 | padding-top: 150/16em;
13 | position: relative;
14 | z-index: 1;
15 |
16 | &:before {
17 | content: '';
18 | position: absolute;
19 | display: block;
20 | height: 100%;
21 | width: 100%;
22 | background: #000;
23 | opacity: .65;
24 | top: 0;
25 | left: 0;
26 | z-index: -10;
27 | }
28 |
29 | picture {
30 | position: absolute;
31 | top: 0;
32 | left: 0;
33 | height: 100%;
34 | width: 100%;
35 | z-index: -11;
36 |
37 | img {
38 | position: absolute;
39 | top: 0;
40 | left: 0;
41 | height: 100%;
42 | width: 100%;
43 | object-fit: cover;
44 | }
45 | }
46 |
47 | .hero-content {
48 | width: 96%;
49 | max-width: 1144/16em;
50 | margin: auto;
51 | position: relative;
52 | z-index: 10;
53 | text-align: center;
54 | }
55 |
56 | .hero-content {
57 | padding: 0;
58 | }
59 |
60 | .heroText {
61 | width: 100%;
62 | margin: auto;
63 | max-width: 910/16em;
64 | }
65 |
66 | h1 {
67 | font-weight: bold;
68 | font-size:~"min(12vw, 4em)";
69 | color: #fff;
70 | text-align: center;
71 | line-height: 77/64;
72 | margin: auto;
73 | width: 100%;
74 | max-width: 904/64em;
75 | margin-bottom: 92/64em;
76 | position: relative;
77 |
78 | &:before {
79 | content: '';
80 | position: absolute;
81 | display: block;
82 | height: 4/64em;
83 | width: 97/64em;
84 | background: var(--primary);
85 | opacity: 1;
86 | bottom: -16/64em;
87 | left: 50%;
88 | transform: translateX(-50%);
89 | }
90 | }
91 |
92 | p {
93 | line-height: 1.55em;
94 | margin: auto;
95 | margin-bottom: 31/18em;
96 | color: #fff;
97 | width: 100%;
98 | text-align: center;
99 | max-width: 617/18em;
100 | opacity: 1;
101 | }
102 |
103 | .button-solid {
104 | margin: auto;
105 | display: inline-block;
106 | width: auto;
107 | }
108 | }
109 |
110 | }
111 |
112 | /* Tablet */
113 | @media only screen and (min-width: 48em) {
114 |
115 | #hero {
116 | padding: 200/16em 0 300/16em 0;
117 | z-index: 1;
118 | overflow: hidden;
119 |
120 | .hero-content {
121 | display: flex;
122 | justify-content: space-between;
123 | position: relative;
124 | }
125 | }
126 | }
127 |
128 | /* Small Desktop */
129 | @media only screen and (min-width: 1300px) {
130 |
131 | #hero {
132 | padding-top: 273/16em;
133 | padding-bottom: 307/16em;
134 | background: url("../images/landing.jpg");
135 | background-size: cover;
136 | background-position: center;
137 | background-repeat: no-repeat;
138 | background-attachment: fixed;
139 |
140 | picture {
141 | display: none;
142 | }
143 | }
144 | }
145 |
146 | /*-- -------------------------- -->
147 | <--- Services -->
148 | <--- -------------------------- -*/
149 |
150 | /* Mobile */
151 | @media only screen and (min-width: 0em) {
152 |
153 | .services {
154 | border-radius: 5/16em;
155 | margin: auto;
156 | margin-top: -167/16em;
157 | position: relative;
158 | z-index: 100;
159 | background: #fff;
160 | width: 90%;
161 | max-width: 1320/16em;
162 | padding: 50/16em 20/16em;
163 | border-top: 6/16em solid var(--primary);
164 | box-shadow: 0px 20px 40px rgba(0, 0, 0, 0.05);
165 | margin-bottom: 50/16em;
166 | .card {
167 | display: block;
168 | width: 100%;
169 | max-width: 357/16em;
170 | margin: auto;
171 | margin-bottom: 50/16em;
172 | &:last-of-type {
173 | margin-bottom: 0;
174 | }
175 |
176 | picture {
177 | background: var(--primary);
178 | width: 88/16em;
179 | height: 88/16em;
180 | display: flex;
181 | justify-content: center;
182 | align-items: center;
183 | margin: auto;
184 | margin-bottom: 23/16em;
185 | border-radius: 50%;
186 |
187 | img {
188 | width: 48/16em;
189 | height: 48/16em;
190 | }
191 | }
192 | h2 {
193 | text-align: center;
194 | font-size: 32/16em;
195 | line-height: 27/20em;
196 | font-weight: 700;
197 | color: #1a1a1a;
198 | margin-bottom: 13/20em;
199 | }
200 | p {
201 | text-align: center;
202 | line-height: 24/18em;
203 | width: 100%;
204 | opacity: .7;
205 | }
206 | }
207 | }
208 | }
209 |
210 | /* Inbetween */
211 | @media only screen and (min-width: 768px) {
212 | .services {
213 | font-size:~"min(1.8vw, 1em)";
214 | display: flex;
215 | justify-content: space-between;
216 | align-items: flex-start;
217 | width: 98%;
218 |
219 | .card {
220 | margin: 0;
221 | max-width: 325/16em;
222 | }
223 | }
224 | }
225 |
226 | /* Large Desktop */
227 | @media only screen and (min-width: 1300px) {
228 | .services {
229 | padding: 50/16em 80/16em;
230 |
231 | .card {
232 | max-width: 357/16em;
233 | }
234 | }
235 | }
236 |
237 | /* Dark mode */
238 | @media only screen and (min-width: 0em) {
239 | body.dark-mode {
240 | #services {
241 | background: var(--medium);
242 |
243 | picture {
244 | background: var(--primaryDark);
245 | }
246 |
247 | h2 {
248 | color: #fff;
249 | font-weight: bold;
250 | }
251 | }
252 | }
253 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Creative Commons Legal Code
2 |
3 | CC0 1.0 Universal
4 |
5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
12 | HEREUNDER.
13 |
14 | Statement of Purpose
15 |
16 | The laws of most jurisdictions throughout the world automatically confer
17 | exclusive Copyright and Related Rights (defined below) upon the creator
18 | and subsequent owner(s) (each and all, an "owner") of an original work of
19 | authorship and/or a database (each, a "Work").
20 |
21 | Certain owners wish to permanently relinquish those rights to a Work for
22 | the purpose of contributing to a commons of creative, cultural and
23 | scientific works ("Commons") that the public can reliably and without fear
24 | of later claims of infringement build upon, modify, incorporate in other
25 | works, reuse and redistribute as freely as possible in any form whatsoever
26 | and for any purposes, including without limitation commercial purposes.
27 | These owners may contribute to the Commons to promote the ideal of a free
28 | culture and the further production of creative, cultural and scientific
29 | works, or to gain reputation or greater distribution for their Work in
30 | part through the use and efforts of others.
31 |
32 | For these and/or other purposes and motivations, and without any
33 | expectation of additional consideration or compensation, the person
34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she
35 | is an owner of Copyright and Related Rights in the Work, voluntarily
36 | elects to apply CC0 to the Work and publicly distribute the Work under its
37 | terms, with knowledge of his or her Copyright and Related Rights in the
38 | Work and the meaning and intended legal effect of CC0 on those rights.
39 |
40 | 1. Copyright and Related Rights. A Work made available under CC0 may be
41 | protected by copyright and related or neighboring rights ("Copyright and
42 | Related Rights"). Copyright and Related Rights include, but are not
43 | limited to, the following:
44 |
45 | i. the right to reproduce, adapt, distribute, perform, display,
46 | communicate, and translate a Work;
47 | ii. moral rights retained by the original author(s) and/or performer(s);
48 | iii. publicity and privacy rights pertaining to a person's image or
49 | likeness depicted in a Work;
50 | iv. rights protecting against unfair competition in regards to a Work,
51 | subject to the limitations in paragraph 4(a), below;
52 | v. rights protecting the extraction, dissemination, use and reuse of data
53 | in a Work;
54 | vi. database rights (such as those arising under Directive 96/9/EC of the
55 | European Parliament and of the Council of 11 March 1996 on the legal
56 | protection of databases, and under any national implementation
57 | thereof, including any amended or successor version of such
58 | directive); and
59 | vii. other similar, equivalent or corresponding rights throughout the
60 | world based on applicable law or treaty, and any national
61 | implementations thereof.
62 |
63 | 2. Waiver. To the greatest extent permitted by, but not in contravention
64 | of, applicable law, Affirmer hereby overtly, fully, permanently,
65 | irrevocably and unconditionally waives, abandons, and surrenders all of
66 | Affirmer's Copyright and Related Rights and associated claims and causes
67 | of action, whether now known or unknown (including existing as well as
68 | future claims and causes of action), in the Work (i) in all territories
69 | worldwide, (ii) for the maximum duration provided by applicable law or
70 | treaty (including future time extensions), (iii) in any current or future
71 | medium and for any number of copies, and (iv) for any purpose whatsoever,
72 | including without limitation commercial, advertising or promotional
73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
74 | member of the public at large and to the detriment of Affirmer's heirs and
75 | successors, fully intending that such Waiver shall not be subject to
76 | revocation, rescission, cancellation, termination, or any other legal or
77 | equitable action to disrupt the quiet enjoyment of the Work by the public
78 | as contemplated by Affirmer's express Statement of Purpose.
79 |
80 | 3. Public License Fallback. Should any part of the Waiver for any reason
81 | be judged legally invalid or ineffective under applicable law, then the
82 | Waiver shall be preserved to the maximum extent permitted taking into
83 | account Affirmer's express Statement of Purpose. In addition, to the
84 | extent the Waiver is so judged Affirmer hereby grants to each affected
85 | person a royalty-free, non transferable, non sublicensable, non exclusive,
86 | irrevocable and unconditional license to exercise Affirmer's Copyright and
87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the
88 | maximum duration provided by applicable law or treaty (including future
89 | time extensions), (iii) in any current or future medium and for any number
90 | of copies, and (iv) for any purpose whatsoever, including without
91 | limitation commercial, advertising or promotional purposes (the
92 | "License"). The License shall be deemed effective as of the date CC0 was
93 | applied by Affirmer to the Work. Should any part of the License for any
94 | reason be judged legally invalid or ineffective under applicable law, such
95 | partial invalidity or ineffectiveness shall not invalidate the remainder
96 | of the License, and in such case Affirmer hereby affirms that he or she
97 | will not (i) exercise any of his or her remaining Copyright and Related
98 | Rights in the Work or (ii) assert any associated claims and causes of
99 | action with respect to the Work, in either case contrary to Affirmer's
100 | express Statement of Purpose.
101 |
102 | 4. Limitations and Disclaimers.
103 |
104 | a. No trademark or patent rights held by Affirmer are waived, abandoned,
105 | surrendered, licensed or otherwise affected by this document.
106 | b. Affirmer offers the Work as-is and makes no representations or
107 | warranties of any kind concerning the Work, express, implied,
108 | statutory or otherwise, including without limitation warranties of
109 | title, merchantability, fitness for a particular purpose, non
110 | infringement, or the absence of latent or other defects, accuracy, or
111 | the present or absence of errors, whether or not discoverable, all to
112 | the greatest extent permissible under applicable law.
113 | c. Affirmer disclaims responsibility for clearing rights of other persons
114 | that may apply to the Work or any use thereof, including without
115 | limitation any person's Copyright and Related Rights in the Work.
116 | Further, Affirmer disclaims responsibility for obtaining any necessary
117 | consents, permissions or other rights required for any use of the
118 | Work.
119 | d. Affirmer understands and acknowledges that Creative Commons is not a
120 | party to this document and has no duty or obligation with respect to
121 | this CC0 or use of the Work.
122 |
--------------------------------------------------------------------------------
/css/projects.less:
--------------------------------------------------------------------------------
1 | /*-- -------------------------- -->
2 | <--- Portfolio -->
3 | <--- -------------------------- -*/
4 |
5 | /* Mobile */
6 | @media only screen and (min-width: 0em) {
7 | #portfolio {
8 | padding-top: 50/16em;
9 | padding-bottom: 35%;
10 | position: relative;
11 | z-index: 5;
12 |
13 | .container {
14 | width: 96%;
15 | max-width: 1322/16em;
16 | padding: 0;
17 | margin: auto;
18 | display: flex;
19 | justify-content: center;
20 | align-items: flex-start;
21 | flex-wrap: wrap;
22 | gap: 30/16em;
23 | font-size:~"min(1.3vw, 1em)";
24 |
25 | .row {
26 | display: flex;
27 | flex-direction: column;
28 | justify-content: flex-start;
29 | gap: 30/16em;
30 |
31 | &:nth-of-type(1) {
32 | picture {
33 | &:nth-of-type(1) {
34 | width: 420/16em;
35 | height: 567/16em;
36 | }
37 |
38 | &:nth-of-type(2) {
39 | width: 420/16em;
40 | height: 629/16em;
41 | }
42 |
43 | &:nth-of-type(3) {
44 | width: 420/16em;
45 | height: 512/16em;
46 | }
47 |
48 |
49 | }
50 | }
51 |
52 | &:nth-of-type(2) {
53 | picture {
54 | &:nth-of-type(1) {
55 | width: 420/16em;
56 | height: 492/16em;
57 | }
58 |
59 | &:nth-of-type(2) {
60 | width: 420/16em;
61 | height: 517/16em;
62 | }
63 |
64 | &:nth-of-type(3) {
65 | width: 420/16em;
66 | height: 629/16em;
67 | }
68 | }
69 | }
70 |
71 | &:nth-of-type(3) {
72 | picture {
73 | &:nth-of-type(1) {
74 | width: 420/16em;
75 | height: 625/16em;
76 | }
77 |
78 | &:nth-of-type(2) {
79 | width: 420/16em;
80 | height: 452/16em;
81 | }
82 |
83 | &:nth-of-type(3) {
84 | width: 420/16em;
85 | height: 629/16em;
86 | }
87 | }
88 | }
89 |
90 | picture {
91 | position: relative;
92 | display: block;
93 | img {
94 | position: absolute;
95 | top: 0;
96 | left: 0;
97 | height: 100%;
98 | width: 100%;
99 | object-fit: cover;
100 | border-radius: 8/16em;
101 | }
102 | }
103 | }
104 | }
105 | }
106 | }
107 |
108 | /* Small Desktop */
109 | @media only screen and (min-width: 64em) {
110 | #portfolio {
111 | padding: 150/16em 0;
112 | }
113 | }
114 |
115 | /*-- -------------------------- -->
116 | <--- Final Call To Action -->
117 | <--- -------------------------- -*/
118 |
119 | /* Mobile */
120 | @media only screen and (min-width: 0em) {
121 | #cta {
122 | position: relative;
123 | padding: 50/16em 0;
124 |
125 | &:before {
126 | content: '';
127 | position: absolute;
128 | display: block;
129 | height: 100%;
130 | width: 100%;
131 | background: #000;
132 | opacity: .7;
133 | top: 0;
134 | left: 0;
135 | z-index: -1;
136 | }
137 |
138 | .container {
139 | text-align: center;
140 | }
141 |
142 | picture {
143 | position: absolute;
144 | top: 0;
145 | left: 0;
146 | height: 100%;
147 | width: 100%;
148 | z-index: -2;
149 |
150 | img {
151 | position: absolute;
152 | top: 0;
153 | left: 0;
154 | height: 100%;
155 | width: 100%;
156 | object-fit: cover;
157 | }
158 | }
159 |
160 | .title {
161 | font-weight: 900;
162 | font-size:~"min(9vw, 3em)";
163 | line-height: 58/48;
164 | color: #fff;
165 | position: relative;
166 | margin-bottom: 36/48em;
167 | text-align: center;
168 | }
169 |
170 | p {
171 | color: #fff;
172 | text-align: center;
173 | opacity: 1;
174 | margin: auto;
175 | margin-bottom: 36/18em;
176 | width: 96%;
177 | max-width: 598/18em;
178 |
179 | }
180 | }
181 | }
182 |
183 | /* Small Desktop */
184 | @media only screen and (min-width: 64em) {
185 | #cta {
186 | padding: 168/16em 0;
187 | }
188 | }
189 |
190 | /* Large Desktop */
191 | @media only screen and (min-width: 1300px) {
192 | #cta {
193 | position: relative;
194 | margin-top: 100/16em;
195 | &:before {
196 | display: none;
197 | }
198 | &:after {
199 | content: '';
200 | position: absolute;
201 | display: block;
202 | height: 1108/16em;
203 | width: 2000/16em;
204 | background: url("../images/cta-squares.svg");
205 | background-size: contain;
206 | background-position: center;
207 | background-repeat: no-repeat;
208 | opacity: 1;
209 | bottom: 0;
210 | left: 50%;
211 | transform: translateX(-50%);
212 | z-index: -3;
213 | }
214 | .container {
215 | width: 90.0625%;
216 | margin: auto;
217 | }
218 |
219 | picture {
220 | width: 90.0625%;
221 | left: 50%;
222 | transform: translateX(-50%);
223 |
224 | &:before {
225 | content: '';
226 | position: absolute;
227 | display: block;
228 | height: 100%;
229 | width: 100%;
230 | background: #000;
231 | opacity: .7;
232 | top: 0;
233 | left: 0;
234 | z-index: 1;
235 | }
236 | }
237 | }
238 | }
239 |
240 | /* Dark Mode */
241 | @media only screen and (min-width: 0em) {
242 | body.dark-mode {
243 | #cta {
244 | &:after {
245 | display: none;
246 | }
247 | }
248 | }
249 | }
--------------------------------------------------------------------------------
/images/content-circles.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/css/about.less:
--------------------------------------------------------------------------------
1 |
2 | /*-- -------------------------- -->
3 | <--- Side By Side -->
4 | <--- -------------------------- -*/
5 |
6 | /* Mobile */
7 | @media only screen and (min-width: 0em) {
8 | #sidebyside {
9 | padding: 50px 0;
10 | .container {
11 | display: flex;
12 | justify-content: center;
13 | flex-direction: column;
14 | align-items: center;
15 | }
16 |
17 | .content {
18 | order: 2;
19 | margin: auto;
20 | margin-top: 75/16em;
21 | max-width: 611/16em;
22 |
23 | h2 {
24 | font-size: 48/16em;
25 | margin-bottom: 42/48em;
26 | }
27 |
28 | p {
29 | margin-bottom: 20/18em;
30 | }
31 |
32 | ul {
33 | padding-left: 20/16em;
34 | margin-bottom: 20/16em;
35 |
36 | li {
37 | list-style: none;
38 | display: flex;
39 | justify-content: flex-start;
40 | align-items: flex-start;
41 |
42 | img {
43 | margin-right: 10/16em;
44 | margin-top: 4/18em;
45 | }
46 | }
47 | }
48 |
49 | .button-solid {
50 | margin-top: 25/14em;
51 | }
52 | }
53 |
54 | .image-box {
55 | display: block;
56 | position: relative;
57 | margin: auto;
58 | width: 611/16em;
59 | height: 861/16em;
60 | font-size:~"min(1.4vw, 1em)"; // scales the image-box down
61 |
62 | &:before {
63 | content: '';
64 | position: absolute;
65 | display: block;
66 | height: 100%;
67 | width: 100%;
68 | background: var(--primary);
69 | opacity: 1;
70 | top: 40/16em;
71 | left: -40/16em;
72 | }
73 |
74 | &:after {
75 | content: '';
76 | position: absolute;
77 | display: block;
78 | height: 516/16em;
79 | width: 460/16em;
80 | background: url("/images/content-circles.svg");
81 | background-size: contain;
82 | background-position: center;
83 | background-repeat: no-repeat;
84 | opacity: 1;
85 | top: -226/16em;
86 | right: -109/16em;
87 | z-index: -1;
88 | }
89 |
90 | img {
91 | position: absolute;
92 | top: 0;
93 | left: 0;
94 | height: 100%;
95 | width: 100%;
96 | object-fit: cover;
97 | }
98 | }
99 | }
100 | }
101 |
102 | /* Inbetween */
103 | @media only screen and (min-width: 666px) {
104 | #sidebyside {
105 | padding: 100/16em 0;
106 | }
107 | }
108 |
109 | /* Small Desktop */
110 | @media only screen and (min-width: 1300px) {
111 | #sidebyside {
112 | padding: 150/16em 0;
113 | .container {
114 | max-width: 1391/16em;
115 | flex-direction: row;
116 | justify-content: space-between;
117 | align-items: flex-start;
118 | }
119 |
120 | .content {
121 | margin: 0;
122 | width: 60%;
123 | }
124 |
125 | .image-box {
126 | margin: 0;
127 | margin-right: 170/16em;
128 | }
129 | }
130 | }
131 |
132 | /*-- -------------------------- -->
133 | <--- Final Call To Action -->
134 | <--- -------------------------- -*/
135 |
136 | /* Mobile */
137 | @media only screen and (min-width: 0em) {
138 | #cta {
139 | position: relative;
140 | padding: 50/16em 0;
141 |
142 | &:before {
143 | content: '';
144 | position: absolute;
145 | display: block;
146 | height: 100%;
147 | width: 100%;
148 | background: #000;
149 | opacity: .7;
150 | top: 0;
151 | left: 0;
152 | z-index: -1;
153 | }
154 |
155 | .container {
156 | text-align: center;
157 | }
158 |
159 | picture {
160 | position: absolute;
161 | top: 0;
162 | left: 0;
163 | height: 100%;
164 | width: 100%;
165 | z-index: -2;
166 |
167 | img {
168 | position: absolute;
169 | top: 0;
170 | left: 0;
171 | height: 100%;
172 | width: 100%;
173 | object-fit: cover;
174 | }
175 | }
176 |
177 | .title {
178 | font-weight: 900;
179 | font-size:~"min(9vw, 3em)";
180 | line-height: 58/48;
181 | color: #fff;
182 | position: relative;
183 | margin-bottom: 36/48em;
184 | text-align: center;
185 | }
186 |
187 | p {
188 | color: #fff;
189 | text-align: center;
190 | opacity: 1;
191 | margin: auto;
192 | margin-bottom: 36/18em;
193 | width: 96%;
194 | max-width: 598/18em;
195 |
196 | }
197 | }
198 | }
199 |
200 | /* Small Desktop */
201 | @media only screen and (min-width: 64em) {
202 | #cta {
203 | padding: 168/16em 0;
204 | }
205 | }
206 |
207 | /* Large Desktop */
208 | @media only screen and (min-width: 1300px) {
209 | #cta {
210 | position: relative;
211 | margin-top: 100/16em;
212 | &:before {
213 | display: none;
214 | }
215 | &:after {
216 | content: '';
217 | position: absolute;
218 | display: block;
219 | height: 1108/16em;
220 | width: 2000/16em;
221 | background: url("../images/cta-squares.svg");
222 | background-size: contain;
223 | background-position: center;
224 | background-repeat: no-repeat;
225 | opacity: 1;
226 | bottom: 0;
227 | left: 50%;
228 | transform: translateX(-50%);
229 | z-index: -3;
230 | }
231 | .container {
232 | width: 90.0625%;
233 | margin: auto;
234 | }
235 |
236 | picture {
237 | width: 90.0625%;
238 | left: 50%;
239 | transform: translateX(-50%);
240 |
241 | &:before {
242 | content: '';
243 | position: absolute;
244 | display: block;
245 | height: 100%;
246 | width: 100%;
247 | background: #000;
248 | opacity: .7;
249 | top: 0;
250 | left: 0;
251 | z-index: 1;
252 | }
253 | }
254 | }
255 | }
256 |
257 | /* Dark Mode */
258 | @media only screen and (min-width: 0em) {
259 | body.dark-mode {
260 | #cta {
261 | &:after {
262 | display: none;
263 | }
264 | }
265 | }
266 | }
--------------------------------------------------------------------------------
/css/reviews.less:
--------------------------------------------------------------------------------
1 | /*-- -------------------------- -->
2 | <--- Reviews -->
3 | <--- -------------------------- -*/
4 |
5 | /* Mobile */
6 | @media only screen and (min-width: 0em) {
7 | #reviews {
8 | padding-top: 120/16em;
9 | padding-bottom: 50/16em;
10 | margin: auto;
11 |
12 | .container {
13 | width: 96%;
14 | max-width: 1320/16em;
15 | }
16 |
17 | .review {
18 | padding: 64/16em 30/16em 18/16em 30/16em;
19 | box-shadow: 0px 20px 40px rgba(0, 0, 0, 0.05);
20 | width: 100%;
21 | max-width: 410/16em;
22 | margin: auto;
23 | margin-bottom: 100/16em;
24 | border-radius: 5/16em;
25 | position: relative;
26 | background: #fff;
27 | display: flex;
28 | flex-direction: column;
29 | &:last-of-type {
30 | margin-bottom: 0;
31 | }
32 |
33 | .profile {
34 | display: block;
35 | height: 99/16em;
36 | width: 99/16em;
37 | margin-left: 0;
38 | border-radius: 50%;
39 | margin-bottom: 16/16em;
40 | position: absolute;
41 | left: 30/16em;
42 | top: -51/16em;
43 | }
44 |
45 | p {
46 | line-height: 24/18;
47 | margin-bottom: 28/18em;
48 | text-align: left;
49 | }
50 |
51 | .star-group {
52 | border-top: 1px solid #E7E7E7;
53 | padding-top: 16/16em;
54 | display: flex;
55 | justify-content: space-between;
56 | align-items: center;
57 | flex-wrap: nowrap;
58 | margin-top: auto;
59 |
60 | .name {
61 | color: #1A1A1A;
62 | line-height: 24/18em;
63 | text-align: left;
64 | font-weight: bold;
65 | display: block;
66 | }
67 |
68 | .desc {
69 | color: #575757;
70 | font-weight: 400;
71 | display: block;
72 | }
73 |
74 | img {
75 | display: block;
76 | width: 91/16em;
77 | height: 15/16em;
78 | margin: 0;
79 | }
80 | }
81 | }
82 | }
83 | }
84 |
85 | /* Tablet */
86 | @media only screen and (min-width: 48em) {
87 |
88 | #reviews {
89 | padding-top: 150/16em;
90 | padding-bottom: 50/16em;
91 |
92 | .container {
93 | font-size:~"min(1.4vw, 1em)";
94 | display: flex;
95 | justify-content: center;
96 | flex-wrap: wrap;
97 | padding: 0;
98 | column-gap: 30/16em;
99 | }
100 |
101 | .review {
102 | margin: 0;
103 | margin-bottom: 150/16em;
104 |
105 | &:last-of-type {
106 | margin-bottom: 150/16em;
107 | }
108 | }
109 | }
110 | }
111 |
112 | /* Dark Mode */
113 | @media only screen and (min-width: 0em) {
114 | body.dark-mode {
115 | #reviews {
116 | .review {
117 | background: var(--medium);
118 |
119 | .name {
120 | color: #fff;
121 | }
122 |
123 | .desc {
124 | color: #fff;
125 | opacity: .7;
126 | }
127 | }
128 | }
129 | }
130 | }
131 |
132 | /*-- -------------------------- -->
133 | <--- Final Call To Action -->
134 | <--- -------------------------- -*/
135 |
136 | /* Mobile */
137 | @media only screen and (min-width: 0em) {
138 | #cta {
139 | position: relative;
140 | padding: 50/16em 0;
141 |
142 | &:before {
143 | content: '';
144 | position: absolute;
145 | display: block;
146 | height: 100%;
147 | width: 100%;
148 | background: #000;
149 | opacity: .7;
150 | top: 0;
151 | left: 0;
152 | z-index: -1;
153 | }
154 |
155 | .container {
156 | text-align: center;
157 | }
158 |
159 | picture {
160 | position: absolute;
161 | top: 0;
162 | left: 0;
163 | height: 100%;
164 | width: 100%;
165 | z-index: -2;
166 |
167 | img {
168 | position: absolute;
169 | top: 0;
170 | left: 0;
171 | height: 100%;
172 | width: 100%;
173 | object-fit: cover;
174 | }
175 | }
176 |
177 | .title {
178 | font-weight: 900;
179 | font-size:~"min(9vw, 3em)";
180 | line-height: 58/48;
181 | color: #fff;
182 | position: relative;
183 | margin-bottom: 36/48em;
184 | text-align: center;
185 | }
186 |
187 | p {
188 | color: #fff;
189 | text-align: center;
190 | opacity: 1;
191 | margin: auto;
192 | margin-bottom: 36/18em;
193 | width: 96%;
194 | max-width: 598/18em;
195 |
196 | }
197 | }
198 | }
199 |
200 | /* Small Desktop */
201 | @media only screen and (min-width: 64em) {
202 | #cta {
203 | padding: 168/16em 0;
204 | }
205 | }
206 |
207 | /* Large Desktop */
208 | @media only screen and (min-width: 1300px) {
209 | #cta {
210 | position: relative;
211 | margin-top: 100/16em;
212 | &:before {
213 | display: none;
214 | }
215 | &:after {
216 | content: '';
217 | position: absolute;
218 | display: block;
219 | height: 1108/16em;
220 | width: 2000/16em;
221 | background: url("../images/cta-squares.svg");
222 | background-size: contain;
223 | background-position: center;
224 | background-repeat: no-repeat;
225 | opacity: 1;
226 | bottom: 0;
227 | left: 50%;
228 | transform: translateX(-50%);
229 | z-index: -3;
230 | }
231 | .container {
232 | width: 90.0625%;
233 | margin: auto;
234 | }
235 |
236 | picture {
237 | width: 90.0625%;
238 | left: 50%;
239 | transform: translateX(-50%);
240 |
241 | &:before {
242 | content: '';
243 | position: absolute;
244 | display: block;
245 | height: 100%;
246 | width: 100%;
247 | background: #000;
248 | opacity: .7;
249 | top: 0;
250 | left: 0;
251 | z-index: 1;
252 | }
253 | }
254 | }
255 | }
256 |
257 | /* Dark Mode */
258 | @media only screen and (min-width: 0em) {
259 | body.dark-mode {
260 | #cta {
261 | &:after {
262 | display: none;
263 | }
264 | }
265 | }
266 | }
--------------------------------------------------------------------------------
/css/contact.css:
--------------------------------------------------------------------------------
1 | /*-- -------------------------- -->
2 | <--- Form -->
3 | <--- -------------------------- -*/
4 | /* Mobile */
5 | @media only screen and (min-width: 0em) {
6 | #form {
7 | padding: 3.125em 0;
8 | margin: auto;
9 | position: relative;
10 | padding-bottom: 36%;
11 | }
12 | #form .top-wave {
13 | position: absolute;
14 | width: 100%;
15 | top: -0.125em;
16 | height: auto;
17 | left: 0;
18 | }
19 | #form .title {
20 | font-weight: 900;
21 | font-size: min(9vw, 2.4em);
22 | line-height: 1.20833333;
23 | color: #1A1A1A;
24 | position: relative;
25 | margin-bottom: 0.875em;
26 | text-align: left;
27 | }
28 | #form p {
29 | line-height: 1.5;
30 | max-width: 27.77777778em;
31 | color: #595959;
32 | margin-bottom: 2.66666667em;
33 | }
34 | #form .left-section {
35 | width: 96%;
36 | margin: auto;
37 | margin-top: 15%;
38 | max-width: 37.5em;
39 | }
40 | #form #contact {
41 | margin: auto;
42 | margin-bottom: 6.25em;
43 | }
44 | #form #contact .input-group {
45 | display: -webkit-box;
46 | display: -ms-flexbox;
47 | display: flex;
48 | -webkit-box-orient: vertical;
49 | -webkit-box-direction: normal;
50 | -ms-flex-direction: column;
51 | flex-direction: column;
52 | margin-bottom: 1.875em;
53 | }
54 | #form #contact .input-group label {
55 | font-weight: bold;
56 | font-size: 1em;
57 | margin-bottom: 0.375em;
58 | }
59 | #form #contact .input-group input[type="text"],
60 | #form #contact .input-group input[type="email"],
61 | #form #contact .input-group input[type="tel"],
62 | #form #contact .input-group input[type="url"],
63 | #form #contact .input-group textarea {
64 | font-size: 1em;
65 | height: 4.1875em;
66 | border: none;
67 | border-bottom: 0.0625em solid #d4d4d4;
68 | background: transparent;
69 | }
70 | #form #contact .input-group input:focus {
71 | border: 0.0625em solid var(--primary);
72 | }
73 | #form #contact .input-group textarea {
74 | min-height: 12.5em;
75 | padding-top: 1.25em;
76 | }
77 | #form #contact .input-group ::-webkit-input-placeholder {
78 | color: #d4d4d4;
79 | font-family: "Roboto", sans-serif;
80 | }
81 | #form #contact .input-group :-ms-input-placeholder {
82 | color: #d4d4d4;
83 | font-family: "Roboto", sans-serif;
84 | }
85 | #form #contact .input-group ::-ms-input-placeholder {
86 | color: #d4d4d4;
87 | font-family: "Roboto", sans-serif;
88 | }
89 | #form #contact .input-group ::placeholder {
90 | color: #d4d4d4;
91 | font-family: "Roboto", sans-serif;
92 | }
93 | #form #contact .button-solid {
94 | border: none;
95 | }
96 | #form .contact-right {
97 | background: #1a1a1a;
98 | padding: 2.8125em 2.125em;
99 | width: 100%;
100 | max-width: 18.75em;
101 | margin: auto;
102 | border-radius: 0.3125em;
103 | }
104 | #form .contact-right .heading {
105 | color: #fff;
106 | font-size: 1.5em;
107 | line-height: 1.2em;
108 | font-weight: bold;
109 | padding-left: 0.83333333em;
110 | border-left: 0.20833333em solid var(--primary);
111 | display: block;
112 | margin-bottom: 0.83333333em;
113 | }
114 | #form .contact-right .info-group {
115 | margin-bottom: 2.25em;
116 | }
117 | #form .contact-right .info-group:last-of-type {
118 | margin-bottom: 0;
119 | }
120 | #form .contact-right .info {
121 | font-size: 1em;
122 | line-height: 1.75;
123 | color: #fff;
124 | opacity: .9;
125 | text-decoration: none;
126 | display: block;
127 | }
128 | }
129 | /* Mobile Landscape */
130 | @media only screen and (min-width: 568px) {
131 | #form #contact {
132 | max-width: 43.75em;
133 | }
134 | #form .contact-right {
135 | max-width: 43.75em;
136 | display: -webkit-box;
137 | display: -ms-flexbox;
138 | display: flex;
139 | -webkit-box-pack: center;
140 | -ms-flex-pack: center;
141 | justify-content: center;
142 | -ms-flex-wrap: wrap;
143 | flex-wrap: wrap;
144 | }
145 | #form .contact-right .info-group {
146 | width: 40%;
147 | margin-left: 3.125em;
148 | }
149 | #form .contact-right .info-group:nth-of-type(3) {
150 | margin-bottom: 0;
151 | }
152 | }
153 | /* Tablet */
154 | @media only screen and (min-width: 48em) {
155 | #form #contact {
156 | display: -webkit-box;
157 | display: -ms-flexbox;
158 | display: flex;
159 | -webkit-box-pack: justify;
160 | -ms-flex-pack: justify;
161 | justify-content: space-between;
162 | -webkit-box-orient: horizontal;
163 | -webkit-box-direction: normal;
164 | -ms-flex-direction: row;
165 | flex-direction: row;
166 | -ms-flex-wrap: wrap;
167 | flex-wrap: wrap;
168 | }
169 | #form #contact .input-group {
170 | width: 48%;
171 | margin-bottom: 3.125em;
172 | position: relative;
173 | }
174 | #form #contact .input-group:nth-of-type(5) {
175 | width: 100%;
176 | }
177 | #form #contact .input-group:last-of-type {
178 | width: 100%;
179 | }
180 | #form #contact .input-group:hover .hover-box {
181 | height: 4.1875em;
182 | border: 0.0625em solid var(--primary);
183 | pointer-events: none;
184 | }
185 | #form #contact .input-group:hover input[type="text"],
186 | #form #contact .input-group:hover input[type="email"],
187 | #form #contact .input-group:hover input[type="tel"],
188 | #form #contact .input-group:hover input[type="url"],
189 | #form #contact .input-group:hover textarea {
190 | padding-left: 1.25em;
191 | }
192 | #form #contact .input-group input[type="text"],
193 | #form #contact .input-group input[type="email"],
194 | #form #contact .input-group input[type="tel"],
195 | #form #contact .input-group input[type="url"],
196 | #form #contact .input-group textarea {
197 | border-bottom: none;
198 | position: relative;
199 | -webkit-transition: padding .3s;
200 | transition: padding .3s;
201 | background: transparent;
202 | }
203 | #form #contact .input-group .hover-box {
204 | position: absolute;
205 | display: block;
206 | height: 0.0625em;
207 | width: 100%;
208 | background: transparent;
209 | border: 0.0625em solid #e9e8e8;
210 | opacity: 1;
211 | bottom: -0.0625em;
212 | left: 0;
213 | z-index: 10;
214 | -webkit-transition: height .3s, border .3s;
215 | transition: height .3s, border .3s;
216 | z-index: -1;
217 | }
218 | #form #contact .textarea:hover .hover-box {
219 | height: 10.5em;
220 | }
221 | #form #contact .form-submit {
222 | margin-left: auto;
223 | }
224 | }
225 | /* Small Desktop */
226 | @media only screen and (min-width: 64em) {
227 | #form {
228 | display: -webkit-box;
229 | display: -ms-flexbox;
230 | display: flex;
231 | -webkit-box-pack: center;
232 | -ms-flex-pack: center;
233 | justify-content: center;
234 | -ms-flex-line-pack: start;
235 | align-content: flex-start;
236 | font-size: 1.5vw;
237 | width: 100%;
238 | padding: 9.375em 0;
239 | }
240 | #form .left-section {
241 | width: 46.875em;
242 | margin: 0;
243 | margin-left: 0;
244 | margin-right: 4.6875em;
245 | }
246 | #form #contact {
247 | margin: 0;
248 | margin-right: 0;
249 | max-width: none;
250 | }
251 | #form .contact-right {
252 | -webkit-box-orient: vertical;
253 | -webkit-box-direction: normal;
254 | -ms-flex-direction: column;
255 | flex-direction: column;
256 | max-width: 18.75em;
257 | margin: 0;
258 | height: 34.625em;
259 | }
260 | #form .contact-right .info-group {
261 | margin-left: 0;
262 | width: 100%;
263 | }
264 | #form .contact-right .info-group:nth-of-type(3),
265 | #form .contact-right .info-group:last-of-type {
266 | margin-bottom: 2.25em;
267 | }
268 | }
269 | /* Large Desktop */
270 | @media only screen and (min-width: 1300px) {
271 | #form {
272 | font-size: inherit;
273 | }
274 | }
275 | /* Dark Mode */
276 | @media only screen and (min-width: 0px) {
277 | body.dark-mode #form .title {
278 | color: #fff;
279 | }
280 | body.dark-mode #form p {
281 | color: #fff;
282 | }
283 | body.dark-mode #form .input-group label {
284 | color: #fff;
285 | }
286 | body.dark-mode #form .input-group input,
287 | body.dark-mode #form .input-group textarea {
288 | color: #fff;
289 | }
290 | body.dark-mode #form .contact-right {
291 | background: var(--medium);
292 | }
293 | }
294 |
--------------------------------------------------------------------------------
/css/local.css:
--------------------------------------------------------------------------------
1 | /*-- -------------------------- -->
2 | <--- Side By Side -->
3 | <--- -------------------------- -*/
4 | /* Mobile */
5 | @media only screen and (min-width: 0em) {
6 | #sidebyside {
7 | padding: 50px 0;
8 | }
9 | #sidebyside .container {
10 | display: flex;
11 | justify-content: center;
12 | flex-direction: column;
13 | align-items: center;
14 | }
15 | #sidebyside .content {
16 | order: 2;
17 | margin: auto;
18 | margin-top: 4.6875em;
19 | max-width: 38.1875em;
20 | }
21 | #sidebyside .content h2 {
22 | font-size: 3em;
23 | margin-bottom: 0.875em;
24 | }
25 | #sidebyside .content p {
26 | margin-bottom: 1.11111111em;
27 | }
28 | #sidebyside .content ul {
29 | padding-left: 1.25em;
30 | margin-bottom: 1.25em;
31 | }
32 | #sidebyside .content ul li {
33 | list-style: none;
34 | display: flex;
35 | justify-content: flex-start;
36 | align-items: flex-start;
37 | }
38 | #sidebyside .content ul li img {
39 | margin-right: 0.625em;
40 | margin-top: 0.22222222em;
41 | }
42 | #sidebyside .content .button-solid {
43 | margin-top: 1.78571429em;
44 | }
45 | #sidebyside .image-box {
46 | display: block;
47 | position: relative;
48 | margin: auto;
49 | width: 38.1875em;
50 | height: 53.8125em;
51 | font-size: min(1.4vw, 1em);
52 | }
53 | #sidebyside .image-box:before {
54 | content: '';
55 | position: absolute;
56 | display: block;
57 | height: 100%;
58 | width: 100%;
59 | background: var(--primary);
60 | opacity: 1;
61 | top: 2.5em;
62 | left: -2.5em;
63 | }
64 | #sidebyside .image-box:after {
65 | content: '';
66 | position: absolute;
67 | display: block;
68 | height: 32.25em;
69 | width: 28.75em;
70 | background: url("/images/content-circles.svg");
71 | background-size: contain;
72 | background-position: center;
73 | background-repeat: no-repeat;
74 | opacity: 1;
75 | top: -14.125em;
76 | right: -6.8125em;
77 | z-index: -1;
78 | }
79 | #sidebyside .image-box img {
80 | position: absolute;
81 | top: 0;
82 | left: 0;
83 | height: 100%;
84 | width: 100%;
85 | object-fit: cover;
86 | }
87 | }
88 | /* Inbetween */
89 | @media only screen and (min-width: 666px) {
90 | #sidebyside {
91 | padding: 6.25em 0;
92 | }
93 | }
94 | /* Small Desktop */
95 | @media only screen and (min-width: 1300px) {
96 | #sidebyside {
97 | padding: 9.375em 0;
98 | }
99 | #sidebyside .container {
100 | max-width: 86.9375em;
101 | flex-direction: row;
102 | justify-content: space-between;
103 | align-items: flex-start;
104 | }
105 | #sidebyside .content {
106 | margin: 0;
107 | width: 60%;
108 | }
109 | #sidebyside .image-box {
110 | margin: 0;
111 | margin-right: 10.625em;
112 | }
113 | }
114 | /*-- -------------------------- -->
115 | <--- Side By Side Reverse -->
116 | <--- -------------------------- -*/
117 | /* Mobile */
118 | @media only screen and (min-width: 0em) {
119 | #sidebyside-reverse {
120 | padding: 50px 0;
121 | }
122 | #sidebyside-reverse .container {
123 | display: flex;
124 | justify-content: center;
125 | flex-direction: column;
126 | align-items: center;
127 | }
128 | #sidebyside-reverse .content {
129 | order: 2;
130 | margin: auto;
131 | margin-top: 4.6875em;
132 | max-width: 38.1875em;
133 | }
134 | #sidebyside-reverse .content h2 {
135 | font-size: 3em;
136 | margin-bottom: 0.875em;
137 | }
138 | #sidebyside-reverse .content p {
139 | margin-bottom: 1.11111111em;
140 | }
141 | #sidebyside-reverse .content ul {
142 | padding-left: 1.25em;
143 | margin-bottom: 1.25em;
144 | }
145 | #sidebyside-reverse .content ul li {
146 | list-style: none;
147 | display: flex;
148 | justify-content: flex-start;
149 | align-items: flex-start;
150 | }
151 | #sidebyside-reverse .content ul li img {
152 | margin-right: 0.625em;
153 | margin-top: 0.22222222em;
154 | }
155 | #sidebyside-reverse .content .button-solid {
156 | margin-top: 1.78571429em;
157 | }
158 | #sidebyside-reverse .image-box {
159 | display: block;
160 | position: relative;
161 | margin: auto;
162 | width: 38.1875em;
163 | height: 53.8125em;
164 | font-size: min(1.4vw, 1em);
165 | }
166 | #sidebyside-reverse .image-box:before {
167 | content: '';
168 | position: absolute;
169 | display: block;
170 | height: 100%;
171 | width: 100%;
172 | background: var(--primary);
173 | opacity: 1;
174 | top: 2.5em;
175 | left: -2.5em;
176 | }
177 | #sidebyside-reverse .image-box:after {
178 | content: '';
179 | position: absolute;
180 | display: block;
181 | height: 32.25em;
182 | width: 28.75em;
183 | background: url("/images/content-circles.svg");
184 | background-size: contain;
185 | background-position: center;
186 | background-repeat: no-repeat;
187 | opacity: 1;
188 | top: -14.125em;
189 | right: -6.8125em;
190 | z-index: -1;
191 | }
192 | #sidebyside-reverse .image-box img {
193 | position: absolute;
194 | top: 0;
195 | left: 0;
196 | height: 100%;
197 | width: 100%;
198 | object-fit: cover;
199 | }
200 | }
201 | /* Inbetween */
202 | @media only screen and (min-width: 666px) {
203 | #sidebyside-reverse {
204 | padding: 6.25em 0;
205 | }
206 | }
207 | /* Small Desktop */
208 | @media only screen and (min-width: 1300px) {
209 | #sidebyside-reverse {
210 | padding: 9.375em 0;
211 | }
212 | #sidebyside-reverse .container {
213 | max-width: 86.9375em;
214 | flex-direction: row;
215 | justify-content: space-between;
216 | align-items: flex-start;
217 | }
218 | #sidebyside-reverse .content {
219 | margin: 0;
220 | width: 60%;
221 | order: 1;
222 | }
223 | #sidebyside-reverse .image-box {
224 | margin: 0;
225 | margin-left: 10.625em;
226 | order: 2;
227 | }
228 | #sidebyside-reverse .image-box:before {
229 | left: auto;
230 | right: -2.5em;
231 | }
232 | #sidebyside-reverse .image-box:after {
233 | right: auto;
234 | left: -6.8125em;
235 | }
236 | }
237 | /*-- -------------------------- -->
238 | <--- Final Call To Action -->
239 | <--- -------------------------- -*/
240 | /* Mobile */
241 | @media only screen and (min-width: 0em) {
242 | #cta {
243 | position: relative;
244 | padding: 3.125em 0;
245 | }
246 | #cta:before {
247 | content: '';
248 | position: absolute;
249 | display: block;
250 | height: 100%;
251 | width: 100%;
252 | background: #000;
253 | opacity: .7;
254 | top: 0;
255 | left: 0;
256 | z-index: -1;
257 | }
258 | #cta .container {
259 | text-align: center;
260 | }
261 | #cta picture {
262 | position: absolute;
263 | top: 0;
264 | left: 0;
265 | height: 100%;
266 | width: 100%;
267 | z-index: -2;
268 | }
269 | #cta picture img {
270 | position: absolute;
271 | top: 0;
272 | left: 0;
273 | height: 100%;
274 | width: 100%;
275 | object-fit: cover;
276 | }
277 | #cta .title {
278 | font-weight: 900;
279 | font-size: min(9vw, 3em);
280 | line-height: 1.20833333;
281 | color: #fff;
282 | position: relative;
283 | margin-bottom: 0.75em;
284 | text-align: center;
285 | }
286 | #cta p {
287 | color: #fff;
288 | text-align: center;
289 | opacity: 1;
290 | margin: auto;
291 | margin-bottom: 2em;
292 | width: 96%;
293 | max-width: 33.22222222em;
294 | }
295 | }
296 | /* Small Desktop */
297 | @media only screen and (min-width: 64em) {
298 | #cta {
299 | padding: 10.5em 0;
300 | }
301 | }
302 | /* Large Desktop */
303 | @media only screen and (min-width: 1300px) {
304 | #cta {
305 | position: relative;
306 | margin-top: 6.25em;
307 | }
308 | #cta:before {
309 | display: none;
310 | }
311 | #cta:after {
312 | content: '';
313 | position: absolute;
314 | display: block;
315 | height: 69.25em;
316 | width: 125em;
317 | background: url("../images/cta-squares.svg");
318 | background-size: contain;
319 | background-position: center;
320 | background-repeat: no-repeat;
321 | opacity: 1;
322 | bottom: 0;
323 | left: 50%;
324 | transform: translateX(-50%);
325 | z-index: -3;
326 | }
327 | #cta .container {
328 | width: 90.0625%;
329 | margin: auto;
330 | }
331 | #cta picture {
332 | width: 90.0625%;
333 | left: 50%;
334 | transform: translateX(-50%);
335 | }
336 | #cta picture:before {
337 | content: '';
338 | position: absolute;
339 | display: block;
340 | height: 100%;
341 | width: 100%;
342 | background: #000;
343 | opacity: .7;
344 | top: 0;
345 | left: 0;
346 | z-index: 1;
347 | }
348 | }
349 | /* Dark Mode */
350 | @media only screen and (min-width: 0em) {
351 | body.dark-mode #cta:after {
352 | display: none;
353 | }
354 | }
355 |
--------------------------------------------------------------------------------
/css/contact.less:
--------------------------------------------------------------------------------
1 | /*-- -------------------------- -->
2 | <--- Form -->
3 | <--- -------------------------- -*/
4 |
5 | /* Mobile */
6 | @media only screen and (min-width: 0em) {
7 |
8 | #form {
9 | padding: 50/16em 0;
10 | margin: auto;
11 | position: relative;
12 | padding-bottom: 36%;
13 |
14 | .top-wave {
15 | position: absolute;
16 | width: 100%;
17 | top: -2/16em;
18 | height: auto;
19 | left: 0;
20 | }
21 |
22 |
23 | .title {
24 | font-weight: 900;
25 | font-size:~"min(9vw, 2.4em)";
26 | line-height: 58/48;
27 | color: #1A1A1A;
28 | position: relative;
29 | margin-bottom: 42/48em;
30 | text-align: left;
31 | }
32 |
33 | p {
34 | line-height: 27/18;
35 | max-width: 500/18em;
36 | color: #595959;
37 | margin-bottom: 48/18em;
38 | }
39 |
40 | .left-section {
41 | width: 96%;
42 | margin: auto;
43 | margin-top: 15%;
44 | max-width: 600/16em;
45 | }
46 |
47 | #contact {
48 | margin: auto;
49 | margin-bottom: 100/16em;
50 | .input-group {
51 | display: flex;
52 | flex-direction: column;
53 | margin-bottom: 30/16em;
54 |
55 | label {
56 | font-weight: bold;
57 | font-size: 16/16em;
58 | margin-bottom: 6/16em;
59 | }
60 |
61 | input[type="text"],
62 | input[type="email"],
63 | input[type="tel"],
64 | input[type="url"],
65 | textarea {
66 | font-size: 16/16em;
67 | height: 67/16em;
68 | border: none;
69 | border-bottom: 1/16em solid #d4d4d4;
70 | background: transparent;
71 | }
72 |
73 | input:focus {
74 | border: 1/16em solid var(--primary);
75 | }
76 |
77 | textarea {
78 | min-height: 200/16em;
79 | padding-top: 20/16em;
80 | }
81 |
82 | ::placeholder {
83 | color: #d4d4d4;
84 | font-family: "Roboto", sans-serif;
85 | }
86 | }
87 |
88 | .button-solid {
89 | border: none;
90 | }
91 | }
92 |
93 | .contact-right {
94 | background: #1a1a1a;
95 | padding: 45/16em 34/16em;
96 | width: 100%;
97 | max-width: 300/16em;
98 | margin: auto;
99 | border-radius: 5/16em;
100 |
101 | .heading {
102 | color: #fff;
103 | font-size: 24/16em;
104 | line-height: 1.2em;
105 | font-weight: bold;
106 | padding-left: 20/24em;
107 | border-left: 5/24em solid var(--primary);
108 | display: block;
109 | margin-bottom: 20/24em;
110 | }
111 |
112 | .info-group {
113 | margin-bottom: 36/16em;
114 |
115 | &:last-of-type {
116 | margin-bottom: 0;
117 | }
118 | }
119 |
120 | .info {
121 | font-size: 16/16em;
122 | line-height: 28/16;
123 | color: #fff;
124 | opacity: .9;
125 | text-decoration: none;
126 | display: block;
127 | }
128 | }
129 | }
130 | }
131 |
132 | /* Mobile Landscape */
133 | @media only screen and (min-width: 568px) {
134 |
135 | #form {
136 | #contact {
137 | max-width: 700/16em;
138 | }
139 | .contact-right {
140 | max-width: 700/16em;
141 | display: flex;
142 | justify-content: center;
143 | flex-wrap: wrap;
144 |
145 | .info-group {
146 | width: 40%;
147 | margin-left: 50/16em;
148 | &:nth-of-type(3) {
149 | margin-bottom: 0;
150 | }
151 | }
152 | }
153 | }
154 | }
155 |
156 | /* Tablet */
157 | @media only screen and (min-width: 48em) {
158 |
159 | #form {
160 | #contact {
161 | display: flex;
162 | justify-content: space-between;
163 | flex-direction: row;
164 | flex-wrap: wrap;
165 |
166 | .input-group {
167 | width: 48%;
168 | margin-bottom: 50/16em;
169 | position: relative;
170 |
171 | &:nth-of-type(5) {
172 | width: 100%;
173 | }
174 |
175 | &:last-of-type {
176 | width: 100%;
177 | }
178 |
179 | &:hover {
180 | .hover-box {
181 | height: 67/16em;
182 | border: 1/16em solid var(--primary);
183 | pointer-events: none;
184 | }
185 |
186 | input[type="text"],
187 | input[type="email"],
188 | input[type="tel"],
189 | input[type="url"],
190 | textarea {
191 | padding-left: 20/16em;
192 | }
193 | }
194 |
195 | input[type="text"],
196 | input[type="email"],
197 | input[type="tel"],
198 | input[type="url"],
199 | textarea {
200 | border-bottom: none;
201 | position: relative;
202 | transition: padding .3s;
203 | background: transparent;
204 | }
205 |
206 | .hover-box {
207 | position: absolute;
208 | display: block;
209 | height: 1/16em;
210 | width: 100%;
211 | background: transparent;
212 | border: 1/16em solid #e9e8e8;
213 | opacity: 1;
214 | bottom: -1/16em;
215 | left: 0;
216 | z-index: 10;
217 | transition: height .3s, border .3s;
218 | z-index: -1;
219 | }
220 | }
221 |
222 | .textarea {
223 | &:hover {
224 | .hover-box {
225 | height: 168/16em;
226 | }
227 | }
228 | }
229 |
230 | .form-submit {
231 | margin-left: auto;
232 | }
233 |
234 | }
235 | }
236 | }
237 |
238 | /* Small Desktop */
239 | @media only screen and (min-width: 64em) {
240 |
241 | #form {
242 | display: flex;
243 | justify-content: center;
244 | align-content: flex-start;
245 | font-size: 1.5vw;
246 | width: 100%;
247 | padding: 150/16em 0;
248 |
249 | .left-section {
250 | width: 750/16em;
251 | margin: 0;
252 | margin-left: 0;
253 | margin-right: 75/16em;
254 | }
255 |
256 | #contact {
257 | margin: 0;
258 | margin-right: 0;
259 | max-width: none;
260 | }
261 |
262 | .contact-right {
263 | flex-direction: column;
264 | max-width: 300/16em;
265 | margin: 0;
266 | height: 554/16em;
267 |
268 | .info-group {
269 | margin-left: 0;
270 | width: 100%;
271 |
272 | &:nth-of-type(3), &:last-of-type {
273 | margin-bottom: 36/16em;
274 | }
275 | }
276 | }
277 | }
278 | }
279 |
280 | /* Large Desktop */
281 | @media only screen and (min-width: 1300px) {
282 |
283 | #form {
284 | font-size: inherit;
285 | }
286 | }
287 |
288 | /* Dark Mode */
289 | @media only screen and (min-width: 0px) {
290 | body.dark-mode {
291 | #form {
292 | .title {
293 | color: #fff;
294 | }
295 |
296 | p {
297 | color: #fff;
298 | }
299 |
300 | .input-group {
301 | label {
302 | color: #fff;
303 | }
304 |
305 | input, textarea {
306 | color: #fff;
307 | }
308 | }
309 |
310 | .contact-right {
311 | background: var(--medium);
312 | }
313 | }
314 | }
315 | }
--------------------------------------------------------------------------------
/css/local.less:
--------------------------------------------------------------------------------
1 | /*-- -------------------------- -->
2 | <--- Side By Side -->
3 | <--- -------------------------- -*/
4 |
5 | /* Mobile */
6 | @media only screen and (min-width: 0em) {
7 | #sidebyside {
8 | padding: 50px 0;
9 | .container {
10 | display: flex;
11 | justify-content: center;
12 | flex-direction: column;
13 | align-items: center;
14 | }
15 |
16 | .content {
17 | order: 2;
18 | margin: auto;
19 | margin-top: 75/16em;
20 | max-width: 611/16em;
21 |
22 | h2 {
23 | font-size: 48/16em;
24 | margin-bottom: 42/48em;
25 | }
26 |
27 | p {
28 | margin-bottom: 20/18em;
29 | }
30 |
31 | ul {
32 | padding-left: 20/16em;
33 | margin-bottom: 20/16em;
34 |
35 | li {
36 | list-style: none;
37 | display: flex;
38 | justify-content: flex-start;
39 | align-items: flex-start;
40 |
41 | img {
42 | margin-right: 10/16em;
43 | margin-top: 4/18em;
44 | }
45 | }
46 | }
47 |
48 | .button-solid {
49 | margin-top: 25/14em;
50 | }
51 | }
52 |
53 | .image-box {
54 | display: block;
55 | position: relative;
56 | margin: auto;
57 | width: 611/16em;
58 | height: 861/16em;
59 | font-size:~"min(1.4vw, 1em)"; // scales the image-box down
60 |
61 | &:before {
62 | content: '';
63 | position: absolute;
64 | display: block;
65 | height: 100%;
66 | width: 100%;
67 | background: var(--primary);
68 | opacity: 1;
69 | top: 40/16em;
70 | left: -40/16em;
71 | }
72 |
73 | &:after {
74 | content: '';
75 | position: absolute;
76 | display: block;
77 | height: 516/16em;
78 | width: 460/16em;
79 | background: url("/images/content-circles.svg");
80 | background-size: contain;
81 | background-position: center;
82 | background-repeat: no-repeat;
83 | opacity: 1;
84 | top: -226/16em;
85 | right: -109/16em;
86 | z-index: -1;
87 | }
88 |
89 | img {
90 | position: absolute;
91 | top: 0;
92 | left: 0;
93 | height: 100%;
94 | width: 100%;
95 | object-fit: cover;
96 | }
97 | }
98 | }
99 | }
100 |
101 | /* Inbetween */
102 | @media only screen and (min-width: 666px) {
103 | #sidebyside {
104 | padding: 100/16em 0;
105 | }
106 | }
107 |
108 | /* Small Desktop */
109 | @media only screen and (min-width: 1300px) {
110 | #sidebyside {
111 | padding: 150/16em 0;
112 | .container {
113 | max-width: 1391/16em;
114 | flex-direction: row;
115 | justify-content: space-between;
116 | align-items: flex-start;
117 | }
118 |
119 | .content {
120 | margin: 0;
121 | width: 60%;
122 | }
123 |
124 | .image-box {
125 | margin: 0;
126 | margin-right: 170/16em;
127 | }
128 | }
129 | }
130 |
131 | /*-- -------------------------- -->
132 | <--- Side By Side Reverse -->
133 | <--- -------------------------- -*/
134 |
135 | /* Mobile */
136 | @media only screen and (min-width: 0em) {
137 | #sidebyside-reverse {
138 | padding: 50px 0;
139 | .container {
140 | display: flex;
141 | justify-content: center;
142 | flex-direction: column;
143 | align-items: center;
144 | }
145 |
146 | .content {
147 | order: 2;
148 | margin: auto;
149 | margin-top: 75/16em;
150 | max-width: 611/16em;
151 |
152 | h2 {
153 | font-size: 48/16em;
154 | margin-bottom: 42/48em;
155 | }
156 |
157 | p {
158 | margin-bottom: 20/18em;
159 | }
160 |
161 | ul {
162 | padding-left: 20/16em;
163 | margin-bottom: 20/16em;
164 |
165 | li {
166 | list-style: none;
167 | display: flex;
168 | justify-content: flex-start;
169 | align-items: flex-start;
170 |
171 | img {
172 | margin-right: 10/16em;
173 | margin-top: 4/18em;
174 | }
175 | }
176 | }
177 |
178 | .button-solid {
179 | margin-top: 25/14em;
180 | }
181 | }
182 |
183 | .image-box {
184 | display: block;
185 | position: relative;
186 | margin: auto;
187 | width: 611/16em;
188 | height: 861/16em;
189 | font-size:~"min(1.4vw, 1em)"; // scales the image-box down
190 |
191 | &:before {
192 | content: '';
193 | position: absolute;
194 | display: block;
195 | height: 100%;
196 | width: 100%;
197 | background: var(--primary);
198 | opacity: 1;
199 | top: 40/16em;
200 | left: -40/16em;
201 | }
202 |
203 | &:after {
204 | content: '';
205 | position: absolute;
206 | display: block;
207 | height: 516/16em;
208 | width: 460/16em;
209 | background: url("/images/content-circles.svg");
210 | background-size: contain;
211 | background-position: center;
212 | background-repeat: no-repeat;
213 | opacity: 1;
214 | top: -226/16em;
215 | right: -109/16em;
216 | z-index: -1;
217 | }
218 |
219 | img {
220 | position: absolute;
221 | top: 0;
222 | left: 0;
223 | height: 100%;
224 | width: 100%;
225 | object-fit: cover;
226 | }
227 | }
228 | }
229 | }
230 |
231 | /* Inbetween */
232 | @media only screen and (min-width: 666px) {
233 | #sidebyside-reverse {
234 | padding: 100/16em 0;
235 | }
236 | }
237 |
238 | /* Small Desktop */
239 | @media only screen and (min-width: 1300px) {
240 | #sidebyside-reverse {
241 | padding: 150/16em 0;
242 | .container {
243 | max-width: 1391/16em;
244 | flex-direction: row;
245 | justify-content: space-between;
246 | align-items: flex-start;
247 | }
248 |
249 | .content {
250 | margin: 0;
251 | width: 60%;
252 | order: 1;
253 | }
254 |
255 | .image-box {
256 | margin: 0;
257 | margin-left: 170/16em;
258 | order: 2;
259 |
260 | &:before {
261 | left: auto;
262 | right: -40/16em;
263 | }
264 |
265 | &:after {
266 | right: auto;
267 | left: -109/16em;
268 | }
269 | }
270 | }
271 | }
272 |
273 | /*-- -------------------------- -->
274 | <--- Final Call To Action -->
275 | <--- -------------------------- -*/
276 |
277 | /* Mobile */
278 | @media only screen and (min-width: 0em) {
279 | #cta {
280 | position: relative;
281 | padding: 50/16em 0;
282 |
283 | &:before {
284 | content: '';
285 | position: absolute;
286 | display: block;
287 | height: 100%;
288 | width: 100%;
289 | background: #000;
290 | opacity: .7;
291 | top: 0;
292 | left: 0;
293 | z-index: -1;
294 | }
295 |
296 | .container {
297 | text-align: center;
298 | }
299 |
300 | picture {
301 | position: absolute;
302 | top: 0;
303 | left: 0;
304 | height: 100%;
305 | width: 100%;
306 | z-index: -2;
307 |
308 | img {
309 | position: absolute;
310 | top: 0;
311 | left: 0;
312 | height: 100%;
313 | width: 100%;
314 | object-fit: cover;
315 | }
316 | }
317 |
318 | .title {
319 | font-weight: 900;
320 | font-size:~"min(9vw, 3em)";
321 | line-height: 58/48;
322 | color: #fff;
323 | position: relative;
324 | margin-bottom: 36/48em;
325 | text-align: center;
326 | }
327 |
328 | p {
329 | color: #fff;
330 | text-align: center;
331 | opacity: 1;
332 | margin: auto;
333 | margin-bottom: 36/18em;
334 | width: 96%;
335 | max-width: 598/18em;
336 |
337 | }
338 | }
339 | }
340 |
341 | /* Small Desktop */
342 | @media only screen and (min-width: 64em) {
343 | #cta {
344 | padding: 168/16em 0;
345 | }
346 | }
347 |
348 | /* Large Desktop */
349 | @media only screen and (min-width: 1300px) {
350 | #cta {
351 | position: relative;
352 | margin-top: 100/16em;
353 | &:before {
354 | display: none;
355 | }
356 | &:after {
357 | content: '';
358 | position: absolute;
359 | display: block;
360 | height: 1108/16em;
361 | width: 2000/16em;
362 | background: url("../images/cta-squares.svg");
363 | background-size: contain;
364 | background-position: center;
365 | background-repeat: no-repeat;
366 | opacity: 1;
367 | bottom: 0;
368 | left: 50%;
369 | transform: translateX(-50%);
370 | z-index: -3;
371 | }
372 | .container {
373 | width: 90.0625%;
374 | margin: auto;
375 | }
376 |
377 | picture {
378 | width: 90.0625%;
379 | left: 50%;
380 | transform: translateX(-50%);
381 |
382 | &:before {
383 | content: '';
384 | position: absolute;
385 | display: block;
386 | height: 100%;
387 | width: 100%;
388 | background: #000;
389 | opacity: .7;
390 | top: 0;
391 | left: 0;
392 | z-index: 1;
393 | }
394 | }
395 | }
396 | }
397 |
398 | /* Dark Mode */
399 | @media only screen and (min-width: 0em) {
400 | body.dark-mode {
401 | #cta {
402 | &:after {
403 | display: none;
404 | }
405 | }
406 | }
407 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Starter-KitV3
2 | This is the latest version of my starter kit that I will be using from now on to build all my websites. It has a completely remade responsive navigation that is much simpler, and easier to edit and customize.
3 |
4 |
5 | # Switching between top drop down mobile and and side pop out mobile nav
6 |
7 | I built my mobile navs with a max-width media query so I can make any edits I want to them and not affect the desktop design. This also allows me to swap in different code for different mobile styles and animations. There is a mobile-nav-options.css file that contains seperate code for top drop down and side pop out. They're wrapped in a max-width: 1023px media query. Just copy and paste the one you want to sue and it will change the mobile nav from a top drop down to a side pop out one. No extra work needed!
8 |
9 |
10 | # Simplified dark mode system.
11 |
12 | My previous one had a bunch of messy code that wasn't organized very well, so I simplified it and removed all the classes you don't need. I abstracted the toggle code into it's own group and put the core styles in another labeled grouping. I also added a new dark mode color palette that is much more modern and better on the eye and not as harsh as the straight blacks I was using before.
13 |
14 |
15 | # How to use the dark mode functionality
16 |
17 | Here's the link to read about how it works and even download the code yourself to add to new projects or existing projects
18 |
19 | https://www.oakharborwebdesigns.com/blog/2020/december/how-to-add-dark-mode-to-a-website#blog-post
20 |
21 | In the LESS file (dark.less), choose the screen size you want to target and inside the body.dark-mode brackets just start adding you new style declarations for dark mode and that’s it!
22 |
23 |
24 | # SET UP LESS
25 |
26 | This new starter kit is based on ems for more responsive design. I have utilized the LESS preprocessor to use its ability to do em calculations. I use the Koala App to choose the css file I want to watch and I click the .less files I want to auto compile and hit the compile button. This will now continuously watch for changes in your .less file inside the css folder and compile the .less into it's own .css file to load instantly on save every time in your local server.
27 |
28 | Here is the link to download Koala:
29 |
30 | http://koala-app.com/
31 |
32 | You can have it watch multiple .less files and multiple folders at once. You just have to select each .less file individually and hit the compile button in the lower right.
33 |
34 | INSTALL LESS
35 |
36 | To install the LESS preprocessor, you first must download and install npm so you can install any program you want with one line of code:
37 |
38 | https://nodejs.org/en/download/
39 |
40 | Once that is downloaded and installed, download and install GIT terminal or just use your default terminal window on your computer
41 |
42 | Download GIT
43 | https://gitforwindows.org/
44 |
45 | OR
46 |
47 | Open the default terminal on your computer
48 | https://www.ionos.com/help/email/troubleshooting-mail-basicmail-business/access-the-command-prompt-or-terminal/
49 |
50 | Then open your GIT terminal or default computer terminal and copy and paste this in your terminal and hit enter to install LESS
51 |
52 | npm install less
53 |
54 | Now you have LESS on your machine! Hopefully that wasn't too bad. It was a little tricky for me to get started too but I used the resources I linked here to figure it out.
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | # CALCULATING THE EM UNITS
63 |
64 | Introduction:
65 | As you may or may not know, em units are based on the font size of its parent element. If the parent element does not have a declared font size in your css, then the next parent element with a declared font size will be it's base. Since I am not declaring a font size on any containers, literally everything on the page will look up to the body tag for a font size, and since we declared a font size of 20px that is what they will divide themselves by to get the em value. So I just set the font size on the
to be 15px on mobile, tablet, and small desktop up to 1023px wide. Then on 1024px wide it is set 20 the actual default of 20px.
66 |
67 |
68 |
69 | Here's a video of me building a website using these em calculations and showing you exactly how it all works with a real project.
70 |
71 | https://youtu.be/gUakUDC8UdE
72 |
73 |
74 |
75 | # Explanation of how this system works
76 |
77 | What happens here, is every single element's measurements that would be in pixels will now be in ems divided 20 (the default font size on desktop). So when we have an element that is 100px wide, in the .less file we write it as 100/20em, and the compiler will compile it in css as 5em. Since that em calculation is based on the 20px, when we change the body font size to 15px it will shrink EVERYTHING because the em calculations are on a smaller font size, and will scale down proportionally.
78 |
79 | For example, if an element is 20px wide, it will be written as 20/20em in your .less file, and compile to 1em in your .css file. That is it's ratio. When we change the font size of the body (the main parent of everything) to a smaller number on mobile (15px), it's scaling the size of 1em to fit in a 15px based font instead of a 20px. 1em would technically be 15/15em, which means by reducing the font size of the body by 5px, EVERYTHING that is based off it's 20px font size will also reduce themselves by 5px in scale.
80 |
81 | Both instances of 15/15 and 20/20 result in 1em. The base font size of the parent determines how big the 1em value is scaled up or down by default. Think of ems as the ratio of the measurement and it's parent font size, and the body font size is telling everything how big or small they need to be. We are setting the ratio to be based on desktop styles and measurements.
82 |
83 | The higher the font size, the larger 1em is scaled by. Smaller font sizes scale down the size of 1em. This is how we can control mobile scaling. You don't have to write separate css styles for your mobile and make larger sizes on desktop. By writing all our css properties' px values in x/20em, everything will scale itself down on mobile and grow into it's final em scale size at the 20px font size.
84 |
85 | Here is an example of this method at work. All of the css styles are set with the desktop widths, heights, and other dimensions. I built it once and scaled it down for mobile.
86 |
87 | https://responsive-circle.netlify.app/
88 |
89 | Inspect the page and resize it manually from 320px to desktop and watch it grow. The ems and the body font size scale down the entire design proportionally to each other.
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 | # IMPORTANT!! ******* MUST READ AND UNDERSTAND HOW TO MAKE THIS WORK
98 |
99 | For this to work properly and scale PRECISELY, we need the .less calculation system to make this easier. So if we have an H1 text that is supposed to be 50px, we would write it as 50/20em. Just like we would normally. HOWEVER, any of it's properties and children need to be divided by the new declared font size. So if it has a margin-bottom of 20px, it will be 20/50em, NOT 20/20em. Their parent has their own font size declared now. Here's an example of how this will look in .less:
100 |
101 | ```
102 | h2 {
103 | color: #fff;
104 | font-size: 24/20em; <--- new declared font size
105 | line-height: 28/24; <--- Everything inside the h1 is divided by this new font size (line height does not need the em unit added to it)
106 | margin-bottom: 15/24em; <--- Everything inside the h1 is divided by this new font size
107 |
108 | span {
109 | display: block;
110 | color: #fff;
111 | margin-bottom: 50/24em; <--- Everything inside the h1 is divided by this new font size
112 | }
113 | }
114 | ```
115 |
116 |
117 | Also, if this span had a different font size than the h1, we set the new font size divided by the parents new font size.
118 |
119 | ```
120 | h2 {
121 | font-size: 24/20em; <--- new font size
122 |
123 | span {
124 | display: block;
125 | color: #fff;
126 | font-size: 50/24em <--- new font size declared, divided by the parents' font size
127 | margin-bottom: 50/50em; <--- Everything inside the span is divided by this new font size
128 | }
129 | }
130 | ```
131 | This is what we have to do to maintain the ratio. The h1 font size is based on the body, and since it has a new font size, its properties and children will now be based on its new font size, and so on. Think of them all as working together. The spans font size is getting their information from the H1s font size, and that H1 is getting its info from the body. This maintains the proportions of what 1em is scaled to.
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 | # THE PAYOFF - HOW TO GET 100% TRUE RESPONSIVE BEHAVIOR
140 | Why is this important? Because at 1500px or however wide your design ends up being, you can set the body font size to 1vw, which is the width of the viewport (screen). When the body size is now determined by the screen size, EVERY element will now grow proportionally with the growth of the screen size. This is what I mean when I say TRUELY 100% responsive - it responds to the size of the screen and every single element on the page will grow proportionally with each to fit the screen size.
141 |
142 | Here's an example showing this in action. This is a demo link of the current Starter Kit as of November 5, 2021.
143 |
144 | https://body-vw-example.netlify.app/
145 |
146 | Inspect the page, and set the the viewport at the top to "Dimensions: Responsive" and pull the edge of the screen out to grow the website's width. At 2000px is where I set the body to font-size: 1vw; and every pixel you make the screen wider by after that you'll notice that every single element on the page is growing at the same scale relative to each other. The ENTIRE site is now responding to the width of the screen and growing to fit it. This creates a uniform website experience for everyone, no matter how big their screen is. This site will look the same viewed on a laptop and a 50in tv without hvaing to write any extra code or using the zoom property, which isn't supported by Firefox.
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 | # MORE USES FOR THE VW UNIT
155 | Lets say you have a section of 4 cards that you'd like to have displayed in 2 rows of two on mobile. When you write the styles with the desktop sizes and do your flexboxing but the boxes are still too big fit next to each other on a mobile screen, you can use vw units to scale down the elements. On the parent container for the items, set the font size with a min/max calculation here:
156 |
157 | LESS min/max calculation
158 | font-size:~"min(1.4vw, 1em)";
159 |
160 | This is how you have to do calulations in LESS, because otherwise it wont work. What's happening is we are setting the minimum font size to be the 1.4vw unit, and we can make it however big or small we need. The smaller the value, the smaller the entire section scales down and vice versa. 1em is the maximum. So it will start small, and scale up until it reaches the size it's supposed to be at 1em (the body font size) and stop.
161 |
162 | Example - Start at 320px wide and drag the screen to make it larger. You'll notice that the circle and all the elements inside of it are growing together proportionally. This is what happens when you use vw units on the container and ems for everything.
163 |
164 | https://responsive-circle.netlify.app/
165 |
166 | So instead of writing new css styles to shrink every element to be smaller, all we have to do is write one line of code and the entire container shrinks proportionally together and maintains their scale from mobile to desktop. This is the true power of using ems properly and mathematically.
167 |
--------------------------------------------------------------------------------
/css/mobile-nav-options.css:
--------------------------------------------------------------------------------
1 | /* Mobile - Top Drop Down */
2 | @media only screen and (max-width: 1023px) {
3 | #navigation {
4 | position: fixed;
5 | top: 0;
6 | left: 0;
7 | width: 100%;
8 | z-index: 10000;
9 | height: auto;
10 | }
11 | #navigation .background-color-div {
12 | position: absolute;
13 | top: 0;
14 | left: 0;
15 | background-color: #fff;
16 | width: 100%;
17 | height: 100%;
18 | -webkit-box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
19 | box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
20 | }
21 | #navigation .container {
22 | padding: 0.8125em 0;
23 | width: 96%;
24 | }
25 | #navigation .logo {
26 | display: inline-block;
27 | height: 1.875em;
28 | width: auto;
29 | }
30 | #navigation .logo img {
31 | width: auto;
32 | height: 100%;
33 | }
34 | #navigation .logo .light {
35 | display: none;
36 | }
37 | #navigation .logo .dark {
38 | display: block;
39 | }
40 | #navigation .hamburger-menu {
41 | position: absolute;
42 | right: 0em;
43 | border: none;
44 | height: 3em;
45 | width: 3em;
46 | z-index: 100;
47 | display: block;
48 | background: transparent;
49 | padding: 0;
50 | top: 50%;
51 | -webkit-transform: translateY(-50%);
52 | transform: translateY(-50%);
53 | -webkit-transition: top .3s;
54 | transition: top .3s;
55 | }
56 | #navigation .hamburger-menu span {
57 | height: 2px;
58 | width: 1.875em;
59 | background-color: #000;
60 | display: block;
61 | position: absolute;
62 | left: 50%;
63 | -webkit-transform: translateX(-50%);
64 | transform: translateX(-50%);
65 | -webkit-transition: background-color 0.3s;
66 | transition: background-color 0.3s;
67 | }
68 | #navigation .hamburger-menu span:before {
69 | content: '';
70 | position: absolute;
71 | display: block;
72 | height: 2px;
73 | width: 80%;
74 | background: #000;
75 | opacity: 1;
76 | top: -6px;
77 | left: 0;
78 | -webkit-transition: width .3s, left .3s, top .3s, -webkit-transform .5s;
79 | transition: width .3s, left .3s, top .3s, -webkit-transform .5s;
80 | transition: width .3s, left .3s, top .3s, transform .5s;
81 | transition: width .3s, left .3s, top .3s, transform .5s, -webkit-transform .5s;
82 | }
83 | #navigation .hamburger-menu span:after {
84 | content: '';
85 | position: absolute;
86 | display: block;
87 | height: 2px;
88 | width: 80%;
89 | background: #000;
90 | opacity: 1;
91 | top: 6px;
92 | left: 0;
93 | -webkit-transition: width .3s, left .3s, top .3s, -webkit-transform .3s;
94 | transition: width .3s, left .3s, top .3s, -webkit-transform .3s;
95 | transition: width .3s, left .3s, top .3s, transform .3s;
96 | transition: width .3s, left .3s, top .3s, transform .3s, -webkit-transform .3s;
97 | }
98 | #navigation .hamburger-menu.clicked span {
99 | background-color: transparent;
100 | }
101 | #navigation .hamburger-menu.clicked span:before {
102 | width: 100%;
103 | -webkit-transform: translate(-50%, -50%) rotate(225deg);
104 | transform: translate(-50%, -50%) rotate(225deg);
105 | left: 50%;
106 | top: 50%;
107 | }
108 | #navigation .hamburger-menu.clicked span:after {
109 | width: 100%;
110 | -webkit-transform: translate(-50%, -50%) rotate(-225deg);
111 | transform: translate(-50%, -50%) rotate(-225deg);
112 | left: 50%;
113 | top: 50%;
114 | }
115 | #navigation #navbar-menu {
116 | position: fixed;
117 | right: 0;
118 | padding: 0;
119 | width: 100%;
120 | border-radius: 0 0 0.375em 0.375em;
121 | z-index: -1;
122 | overflow: hidden;
123 | -webkit-box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
124 | box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
125 | background-color: #fff;
126 | top: 4em;
127 | padding-top: 0;
128 | height: 0;
129 | -webkit-transition: height 0.3s, padding-top 0.3s, top 0.3s;
130 | transition: height 0.3s, padding-top 0.3s, top 0.3s;
131 | }
132 | #navigation #navbar-menu ul {
133 | padding: 0;
134 | -webkit-perspective: 700px;
135 | perspective: 700px;
136 | }
137 | #navigation #navbar-menu ul li {
138 | list-style: none;
139 | margin-bottom: 1.5em;
140 | text-align: center;
141 | -webkit-transform-style: preserve-3d;
142 | transform-style: preserve-3d;
143 | opacity: 0;
144 | -webkit-transform: translateY(-0.4375em) rotateX(90deg);
145 | transform: translateY(-0.4375em) rotateX(90deg);
146 | -webkit-transition: opacity .5s, -webkit-transform .5s;
147 | transition: opacity .5s, -webkit-transform .5s;
148 | transition: opacity .5s, transform .5s;
149 | transition: opacity .5s, transform .5s, -webkit-transform .5s;
150 | }
151 | #navigation #navbar-menu ul li:nth-of-type(1) {
152 | -webkit-transition-delay: .1s;
153 | transition-delay: .1s;
154 | }
155 | #navigation #navbar-menu ul li:nth-of-type(2) {
156 | -webkit-transition-delay: .2s;
157 | transition-delay: .2s;
158 | }
159 | #navigation #navbar-menu ul li:nth-of-type(3) {
160 | -webkit-transition-delay: .3s;
161 | transition-delay: .3s;
162 | }
163 | #navigation #navbar-menu ul li:nth-of-type(4) {
164 | -webkit-transition-delay: .4s;
165 | transition-delay: .4s;
166 | }
167 | #navigation #navbar-menu ul li:nth-of-type(5) {
168 | -webkit-transition-delay: .5s;
169 | transition-delay: .5s;
170 | }
171 | #navigation #navbar-menu ul li a {
172 | text-decoration: none;
173 | text-transform: uppercase;
174 | color: #000;
175 | font-size: 1.1875em;
176 | text-align: center;
177 | display: inline-block;
178 | position: relative;
179 | font-weight: bold;
180 | }
181 | #navigation #navbar-menu ul li a.active:before {
182 | content: '';
183 | position: absolute;
184 | display: block;
185 | height: 0.42105263em;
186 | background: var(--primary);
187 | opacity: 1;
188 | bottom: 0.26315789em;
189 | border-radius: 0.21052632em;
190 | left: -0.31578947em;
191 | right: -0.31578947em;
192 | z-index: -1;
193 | }
194 | #navigation #navbar-menu.open {
195 | height: 19.125em;
196 | padding-top: 1.25em;
197 | z-index: -100;
198 | }
199 | #navigation #navbar-menu.open ul li {
200 | opacity: 1;
201 | -webkit-transform: translateY(0) rotateX(0);
202 | transform: translateY(0) rotateX(0);
203 | }
204 | }
205 | /* Mobile - Side Pop Out */
206 | @media only screen and (max-width: 1023px) {
207 | #navigation {
208 | position: fixed;
209 | top: 0;
210 | left: 0;
211 | width: 100%;
212 | z-index: 10000;
213 | height: auto;
214 | }
215 | #navigation .background-color-div {
216 | position: absolute;
217 | top: 0;
218 | left: 0;
219 | background-color: #fff;
220 | width: 100%;
221 | height: 100%;
222 | -webkit-box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
223 | box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
224 | }
225 | #navigation .container {
226 | padding: 0.8125em 0;
227 | width: 96%;
228 | }
229 | #navigation .logo {
230 | display: inline-block;
231 | height: 1.875em;
232 | width: auto;
233 | }
234 | #navigation .logo img {
235 | width: auto;
236 | height: 100%;
237 | }
238 | #navigation .logo .light {
239 | display: none;
240 | }
241 | #navigation .logo .dark {
242 | display: block;
243 | }
244 | #navigation .hamburger-menu {
245 | position: absolute;
246 | right: 0em;
247 | border: none;
248 | height: 3em;
249 | width: 3em;
250 | z-index: 100;
251 | display: block;
252 | background: transparent;
253 | padding: 0;
254 | top: 50%;
255 | -webkit-transform: translateY(-50%);
256 | transform: translateY(-50%);
257 | -webkit-transition: top .3s;
258 | transition: top .3s;
259 | }
260 | #navigation .hamburger-menu span {
261 | height: 2px;
262 | width: 1.875em;
263 | background-color: #000;
264 | display: block;
265 | position: absolute;
266 | left: 50%;
267 | -webkit-transform: translateX(-50%);
268 | transform: translateX(-50%);
269 | -webkit-transition: background-color 0.3s;
270 | transition: background-color 0.3s;
271 | }
272 | #navigation .hamburger-menu span:before {
273 | content: '';
274 | position: absolute;
275 | display: block;
276 | height: 2px;
277 | width: 80%;
278 | background: #000;
279 | opacity: 1;
280 | top: -6px;
281 | left: 0;
282 | -webkit-transition: width .3s, left .3s, top .3s, -webkit-transform .5s;
283 | transition: width .3s, left .3s, top .3s, -webkit-transform .5s;
284 | transition: width .3s, left .3s, top .3s, transform .5s;
285 | transition: width .3s, left .3s, top .3s, transform .5s, -webkit-transform .5s;
286 | }
287 | #navigation .hamburger-menu span:after {
288 | content: '';
289 | position: absolute;
290 | display: block;
291 | height: 2px;
292 | width: 80%;
293 | background: #000;
294 | opacity: 1;
295 | top: 6px;
296 | left: 0;
297 | -webkit-transition: width .3s, left .3s, top .3s, -webkit-transform .3s;
298 | transition: width .3s, left .3s, top .3s, -webkit-transform .3s;
299 | transition: width .3s, left .3s, top .3s, transform .3s;
300 | transition: width .3s, left .3s, top .3s, transform .3s, -webkit-transform .3s;
301 | }
302 | #navigation .hamburger-menu.clicked span {
303 | background-color: transparent;
304 | }
305 | #navigation .hamburger-menu.clicked span:before {
306 | width: 100%;
307 | -webkit-transform: translate(-50%, -50%) rotate(225deg);
308 | transform: translate(-50%, -50%) rotate(225deg);
309 | left: 50%;
310 | top: 50%;
311 | }
312 | #navigation .hamburger-menu.clicked span:after {
313 | width: 100%;
314 | -webkit-transform: translate(-50%, -50%) rotate(-225deg);
315 | transform: translate(-50%, -50%) rotate(-225deg);
316 | left: 50%;
317 | top: 50%;
318 | }
319 | #navigation #navbar-menu {
320 | position: fixed;
321 | right: 0;
322 | padding: 0;
323 | height: 100%;
324 | border-radius: 0 0 0.375em 0.375em;
325 | z-index: -1;
326 | overflow: hidden;
327 | -webkit-box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
328 | box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
329 | background-color: #fff;
330 | top: 4em;
331 | padding-top: 0;
332 | width: 0em;
333 | -webkit-transition: width .3s;
334 | transition: width .3s;
335 | }
336 | #navigation #navbar-menu ul {
337 | padding: 0;
338 | -webkit-perspective: 700px;
339 | perspective: 700px;
340 | padding-right: 1.25em;
341 | padding-top: 3.125em;
342 | }
343 | #navigation #navbar-menu ul li {
344 | list-style: none;
345 | margin-bottom: 1.5em;
346 | text-align: right;
347 | -webkit-transform-style: preserve-3d;
348 | transform-style: preserve-3d;
349 | opacity: 0;
350 | -webkit-transform: translateY(-0.4375em) rotateX(0deg);
351 | transform: translateY(-0.4375em) rotateX(0deg);
352 | -webkit-transition: opacity .5s, -webkit-transform .5s;
353 | transition: opacity .5s, -webkit-transform .5s;
354 | transition: opacity .5s, transform .5s;
355 | transition: opacity .5s, transform .5s, -webkit-transform .5s;
356 | }
357 | #navigation #navbar-menu ul li:nth-of-type(1) {
358 | -webkit-transition-delay: .1s;
359 | transition-delay: .1s;
360 | }
361 | #navigation #navbar-menu ul li:nth-of-type(2) {
362 | -webkit-transition-delay: .2s;
363 | transition-delay: .2s;
364 | }
365 | #navigation #navbar-menu ul li:nth-of-type(3) {
366 | -webkit-transition-delay: .3s;
367 | transition-delay: .3s;
368 | }
369 | #navigation #navbar-menu ul li:nth-of-type(4) {
370 | -webkit-transition-delay: .4s;
371 | transition-delay: .4s;
372 | }
373 | #navigation #navbar-menu ul li:nth-of-type(5) {
374 | -webkit-transition-delay: .5s;
375 | transition-delay: .5s;
376 | }
377 | #navigation #navbar-menu ul li a {
378 | text-decoration: none;
379 | text-transform: uppercase;
380 | color: #000;
381 | font-size: 1.1875em;
382 | text-align: center;
383 | display: inline-block;
384 | position: relative;
385 | font-weight: bold;
386 | }
387 | #navigation #navbar-menu ul li a.active:before {
388 | content: '';
389 | position: absolute;
390 | display: block;
391 | height: 0.42105263em;
392 | background: var(--primary);
393 | opacity: 1;
394 | bottom: 0.26315789em;
395 | border-radius: 0.21052632em;
396 | left: -0.31578947em;
397 | right: -0.31578947em;
398 | z-index: -1;
399 | }
400 | #navigation #navbar-menu.open {
401 | width: 15.625em;
402 | z-index: -100;
403 | }
404 | #navigation #navbar-menu.open ul li {
405 | opacity: 1;
406 | -webkit-transform: translateY(0) rotateX(0);
407 | transform: translateY(0) rotateX(0);
408 | }
409 | }
410 |
--------------------------------------------------------------------------------
/contact.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | Company Name | Contact Us | Town and State
42 |
43 |
44 |
45 | Click To Skip To Main Content
46 |
47 |
48 |
49 |
50 |
51 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 | Contact Us
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
220 |
221 |
222 |
223 |
228 |
238 |
239 |
240 |
--------------------------------------------------------------------------------
/about.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | Company Name | About Us | Town and State
42 |
43 |
44 |
45 | Click To Skip To Main Content
46 |
47 |
48 |
49 |
50 |
51 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 | About Us
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
Lorem ipsum dolor sit amet consectetur.
116 |
117 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Quibusdam debitis dolor consectetur dolorem inventore modi tenetur ex odit, amet beatae ad, doloribus tempora quae ab nulla minus temporibus at veritatis!
118 |
119 |
120 | List if you need it:
121 |
122 |
123 |
124 |
125 | List item about something
126 |
127 |
128 |
129 | List item about something
130 |
131 |
132 |
133 | List item about something
134 |
135 |
136 |
137 | List item about something
138 |
139 |
140 |
141 | List item about something
142 |
143 |
144 |
145 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Accusantium saepe laborum nam consequuntur porro inventore odio? Quod autem alias ratione cum reiciendis qui quaerat, sequi voluptatum voluptatibus, iusto itaque sed ullam. Quis, maiores corrupti. Rerum quo laudantium vero magnam tempora!
146 |
147 |
Get Free Quote
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
Get It Done With Us Today
164 |
165 | Say something catchy, informative, and encouraging to click the button to go to the contact page. I like to add these to the bottom of all pages.
166 |
167 |
Free Estimate
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
222 |
223 |
224 |
225 |
230 |
240 |
241 |
242 |
--------------------------------------------------------------------------------
/projects.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | Company Name | Projects | Town and State
42 |
43 |
44 |
45 | Click To Skip To Main Content
46 |
47 |
48 |
49 |
50 |
51 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 | Our Projects
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
Get It Done With Us Today
178 |
179 | Say something catchy, informative, and encouraging to click the button to go to the contact page. I like to add these to the bottom of all pages.
180 |
181 |
Free Estimate
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
236 |
237 |
238 |
239 |
244 |
254 |
255 |
256 |
--------------------------------------------------------------------------------
/css/mobile-nav-options.less:
--------------------------------------------------------------------------------
1 | /* Mobile - Top Drop Down */
2 | @media only screen and (max-width: 1023px) {
3 |
4 | //Navigation Styles
5 | #navigation {
6 | position: fixed;
7 | top: 0;
8 | left: 0;
9 | width: 100%;
10 | z-index: 10000;
11 | height: auto;
12 |
13 | .background-color-div {
14 | position: absolute;
15 | top: 0;
16 | left: 0;
17 | background-color: #fff;
18 | width: 100%;
19 | height: 100%;
20 | box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
21 | }
22 |
23 | .container {
24 | padding: 13/16em 0;
25 | width: 96%;
26 | }
27 |
28 | // Logo
29 | .logo {
30 | display: inline-block;
31 | height: 30/16em ;
32 | width: auto;
33 |
34 | img {
35 | width: auto;
36 | height: 100%;
37 | }
38 |
39 | .light {
40 | display: none;
41 | }
42 |
43 | .dark {
44 | display: block;
45 | }
46 | }
47 |
48 | // Hamburger Menu Default State
49 | .hamburger-menu {
50 | position: absolute;
51 | right: 0/16em;
52 | border: none;
53 | height: 48/16em;
54 | width: 48/16em;
55 | z-index: 100;
56 | display: block;
57 | background: transparent;
58 | padding: 0;
59 | top: 50%;
60 | transform: translateY(-50%);
61 | transition: top .3s;
62 |
63 | span {
64 | height: 2px;
65 | width: 30/16em;
66 | background-color: #000;
67 | display: block;
68 | position: absolute;
69 | left: 50%;
70 | transform: translateX(-50%);
71 |
72 | //transition properties
73 | transition: background-color .3s;
74 |
75 | &:before {
76 | content: '';
77 | position: absolute;
78 | display: block;
79 | height: 2px;
80 | width: 80%;
81 | background: #000;
82 | opacity: 1;
83 | top: -6px;
84 | left: 0;
85 |
86 | //transition properties
87 | transition: width .3s, left .3s, top .3s, transform .5s;
88 | }
89 |
90 | &:after {
91 | content: '';
92 | position: absolute;
93 | display: block;
94 | height: 2px;
95 | width: 80%;
96 | background: #000;
97 | opacity: 1;
98 | top: 6px;
99 | left: 0;
100 |
101 | //transition properties
102 | transition: width .3s, left .3s, top .3s, transform .3s;
103 | }
104 | }
105 | }
106 |
107 | // Hamburger Menu Open State
108 | .hamburger-menu.clicked {
109 | span {
110 | background-color: transparent;
111 | &:before {
112 | width: 100%;
113 | transform: translate(-50%, -50%) rotate(225deg);
114 | left: 50%;
115 | top: 50%;
116 | }
117 |
118 | &:after {
119 | width: 100%;
120 | transform: translate(-50%, -50%) rotate(-225deg);
121 | left: 50%;
122 | top: 50%;
123 | }
124 | }
125 | }
126 |
127 | // Navbar Menu Default State
128 | #navbar-menu {
129 | position: fixed;
130 | right: 0;
131 | padding: 0;
132 | width: 100%;
133 | border-radius: 0 0 6/16em 6/16em;
134 | z-index: -1;
135 | overflow: hidden;
136 | box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
137 | background-color: #fff;
138 | top: 64/16em; // same as #navigation height
139 |
140 | //Transition Properties
141 | padding-top: 0;
142 | height: 0;
143 | transition: height .3s, padding-top .3s, top .3s;
144 |
145 |
146 | ul {
147 | padding: 0;
148 | perspective: 700px;
149 | li {
150 | list-style: none;
151 | margin-bottom: 24/16em;
152 | text-align: center;
153 | //Transition Properties
154 | transform-style: preserve-3d;
155 | opacity: 0;
156 | transform: translateY(-7/16em) rotateX(90deg);
157 | transition: opacity .5s, transform .5s;
158 |
159 | //Staggar their transitions
160 | &:nth-of-type(1) {
161 | transition-delay: .1s;
162 | }
163 | &:nth-of-type(2) {
164 | transition-delay: .2s;
165 | }
166 | &:nth-of-type(3) {
167 | transition-delay: .3s;
168 | }
169 | &:nth-of-type(4) {
170 | transition-delay: .4s;
171 | }
172 | &:nth-of-type(5) {
173 | transition-delay: .5s;
174 | }
175 | a {
176 | text-decoration: none;
177 | text-transform: uppercase;
178 | color: #000;
179 | font-size: 19/16em;
180 | text-align: center;
181 | display: inline-block;
182 | position: relative;
183 | font-weight: bold;
184 |
185 | // Active State
186 | &.active {
187 | &:before {
188 | content: '';
189 | position: absolute;
190 | display: block;
191 | height: 8/19em;
192 | background: var(--primary);
193 | opacity: 1;
194 | bottom: 5/19em;
195 | border-radius: 4/19em;
196 | left: -6/19em;
197 | right: -6/19em;
198 | z-index: -1;
199 | }
200 | }
201 | }
202 | }
203 | }
204 | }
205 |
206 | // Navbar Menu Open State
207 | #navbar-menu.open {
208 | height: 306/16em;
209 | padding-top: 20/16em;
210 | z-index: -100;
211 |
212 | ul {
213 | li {
214 | opacity: 1;
215 | transform: translateY(0) rotateX(0);
216 | }
217 | }
218 | }
219 | }
220 | }
221 |
222 |
223 | // ----------------------------------------------------------
224 |
225 |
226 | /* Mobile - Side Pop Out */
227 | @media only screen and (max-width: 1023px) {
228 |
229 | //Navigation Styles
230 | #navigation {
231 | position: fixed;
232 | top: 0;
233 | left: 0;
234 | width: 100%;
235 | z-index: 10000;
236 | height: auto;
237 |
238 | .background-color-div {
239 | position: absolute;
240 | top: 0;
241 | left: 0;
242 | background-color: #fff;
243 | width: 100%;
244 | height: 100%;
245 | box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
246 | }
247 |
248 | .container {
249 | padding: 13/16em 0;
250 | width: 96%;
251 | }
252 |
253 | // Logo
254 | .logo {
255 | display: inline-block;
256 | height: 30/16em ;
257 | width: auto;
258 |
259 | img {
260 | width: auto;
261 | height: 100%;
262 | }
263 |
264 | .light {
265 | display: none;
266 | }
267 |
268 | .dark {
269 | display: block;
270 | }
271 | }
272 |
273 | // Hamburger Menu Default State
274 | .hamburger-menu {
275 | position: absolute;
276 | right: 0/16em;
277 | border: none;
278 | height: 48/16em;
279 | width: 48/16em;
280 | z-index: 100;
281 | display: block;
282 | background: transparent;
283 | padding: 0;
284 | top: 50%;
285 | transform: translateY(-50%);
286 | transition: top .3s;
287 |
288 | span {
289 | height: 2px;
290 | width: 30/16em;
291 | background-color: #000;
292 | display: block;
293 | position: absolute;
294 | left: 50%;
295 | transform: translateX(-50%);
296 |
297 | //transition properties
298 | transition: background-color .3s;
299 |
300 | &:before {
301 | content: '';
302 | position: absolute;
303 | display: block;
304 | height: 2px;
305 | width: 80%;
306 | background: #000;
307 | opacity: 1;
308 | top: -6px;
309 | left: 0;
310 |
311 | //transition properties
312 | transition: width .3s, left .3s, top .3s, transform .5s;
313 | }
314 |
315 | &:after {
316 | content: '';
317 | position: absolute;
318 | display: block;
319 | height: 2px;
320 | width: 80%;
321 | background: #000;
322 | opacity: 1;
323 | top: 6px;
324 | left: 0;
325 |
326 | //transition properties
327 | transition: width .3s, left .3s, top .3s, transform .3s;
328 | }
329 | }
330 | }
331 |
332 | // Hamburger Menu Open State
333 | .hamburger-menu.clicked {
334 | span {
335 | background-color: transparent;
336 | &:before {
337 | width: 100%;
338 | transform: translate(-50%, -50%) rotate(225deg);
339 | left: 50%;
340 | top: 50%;
341 | }
342 |
343 | &:after {
344 | width: 100%;
345 | transform: translate(-50%, -50%) rotate(-225deg);
346 | left: 50%;
347 | top: 50%;
348 | }
349 | }
350 | }
351 |
352 | // Navbar Menu Default State
353 | #navbar-menu {
354 | position: fixed;
355 | right: 0;
356 | padding: 0;
357 | height: 100%;
358 | border-radius: 0 0 6/16em 6/16em;
359 | z-index: -1;
360 | overflow: hidden;
361 | box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
362 | background-color: #fff;
363 | top: 64/16em; // same as #navigation height
364 |
365 | //Transition Properties
366 | padding-top: 0;
367 | width: 0/16em;
368 | transition: width .3s;
369 |
370 |
371 | ul {
372 | padding: 0;
373 | perspective: 700px;
374 | padding-right: 20/16em;
375 | padding-top: 50/16em;
376 | li {
377 | list-style: none;
378 | margin-bottom: 24/16em;
379 | text-align: right;
380 | //Transition Properties
381 | transform-style: preserve-3d;
382 | opacity: 0;
383 | transform: translateY(-7/16em) rotateX(00deg);
384 | transition: opacity .5s, transform .5s;
385 |
386 | //Staggar their transitions
387 | &:nth-of-type(1) {
388 | transition-delay: .1s;
389 | }
390 | &:nth-of-type(2) {
391 | transition-delay: .2s;
392 | }
393 | &:nth-of-type(3) {
394 | transition-delay: .3s;
395 | }
396 | &:nth-of-type(4) {
397 | transition-delay: .4s;
398 | }
399 | &:nth-of-type(5) {
400 | transition-delay: .5s;
401 | }
402 | a {
403 | text-decoration: none;
404 | text-transform: uppercase;
405 | color: #000;
406 | font-size: 19/16em;
407 | text-align: center;
408 | display: inline-block;
409 | position: relative;
410 | font-weight: bold;
411 |
412 | // Active State
413 | &.active {
414 | &:before {
415 | content: '';
416 | position: absolute;
417 | display: block;
418 | height: 8/19em;
419 | background: var(--primary);
420 | opacity: 1;
421 | bottom: 5/19em;
422 | border-radius: 4/19em;
423 | left: -6/19em;
424 | right: -6/19em;
425 | z-index: -1;
426 | }
427 | }
428 | }
429 | }
430 | }
431 | }
432 |
433 | // Navbar Menu Open State
434 | #navbar-menu.open {
435 | width: 250/16em;
436 | z-index: -100;
437 |
438 | ul {
439 | li {
440 | opacity: 1;
441 | transform: translateY(0) rotateX(0);
442 | }
443 | }
444 | }
445 | }
446 | }
--------------------------------------------------------------------------------