From 9e7eacc83d92aa411012502f9c6f147d28b1ca95 Mon Sep 17 00:00:00 2001 From: Vaclovas Date: Thu, 28 Jul 2016 16:45:58 +0300 Subject: [PATCH] * Added WebPack configuration, RequireJS is dropped * Updated Scss file structure * Added nvmrc file. Required node version is added, easier to use with nvm preinstalled. * Scss-lint task is added and now running on the fly * Resolved scss-lint issues in scss files, global scss-lint config edited * Support added for nesting selectors with parents (resolved issue with bem selectors, when writting scss code) * Added gitattributes file * Automated image optimization added * Added functionality, which checks if all dependencies are up to date. If not - gulp automatically installs them. * Added npmrc file (dependencies are automatically saved, even without defining flags, when installing and current version is defined in package.json) * eslintrc file is added * starter-template folder is removed * sass errors are not breaking gulp tasks * WebPack is running from gulp * Added gulp task cacheing for better task performance (faster repetitive tasks) * Added ability to make scss-lint errors silent --- .babelrc | 3 + .../.editorConfig => .editorConfig | 0 .eslintrc | 109 +++++ .gitattributes | 47 ++ .npmrc | 2 + .nvmrc | 1 + .scss-lint.yml | 9 + CHANGELOG.md | 5 + .../content => content}/images/.gitkeep | 0 .../images/originals}/.gitkeep | 0 .../styles/images/sprite.png | Bin .../styles/images/sprite.svg | 0 content/styles/site-styles.css | 4 + starter-template/favicon.ico => favicon.ico | Bin gulp/compile-scss/compile-scss.js | 38 ++ gulp/create-svg-sprite/create-svg-sprite.js | 64 +++ gulp/gulp.config.js | 36 ++ gulp/watch-tasks/watch-all.js | 7 + gulp/watch-tasks/watch-scss.js | 6 + gulp/watch-tasks/watch-svg.js | 12 + gulpfile.js | 107 +++++ .../core/_assets.scss => includes/.gitkeep | 0 starter-template/index.html => index.html | 20 +- package.json | 54 +++ scripts/build.min.js | 1 + .../libs/jquery-1.11.3.min.js | 0 {starter-template/scripts => scripts}/main.js | 5 +- .../scripts => scripts}/modules/site.js | 0 .../plugins/jquery.modal.js | 0 .../plugins/jquery.validate.min.js | 0 .../scripts => scripts}/plugins/slick.min.js | 0 .../scripts => scripts}/require.js | 0 .../scss/site-public => scss}/_print.scss | 28 +- .../scss => scss}/assets/icons/db-logo.svg | 0 .../_footer.scss => scss/base/_assets.scss | 0 .../scss/core => scss/base}/_colors.scss | 2 + .../scss/core => scss/base}/_config.scss | 0 .../core => scss/base}/_notifications.scss | 4 +- .../core => scss/base}/_svg-sprite-map.scss | 0 .../base}/_svg-sprite-template.scss | 0 .../scss/core => scss/base}/_svg-sprite.scss | 0 .../scss/core => scss/base}/_variables.scss | 2 +- .../scss/core => scss/mixins}/_mixins.scss | 6 +- .../_header.scss => scss/modules/_footer.scss | 0 .../scss/global => scss/modules}/_forms.scss | 0 .../_home.scss => scss/modules/_header.scss | 0 .../layout => scss/modules}/_layout.scss | 2 + .../scss/global => scss/modules}/_modal.scss | 14 +- .../scss/global => scss/modules}/_tables.scss | 0 .../modules/_typography.scss | 0 scss/pages/_home.scss | 0 scss/site-styles.scss | 37 ++ scss/vendor/_normalize.scss | 419 ++++++++++++++++ .../scss/plugins => scss/vendor}/_slick.scss | 0 starter-template/.gitignore | 452 ------------------ starter-template/.scss-lint.yml | 3 - .../content/styles/site-styles.css | 223 --------- .../content/styles/site-styles.css.map | 1 - .../gulp/compile-scss/compile-scss.js | 32 -- .../create-svg-sprite/create-svg-sprite.js | 65 --- starter-template/gulp/gulp.config.js | 23 - .../gulp/watch-tasks/watch-all.js | 7 - .../gulp/watch-tasks/watch-scss.js | 9 - .../gulp/watch-tasks/watch-svg.js | 11 - starter-template/gulpfile.js | 10 - starter-template/package.json | 35 -- starter-template/scss/core/_normalize.scss | 238 --------- starter-template/scss/site-styles.scss | 36 -- webpack.config.js | 28 ++ 69 files changed, 1033 insertions(+), 1184 deletions(-) create mode 100644 .babelrc rename starter-template/.editorConfig => .editorConfig (100%) create mode 100644 .eslintrc create mode 100644 .gitattributes create mode 100644 .npmrc create mode 100644 .nvmrc create mode 100644 .scss-lint.yml rename {starter-template/content => content}/images/.gitkeep (100%) rename {starter-template/includes => content/images/originals}/.gitkeep (100%) rename {starter-template/content => content}/styles/images/sprite.png (100%) rename {starter-template/content => content}/styles/images/sprite.svg (100%) create mode 100644 content/styles/site-styles.css rename starter-template/favicon.ico => favicon.ico (100%) create mode 100644 gulp/compile-scss/compile-scss.js create mode 100644 gulp/create-svg-sprite/create-svg-sprite.js create mode 100644 gulp/gulp.config.js create mode 100644 gulp/watch-tasks/watch-all.js create mode 100644 gulp/watch-tasks/watch-scss.js create mode 100644 gulp/watch-tasks/watch-svg.js create mode 100644 gulpfile.js rename starter-template/scss/core/_assets.scss => includes/.gitkeep (100%) rename starter-template/index.html => index.html (70%) create mode 100644 package.json create mode 100644 scripts/build.min.js rename {starter-template/scripts => scripts}/libs/jquery-1.11.3.min.js (100%) rename {starter-template/scripts => scripts}/main.js (97%) rename {starter-template/scripts => scripts}/modules/site.js (100%) rename {starter-template/scripts => scripts}/plugins/jquery.modal.js (100%) rename {starter-template/scripts => scripts}/plugins/jquery.validate.min.js (100%) rename {starter-template/scripts => scripts}/plugins/slick.min.js (100%) rename {starter-template/scripts => scripts}/require.js (100%) rename {starter-template/scss/site-public => scss}/_print.scss (57%) rename {starter-template/scss => scss}/assets/icons/db-logo.svg (100%) rename starter-template/scss/site-public/layout/_footer.scss => scss/base/_assets.scss (100%) rename {starter-template/scss/core => scss/base}/_colors.scss (87%) rename {starter-template/scss/core => scss/base}/_config.scss (100%) rename {starter-template/scss/core => scss/base}/_notifications.scss (51%) rename {starter-template/scss/core => scss/base}/_svg-sprite-map.scss (100%) rename {starter-template/scss/core => scss/base}/_svg-sprite-template.scss (100%) rename {starter-template/scss/core => scss/base}/_svg-sprite.scss (100%) rename {starter-template/scss/core => scss/base}/_variables.scss (60%) rename {starter-template/scss/core => scss/mixins}/_mixins.scss (95%) rename starter-template/scss/site-public/layout/_header.scss => scss/modules/_footer.scss (100%) rename {starter-template/scss/global => scss/modules}/_forms.scss (100%) rename starter-template/scss/site-public/pages/_home.scss => scss/modules/_header.scss (100%) rename {starter-template/scss/site-public/layout => scss/modules}/_layout.scss (86%) rename {starter-template/scss/global => scss/modules}/_modal.scss (86%) rename {starter-template/scss/global => scss/modules}/_tables.scss (100%) rename {starter-template/scss/site-public => scss}/modules/_typography.scss (100%) create mode 100644 scss/pages/_home.scss create mode 100644 scss/site-styles.scss create mode 100644 scss/vendor/_normalize.scss rename {starter-template/scss/plugins => scss/vendor}/_slick.scss (100%) delete mode 100644 starter-template/.gitignore delete mode 100644 starter-template/.scss-lint.yml delete mode 100644 starter-template/content/styles/site-styles.css delete mode 100644 starter-template/content/styles/site-styles.css.map delete mode 100644 starter-template/gulp/compile-scss/compile-scss.js delete mode 100644 starter-template/gulp/create-svg-sprite/create-svg-sprite.js delete mode 100644 starter-template/gulp/gulp.config.js delete mode 100644 starter-template/gulp/watch-tasks/watch-all.js delete mode 100644 starter-template/gulp/watch-tasks/watch-scss.js delete mode 100644 starter-template/gulp/watch-tasks/watch-svg.js delete mode 100644 starter-template/gulpfile.js delete mode 100644 starter-template/package.json delete mode 100644 starter-template/scss/core/_normalize.scss delete mode 100644 starter-template/scss/site-styles.scss create mode 100644 webpack.config.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..c13c5f6 --- /dev/null +++ b/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["es2015"] +} diff --git a/starter-template/.editorConfig b/.editorConfig similarity index 100% rename from starter-template/.editorConfig rename to .editorConfig diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..77ef477 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,109 @@ +{ + "parser": "babel-eslint", + "ecmaFeatures": { + "objectLiteralDuplicateProperties": false, + "modules": true, + "jsx": true + }, + "plugins": [ + "react", + "lodash" + ], + "rules": { + "arrow-parens": 1, + "brace-style": [ + 2, + "1tbs", + { + "allowSingleLine": true + } + ], + "camelcase": 0, + "comma-dangle": 2, + "curly": 2, + "eqeqeq": 0, + "jsx-quotes": 2, + "new-cap": 0, + "no-alert": 0, + "no-cond-assign": 2, + "no-console": 1, + "no-constant-condition": 2, + "no-control-regex": 2, + "no-debugger": 2, + "no-dupe-args": 2, + "no-dupe-class-members": 2, + "no-dupe-keys": 2, + "no-duplicate-case": 2, + "no-else-return": 1, + "no-empty": 2, + "no-empty-character-class": 2, + "no-ex-assign": 2, + "no-extra-boolean-cast": 2, + "no-extra-parens": 0, + "no-extra-semi": 0, + "no-func-assign": 2, + "no-inner-declarations": 2, + "no-invalid-regexp": 2, + "no-irregular-whitespace": 2, + "no-label-var": 2, + "no-negated-in-lhs": 2, + "no-obj-calls": 2, + "no-regex-spaces": 2, + "no-shadow": 2, + "no-sparse-arrays": 2, + "no-undef": 2, + "no-unneeded-ternary": 1, + "no-underscore-dangle": 0, + "no-unexpected-multiline": 2, + "no-unreachable": 1, + "no-unused-vars": 2, + "no-use-before-define": 0, + "quotes": [ + 1, + "single" + ], + "semi": 2, + "strict": 0, + "use-isnan": 2, + "valid-jsdoc": 0, + "valid-typeof": 2, + "react/display-name": 0, + "react/jsx-boolean-value": 0, + "react/jsx-no-undef": 1, + "react/sort-prop-types": 1, + "react/jsx-sort-props": 0, + "react/jsx-uses-react": 1, + "react/jsx-uses-vars": 1, + "react/no-danger": 0, + "react/no-did-mount-set-state": 1, + "react/no-did-update-set-state": 1, + "react/no-multi-comp": 1, + "react/no-unknown-property": 1, + "react/prop-types": 0, + "react/react-in-jsx-scope": 1, + "react/require-extension": 1, + "react/self-closing-comp": 1, + "react/sort-comp": 0, + "react/wrap-multilines": 1, + "devbridge-gt-v2/no-deprecated-lodash-func": 2, + "lodash/callback-binding": 2, + "lodash/no-extra-args": 2, + "lodash/preferred-alias": 2, + "lodash/unwrap": 1, + "lodash/no-double-unwrap": 2, + "lodash/collection-method-value": 2, + "lodash/collection-return": 2, + "lodash/no-single-chain": 2, + "lodash/prefer-chain": 2 + }, + "env": { + "browser": true, + "node": true, + "es6": true, + "mocha": true + }, + "globals": { + "browser": true, + "expect": true + } +} diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..49466f2 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,47 @@ +* text eol=lf +*.cmd text eol=crlf + +# binary +*.ico binary +*.xlsx binary +*.xls binary +*.zip binary +*.png binary +*.bmp binary +*.jpg binary +*.jpeg binary +*.gif binary +*.ttf binary +*.eot binary +*.otf binary +*.woff binary +*.woff2 binary + +# Automatically normalize line endings for all text-based files +# https://git-scm.com/docs/gitattributes#_end_of_line_conversion + +* text=auto + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +# For the following file types, normalize line endings to LF on +# checkin and prevent conversion to CRLF when they are checked out +# (this is required in order to prevent newline related issues like, +# for example, after the build script is run) + +.* text eol=lf +*.css text eol=lf +*.html text eol=lf +*.js text eol=lf +*.json text eol=lf +*.md text eol=lf +*.sh text eol=lf +*.txt text eol=lf +*.xml text eol=lf + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +# Exclude the `.htaccess` file from GitHub's language statistics +# https://github.com/github/linguist#using-gitattributes + +dist/.htaccess linguist-vendored diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..f5357d5 --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +save=true +save-exact=true diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..5b19a6b --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +"5.11" diff --git a/.scss-lint.yml b/.scss-lint.yml new file mode 100644 index 0000000..9cb7990 --- /dev/null +++ b/.scss-lint.yml @@ -0,0 +1,9 @@ +linters: + Indentation: + width: 4 + NestingDepth: + ignore_parent_selectors: true + DeclarationOrder: + enabled: false + TransitionAll: + enabled: true diff --git a/CHANGELOG.md b/CHANGELOG.md index e69de29..e3b77d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -0,0 +1,5 @@ +### 2.0.0 (July 13, 2016) + +* Updated normalize.scss to v4.1.1 +* Added .nvmrc file for use with node version manager. Node 5.11 version is required. +* Added .eslintrc file with eslint configuration + lodash, react plugins \ No newline at end of file diff --git a/starter-template/content/images/.gitkeep b/content/images/.gitkeep similarity index 100% rename from starter-template/content/images/.gitkeep rename to content/images/.gitkeep diff --git a/starter-template/includes/.gitkeep b/content/images/originals/.gitkeep similarity index 100% rename from starter-template/includes/.gitkeep rename to content/images/originals/.gitkeep diff --git a/starter-template/content/styles/images/sprite.png b/content/styles/images/sprite.png similarity index 100% rename from starter-template/content/styles/images/sprite.png rename to content/styles/images/sprite.png diff --git a/starter-template/content/styles/images/sprite.svg b/content/styles/images/sprite.svg similarity index 100% rename from starter-template/content/styles/images/sprite.svg rename to content/styles/images/sprite.svg diff --git a/content/styles/site-styles.css b/content/styles/site-styles.css new file mode 100644 index 0000000..d80b6ff --- /dev/null +++ b/content/styles/site-styles.css @@ -0,0 +1,4 @@ +.clearfix::after{clear:both;content:'';display:table;height:0} +/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */ +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress,sub,sup{vertical-align:baseline}[hidden],template{display:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline dotted}b,strong{font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none;max-width:100%}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:700}button,hr,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{color:inherit;display:table;max-width:100%;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio],legend{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.noscript-message{background-color:#fff1bb;font-size:16px;padding:3px;text-align:center;z-index:2147483647}[disabled]{cursor:not-allowed}@media print{*{background:0 0!important;box-shadow:none!important;color:#000!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]::after{content:' (" attr(href) ")'}abbr[title]::after{content:' (" attr(title) ")'}.ir a::after,a[href^="#"]::after,a[href^="javascript:"]::after{content:''}blockquote,pre{border:1px solid #999}thead{display:table-header-group}blockquote,img,pre,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body,html{height:100%;margin:0;padding:0;width:100%}body{font-size:16px;line-height:1.5}@media screen and (max-width:1024px){body{-webkit-text-size-adjust:100%}} +/*# sourceMappingURL=site-styles.css.map */ \ No newline at end of file diff --git a/starter-template/favicon.ico b/favicon.ico similarity index 100% rename from starter-template/favicon.ico rename to favicon.ico diff --git a/gulp/compile-scss/compile-scss.js b/gulp/compile-scss/compile-scss.js new file mode 100644 index 0000000..825aa56 --- /dev/null +++ b/gulp/compile-scss/compile-scss.js @@ -0,0 +1,38 @@ +module.exports = function() { + var gulp = require('gulp'), + config = require('../gulp.config.js')(), + plumber = require('gulp-plumber'), + sass = require('gulp-sass'), + bourbon = require('bourbon'), + sourcemaps = require('gulp-sourcemaps'), + neat = require('node-neat').includePaths, + csso = require('gulp-csso'); + + var options = { + includePaths: neat, + outputStyle: 'nested', // 'compressed' + sourceComments: false + }; + + function swallowError(error) { + // If you want details of the error in the console + console.log('\x1b[36m', error.toString(), '\x1b[0m'); + this.emit('end'); + } + + + return gulp.src(config.scss.src) + .pipe(sourcemaps.init()) + .pipe(sass({ + outputStyle: 'expanded', + sourceMap: true, + noCache: false, + includePaths: [].concat(neat, bourbon) + })) + .on('error', swallowError) + .pipe(csso()) + .pipe(sourcemaps.write('./')) + .pipe(gulp.dest(config.scss.cssFolder)); +}; + + diff --git a/gulp/create-svg-sprite/create-svg-sprite.js b/gulp/create-svg-sprite/create-svg-sprite.js new file mode 100644 index 0000000..db7f670 --- /dev/null +++ b/gulp/create-svg-sprite/create-svg-sprite.js @@ -0,0 +1,64 @@ +var config = require('../gulp.config.js')(); + +module.exports = function () { + var gulp = require('gulp'), + plumber = require('gulp-plumber'), + svg2png = require('gulp-svg2png'), + svgSprite = require('gulp-svg-sprite'); + + + var svgConfig = { + shape: { + spacing: { + padding: 0 + } + }, + mode: { + css: { + bust: false, + dest: './', + // layout: 'vertical', 'horizontal', 'diagonal' + sprite: config.svg.spriteFolder + 'sprite.svg', + render: { + scss: { + dest: config.svg.scssMapFolder + '_svg-sprite-map.scss', + template: config.svg.scssMapFolder + '_svg-sprite-template.scss' + } + } + } + } + }; + + gulp.task('svg-sprite', function () { + gulp.src(config.svg.sourceFolder + '*.svg') + .pipe(plumber({ + errorHandler: function (err) { + console.log(err); + this.emit('end'); + } + })) + .pipe(svgSprite(svgConfig)) + .pipe(gulp.dest('./')); + }); + + gulp.task('png-sprite', ['svg-sprite'], function () { + gulp.src(config.svg.spriteFolder + '*.svg') + .pipe(plumber({ + errorHandler: function () { + console.log(err); + this.emit('end'); + } + })) + .pipe(svg2png()) + .pipe(gulp.dest(config.svg.spriteFolder)); + }); + + if (config.svg.pngFallback) { + gulp.start('png-sprite') + } else { + gulp.start('svg-sprite') + } +}; + + + diff --git a/gulp/gulp.config.js b/gulp/gulp.config.js new file mode 100644 index 0000000..8fc3304 --- /dev/null +++ b/gulp/gulp.config.js @@ -0,0 +1,36 @@ +module.exports = function () { + var config = { + scss: { + src: [ + './scss/**/*.scss', + '!scss/**/*_scsslint_tmp*.scss' //ignores temporary scss-lint files + ], + cssFolder: 'content/styles/' + }, + svg: { + sourceFolder: 'scss/assets/icons/', + spriteFolder: 'content/styles/images/', + scssMapFolder: 'scss/base/', + pngFallback: false + }, + optimize: { + css: {}, + js: {}, + images: { + src: 'content/images/originals/**/*.{png,gif,jpg,svg}', + dest: 'content/images/', + options: { // Target options + optimizationLevel: 7, + svgoPlugins: [{removeViewBox: false}], + progessive: true, + interlaced: true + }, + } + } + }; + + return config; +}; + + + diff --git a/gulp/watch-tasks/watch-all.js b/gulp/watch-tasks/watch-all.js new file mode 100644 index 0000000..abf73e9 --- /dev/null +++ b/gulp/watch-tasks/watch-all.js @@ -0,0 +1,7 @@ +module.exports = function () { + var gulp = require('gulp'), + config = require('../gulp.config.js')(); + + gulp.start(['check-deps', 'watch-scss', 'watch-svg']); +}; + diff --git a/gulp/watch-tasks/watch-scss.js b/gulp/watch-tasks/watch-scss.js new file mode 100644 index 0000000..70fb051 --- /dev/null +++ b/gulp/watch-tasks/watch-scss.js @@ -0,0 +1,6 @@ +module.exports = function () { + var gulp = require('gulp'), + config = require('../gulp.config.js')(); + gulp.watch(config.scss.src, ['compile-scss', 'scss-linting']); + +}; diff --git a/gulp/watch-tasks/watch-svg.js b/gulp/watch-tasks/watch-svg.js new file mode 100644 index 0000000..d25a92a --- /dev/null +++ b/gulp/watch-tasks/watch-svg.js @@ -0,0 +1,12 @@ +module.exports = function () { + var gulp = require('gulp'), + config = require('../gulp.config.js')(); + + return gulp.watch(config.svg.sourceFolder + '**/*.svg', function () { + // Create SVG sprite + require('gulp-task-loader')('gulp/create-svg-sprite'); + gulp.start('create-svg-sprite'); + }); + +}; + diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..ad61429 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,107 @@ +var gulp = require('gulp'), + config = require('./gulp/gulp.config.js')(); +var path = { + HTML: '/index.html', + ALL: ['scripts/**/*.jsx', 'scripts/**/*.js'], + MINIFIED_OUT: 'build.min.js', + DEST_SRC: 'scripts', + DEST_BUILD: 'scripts', + DEST: 'dist' +}; +gulp.task('check-deps', function () { + require('check-dependencies')({ + install: true, + verbose: false + }); +}); + +gulp.task('webpack', [], function() { + var gulp = require('gulp'); + var uglify = require('gulp-uglify'); + var sourcemaps = require('gulp-sourcemaps'); + var webpackConfig = require("./webpack.config.js"); + var stream = require('webpack-stream'); + + return gulp.src(path.ALL) + .pipe(sourcemaps.init()) + .pipe(stream(webpackConfig)) + .pipe(uglify()) + .pipe(sourcemaps.write()) + .pipe(gulp.dest(path.DEST_BUILD)); +}); + +gulp.task('clear-image-cache', function (done) { + var cache = require('gulp-cache'); + return cache.clearAll(done); +}); + +gulp.task('watch-webpack', function() { + var gulp = require('gulp'); + var concat = require('gulp-concat'); + var uglify = require('gulp-uglify'); + var sourcemaps = require('gulp-sourcemaps'); + var gutil = require("gulp-util"); + var webpack = require("webpack"); + var WebpackDevServer = require("webpack-dev-server"); + var webpackConfig = require("./webpack.config.js"); + var stream = require('webpack-stream'); + + // modify some webpack config options + var myConfig = Object.create(webpackConfig); + myConfig.devtool = "eval"; + myConfig.debug = true; + + // Start a webpack-dev-server + new WebpackDevServer(webpack(myConfig), { + publicPath: "/" + myConfig.output.publicPath, + hot: true, + stats: { + colors: true + } + }).listen(8080, "localhost", function(err) { + if (err) throw new gutil.PluginError("webpack-dev-server", err); + gutil.log("[webpack-dev-server]", "http://localhost:8080/webpack-dev-server/index.html"); + }); + gulp.watch(path.ALL, ['webpack']); +}); + +gulp.task('optimize:images', function() { + var imagemin = require('gulp-imagemin'); + var cache = require('gulp-cache'); + return gulp.src(config.optimize.images.src) + .pipe(cache(imagemin(config.optimize.images.options))) + .pipe(gulp.dest(config.optimize.images.dest)); +}); + +gulp.task('optimize:images', function() { + var imagemin = require('gulp-imagemin'); + var cache = require('gulp-cache'); + return gulp.src(config.optimize.images.src) + .pipe(cache(imagemin(config.optimize.images.options))) + .pipe(gulp.dest(config.optimize.images.dest)); +}); + +gulp.task('watch-images-optimize', function() { + gulp.watch(config.optimize.images.src, ['optimize:images']); +}); + +gulp.task('scss-linting', function() { + var scsslint = require('gulp-scss-lint'), + gulpif = require('gulp-if'), + argv = require('yargs').argv; + + gulp.src(['./scss/**/*.scss', '!./scss/**/*_scsslint_tmp*.scss', '!./scss/vendor/**/*.scss', '!./scss/base/_svg-sprite-map.scss', '!./scss/base/_svg-sprite-template.scss']) + .pipe(gulpif(!argv.nolint, scsslint())); +}); + + +gulp.task('develop', ['check-deps', 'clear-image-cache', 'watch-scss', 'watch-svg', 'watch-webpack', 'watch-images-optimize']); + +// Compile SASS +require('gulp-task-loader')('gulp/compile-scss'); + +// Create SVG sprite +require('gulp-task-loader')('gulp/create-svg-sprite'); + +// Watch +require('gulp-task-loader')('gulp/watch-tasks'); \ No newline at end of file diff --git a/starter-template/scss/core/_assets.scss b/includes/.gitkeep similarity index 100% rename from starter-template/scss/core/_assets.scss rename to includes/.gitkeep diff --git a/starter-template/index.html b/index.html similarity index 70% rename from starter-template/index.html rename to index.html index 423e487..fe32455 100644 --- a/starter-template/index.html +++ b/index.html @@ -6,20 +6,6 @@ - - -

Hello You

@@ -55,5 +42,6 @@

Hello You

  • Styleguide - Project Styleguide.
  • + diff --git a/package.json b/package.json new file mode 100644 index 0000000..df8e6ee --- /dev/null +++ b/package.json @@ -0,0 +1,54 @@ +{ + "name": "Devbridge-FrontEnd", + "version": "1.0.0", + "repository": { + "type": "git", + "url": "git://github.com/devbridge/Front-End-Toolkit.git" + }, + "description": "Starter project", + "main": "gulpfile.js", + "dependencies": { + "gulp-cache": "0.4.5", + "gulp-changed": "1.3.1", + "gulp-concat": "2.6.0", + "gulp-if": "2.0.1", + "gulp-imagemin": "2.3.0", + "gulp-scss-lint": "0.4.0", + "gulp-uglify": "1.5.4", + "gulp-watch": "4.3.9", + "webpack": "1.13.1", + "webpack-dev-server": "1.14.1", + "webpack-stream": "3.2.0", + "yargs": "4.8.1" + }, + "scripts": { + "start": "webpack-dev-server --progress --inline --hot" + }, + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/devbridge/Front-End-Toolkit/issues" + }, + "homepage": "https://github.com/devbridge/Front-End-Toolkit", + "devDependencies": { + "autoprefixer": "6.3.7", + "check-dependencies": "0.12.0", + "gulp": "3.9.1", + "gulp-ignore": "2.0.1", + "gulp-plumber": "1.0.0", + "gulp-sass": "2.3.2", + "gulp-sourcemaps": "1.5.2", + "gulp-svg-sprite": "1.2.9", + "gulp-svg2png": "0.3.0", + "gulp-task-loader": "1.2.1", + "node-bourbon": "4.2.8", + "node-neat": "1.7.2", + "gulp-concat": "2.6.0", + "gulp-imagemin": "2.3.0", + "gulp-uglify": "1.5.4", + "gulp-watch": "4.3.9", + "webpack": "1.13.1", + "webpack-dev-server": "1.14.1", + "webpack-stream": "3.2.0" + } +} diff --git a/scripts/build.min.js b/scripts/build.min.js new file mode 100644 index 0000000..800268e --- /dev/null +++ b/scripts/build.min.js @@ -0,0 +1 @@ +!function(n){function r(e){if(i[e])return i[e].exports;var o=i[e]={exports:{},id:e,loaded:!1};return n[e].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}var i={};return r.m=n,r.c=i,r.p="",r(0)}([function(module,exports){eval("/*jslint regexp: true, nomen: true, sloppy: true */\r\n/*global require, applicationConfig, window, applicationConfig */\r\n/*require.config({\r\n baseUrl: '/scripts/',\r\n paths: {\r\n jquery: [\r\n '//cdn.jsdelivr.net/jquery/1.11.3/jquery.min',\r\n 'libs/jquery-1.11.3.min'\r\n ],\r\n validation: [\r\n '//cdn.jsdelivr.net/jquery.validation/1.14.0/jquery.validate.min',\r\n 'plugins/jquery.validate.min'\r\n ],\r\n slickSlider: [\r\n '//cdn.jsdelivr.net/jquery.slick/1.5.8/slick.min',\r\n 'plugins/slick.min'\r\n ],\r\n modal: 'plugins/jquery.modal',\r\n site: 'modules/site'\r\n },\r\n shim: {\r\n validation: {\r\n deps: ['jquery']\r\n }\r\n }\r\n});\r\nrequire(['jquery', 'site'], function ($, site) {\r\n var console = window.console || { log: $.noop, error: $.noop },\r\n\r\n maxData = [];\r\n if (typeof applicationConfig != 'undefined') {\r\n var config = applicationConfig;\r\n }\r\n if (typeof site != 'undefined') {\r\n site.init();\r\n }\r\n});*/\r\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./scripts/main.js\n ** module id = 0\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./scripts/main.js?")}]); \ No newline at end of file diff --git a/starter-template/scripts/libs/jquery-1.11.3.min.js b/scripts/libs/jquery-1.11.3.min.js similarity index 100% rename from starter-template/scripts/libs/jquery-1.11.3.min.js rename to scripts/libs/jquery-1.11.3.min.js diff --git a/starter-template/scripts/main.js b/scripts/main.js similarity index 97% rename from starter-template/scripts/main.js rename to scripts/main.js index a657903..59fb7ab 100644 --- a/starter-template/scripts/main.js +++ b/scripts/main.js @@ -1,6 +1,6 @@ /*jslint regexp: true, nomen: true, sloppy: true */ /*global require, applicationConfig, window, applicationConfig */ -require.config({ +/*require.config({ baseUrl: '/scripts/', paths: { jquery: [ @@ -26,6 +26,7 @@ require.config({ }); require(['jquery', 'site'], function ($, site) { var console = window.console || { log: $.noop, error: $.noop }, + maxData = []; if (typeof applicationConfig != 'undefined') { var config = applicationConfig; @@ -33,4 +34,4 @@ require(['jquery', 'site'], function ($, site) { if (typeof site != 'undefined') { site.init(); } -}); +});*/ diff --git a/starter-template/scripts/modules/site.js b/scripts/modules/site.js similarity index 100% rename from starter-template/scripts/modules/site.js rename to scripts/modules/site.js diff --git a/starter-template/scripts/plugins/jquery.modal.js b/scripts/plugins/jquery.modal.js similarity index 100% rename from starter-template/scripts/plugins/jquery.modal.js rename to scripts/plugins/jquery.modal.js diff --git a/starter-template/scripts/plugins/jquery.validate.min.js b/scripts/plugins/jquery.validate.min.js similarity index 100% rename from starter-template/scripts/plugins/jquery.validate.min.js rename to scripts/plugins/jquery.validate.min.js diff --git a/starter-template/scripts/plugins/slick.min.js b/scripts/plugins/slick.min.js similarity index 100% rename from starter-template/scripts/plugins/slick.min.js rename to scripts/plugins/slick.min.js diff --git a/starter-template/scripts/require.js b/scripts/require.js similarity index 100% rename from starter-template/scripts/require.js rename to scripts/require.js diff --git a/starter-template/scss/site-public/_print.scss b/scss/_print.scss similarity index 57% rename from starter-template/scss/site-public/_print.scss rename to scss/_print.scss index c146c30..a021513 100644 --- a/starter-template/scss/site-public/_print.scss +++ b/scss/_print.scss @@ -1,37 +1,43 @@ +$_print-text-color: #999; + // Print // Inlined to avoid required HTTP connection: h5bp.com/r @media print { * { + // scss-lint:disable ImportantRule background: transparent !important; - color: #000 !important; // Black prints faster: h5bp.com/s box-shadow: none !important; + color: $black !important; // Black prints faster: h5bp.com/s text-shadow: none !important; + // scss-lint:enable ImportantRule } a, a:visited { text-decoration: underline; } - - a[href]:after { + // scss-lint:disable QualifyingElement + a[href]::after { content: ' (" attr(href) ")'; } - abbr[title]:after { + abbr[title]::after { content: ' (" attr(title) ")'; } + // scss-lint:enable QualifyingElement // Don't show links for images, or javascript/internal links - .ir a:after, - a[href^="javascript:"]:after, - a[href^="#"]:after { + // scss-lint:disable QualifyingElement + .ir a::after, + a[href^="javascript:"]::after, + a[href^="#"]::after { content: ''; } - + // scss-lint:enable QualifyingElement pre, blockquote { - border: 1px solid #999; + border: 1px solid $_print-text-color; page-break-inside: avoid; } @@ -45,11 +51,13 @@ } img { + // scss-lint:disable ImportantRule max-width: 100% !important; + // scss-lint:enable ImportantRule } @page { - margin: 0.5cm; + margin: .5cm; } p, diff --git a/starter-template/scss/assets/icons/db-logo.svg b/scss/assets/icons/db-logo.svg similarity index 100% rename from starter-template/scss/assets/icons/db-logo.svg rename to scss/assets/icons/db-logo.svg diff --git a/starter-template/scss/site-public/layout/_footer.scss b/scss/base/_assets.scss similarity index 100% rename from starter-template/scss/site-public/layout/_footer.scss rename to scss/base/_assets.scss diff --git a/starter-template/scss/core/_colors.scss b/scss/base/_colors.scss similarity index 87% rename from starter-template/scss/core/_colors.scss rename to scss/base/_colors.scss index 0dbe415..dee5b1e 100644 --- a/starter-template/scss/core/_colors.scss +++ b/scss/base/_colors.scss @@ -1,6 +1,8 @@ // For naming colors variables, we recommend use http://chir.ag/projects/name-that-color/ //module MAIN COLOR PALETTE +$black: #000; +$white: #fff; //module COMMON COLORS diff --git a/starter-template/scss/core/_config.scss b/scss/base/_config.scss similarity index 100% rename from starter-template/scss/core/_config.scss rename to scss/base/_config.scss diff --git a/starter-template/scss/core/_notifications.scss b/scss/base/_notifications.scss similarity index 51% rename from starter-template/scss/core/_notifications.scss rename to scss/base/_notifications.scss index 04e1c5e..6db364e 100644 --- a/starter-template/scss/core/_notifications.scss +++ b/scss/base/_notifications.scss @@ -1,5 +1,7 @@ +$noscript-notification-text-color: #fff1bb; + .noscript-message { - background-color: #fff1bb; + background-color: $noscript-notification-text-color; font-size: 16px; padding: 3px; text-align: center; diff --git a/starter-template/scss/core/_svg-sprite-map.scss b/scss/base/_svg-sprite-map.scss similarity index 100% rename from starter-template/scss/core/_svg-sprite-map.scss rename to scss/base/_svg-sprite-map.scss diff --git a/starter-template/scss/core/_svg-sprite-template.scss b/scss/base/_svg-sprite-template.scss similarity index 100% rename from starter-template/scss/core/_svg-sprite-template.scss rename to scss/base/_svg-sprite-template.scss diff --git a/starter-template/scss/core/_svg-sprite.scss b/scss/base/_svg-sprite.scss similarity index 100% rename from starter-template/scss/core/_svg-sprite.scss rename to scss/base/_svg-sprite.scss diff --git a/starter-template/scss/core/_variables.scss b/scss/base/_variables.scss similarity index 60% rename from starter-template/scss/core/_variables.scss rename to scss/base/_variables.scss index f845825..0cd9280 100644 --- a/starter-template/scss/core/_variables.scss +++ b/scss/base/_variables.scss @@ -2,4 +2,4 @@ $base-line-height: 1.5; $base-font-size: 16px; -//widths, heights, sizes, timings, settings \ No newline at end of file +//widths, heights, sizes, timings, settings diff --git a/starter-template/scss/core/_mixins.scss b/scss/mixins/_mixins.scss similarity index 95% rename from starter-template/scss/core/_mixins.scss rename to scss/mixins/_mixins.scss index 327012c..dd935d6 100644 --- a/starter-template/scss/core/_mixins.scss +++ b/scss/mixins/_mixins.scss @@ -22,8 +22,8 @@ } @else if ($apply-to == all) { font-size: 0; - > * { - font-size: $setsize; + > * { + font-size: $setsize; } } @else { font-size: 0; @@ -38,7 +38,7 @@ @if $extend { @extend %clearfix; } @else { - &:after { + &::after { clear: both; content: ''; display: table; diff --git a/starter-template/scss/site-public/layout/_header.scss b/scss/modules/_footer.scss similarity index 100% rename from starter-template/scss/site-public/layout/_header.scss rename to scss/modules/_footer.scss diff --git a/starter-template/scss/global/_forms.scss b/scss/modules/_forms.scss similarity index 100% rename from starter-template/scss/global/_forms.scss rename to scss/modules/_forms.scss diff --git a/starter-template/scss/site-public/pages/_home.scss b/scss/modules/_header.scss similarity index 100% rename from starter-template/scss/site-public/pages/_home.scss rename to scss/modules/_header.scss diff --git a/starter-template/scss/site-public/layout/_layout.scss b/scss/modules/_layout.scss similarity index 86% rename from starter-template/scss/site-public/layout/_layout.scss rename to scss/modules/_layout.scss index a8dfd1f..1c75397 100644 --- a/starter-template/scss/site-public/layout/_layout.scss +++ b/scss/modules/_layout.scss @@ -18,7 +18,9 @@ body { // To prevent the iPhone and iPad from inflating fonts @include respond-to(1024, max) { + // scss-lint:disable VendorPrefix -webkit-text-size-adjust: 100%; + // scss-lint:enable VendorPrefix } } diff --git a/starter-template/scss/global/_modal.scss b/scss/modules/_modal.scss similarity index 86% rename from starter-template/scss/global/_modal.scss rename to scss/modules/_modal.scss index aecebbf..4ea3419 100644 --- a/starter-template/scss/global/_modal.scss +++ b/scss/modules/_modal.scss @@ -3,6 +3,8 @@ // // Layout styles for Modal window plugin // Url: https://github.com/tkirda/modal-box +$_modal-overlay-color: rgba(211, 211, 211, .8); +$_modal-gray: #333; .modal-on { body { @@ -22,7 +24,7 @@ } .modal-context { - background-color: rgba(211, 211, 211, .8); + background-color: $_modal-overlay-color; height: 100%; left: 0; -webkit-overflow-scrolling: touch; @@ -47,14 +49,14 @@ } .modal-title { - background-color: #fff; + background-color: $white; box-sizing: border-box; font-weight: 700; padding: 20px; } .modal-content { - background-color: #fff; + background-color: $white; box-sizing: border-box; padding: 20px; } @@ -62,7 +64,7 @@ .modal-close { background: none; border: 0; - color: #333; + color: $_modal-gray; cursor: pointer; height: 30px; position: absolute; @@ -71,7 +73,7 @@ top: 20px; width: 30px; - &:after { + &::after { content: '\00d7'; display: inline-block; font: { @@ -88,6 +90,6 @@ } &:hover { - color: #000; + color: $black; } } diff --git a/starter-template/scss/global/_tables.scss b/scss/modules/_tables.scss similarity index 100% rename from starter-template/scss/global/_tables.scss rename to scss/modules/_tables.scss diff --git a/starter-template/scss/site-public/modules/_typography.scss b/scss/modules/_typography.scss similarity index 100% rename from starter-template/scss/site-public/modules/_typography.scss rename to scss/modules/_typography.scss diff --git a/scss/pages/_home.scss b/scss/pages/_home.scss new file mode 100644 index 0000000..e69de29 diff --git a/scss/site-styles.scss b/scss/site-styles.scss new file mode 100644 index 0000000..8b70567 --- /dev/null +++ b/scss/site-styles.scss @@ -0,0 +1,37 @@ +@charset 'utf-8'; + +@import 'base/config'; // Framework configuration or other settings + +// Frameworks +@import 'bourbon'; +@import 'neat'; + +// Dependencies +@import 'base/colors', // Only color variables. + 'base/assets', // Variables for image urls, local web fonts or other assets your might have. + 'base/variables', // All other variables, including typography, measurements and etc. + 'mixins/mixins', // Mixins, functions, extenders. + 'vendor/normalize', // Contains CSS output to fix cross-browser inconsistencies. + 'base/notifications', + 'base/svg-sprite'; + +// Plugins - Styles of third party plugins +//@import 'plugins/slick'; + +// Global modules - modules shared between multiple projects (e.g. admin and public sites) +@import 'modules/forms'; + //'modules/tables', + //'modules/modal'; + +// Local modules +@import 'modules/typography'; + +// Styles for project pages or similar views - styles that are connected by content +@import 'print', + 'pages/home'; + +// Structure +@import 'modules/layout', +'modules/header', +'modules/footer'; + diff --git a/scss/vendor/_normalize.scss b/scss/vendor/_normalize.scss new file mode 100644 index 0000000..f9fca61 --- /dev/null +++ b/scss/vendor/_normalize.scss @@ -0,0 +1,419 @@ +/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */ + +/** + * 1. Change the default font family in all browsers (opinionated). + * 2. Prevent adjustments of font size after orientation changes in IE and iOS. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove the margin in all browsers (opinionated). + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + * 1. Add the correct display in Edge, IE, and Firefox. + * 2. Add the correct display in IE. + */ + +article, +aside, +details, /* 1 */ +figcaption, +figure, +footer, +header, +main, /* 2 */ +menu, +nav, +section, +summary { /* 1 */ + display: block; +} + +/** + * Add the correct display in IE 9-. + */ + +audio, +canvas, +progress, +video { + display: inline-block; +} + +/** + * Add the correct display in iOS 4-7. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Add the correct display in IE 10-. + * 1. Add the correct display in IE. + */ + +template, /* 1 */ +[hidden] { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * 1. Remove the gray background on active links in IE 10. + * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. + */ + +a { + background-color: transparent; /* 1 */ + -webkit-text-decoration-skip: objects; /* 2 */ +} + +/** + * Remove the outline on focused links when they are also active or hovered + * in all browsers (opinionated). + */ + +a:active, +a:hover { + outline-width: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * 1. Remove the bottom border in Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. + */ + +b, +strong { + font-weight: inherit; +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * Add the correct font style in Android 4.3-. + */ + +dfn { + font-style: italic; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Add the correct background and color in IE 9-. + */ + +mark { + background-color: #ff0; + color: #000; +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10-. + */ + +img { + border-style: none; +} + +/** + * Hide the overflow in IE. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct margin in IE 8. + */ + +figure { + margin: 1em 40px; +} + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change font properties to `inherit` in all browsers (opinionated). + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +select, +textarea { + font: inherit; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Restore the font weight unset by the previous rule. + */ + +optgroup { + font-weight: bold; +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. + */ + +button, +html [type="button"], /* 1 */ +[type="reset"], +[type="submit"] { + -webkit-appearance: button; /* 2 */ +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Change the border, margin, and padding in all browsers (opinionated). + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Remove the default vertical scrollbar in IE. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding and cancel buttons in Chrome and Safari on OS X. + */ + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Correct the text style of placeholders in Chrome, Edge, and Safari. + */ + +::-webkit-input-placeholder { + color: inherit; + opacity: 0.54; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} diff --git a/starter-template/scss/plugins/_slick.scss b/scss/vendor/_slick.scss similarity index 100% rename from starter-template/scss/plugins/_slick.scss rename to scss/vendor/_slick.scss diff --git a/starter-template/.gitignore b/starter-template/.gitignore deleted file mode 100644 index b72dd3e..0000000 --- a/starter-template/.gitignore +++ /dev/null @@ -1,452 +0,0 @@ -/.idea - -/starter-template-compass/.idea -/starter-template-compass/.sass-cache - -/starter-template-libsass/.idea -/starter-template-libsass/node_modules -/npm-debug.log -# Created by https://www.gitignore.io - -### Windows ### -# Windows image file caches -Thumbs.db -ehthumbs.db - -# Folder config file -Desktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Windows Installer files -*.cab -*.msi -*.msm -*.msp - -# Windows shortcuts -*.lnk - - -### Sass ### -.sass-cache -*.css.map - - -### Linux ### -*~ - -# KDE directory preferences -.directory - -# Linux trash folder which might appear on any partition or disk -.Trash-* - - -### OSX ### -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - - -### Bower ### -bower_components -.bower-cache -.bower-registry -.bower-tmp - - -### JetBrains ### -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm - -*.iml - -## Directory-based project format: -.idea/ -# if you remove the above rule, at least ignore the following: - -# User-specific stuff: -# .idea/workspace.xml -# .idea/tasks.xml -# .idea/dictionaries - -# Sensitive or high-churn files: -# .idea/dataSources.ids -# .idea/dataSources.xml -# .idea/sqlDataSources.xml -# .idea/dynamic.xml -# .idea/uiDesigner.xml - -# Gradle: -# .idea/gradle.xml -# .idea/libraries - -# Mongo Explorer plugin: -# .idea/mongoSettings.xml - -## File-based project format: -*.ipr -*.iws - -## Plugin-specific files: - -# IntelliJ -/out/ - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties - - -### VisualStudio ### -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -build/ -bld/ -[Bb]in/ -[Oo]bj/ - -# Visual Studo 2015 cache/options directory -.vs/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opensdf -*.sdf -*.cachefile - -# Visual Studio profiler -*.psess -*.vsp -*.vspx - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding addin-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -_NCrunch_* -.*crunch*.local.xml - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# TODO: Comment the next line if you want to checkin your web deploy settings -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/packages/* -# except build/, which is used as an MSBuild target. -!**/packages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/packages/repositories.config - -# Windows Azure Build Output -csx/ -*.build.csdef - -# Windows Store app package directory -AppPackages/ - -# Others -*.[Cc]ache -ClientBin/ -[Ss]tyle[Cc]op.* -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.pfx -*.publishsettings -node_modules/ -bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -*.mdf -*.ldf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings - -# Microsoft Fakes -FakesAssemblies/ - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - - -### Node ### -# Logs -logs -*.log - -# Runtime data -pids -*.pid -*.seed - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directory -# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git -node_modules - - -### Ruby ### -*.gem -*.rbc -/.config -/coverage/ -/InstalledFiles -/pkg/ -/spec/reports/ -/test/tmp/ -/test/version_tmp/ -/tmp/ - -## Specific to RubyMotion: -.dat* -.repl_history -build/ - -## Documentation cache and generated files: -/.yardoc/ -/_yardoc/ -/doc/ -/rdoc/ - -## Environment normalisation: -/.bundle/ -/vendor/bundle -/lib/bundler/man/ - -# for a library or gem, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# Gemfile.lock -# .ruby-version -# .ruby-gemset - -# unless supporting rvm < 1.11.0 or doing something fancy, ignore this: -.rvmrc - - -### grunt ### -# Grunt usually compiles files inside this directory -dist/ - -# Grunt usually preprocesses files such as coffeescript, compass... inside the .tmp directory -.tmp/ - - -### WebStorm ### -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm - -*.iml - -## Directory-based project format: -.idea/ -# if you remove the above rule, at least ignore the following: - -# User-specific stuff: -# .idea/workspace.xml -# .idea/tasks.xml -# .idea/dictionaries - -# Sensitive or high-churn files: -# .idea/dataSources.ids -# .idea/dataSources.xml -# .idea/sqlDataSources.xml -# .idea/dynamic.xml -# .idea/uiDesigner.xml - -# Gradle: -# .idea/gradle.xml -# .idea/libraries - -# Mongo Explorer plugin: -# .idea/mongoSettings.xml - -## File-based project format: -*.ipr -*.iws - -## Plugin-specific files: - -# IntelliJ -/out/ - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties diff --git a/starter-template/.scss-lint.yml b/starter-template/.scss-lint.yml deleted file mode 100644 index a496c4f..0000000 --- a/starter-template/.scss-lint.yml +++ /dev/null @@ -1,3 +0,0 @@ -linters: - Indentation: - width: 4 \ No newline at end of file diff --git a/starter-template/content/styles/site-styles.css b/starter-template/content/styles/site-styles.css deleted file mode 100644 index a77f32a..0000000 --- a/starter-template/content/styles/site-styles.css +++ /dev/null @@ -1,223 +0,0 @@ -.clearfix:after { - clear: both; - content: ''; - display: table; - height: 0; } - -article, -aside, -figcaption, -figure, -footer, -header, -main, -menu, -nav, -section { - display: block; } - -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; } - -audio:not([controls]) { - display: none; - height: 0; } - -a { - background-color: transparent; } - -a:active, -a:hover { - outline: 0; } - -abbr[title] { - border-bottom: 1px dotted; } - -b, -strong { - font-weight: bold; } - -dfn { - font-style: italic; } - -mark { - background: #ff0; - color: #000; } - -small { - font-size: 80%; } - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; } - -sup { - top: -.5em; } - -sub { - bottom: -.25em; } - -img { - border: 0; } - -figure { - margin: 1em 40px; } - -hr { - box-sizing: content-box; - height: 0; } - -pre { - overflow: auto; } - -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; } - -button, -input, -optgroup, -select, -textarea { - color: inherit; - font: inherit; - margin: 0; } - -button { - overflow: visible; } - -button, -select { - text-transform: none; } - -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; } - -button[disabled], -html input[disabled] { - cursor: default; } - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; } - -input { - line-height: normal; } - -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; - padding: 0; } - -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; } - -input[type="search"] { - -webkit-appearance: textfield; - box-sizing: content-box; } - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; } - -legend { - border: 0; - padding: 0; } - -textarea { - overflow: auto; } - -optgroup { - font-weight: bold; } - -table { - border-collapse: collapse; - border-spacing: 0; } - -td, -th { - padding: 0; } - -.noscript-message { - background-color: #fff1bb; - font-size: 16px; - padding: 3px; - text-align: center; - z-index: 2147483647; } - -[disabled] { - cursor: not-allowed; } - -img { - max-width: 100%; } - -@media print { - * { - background: transparent !important; - color: #000 !important; - box-shadow: none !important; - text-shadow: none !important; } - a, - a:visited { - text-decoration: underline; } - a[href]:after { - content: ' (" attr(href) ")'; } - abbr[title]:after { - content: ' (" attr(title) ")'; } - .ir a:after, - a[href^="javascript:"]:after, - a[href^="#"]:after { - content: ''; } - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; } - thead { - display: table-header-group; } - tr, - img { - page-break-inside: avoid; } - img { - max-width: 100% !important; } - @page { - margin: 0.5cm; } - p, - h2, - h3 { - orphans: 3; - widows: 3; } - h2, - h3 { - page-break-after: avoid; } } - -html, -body { - height: 100%; - margin: 0; - padding: 0; - width: 100%; } - -body { - font-size: 16px; - line-height: 1.5; } - @media screen and (max-width: 1024px) { - body { - -webkit-text-size-adjust: 100%; } } - -/*# sourceMappingURL=site-styles.css.map */ diff --git a/starter-template/content/styles/site-styles.css.map b/starter-template/content/styles/site-styles.css.map deleted file mode 100644 index dc286f3..0000000 --- a/starter-template/content/styles/site-styles.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"site-styles.css","sources":["site-styles.scss","core/_config.scss","../node_modules/bourbon/app/assets/stylesheets/_bourbon.scss","../node_modules/bourbon/app/assets/stylesheets/settings/_prefixer.scss","../node_modules/bourbon/app/assets/stylesheets/settings/_px-to-em.scss","../node_modules/bourbon/app/assets/stylesheets/settings/_asset-pipeline.scss","../node_modules/bourbon/app/assets/stylesheets/functions/_assign-inputs.scss","../node_modules/bourbon/app/assets/stylesheets/functions/_contains.scss","../node_modules/bourbon/app/assets/stylesheets/functions/_contains-falsy.scss","../node_modules/bourbon/app/assets/stylesheets/functions/_is-length.scss","../node_modules/bourbon/app/assets/stylesheets/functions/_is-light.scss","../node_modules/bourbon/app/assets/stylesheets/functions/_is-number.scss","../node_modules/bourbon/app/assets/stylesheets/functions/_is-size.scss","../node_modules/bourbon/app/assets/stylesheets/functions/_px-to-em.scss","../node_modules/bourbon/app/assets/stylesheets/functions/_px-to-rem.scss","../node_modules/bourbon/app/assets/stylesheets/functions/_shade.scss","../node_modules/bourbon/app/assets/stylesheets/functions/_strip-units.scss","../node_modules/bourbon/app/assets/stylesheets/functions/_tint.scss","../node_modules/bourbon/app/assets/stylesheets/functions/_transition-property-name.scss","../node_modules/bourbon/app/assets/stylesheets/functions/_unpack.scss","../node_modules/bourbon/app/assets/stylesheets/functions/_modular-scale.scss","../node_modules/bourbon/app/assets/stylesheets/helpers/_convert-units.scss","../node_modules/bourbon/app/assets/stylesheets/helpers/_directional-values.scss","../node_modules/bourbon/app/assets/stylesheets/helpers/_font-source-declaration.scss","../node_modules/bourbon/app/assets/stylesheets/helpers/_gradient-positions-parser.scss","../node_modules/bourbon/app/assets/stylesheets/helpers/_linear-angle-parser.scss","../node_modules/bourbon/app/assets/stylesheets/helpers/_linear-gradient-parser.scss","../node_modules/bourbon/app/assets/stylesheets/helpers/_linear-positions-parser.scss","../node_modules/bourbon/app/assets/stylesheets/helpers/_linear-side-corner-parser.scss","../node_modules/bourbon/app/assets/stylesheets/helpers/_radial-arg-parser.scss","../node_modules/bourbon/app/assets/stylesheets/helpers/_radial-positions-parser.scss","../node_modules/bourbon/app/assets/stylesheets/helpers/_radial-gradient-parser.scss","../node_modules/bourbon/app/assets/stylesheets/helpers/_render-gradients.scss","../node_modules/bourbon/app/assets/stylesheets/helpers/_shape-size-stripper.scss","../node_modules/bourbon/app/assets/stylesheets/helpers/_str-to-num.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_animation.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_appearance.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_backface-visibility.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_background.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_background-image.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_border-image.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_calc.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_columns.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_filter.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_flex-box.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_font-face.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_font-feature-settings.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_hidpi-media-query.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_hyphens.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_image-rendering.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_keyframes.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_linear-gradient.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_perspective.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_placeholder.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_radial-gradient.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_selection.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_text-decoration.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_transform.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_transition.scss","../node_modules/bourbon/app/assets/stylesheets/css3/_user-select.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_border-color.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_border-radius.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_border-style.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_border-width.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_buttons.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_clearfix.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_ellipsis.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_font-stacks.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_hide-text.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_margin.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_padding.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_position.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_prefixer.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_retina-image.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_size.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_text-inputs.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_timing-functions.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_triangle.scss","../node_modules/bourbon/app/assets/stylesheets/addons/_word-wrap.scss","../node_modules/bourbon/app/assets/stylesheets/_bourbon-deprecated-upcoming.scss","../node_modules/bourbon-neat/app/assets/stylesheets/_neat.scss","../node_modules/bourbon-neat/app/assets/stylesheets/_neat-helpers.scss","../node_modules/bourbon-neat/app/assets/stylesheets/functions/_private.scss","../node_modules/bourbon-neat/app/assets/stylesheets/functions/_new-breakpoint.scss","../node_modules/bourbon-neat/app/assets/stylesheets/settings/_grid.scss","../node_modules/bourbon-neat/app/assets/stylesheets/settings/_visual-grid.scss","../node_modules/bourbon-neat/app/assets/stylesheets/settings/_disable-warnings.scss","../node_modules/bourbon-neat/app/assets/stylesheets/grid/_private.scss","../node_modules/bourbon-neat/app/assets/stylesheets/grid/_box-sizing.scss","../node_modules/bourbon-neat/app/assets/stylesheets/grid/_omega.scss","../node_modules/bourbon-neat/app/assets/stylesheets/grid/_outer-container.scss","../node_modules/bourbon-neat/app/assets/stylesheets/grid/_span-columns.scss","../node_modules/bourbon-neat/app/assets/stylesheets/grid/_row.scss","../node_modules/bourbon-neat/app/assets/stylesheets/grid/_shift.scss","../node_modules/bourbon-neat/app/assets/stylesheets/grid/_pad.scss","../node_modules/bourbon-neat/app/assets/stylesheets/grid/_fill-parent.scss","../node_modules/bourbon-neat/app/assets/stylesheets/grid/_media.scss","../node_modules/bourbon-neat/app/assets/stylesheets/grid/_to-deprecate.scss","../node_modules/bourbon-neat/app/assets/stylesheets/grid/_visual-grid.scss","../node_modules/bourbon-neat/app/assets/stylesheets/grid/_display-context.scss","../node_modules/bourbon-neat/app/assets/stylesheets/grid/_direction-context.scss","core/_colors.scss","core/_assets.scss","core/_variables.scss","core/_mixins.scss","core/_normalize.scss","core/_notifications.scss","core/_svg-sprite.scss","core/_svg-sprite-map.scss","global/_forms.scss","site-public/modules/_typography.scss","site-public/_print.scss","site-public/pages/_home.scss","site-public/layout/_layout.scss","site-public/layout/_header.scss","site-public/layout/_footer.scss"],"sourcesContent":["@charset \"utf-8\";\n\n@import 'core/config'; // Framework configuration or other settings\n\n// Frameworks\n@import 'bourbon';\n@import 'neat';\n\n// Dependencies\n@import 'core/colors', // Only color variables.\n\t\t'core/assets', // Variables for image urls, local web fonts or other assets your might have.\n\t\t'core/variables', // All other variables, including typography, measurements and etc.\n\t\t'core/mixins', // Mixins, functions, extenders.\n\t\t'core/normalize', // Contains CSS output to fix cross-browser inconsistencies.\n\t\t'core/notifications',\n\t\t'core/svg-sprite';\n\n// Plugins - Styles of third party plugins\n//@import 'plugins/slick';\n\n// Global modules - modules shared between multiple projects (e.g. admin and public sites)\n@import 'global/forms';\n\t\t//'global/tables',\n\t\t//'global/modal';\n\n// Local modules\n@import 'site-public/modules/typography';\n\n// Styles for project pages or similar views - styles that are connected by content\n@import 'site-public/print',\n\t\t'site-public/pages/home';\n\n// Structure\n@import 'site-public/layout/layout',\n\t\t'site-public/layout/header',\n\t\t'site-public/layout/footer';\n","\n// Neat settings\n$disable-warnings: true;\n$border-box-sizing: false !default;\n\n// Neat Grid Settings\n//$column: 80px;\n//$gutter: 20px;\n//$grid-columns: 12;\n//$max-width: 1180px;\n//$visual-grid: true;\n\n//@import \"neat-helpers\";\n\n//$tablet: new-breakpoint(max-width 1024px 12);\n","// Bourbon 4.2.3\n// http://bourbon.io\n// Copyright 2011-2015 thoughtbot, inc.\n// MIT License\n\n@import \"settings/prefixer\";\n@import \"settings/px-to-em\";\n@import \"settings/asset-pipeline\";\n\n@import \"functions/assign-inputs\";\n@import \"functions/contains\";\n@import \"functions/contains-falsy\";\n@import \"functions/is-length\";\n@import \"functions/is-light\";\n@import \"functions/is-number\";\n@import \"functions/is-size\";\n@import \"functions/px-to-em\";\n@import \"functions/px-to-rem\";\n@import \"functions/shade\";\n@import \"functions/strip-units\";\n@import \"functions/tint\";\n@import \"functions/transition-property-name\";\n@import \"functions/unpack\";\n@import \"functions/modular-scale\";\n\n@import \"helpers/convert-units\";\n@import \"helpers/directional-values\";\n@import \"helpers/font-source-declaration\";\n@import \"helpers/gradient-positions-parser\";\n@import \"helpers/linear-angle-parser\";\n@import \"helpers/linear-gradient-parser\";\n@import \"helpers/linear-positions-parser\";\n@import \"helpers/linear-side-corner-parser\";\n@import \"helpers/radial-arg-parser\";\n@import \"helpers/radial-positions-parser\";\n@import \"helpers/radial-gradient-parser\";\n@import \"helpers/render-gradients\";\n@import \"helpers/shape-size-stripper\";\n@import \"helpers/str-to-num\";\n\n@import \"css3/animation\";\n@import \"css3/appearance\";\n@import \"css3/backface-visibility\";\n@import \"css3/background\";\n@import \"css3/background-image\";\n@import \"css3/border-image\";\n@import \"css3/calc\";\n@import \"css3/columns\";\n@import \"css3/filter\";\n@import \"css3/flex-box\";\n@import \"css3/font-face\";\n@import \"css3/font-feature-settings\";\n@import \"css3/hidpi-media-query\";\n@import \"css3/hyphens\";\n@import \"css3/image-rendering\";\n@import \"css3/keyframes\";\n@import \"css3/linear-gradient\";\n@import \"css3/perspective\";\n@import \"css3/placeholder\";\n@import \"css3/radial-gradient\";\n@import \"css3/selection\";\n@import \"css3/text-decoration\";\n@import \"css3/transform\";\n@import \"css3/transition\";\n@import \"css3/user-select\";\n\n@import \"addons/border-color\";\n@import \"addons/border-radius\";\n@import \"addons/border-style\";\n@import \"addons/border-width\";\n@import \"addons/buttons\";\n@import \"addons/clearfix\";\n@import \"addons/ellipsis\";\n@import \"addons/font-stacks\";\n@import \"addons/hide-text\";\n@import \"addons/margin\";\n@import \"addons/padding\";\n@import \"addons/position\";\n@import \"addons/prefixer\";\n@import \"addons/retina-image\";\n@import \"addons/size\";\n@import \"addons/text-inputs\";\n@import \"addons/timing-functions\";\n@import \"addons/triangle\";\n@import \"addons/word-wrap\";\n\n@import \"bourbon-deprecated-upcoming\";\n","@charset \"UTF-8\";\n\n/// Global variables to enable or disable vendor prefixes\n\n$prefix-for-webkit: true !default;\n$prefix-for-mozilla: true !default;\n$prefix-for-microsoft: true !default;\n$prefix-for-opera: true !default;\n$prefix-for-spec: true !default;\n","$em-base: 16px !default;\n","@charset \"UTF-8\";\n\n/// A global setting to enable or disable the `$asset-pipeline` variable for all functions that accept it.\n///\n/// @type Bool\n\n$asset-pipeline: false !default;\n","@function assign-inputs($inputs, $pseudo: null) {\n $list: ();\n\n @each $input in $inputs {\n $input: unquote($input);\n $input: if($pseudo, $input + \":\" + $pseudo, $input);\n $list: append($list, $input, comma);\n }\n\n @return $list;\n}\n","@charset \"UTF-8\";\n\n/// Checks if a list contains a value(s).\n///\n/// @access private\n///\n/// @param {List} $list\n/// The list to check against.\n///\n/// @param {List} $values\n/// A single value or list of values to check for.\n///\n/// @example scss - Usage\n/// contains($list, $value)\n///\n/// @return {Bool}\n\n@function contains($list, $values...) {\n @each $value in $values {\n @if type-of(index($list, $value)) != \"number\" {\n @return false;\n }\n }\n\n @return true;\n}\n","@charset \"UTF-8\";\n\n/// Checks if a list does not contains a value.\n///\n/// @access private\n///\n/// @param {List} $list\n/// The list to check against.\n///\n/// @return {Bool}\n\n@function contains-falsy($list) {\n @each $item in $list {\n @if not $item {\n @return true;\n }\n }\n\n @return false;\n}\n","@charset \"UTF-8\";\n\n/// Checks for a valid CSS length.\n///\n/// @param {String} $value\n\n@function is-length($value) {\n @return type-of($value) != \"null\" and (str-slice($value + \"\", 1, 4) == \"calc\"\n or index(auto inherit initial 0, $value)\n or (type-of($value) == \"number\" and not(unitless($value))));\n}\n","@charset \"UTF-8\";\n\n/// Programatically determines whether a color is light or dark.\n///\n/// @link http://robots.thoughtbot.com/closer-look-color-lightness\n///\n/// @param {Color (Hex)} $color\n///\n/// @example scss - Usage\n/// is-light($color)\n///\n/// @return {Bool}\n\n@function is-light($hex-color) {\n $-local-red: red(rgba($hex-color, 1));\n $-local-green: green(rgba($hex-color, 1));\n $-local-blue: blue(rgba($hex-color, 1));\n $-local-lightness: ($-local-red * 0.2126 + $-local-green * 0.7152 + $-local-blue * 0.0722) / 255;\n\n @return $-local-lightness > 0.6;\n}\n","@charset \"UTF-8\";\n\n/// Checks for a valid number.\n///\n/// @param {Number} $value\n///\n/// @require {function} contains\n\n@function is-number($value) {\n @return contains(\"0\" \"1\" \"2\" \"3\" \"4\" \"5\" \"6\" \"7\" \"8\" \"9\" 0 1 2 3 4 5 6 7 8 9, $value);\n}\n","@charset \"UTF-8\";\n\n/// Checks for a valid CSS size.\n///\n/// @param {String} $value\n///\n/// @require {function} contains\n/// @require {function} is-length\n\n@function is-size($value) {\n @return is-length($value)\n or contains(\"fill\" \"fit-content\" \"min-content\" \"max-content\", $value);\n}\n","// Convert pixels to ems\n// eg. for a relational value of 12px write em(12) when the parent is 16px\n// if the parent is another value say 24px write em(12, 24)\n\n@function em($pxval, $base: $em-base) {\n @if not unitless($pxval) {\n $pxval: strip-units($pxval);\n }\n @if not unitless($base) {\n $base: strip-units($base);\n }\n @return ($pxval / $base) * 1em;\n}\n","// Convert pixels to rems\n// eg. for a relational value of 12px write rem(12)\n// Assumes $em-base is the font-size of \n\n@function rem($pxval) {\n @if not unitless($pxval) {\n $pxval: strip-units($pxval);\n }\n\n $base: $em-base;\n @if not unitless($base) {\n $base: strip-units($base);\n }\n @return ($pxval / $base) * 1rem;\n}\n","@charset \"UTF-8\";\n\n/// Mixes a color with black.\n///\n/// @param {Color} $color\n///\n/// @param {Number (Percentage)} $percent\n/// The amount of black to be mixed in.\n///\n/// @example scss - Usage\n/// .element {\n/// background-color: shade(#ffbb52, 60%);\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// background-color: #664a20;\n/// }\n///\n/// @return {Color}\n\n@function shade($color, $percent) {\n @return mix(#000, $color, $percent);\n}\n","@charset \"UTF-8\";\n\n/// Strips the unit from a number.\n///\n/// @param {Number (With Unit)} $value\n///\n/// @example scss - Usage\n/// $dimension: strip-units(10em);\n///\n/// @example css - CSS Output\n/// $dimension: 10;\n///\n/// @return {Number (Unitless)}\n\n@function strip-units($value) {\n @return ($value / ($value * 0 + 1));\n}\n","@charset \"UTF-8\";\n\n/// Mixes a color with white.\n///\n/// @param {Color} $color\n///\n/// @param {Number (Percentage)} $percent\n/// The amount of white to be mixed in.\n///\n/// @example scss - Usage\n/// .element {\n/// background-color: tint(#6ecaa6, 40%);\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// background-color: #a8dfc9;\n/// }\n///\n/// @return {Color}\n\n@function tint($color, $percent) {\n @return mix(#fff, $color, $percent);\n}\n","// Return vendor-prefixed property names if appropriate\n// Example: transition-property-names((transform, color, background), moz) -> -moz-transform, color, background\n//************************************************************************//\n@function transition-property-names($props, $vendor: false) {\n $new-props: ();\n\n @each $prop in $props {\n $new-props: append($new-props, transition-property-name($prop, $vendor), comma);\n }\n\n @return $new-props;\n}\n\n@function transition-property-name($prop, $vendor: false) {\n // put other properties that need to be prefixed here aswell\n @if $vendor and $prop == transform {\n @return unquote('-'+$vendor+'-'+$prop);\n }\n @else {\n @return $prop;\n }\n}\n","@charset \"UTF-8\";\n\n/// Converts shorthand to the 4-value syntax.\n///\n/// @param {List} $shorthand\n///\n/// @example scss - Usage\n/// .element {\n/// margin: unpack(1em 2em);\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// margin: 1em 2em 1em 2em;\n/// }\n\n@function unpack($shorthand) {\n @if length($shorthand) == 1 {\n @return nth($shorthand, 1) nth($shorthand, 1) nth($shorthand, 1) nth($shorthand, 1);\n } @else if length($shorthand) == 2 {\n @return nth($shorthand, 1) nth($shorthand, 2) nth($shorthand, 1) nth($shorthand, 2);\n } @else if length($shorthand) == 3 {\n @return nth($shorthand, 1) nth($shorthand, 2) nth($shorthand, 3) nth($shorthand, 2);\n } @else {\n @return $shorthand;\n }\n}\n","// Scaling Variables\n$golden: 1.618;\n$minor-second: 1.067;\n$major-second: 1.125;\n$minor-third: 1.2;\n$major-third: 1.25;\n$perfect-fourth: 1.333;\n$augmented-fourth: 1.414;\n$perfect-fifth: 1.5;\n$minor-sixth: 1.6;\n$major-sixth: 1.667;\n$minor-seventh: 1.778;\n$major-seventh: 1.875;\n$octave: 2;\n$major-tenth: 2.5;\n$major-eleventh: 2.667;\n$major-twelfth: 3;\n$double-octave: 4;\n\n$modular-scale-ratio: $perfect-fourth !default;\n$modular-scale-base: em($em-base) !default;\n\n@function modular-scale($increment, $value: $modular-scale-base, $ratio: $modular-scale-ratio) {\n $v1: nth($value, 1);\n $v2: nth($value, length($value));\n $value: $v1;\n\n // scale $v2 to just above $v1\n @while $v2 > $v1 {\n $v2: ($v2 / $ratio); // will be off-by-1\n }\n @while $v2 < $v1 {\n $v2: ($v2 * $ratio); // will fix off-by-1\n }\n\n // check AFTER scaling $v2 to prevent double-counting corner-case\n $double-stranded: $v2 > $v1;\n\n @if $increment > 0 {\n @for $i from 1 through $increment {\n @if $double-stranded and ($v1 * $ratio) > $v2 {\n $value: $v2;\n $v2: ($v2 * $ratio);\n } @else {\n $v1: ($v1 * $ratio);\n $value: $v1;\n }\n }\n }\n\n @if $increment < 0 {\n // adjust $v2 to just below $v1\n @if $double-stranded {\n $v2: ($v2 / $ratio);\n }\n\n @for $i from $increment through -1 {\n @if $double-stranded and ($v1 / $ratio) < $v2 {\n $value: $v2;\n $v2: ($v2 / $ratio);\n } @else {\n $v1: ($v1 / $ratio);\n $value: $v1;\n }\n }\n }\n\n @return $value;\n}\n","//************************************************************************//\n// Helper function for str-to-num fn.\n// Source: http://sassmeister.com/gist/9647408\n//************************************************************************//\n@function _convert-units($number, $unit) {\n $strings: \"px\", \"cm\", \"mm\", \"%\", \"ch\", \"pica\", \"in\", \"em\", \"rem\", \"pt\", \"pc\", \"ex\", \"vw\", \"vh\", \"vmin\", \"vmax\", \"deg\", \"rad\", \"grad\", \"turn\";\n $units: 1px, 1cm, 1mm, 1%, 1ch, 1pica, 1in, 1em, 1rem, 1pt, 1pc, 1ex, 1vw, 1vh, 1vmin, 1vmax, 1deg, 1rad, 1grad, 1turn;\n $index: index($strings, $unit);\n\n @if not $index {\n @warn \"Unknown unit `#{$unit}`.\";\n @return false;\n }\n\n @if type-of($number) != \"number\" {\n @warn \"`#{$number} is not a number`\";\n @return false;\n }\n\n @return $number * nth($units, $index);\n}\n","@charset \"UTF-8\";\n\n/// Directional-property mixins are shorthands for writing properties like the following\n///\n/// @ignore You can also use `false` instead of `null`.\n///\n/// @param {List} $vals\n/// List of directional values\n///\n/// @example scss - Usage\n/// .element {\n/// @include border-style(dotted null);\n/// @include margin(null 0 10px);\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// border-bottom-style: dotted;\n/// border-top-style: dotted;\n/// margin-bottom: 10px;\n/// margin-left: 0;\n/// margin-right: 0;\n/// }\n///\n/// @require {function} contains-falsy\n///\n/// @return {List}\n\n@function collapse-directionals($vals) {\n $output: null;\n\n $a: nth($vals, 1);\n $b: if(length($vals) < 2, $a, nth($vals, 2));\n $c: if(length($vals) < 3, $a, nth($vals, 3));\n $d: if(length($vals) < 2, $a, nth($vals, if(length($vals) < 4, 2, 4)));\n\n @if $a == 0 { $a: 0; }\n @if $b == 0 { $b: 0; }\n @if $c == 0 { $c: 0; }\n @if $d == 0 { $d: 0; }\n\n @if $a == $b and $a == $c and $a == $d { $output: $a; }\n @else if $a == $c and $b == $d { $output: $a $b; }\n @else if $b == $d { $output: $a $b $c; }\n @else { $output: $a $b $c $d; }\n\n @return $output;\n}\n\n/// Output directional properties, for instance `margin`.\n///\n/// @access private\n///\n/// @param {String} $pre\n/// Prefix to use\n/// @param {String} $suf\n/// Suffix to use\n/// @param {List} $vals\n/// List of values\n///\n/// @require {function} collapse-directionals\n/// @require {function} contains-falsy\n\n@mixin directional-property($pre, $suf, $vals) {\n // Property Names\n $top: $pre + \"-top\" + if($suf, \"-#{$suf}\", \"\");\n $bottom: $pre + \"-bottom\" + if($suf, \"-#{$suf}\", \"\");\n $left: $pre + \"-left\" + if($suf, \"-#{$suf}\", \"\");\n $right: $pre + \"-right\" + if($suf, \"-#{$suf}\", \"\");\n $all: $pre + if($suf, \"-#{$suf}\", \"\");\n\n $vals: collapse-directionals($vals);\n\n @if contains-falsy($vals) {\n @if nth($vals, 1) { #{$top}: nth($vals, 1); }\n\n @if length($vals) == 1 {\n @if nth($vals, 1) { #{$right}: nth($vals, 1); }\n } @else {\n @if nth($vals, 2) { #{$right}: nth($vals, 2); }\n }\n\n @if length($vals) == 2 {\n @if nth($vals, 1) { #{$bottom}: nth($vals, 1); }\n @if nth($vals, 2) { #{$left}: nth($vals, 2); }\n } @else if length($vals) == 3 {\n @if nth($vals, 3) { #{$bottom}: nth($vals, 3); }\n @if nth($vals, 2) { #{$left}: nth($vals, 2); }\n } @else if length($vals) == 4 {\n @if nth($vals, 3) { #{$bottom}: nth($vals, 3); }\n @if nth($vals, 4) { #{$left}: nth($vals, 4); }\n }\n } @else {\n #{$all}: $vals;\n }\n}\n","// Used for creating the source string for fonts using @font-face\n// Reference: http://goo.gl/Ru1bKP\n\n@function font-url-prefixer($asset-pipeline) {\n @if $asset-pipeline == true {\n @return font-url;\n } @else {\n @return url;\n }\n}\n\n@function font-source-declaration(\n $font-family,\n $file-path,\n $asset-pipeline,\n $file-formats,\n $font-url) {\n\n $src: ();\n\n $formats-map: (\n eot: \"#{$file-path}.eot?#iefix\" format(\"embedded-opentype\"),\n woff2: \"#{$file-path}.woff2\" format(\"woff2\"),\n woff: \"#{$file-path}.woff\" format(\"woff\"),\n ttf: \"#{$file-path}.ttf\" format(\"truetype\"),\n svg: \"#{$file-path}.svg##{$font-family}\" format(\"svg\")\n );\n\n @each $key, $values in $formats-map {\n @if contains($file-formats, $key) {\n $file-path: nth($values, 1);\n $font-format: nth($values, 2);\n\n @if $asset-pipeline == true {\n $src: append($src, font-url($file-path) $font-format, comma);\n } @else {\n $src: append($src, url($file-path) $font-format, comma);\n }\n }\n }\n\n @return $src;\n}\n","@function _gradient-positions-parser($gradient-type, $gradient-positions) {\n @if $gradient-positions\n and ($gradient-type == linear)\n and (type-of($gradient-positions) != color) {\n $gradient-positions: _linear-positions-parser($gradient-positions);\n }\n @else if $gradient-positions\n and ($gradient-type == radial)\n and (type-of($gradient-positions) != color) {\n $gradient-positions: _radial-positions-parser($gradient-positions);\n }\n @return $gradient-positions;\n}\n","// Private function for linear-gradient-parser\n@function _linear-angle-parser($image, $first-val, $prefix, $suffix) {\n $offset: null;\n $unit-short: str-slice($first-val, str-length($first-val) - 2, str-length($first-val));\n $unit-long: str-slice($first-val, str-length($first-val) - 3, str-length($first-val));\n\n @if ($unit-long == \"grad\") or\n ($unit-long == \"turn\") {\n $offset: if($unit-long == \"grad\", -100grad * 3, -0.75turn);\n }\n\n @else if ($unit-short == \"deg\") or\n ($unit-short == \"rad\") {\n $offset: if($unit-short == \"deg\", -90 * 3, 1.6rad);\n }\n\n @if $offset {\n $num: _str-to-num($first-val);\n\n @return (\n webkit-image: -webkit- + $prefix + ($offset - $num) + $suffix,\n spec-image: $image\n );\n }\n}\n","@function _linear-gradient-parser($image) {\n $image: unquote($image);\n $gradients: ();\n $start: str-index($image, \"(\");\n $end: str-index($image, \",\");\n $first-val: str-slice($image, $start + 1, $end - 1);\n\n $prefix: str-slice($image, 0, $start);\n $suffix: str-slice($image, $end, str-length($image));\n\n $has-multiple-vals: str-index($first-val, \" \");\n $has-single-position: unquote(_position-flipper($first-val) + \"\");\n $has-angle: is-number(str-slice($first-val, 0, 0));\n\n @if $has-multiple-vals {\n $gradients: _linear-side-corner-parser($image, $first-val, $prefix, $suffix, $has-multiple-vals);\n }\n\n @else if $has-single-position != \"\" {\n $pos: unquote($has-single-position + \"\");\n\n $gradients: (\n webkit-image: -webkit- + $image,\n spec-image: $prefix + \"to \" + $pos + $suffix\n );\n }\n\n @else if $has-angle {\n // Rotate degree for webkit\n $gradients: _linear-angle-parser($image, $first-val, $prefix, $suffix);\n }\n\n @else {\n $gradients: (\n webkit-image: -webkit- + $image,\n spec-image: $image\n );\n }\n\n @return $gradients;\n}\n","@function _linear-positions-parser($pos) {\n $type: type-of(nth($pos, 1));\n $spec: null;\n $degree: null;\n $side: null;\n $corner: null;\n $length: length($pos);\n // Parse Side and corner positions\n @if ($length > 1) {\n @if nth($pos, 1) == \"to\" { // Newer syntax\n $side: nth($pos, 2);\n\n @if $length == 2 { // eg. to top\n // Swap for backwards compatability\n $degree: _position-flipper(nth($pos, 2));\n }\n @else if $length == 3 { // eg. to top left\n $corner: nth($pos, 3);\n }\n }\n @else if $length == 2 { // Older syntax (\"top left\")\n $side: _position-flipper(nth($pos, 1));\n $corner: _position-flipper(nth($pos, 2));\n }\n\n @if (\"#{$side} #{$corner}\" == \"left top\") or (\"#{$side} #{$corner}\" == \"top left\") {\n $degree: _position-flipper(#{$side}) _position-flipper(#{$corner});\n }\n @else if (\"#{$side} #{$corner}\" == \"right top\") or (\"#{$side} #{$corner}\" == \"top right\") {\n $degree: _position-flipper(#{$side}) _position-flipper(#{$corner});\n }\n @else if (\"#{$side} #{$corner}\" == \"right bottom\") or (\"#{$side} #{$corner}\" == \"bottom right\") {\n $degree: _position-flipper(#{$side}) _position-flipper(#{$corner});\n }\n @else if (\"#{$side} #{$corner}\" == \"left bottom\") or (\"#{$side} #{$corner}\" == \"bottom left\") {\n $degree: _position-flipper(#{$side}) _position-flipper(#{$corner});\n }\n $spec: to $side $corner;\n }\n @else if $length == 1 {\n // Swap for backwards compatability\n @if $type == string {\n $degree: $pos;\n $spec: to _position-flipper($pos);\n }\n @else {\n $degree: -270 - $pos; //rotate the gradient opposite from spec\n $spec: $pos;\n }\n }\n $degree: unquote($degree + \",\");\n $spec: unquote($spec + \",\");\n @return $degree $spec;\n}\n\n@function _position-flipper($pos) {\n @return if($pos == left, right, null)\n if($pos == right, left, null)\n if($pos == top, bottom, null)\n if($pos == bottom, top, null);\n}\n","// Private function for linear-gradient-parser\n@function _linear-side-corner-parser($image, $first-val, $prefix, $suffix, $has-multiple-vals) {\n $val-1: str-slice($first-val, 0, $has-multiple-vals - 1 );\n $val-2: str-slice($first-val, $has-multiple-vals + 1, str-length($first-val));\n $val-3: null;\n $has-val-3: str-index($val-2, \" \");\n\n @if $has-val-3 {\n $val-3: str-slice($val-2, $has-val-3 + 1, str-length($val-2));\n $val-2: str-slice($val-2, 0, $has-val-3 - 1);\n }\n\n $pos: _position-flipper($val-1) _position-flipper($val-2) _position-flipper($val-3);\n $pos: unquote($pos + \"\");\n\n // Use old spec for webkit\n @if $val-1 == \"to\" {\n @return (\n webkit-image: -webkit- + $prefix + $pos + $suffix,\n spec-image: $image\n );\n }\n\n // Bring the code up to spec\n @else {\n @return (\n webkit-image: -webkit- + $image,\n spec-image: $prefix + \"to \" + $pos + $suffix\n );\n }\n}\n","@function _radial-arg-parser($g1, $g2, $pos, $shape-size) {\n @each $value in $g1, $g2 {\n $first-val: nth($value, 1);\n $pos-type: type-of($first-val);\n $spec-at-index: null;\n\n // Determine if spec was passed to mixin\n @if type-of($value) == list {\n $spec-at-index: if(index($value, at), index($value, at), false);\n }\n @if $spec-at-index {\n @if $spec-at-index > 1 {\n @for $i from 1 through ($spec-at-index - 1) {\n $shape-size: $shape-size nth($value, $i);\n }\n @for $i from ($spec-at-index + 1) through length($value) {\n $pos: $pos nth($value, $i);\n }\n }\n @else if $spec-at-index == 1 {\n @for $i from ($spec-at-index + 1) through length($value) {\n $pos: $pos nth($value, $i);\n }\n }\n $g1: null;\n }\n\n // If not spec calculate correct values\n @else {\n @if ($pos-type != color) or ($first-val != \"transparent\") {\n @if ($pos-type == number)\n or ($first-val == \"center\")\n or ($first-val == \"top\")\n or ($first-val == \"right\")\n or ($first-val == \"bottom\")\n or ($first-val == \"left\") {\n\n $pos: $value;\n\n @if $pos == $g1 {\n $g1: null;\n }\n }\n\n @else if\n ($first-val == \"ellipse\")\n or ($first-val == \"circle\")\n or ($first-val == \"closest-side\")\n or ($first-val == \"closest-corner\")\n or ($first-val == \"farthest-side\")\n or ($first-val == \"farthest-corner\")\n or ($first-val == \"contain\")\n or ($first-val == \"cover\") {\n\n $shape-size: $value;\n\n @if $value == $g1 {\n $g1: null;\n }\n\n @else if $value == $g2 {\n $g2: null;\n }\n }\n }\n }\n }\n @return $g1, $g2, $pos, $shape-size;\n}\n","@function _radial-positions-parser($gradient-pos) {\n $shape-size: nth($gradient-pos, 1);\n $pos: nth($gradient-pos, 2);\n $shape-size-spec: _shape-size-stripper($shape-size);\n\n $pre-spec: unquote(if($pos, \"#{$pos}, \", null))\n unquote(if($shape-size, \"#{$shape-size},\", null));\n $pos-spec: if($pos, \"at #{$pos}\", null);\n\n $spec: \"#{$shape-size-spec} #{$pos-spec}\";\n\n // Add comma\n @if ($spec != \" \") {\n $spec: \"#{$spec},\";\n }\n\n @return $pre-spec $spec;\n}\n","@function _radial-gradient-parser($image) {\n $image: unquote($image);\n $gradients: ();\n $start: str-index($image, \"(\");\n $end: str-index($image, \",\");\n $first-val: str-slice($image, $start + 1, $end - 1);\n\n $prefix: str-slice($image, 0, $start);\n $suffix: str-slice($image, $end, str-length($image));\n\n $is-spec-syntax: str-index($first-val, \"at\");\n\n @if $is-spec-syntax and $is-spec-syntax > 1 {\n $keyword: str-slice($first-val, 1, $is-spec-syntax - 2);\n $pos: str-slice($first-val, $is-spec-syntax + 3, str-length($first-val));\n $pos: append($pos, $keyword, comma);\n\n $gradients: (\n webkit-image: -webkit- + $prefix + $pos + $suffix,\n spec-image: $image\n );\n }\n\n @else if $is-spec-syntax == 1 {\n $pos: str-slice($first-val, $is-spec-syntax + 3, str-length($first-val));\n\n $gradients: (\n webkit-image: -webkit- + $prefix + $pos + $suffix,\n spec-image: $image\n );\n }\n\n @else if str-index($image, \"cover\") or str-index($image, \"contain\") {\n @warn \"Radial-gradient needs to be updated to conform to latest spec.\";\n\n $gradients: (\n webkit-image: null,\n spec-image: $image\n );\n }\n\n @else {\n $gradients: (\n webkit-image: -webkit- + $image,\n spec-image: $image\n );\n }\n\n @return $gradients;\n}\n","// User for linear and radial gradients within background-image or border-image properties\n\n@function _render-gradients($gradient-positions, $gradients, $gradient-type, $vendor: false) {\n $pre-spec: null;\n $spec: null;\n $vendor-gradients: null;\n @if $gradient-type == linear {\n @if $gradient-positions {\n $pre-spec: nth($gradient-positions, 1);\n $spec: nth($gradient-positions, 2);\n }\n }\n @else if $gradient-type == radial {\n $pre-spec: nth($gradient-positions, 1);\n $spec: nth($gradient-positions, 2);\n }\n\n @if $vendor {\n $vendor-gradients: -#{$vendor}-#{$gradient-type}-gradient(#{$pre-spec} $gradients);\n }\n @else if $vendor == false {\n $vendor-gradients: \"#{$gradient-type}-gradient(#{$spec} #{$gradients})\";\n $vendor-gradients: unquote($vendor-gradients);\n }\n @return $vendor-gradients;\n}\n","@function _shape-size-stripper($shape-size) {\n $shape-size-spec: null;\n @each $value in $shape-size {\n @if ($value == \"cover\") or ($value == \"contain\") {\n $value: null;\n }\n $shape-size-spec: \"#{$shape-size-spec} #{$value}\";\n }\n @return $shape-size-spec;\n}\n","//************************************************************************//\n// Helper function for linear/radial-gradient-parsers.\n// Source: http://sassmeister.com/gist/9647408\n//************************************************************************//\n@function _str-to-num($string) {\n // Matrices\n $strings: \"0\" \"1\" \"2\" \"3\" \"4\" \"5\" \"6\" \"7\" \"8\" \"9\";\n $numbers: 0 1 2 3 4 5 6 7 8 9;\n\n // Result\n $result: 0;\n $divider: 0;\n $minus: false;\n\n // Looping through all characters\n @for $i from 1 through str-length($string) {\n $character: str-slice($string, $i, $i);\n $index: index($strings, $character);\n\n @if $character == \"-\" {\n $minus: true;\n }\n\n @else if $character == \".\" {\n $divider: 1;\n }\n\n @else {\n @if not $index {\n $result: if($minus, $result * -1, $result);\n @return _convert-units($result, str-slice($string, $i));\n }\n\n $number: nth($numbers, $index);\n\n @if $divider == 0 {\n $result: $result * 10;\n }\n\n @else {\n // Move the decimal dot to the left\n $divider: $divider * 10;\n $number: $number / $divider;\n }\n\n $result: $result + $number;\n }\n }\n @return if($minus, $result * -1, $result);\n}\n","// http://www.w3.org/TR/css3-animations/#the-animation-name-property-\n// Each of these mixins support comma separated lists of values, which allows different transitions for individual properties to be described in a single style rule. Each value in the list corresponds to the value at that same position in the other properties.\n\n@mixin animation($animations...) {\n @include prefixer(animation, $animations, webkit moz spec);\n}\n\n@mixin animation-name($names...) {\n @include prefixer(animation-name, $names, webkit moz spec);\n}\n\n@mixin animation-duration($times...) {\n @include prefixer(animation-duration, $times, webkit moz spec);\n}\n\n@mixin animation-timing-function($motions...) {\n // ease | linear | ease-in | ease-out | ease-in-out\n @include prefixer(animation-timing-function, $motions, webkit moz spec);\n}\n\n@mixin animation-iteration-count($values...) {\n // infinite | \n @include prefixer(animation-iteration-count, $values, webkit moz spec);\n}\n\n@mixin animation-direction($directions...) {\n // normal | alternate\n @include prefixer(animation-direction, $directions, webkit moz spec);\n}\n\n@mixin animation-play-state($states...) {\n // running | paused\n @include prefixer(animation-play-state, $states, webkit moz spec);\n}\n\n@mixin animation-delay($times...) {\n @include prefixer(animation-delay, $times, webkit moz spec);\n}\n\n@mixin animation-fill-mode($modes...) {\n // none | forwards | backwards | both\n @include prefixer(animation-fill-mode, $modes, webkit moz spec);\n}\n","@mixin appearance($value) {\n @include prefixer(appearance, $value, webkit moz ms o spec);\n}\n","@mixin backface-visibility($visibility) {\n @include prefixer(backface-visibility, $visibility, webkit spec);\n}\n","//************************************************************************//\n// Background property for adding multiple backgrounds using shorthand\n// notation.\n//************************************************************************//\n\n@mixin background($backgrounds...) {\n $webkit-backgrounds: ();\n $spec-backgrounds: ();\n\n @each $background in $backgrounds {\n $webkit-background: ();\n $spec-background: ();\n $background-type: type-of($background);\n\n @if $background-type == string or $background-type == list {\n $background-str: if($background-type == list, nth($background, 1), $background);\n\n $url-str: str-slice($background-str, 0, 3);\n $gradient-type: str-slice($background-str, 0, 6);\n\n @if $url-str == \"url\" {\n $webkit-background: $background;\n $spec-background: $background;\n }\n\n @else if $gradient-type == \"linear\" {\n $gradients: _linear-gradient-parser(\"#{$background}\");\n $webkit-background: map-get($gradients, webkit-image);\n $spec-background: map-get($gradients, spec-image);\n }\n\n @else if $gradient-type == \"radial\" {\n $gradients: _radial-gradient-parser(\"#{$background}\");\n $webkit-background: map-get($gradients, webkit-image);\n $spec-background: map-get($gradients, spec-image);\n }\n\n @else {\n $webkit-background: $background;\n $spec-background: $background;\n }\n }\n\n @else {\n $webkit-background: $background;\n $spec-background: $background;\n }\n\n $webkit-backgrounds: append($webkit-backgrounds, $webkit-background, comma);\n $spec-backgrounds: append($spec-backgrounds, $spec-background, comma);\n }\n\n background: $webkit-backgrounds;\n background: $spec-backgrounds;\n}\n","//************************************************************************//\n// Background-image property for adding multiple background images with\n// gradients, or for stringing multiple gradients together.\n//************************************************************************//\n\n@mixin background-image($images...) {\n $webkit-images: ();\n $spec-images: ();\n\n @each $image in $images {\n $webkit-image: ();\n $spec-image: ();\n\n @if (type-of($image) == string) {\n $url-str: str-slice($image, 0, 3);\n $gradient-type: str-slice($image, 0, 6);\n\n @if $url-str == \"url\" {\n $webkit-image: $image;\n $spec-image: $image;\n }\n\n @else if $gradient-type == \"linear\" {\n $gradients: _linear-gradient-parser($image);\n $webkit-image: map-get($gradients, webkit-image);\n $spec-image: map-get($gradients, spec-image);\n }\n\n @else if $gradient-type == \"radial\" {\n $gradients: _radial-gradient-parser($image);\n $webkit-image: map-get($gradients, webkit-image);\n $spec-image: map-get($gradients, spec-image);\n }\n }\n\n $webkit-images: append($webkit-images, $webkit-image, comma);\n $spec-images: append($spec-images, $spec-image, comma);\n }\n\n background-image: $webkit-images;\n background-image: $spec-images;\n}\n","@mixin border-image($borders...) {\n $webkit-borders: ();\n $spec-borders: ();\n\n @each $border in $borders {\n $webkit-border: ();\n $spec-border: ();\n $border-type: type-of($border);\n\n @if $border-type == string or list {\n $border-str: if($border-type == list, nth($border, 1), $border);\n\n $url-str: str-slice($border-str, 0, 3);\n $gradient-type: str-slice($border-str, 0, 6);\n\n @if $url-str == \"url\" {\n $webkit-border: $border;\n $spec-border: $border;\n }\n\n @else if $gradient-type == \"linear\" {\n $gradients: _linear-gradient-parser(\"#{$border}\");\n $webkit-border: map-get($gradients, webkit-image);\n $spec-border: map-get($gradients, spec-image);\n }\n\n @else if $gradient-type == \"radial\" {\n $gradients: _radial-gradient-parser(\"#{$border}\");\n $webkit-border: map-get($gradients, webkit-image);\n $spec-border: map-get($gradients, spec-image);\n }\n\n @else {\n $webkit-border: $border;\n $spec-border: $border;\n }\n }\n\n @else {\n $webkit-border: $border;\n $spec-border: $border;\n }\n\n $webkit-borders: append($webkit-borders, $webkit-border, comma);\n $spec-borders: append($spec-borders, $spec-border, comma);\n }\n\n -webkit-border-image: $webkit-borders;\n border-image: $spec-borders;\n border-style: solid;\n}\n\n//Examples:\n// @include border-image(url(\"image.png\"));\n// @include border-image(url(\"image.png\") 20 stretch);\n// @include border-image(linear-gradient(45deg, orange, yellow));\n// @include border-image(linear-gradient(45deg, orange, yellow) stretch);\n// @include border-image(linear-gradient(45deg, orange, yellow) 20 30 40 50 stretch round);\n// @include border-image(radial-gradient(top, cover, orange, yellow, orange));\n","@mixin calc($property, $value) {\n #{$property}: -webkit-calc(#{$value});\n #{$property}: calc(#{$value});\n}\n","@mixin columns($arg: auto) {\n // || \n @include prefixer(columns, $arg, webkit moz spec);\n}\n\n@mixin column-count($int: auto) {\n // auto || integer\n @include prefixer(column-count, $int, webkit moz spec);\n}\n\n@mixin column-gap($length: normal) {\n // normal || length\n @include prefixer(column-gap, $length, webkit moz spec);\n}\n\n@mixin column-fill($arg: auto) {\n // auto || length\n @include prefixer(column-fill, $arg, webkit moz spec);\n}\n\n@mixin column-rule($arg) {\n // || || \n @include prefixer(column-rule, $arg, webkit moz spec);\n}\n\n@mixin column-rule-color($color) {\n @include prefixer(column-rule-color, $color, webkit moz spec);\n}\n\n@mixin column-rule-style($style: none) {\n // none | hidden | dashed | dotted | double | groove | inset | inset | outset | ridge | solid\n @include prefixer(column-rule-style, $style, webkit moz spec);\n}\n\n@mixin column-rule-width ($width: none) {\n @include prefixer(column-rule-width, $width, webkit moz spec);\n}\n\n@mixin column-span($arg: none) {\n // none || all\n @include prefixer(column-span, $arg, webkit moz spec);\n}\n\n@mixin column-width($length: auto) {\n // auto || length\n @include prefixer(column-width, $length, webkit moz spec);\n}\n","@mixin filter($function: none) {\n // [\n @include prefixer(perspective, $depth, webkit moz spec);\n}\n\n@mixin perspective-origin($value: 50% 50%) {\n @include prefixer(perspective-origin, $value, webkit moz spec);\n}\n","@mixin placeholder {\n $placeholders: \":-webkit-input\" \":-moz\" \"-moz\" \"-ms-input\";\n @each $placeholder in $placeholders {\n &:#{$placeholder}-placeholder {\n @content;\n }\n }\n}\n","// Requires Sass 3.1+\n@mixin radial-gradient($g1, $g2,\n $g3: null, $g4: null,\n $g5: null, $g6: null,\n $g7: null, $g8: null,\n $g9: null, $g10: null,\n $pos: null,\n $shape-size: null,\n $fallback: null) {\n\n $data: _radial-arg-parser($g1, $g2, $pos, $shape-size);\n $g1: nth($data, 1);\n $g2: nth($data, 2);\n $pos: nth($data, 3);\n $shape-size: nth($data, 4);\n\n $full: $g1, $g2, $g3, $g4, $g5, $g6, $g7, $g8, $g9, $g10;\n\n // Strip deprecated cover/contain for spec\n $shape-size-spec: _shape-size-stripper($shape-size);\n\n // Set $g1 as the default fallback color\n $first-color: nth($full, 1);\n $fallback-color: nth($first-color, 1);\n\n @if (type-of($fallback) == color) or ($fallback == \"transparent\") {\n $fallback-color: $fallback;\n }\n\n // Add Commas and spaces\n $shape-size: if($shape-size, \"#{$shape-size}, \", null);\n $pos: if($pos, \"#{$pos}, \", null);\n $pos-spec: if($pos, \"at #{$pos}\", null);\n $shape-size-spec: if(($shape-size-spec != \" \") and ($pos == null), \"#{$shape-size-spec}, \", \"#{$shape-size-spec} \");\n\n background-color: $fallback-color;\n background-image: -webkit-radial-gradient(unquote(#{$pos}#{$shape-size}#{$full}));\n background-image: unquote(\"radial-gradient(#{$shape-size-spec}#{$pos-spec}#{$full})\");\n}\n","@charset \"UTF-8\";\r\n\r\n/// Outputs the spec and prefixed versions of the `::selection` pseudo-element.\r\n///\r\n/// @param {Bool} $current-selector [false]\r\n/// If set to `true`, it takes the current element into consideration.\r\n///\r\n/// @example scss - Usage\r\n/// .element {\r\n/// @include selection(true) {\r\n/// background-color: #ffbb52;\r\n/// }\r\n/// }\r\n///\r\n/// @example css - CSS Output\r\n/// .element::-moz-selection {\r\n/// background-color: #ffbb52;\r\n/// }\r\n///\r\n/// .element::selection {\r\n/// background-color: #ffbb52;\r\n/// }\r\n\r\n@mixin selection($current-selector: false) {\r\n @if $current-selector {\r\n &::-moz-selection {\r\n @content;\r\n }\r\n\r\n &::selection {\r\n @content;\r\n }\r\n } @else {\r\n ::-moz-selection {\r\n @content;\r\n }\r\n\r\n ::selection {\r\n @content;\r\n }\r\n }\r\n}\r\n","@mixin text-decoration($value) {\n// || || \n @include prefixer(text-decoration, $value, moz);\n}\n\n@mixin text-decoration-line($line: none) {\n// none || underline || overline || line-through\n @include prefixer(text-decoration-line, $line, moz);\n}\n\n@mixin text-decoration-style($style: solid) {\n// solid || double || dotted || dashed || wavy\n @include prefixer(text-decoration-style, $style, moz webkit);\n}\n\n@mixin text-decoration-color($color: currentColor) {\n// currentColor || \n @include prefixer(text-decoration-color, $color, moz);\n}\n","@mixin transform($property: none) {\n // none | \n @include prefixer(transform, $property, webkit moz ms o spec);\n}\n\n@mixin transform-origin($axes: 50%) {\n // x-axis - left | center | right | length | %\n // y-axis - top | center | bottom | length | %\n // z-axis - length\n @include prefixer(transform-origin, $axes, webkit moz ms o spec);\n}\n\n@mixin transform-style($style: flat) {\n @include prefixer(transform-style, $style, webkit moz ms o spec);\n}\n","// Shorthand mixin. Supports multiple parentheses-deliminated values for each variable.\n// Example: @include transition (all 2s ease-in-out);\n// @include transition (opacity 1s ease-in 2s, width 2s ease-out);\n// @include transition-property (transform, opacity);\n\n@mixin transition($properties...) {\n // Fix for vendor-prefix transform property\n $needs-prefixes: false;\n $webkit: ();\n $moz: ();\n $spec: ();\n\n // Create lists for vendor-prefixed transform\n @each $list in $properties {\n @if nth($list, 1) == \"transform\" {\n $needs-prefixes: true;\n $list1: -webkit-transform;\n $list2: -moz-transform;\n $list3: ();\n\n @each $var in $list {\n $list3: join($list3, $var);\n\n @if $var != \"transform\" {\n $list1: join($list1, $var);\n $list2: join($list2, $var);\n }\n }\n\n $webkit: append($webkit, $list1);\n $moz: append($moz, $list2);\n $spec: append($spec, $list3);\n } @else {\n $webkit: append($webkit, $list, comma);\n $moz: append($moz, $list, comma);\n $spec: append($spec, $list, comma);\n }\n }\n\n @if $needs-prefixes {\n -webkit-transition: $webkit;\n -moz-transition: $moz;\n transition: $spec;\n } @else {\n @if length($properties) >= 1 {\n @include prefixer(transition, $properties, webkit moz spec);\n } @else {\n $properties: all 0.15s ease-out 0s;\n @include prefixer(transition, $properties, webkit moz spec);\n }\n }\n}\n\n@mixin transition-property($properties...) {\n -webkit-transition-property: transition-property-names($properties, \"webkit\");\n -moz-transition-property: transition-property-names($properties, \"moz\");\n transition-property: transition-property-names($properties, false);\n}\n\n@mixin transition-duration($times...) {\n @include prefixer(transition-duration, $times, webkit moz spec);\n}\n\n@mixin transition-timing-function($motions...) {\n // ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier()\n @include prefixer(transition-timing-function, $motions, webkit moz spec);\n}\n\n@mixin transition-delay($times...) {\n @include prefixer(transition-delay, $times, webkit moz spec);\n}\n","@mixin user-select($value: none) {\n @include prefixer(user-select, $value, webkit moz ms spec);\n}\n","@charset \"UTF-8\";\n\n/// Provides a quick method for targeting `border-color` on specific sides of a box. Use a `null` value to “skip” a side.\n///\n/// @param {Arglist} $vals\n/// List of arguments\n///\n/// @example scss - Usage\n/// .element {\n/// @include border-color(#a60b55 #76cd9c null #e8ae1a);\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// border-left-color: #e8ae1a;\n/// border-right-color: #76cd9c;\n/// border-top-color: #a60b55;\n/// }\n///\n/// @require {mixin} directional-property\n///\n/// @output `border-color`\n\n@mixin border-color($vals...) {\n @include directional-property(border, color, $vals...);\n}\n","@charset \"UTF-8\";\n\n/// Provides a quick method for targeting `border-radius` on both corners on the side of a box.\n///\n/// @param {Number} $radii\n/// List of arguments\n///\n/// @example scss - Usage\n/// .element-one {\n/// @include border-top-radius(5px);\n/// }\n///\n/// .element-two {\n/// @include border-left-radius(3px);\n/// }\n///\n/// @example css - CSS Output\n/// .element-one {\n/// border-top-left-radius: 5px;\n/// border-top-right-radius: 5px;\n/// }\n///\n/// .element-two {\n/// border-bottom-left-radius: 3px;\n/// border-top-left-radius: 3px;\n/// }\n///\n/// @output `border-radius`\n\n@mixin border-top-radius($radii) {\n border-top-left-radius: $radii;\n border-top-right-radius: $radii;\n}\n\n@mixin border-right-radius($radii) {\n border-bottom-right-radius: $radii;\n border-top-right-radius: $radii;\n}\n\n@mixin border-bottom-radius($radii) {\n border-bottom-left-radius: $radii;\n border-bottom-right-radius: $radii;\n}\n\n@mixin border-left-radius($radii) {\n border-bottom-left-radius: $radii;\n border-top-left-radius: $radii;\n}\n","@charset \"UTF-8\";\n\n/// Provides a quick method for targeting `border-style` on specific sides of a box. Use a `null` value to “skip” a side.\n///\n/// @param {Arglist} $vals\n/// List of arguments\n///\n/// @example scss - Usage\n/// .element {\n/// @include border-style(dashed null solid);\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// border-bottom-style: solid;\n/// border-top-style: dashed;\n/// }\n///\n/// @require {mixin} directional-property\n///\n/// @output `border-style`\n\n@mixin border-style($vals...) {\n @include directional-property(border, style, $vals...);\n}\n","@charset \"UTF-8\";\n\n/// Provides a quick method for targeting `border-width` on specific sides of a box. Use a `null` value to “skip” a side.\n///\n/// @param {Arglist} $vals\n/// List of arguments\n///\n/// @example scss - Usage\n/// .element {\n/// @include border-width(1em null 20px);\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// border-bottom-width: 20px;\n/// border-top-width: 1em;\n/// }\n///\n/// @require {mixin} directional-property\n///\n/// @output `border-width`\n\n@mixin border-width($vals...) {\n @include directional-property(border, width, $vals...);\n}\n","@charset \"UTF-8\";\n\n/// Generates variables for all buttons. Please note that you must use interpolation on the variable: `#{$all-buttons}`.\n///\n/// @example scss - Usage\n/// #{$all-buttons} {\n/// background-color: #f00;\n/// }\n///\n/// #{$all-buttons-focus},\n/// #{$all-buttons-hover} {\n/// background-color: #0f0;\n/// }\n///\n/// #{$all-buttons-active} {\n/// background-color: #00f;\n/// }\n///\n/// @example css - CSS Output\n/// button,\n/// input[type=\"button\"],\n/// input[type=\"reset\"],\n/// input[type=\"submit\"] {\n/// background-color: #f00;\n/// }\n///\n/// button:focus,\n/// input[type=\"button\"]:focus,\n/// input[type=\"reset\"]:focus,\n/// input[type=\"submit\"]:focus,\n/// button:hover,\n/// input[type=\"button\"]:hover,\n/// input[type=\"reset\"]:hover,\n/// input[type=\"submit\"]:hover {\n/// background-color: #0f0;\n/// }\n///\n/// button:active,\n/// input[type=\"button\"]:active,\n/// input[type=\"reset\"]:active,\n/// input[type=\"submit\"]:active {\n/// background-color: #00f;\n/// }\n///\n/// @require assign-inputs\n///\n/// @type List\n///\n/// @todo Remove double assigned variables (Lines 59–62) in v5.0.0\n\n$buttons-list: 'button',\n 'input[type=\"button\"]',\n 'input[type=\"reset\"]',\n 'input[type=\"submit\"]';\n\n$all-buttons: assign-inputs($buttons-list);\n$all-buttons-active: assign-inputs($buttons-list, active);\n$all-buttons-focus: assign-inputs($buttons-list, focus);\n$all-buttons-hover: assign-inputs($buttons-list, hover);\n\n$all-button-inputs: $all-buttons;\n$all-button-inputs-active: $all-buttons-active;\n$all-button-inputs-focus: $all-buttons-focus;\n$all-button-inputs-hover: $all-buttons-hover;\n","@charset \"UTF-8\";\n\n/// Provides an easy way to include a clearfix for containing floats.\n///\n/// @link http://cssmojo.com/latest_new_clearfix_so_far/\n///\n/// @example scss - Usage\n/// .element {\n/// @include clearfix;\n/// }\n///\n/// @example css - CSS Output\n/// .element::after {\n/// clear: both;\n/// content: \"\";\n/// display: table;\n/// }\n\n@mixin clearfix {\n &::after {\n clear: both;\n content: \"\";\n display: table;\n }\n}\n","@charset \"UTF-8\";\n\n/// Truncates text and adds an ellipsis to represent overflow.\n///\n/// @param {Number} $width [100%]\n/// Max-width for the string to respect before being truncated\n///\n/// @example scss - Usage\n/// .element {\n/// @include ellipsis;\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// display: inline-block;\n/// max-width: 100%;\n/// overflow: hidden;\n/// text-overflow: ellipsis;\n/// white-space: nowrap;\n/// word-wrap: normal;\n/// }\n\n@mixin ellipsis($width: 100%) {\n display: inline-block;\n max-width: $width;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n word-wrap: normal;\n}\n","@charset \"UTF-8\";\n\n/// Georgia font stack.\n///\n/// @type List\n\n$georgia: \"Georgia\", \"Cambria\", \"Times New Roman\", \"Times\", serif;\n\n/// Helvetica font stack.\n///\n/// @type List\n\n$helvetica: \"Helvetica Neue\", \"Helvetica\", \"Roboto\", \"Arial\", sans-serif;\n\n/// Lucida Grande font stack.\n///\n/// @type List\n\n$lucida-grande: \"Lucida Grande\", \"Tahoma\", \"Verdana\", \"Arial\", sans-serif;\n\n/// Monospace font stack.\n///\n/// @type List\n\n$monospace: \"Bitstream Vera Sans Mono\", \"Consolas\", \"Courier\", monospace;\n\n/// Verdana font stack.\n///\n/// @type List\n\n$verdana: \"Verdana\", \"Geneva\", sans-serif;\n","/// Hides the text in an element, commonly used to show an image. Some elements will need block-level styles applied.\n///\n/// @link http://zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement\n///\n/// @example scss - Usage\n/// .element {\n/// @include hide-text;\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// overflow: hidden;\n/// text-indent: 101%;\n/// white-space: nowrap;\n/// }\n///\n/// @todo Remove height argument in v5.0.0\n\n@mixin hide-text($height: null) {\n overflow: hidden;\n text-indent: 101%;\n white-space: nowrap;\n\n @if $height {\n @warn \"The `hide-text` mixin has changed and no longer requires a height. The height argument will no longer be accepted in v5.0.0\";\n }\n}\n","@charset \"UTF-8\";\n\n/// Provides a quick method for targeting `margin` on specific sides of a box. Use a `null` value to “skip” a side.\n///\n/// @param {Arglist} $vals\n/// List of arguments\n///\n/// @example scss - Usage\n/// .element {\n/// @include margin(null 10px 3em 20vh);\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// margin-bottom: 3em;\n/// margin-left: 20vh;\n/// margin-right: 10px;\n/// }\n///\n/// @require {mixin} directional-property\n///\n/// @output `margin`\n\n@mixin margin($vals...) {\n @include directional-property(margin, false, $vals...);\n}\n","@charset \"UTF-8\";\n\n/// Provides a quick method for targeting `padding` on specific sides of a box. Use a `null` value to “skip” a side.\n///\n/// @param {Arglist} $vals\n/// List of arguments\n///\n/// @example scss - Usage\n/// .element {\n/// @include padding(12vh null 10px 5%);\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// padding-bottom: 10px;\n/// padding-left: 5%;\n/// padding-top: 12vh;\n/// }\n///\n/// @require {mixin} directional-property\n///\n/// @output `padding`\n\n@mixin padding($vals...) {\n @include directional-property(padding, false, $vals...);\n}\n","@charset \"UTF-8\";\n\n/// Provides a quick method for setting an element’s position. Use a `null` value to “skip” a side.\n///\n/// @param {Position} $position [relative]\n/// A CSS position value\n///\n/// @param {Arglist} $coordinates [null null null null]\n/// List of values that correspond to the 4-value syntax for the edges of a box\n///\n/// @example scss - Usage\n/// .element {\n/// @include position(absolute, 0 null null 10em);\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// left: 10em;\n/// position: absolute;\n/// top: 0;\n/// }\n///\n/// @require {function} is-length\n/// @require {function} unpack\n\n@mixin position($position: relative, $coordinates: null null null null) {\n @if type-of($position) == list {\n $coordinates: $position;\n $position: relative;\n }\n\n $coordinates: unpack($coordinates);\n\n $offsets: (\n top: nth($coordinates, 1),\n right: nth($coordinates, 2),\n bottom: nth($coordinates, 3),\n left: nth($coordinates, 4)\n );\n\n position: $position;\n\n @each $offset, $value in $offsets {\n @if is-length($value) {\n #{$offset}: $value;\n }\n }\n}\n","@charset \"UTF-8\";\n\n/// A mixin for generating vendor prefixes on non-standardized properties.\n///\n/// @param {String} $property\n/// Property to prefix\n///\n/// @param {*} $value\n/// Value to use\n///\n/// @param {List} $prefixes\n/// Prefixes to define\n///\n/// @example scss - Usage\n/// .element {\n/// @include prefixer(border-radius, 10px, webkit ms spec);\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// -webkit-border-radius: 10px;\n/// -moz-border-radius: 10px;\n/// border-radius: 10px;\n/// }\n///\n/// @require {variable} $prefix-for-webkit\n/// @require {variable} $prefix-for-mozilla\n/// @require {variable} $prefix-for-microsoft\n/// @require {variable} $prefix-for-opera\n/// @require {variable} $prefix-for-spec\n\n@mixin prefixer($property, $value, $prefixes) {\n @each $prefix in $prefixes {\n @if $prefix == webkit {\n @if $prefix-for-webkit {\n -webkit-#{$property}: $value;\n }\n } @else if $prefix == moz {\n @if $prefix-for-mozilla {\n -moz-#{$property}: $value;\n }\n } @else if $prefix == ms {\n @if $prefix-for-microsoft {\n -ms-#{$property}: $value;\n }\n } @else if $prefix == o {\n @if $prefix-for-opera {\n -o-#{$property}: $value;\n }\n } @else if $prefix == spec {\n @if $prefix-for-spec {\n #{$property}: $value;\n }\n } @else {\n @warn \"Unrecognized prefix: #{$prefix}\";\n }\n }\n}\n\n@mixin disable-prefix-for-all() {\n $prefix-for-webkit: false !global;\n $prefix-for-mozilla: false !global;\n $prefix-for-microsoft: false !global;\n $prefix-for-opera: false !global;\n $prefix-for-spec: false !global;\n}\n","@mixin retina-image($filename, $background-size, $extension: png, $retina-filename: null, $retina-suffix: _2x, $asset-pipeline: $asset-pipeline) {\n @if $asset-pipeline {\n background-image: image-url(\"#{$filename}.#{$extension}\");\n } @else {\n background-image: url(\"#{$filename}.#{$extension}\");\n }\n\n @include hidpi {\n @if $asset-pipeline {\n @if $retina-filename {\n background-image: image-url(\"#{$retina-filename}.#{$extension}\");\n } @else {\n background-image: image-url(\"#{$filename}#{$retina-suffix}.#{$extension}\");\n }\n } @else {\n @if $retina-filename {\n background-image: url(\"#{$retina-filename}.#{$extension}\");\n } @else {\n background-image: url(\"#{$filename}#{$retina-suffix}.#{$extension}\");\n }\n }\n\n background-size: $background-size;\n }\n}\n","@charset \"UTF-8\";\n\n/// Sets the `width` and `height` of the element.\n///\n/// @param {List} $size\n/// A list of at most 2 size values.\n///\n/// If there is only a single value in `$size` it is used for both width and height. All units are supported.\n///\n/// @example scss - Usage\n/// .first-element {\n/// @include size(2em);\n/// }\n///\n/// .second-element {\n/// @include size(auto 10em);\n/// }\n///\n/// @example css - CSS Output\n/// .first-element {\n/// width: 2em;\n/// height: 2em;\n/// }\n///\n/// .second-element {\n/// width: auto;\n/// height: 10em;\n/// }\n///\n/// @todo Refactor in 5.0.0 to use a comma-separated argument\n\n@mixin size($value) {\n $width: nth($value, 1);\n $height: $width;\n\n @if length($value) > 1 {\n $height: nth($value, 2);\n }\n\n @if is-size($height) {\n height: $height;\n } @else {\n @warn \"`#{$height}` is not a valid length for the `$height` parameter in the `size` mixin.\";\n }\n\n @if is-size($width) {\n width: $width;\n } @else {\n @warn \"`#{$width}` is not a valid length for the `$width` parameter in the `size` mixin.\";\n }\n}\n","@charset \"UTF-8\";\n\n/// Generates variables for all text-based inputs. Please note that you must use interpolation on the variable: `#{$all-text-inputs}`.\n///\n/// @example scss - Usage\n/// #{$all-text-inputs} {\n/// border: 1px solid #f00;\n/// }\n///\n/// #{$all-text-inputs-focus},\n/// #{$all-text-inputs-hover} {\n/// border: 1px solid #0f0;\n/// }\n///\n/// #{$all-text-inputs-active} {\n/// border: 1px solid #00f;\n/// }\n///\n/// @example css - CSS Output\n/// input[type=\"color\"],\n/// input[type=\"date\"],\n/// input[type=\"datetime\"],\n/// input[type=\"datetime-local\"],\n/// input[type=\"email\"],\n/// input[type=\"month\"],\n/// input[type=\"number\"],\n/// input[type=\"password\"],\n/// input[type=\"search\"],\n/// input[type=\"tel\"],\n/// input[type=\"text\"],\n/// input[type=\"time\"],\n/// input[type=\"url\"],\n/// input[type=\"week\"],\n/// textarea {\n/// border: 1px solid #f00;\n/// }\n///\n/// input[type=\"color\"]:focus,\n/// input[type=\"date\"]:focus,\n/// input[type=\"datetime\"]:focus,\n/// input[type=\"datetime-local\"]:focus,\n/// input[type=\"email\"]:focus,\n/// input[type=\"month\"]:focus,\n/// input[type=\"number\"]:focus,\n/// input[type=\"password\"]:focus,\n/// input[type=\"search\"]:focus,\n/// input[type=\"tel\"]:focus,\n/// input[type=\"text\"]:focus,\n/// input[type=\"time\"]:focus,\n/// input[type=\"url\"]:focus,\n/// input[type=\"week\"]:focus,\n/// textarea:focus,\n/// input[type=\"color\"]:hover,\n/// input[type=\"date\"]:hover,\n/// input[type=\"datetime\"]:hover,\n/// input[type=\"datetime-local\"]:hover,\n/// input[type=\"email\"]:hover,\n/// input[type=\"month\"]:hover,\n/// input[type=\"number\"]:hover,\n/// input[type=\"password\"]:hover,\n/// input[type=\"search\"]:hover,\n/// input[type=\"tel\"]:hover,\n/// input[type=\"text\"]:hover,\n/// input[type=\"time\"]:hover,\n/// input[type=\"url\"]:hover,\n/// input[type=\"week\"]:hover,\n/// textarea:hover {\n/// border: 1px solid #0f0;\n/// }\n///\n/// input[type=\"color\"]:active,\n/// input[type=\"date\"]:active,\n/// input[type=\"datetime\"]:active,\n/// input[type=\"datetime-local\"]:active,\n/// input[type=\"email\"]:active,\n/// input[type=\"month\"]:active,\n/// input[type=\"number\"]:active,\n/// input[type=\"password\"]:active,\n/// input[type=\"search\"]:active,\n/// input[type=\"tel\"]:active,\n/// input[type=\"text\"]:active,\n/// input[type=\"time\"]:active,\n/// input[type=\"url\"]:active,\n/// input[type=\"week\"]:active,\n/// textarea:active {\n/// border: 1px solid #00f;\n/// }\n///\n/// @require assign-inputs\n///\n/// @type List\n\n$text-inputs-list: 'input[type=\"color\"]',\n 'input[type=\"date\"]',\n 'input[type=\"datetime\"]',\n 'input[type=\"datetime-local\"]',\n 'input[type=\"email\"]',\n 'input[type=\"month\"]',\n 'input[type=\"number\"]',\n 'input[type=\"password\"]',\n 'input[type=\"search\"]',\n 'input[type=\"tel\"]',\n 'input[type=\"text\"]',\n 'input[type=\"time\"]',\n 'input[type=\"url\"]',\n 'input[type=\"week\"]',\n 'textarea';\n\n$all-text-inputs: assign-inputs($text-inputs-list);\n$all-text-inputs-active: assign-inputs($text-inputs-list, active);\n$all-text-inputs-focus: assign-inputs($text-inputs-list, focus);\n$all-text-inputs-hover: assign-inputs($text-inputs-list, hover);\n","@charset \"UTF-8\";\n\n/// CSS cubic-bezier timing functions. Timing functions courtesy of jquery.easie (github.com/jaukia/easie)\n///\n/// Timing functions are the same as demoed here: http://jqueryui.com/resources/demos/effect/easing.html\n///\n/// @type cubic-bezier\n\n$ease-in-quad: cubic-bezier(0.550, 0.085, 0.680, 0.530);\n$ease-in-cubic: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n$ease-in-quart: cubic-bezier(0.895, 0.030, 0.685, 0.220);\n$ease-in-quint: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n$ease-in-sine: cubic-bezier(0.470, 0.000, 0.745, 0.715);\n$ease-in-expo: cubic-bezier(0.950, 0.050, 0.795, 0.035);\n$ease-in-circ: cubic-bezier(0.600, 0.040, 0.980, 0.335);\n$ease-in-back: cubic-bezier(0.600, -0.280, 0.735, 0.045);\n\n$ease-out-quad: cubic-bezier(0.250, 0.460, 0.450, 0.940);\n$ease-out-cubic: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n$ease-out-quart: cubic-bezier(0.165, 0.840, 0.440, 1.000);\n$ease-out-quint: cubic-bezier(0.230, 1.000, 0.320, 1.000);\n$ease-out-sine: cubic-bezier(0.390, 0.575, 0.565, 1.000);\n$ease-out-expo: cubic-bezier(0.190, 1.000, 0.220, 1.000);\n$ease-out-circ: cubic-bezier(0.075, 0.820, 0.165, 1.000);\n$ease-out-back: cubic-bezier(0.175, 0.885, 0.320, 1.275);\n\n$ease-in-out-quad: cubic-bezier(0.455, 0.030, 0.515, 0.955);\n$ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1.000);\n$ease-in-out-quart: cubic-bezier(0.770, 0.000, 0.175, 1.000);\n$ease-in-out-quint: cubic-bezier(0.860, 0.000, 0.070, 1.000);\n$ease-in-out-sine: cubic-bezier(0.445, 0.050, 0.550, 0.950);\n$ease-in-out-expo: cubic-bezier(1.000, 0.000, 0.000, 1.000);\n$ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.150, 0.860);\n$ease-in-out-back: cubic-bezier(0.680, -0.550, 0.265, 1.550);\n","@mixin triangle($size, $color, $direction) {\n $width: nth($size, 1);\n $height: nth($size, length($size));\n $foreground-color: nth($color, 1);\n $background-color: if(length($color) == 2, nth($color, 2), transparent);\n height: 0;\n width: 0;\n\n @if ($direction == up) or ($direction == down) or ($direction == right) or ($direction == left) {\n $width: $width / 2;\n $height: if(length($size) > 1, $height, $height/2);\n\n @if $direction == up {\n border-bottom: $height solid $foreground-color;\n border-left: $width solid $background-color;\n border-right: $width solid $background-color;\n } @else if $direction == right {\n border-bottom: $width solid $background-color;\n border-left: $height solid $foreground-color;\n border-top: $width solid $background-color;\n } @else if $direction == down {\n border-left: $width solid $background-color;\n border-right: $width solid $background-color;\n border-top: $height solid $foreground-color;\n } @else if $direction == left {\n border-bottom: $width solid $background-color;\n border-right: $height solid $foreground-color;\n border-top: $width solid $background-color;\n }\n } @else if ($direction == up-right) or ($direction == up-left) {\n border-top: $height solid $foreground-color;\n\n @if $direction == up-right {\n border-left: $width solid $background-color;\n } @else if $direction == up-left {\n border-right: $width solid $background-color;\n }\n } @else if ($direction == down-right) or ($direction == down-left) {\n border-bottom: $height solid $foreground-color;\n\n @if $direction == down-right {\n border-left: $width solid $background-color;\n } @else if $direction == down-left {\n border-right: $width solid $background-color;\n }\n } @else if ($direction == inset-up) {\n border-color: $background-color $background-color $foreground-color;\n border-style: solid;\n border-width: $height $width;\n } @else if ($direction == inset-down) {\n border-color: $foreground-color $background-color $background-color;\n border-style: solid;\n border-width: $height $width;\n } @else if ($direction == inset-right) {\n border-color: $background-color $background-color $background-color $foreground-color;\n border-style: solid;\n border-width: $width $height;\n } @else if ($direction == inset-left) {\n border-color: $background-color $foreground-color $background-color $background-color;\n border-style: solid;\n border-width: $width $height;\n }\n}\n","@charset \"UTF-8\";\n\n/// Provides an easy way to change the `word-wrap` property.\n///\n/// @param {String} $wrap [break-word]\n/// Value for the `word-break` property.\n///\n/// @example scss - Usage\n/// .wrapper {\n/// @include word-wrap(break-word);\n/// }\n///\n/// @example css - CSS Output\n/// .wrapper {\n/// overflow-wrap: break-word;\n/// word-break: break-all;\n/// word-wrap: break-word;\n/// }\n\n@mixin word-wrap($wrap: break-word) {\n overflow-wrap: $wrap;\n word-wrap: $wrap;\n\n @if $wrap == break-word {\n word-break: break-all;\n } @else {\n word-break: $wrap;\n }\n}\n","// The following features have been deprecated and will be removed in the next MAJOR version release\n\n@mixin inline-block {\n display: inline-block;\n\n @warn \"The inline-block mixin is deprecated and will be removed in the next major version release\";\n}\n\n@mixin button ($style: simple, $base-color: #4294f0, $text-size: inherit, $padding: 7px 18px) {\n\n @if type-of($style) == string and type-of($base-color) == color {\n @include buttonstyle($style, $base-color, $text-size, $padding);\n }\n\n @if type-of($style) == string and type-of($base-color) == number {\n $padding: $text-size;\n $text-size: $base-color;\n $base-color: #4294f0;\n\n @if $padding == inherit {\n $padding: 7px 18px;\n }\n\n @include buttonstyle($style, $base-color, $text-size, $padding);\n }\n\n @if type-of($style) == color and type-of($base-color) == color {\n $base-color: $style;\n $style: simple;\n @include buttonstyle($style, $base-color, $text-size, $padding);\n }\n\n @if type-of($style) == color and type-of($base-color) == number {\n $padding: $text-size;\n $text-size: $base-color;\n $base-color: $style;\n $style: simple;\n\n @if $padding == inherit {\n $padding: 7px 18px;\n }\n\n @include buttonstyle($style, $base-color, $text-size, $padding);\n }\n\n @if type-of($style) == number {\n $padding: $base-color;\n $text-size: $style;\n $base-color: #4294f0;\n $style: simple;\n\n @if $padding == #4294f0 {\n $padding: 7px 18px;\n }\n\n @include buttonstyle($style, $base-color, $text-size, $padding);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n @warn \"The button mixin is deprecated and will be removed in the next major version release\";\n}\n\n// Selector Style Button\n@mixin buttonstyle($type, $b-color, $t-size, $pad) {\n // Grayscale button\n @if $type == simple and $b-color == grayscale($b-color) {\n @include simple($b-color, true, $t-size, $pad);\n }\n\n @if $type == shiny and $b-color == grayscale($b-color) {\n @include shiny($b-color, true, $t-size, $pad);\n }\n\n @if $type == pill and $b-color == grayscale($b-color) {\n @include pill($b-color, true, $t-size, $pad);\n }\n\n @if $type == flat and $b-color == grayscale($b-color) {\n @include flat($b-color, true, $t-size, $pad);\n }\n\n // Colored button\n @if $type == simple {\n @include simple($b-color, false, $t-size, $pad);\n }\n\n @else if $type == shiny {\n @include shiny($b-color, false, $t-size, $pad);\n }\n\n @else if $type == pill {\n @include pill($b-color, false, $t-size, $pad);\n }\n\n @else if $type == flat {\n @include flat($b-color, false, $t-size, $pad);\n }\n}\n\n// Simple Button\n@mixin simple($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) {\n $color: hsl(0, 0, 100%);\n $border: adjust-color($base-color, $saturation: 9%, $lightness: -14%);\n $inset-shadow: adjust-color($base-color, $saturation: -8%, $lightness: 15%);\n $stop-gradient: adjust-color($base-color, $saturation: 9%, $lightness: -11%);\n $text-shadow: adjust-color($base-color, $saturation: 15%, $lightness: -18%);\n\n @if is-light($base-color) {\n $color: hsl(0, 0, 20%);\n $text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%);\n }\n\n @if $grayscale == true {\n $border: grayscale($border);\n $inset-shadow: grayscale($inset-shadow);\n $stop-gradient: grayscale($stop-gradient);\n $text-shadow: grayscale($text-shadow);\n }\n\n border: 1px solid $border;\n border-radius: 3px;\n box-shadow: inset 0 1px 0 0 $inset-shadow;\n color: $color;\n display: inline-block;\n font-size: $textsize;\n font-weight: bold;\n @include linear-gradient ($base-color, $stop-gradient);\n padding: $padding;\n text-decoration: none;\n text-shadow: 0 1px 0 $text-shadow;\n background-clip: padding-box;\n\n &:hover:not(:disabled) {\n $base-color-hover: adjust-color($base-color, $saturation: -4%, $lightness: -5%);\n $inset-shadow-hover: adjust-color($base-color, $saturation: -7%, $lightness: 5%);\n $stop-gradient-hover: adjust-color($base-color, $saturation: 8%, $lightness: -14%);\n\n @if $grayscale == true {\n $base-color-hover: grayscale($base-color-hover);\n $inset-shadow-hover: grayscale($inset-shadow-hover);\n $stop-gradient-hover: grayscale($stop-gradient-hover);\n }\n\n @include linear-gradient ($base-color-hover, $stop-gradient-hover);\n\n box-shadow: inset 0 1px 0 0 $inset-shadow-hover;\n cursor: pointer;\n }\n\n &:active:not(:disabled),\n &:focus:not(:disabled) {\n $border-active: adjust-color($base-color, $saturation: 9%, $lightness: -14%);\n $inset-shadow-active: adjust-color($base-color, $saturation: 7%, $lightness: -17%);\n\n @if $grayscale == true {\n $border-active: grayscale($border-active);\n $inset-shadow-active: grayscale($inset-shadow-active);\n }\n\n border: 1px solid $border-active;\n box-shadow: inset 0 0 8px 4px $inset-shadow-active, inset 0 0 8px 4px $inset-shadow-active;\n }\n}\n\n// Shiny Button\n@mixin shiny($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) {\n $color: hsl(0, 0, 100%);\n $border: adjust-color($base-color, $red: -117, $green: -111, $blue: -81);\n $border-bottom: adjust-color($base-color, $red: -126, $green: -127, $blue: -122);\n $fourth-stop: adjust-color($base-color, $red: -79, $green: -70, $blue: -46);\n $inset-shadow: adjust-color($base-color, $red: 37, $green: 29, $blue: 12);\n $second-stop: adjust-color($base-color, $red: -56, $green: -50, $blue: -33);\n $text-shadow: adjust-color($base-color, $red: -140, $green: -141, $blue: -114);\n $third-stop: adjust-color($base-color, $red: -86, $green: -75, $blue: -48);\n\n @if is-light($base-color) {\n $color: hsl(0, 0, 20%);\n $text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%);\n }\n\n @if $grayscale == true {\n $border: grayscale($border);\n $border-bottom: grayscale($border-bottom);\n $fourth-stop: grayscale($fourth-stop);\n $inset-shadow: grayscale($inset-shadow);\n $second-stop: grayscale($second-stop);\n $text-shadow: grayscale($text-shadow);\n $third-stop: grayscale($third-stop);\n }\n\n @include linear-gradient(top, $base-color 0%, $second-stop 50%, $third-stop 50%, $fourth-stop 100%);\n\n border: 1px solid $border;\n border-bottom: 1px solid $border-bottom;\n border-radius: 5px;\n box-shadow: inset 0 1px 0 0 $inset-shadow;\n color: $color;\n display: inline-block;\n font-size: $textsize;\n font-weight: bold;\n padding: $padding;\n text-align: center;\n text-decoration: none;\n text-shadow: 0 -1px 1px $text-shadow;\n\n &:hover:not(:disabled) {\n $first-stop-hover: adjust-color($base-color, $red: -13, $green: -15, $blue: -18);\n $second-stop-hover: adjust-color($base-color, $red: -66, $green: -62, $blue: -51);\n $third-stop-hover: adjust-color($base-color, $red: -93, $green: -85, $blue: -66);\n $fourth-stop-hover: adjust-color($base-color, $red: -86, $green: -80, $blue: -63);\n\n @if $grayscale == true {\n $first-stop-hover: grayscale($first-stop-hover);\n $second-stop-hover: grayscale($second-stop-hover);\n $third-stop-hover: grayscale($third-stop-hover);\n $fourth-stop-hover: grayscale($fourth-stop-hover);\n }\n\n @include linear-gradient(top, $first-stop-hover 0%,\n $second-stop-hover 50%,\n $third-stop-hover 50%,\n $fourth-stop-hover 100%);\n cursor: pointer;\n }\n\n &:active:not(:disabled),\n &:focus:not(:disabled) {\n $inset-shadow-active: adjust-color($base-color, $red: -111, $green: -116, $blue: -122);\n\n @if $grayscale == true {\n $inset-shadow-active: grayscale($inset-shadow-active);\n }\n\n box-shadow: inset 0 0 20px 0 $inset-shadow-active;\n }\n}\n\n// Pill Button\n@mixin pill($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) {\n $color: hsl(0, 0, 100%);\n $border-bottom: adjust-color($base-color, $hue: 8, $saturation: -11%, $lightness: -26%);\n $border-sides: adjust-color($base-color, $hue: 4, $saturation: -21%, $lightness: -21%);\n $border-top: adjust-color($base-color, $hue: -1, $saturation: -30%, $lightness: -15%);\n $inset-shadow: adjust-color($base-color, $hue: -1, $saturation: -1%, $lightness: 7%);\n $stop-gradient: adjust-color($base-color, $hue: 8, $saturation: 14%, $lightness: -10%);\n $text-shadow: adjust-color($base-color, $hue: 5, $saturation: -19%, $lightness: -15%);\n\n @if is-light($base-color) {\n $color: hsl(0, 0, 20%);\n $text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%);\n }\n\n @if $grayscale == true {\n $border-bottom: grayscale($border-bottom);\n $border-sides: grayscale($border-sides);\n $border-top: grayscale($border-top);\n $inset-shadow: grayscale($inset-shadow);\n $stop-gradient: grayscale($stop-gradient);\n $text-shadow: grayscale($text-shadow);\n }\n\n border: 1px solid $border-top;\n border-color: $border-top $border-sides $border-bottom;\n border-radius: 16px;\n box-shadow: inset 0 1px 0 0 $inset-shadow;\n color: $color;\n display: inline-block;\n font-size: $textsize;\n font-weight: normal;\n line-height: 1;\n @include linear-gradient ($base-color, $stop-gradient);\n padding: $padding;\n text-align: center;\n text-decoration: none;\n text-shadow: 0 -1px 1px $text-shadow;\n background-clip: padding-box;\n\n &:hover:not(:disabled) {\n $base-color-hover: adjust-color($base-color, $lightness: -4.5%);\n $border-bottom: adjust-color($base-color, $hue: 8, $saturation: 13.5%, $lightness: -32%);\n $border-sides: adjust-color($base-color, $hue: 4, $saturation: -2%, $lightness: -27%);\n $border-top: adjust-color($base-color, $hue: -1, $saturation: -17%, $lightness: -21%);\n $inset-shadow-hover: adjust-color($base-color, $saturation: -1%, $lightness: 3%);\n $stop-gradient-hover: adjust-color($base-color, $hue: 8, $saturation: -4%, $lightness: -15.5%);\n $text-shadow-hover: adjust-color($base-color, $hue: 5, $saturation: -5%, $lightness: -22%);\n\n @if $grayscale == true {\n $base-color-hover: grayscale($base-color-hover);\n $border-bottom: grayscale($border-bottom);\n $border-sides: grayscale($border-sides);\n $border-top: grayscale($border-top);\n $inset-shadow-hover: grayscale($inset-shadow-hover);\n $stop-gradient-hover: grayscale($stop-gradient-hover);\n $text-shadow-hover: grayscale($text-shadow-hover);\n }\n\n @include linear-gradient ($base-color-hover, $stop-gradient-hover);\n\n background-clip: padding-box;\n border: 1px solid $border-top;\n border-color: $border-top $border-sides $border-bottom;\n box-shadow: inset 0 1px 0 0 $inset-shadow-hover;\n cursor: pointer;\n text-shadow: 0 -1px 1px $text-shadow-hover;\n }\n\n &:active:not(:disabled),\n &:focus:not(:disabled) {\n $active-color: adjust-color($base-color, $hue: 4, $saturation: -12%, $lightness: -10%);\n $border-active: adjust-color($base-color, $hue: 6, $saturation: -2.5%, $lightness: -30%);\n $border-bottom-active: adjust-color($base-color, $hue: 11, $saturation: 6%, $lightness: -31%);\n $inset-shadow-active: adjust-color($base-color, $hue: 9, $saturation: 2%, $lightness: -21.5%);\n $text-shadow-active: adjust-color($base-color, $hue: 5, $saturation: -12%, $lightness: -21.5%);\n\n @if $grayscale == true {\n $active-color: grayscale($active-color);\n $border-active: grayscale($border-active);\n $border-bottom-active: grayscale($border-bottom-active);\n $inset-shadow-active: grayscale($inset-shadow-active);\n $text-shadow-active: grayscale($text-shadow-active);\n }\n\n background: $active-color;\n border: 1px solid $border-active;\n border-bottom: 1px solid $border-bottom-active;\n box-shadow: inset 0 0 6px 3px $inset-shadow-active;\n text-shadow: 0 -1px 1px $text-shadow-active;\n }\n}\n\n// Flat Button\n@mixin flat($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) {\n $color: hsl(0, 0, 100%);\n\n @if is-light($base-color) {\n $color: hsl(0, 0, 20%);\n }\n\n background-color: $base-color;\n border-radius: 3px;\n border: 0;\n color: $color;\n display: inline-block;\n font-size: $textsize;\n font-weight: bold;\n padding: $padding;\n text-decoration: none;\n background-clip: padding-box;\n\n &:hover:not(:disabled){\n $base-color-hover: adjust-color($base-color, $saturation: 4%, $lightness: 5%);\n\n @if $grayscale == true {\n $base-color-hover: grayscale($base-color-hover);\n }\n\n background-color: $base-color-hover;\n cursor: pointer;\n }\n\n &:active:not(:disabled),\n &:focus:not(:disabled) {\n $base-color-active: adjust-color($base-color, $saturation: -4%, $lightness: -5%);\n\n @if $grayscale == true {\n $base-color-active: grayscale($base-color-active);\n }\n\n background-color: $base-color-active;\n cursor: pointer;\n }\n}\n\n// Flexible grid\n@function flex-grid($columns, $container-columns: $fg-max-columns) {\n $width: $columns * $fg-column + ($columns - 1) * $fg-gutter;\n $container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter;\n @return percentage($width / $container-width);\n\n @warn \"The flex-grid function is deprecated and will be removed in the next major version release\";\n}\n\n// Flexible gutter\n@function flex-gutter($container-columns: $fg-max-columns, $gutter: $fg-gutter) {\n $container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter;\n @return percentage($gutter / $container-width);\n\n @warn \"The flex-gutter function is deprecated and will be removed in the next major version release\";\n}\n\n@function grid-width($n) {\n @return $n * $gw-column + ($n - 1) * $gw-gutter;\n\n @warn \"The grid-width function is deprecated and will be removed in the next major version release\";\n}\n\n@function golden-ratio($value, $increment) {\n @return modular-scale($increment, $value, $ratio: $golden);\n\n @warn \"The golden-ratio function is deprecated and will be removed in the next major version release. Please use the modular-scale function, instead.\";\n}\n\n@mixin box-sizing($box) {\n @include prefixer(box-sizing, $box, webkit moz spec);\n\n @warn \"The box-sizing mixin is deprecated and will be removed in the next major version release. This property can now be used un-prefixed.\";\n}\n","// Neat 1.7.2\n// http://neat.bourbon.io\n// Copyright 2012-2015 thoughtbot, inc.\n// MIT License\n\n// Helpers\n@import \"neat-helpers\";\n\n// Grid\n@import \"grid/private\";\n@import \"grid/box-sizing\";\n@import \"grid/omega\";\n@import \"grid/outer-container\";\n@import \"grid/span-columns\";\n@import \"grid/row\";\n@import \"grid/shift\";\n@import \"grid/pad\";\n@import \"grid/fill-parent\";\n@import \"grid/media\";\n@import \"grid/to-deprecate\";\n@import \"grid/visual-grid\";\n@import \"grid/display-context\";\n@import \"grid/direction-context\";\n","// Functions\n@import \"functions/private\";\n@import \"functions/new-breakpoint\";\n\n// Settings\n@import \"settings/grid\";\n@import \"settings/visual-grid\";\n@import \"settings/disable-warnings\";\n","// Not function for Libsass compatibility\n// https://github.com/sass/libsass/issues/368\n@function is-not($value) {\n @return if($value, false, true);\n}\n\n// Checks if a number is even\n@function is-even($int) {\n @return $int % 2 == 0;\n}\n\n// Checks if an element belongs to a list or not\n@function belongs-to($tested-item, $list) {\n @return is-not(not-belongs-to($tested-item, $list));\n}\n\n@function not-belongs-to($tested-item, $list) {\n @return is-not(index($list, $tested-item));\n}\n\n// Contains display value\n@function contains-display-value($query) {\n @return belongs-to(table, $query)\n or belongs-to(block, $query)\n or belongs-to(inline-block, $query)\n or belongs-to(inline, $query);\n}\n\n// Parses the first argument of span-columns()\n@function container-span($span: $span) {\n @if length($span) == 3 {\n $container-columns: nth($span, 3);\n @return $container-columns;\n } @else if length($span) == 2 {\n $container-columns: nth($span, 2);\n @return $container-columns;\n }\n\n @return $grid-columns;\n}\n\n@function container-shift($shift: $shift) {\n $parent-columns: $grid-columns !default !global;\n\n @if length($shift) == 3 {\n $container-columns: nth($shift, 3);\n @return $container-columns;\n } @else if length($shift) == 2 {\n $container-columns: nth($shift, 2);\n @return $container-columns;\n }\n\n @return $parent-columns;\n}\n\n// Generates a striped background\n@function gradient-stops($grid-columns, $color: $visual-grid-color) {\n $transparent: transparent;\n\n $column-width: flex-grid(1, $grid-columns);\n $gutter-width: flex-gutter($grid-columns);\n $column-offset: $column-width;\n\n $values: ($transparent 0, $color 0);\n\n @for $i from 1 to $grid-columns*2 {\n @if is-even($i) {\n $values: append($values, $transparent $column-offset, comma);\n $values: append($values, $color $column-offset, comma);\n $column-offset: $column-offset + $column-width;\n } @else {\n $values: append($values, $color $column-offset, comma);\n $values: append($values, $transparent $column-offset, comma);\n $column-offset: $column-offset + $gutter-width;\n }\n }\n\n @return $values;\n}\n\n// Layout direction\n@function get-direction($layout, $default) {\n $direction: null;\n\n @if to-upper-case($layout) == \"LTR\" or to-upper-case($layout) == \"RTL\" {\n $direction: direction-from-layout($layout);\n } @else {\n $direction: direction-from-layout($default);\n }\n\n @return $direction;\n}\n\n@function direction-from-layout($layout) {\n $direction: null;\n\n @if to-upper-case($layout) == \"LTR\" {\n $direction: right;\n } @else {\n $direction: left;\n }\n\n @return $direction;\n}\n\n@function get-opposite-direction($direction) {\n $opposite-direction: left;\n\n @if $direction == \"left\" {\n $opposite-direction: right;\n }\n\n @return $opposite-direction;\n}\n","@charset \"UTF-8\";\n\n/// Returns a media context (media query / grid context) that can be stored in a variable and passed to `media()` as a single-keyword argument. Media contexts defined using `new-breakpoint` are used by the visual grid, as long as they are defined before importing Neat.\n///\n/// @param {List} $query\n/// A list of media query features and values. Each `$feature` should have a corresponding `$value`.\n///\n/// If there is only a single `$value` in `$query`, `$default-feature` is going to be used.\n///\n/// The number of total columns in the grid can be set by passing `$columns` at the end of the list (overrides `$total-columns`). For a list of valid values for `$feature`, click [here](http://www.w3.org/TR/css3-mediaqueries/#media1).\n///\n/// @param {Number (unitless)} $total-columns [$grid-columns]\n/// - Number of columns to use in the new grid context. Can be set as a shorthand in the first parameter.\n///\n/// @example scss - Usage\n/// $mobile: new-breakpoint(max-width 480px 4);\n///\n/// .element {\n/// @include media($mobile) {\n/// @include span-columns(4);\n/// }\n/// }\n///\n/// @example css - CSS Output\n/// @media screen and (max-width: 480px) {\n/// .element {\n/// display: block;\n/// float: left;\n/// margin-right: 7.42297%;\n/// width: 100%;\n/// }\n/// .element:last-child {\n/// margin-right: 0;\n/// }\n/// }\n\n@function new-breakpoint($query: $feature $value $columns, $total-columns: $grid-columns) {\n @if length($query) == 1 {\n $query: $default-feature nth($query, 1) $total-columns;\n } @else if is-even(length($query)) {\n $query: append($query, $total-columns);\n }\n\n @if is-not(belongs-to($query, $visual-grid-breakpoints)) {\n $visual-grid-breakpoints: append($visual-grid-breakpoints, $query, comma) !global;\n }\n\n @return $query;\n}\n","@charset \"UTF-8\";\n\n/// Sets the relative width of a single grid column. The unit used should be the same one used to define `$gutter`. To learn more about modular-scale() see [Bourbon docs](http://bourbon.io/docs/#modular-scale). Set with a `!global` flag.\n///\n/// @type Number (Unit)\n\n$column: modular-scale(3, 1em, $golden) !default;\n\n/// Sets the relative width of a single grid gutter. The unit used should be the same one used to define `$column`. To learn more about modular-scale() see [Bourbon docs](http://bourbon.io/docs/#modular-scale). Set with the `!global` flag.\n///\n/// @type Number (Unit)\n\n$gutter: modular-scale(1, 1em, $golden) !default;\n\n/// Sets the total number of columns in the grid. Its value can be overridden inside a media query using the `media()` mixin. Set with the `!global` flag.\n///\n/// @type Number (Unitless)\n\n$grid-columns: 12 !default;\n\n/// Sets the max-width property of the element that includes `outer-container()`. To learn more about `em()` see [Bourbon docs](http://bourbon.io/docs/#px-to-em). Set with the `!global` flag.\n///\n/// @type Number (Unit)\n///\n$max-width: em(1088) !default;\n\n/// When set to true, it sets the box-sizing property of all elements to `border-box`. Set with a `!global` flag.\n///\n/// @type Bool\n///\n/// @example css - CSS Output\n/// html {\n/// box-sizing: border-box; }\n///\n/// *, *::after, *::before {\n/// box-sizing: inherit;\n/// }\n\n$border-box-sizing: true !default;\n\n/// Sets the default [media feature](http://www.w3.org/TR/css3-mediaqueries/#media) that `media()` and `new-breakpoint()` revert to when only a breakpoint value is passed. Set with a `!global` flag.\n///\n/// @type String\n\n$default-feature: min-width; // Default @media feature for the breakpoint() mixin\n\n///Sets the default layout direction of the grid. Can be `LTR` or `RTL`. Set with a `!global` flag.\n///\n///@type String\n\n$default-layout-direction: LTR !default;\n","@charset \"UTF-8\";\n\n/// Displays the visual grid when set to true. The overlaid grid may be few pixels off depending on the browser's rendering engine and pixel rounding algorithm. Set with the `!global` flag.\n///\n/// @type Bool\n\n$visual-grid: false !default;\n\n/// Sets the visual grid color. Set with `!global` flag.\n///\n/// @type Color\n\n$visual-grid-color: #eee !default;\n\n/// Sets the `z-index` property of the visual grid. Can be `back` (behind content) or `front` (in front of content). Set with `!global` flag.\n///\n/// @type String\n\n$visual-grid-index: back !default;\n\n/// Sets the opacity property of the visual grid. Set with `!global` flag.\n///\n/// @type Number (unitless)\n\n$visual-grid-opacity: 0.4 !default;\n\n$visual-grid-breakpoints: () !default;\n","@charset \"UTF-8\";\n\n/// Disable all deprecation warnings. Defaults to `false`. Set with a `!global` flag.\n///\n/// @type Bool\n\n$disable-warnings: false !default;\n\n@mixin -neat-warn($message) {\n @if $disable-warnings == false {\n @warn \"#{$message}\";\n }\n}\n","$parent-columns: $grid-columns !default;\n$fg-column: $column;\n$fg-gutter: $gutter;\n$fg-max-columns: $grid-columns;\n$container-display-table: false !default;\n$layout-direction: LTR !default;\n\n@function flex-grid($columns, $container-columns: $fg-max-columns) {\n $width: $columns * $fg-column + ($columns - 1) * $fg-gutter;\n $container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter;\n @return percentage($width / $container-width);\n}\n\n@function flex-gutter($container-columns: $fg-max-columns, $gutter: $fg-gutter) {\n $container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter;\n @return percentage($gutter / $container-width);\n}\n\n@function grid-width($n) {\n @return $n * $gw-column + ($n - 1) * $gw-gutter;\n}\n\n@function get-parent-columns($columns) {\n @if $columns != $grid-columns {\n $parent-columns: $columns !global;\n } @else {\n $parent-columns: $grid-columns !global;\n }\n\n @return $parent-columns;\n}\n\n@function is-display-table($container-is-display-table, $display) {\n @return $container-is-display-table == true or $display == table;\n}\n","@charset \"UTF-8\";\n\n@if $border-box-sizing == true {\n html { // http://bit.ly/1qk2tVR\n box-sizing: border-box;\n }\n\n * {\n &,\n &::after,\n &::before {\n box-sizing: inherit;\n }\n }\n}\n","@charset \"UTF-8\";\n\n/// Removes the element's gutter margin, regardless of its position in the grid hierarchy or display property. It can target a specific element, or every `nth-child` occurrence. Works only with `block` layouts.\n///\n/// @param {List} $query [block]\n/// List of arguments. Supported arguments are `nth-child` selectors (targets a specific pseudo element) and `auto` (targets `last-child`).\n///\n/// When passed an `nth-child` argument of type `*n` with `block` display, the omega mixin automatically adds a clear to the `*n+1` th element. Note that composite arguments such as `2n+1` do not support this feature.\n///\n/// **Deprecation warning**: The omega mixin will no longer take a `$direction` argument. To change the layout direction, use `row($direction)` or set `$default-layout-direction` instead.\n///\n/// @example scss - Usage\n/// .element {\n/// @include omega;\n/// }\n///\n/// .nth-element {\n/// @include omega(4n);\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// margin-right: 0;\n/// }\n///\n/// .nth-element:nth-child(4n) {\n/// margin-right: 0;\n/// }\n///\n/// .nth-element:nth-child(4n+1) {\n/// clear: left;\n/// }\n\n@mixin omega($query: block, $direction: default) {\n $table: belongs-to(table, $query);\n $auto: belongs-to(auto, $query);\n\n @if $direction != default {\n @include -neat-warn(\"The omega mixin will no longer take a $direction argument. To change the layout direction, use the direction(){...} mixin.\");\n } @else {\n $direction: get-direction($layout-direction, $default-layout-direction);\n }\n\n @if $table {\n @include -neat-warn(\"The omega mixin no longer removes padding in table layouts.\");\n }\n\n @if length($query) == 1 {\n @if $auto {\n &:last-child {\n margin-#{$direction}: 0;\n }\n }\n\n @else if contains-display-value($query) and $table == false {\n margin-#{$direction}: 0;\n }\n\n @else {\n @include nth-child($query, $direction);\n }\n } @else if length($query) == 2 {\n @if $auto {\n &:last-child {\n margin-#{$direction}: 0;\n }\n } @else {\n @include nth-child(nth($query, 1), $direction);\n }\n } @else {\n @include -neat-warn(\"Too many arguments passed to the omega() mixin.\");\n }\n}\n\n@mixin nth-child($query, $direction) {\n $opposite-direction: get-opposite-direction($direction);\n\n &:nth-child(#{$query}) {\n margin-#{$direction}: 0;\n }\n\n @if type-of($query) == number and unit($query) == \"n\" {\n &:nth-child(#{$query}+1) {\n clear: $opposite-direction;\n }\n }\n}\n","@charset \"UTF-8\";\n\n/// Makes an element a outer container by centring it in the viewport, clearing its floats, and setting its `max-width`.\n/// Although optional, using `outer-container` is recommended. The mixin can be called on more than one element per page, as long as they are not nested.\n///\n/// @param {Number [unit]} $local-max-width [$max-width]\n/// Max width to be applied to the element. Can be a percentage or a measure.\n///\n/// @example scss - Usage\n/// .element {\n/// @include outer-container(100%);\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// *zoom: 1;\n/// max-width: 100%;\n/// margin-left: auto;\n/// margin-right: auto;\n/// }\n///\n/// .element:before, .element:after {\n/// content: \" \";\n/// display: table;\n/// }\n///\n/// .element:after {\n/// clear: both;\n/// }\n\n@mixin outer-container($local-max-width: $max-width) {\n @include clearfix;\n max-width: $local-max-width;\n margin: {\n left: auto;\n right: auto;\n }\n}\n","@charset \"UTF-8\";\n\n/// Specifies the number of columns an element should span. If the selector is nested the number of columns of its parent element should be passed as an argument as well.\n///\n/// @param {List} $span\n/// A list containing `$columns`, the unitless number of columns the element spans (required), and `$container-columns`, the number of columns the parent element spans (optional).\n///\n/// If only one value is passed, it is assumed that it's `$columns` and that that `$container-columns` is equal to `$grid-columns`, the total number of columns in the grid.\n///\n/// The values can be separated with any string such as `of`, `/`, etc.\n///\n/// `$columns` also accepts decimals for when it's necessary to break out of the standard grid. E.g. Passing `2.4` in a standard 12 column grid will divide the row into 5 columns.\n///\n/// @param {String} $display [block]\n/// Sets the display property of the element. By default it sets the display propert of the element to `block`.\n///\n/// If passed `block-collapse`, it also removes the margin gutter by adding it to the element width.\n///\n/// If passed `table`, it sets the display property to `table-cell` and calculates the width of the element without taking gutters into consideration. The result does not align with the block-based grid.\n///\n/// @example scss - Usage\n/// .element {\n/// @include span-columns(6);\n///\n/// .nested-element {\n/// @include span-columns(2 of 6);\n/// }\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// display: block;\n/// float: left;\n/// margin-right: 2.35765%;\n/// width: 48.82117%;\n/// }\n///\n/// .element:last-child {\n/// margin-right: 0;\n/// }\n///\n/// .element .nested-element {\n/// display: block;\n/// float: left;\n/// margin-right: 4.82916%;\n/// width: 30.11389%;\n/// }\n///\n/// .element .nested-element:last-child {\n/// margin-right: 0;\n/// }\n\n@mixin span-columns($span: $columns of $container-columns, $display: block) {\n $columns: nth($span, 1);\n $container-columns: container-span($span);\n\n $parent-columns: get-parent-columns($container-columns) !global;\n\n $direction: get-direction($layout-direction, $default-layout-direction);\n $opposite-direction: get-opposite-direction($direction);\n\n $display-table: is-display-table($container-display-table, $display);\n\n @if $display-table {\n display: table-cell;\n width: percentage($columns / $container-columns);\n } @else {\n float: #{$opposite-direction};\n\n @if $display != no-display {\n display: block;\n }\n\n @if $display == collapse {\n @include -neat-warn(\"The 'collapse' argument will be deprecated. Use 'block-collapse' instead.\");\n }\n\n @if $display == collapse or $display == block-collapse {\n width: flex-grid($columns, $container-columns) + flex-gutter($container-columns);\n\n &:last-child {\n width: flex-grid($columns, $container-columns);\n }\n\n } @else {\n margin-#{$direction}: flex-gutter($container-columns);\n width: flex-grid($columns, $container-columns);\n\n &:last-child {\n margin-#{$direction}: 0;\n }\n }\n }\n}\n","@charset \"UTF-8\";\n\n/// Designates the element as a row of columns in the grid layout. It clears the floats on the element and sets its display property. Rows can't be nested, but there can be more than one row element—with different display properties—per layout.\n///\n/// @param {String} $display [default]\n/// Sets the display property of the element and the display context that will be used by its children. Can be `block` or `table`.\n///\n/// @param {String} $direction [$default-layout-direction]\n/// Sets the layout direction. Can be `LTR` (left-to-right) or `RTL` (right-to-left).\n///\n/// @example scss - Usage\n/// .element {\n/// @include row();\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// *zoom: 1;\n/// display: block;\n/// }\n///\n/// .element:before, .element:after {\n/// content: \" \";\n/// display: table;\n/// }\n///\n/// .element:after {\n/// clear: both;\n/// }\n\n@mixin row($display: default, $direction: $default-layout-direction) {\n @if $direction != $default-layout-direction {\n @include -neat-warn(\"The $direction argument will be deprecated in future versions in favor of the direction(){...} mixin.\");\n }\n\n $layout-direction: $direction !global;\n\n @if $display != default {\n @include -neat-warn(\"The $display argument will be deprecated in future versions in favor of the display(){...} mixin.\");\n }\n\n @if $display == table {\n display: table;\n @include fill-parent;\n table-layout: fixed;\n $container-display-table: true !global;\n } @else {\n @include clearfix;\n display: block;\n $container-display-table: false !global;\n }\n}\n","@charset \"UTF-8\";\n\n/// Translates an element horizontally by a number of columns. Positive arguments shift the element to the active layout direction, while negative ones shift it to the opposite direction.\n///\n/// @param {Number (unitless)} $n-columns [1]\n/// Number of columns by which the element shifts.\n///\n/// @example scss - Usage\n/// .element {\n/// @include shift(-3);\n/// }\n///\n/// @example css - CSS output\n/// .element {\n/// margin-left: -25.58941%;\n/// }\n\n@mixin shift($n-columns: 1) {\n @include shift-in-context($n-columns);\n}\n\n/// Translates an element horizontally by a number of columns, in a specific nesting context.\n///\n/// @param {List} $shift\n/// A list containing the number of columns to shift (`$columns`) and the number of columns of the parent element (`$container-columns`).\n///\n/// The two values can be separated with any string such as `of`, `/`, etc.\n///\n/// @example scss - Usage\n/// .element {\n/// @include shift(-3 of 6);\n/// }\n///\n/// @example css - CSS output\n/// .element {\n/// margin-left: -52.41458%;\n/// }\n\n@mixin shift-in-context($shift: $columns of $container-columns) {\n $n-columns: nth($shift, 1);\n $parent-columns: container-shift($shift) !global;\n\n $direction: get-direction($layout-direction, $default-layout-direction);\n $opposite-direction: get-opposite-direction($direction);\n\n margin-#{$opposite-direction}: $n-columns * flex-grid(1, $parent-columns) + $n-columns * flex-gutter($parent-columns);\n\n // Reset nesting context\n $parent-columns: $grid-columns !global;\n}\n","@charset \"UTF-8\";\n\n/// Adds padding to the element.\n///\n/// @param {List} $padding [flex-gutter()]\n/// A list of padding value(s) to use. Passing `default` in the list will result in using the gutter width as a padding value.\n///\n/// @example scss - Usage\n/// .element {\n/// @include pad(30px -20px 10px default);\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// padding: 30px -20px 10px 2.35765%;\n/// }\n\n@mixin pad($padding: flex-gutter()) {\n $padding-list: null;\n @each $value in $padding {\n $value: if($value == 'default', flex-gutter(), $value);\n $padding-list: join($padding-list, $value);\n }\n padding: $padding-list;\n}\n","@charset \"UTF-8\";\n\n/// Forces the element to fill its parent container.\n///\n/// @example scss - Usage\n/// .element {\n/// @include fill-parent;\n/// }\n///\n/// @example css - CSS Output\n/// .element {\n/// width: 100%;\n/// box-sizing: border-box;\n/// }\n\n@mixin fill-parent() {\n width: 100%;\n\n @if $border-box-sizing == false {\n box-sizing: border-box;\n }\n}\n","@charset \"UTF-8\";\n\n/// Outputs a media-query block with an optional grid context (the total number of columns used in the grid).\n///\n/// @param {List} $query\n/// A list of media query features and values, where each `$feature` should have a corresponding `$value`.\n/// For a list of valid values for `$feature`, click [here](http://www.w3.org/TR/css3-mediaqueries/#media1).\n///\n/// If there is only a single `$value` in `$query`, `$default-feature` is going to be used.\n///\n/// The number of total columns in the grid can be set by passing `$columns` at the end of the list (overrides `$total-columns`).\n///\n///\n/// @param {Number (unitless)} $total-columns [$grid-columns]\n/// - Number of columns to use in the new grid context. Can be set as a shorthand in the first parameter.\n///\n/// @example scss - Usage\n/// .responsive-element {\n/// @include media(769px) {\n/// @include span-columns(6);\n/// }\n/// }\n///\n/// .new-context-element {\n/// @include media(min-width 320px max-width 480px, 6) {\n/// @include span-columns(6);\n/// }\n/// }\n///\n/// @example css - CSS Output\n/// @media screen and (min-width: 769px) {\n/// .responsive-element {\n/// display: block;\n/// float: left;\n/// margin-right: 2.35765%;\n/// width: 48.82117%;\n/// }\n///\n/// .responsive-element:last-child {\n/// margin-right: 0;\n/// }\n/// }\n///\n/// @media screen and (min-width: 320px) and (max-width: 480px) {\n/// .new-context-element {\n/// display: block;\n/// float: left;\n/// margin-right: 4.82916%;\n/// width: 100%;\n/// }\n///\n/// .new-context-element:last-child {\n/// margin-right: 0;\n/// }\n/// }\n\n@mixin media($query: $feature $value $columns, $total-columns: $grid-columns) {\n @if length($query) == 1 {\n @media screen and ($default-feature: nth($query, 1)) {\n $default-grid-columns: $grid-columns;\n $grid-columns: $total-columns !global;\n @content;\n $grid-columns: $default-grid-columns !global;\n }\n } @else {\n $loop-to: length($query);\n $media-query: \"screen and \";\n $default-grid-columns: $grid-columns;\n $grid-columns: $total-columns !global;\n\n @if is-not(is-even(length($query))) {\n $grid-columns: nth($query, $loop-to) !global;\n $loop-to: $loop-to - 1;\n }\n\n $i: 1;\n @while $i <= $loop-to {\n $media-query: $media-query + \"(\" + nth($query, $i) + \": \" + nth($query, $i + 1) + \") \";\n\n @if ($i + 1) != $loop-to {\n $media-query: $media-query + \"and \";\n }\n\n $i: $i + 2;\n }\n\n @media #{$media-query} {\n @content;\n $grid-columns: $default-grid-columns !global;\n }\n }\n}\n","@charset \"UTF-8\";\n\n@mixin breakpoint($query:$feature $value $columns, $total-columns: $grid-columns) {\n @include -neat-warn(\"The breakpoint() mixin was renamed to media() in Neat 1.0. Please update your project with the new syntax before the next version bump.\");\n\n @if length($query) == 1 {\n @media screen and ($default-feature: nth($query, 1)) {\n $default-grid-columns: $grid-columns;\n $grid-columns: $total-columns;\n @content;\n $grid-columns: $default-grid-columns;\n }\n } @else if length($query) == 2 {\n @media screen and (nth($query, 1): nth($query, 2)) {\n $default-grid-columns: $grid-columns;\n $grid-columns: $total-columns;\n @content;\n $grid-columns: $default-grid-columns;\n }\n } @else if length($query) == 3 {\n @media screen and (nth($query, 1): nth($query, 2)) {\n $default-grid-columns: $grid-columns;\n $grid-columns: nth($query, 3);\n @content;\n $grid-columns: $default-grid-columns;\n }\n } @else if length($query) == 4 {\n @media screen and (nth($query, 1): nth($query, 2)) and (nth($query, 3): nth($query, 4)) {\n $default-grid-columns: $grid-columns;\n $grid-columns: $total-columns;\n @content;\n $grid-columns: $default-grid-columns;\n }\n } @else if length($query) == 5 {\n @media screen and (nth($query, 1): nth($query, 2)) and (nth($query, 3): nth($query, 4)) {\n $default-grid-columns: $grid-columns;\n $grid-columns: nth($query, 5);\n @content;\n $grid-columns: $default-grid-columns;\n }\n } @else {\n @include -neat-warn(\"Wrong number of arguments for breakpoint(). Read the documentation for more details.\");\n }\n}\n\n@mixin nth-omega($nth, $display: block, $direction: default) {\n @include -neat-warn(\"The nth-omega() mixin is deprecated. Please use omega() instead.\");\n @include omega($nth $display, $direction);\n}\n\n/// Resets the active display property to `block`. Particularly useful when changing the display property in a single row.\n///\n/// @example scss - Usage\n/// .element {\n/// @include row(table);\n/// // Context changed to table display\n/// }\n///\n/// @include reset-display;\n/// // Context is reset to block display\n\n@mixin reset-display {\n $container-display-table: false !global;\n @include -neat-warn(\"Resetting $display will be deprecated in future versions in favor of the display(){...} mixin.\");\n}\n\n/// Resets the active layout direction to the default value set in `$default-layout-direction`. Particularly useful when changing the layout direction in a single row.\n///\n/// @example scss - Usage\n/// .element {\n/// @include row($direction: RTL);\n/// // Context changed to right-to-left\n/// }\n///\n/// @include reset-layout-direction;\n/// // Context is reset to left-to-right\n\n@mixin reset-layout-direction {\n $layout-direction: $default-layout-direction !global;\n @include -neat-warn(\"Resetting $direction will be deprecated in future versions in favor of the direction(){...} mixin.\");\n}\n\n/// Resets both the active layout direction and the active display property.\n///\n/// @example scss - Usage\n/// .element {\n/// @include row(table, RTL);\n/// // Context changed to table table and right-to-left\n/// }\n///\n/// @include reset-all;\n/// // Context is reset to block display and left-to-right\n\n@mixin reset-all {\n @include reset-display;\n @include reset-layout-direction;\n}\n","@charset \"UTF-8\";\n\n@mixin grid-column-gradient($values...) {\n background-image: -webkit-linear-gradient(left, $values);\n background-image: -moz-linear-gradient(left, $values);\n background-image: -ms-linear-gradient(left, $values);\n background-image: -o-linear-gradient(left, $values);\n background-image: unquote(\"linear-gradient(to left, #{$values})\");\n}\n\n@if $visual-grid == true or $visual-grid == yes {\n body:before {\n @include grid-column-gradient(gradient-stops($grid-columns));\n content: \"\";\n display: inline-block;\n height: 100%;\n left: 0;\n margin: 0 auto;\n max-width: $max-width;\n opacity: $visual-grid-opacity;\n pointer-events: none;\n position: fixed;\n right: 0;\n width: 100%;\n\n @if $visual-grid-index == back {\n z-index: -1;\n }\n\n @else if $visual-grid-index == front {\n z-index: 9999;\n }\n\n @each $breakpoint in $visual-grid-breakpoints {\n @if $breakpoint {\n @include media($breakpoint) {\n @include grid-column-gradient(gradient-stops($grid-columns));\n }\n }\n }\n }\n}\n","@charset \"UTF-8\";\n\n/// Changes the display property used by other mixins called in the code block argument.\n///\n/// @param {String} $display [block]\n/// Display value to be used within the block. Can be `table` or `block`.\n///\n/// @example scss\n/// @include display-context(table) {\n/// .display-table {\n/// @include span-columns(6);\n/// }\n/// }\n///\n/// @example css\n/// .display-table {\n/// display: table-cell;\n/// ...\n/// }\n\n@mixin display-context($display: block) {\n $scope-display: $container-display-table;\n $container-display-table: $display == table !global;\n\n @content;\n\n $container-display-table: $scope-display !global;\n}\n","@charset \"UTF-8\";\n\n/// Changes the direction property used by other mixins called in the code block argument.\n///\n/// @param {String} $direction [left-to-right]\n/// Layout direction to be used within the block. Can be `left-to-right` or `right-to-left`.\n///\n/// @example scss - Usage\n/// @include direction-context(right-to-left) {\n/// .right-to-left-block {\n/// @include span-columns(6);\n/// }\n/// }\n///\n/// @example css - CSS Output\n/// .right-to-left-block {\n/// float: right;\n/// ...\n/// }\n\n@mixin direction-context($direction: left-to-right) {\n $scope-direction: $layout-direction;\n\n @if to-lower-case($direction) == \"left-to-right\" {\n $layout-direction: LTR !global;\n } @else if to-lower-case($direction) == \"right-to-left\" {\n $layout-direction: RTL !global;\n }\n\n @content;\n\n $layout-direction: $scope-direction !global;\n}\n","// For naming colors variables, we recommend use http://chir.ag/projects/name-that-color/\n\n//module MAIN COLOR PALETTE\n\n//module COMMON COLORS\n\n//module LINK COLORS\n\n//module SELECTION COLORS\n","","//module TYPOGRAPHY\n$base-line-height: 1.5;\n$base-font-size: 16px;\n\n//widths, heights, sizes, timings, settings","@mixin respond-to($size, $dir) {\n @if ($size == retina) {\n @media only screen and (min-resolution: 2dppx), (-webkit-min-device-pixel-ratio: 2.0) {\n @content;\n }\n } @else if ($size and $dir) {\n @media screen and (#{$dir}-width: ($size + px)) {\n @content;\n }\n }\n}\n\n@mixin vertical-align($block: inline-block, $align: middle) {\n display: $block;\n vertical-align: $align;\n}\n\n// Mixin for removing white spaces of inline-block\n@mixin remove-whitespace($apply-to: none, $setsize: $base-font-size) {\n @if ($apply-to == none) {\n font-size: 0;\n } @else if ($apply-to == all) {\n font-size: 0;\n\n > * {\n font-size: $setsize;\n }\n } @else {\n font-size: 0;\n\n #{$apply-to} {\n font-size: $setsize;\n }\n }\n}\n\n@mixin clearfix($extend: true) {\n @if $extend {\n @extend %clearfix;\n } @else {\n &:after {\n clear: both;\n content: '';\n display: table;\n height: 0;\n }\n }\n}\n\n%clearfix {\n @include clearfix($extend: false);\n}\n\n%hidden {\n display: none;\n visibility: hidden;\n}\n\n%visuallyhidden {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n\n // Extends the .visuallyhidden class to allow the element to be focusable\n // when navigated to via the keyboard: h5bp.com/p\n\n &.focusable:active,\n &.focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto;\n }\n}\n","// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\narticle,\naside,\nfigcaption,\nfigure,\nfooter,\nheader,\nmain,\nmenu,\nnav,\nsection {\n display: block;\n}\n\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n// Remove the gray background color from active links in IE 10.\na {\n background-color: transparent;\n}\n\n// Improve readability when focused and also mouse hovered in all browsers.\na:active,\na:hover {\n outline: 0;\n}\n\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\nb,\nstrong {\n font-weight: bold;\n}\n\n// Address styling not present in Safari and Chrome.\ndfn {\n font-style: italic;\n}\n\n// Address styling not present in IE 8/9.\nmark {\n background: #ff0;\n color: #000;\n}\n\n// Address inconsistent and variable font size in all browsers.\nsmall {\n font-size: 80%;\n}\n\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -.5em;\n}\n\nsub {\n bottom: -.25em;\n}\n\n// Remove border when inside `a` element in IE 8/9/10.\nimg {\n border: 0;\n}\n\n// Correct overflow not hidden in IE 9/10/11.\n// Enable if you don't use \n//svg:not(:root) {\n// overflow: hidden;\n//}\n\n// Address margin not present in IE 8/9 and Safari.\nfigure {\n margin: 1em 40px;\n}\n\n// Address differences between Firefox and other browsers.\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n// Contain overflow in all browsers.\npre {\n overflow: auto;\n}\n\n// Address odd `em`-unit font size rendering in all browsers.\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// 1. Correct color not being inherited. Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\nbutton {\n overflow: visible;\n}\n\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\nbutton,\nselect {\n text-transform: none;\n}\n\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type `input` and others.\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n// Re-set default cursor for disabled elements.\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n// Remove inner padding and border in Firefox 4+.\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet.\ninput {\n line-height: normal;\n}\n\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`.\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; // 2\n}\n\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance).\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n// Remove default vertical scrollbar in IE 8/9/10/11.\ntextarea {\n overflow: auto;\n}\n\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\noptgroup {\n font-weight: bold;\n}\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n",".noscript-message {\n background-color: #fff1bb;\n font-size: 16px;\n padding: 3px;\n text-align: center;\n z-index: 2147483647;\n}\n","@import 'variables';\n@import 'svg-sprite-map';\n\n// @author Mike Street\n// modified by Devbridge\n\n// Usage:\n// @include svg-sprite('file-name');\n// @include svg-sprite('file-name', 'size in px or em');\n\n$base-font-size: 16px !default;\n$ie-sprite: '.ie8' !default;\n\n$sprite: map-get($icons, sprite) !default;\n\n// Retrieve an attributes value for a specific icon in the sprite map\n@function sprite-attr($icon, $attr) {\n $new-icon: map-get($icons, $icon);\n @if $new-icon == null {\n @warn \"Can't find an icon with the name #{$icon}\";\n }\n @return map-get($new-icon, $attr);\n}\n\n// Create a map with the specified icon of attributes\n@function icon-attr($icon) {\n $attr: (\n width: sprite-attr($icon, width),\n height: sprite-attr($icon, height),\n x: sprite-attr($icon, backgroundX),\n y: sprite-attr($icon, backgroundY)\n );\n\n @return $attr;\n}\n\n@function parse-int($n) {\n @return $n / ($n * 0 + 1);\n}\n\n@function px-to-em($px, $base: $base-font-size) {\n @if not unitless($px) {\n $px: parse-int($px);\n }\n @if not unitless($base) {\n $base: parse-int($base);\n }\n @return ($px / $base) * 1em;\n}\n\n@function get-ratio($width, $height) {\n @return parse-int($width / $height);\n}\n\n@function get-scale($width, $new-width) {\n @return parse-int($new-width / $width);\n}\n\n%sprite {\n background-image: url(map-get($sprite, svgPath));\n background-repeat: no-repeat;\n background-size: map-get($sprite, width) map-get($sprite, height);\n display: inline-block;\n}\n\n%ie-sprite {\n background-image: url(map-get($sprite, pngPath));\n}\n\n@mixin svg-sprite($icon, $size: null) {\n\n $sprite-width: map-get($sprite, width);\n $sprite-height: map-get($sprite, height);\n\n $icon-map: icon-attr($icon);\n $icon-width: map-get($icon-map, width);\n $icon-height: map-get($icon-map, height);\n $icon-pos-x: map-get($icon-map, x);\n $icon-pos-y: map-get($icon-map, y);\n\n @if($size){\n\n $unit: unit($size);\n $ratio: get-ratio($icon-width, $icon-height);\n\n @if($unit == 'px'){\n\n $scale: get-scale($icon-width, $size);\n\n $icon-height: ($size / $ratio);\n $icon-width: $size;\n\n $icon-pos-x: ($icon-pos-x * $scale);\n $icon-pos-y: ($icon-pos-y * $scale);\n\n background-size: ($sprite-width * $scale) ($sprite-height * $scale);\n }\n\n @if($unit == 'em'){\n\n $icon-width: parse-int(px-to-em($icon-width)) * parse-int($size) + em;\n $icon-height: parse-int(px-to-em($icon-height)) * parse-int($size) + em;\n\n $sprite-width: parse-int(px-to-em($sprite-width)) * parse-int($size) + em;\n $sprite-height: parse-int(px-to-em($sprite-height)) * parse-int($size) + em;\n\n $icon-pos-x: parse-int(px-to-em($icon-pos-x)) * parse-int($size) + em;\n $icon-pos-y: parse-int(px-to-em($icon-pos-y)) * parse-int($size) + em;\n\n background-size: $sprite-width $sprite-height;\n\n }\n\n @if($unit == '%'){\n @warn 'SVG Icons - values in percentages are not supported';\n }\n\n }\n\n @extend %sprite;\n width: $icon-width;\n height: $icon-height;\n background-position: $icon-pos-x $icon-pos-y;\n\n // Add IE fallback\n // Works with icons with default size ONLY\n @if $ie-sprite {\n #{$ie-sprite} & {\n @extend %ie-sprite;\n }\n }\n}\n","$icons: (\n\tsprite: (\n\t\twidth: 32px,\n\t\theight: 28px,\n\t\tpngPath: 'images/sprite.png',\n\t\tsvgPath: 'images/sprite.svg'\n\t),\n\tdb-logo: (\n\t\twidth: 32px,\n\t\theight: 27.7px,\n\t\tbackgroundX: 0px,\n\t\tbackgroundY: 0px\n\t)\n);\n","//\n// Form styles\n//\n// Global styles for form elements (select, input, file upload, checkbox, radio and etc)\n// Examples could be found here: http://codepen.io/devbproto/\n\n[disabled] {\n cursor: not-allowed;\n}\n","\n// Typography\n\nh1,\n.heading1 {\n\n}\n\nh2,\n.heading2 {\n\n}\n\nh3,\n.heading3 {\n\n}\n\nh4,\n.heading4 {\n\n}\n\nul {\n\n}\n\nol {\n\n}\n\nfigure {\n\n}\n\nstrong {\n\n}\n\nem {\n\n}\n\np {\n\n}\n\nhr {\n\n}\n\nimg {\n max-width: 100%;\n}\n\na {\n\n}\n","// Print\n// Inlined to avoid required HTTP connection: h5bp.com/r\n\n@media print {\n * {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: ' (\" attr(href) \")';\n }\n\n abbr[title]:after {\n content: ' (\" attr(title) \")';\n }\n\n // Don't show links for images, or javascript/internal links\n .ir a:after,\n a[href^=\"javascript:\"]:after,\n a[href^=\"#\"]:after {\n content: '';\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n @page {\n margin: 0.5cm;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n}\n","","//\n// Layout Rules\n//\n// Layout styles can also be divided into major and minor styles based on\n// reuse. Fox example, major layout styles can be dedicated for header and/or footer.\n\nhtml,\nbody {\n height: 100%;\n margin: 0;\n padding: 0;\n width: 100%;\n}\n\nbody {\n font-size: $base-font-size;\n line-height: $base-line-height;\n\n // To prevent the iPhone and iPad from inflating fonts\n @include respond-to(1024, max) {\n -webkit-text-size-adjust: 100%;\n }\n}\n\n.clearfix {\n @include clearfix($extend: true)\n}\n","",""],"mappings":"AiHwBA,SAAS,ATgBA,MAAM,CAAC;EACJ,KAAK,EAAE,IAAK;EACZ,OAAO,EAAE,EAAG;EACZ,OAAO,EAAE,KAAM;EACf,MAAM,EAAE,CAAE,GACb;;ACzCT,OAAO;AACP,KAAK;AACL,UAAU;AACV,MAAM;AACN,MAAM;AACN,MAAM;AACN,IAAI;AACJ,IAAI;AACJ,GAAG;AACH,OAAO,CAAC;EACJ,OAAO,EAAE,KAAM,GAClB;;AAID,KAAK;AACL,MAAM;AACN,QAAQ;AACR,KAAK,CAAC;EACF,OAAO,EAAE,YAAa;EACtB,cAAc,EAAE,QAAS,GAC5B;;AAID,KAAK,AAAA,IAAK,EAAA,AAAA,QAAC,AAAA,GAAW;EAClB,OAAO,EAAE,IAAK;EACd,MAAM,EAAE,CAAE,GACb;;AAGD,CAAC,CAAC;EACE,gBAAgB,EAAE,WAAY,GACjC;;AAGD,CAAC,AAAA,OAAO;AACR,CAAC,AAAA,MAAM,CAAC;EACJ,OAAO,EAAE,CAAE,GACd;;AAGD,IAAI,CAAA,AAAA,KAAC,AAAA,EAAO;EACR,aAAa,EAAE,UAAW,GAC7B;;AAGD,CAAC;AACD,MAAM,CAAC;EACH,WAAW,EAAE,IAAK,GACrB;;AAGD,GAAG,CAAC;EACA,UAAU,EAAE,MAAO,GACtB;;AAGD,IAAI,CAAC;EACD,UAAU,EAAE,IAAK;EACjB,KAAK,EAAE,IAAK,GACf;;AAGD,KAAK,CAAC;EACF,SAAS,EAAE,GAAI,GAClB;;AAGD,GAAG;AACH,GAAG,CAAC;EACA,SAAS,EAAE,GAAI;EACf,WAAW,EAAE,CAAE;EACf,QAAQ,EAAE,QAAS;EACnB,cAAc,EAAE,QAAS,GAC5B;;AAED,GAAG,CAAC;EACA,GAAG,EAAE,KAAM,GACd;;AAED,GAAG,CAAC;EACA,MAAM,EAAE,MAAO,GAClB;;AAGD,GAAG,CAAC;EACA,MAAM,EAAE,CAAE,GACb;;AASD,MAAM,CAAC;EACH,MAAM,EAAE,QAAS,GACpB;;AAGD,EAAE,CAAC;EACC,UAAU,EAAE,WAAY;EACxB,MAAM,EAAE,CAAE,GACb;;AAGD,GAAG,CAAC;EACA,QAAQ,EAAE,IAAK,GAClB;;AAGD,IAAI;AACJ,GAAG;AACH,GAAG;AACH,IAAI,CAAC;EACD,WAAW,EAAE,oBAAqB;EAClC,SAAS,EAAE,GAAI,GAClB;;AAKD,MAAM;AACN,KAAK;AACL,QAAQ;AACR,MAAM;AACN,QAAQ,CAAC;EACL,KAAK,EAAE,OAAQ;EACf,IAAI,EAAE,OAAQ;EACd,MAAM,EAAE,CAAE,GACb;;AAGD,MAAM,CAAC;EACH,QAAQ,EAAE,OAAQ,GACrB;;AAMD,MAAM;AACN,MAAM,CAAC;EACH,cAAc,EAAE,IAAK,GACxB;;AAKD,MAAM;AACN,IAAI,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb;AACX,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;AACN,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAe;EACjB,kBAAkB,EAAE,MAAO;EAC3B,MAAM,EAAE,OAAQ,GACnB;;AAGD,MAAM,CAAA,AAAA,QAAC,AAAA;AACP,IAAI,CAAC,KAAK,CAAA,AAAA,QAAC,AAAA,EAAU;EACjB,MAAM,EAAE,OAAQ,GACnB;;AAGD,MAAM,AAAA,kBAAkB;AACxB,KAAK,AAAA,kBAAkB,CAAC;EACpB,MAAM,EAAE,CAAE;EACV,OAAO,EAAE,CAAE,GACd;;AAGD,KAAK,CAAC;EACF,WAAW,EAAE,MAAO,GACvB;;AAMD,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf;AACN,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EAAc;EAChB,UAAU,EAAE,UAAW;EACvB,OAAO,EAAE,CAAE,GACd;;AAGD,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,2BAA2B;AAC/C,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,2BAA2B,CAAC;EAC5C,MAAM,EAAE,IAAK,GAChB;;AAID,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAe;EACjB,kBAAkB,EAAE,SAAU;EAC9B,UAAU,EAAE,WAAY,GAC3B;;AAID,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,8BAA8B;AAClD,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,2BAA2B,CAAC;EAC5C,kBAAkB,EAAE,IAAK,GAC5B;;AAID,MAAM,CAAC;EACH,MAAM,EAAE,CAAE;EACV,OAAO,EAAE,CAAE,GACd;;AAGD,QAAQ,CAAC;EACL,QAAQ,EAAE,IAAK,GAClB;;AAID,QAAQ,CAAC;EACL,WAAW,EAAE,IAAK,GACrB;;AAED,KAAK,CAAC;EACF,eAAe,EAAE,QAAS;EAC1B,cAAc,EAAE,CAAE,GACrB;;AAED,EAAE;AACF,EAAE,CAAC;EACC,OAAO,EAAE,CAAE,GACd;;AC7OD,iBAAiB,CAAC;EACd,gBAAgB,EAAE,OAAQ;EAC1B,SAAS,EAAE,IAAK;EAChB,OAAO,EAAE,GAAI;EACb,UAAU,EAAE,MAAO;EACnB,OAAO,EAAE,UAAW,GACvB;;CGAD,AAAA,QAAC,AAAA,EAAU;EACP,MAAM,EAAE,WAAY,GACvB;;AC2CD,GAAG,CAAC;EACA,SAAS,EAAE,IAAK,GACnB;;AClDD,MAAM,CAAN,KAAK;EACD,CAAC,CAAC;IACE,UAAU,EAAE,sBAAuB;IACnC,KAAK,EAAE,eAAgB;IACvB,UAAU,EAAE,eAAgB;IAC5B,WAAW,EAAE,eAAgB,GAChC;EAED,CAAC;EACD,CAAC,AAAA,QAAQ,CAAC;IACN,eAAe,EAAE,SAAU,GAC9B;EAED,CAAC,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,CAAC;IACV,OAAO,EAAE,mBAAoB,GAChC;EAED,IAAI,CAAA,AAAA,KAAC,AAAA,CAAM,MAAM,CAAC;IACd,OAAO,EAAE,oBAAqB,GACjC;EAGD,GAAG,CAAC,CAAC,AAAA,MAAM;EACX,CAAC,CAAA,AAAA,IAAC,EAAM,aAAa,AAAnB,CAAoB,MAAM;EAC5B,CAAC,CAAA,AAAA,IAAC,EAAM,GAAG,AAAT,CAAU,MAAM,CAAC;IACf,OAAO,EAAE,EAAG,GACf;EAED,GAAG;EACH,UAAU,CAAC;IACP,MAAM,EAAE,cAAe;IACvB,iBAAiB,EAAE,KAAM,GAC5B;EAED,KAAK,CAAC;IACF,OAAO,EAAE,kBAAmB,GAC/B;EAED,EAAE;EACF,GAAG,CAAC;IACA,iBAAiB,EAAE,KAAM,GAC5B;EAED,GAAG,CAAC;IACA,SAAS,EAAE,eAAgB,GAC9B;EAED,KAAK;IACD,MAAM,EAAE,KAAM;EAGlB,CAAC;EACD,EAAE;EACF,EAAE,CAAC;IACC,OAAO,EAAE,CAAE;IACX,MAAM,EAAE,CAAE,GACb;EAED,EAAE;EACF,EAAE,CAAC;IACC,gBAAgB,EAAE,KAAM,GAC3B;;AE1DL,IAAI;AACJ,IAAI,CAAC;EACD,MAAM,EAAE,IAAK;EACb,MAAM,EAAE,CAAE;EACV,OAAO,EAAE,CAAE;EACX,KAAK,EAAE,IAAK,GACf;;AAED,IAAI,CAAC;EACD,SAAS,EVbI,IAAI;EUcjB,WAAW,EVfI,GAAG,GUqBrB;EThBO,MAAM,CAAN,MAAM,MAAM,SAAS,EAAE,MAAM;ISQrC,IAAI,CAAC;MAMG,wBAAwB,EAAE,IAAK,GAEtC","names":[],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/starter-template/gulp/compile-scss/compile-scss.js b/starter-template/gulp/compile-scss/compile-scss.js deleted file mode 100644 index 5723e34..0000000 --- a/starter-template/gulp/compile-scss/compile-scss.js +++ /dev/null @@ -1,32 +0,0 @@ -var gulp = require('gulp'), - config = require('../gulp.config.js')(), - plumber = require('gulp-plumber'), - sass = require('gulp-sass'), - sourcemaps = require('gulp-sourcemaps'), - neat = require('node-neat').includePaths; - - -module.exports = function() { - - var options = { - includePaths: neat, - outputStyle: 'nested', // 'compressed' - sourceComments: false - }; - - return gulp.src(config.scss.src) - .pipe(plumber({ - errorHandler: function (err) { - console.log(err); - this.emit('end'); - } - })) - .pipe(sourcemaps.init()) - .pipe(sass(options) - .on('error', sass.logError) - ) - .pipe(sourcemaps.write('./')) - .pipe(gulp.dest(config.scss.cssFolder)); -}; - - diff --git a/starter-template/gulp/create-svg-sprite/create-svg-sprite.js b/starter-template/gulp/create-svg-sprite/create-svg-sprite.js deleted file mode 100644 index 7e13b92..0000000 --- a/starter-template/gulp/create-svg-sprite/create-svg-sprite.js +++ /dev/null @@ -1,65 +0,0 @@ -var gulp = require('gulp'), - config = require('../gulp.config.js')(), - plumber = require('gulp-plumber'), - svg2png = require('gulp-svg2png'), - svgSprite = require('gulp-svg-sprite'); - -module.exports = function(){ - - if(config.svg.pngFallback){ - gulp.start('png-sprite') - } else { - gulp.start('svg-sprite') - } - - }; - -var svgConfig = { - shape: { - spacing: { - padding: 0 - } - }, - mode: { - css: { - bust: false, - dest : './', - // layout: 'vertical', 'horizontal', 'diagonal' - sprite : config.svg.spriteFolder + 'sprite.svg', - render: { - scss: { - dest: config.svg.scssMapFolder + '_svg-sprite-map.scss', - template: config.svg.scssMapFolder + '_svg-sprite-template.scss' - } - } - } - } -}; - -gulp.task('svg-sprite', function(){ - gulp.src(config.svg.sourceFolder + '*.svg') - .pipe(plumber({ - errorHandler: function (err) { - console.log(err); - this.emit('end'); - } - })) - .pipe(svgSprite(svgConfig)) - .pipe(gulp.dest('./')); -}); - -gulp.task('png-sprite', ['svg-sprite'], function(){ - gulp.src( config.svg.spriteFolder + '*.svg') - .pipe(plumber({ - errorHandler: function () { - console.log(err); - this.emit('end'); - } - })) - .pipe(svg2png()) - .pipe(gulp.dest(config.svg.spriteFolder)); -}); - - - - diff --git a/starter-template/gulp/gulp.config.js b/starter-template/gulp/gulp.config.js deleted file mode 100644 index 41065fa..0000000 --- a/starter-template/gulp/gulp.config.js +++ /dev/null @@ -1,23 +0,0 @@ - -module.exports = function () { - var config = { - scss: { - src: [ - './scss/**/*.scss', - '!scss/**/*_scsslint_tmp*.scss' - ], - cssFolder: 'content/styles/' - }, - svg: { - sourceFolder: 'scss/assets/icons/', - spriteFolder: 'content/styles/images/', - scssMapFolder: 'scss/core/', - pngFallback: false - } - }; - - return config; -}; - - - diff --git a/starter-template/gulp/watch-tasks/watch-all.js b/starter-template/gulp/watch-tasks/watch-all.js deleted file mode 100644 index 01bec30..0000000 --- a/starter-template/gulp/watch-tasks/watch-all.js +++ /dev/null @@ -1,7 +0,0 @@ -var gulp = require('gulp'), - config = require('../gulp.config.js')(); - -module.exports = function(){ - gulp.start(['watch-scss','watch-svg']); -}; - diff --git a/starter-template/gulp/watch-tasks/watch-scss.js b/starter-template/gulp/watch-tasks/watch-scss.js deleted file mode 100644 index 4d35b7c..0000000 --- a/starter-template/gulp/watch-tasks/watch-scss.js +++ /dev/null @@ -1,9 +0,0 @@ -var gulp = require('gulp'), - config = require('../gulp.config.js')(); - -module.exports = function(){ - - gulp.watch(config.scss.src, ['compile-scss']); - -}; - diff --git a/starter-template/gulp/watch-tasks/watch-svg.js b/starter-template/gulp/watch-tasks/watch-svg.js deleted file mode 100644 index 609881e..0000000 --- a/starter-template/gulp/watch-tasks/watch-svg.js +++ /dev/null @@ -1,11 +0,0 @@ -var gulp = require('gulp'), - config = require('../gulp.config.js')(); - -module.exports = function(){ - - return gulp.watch(config.svg.sourceFolder + '**/*.svg', function(){ - gulp.start('create-svg-sprite'); - }); - -}; - diff --git a/starter-template/gulpfile.js b/starter-template/gulpfile.js deleted file mode 100644 index 5c04586..0000000 --- a/starter-template/gulpfile.js +++ /dev/null @@ -1,10 +0,0 @@ -var gulp = require('gulp'); - -// Compile SASS -require('gulp-task-loader')('gulp/compile-scss'); - -// Create SVG sprite -require('gulp-task-loader')('gulp/create-svg-sprite'); - -// Watch -require('gulp-task-loader')('gulp/watch-tasks'); \ No newline at end of file diff --git a/starter-template/package.json b/starter-template/package.json deleted file mode 100644 index 03b682a..0000000 --- a/starter-template/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "Devbridge-FrontEnd", - "version": "1.0.0", - "repository": { - "type": "git", - "url": "git://github.com/devbridge/Front-End-Toolkit.git" - }, - "description": "Starter project", - "main": "gulpfile.js", - "dependencies": { - "gulp": "*", - "gulp-plumber": "^1.0.0", - "gulp-sass": "^2.0.4", - "gulp-sourcemaps": "^1.5.2", - "gulp-svg-sprite": "^1.2.9", - "gulp-svg2png": "^0.3.0", - "node-bourbon": "^4.2.3", - "node-neat": "^1.7.2" - }, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC", - "bugs": { - "url": "https://github.com/devbridge/Front-End-Toolkit/issues" - }, - "homepage": "https://github.com/devbridge/Front-End-Toolkit", - "devDependencies": { - "gulp-imagemin": "^2.3.0", - "gulp-task-loader": "1.2.1", - "imagemin-pngquant": "^4.2.0", - "gulp-ignore": "^2.0.1" - } -} diff --git a/starter-template/scss/core/_normalize.scss b/starter-template/scss/core/_normalize.scss deleted file mode 100644 index bd45e50..0000000 --- a/starter-template/scss/core/_normalize.scss +++ /dev/null @@ -1,238 +0,0 @@ -// Correct `block` display not defined for any HTML5 element in IE 8/9. -// Correct `block` display not defined for `details` or `summary` in IE 10/11 -// and Firefox. -// Correct `block` display not defined for `main` in IE 11. -article, -aside, -figcaption, -figure, -footer, -header, -main, -menu, -nav, -section { - display: block; -} - -// 1. Correct `inline-block` display not defined in IE 8/9. -// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. -audio, -canvas, -progress, -video { - display: inline-block; // 1 - vertical-align: baseline; // 2 -} - -// Prevent modern browsers from displaying `audio` without controls. -// Remove excess height in iOS 5 devices. -audio:not([controls]) { - display: none; - height: 0; -} - -// Remove the gray background color from active links in IE 10. -a { - background-color: transparent; -} - -// Improve readability when focused and also mouse hovered in all browsers. -a:active, -a:hover { - outline: 0; -} - -// Address styling not present in IE 8/9/10/11, Safari, and Chrome. -abbr[title] { - border-bottom: 1px dotted; -} - -// Address style set to `bolder` in Firefox 4+, Safari, and Chrome. -b, -strong { - font-weight: bold; -} - -// Address styling not present in Safari and Chrome. -dfn { - font-style: italic; -} - -// Address styling not present in IE 8/9. -mark { - background: #ff0; - color: #000; -} - -// Address inconsistent and variable font size in all browsers. -small { - font-size: 80%; -} - -// Prevent `sub` and `sup` affecting `line-height` in all browsers. -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -.5em; -} - -sub { - bottom: -.25em; -} - -// Remove border when inside `a` element in IE 8/9/10. -img { - border: 0; -} - -// Correct overflow not hidden in IE 9/10/11. -// Enable if you don't use -//svg:not(:root) { -// overflow: hidden; -//} - -// Address margin not present in IE 8/9 and Safari. -figure { - margin: 1em 40px; -} - -// Address differences between Firefox and other browsers. -hr { - box-sizing: content-box; - height: 0; -} - -// Contain overflow in all browsers. -pre { - overflow: auto; -} - -// Address odd `em`-unit font size rendering in all browsers. -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} - -// 1. Correct color not being inherited. Known issue: affects color of disabled elements. -// 2. Correct font properties not being inherited. -// 3. Address margins set differently in Firefox 4+, Safari, and Chrome. -button, -input, -optgroup, -select, -textarea { - color: inherit; // 1 - font: inherit; // 2 - margin: 0; // 3 -} - -// Address `overflow` set to `hidden` in IE 8/9/10/11. -button { - overflow: visible; -} - -// Address inconsistent `text-transform` inheritance for `button` and `select`. -// All other form control elements do not inherit `text-transform` values. -// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. -// Correct `select` style inheritance in Firefox. -button, -select { - text-transform: none; -} - -// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. -// 2. Correct inability to style clickable `input` types in iOS. -// 3. Improve usability and consistency of cursor style between image-type `input` and others. -button, -html input[type="button"], // 1 -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; // 2 - cursor: pointer; // 3 -} - -// Re-set default cursor for disabled elements. -button[disabled], -html input[disabled] { - cursor: default; -} - -// Remove inner padding and border in Firefox 4+. -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -// Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. -input { - line-height: normal; -} - -// It's recommended that you don't attempt to style these elements. -// Firefox's implementation doesn't respect box-sizing, padding, or width. -// 1. Address box sizing set to `content-box` in IE 8/9/10. -// 2. Remove excess padding in IE 8/9/10. -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; // 1 - padding: 0; // 2 -} - -// Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -// 1. Address `appearance` set to `searchfield` in Safari and Chrome. -// 2. Address `box-sizing` set to `border-box` in Safari and Chrome. -input[type="search"] { - -webkit-appearance: textfield; // 1 - box-sizing: content-box; // 2 -} - -// Remove inner padding and search cancel button in Safari and Chrome on OS X. -// Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -// 1. Correct `color` not being inherited in IE 8/9/10/11. -// 2. Remove padding so people aren't caught out if they zero out fieldsets. -legend { - border: 0; // 1 - padding: 0; // 2 -} - -// Remove default vertical scrollbar in IE 8/9/10/11. -textarea { - overflow: auto; -} - -// Don't inherit the `font-weight` (applied by a rule above). -// NOTE: the default cannot safely be changed in Chrome and Safari on OS X. -optgroup { - font-weight: bold; -} - -table { - border-collapse: collapse; - border-spacing: 0; -} - -td, -th { - padding: 0; -} diff --git a/starter-template/scss/site-styles.scss b/starter-template/scss/site-styles.scss deleted file mode 100644 index b40e46a..0000000 --- a/starter-template/scss/site-styles.scss +++ /dev/null @@ -1,36 +0,0 @@ -@charset "utf-8"; - -@import 'core/config'; // Framework configuration or other settings - -// Frameworks -@import 'bourbon'; -@import 'neat'; - -// Dependencies -@import 'core/colors', // Only color variables. - 'core/assets', // Variables for image urls, local web fonts or other assets your might have. - 'core/variables', // All other variables, including typography, measurements and etc. - 'core/mixins', // Mixins, functions, extenders. - 'core/normalize', // Contains CSS output to fix cross-browser inconsistencies. - 'core/notifications', - 'core/svg-sprite'; - -// Plugins - Styles of third party plugins -//@import 'plugins/slick'; - -// Global modules - modules shared between multiple projects (e.g. admin and public sites) -@import 'global/forms'; - //'global/tables', - //'global/modal'; - -// Local modules -@import 'site-public/modules/typography'; - -// Styles for project pages or similar views - styles that are connected by content -@import 'site-public/print', - 'site-public/pages/home'; - -// Structure -@import 'site-public/layout/layout', - 'site-public/layout/header', - 'site-public/layout/footer'; diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..9018571 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,28 @@ +var path = require('path'), + webpack = require("webpack"); + +function fromRootDir(matchPath) { + return new RegExp(process.cwd() + matchPath); +} + +module.exports = { + cache: true, + debug: true, + devServer: { + contentBase: './static', + hot: true, + stats: { + colors: true + } + }, + devtool: 'eval', + entry: './scripts/main.js', + output: { + path: path.join(__dirname, "build"), + filename: 'build.min.js' + }, + resolve: { + extensions: ['', '.js', '.json', '.coffee'] + } + +};