a2b5a131 by Israel do Amaral Santiago

App

0 parents
Showing 44 changed files with 2125 additions and 0 deletions
1 FROM nginx
2 COPY website /usr/share/nginx/html
...\ No newline at end of file ...\ No newline at end of file
1 Eventually by HTML5 UP
2 html5up.net | @ajlkn
3 Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
4
5
6 Just a simple placeholder template for your kickass app/product/startup/whatever until it
7 launches. Includes an email signup form and a cool slideshow background (more on both below).
8
9 Demo images* courtesy of Unsplash, a radtastic collection of CC0 (public domain) images
10 you can use for pretty much whatever.
11
12 (* = not included)
13
14 AJ
15 aj@lkn.io | @ajlkn
16
17
18 Signup Form:
19
20 The signup form won't actually do anything (other than report back with a "thank you" message)
21 until you tie it to either a third party service (eg. MailChimp) or your own hosted solution.
22 In either case, there are two ways to go:
23
24 1. The conventional (non-AJAX) way, which pretty much comes down to pointing the form's "action"
25 attribute to your service/script URL. If you go this route, remove the entire "Signup Form" code
26 block from assets/js/main.js (since it's not needed for this approach).
27
28 -or-
29
30 2. The AJAX way. How you set this up is largely dependent on the service/solution you're using
31 so you'll need to consult their/its documentation. However, I have included some basic code
32 (under "Signup Form" in assets/js/main.js) that will at least let you interact with the
33 form itself.
34
35
36 Slideshow Background:
37
38 This is pretty straightforward, but there are two JS settings you'll want to be aware of
39 (found under "Slideshow Background" in assets/js/main.js):
40
41 images
42
43 The list of images to cycle through, given in the following format:
44
45 'url': 'alignment'
46
47 Where 'url' is the image (eg. 'images/foo.jpg', 'http://somewhere.else/foo.jpg'), and
48 'alignment' is how the image should be vertically aligned ('top', 'center', or 'bottom').
49
50 Note: Browsers that don't support CSS transitions (like IE<=9) will only see the first image.
51
52 delay
53
54 How long to wait between transitions (in ms). Note that this must be at least twice as long as
55 the transition speed itself (currently 3 seconds).
56
57
58 Credits:
59
60 Demo Images:
61 Unsplash (unsplash.com)
62
63 Icons:
64 Font Awesome (fontawesome.io)
65
66 Other:
67 Responsive Tools (github.com/ajlkn/responsive-tools)
...\ No newline at end of file ...\ No newline at end of file
1 /*
2 Eventually by HTML5 UP
3 html5up.net | @ajlkn
4 Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5 */
6
7 (function() {
8
9 "use strict";
10
11 var $body = document.querySelector('body');
12
13 // Methods/polyfills.
14
15 // classList | (c) @remy | github.com/remy/polyfills | rem.mit-license.org
16 !function(){function t(t){this.el=t;for(var n=t.className.replace(/^\s+|\s+$/g,"").split(/\s+/),i=0;i<n.length;i++)e.call(this,n[i])}function n(t,n,i){Object.defineProperty?Object.defineProperty(t,n,{get:i}):t.__defineGetter__(n,i)}if(!("undefined"==typeof window.Element||"classList"in document.documentElement)){var i=Array.prototype,e=i.push,s=i.splice,o=i.join;t.prototype={add:function(t){this.contains(t)||(e.call(this,t),this.el.className=this.toString())},contains:function(t){return-1!=this.el.className.indexOf(t)},item:function(t){return this[t]||null},remove:function(t){if(this.contains(t)){for(var n=0;n<this.length&&this[n]!=t;n++);s.call(this,n,1),this.el.className=this.toString()}},toString:function(){return o.call(this," ")},toggle:function(t){return this.contains(t)?this.remove(t):this.add(t),this.contains(t)}},window.DOMTokenList=t,n(Element.prototype,"classList",function(){return new t(this)})}}();
17
18 // canUse
19 window.canUse=function(p){if(!window._canUse)window._canUse=document.createElement("div");var e=window._canUse.style,up=p.charAt(0).toUpperCase()+p.slice(1);return p in e||"Moz"+up in e||"Webkit"+up in e||"O"+up in e||"ms"+up in e};
20
21 // window.addEventListener
22 (function(){if("addEventListener"in window)return;window.addEventListener=function(type,f){window.attachEvent("on"+type,f)}})();
23
24 // Play initial animations on page load.
25 window.addEventListener('load', function() {
26 window.setTimeout(function() {
27 $body.classList.remove('is-preload');
28 }, 100);
29 });
30
31 // Slideshow Background.
32 (function() {
33
34 // Settings.
35 var settings = {
36
37 // Images (in the format of 'url': 'alignment').
38 images: {
39 'images/bg01.jpg': 'center',
40 'images/bg02.jpg': 'center',
41 'images/bg03.jpg': 'center'
42 },
43
44 // Delay.
45 delay: 6000
46
47 };
48
49 // Vars.
50 var pos = 0, lastPos = 0,
51 $wrapper, $bgs = [], $bg,
52 k, v;
53
54 // Create BG wrapper, BGs.
55 $wrapper = document.createElement('div');
56 $wrapper.id = 'bg';
57 $body.appendChild($wrapper);
58
59 for (k in settings.images) {
60
61 // Create BG.
62 $bg = document.createElement('div');
63 $bg.style.backgroundImage = 'url("' + k + '")';
64 $bg.style.backgroundPosition = settings.images[k];
65 $wrapper.appendChild($bg);
66
67 // Add it to array.
68 $bgs.push($bg);
69
70 }
71
72 // Main loop.
73 $bgs[pos].classList.add('visible');
74 $bgs[pos].classList.add('top');
75
76 // Bail if we only have a single BG or the client doesn't support transitions.
77 if ($bgs.length == 1
78 || !canUse('transition'))
79 return;
80
81 window.setInterval(function() {
82
83 lastPos = pos;
84 pos++;
85
86 // Wrap to beginning if necessary.
87 if (pos >= $bgs.length)
88 pos = 0;
89
90 // Swap top images.
91 $bgs[lastPos].classList.remove('top');
92 $bgs[pos].classList.add('visible');
93 $bgs[pos].classList.add('top');
94
95 // Hide last image after a short delay.
96 window.setTimeout(function() {
97 $bgs[lastPos].classList.remove('visible');
98 }, settings.delay / 2);
99
100 }, settings.delay);
101
102 })();
103
104 // Signup Form.
105 (function() {
106
107 // Vars.
108 var $form = document.querySelectorAll('#signup-form')[0],
109 $submit = document.querySelectorAll('#signup-form input[type="submit"]')[0],
110 $message;
111
112 // Bail if addEventListener isn't supported.
113 if (!('addEventListener' in $form))
114 return;
115
116 // Message.
117 $message = document.createElement('span');
118 $message.classList.add('message');
119 $form.appendChild($message);
120
121 $message._show = function(type, text) {
122
123 $message.innerHTML = text;
124 $message.classList.add(type);
125 $message.classList.add('visible');
126
127 window.setTimeout(function() {
128 $message._hide();
129 }, 3000);
130
131 };
132
133 $message._hide = function() {
134 $message.classList.remove('visible');
135 };
136
137 // Events.
138 // Note: If you're *not* using AJAX, get rid of this event listener.
139 $form.addEventListener('submit', function(event) {
140
141 event.stopPropagation();
142 event.preventDefault();
143
144 // Hide message.
145 $message._hide();
146
147 // Disable submit.
148 $submit.disabled = true;
149
150 // Process form.
151 // Note: Doesn't actually do anything yet (other than report back with a "thank you"),
152 // but there's enough here to piece together a working AJAX submission call that does.
153 window.setTimeout(function() {
154
155 // Reset form.
156 $form.reset();
157
158 // Enable submit.
159 $submit.disabled = false;
160
161 // Show message.
162 $message._show('success', 'Thank you!');
163 //$message._show('failure', 'Something went wrong. Please try again.');
164
165 }, 750);
166
167 });
168
169 })();
170
171 })();
...\ No newline at end of file ...\ No newline at end of file
1 ///
2 /// Eventually by HTML5 UP
3 /// html5up.net | @ajlkn
4 /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5 ///
6
7 /* BG */
8
9 #bg {
10 @include vendor('transition', 'opacity #{_duration(bg-fadein)} ease-in-out');
11 height: 100%;
12 left: 0;
13 opacity: 0.375;
14 position: fixed;
15 top: 0;
16 width: 100%;
17 z-index: 1;
18
19 div {
20 @include vendor('transition', ('opacity #{_duration(bg-transition)} ease'));
21 background-size: cover;
22 height: 100%;
23 left: 0;
24 opacity: 0;
25 position: absolute;
26 top: 0;
27 visibility: hidden;
28 width: 150%;
29
30 &.visible {
31 @include vendor('animation', 'bg #{_duration(bg-slide)} linear infinite');
32 opacity: 1;
33 visibility: visible;
34 z-index: 1;
35
36 &.top {
37 z-index: 2;
38 }
39
40 @include breakpoint('<=large') {
41 @include vendor('animation', 'bg #{_duration(bg-slide) * 0.65} linear infinite');
42 }
43
44 @include breakpoint('<=small') {
45 @include vendor('animation', 'bg #{_duration(bg-slide) * 0.4} linear infinite');
46 }
47 }
48
49 &:only-child {
50 @include vendor('animation-direction', 'alternate !important');
51 }
52 }
53
54 body.is-preload & {
55 opacity: 0;
56 }
57 }
58
59 @include keyframes(bg) {
60 0% {
61 @include vendor('transform', 'translateX(0)');
62 }
63
64 100% {
65 @include vendor('transform', 'translateX(-25%)');
66 }
67 }
...\ No newline at end of file ...\ No newline at end of file
1 ///
2 /// Eventually by HTML5 UP
3 /// html5up.net | @ajlkn
4 /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5 ///
6
7 /* Basic */
8
9 // MSIE: Required for IEMobile.
10 @-ms-viewport {
11 width: device-width;
12 }
13
14 // MSIE: Prevents scrollbar from overlapping content.
15 body {
16 -ms-overflow-style: scrollbar;
17 }
18
19 // Ensures page width is always >=320px.
20 @include breakpoint('<=xsmall') {
21 html, body {
22 min-width: 320px;
23 }
24 }
25
26 // Set box model to border-box.
27 // Based on css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice
28 html {
29 box-sizing: border-box;
30 }
31
32 *, *:before, *:after {
33 box-sizing: inherit;
34 }
35
36 html, body {
37 height: 100%;
38 overflow-x: hidden;
39 width: 100%;
40
41 @include breakpoint('short') {
42 height: auto;
43 min-height: 100%;
44 }
45 }
46
47 body {
48 @include vendor('display', 'flex');
49 @include vendor('flex-direction', 'column');
50 @include vendor('justify-content', 'center');
51 background-color: _palette(bg);
52 padding: 6em 4em 4em 4em;
53
54 // Stops initial animations until page loads.
55 &.is-preload {
56 *, *:before, *:after {
57 @include vendor('animation', 'none !important');
58 @include vendor('transition', 'none !important');
59 }
60 }
61
62 > * {
63 position: relative;
64 z-index: 2;
65 }
66
67 @include breakpoint('<=xlarge') {
68 padding: 6em 3.5em 3.5em 3.5em;
69 }
70
71 @include breakpoint('<=small') {
72 padding: 5em 2em 2em 2em;
73 }
74
75 @include breakpoint('<=xxsmall') {
76 padding: 5em 1.25em 1.25em 1.25em;
77 }
78 }
...\ No newline at end of file ...\ No newline at end of file
1 ///
2 /// Eventually by HTML5 UP
3 /// html5up.net | @ajlkn
4 /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5 ///
6
7 // Reset.
8 // Based on meyerweb.com/eric/tools/css/reset (v2.0 | 20110126 | License: public domain)
9
10 html, body, div, span, applet, object,
11 iframe, h1, h2, h3, h4, h5, h6, p, blockquote,
12 pre, a, abbr, acronym, address, big, cite,
13 code, del, dfn, em, img, ins, kbd, q, s, samp,
14 small, strike, strong, sub, sup, tt, var, b,
15 u, i, center, dl, dt, dd, ol, ul, li, fieldset,
16 form, label, legend, table, caption, tbody,
17 tfoot, thead, tr, th, td, article, aside,
18 canvas, details, embed, figure, figcaption,
19 footer, header, hgroup, menu, nav, output, ruby,
20 section, summary, time, mark, audio, video {
21 margin: 0;
22 padding: 0;
23 border: 0;
24 font-size: 100%;
25 font: inherit;
26 vertical-align: baseline;
27 }
28
29 article, aside, details, figcaption, figure,
30 footer, header, hgroup, menu, nav, section {
31 display: block;
32 }
33
34 body {
35 line-height: 1;
36 }
37
38 ol, ul {
39 list-style:none;
40 }
41
42 blockquote, q {
43 quotes: none;
44
45 &:before,
46 &:after {
47 content: '';
48 content: none;
49 }
50 }
51
52 table {
53 border-collapse: collapse;
54 border-spacing: 0;
55 }
56
57 body {
58 -webkit-text-size-adjust: none;
59 }
60
61 mark {
62 background-color: transparent;
63 color: inherit;
64 }
65
66 input::-moz-focus-inner {
67 border: 0;
68 padding: 0;
69 }
70
71 input, select, textarea {
72 -moz-appearance: none;
73 -webkit-appearance: none;
74 -ms-appearance: none;
75 appearance: none;
76 }
...\ No newline at end of file ...\ No newline at end of file
1 ///
2 /// Eventually by HTML5 UP
3 /// html5up.net | @ajlkn
4 /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5 ///
6
7 /* Type */
8
9 body, input, select, textarea {
10 color: _palette(fg);
11 font-family: _font(family);
12 font-size: 16pt;
13 font-weight: _font(weight);
14 letter-spacing: _font(letter-spacing);
15 line-height: 1.65em;
16
17 @include breakpoint('<=xlarge') {
18 font-size: 12pt;
19 }
20
21 @include breakpoint('<=large') {
22 font-size: 11pt;
23 }
24
25 @include breakpoint('<=medium') {
26 font-size: 12pt;
27 }
28
29 @include breakpoint('<=small') {
30 font-size: 12pt;
31 }
32
33 @include breakpoint('<=xsmall') {
34 font-size: 12pt;
35 }
36 }
37
38 a {
39 @include vendor('transition', (
40 'border-bottom-color #{_duration(transition)} ease',
41 'color #{_duration(transition)} ease'
42 ));
43 border-bottom: dotted 1px _palette(border2);
44 color: _palette(accent, bg);
45 text-decoration: none;
46
47 &:hover {
48 border-bottom-color: transparent;
49 color: _palette(accent, bg) !important;
50 text-decoration: none;
51 }
52 }
53
54 strong, b {
55 color: _palette(fg-bold);
56 font-weight: _font(weight-bold);
57 }
58
59 em, i {
60 font-style: italic;
61 }
62
63 p {
64 margin: 0 0 _size(element-margin) 0;
65 }
66
67 h1, h2, h3, h4, h5, h6 {
68 color: _palette(fg-bold);
69 font-weight: _font(weight-bold);
70 line-height: 1em;
71 margin: 0 0 (_size(element-margin) * 0.5) 0;
72
73 a {
74 color: inherit;
75 text-decoration: none;
76 }
77 }
78
79 h1 {
80 font-size: 2.5em;
81 line-height: 1.25em;
82 }
83
84 h2 {
85 font-size: 1.75em;
86 line-height: 1.5em;
87 }
88
89 h3 {
90 font-size: 1.35em;
91 line-height: 1.5em;
92 }
93
94 h4 {
95 font-size: 1.1em;
96 line-height: 1.5em;
97 }
98
99 h5 {
100 font-size: 0.9em;
101 line-height: 1.5em;
102 }
103
104 h6 {
105 font-size: 0.7em;
106 line-height: 1.5em;
107 }
108
109 sub {
110 font-size: 0.8em;
111 position: relative;
112 top: 0.5em;
113 }
114
115 sup {
116 font-size: 0.8em;
117 position: relative;
118 top: -0.5em;
119 }
120
121 blockquote {
122 border-left: solid (_size(border-width) * 4) _palette(border);
123 font-style: italic;
124 margin: 0 0 _size(element-margin) 0;
125 padding: (_size(element-margin) / 4) 0 (_size(element-margin) / 4) _size(element-margin);
126 }
127
128 code {
129 background: _palette(border-bg);
130 border-radius: _size(border-radius);
131 border: solid _size(border-width) _palette(border);
132 font-family: _font(family-fixed);
133 font-size: 0.9em;
134 margin: 0 0.25em;
135 padding: 0.25em 0.65em;
136 }
137
138 pre {
139 -webkit-overflow-scrolling: touch;
140 font-family: _font(family-fixed);
141 font-size: 0.9em;
142 margin: 0 0 _size(element-margin) 0;
143
144 code {
145 display: block;
146 line-height: 1.75em;
147 padding: 1em 1.5em;
148 overflow-x: auto;
149 }
150 }
151
152 hr {
153 border: 0;
154 border-bottom: solid _size(border-width) _palette(border);
155 margin: _size(element-margin) 0;
156
157 &.major {
158 margin: (_size(element-margin) * 1.5) 0;
159 }
160 }
...\ No newline at end of file ...\ No newline at end of file
1 ///
2 /// Eventually by HTML5 UP
3 /// html5up.net | @ajlkn
4 /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5 ///
6
7 /* Button */
8
9 input[type="submit"],
10 input[type="reset"],
11 input[type="button"],
12 button,
13 .button {
14 @include vendor('appearance', 'none');
15 @include vendor('transition', (
16 'background-color #{_duration(transition)} ease-in-out',
17 'color #{_duration(transition)} ease-in-out',
18 'opacity #{_duration(transition)} ease-in-out'
19 ));
20 background-color: _palette(accent, bg);
21 border-radius: _size(border-radius);
22 border: 0;
23 color: _palette(accent, fg-bold) !important;
24 cursor: pointer;
25 display: inline-block;
26 font-weight: _font(weight-bold);
27 height: _size(element-height);
28 line-height: _size(element-height);
29 padding: 0 1.125em;
30 text-align: center;
31 text-decoration: none;
32 white-space: nowrap;
33
34 &:hover {
35 background-color: lighten(_palette(accent, bg), 5);
36 }
37
38 &:active {
39 background-color: darken(_palette(accent, bg), 5);
40 }
41
42 &.disabled,
43 &:disabled {
44 opacity: 0.5;
45 }
46
47 @include breakpoint('<=xsmall') {
48 padding: 0;
49 }
50 }
...\ No newline at end of file ...\ No newline at end of file
1 ///
2 /// Eventually by HTML5 UP
3 /// html5up.net | @ajlkn
4 /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5 ///
6
7 /* Form */
8
9 form {
10 margin: 0 0 _size(element-margin) 0;
11
12 .message {
13 @include icon(false, solid);
14 @include vendor('transition', (
15 'opacity #{_duration(transition)} ease-in-out',
16 'transform #{_duration(transition)} ease-in-out'
17 ));
18 @include vendor('transform', 'scale(1.05)');
19 height: _size(element-height);
20 line-height: _size(element-height);
21 opacity: 0;
22
23 &:before {
24 margin-right: 0.5em;
25 }
26
27 &.visible {
28 @include vendor('transform', 'scale(1)');
29 opacity: 1;
30 }
31
32 &.success {
33 color: _palette(positive, bg);
34
35 &:before {
36 content: '\f00c';
37 }
38 }
39
40 &.failure {
41 color: _palette(negative, bg);
42
43 &:before {
44 content: '\f119';
45 }
46 }
47 }
48 }
49
50 label {
51 color: _palette(fg-bold);
52 display: block;
53 font-size: 0.9em;
54 font-weight: _font(weight-bold);
55 margin: 0 0 (_size(element-margin) * 0.5) 0;
56 }
57
58 @include keyframes(focus) {
59 0% { @include vendor('transform', 'scale(1)'); }
60 50% { @include vendor('transform', 'scale(1.025)'); }
61 100% { @include vendor('transform', 'scale(1)'); }
62 }
63
64 input[type="text"],
65 input[type="password"],
66 input[type="email"],
67 select,
68 textarea {
69 @include vendor('appearance', 'none');
70 @include vendor('transform', 'scale(1)');
71 @include vendor('transition', (
72 'border-color #{_duration(transition)} ease',
73 'background-color #{_duration(transition)} ease'
74 ));
75 background-color: transparent;
76 border-radius: _size(border-radius);
77 border: none;
78 border: solid _size(border-width) _palette(border);
79 color: inherit;
80 display: block;
81 outline: 0;
82 padding: 0 1em;
83 text-decoration: none;
84 width: 100%;
85
86 &:invalid {
87 box-shadow: none;
88 }
89
90 &:focus {
91 @include vendor('animation', 'focus 0.1s');
92 background-color: _palette(border-bg);
93 border-color: _palette(accent, bg);
94 }
95 }
96
97 select {
98 background-image: svg-url("<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'><path d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='#{_palette(border)}' /></svg>");
99 background-size: 1.25rem;
100 background-repeat: no-repeat;
101 background-position: calc(100% - 1rem) center;
102 height: _size(element-height);
103 padding-right: _size(element-height);
104 text-overflow: ellipsis;
105
106 option {
107 color: _palette(fg-bold);
108 background: _palette(bg);
109 }
110
111 &:focus {
112 &::-ms-value {
113 background-color: transparent;
114 }
115 }
116
117 &::-ms-expand {
118 display: none;
119 }
120 }
121
122 input[type="text"],
123 input[type="password"],
124 input[type="email"],
125 select {
126 height: _size(element-height);
127 }
128
129 textarea {
130 padding: 0.75em 1em;
131 }
132
133 input[type="checkbox"],
134 input[type="radio"], {
135 @include vendor('appearance', 'none');
136 display: block;
137 float: left;
138 margin-right: -2em;
139 opacity: 0;
140 width: 1em;
141 z-index: -1;
142
143 & + label {
144 @include icon(false, solid);
145 color: _palette(fg);
146 cursor: pointer;
147 display: inline-block;
148 font-size: 1em;
149 font-weight: _font(weight);
150 padding-left: (_size(element-height) * 0.6) + 0.75em;
151 padding-right: 0.75em;
152 position: relative;
153
154 &:before {
155 background: _palette(border-bg);
156 border-radius: _size(border-radius);
157 border: solid _size(border-width) _palette(border);
158 content: '';
159 display: inline-block;
160 font-size: 0.8em;
161 height: (_size(element-height) * 0.6);
162 left: 0;
163 line-height: (_size(element-height) * 0.6);
164 position: absolute;
165 text-align: center;
166 top: 0;
167 width: (_size(element-height) * 0.6);
168 }
169 }
170
171 &:checked + label {
172 &:before {
173 background: _palette(accent, bg);
174 border-color: _palette(accent, bg);
175 color: _palette(accent, fg-bold);
176 content: '\f00c';
177 }
178 }
179
180 &:focus + label {
181 &:before {
182 border-color: _palette(accent, bg);
183 box-shadow: 0 0 0 _size(border-width) _palette(accent, bg);
184 }
185 }
186 }
187
188 input[type="checkbox"] {
189 & + label {
190 &:before {
191 border-radius: _size(border-radius);
192 }
193 }
194 }
195
196 input[type="radio"] {
197 & + label {
198 &:before {
199 border-radius: 100%;
200 }
201 }
202 }
203
204 ::-webkit-input-placeholder {
205 color: _palette(fg-light) !important;
206 opacity: 1.0;
207 }
208
209 :-moz-placeholder {
210 color: _palette(fg-light) !important;
211 opacity: 1.0;
212 }
213
214 ::-moz-placeholder {
215 color: _palette(fg-light) !important;
216 opacity: 1.0;
217 }
218
219 :-ms-input-placeholder {
220 color: _palette(fg-light) !important;
221 opacity: 1.0;
222 }
223
224 .formerize-placeholder {
225 color: _palette(fg-light) !important;
226 opacity: 1.0;
227 }
...\ No newline at end of file ...\ No newline at end of file
1 ///
2 /// Eventually by HTML5 UP
3 /// html5up.net | @ajlkn
4 /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5 ///
6
7 /* Icon */
8
9 .icon {
10 @include icon;
11 border-bottom: none;
12 position: relative;
13
14 > .label {
15 display: none;
16 }
17
18 &:before {
19 line-height: inherit;
20 }
21
22 &.solid {
23 &:before {
24 font-weight: 900;
25 }
26 }
27
28 &.brands {
29 &:before {
30 font-family: 'Font Awesome 5 Brands';
31 }
32 }
33 }
...\ No newline at end of file ...\ No newline at end of file
1 ///
2 /// Eventually by HTML5 UP
3 /// html5up.net | @ajlkn
4 /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5 ///
6
7 /* Icons */
8
9 ul.icons {
10 cursor: default;
11 list-style: none;
12 padding-left: 0;
13
14 li {
15 display: inline-block;
16 padding: 0 1em 0 0;
17
18 &:last-child {
19 padding-right: 0;
20 }
21
22 .icon {
23 &:before {
24 font-size: 1.25em;
25 }
26 }
27
28 a {
29 color: inherit;
30 }
31 }
32 }
...\ No newline at end of file ...\ No newline at end of file
1 ///
2 /// Eventually by HTML5 UP
3 /// html5up.net | @ajlkn
4 /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5 ///
6
7 /* List */
8
9 ol {
10 list-style: decimal;
11 margin: 0 0 _size(element-margin) 0;
12 padding-left: 1.25em;
13
14 li {
15 padding-left: 0.25em;
16 }
17 }
18
19 ul {
20 list-style: disc;
21 margin: 0 0 _size(element-margin) 0;
22 padding-left: 1em;
23
24 li {
25 padding-left: 0.5em;
26 }
27 }
...\ No newline at end of file ...\ No newline at end of file
1 ///
2 /// Eventually by HTML5 UP
3 /// html5up.net | @ajlkn
4 /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5 ///
6
7 /* Section/Article */
8
9 section, article {
10 &.special {
11 text-align: center;
12 }
13 }
14
15 header {
16 p {
17 color: _palette(fg-light);
18 position: relative;
19 margin: 0 0 (_size(element-margin) * 0.75) 0;
20 }
21
22 h2 + p {
23 font-size: 1.25em;
24 margin-top: (_size(element-margin) * -0.5);
25 line-height: 1.5em;
26 }
27
28 h3 + p {
29 font-size: 1.1em;
30 margin-top: (_size(element-margin) * -0.4);
31 line-height: 1.5em;
32 }
33
34 h4 + p,
35 h5 + p,
36 h6 + p {
37 font-size: 0.9em;
38 margin-top: (_size(element-margin) * -0.3);
39 line-height: 1.5em;
40 }
41
42 @include breakpoint('<=medium') {
43 br {
44 display: none;
45 }
46 }
47
48 @include breakpoint('<=small') {
49 br {
50 display: inline;
51 }
52 }
53
54 @include breakpoint('<=xsmall') {
55 br {
56 display: none;
57 }
58 }
59 }
...\ No newline at end of file ...\ No newline at end of file
1 ///
2 /// Eventually by HTML5 UP
3 /// html5up.net | @ajlkn
4 /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5 ///
6
7 /* Footer */
8
9 #footer {
10 @include vendor('transition', 'opacity 0.5s ease-in-out');
11 bottom: 4em;
12 color: _palette(fg-light);
13 left: 4em;
14 opacity: 0.5;
15 position: absolute;
16
17 .icons {
18 margin: 0 0 (_size(element-margin) * 0.25) 0;
19 }
20
21 .copyright {
22 font-size: 0.8em;
23 list-style: none;
24 padding: 0;
25
26 li {
27 border-left: solid 1px _palette(border2);
28 display: inline-block;
29 line-height: 1em;
30 margin: 0 0 0 0.75em;
31 padding: 0 0 0 0.75em;
32
33 &:first-child {
34 border-left: 0;
35 margin-left: 0;
36 padding-left: 0;
37 }
38 }
39
40 a {
41 color: inherit;
42 }
43 }
44
45 &:hover {
46 opacity: 1;
47 }
48
49 > :last-child {
50 margin-bottom: 0;
51 }
52
53 @include breakpoint('<=xlarge') {
54 bottom: 3.5em;
55 left: 3.5em;
56 }
57
58 @include breakpoint('<=small') {
59 bottom: 2em;
60 left: 2em;
61 }
62
63 @include breakpoint('<=xxsmall') {
64 bottom: 1.25em;
65 left: 1.25em;
66 }
67
68 @include breakpoint('short') {
69 bottom: auto;
70 left: auto;
71 margin: (_size(element-margin) * 0.5) 0 0 0;
72 position: relative;
73 }
74 }
...\ No newline at end of file ...\ No newline at end of file
1 ///
2 /// Eventually by HTML5 UP
3 /// html5up.net | @ajlkn
4 /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5 ///
6
7 /* Header */
8
9 #header {
10 h1 {
11 font-size: 3.25em;
12 margin: 0 0 (_size(element-margin) * 0.275) 0;
13 }
14
15 p {
16 font-size: 1.35em;
17 line-height: 1.65em;
18 }
19
20 a {
21 color: inherit;
22 }
23
24 @include breakpoint('<=small') {
25 h1 {
26 font-size: 2em;
27 }
28
29 p {
30 font-size: 1em;
31 }
32 }
33
34 @include breakpoint('<=xsmall') {
35 margin: 0 0 (_size(element-margin) * 0.5) 0;
36 }
37 }
...\ No newline at end of file ...\ No newline at end of file
1 ///
2 /// Eventually by HTML5 UP
3 /// html5up.net | @ajlkn
4 /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5 ///
6
7 /* Signup Form */
8
9 #signup-form {
10 @include vendor('display', 'flex');
11 position: relative;
12
13 input[type="text"],
14 input[type="password"],
15 input[type="email"] {
16 width: 18em;
17 }
18
19 > * {
20 margin: 0 0 0 1em;
21 }
22
23 > :first-child {
24 margin: 0 0 0 0;
25 }
26
27 @include breakpoint('<=xsmall') {
28 @include vendor('flex-direction', 'column');
29
30 input[type="type"],
31 input[type="password"],
32 input[type="email"] {
33 width: 100%;
34 }
35
36 > * {
37 margin: 1.25em 0 0 0;
38 }
39
40 .message {
41 bottom: -1.5em;
42 font-size: 0.9em;
43 height: 1em;
44 left: 0;
45 line-height: inherit;
46 margin-top: 0;
47 position: absolute;
48 }
49 }
50 }
...\ No newline at end of file ...\ No newline at end of file
1 // breakpoints.scss v1.0 | @ajlkn | MIT licensed */
2
3 // Vars.
4
5 /// Breakpoints.
6 /// @var {list}
7 $breakpoints: () !global;
8
9 // Mixins.
10
11 /// Sets breakpoints.
12 /// @param {map} $x Breakpoints.
13 @mixin breakpoints($x: ()) {
14 $breakpoints: $x !global;
15 }
16
17 /// Wraps @content in a @media block targeting a specific orientation.
18 /// @param {string} $orientation Orientation.
19 @mixin orientation($orientation) {
20 @media screen and (orientation: #{$orientation}) {
21 @content;
22 }
23 }
24
25 /// Wraps @content in a @media block using a given query.
26 /// @param {string} $query Query.
27 @mixin breakpoint($query: null) {
28
29 $breakpoint: null;
30 $op: null;
31 $media: null;
32
33 // Determine operator, breakpoint.
34
35 // Greater than or equal.
36 @if (str-slice($query, 0, 2) == '>=') {
37
38 $op: 'gte';
39 $breakpoint: str-slice($query, 3);
40
41 }
42
43 // Less than or equal.
44 @elseif (str-slice($query, 0, 2) == '<=') {
45
46 $op: 'lte';
47 $breakpoint: str-slice($query, 3);
48
49 }
50
51 // Greater than.
52 @elseif (str-slice($query, 0, 1) == '>') {
53
54 $op: 'gt';
55 $breakpoint: str-slice($query, 2);
56
57 }
58
59 // Less than.
60 @elseif (str-slice($query, 0, 1) == '<') {
61
62 $op: 'lt';
63 $breakpoint: str-slice($query, 2);
64
65 }
66
67 // Not.
68 @elseif (str-slice($query, 0, 1) == '!') {
69
70 $op: 'not';
71 $breakpoint: str-slice($query, 2);
72
73 }
74
75 // Equal.
76 @else {
77
78 $op: 'eq';
79 $breakpoint: $query;
80
81 }
82
83 // Build media.
84 @if ($breakpoint and map-has-key($breakpoints, $breakpoint)) {
85
86 $a: map-get($breakpoints, $breakpoint);
87
88 // Range.
89 @if (type-of($a) == 'list') {
90
91 $x: nth($a, 1);
92 $y: nth($a, 2);
93
94 // Max only.
95 @if ($x == null) {
96
97 // Greater than or equal (>= 0 / anything)
98 @if ($op == 'gte') {
99 $media: 'screen';
100 }
101
102 // Less than or equal (<= y)
103 @elseif ($op == 'lte') {
104 $media: 'screen and (max-width: ' + $y + ')';
105 }
106
107 // Greater than (> y)
108 @elseif ($op == 'gt') {
109 $media: 'screen and (min-width: ' + ($y + 1) + ')';
110 }
111
112 // Less than (< 0 / invalid)
113 @elseif ($op == 'lt') {
114 $media: 'screen and (max-width: -1px)';
115 }
116
117 // Not (> y)
118 @elseif ($op == 'not') {
119 $media: 'screen and (min-width: ' + ($y + 1) + ')';
120 }
121
122 // Equal (<= y)
123 @else {
124 $media: 'screen and (max-width: ' + $y + ')';
125 }
126
127 }
128
129 // Min only.
130 @else if ($y == null) {
131
132 // Greater than or equal (>= x)
133 @if ($op == 'gte') {
134 $media: 'screen and (min-width: ' + $x + ')';
135 }
136
137 // Less than or equal (<= inf / anything)
138 @elseif ($op == 'lte') {
139 $media: 'screen';
140 }
141
142 // Greater than (> inf / invalid)
143 @elseif ($op == 'gt') {
144 $media: 'screen and (max-width: -1px)';
145 }
146
147 // Less than (< x)
148 @elseif ($op == 'lt') {
149 $media: 'screen and (max-width: ' + ($x - 1) + ')';
150 }
151
152 // Not (< x)
153 @elseif ($op == 'not') {
154 $media: 'screen and (max-width: ' + ($x - 1) + ')';
155 }
156
157 // Equal (>= x)
158 @else {
159 $media: 'screen and (min-width: ' + $x + ')';
160 }
161
162 }
163
164 // Min and max.
165 @else {
166
167 // Greater than or equal (>= x)
168 @if ($op == 'gte') {
169 $media: 'screen and (min-width: ' + $x + ')';
170 }
171
172 // Less than or equal (<= y)
173 @elseif ($op == 'lte') {
174 $media: 'screen and (max-width: ' + $y + ')';
175 }
176
177 // Greater than (> y)
178 @elseif ($op == 'gt') {
179 $media: 'screen and (min-width: ' + ($y + 1) + ')';
180 }
181
182 // Less than (< x)
183 @elseif ($op == 'lt') {
184 $media: 'screen and (max-width: ' + ($x - 1) + ')';
185 }
186
187 // Not (< x and > y)
188 @elseif ($op == 'not') {
189 $media: 'screen and (max-width: ' + ($x - 1) + '), screen and (min-width: ' + ($y + 1) + ')';
190 }
191
192 // Equal (>= x and <= y)
193 @else {
194 $media: 'screen and (min-width: ' + $x + ') and (max-width: ' + $y + ')';
195 }
196
197 }
198
199 }
200
201 // String.
202 @else {
203
204 // Missing a media type? Prefix with "screen".
205 @if (str-slice($a, 0, 1) == '(') {
206 $media: 'screen and ' + $a;
207 }
208
209 // Otherwise, use as-is.
210 @else {
211 $media: $a;
212 }
213
214 }
215
216 }
217
218 // Output.
219 @media #{$media} {
220 @content;
221 }
222
223 }
...\ No newline at end of file ...\ No newline at end of file
1 /// Removes a specific item from a list.
2 /// @author Hugo Giraudel
3 /// @param {list} $list List.
4 /// @param {integer} $index Index.
5 /// @return {list} Updated list.
6 @function remove-nth($list, $index) {
7
8 $result: null;
9
10 @if type-of($index) != number {
11 @warn "$index: #{quote($index)} is not a number for `remove-nth`.";
12 }
13 @else if $index == 0 {
14 @warn "List index 0 must be a non-zero integer for `remove-nth`.";
15 }
16 @else if abs($index) > length($list) {
17 @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`.";
18 }
19 @else {
20
21 $result: ();
22 $index: if($index < 0, length($list) + $index + 1, $index);
23
24 @for $i from 1 through length($list) {
25
26 @if $i != $index {
27 $result: append($result, nth($list, $i));
28 }
29
30 }
31
32 }
33
34 @return $result;
35
36 }
37
38 /// Gets a value from a map.
39 /// @author Hugo Giraudel
40 /// @param {map} $map Map.
41 /// @param {string} $keys Key(s).
42 /// @return {string} Value.
43 @function val($map, $keys...) {
44
45 @if nth($keys, 1) == null {
46 $keys: remove-nth($keys, 1);
47 }
48
49 @each $key in $keys {
50 $map: map-get($map, $key);
51 }
52
53 @return $map;
54
55 }
56
57 /// Gets a duration value.
58 /// @param {string} $keys Key(s).
59 /// @return {string} Value.
60 @function _duration($keys...) {
61 @return val($duration, $keys...);
62 }
63
64 /// Gets a font value.
65 /// @param {string} $keys Key(s).
66 /// @return {string} Value.
67 @function _font($keys...) {
68 @return val($font, $keys...);
69 }
70
71 /// Gets a misc value.
72 /// @param {string} $keys Key(s).
73 /// @return {string} Value.
74 @function _misc($keys...) {
75 @return val($misc, $keys...);
76 }
77
78 /// Gets a palette value.
79 /// @param {string} $keys Key(s).
80 /// @return {string} Value.
81 @function _palette($keys...) {
82 @return val($palette, $keys...);
83 }
84
85 /// Gets a size value.
86 /// @param {string} $keys Key(s).
87 /// @return {string} Value.
88 @function _size($keys...) {
89 @return val($size, $keys...);
90 }
...\ No newline at end of file ...\ No newline at end of file
1 /// Makes an element's :before pseudoelement a FontAwesome icon.
2 /// @param {string} $content Optional content value to use.
3 /// @param {string} $category Optional category to use.
4 /// @param {string} $where Optional pseudoelement to target (before or after).
5 @mixin icon($content: false, $category: regular, $where: before) {
6
7 text-decoration: none;
8
9 &:#{$where} {
10
11 @if $content {
12 content: $content;
13 }
14
15 -moz-osx-font-smoothing: grayscale;
16 -webkit-font-smoothing: antialiased;
17 display: inline-block;
18 font-style: normal;
19 font-variant: normal;
20 text-rendering: auto;
21 line-height: 1;
22 text-transform: none !important;
23
24 @if ($category == brands) {
25 font-family: 'Font Awesome 5 Brands';
26 }
27 @elseif ($category == solid) {
28 font-family: 'Font Awesome 5 Free';
29 font-weight: 900;
30 }
31 @else {
32 font-family: 'Font Awesome 5 Free';
33 font-weight: 400;
34 }
35
36 }
37
38 }
39
40 /// Applies padding to an element, taking the current element-margin value into account.
41 /// @param {mixed} $tb Top/bottom padding.
42 /// @param {mixed} $lr Left/right padding.
43 /// @param {list} $pad Optional extra padding (in the following order top, right, bottom, left)
44 /// @param {bool} $important If true, adds !important.
45 @mixin padding($tb, $lr, $pad: (0,0,0,0), $important: null) {
46
47 @if $important {
48 $important: '!important';
49 }
50
51 $x: 0.1em;
52
53 @if unit(_size(element-margin)) == 'rem' {
54 $x: 0.1rem;
55 }
56
57 padding: ($tb + nth($pad,1)) ($lr + nth($pad,2)) max($x, $tb - _size(element-margin) + nth($pad,3)) ($lr + nth($pad,4)) #{$important};
58
59 }
60
61 /// Encodes a SVG data URL so IE doesn't choke (via codepen.io/jakob-e/pen/YXXBrp).
62 /// @param {string} $svg SVG data URL.
63 /// @return {string} Encoded SVG data URL.
64 @function svg-url($svg) {
65
66 $svg: str-replace($svg, '"', '\'');
67 $svg: str-replace($svg, '%', '%25');
68 $svg: str-replace($svg, '<', '%3C');
69 $svg: str-replace($svg, '>', '%3E');
70 $svg: str-replace($svg, '&', '%26');
71 $svg: str-replace($svg, '#', '%23');
72 $svg: str-replace($svg, '{', '%7B');
73 $svg: str-replace($svg, '}', '%7D');
74 $svg: str-replace($svg, ';', '%3B');
75
76 @return url("data:image/svg+xml;charset=utf8,#{$svg}");
77
78 }
...\ No newline at end of file ...\ No newline at end of file
1 // Misc.
2 $misc: (
3 );
4
5 // Duration.
6 $duration: (
7 nav: 0.5s,
8 transition: 0.2s,
9 bg-fadein: 2s,
10 bg-transition: 3s,
11 bg-slide: 45s // (lower = faster, higher = slower)
12 );
13
14 // Size.
15 $size: (
16 border-radius: 6px,
17 border-width: 2px,
18 element-height: 2.75em,
19 element-margin: 2em
20 );
21
22 // Font.
23 $font: (
24 family: ('Roboto', sans-serif),
25 family-fixed: ('Courier New', monospace),
26 weight: 400,
27 weight-bold: 700,
28 letter-spacing: -0.01em
29 );
30
31 // Palette.
32 $palette: (
33 bg: #000,
34 fg: rgba(255,255,255,0.75),
35 fg-bold: #fff,
36 fg-light: rgba(255,255,255,0.5),
37 border: rgba(255,255,255,0.35),
38 border-bg: rgba(255,255,255,0.125),
39 border2: rgba(255,255,255,0.25),
40
41 accent: (
42 bg: #1cb495,
43 fg: mix(#1cb495, #ffffff, 25%),
44 fg-bold: #ffffff,
45 fg-light: mix(#1cb495, #ffffff, 40%),
46 border: rgba(255,255,255,0.25),
47 border-bg: rgba(255,255,255,0.075),
48 ),
49
50 positive: (
51 bg: #1cb495,
52 fg: #ffffff
53 ),
54
55 negative: (
56 bg: #ff2361,
57 fg: #ffffff
58 )
59 );
...\ No newline at end of file ...\ No newline at end of file
1 // vendor.scss v1.0 | @ajlkn | MIT licensed */
2
3 // Vars.
4
5 /// Vendor prefixes.
6 /// @var {list}
7 $vendor-prefixes: (
8 '-moz-',
9 '-webkit-',
10 '-ms-',
11 ''
12 );
13
14 /// Properties that should be vendorized.
15 /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org
16 /// @var {list}
17 $vendor-properties: (
18
19 // Animation.
20 'animation',
21 'animation-delay',
22 'animation-direction',
23 'animation-duration',
24 'animation-fill-mode',
25 'animation-iteration-count',
26 'animation-name',
27 'animation-play-state',
28 'animation-timing-function',
29
30 // Appearance.
31 'appearance',
32
33 // Backdrop filter.
34 'backdrop-filter',
35
36 // Background image options.
37 'background-clip',
38 'background-origin',
39 'background-size',
40
41 // Box sizing.
42 'box-sizing',
43
44 // Clip path.
45 'clip-path',
46
47 // Filter effects.
48 'filter',
49
50 // Flexbox.
51 'align-content',
52 'align-items',
53 'align-self',
54 'flex',
55 'flex-basis',
56 'flex-direction',
57 'flex-flow',
58 'flex-grow',
59 'flex-shrink',
60 'flex-wrap',
61 'justify-content',
62 'order',
63
64 // Font feature.
65 'font-feature-settings',
66 'font-language-override',
67 'font-variant-ligatures',
68
69 // Font kerning.
70 'font-kerning',
71
72 // Fragmented borders and backgrounds.
73 'box-decoration-break',
74
75 // Grid layout.
76 'grid-column',
77 'grid-column-align',
78 'grid-column-end',
79 'grid-column-start',
80 'grid-row',
81 'grid-row-align',
82 'grid-row-end',
83 'grid-row-start',
84 'grid-template-columns',
85 'grid-template-rows',
86
87 // Hyphens.
88 'hyphens',
89 'word-break',
90
91 // Masks.
92 'mask',
93 'mask-border',
94 'mask-border-outset',
95 'mask-border-repeat',
96 'mask-border-slice',
97 'mask-border-source',
98 'mask-border-width',
99 'mask-clip',
100 'mask-composite',
101 'mask-image',
102 'mask-origin',
103 'mask-position',
104 'mask-repeat',
105 'mask-size',
106
107 // Multicolumn.
108 'break-after',
109 'break-before',
110 'break-inside',
111 'column-count',
112 'column-fill',
113 'column-gap',
114 'column-rule',
115 'column-rule-color',
116 'column-rule-style',
117 'column-rule-width',
118 'column-span',
119 'column-width',
120 'columns',
121
122 // Object fit.
123 'object-fit',
124 'object-position',
125
126 // Regions.
127 'flow-from',
128 'flow-into',
129 'region-fragment',
130
131 // Scroll snap points.
132 'scroll-snap-coordinate',
133 'scroll-snap-destination',
134 'scroll-snap-points-x',
135 'scroll-snap-points-y',
136 'scroll-snap-type',
137
138 // Shapes.
139 'shape-image-threshold',
140 'shape-margin',
141 'shape-outside',
142
143 // Tab size.
144 'tab-size',
145
146 // Text align last.
147 'text-align-last',
148
149 // Text decoration.
150 'text-decoration-color',
151 'text-decoration-line',
152 'text-decoration-skip',
153 'text-decoration-style',
154
155 // Text emphasis.
156 'text-emphasis',
157 'text-emphasis-color',
158 'text-emphasis-position',
159 'text-emphasis-style',
160
161 // Text size adjust.
162 'text-size-adjust',
163
164 // Text spacing.
165 'text-spacing',
166
167 // Transform.
168 'transform',
169 'transform-origin',
170
171 // Transform 3D.
172 'backface-visibility',
173 'perspective',
174 'perspective-origin',
175 'transform-style',
176
177 // Transition.
178 'transition',
179 'transition-delay',
180 'transition-duration',
181 'transition-property',
182 'transition-timing-function',
183
184 // Unicode bidi.
185 'unicode-bidi',
186
187 // User select.
188 'user-select',
189
190 // Writing mode.
191 'writing-mode',
192
193 );
194
195 /// Values that should be vendorized.
196 /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org
197 /// @var {list}
198 $vendor-values: (
199
200 // Cross fade.
201 'cross-fade',
202
203 // Element function.
204 'element',
205
206 // Filter function.
207 'filter',
208
209 // Flexbox.
210 'flex',
211 'inline-flex',
212
213 // Grab cursors.
214 'grab',
215 'grabbing',
216
217 // Gradients.
218 'linear-gradient',
219 'repeating-linear-gradient',
220 'radial-gradient',
221 'repeating-radial-gradient',
222
223 // Grid layout.
224 'grid',
225 'inline-grid',
226
227 // Image set.
228 'image-set',
229
230 // Intrinsic width.
231 'max-content',
232 'min-content',
233 'fit-content',
234 'fill',
235 'fill-available',
236 'stretch',
237
238 // Sticky position.
239 'sticky',
240
241 // Transform.
242 'transform',
243
244 // Zoom cursors.
245 'zoom-in',
246 'zoom-out',
247
248 );
249
250 // Functions.
251
252 /// Removes a specific item from a list.
253 /// @author Hugo Giraudel
254 /// @param {list} $list List.
255 /// @param {integer} $index Index.
256 /// @return {list} Updated list.
257 @function remove-nth($list, $index) {
258
259 $result: null;
260
261 @if type-of($index) != number {
262 @warn "$index: #{quote($index)} is not a number for `remove-nth`.";
263 }
264 @else if $index == 0 {
265 @warn "List index 0 must be a non-zero integer for `remove-nth`.";
266 }
267 @else if abs($index) > length($list) {
268 @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`.";
269 }
270 @else {
271
272 $result: ();
273 $index: if($index < 0, length($list) + $index + 1, $index);
274
275 @for $i from 1 through length($list) {
276
277 @if $i != $index {
278 $result: append($result, nth($list, $i));
279 }
280
281 }
282
283 }
284
285 @return $result;
286
287 }
288
289 /// Replaces a substring within another string.
290 /// @author Hugo Giraudel
291 /// @param {string} $string String.
292 /// @param {string} $search Substring.
293 /// @param {string} $replace Replacement.
294 /// @return {string} Updated string.
295 @function str-replace($string, $search, $replace: '') {
296
297 $index: str-index($string, $search);
298
299 @if $index {
300 @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
301 }
302
303 @return $string;
304
305 }
306
307 /// Replaces a substring within each string in a list.
308 /// @param {list} $strings List of strings.
309 /// @param {string} $search Substring.
310 /// @param {string} $replace Replacement.
311 /// @return {list} Updated list of strings.
312 @function str-replace-all($strings, $search, $replace: '') {
313
314 @each $string in $strings {
315 $strings: set-nth($strings, index($strings, $string), str-replace($string, $search, $replace));
316 }
317
318 @return $strings;
319
320 }
321
322 // Mixins.
323
324 /// Wraps @content in vendorized keyframe blocks.
325 /// @param {string} $name Name.
326 @mixin keyframes($name) {
327
328 @-moz-keyframes #{$name} { @content; }
329 @-webkit-keyframes #{$name} { @content; }
330 @-ms-keyframes #{$name} { @content; }
331 @keyframes #{$name} { @content; }
332
333 }
334
335 /// Vendorizes a declaration's property and/or value(s).
336 /// @param {string} $property Property.
337 /// @param {mixed} $value String/list of value(s).
338 @mixin vendor($property, $value) {
339
340 // Determine if property should expand.
341 $expandProperty: index($vendor-properties, $property);
342
343 // Determine if value should expand (and if so, add '-prefix-' placeholder).
344 $expandValue: false;
345
346 @each $x in $value {
347 @each $y in $vendor-values {
348 @if $y == str-slice($x, 1, str-length($y)) {
349
350 $value: set-nth($value, index($value, $x), '-prefix-' + $x);
351 $expandValue: true;
352
353 }
354 }
355 }
356
357 // Expand property?
358 @if $expandProperty {
359 @each $vendor in $vendor-prefixes {
360 #{$vendor}#{$property}: #{str-replace-all($value, '-prefix-', $vendor)};
361 }
362 }
363
364 // Expand just the value?
365 @elseif $expandValue {
366 @each $vendor in $vendor-prefixes {
367 #{$property}: #{str-replace-all($value, '-prefix-', $vendor)};
368 }
369 }
370
371 // Neither? Treat them as a normal declaration.
372 @else {
373 #{$property}: #{$value};
374 }
375
376 }
...\ No newline at end of file ...\ No newline at end of file
1 @import 'libs/vars';
2 @import 'libs/functions';
3 @import 'libs/mixins';
4 @import 'libs/vendor';
5 @import 'libs/breakpoints';
6 @import 'fontawesome-all.min.css';
7 @import url('https://fonts.googleapis.com/css?family=Roboto:400,700');
8
9 /*
10 Eventually by HTML5 UP
11 html5up.net | @ajlkn
12 Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
13 */
14
15 // Breakpoints.
16
17 @include breakpoints((
18 xlarge: ( 1281px, 1680px ),
19 large: ( 981px, 1280px ),
20 medium: ( 737px, 980px ),
21 small: ( 481px, 736px ),
22 xsmall: ( 361px, 480px ),
23 xxsmall: ( null, 360px ),
24 short: '(max-height: 640px)'
25 ));
26
27 // Base.
28
29 @import 'base/reset';
30 @import 'base/page';
31 @import 'base/bg';
32 @import 'base/typography';
33
34 // Components.
35
36 @import 'components/section';
37 @import 'components/icon';
38 @import 'components/list';
39 @import 'components/icons';
40 @import 'components/form';
41 @import 'components/button';
42
43 // Layout.
44
45 @import 'layout/header';
46 @import 'layout/signup-form';
47 @import 'layout/footer';
...\ No newline at end of file ...\ No newline at end of file
No preview for this file type
This diff could not be displayed because it is too large.
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
This diff could not be displayed because it is too large.
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
This diff could not be displayed because it is too large.
No preview for this file type
No preview for this file type
No preview for this file type
1 <!DOCTYPE HTML>
2 <!-- meu comentario -->
3 <html>
4 <head>
5 <title>Eventually by HTML5 UP</title>
6 <meta charset="utf-8" />
7 <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
8 <link rel="stylesheet" href="assets/css/main.css" />
9 </head>
10 <body class="is-preload">
11
12 <!-- Header -->
13 <header id="header">
14 <h1>Site de Secretaria das Cidades</h1>
15 <p>A simple template for telling the world when you'll launch<br />
16 your next big thing. Brought to you by <a href="http://html5up.net">HTML5 UP</a>.</p>
17 </header>
18
19 <!-- Signup Form -->
20 <form id="signup-form" method="post" action="#">
21 <input type="email" name="email" id="email" placeholder="Email Address" />
22 <input type="submit" value="Sign Up" />
23 </form>
24
25 <!-- Footer -->
26 <footer id="footer">
27 <ul class="icons">
28 <li><a href="#" class="icon brands fa-twitter"><span class="label">Twitter</span></a></li>
29 <li><a href="#" class="icon brands fa-instagram"><span class="label">Instagram</span></a></li>
30 <li><a href="#" class="icon brands fa-github"><span class="label">GitHub</span></a></li>
31 <li><a href="#" class="icon fa-envelope"><span class="label">Email</span></a></li>
32 </ul>
33 <ul class="copyright">
34 <li>&copy; Untitled.</li><li>Credits: <a href="http://html5up.net">HTML5 UP</a></li>
35 </ul>
36 </footer>
37
38 <!-- Scripts -->
39 <script src="assets/js/main.js"></script>
40
41 </body>
42 </html>
...\ No newline at end of file ...\ No newline at end of file
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!