Kenneth Skovhede
9 years ago
189 changed files with 8750 additions and 86 deletions
@ -1,2 +1,7 @@ |
|||||
source 'https://rubygems.org' |
source "https://rubygems.org" |
||||
gem 'github-pages' |
|
||||
|
gem "github-pages" |
||||
|
gem "jekyll", "~> 3.0" |
||||
|
gem "jekyll-sitemap" |
||||
|
gem "jekyll-gist" |
||||
|
gem "octopress", "~> 3.0" |
||||
|
@ -0,0 +1,152 @@ |
|||||
|
GEM |
||||
|
remote: https://rubygems.org/ |
||||
|
specs: |
||||
|
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) |
||||
|
gemoji (2.1.0) |
||||
|
github-pages (59) |
||||
|
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.8.0) |
||||
|
jekyll-mentions (= 1.0.1) |
||||
|
jekyll-paginate (= 1.1.0) |
||||
|
jekyll-redirect-from (= 0.9.1) |
||||
|
jekyll-sass-converter (= 1.3.0) |
||||
|
jekyll-seo-tag (= 1.3.2) |
||||
|
jekyll-sitemap (= 0.10.0) |
||||
|
jekyll-textile-converter (= 0.1.0) |
||||
|
jemoji (= 0.5.1) |
||||
|
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.3.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) |
||||
|
kramdown (~> 1.3) |
||||
|
liquid (~> 3.0) |
||||
|
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-github-metadata (1.8.0) |
||||
|
octokit (~> 4.0) |
||||
|
jekyll-mentions (1.0.1) |
||||
|
html-pipeline (~> 2.3) |
||||
|
jekyll (~> 3.0) |
||||
|
jekyll-paginate (1.1.0) |
||||
|
jekyll-redirect-from (0.9.1) |
||||
|
jekyll (>= 2.0) |
||||
|
jekyll-sass-converter (1.3.0) |
||||
|
sass (~> 3.2) |
||||
|
jekyll-seo-tag (1.3.2) |
||||
|
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) |
||||
|
jemoji (0.5.1) |
||||
|
gemoji (~> 2.0) |
||||
|
html-pipeline (~> 2.2) |
||||
|
jekyll (>= 2.0) |
||||
|
json (1.8.3) |
||||
|
kramdown (1.10.0) |
||||
|
liquid (3.0.6) |
||||
|
listen (3.0.6) |
||||
|
rb-fsevent (>= 0.9.3) |
||||
|
rb-inotify (>= 0.9.7) |
||||
|
mercenary (0.3.5) |
||||
|
mini_portile2 (2.0.0) |
||||
|
minitest (5.8.4) |
||||
|
multipart-post (2.0.0) |
||||
|
net-dns (0.8.0) |
||||
|
nokogiri (1.6.7.2) |
||||
|
mini_portile2 (~> 2.0.0.rc2) |
||||
|
octokit (4.3.0) |
||||
|
sawyer (~> 0.7.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) |
||||
|
public_suffix (1.5.3) |
||||
|
rb-fsevent (0.9.7) |
||||
|
rb-inotify (0.9.7) |
||||
|
ffi (>= 0.5.0) |
||||
|
rdiscount (2.1.8) |
||||
|
redcarpet (3.3.3) |
||||
|
rouge (1.10.1) |
||||
|
safe_yaml (1.0.4) |
||||
|
sass (3.4.21) |
||||
|
sawyer (0.7.0) |
||||
|
addressable (>= 2.3.5, < 2.5) |
||||
|
faraday (~> 0.8, < 0.10) |
||||
|
terminal-table (1.5.2) |
||||
|
thread_safe (0.3.5) |
||||
|
titlecase (0.1.1) |
||||
|
typhoeus (0.8.0) |
||||
|
ethon (>= 0.8.0) |
||||
|
tzinfo (1.2.2) |
||||
|
thread_safe (~> 0.1) |
||||
|
|
||||
|
PLATFORMS |
||||
|
ruby |
||||
|
|
||||
|
DEPENDENCIES |
||||
|
github-pages |
||||
|
jekyll (~> 3.0) |
||||
|
jekyll-gist |
||||
|
jekyll-sitemap |
||||
|
octopress (~> 3.0) |
||||
|
|
||||
|
BUNDLED WITH |
||||
|
1.11.2 |
@ -0,0 +1,103 @@ |
|||||
|
'use strict'; |
||||
|
module.exports = function(grunt) { |
||||
|
|
||||
|
grunt.initConfig({ |
||||
|
pkg: grunt.file.readJSON('package.json'), |
||||
|
jshint: { |
||||
|
options: { |
||||
|
jshintrc: '.jshintrc' |
||||
|
}, |
||||
|
all: [ |
||||
|
'Gruntfile.js', |
||||
|
'js/*.js', |
||||
|
'!js/main.js' |
||||
|
] |
||||
|
}, |
||||
|
watch: { |
||||
|
js: { |
||||
|
files: [ |
||||
|
'<%= jshint.all %>' |
||||
|
], |
||||
|
tasks: ['jshint', 'uglify', 'surround'], |
||||
|
options: { |
||||
|
livereload: true |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
uglify: { |
||||
|
dist: { |
||||
|
options: { |
||||
|
banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' + '<%= grunt.template.today("yyyy-mm-dd") %> */', |
||||
|
compress: true, |
||||
|
beautify: false, |
||||
|
mangle: false |
||||
|
}, |
||||
|
files: { |
||||
|
'js/main.js': [ |
||||
|
'js/plugins/*.js', |
||||
|
'js/_*.js' |
||||
|
] |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
surround: { |
||||
|
src: 'js/main.js', |
||||
|
options: { |
||||
|
overwrite: true, |
||||
|
prepend: '---\n---', |
||||
|
}, |
||||
|
}, |
||||
|
imagemin: { |
||||
|
dist: { |
||||
|
options: { |
||||
|
optimizationLevel: 7, |
||||
|
progressive: true |
||||
|
}, |
||||
|
files: [{ |
||||
|
expand: true, |
||||
|
cwd: 'images/', |
||||
|
src: '{,*/}*.{png,jpg,jpeg}', |
||||
|
dest: 'images/' |
||||
|
}] |
||||
|
} |
||||
|
}, |
||||
|
imgcompress: { |
||||
|
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/' |
||||
|
}] |
||||
|
} |
||||
|
}, |
||||
|
}); |
||||
|
|
||||
|
// Load tasks
|
||||
|
grunt.loadNpmTasks('grunt-contrib-jshint'); |
||||
|
grunt.loadNpmTasks('grunt-contrib-watch'); |
||||
|
grunt.loadNpmTasks('grunt-contrib-uglify'); |
||||
|
grunt.loadNpmTasks('grunt-newer'); |
||||
|
grunt.loadNpmTasks('grunt-contrib-imagemin'); |
||||
|
grunt.loadNpmTasks('grunt-svgmin'); |
||||
|
grunt.loadNpmTasks('grunt-imgcompress'); |
||||
|
grunt.loadNpmTasks('grunt-surround'); |
||||
|
|
||||
|
// Register tasks
|
||||
|
grunt.registerTask('scripts', ['watch', 'uglify']); |
||||
|
grunt.registerTask('images', ['newer:imgcompress', 'newer:svgmin']); |
||||
|
}; |
@ -0,0 +1,21 @@ |
|||||
|
The MIT License (MIT) |
||||
|
|
||||
|
Copyright (c) 2014 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. |
@ -0,0 +1,17 @@ |
|||||
|
# Skinny Bones Jekyll Starter |
||||
|
|
||||
|
Just a little something I'm using to jump start a site refresh. I like to think of it as a starter for building your own Jekyll site. I purposely keep the styling minimal and bare to make it easier to add your own flare and markup. |
||||
|
|
||||
|
I'm currently using a variation of it on my personal website [Made Mistakes](http://mademistakes.com) with some modifications. To learn more about how to use the theme and install it check out the [Skinny Bones demo](http://mmistakes.github.io/skinny-bones-jekyll/) (*work in progress*). |
||||
|
|
||||
|
![screenshot of Skinny Bones](http://mmistakes.github.io/skinny-bones-jekyll/images/skinny-bones-theme-feature.jpg) |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Notable Features |
||||
|
|
||||
|
* Jekyll 3.x and GitHub Pages compatible. |
||||
|
* Stylesheet built using Sass. |
||||
|
* Data files for easier customization of the site navigation/footer and for supporting multiple authors. |
||||
|
* Optional Disqus comments, table of contents, social sharing links, and Google AdSense ads. |
||||
|
* And more. |
@ -0,0 +1,52 @@ |
|||||
|
# Site wide configuration |
||||
|
|
||||
|
title: Duplicati |
||||
|
description: Store securely encrypted backups on cloud storage services! |
||||
|
logo: # 120x120 px default image used for Twitter summary card |
||||
|
teaser: # 400x250 px default teaser image used in image archive grid |
||||
|
locale: en |
||||
|
url: |
||||
|
|
||||
|
# Jekyll configuration |
||||
|
|
||||
|
|
||||
|
markdown: kramdown |
||||
|
sass: |
||||
|
sass_dir: _sass |
||||
|
style: compressed |
||||
|
permalink: /:categories/:title/ |
||||
|
kramdown: |
||||
|
toc_levels: 1..2 |
||||
|
highlighter: rouge |
||||
|
|
||||
|
|
||||
|
|
||||
|
# Octopress configuration |
||||
|
|
||||
|
# Default extensions |
||||
|
post_ext: md |
||||
|
page_ext: md |
||||
|
|
||||
|
# Found in _templates/ |
||||
|
post_layout: article |
||||
|
page_layout: article |
||||
|
|
||||
|
# Format titles with titlecase? |
||||
|
titlecase: true |
||||
|
|
||||
|
|
||||
|
# Site owner |
||||
|
owner: |
||||
|
name: The Duplicati Team |
||||
|
email: opensource@duplicati.com |
||||
|
twitter: |
||||
|
google: |
||||
|
ad-client: |
||||
|
ad-slot: |
||||
|
bio: |
||||
|
avatar: bio-photo.jpg # 160x160 px image for author byline |
||||
|
disqus-shortname: |
||||
|
|
||||
|
|
||||
|
exclude: ["lib", "config.rb", ".sass-cache", "Capfile", "config", "log", "Rakefile", "Rakefile.rb", "tmp", "*.sublime-project", "*.sublime-workspace", "Gemfile", "Gemfile.lock", "README.md", "LICENSE", "node_modules", "Gruntfile.js", "package.json"] |
||||
|
gems: ['jekyll-gist', 'jekyll-sitemap'] |
@ -0,0 +1,7 @@ |
|||||
|
# Footer navigation links |
||||
|
|
||||
|
- title: GitHub page |
||||
|
url: https://github.com/duplicati/duplicati |
||||
|
|
||||
|
- title: Facebook page |
||||
|
url: https://facebook.com/pages/duplicati |
@ -0,0 +1,40 @@ |
|||||
|
# Messages for localization |
||||
|
# see description here: https://tuananh.org/2014/08/13/localization-with-jekyll/ |
||||
|
|
||||
|
locales: |
||||
|
# English translation |
||||
|
# ------------------- |
||||
|
en: &DEFAULT_EN |
||||
|
overview: "Overview" |
||||
|
toc: "Table of Contents" |
||||
|
written_by: "Written by" |
||||
|
updated: "Updated" |
||||
|
share: "Share on" |
||||
|
en_US: |
||||
|
<<: *DEFAULT_EN # use English translation for en_US |
||||
|
en_UK: |
||||
|
<<: *DEFAULT_EN # use English translation for en_UK |
||||
|
|
||||
|
# German translation |
||||
|
# ------------------- |
||||
|
de: &DEFAULT_DE |
||||
|
<<: *DEFAULT_EN # load English values as default |
||||
|
overview: "Übersicht" |
||||
|
toc: "Inhalt" |
||||
|
written_by: "Verfasst von" |
||||
|
updated: "Zuletzt aktualisiert:" |
||||
|
share: "" |
||||
|
de_DE: |
||||
|
<<: *DEFAULT_DE # use German translation for de_DE |
||||
|
|
||||
|
# French translation (TODO) |
||||
|
# ------------------- |
||||
|
fr: &DEFAULT_FR |
||||
|
<<: *DEFAULT_EN # load English values as default |
||||
|
overview: "Aperçu" |
||||
|
toc: "Table des matières" |
||||
|
written_by: "Écrit par" |
||||
|
updated: "Mis à jour" |
||||
|
share: "Partager sur" |
||||
|
fr_FR: |
||||
|
<<: *DEFAULT_FR # use French translation for fr_FR |
@ -0,0 +1,26 @@ |
|||||
|
# Site navigation links |
||||
|
|
||||
|
- title: Home |
||||
|
url: / |
||||
|
excerpt: |
||||
|
image: |
||||
|
|
||||
|
- title: News |
||||
|
url: /articles |
||||
|
excerpt: All the news |
||||
|
image: |
||||
|
|
||||
|
- title: Guides |
||||
|
url: /articles |
||||
|
excerpt: Quickstart guides |
||||
|
image: |
||||
|
|
||||
|
- title: Download |
||||
|
url: https://github.com/duplicati/duplicati/releases |
||||
|
excerpt: Get a build of Duplicati |
||||
|
image: |
||||
|
|
||||
|
- title: Source code |
||||
|
url: https://github.com/duplicati/duplicati |
||||
|
excerpt: Look at Duplicati source code and collaborate on GitHub |
||||
|
image: |
@ -0,0 +1,14 @@ |
|||||
|
<style> |
||||
|
.responsive-ads { width: 300px; height: 200px; } |
||||
|
@media(min-width: 520px) { .responsive-ads { width: 468px; height: 60px; } } |
||||
|
@media(min-width: 768px) { .responsive-ads { width: 160px; height: 600px; } } |
||||
|
</style> |
||||
|
|
||||
|
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> |
||||
|
<ins class="adsbygoogle responsive-ads" |
||||
|
style="display:inline-block" |
||||
|
data-ad-client="{{ site.owner.google.ad-client }}" |
||||
|
data-ad-slot="{{ site.owner.google.ad-slot }}"></ins> |
||||
|
<script> |
||||
|
(adsbygoogle = window.adsbygoogle || []).push({}); |
||||
|
</script> |
@ -0,0 +1,13 @@ |
|||||
|
{% if page.categories and page.categories != empty %} |
||||
|
<nav class="breadcrumbs"> |
||||
|
<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb"> |
||||
|
<a href="{{ site.url }}" itemprop="url"> |
||||
|
<span itemprop="title">Home</span> |
||||
|
</a> › |
||||
|
<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb"> |
||||
|
<a href="{{ site.url }}/{{ page.categories | first }}/" itemprop="url"> |
||||
|
<span itemprop="title">{{ page.categories | first | replace: '-',' ' | capitalize }}</span> |
||||
|
</a> |
||||
|
</span> |
||||
|
</nav><!-- /.breadcrumbs --> |
||||
|
{% endif %} |
@ -0,0 +1 @@ |
|||||
|
<!--[if lt IE 9]><div class="upgrade notice-warning"><strong>Your browser is quite old!</strong> Why not <a href="http://whatbrowser.org/">upgrade to a newer one</a> to better enjoy this site?</div><![endif]--> |
@ -0,0 +1,15 @@ |
|||||
|
<nav class="pagination"> |
||||
|
{% capture collection_name %}{{ include.collection }}{% endcapture %} |
||||
|
{% for post in site.[collection_name] %} |
||||
|
{% if post.url == page.url %} |
||||
|
{% assign post_index0 = forloop.index0 %} |
||||
|
{% assign post_index1 = forloop.index %} |
||||
|
{% endif %} |
||||
|
{% endfor %} |
||||
|
{% for post in site.[collection_name] %} |
||||
|
{% if post_index0 == forloop.index %}{% assign next_post = post %}{% endif %} |
||||
|
{% if post_index1 == forloop.index0 %}{% assign prev_post = post %}{% endif %} |
||||
|
{% endfor %} |
||||
|
{% if prev_post %}<a class="prev" href="{{ site.url }}{{ prev_post.url }}">{{ prev_post.title }}</a>{% endif %} |
||||
|
{% if next_post %}<a class="next" href="{{ site.url }}{{ next_post.url }}">{{ next_post.title }}</a>{% endif %} |
||||
|
</nav> |
@ -0,0 +1,14 @@ |
|||||
|
<hr /> |
||||
|
<div id="disqus_thread"></div> |
||||
|
<script type="text/javascript"> |
||||
|
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */ |
||||
|
var disqus_shortname = '{{ site.owner.disqus-shortname }}'; |
||||
|
|
||||
|
/* * * DON'T EDIT BELOW THIS LINE * * */ |
||||
|
(function() { |
||||
|
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; |
||||
|
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; |
||||
|
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); |
||||
|
})(); |
||||
|
</script> |
||||
|
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> |
@ -0,0 +1,15 @@ |
|||||
|
<footer role="contentinfo" id="site-footer"> |
||||
|
<nav role="navigation" class="menu bottom-menu"> |
||||
|
<ul class="menu-item"> |
||||
|
{% for link in site.data.footer %} |
||||
|
{% if link.url contains 'http' %} |
||||
|
{% assign domain = '' %} |
||||
|
{% else %} |
||||
|
{% assign domain = site.url %} |
||||
|
{% endif %} |
||||
|
<li><a href="{{ domain }}{{ link.url }}" {% if link.url contains 'http' %}target="_blank"{% endif %}>{{ link.title }}</a></li> |
||||
|
{% endfor %} |
||||
|
</ul> |
||||
|
</nav><!-- /.bottom-menu --> |
||||
|
<p class="copyright">© {{ site.time | date: '%Y' }} <a href="{{ site.url }}">{{ site.title }}</a> powered by <a href="http://jekyllrb.com" rel="nofollow">Jekyll</a> + <a href="http://mmistakes.github.io/skinny-bones-jekyll/" rel="nofollow">Skinny Bones</a>.</p> |
||||
|
</footer> |
@ -0,0 +1,8 @@ |
|||||
|
<header id="masthead"> |
||||
|
<div class="inner-wrap"> |
||||
|
<a href="{{ site.url }}/" class="site-title">{{ site.title }}</a> |
||||
|
<nav role="navigation" class="menu top-menu"> |
||||
|
{% include navigation.html %} |
||||
|
</nav> |
||||
|
</div><!-- /.inner-wrap --> |
||||
|
</header><!-- /.masthead --> |
@ -0,0 +1 @@ |
|||||
|
<div class="image-credit">Image source: <a href="{{ page.image.creditlink }}" itemprop="citation">{{ page.image.credit }}</a></div><!-- /.image-credit --> |
@ -0,0 +1,7 @@ |
|||||
|
<div class="page-lead" style="background-image:url(//mmistakes.github.io/skinny-bones-jekyll/images/wood-texture-1600x800.jpg)"> |
||||
|
<div class="wrap page-lead-content"> |
||||
|
<h1>{{ site.title }}</h1> |
||||
|
<h2>{{ site.description }}</h2> |
||||
|
<a href="//github.com/duplicati/duplicati/releases" class="btn-inverse">Download</a> or <a href="https://github.com/duplicati/duplicati" class="btn-inverse">View on GitHub</a> |
||||
|
</div><!-- /.page-lead-content --> |
||||
|
</div> |
@ -0,0 +1,9 @@ |
|||||
|
<div class="archive-wrap"> |
||||
|
<h3>Latest {{ page.categories | first | replace: '-',' ' | capitalize }}</h3> |
||||
|
<ul class="th-grid"> |
||||
|
{% capture category_name %}{{ page.categories | first }}{% endcapture %} |
||||
|
{% for post in site.categories.[category_name] limit:4 %} |
||||
|
<li><a href="{{ site.url }}{{ post.url }}" title="{{ post.title }}"><img src="{{ site.url }}/images/{{ post.image.thumb }}" alt=""></a></li> |
||||
|
{% endfor %} |
||||
|
</ul> |
||||
|
</div><!-- /.archive-wrap --> |
@ -0,0 +1,7 @@ |
|||||
|
<h3>Latest {{ page.categories | first | replace: '-',' ' | capitalize }}</h3> |
||||
|
<ul> |
||||
|
{% capture category_name %}{{ page.categories | first }}{% endcapture %} |
||||
|
{% for post in site.categories.[category_name] limit:3 %} |
||||
|
<li><a href="{{ site.url }}{{ post.url }}">{{ post.title }}</a></li> |
||||
|
{% endfor %} |
||||
|
</ul> |
@ -0,0 +1,17 @@ |
|||||
|
<nav role="navigation" id="js-menu" class="sliding-menu-content"> |
||||
|
<h5>{{ site.title }} <span>{{ site.data.messages.locales[site.locale].toc }}</span></h5> |
||||
|
<ul class="menu-item"> |
||||
|
{% for link in site.data.navigation %}<li> |
||||
|
<a href="{{ site.url }}{{ link.url }}"> |
||||
|
{% if link.image %}<img src="{{ site.url }}/images/{{ link.image }}" alt="teaser" class="teaser">{% endif %} |
||||
|
<div class="title">{{ link.title }}</div> |
||||
|
{% if link.excerpt %}<p class="excerpt">{{ link.excerpt }}</p>{% endif %} |
||||
|
</a> |
||||
|
</li>{% endfor %} |
||||
|
</ul> |
||||
|
</nav> |
||||
|
<button type="button" id="js-menu-trigger" class="sliding-menu-button lines-button x2" role="button" aria-label="Toggle Navigation"> |
||||
|
<span class="nav-lines"></span> |
||||
|
</button> |
||||
|
|
||||
|
<div id="js-menu-screen" class="menu-screen"></div> |
@ -0,0 +1,11 @@ |
|||||
|
<ul class="menu-item"> |
||||
|
<li class="home"><a href="/">{{ site.title }}</a></li> |
||||
|
{% for link in site.data.navigation %} |
||||
|
{% if link.url contains 'http' %} |
||||
|
{% assign domain = '' %} |
||||
|
{% else %} |
||||
|
{% assign domain = site.url %} |
||||
|
{% endif %} |
||||
|
<li><a href="{{ domain }}{{ link.url }}" {% if link.url contains 'http' %}target="_blank"{% endif %}>{{ link.title }}</a></li> |
||||
|
{% endfor %} |
||||
|
</ul> |
@ -0,0 +1,19 @@ |
|||||
|
<!-- Twitter Cards --> |
||||
|
<meta name="twitter:title" content="{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}"> |
||||
|
{% if page.excerpt %}<meta name="twitter:description" content="{{ page.excerpt | strip_html }}">{% endif %} |
||||
|
{% if site.owner.twitter %}<meta name="twitter:site" content="@{{ site.owner.twitter }}">{% endif %} |
||||
|
{% if author.twitter %}<meta name="twitter:creator" content="@{{ author.twitter }}">{% endif %} |
||||
|
{% if page.image.feature %} |
||||
|
<meta name="twitter:card" content="summary_large_image"> |
||||
|
<meta name="twitter:image" content="{{ site.url }}/images/{{ page.image.feature }}"> |
||||
|
{% else %} |
||||
|
<meta name="twitter:card" content="summary"> |
||||
|
<meta name="twitter:image" content="{% if page.image.thumb %}{{ site.url }}/images/{{ page.image.thumb }}{% else %}{{ site.url }}/images/{{ site.logo }}{% endif %}"> |
||||
|
{% endif %} |
||||
|
<!-- Open Graph --> |
||||
|
<meta property="og:locale" content="{{ site.locale }}"> |
||||
|
<meta property="og:type" content="article"> |
||||
|
<meta property="og:title" content="{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}"> |
||||
|
{% if page.excerpt %}<meta property="og:description" content="{{ page.excerpt | strip_html }}">{% endif %} |
||||
|
<meta property="og:url" content="{{ page.url | replace:'index.html','' | prepend: site.url }}"> |
||||
|
<meta property="og:site_name" content="{{ site.title }}"> |
@ -0,0 +1,11 @@ |
|||||
|
{% if page.author %} |
||||
|
{% assign author = site.data.authors[page.author] %}{% else %}{% assign author = site.owner %} |
||||
|
{% endif %} |
||||
|
|
||||
|
<div class="author-image"> |
||||
|
<img src="{{ site.url }}/images/{{ author.avatar }}" alt="{{ author.name }}"> |
||||
|
</div><!-- ./author-image --> |
||||
|
<div class="author-content"> |
||||
|
<h3 class="author-name" >{{ site.data.messages.locales[site.locale].written_by }} {% if author.web %}<a href="{{ author.web }}" itemprop="author">{{ author.name }}</a>{% else %}<span itemprop="author">{{ author.name }}</span>{% endif %}</h3> |
||||
|
<p class="author-bio">{{ author.bio }}</p> |
||||
|
</div><!-- ./author-content --> |
@ -0,0 +1,3 @@ |
|||||
|
{% if page.date %}<div class="page-meta"> |
||||
|
<p>{{ site.data.messages.locales[site.locale].updated }} {% if page.modified %}<time datetime="{{ page.modified | date: "%Y-%m-%dT%H:%M:%SZ" }}" itemprop="dateModified">{{ page.modified | date: "%B %d, %Y" }}</time>{% else %}<time datetime="{{ page.date | date: "%Y-%m-%dT%H:%M:%SZ" }}" itemprop="datePublished">{{ page.date | date: "%B %d, %Y" }}</time></p>{% endif %} |
||||
|
</div><!-- /.page-meta -->{% endif %} |
@ -0,0 +1,15 @@ |
|||||
|
<nav class="pagination"> |
||||
|
{% capture category_name %}{{ page.categories | first }}{% endcapture %} |
||||
|
{% for post in site.categories.[category_name] %} |
||||
|
{% if post.url == page.url %} |
||||
|
{% assign post_index0 = forloop.index0 %} |
||||
|
{% assign post_index1 = forloop.index %} |
||||
|
{% endif %} |
||||
|
{% endfor %} |
||||
|
{% for post in site.categories.[category_name] %} |
||||
|
{% if post_index0 == forloop.index %}{% assign next_post = post %}{% endif %} |
||||
|
{% if post_index1 == forloop.index0 %}{% assign prev_post = post %}{% endif %} |
||||
|
{% endfor %} |
||||
|
{% if prev_post %}<a class="prev" href="{{ site.url }}{{ prev_post.url }}">{{ prev_post.title }}</a>{% endif %} |
||||
|
{% if next_post %}<a class="next" href="{{ site.url }}{{ next_post.url }}">{{ next_post.title }}</a>{% endif %} |
||||
|
</nav> |
@ -0,0 +1,7 @@ |
|||||
|
<article class="tile" itemscope itemtype="http://schema.org/Article"> |
||||
|
<a href="{{ site.url }}{{ post.url }}" title="{{ post.title }}" class="post-teaser">{% if post.image.teaser %}<img src="{{ site.url }}/images/{{ post.image.teaser }}" alt="teaser" itemprop="image"> |
||||
|
{% else %}<img src="{{ site.url }}/images/{{ site.teaser }}" alt="teaser" itemprop="image">{% endif %}</a> |
||||
|
{% if post.date %}<p class="entry-date date published"><time datetime="{{ post.date | date: "%Y-%m-%d" }}" itemprop="datePublished">{{ post.date | date: "%B %d, %Y" }}</time></p>{% endif %} |
||||
|
<h2 class="post-title" itemprop="name"><a href="{{ site.url }}{{ post.url }}">{{ post.title }}</a></h2> |
||||
|
<p class="post-excerpt" itemprop="description">{{ post.excerpt | strip_html | truncate: 160 }}</p> |
||||
|
</article><!-- /.tile --> |
@ -0,0 +1,13 @@ |
|||||
|
<div class="bullets"> |
||||
|
{% for post in site.posts %} |
||||
|
<div class="bullet three-col-bullet"> |
||||
|
<div class="bullet-icon"> |
||||
|
<a href="{{ site.url }}{{ post.url }}"><img src="{{ site.url }}/images/{{ post.image.teaser }}" alt=""></a> |
||||
|
</div><!-- /.bullet-icon --> |
||||
|
<div class="bullet-content"> |
||||
|
<h2><a href="{{ site.url }}{{ post.url }}">{{ post.title }}</a></h2> |
||||
|
<p>{{ post.excerpt | remove: '<p>' | remove: '</p>'}}</p> |
||||
|
</div><!-- /.bullet-content --> |
||||
|
</div><!-- /.bullet --> |
||||
|
{% endfor %} |
||||
|
</div><!-- /.bullets --> |
@ -0,0 +1 @@ |
|||||
|
<li>{% if post.date %}<span>{{ post.date | date: "%B %d, %Y" }}</span> » {% endif %}<a href="{{ site.url }}{{ post.url }}">{{ post.title }}</a></li> |
@ -0,0 +1,3 @@ |
|||||
|
<div id="scroll-cue" onclick="$('html,body').animate({scrollTop: $('#content').offset().top}, 1000)">Scroll |
||||
|
<svg class="hang" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 32 32"><g></g><path d="M24.773 13.701c-0.651 0.669-7.512 7.205-7.512 7.205-0.349 0.357-0.805 0.534-1.261 0.534-0.458 0-0.914-0.178-1.261-0.534 0 0-6.861-6.536-7.514-7.205-0.651-0.669-0.696-1.87 0-2.586 0.698-0.714 1.669-0.77 2.522 0l6.253 5.997 6.251-5.995c0.854-0.77 1.827-0.714 2.522 0 0.698 0.714 0.654 1.917 0 2.584z" fill="#ffffff" /></svg> |
||||
|
</div> |
@ -0,0 +1,5 @@ |
|||||
|
<div class="inline-btn"> |
||||
|
<a class="btn-social twitter" href="https://twitter.com/intent/tweet?text={{ page.title | escape | replace:' ','%20' }}&url={{ page.url | replace:'index.html','' | prepend: site.url }}&via={{ site.owner.twitter }}" target="_blank"><i class="fa fa-twitter" aria-hidden="true"></i> {{ site.data.messages.locales[site.locale].share }} Twitter</a> |
||||
|
<a class="btn-social facebook" href="https://www.facebook.com/sharer/sharer.php?u={{ page.url | replace:'index.html','' | prepend: site.url }}" target="_blank"><i class="fa fa-facebook" aria-hidden="true"></i> {{ site.data.messages.locales[site.locale].share }} Facebook</a> |
||||
|
<a class="btn-social google-plus" href="https://plus.google.com/share?url={{ page.url | replace:'index.html','' | prepend: site.url }}" target="_blank"><i class="fa fa-google-plus" aria-hidden="true"></i> {{ site.data.messages.locales[site.locale].share }} Google+</a> |
||||
|
</div><!-- /.share-this --> |
@ -0,0 +1,4 @@ |
|||||
|
<nav class="toc" markdown="1"> |
||||
|
* Auto generated table of contents |
||||
|
{:toc} |
||||
|
</nav> |
@ -0,0 +1,25 @@ |
|||||
|
--- |
||||
|
layout: default |
||||
|
--- |
||||
|
|
||||
|
<div id="main" role="main"> |
||||
|
<div class="wrap"> |
||||
|
{% if page.image.feature %} |
||||
|
<div class="page-feature"> |
||||
|
<div class="page-image"> |
||||
|
<img src="{{ site.url }}/images/{{ page.image.feature }}" class="page-feature-image" alt="{{ page.title }}"> |
||||
|
{% if page.image.credit %}{% include image-credit.html %}{% endif %} |
||||
|
</div><!-- /.page-image --> |
||||
|
</div><!-- /.page-feature --> |
||||
|
{% endif %} |
||||
|
<div class="page-title"> |
||||
|
<h1>{{ page.title }}</h1> |
||||
|
{% if page.excerpt %}<h2>{{ page.excerpt }}</h2>{% endif %} |
||||
|
</div> |
||||
|
<div class="archive-wrap"> |
||||
|
<div class="page-content"> |
||||
|
{{ content }} |
||||
|
</div><!-- /.page-content --> |
||||
|
</div class="archive-wrap"><!-- /.archive-wrap --> |
||||
|
</div><!-- /.wrap --> |
||||
|
</div><!-- /#main --> |
@ -0,0 +1,35 @@ |
|||||
|
--- |
||||
|
layout: default |
||||
|
--- |
||||
|
|
||||
|
<div id="main" role="main"> |
||||
|
<article class="wrap" itemscope itemtype="http://schema.org/Article"> |
||||
|
{% if page.image.feature %} |
||||
|
<div class="page-feature"> |
||||
|
<div class="page-image"> |
||||
|
<img src="{{ site.url }}/images/{{ page.image.feature }}" class="page-feature-image" alt="{{ page.title }}" itemprop="image"> |
||||
|
{% if page.image.credit %}{% include image-credit.html %}{% endif %} |
||||
|
</div><!-- /.page-image --> |
||||
|
</div><!-- /.page-feature --> |
||||
|
{% endif %} |
||||
|
{% include breadcrumbs.html %} |
||||
|
<div class="page-title"> |
||||
|
<h1>{{ page.title }}</h1> |
||||
|
</div> |
||||
|
<div class="inner-wrap"> |
||||
|
<div id="content" class="page-content" itemprop="articleBody"> |
||||
|
{{ content }} |
||||
|
<hr /> |
||||
|
<footer class="page-footer"> |
||||
|
{% if page.categories %}{% include page-author.html %}{% endif %} |
||||
|
{% if page.share != false %}{% include share-this.html %}{% endif %} |
||||
|
{% include page-meta.html %} |
||||
|
</footer><!-- /.footer --> |
||||
|
<aside> |
||||
|
{% if page.comments == true %}{% include comments.html %}{% endif %} |
||||
|
</aside> |
||||
|
</div><!-- /.content --> |
||||
|
</div><!-- /.inner-wrap --> |
||||
|
{% if page.ads == true %}<div class="ads">{% include advertising.html %}</div><!-- /.ads -->{% endif %} |
||||
|
</article><!-- ./wrap --> |
||||
|
</div><!-- /#main --> |
@ -0,0 +1,48 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<title>{% if page.title %}{{ page.title }} • {% endif %}{{ site.title }}</title> |
||||
|
{% if page.excerpt %}<meta name="description" content="{{ page.excerpt | strip_html }}">{% endif %} |
||||
|
{% if page.tags %}<meta name="keywords" content="{{ page.tags | join: ', ' }}">{% endif %} |
||||
|
{% if page.author %} |
||||
|
{% assign author = site.data.authors[page.author] %}{% else %}{% assign author = site.owner %} |
||||
|
{% endif %} |
||||
|
{% include open-graph.html %} |
||||
|
|
||||
|
<link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site.url }}"> |
||||
|
|
||||
|
<link href="{{ site.url }}/atom.xml" type="application/atom+xml" rel="alternate" title="{{ site.title }} Atom Feed"> |
||||
|
<link href="{{ site.url }}/sitemap.xml" type="application/xml" rel="sitemap" title="Sitemap"> |
||||
|
|
||||
|
<meta name="HandheldFriendly" content="True"> |
||||
|
<meta name="MobileOptimized" content="320"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||
|
<meta http-equiv="cleartype" content="on"> |
||||
|
|
||||
|
<link rel="stylesheet" href="{{ site.url }}/css/main.css"> |
||||
|
<!-- HTML5 Shiv and Media Query Support for IE --> |
||||
|
<!--[if lt IE 9]> |
||||
|
<script src="{{ site.url }}/js/vendor/html5shiv.min.js"></script> |
||||
|
<script src="{{ site.url }}/js/vendor/respond.min.js"></script> |
||||
|
<![endif]--> |
||||
|
|
||||
|
</head> |
||||
|
|
||||
|
<body id="js-body"> |
||||
|
{% include browser-upgrade.html %} |
||||
|
{% include header.html %} |
||||
|
{% include navigation-sliding.html %} |
||||
|
{% include landing.html %} |
||||
|
|
||||
|
<div id="page-wrapper"> |
||||
|
{{ content }} |
||||
|
{% include footer.html %} |
||||
|
</div> |
||||
|
|
||||
|
<script src="{{ site.url }}/js/vendor/jquery-1.9.1.min.js"></script> |
||||
|
<script src="{{ site.url }}/js/main.js"></script> |
||||
|
|
||||
|
</body> |
||||
|
|
||||
|
</html> |
@ -0,0 +1,34 @@ |
|||||
|
--- |
||||
|
layout: default |
||||
|
--- |
||||
|
|
||||
|
<div id="main" role="main"> |
||||
|
<article class="wrap" itemscope itemtype="http://schema.org/Article"> |
||||
|
{% if page.image.feature %} |
||||
|
<div class="page-feature"> |
||||
|
<div class="page-image"> |
||||
|
<img src="{{ site.url }}/images/{{ page.image.feature }}" class="page-feature-image" alt="{{ page.title }}" itemprop="image"> |
||||
|
{% if page.image.credit %}{% include image-credit.html %}{% endif %} |
||||
|
</div><!-- /.page-image --> |
||||
|
</div><!-- /.page-feature --> |
||||
|
{% endif %} |
||||
|
{% include breadcrumbs.html %} |
||||
|
<div class="page-title"> |
||||
|
<h1>{{ page.title }}</h1> |
||||
|
</div> |
||||
|
<div class="inner-wrap"> |
||||
|
<div id="content" class="page-content" itemprop="articleBody"> |
||||
|
{{ content }} |
||||
|
<hr /> |
||||
|
<footer class="page-footer"> |
||||
|
{% if page.share != false %}{% include share-this.html %}{% endif %} |
||||
|
{% include page-meta.html %} |
||||
|
</footer><!-- /.footer --> |
||||
|
<aside> |
||||
|
{% if page.comments == true %}{% include comments.html %}{% endif %} |
||||
|
</aside> |
||||
|
</div><!-- /.content --> |
||||
|
</div><!-- /.inner-wrap --> |
||||
|
{% if page.ads == true %}<div class="ads">{% include advertising.html %}</div><!-- /.ads -->{% endif %} |
||||
|
</article><!-- /.wrap --> |
||||
|
</div><!-- /#main --> |
@ -0,0 +1,41 @@ |
|||||
|
/* ========================================================================== |
||||
|
Animations |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/* |
||||
|
Wiggle animation |
||||
|
========================================================================== */ |
||||
|
|
||||
|
@include keyframes(wiggle) { |
||||
|
25%, 50%, 75%, 100% { @include transform-origin(top center); } |
||||
|
25% { @include transform(rotate(8deg)); } |
||||
|
50% { @include transform(rotate(-4deg)); } |
||||
|
75% { @include transform(rotate(2deg)); } |
||||
|
100% { @include transform(rotate(0deg)); } |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Pop animation |
||||
|
========================================================================== */ |
||||
|
|
||||
|
@include keyframes(pop) { |
||||
|
50% { @include transform(scale(1.1)); } |
||||
|
100% { @include transform(scale(1)); } |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Hang animation |
||||
|
========================================================================== */ |
||||
|
|
||||
|
@include keyframes(hang) { |
||||
|
50% { @include transform(translateY(-3px)); } |
||||
|
100% { @include transform(translateY(-6px)); } |
||||
|
} |
||||
|
.hang { |
||||
|
display: inline-block; |
||||
|
@include animation-name(hang); |
||||
|
@include animation-duration(0.5s); |
||||
|
@include animation-timing-function(linear); |
||||
|
@include animation-iteration-count(infinite); |
||||
|
@include animation-direction(alternate); |
||||
|
} |
@ -0,0 +1,41 @@ |
|||||
|
/* ========================================================================== |
||||
|
Badges |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.badge { |
||||
|
display: inline-block; |
||||
|
background: $badge-background; |
||||
|
border-radius: 2em; |
||||
|
color: $badge-font-color; |
||||
|
font-family: $alt-font; |
||||
|
@include font-size(12,no); |
||||
|
font-weight: 600; |
||||
|
line-height: 1; |
||||
|
padding: .25em 1em; |
||||
|
text-align: center; |
||||
|
|
||||
|
&.inverse { |
||||
|
background: $white; |
||||
|
color: $text-color; |
||||
|
} |
||||
|
|
||||
|
&.info { |
||||
|
background: $badge-info-color; |
||||
|
color: $white; |
||||
|
} |
||||
|
|
||||
|
&.danger { |
||||
|
background: $badge-danger-color; |
||||
|
color: $white; |
||||
|
} |
||||
|
|
||||
|
&.warning { |
||||
|
background: $badge-warning-color; |
||||
|
color: darken($badge-warning-color, 60); |
||||
|
} |
||||
|
|
||||
|
&.success { |
||||
|
background: $badge-success-color; |
||||
|
color: darken($badge-success-color, 60); |
||||
|
} |
||||
|
} |
@ -0,0 +1,396 @@ |
|||||
|
/* ========================================================================== |
||||
|
Base |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/* |
||||
|
Typography |
||||
|
========================================================================== */ |
||||
|
|
||||
|
body { |
||||
|
font-family: $base-font; |
||||
|
color: $text-color; |
||||
|
@include font-size(16); |
||||
|
} |
||||
|
|
||||
|
p { |
||||
|
@include font-size(18,yes,28); |
||||
|
} |
||||
|
|
||||
|
li { |
||||
|
@include font-size(16,12,24); |
||||
|
} |
||||
|
|
||||
|
/* Headings */ |
||||
|
|
||||
|
h1, h2, h3, h4, h5, h6 { |
||||
|
font-family: $heading-font; |
||||
|
text-rendering: optimizeLegibility; // Fix the character spacing for headings |
||||
|
} |
||||
|
h1 { |
||||
|
@include font-size(36); |
||||
|
} |
||||
|
h2 { |
||||
|
@include font-size(32); |
||||
|
} |
||||
|
h3 { |
||||
|
@include font-size(28); |
||||
|
} |
||||
|
h4 { |
||||
|
@include font-size(24); |
||||
|
} |
||||
|
h5 { |
||||
|
@include font-size(20); |
||||
|
} |
||||
|
h6 { |
||||
|
@include font-size(18); |
||||
|
} |
||||
|
|
||||
|
/* Underlined text */ |
||||
|
|
||||
|
u, |
||||
|
ins { |
||||
|
text-decoration: none; |
||||
|
border-bottom: 1px solid $text-color; |
||||
|
} |
||||
|
|
||||
|
/* Links */ |
||||
|
|
||||
|
a { |
||||
|
color: $link-color; |
||||
|
&:hover { |
||||
|
color: darken($link-color, 20); |
||||
|
} |
||||
|
&:focus { |
||||
|
@extend %tab-focus; |
||||
|
} |
||||
|
&:hover, |
||||
|
&:active { |
||||
|
outline: 0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* Quoted text */ |
||||
|
|
||||
|
blockquote { |
||||
|
padding-left: $gutter; |
||||
|
padding-right: $gutter; |
||||
|
border-left: 6px solid $info-color; |
||||
|
p { |
||||
|
font-family: $alt-font; |
||||
|
@include font-size(24); |
||||
|
} |
||||
|
cite { |
||||
|
font-family: $base-font; |
||||
|
font-weight: 700; |
||||
|
font-style: normal; |
||||
|
@include font-size(18); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// Code |
||||
|
tt, code, kbd, samp, pre { |
||||
|
font-family: $code-font; |
||||
|
} |
||||
|
pre { |
||||
|
overflow-x: auto; // add scrollbars to wide code blocks |
||||
|
} |
||||
|
p code, |
||||
|
li code { |
||||
|
@include font-size(16,no); |
||||
|
color: $text-color; |
||||
|
white-space: nowrap; |
||||
|
margin: 0 2px; |
||||
|
padding: 0 5px; |
||||
|
border: 1px solid $border-color; |
||||
|
background-color: lighten($primary-color, 95); |
||||
|
border-radius: $border-radius; |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Media and embeds |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/* Figures and images */ |
||||
|
|
||||
|
figure { |
||||
|
margin-left: -1 * $gutter; |
||||
|
margin-right: -1 * $gutter; |
||||
|
// full width figures on small screens |
||||
|
@include media($small) { |
||||
|
margin-left: 0; |
||||
|
margin-right: 0; |
||||
|
position: relative; |
||||
|
} |
||||
|
@include clearfix; |
||||
|
img, |
||||
|
.fluid-width-video-wrapper, |
||||
|
.palette { |
||||
|
margin-bottom: (0px + $doc-line-height) / 2; |
||||
|
// margin-bottom: (0rem + ($doc-line-height / $doc-font-size)) / 2; |
||||
|
} |
||||
|
a { |
||||
|
img { |
||||
|
/* Image hover animation */ |
||||
|
@include transition(box-shadow 0.3s); |
||||
|
&:hover { |
||||
|
box-shadow: 0 0 10px rgba($black, .20); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
&.half { |
||||
|
@include outer-container; |
||||
|
@include media($small) { |
||||
|
a, |
||||
|
> img { |
||||
|
@include span-columns(6); |
||||
|
@include omega(2n); |
||||
|
} |
||||
|
figcaption { |
||||
|
clear: left; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
&.third { |
||||
|
@include outer-container; |
||||
|
@include media($small) { |
||||
|
a, |
||||
|
> img { |
||||
|
@include span-columns(4); |
||||
|
@include omega(3n); |
||||
|
} |
||||
|
figcaption { |
||||
|
clear: left; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* Figure captions */ |
||||
|
|
||||
|
figcaption { |
||||
|
padding-left: $gutter; |
||||
|
padding-right: $gutter; |
||||
|
@include media($small) { |
||||
|
padding-left: 0; |
||||
|
padding-right: 0; |
||||
|
} |
||||
|
font-family: $alt-font; |
||||
|
@include font-size(14,yes); |
||||
|
color: $caption-color; |
||||
|
clear: both; |
||||
|
a { |
||||
|
color: $caption-color; |
||||
|
text-decoration: none; |
||||
|
border-bottom: 1px dotted $caption-color; |
||||
|
&:hover { |
||||
|
border-bottom-style: solid; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.half, |
||||
|
.third { |
||||
|
& figcaption { /* Remove caption indents */ |
||||
|
padding-left: 0; |
||||
|
padding-right: 0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* Fix IE9 SVG bug */ |
||||
|
svg:not(:root) { |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Tables |
||||
|
========================================================================== */ |
||||
|
|
||||
|
table { |
||||
|
border-collapse: collapse; |
||||
|
margin: ((0px + $doc-line-height) / 2) 0; |
||||
|
margin: ((0rem + ($doc-line-height / $doc-font-size)) / 2) 0; |
||||
|
width: 100%; |
||||
|
} |
||||
|
tbody { |
||||
|
tr:hover > td, tr:hover > th { |
||||
|
background-color: $table-hover-color; |
||||
|
} |
||||
|
} |
||||
|
thead { |
||||
|
tr:first-child td { |
||||
|
border-bottom: 2px solid $table-border-color; |
||||
|
} |
||||
|
} |
||||
|
th { |
||||
|
padding: (0px + $doc-line-height) / 2; |
||||
|
padding: (0rem + ($doc-line-height / $doc-font-size)) / 2; |
||||
|
font-family: $alt-font; |
||||
|
font-weight: bold; |
||||
|
text-align: left; |
||||
|
background-color: $table-header-color; |
||||
|
border-bottom: 1px solid darken($border-color, 15%); |
||||
|
} |
||||
|
td { |
||||
|
border-bottom: 1px solid $border-color; |
||||
|
padding: (0px + $doc-line-height) / 2; |
||||
|
padding: (0rem + ($doc-line-height / $doc-font-size)) / 2; |
||||
|
} |
||||
|
tr, td, th { |
||||
|
vertical-align: middle; |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Horizontal rules |
||||
|
========================================================================== */ |
||||
|
|
||||
|
hr { |
||||
|
display: block; |
||||
|
position: relative; |
||||
|
margin: 0px + (2 * $doc-line-height) 0; |
||||
|
margin: 0rem + ((2 * $doc-line-height) / $doc-font-size) 0; |
||||
|
padding: 0; |
||||
|
height: 5px; |
||||
|
border: 0; |
||||
|
&:before { |
||||
|
content: ''; |
||||
|
position: absolute; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
width: 2 * $column; |
||||
|
height: 1px; |
||||
|
background: $border-color; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Forms |
||||
|
========================================================================== */ |
||||
|
|
||||
|
fieldset { |
||||
|
background: lighten($border-color, 10); |
||||
|
border: 1px solid $border-color; |
||||
|
margin-bottom: 0px + $doc-line-height; |
||||
|
margin-bottom: 0rem + ($doc-line-height / $doc-font-size); |
||||
|
padding: $gutter; |
||||
|
border-radius: $border-radius; |
||||
|
} |
||||
|
|
||||
|
input, |
||||
|
label, |
||||
|
select { |
||||
|
display: block; |
||||
|
@include font-size($form-font-size,no); |
||||
|
} |
||||
|
|
||||
|
label { |
||||
|
font-weight: bold; |
||||
|
font-family: $alt-font; |
||||
|
margin-bottom: (0px + $doc-line-height) / 4; |
||||
|
margin-bottom: (0rem + ($doc-line-height / $doc-font-size)) / 4; |
||||
|
&.required:after { |
||||
|
content: "*"; |
||||
|
} |
||||
|
abbr { |
||||
|
display: none; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
textarea, |
||||
|
#{$all-text-inputs}, |
||||
|
select, |
||||
|
select[multiple=multiple] { |
||||
|
@include box-sizing(border-box); |
||||
|
@include transition(border-color); |
||||
|
background-color: white; |
||||
|
border-radius: $form-border-radius; |
||||
|
border: 1px solid $form-border-color; |
||||
|
box-shadow: $form-box-shadow; |
||||
|
font-family: $form-font-family; |
||||
|
font-size: $form-font-size; |
||||
|
margin-bottom: (0px + $doc-line-height) / 2; |
||||
|
margin-bottom: (0rem + ($doc-line-height / $doc-font-size)) / 2; |
||||
|
padding: ((0px + $doc-line-height) / 3) ((0px + $doc-line-height) / 3); |
||||
|
padding: ((0rem + ($doc-line-height / $doc-font-size)) / 3) ((0rem + ($doc-line-height / $doc-font-size)) / 3); |
||||
|
width: 100%; |
||||
|
&:hover { |
||||
|
border-color: $form-border-color-hover; |
||||
|
} |
||||
|
&:focus { |
||||
|
border-color: $form-border-color-focus; |
||||
|
box-shadow: $form-box-shadow-focus; |
||||
|
outline: none; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
textarea { |
||||
|
resize: vertical; |
||||
|
} |
||||
|
|
||||
|
input[type="search"] { |
||||
|
@include appearance(none); |
||||
|
} |
||||
|
|
||||
|
input[type="checkbox"], input[type="radio"] { |
||||
|
display: inline; |
||||
|
margin-right: (0px + $doc-line-height) / 4; |
||||
|
margin-right: (0rem + ($doc-line-height / $doc-font-size)) / 4; |
||||
|
} |
||||
|
|
||||
|
input[type="file"] { |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
select { |
||||
|
width: auto; |
||||
|
max-width: 100%; |
||||
|
margin-bottom: 0px + $doc-line-height; |
||||
|
margin-bottom: 0rem + ($doc-line-height / $doc-font-size); |
||||
|
} |
||||
|
|
||||
|
form button, |
||||
|
input[type="submit"] { |
||||
|
@extend .btn; |
||||
|
@include appearance(none); |
||||
|
cursor: pointer; |
||||
|
user-select: none; |
||||
|
vertical-align: middle; |
||||
|
white-space: nowrap; |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Navigation lists |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Removes margins, padding, and bullet points from navigation lists |
||||
|
* |
||||
|
* Example usage: |
||||
|
* <nav> |
||||
|
* <ul> |
||||
|
* <li><a href="#link-1">Link 1</a></li> |
||||
|
* <li><a href="#link-2">Link 2</a></li> |
||||
|
* <li><a href="#link-3">Link 3</a></li> |
||||
|
* </ul> |
||||
|
* </nav> |
||||
|
*/ |
||||
|
|
||||
|
nav { |
||||
|
ul { |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
} |
||||
|
li { |
||||
|
list-style: none; |
||||
|
} |
||||
|
a { |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Global animation transition |
||||
|
========================================================================== */ |
||||
|
|
||||
|
b, i, strong, em, blockquote, p, q, span, figure, img, h1, h2, header, input, a, tr, td, .highlight { |
||||
|
@include transition (color 0.2s ease-out, opacity 0.2s ease-out, background 0.2s ease-out, border-color 0.2s ease-out); |
||||
|
} |
@ -0,0 +1,16 @@ |
|||||
|
/* ========================================================================== |
||||
|
Breadcrumb navigation |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.breadcrumbs { |
||||
|
@include row; |
||||
|
margin-top: $gutter; |
||||
|
@include font-size(10,no); |
||||
|
a { |
||||
|
display: inline-block; |
||||
|
font-family: $alt-font; |
||||
|
font-weight: 700; |
||||
|
text-align: left; |
||||
|
text-transform: uppercase; |
||||
|
} |
||||
|
} |
@ -0,0 +1,50 @@ |
|||||
|
/* ========================================================================== |
||||
|
Visual bullets (image + text) |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.bullets { |
||||
|
$icon-bullet-size: $column; |
||||
|
overflow: auto; |
||||
|
|
||||
|
// change ".three-col-bullet" class to this for two bullet layout |
||||
|
.two-col-bullet { |
||||
|
@include media($large) { |
||||
|
@include span-columns(6); |
||||
|
@include omega(2n); |
||||
|
} |
||||
|
} |
||||
|
.three-col-bullet { |
||||
|
@include media($large) { |
||||
|
@include span-columns(4); |
||||
|
@include omega(3n); |
||||
|
} |
||||
|
} |
||||
|
// change ".three-col-bullet" class to this for four bullet layout |
||||
|
.four-col-bullet { |
||||
|
@include media($large) { |
||||
|
@include span-columns(3); |
||||
|
@include omega(4n); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.bullet-icon { |
||||
|
float: left; |
||||
|
background: $base-color; |
||||
|
padding: $icon-bullet-size /4; |
||||
|
border-radius: 50%; |
||||
|
width: $icon-bullet-size * 1.25; |
||||
|
height: $icon-bullet-size * 1.25; |
||||
|
} |
||||
|
.bullet-content { |
||||
|
margin-left: $icon-bullet-size * 1.4; |
||||
|
margin-bottom: 2em; |
||||
|
} |
||||
|
h2 { |
||||
|
margin-top: 0; |
||||
|
@include font-size(20,no); |
||||
|
display: inline-block; |
||||
|
} |
||||
|
p { |
||||
|
@include font-size(14); |
||||
|
} |
||||
|
} |
@ -0,0 +1,156 @@ |
|||||
|
/* ========================================================================== |
||||
|
Buttons |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/* |
||||
|
Default button .btn |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.btn { |
||||
|
display: inline-block; |
||||
|
padding: 8px 20px; |
||||
|
@include font-size(14); |
||||
|
font-family: $alt-font; |
||||
|
background-color: $primary-color; |
||||
|
color: $white; |
||||
|
text-decoration: none; |
||||
|
border: 0 !important; |
||||
|
border-radius: 10 * $border-radius; |
||||
|
@include transition(background 0.2s, border 0.2s); |
||||
|
&:hover { |
||||
|
color: $white; |
||||
|
background-color: lighten($primary-color, 10); |
||||
|
} |
||||
|
&:active { |
||||
|
// move button slightly on click |
||||
|
@include transform(translateY(1px)); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Inverse button .btn-inverse |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.btn-inverse { |
||||
|
@extend .btn; |
||||
|
background-color: $white; |
||||
|
color: $text-color; |
||||
|
&:visited, |
||||
|
&:active { |
||||
|
color: $text-color; |
||||
|
} |
||||
|
&:hover { |
||||
|
color: $white; |
||||
|
background-color: $text-color; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Info button .btn-info |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.btn-info { |
||||
|
@extend .btn; |
||||
|
background-color: $info-color; |
||||
|
color: $white; |
||||
|
&:visited { |
||||
|
color: $white; |
||||
|
} |
||||
|
&:hover { |
||||
|
background-color: lighten($info-color, 10); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Warning button .btn-warning |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.btn-warning { |
||||
|
@extend .btn; |
||||
|
background-color: $warning-color; |
||||
|
color: $white; |
||||
|
&:visited { |
||||
|
color: $white; |
||||
|
} |
||||
|
&:hover { |
||||
|
background-color: lighten($warning-color ,10); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Success button .btn-success |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.btn-success { |
||||
|
@extend .btn; |
||||
|
background-color: $success-color; |
||||
|
color: $white; |
||||
|
&:visited { |
||||
|
color: $white; |
||||
|
} |
||||
|
&:hover { |
||||
|
background-color:lighten($success-color, 10); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Danger button .btn-danger |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.btn-danger { |
||||
|
@extend .btn; |
||||
|
background-color: $danger-color; |
||||
|
color: $white; |
||||
|
&:visited { |
||||
|
color: $white; |
||||
|
} |
||||
|
&:hover { |
||||
|
background-color: lighten($danger-color, 10); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Social media buttons |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.btn-social { |
||||
|
$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); |
||||
|
@extend .btn-inverse; |
||||
|
color: $text-color !important; |
||||
|
&:visited, |
||||
|
&:active { |
||||
|
color: $text-color; |
||||
|
} |
||||
|
border: 1px solid $border-color !important; |
||||
|
@each $socialnetwork, $color in $social { |
||||
|
i.fa-#{$socialnetwork} { |
||||
|
color: $color; |
||||
|
} |
||||
|
} |
||||
|
&:hover { |
||||
|
color: $white !important; |
||||
|
} |
||||
|
@each $socialnetwork, $color in $social { |
||||
|
&.#{$socialnetwork}:hover { |
||||
|
background: $color; |
||||
|
border-color: $color; |
||||
|
@each $socialnetwork, $color in $social { |
||||
|
i.fa-#{$socialnetwork} { |
||||
|
color: $white; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,14 @@ |
|||||
|
/* ========================================================================== |
||||
|
Footnotes |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.footnotes { |
||||
|
font-family: $alt-font; |
||||
|
p, li { |
||||
|
@include font-size(12,no); |
||||
|
} |
||||
|
&:before { |
||||
|
content: 'Footnotes:'; |
||||
|
font-weight: 700; |
||||
|
} |
||||
|
} |
@ -0,0 +1,15 @@ |
|||||
|
/* ========================================================================== |
||||
|
Grid settings for Neat |
||||
|
========================================================================== */ |
||||
|
|
||||
|
@import "vendor/neat/neat-helpers"; |
||||
|
|
||||
|
// Change the grid settings |
||||
|
$visual_grid: false; |
||||
|
|
||||
|
// Define your breakpoints |
||||
|
$short: new-breakpoint(max-height em(700) 12); |
||||
|
$micro: new-breakpoint(min-width em(240) max-width em(480) 12); |
||||
|
$small: new-breakpoint(min-width em(600) 12); |
||||
|
$medium: new-breakpoint(min-width em(900) 12); |
||||
|
$large: new-breakpoint(min-width em(1280) 12); |
@ -0,0 +1,153 @@ |
|||||
|
/* ========================================================================== |
||||
|
Helpers and Utility Classes |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.wrap { |
||||
|
@include outer-container; |
||||
|
} |
||||
|
|
||||
|
.come-in { |
||||
|
@include transform(translateY(20px)); |
||||
|
@include animation(pop 0.5s ease forwards); |
||||
|
} |
||||
|
|
||||
|
.already-visible { |
||||
|
@include transform(translateY(0)); |
||||
|
@include animation(none); |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Hide |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.hidden, |
||||
|
.load { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
No scrollbars |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.no-scroll { |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Inline button(s) wrapper |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.inline-btn { |
||||
|
@include clearfix; |
||||
|
a, btn { |
||||
|
display: inline-block; |
||||
|
margin-right: $gutter / 2; |
||||
|
&:last-child { |
||||
|
margin-right: 0; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Shorten measure of text to improve readability |
||||
|
========================================================================== */ |
||||
|
|
||||
|
@include media($medium) { |
||||
|
.shorten { |
||||
|
width: percentage(8/12); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Center align text |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.center { |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Align image to the right |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.image-right { |
||||
|
display: block; |
||||
|
margin-left: auto; |
||||
|
margin-right: auto; |
||||
|
@include media($medium) { |
||||
|
float: right; |
||||
|
margin-left: $gutter; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Thumbnail grid (default) |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.th-grid { |
||||
|
@include row($direction: LTR); |
||||
|
@include clearfix; |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
li { |
||||
|
list-style: none; |
||||
|
@include span-columns(3); |
||||
|
@include omega(4n); |
||||
|
margin-bottom: flex-gutter($grid-columns); |
||||
|
} |
||||
|
a { |
||||
|
img { |
||||
|
// Image hover animation |
||||
|
&:hover { |
||||
|
@include animation(pop .3s 0 linear); |
||||
|
box-shadow: 0 0 10px rgba($black, .20); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Thumbnail grid (oversized) |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.th-grid-full { |
||||
|
@include clearfix; |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
@include media($large) { |
||||
|
margin-right: -29em; // magic number ugh |
||||
|
} |
||||
|
@at-root { |
||||
|
.archive-wrap & { |
||||
|
margin-right: 0; |
||||
|
} |
||||
|
} |
||||
|
li { |
||||
|
list-style: none; |
||||
|
margin-bottom: flex-gutter($grid-columns); |
||||
|
@include media($micro) { |
||||
|
@include span-columns(3); |
||||
|
@include omega(4n); |
||||
|
} |
||||
|
@media screen and (min-width: em(480)) and (max-width: em(999)) { |
||||
|
@include span-columns(3); |
||||
|
@include omega(4n); |
||||
|
} |
||||
|
@include media($large) { |
||||
|
float: left; |
||||
|
width: 6.575em; |
||||
|
margin-right: .25em; // magic number ugh |
||||
|
margin-bottom: .25em; // magic number ugh |
||||
|
@include omega(9n); |
||||
|
} |
||||
|
} |
||||
|
a { |
||||
|
img { |
||||
|
// Image hover animation |
||||
|
&:hover { |
||||
|
@include animation(pop .3s 0 linear); |
||||
|
box-shadow: 0 0 10px rgba($black, .20); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,351 @@ |
|||||
|
/* ========================================================================== |
||||
|
Page layout |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/* |
||||
|
Masthead |
||||
|
========================================================================== */ |
||||
|
|
||||
|
#masthead { |
||||
|
padding: $gutter; |
||||
|
z-index: 5; |
||||
|
@include transform(translate(0,0)); |
||||
|
@include transition(500ms cubic-bezier(.645,.045,.355,1.000)); |
||||
|
&.slide { |
||||
|
@include transform(translate(-1600px,0)); |
||||
|
} |
||||
|
.inner-wrap { |
||||
|
@include outer-container; |
||||
|
} |
||||
|
} |
||||
|
.site-title { |
||||
|
@include row; |
||||
|
@include media($large) { |
||||
|
@include span-columns(4); |
||||
|
} |
||||
|
padding: (.25 * $masthead-height) 0; // fourth the height to center vertically |
||||
|
height: $masthead-height; |
||||
|
text-decoration: none; |
||||
|
color: $black; |
||||
|
font-family: $alt-font; |
||||
|
font-weight: 700; |
||||
|
@include font-size(20,no); |
||||
|
line-height: .5 * $masthead-height; // half the height to center vertically |
||||
|
text-transform: uppercase; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/* |
||||
|
Menus |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.menu { |
||||
|
li { |
||||
|
float: left; |
||||
|
&:last-child a { |
||||
|
@include media($medium) { |
||||
|
margin-right: 0; // remove spacing from last menu link |
||||
|
} |
||||
|
} |
||||
|
a { |
||||
|
// line hover effect |
||||
|
position: relative; |
||||
|
display: block; |
||||
|
margin-right: $gutter; |
||||
|
padding: (.25 * $masthead-height) 0 (.25 * $masthead-height) ; |
||||
|
height: $masthead-height; |
||||
|
font-family: $alt-font; |
||||
|
&:before, |
||||
|
&:after { |
||||
|
content: ''; |
||||
|
display: block; |
||||
|
position: absolute; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
height: 2px; |
||||
|
@include transition(width 0.3s); |
||||
|
} |
||||
|
&:before { |
||||
|
width: 100%; |
||||
|
background: transparent; |
||||
|
} |
||||
|
&:after { |
||||
|
width: 0; |
||||
|
background: $black; |
||||
|
} |
||||
|
&:active:after, |
||||
|
&:hover:after { |
||||
|
width: 100%; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* Top menu navigation */ |
||||
|
|
||||
|
.top-menu { |
||||
|
display: none; |
||||
|
position: relative; |
||||
|
@include media($medium) { |
||||
|
@include span-columns(12); |
||||
|
} |
||||
|
@include media($large) { |
||||
|
@include span-columns(7); |
||||
|
ul { |
||||
|
position: absolute; |
||||
|
right: 0; |
||||
|
} |
||||
|
} |
||||
|
.home, |
||||
|
.sub-menu-item { |
||||
|
display: none; |
||||
|
} |
||||
|
li { |
||||
|
a { |
||||
|
font-weight: 700; |
||||
|
@include font-size(16,no); |
||||
|
line-height: .5 * $masthead-height; // half the height to center vertically |
||||
|
color: $black; |
||||
|
text-transform: uppercase; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* Bottom menu navigation */ |
||||
|
|
||||
|
.bottom-menu { |
||||
|
@include clearfix; |
||||
|
font-weight: 700; |
||||
|
a { |
||||
|
color: lighten($black,60); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/* |
||||
|
Page wrapper |
||||
|
========================================================================== */ |
||||
|
|
||||
|
#page-wrapper { |
||||
|
padding: 0 $gutter; // add white space for smaller screens |
||||
|
@include size(100% 100%); |
||||
|
-webkit-overflow-scrolling: touch; |
||||
|
z-index: 2; |
||||
|
@include transform(translate(0,0)); |
||||
|
@include transition(500ms cubic-bezier(.645,.045,.355,1.000)); |
||||
|
&.slide { |
||||
|
@include transform(translate(-60rem,0)); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Main content |
||||
|
========================================================================== */ |
||||
|
|
||||
|
#main { |
||||
|
.inner-wrap { |
||||
|
@include media($medium) { |
||||
|
@include span-columns(9); |
||||
|
} |
||||
|
} |
||||
|
.page-title { |
||||
|
@include fill-parent; |
||||
|
} |
||||
|
@at-root { |
||||
|
.page-content { |
||||
|
@include fill-parent; |
||||
|
// larger font for intro paragraph |
||||
|
> p { |
||||
|
&:first-child { |
||||
|
@include font-size(20,yes,30); |
||||
|
} |
||||
|
} |
||||
|
// cleaner underlines for links |
||||
|
a { text-decoration: none; } |
||||
|
p a, |
||||
|
li a { |
||||
|
border-bottom: 1px dotted lighten($link-color, 50); |
||||
|
&:hover { |
||||
|
border-bottom-style: solid; |
||||
|
} |
||||
|
} |
||||
|
p > a.reversefootnote { |
||||
|
border-bottom-width: 0; |
||||
|
} |
||||
|
.toc li > a { |
||||
|
border-bottom-width: 0; |
||||
|
} |
||||
|
.page-footer, |
||||
|
.pagination { |
||||
|
@include fill-parent; |
||||
|
} |
||||
|
.page-meta { |
||||
|
p{ |
||||
|
@include font-size(14,no); |
||||
|
font-family: $alt-font; |
||||
|
color: lighten($black,60); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
@at-root { |
||||
|
.archive-wrap { |
||||
|
@include fill-parent; |
||||
|
.page-content { |
||||
|
@include reset-all; |
||||
|
@include fill-parent; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
/* advertisements */ |
||||
|
.ads { |
||||
|
position: relative; |
||||
|
text-align: center; |
||||
|
margin-top: $gutter; |
||||
|
margin-left: -$gutter; |
||||
|
margin-right: -$gutter; |
||||
|
padding: 10px 0 20px; |
||||
|
background: lighten($border-color,5); |
||||
|
@include media($medium) { |
||||
|
@include span-columns(3); |
||||
|
margin-left: 0; |
||||
|
margin-right: 0; |
||||
|
} |
||||
|
&:after { |
||||
|
content: 'Advertisement'; |
||||
|
position: absolute; |
||||
|
bottom: 0; |
||||
|
width: 100%; |
||||
|
text-align: center; |
||||
|
display: block; |
||||
|
@include font-size(9,no); |
||||
|
font-family: $alt-font; |
||||
|
} |
||||
|
ins { |
||||
|
border-width: 0; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
// page lead |
||||
|
.page-lead { |
||||
|
background-position: center top; |
||||
|
background-repeat: no-repeat; |
||||
|
background-attachment: fixed; |
||||
|
text-align: center; |
||||
|
color: $white; |
||||
|
@include media($large) { |
||||
|
background-size: cover; |
||||
|
} |
||||
|
} |
||||
|
.page-lead-content { |
||||
|
padding: 1em; |
||||
|
@include media($medium) { |
||||
|
padding: 2em; |
||||
|
} |
||||
|
@include media($large) { |
||||
|
padding: 3em; |
||||
|
} |
||||
|
h1 { |
||||
|
@include font-size(48); |
||||
|
@include media($medium) { |
||||
|
@include font-size(60); |
||||
|
} |
||||
|
@include media($large) { |
||||
|
@include font-size(72); |
||||
|
} |
||||
|
} |
||||
|
h2 { |
||||
|
@include font-size(20); |
||||
|
@include media($medium) { |
||||
|
@include font-size(24); |
||||
|
} |
||||
|
@include media($large) { |
||||
|
@include font-size(32); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
// page header |
||||
|
.page-feature { |
||||
|
@include fill-parent; |
||||
|
// expand image to cover full width of header |
||||
|
img { |
||||
|
width: 100%; |
||||
|
} |
||||
|
} |
||||
|
// make image flush with edges on small screens |
||||
|
.page-image { |
||||
|
position: relative; |
||||
|
margin-left: -1 * $gutter; |
||||
|
margin-right: -1 * $gutter; |
||||
|
// feature image caption |
||||
|
.image-credit { |
||||
|
position: absolute; |
||||
|
bottom: 0; |
||||
|
right: 0; |
||||
|
margin: 0 auto; |
||||
|
padding: 10px 15px; |
||||
|
background-color: rgba($black,.5); |
||||
|
color: $white; |
||||
|
font-family: $alt-font; |
||||
|
@include font-size(12,no); |
||||
|
text-align: right; |
||||
|
z-index: 10; |
||||
|
a { |
||||
|
color: $white; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Page footer |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.page-footer { |
||||
|
position: relative; |
||||
|
} |
||||
|
|
||||
|
/* Author block */ |
||||
|
|
||||
|
.author-image { |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
img { |
||||
|
width: 80px; |
||||
|
height: 80px; |
||||
|
border-radius: $border-radius; |
||||
|
} |
||||
|
} |
||||
|
.author-content { |
||||
|
word-wrap: break-word; |
||||
|
padding-left: 100px; //avatar width + 20px padding |
||||
|
min-height: 80px; //mirrors avatar height |
||||
|
} |
||||
|
.author-name { |
||||
|
@include font-size(20,no); |
||||
|
} |
||||
|
.author-bio { |
||||
|
margin-top: 0; |
||||
|
@include font-size(16); |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Site footer |
||||
|
========================================================================== */ |
||||
|
|
||||
|
#site-footer { |
||||
|
@include outer-container; |
||||
|
margin-top: (3 * (0px + $doc-line-height)); |
||||
|
margin-top: (3 * (0rem + ($doc-line-height / $doc-font-size))); |
||||
|
padding-bottom: $gutter; |
||||
|
font-family: $alt-font; |
||||
|
/* Copyright text */ |
||||
|
.copyright { |
||||
|
@include font-size(12); |
||||
|
color: lighten($black,60); |
||||
|
a { |
||||
|
color: lighten($black,60); |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,130 @@ |
|||||
|
/* ========================================================================== |
||||
|
ANIMATED 3 LINE NAVICONS |
||||
|
https://github.com/SaraSoueidan/navicon-transformicons |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/* Common to all three-liners */ |
||||
|
|
||||
|
@mixin line { |
||||
|
display: inline-block; |
||||
|
width: $button-size; |
||||
|
height: $button-size/7; |
||||
|
background: $white; |
||||
|
transition: $transition; |
||||
|
} |
||||
|
|
||||
|
.nav-lines { |
||||
|
@include line; |
||||
|
position: relative; |
||||
|
&:before, &:after { |
||||
|
@include line; |
||||
|
position: absolute; |
||||
|
left:0; |
||||
|
content: ''; |
||||
|
transform-origin: $button-size/14 center; |
||||
|
} |
||||
|
&:before { |
||||
|
top: $button-size/4; |
||||
|
} |
||||
|
&:after { |
||||
|
top: -$button-size/4; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.lines-button:hover { |
||||
|
.nav-lines { |
||||
|
&:before { |
||||
|
top: $button-size/3.5; |
||||
|
} |
||||
|
&:after { |
||||
|
top: -$button-size/3.5; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* For both the arrow up and left icons */ |
||||
|
|
||||
|
.lines-button.arrow.close { |
||||
|
.nav-lines { |
||||
|
&:before, |
||||
|
&:after { |
||||
|
top: 0; |
||||
|
width: $button-size/1.8; |
||||
|
} |
||||
|
&:before { |
||||
|
transform: rotate3d(0,0,1,40deg); |
||||
|
} |
||||
|
&:after { |
||||
|
transform: rotate3d(0,0,1,-40deg); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* Arrow up only: just rotate by 90degrees */ |
||||
|
|
||||
|
.lines-button.arrow-up.close { |
||||
|
transform: scale3d(.8,.8,.8) rotate3d(0, 0, 1,90deg); |
||||
|
} |
||||
|
|
||||
|
/* Three-lines to minus only */ |
||||
|
|
||||
|
.lines-button.minus.close { |
||||
|
.nav-lines { |
||||
|
&:before, &:after { |
||||
|
transform: none; |
||||
|
top: 0; |
||||
|
width: $button-size; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* Three-lines to x */ |
||||
|
|
||||
|
.lines-button.x.close{ |
||||
|
.nav-lines { |
||||
|
background: transparent; |
||||
|
&:before, &:after{ |
||||
|
transform-origin: 50% 50%; |
||||
|
top: 0; |
||||
|
width: $button-size; |
||||
|
} |
||||
|
&:before{ |
||||
|
transform: rotate3d(0,0,1,45deg); |
||||
|
} |
||||
|
&:after{ |
||||
|
transform: rotate3d(0,0,1,-45deg); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* Three-lines to x method 2 */ |
||||
|
|
||||
|
.lines-button.x2 { |
||||
|
.nav-lines { |
||||
|
transition: background .3s .5s ease; |
||||
|
&:before, &:after { |
||||
|
/* set transform origin */ |
||||
|
transform-origin: 50% 50%; |
||||
|
transition: top .3s .6s ease, -webkit-transform .3s ease; |
||||
|
transition: top .3s .6s ease, transform .3s ease; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.lines-button.x2.close { |
||||
|
.nav-lines { |
||||
|
transition: background .3s 0s ease; |
||||
|
background: transparent; |
||||
|
&:before, &:after { |
||||
|
transition: top .3s ease, -webkit-transform .3s .5s ease; /* delay the formation of the x till the minus is formed */ |
||||
|
transition: top .3s ease, transform .3s .5s ease; /* delay the formation of the x till the minus is formed */ |
||||
|
top: 0; |
||||
|
width: $button-size; |
||||
|
} |
||||
|
&:before { |
||||
|
transform: rotate3d(0,0,1,45deg); |
||||
|
} |
||||
|
&:after { |
||||
|
transform: rotate3d(0,0,1,-45deg); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,94 @@ |
|||||
|
// MIXINS |
||||
|
// -------------------------------------------------- |
||||
|
|
||||
|
%tab-focus { |
||||
|
// Default |
||||
|
outline: thin dotted #333; |
||||
|
// Webkit |
||||
|
outline: 5px auto -webkit-focus-ring-color; |
||||
|
outline-offset: -2px; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
// Typography |
||||
|
// -------------------------------------------------- |
||||
|
|
||||
|
/* Vertical Rhythm |
||||
|
https://github.com/sturobson/Sassifaction |
||||
|
|
||||
|
In this mixin you can specify the font size in PX and |
||||
|
it will calculate the REM based on your $doc-font-size |
||||
|
& $doc-line-height variables. |
||||
|
|
||||
|
@include font-size(24); |
||||
|
|
||||
|
It will also create a bottom margin based on the |
||||
|
$doc-font-size & $doc-line-height variables unless you |
||||
|
specify that it shouldn't have one. |
||||
|
|
||||
|
@include font-size(24, no); |
||||
|
|
||||
|
Or if you want to specify a different bottom margin to |
||||
|
be generated. |
||||
|
|
||||
|
@include font-size(24,32); |
||||
|
|
||||
|
This mixin also generates a pixel-less line height by |
||||
|
default unless you specify that you either don't want |
||||
|
one where I'd suggest declaring 1 within the mixin. |
||||
|
|
||||
|
@include font-size(24, yes, 1); |
||||
|
|
||||
|
There's also the option to specify a different line-height |
||||
|
for it to generate to, where you would specify the |
||||
|
line-height in (effectively) it's pixel value. |
||||
|
|
||||
|
@include font-size(24, yes, 40); |
||||
|
*/ |
||||
|
|
||||
|
@mixin font-size($size, $margin: yes, $line-height: $doc-line-height) { |
||||
|
|
||||
|
// generates the font-size in REMs with a PX fallback |
||||
|
font-size: 0px + $size; |
||||
|
font-size: 0rem + $size / $doc-font-size; |
||||
|
|
||||
|
// line-height functions |
||||
|
//////////////////////// |
||||
|
|
||||
|
// if you a line-height is specified in the mixin |
||||
|
@if $line-height != $doc-line-height and $line-height != 1 { |
||||
|
line-height: ceil($size / $line-height) * ($line-height / $size); |
||||
|
} |
||||
|
|
||||
|
// if $line-height == 1 |
||||
|
// because, typing 1 is quicker than 16 |
||||
|
@else if $line-height == 1 { |
||||
|
line-height: 1; |
||||
|
} |
||||
|
|
||||
|
// normal $line-height |
||||
|
// if the line-height is left. |
||||
|
@else { |
||||
|
line-height: ceil($size / $doc-line-height) * ($doc-line-height / $size); |
||||
|
} |
||||
|
|
||||
|
// margin-bottom functions |
||||
|
////////////////////////// |
||||
|
|
||||
|
// if no is bottom margin is required |
||||
|
@if $margin == no { |
||||
|
margin-bottom: 0; |
||||
|
} |
||||
|
|
||||
|
// if a specific bottom margin is required |
||||
|
@else if $margin != yes and $margin != no { |
||||
|
margin-bottom: 0px + $margin; |
||||
|
margin-bottom: 0rem + ($margin / $doc-font-size); |
||||
|
} |
||||
|
|
||||
|
// if you're keeping the vertical rhythm with the margin |
||||
|
@else { |
||||
|
margin-bottom: 0px + $doc-line-height; |
||||
|
margin-bottom: 0rem + ($doc-line-height / $doc-font-size); |
||||
|
} |
||||
|
} |
@ -0,0 +1,79 @@ |
|||||
|
/* ========================================================================== |
||||
|
Notices |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/* |
||||
|
Default notice .notice |
||||
|
========================================================================== */ |
||||
|
|
||||
|
@mixin notice($notice-color) { |
||||
|
position: relative; |
||||
|
padding: 1.5em; |
||||
|
font-family: $alt-font; |
||||
|
@include font-size(14,39); |
||||
|
color: $white; |
||||
|
background-color: $notice-color; |
||||
|
border-radius: $border-radius; |
||||
|
a { |
||||
|
color: $white; |
||||
|
border-bottom: 1px dotted $white; |
||||
|
} |
||||
|
} |
||||
|
.notice { |
||||
|
@include notice($primary-color); |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Inverse notice .notice-inverse |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.notice-inverse { |
||||
|
@include notice($white); |
||||
|
color: $text-color; |
||||
|
a { |
||||
|
color: $text-color; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Info notice .notice-info |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.notice-info { |
||||
|
@include notice($info-color); |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Warning notice .notice-warning |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.notice-warning { |
||||
|
@include notice($warning-color); |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Success notice .notice-success |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.notice-success { |
||||
|
@include notice($success-color); |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Danger notice .notice-danger |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.notice-danger { |
||||
|
@include notice($danger-color); |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Browser upgrade notice |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.upgrade { |
||||
|
text-align: center; |
||||
|
a { |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
} |
@ -0,0 +1,144 @@ |
|||||
|
/* ========================================================================== |
||||
|
Style resets |
||||
|
Adapted from http://github.com/necolas/normalize.css |
||||
|
========================================================================== */ |
||||
|
|
||||
|
// Apply a natural box layout model to all elements |
||||
|
*, *:before, *:after { |
||||
|
-moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
// Remove margin |
||||
|
body { margin: 0; } |
||||
|
|
||||
|
// Display HTML5 elements in IE6-9 and FF3 |
||||
|
article, |
||||
|
aside, |
||||
|
details, |
||||
|
figcaption, |
||||
|
figure, |
||||
|
footer, |
||||
|
header, |
||||
|
hgroup, |
||||
|
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; |
||||
|
} |
||||
|
|
||||
|
// Base font settings |
||||
|
html { |
||||
|
font-size: 100%; |
||||
|
-webkit-text-size-adjust: 100%; |
||||
|
-ms-text-size-adjust: 100%; |
||||
|
} |
||||
|
// Apply focus state |
||||
|
a:focus { |
||||
|
@extend %tab-focus; |
||||
|
} |
||||
|
|
||||
|
// Remove outline |
||||
|
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; |
||||
|
} |
||||
|
|
||||
|
// Normalize blockquotes |
||||
|
blockquote { |
||||
|
margin: 0; |
||||
|
} |
||||
|
|
||||
|
// Img border in a'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 |
||||
|
@include 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 |
||||
|
} |
@ -0,0 +1,189 @@ |
|||||
|
/* ========================================================================== |
||||
|
OFF CANVAS SLIDING MENU |
||||
|
Based on code by Diego Eis |
||||
|
http://tableless.com.br/fazendo-um-slide-menu-mobile-sem-plugin/ |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/* Slider */ |
||||
|
|
||||
|
.slide { |
||||
|
transform: translateX(-100%); |
||||
|
@include media($medium) { |
||||
|
transform: translateX(em(-600)); |
||||
|
} |
||||
|
@include media($large) { |
||||
|
transform: translateX(em(-900)); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Sliding menu button |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.sliding-menu-button { |
||||
|
position: fixed; |
||||
|
transform: translateZ(0); |
||||
|
backface-visibility: hidden; /* fix scroll jank */ |
||||
|
top: $gutter; |
||||
|
right: $gutter; |
||||
|
display: block; |
||||
|
width: $button-size * 2; |
||||
|
height: $button-size * 2; |
||||
|
background: $primary-color; |
||||
|
outline: 0; |
||||
|
padding: 0; |
||||
|
border: 2.5px solid transparent; |
||||
|
cursor: pointer; |
||||
|
z-index: 20; |
||||
|
box-sizing: border-box; |
||||
|
&:hover { |
||||
|
background: $black; |
||||
|
} |
||||
|
transition: $sliding-menu-animation; |
||||
|
&.slide { |
||||
|
background: $danger-color; |
||||
|
transform: translateX(0); /* don't slide close button on small screens only */ |
||||
|
@include media($medium) { |
||||
|
transform: translateX(em(-600)); /* reset slide position */ |
||||
|
} |
||||
|
@include media($large) { |
||||
|
transform: translateX(em(-900)); /* reset slide position */ |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Sliding content |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.sliding-menu-content { |
||||
|
position: fixed; |
||||
|
top: 0; |
||||
|
right: 0; |
||||
|
padding: em(22) 0; |
||||
|
visibility: hidden; |
||||
|
backface-visibility: hidden; |
||||
|
text-align: left; |
||||
|
@include size(100% 100%); |
||||
|
@include media($small) { |
||||
|
width: em(600); |
||||
|
} |
||||
|
@include media($large) { |
||||
|
width: em(900); |
||||
|
} |
||||
|
transform: translateX(100%); |
||||
|
transition: $sliding-menu-animation; |
||||
|
background: $sliding-menu-background; |
||||
|
z-index: 20; |
||||
|
overflow-y: auto; |
||||
|
overflow-x: hidden; |
||||
|
-webkit-overflow-scrolling: touch; |
||||
|
&.is-visible { |
||||
|
visibility: visible; |
||||
|
transform: translateX(0); |
||||
|
} |
||||
|
h5 { |
||||
|
margin: 0 20% 0 10%; |
||||
|
@include media($large) { |
||||
|
margin-right: 20%; |
||||
|
} |
||||
|
color: $white; |
||||
|
@include font-size(14); |
||||
|
@include media($small) { |
||||
|
@include font-size(16); |
||||
|
} |
||||
|
span { |
||||
|
display: block; |
||||
|
@include font-size(32,no,1); |
||||
|
@include media($small) { |
||||
|
@include font-size(48,no,1); |
||||
|
} |
||||
|
font-family: $base-font; |
||||
|
text-transform: uppercase; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
} |
||||
|
ul { |
||||
|
margin: 0 10%; |
||||
|
@include media($large) { |
||||
|
margin-right: 20%; |
||||
|
} |
||||
|
} |
||||
|
ul, |
||||
|
li { |
||||
|
list-style: none; |
||||
|
} |
||||
|
li { |
||||
|
display: block; |
||||
|
position: relative; |
||||
|
padding-bottom: 1em; |
||||
|
min-height: 70px; |
||||
|
@include media($small) { |
||||
|
min-height: 100px; |
||||
|
} |
||||
|
} |
||||
|
.menu-item { |
||||
|
a { |
||||
|
display: block; |
||||
|
color: $white; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
.teaser { |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
margin-bottom: 0; |
||||
|
width: 50px; |
||||
|
border: 2px solid $white; |
||||
|
margin-bottom: ($gutter / 2); |
||||
|
opacity: 0.6; |
||||
|
@include media($small) { |
||||
|
width: 150px; |
||||
|
} |
||||
|
} |
||||
|
a:hover .teaser { |
||||
|
opacity: 1; |
||||
|
} |
||||
|
.title { |
||||
|
display: block; |
||||
|
margin-left: 60px; |
||||
|
font-family: $alt-font; |
||||
|
@include font-size(24,no); |
||||
|
font-weight: 700; |
||||
|
@include media($small) { |
||||
|
margin-left: 170px; |
||||
|
@include font-size(32,no); |
||||
|
} |
||||
|
} |
||||
|
.excerpt { |
||||
|
margin-top: 0; |
||||
|
margin-left: 60px; |
||||
|
@include font-size(14,no); |
||||
|
@include media($small) { |
||||
|
margin-left: 170px; |
||||
|
@include font-size(16,no); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.sub-menu-item > li a { |
||||
|
display: block; |
||||
|
color: $white; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
.menu-item .home a { |
||||
|
@include font-size(32); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* Dim content when off canvas nav slides in */ |
||||
|
|
||||
|
.menu-screen { |
||||
|
@include position(fixed, 0 0 0 0); |
||||
|
visibility: hidden; |
||||
|
z-index: 4; |
||||
|
&.is-visible { |
||||
|
visibility: visible; |
||||
|
&:hover { |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,135 @@ |
|||||
|
/* ========================================================================== |
||||
|
Syntax highlighting and formatting |
||||
|
========================================================================== */ |
||||
|
|
||||
|
pre.highlight { |
||||
|
padding: 1em; |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
Pygments.rb and Rouge |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.linenos, |
||||
|
.code { |
||||
|
padding: 0; |
||||
|
border-top: 0 solid transparent; |
||||
|
border-bottom: 0 solid transparent; |
||||
|
} |
||||
|
.linenodiv { |
||||
|
@include font-size(16); |
||||
|
} |
||||
|
|
||||
|
.highlight { |
||||
|
overflow-x: auto; |
||||
|
@include font-size(16); |
||||
|
border: 1px solid darken($body-color, 5); |
||||
|
border-radius: $border-radius; |
||||
|
pre { |
||||
|
position: relative; |
||||
|
margin: 0; |
||||
|
padding: 1em; |
||||
|
} |
||||
|
&:hover { |
||||
|
border: 1px solid $form-border-color-hover; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.highlighttable { |
||||
|
tr:hover>td, |
||||
|
tr:hover>th { |
||||
|
background: transparent |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.hll { background-color: #ffffcc } |
||||
|
|
||||
|
.err { color: #a61717; background-color: #e3d2d2 } // Error |
||||
|
|
||||
|
.k { color: #000000; font-weight: bold } // Keyword |
||||
|
|
||||
|
.o { color: #000000; font-weight: bold } // Operator |
||||
|
|
||||
|
.c { color: #999988; font-style: italic } // Comment |
||||
|
.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 |
||||
|
.mf { color: #009999 } // Literal.Number.Float |
||||
|
.mh { color: #009999 } // Literal.Number.Hex |
||||
|
.mi { color: #009999 } // Literal.Number.Integer |
||||
|
.mo { color: #009999 } // Literal.Number.Oct |
||||
|
.il { color: #009999 } // Literal.Number.Integer.Long |
||||
|
.s { color: #d01040 } // Literal.String |
||||
|
.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 |
||||
|
|
||||
|
.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 |
||||
|
.bp { color: #999999 } // Name.Builtin.Pseudo |
||||
|
.nv { color: #008080 } // Name.Variable |
||||
|
.vc { color: #008080 } // Name.Variable.Class |
||||
|
.vg { color: #008080 } // Name.Variable.Global |
||||
|
.vi { color: #008080 } // Name.Variable.Instance |
||||
|
|
||||
|
.ow { color: #000000; font-weight: bold } // Operator.Word |
||||
|
|
||||
|
.w { color: #bbbbbb } // Text.Whitespace |
||||
|
|
||||
|
/* |
||||
|
GitHub Gists |
||||
|
========================================================================== */ |
||||
|
|
||||
|
//Remove extra padding |
||||
|
.gist table { |
||||
|
margin-top:0px; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
//Remove hover effect |
||||
|
.gist tbody |
||||
|
{ |
||||
|
tr:hover > td, tr:hover > th { |
||||
|
background-color:transparent; |
||||
|
}; |
||||
|
background-color:white; //Background color white |
||||
|
} |
@ -0,0 +1,45 @@ |
|||||
|
/* ========================================================================== |
||||
|
Tiles |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.tile { |
||||
|
@include outer-container; |
||||
|
margin-bottom: $gutter; |
||||
|
@include media($micro) { |
||||
|
@include fill-parent; |
||||
|
} |
||||
|
@include media(new-breakpoint(min-width em(480) 12)) { |
||||
|
@include span-columns(3); |
||||
|
@include omega(4n); |
||||
|
} |
||||
|
.entry-date { |
||||
|
@include font-size(16,no); |
||||
|
color: lighten($text-color,25); |
||||
|
} |
||||
|
.post-title { |
||||
|
@include font-size(18,no); |
||||
|
} |
||||
|
.post-excerpt { |
||||
|
@include font-size(16); |
||||
|
} |
||||
|
.post-teaser { |
||||
|
position: relative; |
||||
|
display: block; |
||||
|
&:after { |
||||
|
content: ''; |
||||
|
position: absolute; |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
background: rgba($base-color,0); |
||||
|
pointer-events: none; |
||||
|
@include transition(background 0.3s); |
||||
|
} |
||||
|
&:hover { |
||||
|
&:after { |
||||
|
background: rgba($base-color,0.2); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,71 @@ |
|||||
|
/* ========================================================================== |
||||
|
Table of contents |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/* |
||||
|
Page table of contents |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.toc { |
||||
|
margin-left: -1 * $gutter; |
||||
|
margin-right: -1 * $gutter; |
||||
|
@include media($medium) { |
||||
|
margin-left: 0; |
||||
|
margin-right: 0; |
||||
|
} |
||||
|
font-family: $alt-font; |
||||
|
ul { |
||||
|
margin-top: $gutter; |
||||
|
margin-bottom: $gutter; |
||||
|
border: 1px solid $border-color; |
||||
|
@include media($medium) { |
||||
|
border-radius: $border-radius; |
||||
|
} |
||||
|
} |
||||
|
li { |
||||
|
@include font-size(14,no,16); |
||||
|
@include media($small) { |
||||
|
@include font-size(16,no,18); |
||||
|
} |
||||
|
border-bottom: 1px solid $border-color; |
||||
|
> a { |
||||
|
display: block; |
||||
|
padding: 7px 1.618rem; |
||||
|
color: $text-color; |
||||
|
border-left: 2px solid transparent; |
||||
|
&:hover, |
||||
|
&:focus { |
||||
|
background: mix($white, $border-color, 5%); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
h6 { |
||||
|
margin: 0; |
||||
|
padding: 7px 1.618rem; |
||||
|
background: $table-stripe-color; |
||||
|
&:hover { |
||||
|
background: mix($white, $border-color, 5%); |
||||
|
} |
||||
|
a { |
||||
|
color: $text-color; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
1/4 wide table of contents to be used as a sidebar (left aligned) |
||||
|
========================================================================== */ |
||||
|
|
||||
|
.toc-left { |
||||
|
@include span-columns(12); |
||||
|
@include media($medium) { |
||||
|
@include span-columns(4); |
||||
|
} |
||||
|
margin-left: 0; |
||||
|
ul { |
||||
|
margin-top: 0; |
||||
|
@include media($small) { |
||||
|
margin-bottom: 0.5 * $gutter; |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,110 @@ |
|||||
|
/* ========================================================================== |
||||
|
SCSS Variables |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/* |
||||
|
Typography variables |
||||
|
========================================================================== */ |
||||
|
|
||||
|
$base-font : Georgia,Times,"Times New Roman",serif; |
||||
|
$heading-font : "Helvetica Neue","Segoe UI",Arial,sans-serif; |
||||
|
$caption-font : $base-font; |
||||
|
$code-font : monospace; |
||||
|
$alt-font : $heading-font; |
||||
|
|
||||
|
$doc-font-size : 16; |
||||
|
$doc-line-height : 24; |
||||
|
|
||||
|
$border-radius : 3px; |
||||
|
|
||||
|
/* |
||||
|
Color variables |
||||
|
========================================================================== */ |
||||
|
|
||||
|
$white : #fff; |
||||
|
$black : #000; |
||||
|
|
||||
|
$body-color : #ebebeb; |
||||
|
|
||||
|
$text-color : #313130; |
||||
|
$caption-color : mix($white, $text-color, 25%); |
||||
|
|
||||
|
$base-color : #343434; |
||||
|
$comp-color : complement($base-color); |
||||
|
$border-color : #ddd; |
||||
|
$link-color : #222; |
||||
|
|
||||
|
$primary-color : $black; |
||||
|
$success-color : #2ecc71; |
||||
|
$warning-color : #f1c40f; |
||||
|
$danger-color : #e74c3c; |
||||
|
$info-color : #3498db; |
||||
|
|
||||
|
$table-border-color : $border-color; |
||||
|
$table-border : 1px solid $table-border-color; |
||||
|
$table-background : $body-color; |
||||
|
$table-header-color : lighten($table-background, 10); |
||||
|
$table-hover-color : darken($table-background, 2); |
||||
|
$table-stripe-color : darken($table-background, 4); |
||||
|
$table-stripe-color-hover : darken($table-stripe-color, 5); |
||||
|
|
||||
|
$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; |
||||
|
|
||||
|
|
||||
|
/* |
||||
|
Form variables |
||||
|
========================================================================== */ |
||||
|
|
||||
|
$form-border-color : $border-color; |
||||
|
$form-border-color-hover : darken($border-color, 10); |
||||
|
$form-border-color-focus : $primary-color; |
||||
|
$form-border-radius : $border-radius; |
||||
|
$form-box-shadow : inset 0 1px 3px hsla(0, 0%, 0%, 0.06); |
||||
|
$form-box-shadow-focus : $form-box-shadow, 0 0 5px rgba(darken($form-border-color-focus, 5), 0.7); |
||||
|
$form-font-family : $base-font; |
||||
|
$form-font-size : $doc-font-size; |
||||
|
|
||||
|
|
||||
|
/* |
||||
|
Sliding menu navigation variables |
||||
|
========================================================================== */ |
||||
|
|
||||
|
$sliding-menu-border-color : $black; |
||||
|
$sliding-menu-background : $black; |
||||
|
$sliding-menu-color : $white; |
||||
|
$sliding-menu-background-hover : $black; |
||||
|
$sliding-menu-color-hover : $white; |
||||
|
$sliding-menu-border : 1px solid $sliding-menu-border-color; |
||||
|
$button-size : 30px; |
||||
|
$transition : 0.3s; // increase this to see the transformations in slow-motion |
||||
|
$sliding-menu-animation : all 500ms cubic-bezier(.86,.01,.77,.78); |
||||
|
|
||||
|
/* |
||||
|
Badge variables |
||||
|
========================================================================== */ |
||||
|
|
||||
|
$badge-background : $primary-color; |
||||
|
$badge-dark-color : $black; |
||||
|
$badge-danger-color : $danger-color; |
||||
|
$badge-info-color : $info-color; |
||||
|
$badge-warning-color : $warning-color; |
||||
|
$badge-success-color : $success-color; |
||||
|
$badge-font-color : $white; |
||||
|
|
||||
|
|
||||
|
/* |
||||
|
Masthead variables |
||||
|
========================================================================== */ |
||||
|
|
||||
|
$masthead-height: $button-size * 2; |
@ -0,0 +1,8 @@ |
|||||
|
//************************************************************************// |
||||
|
// These mixins/functions are deprecated |
||||
|
// They will be removed in the next MAJOR version release |
||||
|
//************************************************************************// |
||||
|
@mixin inline-block { |
||||
|
display: inline-block; |
||||
|
@warn "inline-block mixin is deprecated and will be removed in the next major version release"; |
||||
|
} |
@ -0,0 +1,78 @@ |
|||||
|
// Settings |
||||
|
@import "settings/prefixer"; |
||||
|
@import "settings/px-to-em"; |
||||
|
|
||||
|
// Custom Helpers |
||||
|
@import "helpers/convert-units"; |
||||
|
@import "helpers/gradient-positions-parser"; |
||||
|
@import "helpers/is-num"; |
||||
|
@import "helpers/linear-angle-parser"; |
||||
|
@import "helpers/linear-gradient-parser"; |
||||
|
@import "helpers/linear-positions-parser"; |
||||
|
@import "helpers/linear-side-corner-parser"; |
||||
|
@import "helpers/radial-arg-parser"; |
||||
|
@import "helpers/radial-positions-parser"; |
||||
|
@import "helpers/radial-gradient-parser"; |
||||
|
@import "helpers/render-gradients"; |
||||
|
@import "helpers/shape-size-stripper"; |
||||
|
@import "helpers/str-to-num"; |
||||
|
|
||||
|
// Custom Functions |
||||
|
@import "functions/assign"; |
||||
|
@import "functions/color-lightness"; |
||||
|
@import "functions/flex-grid"; |
||||
|
@import "functions/golden-ratio"; |
||||
|
@import "functions/grid-width"; |
||||
|
@import "functions/modular-scale"; |
||||
|
@import "functions/px-to-em"; |
||||
|
@import "functions/px-to-rem"; |
||||
|
@import "functions/strip-units"; |
||||
|
@import "functions/tint-shade"; |
||||
|
@import "functions/transition-property-name"; |
||||
|
@import "functions/unpack"; |
||||
|
|
||||
|
// CSS3 Mixins |
||||
|
@import "css3/animation"; |
||||
|
@import "css3/appearance"; |
||||
|
@import "css3/backface-visibility"; |
||||
|
@import "css3/background"; |
||||
|
@import "css3/background-image"; |
||||
|
@import "css3/border-image"; |
||||
|
@import "css3/border-radius"; |
||||
|
@import "css3/box-sizing"; |
||||
|
@import "css3/calc"; |
||||
|
@import "css3/columns"; |
||||
|
@import "css3/filter"; |
||||
|
@import "css3/flex-box"; |
||||
|
@import "css3/font-face"; |
||||
|
@import "css3/font-feature-settings"; |
||||
|
@import "css3/hyphens"; |
||||
|
@import "css3/hidpi-media-query"; |
||||
|
@import "css3/image-rendering"; |
||||
|
@import "css3/keyframes"; |
||||
|
@import "css3/linear-gradient"; |
||||
|
@import "css3/perspective"; |
||||
|
@import "css3/radial-gradient"; |
||||
|
@import "css3/transform"; |
||||
|
@import "css3/transition"; |
||||
|
@import "css3/user-select"; |
||||
|
@import "css3/placeholder"; |
||||
|
|
||||
|
// Addons & other mixins |
||||
|
@import "addons/button"; |
||||
|
@import "addons/clearfix"; |
||||
|
@import "addons/directional-values"; |
||||
|
@import "addons/ellipsis"; |
||||
|
@import "addons/font-family"; |
||||
|
@import "addons/hide-text"; |
||||
|
@import "addons/html5-input-types"; |
||||
|
@import "addons/position"; |
||||
|
@import "addons/prefixer"; |
||||
|
@import "addons/retina-image"; |
||||
|
@import "addons/size"; |
||||
|
@import "addons/timing-functions"; |
||||
|
@import "addons/triangle"; |
||||
|
@import "addons/word-wrap"; |
||||
|
|
||||
|
// Soon to be deprecated Mixins |
||||
|
@import "bourbon-deprecated-upcoming"; |
@ -0,0 +1,374 @@ |
|||||
|
@mixin button ($style: simple, $base-color: #4294f0, $text-size: inherit, $padding: 7px 18px) { |
||||
|
|
||||
|
@if type-of($style) == string and type-of($base-color) == color { |
||||
|
@include buttonstyle($style, $base-color, $text-size, $padding); |
||||
|
} |
||||
|
|
||||
|
@if type-of($style) == string and type-of($base-color) == number { |
||||
|
$padding: $text-size; |
||||
|
$text-size: $base-color; |
||||
|
$base-color: #4294f0; |
||||
|
|
||||
|
@if $padding == inherit { |
||||
|
$padding: 7px 18px; |
||||
|
} |
||||
|
|
||||
|
@include buttonstyle($style, $base-color, $text-size, $padding); |
||||
|
} |
||||
|
|
||||
|
@if type-of($style) == color and type-of($base-color) == color { |
||||
|
$base-color: $style; |
||||
|
$style: simple; |
||||
|
@include buttonstyle($style, $base-color, $text-size, $padding); |
||||
|
} |
||||
|
|
||||
|
@if type-of($style) == color and type-of($base-color) == number { |
||||
|
$padding: $text-size; |
||||
|
$text-size: $base-color; |
||||
|
$base-color: $style; |
||||
|
$style: simple; |
||||
|
|
||||
|
@if $padding == inherit { |
||||
|
$padding: 7px 18px; |
||||
|
} |
||||
|
|
||||
|
@include buttonstyle($style, $base-color, $text-size, $padding); |
||||
|
} |
||||
|
|
||||
|
@if type-of($style) == number { |
||||
|
$padding: $base-color; |
||||
|
$text-size: $style; |
||||
|
$base-color: #4294f0; |
||||
|
$style: simple; |
||||
|
|
||||
|
@if $padding == #4294f0 { |
||||
|
$padding: 7px 18px; |
||||
|
} |
||||
|
|
||||
|
@include buttonstyle($style, $base-color, $text-size, $padding); |
||||
|
} |
||||
|
|
||||
|
&:disabled { |
||||
|
opacity: 0.5; |
||||
|
cursor: not-allowed; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
// Selector Style Button |
||||
|
//************************************************************************// |
||||
|
@mixin buttonstyle($type, $b-color, $t-size, $pad) { |
||||
|
// Grayscale button |
||||
|
@if $type == simple and $b-color == grayscale($b-color) { |
||||
|
@include simple($b-color, true, $t-size, $pad); |
||||
|
} |
||||
|
|
||||
|
@if $type == shiny and $b-color == grayscale($b-color) { |
||||
|
@include shiny($b-color, true, $t-size, $pad); |
||||
|
} |
||||
|
|
||||
|
@if $type == pill and $b-color == grayscale($b-color) { |
||||
|
@include pill($b-color, true, $t-size, $pad); |
||||
|
} |
||||
|
|
||||
|
@if $type == flat and $b-color == grayscale($b-color) { |
||||
|
@include flat($b-color, true, $t-size, $pad); |
||||
|
} |
||||
|
|
||||
|
// Colored button |
||||
|
@if $type == simple { |
||||
|
@include simple($b-color, false, $t-size, $pad); |
||||
|
} |
||||
|
|
||||
|
@else if $type == shiny { |
||||
|
@include shiny($b-color, false, $t-size, $pad); |
||||
|
} |
||||
|
|
||||
|
@else if $type == pill { |
||||
|
@include pill($b-color, false, $t-size, $pad); |
||||
|
} |
||||
|
|
||||
|
@else if $type == flat { |
||||
|
@include flat($b-color, false, $t-size, $pad); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
// Simple Button |
||||
|
//************************************************************************// |
||||
|
@mixin simple($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) { |
||||
|
$color: hsl(0, 0, 100%); |
||||
|
$border: adjust-color($base-color, $saturation: 9%, $lightness: -14%); |
||||
|
$inset-shadow: adjust-color($base-color, $saturation: -8%, $lightness: 15%); |
||||
|
$stop-gradient: adjust-color($base-color, $saturation: 9%, $lightness: -11%); |
||||
|
$text-shadow: adjust-color($base-color, $saturation: 15%, $lightness: -18%); |
||||
|
|
||||
|
@if is-light($base-color) { |
||||
|
$color: hsl(0, 0, 20%); |
||||
|
$text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%); |
||||
|
} |
||||
|
|
||||
|
@if $grayscale == true { |
||||
|
$border: grayscale($border); |
||||
|
$inset-shadow: grayscale($inset-shadow); |
||||
|
$stop-gradient: grayscale($stop-gradient); |
||||
|
$text-shadow: grayscale($text-shadow); |
||||
|
} |
||||
|
|
||||
|
border: 1px solid $border; |
||||
|
border-radius: 3px; |
||||
|
box-shadow: inset 0 1px 0 0 $inset-shadow; |
||||
|
color: $color; |
||||
|
display: inline-block; |
||||
|
font-size: $textsize; |
||||
|
font-weight: bold; |
||||
|
@include linear-gradient ($base-color, $stop-gradient); |
||||
|
padding: $padding; |
||||
|
text-decoration: none; |
||||
|
text-shadow: 0 1px 0 $text-shadow; |
||||
|
background-clip: padding-box; |
||||
|
|
||||
|
&:hover:not(:disabled) { |
||||
|
$base-color-hover: adjust-color($base-color, $saturation: -4%, $lightness: -5%); |
||||
|
$inset-shadow-hover: adjust-color($base-color, $saturation: -7%, $lightness: 5%); |
||||
|
$stop-gradient-hover: adjust-color($base-color, $saturation: 8%, $lightness: -14%); |
||||
|
|
||||
|
@if $grayscale == true { |
||||
|
$base-color-hover: grayscale($base-color-hover); |
||||
|
$inset-shadow-hover: grayscale($inset-shadow-hover); |
||||
|
$stop-gradient-hover: grayscale($stop-gradient-hover); |
||||
|
} |
||||
|
|
||||
|
box-shadow: inset 0 1px 0 0 $inset-shadow-hover; |
||||
|
cursor: pointer; |
||||
|
@include linear-gradient ($base-color-hover, $stop-gradient-hover); |
||||
|
} |
||||
|
|
||||
|
&:active:not(:disabled), |
||||
|
&:focus:not(:disabled) { |
||||
|
$border-active: adjust-color($base-color, $saturation: 9%, $lightness: -14%); |
||||
|
$inset-shadow-active: adjust-color($base-color, $saturation: 7%, $lightness: -17%); |
||||
|
|
||||
|
@if $grayscale == true { |
||||
|
$border-active: grayscale($border-active); |
||||
|
$inset-shadow-active: grayscale($inset-shadow-active); |
||||
|
} |
||||
|
|
||||
|
border: 1px solid $border-active; |
||||
|
box-shadow: inset 0 0 8px 4px $inset-shadow-active, inset 0 0 8px 4px $inset-shadow-active; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
// Shiny Button |
||||
|
//************************************************************************// |
||||
|
@mixin shiny($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) { |
||||
|
$color: hsl(0, 0, 100%); |
||||
|
$border: adjust-color($base-color, $red: -117, $green: -111, $blue: -81); |
||||
|
$border-bottom: adjust-color($base-color, $red: -126, $green: -127, $blue: -122); |
||||
|
$fourth-stop: adjust-color($base-color, $red: -79, $green: -70, $blue: -46); |
||||
|
$inset-shadow: adjust-color($base-color, $red: 37, $green: 29, $blue: 12); |
||||
|
$second-stop: adjust-color($base-color, $red: -56, $green: -50, $blue: -33); |
||||
|
$text-shadow: adjust-color($base-color, $red: -140, $green: -141, $blue: -114); |
||||
|
$third-stop: adjust-color($base-color, $red: -86, $green: -75, $blue: -48); |
||||
|
|
||||
|
@if is-light($base-color) { |
||||
|
$color: hsl(0, 0, 20%); |
||||
|
$text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%); |
||||
|
} |
||||
|
|
||||
|
@if $grayscale == true { |
||||
|
$border: grayscale($border); |
||||
|
$border-bottom: grayscale($border-bottom); |
||||
|
$fourth-stop: grayscale($fourth-stop); |
||||
|
$inset-shadow: grayscale($inset-shadow); |
||||
|
$second-stop: grayscale($second-stop); |
||||
|
$text-shadow: grayscale($text-shadow); |
||||
|
$third-stop: grayscale($third-stop); |
||||
|
} |
||||
|
|
||||
|
border: 1px solid $border; |
||||
|
border-bottom: 1px solid $border-bottom; |
||||
|
border-radius: 5px; |
||||
|
box-shadow: inset 0 1px 0 0 $inset-shadow; |
||||
|
color: $color; |
||||
|
display: inline-block; |
||||
|
font-size: $textsize; |
||||
|
font-weight: bold; |
||||
|
@include linear-gradient(top, $base-color 0%, $second-stop 50%, $third-stop 50%, $fourth-stop 100%); |
||||
|
padding: $padding; |
||||
|
text-align: center; |
||||
|
text-decoration: none; |
||||
|
text-shadow: 0 -1px 1px $text-shadow; |
||||
|
|
||||
|
&:hover:not(:disabled) { |
||||
|
$first-stop-hover: adjust-color($base-color, $red: -13, $green: -15, $blue: -18); |
||||
|
$second-stop-hover: adjust-color($base-color, $red: -66, $green: -62, $blue: -51); |
||||
|
$third-stop-hover: adjust-color($base-color, $red: -93, $green: -85, $blue: -66); |
||||
|
$fourth-stop-hover: adjust-color($base-color, $red: -86, $green: -80, $blue: -63); |
||||
|
|
||||
|
@if $grayscale == true { |
||||
|
$first-stop-hover: grayscale($first-stop-hover); |
||||
|
$second-stop-hover: grayscale($second-stop-hover); |
||||
|
$third-stop-hover: grayscale($third-stop-hover); |
||||
|
$fourth-stop-hover: grayscale($fourth-stop-hover); |
||||
|
} |
||||
|
|
||||
|
cursor: pointer; |
||||
|
@include linear-gradient(top, $first-stop-hover 0%, |
||||
|
$second-stop-hover 50%, |
||||
|
$third-stop-hover 50%, |
||||
|
$fourth-stop-hover 100%); |
||||
|
} |
||||
|
|
||||
|
&:active:not(:disabled), |
||||
|
&:focus:not(:disabled) { |
||||
|
$inset-shadow-active: adjust-color($base-color, $red: -111, $green: -116, $blue: -122); |
||||
|
|
||||
|
@if $grayscale == true { |
||||
|
$inset-shadow-active: grayscale($inset-shadow-active); |
||||
|
} |
||||
|
|
||||
|
box-shadow: inset 0 0 20px 0 $inset-shadow-active; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
// Pill Button |
||||
|
//************************************************************************// |
||||
|
@mixin pill($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) { |
||||
|
$color: hsl(0, 0, 100%); |
||||
|
$border-bottom: adjust-color($base-color, $hue: 8, $saturation: -11%, $lightness: -26%); |
||||
|
$border-sides: adjust-color($base-color, $hue: 4, $saturation: -21%, $lightness: -21%); |
||||
|
$border-top: adjust-color($base-color, $hue: -1, $saturation: -30%, $lightness: -15%); |
||||
|
$inset-shadow: adjust-color($base-color, $hue: -1, $saturation: -1%, $lightness: 7%); |
||||
|
$stop-gradient: adjust-color($base-color, $hue: 8, $saturation: 14%, $lightness: -10%); |
||||
|
$text-shadow: adjust-color($base-color, $hue: 5, $saturation: -19%, $lightness: -15%); |
||||
|
|
||||
|
@if is-light($base-color) { |
||||
|
$color: hsl(0, 0, 20%); |
||||
|
$text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%); |
||||
|
} |
||||
|
|
||||
|
@if $grayscale == true { |
||||
|
$border-bottom: grayscale($border-bottom); |
||||
|
$border-sides: grayscale($border-sides); |
||||
|
$border-top: grayscale($border-top); |
||||
|
$inset-shadow: grayscale($inset-shadow); |
||||
|
$stop-gradient: grayscale($stop-gradient); |
||||
|
$text-shadow: grayscale($text-shadow); |
||||
|
} |
||||
|
|
||||
|
border: 1px solid $border-top; |
||||
|
border-color: $border-top $border-sides $border-bottom; |
||||
|
border-radius: 16px; |
||||
|
box-shadow: inset 0 1px 0 0 $inset-shadow; |
||||
|
color: $color; |
||||
|
display: inline-block; |
||||
|
font-size: $textsize; |
||||
|
font-weight: normal; |
||||
|
line-height: 1; |
||||
|
@include linear-gradient ($base-color, $stop-gradient); |
||||
|
padding: $padding; |
||||
|
text-align: center; |
||||
|
text-decoration: none; |
||||
|
text-shadow: 0 -1px 1px $text-shadow; |
||||
|
background-clip: padding-box; |
||||
|
|
||||
|
&:hover:not(:disabled) { |
||||
|
$base-color-hover: adjust-color($base-color, $lightness: -4.5%); |
||||
|
$border-bottom: adjust-color($base-color, $hue: 8, $saturation: 13.5%, $lightness: -32%); |
||||
|
$border-sides: adjust-color($base-color, $hue: 4, $saturation: -2%, $lightness: -27%); |
||||
|
$border-top: adjust-color($base-color, $hue: -1, $saturation: -17%, $lightness: -21%); |
||||
|
$inset-shadow-hover: adjust-color($base-color, $saturation: -1%, $lightness: 3%); |
||||
|
$stop-gradient-hover: adjust-color($base-color, $hue: 8, $saturation: -4%, $lightness: -15.5%); |
||||
|
$text-shadow-hover: adjust-color($base-color, $hue: 5, $saturation: -5%, $lightness: -22%); |
||||
|
|
||||
|
@if $grayscale == true { |
||||
|
$base-color-hover: grayscale($base-color-hover); |
||||
|
$border-bottom: grayscale($border-bottom); |
||||
|
$border-sides: grayscale($border-sides); |
||||
|
$border-top: grayscale($border-top); |
||||
|
$inset-shadow-hover: grayscale($inset-shadow-hover); |
||||
|
$stop-gradient-hover: grayscale($stop-gradient-hover); |
||||
|
$text-shadow-hover: grayscale($text-shadow-hover); |
||||
|
} |
||||
|
|
||||
|
border: 1px solid $border-top; |
||||
|
border-color: $border-top $border-sides $border-bottom; |
||||
|
box-shadow: inset 0 1px 0 0 $inset-shadow-hover; |
||||
|
cursor: pointer; |
||||
|
@include linear-gradient ($base-color-hover, $stop-gradient-hover); |
||||
|
text-shadow: 0 -1px 1px $text-shadow-hover; |
||||
|
background-clip: padding-box; |
||||
|
} |
||||
|
|
||||
|
&:active:not(:disabled), |
||||
|
&:focus:not(:disabled) { |
||||
|
$active-color: adjust-color($base-color, $hue: 4, $saturation: -12%, $lightness: -10%); |
||||
|
$border-active: adjust-color($base-color, $hue: 6, $saturation: -2.5%, $lightness: -30%); |
||||
|
$border-bottom-active: adjust-color($base-color, $hue: 11, $saturation: 6%, $lightness: -31%); |
||||
|
$inset-shadow-active: adjust-color($base-color, $hue: 9, $saturation: 2%, $lightness: -21.5%); |
||||
|
$text-shadow-active: adjust-color($base-color, $hue: 5, $saturation: -12%, $lightness: -21.5%); |
||||
|
|
||||
|
@if $grayscale == true { |
||||
|
$active-color: grayscale($active-color); |
||||
|
$border-active: grayscale($border-active); |
||||
|
$border-bottom-active: grayscale($border-bottom-active); |
||||
|
$inset-shadow-active: grayscale($inset-shadow-active); |
||||
|
$text-shadow-active: grayscale($text-shadow-active); |
||||
|
} |
||||
|
|
||||
|
background: $active-color; |
||||
|
border: 1px solid $border-active; |
||||
|
border-bottom: 1px solid $border-bottom-active; |
||||
|
box-shadow: inset 0 0 6px 3px $inset-shadow-active; |
||||
|
text-shadow: 0 -1px 1px $text-shadow-active; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
// Flat Button |
||||
|
//************************************************************************// |
||||
|
@mixin flat($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) { |
||||
|
$color: hsl(0, 0, 100%); |
||||
|
|
||||
|
@if is-light($base-color) { |
||||
|
$color: hsl(0, 0, 20%); |
||||
|
} |
||||
|
|
||||
|
background-color: $base-color; |
||||
|
border-radius: 3px; |
||||
|
border: none; |
||||
|
color: $color; |
||||
|
display: inline-block; |
||||
|
font-size: inherit; |
||||
|
font-weight: bold; |
||||
|
padding: 7px 18px; |
||||
|
text-decoration: none; |
||||
|
background-clip: padding-box; |
||||
|
|
||||
|
&:hover:not(:disabled){ |
||||
|
$base-color-hover: adjust-color($base-color, $saturation: 4%, $lightness: 5%); |
||||
|
|
||||
|
@if $grayscale == true { |
||||
|
$base-color-hover: grayscale($base-color-hover); |
||||
|
} |
||||
|
|
||||
|
background-color: $base-color-hover; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
&:active:not(:disabled), |
||||
|
&:focus:not(:disabled) { |
||||
|
$base-color-active: adjust-color($base-color, $saturation: -4%, $lightness: -5%); |
||||
|
|
||||
|
@if $grayscale == true { |
||||
|
$base-color-active: grayscale($base-color-active); |
||||
|
} |
||||
|
|
||||
|
background-color: $base-color-active; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
} |
@ -0,0 +1,23 @@ |
|||||
|
// Modern micro clearfix provides an easy way to contain floats without adding additional markup. |
||||
|
// |
||||
|
// Example usage: |
||||
|
// |
||||
|
// // Contain all floats within .wrapper |
||||
|
// .wrapper { |
||||
|
// @include clearfix; |
||||
|
// .content, |
||||
|
// .sidebar { |
||||
|
// float : left; |
||||
|
// } |
||||
|
// } |
||||
|
|
||||
|
@mixin clearfix { |
||||
|
&:after { |
||||
|
content:""; |
||||
|
display:table; |
||||
|
clear:both; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// Acknowledgements |
||||
|
// Beat *that* clearfix: [Thierry Koblentz](http://www.css-101.org/articles/clearfix/latest-new-clearfix-so-far.php) |
@ -0,0 +1,111 @@ |
|||||
|
// directional-property mixins are shorthands |
||||
|
// for writing properties like the following |
||||
|
// |
||||
|
// @include margin(null 0 10px); |
||||
|
// ------ |
||||
|
// margin-right: 0; |
||||
|
// margin-bottom: 10px; |
||||
|
// margin-left: 0; |
||||
|
// |
||||
|
// - or - |
||||
|
// |
||||
|
// @include border-style(dotted null); |
||||
|
// ------ |
||||
|
// border-top-style: dotted; |
||||
|
// border-bottom-style: dotted; |
||||
|
// |
||||
|
// ------ |
||||
|
// |
||||
|
// Note: You can also use false instead of null |
||||
|
|
||||
|
@function collapse-directionals($vals) { |
||||
|
$output: null; |
||||
|
|
||||
|
$A: nth( $vals, 1 ); |
||||
|
$B: if( length($vals) < 2, $A, nth($vals, 2)); |
||||
|
$C: if( length($vals) < 3, $A, nth($vals, 3)); |
||||
|
$D: if( length($vals) < 2, $A, nth($vals, if( length($vals) < 4, 2, 4) )); |
||||
|
|
||||
|
@if $A == 0 { $A: 0 } |
||||
|
@if $B == 0 { $B: 0 } |
||||
|
@if $C == 0 { $C: 0 } |
||||
|
@if $D == 0 { $D: 0 } |
||||
|
|
||||
|
@if $A == $B and $A == $C and $A == $D { $output: $A } |
||||
|
@else if $A == $C and $B == $D { $output: $A $B } |
||||
|
@else if $B == $D { $output: $A $B $C } |
||||
|
@else { $output: $A $B $C $D } |
||||
|
|
||||
|
@return $output; |
||||
|
} |
||||
|
|
||||
|
@function contains-falsy($list) { |
||||
|
@each $item in $list { |
||||
|
@if not $item { |
||||
|
@return true; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@return false; |
||||
|
} |
||||
|
|
||||
|
@mixin directional-property($pre, $suf, $vals) { |
||||
|
// Property Names |
||||
|
$top: $pre + "-top" + if($suf, "-#{$suf}", ""); |
||||
|
$bottom: $pre + "-bottom" + if($suf, "-#{$suf}", ""); |
||||
|
$left: $pre + "-left" + if($suf, "-#{$suf}", ""); |
||||
|
$right: $pre + "-right" + if($suf, "-#{$suf}", ""); |
||||
|
$all: $pre + if($suf, "-#{$suf}", ""); |
||||
|
|
||||
|
$vals: collapse-directionals($vals); |
||||
|
|
||||
|
@if contains-falsy($vals) { |
||||
|
@if nth($vals, 1) { #{$top}: nth($vals, 1); } |
||||
|
|
||||
|
@if length($vals) == 1 { |
||||
|
@if nth($vals, 1) { #{$right}: nth($vals, 1); } |
||||
|
} @else { |
||||
|
@if nth($vals, 2) { #{$right}: nth($vals, 2); } |
||||
|
} |
||||
|
|
||||
|
// prop: top/bottom right/left |
||||
|
@if length($vals) == 2 { |
||||
|
@if nth($vals, 1) { #{$bottom}: nth($vals, 1); } |
||||
|
@if nth($vals, 2) { #{$left}: nth($vals, 2); } |
||||
|
|
||||
|
// prop: top right/left bottom |
||||
|
} @else if length($vals) == 3 { |
||||
|
@if nth($vals, 3) { #{$bottom}: nth($vals, 3); } |
||||
|
@if nth($vals, 2) { #{$left}: nth($vals, 2); } |
||||
|
|
||||
|
// prop: top right bottom left |
||||
|
} @else if length($vals) == 4 { |
||||
|
@if nth($vals, 3) { #{$bottom}: nth($vals, 3); } |
||||
|
@if nth($vals, 4) { #{$left}: nth($vals, 4); } |
||||
|
} |
||||
|
|
||||
|
// prop: top/right/bottom/left |
||||
|
} @else { |
||||
|
#{$all}: $vals; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@mixin margin($vals...) { |
||||
|
@include directional-property(margin, false, $vals...); |
||||
|
} |
||||
|
|
||||
|
@mixin padding($vals...) { |
||||
|
@include directional-property(padding, false, $vals...); |
||||
|
} |
||||
|
|
||||
|
@mixin border-style($vals...) { |
||||
|
@include directional-property(border, style, $vals...); |
||||
|
} |
||||
|
|
||||
|
@mixin border-color($vals...) { |
||||
|
@include directional-property(border, color, $vals...); |
||||
|
} |
||||
|
|
||||
|
@mixin border-width($vals...) { |
||||
|
@include directional-property(border, width, $vals...); |
||||
|
} |
@ -0,0 +1,7 @@ |
|||||
|
@mixin ellipsis($width: 100%) { |
||||
|
display: inline-block; |
||||
|
max-width: $width; |
||||
|
overflow: hidden; |
||||
|
text-overflow: ellipsis; |
||||
|
white-space: nowrap; |
||||
|
} |
@ -0,0 +1,5 @@ |
|||||
|
$georgia: Georgia, Cambria, "Times New Roman", Times, serif; |
||||
|
$helvetica: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; |
||||
|
$lucida-grande: "Lucida Grande", Tahoma, Verdana, Arial, sans-serif; |
||||
|
$monospace: "Bitstream Vera Sans Mono", Consolas, Courier, monospace; |
||||
|
$verdana: Verdana, Geneva, sans-serif; |
@ -0,0 +1,10 @@ |
|||||
|
@mixin hide-text { |
||||
|
overflow: hidden; |
||||
|
|
||||
|
&:before { |
||||
|
content: ""; |
||||
|
display: block; |
||||
|
width: 0; |
||||
|
height: 100%; |
||||
|
} |
||||
|
} |
@ -0,0 +1,86 @@ |
|||||
|
//************************************************************************// |
||||
|
// Generate a variable ($all-text-inputs) with a list of all html5 |
||||
|
// input types that have a text-based input, excluding textarea. |
||||
|
// http://diveintohtml5.org/forms.html |
||||
|
//************************************************************************// |
||||
|
$inputs-list: 'input[type="email"]', |
||||
|
'input[type="number"]', |
||||
|
'input[type="password"]', |
||||
|
'input[type="search"]', |
||||
|
'input[type="tel"]', |
||||
|
'input[type="text"]', |
||||
|
'input[type="url"]', |
||||
|
|
||||
|
// Webkit & Gecko may change the display of these in the future |
||||
|
'input[type="color"]', |
||||
|
'input[type="date"]', |
||||
|
'input[type="datetime"]', |
||||
|
'input[type="datetime-local"]', |
||||
|
'input[type="month"]', |
||||
|
'input[type="time"]', |
||||
|
'input[type="week"]'; |
||||
|
|
||||
|
// Bare inputs |
||||
|
//************************************************************************// |
||||
|
$all-text-inputs: assign-inputs($inputs-list); |
||||
|
|
||||
|
// Hover Pseudo-class |
||||
|
//************************************************************************// |
||||
|
$all-text-inputs-hover: assign-inputs($inputs-list, hover); |
||||
|
|
||||
|
// Focus Pseudo-class |
||||
|
//************************************************************************// |
||||
|
$all-text-inputs-focus: assign-inputs($inputs-list, focus); |
||||
|
|
||||
|
|
||||
|
|
||||
|
// You must use interpolation on the variable: |
||||
|
// #{$all-text-inputs} |
||||
|
// #{$all-text-inputs-hover} |
||||
|
// #{$all-text-inputs-focus} |
||||
|
|
||||
|
// Example |
||||
|
//************************************************************************// |
||||
|
// #{$all-text-inputs}, textarea { |
||||
|
// border: 1px solid red; |
||||
|
// } |
||||
|
|
||||
|
|
||||
|
|
||||
|
//************************************************************************// |
||||
|
// Generate a variable ($all-button-inputs) with a list of all html5 |
||||
|
// input types that have a button-based input, excluding button. |
||||
|
//************************************************************************// |
||||
|
$inputs-button-list: 'input[type="button"]', |
||||
|
'input[type="reset"]', |
||||
|
'input[type="submit"]'; |
||||
|
|
||||
|
// Bare inputs |
||||
|
//************************************************************************// |
||||
|
$all-button-inputs: assign-inputs($inputs-button-list); |
||||
|
|
||||
|
// Hover Pseudo-class |
||||
|
//************************************************************************// |
||||
|
$all-button-inputs-hover: assign-inputs($inputs-button-list, hover); |
||||
|
|
||||
|
// Focus Pseudo-class |
||||
|
//************************************************************************// |
||||
|
$all-button-inputs-focus: assign-inputs($inputs-button-list, focus); |
||||
|
|
||||
|
// Active Pseudo-class |
||||
|
//************************************************************************// |
||||
|
$all-button-inputs-active: assign-inputs($inputs-button-list, active); |
||||
|
|
||||
|
|
||||
|
|
||||
|
// You must use interpolation on the variable: |
||||
|
// #{$all-button-inputs} |
||||
|
// #{$all-button-inputs-hover} |
||||
|
// #{$all-button-inputs-focus} |
||||
|
// #{$all-button-inputs-active} |
||||
|
|
||||
|
// Example |
||||
|
//************************************************************************// |
||||
|
// #{$all-button-inputs}, button { |
||||
|
// border: 1px solid red; |
||||
|
// } |
@ -0,0 +1,32 @@ |
|||||
|
@mixin position ($position: relative, $coordinates: null null null null) { |
||||
|
|
||||
|
@if type-of($position) == list { |
||||
|
$coordinates: $position; |
||||
|
$position: relative; |
||||
|
} |
||||
|
|
||||
|
$coordinates: unpack($coordinates); |
||||
|
|
||||
|
$top: nth($coordinates, 1); |
||||
|
$right: nth($coordinates, 2); |
||||
|
$bottom: nth($coordinates, 3); |
||||
|
$left: nth($coordinates, 4); |
||||
|
|
||||
|
position: $position; |
||||
|
|
||||
|
@if ($top and $top == auto) or (type-of($top) == number) { |
||||
|
top: $top; |
||||
|
} |
||||
|
|
||||
|
@if ($right and $right == auto) or (type-of($right) == number) { |
||||
|
right: $right; |
||||
|
} |
||||
|
|
||||
|
@if ($bottom and $bottom == auto) or (type-of($bottom) == number) { |
||||
|
bottom: $bottom; |
||||
|
} |
||||
|
|
||||
|
@if ($left and $left == auto) or (type-of($left) == number) { |
||||
|
left: $left; |
||||
|
} |
||||
|
} |
@ -0,0 +1,45 @@ |
|||||
|
//************************************************************************// |
||||
|
// Example: @include prefixer(border-radius, $radii, webkit ms spec); |
||||
|
//************************************************************************// |
||||
|
// Variables located in /settings/_prefixer.scss |
||||
|
|
||||
|
@mixin prefixer ($property, $value, $prefixes) { |
||||
|
@each $prefix in $prefixes { |
||||
|
@if $prefix == webkit { |
||||
|
@if $prefix-for-webkit { |
||||
|
-webkit-#{$property}: $value; |
||||
|
} |
||||
|
} |
||||
|
@else if $prefix == moz { |
||||
|
@if $prefix-for-mozilla { |
||||
|
-moz-#{$property}: $value; |
||||
|
} |
||||
|
} |
||||
|
@else if $prefix == ms { |
||||
|
@if $prefix-for-microsoft { |
||||
|
-ms-#{$property}: $value; |
||||
|
} |
||||
|
} |
||||
|
@else if $prefix == o { |
||||
|
@if $prefix-for-opera { |
||||
|
-o-#{$property}: $value; |
||||
|
} |
||||
|
} |
||||
|
@else if $prefix == spec { |
||||
|
@if $prefix-for-spec { |
||||
|
#{$property}: $value; |
||||
|
} |
||||
|
} |
||||
|
@else { |
||||
|
@warn "Unrecognized prefix: #{$prefix}"; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@mixin disable-prefix-for-all() { |
||||
|
$prefix-for-webkit: false !global; |
||||
|
$prefix-for-mozilla: false !global; |
||||
|
$prefix-for-microsoft: false !global; |
||||
|
$prefix-for-opera: false !global; |
||||
|
$prefix-for-spec: false !global; |
||||
|
} |
@ -0,0 +1,31 @@ |
|||||
|
@mixin retina-image($filename, $background-size, $extension: png, $retina-filename: null, $retina-suffix: _2x, $asset-pipeline: false) { |
||||
|
@if $asset-pipeline { |
||||
|
background-image: image-url("#{$filename}.#{$extension}"); |
||||
|
} |
||||
|
@else { |
||||
|
background-image: url("#{$filename}.#{$extension}"); |
||||
|
} |
||||
|
|
||||
|
@include hidpi { |
||||
|
@if $asset-pipeline { |
||||
|
@if $retina-filename { |
||||
|
background-image: image-url("#{$retina-filename}.#{$extension}"); |
||||
|
} |
||||
|
@else { |
||||
|
background-image: image-url("#{$filename}#{$retina-suffix}.#{$extension}"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@else { |
||||
|
@if $retina-filename { |
||||
|
background-image: url("#{$retina-filename}.#{$extension}"); |
||||
|
} |
||||
|
@else { |
||||
|
background-image: url("#{$filename}#{$retina-suffix}.#{$extension}"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
background-size: $background-size; |
||||
|
|
||||
|
} |
||||
|
} |
@ -0,0 +1,16 @@ |
|||||
|
@mixin size($size) { |
||||
|
$height: nth($size, 1); |
||||
|
$width: $height; |
||||
|
|
||||
|
@if length($size) > 1 { |
||||
|
$height: nth($size, 2); |
||||
|
} |
||||
|
|
||||
|
@if $height == auto or (type-of($height) == number and not unitless($height)) { |
||||
|
height: $height; |
||||
|
} |
||||
|
|
||||
|
@if $width == auto or (type-of($height) == number and not unitless($width)) { |
||||
|
width: $width; |
||||
|
} |
||||
|
} |
@ -0,0 +1,32 @@ |
|||||
|
// CSS cubic-bezier timing functions. Timing functions courtesy of jquery.easie (github.com/jaukia/easie) |
||||
|
// Timing functions are the same as demo'ed here: http://jqueryui.com/demos/effect/easing.html |
||||
|
|
||||
|
// EASE IN |
||||
|
$ease-in-quad: cubic-bezier(0.550, 0.085, 0.680, 0.530); |
||||
|
$ease-in-cubic: cubic-bezier(0.550, 0.055, 0.675, 0.190); |
||||
|
$ease-in-quart: cubic-bezier(0.895, 0.030, 0.685, 0.220); |
||||
|
$ease-in-quint: cubic-bezier(0.755, 0.050, 0.855, 0.060); |
||||
|
$ease-in-sine: cubic-bezier(0.470, 0.000, 0.745, 0.715); |
||||
|
$ease-in-expo: cubic-bezier(0.950, 0.050, 0.795, 0.035); |
||||
|
$ease-in-circ: cubic-bezier(0.600, 0.040, 0.980, 0.335); |
||||
|
$ease-in-back: cubic-bezier(0.600, -0.280, 0.735, 0.045); |
||||
|
|
||||
|
// EASE OUT |
||||
|
$ease-out-quad: cubic-bezier(0.250, 0.460, 0.450, 0.940); |
||||
|
$ease-out-cubic: cubic-bezier(0.215, 0.610, 0.355, 1.000); |
||||
|
$ease-out-quart: cubic-bezier(0.165, 0.840, 0.440, 1.000); |
||||
|
$ease-out-quint: cubic-bezier(0.230, 1.000, 0.320, 1.000); |
||||
|
$ease-out-sine: cubic-bezier(0.390, 0.575, 0.565, 1.000); |
||||
|
$ease-out-expo: cubic-bezier(0.190, 1.000, 0.220, 1.000); |
||||
|
$ease-out-circ: cubic-bezier(0.075, 0.820, 0.165, 1.000); |
||||
|
$ease-out-back: cubic-bezier(0.175, 0.885, 0.320, 1.275); |
||||
|
|
||||
|
// EASE IN OUT |
||||
|
$ease-in-out-quad: cubic-bezier(0.455, 0.030, 0.515, 0.955); |
||||
|
$ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1.000); |
||||
|
$ease-in-out-quart: cubic-bezier(0.770, 0.000, 0.175, 1.000); |
||||
|
$ease-in-out-quint: cubic-bezier(0.860, 0.000, 0.070, 1.000); |
||||
|
$ease-in-out-sine: cubic-bezier(0.445, 0.050, 0.550, 0.950); |
||||
|
$ease-in-out-expo: cubic-bezier(1.000, 0.000, 0.000, 1.000); |
||||
|
$ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.150, 0.860); |
||||
|
$ease-in-out-back: cubic-bezier(0.680, -0.550, 0.265, 1.550); |
@ -0,0 +1,83 @@ |
|||||
|
@mixin triangle ($size, $color, $direction) { |
||||
|
height: 0; |
||||
|
width: 0; |
||||
|
|
||||
|
$width: nth($size, 1); |
||||
|
$height: nth($size, length($size)); |
||||
|
|
||||
|
$foreground-color: nth($color, 1); |
||||
|
$background-color: if(length($color) == 2, nth($color, 2), transparent); |
||||
|
|
||||
|
@if ($direction == up) or ($direction == down) or ($direction == right) or ($direction == left) { |
||||
|
|
||||
|
$width: $width / 2; |
||||
|
$height: if(length($size) > 1, $height, $height/2); |
||||
|
|
||||
|
@if $direction == up { |
||||
|
border-left: $width solid $background-color; |
||||
|
border-right: $width solid $background-color; |
||||
|
border-bottom: $height solid $foreground-color; |
||||
|
|
||||
|
} @else if $direction == right { |
||||
|
border-top: $width solid $background-color; |
||||
|
border-bottom: $width solid $background-color; |
||||
|
border-left: $height solid $foreground-color; |
||||
|
|
||||
|
} @else if $direction == down { |
||||
|
border-left: $width solid $background-color; |
||||
|
border-right: $width solid $background-color; |
||||
|
border-top: $height solid $foreground-color; |
||||
|
|
||||
|
} @else if $direction == left { |
||||
|
border-top: $width solid $background-color; |
||||
|
border-bottom: $width solid $background-color; |
||||
|
border-right: $height solid $foreground-color; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@else if ($direction == up-right) or ($direction == up-left) { |
||||
|
border-top: $height solid $foreground-color; |
||||
|
|
||||
|
@if $direction == up-right { |
||||
|
border-left: $width solid $background-color; |
||||
|
|
||||
|
} @else if $direction == up-left { |
||||
|
border-right: $width solid $background-color; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@else if ($direction == down-right) or ($direction == down-left) { |
||||
|
border-bottom: $height solid $foreground-color; |
||||
|
|
||||
|
@if $direction == down-right { |
||||
|
border-left: $width solid $background-color; |
||||
|
|
||||
|
} @else if $direction == down-left { |
||||
|
border-right: $width solid $background-color; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@else if ($direction == inset-up) { |
||||
|
border-width: $height $width; |
||||
|
border-style: solid; |
||||
|
border-color: $background-color $background-color $foreground-color; |
||||
|
} |
||||
|
|
||||
|
@else if ($direction == inset-down) { |
||||
|
border-width: $height $width; |
||||
|
border-style: solid; |
||||
|
border-color: $foreground-color $background-color $background-color; |
||||
|
} |
||||
|
|
||||
|
@else if ($direction == inset-right) { |
||||
|
border-width: $width $height; |
||||
|
border-style: solid; |
||||
|
border-color: $background-color $background-color $background-color $foreground-color; |
||||
|
} |
||||
|
|
||||
|
@else if ($direction == inset-left) { |
||||
|
border-width: $width $height; |
||||
|
border-style: solid; |
||||
|
border-color: $background-color $foreground-color $background-color $background-color; |
||||
|
} |
||||
|
} |
@ -0,0 +1,8 @@ |
|||||
|
@mixin word-wrap($wrap: break-word) { |
||||
|
word-wrap: $wrap; |
||||
|
|
||||
|
@if $wrap == break-word { |
||||
|
overflow-wrap: break-word; |
||||
|
word-break: break-all; |
||||
|
} |
||||
|
} |
@ -0,0 +1,52 @@ |
|||||
|
// http://www.w3.org/TR/css3-animations/#the-animation-name-property- |
||||
|
// Each of these mixins support comma separated lists of values, which allows different transitions for individual properties to be described in a single style rule. Each value in the list corresponds to the value at that same position in the other properties. |
||||
|
|
||||
|
// Official animation shorthand property. |
||||
|
@mixin animation ($animations...) { |
||||
|
@include prefixer(animation, $animations, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
// Individual Animation Properties |
||||
|
@mixin animation-name ($names...) { |
||||
|
@include prefixer(animation-name, $names, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@mixin animation-duration ($times...) { |
||||
|
@include prefixer(animation-duration, $times, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@mixin animation-timing-function ($motions...) { |
||||
|
// ease | linear | ease-in | ease-out | ease-in-out |
||||
|
@include prefixer(animation-timing-function, $motions, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@mixin animation-iteration-count ($values...) { |
||||
|
// infinite | <number> |
||||
|
@include prefixer(animation-iteration-count, $values, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@mixin animation-direction ($directions...) { |
||||
|
// normal | alternate |
||||
|
@include prefixer(animation-direction, $directions, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@mixin animation-play-state ($states...) { |
||||
|
// running | paused |
||||
|
@include prefixer(animation-play-state, $states, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@mixin animation-delay ($times...) { |
||||
|
@include prefixer(animation-delay, $times, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@mixin animation-fill-mode ($modes...) { |
||||
|
// none | forwards | backwards | both |
||||
|
@include prefixer(animation-fill-mode, $modes, webkit moz spec); |
||||
|
} |
@ -0,0 +1,3 @@ |
|||||
|
@mixin appearance ($value) { |
||||
|
@include prefixer(appearance, $value, webkit moz ms o spec); |
||||
|
} |
@ -0,0 +1,6 @@ |
|||||
|
//************************************************************************// |
||||
|
// Backface-visibility mixin |
||||
|
//************************************************************************// |
||||
|
@mixin backface-visibility($visibility) { |
||||
|
@include prefixer(backface-visibility, $visibility, webkit spec); |
||||
|
} |
@ -0,0 +1,42 @@ |
|||||
|
//************************************************************************// |
||||
|
// Background-image property for adding multiple background images with |
||||
|
// gradients, or for stringing multiple gradients together. |
||||
|
//************************************************************************// |
||||
|
|
||||
|
@mixin background-image($images...) { |
||||
|
$webkit-images: (); |
||||
|
$spec-images: (); |
||||
|
|
||||
|
@each $image in $images { |
||||
|
$webkit-image: (); |
||||
|
$spec-image: (); |
||||
|
|
||||
|
@if (type-of($image) == string) { |
||||
|
$url-str: str-slice($image, 0, 3); |
||||
|
$gradient-type: str-slice($image, 0, 6); |
||||
|
|
||||
|
@if $url-str == "url" { |
||||
|
$webkit-image: $image; |
||||
|
$spec-image: $image; |
||||
|
} |
||||
|
|
||||
|
@else if $gradient-type == "linear" { |
||||
|
$gradients: _linear-gradient-parser($image); |
||||
|
$webkit-image: map-get($gradients, webkit-image); |
||||
|
$spec-image: map-get($gradients, spec-image); |
||||
|
} |
||||
|
|
||||
|
@else if $gradient-type == "radial" { |
||||
|
$gradients: _radial-gradient-parser($image); |
||||
|
$webkit-image: map-get($gradients, webkit-image); |
||||
|
$spec-image: map-get($gradients, spec-image); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$webkit-images: append($webkit-images, $webkit-image, comma); |
||||
|
$spec-images: append($spec-images, $spec-image, comma); |
||||
|
} |
||||
|
|
||||
|
background-image: $webkit-images; |
||||
|
background-image: $spec-images; |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
//************************************************************************// |
||||
|
// Background property for adding multiple backgrounds using shorthand |
||||
|
// notation. |
||||
|
//************************************************************************// |
||||
|
|
||||
|
@mixin background($backgrounds...) { |
||||
|
$webkit-backgrounds: (); |
||||
|
$spec-backgrounds: (); |
||||
|
|
||||
|
@each $background in $backgrounds { |
||||
|
$webkit-background: (); |
||||
|
$spec-background: (); |
||||
|
$background-type: type-of($background); |
||||
|
|
||||
|
@if $background-type == string or list { |
||||
|
$background-str: if($background-type == list, nth($background, 1), $background); |
||||
|
|
||||
|
$url-str: str-slice($background-str, 0, 3); |
||||
|
$gradient-type: str-slice($background-str, 0, 6); |
||||
|
|
||||
|
@if $url-str == "url" { |
||||
|
$webkit-background: $background; |
||||
|
$spec-background: $background; |
||||
|
} |
||||
|
|
||||
|
@else if $gradient-type == "linear" { |
||||
|
$gradients: _linear-gradient-parser("#{$background}"); |
||||
|
$webkit-background: map-get($gradients, webkit-image); |
||||
|
$spec-background: map-get($gradients, spec-image); |
||||
|
} |
||||
|
|
||||
|
@else if $gradient-type == "radial" { |
||||
|
$gradients: _radial-gradient-parser("#{$background}"); |
||||
|
$webkit-background: map-get($gradients, webkit-image); |
||||
|
$spec-background: map-get($gradients, spec-image); |
||||
|
} |
||||
|
|
||||
|
@else { |
||||
|
$webkit-background: $background; |
||||
|
$spec-background: $background; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@else { |
||||
|
$webkit-background: $background; |
||||
|
$spec-background: $background; |
||||
|
} |
||||
|
|
||||
|
$webkit-backgrounds: append($webkit-backgrounds, $webkit-background, comma); |
||||
|
$spec-backgrounds: append($spec-backgrounds, $spec-background, comma); |
||||
|
} |
||||
|
|
||||
|
background: $webkit-backgrounds; |
||||
|
background: $spec-backgrounds; |
||||
|
} |
@ -0,0 +1,59 @@ |
|||||
|
@mixin border-image($borders...) { |
||||
|
$webkit-borders: (); |
||||
|
$spec-borders: (); |
||||
|
|
||||
|
@each $border in $borders { |
||||
|
$webkit-border: (); |
||||
|
$spec-border: (); |
||||
|
$border-type: type-of($border); |
||||
|
|
||||
|
@if $border-type == string or list { |
||||
|
$border-str: if($border-type == list, nth($border, 1), $border); |
||||
|
|
||||
|
$url-str: str-slice($border-str, 0, 3); |
||||
|
$gradient-type: str-slice($border-str, 0, 6); |
||||
|
|
||||
|
@if $url-str == "url" { |
||||
|
$webkit-border: $border; |
||||
|
$spec-border: $border; |
||||
|
} |
||||
|
|
||||
|
@else if $gradient-type == "linear" { |
||||
|
$gradients: _linear-gradient-parser("#{$border}"); |
||||
|
$webkit-border: map-get($gradients, webkit-image); |
||||
|
$spec-border: map-get($gradients, spec-image); |
||||
|
} |
||||
|
|
||||
|
@else if $gradient-type == "radial" { |
||||
|
$gradients: _radial-gradient-parser("#{$border}"); |
||||
|
$webkit-border: map-get($gradients, webkit-image); |
||||
|
$spec-border: map-get($gradients, spec-image); |
||||
|
} |
||||
|
|
||||
|
@else { |
||||
|
$webkit-border: $border; |
||||
|
$spec-border: $border; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@else { |
||||
|
$webkit-border: $border; |
||||
|
$spec-border: $border; |
||||
|
} |
||||
|
|
||||
|
$webkit-borders: append($webkit-borders, $webkit-border, comma); |
||||
|
$spec-borders: append($spec-borders, $spec-border, comma); |
||||
|
} |
||||
|
|
||||
|
-webkit-border-image: $webkit-borders; |
||||
|
border-image: $spec-borders; |
||||
|
border-style: solid; |
||||
|
} |
||||
|
|
||||
|
//Examples: |
||||
|
// @include border-image(url("image.png")); |
||||
|
// @include border-image(url("image.png") 20 stretch); |
||||
|
// @include border-image(linear-gradient(45deg, orange, yellow)); |
||||
|
// @include border-image(linear-gradient(45deg, orange, yellow) stretch); |
||||
|
// @include border-image(linear-gradient(45deg, orange, yellow) 20 30 40 50 stretch round); |
||||
|
// @include border-image(radial-gradient(top, cover, orange, yellow, orange)); |
@ -0,0 +1,22 @@ |
|||||
|
//************************************************************************// |
||||
|
// Shorthand Border-radius mixins |
||||
|
//************************************************************************// |
||||
|
@mixin border-top-radius($radii) { |
||||
|
@include prefixer(border-top-left-radius, $radii, spec); |
||||
|
@include prefixer(border-top-right-radius, $radii, spec); |
||||
|
} |
||||
|
|
||||
|
@mixin border-bottom-radius($radii) { |
||||
|
@include prefixer(border-bottom-left-radius, $radii, spec); |
||||
|
@include prefixer(border-bottom-right-radius, $radii, spec); |
||||
|
} |
||||
|
|
||||
|
@mixin border-left-radius($radii) { |
||||
|
@include prefixer(border-top-left-radius, $radii, spec); |
||||
|
@include prefixer(border-bottom-left-radius, $radii, spec); |
||||
|
} |
||||
|
|
||||
|
@mixin border-right-radius($radii) { |
||||
|
@include prefixer(border-top-right-radius, $radii, spec); |
||||
|
@include prefixer(border-bottom-right-radius, $radii, spec); |
||||
|
} |
@ -0,0 +1,4 @@ |
|||||
|
@mixin box-sizing ($box) { |
||||
|
// content-box | border-box | inherit |
||||
|
@include prefixer(box-sizing, $box, webkit moz spec); |
||||
|
} |
@ -0,0 +1,4 @@ |
|||||
|
@mixin calc($property, $value) { |
||||
|
#{$property}: -webkit-calc(#{$value}); |
||||
|
#{$property}: calc(#{$value}); |
||||
|
} |
@ -0,0 +1,47 @@ |
|||||
|
@mixin columns($arg: auto) { |
||||
|
// <column-count> || <column-width> |
||||
|
@include prefixer(columns, $arg, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
@mixin column-count($int: auto) { |
||||
|
// auto || integer |
||||
|
@include prefixer(column-count, $int, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
@mixin column-gap($length: normal) { |
||||
|
// normal || length |
||||
|
@include prefixer(column-gap, $length, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
@mixin column-fill($arg: auto) { |
||||
|
// auto || length |
||||
|
@include prefixer(column-fill, $arg, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
@mixin column-rule($arg) { |
||||
|
// <border-width> || <border-style> || <color> |
||||
|
@include prefixer(column-rule, $arg, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
@mixin column-rule-color($color) { |
||||
|
@include prefixer(column-rule-color, $color, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
@mixin column-rule-style($style: none) { |
||||
|
// none | hidden | dashed | dotted | double | groove | inset | inset | outset | ridge | solid |
||||
|
@include prefixer(column-rule-style, $style, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
@mixin column-rule-width ($width: none) { |
||||
|
@include prefixer(column-rule-width, $width, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
@mixin column-span($arg: none) { |
||||
|
// none || all |
||||
|
@include prefixer(column-span, $arg, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
@mixin column-width($length: auto) { |
||||
|
// auto || length |
||||
|
@include prefixer(column-width, $length, webkit moz spec); |
||||
|
} |
@ -0,0 +1,5 @@ |
|||||
|
@mixin filter($function: none) { |
||||
|
// <filter-function> [<filter-function]* | none |
||||
|
@include prefixer(filter, $function, webkit spec); |
||||
|
} |
||||
|
|
@ -0,0 +1,321 @@ |
|||||
|
// CSS3 Flexible Box Model and property defaults |
||||
|
|
||||
|
// Custom shorthand notation for flexbox |
||||
|
@mixin box($orient: inline-axis, $pack: start, $align: stretch) { |
||||
|
@include display-box; |
||||
|
@include box-orient($orient); |
||||
|
@include box-pack($pack); |
||||
|
@include box-align($align); |
||||
|
} |
||||
|
|
||||
|
@mixin display-box { |
||||
|
display: -webkit-box; |
||||
|
display: -moz-box; |
||||
|
display: -ms-flexbox; // IE 10 |
||||
|
display: box; |
||||
|
} |
||||
|
|
||||
|
@mixin box-orient($orient: inline-axis) { |
||||
|
// horizontal|vertical|inline-axis|block-axis|inherit |
||||
|
@include prefixer(box-orient, $orient, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
@mixin box-pack($pack: start) { |
||||
|
// start|end|center|justify |
||||
|
@include prefixer(box-pack, $pack, webkit moz spec); |
||||
|
-ms-flex-pack: $pack; // IE 10 |
||||
|
} |
||||
|
|
||||
|
@mixin box-align($align: stretch) { |
||||
|
// start|end|center|baseline|stretch |
||||
|
@include prefixer(box-align, $align, webkit moz spec); |
||||
|
-ms-flex-align: $align; // IE 10 |
||||
|
} |
||||
|
|
||||
|
@mixin box-direction($direction: normal) { |
||||
|
// normal|reverse|inherit |
||||
|
@include prefixer(box-direction, $direction, webkit moz spec); |
||||
|
-ms-flex-direction: $direction; // IE 10 |
||||
|
} |
||||
|
|
||||
|
@mixin box-lines($lines: single) { |
||||
|
// single|multiple |
||||
|
@include prefixer(box-lines, $lines, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
@mixin box-ordinal-group($int: 1) { |
||||
|
@include prefixer(box-ordinal-group, $int, webkit moz spec); |
||||
|
-ms-flex-order: $int; // IE 10 |
||||
|
} |
||||
|
|
||||
|
@mixin box-flex($value: 0.0) { |
||||
|
@include prefixer(box-flex, $value, webkit moz spec); |
||||
|
-ms-flex: $value; // IE 10 |
||||
|
} |
||||
|
|
||||
|
@mixin box-flex-group($int: 1) { |
||||
|
@include prefixer(box-flex-group, $int, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
// CSS3 Flexible Box Model and property defaults |
||||
|
// Unified attributes for 2009, 2011, and 2012 flavours. |
||||
|
|
||||
|
// 2009 - display (box | inline-box) |
||||
|
// 2011 - display (flexbox | inline-flexbox) |
||||
|
// 2012 - display (flex | inline-flex) |
||||
|
@mixin display($value) { |
||||
|
// flex | inline-flex |
||||
|
@if $value == "flex" { |
||||
|
// 2009 |
||||
|
display: -webkit-box; |
||||
|
display: -moz-box; |
||||
|
display: box; |
||||
|
|
||||
|
// 2012 |
||||
|
display: -webkit-flex; |
||||
|
display: -moz-flex; |
||||
|
display: -ms-flexbox; // 2011 (IE 10) |
||||
|
display: flex; |
||||
|
} |
||||
|
|
||||
|
@elseif $value == "inline-flex" { |
||||
|
display: -webkit-inline-box; |
||||
|
display: -moz-inline-box; |
||||
|
display: inline-box; |
||||
|
|
||||
|
display: -webkit-inline-flex; |
||||
|
display: -moz-inline-flex; |
||||
|
display: -ms-inline-flexbox; |
||||
|
display: inline-flex; |
||||
|
} |
||||
|
|
||||
|
@else { |
||||
|
display: $value; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 2009 - box-flex (integer) |
||||
|
// 2011 - flex (decimal | width decimal) |
||||
|
// 2012 - flex (integer integer width) |
||||
|
@mixin flex($value) { |
||||
|
|
||||
|
// Grab flex-grow for older browsers. |
||||
|
$flex-grow: nth($value, 1); |
||||
|
|
||||
|
// 2009 |
||||
|
@include prefixer(box-flex, $flex-grow, webkit moz spec); |
||||
|
|
||||
|
// 2011 (IE 10), 2012 |
||||
|
@include prefixer(flex, $value, webkit moz ms spec); |
||||
|
} |
||||
|
|
||||
|
// 2009 - box-orient ( horizontal | vertical | inline-axis | block-axis) |
||||
|
// - box-direction (normal | reverse) |
||||
|
// 2011 - flex-direction (row | row-reverse | column | column-reverse) |
||||
|
// 2012 - flex-direction (row | row-reverse | column | column-reverse) |
||||
|
@mixin flex-direction($value: row) { |
||||
|
|
||||
|
// Alt values. |
||||
|
$value-2009: $value; |
||||
|
$value-2011: $value; |
||||
|
$direction: "normal"; |
||||
|
|
||||
|
@if $value == row { |
||||
|
$value-2009: horizontal; |
||||
|
} |
||||
|
|
||||
|
@elseif $value == "row-reverse" { |
||||
|
$value-2009: horizontal; |
||||
|
$direction: reverse; |
||||
|
} |
||||
|
|
||||
|
@elseif $value == column { |
||||
|
$value-2009: vertical; |
||||
|
} |
||||
|
|
||||
|
@elseif $value == "column-reverse" { |
||||
|
$value-2009: vertical; |
||||
|
$direction: reverse; |
||||
|
} |
||||
|
|
||||
|
// 2009 |
||||
|
@include prefixer(box-orient, $value-2009, webkit moz spec); |
||||
|
@if $direction == "reverse" { |
||||
|
@include prefixer(box-direction, $direction, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
// 2012 |
||||
|
@include prefixer(flex-direction, $value, webkit moz spec); |
||||
|
|
||||
|
// 2011 (IE 10) |
||||
|
-ms-flex-direction: $value; |
||||
|
} |
||||
|
|
||||
|
// 2009 - box-lines (single | multiple) |
||||
|
// 2011 - flex-wrap (nowrap | wrap | wrap-reverse) |
||||
|
// 2012 - flex-wrap (nowrap | wrap | wrap-reverse) |
||||
|
@mixin flex-wrap($value: nowrap) { |
||||
|
|
||||
|
// Alt values. |
||||
|
$alt-value: $value; |
||||
|
@if $value == nowrap { |
||||
|
$alt-value: single; |
||||
|
} |
||||
|
|
||||
|
@elseif $value == wrap { |
||||
|
$alt-value: multiple; |
||||
|
} |
||||
|
|
||||
|
@elseif $value == "wrap-reverse" { |
||||
|
$alt-value: multiple; |
||||
|
} |
||||
|
|
||||
|
@include prefixer(box-lines, $alt-value, webkit moz spec); |
||||
|
@include prefixer(flex-wrap, $value, webkit moz ms spec); |
||||
|
} |
||||
|
|
||||
|
// 2009 - TODO: parse values into flex-direction/flex-wrap |
||||
|
// 2011 - TODO: parse values into flex-direction/flex-wrap |
||||
|
// 2012 - flex-flow (flex-direction || flex-wrap) |
||||
|
@mixin flex-flow($value) { |
||||
|
@include prefixer(flex-flow, $value, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
// 2009 - box-ordinal-group (integer) |
||||
|
// 2011 - flex-order (integer) |
||||
|
// 2012 - order (integer) |
||||
|
@mixin order($int: 0) { |
||||
|
// 2009 |
||||
|
@include prefixer(box-ordinal-group, $int, webkit moz spec); |
||||
|
|
||||
|
// 2012 |
||||
|
@include prefixer(order, $int, webkit moz spec); |
||||
|
|
||||
|
// 2011 (IE 10) |
||||
|
-ms-flex-order: $int; |
||||
|
} |
||||
|
|
||||
|
// 2012 - flex-grow (number) |
||||
|
@mixin flex-grow($number: 0) { |
||||
|
@include prefixer(flex-grow, $number, webkit moz spec); |
||||
|
-ms-flex-positive: $number; |
||||
|
} |
||||
|
|
||||
|
// 2012 - flex-shrink (number) |
||||
|
@mixin flex-shrink($number: 1) { |
||||
|
@include prefixer(flex-shrink, $number, webkit moz spec); |
||||
|
-ms-flex-negative: $number; |
||||
|
} |
||||
|
|
||||
|
// 2012 - flex-basis (number) |
||||
|
@mixin flex-basis($width: auto) { |
||||
|
@include prefixer(flex-basis, $width, webkit moz spec); |
||||
|
-ms-flex-preferred-size: $width; |
||||
|
} |
||||
|
|
||||
|
// 2009 - box-pack (start | end | center | justify) |
||||
|
// 2011 - flex-pack (start | end | center | justify) |
||||
|
// 2012 - justify-content (flex-start | flex-end | center | space-between | space-around) |
||||
|
@mixin justify-content ($value: flex-start) { |
||||
|
|
||||
|
// Alt values. |
||||
|
$alt-value: $value; |
||||
|
@if $value == "flex-start" { |
||||
|
$alt-value: start; |
||||
|
} |
||||
|
|
||||
|
@elseif $value == "flex-end" { |
||||
|
$alt-value: end; |
||||
|
} |
||||
|
|
||||
|
@elseif $value == "space-between" { |
||||
|
$alt-value: justify; |
||||
|
} |
||||
|
|
||||
|
@elseif $value == "space-around" { |
||||
|
$alt-value: center; |
||||
|
} |
||||
|
|
||||
|
// 2009 |
||||
|
@include prefixer(box-pack, $alt-value, webkit moz spec); |
||||
|
|
||||
|
// 2012 |
||||
|
@include prefixer(justify-content, $value, webkit moz ms o spec); |
||||
|
|
||||
|
// 2011 (IE 10) |
||||
|
-ms-flex-pack: $alt-value; |
||||
|
} |
||||
|
|
||||
|
// 2009 - box-align (start | end | center | baseline | stretch) |
||||
|
// 2011 - flex-align (start | end | center | baseline | stretch) |
||||
|
// 2012 - align-items (flex-start | flex-end | center | baseline | stretch) |
||||
|
@mixin align-items($value: stretch) { |
||||
|
|
||||
|
$alt-value: $value; |
||||
|
|
||||
|
@if $value == "flex-start" { |
||||
|
$alt-value: start; |
||||
|
} |
||||
|
|
||||
|
@elseif $value == "flex-end" { |
||||
|
$alt-value: end; |
||||
|
} |
||||
|
|
||||
|
// 2009 |
||||
|
@include prefixer(box-align, $alt-value, webkit moz spec); |
||||
|
|
||||
|
// 2012 |
||||
|
@include prefixer(align-items, $value, webkit moz ms o spec); |
||||
|
|
||||
|
// 2011 (IE 10) |
||||
|
-ms-flex-align: $alt-value; |
||||
|
} |
||||
|
|
||||
|
// 2011 - flex-item-align (auto | start | end | center | baseline | stretch) |
||||
|
// 2012 - align-self (auto | flex-start | flex-end | center | baseline | stretch) |
||||
|
@mixin align-self($value: auto) { |
||||
|
|
||||
|
$value-2011: $value; |
||||
|
@if $value == "flex-start" { |
||||
|
$value-2011: start; |
||||
|
} |
||||
|
|
||||
|
@elseif $value == "flex-end" { |
||||
|
$value-2011: end; |
||||
|
} |
||||
|
|
||||
|
// 2012 |
||||
|
@include prefixer(align-self, $value, webkit moz spec); |
||||
|
|
||||
|
// 2011 (IE 10) |
||||
|
-ms-flex-item-align: $value-2011; |
||||
|
} |
||||
|
|
||||
|
// 2011 - flex-line-pack (start | end | center | justify | distribute | stretch) |
||||
|
// 2012 - align-content (flex-start | flex-end | center | space-between | space-around | stretch) |
||||
|
@mixin align-content($value: stretch) { |
||||
|
|
||||
|
$value-2011: $value; |
||||
|
@if $value == "flex-start" { |
||||
|
$value-2011: start; |
||||
|
} |
||||
|
|
||||
|
@elseif $value == "flex-end" { |
||||
|
$value-2011: end; |
||||
|
} |
||||
|
|
||||
|
@elseif $value == "space-between" { |
||||
|
$value-2011: justify; |
||||
|
} |
||||
|
|
||||
|
@elseif $value == "space-around" { |
||||
|
$value-2011: distribute; |
||||
|
} |
||||
|
|
||||
|
// 2012 |
||||
|
@include prefixer(align-content, $value, webkit moz spec); |
||||
|
|
||||
|
// 2011 (IE 10) |
||||
|
-ms-flex-line-pack: $value-2011; |
||||
|
} |
||||
|
|
@ -0,0 +1,23 @@ |
|||||
|
// Order of the includes matters, and it is: normal, bold, italic, bold+italic. |
||||
|
|
||||
|
@mixin font-face($font-family, $file-path, $weight: normal, $style: normal, $asset-pipeline: false ) { |
||||
|
@font-face { |
||||
|
font-family: $font-family; |
||||
|
font-weight: $weight; |
||||
|
font-style: $style; |
||||
|
|
||||
|
@if $asset-pipeline == true { |
||||
|
src: font-url('#{$file-path}.eot'); |
||||
|
src: font-url('#{$file-path}.eot?#iefix') format('embedded-opentype'), |
||||
|
font-url('#{$file-path}.woff') format('woff'), |
||||
|
font-url('#{$file-path}.ttf') format('truetype'), |
||||
|
font-url('#{$file-path}.svg##{$font-family}') format('svg'); |
||||
|
} @else { |
||||
|
src: url('#{$file-path}.eot'); |
||||
|
src: url('#{$file-path}.eot?#iefix') format('embedded-opentype'), |
||||
|
url('#{$file-path}.woff') format('woff'), |
||||
|
url('#{$file-path}.ttf') format('truetype'), |
||||
|
url('#{$file-path}.svg##{$font-family}') format('svg'); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,10 @@ |
|||||
|
// Font feature settings mixin and property default. |
||||
|
// Examples: @include font-feature-settings("liga"); |
||||
|
// @include font-feature-settings("lnum" false); |
||||
|
// @include font-feature-settings("pnum" 1, "kern" 0); |
||||
|
// @include font-feature-settings("ss01", "ss02"); |
||||
|
|
||||
|
@mixin font-feature-settings($settings...) { |
||||
|
@if length($settings) == 0 { $settings: none; } |
||||
|
@include prefixer(font-feature-settings, $settings, webkit moz ms spec); |
||||
|
} |
@ -0,0 +1,10 @@ |
|||||
|
// HiDPI mixin. Default value set to 1.3 to target Google Nexus 7 (http://bjango.com/articles/min-device-pixel-ratio/) |
||||
|
@mixin hidpi($ratio: 1.3) { |
||||
|
@media only screen and (-webkit-min-device-pixel-ratio: $ratio), |
||||
|
only screen and (min--moz-device-pixel-ratio: $ratio), |
||||
|
only screen and (-o-min-device-pixel-ratio: #{$ratio}/1), |
||||
|
only screen and (min-resolution: #{round($ratio*96)}dpi), |
||||
|
only screen and (min-resolution: #{$ratio}dppx) { |
||||
|
@content; |
||||
|
} |
||||
|
} |
@ -0,0 +1,4 @@ |
|||||
|
@mixin hyphens($hyphenation: none) { |
||||
|
// none | manual | auto |
||||
|
@include prefixer(hyphens, $hyphenation, webkit moz ms spec); |
||||
|
} |
@ -0,0 +1,14 @@ |
|||||
|
@mixin image-rendering ($mode:auto) { |
||||
|
|
||||
|
@if ($mode == crisp-edges) { |
||||
|
-ms-interpolation-mode: nearest-neighbor; // IE8+ |
||||
|
image-rendering: -moz-crisp-edges; |
||||
|
image-rendering: -o-crisp-edges; |
||||
|
image-rendering: -webkit-optimize-contrast; |
||||
|
image-rendering: crisp-edges; |
||||
|
} |
||||
|
|
||||
|
@else { |
||||
|
image-rendering: $mode; |
||||
|
} |
||||
|
} |
@ -0,0 +1,35 @@ |
|||||
|
// Adds keyframes blocks for supported prefixes, removing redundant prefixes in the block's content |
||||
|
@mixin keyframes($name) { |
||||
|
$original-prefix-for-webkit: $prefix-for-webkit; |
||||
|
$original-prefix-for-mozilla: $prefix-for-mozilla; |
||||
|
$original-prefix-for-microsoft: $prefix-for-microsoft; |
||||
|
$original-prefix-for-opera: $prefix-for-opera; |
||||
|
$original-prefix-for-spec: $prefix-for-spec; |
||||
|
|
||||
|
@if $original-prefix-for-webkit { |
||||
|
@include disable-prefix-for-all(); |
||||
|
$prefix-for-webkit: true !global; |
||||
|
@-webkit-keyframes #{$name} { |
||||
|
@content; |
||||
|
} |
||||
|
} |
||||
|
@if $original-prefix-for-mozilla { |
||||
|
@include disable-prefix-for-all(); |
||||
|
$prefix-for-mozilla: true !global; |
||||
|
@-moz-keyframes #{$name} { |
||||
|
@content; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$prefix-for-webkit: $original-prefix-for-webkit !global; |
||||
|
$prefix-for-mozilla: $original-prefix-for-mozilla !global; |
||||
|
$prefix-for-microsoft: $original-prefix-for-microsoft !global; |
||||
|
$prefix-for-opera: $original-prefix-for-opera !global; |
||||
|
$prefix-for-spec: $original-prefix-for-spec !global; |
||||
|
|
||||
|
@if $original-prefix-for-spec { |
||||
|
@keyframes #{$name} { |
||||
|
@content; |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,38 @@ |
|||||
|
@mixin linear-gradient($pos, $G1, $G2: null, |
||||
|
$G3: null, $G4: null, |
||||
|
$G5: null, $G6: null, |
||||
|
$G7: null, $G8: null, |
||||
|
$G9: null, $G10: null, |
||||
|
$fallback: null) { |
||||
|
// Detect what type of value exists in $pos |
||||
|
$pos-type: type-of(nth($pos, 1)); |
||||
|
$pos-spec: null; |
||||
|
$pos-degree: null; |
||||
|
|
||||
|
// If $pos is missing from mixin, reassign vars and add default position |
||||
|
@if ($pos-type == color) or (nth($pos, 1) == "transparent") { |
||||
|
$G10: $G9; $G9: $G8; $G8: $G7; $G7: $G6; $G6: $G5; |
||||
|
$G5: $G4; $G4: $G3; $G3: $G2; $G2: $G1; $G1: $pos; |
||||
|
$pos: null; |
||||
|
} |
||||
|
|
||||
|
@if $pos { |
||||
|
$positions: _linear-positions-parser($pos); |
||||
|
$pos-degree: nth($positions, 1); |
||||
|
$pos-spec: nth($positions, 2); |
||||
|
} |
||||
|
|
||||
|
$full: $G1, $G2, $G3, $G4, $G5, $G6, $G7, $G8, $G9, $G10; |
||||
|
|
||||
|
// Set $G1 as the default fallback color |
||||
|
$fallback-color: nth($G1, 1); |
||||
|
|
||||
|
// If $fallback is a color use that color as the fallback color |
||||
|
@if (type-of($fallback) == color) or ($fallback == "transparent") { |
||||
|
$fallback-color: $fallback; |
||||
|
} |
||||
|
|
||||
|
background-color: $fallback-color; |
||||
|
background-image: -webkit-linear-gradient($pos-degree $full); // Safari 5.1+, Chrome |
||||
|
background-image: unquote("linear-gradient(#{$pos-spec}#{$full})"); |
||||
|
} |
@ -0,0 +1,8 @@ |
|||||
|
@mixin perspective($depth: none) { |
||||
|
// none | <length> |
||||
|
@include prefixer(perspective, $depth, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
@mixin perspective-origin($value: 50% 50%) { |
||||
|
@include prefixer(perspective-origin, $value, webkit moz spec); |
||||
|
} |
@ -0,0 +1,8 @@ |
|||||
|
@mixin placeholder { |
||||
|
$placeholders: ":-webkit-input" ":-moz" "-moz" "-ms-input"; |
||||
|
@each $placeholder in $placeholders { |
||||
|
&:#{$placeholder}-placeholder { |
||||
|
@content; |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,39 @@ |
|||||
|
// Requires Sass 3.1+ |
||||
|
@mixin radial-gradient($G1, $G2, |
||||
|
$G3: null, $G4: null, |
||||
|
$G5: null, $G6: null, |
||||
|
$G7: null, $G8: null, |
||||
|
$G9: null, $G10: null, |
||||
|
$pos: null, |
||||
|
$shape-size: null, |
||||
|
$fallback: null) { |
||||
|
|
||||
|
$data: _radial-arg-parser($G1, $G2, $pos, $shape-size); |
||||
|
$G1: nth($data, 1); |
||||
|
$G2: nth($data, 2); |
||||
|
$pos: nth($data, 3); |
||||
|
$shape-size: nth($data, 4); |
||||
|
|
||||
|
$full: $G1, $G2, $G3, $G4, $G5, $G6, $G7, $G8, $G9, $G10; |
||||
|
|
||||
|
// Strip deprecated cover/contain for spec |
||||
|
$shape-size-spec: _shape-size-stripper($shape-size); |
||||
|
|
||||
|
// Set $G1 as the default fallback color |
||||
|
$first-color: nth($full, 1); |
||||
|
$fallback-color: nth($first-color, 1); |
||||
|
|
||||
|
@if (type-of($fallback) == color) or ($fallback == "transparent") { |
||||
|
$fallback-color: $fallback; |
||||
|
} |
||||
|
|
||||
|
// Add Commas and spaces |
||||
|
$shape-size: if($shape-size, '#{$shape-size}, ', null); |
||||
|
$pos: if($pos, '#{$pos}, ', null); |
||||
|
$pos-spec: if($pos, 'at #{$pos}', null); |
||||
|
$shape-size-spec: if(($shape-size-spec != ' ') and ($pos == null), '#{$shape-size-spec}, ', '#{$shape-size-spec} '); |
||||
|
|
||||
|
background-color: $fallback-color; |
||||
|
background-image: -webkit-radial-gradient(unquote(#{$pos}#{$shape-size}#{$full})); |
||||
|
background-image: unquote("radial-gradient(#{$shape-size-spec}#{$pos-spec}#{$full})"); |
||||
|
} |
@ -0,0 +1,15 @@ |
|||||
|
@mixin transform($property: none) { |
||||
|
// none | <transform-function> |
||||
|
@include prefixer(transform, $property, webkit moz ms o spec); |
||||
|
} |
||||
|
|
||||
|
@mixin transform-origin($axes: 50%) { |
||||
|
// x-axis - left | center | right | length | % |
||||
|
// y-axis - top | center | bottom | length | % |
||||
|
// z-axis - length |
||||
|
@include prefixer(transform-origin, $axes, webkit moz ms o spec); |
||||
|
} |
||||
|
|
||||
|
@mixin transform-style ($style: flat) { |
||||
|
@include prefixer(transform-style, $style, webkit moz ms o spec); |
||||
|
} |
@ -0,0 +1,77 @@ |
|||||
|
// Shorthand mixin. Supports multiple parentheses-deliminated values for each variable. |
||||
|
// Example: @include transition (all 2s ease-in-out); |
||||
|
// @include transition (opacity 1s ease-in 2s, width 2s ease-out); |
||||
|
// @include transition-property (transform, opacity); |
||||
|
|
||||
|
@mixin transition ($properties...) { |
||||
|
// Fix for vendor-prefix transform property |
||||
|
$needs-prefixes: false; |
||||
|
$webkit: (); |
||||
|
$moz: (); |
||||
|
$spec: (); |
||||
|
|
||||
|
// Create lists for vendor-prefixed transform |
||||
|
@each $list in $properties { |
||||
|
@if nth($list, 1) == "transform" { |
||||
|
$needs-prefixes: true; |
||||
|
$list1: -webkit-transform; |
||||
|
$list2: -moz-transform; |
||||
|
$list3: (); |
||||
|
|
||||
|
@each $var in $list { |
||||
|
$list3: join($list3, $var); |
||||
|
|
||||
|
@if $var != "transform" { |
||||
|
$list1: join($list1, $var); |
||||
|
$list2: join($list2, $var); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$webkit: append($webkit, $list1); |
||||
|
$moz: append($moz, $list2); |
||||
|
$spec: append($spec, $list3); |
||||
|
} |
||||
|
|
||||
|
// Create lists for non-prefixed transition properties |
||||
|
@else { |
||||
|
$webkit: append($webkit, $list, comma); |
||||
|
$moz: append($moz, $list, comma); |
||||
|
$spec: append($spec, $list, comma); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@if $needs-prefixes { |
||||
|
-webkit-transition: $webkit; |
||||
|
-moz-transition: $moz; |
||||
|
transition: $spec; |
||||
|
} |
||||
|
@else { |
||||
|
@if length($properties) >= 1 { |
||||
|
@include prefixer(transition, $properties, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
@else { |
||||
|
$properties: all 0.15s ease-out 0s; |
||||
|
@include prefixer(transition, $properties, webkit moz spec); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@mixin transition-property ($properties...) { |
||||
|
-webkit-transition-property: transition-property-names($properties, 'webkit'); |
||||
|
-moz-transition-property: transition-property-names($properties, 'moz'); |
||||
|
transition-property: transition-property-names($properties, false); |
||||
|
} |
||||
|
|
||||
|
@mixin transition-duration ($times...) { |
||||
|
@include prefixer(transition-duration, $times, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
@mixin transition-timing-function ($motions...) { |
||||
|
// ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier() |
||||
|
@include prefixer(transition-timing-function, $motions, webkit moz spec); |
||||
|
} |
||||
|
|
||||
|
@mixin transition-delay ($times...) { |
||||
|
@include prefixer(transition-delay, $times, webkit moz spec); |
||||
|
} |
@ -0,0 +1,3 @@ |
|||||
|
@mixin user-select($arg: none) { |
||||
|
@include prefixer(user-select, $arg, webkit moz ms spec); |
||||
|
} |
@ -0,0 +1,11 @@ |
|||||
|
@function assign-inputs($inputs, $pseudo: null) { |
||||
|
$list : (); |
||||
|
|
||||
|
@each $input in $inputs { |
||||
|
$input: unquote($input); |
||||
|
$input: if($pseudo, $input + ":" + $pseudo, $input); |
||||
|
$list: append($list, $input, comma); |
||||
|
} |
||||
|
|
||||
|
@return $list; |
||||
|
} |
@ -0,0 +1,13 @@ |
|||||
|
// Programatically determines whether a color is light or dark |
||||
|
// Returns a boolean |
||||
|
// More details here http://robots.thoughtbot.com/closer-look-color-lightness |
||||
|
|
||||
|
@function is-light($hex-color) { |
||||
|
$-local-red: red(rgba($hex-color, 1.0)); |
||||
|
$-local-green: green(rgba($hex-color, 1.0)); |
||||
|
$-local-blue: blue(rgba($hex-color, 1.0)); |
||||
|
|
||||
|
$-local-lightness: ($-local-red * 0.2126 + $-local-green * 0.7152 + $-local-blue * 0.0722) / 255; |
||||
|
|
||||
|
@return $-local-lightness > .6; |
||||
|
} |
@ -0,0 +1,39 @@ |
|||||
|
// Flexible grid |
||||
|
@function flex-grid($columns, $container-columns: $fg-max-columns) { |
||||
|
$width: $columns * $fg-column + ($columns - 1) * $fg-gutter; |
||||
|
$container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter; |
||||
|
@return percentage($width / $container-width); |
||||
|
} |
||||
|
|
||||
|
// Flexible gutter |
||||
|
@function flex-gutter($container-columns: $fg-max-columns, $gutter: $fg-gutter) { |
||||
|
$container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter; |
||||
|
@return percentage($gutter / $container-width); |
||||
|
} |
||||
|
|
||||
|
// The $fg-column, $fg-gutter and $fg-max-columns variables must be defined in your base stylesheet to properly use the flex-grid function. |
||||
|
// This function takes the fluid grid equation (target / context = result) and uses columns to help define each. |
||||
|
// |
||||
|
// The calculation presumes that your column structure will be missing the last gutter: |
||||
|
// |
||||
|
// -- column -- gutter -- column -- gutter -- column |
||||
|
// |
||||
|
// $fg-column: 60px; // Column Width |
||||
|
// $fg-gutter: 25px; // Gutter Width |
||||
|
// $fg-max-columns: 12; // Total Columns For Main Container |
||||
|
// |
||||
|
// div { |
||||
|
// width: flex-grid(4); // returns (315px / 995px) = 31.65829%; |
||||
|
// margin-left: flex-gutter(); // returns (25px / 995px) = 2.51256%; |
||||
|
// |
||||
|
// p { |
||||
|
// width: flex-grid(2, 4); // returns (145px / 315px) = 46.031746%; |
||||
|
// float: left; |
||||
|
// margin: flex-gutter(4); // returns (25px / 315px) = 7.936508%; |
||||
|
// } |
||||
|
// |
||||
|
// blockquote { |
||||
|
// float: left; |
||||
|
// width: flex-grid(2, 4); // returns (145px / 315px) = 46.031746%; |
||||
|
// } |
||||
|
// } |
@ -0,0 +1,3 @@ |
|||||
|
@function golden-ratio($value, $increment) { |
||||
|
@return modular-scale($value, $increment, $golden) |
||||
|
} |
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue