]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Merge branch 'master' into v4
authorMark Otto <markdotto@gmail.com>
Sun, 1 Mar 2015 21:44:10 +0000 (13:44 -0800)
committerMark Otto <markdotto@gmail.com>
Sun, 1 Mar 2015 21:44:10 +0000 (13:44 -0800)
Conflicts:
.travis.yml
Gruntfile.js
bower.json
dist/css/bootstrap.css
dist/css/bootstrap.css.map
dist/css/bootstrap.min.css
dist/js/bootstrap.js
dist/js/bootstrap.min.js
docs/_data/glyphicons.yml
docs/_includes/components/breadcrumbs.html
docs/_includes/components/button-dropdowns.html
docs/_includes/components/button-groups.html
docs/_includes/components/dropdowns.html
docs/_includes/components/glyphicons.html
docs/_includes/components/labels.html
docs/_includes/components/list-group.html
docs/_includes/components/media.html
docs/_includes/components/navs.html
docs/_includes/components/panels.html
docs/_includes/components/progress-bars.html
docs/_includes/components/thumbnails.html
docs/_includes/components/wells.html
docs/_includes/css/buttons.html
docs/_includes/css/forms.html
docs/_includes/css/helpers.html
docs/_includes/css/images.html
docs/_includes/css/less.html
docs/_includes/customizer-variables.html
docs/_includes/getting-started/accessibility.html
docs/_includes/getting-started/browser-device-support.html
docs/_includes/getting-started/community.html
docs/_includes/getting-started/examples.html
docs/_includes/getting-started/grunt.html
docs/_includes/getting-started/license.html
docs/_includes/getting-started/template.html
docs/_includes/header.html
docs/_includes/js/affix.html
docs/_includes/js/alerts.html
docs/_includes/js/carousel.html
docs/_includes/js/collapse.html
docs/_includes/js/dropdowns.html
docs/_includes/js/modal.html
docs/_includes/js/overview.html
docs/_includes/js/popovers.html
docs/_includes/js/scrollspy.html
docs/_includes/js/tabs.html
docs/_includes/js/tooltips.html
docs/_includes/js/transitions.html
docs/_includes/nav/javascript.html
docs/_layouts/default.html
docs/assets/css/docs.min.css
docs/assets/css/src/docs.css
docs/assets/js/customize.min.js
docs/assets/js/docs.min.js
docs/assets/js/raw-files.min.js
docs/assets/js/vendor/FileSaver.js
docs/assets/js/vendor/autoprefixer.js
docs/assets/js/vendor/uglify.min.js
docs/dist/css/bootstrap.css
docs/dist/css/bootstrap.css.map
docs/dist/css/bootstrap.min.css
docs/dist/js/bootstrap.min.js
docs/examples/blog/index.html
docs/examples/carousel/index.html
docs/examples/cover/index.html
docs/examples/dashboard/index.html
docs/examples/narrow-jumbotron/narrow-jumbotron.css
docs/examples/navbar-fixed-top/index.html
docs/examples/navbar-static-top/index.html
docs/examples/non-responsive/index.html
docs/examples/non-responsive/non-responsive.css
docs/examples/theme/index.html
grunt/configBridge.json
js/affix.js
js/carousel.js
js/collapse.js
js/dropdown.js
js/modal.js
js/popover.js
js/scrollspy.js
js/tab.js
js/tests/unit/affix.js
js/tests/unit/button.js
js/tests/unit/carousel.js
js/tests/unit/modal.js
js/tests/unit/tooltip.js
js/tooltip.js
less/badges.less
less/glyphicons.less
less/type.less
less/variables.less
package.json
scss/_dropdown.scss
scss/_forms.scss
test-infra/npm-shrinkwrap.json

46 files changed:
1  2 
CONTRIBUTING.md
Gruntfile.js
README.md
docs/_includes/footer.html
docs/about/license.md
docs/assets/js/src/application.js
docs/assets/scss/docs.scss
docs/components/helpers.md
docs/content/forms.md
docs/content/images.md
docs/dist/js/bootstrap.js
docs/examples/blog/index.html
docs/examples/carousel/index.html
docs/examples/cover/index.html
docs/examples/dashboard/index.html
docs/examples/grid/index.html
docs/examples/jumbotron/index.html
docs/examples/justified-nav/index.html
docs/examples/narrow-jumbotron/index.html
docs/examples/narrow-jumbotron/narrow-jumbotron.css
docs/examples/navbar/index.html
docs/examples/offcanvas/index.html
docs/examples/signin/index.html
docs/examples/starter-template/index.html
docs/examples/sticky-footer-navbar/index.html
docs/examples/sticky-footer/index.html
docs/examples/tooltip-viewport/index.html
docs/getting-started/accessibility.md
docs/getting-started/community.md
docs/getting-started/compiling.md
docs/getting-started/template.md
docs/index.html
docs/javascript/carousel.md
docs/javascript/modal.md
docs/javascript/popovers.md
docs/javascript/scrollspy.md
docs/javascript/tooltips.md
grunt/configBridge.json
grunt/sauce_browsers.yml
js/tests/index.html
js/tests/unit/collapse.js
js/tests/unit/popover.js
package.json
scss/_forms.scss
scss/_responsive-embed.scss
scss/_type.scss

diff --cc CONTRIBUTING.md
index c654e33729c1b4f9a036eb4c3f1f03ac34ea5619,40ffec448ca8f980471ec2633750e6929ac30398..95a003ecf4cc331453bdd7e80d39b4cede4c6189
@@@ -33,9 -33,10 +33,9 @@@ restrictions
  
  Our bug tracker utilizes several labels to help organize and identify issues. Here's what they represent and how we use them:
  
- - `browser bug` - Issues that are reported to us, but actually are the result of a browser-specific bug. These are diagnosed with reduced test cases and result in a issue opened on that browser's own bug tracker.
+ - `browser bug` - Issues that are reported to us, but actually are the result of a browser-specific bug. These are diagnosed with reduced test cases and result in an issue opened on that browser's own bug tracker.
  - `confirmed` - Issues that have been confirmed with a reduced test case and identify a bug in Bootstrap.
  - `css` - Issues stemming from our compiled CSS or source Less files.
 -- `customizer` - Issues with our web-based Customizer.
  - `docs` - Issues for improving or updating our documentation.
  - `examples` - Issues involving the example templates included in our docs.
  - `feature` - Issues asking for a new feature to be added, or an existing one to be extended or modified. New features require a minor version bump (e.g., `v3.0.0` to `v3.1.0`).
diff --cc Gruntfile.js
index 37d0b708bbe03cb33ae798ba08be1b4640098891,c5f252684df68a0f6448ed3bed06b924f60a0f60..a934eec88cbfe345835f05e8cd6eff894279ce62
@@@ -293,9 -279,18 +293,13 @@@ module.exports = function (grunt) 
      },
  
      copy: {
 -      fonts: {
 -        expand: true,
 -        src: 'fonts/*',
 -        dest: 'dist/'
 -      },
        docs: {
-         src: 'dist/*/*',
-         dest: 'docs/'
+         expand: true,
+         cwd: 'dist/',
+         src: [
+           '**/*'
+         ],
+         dest: 'docs/dist/'
        }
      },
  
        all: {
          options: {
            build: process.env.TRAVIS_JOB_ID,
 -          throttled: 10,
 +          concurrency: 10,
            maxRetries: 3,
            maxPollRetries: 4,
-           urls: ['http://127.0.0.1:3000/js/tests/index.html'],
+           urls: ['http://127.0.0.1:3000/js/tests/index.html?hidepassed'],
            browsers: grunt.file.readYAML('grunt/sauce_browsers.yml')
          }
        }
diff --cc README.md
Simple merge
Simple merge
index 4026241639fee2560f82fce217c58b3bc341040f,0000000000000000000000000000000000000000..24746dbca0e4135f58b11316330febf1288ca5e9
mode 100644,000000..100644
--- /dev/null
@@@ -1,32 -1,0 +1,32 @@@
- * Include the license and copyright notice in your works
 +---
 +layout: page
 +title: License FAQs
 +---
 +
 +Bootstrap is released under the MIT license and is copyright {{ site.time | date: "%Y" }} Twitter. Boiled down to smaller chunks, it can be described with the following conditions.
 +
 +#### It requires you to:
 +
++* Keep the license and copyright notice included in Bootstrap's CSS and JavaScript files when you use them in your works
 +
 +#### It permits you to:
 +
 +- Freely download and use Bootstrap, in whole or in part, for personal, private, company internal, or commercial purposes
 +- Use Bootstrap in packages or distributions that you create
 +- Modify the source code
 +- Grant a sublicense to modify and distribute Bootstrap to third parties not included in the license
 +
 +#### It forbids you to:
 +
 +- Hold the authors and license owners liable for damages as Bootstrap is provided without warranty
 +- Hold the creators or copyright holders of Bootstrap liable
 +- Redistribute any piece of Bootstrap without proper attribution
 +- Use any marks owned by Twitter in any way that might state or imply that Twitter endorses your distribution
 +- Use any marks owned by Twitter in any way that might state or imply that you created the Twitter software in question
 +
 +#### It does not require you to:
 +
 +- Include the source of Bootstrap itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it
 +- Submit changes that you make to Bootstrap back to the Bootstrap project (though such feedback is encouraged)
 +
 +The full Bootstrap license is located [in the project repository]({{ site.repo }}/blob/master/LICENSE) for more information.
Simple merge
index 8d22110eb7c00e1dcf8accbab215895cd14d6223,0000000000000000000000000000000000000000..f17b1ad22a4beac4e23f988bf1c95601e9b3c66f
mode 100644,000000..100644
--- /dev/null
@@@ -1,1442 -1,0 +1,1443 @@@
 +/*!
 + * Bootstrap Docs (http://getbootstrap.com)
 + * Copyright 2011-2014 Twitter, Inc.
 + * Licensed under the Creative Commons Attribution 3.0 Unported License. For
 + * details, see http://creativecommons.org/licenses/by/3.0/.
 + */
 +
 +// Import Bootstrap variables and mixins
 +@import "../../../scss/variables";
 +@import "../../../scss/mixins";
 +
 +// Import the syntax highlighting
 +@import "syntax";
++// @import "anchor"; // TODO: move anchor from src to scss directory
 +
 +// Local docs variables
 +$bs-purple:       #563d7c;
 +$bs-purple-light: #cdbfe3;
 +$bs-yellow:       #ffe484;
 +$bs-danger:       #d9534f;
 +$bs-warning:      #f0ad4e;
 +$bs-info:         #5bc0de;
 +
 +
 +// Scaffolding
 +//
 +// Update the basics of our documents to prep for docs content.
 +
 +body {
 +  position: relative; // For scrollspy?
 +}
 +
 +
 +//
 +// Buttons
 +//
 +
 +.btn-outline {
 +  color: $bs-purple;
 +  background-color: transparent;
 +  border-color: $bs-purple;
 +
 +  &:hover,
 +  &:focus,
 +  &:active {
 +    color: #fff;
 +    background-color:$bs-purple;
 +    border-color: $bs-purple;
 +  }
 +}
 +
 +.btn-outline-inverse {
 +  color: #fff;
 +  background-color: transparent;
 +  border-color: $bs-purple-light;
 +
 +  &:hover,
 +  &:focus,
 +  &:active {
 +    color: $bs-purple;
 +    text-shadow: none;
 +    background-color: #fff;
 +    border-color: #fff;
 +  }
 +}
 +
 +
 +//
 +// Bootstrap "B" icon
 +//
 +
 +.bs-docs-booticon {
 +  display: block;
 +  width: 9rem;
 +  height: 9rem;
 +  font-size: 6.5rem;
 +  font-weight: 500;
 +  line-height: 8.8rem;
 +  color: #fff;
 +  text-align: center;
 +  cursor: default;
 +  background-color: $bs-purple;
 +  border-radius: 15%;
 +
 +  &.inverse {
 +    color: $bs-purple;
 +    background-color: #fff;
 +  }
 +  &.outline {
 +    background-color: transparent;
 +    border: 1px solid $bs-purple-light;
 +  }
 +}
 +
 +
 +//
 +// Main navigation
 +//
 +
 +.bs-nav-home {
 +  margin-bottom: 0;
 +  background-color: #563d7c;
 +  border-bottom: 0;
 +
 +  .navbar-brand > a {
 +    font-weight: 500;
 +    color: #fff;
 +  }
 +
 +  .nav-link {
 +    font-weight: 500;
 +    color: #cdbfe3;
 +
 +    &:hover,
 +    &:focus {
 +      color: #fff;
 +      background-color: rgba(0,0,0,.5);
 +    }
 +  }
 +}
 +
 +// .bs-nav-home .navbar-toggle .icon-bar {
 +//   background-color: #fff;
 +// }
 +// .bs-nav-home .navbar-header .navbar-toggle {
 +//   border-color: #322f38;
 +// }
 +// .bs-nav-home .navbar-header .navbar-toggle:hover,
 +// .bs-nav-home .navbar-header .navbar-toggle:focus {
 +//   background-color: #29262f;
 +//   border-color: #29262f;
 +// }
 +
 +
 +//
 +// Footer
 +//
 +
 +.bs-docs-footer {
 +  margin-top: 6rem;
 +  font-size: 85%;
 +  color: #777;
 +  text-align: center;
 +  border-top: 1px solid #e5e5e5;
 +}
 +.bs-docs-footer-links {
 +  padding-left: 0;
 +  margin-top: 20px;
 +  color: #999;
 +}
 +.bs-docs-footer-links li {
 +  display: inline;
 +  padding: 0 2px;
 +}
 +.bs-docs-footer-links li:first-child {
 +  padding-left: 0;
 +}
 +
 +@media (min-width: 768px) {
 +  .bs-docs-footer p {
 +    margin-bottom: 0;
 +  }
 +  .bs-docs .bs-docs-footer {
 +    text-align: left;
 +  }
 +}
 +
 +
 +//
 +// Social buttons
 +//
 +
 +.bs-docs-social {
 +  margin-bottom: 1.5rem;
 +  text-align: center;
 +}
 +.bs-docs-social-buttons {
 +  display: inline-block;
 +  padding-left: 0;
 +  margin-bottom: 0;
 +  list-style: none;
 +}
 +.bs-docs-social-buttons li {
 +  display: inline-block;
 +  padding: .25rem .5rem;
 +  line-height: 1;
 +}
 +.bs-docs-social-buttons .twitter-follow-button {
 +  width: 225px !important;
 +}
 +.bs-docs-social-buttons .twitter-share-button {
 +  width: 98px !important;
 +}
 +
 +// Style the GitHub buttons via CSS instead of inline attributes
 +.github-btn {
 +  overflow: hidden;
 +  border: 0;
 +}
 +
 +@media (min-width: 768px) {
 +  .bs-docs .bs-docs-social {
 +    margin-left: -.5rem;
 +    text-align: left;
 +  }
 +}
 +
 +
 +//
 +// Homepage
 +//
 +
 +// Masthead (headings and download button)
 +.bs-docs-masthead {
 +  position: relative;
 +  padding: 2rem 1rem;
 +  color: #cdbfe3;
 +  text-align: center;
 +  text-shadow: 0 1px 0 rgba(0,0,0,.1);
 +  background-color: #6f5499;
 +  @include gradient-vertical($bs-purple, #6f5499);
 +}
 +
 +.bs-docs-masthead .bs-docs-booticon {
 +  margin: 0 auto 2rem;
 +}
 +.bs-docs-masthead h1 {
 +  font-weight: 300;
 +  line-height: 1;
 +  color: #fff;
 +}
 +.bs-docs-masthead .lead {
 +  margin: 0 auto 2rem;
 +  font-size: 1.25rem;
 +  color: #fff;
 +}
 +.bs-docs-masthead .version {
 +  margin-top: -1rem;
 +  margin-bottom: 2rem;
 +  color: #9783b9;
 +}
 +.bs-docs-masthead .btn {
 +  width: 100%;
 +  padding: 1rem 2rem;
 +  font-size: 1.25rem;
 +}
 +
 +@media (min-width: 480px) {
 +  .bs-docs-masthead .btn {
 +    width: auto;
 +  }
 +}
 +
 +@media (min-width: 768px) {
 +  .bs-docs-masthead {
 +    padding: 5rem 0;
 +  }
 +  .bs-docs-masthead h1 {
 +    font-size: 4rem;
 +  }
 +  .bs-docs-masthead .lead {
 +    font-size: 1.5rem;
 +  }
 +}
 +
 +@media (min-width: 992px) {
 +  .bs-docs-masthead .lead {
 +    width: 80%;
 +    font-size: 2rem;
 +  }
 +}
 +
 +
 +//
 +// Page headers
 +//
 +
 +.bs-docs-header {
 +  padding-top: 2rem;
 +  padding-bottom: 2rem;
 +  margin-bottom: 2rem;
 +  text-align: center;
 +  background-color: $bs-purple;
 +
 +  .container {
 +    position: relative;
 +  }
 +
 +  h1 {
 +    margin-top: 0;
 +    color: #fff;
 +  }
 +
 +  p {
 +    margin-bottom: 0;
 +    font-weight: 300;
 +    color: rgba(255,255,255,.65);
 +  }
 +
 +  @media (min-width: 768px) {
 +    text-align: left;
 +
 +    h1 {
 +      font-size: 4rem;
 +      line-height: 1;
 +    }
 +  }
 +
 +  @media (min-width: 992px) {
 +    padding-top: 4rem;
 +    padding-bottom: 4rem;
 +
 +    h1,
 +    p {
 +      margin-right: 380px;
 +    }
 +  }
 +}
 +
 +
 +//
 +// Carbon ads
 +//
 +
 +.carbonad {
 +  width: auto !important;
 +  height: auto !important;
 +  padding: 1.25rem !important;
 +  margin: 0 -1rem 2rem !important;
 +  overflow: hidden; /* clearfix */
 +  font-size: .8rem !important;
 +  line-height: 1rem !important;
 +  color: $gray !important;
 +  text-align: left;
 +  background: #f5f5f5 !important;
 +  border: 0 !important;
 +  // border: solid #e5e5e5 !important;
 +  // border-width: 1px 0 !important;
 +}
 +.carbonad-img {
 +  margin: 0 !important;
 +}
 +.carbonad-text,
 +.carbonad-tag {
 +  display: block !important;
 +  float: none !important;
 +  width: auto !important;
 +  height: auto !important;
 +  margin-left: 145px !important;
 +  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important;
 +}
 +.carbonad-text {
 +  padding-top: 0 !important;
 +}
 +.carbonad-tag {
 +  color: inherit !important;
 +  text-align: left !important;
 +}
 +.carbonad-text a,
 +.carbonad-tag a {
 +  color: $gray !important;
 +
 +  &:hover {
 +    color: $brand-primary !important;
 +  }
 +}
 +.carbonad #azcarbon > img {
 +  display: none; // hide what I assume are tracking images
 +}
 +
 +// In the lighter page headers
 +// .bs-docs-header .carbonad {
 +//   color: #777;
 +//   background-color: #fff !important;
 +//   border-color: #eee !important;
 +// }
 +// .bs-docs-header .carbonad-text a,
 +// .bs-docs-header .carbonad-tag a {
 +//   color: $bs-purple !important;
 +// }
 +
 +@include media-breakpoint-up(sm) {
 +  .carbonad {
 +    width: 330px !important;
 +    margin: 1.5rem auto !important;
 +    border-width: 1px !important;
 +    border-radius: .25rem;
 +  }
 +  .bs-docs-masthead .carbonad {
 +    margin: 3rem auto 0 !important;
 +  }
 +}
 +
 +@include media-breakpoint-up(md) {
 +  .carbonad {
 +    margin-right: 0 !important;
 +    margin-left: 0 !important;
 +  }
 +}
 +
 +@include media-breakpoint-up(lg) {
 +  .carbonad {
 +    float: right;
 +    width: 330px !important;
 +    padding: 1rem !important;
 +    margin: .5rem 0 1rem 2rem !important;
 +  }
 +  .bs-docs-masthead {
 +    .carbonad {
 +      float: none;
 +      margin: 0 auto !important;
 +      color: $bs-purple-light !important;
 +      background: transparent !important;
 +      border: 1px solid #866ab3 !important;
 +    }
 +    .carbonad-text a,
 +    .carbonad-tag a {
 +      color: #fff !important;
 +    }
 +  }
 +}
 +
 +
 +//
 +// Homepage featurettes
 +//
 +
 +.bs-docs-featurette {
 +  padding-top: 3rem;
 +  padding-bottom: 3rem;
 +  font-size: 1rem;
 +  line-height: 1.5;
 +  color: #555;
 +  text-align: center;
 +  background-color: #fff;
 +  border-bottom: 1px solid #e5e5e5;
 +}
 +.bs-docs-featurette + .bs-docs-footer {
 +  margin-top: 0;
 +  border-top: 0;
 +}
 +
 +.bs-docs-featurette-title {
 +  margin-bottom: .5rem;
 +  font-size: 2rem;
 +  font-weight: normal;
 +  color: #333;
 +}
 +.half-rule {
 +  width: 6rem;
 +  margin: 2.5rem auto;
 +}
 +.bs-docs-featurette h3 {
 +  margin-bottom: .5rem;
 +  font-weight: normal;
 +  color: #333;
 +}
 +.bs-docs-featurette-img {
 +  display: block;
 +  margin-bottom: 1.25rem;
 +  color: #333;
 +}
 +.bs-docs-featurette-img:hover {
 +  color: $brand-primary;
 +  text-decoration: none;
 +}
 +.bs-docs-featurette-img img {
 +  display: block;
 +  margin-bottom: 1rem;
 +}
 +
 +@media (min-width: 480px) {
 +  .bs-docs-featurette .img-responsive {
 +    margin-top: 2rem;
 +  }
 +}
 +@media (min-width: 768px) {
 +  .bs-docs-featurette {
 +    padding-top: 6rem;
 +    padding-bottom: 6rem;
 +  }
 +  .bs-docs-featurette-title {
 +    font-size: 2.5rem;
 +  }
 +  .bs-docs-featurette .lead {
 +    max-width: 80%;
 +    margin-right: auto;
 +    margin-left: auto;
 +  }
 +  .bs-docs-featurette .img-responsive {
 +    margin-top: 0;
 +  }
 +}
 +
 +
 +//
 +// Featured Expo sites
 +//
 +
 +.bs-docs-featured-sites {
 +  margin-right: -1px;
 +  margin-left: -1px;
 +}
 +.bs-docs-featured-sites .col-xs-6 {
 +  padding: 1px;
 +}
 +.bs-docs-featured-sites .img-responsive {
 +  margin-top: 0;
 +}
 +
 +@media (min-width: 768px) {
 +  .bs-docs-featured-sites .col-sm-3:first-child img {
 +    border-top-left-radius: .25rem;
 +    border-bottom-left-radius: .25rem;
 +  }
 +  .bs-docs-featured-sites .col-sm-3:last-child img {
 +    border-top-right-radius: .25rem;
 +    border-bottom-right-radius: .25rem;
 +  }
 +}
 +
 +
 +//
 +// Examples
 +//
 +
 +.bs-examples .img-thumbnail {
 +  margin-bottom: .75rem;
 +}
 +.bs-examples h4 {
 +  margin-bottom: .25rem;
 +}
 +.bs-examples p {
 +  margin-bottom: 1.25rem;
 +}
 +
 +@media (max-width: 480px) {
 +  .bs-examples {
 +    margin-right: -.75rem;
 +    margin-left: -.75rem;
 +  }
 +  .bs-examples > [class^="col-"] {
 +    padding-right: .75rem;
 +    padding-left: .75rem;
 +  }
 +}
 +
 +
 +//
 +// Custom container
 +//
 +
 +.bs-docs-container {
 +  position: relative;
 +  max-width: 62rem;
 +  padding: 0 1rem 1rem;
 +  margin-right: auto;
 +  margin-left: auto;
 +
 +  @media (min-width: 768px) {
 +    padding: 2rem;
 +  }
 +
 +  @media (min-width: 992px) {
 +    padding: 4rem;
 +  }
 +
 +  > table {
 +    display: block;
 +    width: 100%;
 +    max-width: 100%;
 +    overflow-y: auto;
 +    margin-bottom: $spacer;
 +    // border: 1px solid $table-border-color;
 +
 +    // Cells
 +    > thead,
 +    > tbody,
 +    > tfoot {
 +      > tr {
 +        > th,
 +        > td {
 +          padding: $table-cell-padding;
 +          line-height: $line-height-base;
 +          vertical-align: top;
 +          // border-top: 1px solid $table-border-color;
 +          border: 1px solid $table-border-color;
 +        }
 +      }
 +    }
 +  }
 +}
 +
 +
 +//
 +// Side navigation
 +//
 +
 +.bs-docs-sidebar {
 +  padding: 0;
 +  margin-bottom: 0;
 +  background-color: #322f38;
 +}
 +
 +.bs-docs-sidebar .navbar-toggle {
 +  position: absolute;
 +  top: 5px;
 +  right: 0;
 +  z-index: 5;
 +}
 +.bs-docs-sidebar .navbar-toggle .icon-bar {
 +  background-color: #fff;
 +}
 +
 +.bs-docs-sidebar .navbar-header {
 +  float: none;
 +  margin-right: -15px;
 +}
 +
 +.bs-docs-sidebar .navbar-collapse {
 +  padding: 0;
 +  border: 0;
 +}
 +
 +@media (min-width: 992px) {
 +  .bs-docs {
 +    padding-left: 240px;
 +  }
 +  .bs-docs-sidebar {
 +    position: fixed;
 +    top: 0;
 +    bottom: 0;
 +    left: 0;
 +    z-index: 100; // Ensure scrolling always works in Safari
 +    width: 240px;
 +    overflow-x: hidden;
 +    overflow-y: auto;
 +    @include gradient-vertical(#29262f, #322f38);
 +  }
 +}
 +
 +.bs-docs-sidebar .navbar-brand {
 +  display: block;
 +  float: none;
 +  height: auto;
 +  padding: 1.75rem 1.25rem;
 +  font-size: 20px;
 +  font-weight: 500;
 +  line-height: 1;
 +  color: #fff;
 +}
 +.bs-docs-sidebar-brand:hover,
 +.bs-docs-sidebar-brand:focus {
 +  color: #fff;
 +  text-decoration: none;
 +}
 +
 +.bs-docs-search {
 +  position: relative;
 +  margin-right: 1.25rem;
 +  margin-bottom: 1.5rem;
 +  margin-left: 1.25rem;
 +
 +  .form-control {
 +    height: 2.45rem;
 +    padding-top: .4rem;
 +    padding-bottom: .4rem;
 +    color: rgba(255,255,255,.5);
 +    background-color: lighten(#29262f, 10%);
 +    border-color: lighten(#29262f, 15%);
 +
 +    &:focus {
 +      border-color: rgba(255,255,255,.25);
 +      box-shadow: 0 0 .5rem rgba(255,255,255,.25);
 +    }
 +  }
 +}
 +
 +.bs-docs-search-results {
 +  top: 108%;
 +  right: 0;
 +  display: block;
 +  padding: 0;
 +  overflow: hidden;
 +  font-size: .9rem;
 +  border: 0;
 +
 +  > li > a {
 +    padding-left: .75rem;
 +    padding-right: .75rem;
 +  }
 +
 +  > li:first-child { margin-top: .25rem; }
 +  > li:last-child { margin-bottom: .25rem; }
 +
 +   > .no-results {
 +    padding: .75rem 1rem;
 +    color: #7a7a7a;
 +    text-align: center;
 +  }
 +}
 +
 +
 +.bs-docs-toc-link {
 +  display: block;
 +  padding: 4px 20px;
 +  font-size: 16px;
 +  color: #fff;
 +}
 +.bs-docs-toc-link:hover,
 +.bs-docs-toc-link:focus {
 +  color: $bs-yellow;
 +  text-decoration: none;
 +}
 +.active > .bs-docs-toc-link {
 +  font-weight: 500;
 +  color: $bs-yellow;
 +}
 +.active > .bs-docs-sidenav {
 +  display: block;
 +}
 +
 +.bs-docs-toc-item.active {
 +  margin-top: 15px;
 +  margin-bottom: 15px;
 +}
 +.bs-docs-toc-item:first-child {
 +  margin-top: 0;
 +}
 +.bs-docs-toc-item:last-child {
 +  margin-bottom: 30px;
 +}
 +
 +// All levels of nav
 +.bs-docs-sidebar .nav > li > a {
 +  display: block;
 +  padding: 4px 20px;
 +  font-size: 14px;
 +  color: #99979c;
 +}
 +.bs-docs-sidebar .nav > li > a:hover,
 +.bs-docs-sidebar .nav > li > a:focus {
 +  color: $bs-yellow;
 +  text-decoration: none;
 +  background-color: transparent;
 +}
 +.bs-docs-sidebar .nav > .active > a,
 +.bs-docs-sidebar .nav > .active:hover > a,
 +.bs-docs-sidebar .nav > .active:focus > a {
 +  font-weight: 500;
 +  color: $bs-yellow;
 +  background-color: transparent;
 +}
 +
 +// Nav: second level (shown on .active)
 +.bs-docs-sidebar .nav .nav {
 +  display: none; // Hide by default, but at >768px, show it
 +  padding-bottom: 10px;
 +}
 +.bs-docs-sidebar .nav .nav > li > a {
 +  padding-top: 1px;
 +  padding-bottom: 1px;
 +  padding-left: 30px;
 +  font-size: 12px;
 +  font-weight: normal;
 +}
 +.bs-docs-sidebar .nav .nav > .active > a,
 +.bs-docs-sidebar .nav .nav > .active:hover > a,
 +.bs-docs-sidebar .nav .nav > .active:focus > a {
 +  font-weight: 500;
 +}
 +
 +.bs-docs-sidebar .nav > .active > .nav {
 +  display: block;
 +}
 +.bs-docs-sidebar .nav .nav > li > a {
 +  padding-top: 2px;
 +  padding-bottom: 2px;
 +  padding-left: 30px;
 +  font-size: 13px;
 +}
 +
 +
 +//
 +// Docs sections
 +//
 +
 +.bs-docs-content {
 +  > h2 {
 +    margin-top: 3rem;
 +    font-weight: normal;
 +  }
 +
 +  > h3 {
 +    margin-top: 1.5rem;
 +  }
 +}
 +
 +.bs-docs-title {
 +  + p {
 +    font-size: 1.25rem;
 +    font-weight: 300;
 +  }
 +
 +  @include media-breakpoint-up(sm) {
 +    margin-right: 23rem;
 +    font-size: 4rem;
 +
 +    + p {
 +      margin-right: 23rem;
 +    }
 +  }
 +}
 +
 +
 +//
 +// Callouts
 +//
 +
 +.bs-callout {
 +  padding: 1.25rem;
 +  margin-top: 1.25rem;
 +  margin-bottom: 1.25rem;
 +  border: 1px solid #eee;
 +  border-left-width: .25rem;
 +  border-radius: .25rem;
 +}
 +.bs-callout h4 {
 +  margin-top: 0;
 +  margin-bottom: .25rem;
 +}
 +.bs-callout p:last-child {
 +  margin-bottom: 0;
 +}
 +.bs-callout code {
 +  border-radius: .25rem;
 +}
 +
 +.bs-callout + .bs-callout {
 +  margin-top: -.25rem;
 +}
 +
 +// Variations
 +@mixin bs-callout-variant($color) {
 +  border-left-color: $color;
 +
 +  h4 { color: $color; }
 +}
 +.bs-callout-danger  { @include bs-callout-variant($bs-danger); }
 +.bs-callout-warning { @include bs-callout-variant($bs-warning); }
 +.bs-callout-info    { @include bs-callout-variant($bs-info); }
 +
 +
 +//
 +// Color swatches
 +//
 +
 +.color-swatches {
 +  margin: 0 -5px;
 +  overflow: hidden; // clearfix
 +}
 +
 +.color-swatch {
 +  float: left;
 +  width: 4rem;
 +  height: 4rem;
 +  margin-right: .25rem;
 +  margin-left: .25rem;
 +  border-radius: .25rem;
 +
 +  @media (min-width: 768px) {
 +    width: 6rem;
 +    height: 6rem;
 +  }
 +}
 +
 +// Docs colors
 +.color-swatches {
 +  .bs-purple {
 +    background-color: $bs-purple;
 +  }
 +  .bs-purple-light {
 +    background-color: $bs-purple-light;
 +  }
 +  .bs-purple-lighter {
 +    background-color: #e5e1ea;
 +  }
 +  .bs-gray {
 +    background-color: #f9f9f9;
 +  }
 +}
 +
 +
 +//
 +// Team members
 +//
 +
 +.bs-team {
 +  .team-member {
 +    line-height: 2rem;
 +    color: #555;
 +  }
 +  .team-member:hover {
 +    color: #333;
 +    text-decoration: none;
 +  }
 +  .github-btn {
 +    float: right;
 +    width: 180px;
 +    height: 1.25rem;
 +    margin-top: .25rem;
 +  }
 +  img {
 +    float: left;
 +    width: 2rem;
 +    margin-right: .5rem;
 +    border-radius: .25rem;
 +  }
 +}
 +
 +
 +// Wall of Browser Bugs
 +//
 +// Better display for the responsive table on the Wall of Browser Bugs.
 +
 +.bs-docs-browser-bugs {
 +  td p {
 +    margin-bottom: 0;
 +  }
 +  th:first-child {
 +    width: 18%;
 +  }
 +}
 +
 +//
 +// Grid examples
 +//
 +
 +.bs-example > .row {
 +  margin-bottom: 1rem;
 +}
 +.bs-example > .row > [class^="col-"] {
 +  padding-top: .75rem;
 +  padding-bottom: .75rem;
 +  background-color: rgba(86,61,124,.15);
 +  border: 1px solid rgba(86,61,124,.2);
 +}
 +
 +
 +//
 +// Docs examples
 +//
 +
 +.bs-example {
 +  position: relative;
 +  padding: 1rem;
 +  margin: 1rem -1rem;
 +  border: solid #f7f7f9;
 +  border-width: .2rem 0 0;
 +  @include clearfix();
 +
 +  @include media-breakpoint-up(sm) {
 +    margin-bottom: -1rem;
 +    padding: 1.5rem;
 +    border-width: .2rem;
 +  }
 +
 +  + p {
 +    margin-top: 2rem;
 +  }
 +
 +  // Undo width of container
 +  .container {
 +    width: auto;
 +  }
 +
 +  // Card examples should be horizontal
 +  > .card {
 +    float: left;
 +    max-width: 15rem;
 +    margin: .25rem;
 +  }
 +
 +  > .nav + .nav {
 +    margin-top: 1rem;
 +  }
 +}
 +
 +
 +// Tweak content of examples for optimum awesome
 +.bs-example > *:last-child,
 +.bs-example > .table-responsive:last-child > .table {
 +  margin-bottom: 0 !important;
 +}
 +.bs-example > .close {
 +  float: none;
 +}
 +
 +// Typography
 +.bs-example-type .table .type-info {
 +  color: #999;
 +  vertical-align: middle;
 +}
 +.bs-example-type .table td {
 +  padding: 1rem 0;
 +  border-color: #eee;
 +}
 +.bs-example-type .table tr:first-child td {
 +  border-top: 0;
 +}
 +.bs-example-type h1,
 +.bs-example-type h2,
 +.bs-example-type h3,
 +.bs-example-type h4,
 +.bs-example-type h5,
 +.bs-example-type h6 {
 +  margin: 0;
 +}
 +
 +// Contextual background colors
 +.bs-example-bg-classes p {
 +  padding: 1rem;
 +}
 +
 +// Images
 +.bs-example > .img-circle,
 +.bs-example > .img-rounded,
 +.bs-example > .img-thumbnail {
 +  margin: .25rem;
 +}
 +
 +// Tables
 +// .bs-example > .table-responsive > .table {
 +//   background-color: #fff;
 +// }
 +
 +// Buttons
 +.bs-example > .btn-group {
 +  margin-top: .25rem;
 +  margin-bottom: .25rem;
 +}
 +.bs-example > .btn-toolbar + .btn-toolbar {
 +  margin-top: .5rem;
 +}
 +
 +// Forms
 +.bs-example-control-sizing select,
 +.bs-example-control-sizing input[type="text"] + input[type="text"] {
 +  margin-top: .5rem;
 +}
 +.bs-example-form .input-group {
 +  margin-bottom: .5rem;
 +}
 +.bs-example > textarea.form-control {
 +  resize: vertical;
 +}
 +
 +// List groups
 +.bs-example > .list-group {
 +  max-width: 400px;
 +}
 +
 +// Navbars
 +.bs-example .navbar:last-child {
 +  margin-bottom: 0;
 +}
 +.bs-navbar-top-example,
 +.bs-navbar-bottom-example {
 +  z-index: 1;
 +  padding: 0;
 +  overflow: hidden; // cut the drop shadows off
 +}
 +.bs-navbar-top-example .navbar-header,
 +.bs-navbar-bottom-example .navbar-header {
 +  margin-left: 0;
 +}
 +.bs-navbar-top-example .navbar-fixed-top,
 +.bs-navbar-bottom-example .navbar-fixed-bottom {
 +  position: relative;
 +  margin-right: 0;
 +  margin-left: 0;
 +}
 +.bs-navbar-top-example {
 +  padding-bottom: 45px;
 +}
 +.bs-navbar-top-example .navbar-fixed-top {
 +  top: -1px;
 +}
 +.bs-navbar-bottom-example {
 +  padding-top: 45px;
 +}
 +.bs-navbar-bottom-example .navbar-fixed-bottom {
 +  bottom: -1px;
 +}
 +.bs-navbar-bottom-example .navbar {
 +  margin-bottom: 0;
 +}
 +@media (min-width: 768px) {
 +  .bs-navbar-top-example .navbar-fixed-top,
 +  .bs-navbar-bottom-example .navbar-fixed-bottom {
 +    position: absolute;
 +  }
 +}
 +
 +// Pagination
 +.bs-example .pagination {
 +  margin-top: .5rem;
 +  margin-bottom: .5rem;
 +}
 +
 +// Pager
 +.bs-example > .pager {
 +  margin-top: 0;
 +}
 +
 +// Example modals
 +.bs-example-modal {
 +  background-color: #f5f5f5;
 +}
 +.bs-example-modal .modal {
 +  position: relative;
 +  top: auto;
 +  right: auto;
 +  bottom: auto;
 +  left: auto;
 +  z-index: 1;
 +  display: block;
 +}
 +.bs-example-modal .modal-dialog {
 +  left: auto;
 +  margin-right: auto;
 +  margin-left: auto;
 +}
 +
 +// Example dropdowns
 +.bs-example > .dropdown > .dropdown-toggle {
 +  float: left;
 +}
 +.bs-example > .dropdown > .dropdown-menu {
 +  position: static;
 +  display: block;
 +  margin-bottom: .25rem;
 +  clear: left;
 +}
 +
 +// Example tabbable tabs
 +.bs-example-tabs .nav-tabs {
 +  margin-bottom: 1rem;
 +}
 +
 +// Tooltips
 +.bs-example-tooltips {
 +  text-align: center;
 +}
 +.bs-example-tooltips > .btn {
 +  margin-top: .25rem;
 +  margin-bottom: .25rem;
 +}
 +
 +// Popovers
 +.bs-example-popover {
 +  padding-bottom: 1.5rem;
 +  background-color: #f9f9f9;
 +}
 +.bs-example-popover .popover {
 +  position: relative;
 +  display: block;
 +  float: left;
 +  width: 260px;
 +  margin: 1.25rem;
 +}
 +
 +// Tooltips
 +.bs-example-tooltip .tooltip {
 +  position: relative;
 +  display: inline-block;
 +  margin: 10px 20px;
 +  opacity: 1;
 +}
 +
 +// Scrollspy demo on fixed height div
 +.scrollspy-example {
 +  position: relative;
 +  height: 200px;
 +  margin-top: .5rem;
 +  overflow: auto;
 +}
 +
 +// Helpers
 +.bs-example > {
 +  .center-block {
 +    max-width: 200px;
 +    padding: .5rem;
 +    background-color: #eee;
 +  }
 +
 +  .bg-primary,
 +  .bg-success,
 +  .bg-info,
 +  .bg-warning,
 +  .bg-danger {
 +    padding: .5rem;
 +    margin-top: .5rem;
 +    margin-bottom: .5rem;
 +  }
 +}
 +
 +
 +//
 +// Code snippets
 +//
 +
 +.highlight {
 +  padding: 1rem;
 +  margin: -1rem -1rem 1rem;
 +  background-color: #f7f7f9;
 +
 +  @include media-breakpoint-up(sm) {
 +    padding: 1.5rem;
 +    margin: 1rem 0;
 +  }
 +}
 +.highlight pre {
 +  padding: 0;
 +  margin-top: 0;
 +  margin-bottom: 0;
 +  background-color: transparent;
 +  border: 0;
 +}
 +.highlight pre code {
 +  font-size: inherit;
 +  color: $gray-dark; // Effectively the base text color
 +}
 +
 +
 +//
 +// Responsive tests
 +//
 +
 +// Responsive (scrollable) doc tables
 +.table-responsive .highlight pre {
 +  white-space: normal;
 +}
 +
 +// Utility classes table
 +.bs-table th small,
 +.responsive-utilities th small {
 +  display: block;
 +  font-weight: normal;
 +  color: #999;
 +}
 +.responsive-utilities tbody th {
 +  font-weight: normal;
 +}
 +.responsive-utilities td {
 +  text-align: center;
 +}
 +.responsive-utilities td.is-visible {
 +  color: #468847;
 +  background-color: #dff0d8 !important;
 +}
 +.responsive-utilities td.is-hidden {
 +  color: #ccc;
 +  background-color: #f9f9f9 !important;
 +}
 +
 +// Responsive tests
 +.responsive-utilities-test {
 +  margin-top: .25rem;
 +}
 +.responsive-utilities-test .col-xs-6 {
 +  margin-bottom: .5rem;
 +}
 +.responsive-utilities-test span {
 +  display: block;
 +  padding: 1rem .5rem;
 +  font-size: 1rem;
 +  font-weight: bold;
 +  line-height: 1.1;
 +  text-align: center;
 +  border-radius: .25rem;
 +}
 +.visible-on,
 +.hidden-on {
 +  .col-xs-6 {
 +    > .not-visible {
 +      color: #999;
 +      border: 1px solid #ddd;
 +    }
 +  }
 +}
 +.visible-on,
 +.hidden-on {
 +  .col-xs-6 {
 +    .visible {
 +      color: #468847;
 +      background-color: #dff0d8;
 +      border: 1px solid #d6e9c6;
 +    }
 +  }
 +}
 +
 +@include media-breakpoint-only(xs) {
 +  .hidden-xs-only {
 +    display: none !important;
 +  }
 +}
 +@include media-breakpoint-only(sm) {
 +  .hidden-sm-only {
 +    display: none !important;
 +  }
 +}
 +@include media-breakpoint-only(md) {
 +  .hidden-md-only {
 +    display: none !important;
 +  }
 +}
 +@include media-breakpoint-only(lg) {
 +  .hidden-lg-only {
 +    display: none !important;
 +  }
 +}
 +@include media-breakpoint-only(xl) {
 +  .hidden-xl-only {
 +    display: none !important;
 +  }
 +}
 +
 +//
 +// Brand guidelines
 +//
 +
 +// Logo series wrapper
 +.bs-brand-logos {
 +  display: table;
 +  width: 100%;
 +  margin-bottom: 1rem;
 +  overflow: hidden;
 +  color: #563d7c;
 +  background-color: #f9f9f9;
 +  border-radius: .25rem;
 +}
 +
 +// Individual items
 +.bs-brand-item {
 +  padding: 4rem 0;
 +  text-align: center;
 +}
 +.bs-brand-item + .bs-brand-item {
 +  border-top: 1px solid #fff;
 +}
 +.bs-brand-logos .inverse {
 +  color: #fff;
 +  background-color: #563d7c;
 +}
 +
 +// Heading content within
 +.bs-brand-item h1,
 +.bs-brand-item h3 {
 +  margin-top: 0;
 +  margin-bottom: 0;
 +}
 +.bs-brand-item .bs-docs-booticon {
 +  margin-right: auto;
 +  margin-left: auto;
 +}
 +
 +// Make the icons stand out on what is/isn't okay
 +// .bs-brand-item .glyphicon {
 +//   width: 30px;
 +//   height: 30px;
 +//   margin: 10px auto -10px;
 +//   line-height: 30px;
 +//   color: #fff;
 +//   border-radius: 50%;
 +// }
 +// .bs-brand-item .glyphicon-ok {
 +//   background-color: #5cb85c;
 +// }
 +// .bs-brand-item .glyphicon-remove {
 +//   background-color: #d9534f;
 +// }
 +
 +@media (min-width: 768px) {
 +  .bs-brand-item {
 +    display: table-cell;
 +    width: 1%;
 +  }
 +  .bs-brand-item + .bs-brand-item {
 +    border-top: 0;
 +    border-left: 1px solid #fff;
 +  }
 +  .bs-brand-item h1 {
 +    font-size: 4rem;
 +  }
 +}
 +
 +
 +//
 +// ZeroClipboard styles
 +//
 +
 +.zero-clipboard {
 +  position: relative;
 +  display: none;
 +  float: right;
 +}
 +.btn-clipboard {
 +  position: absolute;
 +  top: 0;
 +  right: 0;
 +  z-index: 10;
 +  display: block;
 +  padding: .25rem .5rem;
 +  font-size: 75%;
 +  color: #818a91;
 +  cursor: pointer;
 +  background-color: #eceeef;
 +  border-radius: 0 .2rem 0 .2rem;
 +}
 +.btn-clipboard-hover {
 +  color: #fff;
 +  background-color: #027de7;
 +}
 +
 +@media (min-width: 768px) {
 +  .zero-clipboard {
 +    display: block;
 +  }
 +}
 +
 +
 +//
 +// Miscellaneous
 +//
 +
 +// Pseudo :focus state for showing how it looks in the docs
 +#focusedInput {
 +  border-color: $input-border-focus;
 +  outline: 0;
 +  outline: thin dotted \9; // IE9
 +  box-shadow: 0 0 .5rem $input-box-shadow-focus;
 +}
index 6e5bac31858c2364f78787f07e4994b1aefb9d54,0000000000000000000000000000000000000000..844db2d9f7fd12357f04fa6d56c78b6b804f9c1f
mode 100644,000000..100644
--- /dev/null
@@@ -1,194 -1,0 +1,194 @@@
- // Classes
 +---
 +layout: page
 +title: Helper classes
 +---
 +
 +### Contextual colors
 +
 +Convey meaning through color with a handful of emphasis utility classes. These may also be applied to links and will darken on hover just like our default link styles.
 +
 +{% example html %}
 +<p class="text-muted">Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.</p>
 +<p class="text-primary">Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
 +<p class="text-success">Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</p>
 +<p class="text-info">Maecenas sed diam eget risus varius blandit sit amet non magna.</p>
 +<p class="text-warning">Etiam porta sem malesuada magna mollis euismod.</p>
 +<p class="text-danger">Donec ullamcorper nulla non metus auctor fringilla.</p>
 +{% endexample %}
 +
 +<div class="bs-callout bs-callout-info">
 +  <h4>Dealing with specificity</h4>
 +  <p>Sometimes emphasis classes cannot be applied due to the specificity of another selector. In most cases, a sufficient workaround is to wrap your text in a <code>&lt;span&gt;</code> with the class.</p>
 +</div>
 +<div class="bs-callout bs-callout-warning">
 +  <h4>Conveying meaning to assistive technologies</h4>
 +  <p>Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies â€“ such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (the contextual colors are only used to reinforce meaning that is already present in the text/markup), or is included through alternative means, such as additional text hidden with the <code>.sr-only</code> class.</p>
 +</div>
 +
 +### Contextual backgrounds
 +
 +Similar to the contextual text color classes, easily set the background of an element to any contextual class. Anchor components will darken on hover, just like the text classes.
 +
 +{% example html %}
 +<div class="bg-primary">Nullam id dolor id nibh ultricies vehicula ut id elit.</div>
 +<div class="bg-success">Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</div>
 +<div class="bg-info">Maecenas sed diam eget risus varius blandit sit amet non magna.</div>
 +<div class="bg-warning">Etiam porta sem malesuada magna mollis euismod.</div>
 +<div class="bg-danger">Donec ullamcorper nulla non metus auctor fringilla.</div>
 +{% endexample %}
 +
 +<div class="bs-callout bs-callout-info">
 +  <h4>Dealing with specificity</h4>
 +  <p>Sometimes contextual background classes cannot be applied due to the specificity of another selector. In some cases, a sufficient workaround is to wrap your element's content in a <code>&lt;div&gt;</code> with the class.</p>
 +</div>
 +
 +<div class="bs-callout bs-callout-warning">
 +  <h4>Conveying meaning to assistive technologies</h4>
 +  <p>As with <a href="#helper-classes-colors">contextual colors</a>, ensure that any meaning conveyed through color is also conveyed in a format that is not purely presentational.</p>
 +</div>
 +
 +### Close icon
 +
 +Use a generic close icon for dismissing content like modals and alerts. **Be sure to include screen reader text when you can** as we've done with `.sr-only`.
 +
 +{% example html %}
 +<button type="button" class="close" aria-label="Close">
 +  <span aria-hidden="true">&times;</span>
 +  <span class="sr-only">Close</span>
 +</button>
 +{% endexample %}
 +
 +### Quick floats
 +
 +Float an element to the left or right with a class. `!important` is included to avoid specificity issues. Classes can also be used as mixins.
 +
 +{% example html %}
 +<div class="pull-left">Float left</div>
 +<div class="pull-right">Float right</div>
 +{% endexample %}
 +
 +{% highlight scss %}
 +// Classes
 +.pull-left {
 +  float: left !important;
 +}
 +.pull-right {
 +  float: right !important;
 +}
 +
 +// Usage as mixins
 +.element {
 +  @include pull-left;
 +}
 +.another-element {
 +  @include pull-right;
 +}
 +{% endhighlight %}
 +
 +### Center content blocks
 +
 +Set an element to `display: block;` and center via `margin`. Available as a mixin and class.
 +
 +{% example html %}
 +<div class="center-block">Centered block</div>
 +{% endexample %}
 +
 +{% highlight scss %}
- // Usage as mixins
++// Class
 +.center-block {
 +  display: block;
 +  margin-left: auto;
 +  margin-right: auto;
 +}
 +
- // Usage as a Mixin
++// Usage as a mixin
 +.element {
 +  @include center-block;
 +}
 +{% endhighlight %}
 +
 +Easily clear `float`s by adding `.clearfix` **to the parent element**. Utilizes [the micro clearfix](http://nicolasgallagher.com/micro-clearfix-hack/) as popularized by Nicolas Gallagher. Can also be used as a mixin.
 +
 +{% highlight html %}
 +<div class="clearfix">...</div>
 +{% endhighlight %}
 +
 +{% highlight scss %}
 +// Mixin itself
 +.clearfix() {
 +  &:before,
 +  &:after {
 +    content: " ";
 +    display: table;
 +  }
 +  &:after {
 +    clear: both;
 +  }
 +}
 +
- // Classes
++// Usage as a mixin
 +.element {
 +  @include clearfix;
 +}
 +{% endhighlight %}
 +
 +### Hidden content
 +
 +Hide any HTML element with the `[hidden]` attribute. Previously, v3.x included a `.hidden` class that forced toggled content. However, we removed it due to conflicts with jQuery's `hide()` function. It's taken from [PureCSS](http://purecss.io).
 +
 +Furthermore, `.invisible` can be used to toggle the visibility of an element, meaning its `display` is not modified and the element can still affect the flow of the document.
 +
 +{% highlight html %}
 +<input type="text" hidden>
 +{% endhighlight %}
 +
 +### Invisible content
 +
 +The `.invisible` class can be used to toggle only the visibility of an element, meaning its `display` is not modified and the element can still affect the flow of the document.
 +
 +{% highlight html %}
 +<div class="invisible">...</div>
 +{% endhighlight %}
 +
 +{% highlight scss %}
- // Usage as mixin
++// Class
 +.invisible {
 +  visibility: hidden;
 +}
 +
- // Usage as a Mixin
++// Usage as a mixin
 +.element {
 +  .invisible();
 +}
 +{% endhighlight %}
 +
 +### Screen readers and keyboard navigation
 +
 +Hide an element to all devices **except screen readers** with `.sr-only`. Combine `.sr-only` with `.sr-only-focusable` to show the element again when it's focused (e.g. by a keyboard-only user). Necessary for following [accessibility best practices](../getting-started/#accessibility). Can also be used as mixins.
 +
 +{% highlight html %}
 +<a class="sr-only sr-only-focusable" href="#content">Skip to main content</a>
 +{% endhighlight %}
 +
 +{% highlight scss %}
- // Usage as a Mixin
++// Usage as a mixin
 +.skip-navigation {
 +  @include sr-only;
 +  @include sr-only-focusable;
 +}
 +{% endhighlight %}
 +
 +### Image replacement
 +
 +Utilize the `.text-hide` class or mixin to help replace an element's text content with a background image.
 +
 +{% highlight html %}
 +<h1 class="text-hide">Custom heading</h1>
 +{% endhighlight %}
 +
 +{% highlight scss %}
++// Usage as a mixin
 +.heading {
 +  @include text-hide;
 +}
 +{% endhighlight %}
index f1068a01bb09b5fb9471f499ec0f3f019421491b,0000000000000000000000000000000000000000..ac056a8b9110bc0808c7eeddf61d38bb7d7acf14
mode 100644,000000..100644
--- /dev/null
@@@ -1,581 -1,0 +1,587 @@@
- Add the `disabled` boolean attribute on an `<input>`, `<select>`, or `<textarea>` to prevent user input and trigger a slightly different look.
 +---
 +layout: page
 +title: Forms
 +---
 +
 +Bootstrap normalizes common HTML5 form elements and adds a number of layout options for building forms of all sizes.
 +
 +## Example form
 +
 +Individual form controls automatically receive some global styling. All textual `<input>`, `<textarea>`, and `<select>` elements with `.form-control` are set to `width: 100%;` by default. Wrap labels and controls in `.form-group` for optimum spacing.
 +
 +{% example html %}
 +<form>
 +  <div class="form-group">
 +    <label for="exampleInputEmail1">Email address</label>
 +    <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email">
 +  </div>
 +  <div class="form-group">
 +    <label for="exampleInputPassword1">Password</label>
 +    <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
 +  </div>
 +  <div class="form-group">
 +    <label for="exampleInputFile">File input</label>
 +    <input type="file" id="exampleInputFile">
 +    <p class="help-block">Example block-level help text here.</p>
 +  </div>
 +  <div class="checkbox">
 +    <label>
 +      <input type="checkbox"> Check me out
 +    </label>
 +  </div>
 +  <button type="submit" class="btn btn-secondary">Submit</button>
 +</form>
 +{% endexample %}
 +
 +<div class="bs-callout bs-callout-warning">
 +  <h4>Don't mix form groups with input groups</h4>
 +  <p>Do not mix form groups directly with <a href="/components/#input-groups">input groups</a>. Instead, nest the input group inside of the form group.</p>
 +</div>
 +
 +## Inline forms
 +
 +Add `.form-inline` to your `<form>` or a parent element for left-aligned and inline-block controls. **This only applies to form controls within viewports that are at least 768px wide.**
 +
 +<div class="bs-callout bs-callout-danger">
 +  <h4>May require custom widths</h4>
 +  <p>Inputs and selects have `width: 100%;` applied by default in Bootstrap. Within inline forms, we reset that to `width: auto;` so multiple controls can reside on the same line. Depending on your layout, additional custom widths may be required.</p>
 +</div>
 +<div class="bs-callout bs-callout-warning">
 +  <h4>Always add labels</h4>
 +  <p>Screen readers will have trouble with your forms if you don't include a label for every input. For these inline forms, you can hide the labels using the `.sr-only` class.</p>
 +</div>
 +
 +### Visible labels
 +
 +{% example html %}
 +<div class="bs-example" data-example-id="simple-form-inline">
 +  <form class="form-inline">
 +    <div class="form-group">
 +      <label for="exampleInputName2">Name</label>
 +      <input type="text" class="form-control" id="exampleInputName2" placeholder="Jane Doe">
 +    </div>
 +    <div class="form-group">
 +      <label for="exampleInputEmail2">Email</label>
 +      <input type="email" class="form-control" id="exampleInputEmail2" placeholder="jane.doe@example.com">
 +    </div>
 +    <button type="submit" class="btn btn-primary">Send invitation</button>
 +  </form>
 +</div>
 +{% endexample %}
 +
 +### Hidden labels
 +
 +{% example html %}
 +<form class="form-inline">
 +  <div class="form-group">
 +    <label class="sr-only" for="exampleInputEmail3">Email address</label>
 +    <input type="email" class="form-control" id="exampleInputEmail3" placeholder="Enter email">
 +  </div>
 +  <div class="form-group">
 +    <label class="sr-only" for="exampleInputPassword3">Password</label>
 +    <input type="password" class="form-control" id="exampleInputPassword3" placeholder="Password">
 +  </div>
 +  <div class="checkbox">
 +    <label>
 +      <input type="checkbox"> Remember me
 +    </label>
 +  </div>
 +  <button type="submit" class="btn btn-primary">Sign in</button>
 +</form>
 +{% endexample %}
 +
 +{% example html %}
 +<form class="form-inline">
 +  <div class="form-group">
 +    <label class="sr-only" for="exampleInputAmount">Amount (in dollars)</label>
 +    <div class="input-group">
 +      <div class="input-group-addon">$</div>
 +      <input type="text" class="form-control" id="exampleInputAmount" placeholder="Amount">
 +      <div class="input-group-addon">.00</div>
 +    </div>
 +  </div>
 +  <button type="submit" class="btn btn-primary">Transfer cash</button>
 +</form>
 +{% endexample %}
 +
 +## Horizontal forms
 +
 +Use Bootstrap's predefined grid classes to align labels and groups of form controls in a horizontal layout by adding `.form-horizontal` to the form or form control's parent. Doing so changes `.form-group`s to behave as grid rows, so no need for `.row`.
 +
 +{% example html %}
 +<form class="form-horizontal">
 +  <div class="form-group">
 +    <label for="inputEmail3" class="col-sm-2 control-label">Email</label>
 +    <div class="col-sm-10">
 +      <input type="email" class="form-control" id="inputEmail3" placeholder="Email">
 +    </div>
 +  </div>
 +  <div class="form-group">
 +    <label for="inputPassword3" class="col-sm-2 control-label">Password</label>
 +    <div class="col-sm-10">
 +      <input type="password" class="form-control" id="inputPassword3" placeholder="Password">
 +    </div>
 +  </div>
 +  <div class="form-group">
 +    <div class="col-sm-offset-2 col-sm-10">
 +      <div class="checkbox">
 +        <label>
 +          <input type="checkbox"> Remember me
 +        </label>
 +      </div>
 +    </div>
 +  </div>
 +  <div class="form-group">
 +    <div class="col-sm-offset-2 col-sm-10">
 +      <button type="submit" class="btn btn-secondary">Sign in</button>
 +    </div>
 +  </div>
 +</form>
 +{% endexample %}
 +
 +## Supported controls
 +
 +Examples of standard form controls supported in an example form layout.
 +
 +### Inputs
 +
 +Most common form control, text-based input fields. Includes support for all HTML5 types: `text`, `password`, `datetime`, `datetime-local`, `date`, `month`, `time`, `week`, `number`, `email`, `url`, `search`, `tel`, and `color`.
 +
 +<div class="bs-callout bs-callout-danger">
 +  <h4>Type declaration required</h4>
 +  <p>Inputs will only be fully styled if their `type` is properly declared.</p>
 +</div>
 +
 +{% example html %}
 +<input type="text" class="form-control" placeholder="Text input">
 +{% endexample %}
 +
 +<div class="bs-callout bs-callout-info">
 +  <h4>Input groups</h4>
 +  <p>To add integrated text or buttons before and/or after any text-based `&lt;input&gt;`, <a href="../components/#input-groups">check out the input group component</a>.</p>
 +</div>
 +
 +### Textarea
 +
 +Form control which supports multiple lines of text. Change `rows` attribute as necessary.
 +
 +{% example html %}
 +<textarea class="form-control" rows="3"></textarea>
 +{% endexample %}
 +
 +### Checkboxes and radios
 +
 +Checkboxes are for selecting one or several options in a list, while radios are for selecting one option from many.
 +
 +A checkbox or radio with the `disabled` attribute will be styled appropriately. To have the `<label>` for the checkbox or radio also display a "not-allowed" cursor when the user hovers over the label, add the `.disabled` class to your `.radio`, `.radio-inline`, `.checkbox`, `.checkbox-inline`, or `<fieldset>`.
 +
 +#### Default (stacked)
 +
 +{% example html %}
 +<div class="checkbox">
 +  <label>
 +    <input type="checkbox" value="">
 +    Option one is this and that&mdash;be sure to include why it's great
 +  </label>
 +</div>
 +<div class="checkbox disabled">
 +  <label>
 +    <input type="checkbox" value="" disabled>
 +    Option two is disabled
 +  </label>
 +</div>
 +
 +<div class="radio">
 +  <label>
 +    <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>
 +    Option one is this and that&mdash;be sure to include why it's great
 +  </label>
 +</div>
 +<div class="radio">
 +  <label>
 +    <input type="radio" name="optionsRadios" id="optionsRadios2" value="option2">
 +    Option two can be something else and selecting it will deselect option one
 +  </label>
 +</div>
 +<div class="radio disabled">
 +  <label>
 +    <input type="radio" name="optionsRadios" id="optionsRadios3" value="option3" disabled>
 +    Option three is disabled
 +  </label>
 +</div>
 +{% endexample %}
 +
 +#### Inline
 +
 +Use the `.checkbox-inline` or `.radio-inline` classes on a series of checkboxes or radios for controls that appear on the same line.
 +
 +{% example html %}
 +<label class="checkbox-inline">
 +  <input type="checkbox" id="inlineCheckbox1" value="option1"> 1
 +</label>
 +<label class="checkbox-inline">
 +  <input type="checkbox" id="inlineCheckbox2" value="option2"> 2
 +</label>
 +<label class="checkbox-inline">
 +  <input type="checkbox" id="inlineCheckbox3" value="option3"> 3
 +</label>
 +{% endexample %}
 +
 +{% example html %}
 +<label class="radio-inline">
 +  <input type="radio" name="inlineRadioOptions" id="inlineRadio1" value="option1"> 1
 +</label>
 +<label class="radio-inline">
 +  <input type="radio" name="inlineRadioOptions" id="inlineRadio2" value="option2"> 2
 +</label>
 +<label class="radio-inline">
 +  <input type="radio" name="inlineRadioOptions" id="inlineRadio3" value="option3"> 3
 +</label>
 +{% endexample %}
 +
 +#### Without labels
 +
 +Should you have no text within the `<label>`, the input is positioned as you'd expect. **Currently only works on non-inline checkboxes and radios.**
 +
 +{% example html %}
 +<div class="checkbox">
 +  <label>
 +    <input type="checkbox" id="blankCheckbox" value="option1">
 +  </label>
 +</div>
 +<div class="radio">
 +  <label>
 +    <input type="radio" name="blankRadio" id="blankRadio1" value="option1">
 +  </label>
 +</div>
 +{% endexample %}
 +
 +### Selects
 +
 +Note that many native select menus—namely in Safari and Chrome—have rounded corners that cannot be modified via `border-radius` properties.
 +
 +Use the default option, or add `multiple` to show multiple options at once.
 +
 +{% example html %}
 +<select class="form-control">
 +  <option>1</option>
 +  <option>2</option>
 +  <option>3</option>
 +  <option>4</option>
 +  <option>5</option>
 +</select>
 +{% endexample %}
 +
 +For `<select>` controls with the `multiple` attribute, multiple options are shown by default.
 +
 +{% example html %}
 +<select multiple class="form-control">
 +  <option>1</option>
 +  <option>2</option>
 +  <option>3</option>
 +  <option>4</option>
 +  <option>5</option>
 +</select>
 +{% endexample %}
 +
 +## Static controls
 +
 +When you need to place plain text next to a form label within a form, use the `.form-control-static` class on a `<p>`.
 +
 +{% example html %}
 +<form class="form-horizontal">
 +  <div class="form-group">
 +    <label class="col-sm-2 control-label">Email</label>
 +    <div class="col-sm-10">
 +      <p class="form-control-static">email@example.com</p>
 +    </div>
 +  </div>
 +  <div class="form-group">
 +    <label for="inputPassword" class="col-sm-2 control-label">Password</label>
 +    <div class="col-sm-10">
 +      <input type="password" class="form-control" id="inputPassword" placeholder="Password">
 +    </div>
 +  </div>
 +</form>
 +{% endexample %}
 +
 +{% example html %}
 +<form class="form-inline">
 +  <div class="form-group">
 +    <label class="sr-only">Email</label>
 +    <p class="form-control-static">email@example.com</p>
 +  </div>
 +  <div class="form-group">
 +    <label for="inputPassword2" class="sr-only">Password</label>
 +    <input type="password" class="form-control" id="inputPassword2" placeholder="Password">
 +  </div>
 +  <button type="submit" class="btn btn-primary">Confirm identity</button>
 +</form>
 +{% endexample %}
 +
 +## Focus state
 +
 +We remove the default `outline` styles on some form controls and apply a `box-shadow` in its place for `:focus`.
 +
 +<div class="bs-example">
 +  <form>
 +    <input class="form-control" id="focusedInput" type="text" value="Demonstrative focus state">
 +  </form>
 +</div>
 +
 +<div class="bs-callout bs-callout-info">
 +  <h4>Demo `:focus` state</h4>
 +  <p>The above example input uses custom styles in our documentation to demonstrate the `:focus` state on a `.form-control`.</p>
 +</div>
 +
 +## Disabled states
 +
- Add the `readonly` boolean attribute on an input to prevent user input and style the input as disabled.
++Add the `disabled` boolean attribute on an input to prevent user interactions. Disabled inputs appear lighter and add a `not-allowed` cursor.
 +
 +{% highlight html %}
 +<input class="form-control" id="disabledInput" type="text" placeholder="Disabled input here..." disabled>
 +{% endhighlight %}
 +
 +Add the `disabled` attribute to a `<fieldset>` to disable all the controls within.
 +
 +{% example html %}
 +<form>
 +  <fieldset disabled>
 +    <div class="form-group">
 +      <label for="disabledTextInput">Disabled input</label>
 +      <input type="text" id="disabledTextInput" class="form-control" placeholder="Disabled input">
 +    </div>
 +    <div class="form-group">
 +      <label for="disabledSelect">Disabled select menu</label>
 +      <select id="disabledSelect" class="form-control">
 +        <option>Disabled select</option>
 +      </select>
 +    </div>
 +    <div class="checkbox">
 +      <label>
 +        <input type="checkbox"> Can't check this
 +      </label>
 +    </div>
 +    <button type="submit" class="btn btn-primary">Submit</button>
 +  </fieldset>
 +</form>
 +{% endexample %}
 +
 +<div class="bs-callout bs-callout-warning">
 +  <h4>Caveat about link functionality of `&lt;a&gt;`</h4>
 +  <p>By default, browsers will treat all native form controls (<code>&lt;input&gt;</code>, <code>&lt;select&gt;</code> and <code>&lt;button&gt;</code> elements) inside a <code>&lt;fieldset disabled&gt;</code> as disabled, preventing both keyboard and mouse interactions on them. However, if your form also includes <code>&lt;a ... class="btn btn-*"&gt;</code> elements, these will only be given a style of <code>pointer-events: none</code>. As noted in the section about <a href="#buttons-disabled">disabled state for buttons</a> (and specifically in the sub-section for anchor elements), this CSS property is not yet standardized and isn't fully supported in Opera 18 and below, or in Internet Explorer 11, and won't prevent keyboard users from being able to focus or activate these links. So to be safe, use custom JavaScript to disable such links.</p>
 +</div>
 +
 +<div class="bs-callout bs-callout-danger">
 +  <h4>Cross-browser compatibility</h4>
 +  <p>While Bootstrap will apply these styles in all browsers, Internet Explorer 11 and below don't fully support the <code>disabled</code> attribute on a <code>&lt;fieldset&gt;</code>. Use custom JavaScript to disable the fieldset in these browsers.</p>
 +</div>
 +
 +## Readonly inputs
 +
++Add the `readonly` boolean attribute on an input to prevent modification of the input's value. Read-only inputs appear lighter (just like disabled inputs), but retain the standard cursor.<
 +
 +{% example html %}
 +<input class="form-control" type="text" placeholder="Readonly input here…" readonly>
 +{% endexample %}
 +
 +## Validation
 +
 +Bootstrap includes validation styles for error, warning, and success states on form controls. To use, add `.has-warning`, `.has-error`, or `.has-success` to the parent element. Any `.control-label`, `.form-control`, and `.help-block` within that element will receive the validation styles.
 +
++<div class="bs-callout bs-callout-warning" id="callout-form-validation-state-accessibility">
++  <h4>Conveying validation state to assistive technologies and colorblind users</h4>
++  <p>Using these validation styles to denote the state of a form control only provides a visual, color-based indication, which will not be conveyed to users of assistive technologies - such as screen readers - or to colorblind users.</p>
++  <p>Ensure that an alternative indication of state is also provided. For instance, you can include a hint about state in the form control's <code>&lt;label&gt;</code> text itself (as is the case in the following code example), include a <a href="../components/#glyphicons">Glyphicon</a> (with appropriate alternative text using the <code>.sr-only</code> class - see the <a href="../components/#glyphicons-examples">Glyphicon examples</a>), or by providing an additional <a href="#forms-help-text">help text</a> block. Specifically for assistive technologies, invalid form controls can also be assigned an <code>aria-invalid="true"</code> attribute.</p>
++</div>
++
 +{% example html %}
 +<div class="form-group has-success">
 +  <label class="control-label" for="inputSuccess1">Input with success</label>
 +  <input type="text" class="form-control" id="inputSuccess1">
 +</div>
 +<div class="form-group has-warning">
 +  <label class="control-label" for="inputWarning1">Input with warning</label>
 +  <input type="text" class="form-control" id="inputWarning1">
 +</div>
 +<div class="form-group has-error">
 +  <label class="control-label" for="inputError1">Input with error</label>
 +  <input type="text" class="form-control" id="inputError1">
 +</div>
 +<div class="has-success">
 +  <div class="checkbox">
 +    <label>
 +      <input type="checkbox" id="checkboxSuccess" value="option1">
 +      Checkbox with success
 +    </label>
 +  </div>
 +</div>
 +<div class="has-warning">
 +  <div class="checkbox">
 +    <label>
 +      <input type="checkbox" id="checkboxWarning" value="option1">
 +      Checkbox with warning
 +    </label>
 +  </div>
 +</div>
 +<div class="has-error">
 +  <div class="checkbox">
 +    <label>
 +      <input type="checkbox" id="checkboxError" value="option1">
 +      Checkbox with error
 +    </label>
 +  </div>
 +</div>
 +{% endexample %}
 +
 +You can also add optional feedback icons with the addition of `.has-feedback` and the right icon.
 +
 +<div class="bs-callout bs-callout-warning">
 +  <h4>Icons, labels, and input groups</h4>
 +  <p>Manual positioning of feedback icons is required for inputs without a label and for <a href="../components#input-groups">input groups</a> with an add-on on the right. You are strongly encouraged to provide labels for all inputs for accessibility reasons. If you wish to prevent labels from being displayed, hide them with the `sr-only` class. If you must do without labels, adjust the `top` value of the feedback icon. For input groups, adjust the `right` value to an appropriate pixel value depending on the width of your addon.</p>
 +</div>
 +
 +{% example 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="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="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="inputError2Status">
 +  <span class="glyphicon glyphicon-remove form-control-feedback" aria-hidden="true"></span>
 +  <span id="inputError2Status" class="sr-only">(error)</span>
 +</div>
 +<div class="form-group has-success has-feedback">
 +  <label class="control-label" for="inputGroupSuccess1">Input group with success</label>
 +  <div class="input-group">
 +    <span class="input-group-addon">@</span>
 +    <input type="text" class="form-control" id="inputGroupSuccess1" aria-describedby="inputGroupSuccess1Status">
 +  </div>
 +  <span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
 +  <span id="inputGroupSuccess1Status" class="sr-only">(success)</span>
 +</div>
 +{% endexample %}
 +
 +{% example html %}
 +<form class="form-horizontal">
 +  <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">
 +      <span class="glyphicon glyphicon-ok form-control-feedback"></span>
 +    </div>
 +  </div>
 +  <br>
 +  <div class="form-group has-success has-feedback">
 +    <label class="control-label col-sm-3" for="inputGroupSuccess2">Input group with success</label>
 +    <div class="col-sm-9">
 +      <div class="input-group">
 +        <span class="input-group-addon">@</span>
 +        <input type="text" class="form-control" id="inputGroupSuccess2" aria-describedby="inputGroupSuccess2Status">
 +      </div>
 +      <span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
 +      <span id="inputGroupSuccess2Status" class="sr-only">(success)</span>
 +    </div>
 +  </div>
 +</form>
 +{% endexample %}
 +
 +{% example html %}
 +<form class="form-inline">
 +  <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">
 +    <span class="glyphicon glyphicon-ok form-control-feedback"></span>
 +  </div>
 +</form>
 +{% endexample %}
 +
 +{% example html %}
 +<div class="form-group has-success has-feedback">
 +  <label class="control-label sr-only" for="inputGroupSuccess4">Input group with success</label>
 +  <div class="input-group">
 +    <span class="input-group-addon">@</span>
 +    <input type="text" class="form-control" id="inputGroupSuccess4" aria-describedby="inputGroupSuccess4Status">
 +  </div>
 +  <span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
 +  <span id="inputGroupSuccess4Status" class="sr-only">(success)</span>
 +</div>
 +{% endexample %}
 +
 +For form controls with no visible label, add the `.sr-only` class on the label. Bootstrap will automatically adjust the position of the icon once it's been added.
 +
 +{% example 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">
 +  <span class="glyphicon glyphicon-ok form-control-feedback"></span>
 +</div>
 +{% endexample %}
 +
 +## Control sizing
 +
 +Set heights using classes like `.input-lg`, and set widths using grid column classes like `.col-lg-*`.
 +
 +{% example html %}
 +<input class="form-control input-lg" type="text" placeholder=".input-lg">
 +<input class="form-control" type="text" placeholder="Default input">
 +<input class="form-control input-sm" type="text" placeholder=".input-sm">
 +
 +<select class="form-control input-lg"></select>
 +<select class="form-control"></select>
 +<select class="form-control input-sm"></select>
 +{% endexample %}
 +
 +Quickly size labels and form controls within `.form-horizontal` by adding `.form-group-lg` or `.form-group-sm` to existing `.form-group`s.
 +
 +{% example html %}
 +<form class="form-horizontal">
 +  <div class="form-group form-group-lg">
 +    <label class="col-sm-2 control-label" for="formGroupInputLarge">Large label</label>
 +    <div class="col-sm-10">
 +      <input class="form-control" type="text" id="formGroupInputLarge" placeholder="Large input">
 +    </div>
 +  </div>
 +  <div class="form-group form-group-sm">
 +    <label class="col-sm-2 control-label" for="formGroupInputSmall">Small label</label>
 +    <div class="col-sm-10">
 +      <input class="form-control" type="text" id="formGroupInputSmall" placeholder="Small input">
 +    </div>
 +  </div>
 +</form>
 +{% endexample %}
 +
 +## Column sizing
 +
 +Wrap inputs in grid columns, or any custom parent element, to easily enforce desired widths.
 +
 +{% example html %}
 +<div class="row">
 +  <div class="col-xs-2">
 +    <input type="text" class="form-control" placeholder=".col-xs-2">
 +  </div>
 +  <div class="col-xs-3">
 +    <input type="text" class="form-control" placeholder=".col-xs-3">
 +  </div>
 +  <div class="col-xs-4">
 +    <input type="text" class="form-control" placeholder=".col-xs-4">
 +  </div>
 +</div>
 +{% endexample %}
 +
 +## Help text
 +
 +Block level help text for form controls.
 +
 +{% example html %}
 +<p class="help-block">A block of help text that breaks onto a new line and may extend beyond one line.</p>
 +{% endexample %}
index da5c6bf99dbbb5049924a1c843d298581cab36cc,0000000000000000000000000000000000000000..6b691fb0e32551328858eb824fe6aab56d8eb1e6
mode 100644,000000..100644
--- /dev/null
@@@ -1,39 -1,0 +1,43 @@@
 +---
 +layout: page
 +title: Images
 +---
 +
 +Opt your images into responsive behavior (so they never become larger than their parent elements) and add lightweight styles to them—all via classes.
 +
 +## Responsive images
 +
 +Images in Bootstrap 3 can be made responsive-friendly via the addition of the `.img-responsive` class. This applies `max-width: 100%;` and `height: auto;` to the image so that it scales nicely to the parent element.
 +
 +<div class="bs-example">
 +<img data-src="holder.js/100%x250" class="img-responsive" alt="Generic responsive image">
 +</div>
 +
 +{% highlight html %}
 +<img src="..." class="img-responsive" alt="Responsive image">
 +{% endhighlight %}
 +
 +<div class="bs-callout bs-callout-warning">
 +<h4>SVG images and IE 9-10</h4>
 +<p>In Internet Explorer 9-10, SVG images with <code>.img-responsive</code> are disproportionately sized. To fix this, add <code>width: 100% \9;</code> where necessary. Bootstrap doesn't apply this automatically as it causes complications to other image formats.</p>
 +</div>
 +
 +## Image shapes
 +
 +Add classes to an `<img>` element to easily style images in any project.
 +
 +<div class="bs-example bs-example-images">
 +<img data-src="holder.js/200x200" class="img-rounded" alt="A generic square placeholder image with rounded corners">
 +<img data-src="holder.js/200x200" class="img-circle" alt="A generic square placeholder image where only the portion within the circle circumscribed about said square is visible">
 +<img data-src="holder.js/200x200" class="img-thumbnail" alt="A generic square placeholder image with a white border around it, making it resemble a photograph taken with an old instant camera">
 +</div>
 +
 +{% highlight html %}
 +<img src="..." alt="..." class="img-rounded">
 +<img src="..." alt="..." class="img-circle">
 +<img src="..." alt="..." class="img-thumbnail">
 +{% endhighlight %}
++
++## Aligning images
++
++To center images with `.img-responsive`, use `.center-block`. For all other images, use `.text-center`. [See the helper classes section](/css/helpers) for more details about `.center-block` usage.
index 584fe3ba20ea1d1f3a6eceb3e1d6306e672bdf3a,65833d5e5ba8bd36e828ad0d80215a3a35f756cc..c72454d9a465b39405df628e054c8bf0fa9261f6
@@@ -1771,14 -1783,9 +1782,9 @@@ if (typeof jQuery === 'undefined') 
    }
  
    Popover.prototype.arrow = function () {
 -    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
 +    return (this.$arrow = this.$arrow || this.tip().find('.popover-arrow'))
    }
  
-   Popover.prototype.tip = function () {
-     if (!this.$tip) this.$tip = $(this.options.template)
-     return this.$tip
-   }
  
    // POPOVER PLUGIN DEFINITION
    // =========================
Simple merge
index b2aa55aac2c73b1cdcc9fbb3d50a9700766605d9,15b1e5c0dca691ba577a518fe678dea0f575e02d..3e88fd0ff5ae04ee5c6687a44d6d4a0ad9e3f4a3
          <li data-target="#myCarousel" data-slide-to="2"></li>
        </ol>
        <div class="carousel-inner" role="listbox">
++<<<<<<< HEAD
 +        <div class="carousel-item active">
 +          <img src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="First slide">
++=======
+         <div class="item active">
+           <img class="first-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="First slide">
++>>>>>>> master
            <div class="container">
 -            <div class="carousel-caption">
 +            <div class="carousel-caption text-left">
                <h1>Example headline.</h1>
 -              <p>Note: If you're viewing this page via a <code>file://</code> URL, the "next" and "previous" Glyphicon buttons on the left and right might not load/display properly due to web browser security rules.</p>
 +              <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
                <p><a class="btn btn-lg btn-primary" href="#" role="button">Sign up today</a></p>
              </div>
            </div>
          </div>
++<<<<<<< HEAD
 +        <div class="carousel-item">
 +          <img src="data:image/gif;base64,R0lGODlhAQABAIAAAGZmZgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Second slide">
++=======
+         <div class="item">
+           <img class="second-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Second slide">
++>>>>>>> master
            <div class="container">
              <div class="carousel-caption">
                <h1>Another example headline.</h1>
              </div>
            </div>
          </div>
++<<<<<<< HEAD
 +        <div class="carousel-item">
 +          <img src="data:image/gif;base64,R0lGODlhAQABAIAAAFVVVQAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Third slide">
++=======
+         <div class="item">
+           <img class="third-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Third slide">
++>>>>>>> master
            <div class="container">
 -            <div class="carousel-caption">
 +            <div class="carousel-caption text-right">
                <h1>One more for good measure.</h1>
                <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
                <p><a class="btn btn-lg btn-primary" href="#" role="button">Browse gallery</a></p>
        <!-- Three columns of text below the carousel -->
        <div class="row">
          <div class="col-lg-4">
-           <img class="img-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" style="width: 140px; height: 140px;">
+           <img class="img-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" width="140" height="140">
            <h2>Heading</h2>
            <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna.</p>
 -          <p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p>
 +          <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p>
          </div><!-- /.col-lg-4 -->
          <div class="col-lg-4">
-           <img class="img-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" style="width: 140px; height: 140px;">
+           <img class="img-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" width="140" height="140">
            <h2>Heading</h2>
            <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh.</p>
 -          <p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p>
 +          <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p>
          </div><!-- /.col-lg-4 -->
          <div class="col-lg-4">
-           <img class="img-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" style="width: 140px; height: 140px;">
+           <img class="img-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" width="140" height="140">
            <h2>Heading</h2>
            <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
 -          <p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p>
 +          <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p>
          </div><!-- /.col-lg-4 -->
        </div><!-- /.row -->
  
Simple merge
Simple merge
Simple merge
Simple merge
index f23ec5e07a0f425e284be601591ae17c05bc1cde,78e9e2c8b0dbc5a8909d21f9f72cf04dba8db8c1..3a52a710d1b216b5b78bfb78b9b5bc497188a89d
    <body>
  
      <div class="container">
-       <div class="header">
+       <div class="header clearfix">
          <nav>
            <ul class="nav nav-pills pull-right">
 -            <li role="presentation" class="active"><a href="#">Home</a></li>
 -            <li role="presentation"><a href="#">About</a></li>
 -            <li role="presentation"><a href="#">Contact</a></li>
 +            <li class="nav-item active">
 +              <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
 +            </li>
 +            <li class="nav-item">
 +              <a class="nav-link" href="#">About</a>
 +            </li>
 +            <li class="nav-item">
 +              <a class="nav-link" href="#">Contact</a>
 +            </li>
            </ul>
          </nav>
          <h3 class="text-muted">Project name</h3>
index 323db95fd251218f3571b1297e533d40a5681ddd,952adc5a01e2df67c07254865d36f07030ba954f..28cf77381e1b0f32114bd394da2475d14549e1ff
@@@ -14,14 -14,14 +14,14 @@@ body 
  
  /* Custom page header */
  .header {
 -  padding-bottom: 20px;
 -  border-bottom: 1px solid #e5e5e5;
++  padding-bottom: 1rem;
 +  border-bottom: .05rem solid #e5e5e5;
  }
  /* Make the masthead heading the same height as the navigation */
  .header h3 {
-   padding-bottom: 1.5rem;
    margin-top: 0;
    margin-bottom: 0;
 -  line-height: 40px;
 +  line-height: 3rem;
  }
  
  /* Custom page footer */
Simple merge
Simple merge
Simple merge
index 1d60957ea594ec33dd8fe1f0979c3a75610da117,0000000000000000000000000000000000000000..c1a23da3500c635024aa4399f04922c139955458
mode 100644,000000..100644
--- /dev/null
@@@ -1,31 -1,0 +1,38 @@@
- If your navigation contains many links and comes before the main content in the DOM, add a `Skip to main content` link [before the navigation](http://a11yproject.com/posts/skip-nav-links/). Using the `.sr-only` class will visually hide the skip link, and the `.sr-only-focusable` class will ensure that the link becomes visible once focused (for sighted keyboard users).
 +---
 +layout: page
 +title: Accessibility
 +---
 +
 +Bootstrap follows common web standards and—with minimal extra effort—can be used to create sites that are accessible to those using <abbr title="Assistive Technology" class="initialism">AT</abbr>.
 +
 +### Skip navigation
 +
-   <div class="container" id="content">
-     The main page content.
++If your navigation contains many links and comes before the main content in the DOM, add a `Skip to main content` link before the navigation (for a simple explanation, see this [A11Y Project article on skip navigation links](http://a11yproject.com/posts/skip-nav-links/)). Using the `.sr-only` class will visually hide the skip link, and the <code>.sr-only-focusable</code> class will ensure that the link becomes visible once focused (for sighted keyboard users).
++
++<div class="bs-callout bs-callout-danger" id="callout-skiplinks">
++  <p>Due to long-standing shortcomings/bugs in Chrome (see <a href="https://code.google.com/p/chromium/issues/detail?id=262171" title="Chromium bug tracker - Issue 262171: Focus should cycle from named anchor">issue 262171 in the Chromium bug tracker</a>) and Internet Explorer (see this article on <a href="http://accessibleculture.org/articles/2010/05/in-page-links/">in-page links and focus order</a>), you will need to make sure that the target of your skip link is at least programmatically focusable by adding <code>tabindex="-1"</code>.</p>
++  <p>In addition, you may want to explicitly suppress a visible focus indication on the target (particularly as Chrome currently also sets focus on elements with <code>tabindex="-1"</code> when they are clicked with the mouse) with <code>#content:focus { outline: none; }</code>.</p>
++  <p>Note that this bug will also affect any other in-page links your site may be using, rendering them useless for keyboard users. You may consider adding a similar stop-gap fix to all other named anchors / fragment identifiers that act as link targets.</p>
++</div>
 +
 +{% highlight html %}
 +<body>
 +  <a href="#content" class="sr-only sr-only-focusable">Skip to main content</a>
++  ...
++  <div class="container" id="content" tabindex="-1">
++    <!-- The main page content -->
 +  </div>
 +</body>
 +{% endhighlight %}
 +
 +### Nested headings
 +
 +When nesting headings (`<h1>` - `<h6>`), your primary document header should be an `<h1>`. Subsequent headings should make logical use of `<h2>` - `<h6>` such that screen readers can construct a table of contents for your pages.
 +
 +Learn more at [HTML CodeSniffer](http://squizlabs.github.io/HTML_CodeSniffer/Standards/Section508/) and [Penn State's Accessability](http://accessibility.psu.edu/headings).
 +
 +### Additional resources
 +
 +- ["HTML Codesniffer" bookmarklet for identifying accessibility issues](https://github.com/squizlabs/HTML_CodeSniffer)
 +- [The A11Y Project](http://a11yproject.com/)
 +- [MDN accessibility documentation](https://developer.mozilla.org/en-US/docs/Accessibility)
index d6270c38147177188af6d7176930194855b2908b,0000000000000000000000000000000000000000..d9a8cd166623d026ede6017c109bc6abf0aabe73
mode 100644,000000..100644
--- /dev/null
@@@ -1,14 -1,0 +1,15 @@@
- You can also follow [@twbootstrap on Twitter](https://twitter.com/twbootstrap) for the latest gossip and awesome music videos.
 +---
 +layout: page
 +title: Community
 +---
 +
 +Stay up to date on the development of Bootstrap and reach out to the community with these helpful resources.
 +
 +- Read and subscribe to [The Official Bootstrap Blog](http://blog.getbootstrap.com/).
 +- Chat with fellow Bootstrappers using IRC in the `irc.freenode.net` server, in the [##twitter-bootstrap channel](irc://irc.freenode.net/%23twitter-bootstrap).
 +- For help using Bootstrap, ask on [StackOverflow using the tag `twitter-bootstrap-3`](http://stackoverflow.com/questions/tagged/twitter-bootstrap-3).
 +- Find inspiring examples of people building with Bootstrap at the [Bootstrap Expo](http://expo.getbootstrap.com).
++- Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability.
 +
++You can also follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap) for the latest gossip and awesome music videos.
 +
index 38aa249d55ec90edb5b8ab0af4883171d4126e6c,0000000000000000000000000000000000000000..1d5b29d0ef37c15f06a68f467d8886feedd57c26
mode 100644,000000..100644
--- /dev/null
@@@ -1,58 -1,0 +1,58 @@@
- **To install Grunt, you must first [download and install node.js](http://nodejs.org/download/)** (which includes npm). npm stands for [node packaged modules](http://npmjs.org/) and is a way to manage development dependencies through node.js.
 +---
 +layout: page
 +title: Compiling with Grunt
 +---
 +
 +Bootstrap uses [Grunt](http://gruntjs.com) for its build system, with convenient methods for working with the framework. It's how we compile our code, run tests, and more.
 +
 +### Install Grunt
 +
- **Unfamiliar with npm? Don't have node installed?** That's a-okay. npm stands for [node packaged modules](http://npmjs.org/) and is a way to manage development dependencies through node.js. [Download and install node.js](http://nodejs.org/download/) before proceeding.
++**To install Grunt, you must first [download and install node.js](http://nodejs.org/download/)** (which includes npm). npm stands for [node packaged modules](http://npmjs.com/) and is a way to manage development dependencies through node.js.
 +
 +From the command line:
 +
 +1. Install `grunt-cli` globally with `npm install -g grunt-cli`.
 +2. Navigate to the root `/bootstrap` directory, then run `npm install`. npm will look at [package.json](https://github.com/twbs/bootstrap/blob/master/package.json) and automatically install the necessary local dependencies listed there.
 +3. [Install Ruby][install-ruby], install [Bundler][gembundler] with `gem install bundler`, and finally run `bundle`. This will install all Ruby dependencies, such as Jekyll and Sass linter.
 +
 +When completed, you'll be able to run the various Grunt commands provided from the command line.
 +
++**Unfamiliar with npm? Don't have node installed?** That's a-okay. npm stands for [node packaged modules](http://npmjs.com/) and is a way to manage development dependencies through node.js. [Download and install node.js](http://nodejs.org/download/) before proceeding.
 +
 +[install-ruby]: https://www.ruby-lang.org/en/documentation/installation/
 +[gembundler]: http://bundler.io/
 +
 +### Available Grunt commands
 +
 +#### Build - `grunt`
 +Run `grunt` to run tests locally and compile the CSS and JavaScript into `/dist`. **Uses [Sass](http://sass-lang.com/) and [UglifyJS](http://lisperator.net/uglifyjs/).**
 +
 +#### Only compile CSS and JavaScript - `grunt dist`
 +`grunt dist` creates the `/dist` directory with compiled files. **Uses [Sass](http://sass-lang.com/) and [UglifyJS](http://lisperator.net/uglifyjs/).**
 +
 +#### Tests - `grunt test`
 +Runs [JSHint](http://jshint.com) and [QUnit](http://qunitjs.com/) tests headlessly in [PhantomJS](http://phantomjs.org/) (used for CI).
 +
 +#### Build and test docs assets - `grunt docs`
 +Builds and tests CSS, JavaScript, and other assets which are used when running the documentation locally via `jekyll serve`.
 +
 +#### Watch - `grunt watch`
 +This is a convenience method for watching just Sass files and automatically building them whenever you save.
 +
 +### Use another Sass compiler
 +Bootstrap is compiled with [libsass][libsass] by default.
 +Use another compiler by setting the `TWBS_SASS` environment variable to:
 +
 +* `sass` to use [Ruby Sass][ruby-sass] via [grunt-contrib-sass][grunt-contrib-sass].
 +* `libsass` (default) to use [libsass][libsass] via [grunt-sass][grunt-sass].
 +
 +For example, run `TWBS_SASS=sass grunt` to test and build Bootstrap with Ruby Sass.
 +
 +[ruby-sass]: https://github.com/sass/sass
 +[grunt-contrib-sass]: https://github.com/gruntjs/grunt-contrib-sass
 +[libsass]: https://github.com/sass/libsass
 +[grunt-sass]: https://github.com/sindresorhus/grunt-sass
 +
 +### Troubleshooting dependencies
 +
 +Should you encounter problems with installing dependencies or running Grunt commands, uninstall all previous dependency versions (global and local). Then, rerun `npm install`.
index 97982c2da639ae1ea827f7859c191de2a4fc2248,0000000000000000000000000000000000000000..c1293c92178a23abd264db4c95b6ae7af8f6f0d7
mode 100644,000000..100644
--- /dev/null
@@@ -1,32 -1,0 +1,33 @@@
-     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
 +---
 +layout: page
 +title: Basic template
 +---
 +
 +Start with this basic HTML template, or modify [these examples](../examples/). We hope you'll customize our templates and examples, adapting them to suit your needs.
 +
 +Copy the HTML below to begin working with a minimal Bootstrap document.
 +
 +{% highlight html %}
 +<!DOCTYPE html>
 +<html lang="en">
 +  <head>
 +    <meta charset="utf-8">
 +    <meta http-equiv="X-UA-Compatible" content="IE=edge">
 +    <meta name="viewport" content="width=device-width, initial-scale=1">
++    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags. -->
 +    <title>Bootstrap 101 Template</title>
 +
 +    <!-- Bootstrap -->
 +    <link href="css/bootstrap.min.css" rel="stylesheet">
 +  </head>
 +  <body>
 +    <h1>Hello, world!</h1>
 +
 +    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
++    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
 +    <!-- Include all compiled plugins (below), or include individual files as needed -->
 +    <script src="js/bootstrap.min.js"></script>
 +  </body>
 +</html>
 +{% endhighlight %}
 +
diff --cc docs/index.html
index d0ae59d72dab6cb6e8b0e85d261ebbd44e362450,e2e91a79e1d15e9474d8ab175ae24b7c4fba4c66..80a0fe6d6ecf88996db20a4688c0f07797b6ae8c
@@@ -4,9 -4,9 +4,9 @@@ title: Bootstrap &middot; The world's m
  ---
  
  
- <main class="bs-docs-masthead" id="content" role="main">
+ <main class="bs-docs-masthead" id="content" role="main" tabindex="-1">
    <div class="container">
 -    <span class="bs-docs-booticon bs-docs-booticon-lg bs-docs-booticon-outline">B</span>
 +    <span class="bs-docs-booticon outline">B</span>
      <p class="lead">Bootstrap is the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web.</p>
      <p class="lead">
        <a href="getting-started#download" class="btn btn-outline-inverse btn-lg" onclick="ga('send', 'event', 'Jumbotron actions', 'Download', 'Download {{ site.current_version }}');">Download Bootstrap</a>
index d69725a594ea76511cf0b0375b553cec19274a14,0000000000000000000000000000000000000000..36b3025790b8c273137eac1fee49a312dcfa7a40
mode 100644,000000..100644
--- /dev/null
@@@ -1,237 -1,0 +1,238 @@@
 +---
 +layout: page
 +title: Carousel
 +---
 +
 +A slideshow component for cycling through elements—images or slides of text—like a carousel. **Nested carousels are not supported.**
 +
 +## Example
 +
 +{% example html %}
 +<div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
 +  <ol class="carousel-indicators">
 +    <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
 +    <li data-target="#carousel-example-generic" data-slide-to="1"></li>
 +    <li data-target="#carousel-example-generic" data-slide-to="2"></li>
 +  </ol>
 +  <div class="carousel-inner" role="listbox">
 +    <div class="carousel-item active">
 +      <img data-src="holder.js/900x500/auto/#777:#555/text:First slide" alt="First slide">
 +    </div>
 +    <div class="carousel-item">
 +      <img data-src="holder.js/900x500/auto/#666:#444/text:Second slide" alt="Second slide">
 +    </div>
 +    <div class="carousel-item">
 +      <img data-src="holder.js/900x500/auto/#555:#333/text:Third slide" alt="Third slide">
 +    </div>
 +  </div>
 +  <a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
 +    <span class="icon-prev" 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="icon-next" aria-hidden="true"></span>
 +    <span class="sr-only">Next</span>
 +  </a>
 +</div>
 +{% endexample %}
 +
 +<div class="bs-callout bs-callout-warning" id="callout-carousel-transitions">
 +  <h4>Transition animations not supported in Internet Explorer 9</h4>
 +  <p>Bootstrap exclusively uses CSS3 for its animations, but Internet Explorer 9 doesn't support the necessary CSS properties. Thus, there are no slide transition animations when using that browser. We have intentionally decided not to include jQuery-based fallbacks for the transitions.</p>
 +</div>
 +
 +<div class="bs-callout bs-callout-warning" id="callout-carousel-active">
 +  <h4>Initial active element required</h4>
 +  <p>The <code>.active</code> class needs to be added to one of the slides. Otherwise, the carousel will not be visible.</p>
 +</div>
 +
 +### Optional captions
 +
 +Add captions to your slides easily with the `.carousel-caption` element within any `.carousel-item`. Place just about any optional HTML within there and it will be automatically aligned and formatted.
 +
 +<div class="bs-example">
 +  <div id="carousel-example-captions" class="carousel slide" data-ride="carousel">
 +    <ol class="carousel-indicators">
 +      <li data-target="#carousel-example-captions" data-slide-to="0" class="active"></li>
 +      <li data-target="#carousel-example-captions" data-slide-to="1"></li>
 +      <li data-target="#carousel-example-captions" data-slide-to="2"></li>
 +    </ol>
 +    <div class="carousel-inner" role="listbox">
 +      <div class="carousel-item active">
 +        <img data-src="holder.js/900x500/auto/#777:#777" alt="First slide image">
 +        <div class="carousel-caption">
 +          <h3>First slide label</h3>
 +          <p>Nulla vitae elit libero, a pharetra augue mollis interdum.</p>
 +        </div>
 +      </div>
 +      <div class="carousel-item">
 +        <img data-src="holder.js/900x500/auto/#666:#666" alt="Second slide image">
 +        <div class="carousel-caption">
 +          <h3>Second slide label</h3>
 +          <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
 +        </div>
 +      </div>
 +      <div class="carousel-item">
 +        <img data-src="holder.js/900x500/auto/#555:#5555" alt="Third slide image">
 +        <div class="carousel-caption">
 +          <h3>Third slide label</h3>
 +          <p>Praesent commodo cursus magna, vel scelerisque nisl consectetur.</p>
 +        </div>
 +      </div>
 +    </div>
 +    <a class="left carousel-control" href="#carousel-example-captions" role="button" data-slide="prev">
 +      <span class="icon-prev" 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="icon-next" aria-hidden="true"></span>
 +      <span class="sr-only">Next</span>
 +    </a>
 +  </div>
 +</div>
 +
 +{% highlight html %}
 +<div class="carousel-item">
 +  <img src="..." alt="...">
 +  <div class="carousel-caption">
 +    <h3>...</h3>
 +    <p>...</p>
 +  </div>
 +</div>
 +{% endhighlight %}
 +
 +<div class="bs-callout bs-callout-danger">
 +  <h4>Accessibility issue</h4>
 +  <p>The carousel component is generally not compliant with accessibility standards. If you need to be compliant, please consider other options for presenting your content.</p>
 +</div>
 +
 +## Usage
 +
 +### Multiple carousels
 +
 +Carousels require the use of an `id` on the outermost container (the `.carousel`) for carousel controls to function properly. When adding multiple carousels, or when changing a carousel's `id`, be sure to update the relevant controls.
 +
 +### Via data attributes
 +
 +Use data attributes to easily control the position of the carousel. `data-slide` accepts the keywords `prev` or `next`, which alters the slide position relative to its current position. Alternatively, use `data-slide-to` to pass a raw slide index to the carousel `data-slide-to="2"`, which shifts the slide position to a particular index beginning with `0`.
 +
 +The `data-ride="carousel"` attribute is used to mark a carousel as animating starting at page load. **It cannot be used in combination with (redundant and unnecessary) explicit JavaScript initialization of the same carousel.**
 +
 +### Via JavaScript
 +
 +Call carousel manually with:
 +
 +{% highlight js %}
 +$('.carousel').carousel()
 +{% endhighlight %}
 +
 +### Options
 +
 +Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-`, as in `data-interval=""`.
 +
 +<div class="table-responsive">
 +  <table class="table table-bordered table-striped">
 +    <thead>
 +     <tr>
 +       <th style="width: 100px;">Name</th>
 +       <th style="width: 50px;">type</th>
 +       <th style="width: 50px;">default</th>
 +       <th>description</th>
 +     </tr>
 +    </thead>
 +    <tbody>
 +     <tr>
 +       <td>interval</td>
 +       <td>number</td>
 +       <td>5000</td>
 +       <td>The amount of time to delay between automatically cycling an item. If false, carousel will not automatically cycle.</td>
 +     </tr>
 +     <tr>
 +       <td>pause</td>
 +       <td>string</td>
 +       <td>"hover"</td>
 +       <td>Pauses the cycling of the carousel on mouseenter and resumes the cycling of the carousel on mouseleave.</td>
 +     </tr>
 +     <tr>
 +       <td>wrap</td>
 +       <td>boolean</td>
 +       <td>true</td>
 +       <td>Whether the carousel should cycle continuously or have hard stops.</td>
 +     </tr>
 +     <tr>
 +       <td>keyboard</td>
 +       <td>boolean</td>
 +       <td>true</td>
 +       <td>Whether the carousel should react to keyboard events.</td>
 +     </tr>
 +    </tbody>
 +  </table>
 +</div>
 +
 +### Methods
 +
 +#### .carousel(options)
 +
 +Initializes the carousel with an optional options `object` and starts cycling through items.
 +
 +{% highlight js %}
 +$('.carousel').carousel({
 +  interval: 2000
 +})
 +{% endhighlight %}
 +
 +#### .carousel('cycle')
 +
 +Cycles through the carousel items from left to right.
 +
 +#### .carousel('pause')
 +
 +Stops the carousel from cycling through items.
 +
 +#### .carousel(number)
 +
 +Cycles the carousel to a particular frame (0 based, similar to an array).
 +
 +#### .carousel('prev')
 +
 +Cycles to the previous item.
 +
 +#### .carousel('next')
 +
 +Cycles to the next item.
 +
 +### Events
 +
 +Bootstrap's carousel class exposes two events for hooking into carousel functionality. Both events have the following additional properties:
 +
 +- `direction`: The direction in which the carousel is sliding (either `"left"` or `"right"`).
 +- `relatedTarget`: The DOM element that is being slid into place as the active item.
 +
++All carousel events are fired at the carousel itself (i.e. at the `<div class="carousel">`).
 +
 +<div class="table-responsive">
 +  <table class="table table-bordered table-striped">
 +    <thead>
 +     <tr>
 +       <th style="width: 150px;">Event Type</th>
 +       <th>Description</th>
 +     </tr>
 +    </thead>
 +    <tbody>
 +     <tr>
 +       <td>slide.bs.carousel</td>
 +       <td>This event fires immediately when the <code>slide</code> instance method is invoked.</td>
 +     </tr>
 +     <tr>
 +       <td>slid.bs.carousel</td>
 +       <td>This event is fired when the carousel has completed its slide transition.</td>
 +     </tr>
 +    </tbody>
 +  </table>
 +</div>
 +
 +{% highlight js %}
 +$('#myCarousel').on('slide.bs.carousel', function () {
 +  // do something…
 +})
 +{% endhighlight %}
index 22c74f31c3fbd28396dce47db751ff5dcd8db911,0000000000000000000000000000000000000000..4ae9f95baf5b8c6be6db5a0d88e90ec35b2b6b87
mode 100644,000000..100644
--- /dev/null
@@@ -1,465 -1,0 +1,488 @@@
- <div class="bs-example" style="padding-bottom: 24px;">
 +---
 +layout: page
 +title: Modal
 +---
 +
 +Modals are streamlined, but flexible, dialog prompts with the minimum required functionality and smart defaults.
 +
 +**Due to how HTML5 defines its semantics, the `autofocus` HTML attribute has no effect in Bootstrap modals.** To achieve the same effect, use some custom JavaScript:
 +
 +{% highlight js %}
 +$('#myModal').on('shown.bs.modal', function () {
 +  $('#myInput').focus()
 +})
 +{% endhighlight %}
 +
 +<div class="bs-callout bs-callout-warning" id="callout-stacked-modals">
 +  <h4>Overlapping modals not supported</h4>
 +  <p>Be sure not to open a modal while another is still visible. Showing more than one modal at a time requires custom code.</p>
 +</div>
 +<div class="bs-callout bs-callout-warning" id="callout-modal-markup-placement">
 +  <h4>Modal markup placement</h4>
 +  <p>Always try to place a modal's HTML code in a top-level position in your document to avoid other components affecting the modal's appearance and/or functionality.</p>
 +</div>
 +<div class="bs-callout bs-callout-warning">
 +  <h4>Mobile device caveats</h4>
 +  <p>There are some caveats regarding using modals on mobile devices. <a href="../getting-started/#support-fixed-position-keyboards">See our browser support docs</a> for details.</p>
 +</div>
 +
 +### Static example
 +
 +A rendered modal with header, body, and set of actions in the footer.</p>
 +
 +<div class="bs-example bs-example-modal">
 +  <div class="modal">
 +    <div class="modal-dialog">
 +      <div class="modal-content">
 +        <div class="modal-header">
 +          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
 +            <span aria-hidden="true">&times;</span>
 +            <span class="sr-only">Close</span>
 +          </button>
 +          <h4 class="modal-title">Modal title</h4>
 +        </div>
 +        <div class="modal-body">
 +          <p>One fine body&hellip;</p>
 +        </div>
 +        <div class="modal-footer">
 +          <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
 +          <button type="button" class="btn btn-primary">Save changes</button>
 +        </div>
 +      </div><!-- /.modal-content -->
 +    </div><!-- /.modal-dialog -->
 +  </div><!-- /.modal -->
 +</div>
 +
 +{% highlight html %}
 +<div class="modal fade">
 +  <div class="modal-dialog">
 +    <div class="modal-content">
 +      <div class="modal-header">
 +        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
 +          <span aria-hidden="true">&times;</span>
 +          <span class="sr-only">Close</span>
 +        </button>
 +        <h4 class="modal-title">Modal title</h4>
 +      </div>
 +      <div class="modal-body">
 +        <p>One fine body&hellip;</p>
 +      </div>
 +      <div class="modal-footer">
 +        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
 +        <button type="button" class="btn btn-primary">Save changes</button>
 +      </div>
 +    </div><!-- /.modal-content -->
 +  </div><!-- /.modal-dialog -->
 +</div><!-- /.modal -->
 +{% endhighlight %}
 +
 +### Live demo
 +
 +Toggle a modal via JavaScript by clicking the button below. It will slide down and fade in from the top of the page.
 +
 +<div id="myModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
 +  <div class="modal-dialog">
 +    <div class="modal-content">
 +
 +      <div class="modal-header">
 +        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
 +          <span aria-hidden="true">&times;</span>
 +          <span class="sr-only">Close</span>
 +        </button>
 +        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
 +      </div>
 +      <div class="modal-body">
 +        <h4>Text in a modal</h4>
 +        <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</p>
 +
 +        <h4>Popover in a modal</h4>
 +        <p>This <a href="#" role="button" class="btn btn-secondary popover-test" title="A Title" data-content="And here's some amazing content. It's very engaging. right?">button</a> should trigger a popover on click.</p>
 +
 +        <h4>Tooltips in a modal</h4>
 +        <p><a href="#" class="tooltip-test" title="Tooltip">This link</a> and <a href="#" class="tooltip-test" title="Tooltip">that link</a> should have tooltips on hover.</p>
 +
 +        <hr>
 +
 +        <h4>Overflowing text to show scroll behavior</h4>
 +        <p>Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.</p>
 +        <p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.</p>
 +        <p>Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.</p>
 +        <p>Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.</p>
 +        <p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.</p>
 +        <p>Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.</p>
 +        <p>Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.</p>
 +        <p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.</p>
 +        <p>Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.</p>
 +      </div>
 +      <div class="modal-footer">
 +        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
 +        <button type="button" class="btn btn-primary">Save changes</button>
 +      </div>
 +
 +    </div><!-- /.modal-content -->
 +  </div><!-- /.modal-dialog -->
 +</div>
 +
 +<div class="bs-example" style="padding-bottom: 24px;">
 +  <button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
 +    Launch demo modal
 +  </button>
 +</div>
 +
 +{% highlight html %}
 +<!-- Button trigger modal -->
 +<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
 +  Launch demo modal
 +</button>
 +
 +<!-- Modal -->
 +<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
 +  <div class="modal-dialog">
 +    <div class="modal-content">
 +      <div class="modal-header">
 +        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
 +          <span aria-hidden="true">&times;</span>
 +          <span class="sr-only">Close</span>
 +        </button>
 +        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
 +      </div>
 +      <div class="modal-body">
 +        ...
 +      </div>
 +      <div class="modal-footer">
 +        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
 +        <button type="button" class="btn btn-primary">Save changes</button>
 +      </div>
 +    </div>
 +  </div>
 +</div>
 +{% endhighlight %}
 +
 +<div class="bs-callout bs-callout-warning">
 +  <h4>Make modals accessible</h4>
 +  <p>Be sure to add <code>role="dialog"</code> to <code>.modal</code>, <code>aria-labelledby="myModalLabel"</code> attribute to reference the modal title, and <code>aria-hidden="true"</code> to tell assistive technologies to skip the modal's DOM elements.</p>
 +  <p>Additionally, you may give a description of your modal dialog with <code>aria-describedby</code> on <code>.modal</code>.</p>
 +</div>
 +
 +<div class="bs-callout bs-callout-info">
 +  <h4>Embedding YouTube videos</h4>
 +  <p>Embedding YouTube videos in modals requires additional JavaScript not in Bootstrap to automatically stop playback and more. <a href="http://stackoverflow.com/questions/18622508/bootstrap-3-and-youtube-in-modal">See this helpful Stack Overflow post</a> for more information.</p>
 +</div>
 +
 +## Optional sizes
 +
 +Modals have two optional sizes, available via modifier classes to be placed on a `.modal-dialog`.
 +
 +<div class="bs-example">
 +  <button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-lg">Large modal</button>
 +  <button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-sm">Small modal</button>
 +</div>
 +
 +{% highlight html %}
 +<!-- Large modal -->
 +<button class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-lg">Large modal</button>
 +
 +<div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
 +  <div class="modal-dialog modal-lg">
 +    <div class="modal-content">
 +      ...
 +    </div>
 +  </div>
 +</div>
 +
 +<!-- Small modal -->
 +<button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-sm">Small modal</button>
 +
 +<div class="modal fade bs-example-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
 +  <div class="modal-dialog modal-sm">
 +    <div class="modal-content">
 +      ...
 +    </div>
 +  </div>
 +</div>
 +{% endhighlight %}
 +
 +<div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
 +  <div class="modal-dialog modal-lg">
 +    <div class="modal-content">
 +
 +      <div class="modal-header">
 +        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
 +          <span aria-hidden="true">&times;</span>
 +          <span class="sr-only">Close</span>
 +        </button>
 +        <h4 class="modal-title" id="myLargeModalLabel">Large modal</h4>
 +      </div>
 +      <div class="modal-body">
 +        ...
 +      </div>
 +    </div>
 +  </div>
 +</div>
 +
 +<div class="modal fade bs-example-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
 +  <div class="modal-dialog modal-sm">
 +    <div class="modal-content">
 +
 +      <div class="modal-header">
 +        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
 +          <span aria-hidden="true">&times;</span>
 +          <span class="sr-only">Close</span>
 +        </button>
 +        <h4 class="modal-title" id="mySmallModalLabel">Small modal</h4>
 +      </div>
 +      <div class="modal-body">
 +        ...
 +      </div>
 +    </div>
 +  </div>
 +</div>
 +
 +## Remove animation
 +
 +For modals that simply appear rather than fade in to view, remove the `.fade` class from your modal markup.
 +
 +{% highlight html %}
 +<div class="modal" tabindex="-1" role="dialog" aria-labelledby="" aria-hidden="true">
 +  ...
 +</div>
 +{% endhighlight %}
 +
++## Using the grid system
++
++To take advantage of the Bootstrap grid system within a modal, just nest `.container-fluid within the `.modal-body` and then use the normal grid system classes within this container.
++
++{% example html %}
++<div id="gridSystemModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="gridModalLabel" aria-hidden="true">
++  <div class="modal-dialog">
++    <div class="modal-content">
++      <div class="modal-header">
++        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
++        <h4 class="modal-title" id="gridModalLabel">Modal title</h4>
++      </div>
++      <div class="modal-body">
++        <div class="container-fluid">
++          <div class="row">
++            <div class="col-md-4">.col-md-4</div>
++            <div class="col-md-4 col-md-offset-4">.col-md-4 .col-md-offset-4</div>
++          </div>
++          <div class="row">
++            <div class="col-md-3 col-md-offset-3">.col-md-3 .col-md-offset-3</div>
++            <div class="col-md-2 col-md-offset-4">.col-md-2 .col-md-offset-4</div>
++          </div>
++          <div class="row">
++            <div class="col-md-6 col-md-offset-3">.col-md-6 .col-md-offset-3</div>
++          </div>
++          <div class="row">
++            <div class="col-sm-9">
++              Level 1: .col-sm-9
++              <div class="row">
++                <div class="col-xs-8 col-sm-6">
++                  Level 2: .col-xs-8 .col-sm-6
++                </div>
++                <div class="col-xs-4 col-sm-6">
++                  Level 2: .col-xs-4 .col-sm-6
++                </div>
++              </div>
++            </div>
++          </div>
++        </div>
++      </div>
++      <div class="modal-footer">
++        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
++        <button type="button" class="btn btn-primary">Save changes</button>
++      </div>
++    </div>
++  </div>
++</div>
++<div class="bs-example bs-example-padded-bottom">
++  <button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#gridSystemModal">
++    Launch demo modal
++  </button>
++</div>
++{% endexample %}
++
 +## Varying modal content based on trigger button
 +
 +Have a bunch of buttons that all trigger the same modal, just with slightly different contents? Use `event.relatedTarget` and [HTML `data-*` attributes](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes) (possibly [via jQuery](http://api.jquery.com/data/)) to vary the contents of the modal depending on which button was clicked. See the Modal Events docs for details on `relatedTarget`.
 +
-   <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@twbootstrap">Open modal for @twbootstrap</button>
++{% example html %}
++<div class="bs-example">
 +  <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@mdo">Open modal for @mdo</button>
 +  <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@fat">Open modal for @fat</button>
- {% highlight html %}
- <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@mdo">Open modal for @mdo</button>
- <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@fat">Open modal for @fat</button>
- <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@twbootstrap">Open modal for @twbootstrap</button>
- <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
-   <div class="modal-dialog">
-     <div class="modal-content">
-       <div class="modal-header">
-         <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-           <span aria-hidden="true">&times;</span>
-           <span class="sr-only">Close</span>
-         </button>
-         <h4 class="modal-title" id="exampleModalLabel">New message</h4>
-       </div>
-       <div class="modal-body">
-         <form>
-           <div class="form-group">
-             <label for="recipient-name" class="control-label">Recipient:</label>
-             <input type="text" class="form-control" id="recipient-name">
-           </div>
-           <div class="form-group">
-             <label for="message-text" class="control-label">Message:</label>
-             <textarea class="form-control" id="message-text"></textarea>
-           </div>
-         </form>
-       </div>
-       <div class="modal-footer">
-         <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
-         <button type="button" class="btn btn-primary">Send message</button>
-       </div>
-     </div>
-   </div>
- </div>
- {% endhighlight %}
++  <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@getbootstrap">Open modal for @getbootstrap</button>
 +  <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
 +    <div class="modal-dialog">
 +      <div class="modal-content">
 +        <div class="modal-header">
 +          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
 +            <span aria-hidden="true">&times;</span>
 +            <span class="sr-only">Close</span>
 +          </button>
 +          <h4 class="modal-title" id="exampleModalLabel">New message</h4>
 +        </div>
 +        <div class="modal-body">
 +          <form>
 +            <div class="form-group">
 +              <label for="recipient-name" class="control-label">Recipient:</label>
 +              <input type="text" class="form-control" id="recipient-name">
 +            </div>
 +            <div class="form-group">
 +              <label for="message-text" class="control-label">Message:</label>
 +              <textarea class="form-control" id="message-text"></textarea>
 +            </div>
 +          </form>
 +        </div>
 +        <div class="modal-footer">
 +          <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
 +          <button type="button" class="btn btn-primary">Send message</button>
 +        </div>
 +      </div>
 +    </div>
 +  </div>
 +</div>
- Bootstrap's modal class exposes a few events for hooking into modal functionality.
++{% endexample %}
 +
 +{% highlight js %}
 +$('#exampleModal').on('show.bs.modal', function (event) {
 +  var button = $(event.relatedTarget) // Button that triggered the modal
 +  var recipient = button.data('whatever') // Extract info from data-* attributes
 +  // If necessary, you could initiate an AJAX request here (and then do the updating in a callback).
 +  // Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead.
 +  var modal = $(this)
 +  modal.find('.modal-title').text('New message to ' + recipient)
 +  modal.find('.modal-body input').val(recipient)
 +})
 +{% endhighlight %}
 +
++## Modals with dynamic heights
++
++If the height of a modal changes while it is open, you should call `$('#myModal').data('bs.modal').handleUpdate()` to readjust the modal's position in case a scrollbar appears.
++
 +## Usage
 +
 +The modal plugin toggles your hidden content on demand, via data attributes or JavaScript. It also adds `.modal-open` to the `<body>` to override default scrolling behavior and generates a `.modal-backdrop` to provide a click area for dismissing shown modals when clicking outside the modal.
 +
 +### Via data attributes
 +
 +Activate a modal without writing JavaScript. Set `data-toggle="modal"` on a controller element, like a button, along with a `data-target="#foo"` or `href="#foo"` to target a specific modal to toggle.
 +
 +{% highlight html %}
 +<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>
 +{% endhighlight %}
 +
 +### Via JavaScript
 +
 +Call a modal with id `myModal` with a single line of JavaScript:
 +
 +{% highlight js %}$('#myModal').modal(options){% endhighlight %}
 +
 +### Options
 +
 +Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-`, as in `data-backdrop=""`.
 +
 +<div class="table-responsive">
 +  <table class="table table-bordered table-striped">
 +    <thead>
 +     <tr>
 +       <th style="width: 100px;">Name</th>
 +       <th style="width: 50px;">type</th>
 +       <th style="width: 50px;">default</th>
 +       <th>description</th>
 +     </tr>
 +    </thead>
 +    <tbody>
 +     <tr>
 +       <td>backdrop</td>
 +       <td>boolean or the string <code>'static'</code></td>
 +       <td>true</td>
 +       <td>Includes a modal-backdrop element. Alternatively, specify <code>static</code> for a backdrop which doesn't close the modal on click.</td>
 +     </tr>
 +     <tr>
 +       <td>keyboard</td>
 +       <td>boolean</td>
 +       <td>true</td>
 +       <td>Closes the modal when escape key is pressed</td>
 +     </tr>
 +     <tr>
 +       <td>show</td>
 +       <td>boolean</td>
 +       <td>true</td>
 +       <td>Shows the modal when initialized.</td>
 +     </tr>
 +    </tbody>
 +  </table>
 +</div>
 +
 +### Methods
 +
 +#### .modal(options)
 +
 +Activates your content as a modal. Accepts an optional options `object`.
 +
 +{% highlight js %}
 +$('#myModal').modal({
 +  keyboard: false
 +})
 +{% endhighlight %}
 +
 +#### .modal('toggle')
 +
 +Manually toggles a modal. **Returns to the caller before the modal has actually been shown or hidden** (i.e. before the `shown.bs.modal` or `hidden.bs.modal` event occurs).
 +
 +{% highlight js %}$('#myModal').modal('toggle'){% endhighlight %}
 +
 +#### .modal('show')
 +
 +Manually opens a modal. **Returns to the caller before the modal has actually been shown** (i.e. before the `shown.bs.modal` event occurs).
 +
 +{% highlight js %}$('#myModal').modal('show'){% endhighlight %}
 +
 +#### .modal('hide')
 +
 +Manually hides a modal. **Returns to the caller before the modal has actually been hidden** (i.e. before the `hidden.bs.modal` event occurs).
 +
 +{% highlight js %}$('#myModal').modal('hide'){% endhighlight %}
 +
 +### Events
 +
++Bootstrap's modal class exposes a few events for hooking into modal functionality. All modal events are fired at the modal itself (i.e. at the `<div class="modal">`).
 +
 +<div class="table-responsive">
 +  <table class="table table-bordered table-striped">
 +    <thead>
 +     <tr>
 +       <th style="width: 150px;">Event Type</th>
 +       <th>Description</th>
 +     </tr>
 +    </thead>
 +    <tbody>
 +     <tr>
 +       <td>show.bs.modal</td>
 +       <td>This event fires immediately when the <code>show</code> instance method is called. If caused by a click, the clicked element is available as the <code>relatedTarget</code> property of the event.</td>
 +     </tr>
 +     <tr>
 +       <td>shown.bs.modal</td>
 +       <td>This event is fired when the modal has been made visible to the user (will wait for CSS transitions to complete). If caused by a click, the clicked element is available as the <code>relatedTarget</code> property of the event.</td>
 +     </tr>
 +     <tr>
 +       <td>hide.bs.modal</td>
 +       <td>This event is fired immediately when the <code>hide</code> instance method has been called.</td>
 +     </tr>
 +     <tr>
 +       <td>hidden.bs.modal</td>
 +       <td>This event is fired when the modal has finished being hidden from the user (will wait for CSS transitions to complete).</td>
 +     </tr>
 +     <tr>
 +       <td>loaded.bs.modal</td>
 +       <td>This event is fired when the modal has loaded content using the <code>remote</code> option.</td>
 +     </tr>
 +    </tbody>
 +  </table>
 +</div>
 +
 +{% highlight js %}
 +$('#myModal').on('hidden.bs.modal', function (e) {
 +  // do something...
 +})
 +{% endhighlight %}
index fc5206e8a9a9bd4605bb5bf93bb9770bcb03e2d3,0000000000000000000000000000000000000000..e1e2c9664e69cb81472c1272d1862b6352e9e481
mode 100644,000000..100644
--- /dev/null
@@@ -1,331 -1,0 +1,332 @@@
- Hides and destroys an element's popover.
 +---
 +layout: page
 +title: Popovers
 +---
 +
 +Add small overlays of content, like those on the iPad, to any element for housing secondary information.
 +
 +Popovers whose both title and content are zero-length are never displayed.
 +
 +<div class="bs-callout bs-callout-danger">
 +  <h4>Plugin dependency</h4>
 +  <p>Popovers require the <a href="#tooltips">tooltip plugin</a> to be included in your version of Bootstrap.</p>
 +</div>
 +<div class="bs-callout bs-callout-danger">
 +  <h4>Opt-in functionality</h4>
 +  <p>For performance reasons, the Tooltip and Popover data-apis are opt-in, meaning <strong>you must initialize them yourself</strong>.</p>
 +  <p>One way to initialize all popovers on a page would be to select them by their <code>data-toggle</code> attribute:</p>
 +{% highlight js %}
 +$(function () {
 +  $('[data-toggle="popover"]').popover()
 +})
 +{% endhighlight %}
 +</div>
 +<div class="bs-callout bs-callout-warning">
 +  <h4>Popovers in button groups and input groups require special setting</h4>
 +  <p>When using popovers on elements within a <code>.btn-group</code> or an <code>.input-group</code>, you'll have to specify the option <code>container: 'body'</code> (documented below) to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the popover is triggered).</p>
 +</div>
 +<div class="bs-callout bs-callout-warning">
 +  <h4>Don't try to show popovers on hidden elements</h4>
 +  <p>Invoking <code>$(...).popover('show')</code> when the target element is <code>display: none;</code> will cause the popover to be incorrectly positioned.</p>
 +</div>
 +<div class="bs-callout bs-callout-info">
 +  <h4>Popovers on disabled elements require wrapper elements</h4>
 +  <p>To add a popover to a <code>disabled</code> or <code>.disabled</code> element, put the element inside of a <code>&lt;div&gt;</code> and apply the popover to that <code>&lt;div&gt;</code> instead.</p>
 +</div>
 +<div class="bs-callout bs-callout-info">
 +  <h4>Multiple-line links</h4>
 +  <p>Sometimes you want to add a popover to a hyperlink that wraps multiple lines. The default behavior of the popover plugin is to center it horizontally and vertically. Add <code>white-space: nowrap;</code> to your anchors to avoid this.</p>
 +</div>
 +
 +### Static popover
 +
 +Four options are available: top, right, bottom, and left aligned.
 +
 +<div class="bs-example bs-example-popover">
 +  <div class="popover popover-top">
 +    <div class="popover-arrow"></div>
 +    <h3 class="popover-title">Popover top</h3>
 +    <div class="popover-content">
 +      <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
 +    </div>
 +  </div>
 +
 +  <div class="popover popover-right">
 +    <div class="popover-arrow"></div>
 +    <h3 class="popover-title">Popover right</h3>
 +    <div class="popover-content">
 +      <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
 +    </div>
 +  </div>
 +
 +  <div class="popover popover-bottom">
 +    <div class="popover-arrow"></div>
 +    <h3 class="popover-title">Popover bottom</h3>
 +
 +    <div class="popover-content">
 +      <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
 +    </div>
 +  </div>
 +
 +  <div class="popover popover-left">
 +    <div class="popover-arrow"></div>
 +    <h3 class="popover-title">Popover left</h3>
 +    <div class="popover-content">
 +      <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
 +    </div>
 +  </div>
 +
 +  <div class="clearfix"></div>
 +</div>
 +
 +### Live demo
 +
 +{% example html %}
 +<button type="button" class="btn btn-lg btn-danger bs-docs-popover" data-toggle="popover" title="Popover title" data-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
 +{% endexample %}
 +
 +#### Four directions
 +
 +<div class="bs-example popover-demo">
 +  <div class="bs-example-popovers">
 +    <button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="left" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
 +      Popover on left
 +    </button>
 +    <button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="top" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
 +      Popover on top
 +    </button>
 +    <button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="bottom" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
 +      Popover on bottom
 +    </button>
 +    <button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="right" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
 +      Popover on right
 +    </button>
 +  </div>
 +</div>
 +
 +{% highlight html %}
 +<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="left" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
 +  Popover on left
 +</button>
 +
 +<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="top" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
 +  Popover on top
 +</button>
 +
 +<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="bottom" data-content="Vivamus
 +sagittis lacus vel augue laoreet rutrum faucibus.">
 +  Popover on bottom
 +</button>
 +
 +<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="right" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
 +  Popover on right
 +</button>
 +{% endhighlight %}
 +
 +#### Dismiss on next click
 +
 +Use the `focus` trigger to dismiss popovers on the next click that the user makes.
 +
 +<div class="bs-callout bs-callout-danger">
 +  <h4>Specific markup required for dismiss-on-next-click</h4>
 +  <p>For proper cross-browser and cross-platform behavior, you must use the <code>&lt;a&gt;</code> tag, <i>not</i> the <code>&lt;button&gt;</code> tag, and you also must include a <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#tabindex"><code>tabindex</code></a> attribute.</p>
 +</div>
 +
 +{% example html %}
 +<a tabindex="0" class="btn btn-lg btn-danger bs-docs-popover" role="button" data-toggle="popover" data-trigger="focus" title="Dismissible popover" data-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
 +{% endexample %}
 +
 +{% highlight js %}
 +$('.popover-dismiss').popover({
 +  trigger: 'focus'
 +})
 +{% endhighlight %}
 +
 +
 +
 +## Usage
 +
 +Enable popovers via JavaScript:
 +
 +{% highlight js %}$('#example').popover(options){% endhighlight %}
 +
 +### Options
 +
 +Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-`, as in `data-animation=""`.
 +
 +<div class="table-responsive">
 +  <table class="table table-bordered table-striped">
 +    <thead>
 +      <tr>
 +        <th style="width: 100px;">Name</th>
 +        <th style="width: 100px;">Type</th>
 +        <th style="width: 50px;">Default</th>
 +        <th>Description</th>
 +      </tr>
 +    </thead>
 +    <tbody>
 +      <tr>
 +        <td>animation</td>
 +        <td>boolean</td>
 +        <td>true</td>
 +        <td>Apply a CSS fade transition to the popover</td>
 +      </tr>
 +      <tr>
 +        <td>container</td>
 +        <td>string | false</td>
 +        <td>false</td>
 +        <td>
 +          <p>Appends the popover to a specific element. Example: <code>container: 'body'</code>. This option is particularly useful in that it allows you to position the popover in the flow of the document near the triggering element - which will prevent the popover from floating away from the triggering element during a window resize.</p>
 +        </td>
 +      </tr>
 +      <tr>
 +        <td>content</td>
 +        <td>string | function</td>
 +        <td>''</td>
 +        <td>
 +          <p>Default content value if <code>data-content</code> attribute isn't present.</p>
 +          <p>If a function is given, it will be called with its <code>this</code> reference set to the element that the popover is attached to.</p>
 +        </td>
 +      </tr>
 +      <tr>
 +        <td>delay</td>
 +        <td>number | object</td>
 +        <td>0</td>
 +        <td>
 +         <p>Delay showing and hiding the popover (ms) - does not apply to manual trigger type</p>
 +         <p>If a number is supplied, delay is applied to both hide/show</p>
 +         <p>Object structure is: <code>delay: { "show": 500, "hide": 100 }</code></p>
 +        </td>
 +      </tr>
 +      <tr>
 +        <td>html</td>
 +        <td>boolean</td>
 +        <td>false</td>
 +        <td>Insert HTML into the popover. If false, jQuery's <code>text</code> method will be used to insert content into the DOM. Use text if you're worried about XSS attacks.</td>
 +      </tr>
 +      <tr>
 +        <td>placement</td>
 +        <td>string | function</td>
 +        <td>'right'</td>
 +        <td>
 +          <p>How to position the popover - top | bottom | left | right | auto.<br>When "auto" is specified, it will dynamically reorient the popover. For example, if placement is "auto left", the popover will display to the left when possible, otherwise it will display right.</p>
 +          <p>When a function is used to determine the placement, it is called with the popover DOM node as its first argument and the triggering element DOM node as its second. The <code>this</code> context is set to the popover instance.</p>
 +        </td>
 +      </tr>
 +      <tr>
 +        <td>selector</td>
 +        <td>string</td>
 +        <td>false</td>
 +        <td>If a selector is provided, popover objects will be delegated to the specified targets. In practice, this is used to enable dynamic HTML content to have popovers added. See <a href="https://github.com/twbs/bootstrap/issues/4215">this</a> and <a href="http://jsbin.com/zopod/1/edit">an informative example</a>.</td>
 +      </tr>
 +      <tr>
 +        <td>template</td>
 +        <td>string</td>
 +        <td><code>'&lt;div class="popover" role="tooltip"&gt;&lt;div class="popover-arrow"&gt;&lt;/div&gt;&lt;h3 class="popover-title"&gt;&lt;/h3&gt;&lt;div class="popover-content"&gt;&lt;/div&gt;&lt;/div&gt;'</code></td>
 +        <td>
 +          <p>Base HTML to use when creating the popover.</p>
 +          <p>The popover's <code>title</code> will be injected into the <code>.popover-title</code>.</p>
 +          <p>The popover's <code>content</code> will be injected into the <code>.popover-content</code>.</p>
 +          <p><code>.popover-arrow</code> will become the popover's arrow.</p>
 +          <p>The outermost wrapper element should have the <code>.popover</code> class.</p>
 +        </td>
 +      </tr>
 +      <tr>
 +        <td>title</td>
 +        <td>string | function</td>
 +        <td>''</td>
 +        <td>
 +          <p>Default title value if <code>title</code> attribute isn't present.</p>
 +          <p>If a function is given, it will be called with its <code>this</code> reference set to the element that the popover is attached to.</p>
 +        </td>
 +      </tr>
 +      <tr>
 +        <td>trigger</td>
 +        <td>string</td>
 +        <td>'click'</td>
 +        <td>How popover is triggered - click | hover | focus | manual. You may pass multiple triggers; separate them with a space.</td>
 +      </tr>
 +      <tr>
 +        <td>viewport</td>
 +        <td>string | object</td>
 +        <td>{ selector: 'body', padding: 0 }</td>
 +        <td>
 +          <p>Keeps the popover within the bounds of this element. Example: <code>viewport: '#viewport'</code> or <code>{ "selector": "#viewport", "padding": 0 }</code></p>
 +        </td>
 +      </tr>
 +    </tbody>
 +  </table>
 +</div>
 +
 +<div class="bs-callout bs-callout-info">
 +  <h4>Data attributes for individual popovers</h4>
 +  <p>Options for individual popovers can alternatively be specified through the use of data attributes, as explained above.</p>
 +</div>
 +
 +### Methods
 +
 +#### $().popover(options)
 +
 +Initializes popovers for an element collection.
 +
 +#### .popover('show')
 +
 +Reveals an element's popover. **Returns to the caller before the popover has actually been shown** (i.e. before the `shown.bs.popover` event occurs). This is considered a "manual" triggering of the popover. Popovers whose both title and content are zero-length are never displayed.
 +
 +{% highlight js %}$('#element').popover('show'){% endhighlight %}
 +
 +#### .popover('hide')
 +
 +Hides an element's popover. **Returns to the caller before the popover has actually been hidden** (i.e. before the `hidden.bs.popover` event occurs). This is considered a "manual" triggering of the popover.
 +
 +{% highlight js %}$('#element').popover('hide'){% endhighlight %}
 +
 +#### .popover('toggle')
 +
 +Toggles an element's popover. **Returns to the caller before the popover has actually been shown or hidden** (i.e. before the `shown.bs.popover` or `hidden.bs.popover` event occurs). This is considered a "manual" triggering of the popover.
 +
 +{% highlight js %}$('#element').popover('toggle'){% endhighlight %}
 +
 +#### .popover('destroy')
 +
++Hides and destroys an element's popover. Popvoers that use delegation (which are created using [the `selector` option](#popovers-options)) cannot be individually destroyed on descendant trigger elements.
++
 +
 +{% highlight js %}$('#element').popover('destroy'){% endhighlight %}
 +
 +### Events
 +
 +<div class="table-responsive">
 +  <table class="table table-bordered table-striped">
 +    <thead>
 +     <tr>
 +        <th style="width: 150px;">Event Type</th>
 +        <th>Description</th>
 +     </tr>
 +    </thead>
 +    <tbody>
 +      <tr>
 +        <td>show.bs.popover</td>
 +        <td>This event fires immediately when the <code>show</code> instance method is called.</td>
 +      </tr>
 +      <tr>
 +        <td>shown.bs.popover</td>
 +        <td>This event is fired when the popover has been made visible to the user (will wait for CSS transitions to complete).</td>
 +      </tr>
 +      <tr>
 +        <td>hide.bs.popover</td>
 +        <td>This event is fired immediately when the <code>hide</code> instance method has been called.</td>
 +      </tr>
 +      <tr>
 +        <td>hidden.bs.popover</td>
 +        <td>This event is fired when the popover has finished being hidden from the user (will wait for CSS transitions to complete).</td>
 +      </tr>
 +    </tbody>
 +  </table>
 +</div>
 +
 +{% highlight js %}
 +$('#myPopover').on('hidden.bs.popover', function () {
 +  // do something…
 +})
 +{% endhighlight %}
index 5ae045fd16db52e37f6d5a5baea4b3c1016cf445,0000000000000000000000000000000000000000..892d641dadab37470280e411c839ce948cab35ef
mode 100644,000000..100644
--- /dev/null
@@@ -1,166 -1,0 +1,166 @@@
- <body data-spy="scroll" data-target=".navbar-example">
 +---
 +layout: page
 +title: Srollspy
 +---
 +
 +## Example in navbar
 +
 +The ScrollSpy plugin is for automatically updating nav targets based on scroll position. Scroll the area below the navbar and watch the active class change. The dropdown sub items will be highlighted as well.
 +
 +<div class="bs-example">
 +  <nav id="navbar-example2" class="navbar navbar-default navbar-static" role="navigation">
 +    <div class="container-fluid">
 +      <div class="navbar-header">
 +        <button class="navbar-toggle collapsed" type="button" data-toggle="collapse" data-target=".bs-example-js-navbar-scrollspy">
 +          <span class="sr-only">Toggle navigation</span>
 +          <span class="icon-bar"></span>
 +          <span class="icon-bar"></span>
 +          <span class="icon-bar"></span>
 +        </button>
 +        <a class="navbar-brand" href="#">Project Name</a>
 +      </div>
 +      <div class="collapse navbar-collapse bs-example-js-navbar-scrollspy">
 +        <ul class="nav navbar-nav">
 +          <li><a href="#fat">@fat</a></li>
 +          <li><a href="#mdo">@mdo</a></li>
 +          <li class="dropdown">
 +            <a href="#" id="navbarDrop1" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>
 +            <ul class="dropdown-menu" role="menu" aria-labelledby="navbarDrop1">
 +              <li><a href="#one" tabindex="-1">one</a></li>
 +              <li><a href="#two" tabindex="-1">two</a></li>
 +              <li class="divider"></li>
 +              <li><a href="#three" tabindex="-1">three</a></li>
 +            </ul>
 +          </li>
 +        </ul>
 +      </div>
 +    </div>
 +  </nav>
 +  <div data-spy="scroll" data-target="#navbar-example2" data-offset="0" class="scrollspy-example">
 +    <h4 id="fat">@fat</h4>
 +    <p>Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.</p>
 +    <h4 id="mdo">@mdo</h4>
 +    <p>Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis gentrify. Brooklyn adipisicing craft beer vice keytar deserunt.</p>
 +    <h4 id="one">one</h4>
 +    <p>Occaecat commodo aliqua delectus. Fap craft beer deserunt skateboard ea. Lomo bicycle rights adipisicing banh mi, velit ea sunt next level locavore single-origin coffee in magna veniam. High life id vinyl, echo park consequat quis aliquip banh mi pitchfork. Vero VHS est adipisicing. Consectetur nisi DIY minim messenger bag. Cred ex in, sustainable delectus consectetur fanny pack iphone.</p>
 +    <h4 id="two">two</h4>
 +    <p>In incididunt echo park, officia deserunt mcsweeney's proident master cleanse thundercats sapiente veniam. Excepteur VHS elit, proident shoreditch +1 biodiesel laborum craft beer. Single-origin coffee wayfarers irure four loko, cupidatat terry richardson master cleanse. Assumenda you probably haven't heard of them art party fanny pack, tattooed nulla cardigan tempor ad. Proident wolf nesciunt sartorial keffiyeh eu banh mi sustainable. Elit wolf voluptate, lo-fi ea portland before they sold out four loko. Locavore enim nostrud mlkshk brooklyn nesciunt.</p>
 +    <h4 id="three">three</h4>
 +    <p>Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.</p>
 +    <p>Keytar twee blog, culpa messenger bag marfa whatever delectus food truck. Sapiente synth id assumenda. Locavore sed helvetica cliche irony, thundercats you probably haven't heard of them consequat hoodie gluten-free lo-fi fap aliquip. Labore elit placeat before they sold out, terry richardson proident brunch nesciunt quis cosby sweater pariatur keffiyeh ut helvetica artisan. Cardigan craft beer seitan readymade velit. VHS chambray laboris tempor veniam. Anim mollit minim commodo ullamco thundercats.
 +    </p>
 +  </div>
 +</div>
 +
 +
 +## Usage
 +
 +### Requires Bootstrap nav
 +
 +Scrollspy currently requires the use of a [Bootstrap nav component](/components/nav/) for proper highlighting of active links.
 +
 +### Requires relative positioning
 +
 +No matter the implementation method, scrollspy requires the use of `position: relative;` on the element you're spying on. In most cases this is the `<body>`.
 +
 +### Via data attributes
 +
 +To easily add scrollspy behavior to your topbar navigation, add `data-spy="scroll"` to the element you want to spy on (most typically this would be the `<body>`). Then add the `data-target` attribute with the ID or class of the parent element of any Bootstrap `.nav` component.
 +
 +{% highlight css %}
 +body {
 +  position: relative;
 +}
 +{% endhighlight %}
 +
 +{% highlight html %}
-   <div class="navbar-example">
++<body data-spy="scroll" data-target="#navbar-example">
 +  ...
- $('body').scrollspy({ target: '.navbar-example' })
++  <div id="navbar-example">
 +    <ul class="nav nav-tabs" role="tablist">
 +      ...
 +    </ul>
 +  </div>
 +  ...
 +</body>
 +{% endhighlight %}
 +
 +### Via JavaScript
 +
 +After adding `position: relative;` in your CSS, call the scrollspy via JavaScript:
 +
 +{% highlight js %}
++$('body').scrollspy({ target: '#navbar-example' })
 +{% endhighlight %}
 +
 +<div class="bs-callout bs-callout-danger">
 +  <h4>Resolvable ID targets required</h4>
 +  <p>Navbar links must have resolvable id targets. For example, a <code>&lt;a href="#home"&gt;home&lt;/a&gt;</code> must correspond to something in the DOM like <code>&lt;div id="home"&gt;&lt;/div&gt;</code>.</p>
 +</div>
 +
 +<div class="bs-callout bs-callout-info">
 +  <h4>Non-<code>:visible</code> target elements ignored</h4>
 +  <p>Target elements that are not <a href="http://api.jquery.com/visible-selector/"><code>:visible</code> according to jQuery</a> will be ignored and their corresponding nav items will never be highlighted.</p>
 +</div>
 +
 +### Methods
 +
 +#### .scrollspy('refresh')
 +
 +When using scrollspy in conjunction with adding or removing of elements from the DOM, you'll need to call the refresh method like so:
 +
 +{% highlight js %}
 +$('[data-spy="scroll"]').each(function () {
 +  var $spy = $(this).scrollspy('refresh')
 +})
 +{% endhighlight %}
 +
 +
 +### Options
 +
 +Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-`, as in `data-offset=""`.
 +
 +<div class="table-responsive">
 +  <table class="table table-bordered table-striped">
 +    <thead>
 +     <tr>
 +       <th style="width: 100px;">Name</th>
 +       <th style="width: 100px;">type</th>
 +       <th style="width: 50px;">default</th>
 +       <th>description</th>
 +     </tr>
 +    </thead>
 +    <tbody>
 +     <tr>
 +       <td>offset</td>
 +       <td>number</td>
 +       <td>10</td>
 +       <td>Pixels to offset from top when calculating position of scroll.</td>
 +     </tr>
 +    </tbody>
 +  </table>
 +</div>
 +
 +### Events
 +
 +<div class="table-responsive">
 +  <table class="table table-bordered table-striped">
 +    <thead>
 +     <tr>
 +       <th style="width: 150px;">Event Type</th>
 +       <th>Description</th>
 +     </tr>
 +    </thead>
 +    <tbody>
 +     <tr>
 +       <td>activate.bs.scrollspy</td>
 +       <td>This event fires whenever a new item becomes activated by the scrollspy.</td>
 +    </tr>
 +    </tbody>
 +  </table>
 +</div>
 +{% highlight js %}
 +$('#myScrollspy').on('activate.bs.scrollspy', function () {
 +  // do something…
 +})
 +{% endhighlight %}
index 2e8e114706387eba4be01bea9958b1a220a46564,0000000000000000000000000000000000000000..aa5d8661f0d1ad0c910832e518490a291b4e7e32
mode 100644,000000..100644
--- /dev/null
@@@ -1,301 -1,0 +1,301 @@@
- Hides and destroys an element's tooltip.
 +---
 +layout: page
 +title: Tooltips
 +---
 +
 +## Examples
 +
 +Inspired by the excellent jQuery.tipsy plugin written by Jason Frame; Tooltips are an updated version, which don't rely on images, use CSS3 for animations, and data-attributes for local title storage.
 +
 +Tooltips with zero-length titles are never displayed.
 +
 +Hover over the links below to see tooltips:
 +
 +<div class="bs-example tooltip-demo">
 +  <p class="muted">Tight pants next level keffiyeh <a href="#" data-toggle="tooltip" title="Default tooltip">you probably</a> haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel <a href="#" data-toggle="tooltip" title="Another tooltip">have a</a> terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan <a href="#" data-toggle="tooltip" title="Another one here too">whatever keytar</a>, scenester farm-to-table banksy Austin <a href="#" data-toggle="tooltip" title="The last tip!">twitter handle</a> freegan cred raw denim single-origin coffee viral.
 +  </p>
 +</div>
 +
 +### Static demo
 +
 +Four options are available: top, right, bottom, and left aligned.
 +
 +<div class="bs-example bs-example-tooltip">
 +  <div class="tooltip left" role="tooltip">
 +    <div class="tooltip-arrow"></div>
 +    <div class="tooltip-inner">
 +      Tooltip on the left
 +    </div>
 +  </div>
 +  <div class="tooltip top" role="tooltip">
 +    <div class="tooltip-arrow"></div>
 +    <div class="tooltip-inner">
 +      Tooltip on the top
 +    </div>
 +  </div>
 +  <div class="tooltip bottom" role="tooltip">
 +    <div class="tooltip-arrow"></div>
 +    <div class="tooltip-inner">
 +      Tooltip on the bottom
 +    </div>
 +  </div>
 +  <div class="tooltip right" role="tooltip">
 +    <div class="tooltip-arrow"></div>
 +    <div class="tooltip-inner">
 +      Tooltip on the right
 +    </div>
 +  </div>
 +</div>
 +
 +### Interactive demo
 +
 +Hover over the buttons below to see their tooltips.
 +
 +<div class="bs-example tooltip-demo">
 +  <div class="bs-example-tooltips">
 +    <button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="left" title="Tooltip on left">Tooltip on left</button>
 +    <button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="top" title="Tooltip on top">Tooltip on top</button>
 +    <button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom" title="Tooltip on bottom">Tooltip on bottom</button>
 +    <button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="right" title="Tooltip on right">Tooltip on right</button>
 +  </div>
 +</div>
 +
 +{% highlight html %}
 +<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="left" title="Tooltip on left">
 +  Tooltip on left
 +</button>
 +<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="top" title="Tooltip on top">
 +  Tooltip on top
 +</button>
 +<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom" title="Tooltip on bottom">
 +  Tooltip on bottom
 +</button>
 +<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="right" title="Tooltip on right">
 +  Tooltip on right
 +</button>
 +{% endhighlight %}
 +
 +<div class="bs-callout bs-callout-danger">
 +  <h4>Opt-in functionality</h4>
 +  <p>For performance reasons, the Tooltip and Popover data-apis are opt-in, meaning <strong>you must initialize them yourself</strong>.</p>
 +  <p>One way to initialize all tooltips on a page would be to select them by their <code>data-toggle</code> attribute:</p>
 +{% highlight js %}
 +$(function () {
 +  $('[data-toggle="tooltip"]').tooltip()
 +})
 +{% endhighlight %}
 +</div>
 +<div class="bs-callout bs-callout-warning">
 +  <h4>Tooltips in button groups and input groups require special setting</h4>
 +  <p>When using tooltips on elements within a <code>.btn-group</code> or an <code>.input-group</code>, you'll have to specify the option <code>container: 'body'</code> (documented below) to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the tooltip is triggered).</p>
 +</div>
 +<div class="bs-callout bs-callout-warning">
 +  <h4>Don't try to show tooltips on hidden elements</h4>
 +  <p>Invoking <code>$(...).tooltip('show')</code> when the target element is <code>display: none;</code> will cause the tooltip to be incorrectly positioned.</p>
 +</div>
 +<div class="bs-callout bs-callout-info">
 +  <h4>Tooltips on disabled elements require wrapper elements</h4>
 +  <p>To add a tooltip to a <code>disabled</code> or <code>.disabled</code> element, put the element inside of a <code>&lt;div&gt;</code> and apply the tooltip to that <code>&lt;div&gt;</code> instead.</p>
 +</div>
 +
 +## Usage
 +
 +The tooltip plugin generates content and markup on demand, and by default places tooltips after their trigger element.
 +
 +Trigger the tooltip via JavaScript:
 +
 +{% highlight js %}
 +$('#example').tooltip(options)
 +{% endhighlight %}
 +
 +### Markup
 +
 +The required markup for a tooltip is only a `data` attribute and `title` on the HTML element you wish to have a tooltip. The generated markup of a tooltip is rather simple, though it does require a position (by default, set to `top` by the plugin).
 +
 +<div class="bs-callout bs-callout-warning">
 +  <h4>Multiple-line links</h4>
 +  <p>Sometimes you want to add a tooltip to a hyperlink that wraps multiple lines. The default behavior of the tooltip plugin is to center it horizontally and vertically. Add <code>white-space: nowrap;</code> to your anchors to avoid this.</p>
 +</div>
 +
 +{% highlight html %}
 +<!-- HTML to write -->
 +<a href="#" data-toggle="tooltip" title="Some tooltip text!">Hover over me</a>
 +
 +<!-- Generated markup by the plugin -->
 +<div class="tooltip top" role="tooltip">
 +  <div class="tooltip-arrow"></div>
 +  <div class="tooltip-inner">
 +    Some tooltip text!
 +  </div>
 +</div>
 +{% endhighlight %}
 +
 +### Options
 +
 +Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-`, as in `data-animation=""`.
 +
 +<div class="table-responsive">
 +  <table class="table table-bordered table-striped">
 +    <thead>
 +      <tr>
 +        <th style="width: 100px;">Name</th>
 +        <th style="width: 100px;">Type</th>
 +        <th style="width: 50px;">Default</th>
 +        <th>Description</th>
 +      </tr>
 +    </thead>
 +    <tbody>
 +      <tr>
 +        <td>animation</td>
 +        <td>boolean</td>
 +        <td>true</td>
 +        <td>Apply a CSS fade transition to the tooltip</td>
 +      </tr>
 +      <tr>
 +        <td>container</td>
 +        <td>string | false</td>
 +        <td>false</td>
 +        <td>
 +          <p>Appends the tooltip to a specific element. Example: <code>container: 'body'</code>. This option is particularly useful in that it allows you to position the tooltip in the flow of the document near the triggering element - which will prevent the tooltip from floating away from the triggering element during a window resize.</p>
 +       </td>
 +      </tr>
 +      <tr>
 +        <td>delay</td>
 +        <td>number | object</td>
 +        <td>0</td>
 +        <td>
 +         <p>Delay showing and hiding the tooltip (ms) - does not apply to manual trigger type</p>
 +         <p>If a number is supplied, delay is applied to both hide/show</p>
 +         <p>Object structure is: <code>delay: { "show": 500, "hide": 100 }</code></p>
 +        </td>
 +      </tr>
 +      <tr>
 +        <td>html</td>
 +        <td>boolean</td>
 +        <td>false</td>
 +        <td>Insert HTML into the tooltip. If false, jQuery's <code>text</code> method will be used to insert content into the DOM. Use text if you're worried about XSS attacks.</td>
 +      </tr>
 +      <tr>
 +        <td>placement</td>
 +        <td>string | function</td>
 +        <td>'top'</td>
 +        <td>
 +          <p>How to position the tooltip - top | bottom | left | right | auto.<br>When "auto" is specified, it will dynamically reorient the tooltip. For example, if placement is "auto left", the tooltip will display to the left when possible, otherwise it will display right.</p>
 +          <p>When a function is used to determine the placement, it is called with the tooltip DOM node as its first argument and the triggering element DOM node as its second. The <code>this</code> context is set to the tooltip instance.</p>
 +        </td>
 +      </tr>
 +      <tr>
 +        <td>selector</td>
 +        <td>string</td>
 +        <td>false</td>
 +        <td>If a selector is provided, popover objects will be delegated to the specified targets. In practice, this is used to enable dynamic HTML content to have popovers added. See <a href="https://github.com/twbs/bootstrap/issues/4215">this</a> and <a href="http://jsbin.com/zopod/1/edit">an informative example</a>.</td>
 +      </tr>
 +      <tr>
 +        <td>template</td>
 +        <td>string</td>
 +        <td><code>'&lt;div class="tooltip" role="tooltip"&gt;&lt;div class="tooltip-arrow"&gt;&lt;/div&gt;&lt;div class="tooltip-inner"&gt;&lt;/div&gt;&lt;/div&gt;'</code></td>
 +        <td>
 +          <p>Base HTML to use when creating the tooltip.</p>
 +          <p>The tooltip's <code>title</code> will be injected into the <code>.tooltip-inner</code>.</p>
 +          <p><code>.tooltip-arrow</code> will become the tooltip's arrow.</p>
 +          <p>The outermost wrapper element should have the <code>.tooltip</code> class.</p>
 +        </td>
 +      </tr>
 +      <tr>
 +        <td>title</td>
 +        <td>string | function</td>
 +        <td>''</td>
 +        <td>
 +          <p>Default title value if <code>title</code> attribute isn't present.</p>
 +          <p>If a function is given, it will be called with its <code>this</code> reference set to the element that the tooltip is attached to.</p>
 +        </td>
 +      </tr>
 +      <tr>
 +        <td>trigger</td>
 +        <td>string</td>
 +        <td>'hover focus'</td>
 +        <td>How tooltip is triggered - click | hover | focus | manual. You may pass multiple triggers; separate them with a space.</td>
 +      </tr>
 +      <tr>
 +        <td>viewport</td>
 +        <td>string | object</td>
 +        <td>{ selector: 'body', padding: 0 }</td>
 +        <td>
 +          <p>Keeps the tooltip within the bounds of this element. Example: <code>viewport: '#viewport'</code> or <code>{ "selector": "#viewport", "padding": 0 }</code></p>
 +        </td>
 +      </tr>
 +    </tbody>
 +  </table>
 +</div>
 +
 +<div class="bs-callout bs-callout-info">
 +  <h4>Data attributes for individual tooltips</h4>
 +  <p>Options for individual tooltips can alternatively be specified through the use of data attributes, as explained above.</p>
 +</div>
 +
 +### Methods
 +
 +#### $().tooltip(options)
 +
 +Attaches a tooltip handler to an element collection.
 +
 +#### .tooltip('show')
 +
 +Reveals an element's tooltip. **Returns to the caller before the tooltip has actually been shown** (i.e. before the `shown.bs.tooltip` event occurs). This is considered a "manual" triggering of the tooltip. Tooltips with zero-length titles are never displayed.
 +
 +{% highlight js %}$('#element').tooltip('show'){% endhighlight %}
 +
 +#### .tooltip('hide')
 +
 +Hides an element's tooltip. **Returns to the caller before the tooltip has actually been hidden** (i.e. before the `hidden.bs.tooltip` event occurs). This is considered a "manual" triggering of the tooltip.
 +
 +{% highlight js %}$('#element').tooltip('hide'){% endhighlight %}
 +
 +#### .tooltip('toggle')
 +
 +Toggles an element's tooltip. **Returns to the caller before the tooltip has actually been shown or hidden** (i.e. before the `shown.bs.tooltip` or `hidden.bs.tooltip` event occurs). This is considered a "manual" triggering of the tooltip.
 +
 +{% highlight js %}$('#element').tooltip('toggle'){% endhighlight %}
 +
 +#### .tooltip('destroy')
 +
++Hides and destroys an element's tooltip. Tooltips that use delegation (which are created using [the `selector` option](#tooltips-options)) cannot be individually destroyed on descendant trigger elements.
 +
 +{% highlight js %}$('#element').tooltip('destroy'){% endhighlight %}
 +
 +### Events
 +
 +<div class="table-responsive">
 +  <table class="table table-bordered table-striped">
 +    <thead>
 +      <tr>
 +        <th style="width: 150px;">Event Type</th>
 +        <th>Description</th>
 +      </tr>
 +    </thead>
 +    <tbody>
 +      <tr>
 +        <td>show.bs.tooltip</td>
 +        <td>This event fires immediately when the <code>show</code> instance method is called.</td>
 +      </tr>
 +      <tr>
 +        <td>shown.bs.tooltip</td>
 +        <td>This event is fired when the tooltip has been made visible to the user (will wait for CSS transitions to complete).</td>
 +      </tr>
 +      <tr>
 +        <td>hide.bs.tooltip</td>
 +        <td>This event is fired immediately when the <code>hide</code> instance method has been called.</td>
 +      </tr>
 +      <tr>
 +        <td>hidden.bs.tooltip</td>
 +        <td>This event is fired when the tooltip has finished being hidden from the user (will wait for CSS transitions to complete).</td>
 +      </tr>
 +    </tbody>
 +  </table>
 +</div>
 +
 +{% highlight js %}
 +$('#myTooltip').on('hidden.bs.tooltip', function () {
 +  // do something…
 +})
 +{% endhighlight %}
index 5fb8f1cca952499b90373aba7b770c1625e11abb,b7080b0c29cc3c2cdd9557a2b5e536f7e6c0e034..786a7e1f6bc23fc0016e940e6e4f28355e026943
@@@ -1,10 -1,46 +1,38 @@@
  {
    "paths": {
 -    "customizerJs": [
 -      "../assets/js/vendor/autoprefixer.js",
 -      "../assets/js/vendor/less.min.js",
 -      "../assets/js/vendor/jszip.min.js",
 -      "../assets/js/vendor/uglify.min.js",
 -      "../assets/js/vendor/Blob.js",
 -      "../assets/js/vendor/FileSaver.js",
 -      "../assets/js/raw-files.min.js",
 -      "../assets/js/src/customizer.js"
 -    ],
      "docsJs": [
 -      "../assets/js/vendor/holder.js",
 -      "../assets/js/vendor/ZeroClipboard.min.js",
 -      "../assets/js/vendor/anchor.js",
 -      "../assets/js/src/application.js"
++
 +      "assets/js/vendor/holder.js",
 +      "assets/js/vendor/jekyll-search.js",
 +      "assets/js/vendor/ZeroClipboard.min.js",
++      "assets/js/vendor/anchor.js",
 +      "assets/js/src/application.js"
      ]
+   },
+   "config": {
+     "autoprefixerBrowsers": [
+       "Android 2.3",
+       "Android >= 4",
+       "Chrome >= 20",
+       "Firefox >= 24",
+       "Explorer >= 8",
+       "iOS >= 6",
+       "Opera >= 12",
+       "Safari >= 6"
+     ],
+     "jqueryCheck": [
+       "if (typeof jQuery === 'undefined') {",
+       "  throw new Error('Bootstrap\\'s JavaScript requires jQuery')",
+       "}\n"
+     ],
+     "jqueryVersionCheck": [
+       "+function ($) {",
+       "  'use strict';",
+       "  var version = $.fn.jquery.split(' ')[0].split('.')",
+       "  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {",
+       "    throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher')",
+       "  }",
+       "}(jQuery);\n\n"
+     ]
    }
 -}
 +}
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc package.json
index 3b35465198d17535064b5a2f634f8f353120648e,e4bf7579cbdc524f07cba49458d0433555185d2d..89852bd9396e0acd0640169ce7c637c63e97f169
      "grunt": "~0.4.5",
      "grunt-autoprefixer": "~2.2.0",
      "grunt-banner": "~0.3.1",
 +    "grunt-closure-tools": "^0.9.7",
      "grunt-contrib-clean": "~0.6.0",
-     "grunt-contrib-compress": "^0.13.0",
-     "grunt-contrib-concat": "^0.5.1",
+     "grunt-contrib-compress": "~0.13.0",
+     "grunt-contrib-concat": "~0.5.1",
      "grunt-contrib-connect": "~0.9.0",
      "grunt-contrib-copy": "~0.8.0",
      "grunt-contrib-csslint": "~0.4.0",
      "grunt-contrib-watch": "~0.6.1",
      "grunt-csscomb": "~3.0.0",
      "grunt-exec": "~0.4.6",
 -    "grunt-html": "~3.0.0",
 +    "grunt-html": "^3.0.0",
      "grunt-jekyll": "~0.4.2",
      "grunt-jscs": "~1.5.0",
 +    "grunt-postcss": "^0.3.0",
 +    "grunt-sass": "~0.18.0",
      "grunt-saucelabs": "~8.6.0",
 +    "grunt-scss-lint": "^0.3.4",
      "grunt-sed": "~0.1.1",
      "load-grunt-tasks": "~3.1.0",
-     "markdown-it": "^3.0.6",
+     "markdown-it": "^3.0.7",
 +    "mq4-hover-shim": "^0.1.0",
      "npm-shrinkwrap": "^200.1.0",
 +    "superstartup-closure-compiler": "^0.1.6",
      "time-grunt": "^1.1.0"
    },
    "engines": {
index 456873ec91a2b085af8a34c1f3308c319c1ed5a0,8bfbc4ba60433fb4201087c2c000226f6f364c65..0ed0496688a6e13d85c4541a93b27381882aab33
@@@ -141,20 -138,22 +141,23 @@@ output 
    // HTML5 says that controls under a fieldset > legend:first-child won't be
    // disabled if the fieldset is disabled. Due to implementation difficulty, we
    // don't honor that edge case; we style them as disabled anyway.
 -  &[disabled],
 +  &:disabled,
    &[readonly],
    fieldset[disabled] & {
-     cursor: $cursor-disabled;
 -    background-color: @input-bg-disabled;
 +    background-color: $input-bg-disabled;
      opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655
    }
- }
 -  
++
+   &[disabled],
+   fieldset[disabled] & {
 -    cursor: @cursor-disabled;
++    cursor: $cursor-disabled;
+   }
  
 -  // Reset height for `textarea`s
 -  textarea& {
 -    height: auto;
 -  }
 +// Reset height for `textarea`s
 +textarea.form-control {
 +  height: auto;
 +  padding-top: $padding-base-horizontal;
 +  padding-bottom: $padding-base-horizontal;
  }
  
  
@@@ -295,10 -295,11 +299,11 @@@ input[type="checkbox"] 
  
  .form-control-static {
    // Size it appropriately next to real form controls
 -  padding-top: (@padding-base-vertical + 1);
 -  padding-bottom: (@padding-base-vertical + 1);
 +  padding-top: ($padding-base-vertical + 1);
 +  padding-bottom: ($padding-base-vertical + 1);
    // Remove default margin from `p`
    margin-bottom: 0;
+   min-height: (@line-height-computed + @font-size-base);
  
    &.input-lg,
    &.input-sm {
  // The `.form-group-* form-control` variations are sadly duplicated to avoid the
  // issue documented in https://github.com/twbs/bootstrap/issues/15074.
  
 -.input-sm {
 -  .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);
 -}
 +@include input-size('.input-sm', $input-height-sm, $padding-sm-vertical, $padding-sm-horizontal, $font-size-sm, $line-height-sm, $input-border-radius-sm);
 +
  .form-group-sm {
 -  .form-control {
 -    .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);
 -  }
 +  @include input-size('.form-control', $input-height-sm, $padding-sm-vertical, $padding-sm-horizontal, $font-size-sm, $line-height-sm, $input-border-radius-sm);
 +
    .form-control-static {
 -    height: @input-height-small;
 -    padding: @padding-small-vertical @padding-small-horizontal;
 -    font-size: @font-size-small;
 -    line-height: @line-height-small;
 -    min-height: (@line-height-computed + @font-size-small);
 +    height: $input-height-sm;
 +    padding: $padding-sm-vertical $padding-sm-horizontal;
 +    font-size: $font-size-sm;
 +    line-height: $line-height-sm;
++    min-height: ($line-height-computed + $font-size-sm);
    }
  }
  
 -.input-lg {
 -  .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);
 -}
 +@include input-size('.input-lg', $input-height-lg, $padding-lg-vertical, $padding-lg-horizontal, $font-size-lg, $line-height-lg, $input-border-radius-lg);
 +
  .form-group-lg {
 -  .form-control {
 -    .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);
 -  }
 +  @include input-size('.form-control', $input-height-lg, $padding-lg-vertical, $padding-lg-horizontal, $font-size-lg, $line-height-lg, $input-border-radius-lg);
 +
    .form-control-static {
 -    height: @input-height-large;
 -    padding: @padding-large-vertical @padding-large-horizontal;
 -    font-size: @font-size-large;
 -    line-height: @line-height-large;
 -    min-height: (@line-height-computed + @font-size-large);
 +    height: $input-height-lg;
 +    padding: $padding-lg-vertical $padding-lg-horizontal;
 +    font-size: $font-size-lg;
 +    line-height: $line-height-lg;
++    min-height: ($line-height-computed + $font-size-lg);
    }
  }
  
index a9682ba0e79255480eb3b4f222b818fdd4be96ba,080a5118fe9ab2af331e6b1444fff4be840ecc03..5a0e0b88608e76c693b8be84c507b99a6060a00a
    video {
      position: absolute;
      top: 0;
 -    left: 0;
      bottom: 0;
 -    height: 100%;
 +    left: 0;
      width: 100%;
 +    height: 100%;
      border: 0;
    }
+ }
  
  // Modifier class for 16:9 aspect ratio
  &.embed-responsive-16by9 {
-     padding-bottom: 56.25%;
  }
+ // Modifier class for 16:9 aspect ratio
+ .embed-responsive-16by9 {
+   padding-bottom: 56.25%;
+ }
  
-   // Modifier class for 4:3 aspect ratio
-   &.embed-responsive-4by3 {
-     padding-bottom: 75%;
-   }
+ // Modifier class for 4:3 aspect ratio
+ .embed-responsive-4by3 {
+   padding-bottom: 75%;
  }
diff --cc scss/_type.scss
index 5bbbf5873e2f2f5302558aef1b2b05a03973b60c,0000000000000000000000000000000000000000..95bde6a586da6c5daa3385421135cdbce25d2da0
mode 100644,000000..100644
--- /dev/null
@@@ -1,217 -1,0 +1,217 @@@
-   text-transform: uppercase;
 +//
 +// Typography
 +// --------------------------------------------------
 +
 +
 +// Headings
 +// -------------------------
 +
 +h1, h2, h3, h4, h5, h6,
 +.h1, .h2, .h3, .h4, .h5, .h6 {
 +  margin-top: 0;
 +  font-family: $headings-font-family;
 +  font-weight: $headings-font-weight;
 +  line-height: $headings-line-height;
 +  color: $headings-color;
 +
 +  small,
 +  .small {
 +    font-weight: normal;
 +    line-height: 1;
 +    color: $headings-small-color;
 +  }
 +}
 +
 +h1, .h1,
 +h2, .h2,
 +h3, .h3 {
 +  margin-bottom: ($spacer / 2);
 +
 +  small,
 +  .small {
 +    font-size: 65%;
 +  }
 +}
 +h4, .h4,
 +h5, .h5,
 +h6, .h6 {
 +  margin-bottom: ($spacer / 2);
 +
 +  small,
 +  .small {
 +    font-size: 75%;
 +  }
 +}
 +
 +h1, .h1 { font-size: $font-size-h1; }
 +h2, .h2 { font-size: $font-size-h2; }
 +h3, .h3 { font-size: $font-size-h3; }
 +h4, .h4 { font-size: $font-size-h4; }
 +h5, .h5 { font-size: $font-size-h5; }
 +h6, .h6 { font-size: $font-size-h6; }
 +
 +
 +// Body text
 +// -------------------------
 +
 +p {
 +  margin-top: 0;
 +  margin-bottom: 1rem;
 +}
 +
 +.lead {
 +  font-size: 1.25rem;
 +  font-weight: 300;
 +}
 +
 +
 +// Emphasis & misc
 +// -------------------------
 +
 +// Ex: (12px small font / 14px base font) * 100% = about 85%
 +small,
 +.small {
 +  font-size: floor((100% * $font-size-sm / $font-size-base));
 +}
 +
 +mark,
 +.mark {
 +  padding: .2em;
 +  background-color: $state-warning-bg;
 +}
 +
 +
 +// Page header
 +// -------------------------
 +
 +// .page-header {
 +//   padding-bottom: (($line-height-computed / 2) - 1);
 +//   margin: ($line-height-computed * 2) 0 @line-height-computed;
 +//   border-bottom: 1px solid @page-header-border-color;
 +// }
 +
 +
 +// Lists
 +// -------------------------
 +
 +// Unordered and Ordered lists
 +ul,
 +ol {
 +  margin-top: 0;
 +  margin-bottom: ($line-height-computed / 2);
 +
 +  ul,
 +  ol {
 +    margin-bottom: 0;
 +  }
 +}
 +
 +// List options
 +
 +// Unstyled keeps list items block level, just removes default browser padding and list-style
 +.list-unstyled {
 +  padding-left: 0;
 +  list-style: none;
 +}
 +
 +// Inline turns list items into inline-block
 +.list-inline {
 +  @extend .list-unstyled;
 +  margin-left: -5px;
 +
 +  > li {
 +    display: inline-block;
 +    padding-right: 5px;
 +    padding-left: 5px;
 +  }
 +}
 +
 +// Description Lists
 +dl {
 +  margin-top: 0; // Remove browser default
 +  margin-bottom: $line-height-computed;
 +}
 +dt,
 +dd {
 +  line-height: $line-height-base;
 +}
 +dt {
 +  font-weight: bold;
 +}
 +dd {
 +  margin-left: 0; // Undo browser default
 +}
 +
 +// Horizontal description lists w/ grid classes
 +.dl-horizontal {
 +  margin-right: -$grid-gutter-width;
 +  margin-left: -$grid-gutter-width;
 +  @include clearfix;
 +}
 +
 +
 +// Misc
 +// -------------------------
 +
 +// Abbreviations and acronyms
 +abbr[title],
 +// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257
 +abbr[data-original-title] {
 +  cursor: help;
 +  border-bottom: 1px dotted $abbr-border-color;
 +}
 +.initialism {
 +  font-size: 90%;
++  @include text-uppercase;
 +}
 +
 +// Blockquotes
 +blockquote {
 +  padding: ($spacer / 2) $spacer;
 +  margin: 0 0 $spacer;
 +  font-size: $blockquote-font-size;
 +  border-left: .25rem solid $blockquote-border-color;
 +
 +  p,
 +  ul,
 +  ol {
 +    &:last-child {
 +      margin-bottom: 0;
 +    }
 +  }
 +
 +  footer {
 +    display: block;
 +    font-size: 80%; // back to default font-size
 +    line-height: $line-height-base;
 +    color: $blockquote-small-color;
 +
 +    &:before {
 +      content: "\2014 \00A0"; // em dash, nbsp
 +    }
 +  }
 +}
 +
 +// Opposite alignment of blockquote
 +.blockquote-reverse {
 +  padding-right: $spacer;
 +  padding-left: 0;
 +  text-align: right;
 +  border-right: .25rem solid $blockquote-border-color;
 +  border-left: 0;
 +
 +  // Account for citation
 +  footer {
 +    &:before { content: ""; }
 +    &:after {
 +      content: "\00A0 \2014"; // nbsp, em dash
 +    }
 +  }
 +}
 +
 +// Addresses
 +address {
 +  margin-bottom: $line-height-computed;
 +  font-style: normal;
 +  line-height: $line-height-base;
 +}