App
0 parents
Showing
44 changed files
with
2125 additions
and
0 deletions
Dockerfile
0 → 100644
website/LICENSE.txt
0 → 100644
This diff is collapsed.
Click to expand it.
website/README.txt
0 → 100644
| 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 |
website/assets/css/fontawesome-all.min.css
0 → 100644
This diff is collapsed.
Click to expand it.
website/assets/css/main.css
0 → 100644
This diff is collapsed.
Click to expand it.
website/assets/js/main.js
0 → 100644
| 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 |
website/assets/sass/base/_bg.scss
0 → 100644
| 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 |
website/assets/sass/base/_page.scss
0 → 100644
| 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 |
website/assets/sass/base/_reset.scss
0 → 100644
| 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 |
website/assets/sass/base/_typography.scss
0 → 100644
| 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 |
website/assets/sass/components/_button.scss
0 → 100644
| 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 |
website/assets/sass/components/_form.scss
0 → 100644
| 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 |
website/assets/sass/components/_icon.scss
0 → 100644
| 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 |
website/assets/sass/components/_icons.scss
0 → 100644
| 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 |
website/assets/sass/components/_list.scss
0 → 100644
| 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 |
website/assets/sass/components/_section.scss
0 → 100644
| 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 |
website/assets/sass/layout/_footer.scss
0 → 100644
| 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 |
website/assets/sass/layout/_header.scss
0 → 100644
| 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 |
website/assets/sass/layout/_signup-form.scss
0 → 100644
| 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 |
website/assets/sass/libs/_breakpoints.scss
0 → 100644
| 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 |
website/assets/sass/libs/_functions.scss
0 → 100644
| 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 |
website/assets/sass/libs/_mixins.scss
0 → 100644
| 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 |
website/assets/sass/libs/_vars.scss
0 → 100644
| 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 |
website/assets/sass/libs/_vendor.scss
0 → 100644
| 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 |
website/assets/sass/main.scss
0 → 100644
| 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 |
website/assets/webfonts/fa-brands-400.eot
0 → 100644
No preview for this file type
website/assets/webfonts/fa-brands-400.svg
0 → 100644
This diff could not be displayed because it is too large.
website/assets/webfonts/fa-brands-400.ttf
0 → 100644
No preview for this file type
website/assets/webfonts/fa-brands-400.woff
0 → 100644
No preview for this file type
website/assets/webfonts/fa-brands-400.woff2
0 → 100644
No preview for this file type
website/assets/webfonts/fa-regular-400.eot
0 → 100644
No preview for this file type
website/assets/webfonts/fa-regular-400.svg
0 → 100644
This diff could not be displayed because it is too large.
website/assets/webfonts/fa-regular-400.ttf
0 → 100644
No preview for this file type
website/assets/webfonts/fa-regular-400.woff
0 → 100644
No preview for this file type
website/assets/webfonts/fa-regular-400.woff2
0 → 100644
No preview for this file type
website/assets/webfonts/fa-solid-900.eot
0 → 100644
No preview for this file type
website/assets/webfonts/fa-solid-900.svg
0 → 100644
This diff could not be displayed because it is too large.
website/assets/webfonts/fa-solid-900.ttf
0 → 100644
No preview for this file type
website/assets/webfonts/fa-solid-900.woff
0 → 100644
No preview for this file type
website/assets/webfonts/fa-solid-900.woff2
0 → 100644
No preview for this file type
website/images/bg01.jpg
0 → 100644
186 KB
website/images/bg02.jpg
0 → 100644
112 KB
website/images/bg03.jpg
0 → 100644
108 KB
website/index.html
0 → 100644
| 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>© 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 |
-
Please register or sign in to post a comment