├── .gitignore
├── README.md
├── _img
├── android-chrome-192x192.png
├── android-chrome-384x384.png
├── apple-touch-icon.png
├── favicon-16x16.png
├── favicon-32x32.png
├── favicon.ico
├── me.jpg
├── safari-pinned-tab.svg
└── screenshots
│ ├── antiweather.png
│ ├── clippy.png
│ ├── copypastelist.png
│ ├── csscreatures.png
│ ├── csspiechart.png
│ ├── cssscales.png
│ ├── flexplorer.png
│ ├── genesis.jpg
│ ├── gradients.png
│ ├── imageeffects.png
│ ├── mapsfortheweb.jpg
│ ├── openbrainproject.png
│ ├── plaintextlist.png
│ ├── soteriaradar.jpg
│ ├── tiny
│ ├── antiweather.jpg
│ ├── clippy.jpg
│ ├── copypastelist.jpg
│ ├── csscreatures.jpg
│ ├── csspiechart.jpg
│ ├── cssscales.jpg
│ ├── flexplorer.jpg
│ ├── genesis.jpg
│ ├── gradients.jpg
│ ├── imageeffects.jpg
│ ├── mapsfortheweb.jpg
│ ├── openbrainproject.jpg
│ ├── plaintextlist.jpg
│ ├── soteriaradar.jpg
│ ├── usa2200.jpg
│ ├── usacss.jpg
│ └── ztext.jpg
│ ├── usa2200.png
│ ├── usacss.png
│ └── ztext.png
├── _redirects
├── _src
├── index.slim
└── scss
│ ├── partials
│ ├── _extensions.scss
│ ├── _functions.scss
│ ├── _normalize.scss
│ ├── _palette.scss
│ └── _reset.scss
│ └── style.scss
├── gulpfile.js
├── index.html
├── package-lock.json
├── package.json
└── style.min.css
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .sass-cache
3 | .sass-cache/*
4 | .Trashes
5 | node_modules
6 | npm-debug.log
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Bennett Feely
2 |
3 | This repo is now solely my personal homepage at https://bennettfeely.com
4 |
5 | ## Projects
6 |
7 | Projects were previously in subfolders in this one repo (which is why this repo has so many stars).
8 |
9 | Each project is now in its own respective repo. Give 'em a star!
10 |
11 | | Repo link | Live demo | Description |
12 | | :------------------------------------------------------------- | :--------------------------------------------- | :---------------------------------------------- |
13 | | [antiweather](https://github.com/bennettfeely/antiweather) | [Live](https://bennettfeely.com/antiweather) | See the weather at the opposite point on Earth |
14 | | [clippy](https://github.com/bennettfeely/clippy) | [Live](https://bennettfeely.com/clippy) | Shape up your website with CSS clip-paths |
15 | | [csscreatures](https://github.com/bennettfeely/csscreatures) | [Live](https://bennettfeely.com/csscreatures) | Make a creature by tweeting to @csscreatures |
16 | | [csspiechart](https://github.com/bennettfeely/csspiechart) | [Live](https://bennettfeely.com/csspiechart) | Generate a pie chart with CSS conic gradients |
17 | | [flexplorer](https://github.com/bennettfeely/flexplorer) | [Live](https://bennettfeely.com/flexplorer) | CSS flexible box model explorer |
18 | | [gradients](https://github.com/bennettfeely/gradients) | [Live](https://bennettfeely.com/gradients) | CSS gradients with background-blend-mode |
19 | | [image-effects](https://github.com/bennettfeely/image-effects) | [Live](https://bennettfeely.com/image-effects) | Complex image effects with CSS |
20 | | [scales](https://github.com/bennettfeely/scales) | [Live](https://bennettfeely.com/scales) | Color scales reproduced as CSS gradients |
21 | | [trumptalk](https://github.com/bennettfeely/trumptalk) | [Live](https://bennettfeely.com/trumptalk) | Generate a President Trump Inaugural Address |
22 | | [usa-css](https://github.com/bennettfeely/usa-css) | [Live](https://bennettfeely.com/usacss) | The most American CSS stylesheet |
23 | | [usa-2200](https://github.com/bennettfeely/usa-2200) | [Live](https://usa2200.netlify.app/) | Retro simulation of America |
24 | | [youtubedecade](https://github.com/bennettfeely/youtubedecade) | [Live](https://bennettfeely.com/youtubedecade) | Most-viewed videos posted exactly 10 years ago. |
25 | | [ztext](https://github.com/bennettfeely/ztext) | [Live](https://bennettfeely.com/ztext) | Easy to implement, 3D typography for the web. |
26 |
--------------------------------------------------------------------------------
/_img/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/android-chrome-192x192.png
--------------------------------------------------------------------------------
/_img/android-chrome-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/android-chrome-384x384.png
--------------------------------------------------------------------------------
/_img/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/apple-touch-icon.png
--------------------------------------------------------------------------------
/_img/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/favicon-16x16.png
--------------------------------------------------------------------------------
/_img/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/favicon-32x32.png
--------------------------------------------------------------------------------
/_img/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/favicon.ico
--------------------------------------------------------------------------------
/_img/me.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/me.jpg
--------------------------------------------------------------------------------
/_img/screenshots/antiweather.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/antiweather.png
--------------------------------------------------------------------------------
/_img/screenshots/clippy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/clippy.png
--------------------------------------------------------------------------------
/_img/screenshots/copypastelist.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/copypastelist.png
--------------------------------------------------------------------------------
/_img/screenshots/csscreatures.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/csscreatures.png
--------------------------------------------------------------------------------
/_img/screenshots/csspiechart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/csspiechart.png
--------------------------------------------------------------------------------
/_img/screenshots/cssscales.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/cssscales.png
--------------------------------------------------------------------------------
/_img/screenshots/flexplorer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/flexplorer.png
--------------------------------------------------------------------------------
/_img/screenshots/genesis.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/genesis.jpg
--------------------------------------------------------------------------------
/_img/screenshots/gradients.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/gradients.png
--------------------------------------------------------------------------------
/_img/screenshots/imageeffects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/imageeffects.png
--------------------------------------------------------------------------------
/_img/screenshots/mapsfortheweb.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/mapsfortheweb.jpg
--------------------------------------------------------------------------------
/_img/screenshots/openbrainproject.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/openbrainproject.png
--------------------------------------------------------------------------------
/_img/screenshots/plaintextlist.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/plaintextlist.png
--------------------------------------------------------------------------------
/_img/screenshots/soteriaradar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/soteriaradar.jpg
--------------------------------------------------------------------------------
/_img/screenshots/tiny/antiweather.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/tiny/antiweather.jpg
--------------------------------------------------------------------------------
/_img/screenshots/tiny/clippy.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/tiny/clippy.jpg
--------------------------------------------------------------------------------
/_img/screenshots/tiny/copypastelist.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/tiny/copypastelist.jpg
--------------------------------------------------------------------------------
/_img/screenshots/tiny/csscreatures.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/tiny/csscreatures.jpg
--------------------------------------------------------------------------------
/_img/screenshots/tiny/csspiechart.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/tiny/csspiechart.jpg
--------------------------------------------------------------------------------
/_img/screenshots/tiny/cssscales.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/tiny/cssscales.jpg
--------------------------------------------------------------------------------
/_img/screenshots/tiny/flexplorer.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/tiny/flexplorer.jpg
--------------------------------------------------------------------------------
/_img/screenshots/tiny/genesis.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/tiny/genesis.jpg
--------------------------------------------------------------------------------
/_img/screenshots/tiny/gradients.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/tiny/gradients.jpg
--------------------------------------------------------------------------------
/_img/screenshots/tiny/imageeffects.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/tiny/imageeffects.jpg
--------------------------------------------------------------------------------
/_img/screenshots/tiny/mapsfortheweb.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/tiny/mapsfortheweb.jpg
--------------------------------------------------------------------------------
/_img/screenshots/tiny/openbrainproject.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/tiny/openbrainproject.jpg
--------------------------------------------------------------------------------
/_img/screenshots/tiny/plaintextlist.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/tiny/plaintextlist.jpg
--------------------------------------------------------------------------------
/_img/screenshots/tiny/soteriaradar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/tiny/soteriaradar.jpg
--------------------------------------------------------------------------------
/_img/screenshots/tiny/usa2200.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/tiny/usa2200.jpg
--------------------------------------------------------------------------------
/_img/screenshots/tiny/usacss.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/tiny/usacss.jpg
--------------------------------------------------------------------------------
/_img/screenshots/tiny/ztext.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/tiny/ztext.jpg
--------------------------------------------------------------------------------
/_img/screenshots/usa2200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/usa2200.png
--------------------------------------------------------------------------------
/_img/screenshots/usacss.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/usacss.png
--------------------------------------------------------------------------------
/_img/screenshots/ztext.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bennettfeely/bennett/bde16596e80c5d0d512a9b9d08fe9fa1e6bf8c96/_img/screenshots/ztext.png
--------------------------------------------------------------------------------
/_redirects:
--------------------------------------------------------------------------------
1 | https://bennettfeely.com/usacss https://bennettfeely.com/usa-css 301
--------------------------------------------------------------------------------
/_src/index.slim:
--------------------------------------------------------------------------------
1 | doctype html
2 | html lang="en"
3 | head
4 | meta charset="utf-8"
5 | meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"
6 | title Bennett Feely
7 | meta name="description" content="Bennett Feely is a web developer based in Pittsburgh. He makes websites so you don't have to."
8 | link href="style.min.css" rel="stylesheet"
9 | link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin=""
10 | link href="https://fonts.googleapis.com/css?family=Nunito:400,700" rel="stylesheet"
11 | link rel="apple-touch-icon" sizes="180x180" href="_img/apple-touch-icon.png"
12 | link rel="icon" type="image/png" sizes="32x32" href="_img/favicon-32x32.png"
13 | link rel="icon" type="image/png" sizes="16x16" href="_img/favicon-16x16.png"
14 | link rel="mask-icon" href="img//safari-pinned-tab.svg" color="#5bbad5"
15 | meta name="theme-color" content="#ffffff"
16 | body
17 | .header-wrapper
18 | header
19 | .container
20 | img.me src="_img/me.jpg" width="250" height="250" alt="Photo of Bennett Feely"
21 | h1 Hello! My name is Bennett Feely.
I make websites so you don't have to.
22 | / .job-wrapper
23 | / section
24 | / .container
25 | / h2 Update January 2021:
26 | / p I'm currently available for freelance web design and development, logo design, brand design, and graphic design work.
27 | / a href="#contact" Let's get in touch!
28 | .main-wrapper
29 | section
30 | h2.outline
31 | span Recent Projects
32 | .container
33 | ul
34 | li.project
35 | a.project-link href="https://bennettfeely.com/ztext/" data-img="ztext"
36 | .screenshot-wrapper
37 | img.screenshot src="_img/screenshots/ztext.png" width="600" height="450" alt=""
38 | .line
39 | .caption ztext.js, 3D typography for any website and any font
40 | li.project
41 | a.project-link href="https://bennettfeely.com/csscreatures/" data-img="csscreatures"
42 | .screenshot-wrapper
43 | img.screenshot src="_img/screenshots/csscreatures.png" width="600" height="450" alt=""
44 | .line
45 | .caption CSS Creatures, make a creature from your tweet
46 | li.project
47 | a.project-link href="https://copypastelist.com" data-img="copypastelist"
48 | .screenshot-wrapper
49 | img.screenshot src="_img/screenshots/copypastelist.png" width="600" height="450" alt=""
50 | .line
51 | .caption Copy Paste List, collection of lists in plain text
52 | li.project
53 | a.project-link href="/usa-css" data-img="usa"
54 | .screenshot-wrapper
55 | img.screenshot src="_img/screenshots/usacss.png" width="600" height="450" alt=""
56 | .line
57 | .caption USA.css, the most American CSS stylesheet
58 | li.project
59 | a.project-link href="/csspiechart" data-img="pie"
60 | .screenshot-wrapper
61 | img.screenshot src="_img/screenshots/csspiechart.png" width="600" height="450" alt=""
62 | .line
63 | .caption CSS Pie Chart, generate pie charts with conic gradients
64 | li.project
65 | a.project-link href="/clippy" data-img="clippy"
66 | .screenshot-wrapper
67 | img.screenshot src="_img/screenshots/clippy.png" width="600" height="450" alt=""
68 | .line
69 | .caption Clippy, a tool for making CSS clip paths
70 | li.project
71 | a.project-link href="/antiweather" data-img="antiweather"
72 | .screenshot-wrapper
73 | img.screenshot src="_img/screenshots/antiweather.png" width="600" height="450" alt=""
74 | .line
75 | .caption Antiweather, see what the weather is like on the other side of the world
76 | / li.project
77 | / a.project-link href="/usa-2200" data-img="usa2200"
78 | / .screenshot-wrapper
79 | / img.screenshot src="_img/screenshots/usa2200.png" width="600" height="450" alt=""
80 | / .line
81 | / .caption USA 2200, every state is made of pixels at war with each other
82 | li.project
83 | a.project-link href="/image-effects" data-img="imageeffects"
84 | .screenshot-wrapper
85 | img.screenshot src="_img/screenshots/imageeffects.png" width="600" height="450" alt=""
86 | .line
87 | .caption CSS Image Effects, using blend modes for complex image effects
88 | li.project
89 | a.project-link href="/gradients" data-img="gradients"
90 | .screenshot-wrapper
91 | img.screenshot src="_img/screenshots/gradients.png" width="600" height="450" alt=""
92 | .line
93 | .caption CSS Gradients, using blend modes with background gradients
94 | li.project
95 | a.project-link href="/flexplorer" data-img="flexplorer"
96 | .screenshot-wrapper
97 | img.screenshot src="_img/screenshots/flexplorer.png" width="600" height="450" alt=""
98 | .line
99 | .caption Flexplorer, learn how flexbox works with lists
100 | li.project
101 | a.project-link href="/scales" data-img="cssscales"
102 | .screenshot-wrapper
103 | img.screenshot src="_img/screenshots/cssscales.png" width="600" height="450" alt=""
104 | .line
105 | .caption CSS Scales, accessible CSS gradients
106 | .container
107 | h2.outline
108 | span Recent Work
109 | ul
110 | li.project
111 | a.project-link href="https://www.w3.org/2020/maps/" data-img="mapsfortheweb"
112 | .screenshot-wrapper
113 | img.screenshot src="_img/screenshots/mapsfortheweb.jpg" width="600" height="450" alt=""
114 | .line
115 | .caption Logo and graphics for Maps for the Web Workshop, for the W3C
116 | li.project
117 | a.project-link href="https://openbrainproject.org" data-img="openbrainproject"
118 | .screenshot-wrapper
119 | img.screenshot src="_img/screenshots/openbrainproject.png" width="600" height="450" alt=""
120 | .line
121 | .caption The Open Brain Project, at Carnegie Mellon University
122 | li.project
123 | a.project-link href="https://soteriaradar.netlify.app/" data-img="soteriaradar"
124 | .screenshot-wrapper
125 | img.screenshot src="_img/screenshots/soteriaradar.jpg" width="600" height="450" alt=""
126 | .line
127 | .caption Soteria Radar, a website for a startup
128 | .contact-wrapper#contact
129 | section
130 | .container
131 | h2.outline
132 | span Contact
133 | ul.contacts
134 | li.contact
135 | label.contact-link.email-link onClick="document.querySelector('.email-link input').select();"
136 | Email
137 | li.contact
138 | a.contact-link href="https://twitter.com/bennettfeely"
139 | Twitter @bennettfeely
140 | li.contact
141 | a.contact-link href="https://github.com/bennettfeely"
142 | GitHub @bennettfeely
143 | li.contact
144 | a.contact-link href="https://instagram.com/bennettfeely"
145 | Instagram @bennettfeely
146 | li.contact
147 | a.contact-link href="https://codepen.io/bennettfeely"
148 | CodePen /bennettfeely
149 | li.contact
150 | a.contact-link href="https://www.linkedin.com/in/bennettfeely/"
151 | LinkedIn /in/bennettfeely
152 | .footer-wrapper
153 | footer
154 | .container
155 | p.copyright © 2021 Bennett Feely
--------------------------------------------------------------------------------
/_src/scss/partials/_extensions.scss:
--------------------------------------------------------------------------------
1 | %no-select {
2 | -ms-user-select: none;
3 | -webkit-user-select: none;
4 | -moz-user-select: none;
5 | user-select: none;
6 | }
7 |
8 | %no-drag {
9 | -webkit-user-drag: none;
10 | -moz-user-drag: none;
11 | -ms-user-drag: none;
12 | user-drag: none;
13 | }
14 |
15 | %no-tap {
16 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
17 | -webkit-touch-callout: none;
18 | tap-highlight-color: rgba(0, 0, 0, 0);
19 | touch-callout: none;
20 | }
21 |
22 | %psuedo {
23 | display: block;
24 | content: "";
25 | position: absolute;
26 | }
27 |
--------------------------------------------------------------------------------
/_src/scss/partials/_functions.scss:
--------------------------------------------------------------------------------
1 | @function tint($color, $percent) {
2 | @return mix(white, $color, $percent);
3 | }
4 | @function shade($color, $percent) {
5 | @return mix(black, $color, $percent);
6 | }
7 |
--------------------------------------------------------------------------------
/_src/scss/partials/_normalize.scss:
--------------------------------------------------------------------------------
1 | /* normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */
2 |
3 | /* Document
4 | ========================================================================== */
5 |
6 | /**
7 | * 1. Correct the line height in all browsers.
8 | * 2. Prevent adjustments of font size after orientation changes in iOS.
9 | */
10 |
11 | html {
12 | line-height: 1.15; /* 1 */
13 | -webkit-text-size-adjust: 100%; /* 2 */
14 | }
15 |
16 | /* Sections
17 | ========================================================================== */
18 |
19 | /**
20 | * Remove the margin in all browsers.
21 | */
22 |
23 | body {
24 | margin: 0;
25 | }
26 |
27 | /**
28 | * Correct the font size and margin on `h1` elements within `section` and
29 | * `article` contexts in Chrome, Firefox, and Safari.
30 | */
31 |
32 | h1 {
33 | font-size: 2em;
34 | margin: 0.67em 0;
35 | }
36 |
37 | /* Grouping content
38 | ========================================================================== */
39 |
40 | /**
41 | * 1. Add the correct box sizing in Firefox.
42 | * 2. Show the overflow in Edge and IE.
43 | */
44 |
45 | hr {
46 | box-sizing: content-box; /* 1 */
47 | height: 0; /* 1 */
48 | overflow: visible; /* 2 */
49 | }
50 |
51 | /**
52 | * 1. Correct the inheritance and scaling of font size in all browsers.
53 | * 2. Correct the odd `em` font sizing in all browsers.
54 | */
55 |
56 | pre {
57 | font-family: monospace, monospace; /* 1 */
58 | font-size: 1em; /* 2 */
59 | }
60 |
61 | /* Text-level semantics
62 | ========================================================================== */
63 |
64 | /**
65 | * Remove the gray background on active links in IE 10.
66 | */
67 |
68 | a {
69 | background-color: transparent;
70 | }
71 |
72 | /**
73 | * 1. Remove the bottom border in Chrome 57-
74 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
75 | */
76 |
77 | abbr[title] {
78 | border-bottom: none; /* 1 */
79 | text-decoration: underline; /* 2 */
80 | text-decoration: underline dotted; /* 2 */
81 | }
82 |
83 | /**
84 | * Add the correct font weight in Chrome, Edge, and Safari.
85 | */
86 |
87 | b,
88 | strong {
89 | font-weight: bolder;
90 | }
91 |
92 | /**
93 | * 1. Correct the inheritance and scaling of font size in all browsers.
94 | * 2. Correct the odd `em` font sizing in all browsers.
95 | */
96 |
97 | code,
98 | kbd,
99 | samp {
100 | font-family: monospace, monospace; /* 1 */
101 | font-size: 1em; /* 2 */
102 | }
103 |
104 | /**
105 | * Add the correct font size in all browsers.
106 | */
107 |
108 | small {
109 | font-size: 80%;
110 | }
111 |
112 | /**
113 | * Prevent `sub` and `sup` elements from affecting the line height in
114 | * all browsers.
115 | */
116 |
117 | sub,
118 | sup {
119 | font-size: 75%;
120 | line-height: 0;
121 | position: relative;
122 | vertical-align: baseline;
123 | }
124 |
125 | sub {
126 | bottom: -0.25em;
127 | }
128 |
129 | sup {
130 | top: -0.5em;
131 | }
132 |
133 | /* Embedded content
134 | ========================================================================== */
135 |
136 | /**
137 | * Remove the border on images inside links in IE 10.
138 | */
139 |
140 | img {
141 | border-style: none;
142 | }
143 |
144 | /* Forms
145 | ========================================================================== */
146 |
147 | /**
148 | * 1. Change the font styles in all browsers.
149 | * 2. Remove the margin in Firefox and Safari.
150 | */
151 |
152 | button,
153 | input,
154 | optgroup,
155 | select,
156 | textarea {
157 | font-family: inherit; /* 1 */
158 | font-size: 100%; /* 1 */
159 | line-height: 1.15; /* 1 */
160 | margin: 0; /* 2 */
161 | }
162 |
163 | /**
164 | * Show the overflow in IE.
165 | * 1. Show the overflow in Edge.
166 | */
167 |
168 | button,
169 | input {
170 | /* 1 */
171 | overflow: visible;
172 | }
173 |
174 | /**
175 | * Remove the inheritance of text transform in Edge, Firefox, and IE.
176 | * 1. Remove the inheritance of text transform in Firefox.
177 | */
178 |
179 | button,
180 | select {
181 | /* 1 */
182 | text-transform: none;
183 | }
184 |
185 | /**
186 | * Correct the inability to style clickable types in iOS and Safari.
187 | */
188 |
189 | button,
190 | [type="button"],
191 | [type="reset"],
192 | [type="submit"] {
193 | -webkit-appearance: button;
194 | }
195 |
196 | /**
197 | * Remove the inner border and padding in Firefox.
198 | */
199 |
200 | button::-moz-focus-inner,
201 | [type="button"]::-moz-focus-inner,
202 | [type="reset"]::-moz-focus-inner,
203 | [type="submit"]::-moz-focus-inner {
204 | border-style: none;
205 | padding: 0;
206 | }
207 |
208 | /**
209 | * Restore the focus styles unset by the previous rule.
210 | */
211 |
212 | button:-moz-focusring,
213 | [type="button"]:-moz-focusring,
214 | [type="reset"]:-moz-focusring,
215 | [type="submit"]:-moz-focusring {
216 | outline: 1px dotted ButtonText;
217 | }
218 |
219 | /**
220 | * Correct the padding in Firefox.
221 | */
222 |
223 | fieldset {
224 | padding: 0.35em 0.75em 0.625em;
225 | }
226 |
227 | /**
228 | * 1. Correct the text wrapping in Edge and IE.
229 | * 2. Correct the color inheritance from `fieldset` elements in IE.
230 | * 3. Remove the padding so developers are not caught out when they zero out
231 | * `fieldset` elements in all browsers.
232 | */
233 |
234 | legend {
235 | box-sizing: border-box; /* 1 */
236 | color: inherit; /* 2 */
237 | display: table; /* 1 */
238 | max-width: 100%; /* 1 */
239 | padding: 0; /* 3 */
240 | white-space: normal; /* 1 */
241 | }
242 |
243 | /**
244 | * Add the correct vertical alignment in Chrome, Firefox, and Opera.
245 | */
246 |
247 | progress {
248 | vertical-align: baseline;
249 | }
250 |
251 | /**
252 | * Remove the default vertical scrollbar in IE 10+.
253 | */
254 |
255 | textarea {
256 | overflow: auto;
257 | }
258 |
259 | /**
260 | * 1. Add the correct box sizing in IE 10.
261 | * 2. Remove the padding in IE 10.
262 | */
263 |
264 | [type="checkbox"],
265 | [type="radio"] {
266 | box-sizing: border-box; /* 1 */
267 | padding: 0; /* 2 */
268 | }
269 |
270 | /**
271 | * Correct the cursor style of increment and decrement buttons in Chrome.
272 | */
273 |
274 | [type="number"]::-webkit-inner-spin-button,
275 | [type="number"]::-webkit-outer-spin-button {
276 | height: auto;
277 | }
278 |
279 | /**
280 | * 1. Correct the odd appearance in Chrome and Safari.
281 | * 2. Correct the outline style in Safari.
282 | */
283 |
284 | [type="search"] {
285 | -webkit-appearance: textfield; /* 1 */
286 | outline-offset: -2px; /* 2 */
287 | }
288 |
289 | /**
290 | * Remove the inner padding in Chrome and Safari on macOS.
291 | */
292 |
293 | [type="search"]::-webkit-search-decoration {
294 | -webkit-appearance: none;
295 | }
296 |
297 | /**
298 | * 1. Correct the inability to style clickable types in iOS and Safari.
299 | * 2. Change font properties to `inherit` in Safari.
300 | */
301 |
302 | ::-webkit-file-upload-button {
303 | -webkit-appearance: button; /* 1 */
304 | font: inherit; /* 2 */
305 | }
306 |
307 | /* Interactive
308 | ========================================================================== */
309 |
310 | /*
311 | * Add the correct display in Edge, IE 10+, and Firefox.
312 | */
313 |
314 | details {
315 | display: block;
316 | }
317 |
318 | /*
319 | * Add the correct display in all browsers.
320 | */
321 |
322 | summary {
323 | display: list-item;
324 | }
325 |
326 | /* Misc
327 | ========================================================================== */
328 |
329 | /**
330 | * Add the correct display in IE 10+.
331 | */
332 |
333 | template {
334 | display: none;
335 | }
336 |
337 | /**
338 | * Add the correct display in IE 10.
339 | */
340 |
341 | [hidden] {
342 | display: none;
343 | }
344 |
--------------------------------------------------------------------------------
/_src/scss/partials/_palette.scss:
--------------------------------------------------------------------------------
1 | // Palettes
2 | // --------------------------------------------------------------------------------
3 |
4 | // Red
5 | $list-red: #fde0dc, #f9bdbb, #f69988, #f36c60, #e84e40,
6 | #e51c23, #dd191d, #d01716, #c41411, #b0120a,
7 | #ff7997, #ff5177, #ff2d6f, #e00032;
8 |
9 | // Pink
10 | $list-pink: #fce4ec, #f8bbd0, #f48fb1, #f06292, #ec407a,
11 | #e91e63, #d81b60, #c2185b, #ad1457, #880e4f,
12 | #ff80ab, #ff4081, #f50057, #c51162;
13 |
14 | // Purple
15 | $list-purple: #f3e5f5, #e1bee7, #ce93d8, #ba68c8, #ab47bc,
16 | #9c27b0, #8e24aa, #7b1fa2, #6a1b9a, #4a148c,
17 | #ea80fc, #e040fb, #d500f9, #aa00ff;
18 |
19 | // Deep Purple
20 | $list-deep-purple: #ede7f6, #d1c4e9, #b39ddb, #9575cd, #7e57c2,
21 | #673ab7, #5e35b1, #512da8, #4527a0, #311b92,
22 | #b388ff, #7c4dff, #651fff, #6200ea;
23 |
24 | // Indigo
25 | $list-indigo: #e8eaf6, #c5cae9, #9fa8da, #7986cb, #5c6bc0,
26 | #3f51b5, #3949ab, #303f9f, #283593, #1a237e,
27 | #8c9eff, #536dfe, #3d5afe, #304ffe;
28 |
29 | // Blue
30 | $list-blue: #e7e9fd, #d0d9ff, #afbfff, #91a7ff, #738ffe,
31 | #5677fc, #4e6cef, #455ede, #3b50ce, #2a36b1,
32 | #a6baff, #6889ff, #4d73ff, #4d69ff;
33 |
34 | // Light Blue
35 | $list-light-blue: #e1f5fe, #b3e5fc, #81d4fa, #4fc3f7, #29b6f6,
36 | #03a9f4, #039be5, #0288d1, #0277bd, #01579b,
37 | #80d8ff, #40c4ff, #00b0ff, #0091ea;
38 |
39 | // Cyan
40 | $list-cyan: #e0f7fa, #b2ebf2, #80deea, #4dd0e1, #26c6da,
41 | #00bcd4, #00acc1, #0097a7, #00838f, #006064,
42 | #84ffff, #18ffff, #00e5ff, #00b8d4;
43 |
44 | // Teal
45 | $list-teal: #e0f2f1, #b2dfdb, #80cbc4, #4db6ac, #26a69a,
46 | #009688, #00897b, #00796b, #00695c, #004d40,
47 | #a7ffeb, #64ffda, #1de9b6, #00bfa5;
48 |
49 | // Green
50 | $list-green: #d0f8ce, #a3e9a4, #72d572, #42bd41, #2baf2b,
51 | #259b24, #0a8f08, #0a7e07, #056f00, #0d5302,
52 | #a2f78d, #5af158, #14e715, #12c700;
53 |
54 | // Light Green
55 | $list-light-green: #f1f8e9, #dcedc8, #c5e1a5, #aed581, #9ccc65,
56 | #8bc34a, #7cb342, #689f38, #558b2f, #33691e,
57 | #ccff90, #b2ff59, #76ff03, #64dd17;
58 |
59 | // Lime
60 | $list-lime: #f9fbe7, #f0f4c3, #e6ee9c, #dce775, #d4e157,
61 | #cddc39, #c0ca33, #afb42b, #9e9d24, #827717,
62 | #f4ff81, #eeff41, #c6ff00, #aeea00;
63 |
64 | // Yellow
65 | $list-yellow: #fffde7, #fff9c4, #fff59d, #fff176, #ffee58,
66 | #ffeb3b, #fdd835, #fbc02d, #f9a825, #f57f17,
67 | #ffff8d, #ffff00, #ffea00, #ffd600;
68 |
69 | // Amber
70 | $list-amber: #fff8e1, #ffecb3, #ffe082, #ffd54f, #ffca28,
71 | #ffc107, #ffb300, #ffa000, #ff8f00, #ff6f00,
72 | #ffe57f, #ffd740, #ffc400, #ffab00;
73 |
74 | // Orange
75 | $list-orange: #fff3e0, #ffe0b2, #ffcc80, #ffb74d, #ffa726,
76 | #ff9800, #fb8c00, #f57c00, #ef6c00, #e65100,
77 | #ffd180, #ffab40, #ff9100, #ff6d00;
78 |
79 | // Deep Orange
80 | $list-deep-orange: #fbe9e7, #ffccbc, #ffab91, #ff8a65, #ff7043,
81 | #ff5722, #f4511e, #e64a19, #d84315, #bf360c,
82 | #ff9e80, #ff6e40, #ff3d00, #dd2c00;
83 |
84 | // Brown
85 | $list-brown: #efebe9, #d7ccc8, #bcaaa4, #a1887f, #8d6e63,
86 | #795548, #6d4c41, #5d4037, #4e342e, #3e2723;
87 |
88 | // Grey
89 | $list-grey: #fafafa, #f5f5f5, #eeeeee, #e0e0e0, #bdbdbd,
90 | #9e9e9e, #757575, #616161, #424242, #212121,
91 | #000000;
92 |
93 | // Blue Grey
94 | $list-blue-grey: #eceff1, #cfd8dc, #b0bec5, #90a4ae, #78909c,
95 | #607d8b, #546e7a, #455a64, #37474f, #263238;
96 |
97 |
98 |
99 | // Definitions
100 | // --------------------------------------------------------------------------------
101 |
102 | // Red
103 | $red: nth($list-red, 6);
104 |
105 | $red-50: nth($list-red, 1);
106 | $red-100: nth($list-red, 2);
107 | $red-200: nth($list-red, 3);
108 | $red-300: nth($list-red, 4);
109 | $red-400: nth($list-red, 5);
110 | $red-500: nth($list-red, 6);
111 | $red-600: nth($list-red, 7);
112 | $red-700: nth($list-red, 8);
113 | $red-800: nth($list-red, 9);
114 | $red-900: nth($list-red, 10);
115 | $red-A100: nth($list-red, 11);
116 | $red-A200: nth($list-red, 12);
117 | $red-A400: nth($list-red, 13);
118 | $red-A700: nth($list-red, 14);
119 |
120 |
121 | // Pink
122 | $pink: nth($list-pink, 6);
123 |
124 | $pink-50: nth($list-pink, 1);
125 | $pink-100: nth($list-pink, 2);
126 | $pink-200: nth($list-pink, 3);
127 | $pink-300: nth($list-pink, 4);
128 | $pink-400: nth($list-pink, 5);
129 | $pink-500: nth($list-pink, 6);
130 | $pink-600: nth($list-pink, 7);
131 | $pink-700: nth($list-pink, 8);
132 | $pink-800: nth($list-pink, 9);
133 | $pink-900: nth($list-pink, 10);
134 | $pink-A100: nth($list-pink, 11);
135 | $pink-A200: nth($list-pink, 12);
136 | $pink-A400: nth($list-pink, 13);
137 | $pink-A700: nth($list-pink, 14);
138 |
139 |
140 | // Purple
141 | $purple: nth($list-purple, 6);
142 |
143 | $purple-50: nth($list-purple, 1);
144 | $purple-100: nth($list-purple, 2);
145 | $purple-200: nth($list-purple, 3);
146 | $purple-300: nth($list-purple, 4);
147 | $purple-400: nth($list-purple, 5);
148 | $purple-500: nth($list-purple, 6);
149 | $purple-600: nth($list-purple, 7);
150 | $purple-700: nth($list-purple, 8);
151 | $purple-800: nth($list-purple, 9);
152 | $purple-900: nth($list-purple, 10);
153 | $purple-A100: nth($list-purple, 11);
154 | $purple-A200: nth($list-purple, 12);
155 | $purple-A400: nth($list-purple, 13);
156 | $purple-A700: nth($list-purple, 14);
157 |
158 |
159 | // Deep Purple
160 | $deep-purple: nth($list-deep-purple, 6);
161 |
162 | $deep-purple-50: nth($list-deep-purple, 1);
163 | $deep-purple-100: nth($list-deep-purple, 2);
164 | $deep-purple-200: nth($list-deep-purple, 3);
165 | $deep-purple-300: nth($list-deep-purple, 4);
166 | $deep-purple-400: nth($list-deep-purple, 5);
167 | $deep-purple-500: nth($list-deep-purple, 6);
168 | $deep-purple-600: nth($list-deep-purple, 7);
169 | $deep-purple-700: nth($list-deep-purple, 8);
170 | $deep-purple-800: nth($list-deep-purple, 9);
171 | $deep-purple-900: nth($list-deep-purple, 10);
172 | $deep-purple-A100: nth($list-deep-purple, 11);
173 | $deep-purple-A200: nth($list-deep-purple, 12);
174 | $deep-purple-A400: nth($list-deep-purple, 13);
175 | $deep-purple-A700: nth($list-deep-purple, 14);
176 |
177 |
178 | // Indigo
179 | $indigo: nth($list-indigo, 6);
180 |
181 | $indigo-50: nth($list-indigo, 1);
182 | $indigo-100: nth($list-indigo, 2);
183 | $indigo-200: nth($list-indigo, 3);
184 | $indigo-300: nth($list-indigo, 4);
185 | $indigo-400: nth($list-indigo, 5);
186 | $indigo-500: nth($list-indigo, 6);
187 | $indigo-600: nth($list-indigo, 7);
188 | $indigo-700: nth($list-indigo, 8);
189 | $indigo-800: nth($list-indigo, 9);
190 | $indigo-900: nth($list-indigo, 10);
191 | $indigo-A100: nth($list-indigo, 11);
192 | $indigo-A200: nth($list-indigo, 12);
193 | $indigo-A400: nth($list-indigo, 13);
194 | $indigo-A700: nth($list-indigo, 14);
195 |
196 |
197 | // Blue
198 | $blue: nth($list-blue, 6);
199 |
200 | $blue-50: nth($list-blue, 1);
201 | $blue-100: nth($list-blue, 2);
202 | $blue-200: nth($list-blue, 3);
203 | $blue-300: nth($list-blue, 4);
204 | $blue-400: nth($list-blue, 5);
205 | $blue-500: nth($list-blue, 6);
206 | $blue-600: nth($list-blue, 7);
207 | $blue-700: nth($list-blue, 8);
208 | $blue-800: nth($list-blue, 9);
209 | $blue-900: nth($list-blue, 10);
210 | $blue-A100: nth($list-blue, 11);
211 | $blue-A200: nth($list-blue, 12);
212 | $blue-A400: nth($list-blue, 13);
213 | $blue-A700: nth($list-blue, 14);
214 |
215 |
216 | // Light Blue
217 | $light-blue: nth($list-light-blue, 6);
218 |
219 | $light-blue-50: nth($list-light-blue, 1);
220 | $light-blue-100: nth($list-light-blue, 2);
221 | $light-blue-200: nth($list-light-blue, 3);
222 | $light-blue-300: nth($list-light-blue, 4);
223 | $light-blue-400: nth($list-light-blue, 5);
224 | $light-blue-500: nth($list-light-blue, 6);
225 | $light-blue-600: nth($list-light-blue, 7);
226 | $light-blue-700: nth($list-light-blue, 8);
227 | $light-blue-800: nth($list-light-blue, 9);
228 | $light-blue-900: nth($list-light-blue, 10);
229 | $light-blue-A100: nth($list-light-blue, 11);
230 | $light-blue-A200: nth($list-light-blue, 12);
231 | $light-blue-A400: nth($list-light-blue, 13);
232 | $light-blue-A700: nth($list-light-blue, 14);
233 |
234 |
235 | // Cyan
236 | $cyan: nth($list-cyan, 6);
237 |
238 | $cyan-50: nth($list-cyan, 1);
239 | $cyan-100: nth($list-cyan, 2);
240 | $cyan-200: nth($list-cyan, 3);
241 | $cyan-300: nth($list-cyan, 4);
242 | $cyan-400: nth($list-cyan, 5);
243 | $cyan-500: nth($list-cyan, 6);
244 | $cyan-600: nth($list-cyan, 7);
245 | $cyan-700: nth($list-cyan, 8);
246 | $cyan-800: nth($list-cyan, 9);
247 | $cyan-900: nth($list-cyan, 10);
248 | $cyan-A100: nth($list-cyan, 11);
249 | $cyan-A200: nth($list-cyan, 12);
250 | $cyan-A400: nth($list-cyan, 13);
251 | $cyan-A700: nth($list-cyan, 14);
252 |
253 |
254 | // Teal
255 | $teal: nth($list-teal, 6);
256 |
257 | $teal-50: nth($list-teal, 1);
258 | $teal-100: nth($list-teal, 2);
259 | $teal-200: nth($list-teal, 3);
260 | $teal-300: nth($list-teal, 4);
261 | $teal-400: nth($list-teal, 5);
262 | $teal-500: nth($list-teal, 6);
263 | $teal-600: nth($list-teal, 7);
264 | $teal-700: nth($list-teal, 8);
265 | $teal-800: nth($list-teal, 9);
266 | $teal-900: nth($list-teal, 10);
267 | $teal-A100: nth($list-teal, 11);
268 | $teal-A200: nth($list-teal, 12);
269 | $teal-A400: nth($list-teal, 13);
270 | $teal-A700: nth($list-teal, 14);
271 |
272 |
273 | // Green
274 | $green: nth($list-green, 6);
275 |
276 | $green-50: nth($list-green, 1);
277 | $green-100: nth($list-green, 2);
278 | $green-200: nth($list-green, 3);
279 | $green-300: nth($list-green, 4);
280 | $green-400: nth($list-green, 5);
281 | $green-500: nth($list-green, 6);
282 | $green-600: nth($list-green, 7);
283 | $green-700: nth($list-green, 8);
284 | $green-800: nth($list-green, 9);
285 | $green-900: nth($list-green, 10);
286 | $green-A100: nth($list-green, 11);
287 | $green-A200: nth($list-green, 12);
288 | $green-A400: nth($list-green, 13);
289 | $green-A700: nth($list-green, 14);
290 |
291 |
292 | // Light Green
293 | $light-green: nth($list-light-green, 6);
294 |
295 | $light-green-50: nth($list-light-green, 1);
296 | $light-green-100: nth($list-light-green, 2);
297 | $light-green-200: nth($list-light-green, 3);
298 | $light-green-300: nth($list-light-green, 4);
299 | $light-green-400: nth($list-light-green, 5);
300 | $light-green-500: nth($list-light-green, 6);
301 | $light-green-600: nth($list-light-green, 7);
302 | $light-green-700: nth($list-light-green, 8);
303 | $light-green-800: nth($list-light-green, 9);
304 | $light-green-900: nth($list-light-green, 10);
305 | $light-green-A100: nth($list-light-green, 11);
306 | $light-green-A200: nth($list-light-green, 12);
307 | $light-green-A400: nth($list-light-green, 13);
308 | $light-green-A700: nth($list-light-green, 14);
309 |
310 |
311 | // Lime
312 | $lime: nth($list-lime, 6);
313 |
314 | $lime-50: nth($list-lime, 1);
315 | $lime-100: nth($list-lime, 2);
316 | $lime-200: nth($list-lime, 3);
317 | $lime-300: nth($list-lime, 4);
318 | $lime-400: nth($list-lime, 5);
319 | $lime-500: nth($list-lime, 6);
320 | $lime-600: nth($list-lime, 7);
321 | $lime-700: nth($list-lime, 8);
322 | $lime-800: nth($list-lime, 9);
323 | $lime-900: nth($list-lime, 10);
324 | $lime-A100: nth($list-lime, 11);
325 | $lime-A200: nth($list-lime, 12);
326 | $lime-A400: nth($list-lime, 13);
327 | $lime-A700: nth($list-lime, 14);
328 |
329 |
330 | //Yellow
331 | $yellow: nth($list-yellow, 6);
332 |
333 | $yellow-50: nth($list-yellow, 1);
334 | $yellow-100: nth($list-yellow, 2);
335 | $yellow-200: nth($list-yellow, 3);
336 | $yellow-300: nth($list-yellow, 4);
337 | $yellow-400: nth($list-yellow, 5);
338 | $yellow-500: nth($list-yellow, 6);
339 | $yellow-600: nth($list-yellow, 7);
340 | $yellow-700: nth($list-yellow, 8);
341 | $yellow-800: nth($list-yellow, 9);
342 | $yellow-900: nth($list-yellow, 10);
343 | $yellow-A100: nth($list-yellow, 11);
344 | $yellow-A200: nth($list-yellow, 12);
345 | $yellow-A400: nth($list-yellow, 13);
346 | $yellow-A700: nth($list-yellow, 14);
347 |
348 |
349 | // Amber
350 | $amber: nth($list-amber, 6);
351 |
352 | $amber-50: nth($list-amber, 1);
353 | $amber-100: nth($list-amber, 2);
354 | $amber-200: nth($list-amber, 3);
355 | $amber-300: nth($list-amber, 4);
356 | $amber-400: nth($list-amber, 5);
357 | $amber-500: nth($list-amber, 6);
358 | $amber-600: nth($list-amber, 7);
359 | $amber-700: nth($list-amber, 8);
360 | $amber-800: nth($list-amber, 9);
361 | $amber-900: nth($list-amber, 10);
362 | $amber-A100: nth($list-amber, 11);
363 | $amber-A200: nth($list-amber, 12);
364 | $amber-A400: nth($list-amber, 13);
365 | $amber-A700: nth($list-amber, 14);
366 |
367 |
368 | // Orange
369 | $orange: nth($list-orange, 6);
370 |
371 | $orange-50: nth($list-orange, 1);
372 | $orange-100: nth($list-orange, 2);
373 | $orange-200: nth($list-orange, 3);
374 | $orange-300: nth($list-orange, 4);
375 | $orange-400: nth($list-orange, 5);
376 | $orange-500: nth($list-orange, 6);
377 | $orange-600: nth($list-orange, 7);
378 | $orange-700: nth($list-orange, 8);
379 | $orange-800: nth($list-orange, 9);
380 | $orange-900: nth($list-orange, 10);
381 | $orange-A100: nth($list-orange, 11);
382 | $orange-A200: nth($list-orange, 12);
383 | $orange-A400: nth($list-orange, 13);
384 | $orange-A700: nth($list-orange, 14);
385 |
386 |
387 | // Deep Orange
388 | $deep-orange: nth($list-deep-orange, 6);
389 |
390 | $deep-orange-50: nth($list-deep-orange, 1);
391 | $deep-orange-100: nth($list-deep-orange, 2);
392 | $deep-orange-200: nth($list-deep-orange, 3);
393 | $deep-orange-300: nth($list-deep-orange, 4);
394 | $deep-orange-400: nth($list-deep-orange, 5);
395 | $deep-orange-500: nth($list-deep-orange, 6);
396 | $deep-orange-600: nth($list-deep-orange, 7);
397 | $deep-orange-700: nth($list-deep-orange, 8);
398 | $deep-orange-800: nth($list-deep-orange, 9);
399 | $deep-orange-900: nth($list-deep-orange, 10);
400 | $deep-orange-A100: nth($list-deep-orange, 11);
401 | $deep-orange-A200: nth($list-deep-orange, 12);
402 | $deep-orange-A400: nth($list-deep-orange, 13);
403 | $deep-orange-A700: nth($list-deep-orange, 14);
404 |
405 |
406 | // Brown
407 | $brown: nth($list-brown, 6);
408 |
409 | $brown-50: nth($list-brown, 1);
410 | $brown-100: nth($list-brown, 2);
411 | $brown-200: nth($list-brown, 3);
412 | $brown-300: nth($list-brown, 4);
413 | $brown-400: nth($list-brown, 5);
414 | $brown-500: nth($list-brown, 6);
415 | $brown-600: nth($list-brown, 7);
416 | $brown-700: nth($list-brown, 8);
417 | $brown-800: nth($list-brown, 9);
418 | $brown-900: nth($list-brown, 10);
419 |
420 |
421 | // Grey
422 | $grey: nth($list-grey, 6);
423 |
424 | $grey-50: nth($list-grey, 1);
425 | $grey-100: nth($list-grey, 2);
426 | $grey-200: nth($list-grey, 3);
427 | $grey-300: nth($list-grey, 4);
428 | $grey-400: nth($list-grey, 5);
429 | $grey-500: nth($list-grey, 6);
430 | $grey-600: nth($list-grey, 7);
431 | $grey-700: nth($list-grey, 8);
432 | $grey-800: nth($list-grey, 9);
433 | $grey-900: nth($list-grey, 10);
434 | $grey-1000: nth($list-grey, 11);
435 |
436 |
437 | // Blue Grey
438 | $blue-grey: nth($list-blue-grey, 6);
439 |
440 | $blue-grey-50: nth($list-blue-grey, 1);
441 | $blue-grey-100: nth($list-blue-grey, 2);
442 | $blue-grey-200: nth($list-blue-grey, 3);
443 | $blue-grey-300: nth($list-blue-grey, 4);
444 | $blue-grey-400: nth($list-blue-grey, 5);
445 | $blue-grey-500: nth($list-blue-grey, 6);
446 | $blue-grey-600: nth($list-blue-grey, 7);
447 | $blue-grey-700: nth($list-blue-grey, 8);
448 | $blue-grey-800: nth($list-blue-grey, 9);
449 | $blue-grey-900: nth($list-blue-grey, 10);
450 |
451 |
452 | // UI Color Application
453 | // --------------------------------------------------------------------------------
454 |
455 | // Typography
456 | $ui-display-4: $grey-600;
457 | $ui-display-3: $grey-600;
458 | $ui-display-2: $grey-600;
459 | $ui-display-1: $grey-600;
460 | $ui-headline: $grey-900;
461 | $ui-title: $grey-900;
462 | $ui-subhead-1: $grey-900;
463 | $ui-body-2: $grey-900;
464 | $ui-body-1: $grey-900;
465 | $ui-caption: $grey-600;
466 | $ui-menu: $grey-900;
467 | $ui-button: $grey-900;
468 |
--------------------------------------------------------------------------------
/_src/scss/partials/_reset.scss:
--------------------------------------------------------------------------------
1 | *,
2 | *:before,
3 | *:after {
4 | box-sizing: border-box;
5 | }
6 | h1,
7 | h2,
8 | h3,
9 | h4,
10 | h5,
11 | h6,
12 | button,
13 | ul,
14 | ol,
15 | li,
16 | details,
17 | summary,
18 | blockquote,
19 | q,
20 | p {
21 | margin: 0;
22 | }
23 |
24 | ul,
25 | ol,
26 | li,
27 | blockquote {
28 | padding: 0;
29 | }
30 |
31 | body {
32 | text-rendering: optimizeLegibility;
33 | font-smoothing: antialiased;
34 | font-variant-ligatures: common-ligatures;
35 | scroll-behavior: smooth;
36 | }
37 |
38 | input[type="range"] {
39 | -webkit-appearance: none; // Hides the slider so that custom slider can be made
40 | // width: 100%; // Specific width is required for Firefox.
41 | background: transparent; // Otherwise white in Chrome
42 | }
43 |
44 | input[type="range"]::-webkit-slider-thumb {
45 | -webkit-appearance: none;
46 | }
47 |
48 | input[type="range"]::-ms-track {
49 | width: 100%;
50 | cursor: pointer;
51 |
52 | // Hides the slider so custom styles can be added
53 | background: transparent;
54 | border-color: transparent;
55 | color: transparent;
56 | }
57 |
--------------------------------------------------------------------------------
/_src/scss/style.scss:
--------------------------------------------------------------------------------
1 | // Charset =============================================================
2 | @charset "UTF-8";
3 |
4 | // Normalize ===========================================================
5 | @import "partials/normalize";
6 | @import "partials/reset";
7 | @import "partials/extensions";
8 | @import "partials/functions";
9 | @import "partials/palette";
10 |
11 | // Variables ===========================================================
12 | $tablet: 40em;
13 | $desktop: 60em;
14 |
15 | $space-small: 2.5rem;
16 | $space-large: 5rem;
17 |
18 | :root {
19 | --radius-small: 0.25em;
20 | --radius-medium: 0.5em;
21 | --radius-large: 1em;
22 | --transition: 0.35s;
23 | --transition-hover: 0.1s;
24 | --duration: 4s;
25 |
26 | --black: #16161d;
27 | --black-a: rgba(22, 22, 29, 0.15);
28 | --gray: #909099;
29 |
30 | --blue: #1e90ff;
31 | --blue-a: rgb(30, 144, 255, 0.3);
32 | --blue-dark: #005cb8;
33 | --blue-light: #52c3fb;
34 | --purple: #a029de;
35 | --purple-dark: #5f267d;
36 | --purple-muted: #a377d2;
37 | --white: #fff;
38 | --offwhite: #ccc;
39 |
40 | --sky-100: #3b2f4a;
41 | --sky-150: #302944;
42 | --sky-200: #1f1f3a;
43 | --sky-300: #16161d;
44 |
45 | --background-gradient: radial-gradient(
46 | circle at center bottom,
47 | var(--sky-100),
48 | var(--sky-200),
49 | var(--sky-300)
50 | );
51 |
52 | // Light Mode
53 | --background: var(--white);
54 | --text-color: var(--black);
55 | --text-color-a: var(--gray);
56 | --link-color: var(--blue);
57 | --link-color-hover: var(--blue);
58 | --link-color-visited: var(--purple);
59 | --link-color-visited-hover: var(--purple);
60 | }
61 |
62 | // Structual styles ====================================================
63 | body {
64 | position: relative;
65 | font: 100%/1.5 Nunito, sans-serif;
66 | color: var(--text-color);
67 | overflow-x: hidden;
68 | }
69 |
70 | .header-wrapper {
71 | max-width: 35em;
72 | margin: 0 auto;
73 | text-align: center;
74 | padding-top: 1.5em;
75 |
76 | @media (min-width: $tablet) {
77 | max-width: 42em;
78 | }
79 |
80 | @media (min-width: $desktop) {
81 | max-width: 50em;
82 | }
83 | }
84 |
85 | .main-wrapper {
86 | margin: 1.5em auto 0;
87 | max-width: 35em;
88 |
89 | @media (min-width: $tablet) {
90 | margin: 0 auto;
91 | max-width: 25em;
92 | padding: 2.5em 0;
93 | }
94 | }
95 |
96 | .container {
97 | position: relative;
98 | padding: 2rem;
99 |
100 | .header-wrapper &,
101 | .footer-wrapper & {
102 | padding: 1.5em 0;
103 | margin: 0 1.5em;
104 | }
105 |
106 | .contact-wrapper & {
107 | text-align: center;
108 | margin: 1.5rem auto;
109 | padding: 0 1.5rem;
110 |
111 | @media (min-width: $tablet) {
112 | max-width: 42em;
113 | }
114 |
115 | @media (min-width: $desktop) {
116 | max-width: 50em;
117 | }
118 | }
119 | }
120 |
121 | // Typography ==========================================================
122 | h1,
123 | h2 {
124 | font-weight: 400;
125 | line-height: 1.2;
126 | }
127 |
128 | h1 {
129 | font-size: 1.5em;
130 |
131 | @media (min-width: $desktop) {
132 | font-size: 2em;
133 | }
134 | }
135 | h2 {
136 | @extend %no-select;
137 | display: block;
138 | cursor: default;
139 | text-align: center;
140 | font-size: 1.25em;
141 | opacity: 0.75;
142 | }
143 |
144 | a {
145 | text-decoration: none;
146 | color: var(--text-color);
147 | }
148 |
149 | img {
150 | @extend %no-drag;
151 | @extend %no-select;
152 | }
153 |
154 | .outline {
155 | position: relative;
156 | color: var(--text-color);
157 | border-radius: var(--radius-large);
158 |
159 | &:before {
160 | display: block;
161 | content: "";
162 | position: absolute;
163 | top: 50%;
164 | left: 0;
165 | right: 0;
166 | height: 1px;
167 | background: var(--black-a);
168 | }
169 |
170 | span {
171 | position: relative;
172 | display: inline-block;
173 | z-index: 10;
174 | background: var(--background);
175 | padding: 0.5em 1em;
176 | }
177 | }
178 |
179 | // Header ==============================================================
180 | header {
181 | .container {
182 | text-align: center;
183 |
184 | @media (min-width: $tablet) {
185 | display: flex;
186 | align-items: center;
187 | text-align: left;
188 | }
189 | }
190 |
191 | h1 {
192 | @media (min-width: $tablet) {
193 | flex: 1;
194 | align-items: center;
195 | }
196 | }
197 |
198 | br {
199 | @media (max-width: $tablet) {
200 | display: none;
201 | }
202 | }
203 | }
204 |
205 | .me {
206 | width: 6em;
207 | height: 6em;
208 | border-radius: 50%;
209 | margin: 0 0 0.5rem 0;
210 |
211 | @media (min-width: $tablet) {
212 | width: 7em;
213 | height: 7em;
214 | margin: 0 1.5rem 0 0;
215 | }
216 |
217 | @media (min-width: $desktop) {
218 | width: 8em;
219 | height: 8em;
220 | }
221 | }
222 |
223 | // Jobs ================================================================
224 | .job-wrapper {
225 | max-width: 40em;
226 | margin: 0 auto 0;
227 | text-align: center;
228 |
229 | .outline {
230 | margin: 0 1.5em;
231 | border-radius: var(--radius-large);
232 | padding: 1.5em;
233 | border-color: rgba(128, 128, 128, 0.3);
234 | }
235 |
236 | p {
237 | font-size: 1em;
238 | margin-top: 1em;
239 | }
240 |
241 | a {
242 | display: inline-block;
243 | margin-top: 1em;
244 | font-weight: bold;
245 | color: var(--link-color);
246 | padding: 0.5em 1.5em;
247 | border-radius: var(--radius-medium);
248 | transition: background var(--transition), color var(--transition),
249 | box-shadow var(--transition);
250 | box-shadow: inset 0 0 0 0.1em var(--blue-a), 0 0 0 0 transparent;
251 |
252 | &:hover {
253 | background: var(--blue-a);
254 | color: var(--link-color-hover);
255 | box-shadow: inset 0 0 0 0.1em transparent, 0 0 0 0.25em var(--blue-a);
256 | }
257 | }
258 | }
259 |
260 | // List ================================================================
261 | ul {
262 | @extend %no-select;
263 | font-size: 1.2em;
264 | }
265 |
266 | li {
267 | position: relative;
268 | list-style: none;
269 | }
270 |
271 | // Links ===============================================================
272 | .project-link,
273 | .contact-link {
274 | display: block;
275 | position: relative;
276 | cursor: pointer;
277 | padding: 1.5rem 0;
278 |
279 | strong {
280 | color: var(--link-color);
281 | transition: color var(--transition);
282 | }
283 |
284 | &:hover {
285 | strong {
286 | color: var(--link-color-hover);
287 | }
288 | }
289 |
290 | &:visited {
291 | strong {
292 | color: var(--link-color-visited);
293 | }
294 |
295 | &:hover {
296 | strong {
297 | color: var(--link-color-visited-hover);
298 | }
299 | }
300 | }
301 |
302 | @media (min-width: $tablet) {
303 | transition: background-color var(--transition);
304 | border-radius: var(--radius-medium);
305 | margin: 1rem 0;
306 | padding: 1.5rem;
307 |
308 | &:hover {
309 | background: var(--blue-a);
310 | transition-duration: var(--transition-hover);
311 | }
312 | }
313 | }
314 |
315 | .project-link {
316 | display: flex;
317 | align-items: center;
318 |
319 | .project:nth-child(odd) & {
320 | flex-direction: row-reverse;
321 | }
322 | }
323 |
324 | // Screenshots =========================================================
325 | $space: 5em;
326 |
327 | .screenshot-wrapper {
328 | min-width: 50%;
329 | max-width: 50%;
330 | height: auto;
331 | margin: 0 1.5rem 0 0;
332 | transition: transform var(--transition);
333 | transform: scale(0.9);
334 |
335 | .project:nth-child(odd) & {
336 | margin: 0 0 0 1.5rem;
337 | }
338 |
339 | .project-link:hover & {
340 | transform: scale(1);
341 | transition-duration: var(--transition-hover);
342 | }
343 |
344 | @media (min-width: $tablet) {
345 | position: absolute;
346 | z-index: 10;
347 | width: 12em;
348 | height: 9em;
349 |
350 | .project:nth-child(odd) & {
351 | margin: 0;
352 | }
353 | }
354 | }
355 |
356 | .screenshot {
357 | width: 100%;
358 | height: auto;
359 | border-radius: var(--radius-small);
360 | box-shadow: 0 2.5em 5em var(--offwhite);
361 | box-shadow: 0 2em 2em -1em var(--offwhite);
362 |
363 | @media (min-width: $tablet) {
364 | display: block;
365 | width: 100%;
366 | height: auto;
367 | transition: box-shadow var(--transition);
368 | }
369 | }
370 |
371 | .project-link:hover .screenshot {
372 | box-shadow: 0 1em 2em var(--offwhite);
373 | }
374 |
375 | .line {
376 | @media (min-width: $tablet) {
377 | position: absolute;
378 | content: "";
379 | width: $space * 2;
380 | height: 1px;
381 | background: var(--text-color);
382 | opacity: 0.25;
383 | pointer-events: none;
384 | top: 50%;
385 | transition: opacity var(--transition);
386 |
387 | .project-link:hover & {
388 | opacity: 1;
389 | }
390 | }
391 | }
392 |
393 | // Left side -----------------------------------------------------------
394 | $spread: 1.5em;
395 |
396 | .project {
397 | &:nth-child(odd) {
398 | .line {
399 | right: calc(100% + 0.5em);
400 | transform-origin: center right;
401 | }
402 |
403 | .screenshot-wrapper {
404 | @media (min-width: $tablet) {
405 | right: calc(100% + #{$space-small});
406 | }
407 | @media (min-width: $desktop) {
408 | right: calc(100% + #{$space-large});
409 | }
410 |
411 | .screenshot {
412 | transform: rotate(5deg);
413 | }
414 | }
415 | }
416 |
417 | @media (min-width: $tablet) {
418 | &:nth-child(1) {
419 | .line {
420 | transform: rotate(6deg);
421 | }
422 | .screenshot-wrapper {
423 | top: -40%;
424 |
425 | .screenshot {
426 | transform: rotate(4deg);
427 | }
428 | }
429 | }
430 | &:nth-child(3) {
431 | .line {
432 | transform: rotate(14deg);
433 | }
434 | .screenshot-wrapper {
435 | top: -45%;
436 |
437 | .screenshot {
438 | transform: rotate(-2deg);
439 | }
440 | }
441 | }
442 | &:nth-child(5) {
443 | .line {
444 | transform: rotate(-5deg);
445 | }
446 | .screenshot-wrapper {
447 | top: -35%;
448 |
449 | .screenshot {
450 | transform: rotate(8deg);
451 | }
452 | }
453 | }
454 | &:nth-child(7) {
455 | .line {
456 | transform: rotate(5deg);
457 | }
458 | .screenshot-wrapper {
459 | top: -20%;
460 |
461 | .screenshot {
462 | transform: rotate(-8deg);
463 | }
464 | }
465 | }
466 | }
467 | }
468 |
469 | // Right side ----------------------------------------------------------
470 | .project {
471 | &:nth-child(even) {
472 | .line {
473 | left: calc(100% + 0.5em);
474 | transform-origin: center left;
475 | }
476 |
477 | .screenshot-wrapper {
478 | @media (min-width: $tablet) {
479 | left: calc(100% + #{$space-small});
480 | }
481 | @media (min-width: $desktop) {
482 | left: calc(100% + #{$space-large});
483 | }
484 |
485 | .screenshot {
486 | transform: rotate(-5deg);
487 | }
488 | }
489 | }
490 |
491 | @media (min-width: $tablet) {
492 | &:nth-child(even) {
493 | .line {
494 | transform-origin: left center;
495 | }
496 |
497 | .screenshot img {
498 | transform: rotate(-5deg);
499 | }
500 | }
501 |
502 | &:nth-child(2) {
503 | .line {
504 | transform: rotate(-25deg);
505 | }
506 | .screenshot-wrapper {
507 | top: -80%;
508 |
509 | .screenshot {
510 | transform: rotate(-8deg);
511 | }
512 | }
513 | }
514 | &:nth-child(4) {
515 | .line {
516 | transform: rotate(-25deg);
517 | }
518 | .screenshot-wrapper {
519 | top: -60%;
520 |
521 | .screenshot {
522 | transform: rotate(2deg);
523 | }
524 | }
525 | }
526 | &:nth-child(6) {
527 | .line {
528 | transform: rotate(-18deg);
529 | }
530 | .screenshot-wrapper {
531 | top: -70%;
532 |
533 | .screenshot {
534 | transform: rotate(8deg);
535 | }
536 | }
537 | }
538 | }
539 | }
540 |
541 | // Contact =========================================================
542 | .contacts {
543 | @media (min-width: $tablet) {
544 | display: flex;
545 | flex-wrap: wrap;
546 | border: none;
547 | }
548 | }
549 |
550 | .contact {
551 | flex: 1 0 50%;
552 | }
553 |
554 | .contact-link {
555 | display: block;
556 | padding: 1rem 1.5rem;
557 | }
558 |
559 | .email-link {
560 | cursor: text;
561 |
562 | strong {
563 | user-select: none;
564 | }
565 |
566 | input {
567 | background: transparent;
568 | text-align: center;
569 | border: 0;
570 | width: 11em;
571 |
572 | &:focus {
573 | outline: 0;
574 | border-radius: var(--radius-small);
575 | }
576 | }
577 | }
578 |
579 | // Footer ===============================================================
580 | .footer-wrapper {
581 | text-align: center;
582 | font-size: smaller;
583 | text-align: center;
584 | }
585 |
586 | .copyright {
587 | @extend %no-select;
588 | cursor: default;
589 | margin: 0 0 1.5rem;
590 | }
591 |
--------------------------------------------------------------------------------
/gulpfile.js:
--------------------------------------------------------------------------------
1 | const gulp = require("gulp");
2 | const git = require("gulp-git");
3 | const del = require("del");
4 | const slim = require("gulp-slim");
5 | const htmlmin = require("gulp-htmlmin");
6 | const sass = require("gulp-sass");
7 | const autoprefixer = require("gulp-autoprefixer");
8 | const cssnano = require("gulp-cssnano");
9 | const browserSync = require("browser-sync").create();
10 | const rename = require("gulp-rename");
11 |
12 | // Resize screenshots
13 | var gm = require("gulp-gm");
14 | var newer = require("gulp-newer");
15 | var imagemin = require("gulp-imagemin");
16 |
17 | gulp.task("resize", function () {
18 | gulp
19 | .src("_img/screenshots/*.*")
20 | .pipe(newer("small"))
21 | .pipe(
22 | gm(function (gmfile) {
23 | gmfile.setFormat("jpg").quality(90);
24 | return gmfile.resize(60, 45);
25 | })
26 | )
27 | .pipe(imagemin())
28 | .pipe(gulp.dest("small"));
29 | });
30 |
31 | // Repos as folders ----------------------------------------------------
32 | let repos = [
33 | "antiweather",
34 | "brain",
35 | "clippy",
36 | "csscreatures",
37 | "csspiechart",
38 | "flexplorer",
39 | "gradients",
40 | "image-effects",
41 | "scales",
42 | // "soteria",
43 | "trumptalk",
44 | "usa-css",
45 | // "usa-2200", // problem being this is built in parcel
46 | "ztext",
47 | ];
48 |
49 | gulp.task("clean", () => {
50 | return del(repos);
51 | });
52 |
53 | gulp.task("clone", async () => {
54 | repos.forEach((repo) => {
55 | let git_url = "https://github.com/bennettfeely/" + repo;
56 |
57 | git.clone(git_url, (err) => {
58 | if (err) throw err;
59 | });
60 | });
61 | });
62 |
63 | gulp.task("build", gulp.series("clean", "clone"));
64 |
65 | // Homepage ------------------------------------------------------------
66 | // gulp.task("sync", () => {
67 | // console.log("sync");
68 |
69 | // return browserSync.init({
70 | // server: {
71 | // baseDir: "",
72 | // },
73 | // });
74 | // });
75 |
76 | gulp.task("slim", () => {
77 | return gulp
78 | .src("_src/*.slim")
79 | .pipe(
80 | slim({
81 | pretty: true,
82 | })
83 | )
84 | .pipe(
85 | htmlmin({
86 | collapseWhitespace: true,
87 | removeComments: true,
88 | minifyCSS: true,
89 | minifyJS: true,
90 | })
91 | )
92 | .pipe(gulp.dest("./"))
93 | .pipe(
94 | browserSync.reload({
95 | stream: true,
96 | })
97 | );
98 | });
99 |
100 | gulp.task("scss", () => {
101 | return gulp
102 | .src("_src/scss/*.scss")
103 | .pipe(sass())
104 | .on("error", sass.logError)
105 | .pipe(
106 | autoprefixer({
107 | browsers: ["last 2 versions"],
108 | cascade: false,
109 | })
110 | )
111 | .pipe(cssnano())
112 | .pipe(
113 | rename(function (path) {
114 | path.basename += ".min";
115 | path.extname = ".css";
116 | })
117 | )
118 | .pipe(gulp.dest("./"))
119 | .pipe(
120 | browserSync.reload({
121 | stream: true,
122 | })
123 | );
124 | });
125 |
126 | gulp.task("default", () => {
127 | browserSync.init({
128 | server: {
129 | baseDir: "./",
130 | },
131 | });
132 |
133 | gulp.watch(["_src/*.slim"], gulp.series(["slim"]));
134 | gulp.watch(["_src/scss/*.scss"], gulp.series(["scss"]));
135 | });
136 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
Bennett FeelyRecent Projects
ztext.js, 3D typography for any website and any font
CSS Creatures, make a creature from your tweet
Copy Paste List, collection of lists in plain text
USA.css, the most American CSS stylesheet
CSS Pie Chart, generate pie charts with conic gradients
Clippy, a tool for making CSS clip paths
Antiweather, see what the weather is like on the other side of the world
CSS Image Effects, using blend modes for complex image effects
CSS Gradients, using blend modes with background gradients
Flexplorer, learn how flexbox works with lists
CSS Scales, accessible CSS gradients
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "netlify",
3 | "version": "1.0.0",
4 | "description": "Compiling repos for live demos on https://bennettfeely.com",
5 | "main": "gulpfile.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git+https://github.com/bennettfeely/netlify.git"
12 | },
13 | "author": "",
14 | "license": "ISC",
15 | "bugs": {
16 | "url": "https://github.com/bennettfeely/netlify/issues"
17 | },
18 | "homepage": "https://github.com/bennettfeely/netlify#readme",
19 | "dependencies": {
20 | "browser-sync": "^2.26.12",
21 | "del": "^6.0.0",
22 | "gulp": "^4.0.2",
23 | "gulp-autoprefixer": "^7.0.1",
24 | "gulp-cssnano": "^2.1.3",
25 | "gulp-gm": "0.0.9",
26 | "gulp-htmlmin": "^5.0.1",
27 | "gulp-newer": "^1.4.0",
28 | "gulp-rename": "^2.0.0",
29 | "gulp-sass": "^4.1.0",
30 | "gulp-scss": "^1.4.0",
31 | "gulp-slim": "^0.3.0"
32 | },
33 | "devDependencies": {
34 | "gulp-git": "^2.10.1",
35 | "gulp-image-resize": "^0.13.1",
36 | "gulp-imagemin": "^7.1.0"
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/style.min.css:
--------------------------------------------------------------------------------
1 | html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}*,:after,:before{box-sizing:border-box}blockquote,button,details,h1,h2,h3,h4,h5,h6,li,ol,p,q,summary,ul{margin:0}blockquote,li,ol,ul{padding:0}body{text-rendering:optimizeLegibility;font-smoothing:antialiased;font-variant-ligatures:common-ligatures;scroll-behavior:smooth}input[type=range]{-webkit-appearance:none;background:transparent}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none}input[type=range]::-ms-track{width:100%;cursor:pointer;background:transparent;border-color:transparent;color:transparent}.copyright,h2,img,ul{-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}img{-webkit-user-drag:none;-moz-user-drag:none;-ms-user-drag:none;user-drag:none}:root{--radius-small:0.25em;--radius-medium:0.5em;--radius-large:1em;--transition:0.35s;--transition-hover:0.1s;--duration:4s;--black:#16161d;--black-a:rgba(22,22,29,.15);--gray:#909099;--blue:#1e90ff;--blue-a:rgba(30,144,255,.3);--blue-dark:#005cb8;--blue-light:#52c3fb;--purple:#a029de;--purple-dark:#5f267d;--purple-muted:#a377d2;--white:#fff;--offwhite:#ccc;--sky-100:#3b2f4a;--sky-150:#302944;--sky-200:#1f1f3a;--sky-300:#16161d;--background-gradient:radial-gradient(circle at center bottom,var(--sky-100),var(--sky-200),var(--sky-300));--background:var(--white);--text-color:var(--black);--text-color-a:var(--gray);--link-color:var(--blue);--link-color-hover:var(--blue);--link-color-visited:var(--purple);--link-color-visited-hover:var(--purple)}body{position:relative;font:100%/1.5 Nunito,sans-serif;color:var(--text-color);overflow-x:hidden}.header-wrapper{max-width:35em;margin:0 auto;text-align:center;padding-top:1.5em}@media (min-width:40em){.header-wrapper{max-width:42em}}@media (min-width:60em){.header-wrapper{max-width:50em}}.main-wrapper{margin:1.5em auto 0;max-width:35em}@media (min-width:40em){.main-wrapper{margin:0 auto;max-width:25em;padding:2.5em 0}}.container{position:relative;padding:2rem}.footer-wrapper .container,.header-wrapper .container{padding:1.5em 0;margin:0 1.5em}.contact-wrapper .container{text-align:center;margin:1.5rem auto;padding:0 1.5rem}@media (min-width:40em){.contact-wrapper .container{max-width:42em}}@media (min-width:60em){.contact-wrapper .container{max-width:50em}}h1,h2{font-weight:400;line-height:1.2}h1{font-size:1.5em}@media (min-width:60em){h1{font-size:2em}}h2{display:block;cursor:default;text-align:center;font-size:1.25em;opacity:.75}a{text-decoration:none}.outline,a{color:var(--text-color)}.outline{position:relative;border-radius:var(--radius-large)}.outline:before{display:block;content:"";position:absolute;top:50%;left:0;right:0;height:1px;background:var(--black-a)}.outline span{position:relative;display:inline-block;z-index:1;background:var(--background);padding:.5em 1em}header .container{text-align:center}@media (min-width:40em){header .container{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;text-align:left}}@media (min-width:40em){header h1{-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center}}@media (max-width:40em){header br{display:none}}.me{width:6em;height:6em;border-radius:50%;margin:0 0 .5rem}@media (min-width:40em){.me{width:7em;height:7em;margin:0 1.5rem 0 0}}@media (min-width:60em){.me{width:8em;height:8em}}.job-wrapper{max-width:40em;margin:0 auto;text-align:center}.job-wrapper .outline{margin:0 1.5em;border-radius:var(--radius-large);padding:1.5em;border-color:hsla(0,0%,50%,.3)}.job-wrapper p{font-size:1em;margin-top:1em}.job-wrapper a{display:inline-block;margin-top:1em;font-weight:700;color:var(--link-color);padding:.5em 1.5em;border-radius:var(--radius-medium);transition:background var(--transition),color var(--transition),box-shadow var(--transition);box-shadow:inset 0 0 0 .1em var(--blue-a),0 0 0 0 transparent}.job-wrapper a:hover{background:var(--blue-a);color:var(--link-color-hover);box-shadow:inset 0 0 0 .1em transparent,0 0 0 .25em var(--blue-a)}ul{font-size:1.2em}li{position:relative;list-style:none}.contact-link,.project-link{display:block;position:relative;cursor:pointer;padding:1.5rem 0}.contact-link strong,.project-link strong{color:var(--link-color);transition:color var(--transition)}.contact-link:hover strong,.project-link:hover strong{color:var(--link-color-hover)}.contact-link:visited strong,.project-link:visited strong{color:var(--link-color-visited)}.contact-link:visited:hover strong,.project-link:visited:hover strong{color:var(--link-color-visited-hover)}@media (min-width:40em){.contact-link,.project-link{transition:background-color var(--transition);border-radius:var(--radius-medium);margin:1rem 0;padding:1.5rem}.contact-link:hover,.project-link:hover{background:var(--blue-a);transition-duration:var(--transition-hover)}}.project-link{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.project:nth-child(odd) .project-link{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.screenshot-wrapper{min-width:50%;max-width:50%;height:auto;margin:0 1.5rem 0 0;transition:transform var(--transition);transform:scale(.9)}.project:nth-child(odd) .screenshot-wrapper{margin:0 0 0 1.5rem}.project-link:hover .screenshot-wrapper{transform:scale(1);transition-duration:var(--transition-hover)}@media (min-width:40em){.screenshot-wrapper{position:absolute;z-index:1;width:12em;height:9em}.project:nth-child(odd) .screenshot-wrapper{margin:0}}.screenshot{width:100%;height:auto;border-radius:var(--radius-small);box-shadow:0 2.5em 5em var(--offwhite);box-shadow:0 2em 2em -1em var(--offwhite)}@media (min-width:40em){.screenshot{display:block;width:100%;height:auto;transition:box-shadow var(--transition)}}.project-link:hover .screenshot{box-shadow:0 1em 2em var(--offwhite)}@media (min-width:40em){.line{position:absolute;content:"";width:10em;height:1px;background:var(--text-color);opacity:.25;pointer-events:none;top:50%;transition:opacity var(--transition)}.project-link:hover .line{opacity:1}}.project:nth-child(odd) .line{right:calc(100% + .5em);transform-origin:center right}@media (min-width:40em){.project:nth-child(odd) .screenshot-wrapper{right:calc(100% + 2.5rem)}}@media (min-width:60em){.project:nth-child(odd) .screenshot-wrapper{right:calc(100% + 5rem)}}.project:nth-child(odd) .screenshot-wrapper .screenshot{transform:rotate(5deg)}@media (min-width:40em){.project:first-child .line{transform:rotate(6deg)}.project:first-child .screenshot-wrapper{top:-40%}.project:first-child .screenshot-wrapper .screenshot{transform:rotate(4deg)}.project:nth-child(3) .line{transform:rotate(14deg)}.project:nth-child(3) .screenshot-wrapper{top:-45%}.project:nth-child(3) .screenshot-wrapper .screenshot{transform:rotate(-2deg)}.project:nth-child(5) .line{transform:rotate(-5deg)}.project:nth-child(5) .screenshot-wrapper{top:-35%}.project:nth-child(5) .screenshot-wrapper .screenshot{transform:rotate(8deg)}.project:nth-child(7) .line{transform:rotate(5deg)}.project:nth-child(7) .screenshot-wrapper{top:-20%}.project:nth-child(7) .screenshot-wrapper .screenshot{transform:rotate(-8deg)}}.project:nth-child(2n) .line{left:calc(100% + .5em);transform-origin:center left}@media (min-width:40em){.project:nth-child(2n) .screenshot-wrapper{left:calc(100% + 2.5rem)}}@media (min-width:60em){.project:nth-child(2n) .screenshot-wrapper{left:calc(100% + 5rem)}}.project:nth-child(2n) .screenshot-wrapper .screenshot{transform:rotate(-5deg)}@media (min-width:40em){.project:nth-child(2n) .line{transform-origin:left center}.project:nth-child(2n) .screenshot img{transform:rotate(-5deg)}.project:nth-child(2) .line{transform:rotate(-25deg)}.project:nth-child(2) .screenshot-wrapper{top:-80%}.project:nth-child(2) .screenshot-wrapper .screenshot{transform:rotate(-8deg)}.project:nth-child(4) .line{transform:rotate(-25deg)}.project:nth-child(4) .screenshot-wrapper{top:-60%}.project:nth-child(4) .screenshot-wrapper .screenshot{transform:rotate(2deg)}.project:nth-child(6) .line{transform:rotate(-18deg)}.project:nth-child(6) .screenshot-wrapper{top:-70%}.project:nth-child(6) .screenshot-wrapper .screenshot{transform:rotate(8deg)}}@media (min-width:40em){.contacts{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;border:none}}.contact{-ms-flex:1 0 50%;flex:1 0 50%}.contact-link{display:block;padding:1rem 1.5rem}.email-link{cursor:text}.email-link strong{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.email-link input{background:transparent;text-align:center;border:0;width:11em}.email-link input:focus{outline:0;border-radius:var(--radius-small)}.footer-wrapper{font-size:smaller;text-align:center}.copyright{cursor:default;margin:0 0 1.5rem}
--------------------------------------------------------------------------------