diff --git a/docs/_includes/css/forms.html b/docs/_includes/css/forms.html
index 6fabb4c78dd8478b1919e1bdf5f369761adf34fb..96b9b6ce055b5bb213892d648f9ad58bf57279f0 100644
--- a/docs/_includes/css/forms.html
+++ b/docs/_includes/css/forms.html
@@ -653,43 +653,49 @@
   </div>
   <div class="bs-callout bs-callout-warning">
     <h4>Conveying the icon's meaning to assistive technologies</h4>
-    <p>To ensure that assistive technologies – such as screen readers – correctly convey the meaning of an icon, additional hidden text should be included with the <code>sr-only</code> class, and the icon itself explicitly associated with the form control it relates to using <code>aria-describedby</code>. Alternatively, ensure that the meaning (for instance, the fact that there is a warning for a particular text entry field) is conveyed in some other form, such as changing the text of the actual <code>&lt;label&gt;</code> associated with the form control.</p>
+    <p>To ensure that assistive technologies – such as screen readers – correctly convey the meaning of an icon, additional hidden text should be included with the <code>sr-only</code> class and explicitly associated with the form control it relates to using <code>aria-describedby</code>. Alternatively, ensure that the meaning (for instance, the fact that there is a warning for a particular text entry field) is conveyed in some other form, such as changing the text of the actual <code>&lt;label&gt;</code> associated with the form control.</p>
     <p>Although the following examples already mention the validation state of their respective form controls in the <code>&lt;label&gt;</code> text itself, the above technique (using <code>sr-only</code> text and <code>aria-describedby</code>) has been included for illustrative purposes.</p>
   </div>
   <div class="bs-example">
     <form role="form">
       <div class="form-group has-success has-feedback">
         <label class="control-label" for="inputSuccess2">Input with success</label>
-        <input type="text" class="form-control" id="inputSuccess2" aria-describedby="inputSuccess2Icon">
-        <span id="inputSuccess2Icon" class="glyphicon glyphicon-ok form-control-feedback"><span class="sr-only">(success)</span></span>
+        <input type="text" class="form-control" id="inputSuccess2" aria-describedby="inputSuccess2Status">
+        <span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
+        <span id="inputSuccess2Status" class="sr-only">(success)</span>
       </div>
       <div class="form-group has-warning has-feedback">
         <label class="control-label" for="inputWarning2">Input with warning</label>
-        <input type="text" class="form-control" id="inputWarning2" aria-describedby="inputWarning2Icon">
-        <span id="inputWarning2Icon" class="glyphicon glyphicon-warning-sign form-control-feedback"><span class="sr-only">(warning)</span></span>
+        <input type="text" class="form-control" id="inputWarning2" aria-describedby="inputWarning2Status">
+        <span class="glyphicon glyphicon-warning-sign form-control-feedback" aria-hidden="true"></span>
+        <span id="inputWarning2Status" class="sr-only">(warning)</span>
       </div>
       <div class="form-group has-error has-feedback">
         <label class="control-label" for="inputError2">Input with error</label>
-        <input type="text" class="form-control" id="inputError2" aria-describedby="inputError2Icon">
-        <span id="inputError2Icon" class="glyphicon glyphicon-remove form-control-feedback"><span class="sr-only">(error)</span></span>
+        <input type="text" class="form-control" id="inputError2" aria-describedby="inputError2Status">
+        <span class="glyphicon glyphicon-remove form-control-feedback" aria-hidden="true"></span>
+        <span id="inputError2Status" class="sr-only">(error)</span>
       </div>
     </form>
   </div>
 {% highlight html %}
 <div class="form-group has-success has-feedback">
   <label class="control-label" for="inputSuccess2">Input with success</label>
-  <input type="text" class="form-control" id="inputSuccess2" aria-describedby="inputSuccess2Icon">
-  <span id="inputSuccess2Icon" class="glyphicon glyphicon-ok form-control-feedback"><span class="sr-only">(success)</span></span>
+  <input type="text" class="form-control" id="inputSuccess2" aria-describedby="inputSuccess2Status">
+  <span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
+  <span id="inputSuccess2Status" class="sr-only">(success)</span>
 </div>
 <div class="form-group has-warning has-feedback">
   <label class="control-label" for="inputWarning2">Input with warning</label>
-  <input type="text" class="form-control" id="inputWarning2" aria-describedby="inputWarning2Icon">
-  <span id="inputWarning2Icon" class="glyphicon glyphicon-warning-sign form-control-feedback"><span class="sr-only">(warning)</span></span>
+  <input type="text" class="form-control" id="inputWarning2" aria-describedby="inputWarning2Status">
+  <span class="glyphicon glyphicon-warning-sign form-control-feedback" aria-hidden="true"></span>
+  <span id="inputWarning2Status" class="sr-only">(warning)</span>
 </div>
 <div class="form-group has-error has-feedback">
   <label class="control-label" for="inputError2">Input with error</label>
-  <input type="text" class="form-control" id="inputError2" aria-describedby="inputError2Icon">
-  <span id="inputError2Icon" class="glyphicon glyphicon-remove form-control-feedback"><span class="sr-only">(error)</span></span>
+  <input type="text" class="form-control" id="inputError2" aria-describedby="inputError2Status">
+  <span class="glyphicon glyphicon-remove form-control-feedback" aria-hidden="true"></span>
+  <span id="inputError2Status" class="sr-only">(error)</span>
 </div>
 {% endhighlight %}
 
@@ -699,8 +705,9 @@
       <div class="form-group has-success has-feedback">
         <label class="control-label col-sm-3" for="inputSuccess3">Input with success</label>
         <div class="col-sm-9">
-          <input type="text" class="form-control" id="inputSuccess3" aria-describedby="inputSuccess3Icon">
-          <span id="inputSuccess3Icon" class="glyphicon glyphicon-ok form-control-feedback"><span class="sr-only">(success)</span></span>
+          <input type="text" class="form-control" id="inputSuccess3" aria-describedby="inputSuccess3Status">
+          <span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
+          <span id="inputSuccess3Status" class="sr-only">(success)</span>
         </div>
       </div>
     </form>
@@ -710,8 +717,9 @@
   <div class="form-group has-success has-feedback">
     <label class="control-label col-sm-3" for="inputSuccess3">Input with success</label>
     <div class="col-sm-9">
-      <input type="text" class="form-control" id="inputSuccess3" aria-describedby="inputSuccess3Icon">
-      <span id="inputSuccess3Icon" class="glyphicon glyphicon-ok form-control-feedback"><span class="sr-only">(success)</span></span>
+      <input type="text" class="form-control" id="inputSuccess3" aria-describedby="inputSuccess3Status">
+      <span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
+      <span id="inputSuccess3Status" class="sr-only">(success)</span>
     </div>
   </div>
 </form>
@@ -721,8 +729,9 @@
     <form class="form-inline" role="form">
       <div class="form-group has-success has-feedback">
         <label class="control-label" for="inputSuccess4">Input with success</label>
-        <input type="text" class="form-control" id="inputSuccess4" aria-describedby="inputSuccess4Icon">
-        <span id="inputSuccess4Icon" class="glyphicon glyphicon-ok form-control-feedback"><span class="sr-only">(success)</span></span>
+        <input type="text" class="form-control" id="inputSuccess4" aria-describedby="inputSuccess4Status">
+        <span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
+        <span id="inputSuccess4Status" class="sr-only">(success)</span>
       </div>
     </form>
   </div>
@@ -730,8 +739,9 @@
 <form class="form-inline" role="form">
   <div class="form-group has-success has-feedback">
     <label class="control-label" for="inputSuccess4">Input with success</label>
-    <input type="text" class="form-control" id="inputSuccess4" aria-describedby="inputSuccess4Icon">
-    <span id="inputSuccess4Icon" class="glyphicon glyphicon-ok form-control-feedback"><span class="sr-only">(success)</span></span>
+    <input type="text" class="form-control" id="inputSuccess4" aria-describedby="inputSuccess4Status">
+    <span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
+    <span id="inputSuccess4Status" class="sr-only">(success)</span>
   </div>
 </form>
 {% endhighlight %}
@@ -741,15 +751,17 @@
   <div class="bs-example">
     <div class="form-group has-success has-feedback">
       <label class="control-label sr-only" for="inputSuccess5">Hidden label</label>
-      <input type="text" class="form-control" id="inputSuccess5" aria-describedby="inputSuccess5Icon">
-      <span id="inputSuccess5Icon" class="glyphicon glyphicon-ok form-control-feedback"><span class="sr-only">(success)</span></span>
+      <input type="text" class="form-control" id="inputSuccess5" aria-describedby="inputSuccess5Status">
+      <span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
+      <span id="inputSuccess5Status" class="sr-only">(success)</span>
     </div>
   </div>
 {% highlight html %}
 <div class="form-group has-success has-feedback">
   <label class="control-label sr-only" for="inputSuccess5">Hidden label</label>
-  <input type="text" class="form-control" id="inputSuccess5" aria-describedby="inputSuccess5Icon">
-  <span id="inputSuccess5Icon" class="glyphicon glyphicon-ok form-control-feedback"><span class="sr-only">(success)</span></span>
+  <input type="text" class="form-control" id="inputSuccess5" aria-describedby="inputSuccess5Status">
+  <span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
+  <span id="inputSuccess5Status" class="sr-only">(success)</span>
 </div>
 {% endhighlight %}
 
diff --git a/docs/_includes/getting-started/browser-device-support.html b/docs/_includes/getting-started/browser-device-support.html
index 306023d7b9ef2abee87f37cc27fac3c3cb7f80b8..2f3802b848d1261a1cd61fc59f7b10a5d52e4b68 100644
--- a/docs/_includes/getting-started/browser-device-support.html
+++ b/docs/_includes/getting-started/browser-device-support.html
@@ -19,33 +19,33 @@
       <tbody>
         <tr>
           <th>Android</th>
-          <td class="text-success"><span class="glyphicon glyphicon-ok"></span> Supported</td>
-          <td class="text-success"><span class="glyphicon glyphicon-ok"></span> Supported</td>
+          <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
+          <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
           <td class="text-muted" rowspan="3" style="vertical-align: middle;">N/A</td>
-          <td class="text-danger"><span class="glyphicon glyphicon-remove"></span> Not Supported</td>
+          <td class="text-danger"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Not Supported</td>
           <td class="text-muted">N/A</td>
         </tr>
         <tr>
           <th>iOS</th>
-          <td class="text-success"><span class="glyphicon glyphicon-ok"></span> Supported</td>
+          <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
           <td class="text-muted">N/A</td>
-          <td class="text-danger"><span class="glyphicon glyphicon-remove"></span> Not Supported</td>
-          <td class="text-success"><span class="glyphicon glyphicon-ok"></span> Supported</td>
+          <td class="text-danger"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Not Supported</td>
+          <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
         </tr>
         <tr>
           <th>Mac OS X</th>
-          <td class="text-success"><span class="glyphicon glyphicon-ok"></span> Supported</td>
-          <td class="text-success"><span class="glyphicon glyphicon-ok"></span> Supported</td>
-          <td class="text-success"><span class="glyphicon glyphicon-ok"></span> Supported</td>
-          <td class="text-success"><span class="glyphicon glyphicon-ok"></span> Supported</td>
+          <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
+          <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
+          <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
+          <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
         </tr>
         <tr>
           <th>Windows</th>
-          <td class="text-success"><span class="glyphicon glyphicon-ok"></span> Supported</td>
-          <td class="text-success"><span class="glyphicon glyphicon-ok"></span> Supported</td>
-          <td class="text-success"><span class="glyphicon glyphicon-ok"></span> Supported</td>
-          <td class="text-success"><span class="glyphicon glyphicon-ok"></span> Supported</td>
-          <td class="text-danger"><span class="glyphicon glyphicon-remove"></span> Not Supported</td>
+          <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
+          <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
+          <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
+          <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
+          <td class="text-danger"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Not Supported</td>
         </tr>
       </tbody>
     </table>
@@ -67,26 +67,26 @@
       <tbody>
         <tr>
           <th scope="row"><code>border-radius</code></th>
-          <td class="text-danger"><span class="glyphicon glyphicon-remove"></span> Not supported</td>
-          <td class="text-success"><span class="glyphicon glyphicon-ok"></span> Supported</td>
+          <td class="text-danger"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Not supported</td>
+          <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
         </tr>
         <tr>
           <th scope="row"><code>box-shadow</code></th>
-          <td class="text-danger"><span class="glyphicon glyphicon-remove"></span> Not supported</td>
-          <td class="text-success"><span class="glyphicon glyphicon-ok"></span> Supported</td>
+          <td class="text-danger"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Not supported</td>
+          <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
         </tr>
         <tr>
           <th scope="row"><code>transform</code></th>
-          <td class="text-danger"><span class="glyphicon glyphicon-remove"></span> Not supported</td>
-          <td class="text-success"><span class="glyphicon glyphicon-ok"></span> Supported, with <code>-ms</code> prefix</td>
+          <td class="text-danger"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Not supported</td>
+          <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported, with <code>-ms</code> prefix</td>
         </tr>
         <tr>
           <th scope="row"><code>transition</code></th>
-          <td colspan="2" class="text-danger"><span class="glyphicon glyphicon-remove"></span> Not supported</td>
+          <td colspan="2" class="text-danger"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Not supported</td>
         </tr>
         <tr>
           <th scope="row"><code>placeholder</code></th>
-          <td colspan="2" class="text-danger"><span class="glyphicon glyphicon-remove"></span> Not supported</td>
+          <td colspan="2" class="text-danger"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Not supported</td>
         </tr>
       </tbody>
     </table>
diff --git a/docs/_includes/js/carousel.html b/docs/_includes/js/carousel.html
index a74802b6237fc8e8dc19f2fded5cb8a84bd3a413..9c13aa0336974c7efd18caa01eedbf1838404a7e 100644
--- a/docs/_includes/js/carousel.html
+++ b/docs/_includes/js/carousel.html
@@ -23,11 +23,11 @@
         </div>
       </div>
       <a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
-        <span class="glyphicon glyphicon-chevron-left"></span>
+        <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
         <span class="sr-only">Previous</span>
       </a>
       <a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
-        <span class="glyphicon glyphicon-chevron-right"></span>
+        <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
         <span class="sr-only">Next</span>
       </a>
     </div>
@@ -60,11 +60,11 @@
 
   <!-- Controls -->
   <a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
-    <span class="glyphicon glyphicon-chevron-left"></span>
+    <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
     <span class="sr-only">Previous</span>
   </a>
   <a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
-    <span class="glyphicon glyphicon-chevron-right"></span>
+    <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
     <span class="sr-only">Next</span>
   </a>
 </div>
@@ -108,11 +108,11 @@
         </div>
       </div>
       <a class="left carousel-control" href="#carousel-example-captions" role="button" data-slide="prev">
-        <span class="glyphicon glyphicon-chevron-left"></span>
+        <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
         <span class="sr-only">Previous</span>
       </a>
       <a class="right carousel-control" href="#carousel-example-captions" role="button" data-slide="next">
-        <span class="glyphicon glyphicon-chevron-right"></span>
+        <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
         <span class="sr-only">Next</span>
       </a>
     </div>
diff --git a/docs/assets/js/customize.min.js b/docs/assets/js/customize.min.js
index 58f6c864c60e3185014d98f8da93c227390b9b85..42e6ea143e37d8ce17367d9c8b82c1153fa92b46 100644
--- a/docs/assets/js/customize.min.js
+++ b/docs/assets/js/customize.min.js
@@ -58,4 +58,4 @@ var __js={"affix.js":"/* =======================================================
  * Licensed under the Creative Commons Attribution 3.0 Unported License. For
  * details, see http://creativecommons.org/licenses/by/3.0/.
  */
-window.onload=function(){"use strict";function a(a,b){throw $('<div id="bsCustomizerAlert" class="bs-customizer-alert"><div class="container"><a href="#bsCustomizerAlert" data-dismiss="alert" class="close pull-right">&times;</a><p class="bs-customizer-alert-text"><span class="glyphicon glyphicon-warning-sign"></span>'+a+"</p>"+(b.extract?'<pre class="bs-customizer-alert-extract">'+b.extract.join("\n")+"</pre>":"")+"</div></div>").appendTo("body").alert(),b}function b(a){$('<div class="bs-callout bs-callout-info"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>'+a+"</div>").insertAfter(".bs-customize-download")}function c(a,b){var c=$('<div class="bs-callout bs-callout-danger"><h4>Attention!</h4><p>'+a+"</p></div>");b?c.appendTo(".bs-docs-container"):c.insertAfter(".bs-customize-download")}function d(a,b,c){$('<div class="alert alert-'+a+'">'+b+'<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button></div>').insertAfter(c)}function e(a){a=a.replace(/[*+?^$.\[\]{}()|\\\/]/g,"\\$&");var b=location.search.match(new RegExp("[?&]"+a+"=([^&]+)(&|$)"));return b&&decodeURIComponent(b[1].replace(/\+/g," "))}function f(c,d){var e={description:"Bootstrap Customizer Config","public":!0,files:{"config.json":{content:c}}};$.ajax({url:"https://api.github.com/gists",type:"POST",contentType:"application/json; charset=UTF-8",dataType:"json",data:JSON.stringify(e)}).success(function(a){var c=a.html_url,e=window.location.protocol+"//"+window.location.host,f=e+window.location.pathname+"?id="+a.id;b('<strong>Success!</strong> Your configuration has been saved to <a href="'+c+'">'+c+'</a> and can be revisited here at <a href="'+f+'">'+f+"</a> for further customization."),history.replaceState(!1,document.title,f),d(c,f)}).error(function(b){try{a("<strong>Ruh roh!</strong> Could not save gist file, configuration not saved.",b)}catch(c){}d("<none>","<none>")})}function g(){var a={};$("#less-variables-section input").each(function(){$(this).val()&&(a[$(this).prev().text()]=$(this).val())});var b={vars:a,css:$("#less-section input:checked").map(function(){return this.value}).toArray(),js:$("#plugin-section input:checked").map(function(){return this.value}).toArray()};if(!$.isEmptyObject(b.vars)||b.css.length||b.js.length)return b}function h(a){if(a.js&&$("#plugin-section input").each(function(){$(this).prop("checked",~$.inArray(this.value,a.js))}),a.css&&$("#less-section input").each(function(){$(this).prop("checked",~$.inArray(this.value,a.css))}),a.vars)for(var b in a.vars)$('input[data-var="'+b+'"]').val(a.vars[b])}function i(){var b=e("id");b&&$.ajax({url:"https://api.github.com/gists/"+b,type:"GET",dataType:"json"}).success(function(a){var b=JSON.parse(a.files["config.json"].content);h(b)}).error(function(b){a("Error fetching bootstrap config file",b)})}function j(b,c,d,e,f){if(!b&&!c)return a("<strong>Ruh roh!</strong> No Bootstrap files selected.",new Error("no Bootstrap"));var g=new JSZip;if(b){var h=g.folder("css");for(var i in b)h.file(i,b[i])}if(c){var j=g.folder("js");for(var k in c)j.file(k,c[k])}if(d){var l=g.folder("fonts");for(var m in d)l.file(m,d[m],{base64:!0})}e&&g.file("config.json",e);var n=g.generate({type:"blob"});f(n)}function k(a){var b="";for(var c in a)b+=c+": "+a[c]+";\n";return b+"\n\n"}function l(){var a=$('#less-section [value="glyphicons.less"]:checked');return a.length?__fonts:void 0}function m(a){var b=/^@import \"(.*?)\";$/,c=__less[a].split("\n"),d=[];return $.each(c,function(a,c){var e=b.exec(c);if(e){var f=e[1],g=m(f);$.each(g,function(a,b){-1===$.inArray(b,d)&&d.push(b)}),d.push(f)}}),d}function n(a,b,c){var d=__less[a],e=m(a);return $.each(e,function(a,e){var f=b[e];(f||null==f)&&(d+=__less[e]),"variables.less"===e&&c&&(d+=k(c))}),d=d.replace(/@import[^\n]*/gi,"")}function o(a,b,c){var d=$.Deferred(),e=new less.Parser({paths:["variables.less","mixins.less"],optimization:0,filename:b+".css"});return e.parse(a,function(a,e){return a?d.reject(a):(c[b+".css"]=v+e.toCSS(),c[b+".min.css"]=v+e.toCSS({compress:!0}),void d.resolve())}),d.promise()}function p(b){var c=$.Deferred(),d=!1,e={};if($("#less-section input").each(function(){var a=$(this),b=a.is(":checked");e[a.val()]=b,d=d||b}),!d)return!1;var f={},g={};$("#less-variables-section input").each(function(){$(this).val()&&(g[$(this).prev().text()]=$(this).val())});var h=b+n("bootstrap.less",e,g),i=b+n("theme.less",e,g),j=autoprefixer({browsers:__configBridge.autoprefixerBrowsers});return $.when(o(h,"bootstrap",f),o(i,"bootstrap-theme",f)).done(function(){for(var a in f)f[a]=j.process(f[a]).css;c.resolve(f)}).fail(function(b){a("<strong>Ruh roh!</strong> Could not parse less files.",b),c.reject()}),c.promise()}function q(a){var b=UglifyJS.parse(a);b.figure_out_scope();var c=UglifyJS.Compressor(),d=b.transform(c);d.figure_out_scope(),d.compute_char_frequency(),d.mangle_names();var e=UglifyJS.OutputStream();return d.print(e),e.toString()}function r(a){var b=$("#plugin-section input:checked"),c=__configBridge.jqueryCheck.join("\n"),d=__configBridge.jqueryVersionCheck.join("\n");if(!b.length)return!1;var e=b.map(function(){return __js[this.value]}).toArray().join("\n");return a=v+a,e=c+d+e,{"bootstrap.js":a+e,"bootstrap.min.js":a+q(e)}}function s(){x.nextAll(".alert").remove()}function t(a){a.stopPropagation(),a.preventDefault();var b=a.originalEvent.hasOwnProperty("dataTransfer")?a.originalEvent.dataTransfer.files[0]:a.originalEvent.target.files[0],c=new FileReader;c.onload=function(a){var b=a.target.result;try{var c=JSON.parse(b);if(!$.isPlainObject(c))throw new Error("JSON data from config file is not an object.");h(c),d("success","<strong>Woohoo!</strong> Your configuration was successfully uploaded. Tweak your settings, then hit Download.",x)}catch(e){return d("danger","<strong>Shucks.</strong> We can only read valid <code>.json</code> files. Please try again.",x)}},c.readAsText(b,"utf-8")}function u(a){a.stopPropagation(),a.preventDefault(),a.originalEvent.dataTransfer.dropEffect="copy",s()}var v="/*!\n * Bootstrap v3.3.0 (http://getbootstrap.com)\n * Copyright 2011-"+(new Date).getFullYear()+" Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n",w=window.File&&window.FileReader&&window.FileList&&window.Blob,x=$("#import-drop-target");w&&x.on("dragover",u).on("drop",t),$("#import-file-select").on("change",t),$("#import-manual-trigger").on("click",s);var y=$("#less-section input"),z=$("#plugin-section input"),A=$("#less-variables-section input");$("#less-section .toggle").on("click",function(a){a.preventDefault(),y.prop("checked",!y.is(":checked"))}),$("#plugin-section .toggle").on("click",function(a){a.preventDefault(),z.prop("checked",!z.is(":checked"))}),$("#less-variables-section .toggle").on("click",function(a){a.preventDefault(),A.val("")}),$("[data-dependencies]").on("click",function(){if($(this).is(":checked")){var a=this.getAttribute("data-dependencies");if(a){a=a.split(",");for(var b=0;b<a.length;b++){var c=$('[value="'+a[b]+'"]');c&&c.prop("checked",!0)}}}}),$("[data-dependents]").on("click",function(){if(!$(this).is(":checked")){var a=this.getAttribute("data-dependents");if(a){a=a.split(",");for(var b=0;b<a.length;b++){var c=$('[value="'+a[b]+'"]');c&&c.prop("checked",!1)}}}});var B=$("#btn-compile");B.on("click",function(a){var b=g(),c=JSON.stringify(b,null,2);a.preventDefault(),B.attr("disabled","disabled"),f(c,function(a,d){b.customizerUrl=d,c=JSON.stringify(b,null,2);var e="/*!\n * Generated using the Bootstrap Customizer ("+d+")\n * Config saved to config.json and "+a+"\n */\n";$.when(p(e),r(e),l()).done(function(a,b,d){j(a,b,d,c,function(a){B.removeAttr("disabled"),setTimeout(function(){saveAs(a,"bootstrap.zip")},0)})})})}),function(){function a(){$(".bs-docs-section, .bs-docs-sidebar").css("display","none"),c('Looks like your current browser doesn\'t support the Bootstrap Customizer. Please take a second to <a href="http://browsehappy.com/">upgrade to a more modern browser</a> (other than Safari).',!0)}var b=window.webkitURL||window.URL,d=new Blob(["<svg xmlns='http://www.w3.org/2000/svg'></svg>"],{type:"image/svg+xml;charset=utf-8"}),e=b.createObjectURL(d);null!==/^blob:/.exec(e)&&w?$("<img>").on("load",function(){B.prop("disabled",!1)}).on("error",a).attr("src",e):a()}(),i()};
\ No newline at end of file
+window.onload=function(){"use strict";function a(a,b){throw $('<div id="bsCustomizerAlert" class="bs-customizer-alert"><div class="container"><a href="#bsCustomizerAlert" data-dismiss="alert" class="close pull-right" aria-label="Close" role="button"><span aria-hidden="true">&times;</span></a><p class="bs-customizer-alert-text"><span class="glyphicon glyphicon-warning-sign" aria-hidden="true"></span><span class="sr-only">Warning:</span>'+a+"</p>"+(b.extract?'<pre class="bs-customizer-alert-extract">'+b.extract.join("\n")+"</pre>":"")+"</div></div>").appendTo("body").alert(),b}function b(a){$('<div class="bs-callout bs-callout-info"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+a+"</div>").insertAfter(".bs-customize-download")}function c(a,b){var c=$('<div class="bs-callout bs-callout-danger"><h4>Attention!</h4><p>'+a+"</p></div>");b?c.appendTo(".bs-docs-container"):c.insertAfter(".bs-customize-download")}function d(a,b,c){$('<div class="alert alert-'+a+'">'+b+'<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button></div>').insertAfter(c)}function e(a){a=a.replace(/[*+?^$.\[\]{}()|\\\/]/g,"\\$&");var b=location.search.match(new RegExp("[?&]"+a+"=([^&]+)(&|$)"));return b&&decodeURIComponent(b[1].replace(/\+/g," "))}function f(c,d){var e={description:"Bootstrap Customizer Config","public":!0,files:{"config.json":{content:c}}};$.ajax({url:"https://api.github.com/gists",type:"POST",contentType:"application/json; charset=UTF-8",dataType:"json",data:JSON.stringify(e)}).success(function(a){var c=a.html_url,e=window.location.protocol+"//"+window.location.host,f=e+window.location.pathname+"?id="+a.id;b('<strong>Success!</strong> Your configuration has been saved to <a href="'+c+'">'+c+'</a> and can be revisited here at <a href="'+f+'">'+f+"</a> for further customization."),history.replaceState(!1,document.title,f),d(c,f)}).error(function(b){try{a("<strong>Ruh roh!</strong> Could not save gist file, configuration not saved.",b)}catch(c){}d("<none>","<none>")})}function g(){var a={};$("#less-variables-section input").each(function(){$(this).val()&&(a[$(this).prev().text()]=$(this).val())});var b={vars:a,css:$("#less-section input:checked").map(function(){return this.value}).toArray(),js:$("#plugin-section input:checked").map(function(){return this.value}).toArray()};if(!$.isEmptyObject(b.vars)||b.css.length||b.js.length)return b}function h(a){if(a.js&&$("#plugin-section input").each(function(){$(this).prop("checked",~$.inArray(this.value,a.js))}),a.css&&$("#less-section input").each(function(){$(this).prop("checked",~$.inArray(this.value,a.css))}),a.vars)for(var b in a.vars)$('input[data-var="'+b+'"]').val(a.vars[b])}function i(){var b=e("id");b&&$.ajax({url:"https://api.github.com/gists/"+b,type:"GET",dataType:"json"}).success(function(a){var b=JSON.parse(a.files["config.json"].content);h(b)}).error(function(b){a("Error fetching bootstrap config file",b)})}function j(b,c,d,e,f){if(!b&&!c)return a("<strong>Ruh roh!</strong> No Bootstrap files selected.",new Error("no Bootstrap"));var g=new JSZip;if(b){var h=g.folder("css");for(var i in b)h.file(i,b[i])}if(c){var j=g.folder("js");for(var k in c)j.file(k,c[k])}if(d){var l=g.folder("fonts");for(var m in d)l.file(m,d[m],{base64:!0})}e&&g.file("config.json",e);var n=g.generate({type:"blob"});f(n)}function k(a){var b="";for(var c in a)b+=c+": "+a[c]+";\n";return b+"\n\n"}function l(){var a=$('#less-section [value="glyphicons.less"]:checked');return a.length?__fonts:void 0}function m(a){var b=/^@import \"(.*?)\";$/,c=__less[a].split("\n"),d=[];return $.each(c,function(a,c){var e=b.exec(c);if(e){var f=e[1],g=m(f);$.each(g,function(a,b){-1===$.inArray(b,d)&&d.push(b)}),d.push(f)}}),d}function n(a,b,c){var d=__less[a],e=m(a);return $.each(e,function(a,e){var f=b[e];(f||null==f)&&(d+=__less[e]),"variables.less"===e&&c&&(d+=k(c))}),d=d.replace(/@import[^\n]*/gi,"")}function o(a,b,c){var d=$.Deferred(),e=new less.Parser({paths:["variables.less","mixins.less"],optimization:0,filename:b+".css"});return e.parse(a,function(a,e){return a?d.reject(a):(c[b+".css"]=v+e.toCSS(),c[b+".min.css"]=v+e.toCSS({compress:!0}),void d.resolve())}),d.promise()}function p(b){var c=$.Deferred(),d=!1,e={};if($("#less-section input").each(function(){var a=$(this),b=a.is(":checked");e[a.val()]=b,d=d||b}),!d)return!1;var f={},g={};$("#less-variables-section input").each(function(){$(this).val()&&(g[$(this).prev().text()]=$(this).val())});var h=b+n("bootstrap.less",e,g),i=b+n("theme.less",e,g),j=autoprefixer({browsers:__configBridge.autoprefixerBrowsers});return $.when(o(h,"bootstrap",f),o(i,"bootstrap-theme",f)).done(function(){for(var a in f)f[a]=j.process(f[a]).css;c.resolve(f)}).fail(function(b){a("<strong>Ruh roh!</strong> Could not parse less files.",b),c.reject()}),c.promise()}function q(a){var b=UglifyJS.parse(a);b.figure_out_scope();var c=UglifyJS.Compressor(),d=b.transform(c);d.figure_out_scope(),d.compute_char_frequency(),d.mangle_names();var e=UglifyJS.OutputStream();return d.print(e),e.toString()}function r(a){var b=$("#plugin-section input:checked"),c=__configBridge.jqueryCheck.join("\n"),d=__configBridge.jqueryVersionCheck.join("\n");if(!b.length)return!1;var e=b.map(function(){return __js[this.value]}).toArray().join("\n");return a=v+a,e=c+d+e,{"bootstrap.js":a+e,"bootstrap.min.js":a+q(e)}}function s(){x.nextAll(".alert").remove()}function t(a){a.stopPropagation(),a.preventDefault();var b=a.originalEvent.hasOwnProperty("dataTransfer")?a.originalEvent.dataTransfer.files[0]:a.originalEvent.target.files[0],c=new FileReader;c.onload=function(a){var b=a.target.result;try{var c=JSON.parse(b);if(!$.isPlainObject(c))throw new Error("JSON data from config file is not an object.");h(c),d("success","<strong>Woohoo!</strong> Your configuration was successfully uploaded. Tweak your settings, then hit Download.",x)}catch(e){return d("danger","<strong>Shucks.</strong> We can only read valid <code>.json</code> files. Please try again.",x)}},c.readAsText(b,"utf-8")}function u(a){a.stopPropagation(),a.preventDefault(),a.originalEvent.dataTransfer.dropEffect="copy",s()}var v="/*!\n * Bootstrap v3.3.0 (http://getbootstrap.com)\n * Copyright 2011-"+(new Date).getFullYear()+" Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n",w=window.File&&window.FileReader&&window.FileList&&window.Blob,x=$("#import-drop-target");w&&x.on("dragover",u).on("drop",t),$("#import-file-select").on("change",t),$("#import-manual-trigger").on("click",s);var y=$("#less-section input"),z=$("#plugin-section input"),A=$("#less-variables-section input");$("#less-section .toggle").on("click",function(a){a.preventDefault(),y.prop("checked",!y.is(":checked"))}),$("#plugin-section .toggle").on("click",function(a){a.preventDefault(),z.prop("checked",!z.is(":checked"))}),$("#less-variables-section .toggle").on("click",function(a){a.preventDefault(),A.val("")}),$("[data-dependencies]").on("click",function(){if($(this).is(":checked")){var a=this.getAttribute("data-dependencies");if(a){a=a.split(",");for(var b=0;b<a.length;b++){var c=$('[value="'+a[b]+'"]');c&&c.prop("checked",!0)}}}}),$("[data-dependents]").on("click",function(){if(!$(this).is(":checked")){var a=this.getAttribute("data-dependents");if(a){a=a.split(",");for(var b=0;b<a.length;b++){var c=$('[value="'+a[b]+'"]');c&&c.prop("checked",!1)}}}});var B=$("#btn-compile");B.on("click",function(a){var b=g(),c=JSON.stringify(b,null,2);a.preventDefault(),B.attr("disabled","disabled"),f(c,function(a,d){b.customizerUrl=d,c=JSON.stringify(b,null,2);var e="/*!\n * Generated using the Bootstrap Customizer ("+d+")\n * Config saved to config.json and "+a+"\n */\n";$.when(p(e),r(e),l()).done(function(a,b,d){j(a,b,d,c,function(a){B.removeAttr("disabled"),setTimeout(function(){saveAs(a,"bootstrap.zip")},0)})})})}),function(){function a(){$(".bs-docs-section, .bs-docs-sidebar").css("display","none"),c('Looks like your current browser doesn\'t support the Bootstrap Customizer. Please take a second to <a href="http://browsehappy.com/">upgrade to a more modern browser</a> (other than Safari).',!0)}var b=window.webkitURL||window.URL,d=new Blob(["<svg xmlns='http://www.w3.org/2000/svg'></svg>"],{type:"image/svg+xml;charset=utf-8"}),e=b.createObjectURL(d);null!==/^blob:/.exec(e)&&w?$("<img>").on("load",function(){B.prop("disabled",!1)}).on("error",a).attr("src",e):a()}(),i()};
\ No newline at end of file
diff --git a/docs/assets/js/src/customizer.js b/docs/assets/js/src/customizer.js
index 407427a15d2cdf1b3d3a77eec92bed877dab77e4..773db8549ac7d479a2f61224c89317aa4aba8657 100644
--- a/docs/assets/js/src/customizer.js
+++ b/docs/assets/js/src/customizer.js
@@ -22,8 +22,8 @@ window.onload = function () { // wait for load in a dumb way because B-0
   function showError(msg, err) {
     $('<div id="bsCustomizerAlert" class="bs-customizer-alert">' +
         '<div class="container">' +
-          '<a href="#bsCustomizerAlert" data-dismiss="alert" class="close pull-right">&times;</a>' +
-          '<p class="bs-customizer-alert-text"><span class="glyphicon glyphicon-warning-sign"></span>' + msg + '</p>' +
+          '<a href="#bsCustomizerAlert" data-dismiss="alert" class="close pull-right" aria-label="Close" role="button"><span aria-hidden="true">&times;</span></a>' +
+          '<p class="bs-customizer-alert-text"><span class="glyphicon glyphicon-warning-sign" aria-hidden="true"></span><span class="sr-only">Warning:</span>' + msg + '</p>' +
           (err.extract ? '<pre class="bs-customizer-alert-extract">' + err.extract.join('\n') + '</pre>' : '') +
         '</div>' +
       '</div>').appendTo('body').alert()
@@ -32,7 +32,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
 
   function showSuccess(msg) {
     $('<div class="bs-callout bs-callout-info">' +
-      '<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>' + msg +
+      '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>' + msg +
     '</div>').insertAfter('.bs-customize-download')
   }
 
@@ -50,7 +50,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
   }
 
   function showAlert(type, msg, insertAfter) {
-    $('<div class="alert alert-' + type + '">' + msg + '<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button></div>')
+    $('<div class="alert alert-' + type + '">' + msg + '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button></div>')
       .insertAfter(insertAfter)
   }
 
diff --git a/docs/examples/carousel/index.html b/docs/examples/carousel/index.html
index 6ffc66d5a198afc79fa48208e448f0a710c15acf..3d4d3b8365ce9d8a8fdad37602d9545e13519cd5 100644
--- a/docs/examples/carousel/index.html
+++ b/docs/examples/carousel/index.html
@@ -111,11 +111,11 @@
         </div>
       </div>
       <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
-        <span class="glyphicon glyphicon-chevron-left"></span>
+        <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
         <span class="sr-only">Previous</span>
       </a>
       <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
-        <span class="glyphicon glyphicon-chevron-right"></span>
+        <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
         <span class="sr-only">Next</span>
       </a>
     </div><!-- /.carousel -->
diff --git a/docs/examples/theme/index.html b/docs/examples/theme/index.html
index de9ea99bfde0bfbb712d928dabe5197d0669a790..546cbf2d47e51774e3528ce471e25b80db6cecb1 100644
--- a/docs/examples/theme/index.html
+++ b/docs/examples/theme/index.html
@@ -616,11 +616,11 @@
           </div>
         </div>
         <a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
-          <span class="glyphicon glyphicon-chevron-left"></span>
+          <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
           <span class="sr-only">Previous</span>
         </a>
         <a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
-          <span class="glyphicon glyphicon-chevron-right"></span>
+          <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
           <span class="sr-only">Next</span>
         </a>
       </div>