diff --git a/.gitignore b/.gitignore
index a036ec3a6bed..fac6da38e4f2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,7 +12,6 @@ build/
 docs/code
 docs/_site
 docs/.sass-cache
-docs/css/react.css
 docs/js/*
 docs/downloads
 examples/shared/*.js
diff --git a/docs/Gemfile b/docs/Gemfile
index 4b8734cff73d..4f4991e3b2a6 100644
--- a/docs/Gemfile
+++ b/docs/Gemfile
@@ -3,19 +3,17 @@ source 'https://rubygems.org'
 gem 'rake'
 
 # jekyll, which builds it all
-gem 'jekyll', '~>1.3.0'
+# 2.0 includes sass processing
+gem 'jekyll', '~>2.0'
+
+# Auto redirect pages
+gem 'jekyll-redirect-from'
 
 # JSON
 gem 'json'
 
-# SASS for CSS
-gem 'sass'
-
 # For `rake watch`
 gem 'rb-fsevent'
 
-# Redcarpet for Markdown
-gem 'redcarpet'
-
 # For markdown header cleanup
-gem 'sanitize'
+gem 'sanitize', '~>2.0'
diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock
index 2324fda47fa5..a520567cf1fb 100644
--- a/docs/Gemfile.lock
+++ b/docs/Gemfile.lock
@@ -1,61 +1,82 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    classifier (1.3.3)
+    blankslate (2.1.2.4)
+    celluloid (0.15.2)
+      timers (~> 1.1.0)
+    classifier (1.3.4)
       fast-stemmer (>= 1.0.0)
+    coffee-script (2.3.0)
+      coffee-script-source
+      execjs
+    coffee-script-source (1.7.1)
     colorator (0.1)
-    commander (4.1.5)
-      highline (~> 1.6.11)
+    execjs (2.2.1)
     fast-stemmer (1.0.2)
     ffi (1.9.3)
-    highline (1.6.20)
-    jekyll (1.3.0)
+    jekyll (2.2.0)
       classifier (~> 1.3)
       colorator (~> 0.1)
-      commander (~> 4.1.3)
-      liquid (~> 2.5.2)
-      listen (~> 1.3)
-      maruku (~> 0.6.0)
-      pygments.rb (~> 0.5.0)
-      redcarpet (~> 2.3.0)
-      safe_yaml (~> 0.9.7)
+      jekyll-coffeescript (~> 1.0)
+      jekyll-gist (~> 1.0)
+      jekyll-paginate (~> 1.0)
+      jekyll-sass-converter (~> 1.0)
+      jekyll-watch (~> 1.0)
+      kramdown (~> 1.3)
+      liquid (~> 2.6.1)
+      mercenary (~> 0.3.3)
+      pygments.rb (~> 0.6.0)
+      redcarpet (~> 3.1)
+      safe_yaml (~> 1.0)
+      toml (~> 0.1.0)
+    jekyll-coffeescript (1.0.0)
+      coffee-script (~> 2.2)
+    jekyll-gist (1.1.0)
+    jekyll-paginate (1.0.0)
+    jekyll-redirect-from (0.5.0)
+      jekyll (~> 2.0)
+    jekyll-sass-converter (1.2.0)
+      sass (~> 3.2)
+    jekyll-watch (1.1.0)
+      listen (~> 2.7)
     json (1.8.1)
-    liquid (2.5.4)
-    listen (1.3.1)
+    kramdown (1.4.1)
+    liquid (2.6.1)
+    listen (2.7.9)
+      celluloid (>= 0.15.2)
       rb-fsevent (>= 0.9.3)
       rb-inotify (>= 0.9)
-      rb-kqueue (>= 0.2)
-    maruku (0.6.1)
-      syntax (>= 1.0.0)
-    mini_portile (0.5.2)
-    nokogiri (1.6.0)
-      mini_portile (~> 0.5.0)
-    posix-spawn (0.3.6)
-    pygments.rb (0.5.4)
+    mercenary (0.3.4)
+    mini_portile (0.6.0)
+    nokogiri (1.6.3.1)
+      mini_portile (= 0.6.0)
+    parslet (1.5.0)
+      blankslate (~> 2.0)
+    posix-spawn (0.3.9)
+    pygments.rb (0.6.0)
       posix-spawn (~> 0.3.6)
       yajl-ruby (~> 1.1.0)
-    rake (10.1.0)
-    rb-fsevent (0.9.3)
-    rb-inotify (0.9.2)
+    rake (10.3.2)
+    rb-fsevent (0.9.4)
+    rb-inotify (0.9.5)
       ffi (>= 0.5.0)
-    rb-kqueue (0.2.0)
-      ffi (>= 0.5.0)
-    redcarpet (2.3.0)
-    safe_yaml (0.9.7)
+    redcarpet (3.1.2)
+    safe_yaml (1.0.3)
     sanitize (2.0.6)
       nokogiri (>= 1.4.4)
-    sass (3.2.12)
-    syntax (1.0.0)
+    sass (3.3.14)
+    timers (1.1.0)
+    toml (0.1.1)
+      parslet (~> 1.5.0)
     yajl-ruby (1.1.0)
 
 PLATFORMS
   ruby
 
 DEPENDENCIES
-  jekyll (~> 1.3.0)
+  jekyll (~> 2.0)
+  jekyll-redirect-from
   json
   rake
   rb-fsevent
-  redcarpet
-  sanitize
-  sass
+  sanitize (~> 2.0)
diff --git a/docs/README.md b/docs/README.md
index 48b36c390ed6..e7cb24c71db9 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -32,8 +32,8 @@ Use Jekyll to serve the website locally (by default, at `http://localhost:4000`)
 
 ```sh
 $ cd react/docs
-$ rake
-$ jekyll serve -w
+$ bundle exec rake
+$ bundle exec jekyll serve -w
 $ open http://localhost:4000/react/
 ```
 
@@ -43,10 +43,9 @@ If you want to modify the CSS or JS, use [Rake](http://rake.rubyforge.org/) to c
 
 ```sh
 $ cd react/docs
-$ rake watch # Automatically compiles as needed.
-# rake         Manually compile CSS and JS.
-# rake css     Manually compile CSS, only.
-# rake js      Manually compile JS, only.
+$ bundle exec rake watch # Automatically compiles as needed.
+# bundle exec rake         Manually compile CSS and JS.
+# bundle exec rake js      Manually compile JS, only.
 ```
 
 ## Afterthoughts
@@ -57,6 +56,12 @@ The easiest way to do this is to have a separate clone of this repository, check
 
 **Note:** This should only be done for new releases. You should create a tag corresponding to the release tag in the main repository.
 
+We also have a rake task that does the same thing (without creating commits). It expects the directory structure mentioned above.
+
+```sh
+$ bundle exec rake release
+```
+
 ### Removing the Jekyll / Ruby Dependency
 
 In an ideal world, we would not be adding a Ruby dependency on part of our project. We would like to move towards a point where we are using React to render the website.
diff --git a/docs/Rakefile b/docs/Rakefile
index f10e317902b3..44a3e114758f 100644
--- a/docs/Rakefile
+++ b/docs/Rakefile
@@ -2,19 +2,13 @@ require('rubygems')
 require('json')
 require('yaml')
 
-desc "generate css from sass"
-task :css do
-  system "sass --style=compressed _css/react.scss css/react.css"
-end
-
 desc "generate js from jsx"
 task :js do
   system "../bin/jsx _js js"
 end
 
-desc "watch css & js"
+desc "watch js"
 task :watch do
-  Process.spawn "sass --style=compressed --watch _css/react.scss:css/react.css"
   Process.spawn "../bin/jsx --watch _js js"
   Process.waitall
 end
@@ -29,9 +23,19 @@ task :update_version do
   end
 end
 
+desc "update acknowledgements list"
+task :update_acknowledgements do
+  authors = File.readlines('../AUTHORS').map {|author| author.gsub(/ <.*\n/,'')}
+  # split into cols here because nobody knows how to use liquid
+  # need to to_f because ruby will keep slice_size as int and round on its own
+  slice_size = (authors.size / 3.to_f).ceil
+  cols = authors.each_slice(slice_size).to_a
+  File.open('_data/acknowledgements.yml', 'w+') { |f| f.write(cols.to_yaml) }
+end
+
 desc "build into ../../react-gh-pages"
 task :release => [:update_version, :default] do
   system "jekyll build -d ../../react-gh-pages"
 end
 
-task :default => [:css, :js]
+task :default => [:js]
diff --git a/docs/_config.yml b/docs/_config.yml
index 630e3f862e2f..75ca27e2332f 100644
--- a/docs/_config.yml
+++ b/docs/_config.yml
@@ -1,21 +1,37 @@
 ---
-baseurl: "/react"
+name: React
+description: A JavaScript library for building user interfaces
 url: http://facebook.github.io
+baseurl: "/react"
 permalink: "/blog/:year/:month/:day/:title.html"
+paginate_path: "/blog/page:num/"
+relative_permalinks: true
+paginate: 5
+timezone: America/Los_Angeles
+highlighter: pygments
+defaults:
+- scope:
+    path: ''
+    type: post
+  values:
+    layout: post
+- scope:
+    path: docs
+    type: page
+  values:
+    layout: docs
 exclude:
 - Gemfile
 - Gemfile.lock
 - README.md
 - Rakefile
+markdown: redcarpet
 redcarpet:
   extensions:
   - fenced_code_blocks
-pygments: true
-name: React
-markdown: redcarpet
+sass:
+  style: :compressed
+  sass_dir: _css
+gems:
+- jekyll-redirect-from
 react_version: 0.11.1
-description: A JavaScript library for building user interfaces
-relative_permalinks: true
-paginate: 5
-paginate_path: "/blog/page:num/"
-timezone: America/Los_Angeles
diff --git a/docs/_css/bourbon/_bourbon-deprecated-upcoming.scss b/docs/_css/bourbon/_bourbon-deprecated-upcoming.scss
index 5332496d82ef..f946b3b456d1 100644
--- a/docs/_css/bourbon/_bourbon-deprecated-upcoming.scss
+++ b/docs/_css/bourbon/_bourbon-deprecated-upcoming.scss
@@ -2,12 +2,7 @@
 // These mixins/functions are deprecated
 // They will be removed in the next MAJOR version release
 //************************************************************************//
-@mixin box-shadow ($shadows...) {
-  @include prefixer(box-shadow, $shadows, spec);
-  @warn "box-shadow is deprecated and will be removed in the next major version release";
-}
-
-@mixin background-size ($lengths...) {
-  @include prefixer(background-size, $lengths, spec);
-  @warn "background-size is deprecated and 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";
 }
diff --git a/docs/_css/bourbon/_bourbon.scss b/docs/_css/bourbon/_bourbon.scss
index 53fbca877f04..eea6e21e9ed8 100644
--- a/docs/_css/bourbon/_bourbon.scss
+++ b/docs/_css/bourbon/_bourbon.scss
@@ -1,22 +1,36 @@
+// Settings
+@import "settings/prefixer";
+@import "settings/px-to-em";
+@import "settings/asset-pipeline";
+
 // Custom Helpers
-@import "helpers/deprecated-webkit-gradient";
+@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/compact";
+@import "functions/assign";
+@import "functions/color-lightness";
 @import "functions/flex-grid";
+@import "functions/golden-ratio";
 @import "functions/grid-width";
-@import "functions/linear-gradient";
 @import "functions/modular-scale";
 @import "functions/px-to-em";
-@import "functions/radial-gradient";
+@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";
@@ -27,12 +41,15 @@
 @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/inline-block";
 @import "css3/keyframes";
 @import "css3/linear-gradient";
 @import "css3/perspective";
@@ -45,6 +62,8 @@
 // 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";
@@ -54,6 +73,7 @@
 @import "addons/size";
 @import "addons/timing-functions";
 @import "addons/triangle";
+@import "addons/word-wrap";
 
 // Soon to be deprecated Mixins
 @import "bourbon-deprecated-upcoming";
diff --git a/docs/_css/bourbon/addons/_button.scss b/docs/_css/bourbon/addons/_button.scss
index 3ae393c090f9..14a89e480c15 100644
--- a/docs/_css/bourbon/addons/_button.scss
+++ b/docs/_css/bourbon/addons/_button.scss
@@ -1,38 +1,51 @@
-@mixin button ($style: simple, $base-color: #4294f0) {
+@mixin button ($style: simple, $base-color: #4294f0, $text-size: inherit, $padding: 7px 18px) {
 
-  @if type-of($style) == color {
+  @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);
   }
 
-  // Grayscale button
-  @if $base-color == grayscale($base-color) {
-    @if $style == simple {
-      @include simple($base-color, $grayscale: true);
-    }
+  @if type-of($style) == color and type-of($base-color) == number {
+    $padding: $text-size;
+    $text-size: $base-color;
+    $base-color: $style;
+    $style: simple;
 
-    @else if $style == shiny {
-      @include shiny($base-color, $grayscale: true);
+    @if $padding == inherit {
+      $padding: 7px 18px;
     }
 
-    @else if $style == pill {
-      @include pill($base-color, $grayscale: true);
-    }
+    @include buttonstyle($style, $base-color, $text-size, $padding);
   }
 
-  // Colored button
-  @else {
-    @if $style == simple {
-      @include simple($base-color);
-    }
+  @if type-of($style) == number {
+    $padding: $base-color;
+    $text-size: $style;
+    $base-color: #4294f0;
+    $style: simple;
 
-    @else if $style == shiny {
-      @include shiny($base-color);
+    @if $padding == #4294f0 {
+      $padding: 7px 18px;
     }
 
-    @else if $style == pill {
-      @include pill($base-color);
-    }
+    @include buttonstyle($style, $base-color, $text-size, $padding);
   }
 
   &:disabled {
@@ -42,16 +55,55 @@
 }
 
 
+// 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) {
+@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 lightness($base-color) > 70% {
+  @if is-light($base-color) {
     $color:       hsl(0, 0, 20%);
     $text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%);
   }
@@ -68,10 +120,10 @@
   box-shadow: inset 0 1px 0 0 $inset-shadow;
   color: $color;
   display: inline-block;
-  font-size: 11px;
+  font-size: $textsize;
   font-weight: bold;
   @include linear-gradient ($base-color, $stop-gradient);
-  padding: 7px 18px;
+  padding: $padding;
   text-decoration: none;
   text-shadow: 0 1px 0 $text-shadow;
   background-clip: padding-box;
@@ -92,7 +144,8 @@
     @include linear-gradient ($base-color-hover, $stop-gradient-hover);
   }
 
-  &:active:not(:disabled) {
+  &: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%);
 
@@ -102,14 +155,14 @@
     }
 
     border: 1px solid $border-active;
-    box-shadow: inset 0 0 8px 4px $inset-shadow-active, inset 0 0 8px 4px $inset-shadow-active, 0 1px 1px 0 #eee;
+    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) {
+@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);
@@ -119,7 +172,7 @@
   $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 lightness($base-color) > 70% {
+  @if is-light($base-color) {
     $color:       hsl(0, 0, 20%);
     $text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%);
   }
@@ -140,10 +193,10 @@
   box-shadow: inset 0 1px 0 0 $inset-shadow;
   color: $color;
   display: inline-block;
-  font-size: 14px;
+  font-size: $textsize;
   font-weight: bold;
   @include linear-gradient(top, $base-color 0%, $second-stop 50%, $third-stop 50%, $fourth-stop 100%);
-  padding: 8px 20px;
+  padding: $padding;
   text-align: center;
   text-decoration: none;
   text-shadow: 0 -1px 1px $text-shadow;
@@ -168,21 +221,22 @@
                                   $fourth-stop-hover 100%);
   }
 
-  &:active:not(:disabled) {
+  &: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, 0 1px 0 #fff;
+    box-shadow: inset 0 0 20px 0 $inset-shadow-active;
   }
 }
 
 
 // Pill Button
 //************************************************************************//
-@mixin pill($base-color, $grayscale: false) {
+@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%);
@@ -191,7 +245,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 lightness($base-color) > 70% {
+  @if is-light($base-color) {
     $color:       hsl(0, 0, 20%);
     $text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%);
   }
@@ -208,14 +262,14 @@
   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, 0 1px 2px 0 #b3b3b3;
+  box-shadow: inset 0 1px 0 0 $inset-shadow;
   color: $color;
   display: inline-block;
-  font-size: 11px;
+  font-size: $textsize;
   font-weight: normal;
   line-height: 1;
   @include linear-gradient ($base-color, $stop-gradient);
-  padding: 5px 16px;
+  padding: $padding;
   text-align: center;
   text-decoration: none;
   text-shadow: 0 -1px 1px $text-shadow;
@@ -249,7 +303,8 @@
     background-clip: padding-box;
   }
 
-  &:active:not(:disabled) {
+  &: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%);
@@ -267,7 +322,53 @@
     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, 0 1px 0 0 #fff;
+    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;
+  }
+}
diff --git a/docs/_css/bourbon/addons/_clearfix.scss b/docs/_css/bourbon/addons/_clearfix.scss
index ca9903cf02e2..783cfbc79227 100644
--- a/docs/_css/bourbon/addons/_clearfix.scss
+++ b/docs/_css/bourbon/addons/_clearfix.scss
@@ -1,4 +1,4 @@
-// Micro clearfix provides an easy way to contain floats without adding additional markup
+// Modern micro clearfix provides an easy way to contain floats without adding additional markup.
 //
 // Example usage:
 //
@@ -12,18 +12,12 @@
 //    }
 
 @mixin clearfix {
-  *zoom: 1;
-
-  &:before,
-  &:after {
-    content: " ";
-    display: table;
-  }
-
   &:after {
-    clear: both;
+    content:"";
+    display:table;
+    clear:both;
   }
 }
 
 // Acknowledgements
-// Micro clearfix: [Nicolas Gallagher](http://nicolasgallagher.com/micro-clearfix-hack/)
+// Beat *that* clearfix: [Thierry Koblentz](http://www.css-101.org/articles/clearfix/latest-new-clearfix-so-far.php)
diff --git a/docs/_css/bourbon/addons/_directional-values.scss b/docs/_css/bourbon/addons/_directional-values.scss
new file mode 100644
index 000000000000..742f1031a484
--- /dev/null
+++ b/docs/_css/bourbon/addons/_directional-values.scss
@@ -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...);
+}
diff --git a/docs/_css/bourbon/addons/_ellipsis.scss b/docs/_css/bourbon/addons/_ellipsis.scss
new file mode 100644
index 000000000000..a8ea2a4a867d
--- /dev/null
+++ b/docs/_css/bourbon/addons/_ellipsis.scss
@@ -0,0 +1,7 @@
+@mixin ellipsis($width: 100%) {
+  display: inline-block;
+  max-width: $width;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
diff --git a/docs/_css/bourbon/addons/_font-family.scss b/docs/_css/bourbon/addons/_font-family.scss
index df8a80ddfcfe..31f5d9ca75c5 100644
--- a/docs/_css/bourbon/addons/_font-family.scss
+++ b/docs/_css/bourbon/addons/_font-family.scss
@@ -1,5 +1,5 @@
 $georgia: Georgia, Cambria, "Times New Roman", Times, serif;
-$helvetica: "Helvetica Neue", Helvetica, Arial, sans-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;
diff --git a/docs/_css/bourbon/addons/_hide-text.scss b/docs/_css/bourbon/addons/_hide-text.scss
index 68d4bf86cb2d..fc7943811d3c 100644
--- a/docs/_css/bourbon/addons/_hide-text.scss
+++ b/docs/_css/bourbon/addons/_hide-text.scss
@@ -1,5 +1,10 @@
 @mixin hide-text {
-  color:            transparent;
-  font:             0/0 a;
-  text-shadow:      none;
+  overflow: hidden;
+
+  &:before {
+    content: "";
+    display: block;
+    width: 0;
+    height: 100%;
+  }
 }
diff --git a/docs/_css/bourbon/addons/_html5-input-types.scss b/docs/_css/bourbon/addons/_html5-input-types.scss
index b184382d910c..9e9324ae0a70 100644
--- a/docs/_css/bourbon/addons/_html5-input-types.scss
+++ b/docs/_css/bourbon/addons/_html5-input-types.scss
@@ -20,29 +20,19 @@ $inputs-list: 'input[type="email"]',
               'input[type="time"]',
               'input[type="week"]';
 
-$unquoted-inputs-list: ();
-@each $input-type in $inputs-list {
-  $unquoted-inputs-list: append($unquoted-inputs-list, unquote($input-type), comma);
-}
-
-$all-text-inputs: $unquoted-inputs-list;
-
+// Bare inputs
+//************************************************************************//
+$all-text-inputs: assign-inputs($inputs-list);
 
 // Hover Pseudo-class
 //************************************************************************//
-$all-text-inputs-hover: ();
-@each $input-type in $unquoted-inputs-list {
-      $input-type-hover: $input-type + ":hover";
-      $all-text-inputs-hover: append($all-text-inputs-hover, $input-type-hover, comma);
-}
+$all-text-inputs-hover: assign-inputs($inputs-list, hover);
 
 // Focus Pseudo-class
 //************************************************************************//
-$all-text-inputs-focus: ();
-@each $input-type in $unquoted-inputs-list {
-      $input-type-focus: $input-type + ":focus";
-      $all-text-inputs-focus: append($all-text-inputs-focus, $input-type-focus, comma);
-}
+$all-text-inputs-focus: assign-inputs($inputs-list, focus);
+
+
 
 // You must use interpolation on the variable:
 // #{$all-text-inputs}
@@ -54,3 +44,43 @@ $all-text-inputs-focus: ();
 //   #{$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;
+//   }
diff --git a/docs/_css/bourbon/addons/_position.scss b/docs/_css/bourbon/addons/_position.scss
index faad1cae50ad..7de75182bc0b 100644
--- a/docs/_css/bourbon/addons/_position.scss
+++ b/docs/_css/bourbon/addons/_position.scss
@@ -1,10 +1,12 @@
-@mixin position ($position: relative, $coordinates: 0 0 0 0) {
+@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);
@@ -12,31 +14,19 @@
 
   position: $position;
 
-  @if $top == auto {
-    top: $top;
-  }
-  @else if not(unitless($top)) {
+  @if ($top and $top == auto) or (type-of($top) == number) {
     top: $top;
   }
 
-  @if $right == auto {
-    right: $right;
-  }
-  @else if not(unitless($right)) {
+  @if ($right and $right == auto) or (type-of($right) == number) {
     right: $right;
   }
 
-  @if $bottom == auto {
-    bottom: $bottom;
-  }
-  @else if not(unitless($bottom)) {
+  @if ($bottom and $bottom == auto) or (type-of($bottom) == number) {
     bottom: $bottom;
   }
 
-  @if $left == auto {
-    left: $left;
-  }
-  @else if not(unitless($left)) {
+  @if ($left and $left == auto) or (type-of($left) == number) {
     left: $left;
   }
 }
diff --git a/docs/_css/bourbon/addons/_prefixer.scss b/docs/_css/bourbon/addons/_prefixer.scss
index 6bfd23a1dd53..c32f502758f2 100644
--- a/docs/_css/bourbon/addons/_prefixer.scss
+++ b/docs/_css/bourbon/addons/_prefixer.scss
@@ -1,11 +1,7 @@
 //************************************************************************//
 // Example: @include prefixer(border-radius, $radii, webkit ms spec);
 //************************************************************************//
-$prefix-for-webkit:    true !default;
-$prefix-for-mozilla:   true !default;
-$prefix-for-microsoft: true !default;
-$prefix-for-opera:     true !default;
-$prefix-for-spec:      true !default; // required for keyframe mixin
+// Variables located in /settings/_prefixer.scss
 
 @mixin prefixer ($property, $value, $prefixes) {
   @each $prefix in $prefixes {
@@ -41,9 +37,9 @@ $prefix-for-spec:      true !default; // required for keyframe mixin
 }
 
 @mixin disable-prefix-for-all() {
-  $prefix-for-webkit:    false;
-  $prefix-for-mozilla:   false;
-  $prefix-for-microsoft: false;
-  $prefix-for-opera:     false;
-  $prefix-for-spec:      false;
+  $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;
 }
diff --git a/docs/_css/bourbon/addons/_retina-image.scss b/docs/_css/bourbon/addons/_retina-image.scss
index ed300715e43d..3995c1970a6c 100644
--- a/docs/_css/bourbon/addons/_retina-image.scss
+++ b/docs/_css/bourbon/addons/_retina-image.scss
@@ -1,28 +1,27 @@
-@mixin retina-image($filename, $background-size, $extension: png, $retina-filename: null, $asset-pipeline: false) {
+@mixin retina-image($filename, $background-size, $extension: png, $retina-filename: null, $retina-suffix: _2x, $asset-pipeline: $asset-pipeline) {
   @if $asset-pipeline {
-    background-image: image_url($filename + "." + $extension);
+    background-image: image-url("#{$filename}.#{$extension}");
   }
   @else {
-    background-image: url($filename + "." + $extension);
+    background-image:       url("#{$filename}.#{$extension}");
   }
 
   @include hidpi {
-
     @if $asset-pipeline {
       @if $retina-filename {
-        background-image: image_url($retina-filename + "." + $extension);
+        background-image: image-url("#{$retina-filename}.#{$extension}");
       }
       @else {
-        background-image: image_url($filename + "@2x" + "." + $extension);
+        background-image: image-url("#{$filename}#{$retina-suffix}.#{$extension}");
       }
     }
 
     @else {
       @if $retina-filename {
-        background-image: url($retina-filename + "." + $extension);
+        background-image: url("#{$retina-filename}.#{$extension}");
       }
       @else {
-        background-image: url($filename + "@2x" + "." + $extension);
+        background-image: url("#{$filename}#{$retina-suffix}.#{$extension}");
       }
     }
 
diff --git a/docs/_css/bourbon/addons/_size.scss b/docs/_css/bourbon/addons/_size.scss
index 342e41b79f11..a8653799a7ef 100644
--- a/docs/_css/bourbon/addons/_size.scss
+++ b/docs/_css/bourbon/addons/_size.scss
@@ -1,44 +1,16 @@
 @mixin size($size) {
-  @if length($size) == 1 {
-    @if $size == auto {
-      width:  $size;
-      height: $size;
-    }
+  $height: nth($size, 1);
+  $width: $height;
 
-    @else if unitless($size) {
-      width:  $size + px;
-      height: $size + px;
-    }
-
-    @else if not(unitless($size)) {
-      width:  $size;
-      height: $size;
-    }
-  }
-
-  // Width x Height
-  @if length($size) == 2 {
-    $width:  nth($size, 1);
+  @if length($size) > 1 {
     $height: nth($size, 2);
+  }
 
-    @if $width == auto {
-      width: $width;
-    }
-    @else if not(unitless($width)) {
-      width: $width;
-    }
-    @else if unitless($width) {
-      width: $width + px;
-    }
+  @if $height == auto or (type-of($height) == number and not unitless($height)) {
+    height: $height;
+  }
 
-    @if $height == auto {
-      height: $height;
-    }
-    @else if not(unitless($height)) {
-      height: $height;
-    }
-    @else if unitless($height) {
-      height: $height + px;
-    }
+  @if $width == auto or (type-of($width) == number and not unitless($width)) {
+    width: $width;
   }
 }
diff --git a/docs/_css/bourbon/addons/_timing-functions.scss b/docs/_css/bourbon/addons/_timing-functions.scss
index 51b241091490..5ecc6f9dcf93 100644
--- a/docs/_css/bourbon/addons/_timing-functions.scss
+++ b/docs/_css/bourbon/addons/_timing-functions.scss
@@ -1,5 +1,5 @@
 // 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
+// Timing functions are the same as demo'ed here: http://jqueryui.com/resources/demos/effect/easing.html
 
 // EASE IN
 $ease-in-quad:      cubic-bezier(0.550,  0.085, 0.680, 0.530);
diff --git a/docs/_css/bourbon/addons/_triangle.scss b/docs/_css/bourbon/addons/_triangle.scss
index 0e02aca2ca59..573954e41e33 100644
--- a/docs/_css/bourbon/addons/_triangle.scss
+++ b/docs/_css/bourbon/addons/_triangle.scss
@@ -2,44 +2,82 @@
   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) {
-    border-color: transparent;
-    border-style: solid;
-    border-width: $size / 2;
+
+    $width: $width / 2;
+    $height: if(length($size) > 1, $height, $height/2);
 
     @if $direction == up {
-      border-bottom-color: $color;
+      border-left: $width solid $background-color;
+      border-right: $width solid $background-color;
+      border-bottom: $height solid $foreground-color;
 
     } @else if $direction == right {
-      border-left-color:   $color;
+      border-top: $width solid $background-color;
+      border-bottom: $width solid $background-color;
+      border-left: $height solid $foreground-color;
 
     } @else if $direction == down {
-      border-top-color:    $color;
+      border-left: $width solid $background-color;
+      border-right: $width solid $background-color;
+      border-top: $height solid $foreground-color;
 
     } @else if $direction == left {
-      border-right-color:  $color;
+      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: $size solid $color;
+    border-top: $height solid $foreground-color;
 
     @if $direction == up-right {
-      border-left:  $size solid transparent;
+      border-left:  $width solid $background-color;
 
     } @else if $direction == up-left {
-      border-right: $size solid transparent;
+      border-right: $width solid $background-color;
     }
   }
 
   @else if ($direction == down-right) or ($direction == down-left) {
-    border-bottom: $size solid $color;
+    border-bottom: $height solid $foreground-color;
 
     @if $direction == down-right {
-      border-left:  $size solid transparent;
+      border-left:  $width solid $background-color;
 
     } @else if $direction == down-left {
-      border-right: $size solid transparent;
+      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;
+  }
 }
diff --git a/docs/_css/bourbon/addons/_word-wrap.scss b/docs/_css/bourbon/addons/_word-wrap.scss
new file mode 100644
index 000000000000..9734a597cd05
--- /dev/null
+++ b/docs/_css/bourbon/addons/_word-wrap.scss
@@ -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;
+  }
+}
diff --git a/docs/_css/bourbon/css3/_background-image.scss b/docs/_css/bourbon/css3/_background-image.scss
index 17016b91b9ce..6abe88be9a5e 100644
--- a/docs/_css/bourbon/css3/_background-image.scss
+++ b/docs/_css/bourbon/css3/_background-image.scss
@@ -4,45 +4,39 @@
 //************************************************************************//
 
 @mixin background-image($images...) {
-  background-image: _add-prefix($images, webkit);
-  background-image: _add-prefix($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);
 
-@function _add-prefix($images, $vendor: false) {
-  $images-prefixed: ();
-  $gradient-positions: false;
-  @for $i from 1 through length($images) {
-    $type: type-of(nth($images, $i)); // Get type of variable - List or String
-
-    // If variable is a list - Gradient
-    @if $type == list {
-      $gradient-type: nth(nth($images, $i), 1); // linear or radial
-      $gradient-pos: null;
-      $gradient-args: null;
-
-      @if ($gradient-type == linear) or ($gradient-type == radial) {
-        $gradient-pos:  nth(nth($images, $i), 2); // Get gradient position
-        $gradient-args: nth(nth($images, $i), 3); // Get actual gradient (red, blue)
+      @if $url-str == "url" {
+        $webkit-image: $image;
+          $spec-image: $image;
       }
-      @else {
-        $gradient-args: nth(nth($images, $i), 2); // Get actual gradient (red, blue)
+
+      @else if $gradient-type == "linear" {
+        $gradients: _linear-gradient-parser($image);
+        $webkit-image:  map-get($gradients, webkit-image);
+        $spec-image:    map-get($gradients, spec-image);
       }
 
-      $gradient-positions: _gradient-positions-parser($gradient-type, $gradient-pos);
-      $gradient: _render-gradients($gradient-positions, $gradient-args, $gradient-type, $vendor);
-      $images-prefixed: append($images-prefixed, $gradient, comma);
-    }
-    // If variable is a string - Image
-    @else if $type == string {
-      $images-prefixed: join($images-prefixed, nth($images, $i), comma);
+      @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);
   }
-  @return $images-prefixed;
-}
 
-//Examples:
-  //@include background-image(linear-gradient(top, orange, red));
-  //@include background-image(radial-gradient(50% 50%, cover circle, orange, red));
-  //@include background-image(url("/images/a.png"), linear-gradient(orange, red));
-  //@include background-image(url("image.png"), linear-gradient(orange, red), url("image.png"));
-  //@include background-image(linear-gradient(hsla(0, 100%, 100%, 0.25) 0%, hsla(0, 100%, 100%, 0.08) 50%, transparent 50%), linear-gradient(orange, red));
+  background-image: $webkit-images;
+  background-image: $spec-images;
+}
diff --git a/docs/_css/bourbon/css3/_background.scss b/docs/_css/bourbon/css3/_background.scss
index 766d5d32247f..9bce9308bf96 100644
--- a/docs/_css/bourbon/css3/_background.scss
+++ b/docs/_css/bourbon/css3/_background.scss
@@ -3,101 +3,53 @@
 // notation.
 //************************************************************************//
 
-@mixin background(
-  $background-1       , $background-2: false,
-  $background-3: false, $background-4: false,
-  $background-5: false, $background-6: false,
-  $background-7: false, $background-8: false,
-  $background-9: false, $background-10: false,
-  $fallback: false
-) {
-  $backgrounds: compact($background-1, $background-2,
-                $background-3, $background-4,
-                $background-5, $background-6,
-                $background-7, $background-8,
-                $background-9, $background-10);
+@mixin background($backgrounds...) {
+  $webkit-backgrounds: ();
+  $spec-backgrounds: ();
 
-  $fallback-color: false;
-  @if (type-of($fallback) == color) or ($fallback == "transparent") {
-    $fallback-color: $fallback;
-  }
-  @else {
-    $fallback-color: _extract-background-color($backgrounds);
-  }
-
-  @if $fallback-color {
-    background-color: $fallback-color;
-  }
-  background: _background-add-prefix($backgrounds, webkit);
-  background: _background-add-prefix($backgrounds);
-}
-
-@function _extract-background-color($backgrounds) {
-  $final-bg-layer: nth($backgrounds, length($backgrounds));
-  @if type-of($final-bg-layer) == list {
-    @for $i from 1 through length($final-bg-layer) {
-      $value: nth($final-bg-layer, $i);
-      @if type-of($value) == color {
-        @return $value;
-      }
-    }
-  }
-  @return false;
-}
-
-@function _background-add-prefix($backgrounds, $vendor: false) {
-  $backgrounds-prefixed: ();
+  @each $background in $backgrounds {
+    $webkit-background: ();
+    $spec-background: ();
+    $background-type: type-of($background);
 
-  @for $i from 1 through length($backgrounds) {
-    $shorthand: nth($backgrounds, $i); // Get member for current index
-    $type: type-of($shorthand); // Get type of variable - List (gradient) or String (image)
+    @if $background-type == string or list {
+      $background-str: if($background-type == list, nth($background, 1), $background);
 
-    // If shorthand is a list (gradient)
-    @if $type == list {
-      $first-member: nth($shorthand, 1); // Get first member of shorthand
+      $url-str:       str-slice($background-str, 0, 3);
+      $gradient-type: str-slice($background-str, 0, 6);
 
-      // Linear Gradient
-      @if index(linear radial, nth($first-member, 1)) {
-        $gradient-type: nth($first-member, 1); // linear || radial
-        $gradient-args:      false;
-        $gradient-positions: false;
-        $shorthand-start:    false;
-        @if type-of($first-member) == list { // Linear gradient plus additional shorthand values - lg(red,orange)repeat,...
-          $gradient-positions: nth($first-member, 2);
-          $gradient-args:      nth($first-member, 3);
-          $shorthand-start: 2;
-        }
-        @else { // Linear gradient only - lg(red,orange),...
-          $gradient-positions: nth($shorthand, 2);
-          $gradient-args:      nth($shorthand, 3); // Get gradient (red, blue)
-        }
+      @if $url-str == "url" {
+        $webkit-background: $background;
+          $spec-background: $background;
+      }
 
-        $gradient-positions: _gradient-positions-parser($gradient-type, $gradient-positions);
-        $gradient: _render-gradients($gradient-positions, $gradient-args, $gradient-type, $vendor);
+      @else if $gradient-type == "linear" {
+        $gradients: _linear-gradient-parser("#{$background}");
+        $webkit-background: map-get($gradients, webkit-image);
+        $spec-background:   map-get($gradients, spec-image);
+      }
 
-        // Append any additional shorthand args to gradient
-        @if $shorthand-start {
-          @for $j from $shorthand-start through length($shorthand) {
-            $gradient: join($gradient, nth($shorthand, $j), space);
-          }
-        }
-        $backgrounds-prefixed: append($backgrounds-prefixed, $gradient, comma);
+      @else if $gradient-type == "radial" {
+        $gradients: _radial-gradient-parser("#{$background}");
+        $webkit-background: map-get($gradients, webkit-image);
+        $spec-background:   map-get($gradients, spec-image);
       }
-      // Image with additional properties
+
       @else {
-        $backgrounds-prefixed: append($backgrounds-prefixed, $shorthand, comma);
+        $webkit-background: $background;
+          $spec-background: $background;
       }
     }
-    // If shorthand is a simple string (color or image)
-    @else if $type == string {
-      $backgrounds-prefixed: join($backgrounds-prefixed, $shorthand, comma);
+
+    @else {
+      $webkit-background: $background;
+        $spec-background: $background;
     }
+
+    $webkit-backgrounds: append($webkit-backgrounds, $webkit-background, comma);
+    $spec-backgrounds:   append($spec-backgrounds,   $spec-background,   comma);
   }
-  @return $backgrounds-prefixed;
-}
 
-//Examples:
-  //@include background(linear-gradient(top, orange, red));
-  //@include background(radial-gradient(circle at 40% 40%, orange, red));
-  //@include background(url("/images/a.png") no-repeat, linear-gradient(orange, red));
-  //@include background(url("image.png") center center, linear-gradient(orange, red), url("image.png"));
+  background: $webkit-backgrounds;
+  background: $spec-backgrounds;
+}
diff --git a/docs/_css/bourbon/css3/_border-image.scss b/docs/_css/bourbon/css3/_border-image.scss
index 1fff212df8aa..e338c2dcd245 100644
--- a/docs/_css/bourbon/css3/_border-image.scss
+++ b/docs/_css/bourbon/css3/_border-image.scss
@@ -1,48 +1,53 @@
-@mixin border-image($images) {
-  -webkit-border-image: _border-add-prefix($images, webkit);
-     -moz-border-image: _border-add-prefix($images, moz);
-       -o-border-image: _border-add-prefix($images, o);
-          border-image: _border-add-prefix($images);
-}
+@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);
+      }
 
-@function _border-add-prefix($images, $vendor: false) {
-  $border-image: null;
-  $images-type:  type-of(nth($images, 1));
-  $first-var:    nth(nth($images, 1), 1);          // Get type of Gradient (Linear || radial)
-
-  // If input is a gradient
-  @if $images-type == string {
-    @if ($first-var == "linear") or ($first-var == "radial") {
-      $gradient-type: nth($images, 1);           // Get type of gradient (linear || radial)
-      $gradient-pos:  nth($images, 2);           // Get gradient position
-      $gradient-args: nth($images, 3);           // Get actual gradient (red, blue)
-      $gradient-positions: _gradient-positions-parser($gradient-type, $gradient-pos);
-      $border-image:  _render-gradients($gradient-positions, $gradient-args, $gradient-type, $vendor);
+      @else {
+        $webkit-border: $border;
+          $spec-border: $border;
+      }
     }
-    // If input is a URL
+
     @else {
-      $border-image: $images;
-    }
-  }
-  // If input is gradient or url + additional args
-  @else if $images-type == list {
-    $type: type-of(nth($images, 1));           // Get type of variable - List or String
-
-    // If variable is a list - Gradient
-    @if $type == list {
-      $gradient: nth($images, 1);
-      $gradient-type: nth($gradient, 1);           // Get type of gradient (linear || radial)
-      $gradient-pos:  nth($gradient, 2);           // Get gradient position
-      $gradient-args: nth($gradient, 3);           // Get actual gradient (red, blue)
-      $gradient-positions: _gradient-positions-parser($gradient-type, $gradient-pos);
-      $border-image:  _render-gradients($gradient-positions, $gradient-args, $gradient-type, $vendor);
-
-      @for $i from 2 through length($images) {
-        $border-image: append($border-image, nth($images, $i));
-      }
+      $webkit-border: $border;
+        $spec-border: $border;
     }
+
+    $webkit-borders: append($webkit-borders, $webkit-border, comma);
+    $spec-borders:   append($spec-borders,   $spec-border,   comma);
   }
-  @return $border-image;
+
+  -webkit-border-image: $webkit-borders;
+          border-image: $spec-borders;
+          border-style: solid;
 }
 
 //Examples:
@@ -52,4 +57,3 @@
 // @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));
-
diff --git a/docs/_css/bourbon/css3/_calc.scss b/docs/_css/bourbon/css3/_calc.scss
new file mode 100644
index 000000000000..94d7e4cef3c7
--- /dev/null
+++ b/docs/_css/bourbon/css3/_calc.scss
@@ -0,0 +1,4 @@
+@mixin calc($property, $value) {
+  #{$property}: -webkit-calc(#{$value});
+  #{$property}:         calc(#{$value});
+}
diff --git a/docs/_css/bourbon/css3/_columns.scss b/docs/_css/bourbon/css3/_columns.scss
index 42274a4eebbb..96f601c1a81a 100644
--- a/docs/_css/bourbon/css3/_columns.scss
+++ b/docs/_css/bourbon/css3/_columns.scss
@@ -15,7 +15,7 @@
 
 @mixin column-fill($arg: auto) {
 // auto || length
-  @include prefixer(columns-fill, $arg, webkit moz spec);
+  @include prefixer(column-fill, $arg, webkit moz spec);
 }
 
 @mixin column-rule($arg) {
diff --git a/docs/_css/bourbon/css3/_filter.scss b/docs/_css/bourbon/css3/_filter.scss
new file mode 100644
index 000000000000..8560d77676dc
--- /dev/null
+++ b/docs/_css/bourbon/css3/_filter.scss
@@ -0,0 +1,5 @@
+@mixin filter($function: none) {
+  // <filter-function> [<filter-function]* | none
+  @include prefixer(filter, $function, webkit spec);
+}
+
diff --git a/docs/_css/bourbon/css3/_flex-box.scss b/docs/_css/bourbon/css3/_flex-box.scss
index 3e741e669661..b48476e87048 100644
--- a/docs/_css/bourbon/css3/_flex-box.scss
+++ b/docs/_css/bourbon/css3/_flex-box.scss
@@ -11,6 +11,7 @@
 @mixin display-box {
   display: -webkit-box;
   display: -moz-box;
+  display: -ms-flexbox; // IE 10
   display: box;
 }
 
@@ -22,16 +23,19 @@
 @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) {
@@ -41,12 +45,277 @@
 
 @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;
+}
+
diff --git a/docs/_css/bourbon/css3/_font-face.scss b/docs/_css/bourbon/css3/_font-face.scss
index 029ee8fe88c8..fbf483fde942 100644
--- a/docs/_css/bourbon/css3/_font-face.scss
+++ b/docs/_css/bourbon/css3/_font-face.scss
@@ -1,6 +1,6 @@
 // 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 ) {
+@mixin font-face($font-family, $file-path, $weight: normal, $style: normal, $asset-pipeline: $asset-pipeline) {
   @font-face {
     font-family: $font-family;
     font-weight: $weight;
diff --git a/docs/_css/bourbon/css3/_font-feature-settings.scss b/docs/_css/bourbon/css3/_font-feature-settings.scss
new file mode 100644
index 000000000000..8a9f536775d4
--- /dev/null
+++ b/docs/_css/bourbon/css3/_font-feature-settings.scss
@@ -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);
+}
\ No newline at end of file
diff --git a/docs/_css/bourbon/css3/_hyphens.scss b/docs/_css/bourbon/css3/_hyphens.scss
new file mode 100644
index 000000000000..5f8bddafa5a6
--- /dev/null
+++ b/docs/_css/bourbon/css3/_hyphens.scss
@@ -0,0 +1,4 @@
+@mixin hyphens($hyphenation: none) {
+// none | manual | auto
+  @include prefixer(hyphens, $hyphenation, webkit moz ms spec);
+}
\ No newline at end of file
diff --git a/docs/_css/bourbon/css3/_image-rendering.scss b/docs/_css/bourbon/css3/_image-rendering.scss
index abc7ee1aa47c..03432c637db0 100644
--- a/docs/_css/bourbon/css3/_image-rendering.scss
+++ b/docs/_css/bourbon/css3/_image-rendering.scss
@@ -1,10 +1,11 @@
-@mixin image-rendering ($mode:optimizeQuality) {
+@mixin image-rendering ($mode:auto) {
 
-  @if ($mode == optimize-contrast) {
+  @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: optimize-contrast;
+      image-rendering: crisp-edges;
   }
 
   @else {
diff --git a/docs/_css/bourbon/css3/_inline-block.scss b/docs/_css/bourbon/css3/_inline-block.scss
deleted file mode 100644
index 3272a0010b31..000000000000
--- a/docs/_css/bourbon/css3/_inline-block.scss
+++ /dev/null
@@ -1,8 +0,0 @@
-// Legacy support for inline-block in IE7 (maybe IE6)
-@mixin inline-block {
-  display: inline-block;
-  vertical-align: baseline;
-  zoom: 1;
-  *display: inline;
-  *vertical-align: auto;
-}
diff --git a/docs/_css/bourbon/css3/_keyframes.scss b/docs/_css/bourbon/css3/_keyframes.scss
index dca61f2a0748..e34616af964f 100644
--- a/docs/_css/bourbon/css3/_keyframes.scss
+++ b/docs/_css/bourbon/css3/_keyframes.scss
@@ -8,36 +8,28 @@
 
   @if $original-prefix-for-webkit {
     @include disable-prefix-for-all();
-    $prefix-for-webkit: true;
+    $prefix-for-webkit: true !global;
     @-webkit-keyframes #{$name} {
       @content;
     }
   }
   @if $original-prefix-for-mozilla {
     @include disable-prefix-for-all();
-    $prefix-for-mozilla: true;
+    $prefix-for-mozilla: true !global;
     @-moz-keyframes #{$name} {
       @content;
     }
   }
-  @if $original-prefix-for-opera {
-    @include disable-prefix-for-all();
-    $prefix-for-opera: true;
-    @-o-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 {
-    @include disable-prefix-for-all();
-    $prefix-for-spec: true;
     @keyframes #{$name} {
       @content;
     }
   }
-
-  $prefix-for-webkit:    $original-prefix-for-webkit;
-  $prefix-for-mozilla:   $original-prefix-for-mozilla;
-  $prefix-for-microsoft: $original-prefix-for-microsoft;
-  $prefix-for-opera:     $original-prefix-for-opera;
-  $prefix-for-spec:      $original-prefix-for-spec;
 }
diff --git a/docs/_css/bourbon/css3/_linear-gradient.scss b/docs/_css/bourbon/css3/_linear-gradient.scss
index d5b687b00cb3..e0da35128b96 100644
--- a/docs/_css/bourbon/css3/_linear-gradient.scss
+++ b/docs/_css/bourbon/css3/_linear-gradient.scss
@@ -1,11 +1,9 @@
-@mixin linear-gradient($pos, $G1, $G2: false,
-                       $G3: false, $G4: false,
-                       $G5: false, $G6: false,
-                       $G7: false, $G8: false,
-                       $G9: false, $G10: false,
-                       $deprecated-pos1: left top,
-                       $deprecated-pos2: left bottom,
-                       $fallback: false) {
+@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;
@@ -24,7 +22,7 @@
     $pos-spec:   nth($positions, 2);
   }
 
-  $full: compact($G1, $G2, $G3, $G4, $G5, $G6, $G7, $G8, $G9, $G10);
+  $full: $G1, $G2, $G3, $G4, $G5, $G6, $G7, $G8, $G9, $G10;
 
   // Set $G1 as the default fallback color
   $fallback-color: nth($G1, 1);
@@ -35,7 +33,6 @@
   }
 
   background-color: $fallback-color;
-  background-image: _deprecated-webkit-gradient(linear, $deprecated-pos1, $deprecated-pos2, $full); // Safari <= 5.0
   background-image: -webkit-linear-gradient($pos-degree $full); // Safari 5.1+, Chrome
   background-image: unquote("linear-gradient(#{$pos-spec}#{$full})");
 }
diff --git a/docs/_css/bourbon/css3/_placeholder.scss b/docs/_css/bourbon/css3/_placeholder.scss
index 22fd92b4f234..5682fd097a5a 100644
--- a/docs/_css/bourbon/css3/_placeholder.scss
+++ b/docs/_css/bourbon/css3/_placeholder.scss
@@ -1,29 +1,8 @@
-$placeholders: '-webkit-input-placeholder',
-               '-moz-placeholder',
-               '-ms-input-placeholder';
-
 @mixin placeholder {
+  $placeholders: ":-webkit-input" ":-moz" "-moz" "-ms-input";
   @each $placeholder in $placeholders {
-    @if $placeholder == "-webkit-input-placeholder" {
-      &::#{$placeholder} {
-        @content;
-      }
-    }
-    @else if $placeholder == "-moz-placeholder" {
-      // FF 18-
-      &:#{$placeholder} {
-        @content;
-      }
-
-      // FF 19+
-      &::#{$placeholder} {
-        @content;
-      }
-    }
-    @else {
-      &:#{$placeholder} {
-        @content;
-      }
+    &:#{$placeholder}-placeholder {
+      @content;
     }
   }
 }
diff --git a/docs/_css/bourbon/css3/_radial-gradient.scss b/docs/_css/bourbon/css3/_radial-gradient.scss
index e87b45a5a1a1..7a8c3765f16c 100644
--- a/docs/_css/bourbon/css3/_radial-gradient.scss
+++ b/docs/_css/bourbon/css3/_radial-gradient.scss
@@ -1,16 +1,12 @@
 // Requires Sass 3.1+
 @mixin radial-gradient($G1,        $G2,
-                       $G3: false, $G4: false,
-                       $G5: false, $G6: false,
-                       $G7: false, $G8: false,
-                       $G9: false, $G10: false,
+                       $G3: null, $G4: null,
+                       $G5: null, $G6: null,
+                       $G7: null, $G8: null,
+                       $G9: null, $G10: null,
                        $pos: null,
                        $shape-size: null,
-                       $deprecated-pos1: center center,
-                       $deprecated-pos2: center center,
-                       $deprecated-radius1: 0,
-                       $deprecated-radius2: 460,
-                       $fallback: false) {
+                       $fallback: null) {
 
   $data: _radial-arg-parser($G1, $G2, $pos, $shape-size);
   $G1:  nth($data, 1);
@@ -18,7 +14,7 @@
   $pos: nth($data, 3);
   $shape-size: nth($data, 4);
 
-  $full: compact($G1, $G2, $G3, $G4, $G5, $G6, $G7, $G8, $G9, $G10);
+  $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);
@@ -38,7 +34,6 @@
   $shape-size-spec: if(($shape-size-spec != ' ') and ($pos == null), '#{$shape-size-spec}, ', '#{$shape-size-spec} ');
 
   background-color:  $fallback-color;
-  background-image: _deprecated-webkit-gradient(radial, $deprecated-pos1, $deprecated-pos2, $full, $deprecated-radius1, $deprecated-radius2); // Safari <= 5.0 && IOS 4
   background-image: -webkit-radial-gradient(unquote(#{$pos}#{$shape-size}#{$full}));
   background-image: unquote("radial-gradient(#{$shape-size-spec}#{$pos-spec}#{$full})");
 }
diff --git a/docs/_css/bourbon/css3/_transition.scss b/docs/_css/bourbon/css3/_transition.scss
index 180cde6c8a44..5ad4c0aed238 100644
--- a/docs/_css/bourbon/css3/_transition.scss
+++ b/docs/_css/bourbon/css3/_transition.scss
@@ -1,16 +1,59 @@
 // Shorthand mixin. Supports multiple parentheses-deliminated values for each variable.
-// Example: @include transition (all, 2.0s, ease-in-out);
-//          @include transition ((opacity, width), (1.0s, 2.0s), ease-in, (0, 2s));
-//          @include transition ($property:(opacity, width), $delay: (1.5s, 2.5s));
+// 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...) {
-  @if length($properties) >= 1 {
-    @include prefixer(transition, $properties, webkit moz spec);
+  // 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 {
-    $properties: all 0.15s ease-out 0;
-    @include prefixer(transition, $properties, webkit moz spec);
+    @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);
+    }
   }
 }
 
diff --git a/docs/_css/bourbon/functions/_assign.scss b/docs/_css/bourbon/functions/_assign.scss
new file mode 100644
index 000000000000..9a1db93ef749
--- /dev/null
+++ b/docs/_css/bourbon/functions/_assign.scss
@@ -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;
+}
\ No newline at end of file
diff --git a/docs/_css/bourbon/functions/_color-lightness.scss b/docs/_css/bourbon/functions/_color-lightness.scss
new file mode 100644
index 000000000000..8c6df4e2564d
--- /dev/null
+++ b/docs/_css/bourbon/functions/_color-lightness.scss
@@ -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;
+}
diff --git a/docs/_css/bourbon/functions/_compact.scss b/docs/_css/bourbon/functions/_compact.scss
deleted file mode 100644
index 871500e33946..000000000000
--- a/docs/_css/bourbon/functions/_compact.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-// Remove `false` values from a list
-
-@function compact($vars...) {
-  $list: ();
-  @each $var in $vars {
-    @if $var {
-      $list: append($list, $var, comma);
-    }
-  }
-  @return $list;
-}
diff --git a/docs/_css/bourbon/functions/_golden-ratio.scss b/docs/_css/bourbon/functions/_golden-ratio.scss
new file mode 100644
index 000000000000..463d14a00c17
--- /dev/null
+++ b/docs/_css/bourbon/functions/_golden-ratio.scss
@@ -0,0 +1,3 @@
+@function golden-ratio($value, $increment) {
+  @return modular-scale($value, $increment, $golden)
+}
diff --git a/docs/_css/bourbon/functions/_linear-gradient.scss b/docs/_css/bourbon/functions/_linear-gradient.scss
deleted file mode 100644
index c8454d83f087..000000000000
--- a/docs/_css/bourbon/functions/_linear-gradient.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-@function linear-gradient($pos, $gradients...) {
-  $type: linear;
-  $pos-type: type-of(nth($pos, 1));
-
-  // if $pos doesn't exist, fix $gradient
-  @if ($pos-type == color) or (nth($pos, 1) == "transparent")  {
-    $gradients: zip($pos $gradients);
-    $pos: false;
-  }
-
-  $type-gradient: $type, $pos, $gradients;
-  @return $type-gradient;
-}
diff --git a/docs/_css/bourbon/functions/_modular-scale.scss b/docs/_css/bourbon/functions/_modular-scale.scss
index dddccb522416..afc59eb954de 100644
--- a/docs/_css/bourbon/functions/_modular-scale.scss
+++ b/docs/_css/bourbon/functions/_modular-scale.scss
@@ -1,40 +1,66 @@
+// Scaling Variables
+$golden:           1.618;
+$minor-second:     1.067;
+$major-second:     1.125;
+$minor-third:      1.2;
+$major-third:      1.25;
+$perfect-fourth:   1.333;
+$augmented-fourth: 1.414;
+$perfect-fifth:    1.5;
+$minor-sixth:      1.6;
+$major-sixth:      1.667;
+$minor-seventh:    1.778;
+$major-seventh:    1.875;
+$octave:           2;
+$major-tenth:      2.5;
+$major-eleventh:   2.667;
+$major-twelfth:    3;
+$double-octave:    4;
+
 @function modular-scale($value, $increment, $ratio) {
+  $v1: nth($value, 1);
+  $v2: nth($value, length($value));
+  $value: $v1;
+
+  // scale $v2 to just above $v1
+  @while $v2 > $v1 {
+    $v2: ($v2 / $ratio); // will be off-by-1
+  }
+  @while $v2 < $v1 {
+    $v2: ($v2 * $ratio); // will fix off-by-1
+  }
+
+  // check AFTER scaling $v2 to prevent double-counting corner-case
+  $double-stranded: $v2 > $v1;
+
   @if $increment > 0 {
     @for $i from 1 through $increment {
-      $value: ($value * $ratio);
+      @if $double-stranded and ($v1 * $ratio) > $v2 {
+        $value: $v2;
+        $v2: ($v2 * $ratio);
+      } @else {
+        $v1: ($v1 * $ratio);
+        $value: $v1;
+      }
     }
   }
 
   @if $increment < 0 {
-    $increment: abs($increment);
-    @for $i from 1 through $increment {
-      $value: ($value / $ratio);
+    // adjust $v2 to just below $v1
+    @if $double-stranded {
+      $v2: ($v2 / $ratio);
+    }
+
+    @for $i from $increment through -1 {
+      @if $double-stranded and ($v1 / $ratio) < $v2 {
+        $value: $v2;
+        $v2: ($v2 / $ratio);
+      } @else {
+        $v1: ($v1 / $ratio);
+        $value: $v1;
+      }
     }
   }
 
   @return $value;
 }
-
-//  div {
-//                     Increment Up GR with positive value
-//   font-size:        modular-scale(14px,   1, 1.618); // returns: 22.652px
-//
-//                     Increment Down GR with negative value
-//   font-size:        modular-scale(14px,  -1, 1.618); // returns: 8.653px
-//
-//                     Can be used with ceil(round up) or floor(round down)
-//   font-size: floor( modular-scale(14px, 1, 1.618) ); // returns: 22px
-//   font-size:  ceil( modular-scale(14px, 1, 1.618) ); // returns: 23px
-//  }
-//
-// modularscale.com
-
-@function golden-ratio($value, $increment) {
-  @return modular-scale($value, $increment, 1.618)
-}
-
-//  div {
-//    font-size: golden-ratio(14px, 1); // returns: 22.652px
-//  }
-//
-// goldenratiocalculator.com
diff --git a/docs/_css/bourbon/functions/_px-to-em.scss b/docs/_css/bourbon/functions/_px-to-em.scss
index 2eb1031c60e9..4832245e455b 100644
--- a/docs/_css/bourbon/functions/_px-to-em.scss
+++ b/docs/_css/bourbon/functions/_px-to-em.scss
@@ -2,7 +2,12 @@
 // eg. for a relational value of 12px write em(12) when the parent is 16px
 // if the parent is another value say 24px write em(12, 24)
 
-@function em($pxval, $base: 16) {
+@function em($pxval, $base: $em-base) {
+  @if not unitless($pxval) {
+      $pxval: strip-units($pxval);
+  }
+  @if not unitless($base) {
+      $base: strip-units($base);
+  }
   @return ($pxval / $base) * 1em;
 }
-
diff --git a/docs/_css/bourbon/functions/_px-to-rem.scss b/docs/_css/bourbon/functions/_px-to-rem.scss
new file mode 100644
index 000000000000..96b244e4cb1b
--- /dev/null
+++ b/docs/_css/bourbon/functions/_px-to-rem.scss
@@ -0,0 +1,15 @@
+// Convert pixels to rems
+// eg. for a relational value of 12px write rem(12)
+// Assumes $em-base is the font-size of <html>
+
+@function rem($pxval) {
+  @if not unitless($pxval) {
+      $pxval: strip-units($pxval);
+  }
+
+  $base: $em-base;
+  @if not unitless($base) {
+      $base: strip-units($base);
+  }
+  @return ($pxval / $base) * 1rem;
+}
diff --git a/docs/_css/bourbon/functions/_radial-gradient.scss b/docs/_css/bourbon/functions/_radial-gradient.scss
deleted file mode 100644
index 75584060d2af..000000000000
--- a/docs/_css/bourbon/functions/_radial-gradient.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-// This function is required and used by the background-image mixin.
-@function radial-gradient($G1,        $G2,
-                       $G3: false, $G4: false,
-                       $G5: false, $G6: false,
-                       $G7: false, $G8: false,
-                       $G9: false, $G10: false,
-                       $pos: null,
-                       $shape-size: 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);
-
-  $type: radial;
-  $gradient: compact($G1, $G2, $G3, $G4, $G5, $G6, $G7, $G8, $G9, $G10);
-
-  $type-gradient: $type, $shape-size $pos, $gradient;
-  @return $type-gradient;
-}
-
-
diff --git a/docs/_css/bourbon/functions/_strip-units.scss b/docs/_css/bourbon/functions/_strip-units.scss
new file mode 100644
index 000000000000..6afc6e601c03
--- /dev/null
+++ b/docs/_css/bourbon/functions/_strip-units.scss
@@ -0,0 +1,5 @@
+// Srtips the units from a value. e.g. 12px -> 12
+
+@function strip-units($val) {
+  @return ($val / ($val * 0 + 1));
+}
diff --git a/docs/_css/bourbon/functions/_unpack.scss b/docs/_css/bourbon/functions/_unpack.scss
new file mode 100644
index 000000000000..377596365c89
--- /dev/null
+++ b/docs/_css/bourbon/functions/_unpack.scss
@@ -0,0 +1,17 @@
+// Convert shorthand to the 4-value syntax
+
+@function unpack($shorthand) {
+  @if length($shorthand) == 1 {
+    @return nth($shorthand, 1) nth($shorthand, 1) nth($shorthand, 1) nth($shorthand, 1);
+  }
+  @else if length($shorthand) == 2 {
+    @return nth($shorthand, 1) nth($shorthand, 2) nth($shorthand, 1) nth($shorthand, 2);
+  }
+  @else if length($shorthand) == 3 {
+    @return nth($shorthand, 1) nth($shorthand, 2) nth($shorthand, 3) nth($shorthand, 2);
+  }
+  @else {
+    @return $shorthand;
+  }
+}
+
diff --git a/docs/_css/bourbon/helpers/_convert-units.scss b/docs/_css/bourbon/helpers/_convert-units.scss
new file mode 100644
index 000000000000..3443db397c22
--- /dev/null
+++ b/docs/_css/bourbon/helpers/_convert-units.scss
@@ -0,0 +1,15 @@
+//************************************************************************//
+// Helper function for str-to-num fn.
+// Source: http://sassmeister.com/gist/9647408
+//************************************************************************//
+@function _convert-units($number, $unit) {
+  $strings: 'px' 'cm' 'mm' '%' 'ch' 'pica' 'in' 'em' 'rem' 'pt' 'pc' 'ex' 'vw' 'vh' 'vmin' 'vmax', 'deg', 'rad', 'grad', 'turn';
+  $units:   1px  1cm  1mm  1%  1ch  1pica  1in  1em  1rem  1pt  1pc  1ex  1vw  1vh  1vmin  1vmax,  1deg,  1rad,  1grad, 1turn;
+  $index: index($strings, $unit);
+
+  @if not $index {
+    @warn "Unknown unit `#{$unit}`.";
+    @return false;
+  }
+  @return $number * nth($units, $index);
+}
diff --git a/docs/_css/bourbon/helpers/_deprecated-webkit-gradient.scss b/docs/_css/bourbon/helpers/_deprecated-webkit-gradient.scss
deleted file mode 100644
index cd17e2832daa..000000000000
--- a/docs/_css/bourbon/helpers/_deprecated-webkit-gradient.scss
+++ /dev/null
@@ -1,39 +0,0 @@
-// Render Deprecated Webkit Gradient - Linear || Radial
-//************************************************************************//
-@function _deprecated-webkit-gradient($type,
-                                     $deprecated-pos1, $deprecated-pos2,
-                                     $full,
-                                     $deprecated-radius1: false, $deprecated-radius2: false) {
-  $gradient-list: ();
-  $gradient: false;
-  $full-length: length($full);
-  $percentage: false;
-  $gradient-type: $type;
-
-  @for $i from 1 through $full-length {
-    $gradient: nth($full, $i);
-
-    @if length($gradient) == 2 {
-      $color-stop: color-stop(nth($gradient, 2), nth($gradient, 1));
-      $gradient-list: join($gradient-list, $color-stop, comma);
-    }
-    @else if $gradient != null {
-      @if $i == $full-length {
-        $percentage: 100%;
-      }
-      @else {
-        $percentage: ($i - 1) * (100 / ($full-length - 1)) + "%";
-      }
-      $color-stop: color-stop(unquote($percentage), $gradient);
-      $gradient-list: join($gradient-list, $color-stop, comma);
-    }
-  }
-
-  @if $type == radial {
-    $gradient: -webkit-gradient(radial, $deprecated-pos1, $deprecated-radius1, $deprecated-pos2, $deprecated-radius2, $gradient-list);
-  }
-  @else if $type == linear {
-    $gradient: -webkit-gradient(linear, $deprecated-pos1, $deprecated-pos2, $gradient-list);
-  }
-  @return $gradient;
-}
diff --git a/docs/_css/bourbon/helpers/_is-num.scss b/docs/_css/bourbon/helpers/_is-num.scss
new file mode 100644
index 000000000000..71459e1404ad
--- /dev/null
+++ b/docs/_css/bourbon/helpers/_is-num.scss
@@ -0,0 +1,8 @@
+//************************************************************************//
+// Helper for linear-gradient-parser
+//************************************************************************//
+@function _is-num($char) {
+  $values: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' 0 1 2 3 4 5 6 7 8 9;
+  $index: index($values, $char);
+  @return if($index, true, false);
+}
diff --git a/docs/_css/bourbon/helpers/_linear-angle-parser.scss b/docs/_css/bourbon/helpers/_linear-angle-parser.scss
new file mode 100644
index 000000000000..e0401ed8df12
--- /dev/null
+++ b/docs/_css/bourbon/helpers/_linear-angle-parser.scss
@@ -0,0 +1,25 @@
+// Private function for linear-gradient-parser
+@function _linear-angle-parser($image, $first-val, $prefix, $suffix) {
+  $offset: null;
+  $unit-short:  str-slice($first-val, str-length($first-val) - 2, str-length($first-val));
+  $unit-long:   str-slice($first-val, str-length($first-val) - 3, str-length($first-val));
+
+  @if ($unit-long == "grad") or
+      ($unit-long == "turn") {
+    $offset: if($unit-long == "grad", -100grad * 3, -0.75turn);
+  }
+
+  @else if ($unit-short == "deg") or
+           ($unit-short == "rad") {
+    $offset: if($unit-short == "deg", -90 * 3, 1.6rad);
+  }
+
+  @if $offset {
+    $num: _str-to-num($first-val);
+
+    @return (
+      webkit-image: -webkit- + $prefix + ($offset - $num) + $suffix,
+      spec-image: $image
+    );
+  }
+}
diff --git a/docs/_css/bourbon/helpers/_linear-gradient-parser.scss b/docs/_css/bourbon/helpers/_linear-gradient-parser.scss
new file mode 100644
index 000000000000..12bcdcda8fda
--- /dev/null
+++ b/docs/_css/bourbon/helpers/_linear-gradient-parser.scss
@@ -0,0 +1,41 @@
+@function _linear-gradient-parser($image) {
+  $image: unquote($image);
+  $gradients: ();
+  $start: str-index($image, "(");
+  $end: str-index($image, ",");
+  $first-val: str-slice($image, $start + 1, $end - 1);
+
+  $prefix: str-slice($image, 0, $start);
+  $suffix: str-slice($image, $end, str-length($image));
+
+  $has-multiple-vals: str-index($first-val, " ");
+  $has-single-position: unquote(_position-flipper($first-val) + "");
+  $has-angle: _is-num(str-slice($first-val, 0, 0));
+
+  @if $has-multiple-vals {
+    $gradients: _linear-side-corner-parser($image, $first-val, $prefix, $suffix, $has-multiple-vals);
+  }
+
+  @else if $has-single-position != "" {
+    $pos: unquote($has-single-position + "");
+
+    $gradients: (
+      webkit-image: -webkit- + $image,
+      spec-image: $prefix + "to " + $pos + $suffix
+    );
+  }
+
+  @else if $has-angle {
+    // Rotate degree for webkit
+    $gradients: _linear-angle-parser($image, $first-val, $prefix, $suffix);
+  }
+
+  @else {
+    $gradients: (
+      webkit-image: -webkit- + $image,
+      spec-image: $image
+    );
+  }
+
+  @return $gradients;
+}
diff --git a/docs/_css/bourbon/helpers/_linear-side-corner-parser.scss b/docs/_css/bourbon/helpers/_linear-side-corner-parser.scss
new file mode 100644
index 000000000000..86ad88fbb7d9
--- /dev/null
+++ b/docs/_css/bourbon/helpers/_linear-side-corner-parser.scss
@@ -0,0 +1,31 @@
+// Private function for linear-gradient-parser
+@function _linear-side-corner-parser($image, $first-val, $prefix, $suffix, $has-multiple-vals) {
+  $val-1: str-slice($first-val, 0, $has-multiple-vals - 1 );
+  $val-2: str-slice($first-val, $has-multiple-vals + 1, str-length($first-val));
+  $val-3: null;
+  $has-val-3: str-index($val-2, " ");
+
+  @if $has-val-3 {
+    $val-3: str-slice($val-2, $has-val-3 + 1, str-length($val-2));
+    $val-2: str-slice($val-2, 0, $has-val-3 - 1);
+  }
+
+  $pos: _position-flipper($val-1) _position-flipper($val-2) _position-flipper($val-3);
+  $pos: unquote($pos + "");
+
+  // Use old spec for webkit
+  @if $val-1 == "to" {
+    @return (
+      webkit-image: -webkit- + $prefix + $pos + $suffix,
+      spec-image: $image
+    );
+  }
+
+  // Bring the code up to spec
+  @else {
+    @return (
+      webkit-image: -webkit- + $image,
+      spec-image: $prefix + "to " + $pos + $suffix
+    );
+  }
+}
diff --git a/docs/_css/bourbon/helpers/_radial-arg-parser.scss b/docs/_css/bourbon/helpers/_radial-arg-parser.scss
index 3466695bdfb1..a3a3704af5e8 100644
--- a/docs/_css/bourbon/helpers/_radial-arg-parser.scss
+++ b/docs/_css/bourbon/helpers/_radial-arg-parser.scss
@@ -22,7 +22,7 @@
           $pos: $pos nth($value, $i);
         }
       }
-      $G1: false;
+      $G1: null;
     }
 
     // If not spec calculate correct values
@@ -38,7 +38,7 @@
           $pos: $value;
 
           @if $pos == $G1 {
-            $G1: false;
+            $G1: null;
           }
         }
 
@@ -55,11 +55,11 @@
           $shape-size: $value;
 
           @if $value == $G1 {
-            $G1: false;
+            $G1: null;
           }
 
           @else if $value == $G2 {
-            $G2: false;
+            $G2: null;
           }
         }
       }
diff --git a/docs/_css/bourbon/helpers/_radial-gradient-parser.scss b/docs/_css/bourbon/helpers/_radial-gradient-parser.scss
new file mode 100644
index 000000000000..6dde50f06400
--- /dev/null
+++ b/docs/_css/bourbon/helpers/_radial-gradient-parser.scss
@@ -0,0 +1,50 @@
+@function _radial-gradient-parser($image) {
+  $image: unquote($image);
+  $gradients: ();
+  $start: str-index($image, "(");
+  $end: str-index($image, ",");
+  $first-val: str-slice($image, $start + 1, $end - 1);
+
+  $prefix: str-slice($image, 0, $start);
+  $suffix: str-slice($image, $end, str-length($image));
+
+  $is-spec-syntax: str-index($first-val, "at");
+
+  @if $is-spec-syntax and $is-spec-syntax > 1 {
+    $keyword: str-slice($first-val, 1, $is-spec-syntax - 2);
+    $pos: str-slice($first-val, $is-spec-syntax + 3, str-length($first-val));
+    $pos: append($pos, $keyword, comma);
+
+    $gradients: (
+      webkit-image: -webkit- + $prefix + $pos + $suffix,
+      spec-image: $image
+    )
+  }
+
+  @else if $is-spec-syntax == 1 {
+    $pos: str-slice($first-val, $is-spec-syntax + 3, str-length($first-val));
+
+    $gradients: (
+      webkit-image: -webkit- + $prefix + $pos + $suffix,
+      spec-image: $image
+    )
+  }
+
+  @else if str-index($image, "cover") or str-index($image, "contain") {
+    @warn "Radial-gradient needs to be updated to conform to latest spec.";
+
+    $gradients: (
+      webkit-image: null,
+      spec-image: $image
+    )
+  }
+
+  @else {
+    $gradients: (
+      webkit-image: -webkit- + $image,
+      spec-image: $image
+    )
+  }
+
+  @return $gradients;
+}
diff --git a/docs/_css/bourbon/helpers/_str-to-num.scss b/docs/_css/bourbon/helpers/_str-to-num.scss
new file mode 100644
index 000000000000..b3d616824d3b
--- /dev/null
+++ b/docs/_css/bourbon/helpers/_str-to-num.scss
@@ -0,0 +1,50 @@
+//************************************************************************//
+// Helper function for linear/radial-gradient-parsers.
+// Source: http://sassmeister.com/gist/9647408
+//************************************************************************//
+@function _str-to-num($string) {
+  // Matrices
+  $strings: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9';
+  $numbers:  0   1   2   3   4   5   6   7   8   9;
+
+  // Result
+  $result: 0;
+  $divider: 0;
+  $minus: false;
+
+  // Looping through all characters
+  @for $i from 1 through str-length($string) {
+    $character: str-slice($string, $i, $i);
+    $index: index($strings, $character);
+
+    @if $character == '-' {
+      $minus: true;
+    }
+
+    @else if $character == '.' {
+      $divider: 1;
+    }
+
+    @else {
+      @if not $index {
+        $result: if($minus, $result * -1, $result);
+        @return _convert-units($result, str-slice($string, $i));
+      }
+
+      $number: nth($numbers, $index);
+
+      @if $divider == 0 {
+        $result: $result * 10;
+      }
+
+      @else {
+        // Move the decimal dot to the left
+        $divider: $divider * 10;
+        $number: $number / $divider;
+      }
+
+      $result: $result + $number;
+    }
+  }
+  @return if($minus, $result * -1, $result);
+}
diff --git a/docs/_css/bourbon/settings/_asset-pipeline.scss b/docs/_css/bourbon/settings/_asset-pipeline.scss
new file mode 100644
index 000000000000..d481a6afb162
--- /dev/null
+++ b/docs/_css/bourbon/settings/_asset-pipeline.scss
@@ -0,0 +1 @@
+$asset-pipeline: false !default;
diff --git a/docs/_css/bourbon/settings/_prefixer.scss b/docs/_css/bourbon/settings/_prefixer.scss
new file mode 100644
index 000000000000..ecab49fb5426
--- /dev/null
+++ b/docs/_css/bourbon/settings/_prefixer.scss
@@ -0,0 +1,6 @@
+// Variable settings for /addons/prefixer.scss
+$prefix-for-webkit:    true !default;
+$prefix-for-mozilla:   true !default;
+$prefix-for-microsoft: true !default;
+$prefix-for-opera:     true !default;
+$prefix-for-spec:      true !default; // required for keyframe mixin
diff --git a/docs/_css/bourbon/settings/_px-to-em.scss b/docs/_css/bourbon/settings/_px-to-em.scss
new file mode 100644
index 000000000000..f2f9a3e8dee1
--- /dev/null
+++ b/docs/_css/bourbon/settings/_px-to-em.scss
@@ -0,0 +1 @@
+$em-base: 16px !default;
diff --git a/docs/_data/acknowledgements.yml b/docs/_data/acknowledgements.yml
new file mode 100644
index 000000000000..89f112ef2bf7
--- /dev/null
+++ b/docs/_data/acknowledgements.yml
@@ -0,0 +1,179 @@
+---
+- - Adam Krebs
+  - Adam Solove
+  - Alan deLevie
+  - Alex Zelenskiy
+  - Alexander Solovyov
+  - Andreas Svensson
+  - Andrew Davey
+  - Andrew Zich
+  - Andrey Popp
+  - Anthony van der Hoorn
+  - Ayman Osman
+  - Ben Alpert
+  - Ben Newman
+  - Ben Ripkens
+  - Bill Fisher
+  - Bob Eagan
+  - Bojan Mihelac
+  - Brandon Bloom
+  - Brian Cooke
+  - Brian Kim
+  - Brian Reavis
+  - Brian Rue
+  - Cam Spiers
+  - Cassus Adam Banko
+  - Cat Chen
+  - Cheng Lou
+  - Christian Roman
+  - Christoph Pojer
+  - Christopher Monsanto
+  - Clay Allsopp
+  - Connor McSheffrey
+  - Dan Schafer
+  - Daniel Gasienica
+  - Daniel Lo Nigro
+  - Daniel Miladinov
+  - Daniel Schonfeld
+  - Danny Ben-David
+  - Daryl Lau
+  - David Hellsing
+  - David Hu
+  - Devon Blandin
+  - Dmitry Mazuro
+  - Dustin Getz
+  - Enguerran
+  - Eric Clemmons
+  - Eric Florenzano
+  - Eric Schoffstall
+  - Evan Coonrod
+  - Fabio M. Costa
+  - Felipe Oliveira Carvalho
+  - Felix Kling
+  - Fernando Correia
+  - François-Xavier Bois
+  - Fred Zhao
+  - G Scott Olson
+  - Geert Pasteels
+  - Geert-Jan Brits
+  - George A Sisco III
+  - Gilbert
+  - Greg Hurrell
+- - Greg Roodt
+  - Guangqiang Dong
+  - Guido Bouman
+  - Harry Hull
+  - Harshad Sabne
+  - Hendrik Swanepoel
+  - Hugo Jobling
+  - Ian Obermiller
+  - Ingvar Stepanyan
+  - Irae Carvalho
+  - Isaac Salier-Hellendag
+  - Ivan Kozik
+  - Jaime Mingo
+  - Jakub Malinowski
+  - James Brantly
+  - James Ide
+  - Jamie Wong
+  - Jamison Dance
+  - Jan Kassens
+  - Jared Forsyth
+  - Jason Bonta
+  - Jason Trill
+  - Jean Lauliac
+  - Jeff Barczewski
+  - Jeff Carpenter
+  - Jeff Morrison
+  - Jeff Welch
+  - Jeffrey Lin
+  - Jignesh Kakadiya
+  - Jing Chen
+  - Johannes Baiter
+  - John Watson
+  - Jon Beebe
+  - Jonas Enlund
+  - Jonas Gebhardt
+  - Jonathan Hsu
+  - Jordan Walke
+  - Josh Bassett
+  - Josh Duck
+  - Josh Yudaken
+  - Joshua Ma
+  - Julen Ruiz Aizpuru
+  - Jun Wu
+  - Juraj Dudak
+  - Justin Jaffray
+  - Karl Mikkelsen
+  - Keito Uchiyama
+  - Kit Randel
+  - Kunal Mehta
+  - Kyle Mathews
+  - Laurence Rowe
+  - Levi McCallum
+  - Lily
+  - Logan Allen
+  - Luigy Leon
+  - Marcin Kwiatkowski
+  - Marcin Szczepanski
+  - Mariano Desanze
+  - Mark Richardson
+  - Marshall Roch
+- - Martin Andert
+  - Martin Konicek
+  - Mathieu M-Gosselin
+  - Matt Harrison
+  - Matthew Dapena-Tretter
+  - Matti Nelimarkka
+  - Michal Srb
+  - Mouad Debbar
+  - Nadeesha Cabral
+  - Nate Hunzaker
+  - Nicholas Bergson-Shilcock
+  - Nick Gavalas
+  - Nick Thompson
+  - Niklas Boström
+  - Owen Coutts
+  - Pascal Hartig
+  - Paul O’Shannessy
+  - Paul Seiffert
+  - Paul Shen
+  - Pete Hunt
+  - Peter Cottle
+  - Petri Lievonen
+  - Pieter Vanderwerff
+  - Rajiv Tirumalareddy
+  - Randall Randall
+  - Ray
+  - Richard D. Worth
+  - Richard Feldman
+  - Richard Livesey
+  - Ryan Seddon
+  - Sahat Yalkabov
+  - Sander Spies
+  - Sean Kinsey
+  - Sebastian Markbåge
+  - Shaun Trennery
+  - Simon Højberg
+  - Stefan Dombrowski
+  - Stephen Murphy
+  - Stoyan Stefanov
+  - Sundeep Malladi
+  - Sven Helmberger
+  - Thomas Aylott
+  - Thomas Boyt
+  - Thomas Shaddox
+  - Thomas Shafer
+  - Timothy Yung
+  - Tom Haggie
+  - Tom Occhino
+  - Ville Immonen
+  - Vjeux
+  - Volkan Unsal
+  - Wayne Larsen
+  - Wincent Colaiuta
+  - Yuriy Dybskiy
+  - Yuval Dekel
+  - Zach Bruggeman
+  - davidxi
+  - imagentleman
diff --git a/docs/_layouts/redirect.html b/docs/_layouts/redirect.html
deleted file mode 100644
index c24f81748492..000000000000
--- a/docs/_layouts/redirect.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>
-<head>
-  <meta http-equiv="refresh" content="0; {{ page.destination }}">
-</head>
-<body></body>
-</html>
diff --git a/docs/_posts/2013-06-02-jsfiddle-integration.md b/docs/_posts/2013-06-02-jsfiddle-integration.md
index 3dbb0547737d..51b678d0cb1d 100644
--- a/docs/_posts/2013-06-02-jsfiddle-integration.md
+++ b/docs/_posts/2013-06-02-jsfiddle-integration.md
@@ -1,6 +1,5 @@
 ---
 title: JSFiddle Integration
-layout: post
 author: Christopher Chedeau
 ---
 
diff --git a/docs/_posts/2013-06-05-why-react.md b/docs/_posts/2013-06-05-why-react.md
index 07f02e1ef9a1..a459388c6868 100644
--- a/docs/_posts/2013-06-05-why-react.md
+++ b/docs/_posts/2013-06-05-why-react.md
@@ -1,6 +1,5 @@
 ---
 title: Why did we build React?
-layout: post
 author: Pete Hunt
 ---
 
diff --git a/docs/_posts/2013-06-12-community-roundup.md b/docs/_posts/2013-06-12-community-roundup.md
index d37e3b135147..0fea125af088 100644
--- a/docs/_posts/2013-06-12-community-roundup.md
+++ b/docs/_posts/2013-06-12-community-roundup.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #1"
-layout: post
 author: Vjeux
 ---
 
diff --git a/docs/_posts/2013-06-19-community-roundup-2.md b/docs/_posts/2013-06-19-community-roundup-2.md
index 57b322e1cc76..d04dc5071d15 100644
--- a/docs/_posts/2013-06-19-community-roundup-2.md
+++ b/docs/_posts/2013-06-19-community-roundup-2.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #2"
-layout: post
 author: Vjeux
 ---
 
diff --git a/docs/_posts/2013-06-21-react-v0-3-3.md b/docs/_posts/2013-06-21-react-v0-3-3.md
index 668c83de1a60..129ed7f844c3 100644
--- a/docs/_posts/2013-06-21-react-v0-3-3.md
+++ b/docs/_posts/2013-06-21-react-v0-3-3.md
@@ -1,6 +1,5 @@
 ---
 title: "React v0.3.3"
-layout: post
 author: Paul O'Shannessy
 ---
 
diff --git a/docs/_posts/2013-06-27-community-roundup-3.md b/docs/_posts/2013-06-27-community-roundup-3.md
index 7ee8a33116c7..91b35b6b628f 100644
--- a/docs/_posts/2013-06-27-community-roundup-3.md
+++ b/docs/_posts/2013-06-27-community-roundup-3.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #3"
-layout: post
 author: Vjeux
 ---
 
diff --git a/docs/_posts/2013-07-02-react-v0-4-autobind-by-default.md b/docs/_posts/2013-07-02-react-v0-4-autobind-by-default.md
index 9a5735f7007b..29e00b83a805 100644
--- a/docs/_posts/2013-07-02-react-v0-4-autobind-by-default.md
+++ b/docs/_posts/2013-07-02-react-v0-4-autobind-by-default.md
@@ -1,6 +1,5 @@
 ---
 title: "New in React v0.4: Autobind by Default"
-layout: post
 author: Paul O'Shannessy
 ---
 
diff --git a/docs/_posts/2013-07-03-community-roundup-4.md b/docs/_posts/2013-07-03-community-roundup-4.md
index 62e56c569df1..dd78baac4d76 100644
--- a/docs/_posts/2013-07-03-community-roundup-4.md
+++ b/docs/_posts/2013-07-03-community-roundup-4.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #4"
-layout: post
 author: Vjeux
 ---
 
diff --git a/docs/_posts/2013-07-11-react-v0-4-prop-validation-and-default-values.md b/docs/_posts/2013-07-11-react-v0-4-prop-validation-and-default-values.md
index b2898fd3f41f..5e1b191b3174 100644
--- a/docs/_posts/2013-07-11-react-v0-4-prop-validation-and-default-values.md
+++ b/docs/_posts/2013-07-11-react-v0-4-prop-validation-and-default-values.md
@@ -1,6 +1,5 @@
 ---
 title: "New in React v0.4: Prop Validation and Default Values"
-layout: post
 author: Paul O'Shannessy
 ---
 
diff --git a/docs/_posts/2013-07-17-react-v0-4-0.md b/docs/_posts/2013-07-17-react-v0-4-0.md
index b2a11fcdad06..a42b5e55ab7f 100644
--- a/docs/_posts/2013-07-17-react-v0-4-0.md
+++ b/docs/_posts/2013-07-17-react-v0-4-0.md
@@ -1,6 +1,5 @@
 ---
 title: "React v0.4.0"
-layout: post
 author: Paul O'Shannessy
 ---
 
diff --git a/docs/_posts/2013-07-23-community-roundup-5.md b/docs/_posts/2013-07-23-community-roundup-5.md
index 87aa8338e047..ff39aa06b5e6 100644
--- a/docs/_posts/2013-07-23-community-roundup-5.md
+++ b/docs/_posts/2013-07-23-community-roundup-5.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #5"
-layout: post
 author: Vjeux
 ---
 
diff --git a/docs/_posts/2013-07-26-react-v0-4-1.md b/docs/_posts/2013-07-26-react-v0-4-1.md
index 7111e0e80ef4..96c68c3321e6 100644
--- a/docs/_posts/2013-07-26-react-v0-4-1.md
+++ b/docs/_posts/2013-07-26-react-v0-4-1.md
@@ -1,6 +1,5 @@
 ---
 title: "React v0.4.1"
-layout: post
 author: Paul O'Shannessy
 ---
 
diff --git a/docs/_posts/2013-07-30-use-react-and-jsx-in-ruby-on-rails.md b/docs/_posts/2013-07-30-use-react-and-jsx-in-ruby-on-rails.md
index 608da381ced2..c8ccc4a6d9df 100644
--- a/docs/_posts/2013-07-30-use-react-and-jsx-in-ruby-on-rails.md
+++ b/docs/_posts/2013-07-30-use-react-and-jsx-in-ruby-on-rails.md
@@ -1,6 +1,5 @@
 ---
 title: "Use React and JSX in Ruby on Rails"
-layout: post
 author: Paul O'Shannessy
 ---
 
diff --git a/docs/_posts/2013-08-05-community-roundup-6.md b/docs/_posts/2013-08-05-community-roundup-6.md
index a038136b5653..9dec9e03997d 100644
--- a/docs/_posts/2013-08-05-community-roundup-6.md
+++ b/docs/_posts/2013-08-05-community-roundup-6.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #6"
-layout: post
 author: Vjeux
 ---
 
@@ -58,7 +57,7 @@ este.demos.react.todoApp = este.react.create (`/** @lends {React.ReactComponent.
 [Zaim Bakar](http://zaim.github.io/) shared his boilerplate to get started with Stylus CSS processor.
 
 > This is my boilerplate React project using Grunt as the build tool, and Stylus as my CSS preprocessor.
-> 
+>
 > - Very minimal HTML boilerplate
 > - Uses Stylus, with nib included
 > - Uses two build targets:
diff --git a/docs/_posts/2013-08-19-use-react-and-jsx-in-python-applications.md b/docs/_posts/2013-08-19-use-react-and-jsx-in-python-applications.md
index 8dd9ac6f6b90..825ecaf40463 100644
--- a/docs/_posts/2013-08-19-use-react-and-jsx-in-python-applications.md
+++ b/docs/_posts/2013-08-19-use-react-and-jsx-in-python-applications.md
@@ -1,6 +1,5 @@
 ---
 title: "Use React and JSX in Python Applications"
-layout: post
 author: Kunal Mehta
 ---
 
diff --git a/docs/_posts/2013-08-26-community-roundup-7.md b/docs/_posts/2013-08-26-community-roundup-7.md
index b75b02c25f96..86d2ca26a9a3 100644
--- a/docs/_posts/2013-08-26-community-roundup-7.md
+++ b/docs/_posts/2013-08-26-community-roundup-7.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #7"
-layout: post
 author: Vjeux
 ---
 
diff --git a/docs/_posts/2013-09-24-community-roundup-8.md b/docs/_posts/2013-09-24-community-roundup-8.md
index eb7c52f725d7..b0df78b32029 100644
--- a/docs/_posts/2013-09-24-community-roundup-8.md
+++ b/docs/_posts/2013-09-24-community-roundup-8.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #8"
-layout: post
 author: Vjeux
 ---
 
diff --git a/docs/_posts/2013-10-16-react-v0.5.0.md b/docs/_posts/2013-10-16-react-v0.5.0.md
index aab495f118be..cf327b02df02 100644
--- a/docs/_posts/2013-10-16-react-v0.5.0.md
+++ b/docs/_posts/2013-10-16-react-v0.5.0.md
@@ -1,6 +1,5 @@
 ---
 title: "React v0.5"
-layout: post
 author: Paul O'Shannessy
 ---
 
diff --git a/docs/_posts/2013-10-29-react-v0-5-1.md b/docs/_posts/2013-10-29-react-v0-5-1.md
index dcc8a2e3d885..672870b8e0ea 100644
--- a/docs/_posts/2013-10-29-react-v0-5-1.md
+++ b/docs/_posts/2013-10-29-react-v0-5-1.md
@@ -1,6 +1,5 @@
 ---
 title: "React v0.5.1"
-layout: post
 author: Paul O'Shannessy
 ---
 
diff --git a/docs/_posts/2013-10-3-community-roundup-9.md b/docs/_posts/2013-10-3-community-roundup-9.md
index 46accfa62c50..888d984a86e0 100644
--- a/docs/_posts/2013-10-3-community-roundup-9.md
+++ b/docs/_posts/2013-10-3-community-roundup-9.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #9"
-layout: post
 author: Vjeux
 ---
 
diff --git a/docs/_posts/2013-11-05-thinking-in-react.md b/docs/_posts/2013-11-05-thinking-in-react.md
index aa2fb4b43901..f00aaa30b2a7 100644
--- a/docs/_posts/2013-11-05-thinking-in-react.md
+++ b/docs/_posts/2013-11-05-thinking-in-react.md
@@ -1,6 +1,5 @@
 ---
 title: "Thinking in React"
-layout: post
 author: Pete Hunt
 ---
 
diff --git a/docs/_posts/2013-11-06-community-roundup-10.md b/docs/_posts/2013-11-06-community-roundup-10.md
index fa83a4745cb2..f423fa817080 100644
--- a/docs/_posts/2013-11-06-community-roundup-10.md
+++ b/docs/_posts/2013-11-06-community-roundup-10.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #10"
-layout: post
 author: Vjeux
 ---
 
diff --git a/docs/_posts/2013-11-18-community-roundup-11.md b/docs/_posts/2013-11-18-community-roundup-11.md
index b7779b3bd46a..0256e32317f0 100644
--- a/docs/_posts/2013-11-18-community-roundup-11.md
+++ b/docs/_posts/2013-11-18-community-roundup-11.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #11"
-layout: post
 author: Vjeux
 ---
 
@@ -89,4 +88,4 @@ This round-up is the proof that React has taken off from its Facebook's root: it
 ## Random Tweet
 
 <img src="/react/img/blog/steve_reverse.gif" style="float: right;" />
-<div style="width: 320px;"><blockquote class="twitter-tweet"><p>I think this reversed gif of Steve Urkel best describes my changing emotions towards the React Lib <a href="http://t.co/JoX0XqSXX3">http://t.co/JoX0XqSXX3</a></p>&mdash; Ryan Seddon (@ryanseddon) <a href="https://twitter.com/ryanseddon/statuses/398572848802852864">November 7, 2013</a></blockquote></div>
\ No newline at end of file
+<div style="width: 320px;"><blockquote class="twitter-tweet"><p>I think this reversed gif of Steve Urkel best describes my changing emotions towards the React Lib <a href="http://t.co/JoX0XqSXX3">http://t.co/JoX0XqSXX3</a></p>&mdash; Ryan Seddon (@ryanseddon) <a href="https://twitter.com/ryanseddon/statuses/398572848802852864">November 7, 2013</a></blockquote></div>
diff --git a/docs/_posts/2013-12-18-react-v0.5.2-v0.4.2.md b/docs/_posts/2013-12-18-react-v0.5.2-v0.4.2.md
index f59462f2399e..3c0105dc504c 100644
--- a/docs/_posts/2013-12-18-react-v0.5.2-v0.4.2.md
+++ b/docs/_posts/2013-12-18-react-v0.5.2-v0.4.2.md
@@ -1,6 +1,5 @@
 ---
 title: "React v0.5.2, v0.4.2"
-layout: post
 author: Paul O'Shannessy
 ---
 
diff --git a/docs/_posts/2013-12-19-react-v0.8.0.md b/docs/_posts/2013-12-19-react-v0.8.0.md
index 7c32d1de391b..c7a6fe6381e0 100644
--- a/docs/_posts/2013-12-19-react-v0.8.0.md
+++ b/docs/_posts/2013-12-19-react-v0.8.0.md
@@ -1,6 +1,5 @@
 ---
 title: "React v0.8"
-layout: post
 author: Paul O'Shannessy
 ---
 
diff --git a/docs/_posts/2013-12-23-community-roundup-12.md b/docs/_posts/2013-12-23-community-roundup-12.md
index 4710cb94ac05..7def798cfca4 100644
--- a/docs/_posts/2013-12-23-community-roundup-12.md
+++ b/docs/_posts/2013-12-23-community-roundup-12.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #12"
-layout: post
 author: Vjeux
 ---
 
diff --git a/docs/_posts/2013-12-30-community-roundup-13.md b/docs/_posts/2013-12-30-community-roundup-13.md
index 211974703121..d647edc15910 100644
--- a/docs/_posts/2013-12-30-community-roundup-13.md
+++ b/docs/_posts/2013-12-30-community-roundup-13.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #13"
-layout: post
 author: Vjeux
 ---
 
diff --git a/docs/_posts/2014-01-02-react-chrome-developer-tools.md b/docs/_posts/2014-01-02-react-chrome-developer-tools.md
index 69265f5ddeaa..b395fa6692ca 100644
--- a/docs/_posts/2014-01-02-react-chrome-developer-tools.md
+++ b/docs/_posts/2014-01-02-react-chrome-developer-tools.md
@@ -1,6 +1,5 @@
 ---
 title: "React Chrome Developer Tools"
-layout: post
 author: Sebastian Markbåge
 ---
 
diff --git a/docs/_posts/2014-01-06-community-roundup-14.md b/docs/_posts/2014-01-06-community-roundup-14.md
index d440daeaf249..a42c645cefb0 100644
--- a/docs/_posts/2014-01-06-community-roundup-14.md
+++ b/docs/_posts/2014-01-06-community-roundup-14.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #14"
-layout: post
 author: Vjeux
 ---
 
diff --git a/docs/_posts/2014-02-05-community-roundup-15.md b/docs/_posts/2014-02-05-community-roundup-15.md
index 8e0d4a1605f2..30bc07a829f5 100644
--- a/docs/_posts/2014-02-05-community-roundup-15.md
+++ b/docs/_posts/2014-02-05-community-roundup-15.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #15"
-layout: post
 author: Jonas Gebhardt
 ---
 
diff --git a/docs/_posts/2014-02-15-community-roundup-16.md b/docs/_posts/2014-02-15-community-roundup-16.md
index 02ec66cc41b5..8486e8e8479e 100644
--- a/docs/_posts/2014-02-15-community-roundup-16.md
+++ b/docs/_posts/2014-02-15-community-roundup-16.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #16"
-layout: post
 author: Jonas Gebhardt
 ---
 
diff --git a/docs/_posts/2014-02-16-react-v0.9-rc1.md b/docs/_posts/2014-02-16-react-v0.9-rc1.md
index bee75e5fb2f1..6e7588bca5ca 100644
--- a/docs/_posts/2014-02-16-react-v0.9-rc1.md
+++ b/docs/_posts/2014-02-16-react-v0.9-rc1.md
@@ -1,6 +1,5 @@
 ---
 title: React v0.9 RC
-layout: post
 author: Ben Alpert
 ---
 
diff --git a/docs/_posts/2014-02-20-react-v0.9.md b/docs/_posts/2014-02-20-react-v0.9.md
index 95c6aa9e1d07..f44cab8d285c 100644
--- a/docs/_posts/2014-02-20-react-v0.9.md
+++ b/docs/_posts/2014-02-20-react-v0.9.md
@@ -1,6 +1,5 @@
 ---
 title: React v0.9
-layout: post
 author: Ben Alpert
 ---
 
diff --git a/docs/_posts/2014-02-24-community-roundup-17.md b/docs/_posts/2014-02-24-community-roundup-17.md
index ec2d98f8a3ed..4d7aae926453 100644
--- a/docs/_posts/2014-02-24-community-roundup-17.md
+++ b/docs/_posts/2014-02-24-community-roundup-17.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #17"
-layout: post
 author: Jonas Gebhardt
 ---
 
diff --git a/docs/_posts/2014-03-14-community-roundup-18.md b/docs/_posts/2014-03-14-community-roundup-18.md
index 275c8fc307db..080537bf8fab 100644
--- a/docs/_posts/2014-03-14-community-roundup-18.md
+++ b/docs/_posts/2014-03-14-community-roundup-18.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #18"
-layout: post
 author: Jonas Gebhardt
 ---
 
diff --git a/docs/_posts/2014-03-19-react-v0.10-rc1.md b/docs/_posts/2014-03-19-react-v0.10-rc1.md
index 92cd75eb9168..d55380d4cc55 100644
--- a/docs/_posts/2014-03-19-react-v0.10-rc1.md
+++ b/docs/_posts/2014-03-19-react-v0.10-rc1.md
@@ -1,6 +1,5 @@
 ---
 title: React v0.10 RC
-layout: post
 author: Paul O’Shannessy
 ---
 
diff --git a/docs/_posts/2014-03-21-react-v0.10.md b/docs/_posts/2014-03-21-react-v0.10.md
index 0bcda6277c83..fe816591c7ef 100644
--- a/docs/_posts/2014-03-21-react-v0.10.md
+++ b/docs/_posts/2014-03-21-react-v0.10.md
@@ -1,6 +1,5 @@
 ---
 title: React v0.10
-layout: post
 author: Paul O’Shannessy
 ---
 
diff --git a/docs/_posts/2014-03-28-the-road-to-1.0.md b/docs/_posts/2014-03-28-the-road-to-1.0.md
index bf21a7659b39..341506ad5817 100644
--- a/docs/_posts/2014-03-28-the-road-to-1.0.md
+++ b/docs/_posts/2014-03-28-the-road-to-1.0.md
@@ -1,6 +1,5 @@
 ---
 title: The Road to 1.0
-layout: post
 author: Paul O'Shannessy
 ---
 
diff --git a/docs/_posts/2014-04-04-reactnet.md b/docs/_posts/2014-04-04-reactnet.md
index 84f252c32dde..9aa4efe3a727 100644
--- a/docs/_posts/2014-04-04-reactnet.md
+++ b/docs/_posts/2014-04-04-reactnet.md
@@ -1,6 +1,5 @@
 ---
 title: "Use React and JSX in ASP.NET MVC"
-layout: post
 author: Daniel Lo Nigro
 ---
 
diff --git a/docs/_posts/2014-05-06-flux.md b/docs/_posts/2014-05-06-flux.md
index 688c5c450538..afa6a6f4b5b0 100644
--- a/docs/_posts/2014-05-06-flux.md
+++ b/docs/_posts/2014-05-06-flux.md
@@ -1,6 +1,5 @@
 ---
 title: "Flux: An Application Architecture for React"
-layout: post
 author: Bill Fisher and Jing Chen
 ---
 
diff --git a/docs/_posts/2014-05-29-one-year-of-open-source-react.md b/docs/_posts/2014-05-29-one-year-of-open-source-react.md
index 3447da00eb57..7d44e1eb291b 100644
--- a/docs/_posts/2014-05-29-one-year-of-open-source-react.md
+++ b/docs/_posts/2014-05-29-one-year-of-open-source-react.md
@@ -1,6 +1,5 @@
 ---
 title: "One Year of Open-Source React"
-layout: post
 author: Cheng Lou
 ---
 
diff --git a/docs/_posts/2014-06-27-community-roundup-19.md b/docs/_posts/2014-06-27-community-roundup-19.md
index 165a72cdf031..f50b7cc5f5bb 100644
--- a/docs/_posts/2014-06-27-community-roundup-19.md
+++ b/docs/_posts/2014-06-27-community-roundup-19.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #19"
-layout: post
 author: Cheng Lou
 ---
 
diff --git a/docs/_posts/2014-07-13-react-v0.11-rc1.md b/docs/_posts/2014-07-13-react-v0.11-rc1.md
index 17417196a6f5..cc1b4567c49f 100644
--- a/docs/_posts/2014-07-13-react-v0.11-rc1.md
+++ b/docs/_posts/2014-07-13-react-v0.11-rc1.md
@@ -1,6 +1,5 @@
 ---
 title: React v0.11 RC
-layout: post
 author: Paul O’Shannessy
 ---
 
diff --git a/docs/_posts/2014-07-17-react-v0.11.md b/docs/_posts/2014-07-17-react-v0.11.md
index 10e305c727ff..ced687424568 100644
--- a/docs/_posts/2014-07-17-react-v0.11.md
+++ b/docs/_posts/2014-07-17-react-v0.11.md
@@ -1,6 +1,5 @@
 ---
 title: React v0.11
-layout: post
 author: Paul O’Shannessy
 ---
 
diff --git a/docs/_posts/2014-07-25-react-v0.11.1.md b/docs/_posts/2014-07-25-react-v0.11.1.md
index c241b3361eeb..ce1c09935aa4 100644
--- a/docs/_posts/2014-07-25-react-v0.11.1.md
+++ b/docs/_posts/2014-07-25-react-v0.11.1.md
@@ -1,6 +1,5 @@
 ---
 title: React v0.11.1
-layout: post
 author: Paul O’Shannessy
 ---
 
diff --git a/docs/_posts/2014-07-28-community-roundup-20.md b/docs/_posts/2014-07-28-community-roundup-20.md
index 5c46bc16186f..0b4cfdf96985 100644
--- a/docs/_posts/2014-07-28-community-roundup-20.md
+++ b/docs/_posts/2014-07-28-community-roundup-20.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #20"
-layout: post
 author: Lou Husson
 ---
 
@@ -52,12 +51,12 @@ React.renderComponent(
 
 ## Thinking and Learning React
 
-Josephine Hall, working at Icelab, used React to write a mobile-focused application. She wrote a blog post [“Thinking and Learning React.js”](http://icelab.com.au/articles/thinking-and-learning-reactjs/) to share her experience with elements they had to use. You'll learn about routing, event dispatch, touchable components, and basic animations. 
+Josephine Hall, working at Icelab, used React to write a mobile-focused application. She wrote a blog post [“Thinking and Learning React.js”](http://icelab.com.au/articles/thinking-and-learning-reactjs/) to share her experience with elements they had to use. You'll learn about routing, event dispatch, touchable components, and basic animations.
 
 
 ## London React Meetup
 
-If you missed the last [London React Meetup](http://www.meetup.com/London-React-User-Group/events/191406572/), the video is available, with lots of great content. 
+If you missed the last [London React Meetup](http://www.meetup.com/London-React-User-Group/events/191406572/), the video is available, with lots of great content.
 
 - What's new in React 0.11 and how to improve performance by guaranteeing immutability
 - State handling in React with Morearty.JS
@@ -101,7 +100,7 @@ var Foo = React.createClass({
     this.setState({scriptLoading: false, scriptLoadError: true});
   },
   render: function() {
-    var message = 
+    var message =
       this.state.scriptLoading ? 'Loading script...' :
       this.state.scriptLoadError ? 'Loading failed' :
       'Loading succeeded';
diff --git a/docs/_posts/2014-07-30-flux-actions-and-the-dispatcher.md b/docs/_posts/2014-07-30-flux-actions-and-the-dispatcher.md
index 7075b900dcc5..5c6ec2fc58a6 100644
--- a/docs/_posts/2014-07-30-flux-actions-and-the-dispatcher.md
+++ b/docs/_posts/2014-07-30-flux-actions-and-the-dispatcher.md
@@ -1,6 +1,5 @@
 ---
 title: "Flux: Actions and the Dispatcher"
-layout: post
 author: Bill Fisher
 ---
 
@@ -30,7 +29,7 @@ Letting the stores update themselves eliminates many entanglements typically fou
 Why We Need a Dispatcher
 ------------------------
 
-As an application grows, dependencies across different stores are a near certainty. Store A will inevitably need Store B to update itself first, so that Store A can know how to update itself. We need the dispatcher to be able to invoke the callback for Store B, and finish that callback, before moving forward with Store A. To declaratively assert this dependency, a store needs to be able to say to the dispatcher, "I need to wait for Store B to finish processing this action." The dispatcher provides this functionality through its waitFor() method.  
+As an application grows, dependencies across different stores are a near certainty. Store A will inevitably need Store B to update itself first, so that Store A can know how to update itself. We need the dispatcher to be able to invoke the callback for Store B, and finish that callback, before moving forward with Store A. To declaratively assert this dependency, a store needs to be able to say to the dispatcher, "I need to wait for Store B to finish processing this action." The dispatcher provides this functionality through its waitFor() method.
 
 The dispatch() method provides a simple, synchronous iteration through the callbacks, invoking each in turn. When waitFor() is encountered within one of the callbacks, execution of that callback stops and waitFor() provides us with a new iteration cycle over the dependencies. After the entire set of dependencies have been fulfilled, the original callback then continues to execute.
 
diff --git a/docs/_posts/2014-08-03-community-roundup-21.md b/docs/_posts/2014-08-03-community-roundup-21.md
index 9b1afe0c9a57..3c4bb3c2135f 100644
--- a/docs/_posts/2014-08-03-community-roundup-21.md
+++ b/docs/_posts/2014-08-03-community-roundup-21.md
@@ -1,6 +1,5 @@
 ---
 title: "Community Round-up #21"
-layout: post
 author: Lou Husson
 ---
 
diff --git a/docs/acknowledgements.md b/docs/acknowledgements.md
index 298b4e57df56..cf5495156028 100644
--- a/docs/acknowledgements.md
+++ b/docs/acknowledgements.md
@@ -7,190 +7,13 @@ layout: single
 We'd like to thank all of our contributors:
 
 <div class="three-column">
+  {% for author_col in site.data.acknowledgements %}
   <ul>
-    <li>Adam Krebs</li>
-    <li>Adam Solove</li>
-    <li>Alan deLevie</li>
-    <li>Alex Zelenskiy</li>
-    <li>Alexander Solovyov</li>
-    <li>Andreas Svensson</li>
-    <li>Andrew Davey</li>
-    <li>Andrew Zich</li>
-    <li>Andrey Popp</li>
-    <li>Anthony van der Hoorn</li>
-    <li>Ayman Osman</li>
-    <li>Ben Alpert</li>
-    <li>Ben Newman</li>
-    <li>Ben Ripkens</li>
-    <li>Bill Fisher</li>
-    <li>Bob Eagan</li>
-    <li>Bojan Mihelac</li>
-    <li>Brandon Bloom</li>
-    <li>Brian Cooke</li>
-    <li>Brian Kim</li>
-    <li>Brian Reavis</li>
-    <li>Brian Rue</li>
-    <li>Cam Spiers</li>
-    <li>Cassus Adam Banko</li>
-    <li>Cat Chen</li>
-    <li>Cheng Lou</li>
-    <li>Christian Roman</li>
-    <li>Christoph Pojer</li>
-    <li>Christopher Monsanto</li>
-    <li>Clay Allsopp</li>
-    <li>Connor McSheffrey</li>
-    <li>Dan Schafer</li>
-    <li>Daniel Gasienica</li>
-    <li>Daniel Lo Nigro</li>
-    <li>Daniel Miladinov</li>
-    <li>Daniel Schonfeld</li>
-    <li>Danny Ben-David</li>
-    <li>Daryl Lau</li>
-    <li>David Hellsing</li>
-    <li>David Hu</li>
-    <li>Devon Blandin</li>
-    <li>Dmitry Mazuro</li>
-    <li>Dustin Getz</li>
-    <li>Enguerran</li>
-    <li>Eric Clemmons</li>
-    <li>Eric Florenzano</li>
-    <li>Eric Schoffstall</li>
-    <li>Evan Coonrod</li>
-    <li>Fabio M. Costa</li>
-    <li>Felipe Oliveira Carvalho</li>
-    <li>Felix Kling</li>
-    <li>Fernando Correia</li>
-    <li>François-Xavier Bois</li>
-    <li>Fred Zhao</li>
-    <li>G Scott Olson</li>
-    <li>Geert Pasteels</li>
-    <li>Geert-Jan Brits</li>
-    <li>George A Sisco III</li>
-    <li>Gilbert</li>
-    <li>Greg Hurrell</li>
-  </ul>
-  <ul>
-    <li>Greg Roodt</li>
-    <li>Guangqiang Dong</li>
-    <li>Guido Bouman</li>
-    <li>Harry Hull</li>
-    <li>Harshad Sabne</li>
-    <li>Hendrik Swanepoel</li>
-    <li>Hugo Jobling</li>
-    <li>Ian Obermiller</li>
-    <li>Ingvar Stepanyan</li>
-    <li>Irae Carvalho</li>
-    <li>Isaac Salier-Hellendag</li>
-    <li>Ivan Kozik</li>
-    <li>Jaime Mingo</li>
-    <li>Jakub Malinowski</li>
-    <li>James Brantly</li>
-    <li>James Ide</li>
-    <li>Jamie Wong</li>
-    <li>Jamison Dance</li>
-    <li>Jan Kassens</li>
-    <li>Jared Forsyth</li>
-    <li>Jason Bonta</li>
-    <li>Jason Trill</li>
-    <li>Jean Lauliac</li>
-    <li>Jeff Barczewski</li>
-    <li>Jeff Carpenter</li>
-    <li>Jeff Morrison</li>
-    <li>Jeff Welch</li>
-    <li>Jeffrey Lin</li>
-    <li>Jignesh Kakadiya</li>
-    <li>Jing Chen</li>
-    <li>Johannes Baiter</li>
-    <li>John Watson</li>
-    <li>Jon Beebe</li>
-    <li>Jonas Enlund</li>
-    <li>Jonas Gebhardt</li>
-    <li>Jonathan Hsu</li>
-    <li>Jordan Walke</li>
-    <li>Josh Bassett</li>
-    <li>Josh Duck</li>
-    <li>Josh Yudaken</li>
-    <li>Joshua Ma</li>
-    <li>Julen Ruiz Aizpuru</li>
-    <li>Jun Wu</li>
-    <li>Juraj Dudak</li>
-    <li>Justin Jaffray</li>
-    <li>Karl Mikkelsen</li>
-    <li>Keito Uchiyama</li>
-    <li>Kit Randel</li>
-    <li>Kunal Mehta</li>
-    <li>Kyle Mathews</li>
-    <li>Laurence Rowe</li>
-    <li>Levi McCallum</li>
-    <li>Lily</li>
-    <li>Logan Allen</li>
-    <li>Luigy Leon</li>
-    <li>Marcin Kwiatkowski</li>
-    <li>Marcin Szczepanski</li>
-    <li>Mariano Desanze</li>
-    <li>Mark Richardson</li>
-  </ul>
-  <ul>
-    <li>Marshall Roch</li>
-    <li>Martin Andert</li>
-    <li>Martin Konicek</li>
-    <li>Mathieu M-Gosselin</li>
-    <li>Matt Harrison</li>
-    <li>Matthew Dapena-Tretter</li>
-    <li>Matti Nelimarkka</li>
-    <li>Michal Srb</li>
-    <li>Mouad Debbar</li>
-    <li>Nadeesha Cabral</li>
-    <li>Nate Hunzaker</li>
-    <li>Nicholas Bergson-Shilcock</li>
-    <li>Nick Gavalas</li>
-    <li>Nick Thompson</li>
-    <li>Niklas Boström</li>
-    <li>Owen Coutts</li>
-    <li>Pascal Hartig</li>
-    <li>Paul O’Shannessy</li>
-    <li>Paul Seiffert</li>
-    <li>Paul Shen</li>
-    <li>Pete Hunt</li>
-    <li>Peter Cottle</li>
-    <li>Petri Lievonen</li>
-    <li>Pieter Vanderwerff</li>
-    <li>Rajiv Tirumalareddy</li>
-    <li>Randall Randall</li>
-    <li>Ray</li>
-    <li>Richard D. Worth</li>
-    <li>Richard Feldman</li>
-    <li>Richard Livesey</li>
-    <li>Ryan Seddon</li>
-    <li>Sahat Yalkabov</li>
-    <li>Sander Spies</li>
-    <li>Sean Kinsey</li>
-    <li>Sebastian Markbåge</li>
-    <li>Shaun Trennery</li>
-    <li>Simon Højberg</li>
-    <li>Stefan Dombrowski</li>
-    <li>Stephen Murphy</li>
-    <li>Stoyan Stefanov</li>
-    <li>Sundeep Malladi</li>
-    <li>Sven Helmberger</li>
-    <li>Thomas Aylott</li>
-    <li>Thomas Boyt</li>
-    <li>Thomas Shaddox</li>
-    <li>Thomas Shafer</li>
-    <li>Timothy Yung</li>
-    <li>Tom Haggie</li>
-    <li>Tom Occhino</li>
-    <li>Ville Immonen</li>
-    <li>Vjeux</li>
-    <li>Volkan Unsal</li>
-    <li>Wayne Larsen</li>
-    <li>Wincent Colaiuta</li>
-    <li>Yuriy Dybskiy</li>
-    <li>Yuval Dekel</li>
-    <li>Zach Bruggeman</li>
-    <li>davidxi</li>
-    <li>imagentleman</li>
+    {% for author in author_col %}
+    <li>{{ author }}</li>
+    {% endfor %}
   </ul>
+  {% endfor %}
 </div>
 
 In addition, we're grateful to [Jeff Barczewski](https://github.com/jeffbski) for allowing us to use the [react](https://www.npmjs.org/package/react) package name on npm and to [Christopher Aue](http://christopheraue.net/) for letting us use the [reactjs.com](http://reactjs.com/) domain name and the [@reactjs](https://twitter.com/reactjs) username on Twitter.
diff --git a/docs/_css/react.scss b/docs/css/react.scss
similarity index 99%
rename from docs/_css/react.scss
rename to docs/css/react.scss
index ce8c3da220cf..938f5593805c 100644
--- a/docs/_css/react.scss
+++ b/docs/css/react.scss
@@ -1,3 +1,5 @@
+---
+---
 @import 'bourbon/bourbon';
 @import '_variables';
 @import '_typography';
diff --git a/docs/docs/01-why-react.md b/docs/docs/01-why-react.md
index 0968b7290642..a11b49bd3993 100644
--- a/docs/docs/01-why-react.md
+++ b/docs/docs/01-why-react.md
@@ -1,7 +1,6 @@
 ---
 id: why-react
 title: Why React?
-layout: docs
 permalink: why-react.html
 next: displaying-data.html
 ---
diff --git a/docs/docs/01-why-react.zh-CN.md b/docs/docs/01-why-react.zh-CN.md
index 44e92ef71610..86e033f2bcc2 100644
--- a/docs/docs/01-why-react.zh-CN.md
+++ b/docs/docs/01-why-react.zh-CN.md
@@ -1,7 +1,6 @@
 ---
 id: why-react-zh-CN
 title: 为什么使用 React?
-layout: docs
 permalink: why-react-zh-CN.html
 next: displaying-data.html
 ---
diff --git a/docs/docs/02-displaying-data.md b/docs/docs/02-displaying-data.md
index 6e9966711bf0..d101a6d90817 100644
--- a/docs/docs/02-displaying-data.md
+++ b/docs/docs/02-displaying-data.md
@@ -1,7 +1,6 @@
 ---
 id: displaying-data
 title: Displaying Data
-layout: docs
 permalink: displaying-data.html
 prev: why-react.html
 next: jsx-in-depth.html
diff --git a/docs/docs/02.1-jsx-in-depth.md b/docs/docs/02.1-jsx-in-depth.md
index 595c0c5fec75..14924f746c6f 100644
--- a/docs/docs/02.1-jsx-in-depth.md
+++ b/docs/docs/02.1-jsx-in-depth.md
@@ -1,7 +1,6 @@
 ---
 id: jsx-in-depth
 title: JSX in Depth
-layout: docs
 permalink: jsx-in-depth.html
 prev: displaying-data.html
 next: jsx-gotchas.html
diff --git a/docs/docs/02.2-jsx-gotchas.md b/docs/docs/02.2-jsx-gotchas.md
index 21074dd2f226..57280079db3a 100644
--- a/docs/docs/02.2-jsx-gotchas.md
+++ b/docs/docs/02.2-jsx-gotchas.md
@@ -1,7 +1,6 @@
 ---
 id: jsx-gotchas
 title: JSX Gotchas
-layout: docs
 permalink: jsx-gotchas.html
 prev: jsx-in-depth.html
 next: interactivity-and-dynamic-uis.html
diff --git a/docs/docs/03-interactivity-and-dynamic-uis.md b/docs/docs/03-interactivity-and-dynamic-uis.md
index 754a32943bfb..d178e4420b4a 100644
--- a/docs/docs/03-interactivity-and-dynamic-uis.md
+++ b/docs/docs/03-interactivity-and-dynamic-uis.md
@@ -1,7 +1,6 @@
 ---
 id: interactivity-and-dynamic-uis
 title: Interactivity and Dynamic UIs
-layout: docs
 permalink: interactivity-and-dynamic-uis.html
 prev: jsx-gotchas.html
 next: multiple-components.html
diff --git a/docs/docs/04-multiple-components.md b/docs/docs/04-multiple-components.md
index 85cefffff638..eb04cfd3f44d 100644
--- a/docs/docs/04-multiple-components.md
+++ b/docs/docs/04-multiple-components.md
@@ -1,7 +1,6 @@
 ---
 id: multiple-components
 title: Multiple Components
-layout: docs
 permalink: multiple-components.html
 prev: interactivity-and-dynamic-uis.html
 next: reusable-components.html
diff --git a/docs/docs/05-reusable-components.md b/docs/docs/05-reusable-components.md
index dae061f42552..8de963e4ba19 100644
--- a/docs/docs/05-reusable-components.md
+++ b/docs/docs/05-reusable-components.md
@@ -1,7 +1,6 @@
 ---
 id: reusable-components
 title: Reusable Components
-layout: docs
 permalink: reusable-components.html
 prev: multiple-components.html
 next: forms.html
diff --git a/docs/docs/06-forms.md b/docs/docs/06-forms.md
index 8cea0db813e6..002d68192bee 100644
--- a/docs/docs/06-forms.md
+++ b/docs/docs/06-forms.md
@@ -1,7 +1,6 @@
 ---
 id: forms
 title: Forms
-layout: docs
 permalink: forms.html
 prev: reusable-components.html
 next: working-with-the-browser.html
diff --git a/docs/docs/07-working-with-the-browser.md b/docs/docs/07-working-with-the-browser.md
index 565d824280b1..e3780fe6fa9a 100644
--- a/docs/docs/07-working-with-the-browser.md
+++ b/docs/docs/07-working-with-the-browser.md
@@ -1,7 +1,6 @@
 ---
 id: working-with-the-browser
 title: Working With the Browser
-layout: docs
 permalink: working-with-the-browser.html
 prev: forms.html
 next: more-about-refs.html
diff --git a/docs/docs/07.1-more-about-refs.md b/docs/docs/07.1-more-about-refs.md
index fa92805def22..fc6c95960d9a 100644
--- a/docs/docs/07.1-more-about-refs.md
+++ b/docs/docs/07.1-more-about-refs.md
@@ -1,7 +1,6 @@
 ---
 id: more-about-refs
 title: More About Refs
-layout: docs
 permalink: more-about-refs.html
 prev: working-with-the-browser.html
 next: tooling-integration.html
diff --git a/docs/docs/08-tooling-integration.md b/docs/docs/08-tooling-integration.md
index 93416d301ccb..8973df58126c 100644
--- a/docs/docs/08-tooling-integration.md
+++ b/docs/docs/08-tooling-integration.md
@@ -1,7 +1,6 @@
 ---
 id: tooling-integration
 title: Tooling Integration
-layout: docs
 permalink: tooling-integration.html
 prev: more-about-refs.html
 next: addons.html
diff --git a/docs/docs/09-addons.md b/docs/docs/09-addons.md
index 33aca262a5f8..1bd3f6f4a422 100644
--- a/docs/docs/09-addons.md
+++ b/docs/docs/09-addons.md
@@ -1,7 +1,6 @@
 ---
 id: addons
 title: Add-ons
-layout: docs
 permalink: addons.html
 prev: tooling-integration.html
 next: animation.html
diff --git a/docs/docs/09.1-animation.md b/docs/docs/09.1-animation.md
index f310a13f5085..17b2e099de26 100644
--- a/docs/docs/09.1-animation.md
+++ b/docs/docs/09.1-animation.md
@@ -1,7 +1,6 @@
 ---
 id: animation
 title: Animation
-layout: docs
 permalink: animation.html
 prev: addons.html
 next: two-way-binding-helpers.html
diff --git a/docs/docs/09.2-form-input-binding-sugar.md b/docs/docs/09.2-form-input-binding-sugar.md
index 29317f71dca3..d3016ad74ce8 100644
--- a/docs/docs/09.2-form-input-binding-sugar.md
+++ b/docs/docs/09.2-form-input-binding-sugar.md
@@ -1,7 +1,6 @@
 ---
 id: two-way-binding-helpers
 title: Two-Way Binding Helpers
-layout: docs
 permalink: two-way-binding-helpers.html
 prev: animation.html
 next: class-name-manipulation.html
diff --git a/docs/docs/09.3-class-name-manipulation.md b/docs/docs/09.3-class-name-manipulation.md
index ca2e1fdee00d..e898646398c7 100644
--- a/docs/docs/09.3-class-name-manipulation.md
+++ b/docs/docs/09.3-class-name-manipulation.md
@@ -1,7 +1,6 @@
 ---
 id: class-name-manipulation
 title: Class Name Manipulation
-layout: docs
 permalink: class-name-manipulation.html
 prev: two-way-binding-helpers.html
 next: test-utils.html
diff --git a/docs/docs/09.4-test-utils.md b/docs/docs/09.4-test-utils.md
index ef40cf65d520..0b05d8fcbb99 100644
--- a/docs/docs/09.4-test-utils.md
+++ b/docs/docs/09.4-test-utils.md
@@ -1,7 +1,6 @@
 ---
 id: test-utils
 title: Test Utilities
-layout: docs
 permalink: test-utils.html
 prev: class-name-manipulation.html
 next: clone-with-props.html
diff --git a/docs/docs/09.5-clone-with-props.md b/docs/docs/09.5-clone-with-props.md
index 0d466adf4a26..88f9e7b4a709 100644
--- a/docs/docs/09.5-clone-with-props.md
+++ b/docs/docs/09.5-clone-with-props.md
@@ -1,7 +1,6 @@
 ---
 id: clone-with-props
 title: Cloning Components
-layout: docs
 permalink: clone-with-props.html
 prev: test-utils.html
 next: update.html
diff --git a/docs/docs/09.6-update.md b/docs/docs/09.6-update.md
index 5348f9631405..2169ba5c1c65 100644
--- a/docs/docs/09.6-update.md
+++ b/docs/docs/09.6-update.md
@@ -1,7 +1,6 @@
 ---
 id: update
 title: Immutability Helpers
-layout: docs
 permalink: update.html
 prev: clone-with-props.html
 next: pure-render-mixin.html
diff --git a/docs/docs/09.7-pure-render-mixin.md b/docs/docs/09.7-pure-render-mixin.md
index 5f2f5f8852f2..06620fa67882 100644
--- a/docs/docs/09.7-pure-render-mixin.md
+++ b/docs/docs/09.7-pure-render-mixin.md
@@ -1,7 +1,6 @@
 ---
 id: pure-render-mixin
 title: PureRenderMixin
-layout: docs
 permalink: pure-render-mixin.html
 prev: update.html
 next: perf.html
diff --git a/docs/docs/09.8-perf.md b/docs/docs/09.8-perf.md
index 74bc71634a7f..0a460b2d9339 100644
--- a/docs/docs/09.8-perf.md
+++ b/docs/docs/09.8-perf.md
@@ -1,7 +1,6 @@
 ---
 id: perf
 title: Performance Tools
-layout: docs
 permalink: perf.html
 prev: pure-render-mixin.html
 ---
diff --git a/docs/docs/complementary-tools.md b/docs/docs/complementary-tools.md
index 6bd66d055ea5..0d4190c1b867 100644
--- a/docs/docs/complementary-tools.md
+++ b/docs/docs/complementary-tools.md
@@ -1,7 +1,6 @@
 ---
 id: complementary-tools
 title: Complementary Tools
-layout: docs
 permalink: complementary-tools.html
 prev: videos.html
 next: examples.html
diff --git a/docs/docs/examples.md b/docs/docs/examples.md
index 82e8d39c99a6..f539f4f60a2e 100644
--- a/docs/docs/examples.md
+++ b/docs/docs/examples.md
@@ -1,7 +1,6 @@
 ---
 id: examples
 title: Examples
-layout: docs
 permalink: examples.html
 prev: complementary-tools.html
 ---
diff --git a/docs/docs/flux-overview.md b/docs/docs/flux-overview.md
index c93feee34e2d..9b6482e3a752 100644
--- a/docs/docs/flux-overview.md
+++ b/docs/docs/flux-overview.md
@@ -1,7 +1,6 @@
 ---
 id: flux-overview
 title: Flux Application Architecture
-layout: docs
 next: flux-todo-list.html
 ---
 
diff --git a/docs/docs/flux-todo-list.md b/docs/docs/flux-todo-list.md
index 6df4e2fd1b63..f79bf7e76023 100644
--- a/docs/docs/flux-todo-list.md
+++ b/docs/docs/flux-todo-list.md
@@ -1,7 +1,6 @@
 ---
 id: flux-todo-list
 title: Flux TodoMVC Tutorial
-layout: docs
 prev: flux-overview.html
 ---
 
diff --git a/docs/docs/getting-started.md b/docs/docs/getting-started.md
index 956fb4cf8007..36c3a59be0d7 100644
--- a/docs/docs/getting-started.md
+++ b/docs/docs/getting-started.md
@@ -1,8 +1,8 @@
 ---
 id: getting-started
 title: Getting Started
-layout: docs
 next: tutorial.html
+redirect_from: "docs/index.html"
 ---
 
 ## JSFiddle
diff --git a/docs/docs/getting-started.zh-CN.md b/docs/docs/getting-started.zh-CN.md
index 2622874a4207..a785cd315645 100644
--- a/docs/docs/getting-started.zh-CN.md
+++ b/docs/docs/getting-started.zh-CN.md
@@ -1,7 +1,6 @@
 ---
 id: getting-started-zh-CN
 title: 入门教程
-layout: docs
 next: tutorial.html
 ---
 
diff --git a/docs/docs/index.html b/docs/docs/index.html
deleted file mode 100644
index 4ea0787d5eca..000000000000
--- a/docs/docs/index.html
+++ /dev/null
@@ -1,4 +0,0 @@
----
-layout: redirect
-destination: getting-started.html
----
diff --git a/docs/docs/ref-01-top-level-api.md b/docs/docs/ref-01-top-level-api.md
index 9a215b76ecb8..5e93c6516462 100644
--- a/docs/docs/ref-01-top-level-api.md
+++ b/docs/docs/ref-01-top-level-api.md
@@ -1,9 +1,9 @@
 ---
 id: top-level-api
 title: Top-Level API
-layout: docs
 permalink: top-level-api.html
 next: component-api.html
+redirect_from: "/docs/reference.html"
 ---
 
 ## React
diff --git a/docs/docs/ref-02-component-api.md b/docs/docs/ref-02-component-api.md
index f2b5732d1c84..41cb101b246f 100644
--- a/docs/docs/ref-02-component-api.md
+++ b/docs/docs/ref-02-component-api.md
@@ -1,7 +1,6 @@
 ---
 id: component-api
 title: Component API
-layout: docs
 permalink: component-api.html
 prev: top-level-api.html
 next: component-specs.html
diff --git a/docs/docs/ref-03-component-specs.md b/docs/docs/ref-03-component-specs.md
index 4d68915f31d4..a21fb68a29a7 100644
--- a/docs/docs/ref-03-component-specs.md
+++ b/docs/docs/ref-03-component-specs.md
@@ -1,7 +1,6 @@
 ---
 id: component-specs
 title: Component Specs and Lifecycle
-layout: docs
 permalink: component-specs.html
 prev: component-api.html
 next: tags-and-attributes.html
diff --git a/docs/docs/ref-04-tags-and-attributes.md b/docs/docs/ref-04-tags-and-attributes.md
index 905c1a954de9..f43b05cc3c4a 100644
--- a/docs/docs/ref-04-tags-and-attributes.md
+++ b/docs/docs/ref-04-tags-and-attributes.md
@@ -1,7 +1,6 @@
 ---
 id: tags-and-attributes
 title: Tags and Attributes
-layout: docs
 permalink: tags-and-attributes.html
 prev: component-specs.html
 next: events.html
diff --git a/docs/docs/ref-05-events.md b/docs/docs/ref-05-events.md
index 84a7abfb594c..f331d01080d3 100644
--- a/docs/docs/ref-05-events.md
+++ b/docs/docs/ref-05-events.md
@@ -1,7 +1,6 @@
 ---
 id: events
 title: Event System
-layout: docs
 permalink: events.html
 prev: tags-and-attributes.html
 next: dom-differences.html
diff --git a/docs/docs/ref-06-dom-differences.md b/docs/docs/ref-06-dom-differences.md
index dcae0f872eb7..ceeeac9bbfe4 100644
--- a/docs/docs/ref-06-dom-differences.md
+++ b/docs/docs/ref-06-dom-differences.md
@@ -1,7 +1,6 @@
 ---
 id: dom-differences
 title: DOM Differences
-layout: docs
 permalink: dom-differences.html
 prev: events.html
 next: special-non-dom-attributes.html
diff --git a/docs/docs/ref-07-special-non-dom-attributes.md b/docs/docs/ref-07-special-non-dom-attributes.md
index ae0b5e7c6a03..38e3ce8ea43e 100644
--- a/docs/docs/ref-07-special-non-dom-attributes.md
+++ b/docs/docs/ref-07-special-non-dom-attributes.md
@@ -1,7 +1,6 @@
 ---
 id: special-non-dom-attributes
 title: Special Non-DOM Attributes
-layout: docs
 permalink: special-non-dom-attributes.html
 prev: dom-differences.html
 next: reconciliation.html
diff --git a/docs/docs/ref-08-reconciliation.md b/docs/docs/ref-08-reconciliation.md
index 56c94368784c..7332103dfba6 100644
--- a/docs/docs/ref-08-reconciliation.md
+++ b/docs/docs/ref-08-reconciliation.md
@@ -1,7 +1,6 @@
 ---
 id: reconciliation
 title: Reconciliation
-layout: docs
 permalink: reconciliation.html
 prev: special-non-dom-attributes.html
 ---
diff --git a/docs/docs/reference.html b/docs/docs/reference.html
deleted file mode 100644
index 0d21cd16f4ed..000000000000
--- a/docs/docs/reference.html
+++ /dev/null
@@ -1,4 +0,0 @@
----
-layout: redirect
-destination: top-level-api.html
----
diff --git a/docs/docs/thinking-in-react.md b/docs/docs/thinking-in-react.md
index c8f1ac165680..67aa06b0690c 100644
--- a/docs/docs/thinking-in-react.md
+++ b/docs/docs/thinking-in-react.md
@@ -1,7 +1,6 @@
 ---
 id: thinking-in-react
 title: Thinking in React
-layout: docs
 prev: tutorial.html
 next: videos.html
 ---
diff --git a/docs/docs/tutorial.md b/docs/docs/tutorial.md
index fb826c1f0ba7..6b771aebab25 100644
--- a/docs/docs/tutorial.md
+++ b/docs/docs/tutorial.md
@@ -1,7 +1,6 @@
 ---
 id: tutorial
 title: Tutorial
-layout: docs
 prev: getting-started.html
 next: thinking-in-react.html
 ---
diff --git a/docs/docs/videos.md b/docs/docs/videos.md
index d9b8a3abf430..488b8030c0ce 100644
--- a/docs/docs/videos.md
+++ b/docs/docs/videos.md
@@ -1,7 +1,6 @@
 ---
 id: videos
 title: Videos
-layout: docs
 permalink: videos.html
 prev: thinking-in-react.html
 next: complementary-tools.html
