diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..3a287c45 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +# editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = false + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..ebe01992 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +_assets/css/vendor/* linguist-vendored +_assets/js/plugins/* linguist-vendored +_assets/js/vendor/* linguist-vendored +assets/fonts/* linguist-vendored +assets/js/vendor/* linguist-vendored \ No newline at end of file diff --git a/.gitignore b/.gitignore index 3b77a2ce..21206165 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,10 @@ -_site -.sass-cache -.DS_Store *.sublime-project *.sublime-workspace +.DS_Store +.jekyll-metadata +.sass-cache +_asset_bundler_cache +_site codekit-config.json node_modules -_asset_bundler_cache -.jekyll-metadata \ No newline at end of file +npm-debug.log* \ No newline at end of file diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index c7fe0666..00000000 --- a/.jshintrc +++ /dev/null @@ -1,20 +0,0 @@ -{ - "bitwise": true, - "browser": true, - "curly": true, - "eqeqeq": true, - "eqnull": true, - "es5": false, - "esnext": true, - "immed": true, - "jquery": true, - "latedef": true, - "newcap": true, - "noarg": true, - "node": true, - "strict": false, - "trailing": false, - "undef": true, - "multistr": true, - "expr": true -} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..1e1ffa95 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,55 @@ +## [1.2.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.2.0) + +### Bug Fixes + +- Table weren't filling the entire width of the content container. They now scale at 100%. Thanks [@dhruvbhatia](https://github.com/dhruvbhatia) + +### Enhancements + +- Decreased spacing between Markdown footnotes +- Removed dark background on footer +- Removed UPPERCASE styling on post titles in the index listing + +## [1.1.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.4) + +### Bug Fixes + +- Fix top navigation bug issue ([#10](https://github.com/mmistakes/minimal-mistakes/issues/10)) for real this time. Remember to clear your floats kids. + +## [1.1.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.3) + +### Bug Fixes + +- Fix top navigation links that weren't click able on small viewports (Issue [#10](https://github.com/mmistakes/minimal-mistakes/issues/10)). +- Remove line wrap from top navigation links that may span multiple lines. + +## [1.1.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.2) + +### Enhancements + +- Added Grunt build script for compiling Less/JavaScript and optimizing image assets. +- Added support for large image summary Twitter card. +- Stylesheet adjustments + +## [1.1.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.1) + +### Bug Fixes + +- Removed [Typeplate](http://typeplate.com/) styles. Was [causing issues with newer versions of Less](https://github.com/typeplate/typeplate.github.io/issues/108) and is no longer maintained. + +### Enhancements + +- Added [image attribution](http://mmistakes.github.io/minimal-mistakes/theme-setup/#feature-images) for post and page feature images. +- Added [404 page](http://mmistakes.github.io/minimal-mistakes/404.html). +- Cleaned up various Less variables to better align with naming conventions used in other MM Jekyll themes. +- Removed Chrome Frame references. +- Added global CSS3 transitions to text and block elements. +- Improved typography in a few places. + +## [1.0.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/v1.0.2) + +### Enhancements + +- Google Analytics, Google Authorship, webmaster verifies, and Twitter card meta are now optional. + +## [1.0.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/v1.0.1) \ No newline at end of file diff --git a/Gemfile b/Gemfile index 86dcd907..62e0820d 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,5 @@ source "https://rubygems.org" -gem "jekyll", "~> 3.0" -gem "jekyll-sitemap" -gem "jekyll-gist" -gem "octopress" \ No newline at end of file +gem "github-pages" +# gem "jekyll-archives" +gem "wdm", "~> 0.1.0" if Gem.win_platform? \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index 16837142..8fcf5a4b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,12 +1,61 @@ GEM remote: https://rubygems.org/ specs: - addressable (2.3.8) + RedCloth (4.2.9) + activesupport (4.2.6) + i18n (~> 0.7) + json (~> 1.7, >= 1.7.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + addressable (2.4.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.10.0) colorator (0.1) + ethon (0.8.1) + ffi (>= 1.3.0) + execjs (2.6.0) faraday (0.9.2) multipart-post (>= 1.2, < 3) ffi (1.9.10) - jekyll (3.1.1) + ffi (1.9.10-x64-mingw32) + gemoji (2.1.0) + github-pages (69) + RedCloth (= 4.2.9) + github-pages-health-check (= 1.1.0) + jekyll (= 3.0.3) + jekyll-coffeescript (= 1.0.1) + jekyll-feed (= 0.4.0) + jekyll-gist (= 1.4.0) + jekyll-github-metadata (= 1.11.0) + jekyll-mentions (= 1.1.2) + jekyll-paginate (= 1.1.0) + jekyll-redirect-from (= 0.10.0) + jekyll-sass-converter (= 1.3.0) + jekyll-seo-tag (= 1.3.3) + jekyll-sitemap (= 0.10.0) + jekyll-textile-converter (= 0.1.0) + jemoji (= 0.6.2) + kramdown (= 1.10.0) + liquid (= 3.0.6) + mercenary (~> 0.3) + rdiscount (= 2.1.8) + redcarpet (= 3.3.3) + rouge (= 1.10.1) + terminal-table (~> 1.4) + github-pages-health-check (1.1.0) + addressable (~> 2.3) + net-dns (~> 0.8) + octokit (~> 4.0) + public_suffix (~> 1.4) + typhoeus (~> 0.7) + html-pipeline (2.4.0) + activesupport (>= 2, < 5) + nokogiri (>= 1.4) + i18n (0.7.0) + jekyll (3.0.3) colorator (~> 0.1) jekyll-sass-converter (~> 1.0) jekyll-watch (~> 1.1) @@ -15,56 +64,76 @@ GEM mercenary (~> 0.3.3) rouge (~> 1.7) safe_yaml (~> 1.0) + jekyll-coffeescript (1.0.1) + coffee-script (~> 2.2) + jekyll-feed (0.4.0) jekyll-gist (1.4.0) octokit (~> 4.2) - jekyll-sass-converter (1.4.0) - sass (~> 3.4) + jekyll-github-metadata (1.11.0) + octokit (~> 4.0) + jekyll-mentions (1.1.2) + html-pipeline (~> 2.3) + jekyll (~> 3.0) + jekyll-paginate (1.1.0) + jekyll-redirect-from (0.10.0) + jekyll (>= 2.0) + jekyll-sass-converter (1.3.0) + sass (~> 3.2) + jekyll-seo-tag (1.3.3) + jekyll (~> 3.0) jekyll-sitemap (0.10.0) + jekyll-textile-converter (0.1.0) + RedCloth (~> 4.0) jekyll-watch (1.3.1) listen (~> 3.0) - kramdown (1.9.0) + jemoji (0.6.2) + gemoji (~> 2.0) + html-pipeline (~> 2.2) + jekyll (>= 3.0) + json (1.8.3) + kramdown (1.10.0) liquid (3.0.6) - listen (3.0.5) + listen (3.0.6) rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9) - mercenary (0.3.5) + rb-inotify (>= 0.9.7) + mercenary (0.3.6) + mini_portile2 (2.0.0) + minitest (5.8.4) multipart-post (2.0.0) - octokit (4.2.0) - sawyer (~> 0.6.0, >= 0.5.3) - octopress (3.0.11) - jekyll (>= 2.0) - mercenary (~> 0.3.2) - octopress-deploy - octopress-escape-code (~> 2.0) - octopress-hooks (~> 2.0) - redcarpet (~> 3.0) - titlecase - octopress-deploy (1.3.0) - colorator - octopress-escape-code (2.1.1) - jekyll (~> 3.0) - octopress-hooks (2.6.1) - jekyll (>= 2.0) + net-dns (0.8.0) + nokogiri (1.6.7.2) + mini_portile2 (~> 2.0.0.rc2) + nokogiri (1.6.7.2-x64-mingw32) + mini_portile2 (~> 2.0.0.rc2) + octokit (4.3.0) + sawyer (~> 0.7.0, >= 0.5.3) + public_suffix (1.5.3) rb-fsevent (0.9.7) - rb-inotify (0.9.5) + rb-inotify (0.9.7) ffi (>= 0.5.0) - redcarpet (3.3.4) + rdiscount (2.1.8) + redcarpet (3.3.3) rouge (1.10.1) safe_yaml (1.0.4) - sass (3.4.21) - sawyer (0.6.0) - addressable (~> 2.3.5) + sass (3.4.22) + sawyer (0.7.0) + addressable (>= 2.3.5, < 2.5) faraday (~> 0.8, < 0.10) - titlecase (0.1.1) + terminal-table (1.5.2) + thread_safe (0.3.5) + typhoeus (0.8.0) + ethon (>= 0.8.0) + tzinfo (1.2.2) + thread_safe (~> 0.1) + wdm (0.1.1) PLATFORMS ruby + x64-mingw32 DEPENDENCIES - jekyll (~> 3.0) - jekyll-gist - jekyll-sitemap - octopress + github-pages + wdm (~> 0.1.0) BUNDLED WITH 1.11.2 diff --git a/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index 6fbf033e..00000000 --- a/Gruntfile.js +++ /dev/null @@ -1,88 +0,0 @@ -'use strict'; -module.exports = function(grunt) { - - grunt.initConfig({ - jshint: { - options: { - jshintrc: '.jshintrc' - }, - all: [ - 'Gruntfile.js', - 'assets/js/*.js', - '!assets/js/plugins/*.js', - '!assets/js/scripts.min.js' - ] - }, - uglify: { - dist: { - files: { - 'assets/js/scripts.min.js': [ - 'assets/js/plugins/*.js', - 'assets/js/_*.js' - ] - } - } - }, - imagemin: { - dist: { - options: { - optimizationLevel: 7, - progressive: true - }, - files: [{ - expand: true, - cwd: 'images/', - src: '{,*/}*.{png,jpg,jpeg}', - dest: 'images/' - }] - } - }, - svgmin: { - dist: { - files: [{ - expand: true, - cwd: 'images/', - src: '{,*/}*.svg', - dest: 'images/' - }] - } - }, - watch: { - js: { - files: [ - '<%= jshint.all %>' - ], - tasks: ['jshint','uglify'] - } - }, - clean: { - dist: [ - 'assets/js/scripts.min.js' - ] - } - }); - - // Load tasks - grunt.loadNpmTasks('grunt-contrib-clean'); - grunt.loadNpmTasks('grunt-contrib-jshint'); - grunt.loadNpmTasks('grunt-contrib-uglify'); - grunt.loadNpmTasks('grunt-contrib-watch'); - grunt.loadNpmTasks('grunt-contrib-imagemin'); - grunt.loadNpmTasks('grunt-svgmin'); - - // Register tasks - grunt.registerTask('default', [ - 'clean', - 'uglify', - 'imagemin', - 'svgmin' - ]); - grunt.registerTask('dev', [ - 'watch' - ]); - grunt.registerTask('images', [ - 'imagemin', - 'svgmin' - ]); - -}; \ No newline at end of file diff --git a/LICENSE b/LICENSE index 4fe17285..23a6cd1d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014 Michael Rose +Copyright (c) 2016 Michael Rose Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 277b3dda..c3047fae 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,87 @@ -# Minimal Mistakes +# Minimal Mistakes Jekyll Theme -**[Minimal Mistakes](http://mmistakes.github.io/minimal-mistakes)** is a two column responsive Jekyll theme perfect for powering your GitHub hosted blog built. Compatible with Jekyll 3.0 and up. +Minimal Mistakes is a flexible two-column Jekyll theme. Perfect for hosting your personal site, blog, or portfolio on GitHub or self-hosting on your own server. As the name implies --- styling is purposely minimalistic to be enhanced and customized by you :smile:. -## Minimal Mistakes is all about: +The theme includes responsive layouts (`single`, `archive`, and `splash` pages) that look great on mobile and desktop browsers. -* Responsive templates. Looking good on mobile, tablet, and desktop. -* Gracefully degrading in older browsers. Compatible with Internet Explorer 8+ and all modern browsers. -* Minimal embellishments -- content first. -* Optional large feature images for posts and pages. -* Simple and clear permalink structure. -* [Custom 404 page](http://mmistakes.github.io/minimal-mistakes/404.html) to get you started. -* Support for Disqus Comments +![mm-layout-examples](https://cloud.githubusercontent.com/assets/1376749/14541626/dac474f4-0258-11e6-83f6-40e752028222.png) -![screenshot of Minimal Mistakes theme](http://mmistakes.github.io/minimal-mistakes/images/mm-theme-post-600.jpg) +## [Installation and Setup](https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/) / [Preview the Theme](https://mmistakes.github.io/minimal-mistakes/) -See a [live version of Minimal Mistakes](http://mmistakes.github.io/minimal-mistakes/) hosted on GitHub. +### Notable Features -## Getting Started +- Compatible with GitHub Pages +- Several layout options (single, archive, splash pages) +- SEO optimized with support for [Twitter Cards](https://dev.twitter.com/cards/overview) and [Open Graph](http://ogp.me/) data +- Optional header images, sidebars, table of contents, galleries, related posts, breadcrumb links, and more. +- Optional comments ([Disqus](https://disqus.com/), [Facebook](https://developers.facebook.com/docs/plugins/comments), Google+, and custom) +- Optional analytics ([Google Analytics](https://www.google.com/analytics/) and custom) -Minimal Mistakes takes advantage of Sass and data files to make customizing easier. These features require [Jekyll 2.x](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.1.3) and will not work with older versions of Jekyll. +#### Demo Pages -To learn how to install and use this theme check out the [Setup Guide](http://mmistakes.github.io/minimal-mistakes/theme-setup/) for more information. +| Name | Description | +| ------------------------------------------- | ----------------------------------------------------- | +| [Post with Header Image][header-image-post] | A post with a large header image. | +| [HTML Tags and Formatting Post][html-tags-post] | A variety of common markup showing how the theme styles them. | +| [Syntax Highlighting Post][syntax-post] | Post displaying highlighted code. | +| [Post with a Gallery][gallery-post] | A post showing several images wrapped in `
` elements. | +| [Sample Collection Page][sample-collection] | Single page from a collection. | +| [Categories Archive][categories-archive] | Posts grouped by category. | +| [Tags Archive][tags-archive] | Posts grouped by tags. | + +For even more demo pages check the [posts archive][year-archive]. + +[header-image-post]: https://mmistakes.github.io/minimal-mistakes/layout-header-image-text-readability/ +[gallery-post]: https://mmistakes.github.io/minimal-mistakes/post%20formats/post-gallery/ +[html-tags-post]: https://mmistakes.github.io/minimal-mistakes/markup/markup-html-tags-and-formatting/ +[syntax-post]: https://mmistakes.github.io/minimal-mistakes/markup-syntax-highlighting/ +[sample-collection]: https://mmistakes.github.io/minimal-mistakes/recipes/chocolate-chip-cookies/ +[categories-archive]: https://mmistakes.github.io/minimal-mistakes/categories/ +[tags-archive]: https://mmistakes.github.io/minimal-mistakes/tags/ +[year-archive]: https://mmistakes.github.io/minimal-mistakes/year-archive/ + +--- + +### Credits + +#### Icons + Demo Images: + +- [The Noun Project](https://thenounproject.com) -- Garrett Knoll, Arthur Shlain, and [tracy tam](https://thenounproject.com/tracytam) +- [Font Awesome](http://fortawesome.github.io/Font-Awesome/) +- [Unsplash](https://unsplash.com/) + +#### Other: + +- [Jekyll](http://jekyllrb.com/) +- [jQuery](http://jquery.com/) +- [Susy](http://susy.oddbird.net/) +- [Breakpoint](http://breakpoint-sass.com/) +- [Magnific Popup](http://dimsemenov.com/plugins/magnific-popup/) +- [FitVids.JS](http://fitvidsjs.com/) +- Greedy Navigation - [lukejacksonn](http://codepen.io/lukejacksonn/pen/PwmwWV) +- [jQuery Smooth Scroll](https://github.com/kswedberg/jquery-smooth-scroll) +- [Stickyfill](https://github.com/wilddeer/stickyfill) + +--- + +The MIT License (MIT) + +Copyright (c) 2016 Michael Rose + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/_config.yml b/_config.yml index a417232c..57ff92c8 100644 --- a/_config.yml +++ b/_config.yml @@ -1,76 +1,206 @@ -# Site wide configuration +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your entire site, values +# which you are expected to set up once and rarely need to edit after that. +# For technical reasons, this file is *NOT* reloaded automatically when you use +# `jekyll serve`. If you change this file, please restart the server process. -title: Site Title -locale: en_US -url: +# Site Settings +locale : "en-US" +title : "Site Title" +title_separator : "-" +name : "Your Name" +description : "An amazing website." +url : # the base hostname & protocol for your site e.g. "https://github.io.mmistakes" +baseurl : # the subpath of your site, e.g. "/blog" +gh_repo : +teaser : # filename of teaser fallback teaser image placed in /images/, .e.g. "500x300.png" +# breadcrumbs : false # true, false (default) +# words_per_minute : 200 +comments: + provider : # false (default), "disqus", "facebook", "google-plus", custom" + disqus: + shortname : # https://help.disqus.com/customer/portal/articles/466208-what-s-a-shortname- + facebook: + # https://developers.facebook.com/docs/plugins/comments + appid : + num_posts : # 5 (default) + colorscheme : # "light" (default), "dark" + +# SEO Related +google_site_verification : +bing_site_verification : +alexa_site_verification : +yandex_site_verification : + +# Social Sharing +twitter: + username : +facebook: + username : + app_id : + publisher : +og_image : # Open Graph/Twitter default site image +# For specifying social profiles +# - https://developers.google.com/structured-data/customize/social-profiles +social: + type : # Person or Organization (defaults to Person) + name : # If the user or organization name differs from the site's name + links: # An array of links to social media profiles + +# Analytics +analytics: + provider : false # false (default), "google", "google-universal", "custom" + google: + tracking_id : + +# Google AdSense +google_ad_client : +google_ad_slot : -# Jekyll configuration +# Site Author +author: + name : "Your Name" + avatar : "bio-photo.jpg" + bio : "I am an amazing person." + location : "Somewhere" + email : + uri : + bitbucket : + codepen : + dribbble : + flickr : + facebook : + foursquare : + github : + google_plus : + keybase : + instagram : + lastfm : + linkedin : + pinterest : + soundcloud : + stackoverflow : # http://stackoverflow.com/users/123456/username + steam : + tumblr : + twitter : + vine : + weibo : + xing : + youtube : -permalink: /:categories/:title/ -markdown: kramdown + +# Reading Files +include: + - .htaccess + - _pages +exclude: + - "*.sublime-project" + - "*.sublime-workspace" + - .asset-cache + - .bundle + - .jekyll-assets-cache + - .sass-cache + - assets/js/plugins + - assets/js/_main.js + - assets/js/vendor + - Capfile + - CHANGELOG + - config + - Gemfile + - Gruntfile.js + - gulpfile.js + - LICENSE + - log + - node_modules + - package.json + - Rakefile + - README + - tmp +keep_files: + - .git + - .svn +encoding: "utf-8" +markdown_ext: "markdown,mkdown,mkdn,mkd,md" + + +# Conversion +markdown: kramdown highlighter: rouge -sass: - sass_dir: _sass - style: compressed -gems: - - jekyll-sitemap - - jekyll-gist +lsi: false +excerpt_separator: "\n\n" +incremental: false + +# Markdown Processing kramdown: + input: GFM + hard_wrap: false auto_ids: true footnote_nr: 1 entity_output: as_char toc_levels: 1..6 + smart_quotes: lsquo,rsquo,ldquo,rdquo enable_coderay: false -# Octopress - -# Default extensions -post_ext: md -page_ext: md - -# Found in _templates/ -post_layout: post -page_layout: page - -# Format titles with titlecase? -titlecase: true +# Outputting +permalink: /:categories/:title/ +paginate: 5 # amount of posts to show +paginate_path: /page:num/ +timezone: # http://en.wikipedia.org/wiki/List_of_tz_database_time_zones -# Site owner -owner: - name: Your Name - avatar: bio-photo.jpg - bio: "Describe your self." - email: - disqus-shortname: - twitter: #username - facebook: #username - google: - plus: #username - analytics: - verify: - ad-client: - ad-slot: - bing-verify: - github: #username - stackoverflow: #123456/username from a "http://stackoverflow.com/users/123456/username" link - linkedin: #username - xing: #username - instagram: #username - lastfm: #username - tumblr: #username - pinterest: #username - foursquare: #username - steam: #username - dribbble: #username - youtube: #username - soundcloud: #username - weibo: #username - flickr: #username - codepen: #username +# Plugins +gems: + - jekyll-paginate + - jekyll-sitemap + - jekyll-gist + - jekyll-feed + - jemoji -include: [".htaccess"] -exclude: ["lib", "config.rb", "Capfile", "config", "log", "Rakefile", "Rakefile.rb", "tmp", "less", "*.sublime-project", "*.sublime-workspace", "test", "spec", "Gruntfile.js", "package.json", "node_modules", "Gemfile", "Gemfile.lock", "LICENSE", "README.md"] +# mimic GitHub Pages with --safe +whitelist: + - jekyll-paginate + - jekyll-sitemap + - jekyll-gist + - jekyll-feed + - jemoji + + +# Archives +# Type +# - GitHub Pages compatible archive pages built with Liquid ~> type: liquid (default) +# - Jekyll Archives plugin archive pages ~> type: jekyll-archives +# Path (examples) +# - Archive page should exist at path when using Liquid method or you can +# expect broken links (especially with breadcrumbs enabled) +# - /tags/my-awesome-tag/index.html ~> path: /tags/ +# - path: /categories/ +# - path: / +categories: + type: liquid + path: /categories/ +tags: + type: liquid + path: /tags/ +# https://github.com/jekyll/jekyll-archives +# jekyll-archives: +# enabled: +# - categories +# - tags +# layouts: +# category: archive-taxonomy +# tag: archive-taxonomy +# permalinks: +# category: /categories/:name/ +# tag: /tags/:name/ + + +# HTML Compression +# - http://jch.penibelst.de/ +compress_html: + clippings: all + ignore: + envs: development diff --git a/_data/authors.yml b/_data/authors.yml deleted file mode 100644 index d49d88bf..00000000 --- a/_data/authors.yml +++ /dev/null @@ -1,20 +0,0 @@ -# Authors - -billy_rick: - name: Billy Rick - web: http://thewhip.com - email: billy@rick.com - bio: "What do you want, jewels? I am a very extravagant man." - avatar: bio-photo-2.jpg - twitter: extravagantman - google: - plus: BillyRick - -cornelius_fiddlebone: - name: Cornelius Fiddlebone - email: cornelius@thewhip.com - bio: "I ordered what?" - avatar: bio-photo.jpg - twitter: rhymeswithsackit - google: - plus: CorneliusFiddlebone \ No newline at end of file diff --git a/_data/navigation.yml b/_data/navigation.yml index 7ef51022..fee066fc 100644 --- a/_data/navigation.yml +++ b/_data/navigation.yml @@ -1,10 +1,16 @@ -# Site navigation links +# main links links +main: + - title: "Quick-Start Guide" + url: https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/ -- title: About - url: /about/ + - title: "About" + url: https://mmistakes.github.io/minimal-mistakes/ -- title: Sample Posts - url: /posts/ + - title: "Sample Posts" + url: https://mmistakes.github.io/minimal-mistakes/year-archive/ -- title: Theme Setup - url: /theme-setup/ \ No newline at end of file + - title: "Sample Pages" + url: https://mmistakes.github.io/minimal-mistakes/page-archive/ + + - title: "Sample Collections" + url: https://mmistakes.github.io/minimal-mistakes/collection-archive/ \ No newline at end of file diff --git a/_data/ui-text.yml b/_data/ui-text.yml new file mode 100644 index 00000000..54f7de3d --- /dev/null +++ b/_data/ui-text.yml @@ -0,0 +1,35 @@ +# User interface text and labels + +# English (default) +# ----------------- +en: &DEFAULT_EN + page : "Page" + pagination_previous : "Previous" + pagination_next : "Next" + breadcrumb_home_label : "Home" + breadcrumb_separator : "/" + toc_label : "On This Page" + ext_link_label : "Direct Link" + less_than : "less than" + minute_read : "minute read" + minutes_read : "minutes read" + share_on_label : "Share on" + meta_label : + tags_label : "Tags:" + categories_label : "Categories:" + date_label : "Updated:" + comments_label : "Leave a Comment" + more_label : "Learn More" + related_label : "You May Also Enjoy" + follow_label : "Follow:" + feed_label : "Feed" + powered_by : "Powered by" + website_label : "Website" + email_label : "Email" +en-US: + <<: *DEFAULT_EN +en-UK: + <<: *DEFAULT_EN + +# Another locale +# -------------- \ No newline at end of file diff --git a/_includes/_author-bio.html b/_includes/_author-bio.html deleted file mode 100644 index 7fd24e34..00000000 --- a/_includes/_author-bio.html +++ /dev/null @@ -1,35 +0,0 @@ -{% if page.author %} - {% assign author = site.data.authors[page.author] %}{% else %}{% assign author = site.owner %} -{% endif %} - -
- -{% if author.avatar contains 'http' %} - {{ author.name }} bio photo -{% else %} - {{ author.name }} bio photo -{% endif %} - -

{{ author.name }}

-

{{ author.bio }}

- {% if author.email %} Email{% endif %} - {% if author.twitter %} Twitter{% endif %} - {% if author.facebook %} Facebook{% endif %} - {% if author.google.plus %} Google+{% endif %} - {% if author.linkedin %} LinkedIn{% endif %} - {% if author.xing %} XING{% endif %} - {% if author.instagram %} Instagram{% endif %} - {% if author.tumblr %} Tumblr{% endif %} - {% if author.github %} Github{% endif %} - {% if author.stackoverflow %} Stackoverflow{% endif %} - {% if author.lastfm %} Last.fm{% endif %} - {% if author.dribbble %} Dribbble{% endif %} - {% if author.pinterest %} Pinterest{% endif %} - {% if author.foursquare %} Foursquare{% endif %} - {% if author.steam %} Steam{% endif %} - {% if author.youtube %} Youtube{% endif %} - {% if author.soundcloud %} Soundcloud{% endif %} - {% if author.weibo %} Weibo{% endif %} - {% if author.flickr %} Flickr{% endif %} - {% if author.codepen %} CodePen{% endif %} -
diff --git a/_includes/_browser-upgrade.html b/_includes/_browser-upgrade.html deleted file mode 100644 index 99d9cbc2..00000000 --- a/_includes/_browser-upgrade.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/_includes/_disqus_comments.html b/_includes/_disqus_comments.html deleted file mode 100644 index 12e8fefb..00000000 --- a/_includes/_disqus_comments.html +++ /dev/null @@ -1,22 +0,0 @@ -{% if site.owner.disqus-shortname %} - - -{% endif %} diff --git a/_includes/_feed-footer.html b/_includes/_feed-footer.html deleted file mode 100644 index 02a94f6a..00000000 --- a/_includes/_feed-footer.html +++ /dev/null @@ -1 +0,0 @@ -<p><a href="{{ site.url }}{{ post.url }}">{{ post.title | xml_escape }}</a> was originally published by {{ site.owner.name }} at <a href="{{ site.url }}">{{ site.title }}</a> on {{ post.date | date: "%B %d, %Y" }}.</p> \ No newline at end of file diff --git a/_includes/_footer.html b/_includes/_footer.html deleted file mode 100644 index 90d904df..00000000 --- a/_includes/_footer.html +++ /dev/null @@ -1,15 +0,0 @@ -{% if site.owner.google.ad-client and site.owner.google.ad-slot %} - -{% endif %} - -© {{ site.time | date: '%Y' }} {{ site.owner.name }}. Powered by Jekyll using the Minimal Mistakes theme. diff --git a/_includes/_head.html b/_includes/_head.html deleted file mode 100644 index d8d07542..00000000 --- a/_includes/_head.html +++ /dev/null @@ -1,52 +0,0 @@ - -{% if page.title %}{{ page.title }} – {% endif %}{{ site.title }} -{% if page.excerpt %}{% endif %} - -{% if page.author %} - {% assign author = site.data.authors[page.author] %}{% else %}{% assign author = site.owner %} -{% endif %} - -{% include _open-graph.html %} - -{% if site.owner.google.verify %} -{% endif %} -{% if site.owner.bing-verify %}{% endif %} - -{% capture canonical %}{{ site.url }}{% if site.permalink contains '.html' %}{{ page.url }}{% else %}{{ page.url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/_includes/_navigation.html b/_includes/_navigation.html deleted file mode 100644 index 60e45d5b..00000000 --- a/_includes/_navigation.html +++ /dev/null @@ -1,19 +0,0 @@ - diff --git a/_includes/_open-graph.html b/_includes/_open-graph.html deleted file mode 100644 index 2e1db2cf..00000000 --- a/_includes/_open-graph.html +++ /dev/null @@ -1,24 +0,0 @@ - - -{% if page.excerpt %}{% endif %} -{% if site.owner.twitter %}{% endif %} -{% if author.twitter %}{% endif %} -{% if page.image.feature %} - - -{% else %} - - -{% endif %} - - - - -{% if page.excerpt %}{% endif %} - - -{% if page.image.feature %} - -{% else %} - -{% endif %} \ No newline at end of file diff --git a/_includes/_scripts.html b/_includes/_scripts.html deleted file mode 100644 index 42d75b3e..00000000 --- a/_includes/_scripts.html +++ /dev/null @@ -1,23 +0,0 @@ - - - -{% if site.owner.google.analytics %} - - -{% endif %} -{% if page.comments %} - {% include _disqus_comments.html %} -{% endif %} diff --git a/_includes/_social-share.html b/_includes/_social-share.html deleted file mode 100644 index 3c68277c..00000000 --- a/_includes/_social-share.html +++ /dev/null @@ -1,14 +0,0 @@ - \ No newline at end of file diff --git a/_includes/_toc.html b/_includes/_toc.html deleted file mode 100644 index cca407dd..00000000 --- a/_includes/_toc.html +++ /dev/null @@ -1,9 +0,0 @@ -
-
-

Overview

-
-
-* Auto generated table of contents -{:toc} -
-
\ No newline at end of file diff --git a/_includes/analytics-providers/custom.html b/_includes/analytics-providers/custom.html new file mode 100644 index 00000000..c34b97ad --- /dev/null +++ b/_includes/analytics-providers/custom.html @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/_includes/analytics-providers/google-universal.html b/_includes/analytics-providers/google-universal.html new file mode 100644 index 00000000..3ada6e36 --- /dev/null +++ b/_includes/analytics-providers/google-universal.html @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/_includes/analytics-providers/google.html b/_includes/analytics-providers/google.html new file mode 100644 index 00000000..b591b995 --- /dev/null +++ b/_includes/analytics-providers/google.html @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/_includes/analytics.html b/_includes/analytics.html new file mode 100644 index 00000000..64a3359a --- /dev/null +++ b/_includes/analytics.html @@ -0,0 +1,12 @@ +{% if site.analytics.provider and page.analytics != false %} + +{% case site.analytics.provider %} +{% when "google" %} + {% include /analytics-providers/google.html %} +{% when "google-universal" %} + {% include /analytics-providers/google-universal.html %} +{% when "custom" %} + {% include /analytics-providers/custom.html %} +{% endcase %} + +{% endif %} \ No newline at end of file diff --git a/_includes/archive-single.html b/_includes/archive-single.html new file mode 100644 index 00000000..60b63f91 --- /dev/null +++ b/_includes/archive-single.html @@ -0,0 +1,34 @@ +{% include base_path %} + +{% if post.header.teaser %} + {% capture teaser %}{{ post.header.teaser }}{% endcapture %} +{% else %} + {% capture teaser %}{{ site.teaser }}{% endcapture %} +{% endif %} + + \ No newline at end of file diff --git a/_includes/author-profile.html b/_includes/author-profile.html new file mode 100644 index 00000000..40ae6d4d --- /dev/null +++ b/_includes/author-profile.html @@ -0,0 +1,102 @@ +{% include base_path %} + +{% if page.author %} + {% assign author = site.data.authors[page.author] %}{% else %}{% assign author = site.author %} +{% endif %} + +
+ +
+ {% if author.avatar contains "http" %} + {{ author.name }} + {% else %} + {{ author.name }} + {% endif %} +
+ +
+

{{ author.name }}

+ {% if author.bio %}

{{ author.bio }}

{% endif %} +
+ +
+ + +
+
diff --git a/_includes/base_path b/_includes/base_path new file mode 100644 index 00000000..8c7dc62b --- /dev/null +++ b/_includes/base_path @@ -0,0 +1 @@ +{% capture base_path %}{{ site.url }}{{ site.baseurl }}{% endcapture %} \ No newline at end of file diff --git a/_includes/breadcrumbs.html b/_includes/breadcrumbs.html new file mode 100644 index 00000000..ded8bd6e --- /dev/null +++ b/_includes/breadcrumbs.html @@ -0,0 +1,41 @@ +{% include base_path %} + +{% case site.categories.type %} + {% when "liquid" %} + {% assign path_type = "#" %} + {% when "jekyll-archives" %} + {% assign path_type = nil %} +{% endcase %} + +{% if page.collection != 'posts' %} + {% assign path_type = nil %} + {% assign crumb_path = '/' %} +{% else %} + {% assign crumb_path = site.categories.path %} +{% endif %} + + \ No newline at end of file diff --git a/_includes/browser-upgrade.html b/_includes/browser-upgrade.html new file mode 100644 index 00000000..e8d8b262 --- /dev/null +++ b/_includes/browser-upgrade.html @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/_includes/category-list.html b/_includes/category-list.html new file mode 100644 index 00000000..2347133f --- /dev/null +++ b/_includes/category-list.html @@ -0,0 +1,30 @@ +{% include base_path %} + +{% include base_path %} + +{% case site.categories.type %} + {% when "liquid" %} + {% assign path_type = "#" %} + {% when "jekyll-archives" %} + {% assign path_type = nil %} +{% endcase %} + +{% if site.categories.path %} + {% comment %} + + + {% endcomment %} + {% capture page_categories %}{% for category in page.categories %}{{ category | downcase }}#{{ category }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %} + {% assign category_hashes = (page_categories | split: ',' | sort:0) %} + +

+ {{ site.data.ui-text[site.locale].categories_label }} + + {% for hash in category_hashes %} + {% assign keyValue = hash | split: '#' %} + {% capture category_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %} + {% unless forloop.last %}, {% endunless %} + {% endfor %} + +

+{% endif %} \ No newline at end of file diff --git a/_includes/comments-providers/custom.html b/_includes/comments-providers/custom.html new file mode 100644 index 00000000..90993691 --- /dev/null +++ b/_includes/comments-providers/custom.html @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/_includes/comments-providers/disqus.html b/_includes/comments-providers/disqus.html new file mode 100644 index 00000000..b80be9ef --- /dev/null +++ b/_includes/comments-providers/disqus.html @@ -0,0 +1,22 @@ +{% if site.comments.disqus.shortname %} + + +{% endif %} diff --git a/_includes/comments-providers/facebook.html b/_includes/comments-providers/facebook.html new file mode 100644 index 00000000..009dc1c6 --- /dev/null +++ b/_includes/comments-providers/facebook.html @@ -0,0 +1,8 @@ +
+ \ No newline at end of file diff --git a/_includes/comments-providers/google-plus.html b/_includes/comments-providers/google-plus.html new file mode 100644 index 00000000..cd582c3d --- /dev/null +++ b/_includes/comments-providers/google-plus.html @@ -0,0 +1,2 @@ + + diff --git a/_includes/comments-providers/scripts.html b/_includes/comments-providers/scripts.html new file mode 100644 index 00000000..df699fc5 --- /dev/null +++ b/_includes/comments-providers/scripts.html @@ -0,0 +1,14 @@ +{% if site.comments.provider and page.comments %} + +{% case site.comments.provider %} +{% when "disqus" %} + {% include /comments-providers/disqus.html %} +{% when "facebook" %} + {% include /comments-providers/facebook.html %} +{% when "google-plus" %} + {% include /comments-providers/google-plus.html %} +{% when "custom" %} + {% include /comments-providers/custom.html %} +{% endcase %} + +{% endif %} \ No newline at end of file diff --git a/_includes/comments.html b/_includes/comments.html new file mode 100644 index 00000000..03a8c64c --- /dev/null +++ b/_includes/comments.html @@ -0,0 +1,15 @@ +{% include base_path %} + +
+

{{ site.data.ui-text[site.locale].comments_label }}

+ {% case site.comments.provider %} + {% when "disqus" %} +
+ {% when "facebook" %} +
+ {% when "google-plus" %} +
Loading Google+ Comments ...
+ {% when "custom" %} +
+ {% endcase %} +
\ No newline at end of file diff --git a/_includes/feature_row b/_includes/feature_row new file mode 100644 index 00000000..798ac44e --- /dev/null +++ b/_includes/feature_row @@ -0,0 +1,52 @@ +{% include base_path %} + +{% if include.id %} + {% assign feature_row = page.[include.id] %} +{% else %} + {% assign feature_row = page.feature_row %} +{% endif %} + +
+ + {% for f in feature_row %} + + {% if f.url contains "http" %} + {% capture f_url %}{{ f.url }}{% endcapture %} + {% else %} + {% capture f_url %}{{ f.url | prepend: base_path }}{% endcapture %} + {% endif %} + +
+
+ {% if f.image_path %} +
+ {% if f.alt %}{{ f.alt }}{% endif %} +
+ {% endif %} + +
+ {% if f.title %} +

{{ f.title }}

+ {% endif %} + + {% if f.excerpt %} +
+ {{ f.excerpt | markdownify }} +
+ {% endif %} + + {% if f.url %} +

{{ f.btn_label | default: site.data.ui-text[site.locale].more_label }}

+ {% endif %} +
+
+
+ {% endfor %} + +
\ No newline at end of file diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 00000000..2573c5dc --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,18 @@ +{% include base_path %} + + + + diff --git a/_includes/footer/custom.html b/_includes/footer/custom.html new file mode 100644 index 00000000..d512599d --- /dev/null +++ b/_includes/footer/custom.html @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/_includes/gallery b/_includes/gallery new file mode 100644 index 00000000..9e6f31ea --- /dev/null +++ b/_includes/gallery @@ -0,0 +1,50 @@ +{% include base_path %} + +{% if include.id %} + {% assign gallery = page.[include.id] %} +{% else %} + {% assign gallery = page.gallery %} +{% endif %} + +{% capture gallery_size %}{{ gallery | size }}{% endcapture %} + +{% if gallery_size == '2' %} + {% assign gallery_layout = 'half' %} +{% elsif gallery_size >= '3' %} + {% assign gallery_layout = 'third' %} +{% else %} + {% assign gallery_layout = '' %} +{% endif %} + + \ No newline at end of file diff --git a/_includes/group-by-array b/_includes/group-by-array new file mode 100644 index 00000000..33af7555 --- /dev/null +++ b/_includes/group-by-array @@ -0,0 +1,47 @@ + + + +{% assign __empty_array = '' | split: ',' %} +{% assign group_names = __empty_array %} +{% assign group_items = __empty_array %} + + +{% assign __names = include.collection | map: include.field %} + + +{% assign __names = __names | join: ',' | join: ',' | split: ',' %} + + +{% assign __names = __names | sort %} +{% for name in __names | sort %} + + + {% unless name == previous %} + + + {% assign group_names = group_names | push: name %} + {% endunless %} + + {% assign previous = name %} +{% endfor %} + + + +{% for name in group_names %} + + + {% assign __item = __empty_array %} + {% for __element in include.collection %} + {% if __element[include.field] contains name %} + {% assign __item = __item | push: __element %} + {% endif %} + {% endfor %} + + + {% assign group_items = group_items | push: __item %} +{% endfor %} diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 00000000..a28ce9a0 --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,21 @@ +{% include base_path %} + + + +{% include seo.html %} + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_includes/head/custom.html b/_includes/head/custom.html new file mode 100644 index 00000000..01767313 --- /dev/null +++ b/_includes/head/custom.html @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/_includes/masthead.html b/_includes/masthead.html new file mode 100644 index 00000000..ffef5594 --- /dev/null +++ b/_includes/masthead.html @@ -0,0 +1,23 @@ +{% include base_path %} + +
+
+
+ +
+
+
\ No newline at end of file diff --git a/_includes/nav_list b/_includes/nav_list new file mode 100644 index 00000000..352856f7 --- /dev/null +++ b/_includes/nav_list @@ -0,0 +1,25 @@ +{% include base_path %} +{% assign navigation = site.data.navigation[page.sidebar.nav] %} + + \ No newline at end of file diff --git a/_includes/page__hero.html b/_includes/page__hero.html new file mode 100644 index 00000000..ef0f4ca5 --- /dev/null +++ b/_includes/page__hero.html @@ -0,0 +1,49 @@ +{% include base_path %} + +{% if page.header.image contains "http" %} + {% capture img_path %}{{ page.header.image }}{% endcapture %} +{% else %} + {% capture img_path %}{{ page.header.image | prepend: "/images/" | prepend: base_path }}{% endcapture %} +{% endif %} + +{% if page.header.cta_url contains "http" %} + {% capture cta_path %}{{ page.header.cta_url }}{% endcapture %} +{% else %} + {% capture cta_path %}{{ page.header.cta_url | prepend: base_path }}{% endcapture %} +{% endif %} + +{% if page.header.overlay_image contains "http" %} + {% capture overlay_img_path %}{{ page.header.overlay_image }}{% endcapture %} +{% elsif page.header.overlay_image %} + {% capture overlay_img_path %}{{ page.header.overlay_image | prepend: "/images/" | prepend: base_path }}{% endcapture %} +{% endif %} + +
+ {% if page.header.overlay_color or page.header.overlay_image %} +
+

+ {% if paginator %} + {{ site.title }}{% unless paginator.page == 1 %} {{ site.data.ui-text[site.locale].page }} {{ paginator.page }}{% endunless %} + {% else %} + {{ page.title | default: site.title | markdownify | remove: "

" | remove: "

" }} + {% endif %} +

+ {% if page.excerpt %} +

{{ page.excerpt | markdownify | remove: "

" | remove: "

" }}

+ {% endif %} + {% if site.read_time and page.read_time %} +

{% include read-time.html %}

+ {% endif %} + {% if page.header.cta_url %} +

{{ page.header.cta_label | default: site.data.ui-text[site.locale].more_label }}

+ {% endif %} +
+ {% else %} + {{ page.title }} + {% endif %} + {% if page.header.caption %} + {{ page.header.caption | markdownify | remove: "

" | remove: "

" }}
+ {% endif %} +
\ No newline at end of file diff --git a/_includes/page__taxonomy.html b/_includes/page__taxonomy.html new file mode 100644 index 00000000..53b5b805 --- /dev/null +++ b/_includes/page__taxonomy.html @@ -0,0 +1,9 @@ +{% include base_path %} + +{% if site.tags.type and page.tags[0] %} + {% include tag-list.html %} +{% endif %} + +{% if site.categories.type and page.categories[0] %} + {% include category-list.html %} +{% endif %} \ No newline at end of file diff --git a/_includes/paginator.html b/_includes/paginator.html new file mode 100644 index 00000000..92450bbd --- /dev/null +++ b/_includes/paginator.html @@ -0,0 +1,70 @@ +{% include base_path %} + +{% if paginator.total_pages > 1 %} + +{% endif %} \ No newline at end of file diff --git a/_includes/post_pagination.html b/_includes/post_pagination.html new file mode 100644 index 00000000..0a3acac5 --- /dev/null +++ b/_includes/post_pagination.html @@ -0,0 +1,16 @@ +{% include base_path %} + +{% if page.previous or page.next %} + +{% endif %} \ No newline at end of file diff --git a/_includes/read-time.html b/_includes/read-time.html new file mode 100644 index 00000000..86e7db84 --- /dev/null +++ b/_includes/read-time.html @@ -0,0 +1,13 @@ +{% if post.read_time %} + {% assign words = post.content | strip_html | number_of_words %} +{% elsif page.read_time %} + {% assign words = page.content | strip_html | number_of_words %} +{% endif %} + +{% if words < 180 %} + {{ site.data.ui-text[site.locale].less_than }} 1 {{ site.data.ui-text[site.locale].minute_read }} +{% elsif words < 360 %} + 1 {{ site.data.ui-text[site.locale].minute_read }} +{% else %} + {{ words | divided_by:site.words_per_minute }} {{ site.data.ui-text[site.locale].minutes_read }} +{% endif %} \ No newline at end of file diff --git a/_includes/scripts.html b/_includes/scripts.html new file mode 100644 index 00000000..138d271e --- /dev/null +++ b/_includes/scripts.html @@ -0,0 +1,4 @@ + + +{% include analytics.html %} +{% include /comments-providers/scripts.html %} diff --git a/_includes/seo.html b/_includes/seo.html new file mode 100644 index 00000000..58f499b5 --- /dev/null +++ b/_includes/seo.html @@ -0,0 +1,136 @@ +{% include base_path %} + + +{% if site.url %} + {% assign seo_url = site.url | append: site.baseurl %} +{% endif %} +{% assign seo_url = seo_url | default: site.github.url %} + +{% if page.title %} + {% assign seo_title = page.title | append: " " | append: site.title_separator | append: " " | append: site.title %} +{% endif %} + +{% if seo_title %} + {% assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once %} +{% endif %} + +{% if site.url %} + {% assign canonical_url = page.url | replace: "index.html", "" | prepend: site.url %} +{% endif %} + +{{ seo_title | default: site.title }}{% if paginator %}{% unless paginator.page == 1 %} {{ site.title_separator }} {{ site.data.ui-text[site.locale].page }} {{ paginator.page }}{% endunless %}{% endif %} + +{% assign seo_description = page.description | default: page.excerpt | default: site.description %} +{% if seo_description %} + {% assign seo_description = seo_description | markdownify | strip_html | strip_newlines | escape_once %} +{% endif %} + +{% assign seo_author = page.author | default: page.authors[0] | default: site.author %} +{% if seo_author %} + {% if seo_author.twitter %} + {% assign seo_author_twitter = seo_author.twitter %} + {% else %} + {% if site.data.authors and site.data.authors[seo_author] %} + {% assign seo_author_twitter = site.data.authors[seo_author].twitter %} + {% else %} + {% assign seo_author_twitter = seo_author %} + {% endif %} + {% endif %} + {% assign seo_author_twitter = seo_author_twitter | replace: "@", "" %} +{% endif %} + + + + + +{% if seo_url %} + + +{% endif %} + +{% if page.excerpt %} + +{% endif %} + +{% if site.twitter.username %} + + + + + + {% if page.header.image %} + + + {% else %} + + {% if site.og_image %} + + {% endif %} + {% endif %} + + {% if seo_author_twitter %} + + {% endif %} +{% endif %} + +{% if site.facebook %} + {% if site.facebook.publisher %} + + {% endif %} + + {% if site.facebook.app_id %} + + {% endif %} +{% endif %} + +{% if page.header.image %} + +{% endif %} + +{% if page.date %} + + + {% if page.next.url %} + + {% endif %} + {% if page.previous.url %} + + {% endif %} +{% endif %} + +{% if site.og_image %} + +{% endif %} + +{% if site.social %} + +{% endif %} + +{% if site.google_site_verification %} + +{% endif %} +{% if site.bing_site_verification %} + +{% endif %} +{% if site.owner.alexa.verify %} + +{% endif %} +{% if site.owner.yandex.verify %} + +{% endif %} + \ No newline at end of file diff --git a/_includes/sidebar.html b/_includes/sidebar.html new file mode 100644 index 00000000..072ffca7 --- /dev/null +++ b/_includes/sidebar.html @@ -0,0 +1,25 @@ +{% include base_path %} + +{% if page.author_profile or page.sidebar %} + +{% endif %} \ No newline at end of file diff --git a/_includes/social-share.html b/_includes/social-share.html new file mode 100644 index 00000000..b2842865 --- /dev/null +++ b/_includes/social-share.html @@ -0,0 +1,15 @@ +{% include base_path %} + + \ No newline at end of file diff --git a/_includes/tag-list.html b/_includes/tag-list.html new file mode 100644 index 00000000..96fde1f4 --- /dev/null +++ b/_includes/tag-list.html @@ -0,0 +1,28 @@ +{% include base_path %} + +{% case site.tags.type %} + {% when "liquid" %} + {% assign path_type = "#" %} + {% when "jekyll-archives" %} + {% assign path_type = nil %} +{% endcase %} + +{% if site.tags.path %} + {% comment %} + + + {% endcomment %} + {% capture page_tags %}{% for tag in page.tags %}{{ tag | downcase }}#{{ tag }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %} + {% assign tag_hashes = (page_tags | split: ',' | sort:0) %} + +

+ {{ site.data.ui-text[site.locale].tags_label }} + + {% for hash in tag_hashes %} + {% assign keyValue = hash | split: '#' %} + {% capture tag_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %} + {% unless forloop.last %}, {% endunless %} + {% endfor %} + +

+{% endif %} \ No newline at end of file diff --git a/_includes/toc b/_includes/toc new file mode 100644 index 00000000..6ba831c9 --- /dev/null +++ b/_includes/toc @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/_layouts/archive-taxonomy.html b/_layouts/archive-taxonomy.html new file mode 100644 index 00000000..4d5827f1 --- /dev/null +++ b/_layouts/archive-taxonomy.html @@ -0,0 +1,16 @@ +--- +layout: default +author_profile: false +--- + +
+ {% include sidebar.html %} + +
+

{{ page.title }}

+ {% include base_path %} + {% for post in page.posts %} + {% include archive-single.html %} + {% endfor %} +
+
\ No newline at end of file diff --git a/_layouts/archive.html b/_layouts/archive.html new file mode 100644 index 00000000..22f984c7 --- /dev/null +++ b/_layouts/archive.html @@ -0,0 +1,24 @@ +--- +layout: default +--- + +{% if (page.header.overlay_color or page.header.overlay_image) or page.header.image %} + {% include page__hero.html %} +{% endif %} + +{% if page.url != "/" and site.breadcrumbs %} + {% unless paginator %} + {% include breadcrumbs.html %} + {% endunless %} +{% endif %} + +
+ {% include sidebar.html %} + +
+ {% unless page.header.overlay_color or page.header.overlay_image %} +

{{ page.title }}

+ {% endunless %} + {{ content }} +
+
\ No newline at end of file diff --git a/_layouts/compress.html b/_layouts/compress.html new file mode 100644 index 00000000..8248010b --- /dev/null +++ b/_layouts/compress.html @@ -0,0 +1,10 @@ +--- +# Jekyll layout that compresses HTML +# v3.0.2 +# http://jch.penibelst.de/ +# © 2014–2015 Anatol Broder +# MIT License +--- + +{% capture _LINE_FEED %} +{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd p rt rp optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "" %}{% endif %}{% unless _pre_before contains "" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " ;; ;" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %}
Step Bytes
raw {{ content | size }}{% if _profile_endings %}
endings {{ _profile_endings }}{% endif %}{% if _profile_startings %}
startings {{ _profile_startings }}{% endif %}{% if _profile_comments %}
comments {{ _profile_comments }}{% endif %}{% if _profile_collapse %}
collapse {{ _profile_collapse }}{% endif %}{% if _profile_clippings %}
clippings {{ _profile_clippings }}{% endif %}
{% endif %}{% endif %} diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 00000000..b280ada1 --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,31 @@ +--- +layout: compress +--- + +{% include base_path %} + + + + + {% include head.html %} + {% include head/custom.html %} + + + + + {% include browser-upgrade.html %} + {% include masthead.html %} + + {{ content }} + + + + {% include scripts.html %} + {% include footer/custom.html %} + + + diff --git a/_layouts/home.html b/_layouts/home.html deleted file mode 100644 index a918d74b..00000000 --- a/_layouts/home.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - -{% include _head.html %} - - - - -{% include _browser-upgrade.html %} - -{% include _navigation.html %} - -{% if page.image.feature %} -
- {{ page.title }} feature image - {% if page.image.credit %} - Photo Credit: {{ page.image.credit }} - {% endif %} -
-{% endif %} - -
- -
-

Recent Posts

- {% for post in site.posts limit:5 %} - - {% endfor %} -
-
- - - -{% include _scripts.html %} - - - diff --git a/_layouts/page.html b/_layouts/page.html deleted file mode 100644 index b6108fce..00000000 --- a/_layouts/page.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - -{% include _head.html %} - - - - -{% include _browser-upgrade.html %} - -{% include _navigation.html %} - -{% if page.image.feature %} -
- {{ page.title }} feature image - {% if page.image.credit %} - Photo Credit: {{ page.image.credit }} - {% endif %} -
-{% endif %} - -
- -
-

{{ page.title }}

-
- {{ content }} - {% if page.share != false %} -
- {% include _social-share.html %} - {% endif %} -
- {% if site.owner.disqus-shortname and page.comments == true %} -
- {% endif %} -
-
- - - -{% include _scripts.html %} - - - diff --git a/_layouts/post-index.html b/_layouts/post-index.html deleted file mode 100644 index 3d29f29a..00000000 --- a/_layouts/post-index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - -{% include _head.html %} - - - - -{% include _browser-upgrade.html %} - -{% include _navigation.html %} - -{% if page.image.feature %} -
- {{ page.title }} feature image - {% if page.image.credit %} - Photo Credit: {{ page.image.credit }} - {% endif %} -
-{% endif %} - -
- -
-

{{ page.title }}

- {% capture written_year %}'None'{% endcapture %} - {% for post in site.posts %} - {% capture year %}{{ post.date | date: '%Y' }}{% endcapture %} - {% if year != written_year %} -

{{ year }}

- {% capture written_year %}{{ year }}{% endcapture %} - {% endif %} - - {% endfor %} -
-
- - - -{% include _scripts.html %} - - - diff --git a/_layouts/post.html b/_layouts/post.html deleted file mode 100644 index a8543cd6..00000000 --- a/_layouts/post.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - -{% include _head.html %} - - - - -{% include _browser-upgrade.html %} - -{% include _navigation.html %} - -{% if page.image.feature %} -
- {{ page.title }} feature image - {% if page.image.credit %} - Photo Credit: {{ page.image.credit }} - {% endif %} -
-{% endif %} - -
- -
-
- {% if page.link %} -

{{ page.title }}

- {% else %} -

{{ page.title }}

- {% endif %} -
-
- {{ content }} -
-
- {% if page.share != false %}{% include _social-share.html %}{% endif %} - -
-
- {% if site.owner.disqus-shortname and page.comments == true %} -
- {% endif %} -
-
- - - -{% include _scripts.html %} - - - diff --git a/_layouts/single.html b/_layouts/single.html new file mode 100644 index 00000000..e2b4f536 --- /dev/null +++ b/_layouts/single.html @@ -0,0 +1,76 @@ +--- +layout: default +--- + +{% include base_path %} + +{% if (page.header.overlay_color or page.header.overlay_image) or page.header.image %} + {% include page__hero.html %} +{% endif %} + +{% if page.url != "/" and site.breadcrumbs %} + {% unless paginator %} + {% include breadcrumbs.html %} + {% endunless %} +{% endif %} + +
+ {% include sidebar.html %} + +
+ {% if page.title %}{% endif %} + {% if page.excerpt %}{% endif %} + {% if page.date %}{% endif %} + {% if page.modified %}{% endif %} + +
+ {% unless page.header.overlay_color or page.header.overlay_image %} +
+

{{ page.title | markdownify | remove: "

" | remove: "

" }}

+ {% if page.read_time %} +

{% include read-time.html %}

+ {% endif %} +
+ {% endunless %} + +
+ {{ content }} + {% if page.link %}{% endif %} +
+ +
+ {% if site.data.ui-text[site.locale].meta_label %} +

{{ site.data.ui-text[site.locale].meta_label }}

+ {% endif %} + {% include page__taxonomy.html %} + {% if page.modified %} +

{{ site.data.ui-text[site.locale].date_label }}

+ {% elsif page.date %} +

{{ site.data.ui-text[site.locale].date_label }}

+ {% endif %} +
+ + {% if page.share %}{% include social-share.html %}{% endif %} + + {% include post_pagination.html %} +
+ + {% if site.comments.provider and page.comments %} + {% include comments.html %} + {% endif %} +
+ + {% comment %}{% endcomment %} + {% if page.id and page.related and site.related_posts.size > 0 %} + + {% endif %} +
\ No newline at end of file diff --git a/_layouts/splash.html b/_layouts/splash.html new file mode 100644 index 00000000..035fa2f2 --- /dev/null +++ b/_layouts/splash.html @@ -0,0 +1,22 @@ +--- +layout: default +--- + +{% include base_path %} + +{% if (page.header.overlay_color or page.header.overlay_image) or page.header.image %} + {% include page__hero.html %} +{% endif %} + +
+
+ {% if page.title %}{% endif %} + {% if page.excerpt %}{% endif %} + {% if page.date %}{% endif %} + {% if page.modified %}{% endif %} + +
+ {{ content }} +
+
+
\ No newline at end of file diff --git a/404.md b/_pages/404.md similarity index 96% rename from 404.md rename to _pages/404.md index 3981c8c7..b273202b 100644 --- a/404.md +++ b/_pages/404.md @@ -1,6 +1,6 @@ --- -layout: page title: "Page Not Found" +layout: single excerpt: "Page not found. Your pixels are in another canvas." sitemap: false permalink: /404.html diff --git a/_posts/2011-03-10-sample-post.md b/_posts/2011-03-10-sample-post.md deleted file mode 100644 index 9e560d31..00000000 --- a/_posts/2011-03-10-sample-post.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -layout: post -title: Sample Post -excerpt: "Just about everything you'll need to style in the theme: headings, paragraphs, blockquotes, tables, code blocks, and more." -modified: 2013-05-31 -tags: [intro, beginner, jekyll, tutorial] -comments: true -image: - feature: sample-image-5.jpg - credit: WeGraphics - creditlink: http://wegraphics.net/downloads/free-ultimate-blurred-background-pack/ ---- - -
-
-

Overview

-
-
-* Auto generated table of contents -{:toc} -
-
- -## HTML Elements - -Below is just about everything you'll need to style in the theme. Check the source code to see the many embedded elements within paragraphs. - -# Heading 1 - -## Heading 2 - -### Heading 3 - -#### Heading 4 - -##### Heading 5 - -###### Heading 6 - -### Body text - -Lorem ipsum dolor sit amet, test link adipiscing elit. **This is strong**. Nullam dignissim convallis est. Quisque aliquam. - -![Smithsonian Image]({{ site.url }}/images/3953273590_704e3899d5_m.jpg) -{: .image-pull-right} - -*This is emphasized*. Donec faucibus. Nunc iaculis suscipit dui. 53 = 125. Water is H2O. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. The New York Times (That’s a citation). Underline.Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus. - -HTML and CSS are our tools. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. - -### Blockquotes - -> Lorem ipsum dolor sit amet, test link adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. - -## List Types - -### Ordered Lists - -1. Item one - 1. sub item one - 2. sub item two - 3. sub item three -2. Item two - -### Unordered Lists - -* Item one -* Item two -* Item three - -## Tables - -| Header1 | Header2 | Header3 | -|:--------|:-------:|--------:| -| cell1 | cell2 | cell3 | -| cell4 | cell5 | cell6 | -|---- -| cell1 | cell2 | cell3 | -| cell4 | cell5 | cell6 | -|===== -| Foot1 | Foot2 | Foot3 -{: rules="groups"} - -## Code Snippets - -{% highlight css %} -#container { - float: left; - margin: 0 -240px 0 0; - width: 100%; -} -{% endhighlight %} - -## Buttons - -Make any link standout more when applying the `.btn` class. - -{% highlight html %} -Success Button -{% endhighlight %} - - - - - - - -## Notices - -**Watch out!** You can also add notices by appending `{: .notice}` to a paragraph. -{: .notice} diff --git a/_posts/2012-05-22-readability-post.md b/_posts/2012-05-22-readability-post.md deleted file mode 100644 index bdf22fc6..00000000 --- a/_posts/2012-05-22-readability-post.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: post -title: "Testing Readability with a Bunch of Text" -excerpt: "A ton of text to test readability." -tags: [sample post, readability, test] -comments: true ---- - -Portland in shoreditch Vice, labore typewriter pariatur hoodie fap sartorial Austin. Pinterest literally occupy Schlitz forage. Odio ad blue bottle vinyl, 90's narwhal commodo bitters pour-over nostrud. Ugh est hashtag in, fingerstache adipisicing laboris esse Pinterest shabby chic Portland. Shoreditch bicycle rights anim, flexitarian laboris put a bird on it vinyl cupidatat narwhal. Hashtag artisan skateboard, flannel Bushwick nesciunt salvia aute fixie do plaid post-ironic dolor McSweeney's. Cliche pour-over chambray nulla four loko skateboard sapiente hashtag. - -Vero laborum commodo occupy. Semiotics voluptate mumblecore pug. Cosby sweater ullamco quinoa ennui assumenda, sapiente occupy delectus lo-fi. Ea fashion axe Marfa cillum aliquip. Retro Bushwick keytar cliche. Before they sold out sustainable gastropub Marfa readymade, ethical Williamsburg skateboard brunch qui consectetur gentrify semiotics. Mustache cillum irony, fingerstache magna pour-over keffiyeh tousled selfies. - -## Cupidatat 90's lo-fi authentic try-hard - -In pug Portland incididunt mlkshk put a bird on it vinyl quinoa. Terry Richardson shabby chic +1, scenester Tonx excepteur tempor fugiat voluptate fingerstache aliquip nisi next level. Farm-to-table hashtag Truffaut, Odd Future ex meggings gentrify single-origin coffee try-hard 90's. - -* Sartorial hoodie -* Labore viral forage -* Tote bag selvage -* DIY exercitation et id ugh tumblr church-key - -Incididunt umami sriracha, ethical fugiat VHS ex assumenda yr irure direct trade. Marfa Truffaut bicycle rights, kitsch placeat Etsy kogi asymmetrical. Beard locavore flexitarian, kitsch photo booth hoodie plaid ethical readymade leggings yr. - -Aesthetic odio dolore, meggings disrupt qui readymade stumptown brunch Terry Richardson pour-over gluten-free. Banksy american apparel in selfies, biodiesel flexitarian organic meh wolf quinoa gentrify banjo kogi. Readymade tofu ex, scenester dolor umami fingerstache occaecat fashion axe Carles jean shorts minim. Keffiyeh fashion axe nisi Godard mlkshk dolore. Lomo you probably haven't heard of them eu non, Odd Future Truffaut pug keytar meggings McSweeney's Pinterest cred. Etsy literally aute esse, eu bicycle rights qui meggings fanny pack. Gentrify leggings pug flannel duis. - -## Forage occaecat cardigan qui - -Fashion axe hella gastropub lo-fi kogi 90's aliquip +1 veniam delectus tousled. Cred sriracha locavore gastropub kale chips, iPhone mollit sartorial. Anim dolore 8-bit, pork belly dolor photo booth aute flannel small batch. Dolor disrupt ennui, tattooed whatever salvia Banksy sartorial roof party selfies raw denim sint meh pour-over. Ennui eu cardigan sint, gentrify iPhone cornhole. - -> Whatever velit occaecat quis deserunt gastropub, leggings elit tousled roof party 3 wolf moon kogi pug blue bottle ea. Fashion axe shabby chic Austin quinoa pickled laborum bitters next level, disrupt deep v accusamus non fingerstache. - -Tote bag asymmetrical elit sunt. Occaecat authentic Marfa, hella McSweeney's next level irure veniam master cleanse. Sed hoodie letterpress artisan wolf leggings, 3 wolf moon commodo ullamco. Anim occupy ea labore Terry Richardson. Tofu ex master cleanse in whatever pitchfork banh mi, occupy fugiat fanny pack Austin authentic. Magna fugiat 3 wolf moon, labore McSweeney's sustainable vero consectetur. Gluten-free disrupt enim, aesthetic fugiat jean shorts trust fund keffiyeh magna try-hard. - -## Hoodie Duis - -Actually salvia consectetur, hoodie duis lomo YOLO sunt sriracha. Aute pop-up brunch farm-to-table odio, salvia irure occaecat. Sriracha small batch literally skateboard. Echo Park nihil hoodie, aliquip forage artisan laboris. Trust fund reprehenderit nulla locavore. Stumptown raw denim kitsch, keffiyeh nulla twee dreamcatcher fanny pack ullamco 90's pop-up est culpa farm-to-table. Selfies 8-bit do pug odio. - -### Thundercats Ho! - -Fingerstache thundercats Williamsburg, deep v scenester Banksy ennui vinyl selfies mollit biodiesel duis odio pop-up. Banksy 3 wolf moon try-hard, sapiente enim stumptown deep v ad letterpress. Squid beard brunch, exercitation raw denim yr sint direct trade. Raw denim narwhal id, flannel DIY McSweeney's seitan. Letterpress artisan bespoke accusamus, meggings laboris consequat Truffaut qui in seitan. Sustainable cornhole Schlitz, twee Cosby sweater banh mi deep v forage letterpress flannel whatever keffiyeh. Sartorial cred irure, semiotics ethical sed blue bottle nihil letterpress. - -Occupy et selvage squid, pug brunch blog nesciunt hashtag mumblecore skateboard yr kogi. Ugh small batch swag four loko. Fap post-ironic qui tote bag farm-to-table american apparel scenester keffiyeh vero, swag non pour-over gentrify authentic pitchfork. Schlitz scenester lo-fi voluptate, tote bag irony bicycle rights pariatur vero Vice freegan wayfarers exercitation nisi shoreditch. Chambray tofu vero sed. Street art swag literally leggings, Cosby sweater mixtape PBR lomo Banksy non in pitchfork ennui McSweeney's selfies. Odd Future Banksy non authentic. - -Aliquip enim artisan dolor post-ironic. Pug tote bag Marfa, deserunt pour-over Portland wolf eu odio intelligentsia american apparel ugh ea. Sunt viral et, 3 wolf moon gastropub pug id. Id fashion axe est typewriter, mlkshk Portland art party aute brunch. Sint pork belly Cosby sweater, deep v mumblecore kitsch american apparel. Try-hard direct trade tumblr sint skateboard. Adipisicing bitters excepteur biodiesel, pickled gastropub aute veniam. diff --git a/_posts/2013-05-22-sample-post-images.md b/_posts/2013-05-22-sample-post-images.md deleted file mode 100644 index 738e3373..00000000 --- a/_posts/2013-05-22-sample-post-images.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: post -title: "A Post with Images" -excerpt: "Examples and code for displaying images in posts." -tags: [sample post, images, test] -comments: true ---- - -Here are some examples of what a post with images might look like. If you want to display two or three images next to each other responsively use `figure` with the appropriate `class`. Each instance of `figure` is auto-numbered and displayed in the caption. - -### Figures (for images or video) - -#### One Up - -
- -
Morning Fog Emerging From Trees by A Guy Taking Pictures, on Flickr.
-
- -Vero laborum commodo occupy. Semiotics voluptate mumblecore pug. Cosby sweater ullamco quinoa ennui assumenda, sapiente occupy delectus lo-fi. Ea fashion axe Marfa cillum aliquip. Retro Bushwick keytar cliche. Before they sold out sustainable gastropub Marfa readymade, ethical Williamsburg skateboard brunch qui consectetur gentrify semiotics. Mustache cillum irony, fingerstache magna pour-over keffiyeh tousled selfies. - -#### Two Up - -Apply the `half` class like so to display two images side by side that share the same caption. - -{% highlight html %} -
- - -
Caption describing these two images.
-
-{% endhighlight %} - -And you'll get something that looks like this: - -
- - -
Two images.
-
- -#### Three Up - -Apply the `third` class like so to display three images side by side that share the same caption. - -{% highlight html %} -
- - - -
Caption describing these three images.
-
-{% endhighlight %} - -And you'll get something that looks like this: - -
- - - -
Three images.
-
diff --git a/_posts/2013-05-23-readability-feature-post.md b/_posts/2013-05-23-readability-feature-post.md deleted file mode 100644 index 4e76e1a3..00000000 --- a/_posts/2013-05-23-readability-feature-post.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: post -title: "Post with Large Feature Image and Text" -excerpt: "Custom written post descriptions are the way to go... if you're not lazy." -tags: [sample post, readability, test] -comments: true -image: - feature: sample-image-4.jpg - credit: WeGraphics - creditlink: http://wegraphics.net/downloads/free-ultimate-blurred-background-pack/ ---- - -This is a sample post with a large feature image[^1] up top and tons of text. Odio ad blue bottle vinyl, 90's narwhal commodo bitters pour-over nostrud. Ugh est hashtag in, fingerstache adipisicing laboris esse Pinterest shabby chic Portland. Shoreditch bicycle rights anim, flexitarian laboris put a bird on it vinyl cupidatat narwhal. Hashtag artisan skateboard, flannel Bushwick nesciunt salvia aute fixie do plaid post-ironic dolor McSweeney's. Cliche pour-over chambray nulla four loko skateboard sapiente hashtag. - -Vero laborum commodo occupy. Semiotics voluptate mumblecore pug. Cosby sweater ullamco quinoa ennui assumenda, sapiente occupy delectus lo-fi. *Ea fashion axe [Marfa cillum aliquip](#). Retro Bushwick keytar cliche.* Before they sold out sustainable gastropub Marfa readymade, ethical Williamsburg skateboard brunch qui consectetur gentrify semiotics. Mustache cillum irony, fingerstache magna pour-over keffiyeh tousled selfies. - -## Cupidatat 90's lo-fi authentic try-hard - -In pug Portland incididunt mlkshk put a bird on it vinyl quinoa. **[Terry Richardson](#) shabby chic +1**, scenester Tonx excepteur tempor fugiat voluptate fingerstache aliquip nisi next level. Farm-to-table hashtag Truffaut, Odd Future ex meggings gentrify single-origin coffee try-hard 90's. - -* Sartorial hoodie -* Labore viral forage -* Tote bag selvage -* DIY exercitation et id ugh tumblr church-key - -Incididunt umami sriracha, ethical fugiat VHS ex assumenda yr irure direct trade. Marfa Truffaut bicycle rights, kitsch placeat Etsy kogi asymmetrical. Beard locavore flexitarian, kitsch photo booth hoodie plaid ethical readymade leggings yr. - -Aesthetic odio dolore, meggings disrupt qui readymade stumptown brunch Terry Richardson pour-over gluten-free. Banksy american apparel in selfies, biodiesel flexitarian organic meh wolf quinoa gentrify banjo kogi. Readymade tofu ex, scenester dolor umami fingerstache occaecat fashion axe Carles jean shorts minim. Keffiyeh fashion axe nisi Godard mlkshk dolore. Lomo you probably haven't heard of them eu non, Odd Future Truffaut pug keytar meggings McSweeney's Pinterest cred. Etsy literally aute esse, eu bicycle rights qui meggings fanny pack. Gentrify leggings pug flannel duis. - -## Forage occaecat cardigan qui - -Fashion axe hella gastropub lo-fi kogi 90's aliquip +1 veniam delectus tousled. Cred sriracha locavore gastropub kale chips, iPhone mollit sartorial. Anim dolore 8-bit, pork belly dolor photo booth aute flannel small batch. Dolor disrupt ennui, tattooed whatever salvia Banksy sartorial roof party selfies raw denim sint meh pour-over. Ennui eu cardigan sint, gentrify iPhone cornhole. - -> Whatever velit occaecat quis deserunt gastropub, leggings elit tousled roof party 3 wolf moon kogi pug blue bottle ea. Fashion axe shabby chic Austin quinoa pickled laborum bitters next level, disrupt deep v accusamus non fingerstache. - -Tote bag asymmetrical elit sunt. Occaecat authentic Marfa, hella McSweeney's next level irure veniam master cleanse. Sed hoodie letterpress artisan wolf leggings, 3 wolf moon commodo ullamco. Anim occupy ea labore Terry Richardson. Tofu ex master cleanse in whatever pitchfork banh mi, occupy fugiat fanny pack Austin authentic. Magna fugiat 3 wolf moon, labore McSweeney's sustainable vero consectetur. Gluten-free disrupt enim, aesthetic fugiat jean shorts trust fund keffiyeh magna try-hard. - -## Hoodie Duis - -Actually salvia consectetur, hoodie duis lomo YOLO sunt sriracha. Aute pop-up brunch farm-to-table odio, salvia irure occaecat. Sriracha small batch literally skateboard. Echo Park nihil hoodie, aliquip forage artisan laboris. Trust fund reprehenderit nulla locavore. Stumptown raw denim kitsch, keffiyeh nulla twee dreamcatcher fanny pack ullamco 90's pop-up est culpa farm-to-table. Selfies 8-bit do pug odio. - -### Thundercats Ho! - -Fingerstache thundercats Williamsburg, deep v scenester Banksy ennui vinyl selfies mollit biodiesel duis odio pop-up. Banksy 3 wolf moon try-hard, sapiente enim stumptown deep v ad letterpress. Squid beard brunch, exercitation raw denim yr sint direct trade. Raw denim narwhal id, flannel DIY McSweeney's seitan. Letterpress artisan bespoke accusamus, meggings laboris consequat Truffaut qui in seitan. Sustainable cornhole Schlitz, twee Cosby sweater banh mi deep v forage letterpress flannel whatever keffiyeh. Sartorial cred irure, semiotics ethical sed blue bottle nihil letterpress. - -Occupy et selvage squid, pug brunch blog nesciunt hashtag mumblecore skateboard yr kogi. Ugh small batch swag four loko. Fap post-ironic qui tote bag farm-to-table american apparel scenester keffiyeh vero, swag non pour-over gentrify authentic pitchfork. Schlitz scenester lo-fi voluptate, tote bag irony bicycle rights pariatur vero Vice freegan wayfarers exercitation nisi shoreditch. Chambray tofu vero sed. Street art swag literally leggings, Cosby sweater mixtape PBR lomo Banksy non in pitchfork ennui McSweeney's selfies. Odd Future Banksy non authentic. - -Aliquip enim artisan dolor post-ironic. Pug tote bag Marfa, deserunt pour-over Portland wolf eu odio intelligentsia american apparel ugh ea. Sunt viral et, 3 wolf moon gastropub pug id. Id fashion axe est typewriter, mlkshk Portland art party aute brunch. Sint pork belly Cosby sweater, deep v mumblecore kitsch american apparel. Try-hard direct trade tumblr sint skateboard. Adipisicing bitters excepteur biodiesel, pickled gastropub aute veniam. - -[^1]: Texture image courtesty of [Lovetextures](http://www.lovetextures.com/) diff --git a/_posts/2013-08-12-sample-link-post.md b/_posts/2013-08-12-sample-link-post.md deleted file mode 100644 index 6649319b..00000000 --- a/_posts/2013-08-12-sample-link-post.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: post -title: "Sample Link Post" -excerpt: "Example and code for using link posts." -tags: [sample post, link post] -link: http://mademistakes.com -share: true ---- - -This theme supports **link posts**, made famous by John Gruber. To use, just add `link: http://url-you-want-linked` to the post's YAML front matter and you're done. - -> And this is how a quote looks. - -Some [link](http://www.mademistakes.com) can also be shown. diff --git a/_posts/2013-08-16-code-highlighting-post.md b/_posts/2013-08-16-code-highlighting-post.md deleted file mode 100644 index 1a03d21d..00000000 --- a/_posts/2013-08-16-code-highlighting-post.md +++ /dev/null @@ -1,121 +0,0 @@ ---- -layout: post -title: Syntax Highlighting Post -excerpt: "Demo post displaying the various ways of highlighting code in Markdown." -tags: [sample post, code, highlighting] -modified: 2016-02-01 -comments: true ---- - -Syntax highlighting is a feature that displays source code, in different colors and fonts according to the category of terms. This feature facilitates writing in a structured language such as a programming language or a markup language as both structures and syntax errors are visually distinct. Highlighting does not affect the meaning of the text itself; it is intended only for human readers.[^1] - -[^1]: - -### Highlighted Code Blocks - -To modify styling and highlight colors edit `/_sass/syntax.scss`. - -{% highlight css %} -#container { - float: left; - margin: 0 -240px 0 0; - width: 100%; -} -{% endhighlight %} - -{% highlight html %} -{% raw %} - -{% endraw %} -{% endhighlight %} - -{% highlight ruby %} -module Jekyll - class TagIndex < Page - def initialize(site, base, dir, tag) - @site = site - @base = base - @dir = dir - @name = 'index.html' - self.process(@name) - self.read_yaml(File.join(base, '_layouts'), 'tag_index.html') - self.data['tag'] = tag - tag_title_prefix = site.config['tag_title_prefix'] || 'Tagged: ' - tag_title_suffix = site.config['tag_title_suffix'] || '–' - self.data['title'] = "#{tag_title_prefix}#{tag}" - self.data['description'] = "An archive of posts tagged #{tag}." - end - end -end -{% endhighlight %} - - -### Standard Code Block - - {% raw %} - - {% endraw %} - - -### Fenced Code Blocks - -To modify styling and highlight colors edit `/_sass/coderay.scss`. Line numbers and a few other things can be modified in `_config.yml`. Consult [Jekyll's documentation](http://jekyllrb.com/docs/configuration/) for more information. - -~~~ css -#container { - float: left; - margin: 0 -240px 0 0; - width: 100%; -} -~~~ - -~~~ html -{% raw %}{% endraw %} -~~~ - -~~~ ruby -module Jekyll - class TagIndex < Page - def initialize(site, base, dir, tag) - @site = site - @base = base - @dir = dir - @name = 'index.html' - self.process(@name) - self.read_yaml(File.join(base, '_layouts'), 'tag_index.html') - self.data['tag'] = tag - tag_title_prefix = site.config['tag_title_prefix'] || 'Tagged: ' - tag_title_suffix = site.config['tag_title_suffix'] || '–' - self.data['title'] = "#{tag_title_prefix}#{tag}" - self.data['description'] = "An archive of posts tagged #{tag}." - end - end -end -~~~ - -### GitHub Gist Embed - -An example of a Gist embed below. - -{% gist mmistakes/6589546 %} diff --git a/_posts/2014-07-31-author-override.md b/_posts/2014-07-31-author-override.md deleted file mode 100644 index af81bcd6..00000000 --- a/_posts/2014-07-31-author-override.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: post -title: "Author Override" -author: billy_rick -modified: -excerpt: "A post to test author overrides using a data file." -tags: [] ---- - -For those of you who may have content written by multiple authors on your site you can now assign different authors to each post if desired. - -Previously the theme used a global author for the entire site and those attributes would be used in all bylines, social networking links, Twitter Card attribution, and Google Authorship. These `owner` variables were defined in `config.yml` - -Start by modifying or creating a new `authors.yml` file in the `_data` folder and add your authors using the following format. - -{% highlight yaml %} -# Authors - -billy_rick: - name: Billy Rick - web: http://thewhip.com - email: billy@rick.com - bio: "What do you want, jewels? I am a very extravagant man." - avatar: bio-photo-2.jpg - twitter: extravagantman - google: - plus: BillyRick - -cornelius_fiddlebone: - name: Cornelius Fiddlebone - email: cornelius@thewhip.com - bio: "I ordered what?" - avatar: bio-photo.jpg - twitter: rhymeswithsackit - google: - plus: CorneliusFiddlebone -{% endhighlight %} - -To assign Billy Rick as an author for our post. You'd add the following YAML front matter to a post: - -{% highlight yaml %} -author: billy_rick -{% endhighlight %} diff --git a/_sass/coderay.scss b/_sass/coderay.scss deleted file mode 100644 index 55dd71bc..00000000 --- a/_sass/coderay.scss +++ /dev/null @@ -1,137 +0,0 @@ -/* ========================================================================== - Coderay syntax highlighting - ========================================================================== */ - -.CodeRay { - background-color: #efefef; - font-family: $code-font; - @include font(12); - color: #333332; - margin-bottom: 1.5em; - @include rounded(4px); - pre { - margin: 0px; - padding: 1em; - } -} - -div.CodeRay { } -span.CodeRay { white-space: pre; border: 0px; padding: 2px } - -table.CodeRay { border-collapse: collapse; width: 100%; padding: 2px } -table.CodeRay td { - padding: 1em 0.5em; - vertical-align: top; -} - -.CodeRay .line-numbers, .CodeRay .no { - background-color: #ECECEC; - color: #AAA; - text-align: right; -} - -.CodeRay .line-numbers a { - color: #AAA; -} - -.CodeRay .line-numbers tt { font-weight: bold } -.CodeRay .line-numbers .highlighted { color: red } -.CodeRay .line { display: block; float: left; width: 100%; } -.CodeRay span.line-numbers { padding: 0 24px 0 4px } -.CodeRay .code { width: 100% } - -ol.CodeRay { font-size: 10pt } -ol.CodeRay li { white-space: pre } - -.CodeRay .code pre { overflow: auto } -.CodeRay .debug { color:white ! important; background:blue ! important; } - -.CodeRay .annotation { color:#007 } -.CodeRay .attribute-name { color:#f08 } -.CodeRay .attribute-value { color:#700 } -.CodeRay .binary { color:#509; font-weight:bold } -.CodeRay .comment { color:#998; font-style: italic;} -.CodeRay .char { color:#04D } -.CodeRay .char .content { color:#04D } -.CodeRay .char .delimiter { color:#039 } -.CodeRay .class { color:#458; font-weight:bold } -.CodeRay .complex { color:#A08; font-weight:bold } -.CodeRay .constant { color:teal; } -.CodeRay .color { color:#0A0 } -.CodeRay .class-variable { color:#369 } -.CodeRay .decorator { color:#B0B; } -.CodeRay .definition { color:#099; font-weight:bold } -.CodeRay .directive { color:#088; font-weight:bold } -.CodeRay .delimiter { color:black } -.CodeRay .doc { color:#970 } -.CodeRay .doctype { color:#34b } -.CodeRay .doc-string { color:#D42; font-weight:bold } -.CodeRay .escape { color:#666; font-weight:bold } -.CodeRay .entity { color:#800; font-weight:bold } -.CodeRay .error { color:#F00; background-color:#FAA } -.CodeRay .exception { color:#C00; font-weight:bold } -.CodeRay .filename { color:#099; } -.CodeRay .function { color:#900; font-weight:bold } -.CodeRay .global-variable { color:teal; font-weight:bold } -.CodeRay .hex { color:#058; font-weight:bold } -.CodeRay .integer { color:#099; } -.CodeRay .include { color:#B44; font-weight:bold } -.CodeRay .inline { color: black } -.CodeRay .inline .inline { background: #ccc } -.CodeRay .inline .inline .inline { background: #bbb } -.CodeRay .inline .inline-delimiter { color: #D14; } -.CodeRay .inline-delimiter { color: #D14; } -.CodeRay .important { color:#f00; } -.CodeRay .interpreted { color:#B2B; font-weight:bold } -.CodeRay .instance-variable { color:teal } -.CodeRay .label { color:#970; font-weight:bold } -.CodeRay .local-variable { color:#963 } -.CodeRay .octal { color:#40E; font-weight:bold } -.CodeRay .operator { } -.CodeRay .predefined-constant { font-weight:bold } -.CodeRay .predefined { color:#369; font-weight:bold } -.CodeRay .preprocessor { color:#579; } -.CodeRay .pseudo-class { color:#00C; font-weight:bold } -.CodeRay .predefined-type { color:#074; font-weight:bold } -.CodeRay .reserved, .keyword { color:#000; font-weight:bold } - -.CodeRay .key { color: #808; } -.CodeRay .key .delimiter { color: #606; } -.CodeRay .key .char { color: #80f; } -.CodeRay .value { color: #088; } - -.CodeRay .regexp { background-color:#fff0ff } -.CodeRay .regexp .content { color:#808 } -.CodeRay .regexp .delimiter { color:#404 } -.CodeRay .regexp .modifier { color:#C2C } -.CodeRay .regexp .function { color:#404; font-weight: bold } - -.CodeRay .string { color: #D20; } -.CodeRay .string .string { } -.CodeRay .string .string .string { background-color:#ffd0d0 } -.CodeRay .string .content { color: #D14; } -.CodeRay .string .char { color: #D14; } -.CodeRay .string .delimiter { color: #D14; } - -.CodeRay .shell { color:#D14 } -.CodeRay .shell .content { } -.CodeRay .shell .delimiter { color:#D14 } - -.CodeRay .symbol { color:#990073 } -.CodeRay .symbol .content { color:#A60 } -.CodeRay .symbol .delimiter { color:#630 } - -.CodeRay .tag { color:#070 } -.CodeRay .tag-special { color:#D70; font-weight:bold } -.CodeRay .type { color:#339; font-weight:bold } -.CodeRay .variable { color:#036 } - -.CodeRay .insert { background: #afa; } -.CodeRay .delete { background: #faa; } -.CodeRay .change { color: #aaf; background: #007; } -.CodeRay .head { color: #f8f; background: #505 } - -.CodeRay .insert .insert { color: #080; font-weight:bold } -.CodeRay .delete .delete { color: #800; font-weight:bold } -.CodeRay .change .change { color: #66f; } -.CodeRay .head .head { color: #f4f; } diff --git a/_sass/elements.scss b/_sass/elements.scss deleted file mode 100644 index 3dddd2af..00000000 --- a/_sass/elements.scss +++ /dev/null @@ -1,166 +0,0 @@ -/* - Rules - ========================================================================== */ - -hr { - display: block; - margin: 1em 0; - padding: 0; - height: 1px; - border: 0; - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} - -/* - Figures and images - ========================================================================== */ - -figure { - margin-bottom: $indent-var; -} - -article img { - max-width: 100%; - height: auto; - border-width: 0; - vertical-align: middle; - -ms-interpolation-mode: bicubic; -} - -svg:not(:root) { - overflow: hidden; -} - -/* 2 images of equal dimensions in a row */ - -.half { - @include container; - @include clearfix; - @media #{$micro} { - img { - @include grid(12,6); - } - figcaption { - @include grid(12,12); - } - } -} - -/* 3 images of equal dimensions in a row */ - -.third { - @include container; - @include clearfix; - @media #{$micro} { - img { - @include grid(12,4); - } - figcaption { - @include grid(12,12); - } - } -} - -/* - Buttons - ========================================================================== */ - -/* Default button */ - -.btn { - display: inline-block; - margin-bottom: 20px; - padding: 8px 20px; - @include font-rem(14); - font-family: $heading-font; - font-weight: 700; - background-color: $primary; - color: $white; - border-width: 2px !important; - border-style: solid !important; - border-color: $primary; - text-decoration: none !important; - @include rounded(3px); - &:visited { - color: $white; - } - &:hover { - background-color: $white; - color: $primary; - } -} - -/* Success button */ - -.btn-success { - background-color: $success; - color: $white; - border-color: $success; - &:visited { - color: $white; - } - &:hover { - background-color: $white; - color: $success; - } -} - -/* Warning button */ - -.btn-warning { - background-color: $warning; - color: $white; - border-color: $warning; - &:visited { - color: $white; - } - &:hover { - background-color: $white; - color: $warning; - } -} - -/* Danger button */ - -.btn-danger { - background-color: $danger; - color: $white; - border-color: $danger; - &:visited { - color: $white; - } - &:hover { - background-color: $white; - color: $danger; - } -} - -/* Information button */ - -.btn-info { - background-color: $info; - color: $white; - border-color: $info; - &:visited { - color: $white; - } - &:hover { - background-color: $white; - color: $info; - } -} - -/* - Wells - ========================================================================== */ - -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - @include rounded(4px); - @include box-shadow(inset 0 1px 1px rgba(0, 0, 0, 0.05)); -} diff --git a/_sass/forms.scss b/_sass/forms.scss deleted file mode 100644 index 8ce54490..00000000 --- a/_sass/forms.scss +++ /dev/null @@ -1,273 +0,0 @@ -/* ========================================================================== - Forms - ========================================================================== */ - -btnform { - margin: 0 0 5px 0; - fieldset { - margin-bottom: 5px; - padding: 0; - border-width: 0; - } - legend { - display: block; - width: 100%; - margin-bottom: 5px * 2; - *margin-left: -7px; - padding: 0; - color: $textcolor; - border: 0; - border-bottom: 1px solid lighten($black, 80); - white-space: normal; - } - p { - margin-bottom: 5px / 2; - } - ul { - list-style-type: none; - margin: 0 0 5px 0; - padding: 0; - } - br { - display: none; - } -} -label, -input, -button, -select, -textarea { - vertical-align: baseline; - *vertical-align: middle; -} -input, -button, -select, -textarea { - font-family: $base-font; - @include box-sizing(border-box); -} -label { - display: block; - margin-bottom: 10px / 8; - font-weight: bold; - color: $textcolor; - cursor: pointer; - input, - textarea, - select { - display: block; - } -} -input, -textarea, -select { - display: inline-block; - width: 100%; - padding: 4px; - margin-bottom: 5px / 4; - background-color: $white; - border: 1px solid lighten($black, 80); - color: $textcolor; - &:hover { - border-color: lighten($accentcolor, 50); - } -} -.input-mini { - width: 60px; -} -.input-small { - width: 90px; -} -input[type="image"], -input[type="checkbox"], -input[type="radio"] { - width: auto; - height: auto; - padding: 0; - margin: 3px 0; - *margin-top: 0; - line-height: normal; - cursor: pointer; - @include rounded(0); - border: 0 \9; -} -input[type="checkbox"], -input[type="radio"] { - @include box-sizing(border-box); - padding: 0; - *width: 13px; - *height: 13px; -} -input[type="image"] { - border: 0; - @include box-shadow(none); -} -input[type="file"] { - width: auto; - padding: initial; - line-height: initial; - border: initial; - background-color: transparent; - background-color: initial; - @include box-shadow(none); -} -input[type="button"], -input[type="reset"], -input[type="submit"] { - width : auto; - height : auto; - cursor : pointer; - *overflow : visible; -} -select, -input[type="file"] { - *margin-top : 4px; -} -select { - width : auto; - background-color : $white; -} -select[multiple], -select[size] { - height : auto; -} -textarea { - @include resize(vertical); - height : auto; - overflow : auto; - vertical-align : top; -} -input[type="hidden"] { - display : none; -} -.radio, -.checkbox { - padding-left : 18px; - font-weight : normal; -} -.radio input[type="radio"], -.checkbox input[type="checkbox"] { - float : left; - margin-left : -18px; -} -.radio.inline, -.checkbox.inline { - display : inline-block; - padding-top : 5px; - margin-bottom : 0; - vertical-align : middle; -} -.radio.inline + .radio.inline, -.checkbox.inline + .checkbox.inline { - margin-left : 10px; -} - -/* - Disabled state - ========================================================================== */ - -input[disabled], -select[disabled], -textarea[disabled], -input[readonly], -select[readonly], -textarea[readonly] { - @include opacity(.5); - cursor : not-allowed; -} - -/* - Focus & active state - ========================================================================== */ - -input:focus, -textarea:focus { - border-color : $accentcolor; - outline : 0; - outline : thin dotted \9; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus, -select:focus { - @include box-shadow(none); -} - -/* - Help text - ========================================================================== */ - -.help-block, -.help-inline { - color : lighten($black, 50); -} -.help-block { - display : block; - margin-bottom : 1em; - line-height : 1em; -} -.help-inline { - display : inline-block; - vertical-align : middle; - padding-left : 5px; -} - -/* - .form-inline - ========================================================================== */ - -.form-inline input, -.form-inline textarea, -.form-inline select { - display : inline-block; - margin-bottom : 0; -} -.form-inline label { - display : inline-block; -} -.form-inline .radio, -.form-inline .checkbox, -.form-inline .radio { - padding-left : 0; - margin-bottom : 0; - vertical-align : middle; -} -.form-inline .radio input[type="radio"], -.form-inline .checkbox input[type="checkbox"] { - float : left; - margin-left : 0; - margin-right : 3px; } - -/* - .form-search - ========================================================================== */ - -.form-search input, -.form-search textarea, -.form-search select { - display : inline-block; - margin-bottom : 0; -} -.form-search .search-query { - padding-left : 14px; - padding-right : 14px; - margin-bottom : 0; - @include rounded(14px); -} -.form-search label { - display : inline-block; -} -.form-search .radio, -.form-search .checkbox, -.form-inline .radio { - padding-left : 0; - margin-bottom : 0; - vertical-align : middle; -} -.form-search .radio input[type="radio"], -.form-search .checkbox input[type="checkbox"] { - float : left; - margin-left : 0; - margin-right : 3px; -} diff --git a/_sass/grid.scss b/_sass/grid.scss deleted file mode 100644 index 16f452c9..00000000 --- a/_sass/grid.scss +++ /dev/null @@ -1,84 +0,0 @@ -/* ========================================================================== - Grid mixins - ========================================================================== */ - -/* - Define number of columns in the grid - Common values would be 12, 16 or 24 - ========================================================================== */ - -$width: 100%; -$def_grid: 12; -$margin: 0; - -@mixin container(){ - margin:0 auto; - width:$width; -} - -/* - Works out the width of elements based on total number of columns and width - number of columns being displayed. Removes 20px for margins. - ========================================================================== */ - -@mixin grid($grid:$def_grid,$cols:'',$float:left,$display:inline){ - display:$display; - float:$float; - width:(100%/$grid * $cols) - ($margin * 2); -} - -/* - Add x amount of column padding before an element - Example: @include prefix(1,12); - ========================================================================== */ - -@mixin prefix($grid:$def_grid,$cols:''){ - margin-left:(100%/$grid * $cols); -} - -/* - Add x amount of column padding after an element - Example: @include suffix(2,12); - ========================================================================== */ - -@mixin suffix($grid:$def_grid,$cols:''){ - margin-right:(100%/$grid * $cols); -} - -/* - Remove left margin - Example: @include first; - ========================================================================== */ - -@mixin first(){ - margin-left:0; -} - -/* - Remove right margin - Example: @include last; - ========================================================================== */ - -@mixin last(){ - margin-right:0; -} - -/* - Push an element x amount of column(s) to the right - Example: @include push(2,12); - ========================================================================== */ - -@mixin push($grid:$def_grid,$move:'') { - position:relative; - left:(100%/$grid * $move); -} - -/* - Pull an element x amount of column(s) to the left - Example: @include pull(1,12); - ========================================================================== */ - -@mixin pull($grid:$def_grid,$move:''){ - position:relative; - left:(100%/$grid * $move) * -1; -} diff --git a/_sass/mixins.scss b/_sass/mixins.scss deleted file mode 100644 index 1b62a2f3..00000000 --- a/_sass/mixins.scss +++ /dev/null @@ -1,376 +0,0 @@ -/* ========================================================================== - Utility mixins - ========================================================================== */ - -/* - Clearfix - For clearing floats like a boss h5bp.com/q - ========================================================================== */ - -@mixin clearfix { - *zoom: 1; - &:before, - &:after { - display: table; - content: ""; - /* Fixes Opera/contenteditable bug: */ - /* http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952 */ - line-height: 0; - } - &:after { - clear: both; - } -} - -/* - Webkit-style focus - ========================================================================== */ - -@mixin tab-focus() { - /* Default */ - outline: thin dotted #333; - /* Webkit */ - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} - -/* - Center-align a block level element - ========================================================================== */ - -@mixin center-block() { - display: block; - margin-left: auto; - margin-right: auto; -} - -/* ========================================================================== - Typography related mixins - ========================================================================== */ - -/* - Maintains vertical rhythm by setting a font-sizes proportional to - line-height and bottom margin - example: @font-size(16); - ========================================================================== */ - -@mixin font-size($size) { - font-size: 0px + $size; - font-size: 0rem + $size / $doc-font-size; - line-height: 0 + round($doc-line-height / $size*10000) / 10000; - margin-bottom: 0px + $doc-line-height; - margin-bottom: 0rem + ($doc-line-height / $doc-font-size); -} - -/* - Just font-size (REMs + pixel fallback) - example: @include font-rem(16); - ========================================================================== */ - -@mixin font-rem($size) { - font-size: 0px + $size; - font-size: 0rem + $size / $doc-font-size; -} - -/* - Just font-size (REMs + pixel fallback) and line-height - @include font(16); - ========================================================================== */ - -@mixin font($size) { - font-size: 0px + $size; - font-size: 0rem + $size / $doc-font-size; - line-height: 0 + round($doc-line-height / $size*10000) / 10000; -} - -/* - Hide text overflow and end with ... - ========================================================================== */ - -@mixin text-overflow() { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -/* Indentation variable */ - -$indent-var: 0rem + ($doc-line-height / $doc-font-size); - -/* ========================================================================== - Gradient mixins - ========================================================================== */ - -@mixin horizontal($startColor : $white, $endColor : $lightergrey) { - background-color: $endColor; - background-image : -webkit-gradient(linear, 0 0, 100% 0, from($startColor), to($endColor)); // Safari 4+, Chrome 2+ - background-image : -webkit-linear-gradient(left, $startColor, $endColor); // Safari 5.1+, Chrome 10+ - background-image : -moz-linear-gradient(left, $startColor, $endColor); // FF 3.6+ - background-image : -ms-linear-gradient(left, $startColor, $endColor); // IE10 - background-image : -o-linear-gradient(left, $startColor, $endColor); // Opera 11.10 - background-image : linear-gradient(left, $startColor, $endColor); // W3C - background-repeat : repeat-x; - } - -@mixin vertical($startColor : $white, $endColor: $lightergrey) { - background-image : -webkit-gradient(linear, 0 0, 0 100%, from($startColor), to($endColor)); // Safari 4+, Chrome 2+ - background-image : -webkit-linear-gradient(top, $startColor, $endColor); // Safari 5.1+, Chrome 10+ - background-color : $endColor; - background-image : -moz-linear-gradient(top, $startColor, $endColor); // FF 3.6+ - background-image : -ms-linear-gradient(top, $startColor, $endColor); // IE10 - background-image : -o-linear-gradient(top, $startColor, $endColor); // Opera 11.10 - background-image : linear-gradient(top, $startColor, $endColor); // W3C - background-repeat : repeat-x; -} - -@mixin directional($startColor : $white, $endColor : $lightergrey, $deg : 45deg) { - background-color : $endColor; - background-image : -moz-linear-gradient($deg, $startColor, $endColor); // FF 3.6+ - background-image : -ms-linear-gradient($deg, $startColor, $endColor); // IE10 - background-image : -webkit-linear-gradient($deg, $startColor, $endColor); // Safari 5.1+, Chrome 10+ - background-image : -o-linear-gradient($deg, $startColor, $endColor); // Opera 11.10 - background-image : linear-gradient($deg, $startColor, $endColor); // W3C - background-repeat : repeat-x; -} - -// .bordered(COLOR, COLOR, COLOR, COLOR); -@mixin bordered($top-color: #eee, $right-color: #eee, $bottom-color: #eee, $left-color: #eee) { - border-top : solid 1px $top-color; - border-left : solid 1px $left-color; - border-right : solid 1px $right-color; - border-bottom : solid 1px $bottom-color; -} - -/* ========================================================================== - Rounded corners - ========================================================================== */ - - - -/* - Round all corners - example: @include rounded(4px); - ========================================================================== */ - -@mixin rounded($radius:4px) { - border-radius : $radius; -} - -/* - Round individual corners (top right, bottom right, bottom left, top left) - example: @include border-radius(4px, 0, 0, 4px); - ========================================================================== */ - -@mixin border-radius($topright: 0, $bottomright: 0, $bottomleft: 0, $topleft: 0) { - border-top-right-radius: $topright; - border-bottom-right-radius: $bottomright; - border-bottom-left-radius: $bottomleft; - border-top-left-radius: $topleft; - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; -} - -/* - Box shadow - example: @include box-shadow(HORIZONTAL VERTICAL BLUR COLOR)); - ========================================================================== */ - -@mixin box-shadow($shadow: 0 1px 3px rgba(0,0,0,.25)) { - -webkit-box-shadow: $shadow; - -moz-box-shadow: $shadow; - box-shadow: $shadow; -} - -/* - Drop shadow - example: @include drop-shadow(HORIZONTAL, VERTICAL, BLUR, ALPHA); - ========================================================================== */ - -@mixin drop-shadow($x-axis: 0, $y-axis: 1px, $blur: 2px, $alpha: 0.1) { - -webkit-box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha); - -moz-box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha); - box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha); -} - -/* - Text shadow - example: @include text-shadow(0 2px 3px rgba(0,0,0,.25)); - ========================================================================== */ - -@mixin text-shadow($shadow: 0 2px 3px rgba(0,0,0,.25)) { -text-shadow: $shadow; } - -/* - Opacity - example: @include opacity(0.5); // 50% opacity - ========================================================================== */ - -@mixin opacity($opacity: 0.5) { - opacity: $opacity; -} - -/* ========================================================================== - Transformations - ========================================================================== */ - -/* - @include rotate(VALUEdeg); - ========================================================================== */ - -@mixin rotate($deg) { - -webkit-transform: rotate($deg); - -moz-transform: rotate($deg); - -ms-transform: rotate($deg); - -o-transform: rotate($deg); - transform: rotate($deg); -} - -/* - @include scale(VALUE); - ========================================================================== */ - -@mixin scale($ratio) { - -webkit-transform: scale($ratio); - -moz-transform: scale($ratio); - -ms-transform: scale($ratio); - -o-transform: scale($ratio); - transform: scale($ratio); -} - -/* - @include skew(VALUE, VALUE); - ========================================================================== */ - -@mixin skew($x: 0, $y: 0) { - -webkit-transform: skew($x, $y); - -moz-transform: skew($x, $y); - -ms-transform: skew($x, $y); - -o-transform: skew($x, $y); - transform: skew($x, $y); -} - -/* - @include transition(PROPERTY DURATION DELAY(OPTIONAL) TIMING-FINCTION); - ========================================================================== */ - -@mixin transition($transition) { - -webkit-transition: $transition; - -moz-transition: $transition; - -ms-transition: $transition; - -o-transition: $transition; - transition: $transition; -} - -/* - @include translate(VALUE, VALUE); - ========================================================================== */ - -@mixin translate($x: 0, $y: 0) { - -webkit-transform: translate($x, $y); - -moz-transform: translate($x, $y); - -ms-transform: translate($x, $y); - -o-transform: translate($x, $y); - transform: translate($x, $y); -} - -@mixin translate3d($x: 0, $y: 0, $z: 0) { - -webkit-transform: translate($x, $y, $z); - -moz-transform: translate($x, $y, $z); - -ms-transform: translate($x, $y, $z); - -o-transform: translate($x, $y, $z); - transform: translate($x, $y, $z); -} - -@mixin animation($name, $duration: 300ms, $delay: 0, $ease: ease) { - -webkit-animation: $name $duration $delay $ease; - -moz-animation: $name $duration $delay $ease; - -ms-animation: $name $duration $delay $ease; -} - -/* ========================================================================== - Background - ========================================================================== */ - -/* - @include background-alpha(VALUE VALUE); - ========================================================================== */ - -@mixin background-alpha($color: $white, $alpha: 1) { - background-color: hsla(hue($color), saturation($color), lightness($color), $alpha); -} - -/* - @include background-size(VALUE VALUE); - ========================================================================== */ - -@mixin background-size($size){ - -webkit-background-size: $size; - -moz-background-size: $size; - -o-background-size: $size; - background-size: $size; -} - -/* - Box-sizing - example: @include box-sizing(VALUE); //(border-box, padding-box, content-box) - ========================================================================== */ - -@mixin box-sizing($boxsize: border-box) { - -webkit-box-sizing: $boxsize; - -moz-box-sizing: $boxsize; - -ms-box-sizing: $boxsize; - box-sizing: $boxsize; -} - -/* ========================================================================== - Image replacement - ========================================================================== */ - -@mixin hide-text() { - text-indent: 100%; - white-space: nowrap; - overflow: hidden; -} - -/* - Hide from visual and speaking browsers - ========================================================================== */ - -@mixin hidden { - display: none; - visibility: hidden; -} - -/* - Hide but maintain layout - ========================================================================== */ - -@mixin invisible() { - visibility: hidden; -} - -/* - Resize - example: @include resize(VALUE); //(none, both, horizontal, vertical, inherit) - - ========================================================================== */ - -@mixin resize($direction: both) { - resize: $direction; - overflow: auto; -} - -/* - Hidden but available to speaking browsers - ========================================================================== */ - -@mixin visuallyhidden() { -overflow: hidden; -position: absolute; -clip: rect(0 0 0 0); -height: 1px; -width: 1px; -margin: -1px; -padding: 0; -border: 0; } diff --git a/_sass/normalize.scss b/_sass/normalize.scss deleted file mode 100644 index d146f7f5..00000000 --- a/_sass/normalize.scss +++ /dev/null @@ -1,398 +0,0 @@ -/*! normalize.css v2.1.0 | MIT License | git.io/normalize */ - -/* ========================================================================== - HTML5 display definitions - ========================================================================== */ - -/** - * Correct `block` display not defined in IE 8/9. - */ - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -nav, -section, -summary { - display: block; -} - -/** - * Correct `inline-block` display not defined in IE 8/9. - */ - -audio, -canvas, -video { - display: inline-block; -} - -/** - * Prevent modern browsers from displaying `audio` without controls. - * Remove excess height in iOS 5 devices. - */ - -audio:not([controls]) { - display: none; - height: 0; -} - -/** - * Address styling not present in IE 8/9. - */ - -[hidden] { - display: none; -} - -/* ========================================================================== - Base - ========================================================================== */ - -/** - * 1. Set default font family to sans-serif. - * 2. Prevent iOS text size adjust after orientation change, without disabling - * user zoom. - */ - -html { - font-family: sans-serif; /* 1 */ - -webkit-text-size-adjust: 100%; /* 2 */ - -ms-text-size-adjust: 100%; /* 2 */ -} - -/** - * Remove default margin. - */ - -body { - margin: 0; -} - -/* ========================================================================== - Links - ========================================================================== */ - -/** - * Address `outline` inconsistency between Chrome and other browsers. - */ - -a:focus { - outline: thin dotted; -} - -/** - * Improve readability when focused and also mouse hovered in all browsers. - */ - -a:active, -a:hover { - outline: 0; -} - -/* ========================================================================== - Typography - ========================================================================== */ - -/** - * Address variable `h1` font-size and margin within `section` and `article` - * contexts in Firefox 4+, Safari 5, and Chrome. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/** - * Address styling not present in IE 8/9, Safari 5, and Chrome. - */ - -abbr[title] { - border-bottom: 1px dotted; -} - -/** - * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. - */ - -b, -strong { - font-weight: bold; -} - -/** - * Address styling not present in Safari 5 and Chrome. - */ - -dfn { - font-style: italic; -} - -/** - * Address differences between Firefox and other browsers. - */ - -hr { - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; -} - -/** - * Address styling not present in IE 8/9. - */ - -mark { - background: #ff0; - color: #000; -} - -/** - * Correct font family set oddly in Safari 5 and Chrome. - */ - -code, -kbd, -pre, -samp { - font-family: monospace, serif; - font-size: 1em; -} - -/** - * Improve readability of pre-formatted text in all browsers. - */ - -pre { - white-space: pre; -} - -/** - * Set consistent quote types. - */ - -q { - quotes: "\201C" "\201D" "\2018" "\2019"; -} - -/** - * 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: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/* ========================================================================== - Embedded content - ========================================================================== */ - -/** - * Remove border when inside `a` element in IE 8/9. - */ - -img { - border: 0; -} - -/** - * Correct overflow displayed oddly in IE 9. - */ - -svg:not(:root) { - overflow: hidden; -} - -/* ========================================================================== - Figures - ========================================================================== */ - -/** - * Address margin not present in IE 8/9 and Safari 5. - */ - -figure { - margin: 0; -} - -/* ========================================================================== - Forms - ========================================================================== */ - -/** - * Define consistent border, margin, and padding. - */ - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -/** - * 1. Correct `color` not being inherited in IE 8/9. - * 2. Remove padding so people aren't caught out if they zero out fieldsets. - */ - -legend { - border: 0; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * 1. Correct font family not being inherited in all browsers. - * 2. Correct font size not being inherited in all browsers. - * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. - */ - -button, -input, -select, -textarea { - font-family: inherit; /* 1 */ - font-size: 100%; /* 2 */ - margin: 0; /* 3 */ -} - -/** - * Address Firefox 4+ setting `line-height` on `input` using `!important` in - * the UA stylesheet. - */ - -button, -input { - line-height: normal; -} - -/** - * 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 Chrome, Safari 5+, and IE 8+. - * Correct `select` style inheritance in Firefox 4+ and Opera. - */ - -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; -} - -/** - * 1. Address box sizing set to `content-box` in IE 8/9. - * 2. Remove excess padding in IE 8/9. - */ - -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. - * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome - * (include `-moz` to future-proof). - */ - -input[type="search"] { - -webkit-appearance: textfield; /* 1 */ - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; /* 2 */ - box-sizing: content-box; -} - -/** - * Remove inner padding and search cancel button in Safari 5 and Chrome - * on OS X. - */ - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * Remove inner padding and border in Firefox 4+. - */ - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -/** - * 1. Remove default vertical scrollbar in IE 8/9. - * 2. Improve readability and alignment in all browsers. - */ - -textarea { - overflow: auto; /* 1 */ - vertical-align: top; /* 2 */ -} - -/* ========================================================================== - Tables - ========================================================================== */ - -/** - * Remove most spacing between table cells. - */ - -table { - border-collapse: collapse; - border-spacing: 0; - margin-bottom: 1.5em; - width: 100%; /* make full width */ -} diff --git a/_sass/page.scss b/_sass/page.scss deleted file mode 100644 index abc8327b..00000000 --- a/_sass/page.scss +++ /dev/null @@ -1,740 +0,0 @@ -/* ========================================================================== - Page layout - ========================================================================== */ - -body { - background-color: $bodycolor; - font-family: $base-font; - color: $text-color; -} - -/* - Header - ========================================================================== */ - -.navigation-wrapper { - @include container; - padding: 2em 0 1em; - font-family: $heading-font; - font-weight: 700; - text-transform: uppercase; - @include clearfix; -} - -/* Site name */ -.site-name { - @include grid(12,10); - @include prefix(12,1); - @include suffix(12,1); - margin-bottom: 1em; - float: none; - display: block; - @include font-rem(24); - @media #{$small} { - @include grid(12,2); - @include prefix(12,0.5); - @include suffix(12,0.5); - @include font-rem(16); - } - @media #{$x-large} { - @include grid(12,1.5); - @include prefix(12,2); - } -} - -/* Top navigation links */ -.top-navigation { - @include grid(12,10); - @include prefix(12,1); - @include suffix(12,1); - margin-bottom: 1em; - float: none; - display: block; - @media #{$small} { - @include grid(12,9); - @include prefix(12,0); - @include suffix(12,0); - } - @media #{$x-large} { - @include grid(12,8); - } - ul { - margin: 0; - padding: 0; - clear: both; - list-style-type: none; - } - li { - display: block; - list-style-type: none; - border-bottom: 1px solid lighten($black,80); - border-bottom: 1px solid fade($black,10); - @include font-rem(16); - &:last-child { - border-bottom: 0 solid transparent; - } - @media #{$small} { - display: inline; - margin-right: 25px; - white-space: nowrap; - border-bottom: 0 solid transparent; - } - a { - display: block; - padding: 10px 0; - decoration: none; - border-bottom: 0 solid transparent; - @include transition(all .2s); - @media #{$small} { - display: inline; - padding: 0; - } - } - } -} - -/* Animated lines for mobile nav button */ -$button-size: 1.5rem; -@mixin navicon-line() { - display: inline-block; - width: $button-size; - height: $button-size/7; - // line color - background: $white; - border-radius: $button-size/14; - transition: .3s; -} -.navicon-lines-button { - padding: $button-size/4 $button-size/2; - transition: .3s; - cursor: pointer; - user-select: none; - border-radius: $button-size/7; -} -.navicon-lines-button:hover { - opacity: 1; -} -.navicon-lines-button:active { - transition: 0; -} -.navicon-lines { - margin-right: 10px; - margin-bottom: $button-size/5; - // create middle line - @include navicon-line; - position: relative; - // create the upper and lower lines as pseudo-elements of the middle line - &:before, - &:after { - @include navicon-line; - position: absolute; - left: 0; - content: ''; - -webkit-transform-origin: $button-size/14 center; - transform-origin: $button-size/14 center; - } - &:before { top: $button-size/4; } - &:after { top: -$button-size/4; } -} -.navicon-lines-button:hover { - opacity: 1; - .navicon-lines { - &:before { top: $button-size/3.5; } - &:after { top: -$button-size/3.5; } - } -} -.navicon-lines-button.x.active .navicon-lines { - // hide the middle line - background: transparent; - // overlap the lines by setting both their top values to 0 - &:before, - &:after { - -webkit-transform-origin: 50% 50%; - transform-origin: 50% 50%; - top: 0; - width: $button-size; - } - // rotate the lines to form the x shape - &:before { - -webkit-transform: rotate3d(0,0,1,45deg); - transform: rotate3d(0,0,1,45deg); - } - &:after { - -webkit-transform: rotate3d(0,0,1,-45deg); - transform: rotate3d(0,0,1,-45deg); - } -} -// Style the toggle menu link and hide it -.nav .navtoggle { - @include font-rem(18); - font-weight: normal; - background-color: $black; - color: $white; - border: none; - cursor: pointer; - @media #{$small} { - display: none; - } -} -.nav button { - border: none; - background: none; -} -.navtoggle i { - z-index:-1; -} -.icon-menu { - position: relative; - top: 3px; - line-height: 0; -} -// When JavaScript is disabled, we hide the toggle button -.no-js .nav .navtoggle { - display: none; -} -// When JavaScript is disabled, we show the menu -.no-js .nav ul { - max-height: 30em; - overflow: hidden; -} -// When JavaScript is enabled, we hide the menu -.js .nav ul { - max-height: 0; - overflow: hidden; - @media #{$small} { - max-height: 30em; - } -} -// Displaying the menu when the user has clicked on the button -.js .nav .active + ul { - max-height: 30em; - overflow: hidden; - -webkit-transition: max-height .4s; - -moz-transition: max-height .4s; - -o-transition: max-height .4s; - -ms-transition: max-height .4s; - transition: max-height .4s; -} - -/* Main content */ -#main { - counter-reset: captions; - @include container; - @include clearfix; - clear: both; - margin-top: 2em; - h1 { - margin-top: 0; - } - .post, - .page { - @include container; - @include grid(12,10); - @include prefix(12,1); - @include suffix(12,1); - margin-bottom: 2em; - @media #{$small} { - @include grid(12,8); - @include prefix(12,0); - @include suffix(12,0); - } - @media #{$large} { - @include grid(12,6); - } - @media #{$x-large} { - @include grid(12,5); - } - } -} - -/* Index listing specific styling */ -#index { - @include container; - @include grid(12,10); - @include prefix(12,1); - @include suffix(12,1); - margin-bottom: 2em; - @media #{$small} { - @include grid(12,8); - @include prefix(12,0); - @include suffix(12,0); - } - @media #{$large} { - @include grid(12,6); - } - @media #{$x-large} { - @include grid(12,5); - } - h3 { - margin: 0; - padding-bottom: .5em; - @include font-rem(28); - border-bottom: 1px solid lighten($black,70); - } - article { - h2 { - margin-bottom: 4px; - @include font-rem(20); - &.link-post { - margin-bottom: 0px + $doc-line-height; - margin-bottom: 0rem + ($doc-line-height / $doc-font-size); - } - } - p { - @include font-rem(14); - } - p+p { - text-indent: 0; - } - } -} - -/* Large feature header image */ -.image-wrap { - position: relative; - margin-bottom: 2em; - @include clearfix; - &:after { - content: " "; - display: block; - position: absolute; - bottom: 0; - left: 8%; - width: 0; - height: 0; - border: 10px solid transparent; - border-bottom-color: $bodycolor; - @media #{$small} { - left: 25%; - } - @media #{$large} { - border-width: 20px; - } - @media #{$x-large} { - left: 33.333333333%; - } - } - img { - width: 100%; - height: auto; - -ms-interpolation-mode: bicubic; - } - .headline-wrap { - position: absolute; - bottom: 25px; - @include prefix(12,1); - @media #{$small} { - left: 25%; - margin-left: 0; - } - @media #{$x-large} { - @include prefix(12,1); - } - h1, h2 { - color: $white; - @include text-shadow(0 1px 2px rgba(0,0,0,.25)); - } - } -} - -/* Post byline */ -.byline { - clear: both; - font-size: 80%; -} -.article-author-side, -.article-author-bottom { - h3 { - margin-bottom: 0; - } - p { - font-size: 80%; - font-style: italic; - } - a, a:hover { - border-bottom: 0 solid transparent; - } -} - -/* Default social media links in author sidebar */ -.author-social { - display: block; - margin-bottom: 5px; - @include font-rem(14); - color: $black; - &:visited { - color: $black; - } - &:hover { - @include scale(1.1); - } - &:active { - @include translate(0, 2px); - } - .fa { - margin-right: 5px; - } -} - -/* Author sidebar */ -.article-author-side { - display: none; - .bio-photo { - max-width: 110px; - @include rounded(150px); - } - @media #{$small} { - display: block; - @include grid(12,2); - @include prefix(12,0.5); - @include suffix(12,0.5); - h3, - p, - .author-social { - display: block; - max-width: 125px; - } - h3 { - margin-top: 10px; - margin-bottom: 10px; - } - p { - margin-bottom: 20px; - } - .author-social { - margin-bottom: 5px; - } - } - @media #{$large} { - h3, - .bio-photo, - p, - .author-social { - max-width: 150px; - } - } - @media #{$x-large} { - @include grid(12,1.5); - @include prefix(12,2); - } -} - -/* Author module - mobile only */ -.article-author-bottom { - margin-bottom: 1em; - @media #{$small} { - display: none; - } - .bio-photo { - float: left; - margin-right: 25px; - max-width: 100px; - @include rounded(150px); - } - .author-social { - display: inline-block; - margin-right: 10px; - } - @media #{$large} { - h3, - .bio-photo, - p, - .author-social { - max-width: 150px; - } - } -} - -/* Post content wrapper */ -.article-wrap { - // Dotted line underlines for links - p > a, - p > em > a, - p > strong > a, - li > a { - text-decoration: underline; - } -} - -/* Table of contents */ -.toc { - font-size: 95%; - @media #{$large} { - display: block; - @include grid(12,2); - @include prefix(12,0.5); - @include suffix(12,0.5); - position: absolute; - top: 5.5em; - right: 0; - background-color: $white; - } - header { - background: lighten($black, 10); - } - h3 { - margin: 0; - padding: 5px 10px; - color: $white; - @include font-rem(16); - text-transform: uppercase; - &:hover { - cursor: pointer; - } - } - ul { - margin: 2px 0 0; - padding: 0; - line-height: 1; - } - li { - display: block; - margin: 0 0 1px 0; - padding: 0; - font-family: $heading-font; - list-style-type: none; - &:last-child { - border-bottom-width: 0; - } - a { - padding: 10px; - display: block; - color: $white; - text-decoration: none; - background: lighten($black, 30); - @include opacity(0.7); - @include transition(opacity 0.2s ease-in-out); - &:hover { - @include opacity(1); - } - } - ul { - margin: 1px 0 0; - li a { - padding-left: 20px; - } - } - } -} - -/* TOC trigger for collapsing */ -#drawer { - max-height: 100%; - overflow: hidden; - &.js-hidden { - max-height: 0; - } -} - -/* Image grid - not used */ -.image-grid { - @include clearfix; - list-style: none; - margin: 0 0 1em; - padding: 0; - li { - @include grid(12,6); - @media #{$micro} { - width: 33.333333%; - } - @media #{$small} { - width: 25%; - } - @media #{$medium} { - width: 20%; - } - @media #{$large} { - width: 16.666666666%; - } - } -} - -/* Recent grid - not used */ -.recent-grid { - @include clearfix; - list-style: none; - margin: 1em 0; - li { - display: inline; - a { - border-bottom: 0 solid transparent; - &:hover { - border-bottom: 0 solid transparent; - } - } - } - img { - width: 19%; - margin-bottom: 1%; - } -} - -/* Social sharing links */ -/* Social media brand buttons */ -.social-share { - margin-bottom: 0px + $doc-line-height; - margin-bottom: 0rem + ($doc-line-height / $doc-font-size); - ul, li { - margin: 0; - padding: 0; - list-style: none; - } - li { - display: inline-block; - } - $social: - (facebook, $facebook-color), - (flickr, $flickr-color), - (foursquare, $foursquare-color), - (google-plus, $google-plus-color), - (instagram, $instagram-color), - (linkedin, $linkedin-color), - (pinterest, $pinterest-color), - (rss, $rss-color), - (tumblr, $tumblr-color), - (twitter, $twitter-color), - (vimeo, $vimeo-color), - (youtube, $youtube-color); - @each $socialnetwork, $color in $social { - .#{$socialnetwork} { - background: $color; - } - } - a { - display: block; - padding: 8px 20px; - text-decoration: none !important; - text-transform: uppercase; - @include font-rem(14); - font-family: $heading-font; - font-weight: 700; - color: $white; - opacity: 0.8; - &:hover { - opacity: 1; - } - } - span { - display: none; - @media #{$medium} { - display: inline; - padding-left: 5px; - } - } - h4 { - @include font-rem(14); - margin-bottom: 10px; - text-transform: uppercase; - } -} - - -/* Footer wrapper */ -.footer-wrap { - @include container; - @include clearfix; - clear: both; - padding-bottom: 3em; - a, - a:active, - a:visited, - p, - h4, - h5, - h6, - span { - @include font-rem(14); - } - footer { - @include grid(12,10); - @include prefix(12,1); - @include suffix(12,1); - @media #{$small} { - @include grid(12,6); - @include prefix(12,3); - @include suffix(12,3); - } - @media #{$x-large} { - @include grid(12,4.5); - @include prefix(12,4); - @include suffix(12,3.5); - } - } -} - -/* Related articles list */ -.related-articles { - @include grid(12,10); - @include prefix(12,1); - @include suffix(12,1); - margin-bottom: 2em; - @media #{$small} { - @include grid(12,6); - @include prefix(12,3); - @include suffix(12,3); - } - @media #{$x-large} { - @include grid(12,4.5); - @include prefix(12,4); - @include suffix(12,3.5); - } - h4 { - text-transform: uppercase; - margin-bottom: 0; - } - li { - margin-bottom: 0; - } -} - -/* - Browser upgrade alert - ========================================================================== */ - -.browser-upgrade { - background: #000; - text-align: center; - margin: 0 0 2em 0; - padding: 10px; - text-align: center; - color: $white; - a { - color: $white; - border-bottom: 1px dotted $white; - text-decoration: none; - &:hover { - border-bottom: 1px solid $white; - } - } -} -/* - Google search form - ========================================================================== */ - -#goog-fixurl { - ul { - list-style: none; - margin-left: 0; - padding-left: 0; - li { - list-style-type: none; - } - } -} -#goog-wm-qt { - width: auto; - margin-right: 10px; - margin-bottom: 20px; - padding: 8px 20px; - display: inline-block; - @include font-rem(14); - background-color: $white; - color: $black; - border-width: 2px !important; - border-style: solid !important; - border-color: lighten($black,50); - @include rounded(3px); -} -#goog-wm-sb { - @extend .btn; -} diff --git a/_sass/site.scss b/_sass/site.scss deleted file mode 100644 index 781ee146..00000000 --- a/_sass/site.scss +++ /dev/null @@ -1,72 +0,0 @@ -/* ========================================================================== - Site wide styles - ========================================================================== */ - -/* - Selection - ========================================================================== */ - -::-moz-selection { - background-color: lighten($basecolor, 65%); - color: $basecolor; - text-shadow: none; -} -::selection { - background-color: lighten($basecolor, 65%); - color: $basecolor; - text-shadow: none; -} - -/* - Global classes - ========================================================================== */ - -/* Capitalize */ -.all-caps { - text-transform: uppercase; -} - -/* Float left */ -.pull-left { - float: left; -} - -/* Float right */ -.pull-right { - float: right; -} -.image-pull-right { - float: right; - margin-top: 0; -} - -/* Clearfix */ -.clearfix { - *zoom: 1; - &:before, - &:after { - display: table; - content: ""; - } - &:after { - clear: both; - } -} - -/* Remove bullets and indentation from list */ -.unstyled-list { - list-style: none; - margin-left: 0; - padding-left: 0; - li { - list-style-type: none; - } -} - -/* - Global transition - ========================================================================== */ - -b, i, strong, em, blockquote, p, q, span, figure, img, h1, h2, header, input, a { - @include transition(all .2s ease); -} diff --git a/_sass/syntax.scss b/_sass/syntax.scss deleted file mode 100644 index 7d8824f3..00000000 --- a/_sass/syntax.scss +++ /dev/null @@ -1,84 +0,0 @@ -/* ========================================================================== - Syntax highlighting - ========================================================================== */ - -pre.highlight { - padding: 1em; -} - -.highlight { - background-color: #efefef; - font-family: $code-font; - @include font-rem(12); - line-height: 1.5; - color: #333332; - margin-bottom: 1.5em; - @include rounded(4px); - pre { - position: relative; - margin: 0; - padding: 1em; - } - .lineno { padding-right: 24px; color: lighten(#333332,50);} - .hll { background-color: #ffffcc } - .c { color: #999988; font-style: italic } /* Comment */ - .err { color: #a61717; background-color: #e3d2d2 } /* Error */ - .k { color: #000000; font-weight: bold } /* Keyword */ - .o { color: #000000; font-weight: bold } /* Operator */ - .cm { color: #999988; font-style: italic } /* Comment.Multiline */ - .cp { color: #999999; font-weight: bold; font-style: italic } /* Comment.Preproc */ - .c1 { color: #999988; font-style: italic } /* Comment.Single */ - .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ - .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ - .ge { color: #000000; font-style: italic } /* Generic.Emph */ - .gr { color: #aa0000 } /* Generic.Error */ - .gh { color: #999999 } /* Generic.Heading */ - .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ - .go { color: #888888 } /* Generic.Output */ - .gp { color: #555555 } /* Generic.Prompt */ - .gs { font-weight: bold } /* Generic.Strong */ - .gu { color: #aaaaaa } /* Generic.Subheading */ - .gt { color: #aa0000 } /* Generic.Traceback */ - .kc { color: #000000; font-weight: bold } /* Keyword.Constant */ - .kd { color: #000000; font-weight: bold } /* Keyword.Declaration */ - .kn { color: #000000; font-weight: bold } /* Keyword.Namespace */ - .kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */ - .kr { color: #000000; font-weight: bold } /* Keyword.Reserved */ - .kt { color: #445588; font-weight: bold } /* Keyword.Type */ - .m { color: #009999 } /* Literal.Number */ - .s { color: #d01040 } /* Literal.String */ - .na { color: #008080 } /* Name.Attribute */ - .nb { color: #0086B3 } /* Name.Builtin */ - .nc { color: #445588; font-weight: bold } /* Name.Class */ - .no { color: #008080 } /* Name.Constant */ - .nd { color: #3c5d5d; font-weight: bold } /* Name.Decorator */ - .ni { color: #800080 } /* Name.Entity */ - .ne { color: #990000; font-weight: bold } /* Name.Exception */ - .nf { color: #990000; font-weight: bold } /* Name.Function */ - .nl { color: #990000; font-weight: bold } /* Name.Label */ - .nn { color: #555555 } /* Name.Namespace */ - .nt { color: #000080 } /* Name.Tag */ - .nv { color: #008080 } /* Name.Variable */ - .ow { color: #000000; font-weight: bold } /* Operator.Word */ - .w { color: #bbbbbb } /* Text.Whitespace */ - .mf { color: #009999 } /* Literal.Number.Float */ - .mh { color: #009999 } /* Literal.Number.Hex */ - .mi { color: #009999 } /* Literal.Number.Integer */ - .mo { color: #009999 } /* Literal.Number.Oct */ - .sb { color: #d01040 } /* Literal.String.Backtick */ - .sc { color: #d01040 } /* Literal.String.Char */ - .sd { color: #d01040 } /* Literal.String.Doc */ - .s2 { color: #d01040 } /* Literal.String.Double */ - .se { color: #d01040 } /* Literal.String.Escape */ - .sh { color: #d01040 } /* Literal.String.Heredoc */ - .si { color: #d01040 } /* Literal.String.Interpol */ - .sx { color: #d01040 } /* Literal.String.Other */ - .sr { color: #009926 } /* Literal.String.Regex */ - .s1 { color: #d01040 } /* Literal.String.Single */ - .ss { color: #990073 } /* Literal.String.Symbol */ - .bp { color: #999999 } /* Name.Builtin.Pseudo */ - .vc { color: #008080 } /* Name.Variable.Class */ - .vg { color: #008080 } /* Name.Variable.Global */ - .vi { color: #008080 } /* Name.Variable.Instance */ - .il { color: #009999 } /* Literal.Number.Integer.Long */ -} diff --git a/_sass/typography.scss b/_sass/typography.scss deleted file mode 100644 index 334f5e51..00000000 --- a/_sass/typography.scss +++ /dev/null @@ -1,168 +0,0 @@ -/* ========================================================================== - Typography - ========================================================================== */ - -/* - Headings - ========================================================================== */ - -h1, h2, h3, h4, h5, h6 { - font-family: $heading-font; -} -h1 { - @include font-size(32); -} -h2 { - @include font-size(28); -} -h3 { - @include font-size(24); -} -h4 { - @include font-size(18); -} -h5 { - @include font-size(16); -} -h6 { - @include font-size(14); -} - -/* - Links - ========================================================================== */ - -a { - text-decoration: none; - color: $link-color; - &:visited { - color: $linkcolorvisited; - } - &:hover { - color: $linkcolorhover; - } - &:focus { - outline: thin dotted; - color: $linkcolorfocus; - } - &:hover, - &:active { - outline: 0; - } -} - -/* - Figure captions - ========================================================================== */ - -figcaption { - padding-top: 10px; - @include font(14); - line-height: 1.3; - color: lighten($text-color, 10); -} - -/* - Feature image captions - ========================================================================== */ - -.image-credit { - @include grid(12,10); - @include prefix(12,1); - @include suffix(12,1); - display: block; - text-align: right; - @include font(12); - line-height: 1.3; - font-style: italic; - color: lighten($text-color, 30); - @media #{$small} { - @include grid(12,9); - @include prefix(12,0); - @include suffix(12,0); - } - @media #{$x-large} { - @include grid(12,8.5); - } - a { - color: lighten($text-color, 30); - } -} - -/* - Notices - ========================================================================== */ - -.notice { - margin-top: 1.5em; - padding: .5em 1em; - text-indent: 0; - @include font-rem(14); - background-color: $body-color; - border: 1px solid darken($body-color,20); - @include rounded(3px); -} - -/* - Blockquotes - ========================================================================== */ - -blockquote { - margin-left: -28px; - padding-left: 20px; - border-left: 8px solid $border-color; - font-family: $alt-font; - font-style: italic; -} - -/* - Footnotes - ========================================================================== */ - -.footnotes { - ol, li, p { - margin-bottom: 0; - @include font-rem(14); - } -} - -/* - Paragraphs - ========================================================================== */ - -p { - margin: 0 0 $indent-var; - // sibling indentation - @if $paragraph-indent == true { - & + p { - text-indent: $indent-var; - margin-top: -($indent-var); - } - } -} - -/* - Code snippets - ========================================================================== */ - -tt, code, kbd, samp, pre { - font-family: $code-font; -} -p, -li { - code { - @include font-rem(12); - line-height: 1.5; - white-space: nowrap; - margin: 0 2px; - padding: 0 5px; - border: 1px solid lighten($black, 90); - background-color: #efefef; - @include rounded(3px); - } -} -pre { - @include font-rem(12); - line-height: 1.5; - overflow-x: auto; -} diff --git a/_sass/variables.scss b/_sass/variables.scss deleted file mode 100644 index 945b7d78..00000000 --- a/_sass/variables.scss +++ /dev/null @@ -1,69 +0,0 @@ -/* ========================================================================== - Sass variables - ========================================================================== */ - -/* - Typography - ========================================================================== */ - -$doc-font-size: 16; -$doc-line-height: 26; -$paragraph-indent: true !default; -$base-font: 'PT Serif', serif; -$heading-font: 'PT Sans Narrow', sans-serif; -$code-font: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; -$alt-font: $base-font; - -/* - Colors - ========================================================================== */ - -$bodycolor : #fff; -$body-color : $bodycolor; -$textcolor : #333332; -$text-color : $textcolor; -$border-color : $text-color; -$basecolor : #343434; -$compcolor : spin($basecolor, 180); -$bordercolor : $basecolor; -$white : #fff; -$black : #111; -$accentcolor : $black; - -/* buttons */ -$primary : $black; -$success : #5cb85c; -$warning : #dd8338; -$danger : #C64537; -$info : #308cbc; - -/* brands */ -$facebook-color : #3b5998; -$flickr-color : #ff0084; -$foursquare-color : #0cbadf; -$google-plus-color : #dd4b39; -$instagram-color : #4e433c; -$linkedin-color : #4875b4; -$pinterest-color : #cb2027; -$rss-color : #fa9b39; -$tumblr-color : #2c4762; -$twitter-color : #55acee; -$vimeo-color : #1ab7ea; -$youtube-color : #ff3333; - -/* links */ -$linkcolor : #343434; -$link-color : $linkcolor; -$linkcolorhover : darken($linkcolor, 10); -$linkcolorvisited : lighten($linkcolorhover, 20); -$linkcolorfocus : darken($linkcolorvisited, 10); - -/* - Breakpoints - ========================================================================== */ - -$micro : "only screen and (min-width: 30em)"; -$small : "only screen and (min-width: 37.5em)"; -$medium : "only screen and (min-width: 48em)"; -$large : "only screen and (min-width: 62em)"; -$x-large : "only screen and (min-width: 86.375em)"; diff --git a/_sass/vendor/google/_fonts.scss b/_sass/vendor/google/_fonts.scss deleted file mode 100644 index 9f43d51d..00000000 --- a/_sass/vendor/google/_fonts.scss +++ /dev/null @@ -1,33 +0,0 @@ -// GOOGLE FONTS -// -------------------------------------------------- - -@font-face { - font-family: 'PT Sans Narrow'; - font-style: normal; - font-weight: 400; - src: local('PT Sans Narrow'), local('PTSans-Narrow'), url(http://themes.googleusercontent.com/static/fonts/ptsansnarrow/v5/UyYrYy3ltEffJV9QueSi4RdbPw3QSf9R-kE0EsQUn2A.woff) format('woff'); -} -@font-face { - font-family: 'PT Sans Narrow'; - font-style: normal; - font-weight: 700; - src: local('PT Sans Narrow Bold'), local('PTSans-NarrowBold'), url(http://themes.googleusercontent.com/static/fonts/ptsansnarrow/v5/Q_pTky3Sc3ubRibGToTAYiylde52zikAzebNtJS89aM.woff) format('woff'); -} -@font-face { - font-family: 'PT Serif'; - font-style: normal; - font-weight: 400; - src: local('PT Serif'), local('PTSerif-Regular'), url(http://fonts.gstatic.com/s/ptserif/v7/I-OtoJZa3TeyH6D9oli3ifesZW2xOQ-xsNqO47m55DA.woff2) format('woff2'), url(http://fonts.gstatic.com/s/ptserif/v7/sDRi4fY9bOiJUbgq53yZCfesZW2xOQ-xsNqO47m55DA.woff) format('woff'); -} -@font-face { - font-family: 'PT Serif'; - font-style: normal; - font-weight: 700; - src: local('PT Serif Bold'), local('PTSerif-Bold'), url(http://fonts.gstatic.com/s/ptserif/v7/QABk9IxT-LFTJ_dQzv7xpI4P5ICox8Kq3LLUNMylGO4.woff2) format('woff2'), url(http://fonts.gstatic.com/s/ptserif/v7/QABk9IxT-LFTJ_dQzv7xpIbN6UDyHWBl620a-IRfuBk.woff) format('woff'); -} -@font-face { - font-family: 'PT Serif'; - font-style: italic; - font-weight: 400; - src: local('PT Serif Italic'), local('PTSerif-Italic'), url(http://fonts.gstatic.com/s/ptserif/v7/03aPdn7fFF3H6ngCgAlQzPk_vArhqVIZ0nv9q090hN8.woff2) format('woff2'), url(http://fonts.gstatic.com/s/ptserif/v7/03aPdn7fFF3H6ngCgAlQzBsxEYwM7FgeyaSgU71cLG0.woff) format('woff'); -} \ No newline at end of file diff --git a/_templates/archive b/_templates/archive deleted file mode 100644 index 82bab001..00000000 --- a/_templates/archive +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: post-index -title: {{ title }} -permalink: -modified: -excerpt: -image: - feature: ---- \ No newline at end of file diff --git a/_templates/page b/_templates/page deleted file mode 100644 index ff3f922c..00000000 --- a/_templates/page +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: {{ layout }} -title: {{ title }} -date: {{ date }} -modified: -excerpt: -tags: [] -image: - feature: ---- diff --git a/_templates/post b/_templates/post deleted file mode 100644 index 009e333b..00000000 --- a/_templates/post +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: {{ layout }} -title: {{ title }} -modified: -categories: {{ dir }} -excerpt: -tags: [] -image: - feature: ---- diff --git a/about/index.md b/about/index.md deleted file mode 100644 index 5182e9b8..00000000 --- a/about/index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: page -title: About the Theme -tags: [about, Jekyll, theme, responsive] -modified: 2014-08-08T20:53:07.573882-04:00 -comments: true -image: - feature: sample-image-2.jpg - credit: WeGraphics - creditlink: http://wegraphics.net/downloads/free-ultimate-blurred-background-pack/ ---- - -Minimal Mistakes is responsive Jekyll theme with large featured images and solid typography. As the name implies the styling is fairly minimal to make it easier for you to build on top of. - -## Minimal Mistakes is all about: - -* Responsive templates. Looking good on mobile, tablet, and desktop. -* Gracefully degrading in older browsers. Compatible with Internet Explorer 8+ and all modern browsers. -* Minimal embellishments -- content first. -* Optional large feature images for posts and pages. -* Simple and clear permalink structure. -* [Custom 404 page](http://mmistakes.github.io/minimal-mistakes/404.html) to get you started. -* Support for Disqus Comments - -Install Minimal Mistakes Theme diff --git a/assets/_scss/_animations.scss b/assets/_scss/_animations.scss new file mode 100644 index 00000000..a975d021 --- /dev/null +++ b/assets/_scss/_animations.scss @@ -0,0 +1,12 @@ +/* ========================================================================== + ANIMATIONS + ========================================================================== */ + +@keyframes intro { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} \ No newline at end of file diff --git a/assets/_scss/_archive.scss b/assets/_scss/_archive.scss new file mode 100644 index 00000000..6307b7c5 --- /dev/null +++ b/assets/_scss/_archive.scss @@ -0,0 +1,238 @@ +/* ========================================================================== + ARCHIVE + ========================================================================== */ + +.archive { + margin-bottom: 2em; + + @include breakpoint($medium) { + @include span(12 of 12); + } + + @include breakpoint($large) { + @include span(10 of 12 last); + } + + @include breakpoint($x-large) { + @include prefix(0.5 of 12); + } + + a { + color: inherit; + text-decoration: none; + } +} + +.archive__subtitle { + margin: 1.414em 0 0; + padding-bottom: 0.5em; + font-size: $type-size-5; + color: mix(#fff, $gray, 25%); + border-bottom: 1px solid $border-color; + + + .list__item .archive__item-title { + margin-top: 0.5em; + } +} + +.archive__item-title { + margin-bottom: 0.25em; + font-family: $sans-serif-narrow; + font-size: $type-size-5; +} + +.archive__item-excerpt { + margin-top: 0; + font-size: $type-size-6; + + & + p { + text-indent: 0; + } +} + +.archive__item-teaser { + border-radius: $border-radius; + overflow: hidden; + img { + width: 100%; + } +} + +a:hover { + .archive__item-teaser { + box-shadow: 0 0 10px rgba(#000, 0.25); + } + + .archive__item-title { + text-decoration: underline; + } +} + + +/* + List view + ========================================================================== */ + +.list__item { + @include breakpoint($medium) { + padding-right: $right-sidebar-width-narrow; + } + + @include breakpoint($large) { + padding-right: $right-sidebar-width; + } + + @include breakpoint($x-large) { + padding-right: $right-sidebar-width-wide; + } + + .page__meta { + margin: 0 0 4px; + } +} + + +/* + Grid view + ========================================================================== */ + +.grid__item { + margin-bottom: 2em; + + .page__meta { + margin: 0 0 4px; + } + + .archive__item-title { + margin-top: 0.5em; + font-size: $type-size-5; + } + + .archive__item-excerpt { + display: none; + } + + @include breakpoint($small) { + @include gallery(5 of 10); + .archive__item-teaser { + max-height: 200px; + } + } + + @include breakpoint($medium) { + margin-left: 0; // reset before mixin does its thing + margin-right: 0; // reset before mixin does its thing + @include gallery(2.5 of 10); + + .archive__item-teaser { + max-height: 120px; + } + + .archive__item-excerpt { + display: block; + font-size: $type-size-6; + } + } +} + + +/* + Features + ========================================================================== */ + +.feature__wrapper { + @include clearfix(); + margin-bottom: 2em; + border-bottom: 1px solid $border-color; +} + +.feature__item { + margin-bottom: 2em; + font-size: 1.25rem; + + @include breakpoint($small) { + margin-bottom: 0; + text-align: center; + @include gallery(4 of 12); + + .feature__item-teaser { + max-height: 200px; + overflow: hidden; + } + } + + .archive__item-body { + padding-left: 0.5em; + padding-right: 0.5em; + } + + &--left { + @include full(); + // margin-bottom: 2em; + font-size: 1.25rem; + + .archive__item-teaser { + margin-bottom: 2em; + } + + @include breakpoint($small) { + .archive__item-teaser { + @include span(5 of 12); + } + + .archive__item-body { + @include span(7 of 12 last); + @include prefix(0.5 of 12); + @include suffix(1 of 12); + } + } + } + + &--right { + @include full(); + // margin-bottom: 2em; + font-size: 1.25rem; + + .archive__item-teaser { + margin-bottom: 2em; + } + + @include breakpoint($small) { + text-align: right; + + .archive__item-teaser { + @include span(5 of 12 rtl); + } + + .archive__item-body { + @include span(7 of 12 last rtl); + @include prefix(0.5 of 12); + @include suffix(1 of 12); + } + } + } + + &--center { + @include full(); + // margin-bottom: 2em; + font-size: 1.25rem; + + .archive__item-teaser { + margin-bottom: 2em; + } + + @include breakpoint($small) { + text-align: center; + + .archive__item-teaser { + margin: 0 auto; + width: span(5 of 12); + } + + .archive__item-body { + margin: 0 auto; + width: span(7 of 12); + } + } + } +} diff --git a/assets/_scss/_base.scss b/assets/_scss/_base.scss new file mode 100644 index 00000000..90e6982a --- /dev/null +++ b/assets/_scss/_base.scss @@ -0,0 +1,303 @@ +/* ========================================================================== + BASE ELEMENTS + ========================================================================== */ + +body { + margin: 0; + padding: 0; + color: $text-color; + font-family: $global-font-family; + line-height: 1.5; + + &.overflow--hidden { + /* when primary navigation is visible, the content in the background won't scroll */ + overflow: hidden; + } +} + +h1, h2, h3, h4, h5, h6 { + margin: 2em 0 0.5em; + line-height: 1.2; + font-family: $header-font-family; + font-weight: bold; +} + +h1 { + margin-top: 0; + font-size: $type-size-3; +} + +h2 { + font-size: $type-size-4; +} + +h3 { + font-size: $type-size-5; +} + +h4 { + font-size: $type-size-6; +} + +h5 { + font-size: $type-size-6; +} + +h6 { + font-size: $type-size-6; +} + +small, .small { + font-size: $type-size-6; +} + +p { + margin-bottom: 1.3em; +} + +u, +ins { + text-decoration: none; + border-bottom: 1px solid $text-color; + a { + color: inherit; + } +} + +del a { + color: inherit; +} + +/* reduce orphans and widows when printing */ + +p, pre, blockquote, ul, ol, dl, figure, table, fieldset { + orphans: 3; + widows: 3; +} + +/* abbreviations */ + +abbr[title], +abbr[data-original-title] { + text-decoration: none; + cursor: help; + border-bottom: 1px dotted $text-color; +} + +/* blockquotes */ + +blockquote { + margin: 2em 1em 2em 0; + padding-left: 1em; + padding-right: 1em; + font-style: italic; + border-left: 0.25em solid $primary-color; + + cite { + font-style: italic; + + &:before { + content: "\2014"; + padding-right: 5px; + } + } +} + +/* links */ + +a { + &:focus { + @extend %tab-focus; + } + + &:hover, + &:active { + outline: 0; + } +} + +/* code */ + +tt, code, kbd, samp, pre { + font-family: $monospace; +} + +pre { + overflow-x: auto; // add scrollbars to wide code blocks +} + +p > code, +a > code, +li > code, +figcaption > code, +td > code { + padding-top: 0.1rem; + padding-bottom: 0.1rem; + font-size: $type-size-6; + background: $code-background-color; + border: 1px solid $lighter-gray; + border-radius: $border-radius; + box-shadow: $box-shadow; + + &:before, &:after { + letter-spacing: -0.2em; + content: "\00a0"; // non-breaking space + } +} + +/* horizontal rule */ + +hr { + display: block; + margin: 1em 0; + border: 0; + border-top: 1px solid $border-color; +} + +/* lists */ + +ul li, +ol li { + margin-bottom: 0.5em; +} + +li ul, +li ol { + margin-top: 0.5em; +} + +/* + Media and embeds + ========================================================================== */ + +/* Figures and images */ + +figure { + display: flex; + justify-content: space-between; + align-items: flex-start; + flex-wrap: wrap; + margin: 2em 0; + + img, + iframe, + .fluid-width-video-wrapper { + margin-bottom: 1em; + } + + img { + width: 100%; + border-radius: $border-radius; + transition: $global-transition; + } + + > a { + display: block; + } + + &.half { + > a, + > img { + @include breakpoint($small) { + width: calc(50% - 0.5em); + } + } + + figcaption { + width: 100%; + } + } + + &.third { + > a, + > img { + @include breakpoint($small) { + width: calc(33.3333% - 0.5em); + } + } + + figcaption { + width: 100%; + } + } +} + +/* Figure captions */ + +figcaption { + margin-bottom: 0.5em; + color: mix(#fff, $text-color, 25%); + font-family: $caption-font-family; + font-size: $type-size-6; + + a { + color: inherit; + text-decoration: none; + border-bottom: 1px solid $light-gray; + transition: $global-transition; + + &:hover { + color: #000; + border-bottom-color: #000; + } + } +} + + +/* Fix IE9 SVG bug */ + +svg:not(:root) { + overflow: hidden; +} + + +/* + Navigation lists + ========================================================================== */ + +/** + * Removes margins, padding, and bullet points from navigation lists + * + * Example usage: + * + */ + +nav { + ul { + margin: 0; + padding: 0; + } + + li { + list-style: none; + } + + a { + text-decoration: none; + } + + /* override white-space for nested lists */ + ul li, + ol li { + margin-bottom: 0; + } + + li ul, + li ol { + margin-top: 0; + } +} + +/* + Global animation transition + ========================================================================== */ + +b, i, strong, em, blockquote, p, q, span, figure, img, h1, h2, header, input, a, tr, td, form button, input[type="submit"], .btn, .highlight, .archive__item-teaser { + transition: $global-transition; +} \ No newline at end of file diff --git a/assets/_scss/_buttons.scss b/assets/_scss/_buttons.scss new file mode 100644 index 00000000..73ce5bce --- /dev/null +++ b/assets/_scss/_buttons.scss @@ -0,0 +1,154 @@ +/* ========================================================================== + BUTTONS + ========================================================================== */ + +/* + Default button + ========================================================================== */ + +.btn { + /* default button */ + display: inline-block; + margin-bottom: 0.25em; + padding: 0.5em 1em; + color: #fff !important; + font-family: $sans-serif; + font-size: $type-size-6; + font-weight: bold; + text-align: center; + text-decoration: none; + background-color: $primary-color; + border: 0 !important; + border-radius: $border-radius; + cursor: pointer; + + &:hover { + background-color: mix(white, #000, 20%); + } + + .icon { + margin-right: 0.5em; + } + + .icon + .hidden { + margin-left: -0.5em; // override for hidden text + } + + /* fills width of parent container */ + + &--block { + display: block; + width: 100%; + + + .btn--block { + margin-top: 0.25em; + } + } + + /* for dark backgrounds */ + + &--inverse { + color: $gray !important; + border: 1px solid $light-gray !important; // override + background-color: #fff; + + &:hover { + color: #fff !important; + border-color: $gray; + } + } + + /* light outline */ + + &--light-outline { + border: 1px solid #fff !important; // override + background-color: transparent; + } + + /* information */ + + &--info { + background-color: $info-color; + + &:hover { + background-color: mix(#000, $info-color, 20%); + } + } + + /* warning */ + + &--warning { + background-color: $warning-color; + + &:hover { + background-color: mix(#000, $warning-color, 20%); + } + } + + /* success */ + + &--success { + background-color: $success-color; + + &:hover { + background-color: mix(#000, $success-color, 20%); + } + } + + /* danger */ + + &--danger { + background-color: $danger-color; + + &:hover { + background-color: mix(#000, $danger-color, 20%); + } + } + + /* disabled */ + + &--disabled { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: 0.65; + } + + /* social buttons */ + + $social: + (facebook, $facebook-color), + (twitter, $twitter-color), + (google-plus, $google-plus-color), + (linkedin, $linkedin-color); + + @each $socialnetwork, $color in $social { + &--#{$socialnetwork} { + background-color: $color; + + &:hover { + background-color: mix(#000, $color, 20%); + } + } + } + + /* extra large button */ + + &--x-large { + font-size: $type-size-4; + } + + /* large button */ + + &--large { + font-size: $type-size-5; + } + + /* small button */ + + &--small { + font-size: $type-size-7; + } +} \ No newline at end of file diff --git a/assets/_scss/_footer.scss b/assets/_scss/_footer.scss new file mode 100644 index 00000000..1b0f7efa --- /dev/null +++ b/assets/_scss/_footer.scss @@ -0,0 +1,79 @@ +/* ========================================================================== + FOOTER + ========================================================================== */ + +.page__footer { + @include container; + @include clearfix; + margin-top: 3em; + padding: 0 2em 3em; + color: mix(#fff, $gray, 25%); + animation: intro 0.3s both; + animation-delay: 0.45s; + + @include breakpoint($large) { + padding-left: 1em; + padding-right: 1em; + } + + @include breakpoint($x-large) { + max-width: $x-large; + } + + a { + color: inherit; + text-decoration: none; + + &:hover { + text-decoration: underline; + } + } +} + +.page__footer-copyright { + font-family: $global-font-family; + font-size: $type-size-7; + + @include breakpoint($large) { + @include prefix(2 of 12); + } + + @include breakpoint($x-large) { + @include prefix(2.5 of 12); + } +} + +.page__footer-follow { + @include breakpoint($large) { + @include prefix(2 of 12); + } + + @include breakpoint($x-large) { + @include prefix(2.5 of 12); + } + + ul { + margin: 0; + padding: 0; + list-style-type: none; + } + + li { + display: inline-block; + padding-top: 5px; + padding-bottom: 5px; + font-family: $sans-serif-narrow; + font-size: $type-size-6; + text-transform: uppercase; + } + + li + li:before { + content: ""; + padding-right: 5px; + } + + a { + padding-right: 10px; + font-weight: bold; + } +} \ No newline at end of file diff --git a/assets/_scss/_forms.scss b/assets/_scss/_forms.scss new file mode 100644 index 00000000..d84d1030 --- /dev/null +++ b/assets/_scss/_forms.scss @@ -0,0 +1,350 @@ +/* ========================================================================== + Forms + ========================================================================== */ + +btnform { + margin: 0 0 5px 0; + + fieldset { + margin-bottom: 5px; + padding: 0; + border-width: 0; + } + + legend { + display: block; + width: 100%; + margin-bottom: 5px * 2; + *margin-left: -7px; + padding: 0; + color: $text-color; + border: 0; + border-bottom: 1px solid mix(#fff, #000, 80%); + white-space: normal; + } + + p { + margin-bottom: 5px / 2; + } + + ul { + list-style-type: none; + margin: 0 0 5px 0; + padding: 0; + } + + br { + display: none; + } +} + +label, +input, +button, +select, +textarea { + vertical-align: baseline; + *vertical-align: middle; +} + +input, +button, +select, +textarea { + font-family: $sans-serif; + box-sizing: border-box; +} + +label { + display: block; + margin-bottom: 10px / 8; + font-weight: bold; + color: $text-color; + cursor: pointer; + + input, + textarea, + select { + display: block; + } +} + +input, +textarea, +select { + display: inline-block; + width: 100%; + padding: 4px; + margin-bottom: 5px / 4; + background-color: #fff; + border: 1px solid mix(#fff, #000, 80%); + color: $text-color; + + &:hover { + border-color: mix(#fff, $primary-color, 50%); + } +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +input[type="image"], +input[type="checkbox"], +input[type="radio"] { + width: auto; + height: auto; + padding: 0; + margin: 3px 0; + *margin-top: 0; + line-height: normal; + cursor: pointer; + border-radius: 0; + border: 0 \9; +} + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0; + *width: 13px; + *height: 13px; +} + +input[type="image"] { + border: 0; + box-shadow: none; +} + +input[type="file"] { + width: auto; + padding: initial; + line-height: initial; + border: initial; + background-color: transparent; + background-color: initial; + box-shadow: none; +} + +input[type="button"], +input[type="reset"], +input[type="submit"] { + width: auto; + height: auto; + cursor: pointer; + *overflow: visible; +} + +select, +input[type="file"] { + *margin-top: 4px; +} + +select { + width: auto; + background-color: #fff; +} + +select[multiple], +select[size] { + height: auto; +} + +textarea { + resize: vertical; + height: auto; + overflow: auto; + vertical-align: top; +} + +input[type="hidden"] { + display: none; +} + +.radio, +.checkbox { + padding-left: 18px; + font-weight: normal; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -18px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + + +/* + Disabled state + ========================================================================== */ + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + opacity: 0.5; + cursor: not-allowed; +} + + +/* + Focus & active state + ========================================================================== */ + +input:focus, +textarea:focus { + border-color: $primary-color; + outline: 0; + outline: thin dotted \9; +} + +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus, +select:focus { + box-shadow: none; +} + + +/* + Help text + ========================================================================== */ + +.help-block, +.help-inline { + color: $info-color; +} + +.help-block { + display: block; + margin-bottom: 1em; + line-height: 1em; +} + +.help-inline { + display: inline-block; + vertical-align: middle; + padding-left: 5px; +} + + +/* + .form-inline + ========================================================================== */ + +.form-inline input, +.form-inline textarea, +.form-inline select { + display: inline-block; + margin-bottom: 0; +} + +.form-inline label { + display: inline-block; +} + +.form-inline .radio, +.form-inline .checkbox, +.form-inline .radio { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-left: 0; + margin-right: 3px; } + + +/* + .form-search + ========================================================================== */ + +.form-search input, +.form-search textarea, +.form-search select { + display: inline-block; + margin-bottom: 0; +} + +.form-search .search-query { + padding-left: 14px; + padding-right: 14px; + margin-bottom: 0; + border-radius: 14px; +} + +.form-search label { + display: inline-block; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"] { + float: left; + margin-left: 0; + margin-right: 3px; +} + + +/* + Google search form + ========================================================================== */ + +#goog-fixurl { + ul { + list-style: none; + margin-left: 0; + padding-left: 0; + li { + list-style-type: none; + } + } +} + +#goog-wm-qt { + width: auto; + margin-right: 10px; + margin-bottom: 20px; + padding: 8px 20px; + display: inline-block; + font-size: $type-size-6; + background-color: #fff; + color: #000; + border-width: 2px !important; + border-style: solid !important; + border-color: lighten(#000,50); + border-radius: $border-radius; +} + +#goog-wm-sb { + @extend .btn; +} \ No newline at end of file diff --git a/assets/_scss/_masthead.scss b/assets/_scss/_masthead.scss new file mode 100644 index 00000000..5397dae6 --- /dev/null +++ b/assets/_scss/_masthead.scss @@ -0,0 +1,65 @@ +/* ========================================================================== + MASTHEAD + ========================================================================== */ + +.masthead { + position: relative; + border-bottom: 1px solid $border-color; + animation: intro 0.3s both; + animation-delay: 0.15s; + z-index: 20; + + &__inner-wrap { + @include container; + @include clearfix; + padding: 1em 2em 1em; + font-family: $sans-serif-narrow; + font-weight: 700; + text-transform: uppercase; + + @include breakpoint($large) { + padding-left: 1em; + padding-right: 1em; + } + + @include breakpoint($x-large) { + max-width: $x-large; + } + + nav { + z-index: 10; + } + + a { + text-decoration: none; + } + } +} + +.masthead__menu { + @include breakpoint($large) { + @include prefix(2 of 12); + } + + @include breakpoint($x-large) { + @include prefix(2.5 of 12); + } + + ul { + margin: 0; + padding: 0; + clear: both; + list-style-type: none; + } +} + +.masthead__menu-item { + display: block; + list-style-type: none; + font-size: $type-size-6; + white-space: nowrap; + + &--lg { + font-size: $type-size-5; + } +} \ No newline at end of file diff --git a/assets/_scss/_mixins.scss b/assets/_scss/_mixins.scss new file mode 100644 index 00000000..9302401f --- /dev/null +++ b/assets/_scss/_mixins.scss @@ -0,0 +1,50 @@ +/* ========================================================================== + MIXINS + ========================================================================== */ + +%tab-focus { + // Default + outline: thin dotted $warning-color; + // Webkit + outline: 5px auto $warning-color; + outline-offset: -2px; +} + +/* + em function + ========================================================================== */ + +@function em($target, $context: $doc-font-size) { + @return ($target / $context) * 1em; +} + + +/* + Bourbon clearfix + ========================================================================== */ + +// Provides an easy way to include a clearfix for containing floats. +// +// @link http://cssmojo.com/latest_new_clearfix_so_far/ +// +// @example scss - Usage +// .element { +// @include clearfix; +// } +// +// @example css - CSS Output +// .element::after { +// clear: both; +// content: ""; +// display: table; +// } + +@mixin clearfix { + clear: both; + + &::after { + clear: both; + content: ""; + display: table; + } +} \ No newline at end of file diff --git a/assets/_scss/_navigation.scss b/assets/_scss/_navigation.scss new file mode 100644 index 00000000..4807b873 --- /dev/null +++ b/assets/_scss/_navigation.scss @@ -0,0 +1,425 @@ +/* ========================================================================== + NAVIGATION + ========================================================================== */ + +/* + Breadcrumb navigation links + ========================================================================== */ + +.breadcrumbs { + @include container; + @include clearfix; + margin-top: 0; + margin-bottom: 0; + padding-left: 2em; + padding-right: 2em; + font-family: $sans-serif; + animation: intro 0.3s both; + animation-delay: 0.30s; + + @include breakpoint($large) { + padding-left: 1em; + padding-right: 1em; + } + + @include breakpoint($x-large) { + max-width: $x-large; + } + + ol { + padding: 0; + list-style: none; + font-size: $type-size-6; + + @include breakpoint($large) { + @include span(10 of 12 last); + } + + @include breakpoint($x-large) { + @include prefix(0.5 of 12); + } + } + + li { + display: inline; + } + + .current { + font-weight: bold; + } +} + + +/* + Post pagination navigation links + ========================================================================== */ + +.pagination { + @include full(); + @include clearfix(); + margin-top: 1em; + padding-top: 1em; + + ul { + margin: 0; + padding: 0; + list-style-type: none; + font-family: $sans-serif; + } + + li { + display: block; + float: left; + margin-left: -1px; + + a { + margin-bottom: 0.25em; + padding: 0.5em 1em; + font-family: $sans-serif; + font-size: 14px; + font-weight: bold; + line-height: 1.5; + text-align: center; + text-decoration: none; + color: mix(#fff, $gray, 25%); + border: 1px solid $light-gray; + border-radius: 0; + + &:hover { + color: $link-color-hover; + } + + &.current { + color: #fff; + background: $primary-color; + } + + &.disabled { + color: $light-gray; + pointer-events: none; + cursor: not-allowed; + } + } + + &:first-child { + margin-left: 0; + + a { + border-top-left-radius: $border-radius; + border-bottom-left-radius: $border-radius; + } + } + + &:last-child { + a { + border-top-right-radius: $border-radius; + border-bottom-right-radius: $border-radius; + } + } + } + + /* next/previous buttons */ + &--pager { + display: block; + padding: 1em 2em; + float: left; + width: 50%; + font-family: $sans-serif; + font-size: $type-size-5; + font-weight: bold; + text-align: center; + text-decoration: none; + color: mix(#fff, $gray, 25%); + border: 1px solid $light-gray; + border-radius: $border-radius; + + &:hover { + color: $link-color-hover; + } + + &:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + &:last-child { + margin-left: -1px; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + &.disabled { + color: $light-gray; + pointer-events: none; + cursor: not-allowed; + } + } +} + +.page__content + .pagination, +.page__meta + .pagination, +.page__share + .pagination, +.page__comments + .pagination { + margin-top: 2em; + padding-top: 2em; + border-top: 1px solid $border-color; +} + + +/* + Priority plus navigation + ========================================================================== */ + +.greedy-nav { + position: relative; + min-width: 250px; + background: $background-color; + + a { + display: block; + margin: 0 1rem; + padding: 0.5rem 0; + color: $masthead-link-color; + text-decoration: none; + + &:hover { + color: $masthead-link-color-hover; + } + } + + button { + position: absolute; + height: 100%; + right: 0; + padding: 0 0.5rem; + border: 0; + outline: none; + background-color: $primary-color; + color: #fff; + cursor: pointer; + } + + .visible-links { + display: table; + + li { + display: table-cell; + vertical-align: middle; + + &:first-child { + font-weight: bold; + + a { + margin-left: 0; + } + } + + &:last-child { + a { + margin-right: 0; + } + } + } + + a { + position: relative; + + &:before { + content: ""; + position: absolute; + bottom: 0; + height: 4px; + background: mix(#fff, $primary-color, 50%); + width: 0; + transition: $global-transition; + } + + &:hover { + &:before { + width: 100%; + } + } + } + } + + .hidden-links { + position: absolute; + top: 100%; + right: 0; + margin-top: 15px; + padding: 5px; + border: 1px solid $border-color; + border-radius: $border-radius; + background: #fff; + box-shadow: 0 0 10px rgba(#000, 0.25); + + a { + margin: 0; + padding: 10px 20px; + font-size: $type-size-5; + + &:hover { + color: $masthead-link-color-hover; + background: mix(#fff, $primary-color, 75%); + } + } + + &:before { + content: ""; + position: absolute; + top: -11px; + right: 10px; + width: 0; + border-style: solid; + border-width: 0 10px 10px; + border-color: $border-color transparent; + display: block; + z-index: 0; + } + + &:after { + content: ""; + position: absolute; + top: -10px; + right: 10px; + width: 0; + border-style: solid; + border-width: 0 10px 10px; + border-color: #fff transparent; + display: block; + z-index: 1; + } + + li { + display: block; + border-bottom: 1px solid $border-color; + + &:last-child { + border-bottom: none; + } + } + } +} + + +/* + Navigation list + ========================================================================== */ + +.nav__list { + font-size: 1.25rem; + + ul { + margin-bottom: 1em; + } + + a { + display: block; + padding: 0.125em 0; + color: inherit; + + &:hover { + text-decoration: underline; + } + } + + .active { + margin-left: -0.5em; + padding-left: 0.5em; + padding-right: 0.5em; + color: #fff; + font-weight: bold; + background: $primary-color; + border-radius: $border-radius; + + &:hover { + color: #fff; + } + } +} + +.nav__title { + margin: 0; + padding: 0.5rem 1rem; + font-family: $sans-serif-narrow; + font-size: $type-size-5; + font-weight: bold; +} + +.nav__sub-title { + display: block; + margin: 0.5rem 0; + padding: 0.5rem 0; + font-family: $sans-serif-narrow; + font-size: $type-size-6; + font-weight: bold; + text-transform: uppercase; + border-bottom: 1px solid $border-color; +} + + +/* + Table of contents navigation + ========================================================================== */ + +.toc { + font-family: $sans-serif-narrow; + color: $gray; + text-transform: uppercase; + letter-spacing: 1px; + background-color: #fff; + border: 1px solid $border-color; + border-radius: $border-radius; + box-shadow: $box-shadow; + + .nav__title { + color: #fff; + font-size: $type-size-6; + background: $primary-color; + border-top-left-radius: $border-radius; + border-top-right-radius: $border-radius; + } +} + +.toc__menu { + margin: 0; + padding: 0; + width: 100%; + list-style: none; + font-size: 0.8rem; + + a { + display: block; + padding: 0.5rem 1rem; + color: $gray; + font-size: $type-size-7; + font-weight: bold; + line-height: 1.5; + border-bottom: 1px solid $border-color; + + &:hover { + color: #000; + background: $lighter-gray; + } + } + + > li:last-child { + a { + border-bottom: none; + } + } + + li ul > li a { + padding-left: 2rem; + font-weight: normal; + } + + // hide sub sub links on small screens + li > ul li { + display: none; + + @include breakpoint($medium) { + display: block; + } + } +} \ No newline at end of file diff --git a/assets/_scss/_notices.scss b/assets/_scss/_notices.scss new file mode 100644 index 00000000..ec7dd256 --- /dev/null +++ b/assets/_scss/_notices.scss @@ -0,0 +1,99 @@ +/* ========================================================================== + NOTICE TEXT BLOCKS + ========================================================================== */ + +/** + * Default Kramdown usage (no indents!): + *
+ * #### Headline for the Notice + * Text for the notice + *
+ */ + +@mixin notice($notice-color) { + margin: 2em 0 !important; // override + padding: 1em; + font-family: $global-font-family; + font-size: $type-size-6 !important; + text-indent: initial; // override + background-color: mix(#fff, $notice-color, 90%); + border-radius: $border-radius; + box-shadow: 0 1px 1px rgba($notice-color, 0.25); + + h4 { + margin-top: 0 !important; // override + margin-bottom: 0.75em; + } + + @at-root .page__content #{&} h4 { + // using at-root to override .page-content h4 font size + margin-bottom: 0; + font-size: 1em; + } + + p { + &:last-child { + margin-bottom: 0 !important; // override + } + } + + h4 + p { + // remove space above paragraphs that appear directly after notice headline + margin-top: 0; + padding-top: 0; + } + + a { + color: $notice-color; + + &:hover { + color: mix(#000, $notice-color, 40%); + } + } + + code { + background-color: mix(#fff, $notice-color, 95%) + } + + ul { + &:last-child { + margin-bottom: 0; // override + } + } +} + +/* Default notice */ + +.notice { + @include notice($light-gray); +} + +/* Primary notice */ + +.notice--primary { + @include notice($primary-color); +} + +/* Info notice */ + +.notice--info { + @include notice($info-color); +} + +/* Warning notice */ + +.notice--warning { + @include notice($warning-color); +} + +/* Success notice */ + +.notice--success { + @include notice($success-color); +} + +/* Danger notice */ + +.notice--danger { + @include notice($danger-color); +} \ No newline at end of file diff --git a/assets/_scss/_page.scss b/assets/_scss/_page.scss new file mode 100644 index 00000000..93290252 --- /dev/null +++ b/assets/_scss/_page.scss @@ -0,0 +1,318 @@ +/* ========================================================================== + SINGLE PAGE/POST + ========================================================================== */ + +#main { + @include container; + @include clearfix; + margin-top: 2em; + padding-left: 2em; + padding-right: 2em; + animation: intro 0.3s both; + animation-delay: 0.35s; + + @include breakpoint($large) { + padding-left: 1em; + padding-right: 1em; + } + + @include breakpoint($x-large) { + max-width: $x-large; + } +} + +.page { + @include breakpoint($large) { + @include span(10 of 12 last); + @include suffix(2 of 12); + } + + @include breakpoint($x-large) { + @include prefix(0.5 of 12); + } + + .page__inner-wrap { + @include full(); + + .page__content, + .page__meta, + .page__share { + @include full(); + } + } +} + +.page__title { + margin-top: 0; + line-height: 1; + + & + .page__meta { + margin-top: -0.5em; + } +} + +.page__lead { + font-family: $global-font-family; + font-size: $type-size-4; +} + +.page__content { + p, li, dl { + font-size: 1em; + } + + /* paragraph indents */ + p { + margin: 0 0 $indent-var; + + // sibling indentation + @if $paragraph-indent == true { + & + p { + text-indent: $indent-var; + margin-top: -($indent-var); + } + } + } + + a { + text-decoration: none; + + &:hover { + text-decoration: underline; + + img { + box-shadow: 0 0 10px rgba(#000, 0.25); + } + } + } + + dt { + margin-top: 1em; + font-family: $sans-serif; + font-weight: bold; + } + + dd { + margin-left: 1em; + font-family: $sans-serif; + font-size: $type-size-6; + } + + .small { + font-size: $type-size-6; + } + + /* blockquote citations */ + blockquote + .small { + margin-top: -1.5em; + padding-left: 1.25rem; + } +} + +.page__hero { + position: relative; + margin-bottom: 2em; + @include clearfix; + animation: intro 0.3s both; + animation-delay: 0.25s; + + &--overlay { + position: relative; + margin-bottom: 2em; + padding: 3em 0; + @include clearfix; + text-align: center; + background-size: cover; + background-repeat: no-repeat; + background-position: center; + animation: intro 0.3s both; + animation-delay: 0.25s; + + .wrapper { + padding-left: 2em; + padding-right: 2em; + } + + .page__title, + .page__meta, + .page__lead, + .btn { + color: #fff; + text-shadow: 1px 1px 4px rgba(#000, 0.5); + } + + .page__title { + font-size: $type-size-2; + + @include breakpoint($small) { + font-size: $type-size-1; + } + } + } +} + +.page__hero-image { + width: 100%; + height: auto; + -ms-interpolation-mode: bicubic; +} + +.page__hero-caption { + position: absolute; + bottom: 0; + right: 0; + margin: 0 auto; + padding: 2px 5px; + color: #fff; + font-family: $caption-font-family; + font-size: $type-size-7; + background: #000; + text-align: right; + z-index: 5; + opacity: 0.5; + border-radius: $border-radius 0 $border-radius 0; + + @include breakpoint($large) { + padding: 5px 10px; + } + + a { + color: #fff; + text-decoration: none; + } +} + +/* + Social sharing + ========================================================================== */ + +.page__share { + margin-top: 2em; + padding-top: 1em; + border-top: 1px solid $border-color; + + @include breakpoint(max-width $small) { + .btn span { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + } + } +} + +.page__share-title { + margin-bottom: 10px; + font-size: $type-size-6; + text-transform: uppercase; +} + + +/* + Page meta + ========================================================================== */ + +.page__meta { + margin-top: 2em; + color: mix(#fff, $gray, 25%); + font-family: $sans-serif; + font-size: $type-size-6; + + p { + margin: 0; + } + + a { + color: inherit; + } +} + +.page__meta-title { + margin-bottom: 10px; + font-size: $type-size-6; + text-transform: uppercase; +} + + +/* + Page taxonomy + ========================================================================== */ + +.page__taxonomy { + .sep { + display: none; + } + + strong { + margin-right: 10px; + } +} + +.page__taxonomy-item { + display: inline-block; + margin-right: 5px; + margin-bottom: 8px; + padding: 5px 10px; + text-decoration: none; + border: 1px solid $light-gray; + border-radius: $border-radius; + + &:hover { + text-decoration: none; + color: $link-color-hover; + } +} + + +/* + Comments + ========================================================================== */ + +.page__comments { + @include full(); +} + +.page__comments-title { + margin-top: 2rem; + margin-bottom: 10px; + padding-top: 2rem; + font-size: $type-size-6; + border-top: 1px solid $border-color; + text-transform: uppercase; +} + + +/* + Related + ========================================================================== */ + +.page__related { + margin-top: 2em; + padding-top: 1em; + border-top: 1px solid $border-color; + @include clearfix(); + float: left; + + @include breakpoint($large) { + @include pre(2 of 12); + } + + @include breakpoint($x-large) { + @include pre(2.5 of 12); + } + + a { + color: inherit; + text-decoration: none; + } +} + +.page__related-title { + margin-bottom: 10px; + font-size: $type-size-6; + text-transform: uppercase; +} \ No newline at end of file diff --git a/_sass/print.scss b/assets/_scss/_print.scss similarity index 80% rename from _sass/print.scss rename to assets/_scss/_print.scss index ff66ddce..09bdb1d8 100644 --- a/_sass/print.scss +++ b/assets/_scss/_print.scss @@ -2,15 +2,17 @@ PRINT STYLES ========================================================================== */ -/* +/* Hide the following elements on print ========================================================================== */ @media print { - .top-navigation, - .social-share, - .related-articles, - .google-ads { + .masthead, + .toc, + .page__share, + .page__related, + .ads, + .page__footer { display: none; } } diff --git a/assets/_scss/_reset.scss b/assets/_scss/_reset.scss new file mode 100644 index 00000000..6fe5780c --- /dev/null +++ b/assets/_scss/_reset.scss @@ -0,0 +1,174 @@ +/* ========================================================================== + STYLE RESETS + ========================================================================== */ + +@include border-box-sizing; + +html { + /* apply a natural box layout model to all elements */ + box-sizing: border-box; + background-color: $background-color; + font-size: 16px; + + @include breakpoint($medium) { + font-size: 18px; + } + + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +/* Remove margin */ + +body { margin: 0; } + +/* Selected elements */ + +::selection { + color: #fff; + background: #000; +} + +/* Display HTML5 elements in IE6-9 and FF3 */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section { + display: block; +} + +/* Display block in IE6-9 and FF3 */ + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +/* Prevents modern browsers from displaying 'audio' without controls */ + +audio:not([controls]) { + display: none; +} + +a { + color: $link-color; +} + +/* Apply focus state */ + +a:focus { + @extend %tab-focus; +} + +/* Remove outline from links */ + +a:hover, +a:active { + outline: 0; +} + +/* Prevent sub and sup affecting line-height in all browsers */ + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* img border in anchor's and image quality */ + +img { + /* Responsive images (ensure images don't scale beyond their parents) */ + max-width: 100%; // part 1: Set a maximum relative to the parent + width: auto\9; // IE7-8 need help adjusting responsive images + height: auto; // part 2: Scale the height according to the width, otherwise you get stretching + + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +/* Prevent max-width from affecting Google Maps */ + +#map_canvas img, +.google-maps img { + max-width: none; +} + +/* Consistent form font size in all browsers, margin changes, misc */ + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; // inner spacing ie IE6/7 + line-height: normal; // FF3/4 have !important on line-height in UA stylesheet +} + +button::-moz-focus-inner, +input::-moz-focus-inner { // inner padding and border oddities in FF3/4 + padding: 0; + border: 0; +} + +button, +html input[type="button"], // avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; // corrects inability to style clickable `input` types in iOS + cursor: pointer; // improves usability and consistency of cursor style between image-type `input` and others +} + +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; // improves usability and consistency of cursor style between image-type `input` and others +} + +input[type="search"] { // Appearance in Safari/Chrome + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; // inner-padding issues in Chrome OSX, Safari 5 +} + +textarea { + overflow: auto; // remove vertical scrollbar in IE6-9 + vertical-align: top; // readability and alignment cross-browser +} \ No newline at end of file diff --git a/assets/_scss/_sidebar.scss b/assets/_scss/_sidebar.scss new file mode 100644 index 00000000..d5ff30b2 --- /dev/null +++ b/assets/_scss/_sidebar.scss @@ -0,0 +1,225 @@ +/* ========================================================================== + SIDEBAR + ========================================================================== */ + +/* + Default + ========================================================================== */ + +.sidebar { + @include clearfix(); + margin-bottom: 1em; + + @include breakpoint($large) { + @include span(2 of 12); + opacity: 0.75; + transition: opacity 0.2s ease-in-out; + + &:hover { + opacity: 1; + } + } + + @include breakpoint($x-large) { + padding-right: 0; + } + + h2, h3, h4, h5, h6 { + margin-bottom: 0; + font-family: $sans-serif-narrow; + } + + h3, h4 { + font-size: $type-size-5; + } + + p, li { + font-family: $sans-serif; + font-size: $type-size-6; + line-height: 1.5; + } + + img { + width: 100%; + } +} + +.sidebar__right { + margin-bottom: 1em; + + @include breakpoint($large) { + float: right; + width: $right-sidebar-width-narrow; + margin-left: span(0.5 of 12); + } + + @include breakpoint($x-large) { + width: $right-sidebar-width; + } +} + +/* + Author profile and links + ========================================================================== */ + +.author__avatar { + display: table-cell; + vertical-align: top; + width: 36px; + height: 36px; + + @include breakpoint($large) { + display: block; + width: auto; + height: auto; + } + + img { + max-width: 110px; + border-radius: 50%; + + @include breakpoint($large) { + padding: 5px; + border: 1px solid $border-color; + } + } +} + +.author__content { + display: table-cell; + vertical-align: top; + padding-left: 15px; + padding-right: 25px; + line-height: 1; + + @include breakpoint($large) { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; + } +} + +.author__name { + margin: 0; + + @include breakpoint($large) { + margin-top: 10px; + margin-bottom: 10px; + } +} +.sidebar .author__name { + font-family: $sans-serif; + font-size: $type-size-5; +} + +.author__bio { + margin: 0; + + @include breakpoint($large) { + margin-top: 10px; + margin-bottom: 20px; + } +} + +.author__urls-wrapper { + position: relative; + display: table-cell; + vertical-align: top; + font-family: $sans-serif; + z-index: 10; + position: relative; + cursor: pointer; + + li:last-child { + a { + margin-bottom: 0; + } + } + + @include breakpoint($large) { + display: block; + } + .btn { + @include breakpoint($large) { + display: none; + } + } +} + +.author__urls { + display: none; + position: absolute; + right: 0; + margin-top: 15px; + padding: 10px; + list-style-type: none; + border: 1px solid $border-color; + border-radius: $border-radius; + background: #fff; + z-index: -1; + box-shadow: 0 0 10px rgba(#000, 0.25); + + @include breakpoint($large) { + display: block; + position: relative; + margin: 0; + padding: 0; + border: 0; + background: transparent; + box-shadow: none; + } + + &:before { + display: block; + content: ""; + position: absolute; + top: -11px; + left: calc(50% - 10px); + width: 0; + border-style: solid; + border-width: 0 10px 10px; + border-color: $border-color transparent; + z-index: 0; + + @include breakpoint($large) { + display: none; + } + } + + &:after { + display: block; + content: ""; + position: absolute; + top: -10px; + left: calc(50% - 10px); + width: 0; + border-style: solid; + border-width: 0 10px 10px; + border-color: #fff transparent; + z-index: 1; + + @include breakpoint($large) { + display: none; + } + } + + li { + white-space: nowrap; + } + + a { + display: block; + margin-bottom: 5px; + padding-right: 5px; + padding-top: 2px; + padding-bottom: 2px; + color: inherit; + font-size: $type-size-5; + text-decoration: none; + + &:hover { + text-decoration: underline; + } + } +} \ No newline at end of file diff --git a/assets/_scss/_syntax.scss b/assets/_scss/_syntax.scss new file mode 100644 index 00000000..f40ed050 --- /dev/null +++ b/assets/_scss/_syntax.scss @@ -0,0 +1,123 @@ +/* ========================================================================== + Syntax highlighting + ========================================================================== */ + +div.highlighter-rouge, figure.highlight { + position: relative; + margin-bottom: 1em; + padding: 1em; + border: 1px solid $border-color; + border-radius: $border-radius; + background-color: $code-background-color; + box-shadow: $box-shadow; + + &:before { + position: absolute; + top: 0; + right: 0; + padding: 0.5em; + background-color: $lighter-gray; + content: "\f121"; + font-family: "fontawesome" !important; + font-size: $type-size-6; + line-height: 1; + text-transform: none; + speak: none; + } + + .highlight { + margin: 0; + font-family: $monospace; + font-size: $type-size-7; + line-height: 1.8; + } +} + +.highlight table td { padding: 5px; } +.highlight table pre { margin: 0; } + + +/* + Solarized Light + http://ethanschoonover.com/solarized + + SOLARIZED HEX ROLE + --------- -------- ------------------------------------------ + base01 #586e75 body text / default code / primary content + base1 #93a1a1 comments / secondary content + base3 #fdf6e3 background + orange #cb4b16 constants + red #dc322f regex, special keywords + blue #22b3eb reserved keywords + cyan #2aa198 strings, numbers + green #859900 operators, other keywords + ========================================================================== */ + +.highlight .c { color: #93a1a1 } /* Comment */ +.highlight .err { color: #586e75 } /* Error */ +.highlight .g { color: #586e75 } /* Generic */ +.highlight .k { color: #859900 } /* Keyword */ +.highlight .l { color: #586e75 } /* Literal */ +.highlight .n { color: #586e75 } /* Name */ +.highlight .o { color: #859900 } /* Operator */ +.highlight .x { color: #cb4b16 } /* Other */ +.highlight .p { color: #586e75 } /* Punctuation */ +.highlight .cm { color: #93a1a1 } /* Comment.Multiline */ +.highlight .cp { color: #859900 } /* Comment.Preproc */ +.highlight .c1 { color: #93a1a1 } /* Comment.Single */ +.highlight .cs { color: #859900 } /* Comment.Special */ +.highlight .gd { color: #2aa198 } /* Generic.Deleted */ +.highlight .ge { color: #586e75; font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #dc322f } /* Generic.Error */ +.highlight .gh { color: #cb4b16 } /* Generic.Heading */ +.highlight .gi { color: #859900 } /* Generic.Inserted */ +.highlight .go { color: #586e75 } /* Generic.Output */ +.highlight .gp { color: #586e75 } /* Generic.Prompt */ +.highlight .gs { color: #586e75; font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #cb4b16 } /* Generic.Subheading */ +.highlight .gt { color: #586e75 } /* Generic.Traceback */ +.highlight .kc { color: #cb4b16 } /* Keyword.Constant */ +.highlight .kd { color: #22b3eb } /* Keyword.Declaration */ +.highlight .kn { color: #859900 } /* Keyword.Namespace */ +.highlight .kp { color: #859900 } /* Keyword.Pseudo */ +.highlight .kr { color: #22b3eb } /* Keyword.Reserved */ +.highlight .kt { color: #dc322f } /* Keyword.Type */ +.highlight .ld { color: #586e75 } /* Literal.Date */ +.highlight .m { color: #2aa198 } /* Literal.Number */ +.highlight .s { color: #2aa198 } /* Literal.String */ +.highlight .na { color: #586e75 } /* Name.Attribute */ +.highlight .nb { color: #B58900 } /* Name.Builtin */ +.highlight .nc { color: #22b3eb } /* Name.Class */ +.highlight .no { color: #cb4b16 } /* Name.Constant */ +.highlight .nd { color: #22b3eb } /* Name.Decorator */ +.highlight .ni { color: #cb4b16 } /* Name.Entity */ +.highlight .ne { color: #cb4b16 } /* Name.Exception */ +.highlight .nf { color: #22b3eb } /* Name.Function */ +.highlight .nl { color: #586e75 } /* Name.Label */ +.highlight .nn { color: #586e75 } /* Name.Namespace */ +.highlight .nx { color: #586e75 } /* Name.Other */ +.highlight .py { color: #586e75 } /* Name.Property */ +.highlight .nt { color: #22b3eb } /* Name.Tag */ +.highlight .nv { color: #22b3eb } /* Name.Variable */ +.highlight .ow { color: #859900 } /* Operator.Word */ +.highlight .w { color: #586e75 } /* Text.Whitespace */ +.highlight .mf { color: #2aa198 } /* Literal.Number.Float */ +.highlight .mh { color: #2aa198 } /* Literal.Number.Hex */ +.highlight .mi { color: #2aa198 } /* Literal.Number.Integer */ +.highlight .mo { color: #2aa198 } /* Literal.Number.Oct */ +.highlight .sb { color: #93a1a1 } /* Literal.String.Backtick */ +.highlight .sc { color: #2aa198 } /* Literal.String.Char */ +.highlight .sd { color: #586e75 } /* Literal.String.Doc */ +.highlight .s2 { color: #2aa198 } /* Literal.String.Double */ +.highlight .se { color: #cb4b16 } /* Literal.String.Escape */ +.highlight .sh { color: #586e75 } /* Literal.String.Heredoc */ +.highlight .si { color: #2aa198 } /* Literal.String.Interpol */ +.highlight .sx { color: #2aa198 } /* Literal.String.Other */ +.highlight .sr { color: #dc322f } /* Literal.String.Regex */ +.highlight .s1 { color: #2aa198 } /* Literal.String.Single */ +.highlight .ss { color: #2aa198 } /* Literal.String.Symbol */ +.highlight .bp { color: #22b3eb } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #22b3eb } /* Name.Variable.Class */ +.highlight .vg { color: #22b3eb } /* Name.Variable.Global */ +.highlight .vi { color: #22b3eb } /* Name.Variable.Instance */ +.highlight .il { color: #2aa198 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/assets/_scss/_tables.scss b/assets/_scss/_tables.scss new file mode 100644 index 00000000..d31dc24a --- /dev/null +++ b/assets/_scss/_tables.scss @@ -0,0 +1,38 @@ +/* ========================================================================== + TABLES + ========================================================================== */ + +table { + margin-bottom: 1em; + width: 100%; + font-family: $global-font-family; + font-size: $type-size-6; + border-collapse: collapse; + border: 1px solid $light-gray; + + & + table { + margin-top: 1em; + } +} + +thead { + background-color: $lighter-gray; + border-bottom: 1px solid $light-gray; +} + +th { + padding: 0.5em; + font-weight: bold; + text-align: left; + border-right: 1px solid $light-gray; +} + +td { + padding: 0.5em; + border-bottom: 1px solid $light-gray; + border-right: 1px solid $light-gray; +} + +tr, td, th { + vertical-align: middle; +} \ No newline at end of file diff --git a/assets/_scss/_utilities.scss b/assets/_scss/_utilities.scss new file mode 100644 index 00000000..76d8eff6 --- /dev/null +++ b/assets/_scss/_utilities.scss @@ -0,0 +1,404 @@ +/* ========================================================================== + UTILITY CLASSES + ========================================================================== */ + +/* + Visibility + ========================================================================== */ + +/* http://www.456bereastreet.com/archive/200711/screen_readers_sometimes_ignore_displaynone/ */ + +.hidden { + display: none; + visibility: hidden; +} + +/* for preloading images */ + +.load { + display: none; +} + +.transparent { + opacity: 0; +} + +/* https://developer.yahoo.com/blogs/ydn/clip-hidden-content-better-accessibility-53456.html */ + +.visually-hidden, +.screen-reader-text, +.screen-reader-text span, +.screen-reader-shortcut { + position: absolute !important; + clip: rect(1px, 1px, 1px, 1px); + height: 1px !important; + width: 1px !important; + border: 0 !important; + overflow: hidden; +} + +body:hover .visually-hidden a, +body:hover .visually-hidden input, +body:hover .visually-hidden button { + display: none !important; +} + +/* screen readers */ + +.screen-reader-text:focus, +.screen-reader-shortcut:focus { + clip: auto !important; + height: auto !important; + width: auto !important; + display: block; + font-size: 1em; + font-weight: bold; + padding: 15px 23px 14px; + background: #fff; + z-index: 100000; + text-decoration: none; + box-shadow: 0 0 2px 2px rgba(0,0,0,.6); +} + + +/* + Skip links + ========================================================================== */ + +.skip-link { + position: fixed; + z-index: 20; + margin: 0; + font-family: $sans-serif; + white-space: nowrap; +} + +.skip-link li { + height: 0; + width: 0; + list-style: none; +} + + +/* + Type + ========================================================================== */ + +.text-left { + text-align: left; +} + +.text-center { + text-align: center; +} + +.text-right { + text-align: right; +} + +.text-justify { + text-align: justify; +} + +.text-nowrap { + white-space: nowrap; +} + + +/* + Alignment + ========================================================================== */ + +/* clearfix */ + +.cf { clear: both; } + +.wrapper { + @include container(); +} + + +/* + Images + ========================================================================== */ + +/* image align left */ + +.align-left { + display: block; + margin-left: auto; + margin-right: auto; + + @include breakpoint($small) { + float: left; + margin-right: 1em; + } +} + +/* image align right */ + +.align-right { + display: block; + margin-left: auto; + margin-right: auto; + + @include breakpoint($small) { + float: right; + margin-left: 1em; + } +} + +/* image align center */ + +.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +/* file page content container */ + +.full { + @include breakpoint($large){ + margin-right: -1 * span(2.5 of 12) !important; + } +} + +/* + Icons + ========================================================================== */ + +.icon { + display: inline-block; + fill: currentColor; + width: 1em; + height: 1.1em; + line-height: 1; + position: relative; + top: -0.1em; + vertical-align: middle; +} + +// social icons + +.social-icons { + .fa { + color: #000; + } + + .fa-behance, + .fa-behance-square { + color: $behance-color; + } + + .fa-dribbble { + color: $dribbble-color; + } + + .fa-facebook, + .fa-facebook-square { + color: $facebook-color; + } + + .fa-twitter, + .fa-twitter-square { + color: $twitter-color; + } + + .fa-flickr { + color: $flickr-color; + } + + .fa-foursquare { + color: $foursquare-color; + } + + .fa-github, + .fa-github-alt, + .fa-github-square { + color: $github-color; + } + + .fa-google-plus, + .fa-google-plus-square { + color: $google-plus-color; + } + + .fa-instagram { + color: $instagram-color; + } + + .fa-lastfm, + .fa-lastfm-square { + color: $lastfm-color; + } + + .fa-linkedin, + .fa-linkedin-square { + color: $linkedin-color; + } + + .fa-pinterest, + .fa-pinterest-p, + .fa-pinterest-square { + color: $pinterest-color; + } + + .fa-rss, + .fa-rss-square { + color: $rss-color; + } + + .fa-soundcloud { + color: $soundcloud-color; + } + + .fa-stack-exchange, + .fa-stack-overflow { + color: $stackoverflow-color; + } + + .fa-tumblr, + .fa-tumblr-square { + color: $tumblr-color; + } + + .fa-twitter, + .fa-twitter-square { + color: $twitter-color; + } + + .fa-vimeo, + .fa-vimeo-square { + color: $vimeo-color; + } + + .fa-vine { + color: $vine-color; + } + + .fa-youtube, + .fa-youtube-square, + .fa-youtube-play { + color: $youtube-color; + } + + .fa-xing, + .fa-xing-square { + color: $xing-color; + } +} + + +/* + Navicons + ========================================================================== */ + +.navicon { + position: relative; + width: $navicon-width; + height: $navicon-height; + background: #fff; + margin: auto; + transition: 0.3s; + + &:before, + &:after { + content: ""; + position: absolute; + left: 0; + width: $navicon-width; + height: $navicon-height; + background: #fff; + transition: 0.3s; + } + + &:before { + top: (-2 * $navicon-height); + } + + &:after { + bottom: (-2 * $navicon-height); + } +} + +.close .navicon { + // hide the middle line + background: transparent; + + // overlay the lines by setting both their top values to 0 + &:before, &:after{ + transform-origin: 50% 50%; + top: 0; + width: $navicon-width; + } + + // rotate the lines to form the x shape + &:before{ + transform: rotate3d(0,0,1,45deg); + } + &:after{ + transform: rotate3d(0,0,1,-45deg); + } +} + + +/* + Sticky, fixed to top content + ========================================================================== */ + +.sticky { + @include breakpoint($medium) { + @include clearfix(); + position: -webkit-sticky; + position: sticky; + top: 2em; + + > * { + display: block; + } + } +} + + +/* + Wells + ========================================================================== */ + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: $border-radius; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + + +/* + Footnotes + ========================================================================== */ + +.footnote { + color: mix(#fff, $gray, 25%); + text-decoration: none; +} + +.footnotes { + color: mix(#fff, $gray, 25%); + + ol, li, p { + margin-bottom: 0; + font-size: $type-size-6; + } +} + +a.reversefootnote { + color: $gray; + text-decoration: none; + + &:hover { + text-decoration: underline; + } +} \ No newline at end of file diff --git a/assets/_scss/_variables.scss b/assets/_scss/_variables.scss new file mode 100644 index 00000000..a9b09121 --- /dev/null +++ b/assets/_scss/_variables.scss @@ -0,0 +1,147 @@ +/* ========================================================================== + Variables + ========================================================================== */ + +/* + Typography + ========================================================================== */ + +$doc-font-size : 16; + +/* paragraph indention */ +$paragraph-indent : false; // true, false (default) +$indent-var : 1.3em; + +/* system typefaces */ +$serif : Georgia, Times, serif; +$sans-serif : -apple-system, ".SFNSText-Regular", "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; +$monospace : Monaco, Consolas, "Lucida Console", monospace; + +/* sans serif typefaces */ +$sans-serif-narrow : $sans-serif; +$helvetica : Helvetica, "Helvetica Neue", Arial, sans-serif; + +/* serif typefaces */ +$georgia : Georgia, serif; +$times : Times, serif; +$bodoni : "Bodoni MT", serif; +$calisto : "Calisto MT", serif; +$garamond : Garamond, serif; + +$global-font-family : $sans-serif; +$header-font-family : $sans-serif; +$caption-font-family : $serif; + +/* type scale */ +$type-size-1 : 2.441em; // ~39.056px +$type-size-2 : 1.953em; // ~31.248px +$type-size-3 : 1.563em; // ~25.008px +$type-size-4 : 1.25em; // ~20px +$type-size-5 : 1em; // ~16px +$type-size-6 : 0.75em; // ~12px +$type-size-7 : 0.6875em; // ~11px +$type-size-8 : 0.625em; // ~10px + + +/* + Colors + ========================================================================== */ + +$gray : #7a8288; +$dark-gray : mix(#000, $gray, 40%); +$darker-gray : mix(#000, $gray, 60%); +$light-gray : mix(#fff, $gray, 50%); +$lighter-gray : mix(#fff, $gray, 90%); + +$body-color : #fff; +$background-color : #fff; +$code-background-color : #fafafa; +$code-background-color-dark : $light-gray; +$text-color : $dark-gray; +$border-color : $lighter-gray; + +$primary-color : #7a8288; +$success-color : #62c462; +$warning-color : #f89406; +$danger-color : #ee5f5b; +$info-color : #52adc8; + +/* brands */ +$behance-color : #1769FF; +$dribbble-color : #ea4c89; +$facebook-color : #3b5998; +$flickr-color : #ff0084; +$foursquare-color : #0072b1; +$github-color : #171516; +$google-plus-color : #dd4b39; +$instagram-color : #517fa4; +$lastfm-color : #d51007; +$linkedin-color : #007bb6; +$pinterest-color : #cb2027; +$rss-color : #fa9b39; +$soundcloud-color : #ff3300; +$stackoverflow-color : #fe7a15; +$tumblr-color : #32506d; +$twitter-color : #55acee; +$vimeo-color : #1ab7ea; +$vine-color : #00bf8f; +$youtube-color : #bb0000; +$xing-color : #006567; + + +/* links */ +$link-color : $info-color; +$link-color-hover : mix(#000, $link-color, 25%); +$link-color-visited : mix(#fff, $link-color, 25%); +$masthead-link-color : $primary-color; +$masthead-link-color-hover : mix(#000, $primary-color, 25%); + + +/* + Breakpoints + ========================================================================== */ + +@include breakpoint-set("to ems", true); + +$small : 600px; +$medium : 768px; +$medium-wide : 900px; +$large : 1024px; +$x-large : 1280px; + + +/* + Grid + ========================================================================== */ + +$right-sidebar-width-narrow : 200px; +$right-sidebar-width : 300px; +$right-sidebar-width-wide : 400px; + +$susy: ( + columns: 12, + // column-width: 90px, + gutters: 1/4, + math: fluid, + output: float, + gutter-position: after, + container: $large, + global-box-sizing: border-box, + // debug: ( + // image: show, + // color: blue, + // output: overlay, + // toggle: top right, + // ), +); + + +/* + Other + ========================================================================== */ + +$border-radius : 4px; +$box-shadow : 0 1px 1px rgba(0, 0, 0, 0.125); +$navicon-width : 28px; +$navicon-height : 4px; +$global-transition : all 0.2s ease-in-out; diff --git a/assets/_scss/main.scss b/assets/_scss/main.scss new file mode 100644 index 00000000..c2a54a4e --- /dev/null +++ b/assets/_scss/main.scss @@ -0,0 +1,36 @@ +/* + * Minimal Mistakes Jekyll Theme + * + * - Michael Rose + * - mademistakes.com + * - https://twitter.com/mmistakes + * +*/ + +@import "vendor/breakpoint/breakpoint"; // media query mixins +@import "variables"; +@import "mixins"; +@import "vendor/susy/susy"; + +@import "reset"; +@import "base"; + +@import "utilities"; +@import "animations"; +@import "tables"; +@import "buttons"; +@import "notices"; +@import "masthead"; +@import "navigation"; +@import "footer"; +@import "syntax"; + +@import "forms"; + +@import "page"; +@import "archive"; +@import "sidebar"; + +@import "vendor/font-awesome/font-awesome"; +@import "vendor/magnific-popup/magnific-popup"; +@import "print"; \ No newline at end of file diff --git a/assets/_scss/vendor/breakpoint/_breakpoint.scss b/assets/_scss/vendor/breakpoint/_breakpoint.scss new file mode 100644 index 00000000..a0528eb8 --- /dev/null +++ b/assets/_scss/vendor/breakpoint/_breakpoint.scss @@ -0,0 +1,114 @@ +////////////////////////////// +// Default Variables +////////////////////////////// +$Breakpoint-Settings: ( + 'default media': all, + 'default feature': min-width, + 'default pair': width, + + 'force all media type': false, + 'to ems': false, + 'transform resolutions': true, + + 'no queries': false, + 'no query fallbacks': false, + + 'base font size': 16px, + + 'legacy syntax': false +); + +$breakpoint: () !default; + +////////////////////////////// +// Imports +////////////////////////////// +@import "settings"; +@import "context"; +@import "helpers"; +@import "parsers"; +@import "no-query"; + +@import "respond-to"; + +@import "legacy-settings"; + +////////////////////////////// +// Breakpoint Mixin +////////////////////////////// + +@mixin breakpoint($query, $no-query: false) { + @include legacy-settings-warning; + + // Reset contexts + @include private-breakpoint-reset-contexts(); + + $breakpoint: breakpoint($query, false); + + $query-string: map-get($breakpoint, 'query'); + $query-fallback: map-get($breakpoint, 'fallback'); + + $private-breakpoint-context-holder: map-get($breakpoint, 'context holder') !global; + $private-breakpoint-query-count: map-get($breakpoint, 'query count') !global; + + // Allow for an as-needed override or usage of no query fallback. + @if $no-query != false { + $query-fallback: $no-query; + } + + @if $query-fallback != false { + $context-setter: private-breakpoint-set-context('no-query', $query-fallback); + } + + // Print Out Query String + @if not breakpoint-get('no queries') { + @media #{$query-string} { + @content; + } + } + + @if breakpoint-get('no query fallbacks') != false or breakpoint-get('no queries') == true { + + $type: type-of(breakpoint-get('no query fallbacks')); + $print: false; + + @if ($type == 'bool') { + $print: true; + } + @else if ($type == 'string') { + @if $query-fallback == breakpoint-get('no query fallbacks') { + $print: true; + } + } + @else if ($type == 'list') { + @each $wrapper in breakpoint-get('no query fallbacks') { + @if $query-fallback == $wrapper { + $print: true; + } + } + } + + // Write Fallback + @if ($query-fallback != false) and ($print == true) { + $type-fallback: type-of($query-fallback); + + @if ($type-fallback != 'bool') { + #{$query-fallback} & { + @content; + } + } + @else { + @content; + } + } + } + + @include private-breakpoint-reset-contexts(); +} + + +@mixin mq($query, $no-query: false) { + @include breakpoint($query, $no-query) { + @content; + } +} diff --git a/assets/_scss/vendor/breakpoint/_context.scss b/assets/_scss/vendor/breakpoint/_context.scss new file mode 100644 index 00000000..57947f5c --- /dev/null +++ b/assets/_scss/vendor/breakpoint/_context.scss @@ -0,0 +1,95 @@ +////////////////////////////// +// Private Breakpoint Variables +////////////////////////////// +$private-breakpoint-context-holder: (); +$private-breakpoint-query-count: 0 !default; + +////////////////////////////// +// Breakpoint Has Context +// Returns whether or not you are inside a Breakpoint query +////////////////////////////// +@function breakpoint-has-context() { + @if length($private-breakpoint-query-count) { + @return true; + } + @else { + @return false; + } +} + +////////////////////////////// +// Breakpoint Get Context +// $feature: Input feature to get it's current MQ context. Returns false if no context +////////////////////////////// +@function breakpoint-get-context($feature) { + @if map-has-key($private-breakpoint-context-holder, $feature) { + $get: map-get($private-breakpoint-context-holder, $feature); + // Special handling of no-query from get side so /false/ prepends aren't returned + @if $feature == 'no-query' { + @if type-of($get) == 'list' and length($get) > 1 and nth($get, 1) == false { + $get: nth($get, length($get)); + } + } + @return $get; + } + @else { + @if breakpoint-has-context() and $feature == 'media' { + @return breakpoint-get('default media'); + } + @else { + @return false; + } + } +} + +////////////////////////////// +// Private function to set context +////////////////////////////// +@function private-breakpoint-set-context($feature, $value) { + @if $value == 'monochrome' { + $feature: 'monochrome'; + } + + $current: map-get($private-breakpoint-context-holder, $feature); + @if $current and length($current) == $private-breakpoint-query-count { + @warn "You have already queried against `#{$feature}`. Unexpected things may happen if you query against the same feature more than once in the same `and` query. Breakpoint is overwriting the current context with `#{$value}`"; + } + + @if not map-has-key($private-breakpoint-context-holder, $feature) { + $v-holder: (); + @for $i from 1 to $private-breakpoint-query-count { + @if $feature == 'media' { + $v-holder: append($v-holder, breakpoint-get('default media')); + } + @else { + $v-holder: append($v-holder, false); + } + } + $v-holder: append($v-holder, $value); + $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global; + } + @else { + $v-holder: map-get($private-breakpoint-context-holder, $feature); + $length: length($v-holder); + @for $i from $length to $private-breakpoint-query-count - 1 { + @if $feature == 'media' { + $v-holder: append($v-holder, breakpoint-get('default media')); + } + @else { + $v-holder: append($v-holder, false); + } + } + $v-holder: append($v-holder, $value); + $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global; + } + + @return true; +} + +////////////////////////////// +// Private function to reset context +////////////////////////////// +@mixin private-breakpoint-reset-contexts { + $private-breakpoint-context-holder: () !global; + $private-breakpoint-query-count: 0 !global; +} \ No newline at end of file diff --git a/assets/_scss/vendor/breakpoint/_helpers.scss b/assets/_scss/vendor/breakpoint/_helpers.scss new file mode 100644 index 00000000..97e522d1 --- /dev/null +++ b/assets/_scss/vendor/breakpoint/_helpers.scss @@ -0,0 +1,151 @@ +////////////////////////////// +// Converts the input value to Base EMs +////////////////////////////// +@function breakpoint-to-base-em($value) { + $value-unit: unit($value); + + // Will convert relative EMs into root EMs. + @if breakpoint-get('base font size') and type-of(breakpoint-get('base font size')) == 'number' and $value-unit == 'em' { + $base-unit: unit(breakpoint-get('base font size')); + + @if $base-unit == 'px' or $base-unit == '%' or $base-unit == 'em' or $base-unit == 'pt' { + @return base-conversion($value) / base-conversion(breakpoint-get('base font size')) * 1em; + } + @else { + @warn '#{breakpoint-get(\'base font size\')} is not set in valid units for font size!'; + @return false; + } + } + @else { + @return base-conversion($value); + } +} + +@function base-conversion($value) { + $unit: unit($value); + + @if $unit == 'px' { + @return $value / 16px * 1em; + } + @else if $unit == '%' { + @return $value / 100% * 1em; + } + @else if $unit == 'em' { + @return $value; + } + @else if $unit == 'pt' { + @return $value / 12pt * 1em; + } + @else { + @return $value; +// @warn 'Everything is terrible! What have you done?!'; + } +} + +////////////////////////////// +// Returns whether the feature can have a min/max pair +////////////////////////////// +$breakpoint-min-max-features: 'color', + 'color-index', + 'aspect-ratio', + 'device-aspect-ratio', + 'device-height', + 'device-width', + 'height', + 'monochrome', + 'resolution', + 'width'; + +@function breakpoint-min-max($feature) { + @each $item in $breakpoint-min-max-features { + @if $feature == $item { + @return true; + } + } + @return false; +} + +////////////////////////////// +// Returns whether the feature can have a string value +////////////////////////////// +$breakpoint-string-features: 'orientation', + 'scan', + 'color', + 'aspect-ratio', + 'device-aspect-ratio', + 'pointer', + 'luminosity'; + +@function breakpoint-string-value($feature) { + @each $item in $breakpoint-string-features { + @if breakpoint-min-max($item) { + @if $feature == 'min-#{$item}' or $feature == 'max-#{$item}' { + @return true; + } + } + @else if $feature == $item { + @return true; + } + } + @return false; +} + +////////////////////////////// +// Returns whether the feature is a media type +////////////////////////////// +$breakpoint-media-types: 'all', + 'braille', + 'embossed', + 'handheld', + 'print', + 'projection', + 'screen', + 'speech', + 'tty', + 'tv'; + +@function breakpoint-is-media($feature) { + @each $media in $breakpoint-media-types { + @if ($feature == $media) or ($feature == 'not #{$media}') or ($feature == 'only #{$media}') { + @return true; + } + } + + @return false; +} + +////////////////////////////// +// Returns whether the feature can stand alone +////////////////////////////// +$breakpoint-single-string-features: 'color', + 'color-index', + 'grid', + 'monochrome'; + +@function breakpoint-single-string($feature) { + @each $item in $breakpoint-single-string-features { + @if $feature == $item { + @return true; + } + } + @return false; +} + +////////////////////////////// +// Returns whether the feature +////////////////////////////// +@function breakpoint-is-resolution($feature) { + $resolutions: 'device-pixel-ratio', 'dpr'; + + @if breakpoint-get('transform resolutions') { + $resolutions: append($resolutions, 'resolution'); + } + + @each $reso in $resolutions { + @if index($feature, $reso) or index($feature, 'min-#{$reso}') or index($feature, 'max-#{$reso}') { + @return true; + } + } + + @return false; +} diff --git a/assets/_scss/vendor/breakpoint/_legacy-settings.scss b/assets/_scss/vendor/breakpoint/_legacy-settings.scss new file mode 100644 index 00000000..e060ebe3 --- /dev/null +++ b/assets/_scss/vendor/breakpoint/_legacy-settings.scss @@ -0,0 +1,50 @@ +@mixin legacy-settings-warning { + $legacyVars: ( + 'default-media': 'default media', + 'default-feature': 'default feature', + 'force-media-all': 'force all media type', + 'to-ems': 'to ems', + 'resolutions': 'transform resolutions', + 'no-queries': 'no queries', + 'no-query-fallbacks': 'no query fallbacks', + 'base-font-size': 'base font size', + 'legacy-syntax': 'legacy syntax' + ); + + @each $legacy, $new in $legacyVars { + @if global-variable-exists('breakpoint-' + $legacy) { + @warn "In order to avoid variable namspace collisions, we have updated the way to change settings for Breakpoint. Please change all instances of `$breakpoint-#{$legacy}: {{setting}}` to `@include breakpoint-set('#{$new}', {{setting}})`. Variable settings, as well as this warning will be deprecated in a future release." + } + }; + + ////////////////////////////// + // Hand correct each setting + ////////////////////////////// + @if global-variable-exists('breakpoint-default-media') and $breakpoint-default-media != breakpoint-get('default media') { + @include breakpoint-set('default media', $breakpoint-default-media); + } + @if global-variable-exists('breakpoint-default-feature') and $breakpoint-default-feature != breakpoint-get('default feature') { + @include breakpoint-set('default feature', $breakpoint-default-feature); + } + @if global-variable-exists('breakpoint-force-media-all') and $breakpoint-force-media-all != breakpoint-get('force all media type') { + @include breakpoint-set('force all media type', $breakpoint-force-media-all); + } + @if global-variable-exists('breakpoint-to-ems') and $breakpoint-to-ems != breakpoint-get('to ems') { + @include breakpoint-set('to ems', $breakpoint-to-ems); + } + @if global-variable-exists('breakpoint-resolutions') and $breakpoint-resolutions != breakpoint-get('transform resolutions') { + @include breakpoint-set('transform resolutions', $breakpoint-resolutions); + } + @if global-variable-exists('breakpoint-no-queries') and $breakpoint-no-queries != breakpoint-get('no queries') { + @include breakpoint-set('no queries', $breakpoint-no-queries); + } + @if global-variable-exists('breakpoint-no-query-fallbacks') and $breakpoint-no-query-fallbacks != breakpoint-get('no query fallbacks') { + @include breakpoint-set('no query fallbacks', $breakpoint-no-query-fallbacks); + } + @if global-variable-exists('breakpoint-base-font-size') and $breakpoint-base-font-size != breakpoint-get('base font size') { + @include breakpoint-set('base font size', $breakpoint-base-font-size); + } + @if global-variable-exists('breakpoint-legacy-syntax') and $breakpoint-legacy-syntax != breakpoint-get('legacy syntax') { + @include breakpoint-set('legacy syntax', $breakpoint-legacy-syntax); + } +} \ No newline at end of file diff --git a/assets/_scss/vendor/breakpoint/_no-query.scss b/assets/_scss/vendor/breakpoint/_no-query.scss new file mode 100644 index 00000000..0b5a81f6 --- /dev/null +++ b/assets/_scss/vendor/breakpoint/_no-query.scss @@ -0,0 +1,15 @@ +@function breakpoint-no-query($query) { + @if type-of($query) == 'list' { + $keyword: nth($query, 1); + + @if type-of($keyword) == 'string' and ($keyword == 'no-query' or $keyword == 'no query' or $keyword == 'fallback') { + @return nth($query, 2); + } + @else { + @return false; + } + } + @else { + @return false; + } +} diff --git a/assets/_scss/vendor/breakpoint/_parsers.scss b/assets/_scss/vendor/breakpoint/_parsers.scss new file mode 100644 index 00000000..f0b053fe --- /dev/null +++ b/assets/_scss/vendor/breakpoint/_parsers.scss @@ -0,0 +1,215 @@ +////////////////////////////// +// Import Parser Pieces +////////////////////////////// +@import "parsers/query"; +@import "parsers/single"; +@import "parsers/double"; +@import "parsers/triple"; +@import "parsers/resolution"; + +$Memo-Exists: function-exists(memo-get) and function-exists(memo-set); + +////////////////////////////// +// Breakpoint Function +////////////////////////////// +@function breakpoint($query, $contexts...) { + $run: true; + $return: (); + + // Grab the Memo Output if Memoization can be a thing + @if $Memo-Exists { + $return: memo-get(breakpoint, breakpoint $query $contexts); + + @if $return != null { + $run: false; + } + } + + @if not $Memo-Exists or $run { + // Internal Variables + $query-string: ''; + $query-fallback: false; + $return: (); + + // Reserve Global Private Breakpoint Context + $holder-context: $private-breakpoint-context-holder; + $holder-query-count: $private-breakpoint-query-count; + + // Reset Global Private Breakpoint Context + $private-breakpoint-context-holder: () !global; + $private-breakpoint-query-count: 0 !global; + + + // Test to see if it's a comma-separated list + $or-list: if(list-separator($query) == 'comma', true, false); + + + @if ($or-list == false and breakpoint-get('legacy syntax') == false) { + $query-string: breakpoint-parse($query); + } + @else { + $length: length($query); + + $last: nth($query, $length); + $query-fallback: breakpoint-no-query($last); + + @if ($query-fallback != false) { + $length: $length - 1; + } + + @if (breakpoint-get('legacy syntax') == true) { + $mq: (); + + @for $i from 1 through $length { + $mq: append($mq, nth($query, $i), comma); + } + + $query-string: breakpoint-parse($mq); + } + @else { + $query-string: ''; + @for $i from 1 through $length { + $query-string: $query-string + if($i == 1, '', ', ') + breakpoint-parse(nth($query, $i)); + } + } + } + + $return: ('query': $query-string, + 'fallback': $query-fallback, + 'context holder': $private-breakpoint-context-holder, + 'query count': $private-breakpoint-query-count + ); + @if length($contexts) > 0 and nth($contexts, 1) != false { + @if $query-fallback != false { + $context-setter: private-breakpoint-set-context('no-query', $query-fallback); + } + $context-map: (); + @each $context in $contexts { + $context-map: map-merge($context-map, ($context: breakpoint-get-context($context))); + } + $return: map-merge($return, (context: $context-map)); + } + + // Reset Global Private Breakpoint Context + $private-breakpoint-context-holder: () !global; + $private-breakpoint-query-count: 0 !global; + + @if $Memo-Exists { + $holder: memo-set(breakpoint, breakpoint $query $contexts, $return); + } + } + + @return $return; +} + +////////////////////////////// +// General Breakpoint Parser +////////////////////////////// +@function breakpoint-parse($query) { + // Increase number of 'and' queries + $private-breakpoint-query-count: $private-breakpoint-query-count + 1 !global; + + // Set up Media Type + $query-print: ''; + + $force-all: ((breakpoint-get('force all media type') == true) and (breakpoint-get('default media') == 'all')); + $empty-media: true; + @if ($force-all == true) or (breakpoint-get('default media') != 'all') { + // Force the print of the default media type if (force all is true and default media type is all) or (default media type is not all) + $query-print: breakpoint-get('default media'); + $empty-media: false; + } + + + $query-resolution: false; + + $query-holder: breakpoint-parse-query($query); + + + + // Loop over each parsed out query and write it to $query-print + $first: true; + + @each $feature in $query-holder { + $length: length($feature); + + // Parse a single feature + @if ($length == 1) { + // Feature is currently a list, grab the actual value + $feature: nth($feature, 1); + + // Media Type must by convention be the first item, so it's safe to flat override $query-print, which right now should only be the default media type + @if (breakpoint-is-media($feature)) { + @if ($force-all == true) or ($feature != 'all') { + // Force the print of the default media type if (force all is true and default media type is all) or (default media type is not all) + $query-print: $feature; + $empty-media: false; + + // Set Context + $context-setter: private-breakpoint-set-context(media, $query-print); + } + } + @else { + $parsed: breakpoint-parse-single($feature, $empty-media, $first); + $query-print: '#{$query-print} #{$parsed}'; + $first: false; + } + } + // Parse a double feature + @else if ($length == 2) { + @if (breakpoint-is-resolution($feature) != false) { + $query-resolution: $feature; + } + @else { + $parsed: null; + // If it's a string/number pair, + // we check to see if one is a single-string value, + // then we parse it as a normal double + $alpha: nth($feature, 1); + $beta: nth($feature, 2); + @if breakpoint-single-string($alpha) or breakpoint-single-string($beta) { + $parsed: breakpoint-parse-single($alpha, $empty-media, $first); + $query-print: '#{$query-print} #{$parsed}'; + $first: false; + $parsed: breakpoint-parse-single($beta, $empty-media, $first); + $query-print: '#{$query-print} #{$parsed}'; + } + @else { + $parsed: breakpoint-parse-double($feature, $empty-media, $first); + $query-print: '#{$query-print} #{$parsed}'; + $first: false; + } + } + } + // Parse a triple feature + @else if ($length == 3) { + $parsed: breakpoint-parse-triple($feature, $empty-media, $first); + $query-print: '#{$query-print} #{$parsed}'; + $first: false; + } + + } + + @if ($query-resolution != false) { + $query-print: breakpoint-build-resolution($query-print, $query-resolution, $empty-media, $first); + } + + // Loop through each feature that's been detected so far and append 'false' to the the value list to increment their counters + @each $f, $v in $private-breakpoint-context-holder { + $v-holder: $v; + $length: length($v-holder); + @if length($v-holder) < $private-breakpoint-query-count { + @for $i from $length to $private-breakpoint-query-count { + @if $f == 'media' { + $v-holder: append($v-holder, breakpoint-get('default media')); + } + @else { + $v-holder: append($v-holder, false); + } + } + } + $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($f: $v-holder)) !global; + } + + @return $query-print; +} diff --git a/assets/_scss/vendor/breakpoint/_respond-to.scss b/assets/_scss/vendor/breakpoint/_respond-to.scss new file mode 100644 index 00000000..e2462c5f --- /dev/null +++ b/assets/_scss/vendor/breakpoint/_respond-to.scss @@ -0,0 +1,82 @@ +//////////////////////// +// Default the Breakpoints variable +//////////////////////// +$breakpoints: () !default; +$BREAKPOINTS: () !default; + +//////////////////////// +// Respond-to API Mixin +//////////////////////// +@mixin respond-to($context, $no-query: false) { + @if length($breakpoints) > 0 and length($BREAKPOINTS) == 0 { + @warn "In order to avoid variable namespace collisions, we have updated the way to add breakpoints for respond-to. Please change all instances of `$breakpoints: add-breakpoint()` to `@include add-breakpoint()`. The `add-breakpoint()` function will be deprecated in a future release."; + $BREAKPOINTS: $breakpoints !global; + $breakpoints: () !global; + } + + @if type-of($BREAKPOINTS) != 'map' { + // Just in case someone writes gibberish to the $breakpoints variable. + @warn "Your breakpoints aren't a map! `respond-to` expects a map. Please check the value of $BREAKPOINTS variable."; + @content; + } + @else if map-has-key($BREAKPOINTS, $context) { + @include breakpoint(map-get($BREAKPOINTS, $context), $no-query) { + @content; + } + } + @else if not map-has-key($BREAKPOINTS, $context) { + @warn "`#{$context}` isn't a defined breakpoint! Please add it using `$breakpoints: add-breakpoint(`#{$context}`, $value);`"; + @content; + } + @else { + @warn "You haven't created any breakpoints yet! Make some already! `@include add-breakpoint($name, $bkpt)`"; + @content; + } +} + +////////////////////////////// +// Add Breakpoint to Breakpoints +// TODO: Remove function in next release +////////////////////////////// +@function add-breakpoint($name, $bkpt, $overwrite: false) { + $output: ($name: $bkpt); + + @if length($breakpoints) == 0 { + @return $output; + } + @else { + @if map-has-key($breakpoints, $name) and $overwrite != true { + @warn "You already have a breakpoint named `#{$name}`, please choose another breakpoint name, or pass in `$overwrite: true` to overwrite the previous breakpoint."; + @return $breakpoints; + } + @else if not map-has-key($breakpoints, $name) or $overwrite == true { + @return map-merge($breakpoints, $output); + } + } +} + +@mixin add-breakpoint($name, $bkpt, $overwrite: false) { + $output: ($name: $bkpt); + + @if length($BREAKPOINTS) == 0 { + $BREAKPOINTS: $output !global; + } + @else { + @if map-has-key($BREAKPOINTS, $name) and $overwrite != true { + @warn "You already have a breakpoint named `#{$name}`, please choose another breakpoint name, or pass in `$overwrite: true` to overwrite the previous breakpoint."; + $BREAKPOINTS: $BREAKPOINTS !global; + } + @else if not map-has-key($BREAKPOINTS, $name) or $overwrite == true { + $BREAKPOINTS: map-merge($BREAKPOINTS, $output) !global; + } + } +} + +@function get-breakpoint($name: false) { + @if $name == false { + @return $BREAKPOINTS; + } + @else { + @return map-get($BREAKPOINTS, $name); + } +} diff --git a/assets/_scss/vendor/breakpoint/_settings.scss b/assets/_scss/vendor/breakpoint/_settings.scss new file mode 100644 index 00000000..05ee6894 --- /dev/null +++ b/assets/_scss/vendor/breakpoint/_settings.scss @@ -0,0 +1,71 @@ +////////////////////////////// +// Has Setting +////////////////////////////// +@function breakpoint-has($setting) { + @if map-has-key($breakpoint, $setting) { + @return true; + } + @else { + @return false; + } +} + +////////////////////////////// +// Get Settings +////////////////////////////// +@function breakpoint-get($setting) { + @if breakpoint-has($setting) { + @return map-get($breakpoint, $setting); + } + @else { + @return map-get($Breakpoint-Settings, $setting); + } +} + +////////////////////////////// +// Set Settings +////////////////////////////// +@function breakpoint-set($setting, $value) { + @if (str-index($setting, '-') or str-index($setting, '_')) and str-index($setting, ' ') == null { + @warn "Words in Breakpoint settings should be separated by spaces, not dashes or underscores. Please replace dashes and underscores between words with spaces. Settings will not work as expected until changed."; + } + $breakpoint: map-merge($breakpoint, ($setting: $value)) !global; + @return true; +} + +@mixin breakpoint-change($setting, $value) { + $breakpoint-change: breakpoint-set($setting, $value); +} + +@mixin breakpoint-set($setting, $value) { + @include breakpoint-change($setting, $value); +} + +@mixin bkpt-change($setting, $value) { + @include breakpoint-change($setting, $value); +} +@mixin bkpt-set($setting, $value) { + @include breakpoint-change($setting, $value); +} + +////////////////////////////// +// Remove Setting +////////////////////////////// +@function breakpoint-reset($settings...) { + @if length($settings) == 1 { + $settings: nth($settings, 1); + } + + @each $setting in $settings { + $breakpoint: map-remove($breakpoint, $setting) !global; + } + @return true; +} + +@mixin breakpoint-reset($settings...) { + $breakpoint-reset: breakpoint-reset($settings); +} + +@mixin bkpt-reset($settings...) { + $breakpoint-reset: breakpoint-reset($settings); +} \ No newline at end of file diff --git a/assets/_scss/vendor/breakpoint/parsers/_double.scss b/assets/_scss/vendor/breakpoint/parsers/_double.scss new file mode 100644 index 00000000..24580c15 --- /dev/null +++ b/assets/_scss/vendor/breakpoint/parsers/_double.scss @@ -0,0 +1,33 @@ +////////////////////////////// +// Import Pieces +////////////////////////////// +@import "double/default-pair"; +@import "double/double-string"; +@import "double/default"; + +@function breakpoint-parse-double($feature, $empty-media, $first) { + $parsed: ''; + $leader: ''; + // If we're forcing + @if not ($empty-media) or not ($first) { + $leader: 'and '; + } + + $first: nth($feature, 1); + $second: nth($feature, 2); + + // If we've got two numbers, we know we need to use the default pair because there are no media queries that has a media feature that is a number + @if type-of($first) == 'number' and type-of($second) == 'number' { + $parsed: breakpoint-parse-default-pair($first, $second); + } + // If they are both strings, we send it through the string parser + @else if type-of($first) == 'string' and type-of($second) == 'string' { + $parsed: breakpoint-parse-double-string($first, $second); + } + // If it's a string/number pair, we parse it as a normal double + @else { + $parsed: breakpoint-parse-double-default($first, $second); + } + + @return $leader + $parsed; +} diff --git a/assets/_scss/vendor/breakpoint/parsers/_query.scss b/assets/_scss/vendor/breakpoint/parsers/_query.scss new file mode 100644 index 00000000..b138b393 --- /dev/null +++ b/assets/_scss/vendor/breakpoint/parsers/_query.scss @@ -0,0 +1,82 @@ +@function breakpoint-parse-query($query) { + // Parse features out of an individual query + $feature-holder: (); + $query-holder: (); + $length: length($query); + + @if $length == 2 { + // If we've got a string/number, number/string, check to see if it's a valid string/number pair or two singles + @if (type-of(nth($query, 1)) == 'string' and type-of(nth($query, 2)) == 'number') or (type-of(nth($query, 1)) == 'number' and type-of(nth($query, 2)) == 'string') { + + $number: ''; + $value: ''; + + @if type-of(nth($query, 1)) == 'string' { + $number: nth($query, 2); + $value: nth($query, 1); + } + @else { + $number: nth($query, 1); + $value: nth($query, 2); + } + + // If the string value can be a single value, check to see if the number passed in is a valid input for said single value. Fortunately, all current single-value options only accept unitless numbers, so this check is easy. + @if breakpoint-single-string($value) { + @if unitless($number) { + $feature-holder: append($value, $number, space); + $query-holder: append($query-holder, $feature-holder, comma); + @return $query-holder; + } + } + // If the string is a media type, split the query + @if breakpoint-is-media($value) { + $query-holder: append($query-holder, nth($query, 1)); + $query-holder: append($query-holder, nth($query, 2)); + @return $query-holder; + } + // If it's not a single feature, we're just going to assume it's a proper string/value pair, and roll with it. + @else { + $feature-holder: append($value, $number, space); + $query-holder: append($query-holder, $feature-holder, comma); + @return $query-holder; + } + + } + // If they're both numbers, we assume it's a double and roll with that + @else if (type-of(nth($query, 1)) == 'number' and type-of(nth($query, 2)) == 'number') { + $feature-holder: append(nth($query, 1), nth($query, 2), space); + $query-holder: append($query-holder, $feature-holder, comma); + @return $query-holder; + } + // If they're both strings and neither are singles, we roll with that. + @else if (type-of(nth($query, 1)) == 'string' and type-of(nth($query, 2)) == 'string') { + @if not breakpoint-single-string(nth($query, 1)) and not breakpoint-single-string(nth($query, 2)) { + $feature-holder: append(nth($query, 1), nth($query, 2), space); + $query-holder: append($query-holder, $feature-holder, comma); + @return $query-holder; + } + } + } + @else if $length == 3 { + // If we've got three items and none is a list, we check to see + @if type-of(nth($query, 1)) != 'list' and type-of(nth($query, 2)) != 'list' and type-of(nth($query, 3)) != 'list' { + // If none of the items are single string values and none of the values are media values, we're good. + @if (not breakpoint-single-string(nth($query, 1)) and not breakpoint-single-string(nth($query, 2)) and not breakpoint-single-string(nth($query, 3))) and ((not breakpoint-is-media(nth($query, 1)) and not breakpoint-is-media(nth($query, 2)) and not breakpoint-is-media(nth($query, 3)))) { + $feature-holder: append(nth($query, 1), nth($query, 2), space); + $feature-holder: append($feature-holder, nth($query, 3), space); + $query-holder: append($query-holder, $feature-holder, comma); + @return $query-holder; + } + // let's check to see if the first item is a media type + @else if breakpoint-is-media(nth($query, 1)) { + $query-holder: append($query-holder, nth($query, 1)); + $feature-holder: append(nth($query, 2), nth($query, 3), space); + $query-holder: append($query-holder, $feature-holder); + @return $query-holder; + } + } + } + + // If it's a single item, or if it's not a special case double or triple, we can simply return the query. + @return $query; +} diff --git a/assets/_scss/vendor/breakpoint/parsers/_resolution.scss b/assets/_scss/vendor/breakpoint/parsers/_resolution.scss new file mode 100644 index 00000000..19769adf --- /dev/null +++ b/assets/_scss/vendor/breakpoint/parsers/_resolution.scss @@ -0,0 +1,31 @@ +@import "resolution/resolution"; + +@function breakpoint-build-resolution($query-print, $query-resolution, $empty-media, $first) { + $leader: ''; + // If we're forcing + @if not ($empty-media) or not ($first) { + $leader: 'and '; + } + + @if breakpoint-get('transform resolutions') and $query-resolution { + $resolutions: breakpoint-make-resolutions($query-resolution); + $length: length($resolutions); + $query-holder: ''; + + @for $i from 1 through $length { + $query: '#{$query-print} #{$leader}#{nth($resolutions, $i)}'; + @if $i == 1 { + $query-holder: $query; + } + @else { + $query-holder: '#{$query-holder}, #{$query}'; + } + } + + @return $query-holder; + } + @else { + // Return with attached resolution + @return $query-print; + } +} diff --git a/assets/_scss/vendor/breakpoint/parsers/_single.scss b/assets/_scss/vendor/breakpoint/parsers/_single.scss new file mode 100644 index 00000000..d9fd764a --- /dev/null +++ b/assets/_scss/vendor/breakpoint/parsers/_single.scss @@ -0,0 +1,26 @@ +////////////////////////////// +// Import Pieces +////////////////////////////// +@import "single/default"; + +@function breakpoint-parse-single($feature, $empty-media, $first) { + $parsed: ''; + $leader: ''; + // If we're forcing + @if not ($empty-media) or not ($first) { + $leader: 'and '; + } + + // If it's a single feature that can stand alone, we let it + @if (breakpoint-single-string($feature)) { + $parsed: $feature; + // Set Context + $context-setter: private-breakpoint-set-context($feature, $feature); + } + // If it's not a stand alone feature, we pass it off to the default handler. + @else { + $parsed: breakpoint-parse-default($feature); + } + + @return $leader + '(' + $parsed + ')'; +} diff --git a/assets/_scss/vendor/breakpoint/parsers/_triple.scss b/assets/_scss/vendor/breakpoint/parsers/_triple.scss new file mode 100644 index 00000000..e2732067 --- /dev/null +++ b/assets/_scss/vendor/breakpoint/parsers/_triple.scss @@ -0,0 +1,36 @@ +////////////////////////////// +// Import Pieces +////////////////////////////// +@import "triple/default"; + +@function breakpoint-parse-triple($feature, $empty-media, $first) { + $parsed: ''; + $leader: ''; + + // If we're forcing + @if not ($empty-media) or not ($first) { + $leader: 'and '; + } + + // separate the string features from the value numbers + $string: null; + $numbers: null; + @each $val in $feature { + @if type-of($val) == string { + $string: $val; + } + @else { + @if type-of($numbers) == 'null' { + $numbers: $val; + } + @else { + $numbers: append($numbers, $val); + } + } + } + + $parsed: breakpoint-parse-triple-default($string, nth($numbers, 1), nth($numbers, 2)); + + @return $leader + $parsed; + +} diff --git a/assets/_scss/vendor/breakpoint/parsers/double/_default-pair.scss b/assets/_scss/vendor/breakpoint/parsers/double/_default-pair.scss new file mode 100644 index 00000000..f88432cc --- /dev/null +++ b/assets/_scss/vendor/breakpoint/parsers/double/_default-pair.scss @@ -0,0 +1,21 @@ +@function breakpoint-parse-default-pair($first, $second) { + $default: breakpoint-get('default pair'); + $min: ''; + $max: ''; + + // Sort into min and max + $min: min($first, $second); + $max: max($first, $second); + + // Set Context + $context-setter: private-breakpoint-set-context(min-#{$default}, $min); + $context-setter: private-breakpoint-set-context(max-#{$default}, $max); + + // Make them EMs if need be + @if (breakpoint-get('to ems') == true) { + $min: breakpoint-to-base-em($min); + $max: breakpoint-to-base-em($max); + } + + @return '(min-#{$default}: #{$min}) and (max-#{$default}: #{$max})'; +} diff --git a/assets/_scss/vendor/breakpoint/parsers/double/_default.scss b/assets/_scss/vendor/breakpoint/parsers/double/_default.scss new file mode 100644 index 00000000..73190ed5 --- /dev/null +++ b/assets/_scss/vendor/breakpoint/parsers/double/_default.scss @@ -0,0 +1,22 @@ +@function breakpoint-parse-double-default($first, $second) { + $feature: ''; + $value: ''; + + @if type-of($first) == 'string' { + $feature: $first; + $value: $second; + } + @else { + $feature: $second; + $value: $first; + } + + // Set Context + $context-setter: private-breakpoint-set-context($feature, $value); + + @if (breakpoint-get('to ems') == true) { + $value: breakpoint-to-base-em($value); + } + + @return '(#{$feature}: #{$value})' +} diff --git a/assets/_scss/vendor/breakpoint/parsers/double/_double-string.scss b/assets/_scss/vendor/breakpoint/parsers/double/_double-string.scss new file mode 100644 index 00000000..c6fd0cb0 --- /dev/null +++ b/assets/_scss/vendor/breakpoint/parsers/double/_double-string.scss @@ -0,0 +1,22 @@ +@function breakpoint-parse-double-string($first, $second) { + $feature: ''; + $value: ''; + + // Test to see which is the feature and which is the value + @if (breakpoint-string-value($first) == true) { + $feature: $first; + $value: $second; + } + @else if (breakpoint-string-value($second) == true) { + $feature: $second; + $value: $first; + } + @else { + @warn "Neither #{$first} nor #{$second} is a valid media query name."; + } + + // Set Context + $context-setter: private-breakpoint-set-context($feature, $value); + + @return '(#{$feature}: #{$value})'; +} \ No newline at end of file diff --git a/assets/_scss/vendor/breakpoint/parsers/resolution/_resolution.scss b/assets/_scss/vendor/breakpoint/parsers/resolution/_resolution.scss new file mode 100644 index 00000000..36804212 --- /dev/null +++ b/assets/_scss/vendor/breakpoint/parsers/resolution/_resolution.scss @@ -0,0 +1,60 @@ +@function breakpoint-make-resolutions($resolution) { + $length: length($resolution); + + $output: (); + + @if $length == 2 { + $feature: ''; + $value: ''; + + // Find which is number + @if type-of(nth($resolution, 1)) == 'number' { + $value: nth($resolution, 1); + } + @else { + $value: nth($resolution, 2); + } + + // Determine min/max/standard + @if index($resolution, 'min-resolution') { + $feature: 'min-'; + } + @else if index($resolution, 'max-resolution') { + $feature: 'max-'; + } + + $standard: '(#{$feature}resolution: #{$value})'; + + // If we're not dealing with dppx, + @if unit($value) != 'dppx' { + $base: 96dpi; + @if unit($value) == 'dpcm' { + $base: 243.84dpcm; + } + // Write out feature tests + $webkit: ''; + $moz: ''; + $webkit: '(-webkit-#{$feature}device-pixel-ratio: #{$value / $base})'; + $moz: '(#{$feature}-moz-device-pixel-ratio: #{$value / $base})'; + // Append to output + $output: append($output, $standard, space); + $output: append($output, $webkit, space); + $output: append($output, $moz, space); + } + @else { + $webkit: ''; + $moz: ''; + $webkit: '(-webkit-#{$feature}device-pixel-ratio: #{$value / 1dppx})'; + $moz: '(#{$feature}-moz-device-pixel-ratio: #{$value / 1dppx})'; + $fallback: '(#{$feature}resolution: #{$value / 1dppx * 96dpi})'; + // Append to output + $output: append($output, $standard, space); + $output: append($output, $webkit, space); + $output: append($output, $moz, space); + $output: append($output, $fallback, space); + } + + } + + @return $output; +} diff --git a/assets/_scss/vendor/breakpoint/parsers/single/_default.scss b/assets/_scss/vendor/breakpoint/parsers/single/_default.scss new file mode 100644 index 00000000..503ef427 --- /dev/null +++ b/assets/_scss/vendor/breakpoint/parsers/single/_default.scss @@ -0,0 +1,13 @@ +@function breakpoint-parse-default($feature) { + $default: breakpoint-get('default feature'); + + // Set Context + $context-setter: private-breakpoint-set-context($default, $feature); + + @if (breakpoint-get('to ems') == true) and (type-of($feature) == 'number') { + @return '#{$default}: #{breakpoint-to-base-em($feature)}'; + } + @else { + @return '#{$default}: #{$feature}'; + } +} diff --git a/assets/_scss/vendor/breakpoint/parsers/triple/_default.scss b/assets/_scss/vendor/breakpoint/parsers/triple/_default.scss new file mode 100644 index 00000000..7fa418dd --- /dev/null +++ b/assets/_scss/vendor/breakpoint/parsers/triple/_default.scss @@ -0,0 +1,18 @@ +@function breakpoint-parse-triple-default($feature, $first, $second) { + + // Sort into min and max + $min: min($first, $second); + $max: max($first, $second); + + // Set Context + $context-setter: private-breakpoint-set-context(min-#{$feature}, $min); + $context-setter: private-breakpoint-set-context(max-#{$feature}, $max); + + // Make them EMs if need be + @if (breakpoint-get('to ems') == true) { + $min: breakpoint-to-base-em($min); + $max: breakpoint-to-base-em($max); + } + + @return '(min-#{$feature}: #{$min}) and (max-#{$feature}: #{$max})'; +} diff --git a/_sass/vendor/font-awesome/_animated.scss b/assets/_scss/vendor/font-awesome/_animated.scss similarity index 100% rename from _sass/vendor/font-awesome/_animated.scss rename to assets/_scss/vendor/font-awesome/_animated.scss diff --git a/_sass/vendor/font-awesome/_bordered-pulled.scss b/assets/_scss/vendor/font-awesome/_bordered-pulled.scss similarity index 100% rename from _sass/vendor/font-awesome/_bordered-pulled.scss rename to assets/_scss/vendor/font-awesome/_bordered-pulled.scss diff --git a/_sass/vendor/font-awesome/_core.scss b/assets/_scss/vendor/font-awesome/_core.scss similarity index 100% rename from _sass/vendor/font-awesome/_core.scss rename to assets/_scss/vendor/font-awesome/_core.scss diff --git a/_sass/vendor/font-awesome/_fixed-width.scss b/assets/_scss/vendor/font-awesome/_fixed-width.scss similarity index 100% rename from _sass/vendor/font-awesome/_fixed-width.scss rename to assets/_scss/vendor/font-awesome/_fixed-width.scss diff --git a/_sass/vendor/font-awesome/font-awesome.scss b/assets/_scss/vendor/font-awesome/_font-awesome.scss similarity index 100% rename from _sass/vendor/font-awesome/font-awesome.scss rename to assets/_scss/vendor/font-awesome/_font-awesome.scss diff --git a/_sass/vendor/font-awesome/_icons.scss b/assets/_scss/vendor/font-awesome/_icons.scss similarity index 100% rename from _sass/vendor/font-awesome/_icons.scss rename to assets/_scss/vendor/font-awesome/_icons.scss diff --git a/_sass/vendor/font-awesome/_larger.scss b/assets/_scss/vendor/font-awesome/_larger.scss similarity index 100% rename from _sass/vendor/font-awesome/_larger.scss rename to assets/_scss/vendor/font-awesome/_larger.scss diff --git a/_sass/vendor/font-awesome/_list.scss b/assets/_scss/vendor/font-awesome/_list.scss similarity index 100% rename from _sass/vendor/font-awesome/_list.scss rename to assets/_scss/vendor/font-awesome/_list.scss diff --git a/_sass/vendor/font-awesome/_mixins.scss b/assets/_scss/vendor/font-awesome/_mixins.scss similarity index 100% rename from _sass/vendor/font-awesome/_mixins.scss rename to assets/_scss/vendor/font-awesome/_mixins.scss diff --git a/_sass/vendor/font-awesome/_path.scss b/assets/_scss/vendor/font-awesome/_path.scss similarity index 100% rename from _sass/vendor/font-awesome/_path.scss rename to assets/_scss/vendor/font-awesome/_path.scss diff --git a/_sass/vendor/font-awesome/_rotated-flipped.scss b/assets/_scss/vendor/font-awesome/_rotated-flipped.scss similarity index 100% rename from _sass/vendor/font-awesome/_rotated-flipped.scss rename to assets/_scss/vendor/font-awesome/_rotated-flipped.scss diff --git a/_sass/vendor/font-awesome/_stacked.scss b/assets/_scss/vendor/font-awesome/_stacked.scss similarity index 100% rename from _sass/vendor/font-awesome/_stacked.scss rename to assets/_scss/vendor/font-awesome/_stacked.scss diff --git a/_sass/vendor/font-awesome/_variables.scss b/assets/_scss/vendor/font-awesome/_variables.scss similarity index 100% rename from _sass/vendor/font-awesome/_variables.scss rename to assets/_scss/vendor/font-awesome/_variables.scss diff --git a/_sass/vendor/magnific-popup/magnific-popup.scss b/assets/_scss/vendor/magnific-popup/_magnific-popup.scss similarity index 99% rename from _sass/vendor/magnific-popup/magnific-popup.scss rename to assets/_scss/vendor/magnific-popup/_magnific-popup.scss index 64b8acdd..27b27bcc 100644 --- a/_sass/vendor/magnific-popup/magnific-popup.scss +++ b/assets/_scss/vendor/magnific-popup/_magnific-popup.scss @@ -292,7 +292,7 @@ button { font-style: normal; font-size: 28px; - font-family: Arial, Baskerville, monospace; + font-family: $serif; &:hover, &:focus { @@ -500,6 +500,10 @@ button { figure { margin: 0; } + figcaption { + margin-top: 0; + margin-bottom: 0; // reset for bottom spacing + } } .mfp-bottom-bar { margin-top: -$mfp-image-padding-bottom + 4; diff --git a/_sass/vendor/magnific-popup/_settings.scss b/assets/_scss/vendor/magnific-popup/_settings.scss similarity index 72% rename from _sass/vendor/magnific-popup/_settings.scss rename to assets/_scss/vendor/magnific-popup/_settings.scss index a2fb4194..caaca026 100644 --- a/_sass/vendor/magnific-popup/_settings.scss +++ b/assets/_scss/vendor/magnific-popup/_settings.scss @@ -3,7 +3,7 @@ //////////////////////// // overlay -$mfp-overlay-color: $black; // Color of overlay screen +$mfp-overlay-color: #000; // Color of overlay screen $mfp-overlay-opacity: 0.8; // Opacity of overlay screen $mfp-shadow: 0 0 8px rgba(0, 0, 0, 0.6); // Shadow on image or iframe @@ -16,11 +16,11 @@ $mfp-z-index-base: 1040; // Base z-inde // controls $mfp-include-arrows: true; // Include styles for nav arrows $mfp-controls-opacity: 1; // Opacity of controls -$mfp-controls-color: $white; // Color of controls -$mfp-controls-border-color: $white; // Border color of controls -$mfp-inner-close-icon-color: $white; // Color of close button when inside -$mfp-controls-text-color: #CCC; // Color of preloader and "1 of X" indicator -$mfp-controls-text-color-hover: $white; // Hover color of preloader and "1 of X" indicator +$mfp-controls-color: #fff; // Color of controls +$mfp-controls-border-color: #fff; // Border color of controls +$mfp-inner-close-icon-color: #fff; // Color of close button when inside +$mfp-controls-text-color: #ccc; // Color of preloader and "1 of X" indicator +$mfp-controls-text-color-hover: #fff; // Hover color of preloader and "1 of X" indicator $mfp-IE7support: true; // Very basic IE7 support // Iframe-type options @@ -38,9 +38,9 @@ $mfp-image-padding-bottom: 40px; // Image paddi $mfp-include-mobile-layout-for-image: true; // Removes paddings from top and bottom // Image caption options -$mfp-caption-title-color: #F3F3F3; // Caption title color -$mfp-caption-subtitle-color: #BDBDBD; // Caption subtitle color -.mfp-counter { font-family: $alt-font; } // Caption font family +$mfp-caption-title-color: #f3f3f3; // Caption title color +$mfp-caption-subtitle-color: #bdbdbd; // Caption subtitle color +.mfp-counter { font-family: $serif; } // Caption font family // A11y $mfp-use-visuallyhidden: false; diff --git a/assets/_scss/vendor/susy/_su.scss b/assets/_scss/vendor/susy/_su.scss new file mode 100644 index 00000000..83386adb --- /dev/null +++ b/assets/_scss/vendor/susy/_su.scss @@ -0,0 +1,4 @@ +// Su +// == + +@import 'susy/su'; diff --git a/assets/_scss/vendor/susy/_susy.scss b/assets/_scss/vendor/susy/_susy.scss new file mode 100644 index 00000000..224e98ad --- /dev/null +++ b/assets/_scss/vendor/susy/_susy.scss @@ -0,0 +1,4 @@ +// Susy +// ==== + +@import 'susy/language/susy'; diff --git a/assets/_scss/vendor/susy/_susyone.scss b/assets/_scss/vendor/susy/_susyone.scss new file mode 100644 index 00000000..5b934c68 --- /dev/null +++ b/assets/_scss/vendor/susy/_susyone.scss @@ -0,0 +1,4 @@ +// Susy +// ==== + +@import 'susy/language/susyone'; diff --git a/assets/_scss/vendor/susy/susy/_su.scss b/assets/_scss/vendor/susy/susy/_su.scss new file mode 100644 index 00000000..a1454157 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/_su.scss @@ -0,0 +1,7 @@ +// Su +// == + +@import "su/utilities"; +@import "su/settings"; +@import "su/validation"; +@import "su/grid"; diff --git a/assets/_scss/vendor/susy/susy/language/_susy.scss b/assets/_scss/vendor/susy/susy/language/_susy.scss new file mode 100644 index 00000000..0ee9cae2 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/_susy.scss @@ -0,0 +1,24 @@ +// Susy Next Syntax +// ================ + +$susy-version: 2.1; + +@import "../su"; +@import "../output/float"; + +@import "susy/settings"; +@import "susy/validation"; +@import "susy/grids"; +@import "susy/box-sizing"; +@import "susy/context"; +@import "susy/background"; +@import "susy/container"; +@import "susy/span"; +@import "susy/gutters"; +@import "susy/isolate"; +@import "susy/gallery"; +@import "susy/rows"; +@import "susy/margins"; +@import "susy/padding"; +@import "susy/bleed"; +@import "susy/breakpoint-plugin"; diff --git a/assets/_scss/vendor/susy/susy/language/_susyone.scss b/assets/_scss/vendor/susy/susy/language/_susyone.scss new file mode 100644 index 00000000..a783d3a8 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/_susyone.scss @@ -0,0 +1,13 @@ +// --------------------------------------------------------------------------- +// Partials + +$susy-version: 1.5; + +@import "susyone/settings"; +@import "susyone/functions"; +@import "susyone/grid"; +@import "susyone/isolation"; +@import "susyone/padding"; +@import "susyone/margin"; +@import "susyone/media"; +@import "susyone/background"; diff --git a/assets/_scss/vendor/susy/susy/language/susy/_background.scss b/assets/_scss/vendor/susy/susy/language/susy/_background.scss new file mode 100644 index 00000000..d39dc721 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susy/_background.scss @@ -0,0 +1,385 @@ +// Background Grid Syntax +// ====================== + +$susy-overlay-grid-head-exists: false; + + +// Show Grid/s +// ----------- +// Show grid on any element using either background or overlay. +// - [$grid] : +@mixin show-grid( + $grid: $susy +) { + $inspect: $grid; + $_output: debug-get(output, $grid); + + @include susy-inspect(show-grid, $inspect); + @if $_output == overlay and susy-get(debug image, $grid) != hide { + @include overlay-grid($grid); + } @else { + @include background-grid($grid); + } +} + +@mixin show-grids( + $grid: $susy +) { + @include show-grid($grid); +} + +// Background Grid +// --------------- +// Show a grid background on any element. +// - [$grid] : +@mixin background-grid( + $grid: $susy +) { + $inspect : $grid; + $_output : get-background($grid); + + @if length($_output) > 0 { + $_flow: susy-get(flow, $grid); + + $_image: (); + @each $name, $layer in map-get($_output, image) { + $_direction: if($name == baseline, to bottom, to to($_flow)); + $_image: append($_image, linear-gradient($_direction, $layer), comma); + } + $_output: map-merge($_output, (image: $_image)); + + @include background-grid-output($_output...); + @include susy-inspect(background-grid, $inspect); + } +} + + +// Overlay Grid +// ------------ +// Generate an icon to trigger grid-overlays on any given elements. +// $grids... : [] [, ]* +@mixin overlay-grid ( + $grid: $susy +) { + @if not($susy-overlay-grid-head-exists) { + @at-root head { @include overlay-head($grid); } + @at-root head:before { @include overlay-trigger; } + @at-root head:hover { @include overlay-trigger-hover; } + $susy-overlay-grid-head-exists: true !global; + } + + head:hover ~ &, + head:hover ~ body & { + position: relative; + &:before { + @include grid-overlay-base; + @include background-grid($grid); + } + } +} + + +// [Private] Overlay Trigger +// ------------------------- +@mixin overlay-trigger { + content: "|||"; + display: block; + padding: 5px 10px; + font: { + family: sans-serif; + size: 16px; + weight: bold; + } +} + + +// [Private] Overlay Trigger Hover +// ------------------------------- +@mixin overlay-trigger-hover { + background: rgba(white, .5); + color: red; +} + + +// [Private] Overlay Head +// ---------------------- +// styles to create grid overlay toggle +@mixin overlay-head ( + $grid: $susy +) { + $_toggle: debug-get(toggle, $grid); + $_horz: null; + $_vert: null; + + @each $side in $_toggle { + $_horz: if($side == left or $side == right, $side, $_horz); + $_vert: if($side == top or $side == bottom, $side, $_vert); + } + + display: block; + position: fixed; + #{$_horz}: 10px; + #{$_vert}: 10px; + z-index: 999; + color: #333; + background: rgba(white, .25); +} + + +// [Private] Grid Overlay Base +// --------------------------- +// Base styles for generating a grid overlay +@mixin grid-overlay-base() { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + content: " "; + z-index: 998; +} + + +// Get Symmetrical Background +// -------------------------- +// - $grid: +@function get-background-sym( + $grid +) { + $grid : parse-grid($grid); + $_gutters : susy-get(gutters, $grid); + $_column-width : susy-get(column-width, $grid); + $_math : susy-get(math, $grid); + + $_color : debug-get(color); + $_trans : transparent; + $_light : lighten($_color, 15%); + + $_end : 1 + $_gutters; + $_after : percentage(1/$_end); + $_stops : (); + $_size : span(1 $grid wide); + + @if is-inside($grid) { + $_stops: $_color, $_light; + } @else if is-split($grid) { + $_split: $_gutters/2; + $_before: percentage($_split/$_end); + $_after: percentage((1 + $_split)/$_end); + $_stops: $_trans $_before, $_color $_before, $_light $_after, $_trans $_after; + } @else { + $_stops: $_color, $_light $_after, $_trans $_after; + } + + @if $_math == static { + $_size: valid-column-math($_math, $_column-width) * $_end; + } + + $_output: ( + image: (columns: $_stops), + size: $_size, + ); + + @return $_output; +} + + +// Get Asymmetrical Inside +// ----------------------- +// - $grid: +@function get-asym-inside( + $grid +) { + $grid : parse-grid($grid); + $_columns : susy-get(columns, $grid); + + $_color : debug-get(color); + $_light : lighten($_color, 15%); + $_stops : (); + + @for $location from 1 through susy-count($_columns) { + $this-stop: (); + + @if $location == 1 { + $this-stop: append($this-stop, $_color, comma); + } @else { + $start: parse-span(1 at $location $grid); + $start: get-isolation($start); + $this-stop: append($this-stop, $_color $start, comma); + } + + @if $location == susy-count($_columns) { + $this-stop: append($this-stop, $_light, comma); + } @else { + $_end: parse-span(1 at ($location + 1) $grid); + $_end: get-isolation($_end); + $this-stop: append($this-stop, $_light $_end, comma); + } + + $_stops: join($_stops, $this-stop, comma); + } + + @return $_stops; +} + + +// Get Asymmetrical Split +// ---------------------- +// - $grid: +@function get-asym-split( + $grid +) { + $grid : parse-grid($grid); + $_columns : susy-get(columns, $grid); + + $_color : debug-get(color); + $_light : lighten($_color, 15%); + $_stops : (); + + @for $location from 1 through susy-count($_columns) { + $this-stop: (); + + $start: parse-span(1 at $location $grid); + $start: get-isolation($start); + $this-stop: append($this-stop, transparent $start, comma); + $this-stop: append($this-stop, $_color $start, comma); + + $_end: $start + span(1 at $location $grid); + $this-stop: append($this-stop, $_light $_end, comma); + $this-stop: append($this-stop, transparent $_end, comma); + + $_stops: join($_stops, $this-stop, comma); + } + + @return $_stops; +} + + +// Get Asymmetrical Outside +// ------------------------ +// - $grid: +@function get-asym-outside( + $grid +) { + $grid : parse-grid($grid); + $_columns : susy-get(columns, $grid); + + $_color : debug-get(color); + $_light : lighten($_color, 15%); + $_trans : transparent; + $_stops : (); + + @for $location from 1 through susy-count($_columns) { + $this-stop: (); + + @if $location == 1 { + $this-stop: append($this-stop, $_color, comma); + } @else { + $start: parse-span(1 at $location $grid); + $start: get-isolation($start); + $this-stop: append($this-stop, $_color $start, comma); + } + + @if $location == susy-count($_columns) { + $this-stop: append($this-stop, $_light, comma); + } @else { + $gutter: get-span-width(first $location $grid); + + $_end: parse-span(1 at ($location + 1) $grid); + $_end: get-isolation($_end); + + $gutter: $_light $gutter, $_trans $gutter, $_trans $_end; + $this-stop: join($this-stop, $gutter, comma); + } + + $_stops: join($_stops, $this-stop, comma); + } + + @return $_stops; +} + + +// Get Asymmetrical Background +// --------------------------- +// - $grid: +@function get-background-asym( + $grid +) { + $_stops: (); + + @if is-inside($grid) { + $_stops: get-asym-inside($grid); + } @else if is-split($grid) { + $_stops: get-asym-split($grid); + } @else { + $_stops: get-asym-outside($grid); + } + + @return (image: (columns: $_stops)); +} + + +// Get Background +// -------------- +// - $grid: +@function get-background( + $grid +) { + $grid : parse-grid($grid); + $_show : susy-get(debug image, $grid); + $_return : (); + + @if $_show and $_show != 'hide' { + $_columns: susy-get(columns, $grid); + + @if $_show != 'show-baseline' { + $_sym: is-symmetrical($_columns); + $_return: if($_sym, get-background-sym($grid), get-background-asym($grid)); + $_return: map-merge($_return, (clip: content-box)); + } + + @if $_show != 'show-columns' + and global-variable-exists(base-line-height) + and type-of($base-line-height) == 'number' + and not unitless($base-line-height) { + $_color: variable-exists('grid-background-baseline-color'); + $_color: if($_color, $grid-background-baseline-color, #000); + + $_image: map-get($_return, image); + $_size: map-get($_return, size); + $_baseline: (baseline: ($_color 1px, transparent 1px)); + $_baseline-size: 100% $base-line-height; + + $_return: map-merge($_return, ( + image: if($_image, map-merge($_image, $_baseline), $_baseline), + size: if($_size, ($_size, $_baseline-size), $_baseline-size), + )); + + @if $_show == 'show' { + $_clip: map-get($_return, clip); + $_return: map-merge($_return, (clip: join($_clip, border-box, comma))); + } + } @else if $_show == 'show-baseline' { + @warn 'Please provide a $base-line-height with the desired height and units'; + } + } + + @if map-get($_return, image) { + $_return: map-merge($_return, (flow: susy-get(flow, $grid))); + } + + @return $_return; +} + + +// Get Debug +// --------- +// Return the value of a debug setting +// - $key: +@function debug-get( + $key, + $grid: $susy +) { + $key: join(debug, $key, space); + @return susy-get($key, $grid); +} diff --git a/assets/_scss/vendor/susy/susy/language/susy/_bleed.scss b/assets/_scss/vendor/susy/susy/language/susy/_bleed.scss new file mode 100644 index 00000000..8ef59743 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susy/_bleed.scss @@ -0,0 +1,200 @@ +// Bleed Syntax +// ============ + +// Bleed +// ----- +// Add negative margins, and equal positive padding to create bleed. +// - $bleed : +@mixin bleed( + $bleed: 0 gutter() +) { + $inspect : $bleed; + $output : get-bleed($bleed); + + @if susy-get(global-box-sizing) != content-box { + $output: map-merge((box-sizing: content-box), $output); + } + + @include susy-inspect(bleed, $inspect); + @include output($output); +} + + +// Bleed-x +// ------- +// Shortcut for horizontal bleed. +// - $bleed : +@mixin bleed-x( + $bleed: gutter() +) { + $bleed : parse-span($bleed); + $trbl : susy-get(span, $bleed); + + @if length($trbl) == 1 { + $bleed: map-merge($bleed, (span: 0 nth($trbl, 1))); + } @else if length($trbl) == 2 { + $bleed: map-merge($bleed, (span: 0 nth($trbl, 2) 0 nth($trbl, 1))); + } @else { + @warn 'bleed-x only takes 2 lengths, but #{length($trbl)} were passed.'; + } + + @include bleed($bleed); +} + + +// Bleed-y +// ------- +// Shortcut for vertical bleed. +// - $bleed : +@mixin bleed-y( + $bleed: if(function-exists(rhythm), rhythm(1), 1em) +) { + $bleed : parse-span($bleed); + $trbl : susy-get(span, $bleed); + + @if length($trbl) == 1 { + $bleed: map-merge($bleed, (span: nth($trbl, 1) 0)); + } @else if length($trbl) == 2 { + $bleed: map-merge($bleed, (span: nth($trbl, 1) 0 nth($trbl, 2) 0)); + } @else { + @warn 'bleed-y only takes 2 lengths, but #{length($trbl)} were passed.'; + } + + @include bleed($bleed); +} + + +// Get Bleed +// --------- +// Return bleed output values +// - $bleed: +@function get-bleed( + $bleed +) { + $bleed : map-merge((spread: wide), parse-span($bleed)); + $trbl : susy-get(span, $bleed); + $short : null; + $output : (); + + @for $i from 1 through length($trbl) { + $this: nth($trbl, $i); + $new: (); + $margin: null; + $padding: null; + $padding-x: null; + + @if $this > 0 { + $this: map-merge($bleed, (span: $this)); + $margin: span($this); + $padding: $margin; + $padding-x: $padding; + } + + @if $margin and $margin > 0 { + $margin: - $margin; + + @if is-inside($this) { + $gutter: gutter($this); + $join: if($gutter and comparable($padding, $gutter), true, false); + $padding-x: if($join and $padding > 0, $padding + $gutter, $padding); + } + } + + @if $i == 1 { + $new: ( + margin-top: $margin, + padding-top: $padding, + margin-right: $margin, + padding-right: $padding-x, + margin-bottom: $margin, + padding-bottom: $padding, + margin-left: $margin, + padding-left: $padding-x, + ); + } @else if $i == 2 { + $new: ( + margin-right: $margin, + padding-right: $padding-x, + margin-left: $margin, + padding-left: $padding-x, + ); + } @else if $i == 3 { + $new: ( + margin-bottom: $margin, + padding-bottom: $padding, + ); + } @else if $i == 4 { + $new: ( + margin-left: $margin, + padding-left: $padding-x, + ); + } + + $output: map-merge($output, $new); + } + + @each $prop, $value in $output { + $output: if($value == 0, map-merge($output, ($prop: null)), $output); + } + + @return bleed-shorthand($output); +} + +// Bleed Shorthand +// --------------- +// Convert bleed output into shorthand when possible. +// - $bleed: +@function bleed-shorthand( + $bleed +) { + $margin: (); + $padding: (); + $return: (); + + @each $key, $value in $bleed { + @if str-index($key, margin) { + $margin: map-merge($margin, ($key: $value)); + } @else if str-index($key, padding) > 0 { + $padding: map-merge($padding, ($key: $value)); + } + } + + $props: ( + margin: $margin, + padding: $padding, + ); + + @each $name, $map in $props { + $four: if(length(map-keys($map)) == 4, true, false); + $null: if(index(map-values($map), null), true, false); + + @if $four and not($null) { + $top: map-get($map, '#{$name}-top'); + $right: map-get($map, '#{$name}-right'); + $bottom: map-get($map, '#{$name}-bottom'); + $left: map-get($map, '#{$name}-left'); + + $tb: if($top == $bottom, $top, null); + $rl: if($right == $left, $right, null); + $all: if($tb == $rl, $tb, null); + + $new: if($all, $all, null); + + @if not($new) { + @if $tb and $rl { + $new: $tb $rl; + } @else if $rl { + $new: $top $rl $bottom; + } @else { + $new: $top $right $bottom $left; + } + } + + $return: map-merge($return, ($name: $new)); + } @else { + $return: map-merge($return, $map); + } + } + + @return $return; +} diff --git a/assets/_scss/vendor/susy/susy/language/susy/_box-sizing.scss b/assets/_scss/vendor/susy/susy/language/susy/_box-sizing.scss new file mode 100644 index 00000000..f551241d --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susy/_box-sizing.scss @@ -0,0 +1,47 @@ +// Susy Box Sizing +// ================= + +// Global Box Sizing +// ----------------- +// Set a box model globally on all elements. +// - [$box]: border-box | content-box +// - [$inherit]: true | false +@mixin global-box-sizing( + $box: susy-get(global-box-sizing), + $inherit: false +) { + $inspect: $box; + + @if $inherit { + @at-root { + html { @include output((box-sizing: $box)); } + *, *:before, *:after { box-sizing: inherit; } + } + } @else { + *, *:before, *:after { @include output((box-sizing: $box)); } + } + + @include susy-inspect(global-box-sizing, $inspect); + @include update-box-model($box); +} + +// Border Box Sizing +// ----------------- +// A legacy shortcut... +// - [$inherit]: true | false +@mixin border-box-sizing( + $inherit: false +) { + @include global-box-sizing(border-box, $inherit); +} + +// Update Box Model +// ---------------- +// PRIVATE: Updates global box model setting +@mixin update-box-model( + $box +) { + @if $box != susy-get(global-box-sizing) { + @include susy-set(global-box-sizing, $box); + } +} diff --git a/assets/_scss/vendor/susy/susy/language/susy/_breakpoint-plugin.scss b/assets/_scss/vendor/susy/susy/language/susy/_breakpoint-plugin.scss new file mode 100644 index 00000000..30de288b --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susy/_breakpoint-plugin.scss @@ -0,0 +1,185 @@ +// Breakpoint Integration +// ====================== + +$susy-media: () !default; +$susy-media-fallback: false !default; + +$_susy-media-context: (); + + +// Susy Breakpoint +// --------------- +// Change grids at different media query breakpoints. +// - $query : [] | | +// - $layout : +// - $no-query : | +@mixin susy-breakpoint( + $query, + $layout: false, + $no-query: $susy-media-fallback +) { + @include susy-media-router($query, $no-query) { + @if $layout { + @include with-layout($layout) { + @content; + } + } @else { + @content; + } + } +} + + +// Susy Media +// ---------- +// - $query: [] | +// - $no-query: | +@mixin susy-media( + $query, + $no-query: $susy-media-fallback +) { + $old-context: $_susy-media-context; + $name: if(map-has-key($susy-media, $query), $query, null); + $query: susy-get-media($query); + $query: susy-parse-media($query); + + @include susy-media-context($query, $name); + + @if $no-query and type-of($no-query) != string { + @content; + } @else { + @media #{susy-render-media($query)} { + @content; + } + + @if type-of($no-query) == string { + #{$no-query} & { + @content; + } + } + } + + @include susy-media-context($old-context, $clean: true); +} + + +// Media Router +// ------------ +// Rout media arguments to the correct mixin. +@mixin susy-media-router( + $query, + $no-query: $susy-media-fallback +) { + @if susy-support(breakpoint, (mixin: breakpoint), $warn: false) { + @include breakpoint($query, $no-query) { + @content; + } + } @else { + @include susy-media($query, $no-query) { + @content; + } + } +} + + +// Update Context +// ------------- +// Set the new media context +@mixin susy-media-context( + $query, + $name: null, + $clean: false +) { + $query: map-merge((name: $name), $query); + + @if $clean { + $_susy-media-context: $query !global; + } @else { + $_susy-media-context: map-merge($_susy-media-context, $query) !global; + } +} + + +// Media Context +// ------------- +// Return the full media context, or a single media property (e.g. min-width) +@function susy-media-context( + $property: false +) { + @if $property { + @return map-get($_susy-media-context, $property); + } @else { + @return $_susy-media-context; + } +} + + +// Get Media +// --------- +// Return a named media-query from $susy-media. +// - $name: +@function susy-get-media( + $name +) { + @if map-has-key($susy-media, $name) { + $map-value: map-get($susy-media, $name); + @if ($name == $map-value) { + $name: $map-value; + } @else { + $name: susy-get-media($map-value); + } + } + + @return $name; +} + + +// Render Media +// ------------ +// Build a media-query string from various media settings +@function susy-render-media( + $query +) { + $output: null; + @each $property, $value in $query { + $string: null; + + @if $property == media { + $string: $value; + } @else { + $string: '(#{$property}: #{$value})'; + } + + $output: if($output, '#{$output} and #{$string}', $string); + } + + @return $output; +} + + +// Parse Media +// ----------- +// Return parsed media-query settings based on shorthand +@function susy-parse-media( + $query +) { + $mq: null; + @if type-of($query) == map { + $mq: $query; + } @else if type-of($query) == number { + $mq: (min-width: $query); + } @else if type-of($query) == list and length($query) == 2 { + @if type-of(nth($query, 1)) == number { + $mq: ( + min-width: min($query...), + max-width: max($query...), + ); + } @else { + $mq: (nth($query, 1): nth($query, 2)); + } + } @else { + $mq: (media: '#{$query}'); + } + + @return $mq; +} diff --git a/assets/_scss/vendor/susy/susy/language/susy/_container.scss b/assets/_scss/vendor/susy/susy/language/susy/_container.scss new file mode 100644 index 00000000..e5f4a858 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susy/_container.scss @@ -0,0 +1,81 @@ +// Container Syntax +// ================ + +// Container [mixin] +// ----------------- +// Set a container element +// - [$layout] : +@mixin container( + $layout: $susy +) { + $inspect : $layout; + $layout : parse-grid($layout); + + $_width : get-container-width($layout); + $_justify : parse-container-position(susy-get(container-position, $layout)); + $_property : if(susy-get(math, $layout) == static, width, max-width); + + $_box : susy-get(box-sizing, $layout); + + @if $_box { + @include output((box-sizing: $_box)); + } + + @include susy-inspect(container, $inspect); + @include float-container($_width, $_justify, $_property); + @include show-grid($layout); +} + +// Container [function] +// -------------------- +// Return container width +// - [$layout] : +@function container( + $layout: $susy +) { + $layout: parse-grid($layout); + @return get-container-width($layout); +} + +// Get Container Width +// ------------------- +// Calculate the container width +// - [$layout]: +@function get-container-width( + $layout: $susy +) { + $layout : parse-grid($layout); + $_width : susy-get(container, $layout); + $_column-width : susy-get(column-width, $layout); + $_math : susy-get(math, $layout); + + @if not($_width) or $_width == auto { + @if valid-column-math($_math, $_column-width) { + $_columns : susy-get(columns, $layout); + $_gutters : susy-get(gutters, $layout); + $_spread : if(is-split($layout), wide, narrow); + $_width : susy-sum($_columns, $_gutters, $_spread) * $_column-width; + } @else { + $_width: 100%; + } + } + + @return $_width; +} + +// Parse Container Position +// ------------------------ +// Parse the $container-position into margin values. +// - [$justify] : left | center | right | [] +@function parse-container-position( + $justify: map-get($susy-defaults, container-position) +) { + $_return: if($justify == left, 0, auto) if($justify == right, 0, auto); + + @if not(index(left right center, $justify)) { + $_return: nth($justify, 1); + $_return: $_return if(length($justify) > 1, nth($justify, 2), $_return); + } + + @return $_return; +} diff --git a/assets/_scss/vendor/susy/susy/language/susy/_context.scss b/assets/_scss/vendor/susy/susy/language/susy/_context.scss new file mode 100644 index 00000000..52e12a6c --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susy/_context.scss @@ -0,0 +1,36 @@ +// Context Syntax +// ============== + +// Nested [function] +// ----------------- +// Return a subset grid for nested context. +// - $context : +@function nested( + $context +) { + $context : parse-span($context); + $span : susy-get(span, $context); + $location : get-location($context); + $columns : susy-get(columns, $context); + + @return susy-slice($span, $location, $columns); +} + +// Nested [mixin] +// -------------- +// Use a subset grid for a nested context +// - $context : +// - @content : +@mixin nested( + $context +) { + $inspect : $context; + $context : parse-span($context); + $old : susy-get(columns); + $susy : map-merge($susy, (columns: nested($context))) !global; + + @include susy-inspect(nested, $inspect); + @content; + + $susy : map-merge($susy, (columns: $old)) !global; +} diff --git a/assets/_scss/vendor/susy/susy/language/susy/_gallery.scss b/assets/_scss/vendor/susy/susy/language/susy/_gallery.scss new file mode 100644 index 00000000..e59b9a0c --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susy/_gallery.scss @@ -0,0 +1,94 @@ +// Gallery Syntax +// ============== + +// Gallery +// ------- +// Create an isolated gallery +// - $span : +// - [$selector] : child | of-type +@mixin gallery( + $span, + $selector: child +) { + $inspect : $span; + $span : parse-span($span); + $span : map-merge($span, (location: 1)); + + $n : susy-get(span, $span); + $columns : susy-get(columns, $span); + $context : susy-count($columns); + $flow : susy-get(flow, $span); + + $inside : is-inside($span); + $from : from($flow); + $line : floor($context / $n); + $symmetrical : is-symmetrical($columns); + + $output: ( + width : null, + float : from, + margin-before : null, + margin-after : null, + padding-before : null, + padding-after : null, + flow : $flow, + ); + + @if $inside { + $gutters: get-gutters($span); + $output: map-merge($output, ( + padding-before: map-get($gutters, before), + padding-after: map-get($gutters, after), + )); + } + + @if $symmetrical { + $output: map-merge($output, (width: get-span-width($span))); + } + + $box : susy-get(box-sizing, $span); + $global-box : if(susy-get(global-box-sizing) == 'border-box', true, false); + + @include susy-inspect(gallery, $inspect); + + // Collective Output + @if $box == border-box or ($inside and not($box) and not($global-box)) { + @include output((box-sizing: border-box)); + } @else if $box == content-box { + @include output((box-sizing: content-box)); + } + + @include float-span-output($output...); + + // Individual Loop + @for $item from 1 through $line { + $nth: '#{$line}n + #{$item}'; + &:nth-#{$selector}(#{$nth}) { + // Individual Prep + $output: ( + width : if($symmetrical, null, get-span-width($span)), + float : null, + margin-before : get-isolation($span), + margin-after : -100%, + padding-before : null, + padding-after : null, + flow : $flow, + ); + + // Individual Output + @include float-span-output($output...); + + @if get-edge($span) == first { + @include break; + @include first($span); + } @else { + @include nobreak; + } + + // Individual Location Increment + $location: get-location($span) + $n; + $location: if($location > $context, 1, $location); + $span: map-merge($span, (location: $location)); + } + } +} diff --git a/assets/_scss/vendor/susy/susy/language/susy/_grids.scss b/assets/_scss/vendor/susy/susy/language/susy/_grids.scss new file mode 100644 index 00000000..4fa72edc --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susy/_grids.scss @@ -0,0 +1,64 @@ +// Grid Syntax +// =========== + + +// Layout +// ------ +// Set a new layout using a shorthand +// - $layout: +// - $clean: boolean +@mixin layout( + $layout, + $clean: false +) { + $inspect : $layout; + $susy : _get-layout($layout, $clean) !global; + + @include susy-inspect(layout, $inspect); +} + + +// Use Grid +// -------- +// Use an arbitrary layout for a section of code +// - $layout: +// - $clean: boolean +@mixin with-layout( + $layout, + $clean: false +) { + $inspect : $layout; + $old : $susy; + $susy : _get-layout($layout, $clean) !global; + + @include susy-inspect(with-layout, $inspect); + + @content; + + $susy: $old !global; +} + + +// Layout +// ------ +// Return a parsed layout map based on shorthand syntax +// - $layout: +@function layout( + $layout: $susy +) { + @return parse-grid($layout); +} + + +// Get Layout +// ---------- +// Return a new layout based on current and given settings +// - $layout: +// - $clean: boolean +@function _get-layout( + $layout, + $clean: false +) { + $layout: layout($layout); + @return if($clean, $layout, _susy-deep-merge($susy, $layout)); +} diff --git a/assets/_scss/vendor/susy/susy/language/susy/_gutters.scss b/assets/_scss/vendor/susy/susy/language/susy/_gutters.scss new file mode 100644 index 00000000..efe7ac20 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susy/_gutters.scss @@ -0,0 +1,154 @@ +// Gutter Syntax +// ============= + + +// Gutters +// ------- +// Set gutters on an element. +// - [$span] : +@mixin gutters( + $span: $susy +) { + $inspect : $span; + $span : parse-gutters($span); + $_gutters : get-gutters($span); + + $_output: ( + before: map-get($_gutters, before), + after: map-get($_gutters, after), + flow: susy-get(flow, $span), + ); + + @include susy-inspect(gutters, $inspect); + + @if is-inside($span) { + @include padding-output($_output...); + } @else { + @include margin-output($_output...); + } +} + +@mixin gutter( + $span: $susy +) { + @include gutters($span); +} + + +// Gutter +// ------ +// Return the width of a gutter. +// - [$span] : +@function gutter( + $span: $susy +) { + $span: parse-gutters($span); + + $_gutters: get-gutters($span); + $_gutters: map-get($_gutters, before) or map-get($_gutters, after); + + @return $_gutters; +} + +@function gutters( + $span: $susy +) { + @return gutter($span); +} + + +// Get Gutter Width +// ---------------- +// Return gutter width. +// - [$context]: +@function get-gutter-width( + $context: $susy +) { + $context : parse-gutters($context); + + $_gutters : susy-get(gutters, $context); + $_gutter : susy-get(gutter-override, $context); + + @if $_gutters and ($_gutters > 0) and not($_gutter) { + $_column-width: susy-get(column-width, $context); + $_math: gutter-math($context); + @if $_math == static { + $_gutter: $_gutters * valid-column-math($_math, $_column-width); + } @else { + $_columns : susy-get(columns, $context); + $_spread : if(is-split($context), wide, susy-get(spread, $context)); + $_gutter : percentage($_gutters / susy-sum($_columns, $_gutters, $_spread)); + } + } + + $_gutter: if($_gutter == 'no-gutters' or $_gutter == 'no-gutter', null, $_gutter); + + @return $_gutter; +} + + +// Get Gutters +// ----------- +// Return before and after gutter values. +// - [$context]: +@function get-gutters( + $context: $susy +) { + $context : parse-gutters($context); + + $_gutter-position : susy-get(gutter-position, $context); + $_gutter : get-gutter-width($context); + + $_return : (before: null, after: null); + + @if is-split($context) and $_gutter { + $_gutter: $_gutter / 2; + $_return: map-merge($_return, (before: $_gutter, after: $_gutter)); + } @else { + $_return: map-merge($_return, ($_gutter-position: $_gutter)); + } + + @return $_return; +} + + +// Is Inside +// --------- +// Returns true if gutters are inside. +// $context: +@function is-inside( + $context +) { + $_inside: inside inside-static; + $_gutter-position: susy-get(gutter-position, $context); + + @return if(index($_inside, $_gutter-position), true, false); +} + + +// Is Split +// -------- +// Returns true if gutters are split. +// $context: +@function is-split( + $context +) { + $_split: split inside inside-static; + $_gutter-position: susy-get(gutter-position, $context); + + @return if(index($_split, $_gutter-position), true, false); +} + + +// Gutter Math +// ----------- +// Return the math to use for gutter calculations +// $context: +@function gutter-math( + $context: $susy +) { + $_return : susy-get(math, $context); + $_return : if(susy-get(gutter-position, $context) == inside-static, static, $_return); + + @return $_return; +} diff --git a/assets/_scss/vendor/susy/susy/language/susy/_isolate.scss b/assets/_scss/vendor/susy/susy/language/susy/_isolate.scss new file mode 100644 index 00000000..7ddfd7f5 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susy/_isolate.scss @@ -0,0 +1,77 @@ +// Isolation Syntax +// ================ + + +// Isolate [Mixin] +// --------------- +// Set isolation as an override. +// - $location: +@mixin isolate( + $isolate: 1 +) { + $inspect: $isolate; + + $output: ( + push: isolate($isolate), + flow: susy-get(flow, $isolate), + ); + + @include susy-inspect(isolate, $inspect); + @include isolate-output($output...); +} + + +// Isolate [function] +// ------------------ +// Return an isolation offset width. +// - $location: +@function isolate( + $isolate: 1 +) { + $isolate: parse-span($isolate); + $isolation: susy-get(span, $isolate); + + @if $isolation and not(get-location($isolate)) { + $new: ( + span: null, + location: $isolation, + ); + $isolate: map-merge($isolate, $new); + } + + @return get-isolation($isolate); +} + + +// Get Isolation +// ------------- +// Return the isolation offset width +// - $input: +@function get-isolation( + $input +) { + $location : get-location($input); + $columns : susy-get(columns, $input); + $width : null; + + @if type-of($location) == number and not(unitless($location)) { + $width: $location; + } @else if $location { + $push: $location - 1; + @if $push > 0 { + $push: map-merge($input, ( + span: $push, + location: 1, + spread: wide, + )); + $width: get-span-width($push); + } + } + + @if susy-get(gutter-position, $input) == split + and susy-get(gutters, $input) > 0 { + $width: if($width == null, gutters($input), $width + gutters($input)); + } + + @return $width or 0; +} diff --git a/assets/_scss/vendor/susy/susy/language/susy/_margins.scss b/assets/_scss/vendor/susy/susy/language/susy/_margins.scss new file mode 100644 index 00000000..cb368399 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susy/_margins.scss @@ -0,0 +1,94 @@ +// Margin Syntax +// ============= + +// Pre +// --- +// Add spanning-margins before an element. +// - $span : +@mixin pre( + $span +) { + $inspect: $span; + $span : map-merge((spread: wide), parse-span($span)); + $flow : susy-get(flow, $span); + $split : if(susy-get(gutter-position, $span) == split, true, false); + $gutter : gutter($span); + $span : span($span); + $width : if($split and $gutter, $span + $gutter, $span); + + @include susy-inspect(pre, $inspect); + @include margin-output($width, null, $flow); +} + +// Post +// ---- +// Add spanning-margins after an element. +// - $span : +@mixin post( + $span +) { + $inspect : $span; + $span : map-merge((spread: wide), parse-span($span)); + $flow : susy-get(flow, $span); + $split : if(susy-get(gutter-position, $span) == split, true, false); + $width : if($split, span($span) + gutter($span), span($span)); + + @include susy-inspect(post, $inspect); + @include margin-output(null, $width, $flow); +} + +// Push +// ---- +// Simple synonymn for pre. +// - $span : +@mixin push( + $span +) { + @include pre($span); +} + +// Pull +// ---- +// Add negative spanning-margins before an element. +// - $span : +@mixin pull( + $span +) { + $inspect : $span; + $span : map-merge((spread: wide), parse-span($span)); + $flow : susy-get(flow, $span); + $split : if(susy-get(gutter-position, $span) == split, true, false); + $width : if($split, 0 - span($span) + gutter($span), 0 - span($span)); + + @include susy-inspect(pull, $inspect); + @include margin-output($width, null, $flow); +} + +// Squish +// ------ +// Add spanning-margins before and after an element. +// - $pre : +// - [$post] : +@mixin squish( + $pre, + $post: false +) { + $inspect : ($pre, $post); + $pre : map-merge((spread: wide), parse-span($pre)); + + @if $post { + $post: map-merge((spread: wide), parse-span($post)); + } @else { + $span: susy-get(span, $pre); + @if length($span) > 1 { + $pre: map-merge($pre, (span: nth($span, 1))); + $post: map-merge($pre, (span: nth($span, 2))); + } @else { + $post: $pre; + } + } + + @include susy-inspect(squish, $inspect); + @include pre($pre); + @include post($post); +} diff --git a/assets/_scss/vendor/susy/susy/language/susy/_padding.scss b/assets/_scss/vendor/susy/susy/language/susy/_padding.scss new file mode 100644 index 00000000..cdf75c8b --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susy/_padding.scss @@ -0,0 +1,74 @@ +// Padding Syntax +// ============== + +// Prefix +// ------ +// Add spanning-padding before an element. +// - $span : +@mixin prefix( + $span +) { + $inspect : $span; + $span : map-merge((spread: wide), parse-span($span)); + $flow : susy-get(flow, $span); + $width : span($span); + + @if is-inside($span) { + $gutter: gutter($span); + $width: if($gutter and comparable($width, $gutter), $width + $gutter, $width); + } + + @include susy-inspect(prefix, $inspect); + @include padding-output($width, null, $flow); +} + +// Suffix +// ------ +// Add spanning-padding after an element. +// - $span : +@mixin suffix( + $span +) { + $inspect : $span; + $span : map-merge((spread: wide), parse-span($span)); + $flow : susy-get(flow, $span); + $width : span($span); + + @if is-inside($span) { + $gutter: gutter($span); + $width: if($gutter and comparable($width, $gutter), $width + $gutter, $width); + } + + @include susy-inspect(suffix, $inspect); + @include padding-output(null, $width, $flow); +} + +// Pad +// --- +// Add spanning-padding before and after an element. +// - $pre : +// - [$post] : +@mixin pad( + $pre, + $post: false +) { + $inspect : ($pre, $post); + $pre : map-merge((spread: wide), parse-span($pre)); + + @if $post { + $post: map-merge((spread: wide), parse-span($post)); + } @else { + $span: susy-get(span, $pre); + @if length($span) > 1 { + $pre: map-merge($pre, (span: nth($span, 1))); + $post: map-merge($pre, (span: nth($span, 2))); + } @else { + $post: $pre; + } + } + + @include susy-inspect(pad, $inspect); + @include prefix($pre); + @include suffix($post); + +} diff --git a/assets/_scss/vendor/susy/susy/language/susy/_rows.scss b/assets/_scss/vendor/susy/susy/language/susy/_rows.scss new file mode 100644 index 00000000..d7264313 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susy/_rows.scss @@ -0,0 +1,138 @@ +// Row Start & End +// =============== + +// Break +// ----- +// Apply to any element that should force a line break. +@mixin break { + @include output((clear: both)); +} + + +// NoBreak +// ------- +// Cancel the break() effect, e.g. when using media queries. +@mixin nobreak { + @include output((clear: none)); +} + + +// Full +// ---- +// - [$context]: +@mixin full( + $context: $susy +) { + $inspect : $context; + @include susy-inspect(full, $inspect); + @include span(full of parse-grid($context) break); +} + + +// First +// ----- +// - [$context]: +@mixin first( + $context: $susy +) { + $inspect : $context; + $context : parse-grid($context); + $flow : susy-get(flow, $context); + + @include susy-inspect(first, $inspect); + @if not(is-split($context)) { + @include float-first($flow); + } +} + +@mixin alpha( + $context: $susy +) { + @include first($context); +} + + +// Last +// ---- +// - [$context]: +@mixin last( + $context: $susy +) { + $inspect : $context; + $context : parse-grid($context); + + @include susy-inspect(last, $inspect); + + $output: ( + flow: susy-get(flow, $context), + last-flow: susy-get(last-flow, $context), + margin: if(is-split($context), null, 0), + ); + + @include float-last($output...); +} + +@mixin omega( + $context: $susy +) { + @include last($context); +} + + +// Get Edge +// -------- +// Calculate edge value based on location, if possible +@function get-edge( + $span +) { + $span : parse-span($span); + $edge : susy-get(edge, $span); + + @if not($edge) { + $count: susy-count(susy-get(columns, $span)); + $location: susy-get(location, $span); + $n: susy-get(span, $span); + + $number: if(type-of($location) == number, true, false); + $index: if($number and unitless($location), true, false); + + @if $n == $count { + $edge: full; + } @else if $location and $n and $index { + @if $location == 1 { + $edge: if($n == $count, full, first); + } @else if $location + $n - 1 == $count { + $edge: last; + } + } + } + + @if $edge == alpha or $edge == omega { + $edge: if($edge == alpha, first, last); + } + + @return $edge; +} + + +// Get Location +// ------------ +// Calculate location value based on edge, if possible +@function get-location( + $span +) { + $span : parse-span($span); + $location : susy-get(location, $span); + $edge : get-edge($span); + $n : susy-get(span, $span); + + @if $edge and not($location) and type-of($n) == number and unitless($n) { + @if $edge == first { + $location: 1; + } @else if $edge == last { + $location: susy-count(susy-get(columns, $span)) - $n + 1; + } + } + + @return $location +} diff --git a/assets/_scss/vendor/susy/susy/language/susy/_settings.scss b/assets/_scss/vendor/susy/susy/language/susy/_settings.scss new file mode 100644 index 00000000..9b5d897d --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susy/_settings.scss @@ -0,0 +1,216 @@ +// Susy Settings +// ============= + +// Susy Language Defaults +// ---------------------- +// - PRIVATE +@include susy-defaults(( + container: auto, + math: fluid, + output: float, + container-position: center, + gutter-position: after, + global-box-sizing: content-box, + debug: ( + image: hide, + color: rgba(#66f, .25), + output: background, + toggle: top right, + ), +)); + + +// Valid Keyword Values +// -------------------- +// - PRIVATE: DONT'T TOUCH +$susy-keywords: ( + container: auto, + math: static fluid, + output: isolate float, + container-position: left center right, + flow: ltr rtl, + gutter-position: before after split inside inside-static, + box-sizing: border-box content-box, + span: full, + edge: first alpha last omega full, + spread: narrow wide wider, + gutter-override: no-gutters no-gutter, + role: nest, + clear: break nobreak, + debug image: show hide show-columns show-baseline, + debug output: background overlay, +); + + +// Parse Susy Keywords and Maps +// ---------------------------- +@function parse-settings( + $short: $susy +) { + $_return: (); + + @if type-of($short) == map { + $_return: $short; + } @else { + @each $item in $short { + // strings + @if type-of($item) == string { + @each $key, $value in $susy-keywords { + @if index($value, $item) { + $_key-value: append($key, $item); + $_return: _susy-deep-set($_return, $_key-value...); + } + } + // maps + } @else if type-of($item) == map { + $_return: map-merge($_return, $item); + } + } + } + + @return $_return; +} + + +// Parse Columns & Gutters +// ----------------------- +@function parse-layout( + $short +) { + $_return: (); + $_columns: (); + $_gutters: null; + + @if not(unitless(nth(nth($short, 1), 1))) { + $_gutters: nth($short, 1); + } @else { + $_columns: (columns: nth($short, 1)); + $_gutters: if(length($short) > 1, nth($short, 2), $_gutters); + } + + @if type-of($_gutters) == list and length($_gutters) > 0 { + $_gutters: ( + gutters: nth($_gutters, 2) / nth($_gutters, 1), + column-width: nth($_gutters, 1), + ); + } @else { + $_gutters: if($_gutters, (gutters: $_gutters), ()); + } + + $_return: map-merge($_return, $_columns); + $_return: map-merge($_return, $_gutters); + + @return $_return; +} + + +// Parse Grid/Context +// ------------------ +@function parse-grid( + $short: $susy +) { + $_return: parse-settings($short); + $_layout: (); + + @if type-of($short) == map { + $_return: $short; + } @else { + @each $item in $short { + // number or list + @if type-of($item) == number or type-of($item) == list { + @if type-of($item) == list or unitless($item) { + $_layout: append($_layout, $item); + } @else { + $_return: map-merge($_return, (container: $item)); + } + } + } + + $_layout: if(length($_layout) > 0, parse-layout($_layout), $_layout); + } + + @return map-merge($_return, $_layout); +} + + +// Parse Span +// ---------- +@function parse-span( + $short, + $key: span +) { + $_return: (); + + @if type-of($short) == map { + $_return: $short; + } @else { + $_at: index($short, at); + + @if $_at { + $_loci: $_at + 1; + $_location: nth($short, $_loci); + $_return: map-merge($_return, (location: $_location)); + $short: set-nth($short, $_at, null); + $short: set-nth($short, $_loci, null); + } + + $_i: 1; + $_span: (); + + @while $_i <= length($short) { + $_this: nth($short, $_i); + + @if type-of($_this) == number { + $_span: append($_span, $_this); + $short: set-nth($short, $_i, null); + } @else if $_this == of { + $short: set-nth($short, $_i, null); + $_i: length($short) + 1; + } + + $_i: $_i + 1; + } + + @if length($_span) > 0 { + $_span: if(length($_span) == 1, nth($_span, 1), $_span); + $_return: map-merge($_return, ($key: $_span)); + } + + $_return: map-merge($_return, parse-grid($short)); + } + + @return $_return; +} + + +// Parse Gutters +// ------------- +@function parse-gutters( + $short: $susy +) { + $_gutters: parse-span($short, gutter-override); + $_span: susy-get(gutter-override, $_gutters); + + @if $_span and not(map-get($_gutters, columns)) { + $_context: (); + $_new: (); + + @each $item in $_span { + @if type-of($item) == number and unitless($item) { + $_context: append($_context, $item); + } @else { + $_new: append($_new, $item); + } + } + + $_context: parse-grid($_context); + $_new: if(length($_new) == 0, null, $_new); + $_new: if(length($_new) == 1, nth($_new, 1), $_new); + $_new: (gutter-override: if($_new != $_span, $_new, $_span)); + + $_gutters: map-merge($_gutters, $_new); + $_gutters: map-merge($_gutters, $_context); + } + + @return $_gutters; +} diff --git a/assets/_scss/vendor/susy/susy/language/susy/_span.scss b/assets/_scss/vendor/susy/susy/language/susy/_span.scss new file mode 100644 index 00000000..86ccda91 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susy/_span.scss @@ -0,0 +1,163 @@ +// Span Syntax +// =========== + +// Span [mixin] +// ------------ +// Set a spanning element using shorthand syntax. +// - $span : +@mixin span( + $span +) { + $inspect: $span; + $span: parse-span($span); + $output: span-math($span); + $nesting: susy-get(span, $span); + $clear: susy-get(clear, $span); + + $box: susy-get(box-sizing, $span); + $content-box: if(susy-get(global-box-sizing) != 'border-box', true, false); + $box: $box or if(is-inside($span) and $content-box, border-box, null); + + @if $clear == break { + @include break; + } @else if $clear == nobreak { + @include nobreak; + } + + @include susy-inspect(span, $inspect); + @include output((box-sizing: $box)); + @include float-span-output($output...); + + @if valid-columns($nesting, silent) { + @include nested($span) { @content; } + } @else { + @content; + } +} + +// Span [function] +// --------------- +// Return the width of a span. +// - $span : +@function span( + $span +) { + @return get-span-width($span); +} + +// Span Math +// --------- +// Get all the span results. +// - $span: +@function span-math( + $span +) { + $nest : if(susy-get(role, $span) == nest, true, false); + $split-nest : if(is-split($span) and $nest, true, false); + $edge : get-edge($span); + $location : get-location($span); + + $float : from; + $padding-before : null; + $padding-after : null; + $margin-before : null; + $margin-after : null; + + // calculate widths + $spread: index(map-values($span), spread); + $span: if($split-nest and not($spread), map-merge($span, (spread: wide)), $span); + $width: get-span-width($span); + $gutters: get-gutters($span); + + // apply gutters + @if is-inside($span) { + @if not(susy-get(role, $span)) { + $padding-before: map-get($gutters, before); + $padding-after: map-get($gutters, after); + } + } @else { + @if not($split-nest) { + $margin-before: map-get($gutters, before); + $margin-after: map-get($gutters, after); + } + } + + // special margin handling + @if susy-get(output, $span) == isolate and $location { + $margin-before: get-isolation($span); + $margin-after: -100%; + } @else if $edge { + $is-split: is-split($span); + $pos: susy-get(gutter-position, $span); + + @if $edge == last { + $float: susy-get(last-flow, $span); + } + + @if not($is-split) { + @if $edge == full or ($edge == first and $pos == before) { + $margin-before: 0; + } + @if $edge == full or ($edge == last and $pos == after) { + $margin-after: 0; + } + } + + } + + @return ( + width : $width, + float : $float, + margin-before : $margin-before, + margin-after : $margin-after, + padding-before : $padding-before, + padding-after : $padding-after, + flow : susy-get(flow, $span), + ); +} + +// Get Span Width +// -------------- +// Return span width. +// - $span: +@function get-span-width( + $span +) { + $span : parse-span($span); + + $n : susy-get(span, $span); + $location : get-location($span); + $columns : susy-get(columns, $span); + $gutters : susy-get(gutters, $span); + $spread : susy-get(spread, $span); + + $context : null; + $span-sum : null; + $width : null; + + @if $n == 'full' { + $pos: susy-get(gutter-position, $span); + $role: susy-get(role, $span); + $n: if($pos == split and $role != nest, susy-count($columns), 100%); + } + + @if type-of($n) != number { + @warn "(#{type-of($n)}) #{$n} is not a valid span."; + } @else if unitless($n) { + $context: susy-sum($columns, $gutters, if(is-split($span), wide, narrow)); + $spread: if(is-inside($span), $spread or wide, $spread); + $span-sum: susy($n, $location, $columns, $gutters, $spread); + + $_math: susy-get(math, $span); + $_column-width: susy-get(column-width, $span); + @if $_math == static { + $width: $span-sum * valid-column-math($_math, $_column-width); + } @else { + $width: percentage($span-sum / $context); + } + } @else { + $width: $n; + } + + @return $width; +} diff --git a/assets/_scss/vendor/susy/susy/language/susy/_validation.scss b/assets/_scss/vendor/susy/susy/language/susy/_validation.scss new file mode 100644 index 00000000..a235b176 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susy/_validation.scss @@ -0,0 +1,16 @@ +// Validation +// ========== + + +// Validate Column Math +// -------------------- +@function valid-column-math( + $math, + $column-width +) { + @if $math == static and not($column-width) { + @error 'Static math requires a valid column-width setting.'; + } + + @return $column-width; +} diff --git a/assets/_scss/vendor/susy/susy/language/susyone/_background.scss b/assets/_scss/vendor/susy/susy/language/susyone/_background.scss new file mode 100644 index 00000000..38c6726b --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susyone/_background.scss @@ -0,0 +1,18 @@ +// --------------------------------------------------------------------------- +// Imports + +@import "compass/layout/grid-background"; +@import "compass/css3/background-origin"; +@import "compass/css3/background-clip"; + +// --------------------------------------------------------------------------- +// Susy Grid Background +// +// A wrapper for the compass "column-grid-background" mixin +// Uses all your settings to create a grid background for a container element. +// Note: Sub-pixel rounding can lead to several pixels of variation between browsers. +@mixin susy-grid-background(){ + @include column-grid-background($total-columns, column(), gutter(), 0); + @include background-origin(content-box); + @include background-clip(content-box); +} diff --git a/assets/_scss/vendor/susy/susy/language/susyone/_functions.scss b/assets/_scss/vendor/susy/susy/language/susyone/_functions.scss new file mode 100644 index 00000000..68184589 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susyone/_functions.scss @@ -0,0 +1,377 @@ +// --------------------------------------------------------------------------- +// Imports + +// We need access to some basic font settings for handling media-queries. +@import "compass/typography/vertical_rhythm"; + +// For now, we also need this... +$browser-default-font-size-px : 16px; +$browser-default-font-size-percent : 100%; +$browser-default-font-size-pt : 12pt; + +$rem-with-px-fallback : true !default; + +// --------------------------------------------------------------------------- +// Sass list Functions + +// Return a list with specific items removed +// +// filter($list, $target) +// - $list : The list to filter. +// - $target : An item to be removed from the list. +@function filter($list, $target) { + $clean: compact(); + @if index($list, $target) { + @each $item in $list { + $clean: if($item == $target, $clean, append($clean, $item)); + } + } @else { $clean: $list; } + @return $clean; +} + +// --------------------------------------------------------------------------- +// Don't use static output when it will break things + +// Switch element-level output to fluid, when container-width is wrong for static +// +// fix-static-misalignment([$style, $width]) +// - $style: $container-style. +// - $width: $container-width. +@function fix-static-misalignment( + $style: $container-style, + $width: $container-width +) { + @if $container-width and $container-width != container-outer-width($width: false) { + $style: fluid; + } + @return $style; +} + +// --------------------------------------------------------------------------- +// Grid Functions + +// Returns the full width of a grid based on your grid settings. +// +// $columns : The number of columns to get width for. +@function columns-width( + $columns : $total-columns +) { + @if round($columns) != $columns { + @warn "Susy works best with integer column-spans." + + "For partial-columns, you may need to finesse the math by hand using functions directly."; + } + @return ($columns * $column-width) + (if($columns >= 1, ceil($columns - 1), 0) * $gutter-width); +} + +// Return the grid width after adding or subtracting grid padding +// +// $width : the width of the grid without padding; +// $operation : ( add | subtract ) if padding should be added or subtracted; +@function handle-grid-padding( + $width, + $operation : subtract +) { + $pad: $grid-padding*2; + + @if comparable($width, $grid-padding) { + $width: if($operation == subtract, $width - $pad, $width + $pad); + } @else { + @warn "$grid-padding must be set in units comparable to the container width."; + } + + @return $width; +} + +// Return the full outer width of a Container element. +// +// $columns : The number of columns in the Grid Layout. +@function container-outer-width( + $columns : $total-columns, + $width : $container-width +) { + $outerwidth: if($width, $width, columns-width($columns)); + + @if $width { + @if not($border-box-sizing) { $outerwidth: handle-grid-padding($outerwidth, subtract); } + } @else { + @if $border-box-sizing { $outerwidth: handle-grid-padding($outerwidth, add); } + } + + @return $outerwidth; +} + +// Return the percentage width of a single column in a given 'context'. +// +// $context : The grid context in columns, if nested. +// $style : The container style to use. +@function column( + $context : $total-columns, + $style : fix-static-misalignment() +) { + @return if($style == static, $column-width, relative-width($column-width, $context)); +} + +// Return the percentage width of multiple 'columns' in a given 'context'. +// +// $columns : The number of columns to get relative width for. +// $context : The grid context in columns, if nested. +// $style : The container style to use. +@function columns( + $columns, + $context : $total-columns, + $style : fix-static-misalignment() +) { + @return if($style == static, columns-width($columns), relative-width(columns-width($columns), $context)); +} + +// Return the percentage width of a single gutter in a given 'context'. +// +// $context : The grid context in columns, if nested. +// $style : The container style to use. +@function gutter( + $context : $total-columns, + $style : fix-static-misalignment() +) { + @return if($style == static, $gutter-width, relative-width($gutter-width, $context)); +} + +// Return the percentage width of a given value in a given 'context'. +// +// $width : Any given width value. +// $context : The grid context in columns, if nested. +@function relative-width( + $width, + $context : $total-columns +) { + @return percentage($width / columns-width($context)); +} + +// Return the total space occupied by multiple columns and associated gutters. +// Useful for adding padding or margins (prefix, suffix, push, pull, etc.) +// +// $columns : The number of columns to get relative space for. +// $context : The grid context in columns, if nested. +// $style : The container style to use. +@function space( + $columns, + $context : $total-columns, + $style : fix-static-misalignment() +) { + @return columns($columns, $context, $style) + if($columns >= 1, gutter($context, $style), 0); +} + +// Accept a list including column-count and (optional) position. +// Return either the column count or the position alone. +// +// $columns : the list to split and interprate. +// $request : The value to return, either 'columns' or 'position'. +@function split-columns-value( + $columns, + $request : columns +) { + $pos : false; + $cols : false; + + @each $var in $columns { + @if (type-of($var) == 'string') { + $pos: $var; + } @else { + @if (type-of($var) == 'number') and (unitless($var)) { + $cols: $var; + } @else { + @warn '"#{$var}" is not a valid part of "$columns: #{$columns}" in the columns() mixin.'; + } + } + } + + @if $request == 'columns' { + @return $cols; + } @else { + @if $request == 'position' { + @return $pos; + } @else { + @warn '"#{$request}" is not a valid value for $request'; + } + } +} + +// Accept nth-selector variables, and format them as a valid CSS3 selector. +// +// $n : [first | only | last | ] +// $selector : [child | last-child | of-type | last-of-type ] +@function format-nth( + $n : last, + $selector : child +) { + @if ($n == 'last') or ($n =='first') or ($n =='only') { + $selector: '#{$n}-#{$selector}'; + } @else { + $selector: 'nth-#{$selector}(#{$n})'; + } + @return $selector; +} + +// --------------------------------------------------------------------------- +// Media Functions + +// Return an em value adjusted to match the browser default font size. +// Note: This only works if actual sizes are set relative to browser defaults. +// +// $ems : The initial value to be converted. +// $font-size : The current font-size in. +@function base-ems( + $ems, + $font-size: $base-font-size +){ + $font-size : if(unit($ems) == 'rem', $base-font-size, $font-size); + $unit : unit($font-size); + $mult : $ems / ($ems * 0 + 1); + + @if $unit == 'px' { + @return $font-size / $browser-default-font-size-px * $mult * 1em; + } + @else if $unit == '%' { + @return $font-size / $browser-default-font-size-percent * $mult * 1em; + } + @else if $unit == 'em' { + @return $font-size / 1em * $mult * 1em; + } + @else if $unit == 'pt' { + @return $font-size / $browser-default-font-size-pt * $mult * 1em; + } + @else { + @warn 'Variable $base-font-size does not have a valid font unit. Valid units for fonts in CSS are px, pt, em, and %.'; + } +} + +// This name will be deprecated... +@function absolute-ems( + $ems, + $font-size: $base-font-size +){ + @return base-ems( $ems, $font-size); + } + +// Return a length, after any em-values have been sent through absolute-ems(). +// +// $length : The length value to be checked and adjusted if necessary. +// $font-size : The current font-size in px. +@function fix-ems( + $length, + $font-size: $base-font-size +){ + @if $length { + @if (unit($length) == 'em') or (unit($length) == 'rem') { + $length: absolute-ems($length,$font-size); + } + } + @return $length; +} + +// Sort a list of arguments into "$min $layout $max $ie" order, and return the list. +// +// $media-layout : a list of values [$min $layout $max $ie] including... +// : - one unitless number (columns in a layout) +// : - two optional lengths (min and max-width media-query breakpoints). +// : - one optional boolean or string to trigger fallback support for IE. +// $font-size : [optional] The base font-size of your layout, if you are using ems. +// : - defaults to $base-font-size +@function medialayout( + $media-layout, + $font-size: $base-font-size +) { + $media : false; + $min : false; + $layout : false; + $max : false; + $ie : false; + $has-layout : false; + + @each $val in $media-layout { + @if (type-of($val) == "number") { + @if unitless($val) { + $layout : $val; + $has-layout : true; + } @else { + @if ($has-layout) and not($media) { + $max: $val; + } @else { + @if $media { + $media: join($media,$val); + } @else { + $media: $val; + } + } + } + } @else { + $ie: $val; + } + } + @if (length($media) > 0) { + @if (length($media) == 1) { + $min: nth($media,1); + } @else { + $min: nth($media,1); + $max: nth($media,2); + @if comparable($min, $max) { + @if ($min > $max) { + $max: nth($media,1); + $min: nth($media,2); + } + } @else { + @warn "Can't compare incompatible units." + + "Using #{$min} for min-width, and #{$max} for max-width"; + } + @if (length($media) > 2) { + @warn "You can only send two lengths: a min-width and an (optional) max-width." + + "You sent #{length($media)}: #{$media}"; + } + } + } + + // media-queries must be set in ems relative to the browser default + // rather than the font-size set in CSS. + $min: fix-ems($min,$font-size); + $max: fix-ems($max,$font-size); + + @return $min $layout $max $ie; +} + +// Return the nearest layout (column-count) above a given breakpoint. +// +// $min : The min-width media-query breakpoint above which to establish a new layout. +@function get-layout( + $min +) { + $min : fix-ems($min); + $return : false; + + @if comparable($min, $column-width) { + $return : ceil(($min + $gutter-width) / ($column-width + $gutter-width)); + } @else { + @warn "Can't determine a layout, becuse #{$min} and #{$column-width} are not comparable."; + } + + @return $return; +} + +// Check to see if a given $media-layout list is simply the default. +// +// $media-layout : a list of values including - +// : One unitless number (columns in a layout) +// : Two optional lengths (min and max-width media-query breakpoints). +// : One optional boolean or string to trigger fallback support for IE. +@function is-default-layout( + $media-layout +) { + $media-layout : medialayout($media-layout); + $min : nth($media-layout,1); + $layout-cols : nth($media-layout,2); + $max : nth($media-layout,3); + + @if $min or $max { + @return false; + } @else { + @return if($layout-cols == $total-columns,true,false); + } +} diff --git a/assets/_scss/vendor/susy/susy/language/susyone/_grid.scss b/assets/_scss/vendor/susy/susy/language/susyone/_grid.scss new file mode 100644 index 00000000..491c6229 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susyone/_grid.scss @@ -0,0 +1,312 @@ +// --------------------------------------------------------------------------- +// Imports + +@import "compass/utilities/general/clearfix"; +@import "compass/css3/box-sizing"; + +// --------------------------------------------------------------------------- +// Border-Box Sizing + +// Apply the border-box sizing model to all elements +// and adjust the grid math appropriately. +@mixin border-box-sizing { + $border-box-sizing: true !global; + * { @include box-sizing(border-box); } +} + +// --------------------------------------------------------------------------- +// Container + +// Set the width of a container +// +// $columns : The number of columns in the Grid Layout. +@mixin set-container-width( + $columns : $total-columns, + $style : $container-style, + $px-vals : $pixel-values-only +){ + $width: container-outer-width($columns); + + @if $style == 'static' { + @if $px-vals == true { + width: round(convert-length($width, px)); + } @else { + @include rem(width, $width); + } + } @else { + @if $style == 'fluid' { + @if unit($width) == '%' { + @if $px-vals == true { + width: round(convert-length($width, px)); + } @else { + @include rem(width, $width); + } + } + } @else { + @if $px-vals == true { + max-width: round(convert-length($width, px)); + } @else { + @include rem(max-width, $width); + } + + @include for-legacy-browser(ie,"6") { + @if unit($width) == 'rem' { + _width: round(convert-length($width, px)); + } @else { + _width: $width; + } + } + } + } +} + +// Set the outer grid-containing element(s). +// +// $columns : The number of columns in the container. +@mixin apply-container( + $columns : $total-columns, + $px-vals : $pixel-values-only +){ + @include pie-clearfix; + @include set-container-width($columns); + @if $px-vals == true { + padding-left: round(convert-length($grid-padding, px)); + padding-right: round(convert-length($grid-padding, px)); + } @else { + @include rem(padding-left, $grid-padding); + @include rem(padding-right, $grid-padding); + } + margin: { left: auto; right: auto; } +} + +// Set one or more layouts on a grid-containing element at any number of media-query breakpoints. +// +// $media-layout-1 : [default:$total-columns] A list of values including - +// : One unitless number (representing columns in a layout) +// : Two optional lengths (representing min and max-width media-query breakpoints). +// $media-layout-2 ...-10 : [optional] Same as $media-layout-1 +@mixin container( + $media-layouts... +){ + $media-layouts: if(length($media-layouts) > 0, $media-layouts, $total-columns); + + @each $ml in $media-layouts { + @if is-default-layout($ml) { + @include apply-container; + } @else { + @include at-breakpoint($ml) { + @include apply-container; + } + } + } +} + +// --------------------------------------------------------------------------- +// Columns + +// Create a grid element spanning any number of 'columns' in a grid 'context'. +// $columns : The number of columns to span. +// $context : [optional] The context (columns spanned by parent). +// : Context is required on any nested elements. +// : Context MUST NOT be declared on a root element. +// $padding : [optional] Padding applied to the inside of individual grid columns. +// : Padding is only output if one or two values are specified (e.g. 1em or 10px 20px) +// : Padding values are applied only on the horizontal axis in from-to order +// $from : The start direction of your layout (e.g. 'left' for ltr languages) +// $style : The container style to use. +@mixin span-columns( + $columns, + $context : $total-columns, + $padding : false, + $from : $from-direction, + $style : fix-static-misalignment() +) { + $from : unquote($from); + $to : opposite-position($from); + $pos : split-columns-value($columns,position); + $cols : split-columns-value($columns,columns); + $pad-from : if($style == static, 0 * $gutter-width, relative-width(0 * $gutter-width, $context)); + $pad-to : if($style == static, 0 * $gutter-width, relative-width(0 * $gutter-width, $context)); + + @if $padding != false { + $pad-from : nth($padding, 1); + + @if length($padding) > 1 { + $pad-to: nth($padding, 2); + } @else { + $pad-to: $pad-from; + } + + $pad-from : if($style == static, $pad-from, relative-width($pad-from, $context)); + $pad-to : if($style == static, $pad-to, relative-width($pad-to, $context)); + + padding-#{$from}: $pad-from; + padding-#{$to}: $pad-to; + } + + width: columns($cols, $context, $style) - if($border-box-sizing, 0, $pad-to + $pad-from); + + @if ($pos == 'omega') { + @include omega($from); + } @else { + float: $from; + margin-#{$to}: gutter($context, $style); + @include for-legacy-browser(ie, "6") { + display: inline; + } + } +} + +// Apply to elements spanning the last column, to account for the page edge. +// Only needed as an override. Normally 'omega' can just be called by `columns`. +// +// $from : The start-direction for your document. +@mixin omega( + $from : $from-direction +) { + $from : unquote($from); + $to : opposite-position($from); + $hack : opposite-position($omega-float); + + float: $omega-float; + margin-#{$to}: 0; + + @include for-legacy-browser(ie, "6", "7") { + *margin-#{$hack}: - $gutter-width; + @include for-legacy-browser(ie, "6") { + display: inline; + } + } +} + +// Shortcut to apply omega to a specific subset of elements. +// +// $n : [first | only | last | ] +// $selector : [child | last-child | of-type | last-of-type ] +// $from : The start-direction for your document. +@mixin nth-omega( + $n : last, + $selector : child, + $from : $from-direction +) { + $from : unquote($from); + + &:#{format-nth($n,$selector)} { + @if $n == "first" { + @include omega($from); + } @else { + @include with-browser-ranges(css-sel3) { + @include omega($from); + } + } + } +} + + + +// --------------------------------------------------------------------------- +// Resets + +// Reset a '+columns' grid element to default block behavior +// +// $from : The start direction of your layout (e.g. 'left' for ltr languages) +@mixin reset-columns( + $from: $from-direction +) { + $from : unquote($from); + $to : opposite-position($from); + $hack : opposite-position($omega-float); + + float: none; + width: auto; + margin-#{$to}: auto; + + @include for-legacy-browser(ie, "6", "7") { + *margin-#{$hack}: auto; + @include for-legacy-browser(ie, "6") { + display: block; + } + } +} + +// Apply to elements previously set as omega. +// This will return floats and margins back to non-omega settigns. +// +// $context : [optional] The context (columns spanned by parent). +// $from : The start-direction for your document. +// $style : The container style to use. +@mixin remove-omega( + $context : $total-columns, + $from : $from-direction, + $style : fix-static-misalignment() +) { + $from : unquote($from); + $to : opposite-position($from); + $hack : opposite-position($omega-float); + + float: $from; + margin-#{$to}: gutter($context, $style); + + @include for-legacy-browser(ie, "6", "7") { + *margin-#{$hack}: auto; + } +} + +// Shortcut to apply remove-omega to a specific subset of elements. +// +// $n : [first | only | last | ] +// $selector : [child | last-child | of-type | last-of-type ] +// $context : [optional] The context (columns spanned by parent). +// $from : The start-direction for your document. +// $style : The container style to use. +@mixin remove-nth-omega( + $n : last, + $selector : child, + $context : $total-columns, + $from : $from-direction, + $style : fix-static-misalignment() +) { + $from : unquote($from); + + &:#{format-nth($n,$selector)} { + @if $n == "first" { + @include remove-omega($context, $from, $style); + } @else { + @include with-browser-ranges(css-sel3) { + @include remove-omega($context, $from, $style); + } + } + } +} + + +// --------------------------------------------------------------------------- +// Change Settings + +@mixin with-grid-settings( + $columns: $total-columns, + $width: $column-width, + $gutter: $gutter-width, + $padding: $grid-padding +) { + // keep the defaults around + $default-columns: $total-columns; + $default-width: $column-width; + $default-gutter: $gutter-width; + $default-padding: $grid-padding; + + // use the new settings + $total-columns: $columns !global; + $column-width: $width !global; + $gutter-width: $gutter !global; + $grid-padding: $padding !global; + + // apply to contents + @content; + + // re-instate the defaults + $total-columns: $default-columns !global; + $column-width: $default-width !global; + $gutter-width: $default-gutter !global; + $grid-padding: $default-padding !global; +} diff --git a/assets/_scss/vendor/susy/susy/language/susyone/_isolation.scss b/assets/_scss/vendor/susy/susy/language/susyone/_isolation.scss new file mode 100644 index 00000000..2b70038b --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susyone/_isolation.scss @@ -0,0 +1,51 @@ +// --------------------------------------------------------------------------- +// Isolation + +// Isolate the position of a grid element (use in addition to span-columns) +// +// $location : The grid column to isolate in, relative to the container; +// $context : [optional] The context (columns spanned by parent). +// $from : The start direction of your layout (e.g. 'left' for ltr languages) +@mixin isolate( + $location, + $context: $total-columns, + $from: $from-direction, + $style: fix-static-misalignment() +) { + $to: opposite-position($from); + margin-#{$to}: -100%; + margin-#{$from}: space($location - 1, $context, $style); +} + +// Isolate a group of elements in a grid, using nth-child selectors +// +// $columns : The column-width of each item on the grid; +// $context : [optional] The context (columns spanned by parent). +// $selector : [child | of-type | last-of-type ] (default is 'child') +// $from : The start direction of your layout (e.g. 'left' for ltr languages) +@mixin isolate-grid( + $columns, + $context: $total-columns, + $selector: 'child', + $from: $from-direction, + $style: fix-static-misalignment() +) { + $to: opposite-position($from); + $location: 1; + $line: floor($context / $columns); + + @include span-columns($columns, $context, $from: $from, $style: $style); + margin-#{$to}: -100%; + + @for $item from 1 through $line { + $nth: '#{$line}n + #{$item}'; + &:#{format-nth($nth,$selector)} { + margin-#{$from}: space($location - 1, $context, $style); + @if $location == 1 { clear: $from; } + @else { clear: none; } + + $location: $location + $columns; + @if $location > $context { $location: 1; } + } + } +} diff --git a/assets/_scss/vendor/susy/susy/language/susyone/_margin.scss b/assets/_scss/vendor/susy/susy/language/susyone/_margin.scss new file mode 100644 index 00000000..accbbe65 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susyone/_margin.scss @@ -0,0 +1,93 @@ +// --------------------------------------------------------------------------- +// Margin Mixins + +// Apply 'columns' margin before an element to push it along the grid. +// +// $columns : The number of columns to span. +// $context : [optional] The context (columns spanned by parent). +// : Context is required on any nested elements. +// : Context MUST NOT be declared on a root element. +// $from : The start direction of your layout (e.g. 'left' for ltr languages) +// $style : The container style to use. +@mixin pre( + $columns, + $context : $total-columns, + $from : $from-direction, + $style : fix-static-misalignment() +) { + $from : unquote($from); + margin-#{$from}: space($columns, $context, $style); +} + +// 'push' is a synonymn for 'pre' +@mixin push( + $columns, + $context : $total-columns, + $from : $from-direction, + $style : fix-static-misalignment() +) { + $from : unquote($from); + @include pre($columns, $context, $from, $style); +} + +// Apply negative 'columns' margin before an element to pull it along the grid. +// +// $columns : The number of columns to span. +// $context : [optional] The context (columns spanned by parent). +// : Context is required on any nested elements. +// : Context MUST NOT be declared on a root element. +// $from : The start direction of your layout (e.g. 'left' for ltr languages) +// $style : The container style to use. +@mixin pull( + $columns, + $context : $total-columns, + $from : $from-direction, + $style : fix-static-misalignment() +) { + $from : unquote($from); + margin-#{$from}: 0 - space($columns, $context, $style); +} + +// Apply 'columns' margin after an element to contain it in a grid. +// +// $columns : The number of columns to span. +// $context : [optional] The context (columns spanned by parent). +// : Context is required on any nested elements. +// : Context MUST NOT be declared on a root element. +// $from : The start direction of your layout (e.g. 'left' for ltr languages) +// $style : The container style to use. +@mixin post( + $columns, + $context : $total-columns, + $from : $from-direction, + $style : fix-static-misalignment() +) { + $from : unquote($from); + $to : opposite-position($from); + margin-#{$to}: space($columns, $context, $style); +} + +// Apply 'columns' before and/or after an element to contain it on a grid. +// +// $pre : The number of columns to add as margin before. +// $post : The number of columns to add as margin after. +// $context : [optional] The context (columns spanned by parent). +// : Context is required on any nested elements. +// : Context MUST NOT be declared on a root element. +// $from : The start direction of your layout (e.g. 'left' for ltr languages) +// $style : The container style to use. +@mixin squish( + $pre : false, + $post : false, + $context : $total-columns, + $from : $from-direction, + $style : fix-static-misalignment() +) { + $from : unquote($from); + @if $pre { + @include pre($pre, $context, $from, $style) + } + @if $post { + @include post($post, $context, $from, $style) + } +} diff --git a/assets/_scss/vendor/susy/susy/language/susyone/_media.scss b/assets/_scss/vendor/susy/susy/language/susyone/_media.scss new file mode 100644 index 00000000..ca860fc9 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susyone/_media.scss @@ -0,0 +1,105 @@ +// --------------------------------------------------------------------------- +// Media Mixins + +// Create a new layout context for (@content) descendants. +// +// $layout-cols : a (unitless) number of columns to use for this layout. +@mixin layout( + $layout-cols +) { + // store default $total-columns setting for later, then change it. + $default-layout : $total-columns; + $total-columns : $layout-cols !global; + + // apply children in this new layout context. + @content; + + // return to default $total-columns setting. + $total-columns : $default-layout !global; +} + +// Nest a block of code inside a new media-query and layout context. +// +// $media-layout : a list of values [$min $layout $max $ie] including... +// : - one unitless number (columns in a layout) +// : - two optional lengths (min and max-width media-query breakpoints). +// : - one optional boolean or string to trigger fallback support for IE. +// $font-size : [optional] The base font-size of your layout, if you are using ems. +// : - defaults to $base-font-size +@mixin at-breakpoint( + $media-layout, + $font-size: $base-font-size +) { + $media-layout : medialayout($media-layout,$font-size); + $min : nth($media-layout,1); + $layout : nth($media-layout,2); + $max : nth($media-layout,3); + $ie : nth($media-layout,4); + + @if not($breakpoint-media-output) and not($breakpoint-ie-output) and not($breakpoint-raw-output) { + @warn "Either $breakpoint-media-output, $breakpoint-ie-output, or $breakpoint-raw-output must be true for at-breakpoint to work."; + } + + // We need to have either a min-width breakpoint or a layout in order to proceed. + @if $min or $layout or $max { + + // If we don't have a layout, we create one based on the min-width. + @if not($layout) { + $layout: get-layout($min); + } + + // If we still don't have a layout, we have a problem. + @if $layout { + // Set our new layout context. + @include layout($layout) { + @if $breakpoint-media-output { + @include with-browser-ranges(css-mediaqueries) { + @if $min and $max { + // Both $min and $max + @media (min-width: $min) and (max-width: $max) { + @content; + } + } @else { + @if not($min) and not($max) { + // Neither $min nor $max: + // We can create a breakpoint based on the number of columns in the layout. + $min: fix-ems(container-outer-width($width: false)); + } + @if $min { + // Min only: + @media (min-width: $min) { + @content; + } + } @else { + // Max only: + @media (max-width: $max) { + @content; + } + } + } + } + } + // Set an IE fallback + @if $ie and $breakpoint-ie-output { + @if (type-of($ie) == 'bool') { + $ie: 'lt-ie9'; + } + .#{$ie} & { + @content; + } + } + + @if $breakpoint-raw-output { + @content; + } + } + } @else { + @warn "We were unable to determine a layout for your breakpoint."; + } + + } @else { + @warn "You need to provide either a valid layout (number of columns)" + + "or a valid media-query min-width breakpoint (length)."; + } + +} diff --git a/assets/_scss/vendor/susy/susy/language/susyone/_padding.scss b/assets/_scss/vendor/susy/susy/language/susyone/_padding.scss new file mode 100644 index 00000000..8e6394a4 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susyone/_padding.scss @@ -0,0 +1,92 @@ +// --------------------------------------------------------------------------- +// Padding Mixins + +// add empty colums as padding before an element. +// $columns : The number of columns to prefix. +// $context : [optional] The context (columns spanned by parent). +// : Context is required on any nested elements. +// : Context MUST NOT be declared on a root element. +// $from : The start direction of your layout (e.g. 'left' for ltr languages) +// $style : The container style to use. +@mixin prefix( + $columns, + $context : $total-columns, + $from : $from-direction, + $style : fix-static-misalignment() +) { + $from : unquote($from); + padding-#{$from}: space($columns, $context, $style); +} + +// add empty colums as padding after an element. +// $columns : The number of columns to suffix. +// $context : [optional] The context (columns spanned by parent). +// : Context is required on any nested elements. +// : Context MUST NOT be declared on a root element. +// $from : The start direction of your layout (e.g. 'left' for ltr languages) +// $style : The container style to use. +@mixin suffix( + $columns, + $context : $total-columns, + $from : $from-direction, + $style : fix-static-misalignment() +) { + $from : unquote($from); + $to : opposite-position($from); + padding-#{$to}: space($columns, $context, $style); +} + +// add empty colums as padding before and after an element. +// $columns : The number of columns to pad. +// $context : [optional] The context (columns spanned by parent). +// : Context is required on any nested elements. +// : Context MUST NOT be declared on a root element. +// $from : The start direction of your layout (e.g. 'left' for ltr languages) +// $style : The container style to use. +@mixin pad( + $prefix : false, + $suffix : false, + $context : $total-columns, + $from : $from-direction, + $style : fix-static-misalignment() +) { + $from : unquote($from); + @if $prefix { + @include prefix($prefix, $context, $from, $style); + } + @if $suffix { + @include suffix($suffix, $context, $from, $style); + } +} + +// Bleed into colums with margin/padding on any side of an element. +// $width : The side of the bleed. +// : Any unit-length will be used directly. +// : Any unitless number will be used as a column-count. +// : Use "2 of 6" format to represent 2 cals in a 6-col nested context. +// $sides : One or more sides to bleed [ top | right | bottom | left | all ]. +// $style : The container style to use. +@mixin bleed( + $width: $grid-padding, + $sides: left right, + $style: fix-static-misalignment() +) { + @if $border-box-sizing { @include box-sizing(content-box) } + + @if type-of($width) == 'list' { + $width: filter($width, of); + $width: space(nth($width,1), nth($width,2), $style); + } @else if unitless($width) { + $width: space($width, $style: $style); + } + + @if $sides == 'all' { + margin: - $width; + padding: $width; + } @else { + @each $side in $sides { + margin-#{$side}: - $width; + padding-#{$side}: $width; + } + } +} diff --git a/assets/_scss/vendor/susy/susy/language/susyone/_settings.scss b/assets/_scss/vendor/susy/susy/language/susyone/_settings.scss new file mode 100644 index 00000000..e8ff9c84 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/language/susyone/_settings.scss @@ -0,0 +1,60 @@ +// --------------------------------------------------------------------------- +// Susy Settings + +// The total number of columns in the grid +$total-columns : 12 !default; + +// The width of columns and gutters. +// These must all be set with the comparable units. +$column-width : 4em !default; +$gutter-width : 1em !default; + +// Padding on the left and right of a Grid Container. +$grid-padding : $gutter-width !default; + +// --------------------------------------------------------------------------- +// Advanced Settings + +// From Direction: +// Controls for right-to-left or bi-directional sites. +$from-direction : left !default; + +// Omega Float Direction: +// The direction that +omega elements are floated by deafult. +$omega-float : opposite-position($from-direction) !default; + +// Container Width: +// Override the total width of your grid, using any length (50em, 75%, etc.) +$container-width : false !default; + +// Container Style: +// 'magic' - Static (fixed or elastic) when there's enough space, +// fluid when there isn't. This is the SUSY MAGIC SAUCE(TM). +// 'static' - Forces the grid container to remain static at all times. +// 'fluid' - Forces the grid to remain fluid at all times. +// (this will overrule any static $container-width settings) +$container-style : magic !default; + +// Border-Box Sizing +// Adjust the grid math appropriately for box-sizing: border-box; +// Warning: This does not actually apply the new box model! +// In most cases you can ignore this setting, +// and simply apply the border-box-sizing mixin. +$border-box-sizing : false !default; + +// Pixel Values only: +// Make sure only pixel values are set for the container width. +$pixel-values-only : false !default; + +// --------------------------------------------------------------------------- +// IE Settings + +// When you are using a seperate IE stylesheet, +// you can use these settings to control the output of at-breakpoint. +// By default, at-breakpoint will output media-queries as well as +// any defined ie-fallback classes. +$breakpoint-media-output : true !default; +$breakpoint-ie-output : true !default; + +// Danger Zone! Only set as 'true' in IE-specific style sheets. +$breakpoint-raw-output : false !default; diff --git a/assets/_scss/vendor/susy/susy/output/_float.scss b/assets/_scss/vendor/susy/susy/output/_float.scss new file mode 100644 index 00000000..9c24051c --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/_float.scss @@ -0,0 +1,9 @@ +// Float API +// ========= + +@import "shared"; + +@import "float/container"; +@import "float/span"; +@import "float/end"; +@import "float/isolate"; diff --git a/assets/_scss/vendor/susy/susy/output/_shared.scss b/assets/_scss/vendor/susy/susy/output/_shared.scss new file mode 100644 index 00000000..dd9df4ed --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/_shared.scss @@ -0,0 +1,15 @@ +// Shared API +// ========== + +@import "support"; + +@import "shared/inspect"; +@import "shared/output"; +@import "shared/direction"; +@import "shared/background"; +@import "shared/container"; +@import "shared/margins"; +@import "shared/padding"; + + + diff --git a/assets/_scss/vendor/susy/susy/output/_support.scss b/assets/_scss/vendor/susy/susy/output/_support.scss new file mode 100644 index 00000000..53dbc9c3 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/_support.scss @@ -0,0 +1,9 @@ +// Susy Browser Support +// ==================== + +@import "support/support"; +@import "support/prefix"; +@import "support/background"; +@import "support/box-sizing"; +@import "support/rem"; +@import "support/clearfix"; diff --git a/assets/_scss/vendor/susy/susy/output/float/_container.scss b/assets/_scss/vendor/susy/susy/output/float/_container.scss new file mode 100644 index 00000000..121eb11a --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/float/_container.scss @@ -0,0 +1,16 @@ +// Float Container API +// =================== + +// Float Container +// --------------- +// - [$width] : +// - [$justify] : left | center | right +// - [$math] : fluid | static +@mixin float-container( + $width, + $justify: auto auto, + $property: max-width +) { + @include susy-clearfix; + @include container-output($width, $justify, $property); +} diff --git a/assets/_scss/vendor/susy/susy/output/float/_end.scss b/assets/_scss/vendor/susy/susy/output/float/_end.scss new file mode 100644 index 00000000..3369997f --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/float/_end.scss @@ -0,0 +1,40 @@ +// Float Ends API +// ============== + +// Susy End Defaults +// ----------------- +// - PRIVATE +@include susy-defaults(( + last-flow: to, +)); + +// Float Last +// ---------- +// - [$flow] : ltr | rtl +@mixin float-last( + $flow: map-get($susy-defaults, flow), + $last-flow: map-get($susy-defaults, last-flow), + $margin: 0 +) { + $to: to($flow); + + $output: ( + float: if($last-flow == to, $to, null), + margin-#{$to}: $margin, + ); + + @include output($output); +} + +// Float First +// ----------- +// - [$flow] : ltr | rtl +@mixin float-first( + $flow: map-get($susy-defaults, flow) +) { + $output: ( + margin-#{from($flow)}: 0, + ); + + @include output($output); +} diff --git a/assets/_scss/vendor/susy/susy/output/float/_isolate.scss b/assets/_scss/vendor/susy/susy/output/float/_isolate.scss new file mode 100644 index 00000000..4dd3c230 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/float/_isolate.scss @@ -0,0 +1,22 @@ +// Float Isolation API +// =================== + +// Isolate Output +// -------------- +// - $push : +// - [$flow] : ltr | rtl +@mixin isolate-output( + $push, + $flow: map-get($susy-defaults, flow) +) { + $to: to($flow); + $from: from($flow); + + $output: ( + float: $from, + margin-#{$from}: $push, + margin-#{$to}: -100%, + ); + + @include output($output); +} diff --git a/assets/_scss/vendor/susy/susy/output/float/_span.scss b/assets/_scss/vendor/susy/susy/output/float/_span.scss new file mode 100644 index 00000000..5b732ccb --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/float/_span.scss @@ -0,0 +1,35 @@ +// Float Span API +// ============== + +// Float Span Output +// ----------------- +// - $width : +// - [$float] : from | to +// - [$margin-before] : +// - [$margin-after] : +// - [$padding-before] : +// - [$padding-after] : +// - [$flow] : ltr | rtl +@mixin float-span-output( + $width, + $float : from, + $margin-before : null, + $margin-after : null, + $padding-before : null, + $padding-after : null, + $flow : map-get($susy-defaults, flow) +) { + $to : to($flow); + $from : from($flow); + + $output: ( + width: $width, + float: if($float == to, $to, null) or if($float == from, $from, null), + margin-#{$from}: $margin-before, + margin-#{$to}: $margin-after, + padding-#{$from}: $padding-before, + padding-#{$to}: $padding-after, + ); + + @include output($output); +} diff --git a/assets/_scss/vendor/susy/susy/output/shared/_background.scss b/assets/_scss/vendor/susy/susy/output/shared/_background.scss new file mode 100644 index 00000000..c230f613 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/shared/_background.scss @@ -0,0 +1,26 @@ +// Grid Background API +// =================== +// - Sub-pixel rounding can lead to several pixels variation between browsers. + +// Grid Background Output +// ---------------------- +// - $image: background-image +// - $size: background-size +// - $clip: background-clip +// - [$flow]: ltr | rtl +@mixin background-grid-output ( + $image, + $size: null, + $clip: null, + $flow: map-get($susy-defaults, flow) +) { + $output: ( + background-image: $image, + background-size: $size, + background-origin: $clip, + background-clip: $clip, + background-position: from($flow) top, + ); + + @include output($output); +} diff --git a/assets/_scss/vendor/susy/susy/output/shared/_container.scss b/assets/_scss/vendor/susy/susy/output/shared/_container.scss new file mode 100644 index 00000000..7c7d4f17 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/shared/_container.scss @@ -0,0 +1,21 @@ +// Shared Container API +// ==================== + +// Container Output +// ---------------- +// - [$width] : +// - [$justify] : left | center | right +// - [$math] : fluid | static +@mixin container-output( + $width, + $justify: auto auto, + $property: max-width +) { + $output: ( + #{$property}: $width or 100%, + margin-left: nth($justify, 1), + margin-right: nth($justify, 2), + ); + + @include output($output); +} diff --git a/assets/_scss/vendor/susy/susy/output/shared/_direction.scss b/assets/_scss/vendor/susy/susy/output/shared/_direction.scss new file mode 100644 index 00000000..abb9c36f --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/shared/_direction.scss @@ -0,0 +1,42 @@ +// Direction Helpers +// ================= + +// Susy Flow Defaults +// ------------------ +// - PRIVATE +@include susy-defaults(( + flow: ltr, +)); + +// Get Direction +// ------------- +// Return the 'from' or 'to' direction of a ltr or rtl flow. +// - [$flow] : ltr | rtl +// - [$key] : from | to +@function get-direction( + $flow: map-get($susy-defaults, flow), + $key: from +) { + $return: if($flow == rtl, (from: right, to: left), (from: left, to: right)); + @return map-get($return, $key); +} + +// To +// -- +// Return the 'to' direction of a flow +// - [$flow] : ltr | rtl +@function to( + $flow: map-get($susy-defaults, flow) +) { + @return get-direction($flow, to); +} + +// From +// ---- +// Return the 'from' direction of a flow +// - [$flow] : ltr | rtl +@function from( + $flow: map-get($susy-defaults, flow) +) { + @return get-direction($flow, from); +} diff --git a/assets/_scss/vendor/susy/susy/output/shared/_inspect.scss b/assets/_scss/vendor/susy/susy/output/shared/_inspect.scss new file mode 100644 index 00000000..b0af9b6d --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/shared/_inspect.scss @@ -0,0 +1,25 @@ +// Debugging +// ========= + +// Susy Inspect +// ------------ +// Output arguments passed to a inspect. +// - $mixin : +// - $inspec : + +@mixin susy-inspect( + $mixin, + $inspect +) { + $show: false; + + @each $item in $inspect { + @if index($item, inspect) { + $show: true; + } + } + + @if $show or susy-get(debug inspect) { + -susy-#{$mixin}: inspect($inspect); + } +} diff --git a/assets/_scss/vendor/susy/susy/output/shared/_margins.scss b/assets/_scss/vendor/susy/susy/output/shared/_margins.scss new file mode 100644 index 00000000..cd73e8cf --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/shared/_margins.scss @@ -0,0 +1,23 @@ +// Margins API +// =========== + +// Margin Output +// ------------- +// - $before : +// - $after : +// - [$flow] : ltr | rtl +@mixin margin-output( + $before, + $after, + $flow: map-get($susy-defaults, flow) +) { + $to: to($flow); + $from: from($flow); + + $output: ( + margin-#{$from}: $before, + margin-#{$to}: $after, + ); + + @include output($output); +} diff --git a/assets/_scss/vendor/susy/susy/output/shared/_output.scss b/assets/_scss/vendor/susy/susy/output/shared/_output.scss new file mode 100644 index 00000000..20fc2d61 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/shared/_output.scss @@ -0,0 +1,14 @@ +// Output +// ====== + +// Output +// ------ +// Output CSS with proper browser support. +// - $styles : +@mixin output( + $styles +) { + @each $prop, $val in $styles { + @include susy-support($prop, $val); + } +} diff --git a/assets/_scss/vendor/susy/susy/output/shared/_padding.scss b/assets/_scss/vendor/susy/susy/output/shared/_padding.scss new file mode 100644 index 00000000..5069d0cb --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/shared/_padding.scss @@ -0,0 +1,23 @@ +// Padding API +// =========== + +// Padding Output +// -------------- +// - $before : +// - $after : +// - [$flow] : ltr | rtl +@mixin padding-output( + $before, + $after, + $flow: map-get($susy-defaults, flow) +) { + $to: to($flow); + $from: from($flow); + + $output: ( + padding-#{$from}: $before, + padding-#{$to}: $after, + ); + + @include output($output); +} diff --git a/assets/_scss/vendor/susy/susy/output/support/_background.scss b/assets/_scss/vendor/susy/susy/output/support/_background.scss new file mode 100644 index 00000000..b1415028 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/support/_background.scss @@ -0,0 +1,58 @@ +// Background Properties +// ===================== + +// Susy Background Image +// --------------------- +// Check for an existing support mixin, or provide a simple fallback. +// - $image: +@mixin susy-background-image( + $image +) { + @if susy-support(background-image, (mixin: background-image), $warn: false) { + @include background-image($image...); + } @else { + background-image: $image; + } +} + +// Susy Background Size +// --------------------- +// Check for an existing support mixin, or provide a simple fallback. +// - $image: +@mixin susy-background-size( + $size +) { + @if susy-support(background-options, (mixin: background-size)) { + @include background-size($size); + } @else { + background-size: $size; + } +} + +// Susy Background Origin +// ---------------------- +// Check for an existing support mixin, or provide a simple fallback. +// - $image: +@mixin susy-background-origin( + $origin +) { + @if susy-support(background-options, (mixin: background-origin)) { + @include background-origin($origin); + } @else { + background-origin: $origin; + } +} + +// Susy Background Clip +// -------------------- +// Check for an existing support mixin, or provide a simple fallback. +// - $image: +@mixin susy-background-clip( + $clip +) { + @if susy-support(background-options, (mixin: background-clip)) { + @include background-clip($clip); + } @else { + background-clip: $clip; + } +} diff --git a/assets/_scss/vendor/susy/susy/output/support/_box-sizing.scss b/assets/_scss/vendor/susy/susy/output/support/_box-sizing.scss new file mode 100644 index 00000000..bf50bbc9 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/support/_box-sizing.scss @@ -0,0 +1,19 @@ +// Box Sizing +// ========== + +// Box Sizing +// ---------- +// Check for an existing support mixin, or provide a simple fallback. +// - $model: +@mixin susy-box-sizing( + $model: content-box +) { + @if $model { + @if susy-support(box-sizing, (mixin: box-sizing), $warn: false) { + @include box-sizing($model); + } @else { + $prefix: (moz, webkit, official); + @include susy-prefix(box-sizing, $model, $prefix); + } + } +} diff --git a/assets/_scss/vendor/susy/susy/output/support/_clearfix.scss b/assets/_scss/vendor/susy/susy/output/support/_clearfix.scss new file mode 100644 index 00000000..48c6e7b7 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/support/_clearfix.scss @@ -0,0 +1,18 @@ +// Susy Fallback Clearfix +// ====================== + + +// Clearfix +// -------- +// Check for an existing support mixin, or provide a simple fallback. +@mixin susy-clearfix { + @if susy-support(clearfix, (mixin: clearfix)) { + @include clearfix; + } @else { + &:after { + content: " "; + display: block; + clear: both; + } + } +} diff --git a/assets/_scss/vendor/susy/susy/output/support/_prefix.scss b/assets/_scss/vendor/susy/susy/output/support/_prefix.scss new file mode 100644 index 00000000..f4e26ecc --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/support/_prefix.scss @@ -0,0 +1,19 @@ +// Susy Prefix +// =========== + +// Prefix +// ------ +// Output simple prefixed properties. +// - $prop : +// - $val : +// - [$prefix] : +@mixin susy-prefix( + $prop, + $val, + $prefix: official +) { + @each $fix in $prefix { + $fix: if($fix == official or not($fix), $prop, '-#{$fix}-#{$prop}'); + @include susy-rem($fix, $val); + } +} diff --git a/assets/_scss/vendor/susy/susy/output/support/_rem.scss b/assets/_scss/vendor/susy/susy/output/support/_rem.scss new file mode 100644 index 00000000..0a807f79 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/support/_rem.scss @@ -0,0 +1,22 @@ +// rem Support +// =========== + +// rem +// --- +// Check for an existing support mixin, or output directly. +// - $prop : +// - $val : +@mixin susy-rem( + $prop, + $val +) { + $_reqs: ( + variable: rhythm-unit rem-with-px-fallback, + mixin: rem, + ); + @if susy-support(rem, $_reqs, $warn: false) and $rhythm-unit == rem { + @include rem($prop, $val); + } @else { + #{$prop}: $val; + } +} diff --git a/assets/_scss/vendor/susy/susy/output/support/_support.scss b/assets/_scss/vendor/susy/susy/output/support/_support.scss new file mode 100644 index 00000000..96991135 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/output/support/_support.scss @@ -0,0 +1,85 @@ +// Browser Support +// =============== + +// Susy Support Defaults +// --------------------- +@include susy-defaults(( + use-custom: ( + clearfix: false, + background-image: true, + background-options: false, + breakpoint: true, + box-sizing: true, + rem: true, + ), +)); + + +// Susy Support [mixin] +// -------------------- +// Send property-value pairs to the proper support modules. +// - $prop : +// - $val : +@mixin susy-support( + $prop, + $val +) { + // Background Support + @if $prop == background-image { + @include susy-background-image($val); + } @else if $prop == background-size { + @include susy-background-size($val); + } @else if $prop == background-origin { + @include susy-background-origin($val); + } @else if $prop == background-clip { + @include susy-background-clip($val); + } + + // Box-Sizing Support + @else if $prop == box-sizing { + @include susy-box-sizing($val); + } + + // Rem Support + @else { + @include susy-rem($prop, $val); + } +} + + +// Susy Support [function] +// ----------------------- +// Check for support of a feature. +// - $feature : +// - e.g "rem" or "box-sizing" +// - $requirements : +// - e.g (variable: rem-with-px-fallback, mixin: rem) +// - $warn : +@function susy-support( + $feature, + $requirements: (), + $warn: true +) { + $_support: susy-get(use-custom $feature); + + @if $_support { + $_fail: false; + + @each $_type, $_req in $requirements { + @each $_i in $_req { + $_pass: call(unquote("#{$_type}-exists"), $_i); + + @if not($_pass) { + $_fail: true; + @if $warn { + @warn "You requested custom support of #{$feature}, but the #{$_i} #{$_type} is not available."; + } + } + } + } + + $_support: if($_fail, false, $_support); + } + + @return $_support; +} diff --git a/assets/_scss/vendor/susy/susy/su/_grid.scss b/assets/_scss/vendor/susy/susy/su/_grid.scss new file mode 100644 index 00000000..7fe2a02d --- /dev/null +++ b/assets/_scss/vendor/susy/susy/su/_grid.scss @@ -0,0 +1,103 @@ +// Column math +// =========== + + +// Is Symmetrical +// -------------- +// Returns true if a grid is symmetrical. +// - [$columns] : | +@function is-symmetrical( + $columns: susy-get(columns) +) { + $columns: valid-columns($columns); + @return if(type-of($columns) == number, $columns, null); +} + + +// Susy Count +// ---------- +// Find the number of columns in a given layout +// - [$columns] : | +@function susy-count( + $columns: susy-get(columns) +) { + $columns: valid-columns($columns); + @return is-symmetrical($columns) or length($columns); +} + + +// Susy Sum +// -------- +// Find the total sum of column-units in a layout +// - [$columns] : | +// - [$gutters] : +// - [$spread] : false/narrow | wide | wider +@function susy-sum( + $columns : susy-get(columns), + $gutters : susy-get(gutters), + $spread : false +) { + $columns: valid-columns($columns); + $gutters: valid-gutters($gutters); + + $spread: if($spread == wide, 0, if($spread == wider, 1, -1)); + $gutter-sum: (susy-count($columns) + $spread) * $gutters; + $column-sum: is-symmetrical($columns); + + @if not($column-sum) { + @each $column in $columns { + $column-sum: ($column-sum or 0) + $column; + } + } + + @return $column-sum + $gutter-sum; +} + + +// Susy Slice +// ---------- +// Return a subset of columns at a given location. +// - $span : +// - $location : +// - [$columns] : | +@function susy-slice( + $span, + $location, + $columns: susy-get(columns) +) { + $columns: valid-columns($columns); + $sub-columns: $span; + + @if not(is-symmetrical($columns)) { + $location: $location or 1; + $sub-columns: (); + @for $i from $location to ($location + $span) { + $sub-columns: append($sub-columns, nth($columns, $i)); + } + } + + @return $sub-columns; +} + + +// Susy +// ---- +// Find the sum of a column-span. +// - $span : +// - $location : +// - [$columns] : | +// - [$gutters] : +// - [$spread] : false/narrow | wide | wider +@function susy( + $span, + $location : false, + $columns : susy-get(columns), + $gutters : susy-get(gutters), + $spread : false +) { + $columns: valid-columns($columns); + $gutters: valid-gutters($gutters); + $span: susy-slice($span, $location, $columns); + + @return susy-sum($span, $gutters, $spread); +} diff --git a/assets/_scss/vendor/susy/susy/su/_settings.scss b/assets/_scss/vendor/susy/susy/su/_settings.scss new file mode 100644 index 00000000..8b439aaa --- /dev/null +++ b/assets/_scss/vendor/susy/susy/su/_settings.scss @@ -0,0 +1,73 @@ +// Settings +// ======== + +// Version +// ------- +$su-version: 1.1; + + +// Default Settings +// ---------------- +// PRIVATE: The basic settings +$susy-defaults: ( + columns: 4, + gutters: .25, +); + + +// User Settings +// ------------- +// - Define the $susy variable with a map of your own settings. +// - Set EITHER $column-width OR $container +// - Use $column-width for static layouts +$susy: () !default; + + +// Susy Defaults +// ------------- +// PRIVATE: Add defaults to Susy +@mixin susy-defaults( + $defaults +) { + $susy-defaults: map-merge($susy-defaults, $defaults) !global; +} + + +// Susy Set +// -------- +// Change one setting +// - $key : setting name +// - $value : setting value +@mixin susy-set( + $key-value... +) { + $susy: _susy-deep-set($susy, $key-value...) !global; +} + + +// Susy Get +// -------- +// Return one setting from a grid +// - $key : +// - $layout : +@function susy-get( + $key, + $layout: map-merge($susy-defaults, $susy) +) { + $layout: parse-grid($layout); + $_options: $layout $susy $susy-defaults; + $_break: false; + $_return: null; + + @each $opt in $_options { + @if type-of($opt) == map and not($_break) { + $_keyset: _susy-deep-has-key($opt, $key...); + @if $_keyset { + $_return: _susy-deep-get($opt, $key...); + $_break: true; + } + } + } + + @return $_return; +} diff --git a/assets/_scss/vendor/susy/susy/su/_utilities.scss b/assets/_scss/vendor/susy/susy/su/_utilities.scss new file mode 100644 index 00000000..b737f212 --- /dev/null +++ b/assets/_scss/vendor/susy/susy/su/_utilities.scss @@ -0,0 +1,111 @@ +// Map Functions +// ============= + + +// Truncate List +// ------------- +// - Return a list, truncated to a given length +@function _susy-truncate-list( + $list, + $length +) { + $_return: (); + + @for $i from 1 through length($list) { + $_return: if($i <= $length, append($_return, nth($list, $i)), $_return); + } + + @return $_return; +} + + +// Deep Get +// -------- +// - Return a value deep in nested maps +@function _susy-deep-get( + $map, + $keys... +) { + $_return: $map; + + @each $key in $keys { + @if type-of($_return) == map { + $_return: map-get($_return, $key); + } + } + + @return $_return; +} + + +// Deep Set +// -------- +// - Set a value deep in nested maps +@function _susy-deep-set( + $map, + $keys-value... +) { + $_value: nth($keys-value, -1); + $_keys: _susy-truncate-list($keys-value, length($keys-value) - 1); + $_length: length($_keys); + $_return: (); + + @for $i from 1 through $_length { + $_n: 0 - $i; + $_level: _susy-truncate-list($_keys, $_length + $_n); + $_level: _susy-deep-get($map, $_level...); + $_merge: nth($_keys, $_n); + $_merge: ($_merge: $_value); + $_return: if($_level, map-merge($_level, $_merge), $_merge); + $_value: $_return; + } + + @return $_return; +} + + +// Deep Merge +// ---------- +// Return 2 objects of any depth, merged +@function _susy-deep-merge( + $map1, + $map2 +) { + + @if type-of($map1) != map or type-of($map2) != map { + $map1: $map2; + } @else { + @each $key, $value in $map2 { + $_new: ($key: _susy_deep-merge(map-get($map1, $key), $value)); + $map1: map-merge($map1, $_new); + } + } + + @return $map1; +} + + +// Deep Has-Key +// ------------ +// - Return true if a deep key exists +@function _susy-deep-has-key( + $map, + $keys... +) { + $_return: null; + $_stop: false; + + @each $key in $keys { + @if not($_stop) { + $_return: map-has-key($map, $key); + } + + @if $_return { + $map: map-get($map, $key); + } @else { + $_stop: true; + } + } + + @return $_return; +} diff --git a/assets/_scss/vendor/susy/susy/su/_validation.scss b/assets/_scss/vendor/susy/susy/su/_validation.scss new file mode 100644 index 00000000..4c6ab8da --- /dev/null +++ b/assets/_scss/vendor/susy/susy/su/_validation.scss @@ -0,0 +1,57 @@ +// Math Validation +// =============== + + +// Valid Columns +// ------------- +// Check that a column setting is valid. +@function valid-columns( + $columns, + $silent: false +) { + $type: type-of($columns); + $return: null; + + @if $type == number and unitless($columns) { + $return: $columns; + } @else if $type == list { + $fail: null; + @each $col in $columns { + @if type-of($col) == number { + $fail: $fail or if(unitless($col), null, true); + } @else { + $fail: true; + } + } + $return: if($fail, $return, $columns); + } + + @if $return != $columns and not($silent) { + $return: null; + $warn: '$columns must be a unitless number or list of unitless numbers.'; + @warn $warn + ' Current value [#{$type}]: #{$columns}'; + } + + @return $return; +} + + +// Valid Gutters +// ------------- +// Check that a gutter setting is valid. +@function valid-gutters( + $gutters, + $silent: false +) { + $type: type-of($gutters); + $return: null; + + @if $type == number and unitless($gutters) { + $return: $gutters; + } @else if not($silent) { + $warn: '$gutters must be a unitless number.'; + @warn $warn + ' Current value [#{$type}]: #{$gutters}'; + } + + @return $return; +} diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100644 index 00000000..d6832b67 --- /dev/null +++ b/assets/css/main.css @@ -0,0 +1,4 @@ +a:focus{outline:thin dotted #f89406;outline:5px auto #f89406;outline-offset:-2px}*,*:before,*:after{box-sizing:border-box}html{box-sizing:border-box;background-color:#fff;font-size:16px;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}@media (min-width: 48em){html{font-size:18px}}body{margin:0}::-moz-selection{color:#fff;background:#000}::selection{color:#fff;background:#000}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}a{color:#52adc8}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}body{margin:0;padding:0;color:#494e52;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;line-height:1.5}body.overflow--hidden{overflow:hidden}h1,h2,h3,h4,h5,h6{margin:2em 0 0.5em;line-height:1.2;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-weight:bold}h1{margin-top:0;font-size:1.563em}h2{font-size:1.25em}h3{font-size:1em}h4{font-size:0.75em}h5{font-size:0.75em}h6{font-size:0.75em}small,.small{font-size:0.75em}p{margin-bottom:1.3em}u,ins{text-decoration:none;border-bottom:1px solid #494e52}u a,ins a{color:inherit}del a{color:inherit}p,pre,blockquote,ul,ol,dl,figure,table,fieldset{orphans:3;widows:3}abbr[title],abbr[data-original-title]{text-decoration:none;cursor:help;border-bottom:1px dotted #494e52}blockquote{margin:2em 1em 2em 0;padding-left:1em;padding-right:1em;font-style:italic;border-left:0.25em solid #7a8288}blockquote cite{font-style:italic}blockquote cite:before{content:"\2014";padding-right:5px}a:hover,a:active{outline:0}tt,code,kbd,samp,pre{font-family:Monaco,Consolas,"Lucida Console",monospace}pre{overflow-x:auto}p>code,a>code,li>code,figcaption>code,td>code{padding-top:0.1rem;padding-bottom:0.1rem;font-size:0.75em;background:#fafafa;border:1px solid #f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}p>code:before,p>code:after,a>code:before,a>code:after,li>code:before,li>code:after,figcaption>code:before,figcaption>code:after,td>code:before,td>code:after{letter-spacing:-0.2em;content:"\00a0"}hr{display:block;margin:1em 0;border:0;border-top:1px solid #f2f3f3}ul li,ol li{margin-bottom:0.5em}li ul,li ol{margin-top:0.5em}figure{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:2em 0}figure img,figure iframe,figure .fluid-width-video-wrapper{margin-bottom:1em}figure img{width:100%;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}figure>a{display:block}@media (min-width: 37.5em){figure.half>a,figure.half>img{width:calc(50% - 0.5em)}}figure.half figcaption{width:100%}@media (min-width: 37.5em){figure.third>a,figure.third>img{width:calc(33.3333% - 0.5em)}}figure.third figcaption{width:100%}figcaption{margin-bottom:0.5em;color:#777a7d;font-family:Georgia,Times,serif;font-size:0.75em}figcaption a{color:inherit;text-decoration:none;border-bottom:1px solid #bdc1c4;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}figcaption a:hover{color:#000;border-bottom-color:#000}svg:not(:root){overflow:hidden}nav ul{margin:0;padding:0}nav li{list-style:none}nav a{text-decoration:none}nav ul li,nav ol li{margin-bottom:0}nav li ul,nav li ol{margin-top:0}b,i,strong,em,blockquote,p,q,span,figure,img,h1,h2,header,input,a,tr,td,form button,input[type="submit"],.btn,#goog-wm-sb,.highlight,.archive__item-teaser{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.hidden{display:none;visibility:hidden}.load{display:none}.transparent{opacity:0}.visually-hidden,.screen-reader-text,.screen-reader-text span,.screen-reader-shortcut{position:absolute !important;clip:rect(1px, 1px, 1px, 1px);height:1px !important;width:1px !important;border:0 !important;overflow:hidden}body:hover .visually-hidden a,body:hover .visually-hidden input,body:hover .visually-hidden button{display:none !important}.screen-reader-text:focus,.screen-reader-shortcut:focus{clip:auto !important;height:auto !important;width:auto !important;display:block;font-size:1em;font-weight:bold;padding:15px 23px 14px;background:#fff;z-index:100000;text-decoration:none;box-shadow:0 0 2px 2px rgba(0,0,0,0.6)}.skip-link{position:fixed;z-index:20;margin:0;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;white-space:nowrap}.skip-link li{height:0;width:0;list-style:none}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.cf{clear:both}.wrapper{max-width:1024px;margin-left:auto;margin-right:auto}.wrapper:after{content:" ";display:block;clear:both}.align-left{display:block;margin-left:auto;margin-right:auto}@media (min-width: 37.5em){.align-left{float:left;margin-right:1em}}.align-right{display:block;margin-left:auto;margin-right:auto}@media (min-width: 37.5em){.align-right{float:right;margin-left:1em}}.align-center{display:block;margin-left:auto;margin-right:auto}@media (min-width: 64em){.full{margin-right:-19.49153% !important}}.icon{display:inline-block;fill:currentColor;width:1em;height:1.1em;line-height:1;position:relative;top:-0.1em;vertical-align:middle}.social-icons .fa{color:#000}.social-icons .fa-behance,.social-icons .fa-behance-square{color:#1769FF}.social-icons .fa-dribbble{color:#ea4c89}.social-icons .fa-facebook,.social-icons .fa-facebook-square{color:#3b5998}.social-icons .fa-twitter,.social-icons .fa-twitter-square{color:#55acee}.social-icons .fa-flickr{color:#ff0084}.social-icons .fa-foursquare{color:#0072b1}.social-icons .fa-github,.social-icons .fa-github-alt,.social-icons .fa-github-square{color:#171516}.social-icons .fa-google-plus,.social-icons .fa-google-plus-square{color:#dd4b39}.social-icons .fa-instagram{color:#517fa4}.social-icons .fa-lastfm,.social-icons .fa-lastfm-square{color:#d51007}.social-icons .fa-linkedin,.social-icons .fa-linkedin-square{color:#007bb6}.social-icons .fa-pinterest,.social-icons .fa-pinterest-p,.social-icons .fa-pinterest-square{color:#cb2027}.social-icons .fa-rss,.social-icons .fa-rss-square{color:#fa9b39}.social-icons .fa-soundcloud{color:#f30}.social-icons .fa-stack-exchange,.social-icons .fa-stack-overflow{color:#fe7a15}.social-icons .fa-tumblr,.social-icons .fa-tumblr-square{color:#32506d}.social-icons .fa-twitter,.social-icons .fa-twitter-square{color:#55acee}.social-icons .fa-vimeo,.social-icons .fa-vimeo-square{color:#1ab7ea}.social-icons .fa-vine{color:#00bf8f}.social-icons .fa-youtube,.social-icons .fa-youtube-square,.social-icons .fa-youtube-play{color:#b00}.social-icons .fa-xing,.social-icons .fa-xing-square{color:#006567}.navicon{position:relative;width:28px;height:4px;background:#fff;margin:auto;-webkit-transition:0.3s;transition:0.3s}.navicon:before,.navicon:after{content:"";position:absolute;left:0;width:28px;height:4px;background:#fff;-webkit-transition:0.3s;transition:0.3s}.navicon:before{top:-8px}.navicon:after{bottom:-8px}.close .navicon{background:transparent}.close .navicon:before,.close .navicon:after{-webkit-transform-origin:50% 50%;transform-origin:50% 50%;top:0;width:28px}.close .navicon:before{-webkit-transform:rotate3d(0, 0, 1, 45deg);transform:rotate3d(0, 0, 1, 45deg)}.close .navicon:after{-webkit-transform:rotate3d(0, 0, 1, -45deg);transform:rotate3d(0, 0, 1, -45deg)}@media (min-width: 48em){.sticky{clear:both;position:-webkit-sticky;position:sticky;top:2em}.sticky::after{clear:both;content:"";display:table}.sticky>*{display:block}}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.footnote{color:#9ba1a6;text-decoration:none}.footnotes{color:#9ba1a6}.footnotes ol,.footnotes li,.footnotes p{margin-bottom:0;font-size:0.75em}a.reversefootnote{color:#7a8288;text-decoration:none}a.reversefootnote:hover{text-decoration:underline}@-webkit-keyframes intro{0%{opacity:0}100%{opacity:1}}@keyframes intro{0%{opacity:0}100%{opacity:1}}table{margin-bottom:1em;width:100%;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:0.75em;border-collapse:collapse;border:1px solid #bdc1c4}table+table{margin-top:1em}thead{background-color:#f2f3f3;border-bottom:1px solid #bdc1c4}th{padding:0.5em;font-weight:bold;text-align:left;border-right:1px solid #bdc1c4}td{padding:0.5em;border-bottom:1px solid #bdc1c4;border-right:1px solid #bdc1c4}tr,td,th{vertical-align:middle}.btn,#goog-wm-sb{display:inline-block;margin-bottom:0.25em;padding:0.5em 1em;color:#fff !important;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:0.75em;font-weight:bold;text-align:center;text-decoration:none;background-color:#7a8288;border:0 !important;border-radius:4px;cursor:pointer}.btn:hover,#goog-wm-sb:hover{background-color:#333}.btn .icon,#goog-wm-sb .icon{margin-right:0.5em}.btn .icon+.hidden,#goog-wm-sb .icon+.hidden{margin-left:-0.5em}.btn--block{display:block;width:100%}.btn--block+.btn--block{margin-top:0.25em}.btn--inverse{color:#7a8288 !important;border:1px solid #bdc1c4 !important;background-color:#fff}.btn--inverse:hover{color:#fff !important;border-color:#7a8288}.btn--light-outline{border:1px solid #fff !important;background-color:transparent}.btn--info{background-color:#52adc8}.btn--info:hover{background-color:#428aa0}.btn--warning{background-color:#f89406}.btn--warning:hover{background-color:#c67605}.btn--success{background-color:#62c462}.btn--success:hover{background-color:#4e9d4e}.btn--danger{background-color:#ee5f5b}.btn--danger:hover{background-color:#be4c49}.btn--disabled{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:0.65}.btn--facebook{background-color:#3b5998}.btn--facebook:hover{background-color:#2f477a}.btn--twitter{background-color:#55acee}.btn--twitter:hover{background-color:#448abe}.btn--google-plus{background-color:#dd4b39}.btn--google-plus:hover{background-color:#b13c2e}.btn--linkedin{background-color:#007bb6}.btn--linkedin:hover{background-color:#006292}.btn--x-large{font-size:1.25em}.btn--large{font-size:1em}.btn--small{font-size:0.6875em}.notice{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:0.75em !important;text-indent:initial;background-color:#f8f9f9;border-radius:4px;box-shadow:0 1px 1px rgba(189,193,196,0.25)}.notice h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice h4{margin-bottom:0;font-size:1em}.notice p:last-child{margin-bottom:0 !important}.notice h4+p{margin-top:0;padding-top:0}.notice a{color:#bdc1c4}.notice a:hover{color:#717476}.notice code{background-color:#fcfcfc}.notice ul:last-child{margin-bottom:0}.notice--primary{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:0.75em !important;text-indent:initial;background-color:#f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(122,130,136,0.25)}.notice--primary h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--primary h4{margin-bottom:0;font-size:1em}.notice--primary p:last-child{margin-bottom:0 !important}.notice--primary h4+p{margin-top:0;padding-top:0}.notice--primary a{color:#7a8288}.notice--primary a:hover{color:#494e52}.notice--primary code{background-color:#f8f9f9}.notice--primary ul:last-child{margin-bottom:0}.notice--info{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:0.75em !important;text-indent:initial;background-color:#eef7fa;border-radius:4px;box-shadow:0 1px 1px rgba(82,173,200,0.25)}.notice--info h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--info h4{margin-bottom:0;font-size:1em}.notice--info p:last-child{margin-bottom:0 !important}.notice--info h4+p{margin-top:0;padding-top:0}.notice--info a{color:#52adc8}.notice--info a:hover{color:#316878}.notice--info code{background-color:#f6fbfc}.notice--info ul:last-child{margin-bottom:0}.notice--warning{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:0.75em !important;text-indent:initial;background-color:#fef4e6;border-radius:4px;box-shadow:0 1px 1px rgba(248,148,6,0.25)}.notice--warning h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--warning h4{margin-bottom:0;font-size:1em}.notice--warning p:last-child{margin-bottom:0 !important}.notice--warning h4+p{margin-top:0;padding-top:0}.notice--warning a{color:#f89406}.notice--warning a:hover{color:#955904}.notice--warning code{background-color:#fffaf3}.notice--warning ul:last-child{margin-bottom:0}.notice--success{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:0.75em !important;text-indent:initial;background-color:#eff9ef;border-radius:4px;box-shadow:0 1px 1px rgba(98,196,98,0.25)}.notice--success h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--success h4{margin-bottom:0;font-size:1em}.notice--success p:last-child{margin-bottom:0 !important}.notice--success h4+p{margin-top:0;padding-top:0}.notice--success a{color:#62c462}.notice--success a:hover{color:#3b763b}.notice--success code{background-color:#f7fcf7}.notice--success ul:last-child{margin-bottom:0}.notice--danger{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:0.75em !important;text-indent:initial;background-color:#fdefef;border-radius:4px;box-shadow:0 1px 1px rgba(238,95,91,0.25)}.notice--danger h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--danger h4{margin-bottom:0;font-size:1em}.notice--danger p:last-child{margin-bottom:0 !important}.notice--danger h4+p{margin-top:0;padding-top:0}.notice--danger a{color:#ee5f5b}.notice--danger a:hover{color:#8f3937}.notice--danger code{background-color:#fef7f7}.notice--danger ul:last-child{margin-bottom:0}.masthead{position:relative;border-bottom:1px solid #f2f3f3;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.15s;animation-delay:0.15s;z-index:20}.masthead__inner-wrap{max-width:1024px;margin-left:auto;margin-right:auto;clear:both;padding:1em 2em 1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-weight:700;text-transform:uppercase}.masthead__inner-wrap:after{content:" ";display:block;clear:both}.masthead__inner-wrap::after{clear:both;content:"";display:table}@media (min-width: 64em){.masthead__inner-wrap{padding-left:1em;padding-right:1em}}@media (min-width: 80em){.masthead__inner-wrap{max-width:1280px}}.masthead__inner-wrap nav{z-index:10}.masthead__inner-wrap a{text-decoration:none}@media (min-width: 64em){.masthead__menu{padding-left:16.94915%}}@media (min-width: 80em){.masthead__menu{padding-left:21.18644%}}.masthead__menu ul{margin:0;padding:0;clear:both;list-style-type:none}.masthead__menu-item{display:block;list-style-type:none;font-size:0.75em;white-space:nowrap}.masthead__menu-item--lg{font-size:1em}.breadcrumbs{max-width:1024px;margin-left:auto;margin-right:auto;clear:both;margin-top:0;margin-bottom:0;padding-left:2em;padding-right:2em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.30s;animation-delay:0.30s}.breadcrumbs:after{content:" ";display:block;clear:both}.breadcrumbs::after{clear:both;content:"";display:table}@media (min-width: 64em){.breadcrumbs{padding-left:1em;padding-right:1em}}@media (min-width: 80em){.breadcrumbs{max-width:1280px}}.breadcrumbs ol{padding:0;list-style:none;font-size:0.75em}@media (min-width: 64em){.breadcrumbs ol{width:83.05085%;float:right;margin-right:0}}@media (min-width: 80em){.breadcrumbs ol{padding-left:4.23729%}}.breadcrumbs li{display:inline}.breadcrumbs .current{font-weight:bold}.pagination{clear:both;width:100%;float:left;margin-left:0;margin-right:0;clear:both;margin-top:1em;padding-top:1em}.pagination::after{clear:both;content:"";display:table}.pagination ul{margin:0;padding:0;list-style-type:none;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.pagination li{display:block;float:left;margin-left:-1px}.pagination li a{margin-bottom:0.25em;padding:0.5em 1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:14px;font-weight:bold;line-height:1.5;text-align:center;text-decoration:none;color:#9ba1a6;border:1px solid #bdc1c4;border-radius:0}.pagination li a:hover{color:#3e8296}.pagination li a.current{color:#fff;background:#7a8288}.pagination li a.disabled{color:#bdc1c4;pointer-events:none;cursor:not-allowed}.pagination li:first-child{margin-left:0}.pagination li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination--pager{display:block;padding:1em 2em;float:left;width:50%;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em;font-weight:bold;text-align:center;text-decoration:none;color:#9ba1a6;border:1px solid #bdc1c4;border-radius:4px}.pagination--pager:hover{color:#3e8296}.pagination--pager:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.pagination--pager:last-child{margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.pagination--pager.disabled{color:#bdc1c4;pointer-events:none;cursor:not-allowed}.page__content+.pagination,.page__meta+.pagination,.page__share+.pagination,.page__comments+.pagination{margin-top:2em;padding-top:2em;border-top:1px solid #f2f3f3}.greedy-nav{position:relative;min-width:250px;background:#fff}.greedy-nav a{display:block;margin:0 1rem;padding:0.5rem 0;color:#7a8288;text-decoration:none}.greedy-nav a:hover{color:#5c6266}.greedy-nav button{position:absolute;height:100%;right:0;padding:0 0.5rem;border:0;outline:none;background-color:#7a8288;color:#fff;cursor:pointer}.greedy-nav .visible-links{display:table}.greedy-nav .visible-links li{display:table-cell;vertical-align:middle}.greedy-nav .visible-links li:first-child{font-weight:bold}.greedy-nav .visible-links li:first-child a{margin-left:0}.greedy-nav .visible-links li:last-child a{margin-right:0}.greedy-nav .visible-links a{position:relative}.greedy-nav .visible-links a:before{content:"";position:absolute;bottom:0;height:4px;background:#bdc1c4;width:0;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.greedy-nav .visible-links a:hover:before{width:100%}.greedy-nav .hidden-links{position:absolute;top:100%;right:0;margin-top:15px;padding:5px;border:1px solid #f2f3f3;border-radius:4px;background:#fff;box-shadow:0 0 10px rgba(0,0,0,0.25)}.greedy-nav .hidden-links a{margin:0;padding:10px 20px;font-size:1em}.greedy-nav .hidden-links a:hover{color:#5c6266;background:#dee0e1}.greedy-nav .hidden-links:before{content:"";position:absolute;top:-11px;right:10px;width:0;border-style:solid;border-width:0 10px 10px;border-color:#f2f3f3 transparent;display:block;z-index:0}.greedy-nav .hidden-links:after{content:"";position:absolute;top:-10px;right:10px;width:0;border-style:solid;border-width:0 10px 10px;border-color:#fff transparent;display:block;z-index:1}.greedy-nav .hidden-links li{display:block;border-bottom:1px solid #f2f3f3}.greedy-nav .hidden-links li:last-child{border-bottom:none}.nav__list{font-size:1.25rem}.nav__list ul{margin-bottom:1em}.nav__list a{display:block;padding:0.125em 0;color:inherit}.nav__list a:hover{text-decoration:underline}.nav__list .active{margin-left:-0.5em;padding-left:0.5em;padding-right:0.5em;color:#fff;font-weight:bold;background:#7a8288;border-radius:4px}.nav__list .active:hover{color:#fff}.nav__title{margin:0;padding:0.5rem 1rem;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em;font-weight:bold}.nav__sub-title{display:block;margin:0.5rem 0;padding:0.5rem 0;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:0.75em;font-weight:bold;text-transform:uppercase;border-bottom:1px solid #f2f3f3}.toc{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;color:#7a8288;text-transform:uppercase;letter-spacing:1px;background-color:#fff;border:1px solid #f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}.toc .nav__title{color:#fff;font-size:0.75em;background:#7a8288;border-top-left-radius:4px;border-top-right-radius:4px}.toc__menu{margin:0;padding:0;width:100%;list-style:none;font-size:0.8rem}.toc__menu a{display:block;padding:0.5rem 1rem;color:#7a8288;font-size:0.6875em;font-weight:bold;line-height:1.5;border-bottom:1px solid #f2f3f3}.toc__menu a:hover{color:#000;background:#f2f3f3}.toc__menu>li:last-child a{border-bottom:none}.toc__menu li ul>li a{padding-left:2rem;font-weight:normal}.toc__menu li>ul li{display:none}@media (min-width: 48em){.toc__menu li>ul li{display:block}}.page__footer{max-width:1024px;margin-left:auto;margin-right:auto;clear:both;margin-top:3em;padding:0 2em 3em;color:#9ba1a6;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.45s;animation-delay:0.45s}.page__footer:after{content:" ";display:block;clear:both}.page__footer::after{clear:both;content:"";display:table}@media (min-width: 64em){.page__footer{padding-left:1em;padding-right:1em}}@media (min-width: 80em){.page__footer{max-width:1280px}}.page__footer a{color:inherit;text-decoration:none}.page__footer a:hover{text-decoration:underline}.page__footer-copyright{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:0.6875em}@media (min-width: 64em){.page__footer-copyright{padding-left:16.94915%}}@media (min-width: 80em){.page__footer-copyright{padding-left:21.18644%}}@media (min-width: 64em){.page__footer-follow{padding-left:16.94915%}}@media (min-width: 80em){.page__footer-follow{padding-left:21.18644%}}.page__footer-follow ul{margin:0;padding:0;list-style-type:none}.page__footer-follow li{display:inline-block;padding-top:5px;padding-bottom:5px;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:0.75em;text-transform:uppercase}.page__footer-follow li+li:before{content:"";padding-right:5px}.page__footer-follow a{padding-right:10px;font-weight:bold}div.highlighter-rouge,figure.highlight{position:relative;margin-bottom:1em;padding:1em;border:1px solid #f2f3f3;border-radius:4px;background-color:#fafafa;box-shadow:0 1px 1px rgba(0,0,0,0.125)}div.highlighter-rouge:before,figure.highlight:before{position:absolute;top:0;right:0;padding:0.5em;background-color:#f2f3f3;content:"\f121";font-family:"fontawesome" !important;font-size:0.75em;line-height:1;text-transform:none;speak:none}div.highlighter-rouge .highlight,figure.highlight .highlight{margin:0;font-family:Monaco,Consolas,"Lucida Console",monospace;font-size:0.6875em;line-height:1.8}.highlight table td{padding:5px}.highlight table pre{margin:0}.highlight .c{color:#93a1a1}.highlight .err{color:#586e75}.highlight .g{color:#586e75}.highlight .k{color:#859900}.highlight .l{color:#586e75}.highlight .n{color:#586e75}.highlight .o{color:#859900}.highlight .x{color:#cb4b16}.highlight .p{color:#586e75}.highlight .cm{color:#93a1a1}.highlight .cp{color:#859900}.highlight .c1{color:#93a1a1}.highlight .cs{color:#859900}.highlight .gd{color:#2aa198}.highlight .ge{color:#586e75;font-style:italic}.highlight .gr{color:#dc322f}.highlight .gh{color:#cb4b16}.highlight .gi{color:#859900}.highlight .go{color:#586e75}.highlight .gp{color:#586e75}.highlight .gs{color:#586e75;font-weight:bold}.highlight .gu{color:#cb4b16}.highlight .gt{color:#586e75}.highlight .kc{color:#cb4b16}.highlight .kd{color:#22b3eb}.highlight .kn{color:#859900}.highlight .kp{color:#859900}.highlight .kr{color:#22b3eb}.highlight .kt{color:#dc322f}.highlight .ld{color:#586e75}.highlight .m{color:#2aa198}.highlight .s{color:#2aa198}.highlight .na{color:#586e75}.highlight .nb{color:#B58900}.highlight .nc{color:#22b3eb}.highlight .no{color:#cb4b16}.highlight .nd{color:#22b3eb}.highlight .ni{color:#cb4b16}.highlight .ne{color:#cb4b16}.highlight .nf{color:#22b3eb}.highlight .nl{color:#586e75}.highlight .nn{color:#586e75}.highlight .nx{color:#586e75}.highlight .py{color:#586e75}.highlight .nt{color:#22b3eb}.highlight .nv{color:#22b3eb}.highlight .ow{color:#859900}.highlight .w{color:#586e75}.highlight .mf{color:#2aa198}.highlight .mh{color:#2aa198}.highlight .mi{color:#2aa198}.highlight .mo{color:#2aa198}.highlight .sb{color:#93a1a1}.highlight .sc{color:#2aa198}.highlight .sd{color:#586e75}.highlight .s2{color:#2aa198}.highlight .se{color:#cb4b16}.highlight .sh{color:#586e75}.highlight .si{color:#2aa198}.highlight .sx{color:#2aa198}.highlight .sr{color:#dc322f}.highlight .s1{color:#2aa198}.highlight .ss{color:#2aa198}.highlight .bp{color:#22b3eb}.highlight .vc{color:#22b3eb}.highlight .vg{color:#22b3eb}.highlight .vi{color:#22b3eb}.highlight .il{color:#2aa198}btnform{margin:0 0 5px 0}btnform fieldset{margin-bottom:5px;padding:0;border-width:0}btnform legend{display:block;width:100%;margin-bottom:10px;*margin-left:-7px;padding:0;color:#494e52;border:0;border-bottom:1px solid #ccc;white-space:normal}btnform p{margin-bottom:5px / 2}btnform ul{list-style-type:none;margin:0 0 5px 0;padding:0}btnform br{display:none}label,input,button,select,textarea{vertical-align:baseline;*vertical-align:middle}input,button,select,textarea{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;box-sizing:border-box}label{display:block;margin-bottom:10px / 8;font-weight:bold;color:#494e52;cursor:pointer}label input,label textarea,label select{display:block}input,textarea,select{display:inline-block;width:100%;padding:4px;margin-bottom:5px / 4;background-color:#fff;border:1px solid #ccc;color:#494e52}input:hover,textarea:hover,select:hover{border-color:#bdc1c4}.input-mini{width:60px}.input-small{width:90px}input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer;border-radius:0;border:0 \9}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="image"]{border:0;box-shadow:none}input[type="file"]{width:auto;padding:initial;line-height:initial;border:initial;background-color:transparent;background-color:initial;box-shadow:none}input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;cursor:pointer;*overflow:visible}select,input[type="file"]{*margin-top:4px}select{width:auto;background-color:#fff}select[multiple],select[size]{height:auto}textarea{resize:vertical;height:auto;overflow:auto;vertical-align:top}input[type="hidden"]{display:none}.radio,.checkbox{padding-left:18px;font-weight:normal}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{opacity:0.5;cursor:not-allowed}input:focus,textarea:focus{border-color:#7a8288;outline:0;outline:thin dotted \9}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus,select:focus{box-shadow:none}.help-block,.help-inline{color:#52adc8}.help-block{display:block;margin-bottom:1em;line-height:1em}.help-inline{display:inline-block;vertical-align:middle;padding-left:5px}.form-inline input,.form-inline textarea,.form-inline select{display:inline-block;margin-bottom:0}.form-inline label{display:inline-block}.form-inline .radio,.form-inline .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px}.form-search input,.form-search textarea,.form-search select{display:inline-block;margin-bottom:0}.form-search .search-query{padding-left:14px;padding-right:14px;margin-bottom:0;border-radius:14px}.form-search label{display:inline-block}.form-search .radio,.form-search .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px}#goog-fixurl ul{list-style:none;margin-left:0;padding-left:0}#goog-fixurl ul li{list-style-type:none}#goog-wm-qt{width:auto;margin-right:10px;margin-bottom:20px;padding:8px 20px;display:inline-block;font-size:0.75em;background-color:#fff;color:#000;border-width:2px !important;border-style:solid !important;border-color:gray;border-radius:4px}#main{max-width:1024px;margin-left:auto;margin-right:auto;clear:both;margin-top:2em;padding-left:2em;padding-right:2em;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.35s;animation-delay:0.35s}#main:after{content:" ";display:block;clear:both}#main::after{clear:both;content:"";display:table}@media (min-width: 64em){#main{padding-left:1em;padding-right:1em}}@media (min-width: 80em){#main{max-width:1280px}}@media (min-width: 64em){.page{width:83.05085%;float:right;margin-right:0;padding-right:16.94915%}}@media (min-width: 80em){.page{padding-left:4.23729%}}.page .page__inner-wrap{clear:both;width:100%;float:left;margin-left:0;margin-right:0}.page .page__inner-wrap .page__content,.page .page__inner-wrap .page__meta,.page .page__inner-wrap .page__share{clear:both;width:100%;float:left;margin-left:0;margin-right:0}.page__title{margin-top:0;line-height:1}.page__title+.page__meta{margin-top:-0.5em}.page__lead{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1.25em}.page__content p,.page__content li,.page__content dl{font-size:1em}.page__content p{margin:0 0 1.3em}.page__content a{text-decoration:none}.page__content a:hover{text-decoration:underline}.page__content a:hover img{box-shadow:0 0 10px rgba(0,0,0,0.25)}.page__content dt{margin-top:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-weight:bold}.page__content dd{margin-left:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:0.75em}.page__content .small{font-size:0.75em}.page__content blockquote+.small{margin-top:-1.5em;padding-left:1.25rem}.page__hero{position:relative;margin-bottom:2em;clear:both;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.25s;animation-delay:0.25s}.page__hero::after{clear:both;content:"";display:table}.page__hero--overlay{position:relative;margin-bottom:2em;padding:3em 0;clear:both;text-align:center;background-size:cover;background-repeat:no-repeat;background-position:center;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.25s;animation-delay:0.25s}.page__hero--overlay::after{clear:both;content:"";display:table}.page__hero--overlay .wrapper{padding-left:2em;padding-right:2em}.page__hero--overlay .page__title,.page__hero--overlay .page__meta,.page__hero--overlay .page__lead,.page__hero--overlay .btn,.page__hero--overlay #goog-wm-sb{color:#fff;text-shadow:1px 1px 4px rgba(0,0,0,0.5)}.page__hero--overlay .page__title{font-size:1.953em}@media (min-width: 37.5em){.page__hero--overlay .page__title{font-size:2.441em}}.page__hero-image{width:100%;height:auto;-ms-interpolation-mode:bicubic}.page__hero-caption{position:absolute;bottom:0;right:0;margin:0 auto;padding:2px 5px;color:#fff;font-family:Georgia,Times,serif;font-size:0.6875em;background:#000;text-align:right;z-index:5;opacity:0.5;border-radius:4px 0 4px 0}@media (min-width: 64em){.page__hero-caption{padding:5px 10px}}.page__hero-caption a{color:#fff;text-decoration:none}.page__share{margin-top:2em;padding-top:1em;border-top:1px solid #f2f3f3}@media (max-width: 37.5em){.page__share .btn span,.page__share #goog-wm-sb span{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}}.page__share-title{margin-bottom:10px;font-size:0.75em;text-transform:uppercase}.page__meta{margin-top:2em;color:#9ba1a6;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:0.75em}.page__meta p{margin:0}.page__meta a{color:inherit}.page__meta-title{margin-bottom:10px;font-size:0.75em;text-transform:uppercase}.page__taxonomy .sep{display:none}.page__taxonomy strong{margin-right:10px}.page__taxonomy-item{display:inline-block;margin-right:5px;margin-bottom:8px;padding:5px 10px;text-decoration:none;border:1px solid #bdc1c4;border-radius:4px}.page__taxonomy-item:hover{text-decoration:none;color:#3e8296}.page__comments{clear:both;width:100%;float:left;margin-left:0;margin-right:0}.page__comments-title{margin-top:2rem;margin-bottom:10px;padding-top:2rem;font-size:0.75em;border-top:1px solid #f2f3f3;text-transform:uppercase}.page__related{margin-top:2em;padding-top:1em;border-top:1px solid #f2f3f3;clear:both;float:left}.page__related::after{clear:both;content:"";display:table}@media (min-width: 64em){.page__related{margin-left:16.94915%}}@media (min-width: 80em){.page__related{margin-left:21.18644%}}.page__related a{color:inherit;text-decoration:none}.page__related-title{margin-bottom:10px;font-size:0.75em;text-transform:uppercase}.archive{margin-bottom:2em}@media (min-width: 48em){.archive{width:100%;float:left;margin-left:0;margin-right:0}}@media (min-width: 64em){.archive{width:83.05085%;float:right;margin-right:0}}@media (min-width: 80em){.archive{padding-left:4.23729%}}.archive a{color:inherit;text-decoration:none}.archive__subtitle{margin:1.414em 0 0;padding-bottom:0.5em;font-size:1em;color:#9ba1a6;border-bottom:1px solid #f2f3f3}.archive__subtitle+.list__item .archive__item-title{margin-top:0.5em}.archive__item-title{margin-bottom:0.25em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em}.archive__item-excerpt{margin-top:0;font-size:0.75em}.archive__item-excerpt+p{text-indent:0}.archive__item-teaser{border-radius:4px;overflow:hidden}.archive__item-teaser img{width:100%}a:hover .archive__item-teaser{box-shadow:0 0 10px rgba(0,0,0,0.25)}a:hover .archive__item-title{text-decoration:underline}@media (min-width: 48em){.list__item{padding-right:200px}}@media (min-width: 64em){.list__item{padding-right:300px}}@media (min-width: 80em){.list__item{padding-right:400px}}.list__item .page__meta{margin:0 0 4px}.grid__item{margin-bottom:2em}.grid__item .page__meta{margin:0 0 4px}.grid__item .archive__item-title{margin-top:0.5em;font-size:1em}.grid__item .archive__item-excerpt{display:none}@media (min-width: 37.5em){.grid__item{width:48.97959%;float:left}.grid__item:nth-child(2n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.grid__item:nth-child(2n+2){margin-left:51.02041%;margin-right:-100%;clear:none}.grid__item .archive__item-teaser{max-height:200px}}@media (min-width: 48em){.grid__item{margin-left:0;margin-right:0;width:23.46939%;float:left}.grid__item:nth-child(4n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.grid__item:nth-child(4n+2){margin-left:25.5102%;margin-right:-100%;clear:none}.grid__item:nth-child(4n+3){margin-left:51.02041%;margin-right:-100%;clear:none}.grid__item:nth-child(4n+4){margin-left:76.53061%;margin-right:-100%;clear:none}.grid__item .archive__item-teaser{max-height:120px}.grid__item .archive__item-excerpt{display:block;font-size:0.75em}}.feature__wrapper{clear:both;margin-bottom:2em;border-bottom:1px solid #f2f3f3}.feature__wrapper::after{clear:both;content:"";display:table}.feature__item{margin-bottom:2em;font-size:1.25rem}@media (min-width: 37.5em){.feature__item{margin-bottom:0;text-align:center;width:32.20339%;float:left}.feature__item:nth-child(3n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.feature__item:nth-child(3n+2){margin-left:33.89831%;margin-right:-100%;clear:none}.feature__item:nth-child(3n+3){margin-left:67.79661%;margin-right:-100%;clear:none}.feature__item .feature__item-teaser{max-height:200px;overflow:hidden}}.feature__item .archive__item-body{padding-left:0.5em;padding-right:0.5em}.feature__item--left{clear:both;width:100%;float:left;margin-left:0;margin-right:0;font-size:1.25rem}.feature__item--left .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item--left .archive__item-teaser{width:40.67797%;float:left;margin-right:1.69492%}.feature__item--left .archive__item-body{width:57.62712%;float:right;margin-right:0;padding-left:4.23729%;padding-right:8.47458%}}.feature__item--right{clear:both;width:100%;float:left;margin-left:0;margin-right:0;font-size:1.25rem}.feature__item--right .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item--right{text-align:right}.feature__item--right .archive__item-teaser{width:40.67797%;float:right;margin-left:1.69492%}.feature__item--right .archive__item-body{width:57.62712%;float:left;margin-left:0;padding-left:4.23729%;padding-right:8.47458%}}.feature__item--center{clear:both;width:100%;float:left;margin-left:0;margin-right:0;font-size:1.25rem}.feature__item--center .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item--center{text-align:center}.feature__item--center .archive__item-teaser{margin:0 auto;width:40.67797%}.feature__item--center .archive__item-body{margin:0 auto;width:57.62712%}}.sidebar{clear:both;margin-bottom:1em}.sidebar::after{clear:both;content:"";display:table}@media (min-width: 64em){.sidebar{width:15.25424%;float:left;margin-right:1.69492%;opacity:0.75;-webkit-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out}.sidebar:hover{opacity:1}}@media (min-width: 80em){.sidebar{padding-right:0}}.sidebar h2,.sidebar h3,.sidebar h4,.sidebar h5,.sidebar h6{margin-bottom:0;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.sidebar h3,.sidebar h4{font-size:1em}.sidebar p,.sidebar li{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:0.75em;line-height:1.5}.sidebar img{width:100%}.sidebar__right{margin-bottom:1em}@media (min-width: 64em){.sidebar__right{float:right;width:200px;margin-left:2.54237%}}@media (min-width: 80em){.sidebar__right{width:300px}}.author__avatar{display:table-cell;vertical-align:top;width:36px;height:36px}@media (min-width: 64em){.author__avatar{display:block;width:auto;height:auto}}.author__avatar img{max-width:110px;border-radius:50%}@media (min-width: 64em){.author__avatar img{padding:5px;border:1px solid #f2f3f3}}.author__content{display:table-cell;vertical-align:top;padding-left:15px;padding-right:25px;line-height:1}@media (min-width: 64em){.author__content{display:block;width:100%;padding-left:0;padding-right:0}}.author__name{margin:0}@media (min-width: 64em){.author__name{margin-top:10px;margin-bottom:10px}}.sidebar .author__name{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em}.author__bio{margin:0}@media (min-width: 64em){.author__bio{margin-top:10px;margin-bottom:20px}}.author__urls-wrapper{position:relative;display:table-cell;vertical-align:top;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;z-index:10;position:relative;cursor:pointer}.author__urls-wrapper li:last-child a{margin-bottom:0}@media (min-width: 64em){.author__urls-wrapper{display:block}}@media (min-width: 64em){.author__urls-wrapper .btn,.author__urls-wrapper #goog-wm-sb{display:none}}.author__urls{display:none;position:absolute;right:0;margin-top:15px;padding:10px;list-style-type:none;border:1px solid #f2f3f3;border-radius:4px;background:#fff;z-index:-1;box-shadow:0 0 10px rgba(0,0,0,0.25)}@media (min-width: 64em){.author__urls{display:block;position:relative;margin:0;padding:0;border:0;background:transparent;box-shadow:none}}.author__urls:before{display:block;content:"";position:absolute;top:-11px;left:calc(50% - 10px);width:0;border-style:solid;border-width:0 10px 10px;border-color:#f2f3f3 transparent;z-index:0}@media (min-width: 64em){.author__urls:before{display:none}}.author__urls:after{display:block;content:"";position:absolute;top:-10px;left:calc(50% - 10px);width:0;border-style:solid;border-width:0 10px 10px;border-color:#fff transparent;z-index:1}@media (min-width: 64em){.author__urls:after{display:none}}.author__urls li{white-space:nowrap}.author__urls a{display:block;margin-bottom:5px;padding-right:5px;padding-top:2px;padding-bottom:2px;color:inherit;font-size:1em;text-decoration:none}.author__urls a:hover{text-decoration:underline}/*! + * Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.5.0");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.5.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff2?v=4.5.0") format("woff2"),url("../fonts/fontawesome-webfont.woff?v=4.5.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.5.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.5.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px / 1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:0.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:0.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0);-webkit-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{-webkit-filter:none;filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before{content:""}.fa-check-circle:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-hotel:before,.fa-bed:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-yc:before,.fa-y-combinator:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-tv:before,.fa-television:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.mfp-counter{font-family:Georgia,Times,serif}.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#000;opacity:0.8;filter:alpha(opacity=80)}.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:none !important;-webkit-backface-visibility:hidden}.mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:0 8px;box-sizing:border-box}.mfp-container:before{content:'';display:inline-block;height:100%;vertical-align:middle}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.mfp-inline-holder .mfp-content,.mfp-ajax-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-close,.mfp-arrow,.mfp-preloader,.mfp-counter{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none !important}.mfp-preloader{color:#ccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-0.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#ccc}.mfp-preloader a:hover{color:#fff}.mfp-s-ready .mfp-preloader{display:none}.mfp-s-error .mfp-content{display:none}button.mfp-close,button.mfp-arrow{overflow:visible;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;display:block;outline:none;padding:0;z-index:1046;box-shadow:none}button::-moz-focus-inner{padding:0;border:0}.mfp-close{width:44px;height:44px;line-height:44px;position:absolute;right:0;top:0;text-decoration:none;text-align:center;opacity:1;filter:alpha(opacity=100);padding:0 0 18px 10px;color:#fff;font-style:normal;font-size:28px;font-family:Georgia,Times,serif}.mfp-close:hover,.mfp-close:focus{opacity:1;filter:alpha(opacity=100)}.mfp-close:active{top:1px}.mfp-close-btn-in .mfp-close{color:#fff}.mfp-image-holder .mfp-close,.mfp-iframe-holder .mfp-close{color:#fff;right:-6px;text-align:right;padding-right:6px;width:100%}.mfp-counter{position:absolute;top:0;right:0;color:#ccc;font-size:12px;line-height:18px}.mfp-arrow{position:absolute;opacity:1;filter:alpha(opacity=100);margin:0;top:50%;margin-top:-55px;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:transparent}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:hover,.mfp-arrow:focus{opacity:1;filter:alpha(opacity=100)}.mfp-arrow:before,.mfp-arrow:after,.mfp-arrow .mfp-b,.mfp-arrow .mfp-a{content:'';display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:medium inset transparent}.mfp-arrow:after,.mfp-arrow .mfp-a{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow:before,.mfp-arrow .mfp-b{border-top-width:21px;border-bottom-width:21px;opacity:0.7}.mfp-arrow-left{left:0}.mfp-arrow-left:after,.mfp-arrow-left .mfp-a{border-right:17px solid #fff;margin-left:31px}.mfp-arrow-left:before,.mfp-arrow-left .mfp-b{margin-left:25px;border-right:27px solid #fff}.mfp-arrow-right{right:0}.mfp-arrow-right:after,.mfp-arrow-right .mfp-a{border-left:17px solid #fff;margin-left:39px}.mfp-arrow-right:before,.mfp-arrow-right .mfp-b{border-left:27px solid #fff}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,0.6);background:#000}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;line-height:0;box-sizing:border-box;padding:40px 0 40px;margin:0 auto}.mfp-figure{line-height:0}.mfp-figure:after{content:'';position:absolute;left:0;top:40px;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,0.6);background:#444}.mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.mfp-figure figure{margin:0}.mfp-figure figcaption{margin-top:0;margin-bottom:0}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{text-align:left;line-height:18px;color:#f3f3f3;word-wrap:break-word;padding-right:36px}.mfp-image-holder .mfp-content{max-width:100%}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,0.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .mfp-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,0.6);position:fixed;text-align:center;padding:0}}@media all and (max-width: 900px){.mfp-arrow{-webkit-transform:scale(0.75);transform:scale(0.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}.mfp-ie7 .mfp-img{padding:0}.mfp-ie7 .mfp-bottom-bar{width:600px;left:50%;margin-left:-300px;margin-top:5px;padding-bottom:5px}.mfp-ie7 .mfp-container{padding:0}.mfp-ie7 .mfp-content{padding-top:44px}.mfp-ie7 .mfp-close{top:0;right:0;padding-top:0}@media print{.masthead,.toc,.page__share,.page__related,.ads,.page__footer{display:none}} diff --git a/assets/css/main.scss b/assets/css/main.scss deleted file mode 100644 index 415db85b..00000000 --- a/assets/css/main.scss +++ /dev/null @@ -1,29 +0,0 @@ ---- -sitemap: false ---- - -/* - * - * Minimal Mistakes - * - * Designer: Michael Rose - * Twitter: http://twitter.com/mmistakes - * -*/ - -// Partials -@import "variables"; -@import "grid"; -@import "mixins"; -@import "normalize"; -@import "site"; -@import "typography"; -@import "syntax"; -@import "coderay"; -@import "elements"; -@import "forms"; -@import "page"; -@import "vendor/font-awesome/font-awesome"; -@import "vendor/magnific-popup/magnific-popup"; -//@import "vendor/google/fonts"; -@import "print"; \ No newline at end of file diff --git a/assets/js/_main.js b/assets/js/_main.js index 8138d0d7..6665cfe8 100644 --- a/assets/js/_main.js +++ b/assets/js/_main.js @@ -1,54 +1,54 @@ -/*! Responsive Menu */ -// http://tympanus.net/codrops/2013/05/08/responsive-retina-ready-menu/ -// The function to change the class -var changeClass = function (r,className1,className2) { - var regex = new RegExp("(?:^|\\s+)" + className1 + "(?:\\s+|$)"); - if( regex.test(r.className) ) { - r.className = r.className.replace(regex,' '+className2+' '); +/* ========================================================================== + jQuery plugin settings and other scripts + ========================================================================== */ + +$(document).ready(function(){ + + // FitVids init + $("#main").fitVids(); + + // init sticky sidebar + $(".sticky").Stickyfill(); + + var stickySideBar = function(){ + var windowWidth = $(window).width(); + if (windowWidth > 1024) { + // fix + Stickyfill.rebuild(); + Stickyfill.init(); + } else { + // unfix + Stickyfill.stop(); } - else{ - r.className = r.className.replace(new RegExp("(?:^|\\s+)" + className2 + "(?:\\s+|$)"),' '+className1+' '); - } - return r.className; -}; -// Creating our button in JS for smaller screens -var menuElements = document.getElementById('site-nav'); -menuElements.insertAdjacentHTML('afterBegin',''); + }; -// Toggle the class on click to show / hide the menu -document.getElementById('menutoggle').onclick = function() { - changeClass(this, 'navtoggle active', 'navtoggle'); -}; -// http://tympanus.net/codrops/2013/05/08/responsive-retina-ready-menu/comment-page-2/#comment-438918 -document.onclick = function(e) { - var mobileButton = document.getElementById('menutoggle'), - buttonStyle = mobileButton.currentStyle ? mobileButton.currentStyle.display : getComputedStyle(mobileButton, null).display; + stickySideBar(); - if(buttonStyle === 'block' && e.target !== mobileButton && new RegExp(' ' + 'active' + ' ').test(' ' + mobileButton.className + ' ')) { - changeClass(mobileButton, 'navtoggle active', 'navtoggle'); - } -}; - -/*! Plugin options and other jQuery stuff */ - -// FitVids options -$(function() { - $("article").fitVids(); -}); - -// Table of Contents toggle -$(function() { - $(".toc h3").click(function () { - $("#drawer").toggleClass("js-hidden"); + $(window).resize(function(){ + stickySideBar(); }); -}); -// Add lightbox class to all image links -$("a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif']").addClass("image-popup"); + // Follow menu drop down -// Magnific-Popup options -$(document).ready(function() { - $('.image-popup').magnificPopup({ + $(".author__urls-wrapper button").on("click", function() { + $(".author__urls").fadeToggle("fast", function() {}); + $(".author__urls-wrapper button").toggleClass("open"); + }); + + // init smooth scroll + $("a").smoothScroll({offset: -20}); + + // add lightbox class to all image links + $("a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif']").addClass("image-popup"); + + // Magnific-Popup options + $(".image-popup").magnificPopup({ + disableOn: function() { + if( $(window).width() < 500 ) { + return false; + } + return true; + }, type: 'image', tLoading: 'Loading image #%curr%...', gallery: { @@ -59,9 +59,18 @@ $(document).ready(function() { image: { tError: 'Image #%curr% could not be loaded.', }, - removalDelay: 300, // Delay in milliseconds before popup is removed + removalDelay: 500, // Delay in milliseconds before popup is removed // Class that is added to body when popup is open. // make it unique to apply your CSS animations just to this exact popup - mainClass: 'mfp-fade' + mainClass: 'mfp-zoom-in', + callbacks: { + beforeOpen: function() { + // just a hack that adds mfp-anim class to markup + this.st.image.markup = this.st.image.markup.replace('mfp-figure', 'mfp-figure mfp-with-anim'); + } + }, + closeOnContentClick: true, + midClick: true // allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source. }); -}); + +}); \ No newline at end of file diff --git a/assets/js/main.min.js b/assets/js/main.min.js new file mode 100644 index 00000000..b8279055 --- /dev/null +++ b/assets/js/main.min.js @@ -0,0 +1,5 @@ +function updateNav(){var e=$btn.hasClass("hidden")?$nav.width():$nav.width()-$btn.width()-30;$vlinks.width()>e?(breaks.push($vlinks.width()),$vlinks.children().last().prependTo($hlinks),$btn.hasClass("hidden")&&$btn.removeClass("hidden")):(e>breaks[breaks.length-1]&&($hlinks.children().first().appendTo($vlinks),breaks.pop()),breaks.length<1&&($btn.addClass("hidden"),$hlinks.addClass("hidden"))),$btn.attr("count",breaks.length),$vlinks.width()>e&&updateNav()}!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(e){var t=!!e&&"length"in e&&e.length,n=pe.type(e);return"function"===n||pe.isWindow(e)?!1:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function i(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,i){return!!t.call(e,i,e)!==n});if(t.nodeType)return pe.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Te.test(t))return pe.filter(t,e,n);t=pe.filter(t,e)}return pe.grep(e,function(e){return pe.inArray(e,t)>-1!==n})}function r(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t={};return pe.each(e.match(Ae)||[],function(e,n){t[n]=!0}),t}function a(){ie.addEventListener?(ie.removeEventListener("DOMContentLoaded",s),e.removeEventListener("load",s)):(ie.detachEvent("onreadystatechange",s),e.detachEvent("onload",s))}function s(){(ie.addEventListener||"load"===e.event.type||"complete"===ie.readyState)&&(a(),pe.ready())}function l(e,t,n){if(void 0===n&&1===e.nodeType){var i="data-"+t.replace(_e,"-$1").toLowerCase();if(n=e.getAttribute(i),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:Ie.test(n)?pe.parseJSON(n):n}catch(r){}pe.data(e,t,n)}else n=void 0}return n}function u(e){var t;for(t in e)if(("data"!==t||!pe.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function c(e,t,n,i){if(He(e)){var r,o,a=pe.expando,s=e.nodeType,l=s?pe.cache:e,u=s?e[a]:e[a]&&a;if(u&&l[u]&&(i||l[u].data)||void 0!==n||"string"!=typeof t)return u||(u=s?e[a]=ne.pop()||pe.guid++:a),l[u]||(l[u]=s?{}:{toJSON:pe.noop}),("object"==typeof t||"function"==typeof t)&&(i?l[u]=pe.extend(l[u],t):l[u].data=pe.extend(l[u].data,t)),o=l[u],i||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[pe.camelCase(t)]=n),"string"==typeof t?(r=o[t],null==r&&(r=o[pe.camelCase(t)])):r=o,r}}function d(e,t,n){if(He(e)){var i,r,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe.expando]:pe.expando;if(a[s]){if(t&&(i=n?a[s]:a[s].data)){pe.isArray(t)?t=t.concat(pe.map(t,pe.camelCase)):t in i?t=[t]:(t=pe.camelCase(t),t=t in i?[t]:t.split(" ")),r=t.length;for(;r--;)delete i[t[r]];if(n?!u(i):!pe.isEmptyObject(i))return}(n||(delete a[s].data,u(a[s])))&&(o?pe.cleanData([e],!0):de.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function f(e,t,n,i){var r,o=1,a=20,s=i?function(){return i.cur()}:function(){return pe.css(e,t,"")},l=s(),u=n&&n[3]||(pe.cssNumber[t]?"":"px"),c=(pe.cssNumber[t]||"px"!==u&&+l)&&Me.exec(pe.css(e,t));if(c&&c[3]!==u){u=u||c[3],n=n||[],c=+l||1;do o=o||".5",c/=o,pe.style(e,t,c+u);while(o!==(o=s()/l)&&1!==o&&--a)}return n&&(c=+c||+l||0,r=n[1]?c+(n[1]+1)*n[2]:+n[2],i&&(i.unit=u,i.start=c,i.end=r)),r}function p(e){var t=We.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function h(e,t){var n,i,r=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(i=n[r]);r++)!t||pe.nodeName(i,t)?o.push(i):pe.merge(o,h(i,t));return void 0===t||t&&pe.nodeName(e,t)?pe.merge([e],o):o}function m(e,t){for(var n,i=0;null!=(n=e[i]);i++)pe._data(n,"globalEval",!t||pe._data(t[i],"globalEval"))}function g(e){qe.test(e.type)&&(e.defaultChecked=e.checked)}function v(e,t,n,i,r){for(var o,a,s,l,u,c,d,f=e.length,v=p(t),y=[],b=0;f>b;b++)if(a=e[b],a||0===a)if("object"===pe.type(a))pe.merge(y,a.nodeType?[a]:a);else if(Ye.test(a)){for(l=l||v.appendChild(t.createElement("div")),u=($e.exec(a)||["",""])[1].toLowerCase(),d=Xe[u]||Xe._default,l.innerHTML=d[1]+pe.htmlPrefilter(a)+d[2],o=d[0];o--;)l=l.lastChild;if(!de.leadingWhitespace&&Re.test(a)&&y.push(t.createTextNode(Re.exec(a)[0])),!de.tbody)for(a="table"!==u||Ue.test(a)?""!==d[1]||Ue.test(a)?0:l:l.firstChild,o=a&&a.childNodes.length;o--;)pe.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(pe.merge(y,l.childNodes),l.textContent="";l.firstChild;)l.removeChild(l.firstChild);l=v.lastChild}else y.push(t.createTextNode(a));for(l&&v.removeChild(l),de.appendChecked||pe.grep(h(y,"input"),g),b=0;a=y[b++];)if(i&&pe.inArray(a,i)>-1)r&&r.push(a);else if(s=pe.contains(a.ownerDocument,a),l=h(v.appendChild(a),"script"),s&&m(l),n)for(o=0;a=l[o++];)ze.test(a.type||"")&&n.push(a);return l=null,v}function y(){return!0}function b(){return!1}function x(){try{return ie.activeElement}catch(e){}}function w(e,t,n,i,r,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(i=i||n,n=void 0);for(s in t)w(e,s,n,i,t[s],o);return e}if(null==i&&null==r?(r=n,i=n=void 0):null==r&&("string"==typeof n?(r=i,i=void 0):(r=i,i=n,n=void 0)),r===!1)r=b;else if(!r)return e;return 1===o&&(a=r,r=function(e){return pe().off(e),a.apply(this,arguments)},r.guid=a.guid||(a.guid=pe.guid++)),e.each(function(){pe.event.add(this,t,r,i,n)})}function C(e,t){return pe.nodeName(e,"table")&&pe.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function T(e){return e.type=(null!==pe.find.attr(e,"type"))+"/"+e.type,e}function k(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function E(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,i,r,o=pe._data(e),a=pe._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(i=0,r=s[n].length;r>i;i++)pe.event.add(t,n,s[n][i])}a.data&&(a.data=pe.extend({},a.data))}}function S(e,t){var n,i,r;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!de.noCloneEvent&&t[pe.expando]){r=pe._data(t);for(i in r.events)pe.removeEvent(t,i,r.handle);t.removeAttribute(pe.expando)}"script"===n&&t.text!==e.text?(T(t).text=e.text,k(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),de.html5Clone&&e.innerHTML&&!pe.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&qe.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function N(e,t,n,i){t=oe.apply([],t);var r,o,a,s,l,u,c=0,d=e.length,f=d-1,p=t[0],m=pe.isFunction(p);if(m||d>1&&"string"==typeof p&&!de.checkClone&&it.test(p))return e.each(function(r){var o=e.eq(r);m&&(t[0]=p.call(this,r,o.html())),N(o,t,n,i)});if(d&&(u=v(t,e[0].ownerDocument,!1,e,i),r=u.firstChild,1===u.childNodes.length&&(u=r),r||i)){for(s=pe.map(h(u,"script"),T),a=s.length;d>c;c++)o=u,c!==f&&(o=pe.clone(o,!0,!0),a&&pe.merge(s,h(o,"script"))),n.call(e[c],o,c);if(a)for(l=s[s.length-1].ownerDocument,pe.map(s,k),c=0;a>c;c++)o=s[c],ze.test(o.type||"")&&!pe._data(o,"globalEval")&&pe.contains(l,o)&&(o.src?pe._evalUrl&&pe._evalUrl(o.src):pe.globalEval((o.text||o.textContent||o.innerHTML||"").replace(ot,"")));u=r=null}return e}function L(e,t,n){for(var i,r=t?pe.filter(t,e):e,o=0;null!=(i=r[o]);o++)n||1!==i.nodeType||pe.cleanData(h(i)),i.parentNode&&(n&&pe.contains(i.ownerDocument,i)&&m(h(i,"script")),i.parentNode.removeChild(i));return e}function A(e,t){var n=pe(t.createElement(e)).appendTo(t.body),i=pe.css(n[0],"display");return n.detach(),i}function j(e){var t=ie,n=ut[e];return n||(n=A(e,t),"none"!==n&&n||(lt=(lt||pe("',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){t.types.push(z),T("BeforeChange",function(e,t,n){t!==n&&(t===z?W():n===z&&W(!0))}),T(l+"."+z,function(){W()})},getIframe:function(n,i){var r=n.src,o=t.st.iframe;e.each(o.patterns,function(){return r.indexOf(this.index)>-1?(this.id&&(r="string"==typeof this.id?r.substr(r.lastIndexOf(this.id)+this.id.length,r.length):this.id.call(this,r)),r=this.src.replace("%id%",r),!1):void 0});var a={};return o.srcAction&&(a[o.srcAction]=r),t._parseMarkup(i,a,n),t.updateStatus("ready"),i}}});var X=function(e){var n=t.items.length;return e>n-1?e-n:0>e?n+e:e},Y=function(e,t,n){return e.replace(/%curr%/gi,t+1).replace(/%total%/gi,n)};e.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var n=t.st.gallery,i=".mfp-gallery",o=Boolean(e.fn.mfpFastClick);return t.direction=!0,n&&n.enabled?(a+=" mfp-gallery",T(p+i,function(){n.navigateByImgClick&&t.wrap.on("click"+i,".mfp-img",function(){return t.items.length>1?(t.next(),!1):void 0}),r.on("keydown"+i,function(e){37===e.keyCode?t.prev():39===e.keyCode&&t.next()})}),T("UpdateStatus"+i,function(e,n){n.text&&(n.text=Y(n.text,t.currItem.index,t.items.length))}),T(f+i,function(e,i,r,o){var a=t.items.length;r.counter=a>1?Y(n.tCounter,o.index,a):""}),T("BuildControls"+i,function(){if(t.items.length>1&&n.arrows&&!t.arrowLeft){var i=n.arrowMarkup,r=t.arrowLeft=e(i.replace(/%title%/gi,n.tPrev).replace(/%dir%/gi,"left")).addClass(b),a=t.arrowRight=e(i.replace(/%title%/gi,n.tNext).replace(/%dir%/gi,"right")).addClass(b),s=o?"mfpFastClick":"click";r[s](function(){t.prev()}),a[s](function(){t.next()}),t.isIE7&&(k("b",r[0],!1,!0),k("a",r[0],!1,!0),k("b",a[0],!1,!0),k("a",a[0],!1,!0)),t.container.append(r.add(a))}}),T(h+i,function(){t._preloadTimeout&&clearTimeout(t._preloadTimeout),t._preloadTimeout=setTimeout(function(){t.preloadNearbyImages(),t._preloadTimeout=null},16)}),void T(l+i,function(){r.off(i),t.wrap.off("click"+i),t.arrowLeft&&o&&t.arrowLeft.add(t.arrowRight).destroyMfpFastClick(),t.arrowRight=t.arrowLeft=null})):!1},next:function(){t.direction=!0,t.index=X(t.index+1),t.updateItemHTML()},prev:function(){t.direction=!1,t.index=X(t.index-1),t.updateItemHTML()},goTo:function(e){t.direction=e>=t.index,t.index=e,t.updateItemHTML()},preloadNearbyImages:function(){var e,n=t.st.gallery.preload,i=Math.min(n[0],t.items.length),r=Math.min(n[1],t.items.length);for(e=1;e<=(t.direction?r:i);e++)t._preloadItem(t.index+e);for(e=1;e<=(t.direction?i:r);e++)t._preloadItem(t.index-e)},_preloadItem:function(n){if(n=X(n),!t.items[n].preloaded){var i=t.items[n];i.parsed||(i=t.parseEl(n)),E("LazyLoad",i),"image"===i.type&&(i.img=e('').on("load.mfploader",function(){i.hasSize=!0}).on("error.mfploader",function(){i.hasSize=!0,i.loadError=!0,E("LazyLoadError",i)}).attr("src",i.src)),i.preloaded=!0}}}});var U="retina";e.magnificPopup.registerModule(U,{options:{replaceSrc:function(e){return e.src.replace(/\.\w+$/,function(e){return"@2x"+e})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var e=t.st.retina,n=e.ratio;n=isNaN(n)?n():n,n>1&&(T("ImageHasSize."+U,function(e,t){t.img.css({"max-width":t.img[0].naturalWidth/n,width:"100%"})}),T("ElementParse."+U,function(t,i){i.src=e.replaceSrc(i,n)}))}}}}),function(){var t=1e3,n="ontouchstart"in window,i=function(){C.off("touchmove"+o+" touchend"+o)},r="mfpFastClick",o="."+r;e.fn.mfpFastClick=function(r){return e(this).each(function(){var a,s=e(this);if(n){var l,u,c,d,f,p;s.on("touchstart"+o,function(e){d=!1,p=1,f=e.originalEvent?e.originalEvent.touches[0]:e.touches[0],u=f.clientX,c=f.clientY,C.on("touchmove"+o,function(e){f=e.originalEvent?e.originalEvent.touches:e.touches,p=f.length,f=f[0],(Math.abs(f.clientX-u)>10||Math.abs(f.clientY-c)>10)&&(d=!0,i())}).on("touchend"+o,function(e){i(),d||p>1||(a=!0,e.preventDefault(),clearTimeout(l),l=setTimeout(function(){a=!1},t),r())})})}s.on("click"+o,function(){a||r()})})},e.fn.destroyMfpFastClick=function(){e(this).off("touchstart"+o+" click"+o),n&&C.off("touchmove"+o+" touchend"+o)}}(),N()}(window.jQuery||window.Zepto),!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e("object"==typeof module&&module.exports?require("jquery"):jQuery)}(function(e){var t="1.7.2",n={},i={exclude:[],excludeWithin:[],offset:0,direction:"top",delegateSelector:null,scrollElement:null,scrollTarget:null,beforeScroll:function(){},afterScroll:function(){},easing:"swing",speed:400,autoCoefficient:2,preventDefault:!0},r=function(t){var n=[],i=!1,r=t.dir&&"left"===t.dir?"scrollLeft":"scrollTop";return this.each(function(){var t=e(this);return this!==document&&this!==window?!document.scrollingElement||this!==document.documentElement&&this!==document.body?void(t[r]()>0?n.push(this):(t[r](1),i=t[r]()>0,i&&n.push(this),t[r](0))):(n.push(document.scrollingElement),!1):void 0}),n.length||this.each(function(){this===document.documentElement&&"smooth"===e(this).css("scrollBehavior")&&(n=[this]),n.length||"BODY"!==this.nodeName||(n=[this])}),"first"===t.el&&n.length>1&&(n=[n[0]]),n};e.fn.extend({scrollable:function(e){var t=r.call(this,{dir:e});return this.pushStack(t)},firstScrollable:function(e){var t=r.call(this,{el:"first",dir:e});return this.pushStack(t)},smoothScroll:function(t,n){if(t=t||{},"options"===t)return n?this.each(function(){var t=e(this),i=e.extend(t.data("ssOpts")||{},n);e(this).data("ssOpts",i)}):this.first().data("ssOpts");var i=e.extend({},e.fn.smoothScroll.defaults,t),r=function(t){var n=function(e){return e.replace(/(:|\.|\/)/g,"\\$1")},r=this,o=e(this),a=e.extend({},i,o.data("ssOpts")||{}),s=i.exclude,l=a.excludeWithin,u=0,c=0,d=!0,f={},p=e.smoothScroll.filterPath(location.pathname),h=e.smoothScroll.filterPath(r.pathname),m=location.hostname===r.hostname||!r.hostname,g=a.scrollTarget||h===p,v=n(r.hash);if(v&&!e(v).length&&(d=!1),a.scrollTarget||m&&g&&v){for(;d&&u=0;e--)u(I[e])}function u(e){if(e.inited){var t=D.top<=e.limit.start?0:D.top>=e.limit.end?2:1;e.mode!=t&&m(e,t)}}function c(){for(var e=I.length-1;e>=0;e--)if(I[e].inited){var t=Math.abs(b(I[e].clone)-I[e].docOffsetTop),n=Math.abs(I[e].parent.node.offsetHeight-I[e].parent.height);if(t>=2||n>=2)return!1}return!0}function d(e){isNaN(parseFloat(e.computed.top))||e.isCell||"none"==e.computed.display||(e.inited=!0,e.clone||g(e),"absolute"!=e.parent.computed.position&&"relative"!=e.parent.computed.position&&(e.parent.node.style.position="relative"),u(e),e.parent.height=e.parent.node.offsetHeight,e.docOffsetTop=b(e.clone))}function f(e){var t=!0;e.clone&&v(e),i(e.node.style,e.css);for(var n=I.length-1;n>=0;n--)if(I[n].node!==e.node&&I[n].parent.node===e.parent.node){t=!1;break}t&&(e.parent.node.style.position=e.parent.css.position),e.mode=-1}function p(){for(var e=I.length-1;e>=0;e--)d(I[e])}function h(){for(var e=I.length-1;e>=0;e--)f(I[e])}function m(e,t){var n=e.node.style;switch(t){case 0:n.position="absolute",n.left=e.offset.left+"px",n.right=e.offset.right+"px",n.top=e.offset.top+"px",n.bottom="auto",n.width="auto",n.marginLeft=0,n.marginRight=0,n.marginTop=0;break;case 1:n.position="fixed",n.left=e.box.left+"px",n.right=e.box.right+"px",n.top=e.css.top,n.bottom="auto",n.width="auto",n.marginLeft=0,n.marginRight=0,n.marginTop=0;break;case 2:n.position="absolute",n.left=e.offset.left+"px",n.right=e.offset.right+"px",n.top="auto",n.bottom=0,n.width="auto",n.marginLeft=0,n.marginRight=0}e.mode=t}function g(e){e.clone=document.createElement("div");var t=e.node.nextSibling||e.node,n=e.clone.style;n.height=e.height+"px",n.width=e.width+"px",n.marginTop=e.computed.marginTop,n.marginBottom=e.computed.marginBottom,n.marginLeft=e.computed.marginLeft,n.marginRight=e.computed.marginRight,n.padding=n.border=n.borderSpacing=0,n.fontSize="1em",n.position="static",n.cssFloat=e.computed.cssFloat,e.node.parentNode.insertBefore(e.clone,t)}function v(e){e.clone.parentNode.removeChild(e.clone),e.clone=void 0}function y(e){var t=getComputedStyle(e),n=e.parentNode,i=getComputedStyle(n),o=e.style.position;e.style.position="relative";var a={top:t.top,marginTop:t.marginTop,marginBottom:t.marginBottom,marginLeft:t.marginLeft,marginRight:t.marginRight,cssFloat:t.cssFloat,display:t.display},s={top:r(t.top),marginBottom:r(t.marginBottom),paddingLeft:r(t.paddingLeft),paddingRight:r(t.paddingRight),borderLeftWidth:r(t.borderLeftWidth),borderRightWidth:r(t.borderRightWidth)};e.style.position=o;var l={position:e.style.position,top:e.style.top,bottom:e.style.bottom,left:e.style.left,right:e.style.right,width:e.style.width,marginTop:e.style.marginTop,marginLeft:e.style.marginLeft,marginRight:e.style.marginRight},u=x(e),c=x(n),d={node:n,css:{position:n.style.position},computed:{position:i.position},numeric:{borderLeftWidth:r(i.borderLeftWidth),borderRightWidth:r(i.borderRightWidth), +borderTopWidth:r(i.borderTopWidth),borderBottomWidth:r(i.borderBottomWidth)}},f={node:e,box:{left:u.win.left,right:O.clientWidth-u.win.right},offset:{top:u.win.top-c.win.top-d.numeric.borderTopWidth,left:u.win.left-c.win.left-d.numeric.borderLeftWidth,right:-u.win.right+c.win.right-d.numeric.borderRightWidth},css:l,isCell:"table-cell"==t.display,computed:a,numeric:s,width:u.win.right-u.win.left,height:u.win.bottom-u.win.top,mode:-1,inited:!1,parent:d,limit:{start:u.doc.top-s.top,end:c.doc.top+n.offsetHeight-d.numeric.borderBottomWidth-e.offsetHeight-s.top-s.marginBottom}};return f}function b(e){for(var t=0;e;)t+=e.offsetTop,e=e.offsetParent;return t}function x(e){var n=e.getBoundingClientRect();return{doc:{top:n.top+t.pageYOffset,left:n.left+t.pageXOffset},win:n}}function w(){H=setInterval(function(){!c()&&E()},500)}function C(){clearInterval(H)}function T(){_&&(document[P]?C():w())}function k(){_||(o(),p(),t.addEventListener("scroll",a),t.addEventListener("wheel",s),t.addEventListener("resize",E),t.addEventListener("orientationchange",E),e.addEventListener(B,T),w(),_=!0)}function E(){if(_){h();for(var e=I.length-1;e>=0;e--)I[e]=y(I[e].node);p()}}function S(){t.removeEventListener("scroll",a),t.removeEventListener("wheel",s),t.removeEventListener("resize",E),t.removeEventListener("orientationchange",E),e.removeEventListener(B,T),C(),_=!1}function N(){S(),h()}function L(){for(N();I.length;)I.pop()}function A(e){for(var t=I.length-1;t>=0;t--)if(I[t].node===e)return;var n=y(e);I.push(n),_?d(n):k()}function j(e){for(var t=I.length-1;t>=0;t--)I[t].node===e&&(f(I[t]),I.splice(t,1))}var D,H,I=[],_=!1,O=e.documentElement,M=function(){},P="hidden",B="visibilitychange";void 0!==e.webkitHidden&&(P="webkitHidden",B="webkitvisibilitychange"),t.getComputedStyle||n();for(var F=["","-webkit-","-moz-","-ms-"],q=document.createElement("div"),$=F.length-1;$>=0;$--){try{q.style.position=F[$]+"sticky"}catch(z){}""!=q.style.position&&n()}o(),t.Stickyfill={stickies:I,add:A,remove:j,init:k,rebuild:E,pause:S,stop:N,kill:L}}(document,window),window.jQuery&&!function(e){e.fn.Stickyfill=function(){return this.each(function(){Stickyfill.add(this)}),this}}(window.jQuery),$(document).ready(function(){$("#main").fitVids(),$(".sticky").Stickyfill();var e=function(){var e=$(window).width();e>1024?(Stickyfill.rebuild(),Stickyfill.init()):Stickyfill.stop()};e(),$(window).resize(function(){e()}),$(".author__urls-wrapper button").on("click",function(){$(".author__urls").fadeToggle("fast",function(){}),$(".author__urls-wrapper button").toggleClass("open")}),$("a").smoothScroll({offset:-20}),$("a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif']").addClass("image-popup"),$(".image-popup").magnificPopup({disableOn:function(){return!($(window).width()<500)},type:"image",tLoading:"Loading image #%curr%...",gallery:{enabled:!0,navigateByImgClick:!0,preload:[0,1]},image:{tError:'Image #%curr% could not be loaded.'},removalDelay:500,mainClass:"mfp-zoom-in",callbacks:{beforeOpen:function(){this.st.image.markup=this.st.image.markup.replace("mfp-figure","mfp-figure mfp-with-anim")}},closeOnContentClick:!0,midClick:!0})}); \ No newline at end of file diff --git a/assets/js/plugins/jquery.fitvids.js b/assets/js/plugins/jquery.fitvids.js index 05e24cc7..5c2f85c9 100644 --- a/assets/js/plugins/jquery.fitvids.js +++ b/assets/js/plugins/jquery.fitvids.js @@ -1,4 +1,3 @@ -/*global jQuery */ /*jshint browser:true */ /*! * FitVids 1.1 @@ -9,9 +8,9 @@ * */ -(function( $ ){ +;(function( $ ){ - "use strict"; + 'use strict'; $.fn.fitVids = function( options ) { var settings = { @@ -23,7 +22,7 @@ // appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js var head = document.head || document.getElementsByTagName('head')[0]; var css = '.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}'; - var div = document.createElement('div'); + var div = document.createElement("div"); div.innerHTML = '

x

'; head.appendChild(div.childNodes[1]); } @@ -34,12 +33,12 @@ return this.each(function(){ var selectors = [ - "iframe[src*='player.vimeo.com']", - "iframe[src*='youtube.com']", - "iframe[src*='youtube-nocookie.com']", - "iframe[src*='kickstarter.com'][src*='video.html']", - "object", - "embed" + 'iframe[src*="player.vimeo.com"]', + 'iframe[src*="youtube.com"]', + 'iframe[src*="youtube-nocookie.com"]', + 'iframe[src*="kickstarter.com"][src*="video.html"]', + 'object', + 'embed' ]; if (settings.customSelector) { @@ -53,10 +52,10 @@ } var $allVideos = $(this).find(selectors.join(',')); - $allVideos = $allVideos.not("object object"); // SwfObj conflict patch + $allVideos = $allVideos.not('object object'); // SwfObj conflict patch $allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video. - $allVideos.each(function(){ + $allVideos.each(function(count){ var $this = $(this); if($this.parents(ignoreList).length > 0) { return; // Disable FitVids on this video. @@ -71,13 +70,13 @@ width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(), aspectRatio = height / width; if(!$this.attr('id')){ - var videoID = 'fitvid' + Math.floor(Math.random()*999999); + var videoID = 'fitvid' + count; $this.attr('id', videoID); } - $this.wrap('
').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+"%"); + $this.wrap('
').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%'); $this.removeAttr('height').removeAttr('width'); }); }); }; // Works with either jQuery or Zepto -})( window.jQuery || window.Zepto ); +})( window.jQuery || window.Zepto ); \ No newline at end of file diff --git a/assets/js/plugins/jquery.greedy-navigation.js b/assets/js/plugins/jquery.greedy-navigation.js new file mode 100644 index 00000000..3f6c5415 --- /dev/null +++ b/assets/js/plugins/jquery.greedy-navigation.js @@ -0,0 +1,72 @@ +/* +* Greedy Navigation +* +* http://codepen.io/lukejacksonn/pen/PwmwWV +* +*/ + +var $nav = $('#site-nav'); +var $btn = $('#site-nav button'); +var $vlinks = $('#site-nav .visible-links'); +var $hlinks = $('#site-nav .hidden-links'); + +var breaks = []; + +function updateNav() { + + var availableSpace = $btn.hasClass('hidden') ? $nav.width() : $nav.width() - $btn.width() - 30; + + // The visible list is overflowing the nav + if($vlinks.width() > availableSpace) { + + // Record the width of the list + breaks.push($vlinks.width()); + + // Move item to the hidden list + $vlinks.children().last().prependTo($hlinks); + + // Show the dropdown btn + if($btn.hasClass('hidden')) { + $btn.removeClass('hidden'); + } + + // The visible list is not overflowing + } else { + + // There is space for another item in the nav + if(availableSpace > breaks[breaks.length-1]) { + + // Move the item to the visible list + $hlinks.children().first().appendTo($vlinks); + breaks.pop(); + } + + // Hide the dropdown btn if hidden list is empty + if(breaks.length < 1) { + $btn.addClass('hidden'); + $hlinks.addClass('hidden'); + } + } + + // Keep counter updated + $btn.attr("count", breaks.length); + + // Recur if the visible list is still overflowing the nav + if($vlinks.width() > availableSpace) { + updateNav(); + } + +} + +// Window listeners + +$(window).resize(function() { + updateNav(); +}); + +$btn.on('click', function() { + $hlinks.toggleClass('hidden'); + $(this).toggleClass('close'); +}); + +updateNav(); \ No newline at end of file diff --git a/assets/js/plugins/jquery.smooth-scroll.min.js b/assets/js/plugins/jquery.smooth-scroll.min.js new file mode 100644 index 00000000..3576b049 --- /dev/null +++ b/assets/js/plugins/jquery.smooth-scroll.min.js @@ -0,0 +1,8 @@ +/*! + * jQuery Smooth Scroll - v1.7.2 - 2016-01-23 + * https://github.com/kswedberg/jquery-smooth-scroll + * Copyright (c) 2016 Karl Swedberg + * Licensed MIT + */ + +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof module&&module.exports?require("jquery"):jQuery)}(function(a){var b="1.7.2",c={},d={exclude:[],excludeWithin:[],offset:0,direction:"top",delegateSelector:null,scrollElement:null,scrollTarget:null,beforeScroll:function(){},afterScroll:function(){},easing:"swing",speed:400,autoCoefficient:2,preventDefault:!0},e=function(b){var c=[],d=!1,e=b.dir&&"left"===b.dir?"scrollLeft":"scrollTop";return this.each(function(){var b=a(this);if(this!==document&&this!==window)return!document.scrollingElement||this!==document.documentElement&&this!==document.body?void(b[e]()>0?c.push(this):(b[e](1),d=b[e]()>0,d&&c.push(this),b[e](0))):(c.push(document.scrollingElement),!1)}),c.length||this.each(function(){this===document.documentElement&&"smooth"===a(this).css("scrollBehavior")&&(c=[this]),c.length||"BODY"!==this.nodeName||(c=[this])}),"first"===b.el&&c.length>1&&(c=[c[0]]),c};a.fn.extend({scrollable:function(a){var b=e.call(this,{dir:a});return this.pushStack(b)},firstScrollable:function(a){var b=e.call(this,{el:"first",dir:a});return this.pushStack(b)},smoothScroll:function(b,c){if(b=b||{},"options"===b)return c?this.each(function(){var b=a(this),d=a.extend(b.data("ssOpts")||{},c);a(this).data("ssOpts",d)}):this.first().data("ssOpts");var d=a.extend({},a.fn.smoothScroll.defaults,b),e=function(b){var c=function(a){return a.replace(/(:|\.|\/)/g,"\\$1")},e=this,f=a(this),g=a.extend({},d,f.data("ssOpts")||{}),h=d.exclude,i=g.excludeWithin,j=0,k=0,l=!0,m={},n=a.smoothScroll.filterPath(location.pathname),o=a.smoothScroll.filterPath(e.pathname),p=location.hostname===e.hostname||!e.hostname,q=g.scrollTarget||o===n,r=c(e.hash);if(r&&!a(r).length&&(l=!1),g.scrollTarget||p&&q&&r){for(;l&&j=0;a--)j(H[a])}function j(a){if(a.inited){var b=F.top<=a.limit.start?0:F.top>=a.limit.end?2:1;a.mode!=b&&p(a,b)}}function k(){for(var a=H.length-1;a>=0;a--)if(H[a].inited){var b=Math.abs(t(H[a].clone)-H[a].docOffsetTop),c=Math.abs(H[a].parent.node.offsetHeight-H[a].parent.height);if(b>=2||c>=2)return!1}return!0}function l(a){isNaN(parseFloat(a.computed.top))||a.isCell||"none"==a.computed.display||(a.inited=!0,a.clone||q(a),"absolute"!=a.parent.computed.position&&"relative"!=a.parent.computed.position&&(a.parent.node.style.position="relative"),j(a),a.parent.height=a.parent.node.offsetHeight,a.docOffsetTop=t(a.clone))}function m(a){var b=!0;a.clone&&r(a),d(a.node.style,a.css);for(var c=H.length-1;c>=0;c--)if(H[c].node!==a.node&&H[c].parent.node===a.parent.node){b=!1;break}b&&(a.parent.node.style.position=a.parent.css.position),a.mode=-1}function n(){for(var a=H.length-1;a>=0;a--)l(H[a])}function o(){for(var a=H.length-1;a>=0;a--)m(H[a])}function p(a,b){var c=a.node.style;switch(b){case 0:c.position="absolute",c.left=a.offset.left+"px",c.right=a.offset.right+"px",c.top=a.offset.top+"px",c.bottom="auto",c.width="auto",c.marginLeft=0,c.marginRight=0,c.marginTop=0;break;case 1:c.position="fixed",c.left=a.box.left+"px",c.right=a.box.right+"px",c.top=a.css.top,c.bottom="auto",c.width="auto",c.marginLeft=0,c.marginRight=0,c.marginTop=0;break;case 2:c.position="absolute",c.left=a.offset.left+"px",c.right=a.offset.right+"px",c.top="auto",c.bottom=0,c.width="auto",c.marginLeft=0,c.marginRight=0}a.mode=b}function q(a){a.clone=document.createElement("div");var b=a.node.nextSibling||a.node,c=a.clone.style;c.height=a.height+"px",c.width=a.width+"px",c.marginTop=a.computed.marginTop,c.marginBottom=a.computed.marginBottom,c.marginLeft=a.computed.marginLeft,c.marginRight=a.computed.marginRight,c.padding=c.border=c.borderSpacing=0,c.fontSize="1em",c.position="static",c.cssFloat=a.computed.cssFloat,a.node.parentNode.insertBefore(a.clone,b)}function r(a){a.clone.parentNode.removeChild(a.clone),a.clone=void 0}function s(a){var b=getComputedStyle(a),c=a.parentNode,d=getComputedStyle(c),f=a.style.position;a.style.position="relative";var g={top:b.top,marginTop:b.marginTop,marginBottom:b.marginBottom,marginLeft:b.marginLeft,marginRight:b.marginRight,cssFloat:b.cssFloat,display:b.display},h={top:e(b.top),marginBottom:e(b.marginBottom),paddingLeft:e(b.paddingLeft),paddingRight:e(b.paddingRight),borderLeftWidth:e(b.borderLeftWidth),borderRightWidth:e(b.borderRightWidth)};a.style.position=f;var i={position:a.style.position,top:a.style.top,bottom:a.style.bottom,left:a.style.left,right:a.style.right,width:a.style.width,marginTop:a.style.marginTop,marginLeft:a.style.marginLeft,marginRight:a.style.marginRight},j=u(a),k=u(c),l={node:c,css:{position:c.style.position},computed:{position:d.position},numeric:{borderLeftWidth:e(d.borderLeftWidth),borderRightWidth:e(d.borderRightWidth),borderTopWidth:e(d.borderTopWidth),borderBottomWidth:e(d.borderBottomWidth)}},m={node:a,box:{left:j.win.left,right:J.clientWidth-j.win.right},offset:{top:j.win.top-k.win.top-l.numeric.borderTopWidth,left:j.win.left-k.win.left-l.numeric.borderLeftWidth,right:-j.win.right+k.win.right-l.numeric.borderRightWidth},css:i,isCell:"table-cell"==b.display,computed:g,numeric:h,width:j.win.right-j.win.left,height:j.win.bottom-j.win.top,mode:-1,inited:!1,parent:l,limit:{start:j.doc.top-h.top,end:k.doc.top+c.offsetHeight-l.numeric.borderBottomWidth-a.offsetHeight-h.top-h.marginBottom}};return m}function t(a){for(var b=0;a;)b+=a.offsetTop,a=a.offsetParent;return b}function u(a){var c=a.getBoundingClientRect();return{doc:{top:c.top+b.pageYOffset,left:c.left+b.pageXOffset},win:c}}function v(){G=setInterval(function(){!k()&&z()},500)}function w(){clearInterval(G)}function x(){I&&(document[L]?w():v())}function y(){I||(f(),n(),b.addEventListener("scroll",g),b.addEventListener("wheel",h),b.addEventListener("resize",z),b.addEventListener("orientationchange",z),a.addEventListener(M,x),v(),I=!0)}function z(){if(I){o();for(var a=H.length-1;a>=0;a--)H[a]=s(H[a].node);n()}}function A(){b.removeEventListener("scroll",g),b.removeEventListener("wheel",h),b.removeEventListener("resize",z),b.removeEventListener("orientationchange",z),a.removeEventListener(M,x),w(),I=!1}function B(){A(),o()}function C(){for(B();H.length;)H.pop()}function D(a){for(var b=H.length-1;b>=0;b--)if(H[b].node===a)return;var c=s(a);H.push(c),I?l(c):y()}function E(a){for(var b=H.length-1;b>=0;b--)H[b].node===a&&(m(H[b]),H.splice(b,1))}var F,G,H=[],I=!1,J=a.documentElement,K=function(){},L="hidden",M="visibilitychange";void 0!==a.webkitHidden&&(L="webkitHidden",M="webkitvisibilitychange"),b.getComputedStyle||c();for(var N=["","-webkit-","-moz-","-ms-"],O=document.createElement("div"),P=N.length-1;P>=0;P--){try{O.style.position=N[P]+"sticky"}catch(Q){}""!=O.style.position&&c()}f(),b.Stickyfill={stickies:H,add:D,remove:E,init:y,rebuild:z,pause:A,stop:B,kill:C}}(document,window),window.jQuery&&!function($){$.fn.Stickyfill=function(){return this.each(function(){Stickyfill.add(this)}),this}}(window.jQuery); \ No newline at end of file diff --git a/assets/js/scripts.min.js b/assets/js/scripts.min.js deleted file mode 100644 index ba4c4ea9..00000000 --- a/assets/js/scripts.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(a){"use strict";a.fn.fitVids=function(b){var c={customSelector:null,ignore:null};if(!document.getElementById("fit-vids-style")){var d=document.head||document.getElementsByTagName("head")[0],e=".fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}",f=document.createElement("div");f.innerHTML='

x

",d.appendChild(f.childNodes[1])}return b&&a.extend(c,b),this.each(function(){var b=["iframe[src*='player.vimeo.com']","iframe[src*='youtube.com']","iframe[src*='youtube-nocookie.com']","iframe[src*='kickstarter.com'][src*='video.html']","object","embed"];c.customSelector&&b.push(c.customSelector);var d=".fitvidsignore";c.ignore&&(d=d+", "+c.ignore);var e=a(this).find(b.join(","));e=e.not("object object"),e=e.not(d),e.each(function(){var b=a(this);if(!(b.parents(d).length>0||"embed"===this.tagName.toLowerCase()&&b.parent("object").length||b.parent(".fluid-width-video-wrapper").length)){b.css("height")||b.css("width")||!isNaN(b.attr("height"))&&!isNaN(b.attr("width"))||(b.attr("height",9),b.attr("width",16));var c="object"===this.tagName.toLowerCase()||b.attr("height")&&!isNaN(parseInt(b.attr("height"),10))?parseInt(b.attr("height"),10):b.height(),e=isNaN(parseInt(b.attr("width"),10))?b.width():parseInt(b.attr("width"),10),f=c/e;if(!b.attr("id")){var g="fitvid"+Math.floor(999999*Math.random());b.attr("id",g)}b.wrap('
').parent(".fluid-width-video-wrapper").css("padding-top",100*f+"%"),b.removeAttr("height").removeAttr("width")}})})}}(window.jQuery||window.Zepto),function(a){var b,c,d,e,f,g,h,i="Close",j="BeforeClose",k="AfterClose",l="BeforeAppend",m="MarkupParse",n="Open",o="Change",p="mfp",q="."+p,r="mfp-ready",s="mfp-removing",t="mfp-prevent-close",u=function(){},v=!!window.jQuery,w=a(window),x=function(a,c){b.ev.on(p+a+q,c)},y=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},z=function(c,d){b.ev.triggerHandler(p+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},A=function(c){return c===h&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),h=c),b.currTemplate.closeBtn},B=function(){a.magnificPopup.instance||(b=new u,b.init(),a.magnificPopup.instance=b)},C=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};u.prototype={constructor:u,init:function(){var c=navigator.appVersion;b.isIE7=-1!==c.indexOf("MSIE 7."),b.isIE8=-1!==c.indexOf("MSIE 8."),b.isLowIE=b.isIE7||b.isIE8,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=C(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),e=a(document),b.popupsCache={}},open:function(c){d||(d=a(document.body));var f;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var h,i=c.items;for(f=0;f(a||w.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),z(m,[b,c,d]),a.each(c,function(a,c){if(void 0===c||c===!1)return!0;if(e=a.split("_"),e.length>1){var d=b.find(q+"-"+e[0]);if(d.length>0){var f=e[1];"replaceWith"===f?d[0]!==c[0]&&d.replaceWith(c):"img"===f?d.is("img")?d.attr("src",c):d.replaceWith(''):d.attr(e[1],c)}}else b.find(q+"-"+a).html(c)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.id="mfp-sbm",a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:u.prototype,modules:[],open:function(b,c){return B(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'',tClose:"Close (Esc)",tLoading:"Loading..."}},a.fn.magnificPopup=function(c){B();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=v?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),v?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var D,E,F,G="inline",H=function(){F&&(E.after(F.addClass(D)).detach(),F=null)};a.magnificPopup.registerModule(G,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(G),x(i+"."+G,function(){H()})},getInline:function(c,d){if(H(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(E||(D=e.hiddenClass,E=y(D),D="mfp-"+D),F=f.after(E).detach().removeClass(D)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("
");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var I,J="ajax",K=function(){I&&d.removeClass(I)},L=function(){K(),b.req&&b.req.abort()};a.magnificPopup.registerModule(J,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'The content could not be loaded.'},proto:{initAjax:function(){b.types.push(J),I=b.st.ajax.cursor,x(i+"."+J,L),x("BeforeChange."+J,L)},getAjax:function(c){I&&d.addClass(I),b.updateStatus("loading");var e=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};z("ParseAjax",g),b.appendContent(a(g.data),J),c.finished=!0,K(),b._setFocus(),setTimeout(function(){b.wrap.addClass(r)},16),b.updateStatus("ready"),z("AjaxContentAdded")},error:function(){K(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(e),""}}});var M,N=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'
',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'The image could not be loaded.'},proto:{initImage:function(){var a=b.st.image,c=".image";b.types.push("image"),x(n+c,function(){"image"===b.currItem.type&&a.cursor&&d.addClass(a.cursor)}),x(i+c,function(){a.cursor&&d.removeClass(a.cursor),w.off("resize"+q)}),x("Resize"+c,b.resizeImage),b.isLowIE&&x("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,M&&clearInterval(M),a.isCheckingImgSize=!1,z("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){M&&clearInterval(M),M=setInterval(function(){return d.naturalWidth>0?(b._onImageHasSize(a),void 0):(c>200&&clearInterval(M),c++,3===c?e(10):40===c?e(50):100===c&&e(500),void 0)},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,z("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:N(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(M&&clearInterval(M),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var O,P=function(){return void 0===O&&(O=void 0!==document.createElement("p").style.MozTransform),O};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,h=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};x("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return k(),void 0;f=h(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,z("ZoomAnimationEnded")},16)},g)},16)}}),x(j+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=h(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),x(i+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(v?d.innerHeight():d[0].offsetHeight)-g-f};return P()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var Q="iframe",R="//about:blank",S=function(a){if(b.currTemplate[Q]){var c=b.currTemplate[Q].find("iframe");c.length&&(a||(c[0].src=R),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(Q,{options:{markup:'
',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(Q),x("BeforeChange",function(a,b,c){b!==c&&(b===Q?S():c===Q&&S(!0))}),x(i+"."+Q,function(){S()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var T=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},U=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,d=".mfp-gallery",f=Boolean(a.fn.mfpFastClick);return b.direction=!0,c&&c.enabled?(g+=" mfp-gallery",x(n+d,function(){c.navigateByImgClick&&b.wrap.on("click"+d,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),e.on("keydown"+d,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),x("UpdateStatus"+d,function(a,c){c.text&&(c.text=U(c.text,b.currItem.index,b.items.length))}),x(m+d,function(a,d,e,f){var g=b.items.length;e.counter=g>1?U(c.tCounter,f.index,g):""}),x("BuildControls"+d,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(t),g=b.arrowRight=a(d.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(t),h=f?"mfpFastClick":"click";e[h](function(){b.prev()}),g[h](function(){b.next()}),b.isIE7&&(y("b",e[0],!1,!0),y("a",e[0],!1,!0),y("b",g[0],!1,!0),y("a",g[0],!1,!0)),b.container.append(e.add(g))}}),x(o+d,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),x(i+d,function(){e.off(d),b.wrap.off("click"+d),b.arrowLeft&&f&&b.arrowLeft.add(b.arrowRight).destroyMfpFastClick(),b.arrowRight=b.arrowLeft=null}),void 0):!1},next:function(){b.direction=!0,b.index=T(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=T(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=T(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),z("LazyLoad",d),"image"===d.type&&(d.img=a('').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,z("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var V="retina";a.magnificPopup.registerModule(V,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(x("ImageHasSize."+V,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),x("ElementParse."+V,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),function(){var b=1e3,c="ontouchstart"in window,d=function(){w.off("touchmove"+f+" touchend"+f)},e="mfpFastClick",f="."+e;a.fn.mfpFastClick=function(e){return a(this).each(function(){var g,h=a(this);if(c){var i,j,k,l,m,n;h.on("touchstart"+f,function(a){l=!1,n=1,m=a.originalEvent?a.originalEvent.touches[0]:a.touches[0],j=m.clientX,k=m.clientY,w.on("touchmove"+f,function(a){m=a.originalEvent?a.originalEvent.touches:a.touches,n=m.length,m=m[0],(Math.abs(m.clientX-j)>10||Math.abs(m.clientY-k)>10)&&(l=!0,d())}).on("touchend"+f,function(a){d(),l||n>1||(g=!0,a.preventDefault(),clearTimeout(i),i=setTimeout(function(){g=!1},b),e())})})}h.on("click"+f,function(){g||e()})})},a.fn.destroyMfpFastClick=function(){a(this).off("touchstart"+f+" click"+f),c&&w.off("touchmove"+f+" touchend"+f)}}(),B()}(window.jQuery||window.Zepto);var changeClass=function(a,b,c){var d=new RegExp("(?:^|\\s+)"+b+"(?:\\s+|$)");return a.className=d.test(a.className)?a.className.replace(d," "+c+" "):a.className.replace(new RegExp("(?:^|\\s+)"+c+"(?:\\s+|$)")," "+b+" "),a.className},menuElements=document.getElementById("site-nav");menuElements.insertAdjacentHTML("afterBegin",''),document.getElementById("menutoggle").onclick=function(){changeClass(this,"navtoggle active","navtoggle")},document.onclick=function(a){var b=document.getElementById("menutoggle"),c=b.currentStyle?b.currentStyle.display:getComputedStyle(b,null).display;"block"===c&&a.target!==b&&new RegExp(" active ").test(" "+b.className+" ")&&changeClass(b,"navtoggle active","navtoggle")},$(function(){$("article").fitVids()}),$(function(){$(".toc h3").click(function(){$("#drawer").toggleClass("js-hidden")})}),$("a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif']").addClass("image-popup"),$(document).ready(function(){$(".image-popup").magnificPopup({type:"image",tLoading:"Loading image #%curr%...",gallery:{enabled:!0,navigateByImgClick:!0,preload:[0,1]},image:{tError:'Image #%curr% could not be loaded.'},removalDelay:300,mainClass:"mfp-fade"})}); \ No newline at end of file diff --git a/assets/js/vendor/html5shiv.min.js b/assets/js/vendor/html5shiv.min.js deleted file mode 100644 index 6168aacd..00000000 --- a/assets/js/vendor/html5shiv.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed -*/ -(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); -a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; -c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| -"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f); -if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
a",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="
t
",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj; -return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="
",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&>(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:b.support.htmlSerialize?[0,"",""]:[1,"X
","
"]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l) -}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b(" -{% endhighlight %} - -### Social Sharing Links - -Social sharing links for Twitter, Facebook, and Google+ are included on posts/pages by default. To hide them on specific posts or pages add `share: false` to the YAML Front Matter. If you'd like to use different social networks modify `_includes/_social-share.html` to your liking. Icons are set using [Font Awesome](http://fontawesome.io). - ---- - -## Further Customization - -Jekyll 2.x added support for Sass files making it much easier to modify a theme's fonts and colors. By editing values found in `_sass/variables.scss` you can fine tune the site's colors and typography. - -For example if you wanted a red background instead of white you'd change `$bodycolor: #fff;` to `$bodycolor: $cc0033;`. - -To modify the site's JavaScript files I setup a Grunt build script to lint/concatenate/minify all scripts into `scripts.min.js`. [Install Node.js](http://nodejs.org/), then [install Grunt](http://gruntjs.com/getting-started), and then finally install the dependencies for the theme contained in `package.json`: - -{% highlight bash %} -npm install -{% endhighlight %} - -From the theme's root, use `grunt` concatenate JavaScript files, and optimize .jpg, .png, and .svg files in the `images/` folder. You can also use `grunt dev` in combination with `jekyll build --watch` to watch for updates JS files that Grunt will then automatically re-build as you write your code which will in turn auto-generate your Jekyll site when developing locally. - ---- - -## Questions? - -Found a bug or aren't quite sure how something works? By all means Ping me on Twitter [@mmistakes](http://twitter.com/mmistakes) or [file a GitHub Issue](https://github.com/mmistakes/minimal-mistakes/issues/new). And if you make something cool with this theme feel free to let me know. - ---- - -## License - -This theme is free and open source software, distributed under the MIT License. So feel free to use this Jekyll theme on your site without linking back to me or including a disclaimer.