Bootstrap, from Twitter

Bootstrap

###### Hotlink the CSS

For the quickest and easiest start, just copy this snippet into your webpage.

<link rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap.min.css">

###### Use it with Less

A fan of using Less? No problem, just clone the repo and add these lines:

<link rel="stylesheet/less" href="/path/to/bootstrap.less"> <script src="/path/to/less.js"></script>

###### Fork on GitHub

Download, fork, pull, file issues, and more with the official Bootstrap repo on Github.

Bootstrap on GitHub »

Currently v1.4.0

# About Bootstrap Brief history, browser support, and more

### History

Engineers at Twitter have historically used almost any library they were familiar with to meet front-end requirements. Bootstrap began as an answer to the challenges that presented. With the help of many awesome folks, Bootstrap has grown significantly.

Read more on dev.twitter.com ›

Follow @twbootstrap

### Browser support

Bootstrap is tested and supported in major modern browsers like Chrome, Safari, Internet Explorer, and Firefox.

- Latest Safari
- Latest Google Chrome
- Firefox 4+
- Internet Explorer 7+
- Opera 11

### What's included

Bootstrap comes complete with compiled CSS, uncompiled, and example templates.

- Javascript plugins
- All original .less files
- Fully compiled and minified CSS
- Complete styleguide documentation
- Three example pages with different layouts

### Quick-start examples

Need some quick templates? Check out these basic examples we've put together:

# Grid system Rock the standard 940px or roll your own

## Default grid

The default grid system provided as part of Bootstrap is a 940px wide 16-column grid. It’s a flavor of the popular 960 grid system, but without the additional margin/padding on the left and right sides.

### Example grid markup

As shown here, a basic layout can be created with two "columns," each spanning a number of the 16 foundational columns we defined as part of our grid system. See the examples below for more variations.

    <div class="row">
      <div class="span6">
        ...
      </div>
      <div class="span10">
        ...
      </div>
    </div>

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
3
3
3
3
3
1
4
4
4
4
1/3
1/3
1/3
1/3
2/3
4
6
6
8
8
5
11
16

## Offsetting columns

4
8 offset 4
1/3 offset 2/3s
4 offset 4
4 offset 4
5 offset 3
5 offset 3
10 offset 6

## Nesting columns

Nest your content if you must by creating a `.row` within an existing column.

#### Example of nested columns

Level 1 of column
Level 2
Level 2

    <div class="row">
      <div class="span12">
        Level 1 of column
        <div class="row">
          <div class="span6">
            Level 2
          </div>
          <div class="span6">
            Level 2
          </div>
        </div>
      </div>
    </div>

## Roll your own grid

Built into Bootstrap are a handful of variables for customizing the default 940px grid system. With a bit of customization, you can modify the size of columns, their gutters, and the container they reside in.

### Inside the grid

The variables needed to modify the grid system currently all reside in `variables.less`.

Variable | Default value | Description
--- | --- | ---
`@gridColumns` | 16 | The number of columns within the grid
`@gridColumnWidth` | 40px | The width of each column within the grid
`@gridGutterWidth` | 20px | The negative space between each column
`@siteWidth` | Computed sum of all columns and gutters | We use some basic match to count the number of columns and gutters and set the width of the `.fixed-container()` mixin.

### Now to customize

Modifying the grid means changing the three `@grid-*` variables and recompiling the Less files.

Bootstrap comes equipped to handle a grid system with up to 24 columns; the default is just 16. Here's how your grid variables would look customized to a 24-column grid.

    @gridColumns:       24;
    @gridColumnWidth:   20px;
    @gridGutterWidth:   20px;

Once recompiled, you'll be set!

# Layouts Basic templates to create webpages

## Fixed layout

The default and simple 940px-wide, centered layout for just about any website or page provided by a single `<div.container>`.

    <body>
      <div class="container">
        ...
      </div>
    </body>

## Fluid layout

An alternative, flexible fluid page structure with min- and max-widths and a left-hand sidebar. Great for apps and docs.

    <body>
      <div class="container-fluid">
        <div class="sidebar">
          ...
        </div>
        <div class="content">
          ...
        </div>
      </div>
    </body>

# Typography Headings, paragraphs, lists, and other inline type elements

## Headings & copy

A standard typographic hierarchy for structuring your webpages.

The entire typographic grid is based on two Less variables in our variables.less file: `@basefont` and `@baseline`. The first is the base font-size used throughout and the second is the base line-height.

We use those variables, and some math, to create the margins, paddings, and line-heights of all our type and more.

# h1. Heading 1

## h2. Heading 2

### h3. Heading 3

#### h4. Heading 4

##### h5. Heading 5

###### h6. Heading 6

### Example paragraph

Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula ut id elit.

# Example heading Has sub-heading…

## Misc. elements

Using emphasis, addresses, & abbreviations

`<strong>` `<em>` `<address>` `<abbr>`

### When to use

Emphasis tags (`<strong>` and `<em>`) should be used to indicate additional importance or emphasis of a word or phrase relative to its surrounding copy. Use `<strong>` for importance and `<em>` for stress emphasis.

### Emphasis in a paragraph

Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Maecenas faucibus mollis interdum. Nulla vitae elit libero, a pharetra augue.

Note: It's still okay to use `<b>` and `<i>` tags in HTML5 and they don't have to be styled bold and italic, respectively (although if there is a more semantic element, use it). `<b>` is meant to highlight words or phrases without conveying additional importance, while `<i>` is mostly for voice, technical terms, etc.

### Addresses

The `<address>` element is used for contact information for its nearest ancestor, or the entire body of work. Here are two examples of how it could be used:

Note: Each line in an `<address>` must end with a line-break (`<br />`) or be wrapped in a block-level tag (e.g., `<p>`) to properly structure the content.

### Abbreviations

For abbreviations and acronyms, use the `<abbr>` tag (`<acronym>` is deprecated in HTML5). Put the shorthand form within the tag and set a title for the complete name.

## Blockquotes

`<blockquote>` `<p>` `<small>`

### How to quote

To include a blockquote, wrap `<blockquote>` around `<p>` and `<small>` tags. Use the `<small>` element to cite your source and you'll get an em dash `&mdash;` before it.

> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.

> Dr. Julius Hibbert

    <blockquote>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.</p>
      <small>Dr. Julius Hibbert</small>
    </blockquote>

## Lists

#### Unordered `<ul>`

- Lorem ipsum dolor sit amet
- Consectetur adipiscing elit
- Integer molestie lorem at massa
- Facilisis in pretium nisl aliquet
- Nulla volutpat aliquam velit
  - Phasellus iaculis neque
  - Purus sodales ultricies
  - Vestibulum laoreet porttitor sem
  - Ac tristique libero volutpat at
- Faucibus porta lacus fringilla vel
- Aenean sit amet erat nunc
- Eget porttitor lorem

#### Unstyled `<ul.unstyled>`

- Lorem ipsum dolor sit amet
- Consectetur adipiscing elit
- Integer molestie lorem at massa
- Facilisis in pretium nisl aliquet
- Nulla volutpat aliquam velit
  - Phasellus iaculis neque
  - Purus sodales ultricies
  - Vestibulum laoreet porttitor sem
  - Ac tristique libero volutpat at
- Faucibus porta lacus fringilla vel
- Aenean sit amet erat nunc
- Eget porttitor lorem

#### Ordered `<ol>`

1. Lorem ipsum dolor sit amet
2. Consectetur adipiscing elit
3. Integer molestie lorem at massa
4. Facilisis in pretium nisl aliquet
5. Nulla volutpat aliquam velit
6. Faucibus porta lacus fringilla vel
7. Aenean sit amet erat nunc
8. Eget porttitor lorem

#### Description `dl`

Description lists
  A description list is perfect for defining terms.
Euismod
  Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
  Donec id elit non mi porta gravida at eget metus.
Malesuada porta
  Etiam porta sem malesuada magna mollis euismod.

## Code

`<code>` `<pre>`

Pimp your code in style with two simple tags. For even more awesomeness through javascript, drop in Google's code prettify library and you're set.

### Presenting code

Code, blocks of or just snippets inline, can be displayed with style just by wrapping in the right tag. For blocks of code spanning multiple lines, use the `<pre>` element. For inline code, use the `<code>` element.

Element | Result
--- | ---
`<code>` | In a line of text like this, your wrapped code will look like this `<html>` element.
`<pre>` |
    <div>
      <h1>Heading</h1>
      <p>Something right here...</p>
    </div>
Note: Be sure to keep code within `<pre>` tags as close to the left as possible; it will render all tabs.
`<pre class="prettyprint">` | Using the google-code-prettify library, your blocks of code get a slightly different visual style and automatic syntax highlighting.
    <div>
      <h1>Heading</h1>
      <p>Something right here...</p>
    </div>
Download google-code-prettify and view the readme for how to use.

## Inline labels

`<span class="label">`

Call attention to or flag any phrase in your body text.

### Label anything

Ever needed one of those fancy New! or Important flags when writing code? Well, now you have them. Here's what's included by default:

Label | Result
--- | ---
`<span class="label">Default</span>` | Default
`<span class="label success">New</span>` | New
`<span class="label warning">Warning</span>` | Warning
`<span class="label important">Important</span>` | Important
`<span class="label notice">Notice</span>` | Notice

# Media Displaying images and videos

## Media grid

Display thumbnails of varying sizes on pages with a low HTML footprint and minimal styles.

### Example thumbnails

Thumbnails in the `.media-grid` can be any size, but they work best when mapped directly to the built-in Bootstrap grid system. Image widths like 90, 210, and 330 combine with a few pixels of padding to equal the `.span2`, `.span4`, and `.span6` column sizes.

#### Large

#### Medium

#### Small

#### Coding them

Media grids are easy to use and rather simple on the markup side. Their dimensions are purely based on the size of the images included.

    <ul class="media-grid">
      <li>
        <a href="#">
          <img class="thumbnail" src="http://placehold.it/330x230" alt="">
        </a>
      </li>
      <li>
        <a href="#">
          <img class="thumbnail" src="http://placehold.it/330x230" alt="">
        </a>
      </li>
    </ul>

# Tables For, you guessed it, tabular data

## Building tables

`<table>` `<thead>` `<tbody>` `<tr>` `<th>` `<td>` `<colspan>` `<caption>`

Tables are great—for a lot of things. Great tables, however, need a bit of markup love to be useful, scalable, and readable (at the code level). Here are a few tips to help.

Always wrap your column headers in a `<thead>` such that hierarchy is `<thead>` > `<tr>` > `<th>`.

Similar to the column headers, all your table’s body content should be wrapped in a `<tbody>` so your hierarchy is `<tbody>` > `<tr>` > `<td>`.

### Example: Default table styles

All tables will be automatically styled with only the essential borders to ensure readability and maintain structure. No need to add extra classes or attributes.

# | First Name | Last Name | Language
--- | --- | --- | ---
1 | Some | One | English
2 | Joe | Sixpack | English
3 | Stu | Dent | Code

    <table>
      ...
    </table>

### Example: Condensed table

For tables that require more data in tighter spaces, use the condensed flavor that cuts padding in half. It can also be used in conjunction with borders and zebra-stripes, just like the default table styles.

# | First Name | Last Name | Language
--- | --- | --- | ---
1 | Some | One | English
2 | Joe | Sixpack | English
3 | Stu | Dent | Code

    <table class="condensed-table">
      ...
    </table>

### Example: Bordered table

Make your tables look just a wee bit sleeker by rounding their corners and adding borders on all sides.

# | First Name | Last Name | Language
--- | --- | --- | ---
1 | Some | One | English
2 | Joe | Sixpack | English
3 | Stu | Dent | Code

    <table class="bordered-table">
      ...
    </table>

### Example: Zebra-striped

Get a little fancy with your tables by adding zebra-striping—just add the `.zebra-striped` class.

# | First Name | Last Name | Language
--- | --- | --- | ---
1 | Some | One | English
2 | Joe | Sixpack | English
3 | Stu | Dent | Code
span 4 columns
span 2 columns | span 2 columns

Note: Zebra-striping is a progressive enhancement not available for older browsers like IE8 and below.

    <table class="zebra-striped">
      ...
    </table>

### Example: Zebra-striped w/ TableSorter.js

Taking the previous example, we improve the usefulness of our tables by providing sorting functionality via jQuery and the Tablesorter plugin. Click any column’s header to change the sort.

# | First Name | Last Name | Language
--- | --- | --- | ---
1 | Your | One | English
2 | Joe | Sixpack | English
3 | Stu | Dent | Code

    <script src="js/jquery/jquery.tablesorter.min.js"></script>
    <script >
      $(function() {
        $("table#sortTableExample").tablesorter({ sortList: [[1,0]] });
      });
    </script>
    <table class="zebra-striped">
      ...
    </table>

# Forms

## Default styles

All forms are given default styles to present them in a readable and scalable way. Styles are provided for text inputs, select lists, textareas, radio buttons and checkboxes, and buttons.

Example form legend
X-Large input
Select
Select
Multiple select
Uneditable input
Some value here
Disabled input
Disabled textarea
Input with error
Small snippet of help text
Input with success
Success!
Input with warning
Ruh roh!
Example form legend
Prepended text
@
Here's some help text
Prepended checkbox
Appended checkbox
File input
Example form legend
List of options

- Option one is this and that—be sure to include why it’s great
- Option two can also be checked and included in form results
- Option three can—yes, you guessed it—also be checked and included in form results. Let's make it super long so that everyone can see how it wraps, too.
- Option four cannot be checked as it is disabled.

Note: Labels surround all the options for much larger click areas and a more usable form.
Date range
to All times are shown as Pacific Standard Time (GMT -08:00).
Textarea
Block of help text to describe the field above if need be.
List of options

- Option one is this and that—be sure to include why it’s great
- Option two is something else and selecting it will deselect option 1

## Stacked forms

Add `.form-stacked` to your form’s HTML and you’ll have labels on top of their fields instead of to their left. This works great if your forms are short or you have two columns of inputs for heavier forms.

Example form legend
X-Large input
Select
Example form legend
X-Large input
Small snippet of help text
List of options

- Option one is this and that—be sure to include why it’s great
- Option two can also be checked and included in form results

Note: Labels surround all the options for much larger click areas and a more usable form.

## Form field sizes

Customize any form `input`, `select`, or `textarea` width by adding just a few classes to your markup.

As of v1.3.0, we have added the grid-based sizing classes for form elements. Please use the these over the existing `.mini`, `.small`, etc classes.

## Buttons

As a convention, buttons are used for actions while links are used for objects. For instance, "Download" could be a button and "recent activity" could be a link.

All buttons default to a light gray style, but a number of functional classes can be applied for different color styles. These classes include a blue `.primary` class, a light-blue `.info` class, a green `.success` class, and a red `.danger` class.

### Example buttons

Button styles can be applied to anything with the `.btn` applied. Typically you’ll want to apply these to only `<a>`, `<button>`, and select `<input>` elements. Here’s how it looks:

### Alternate sizes

Fancy larger or smaller buttons? Have at it!

Primary action Action
Primary action Action

### Disabled state

For buttons that are not active or are disabled by the app for one reason or another, use the disabled state. That’s `.disabled` for links and `:disabled` for `<button>` elements.

#### Links

Primary action Action

#### Buttons

# Navigation

## Fixed topbar

### Project Name

#### What is it

Our topbar is a fixed bar that houses a website’s logo or name, primary navigation, and search form.

#### Customizable

All elements within, and the entire topbar as well, are optional. You can choose to include a logo/name, nav, search, and a secondary nav—or any combination of that.

#### Dropdowns included

As part of the main navigation, we’ve included the ability for you to add dropdowns to your nav. Check out the secondary nav above (right aligned) to see how it’s done. Dropdowns `li` tags also support `.active` for showing current page selection.

Note: When using the topbar on any page, be sure to account for the overlap it causes by adding `padding-top: 40px;` to your `body`.

## Tabs and pills

Create simple secondary navigation with a `<ul>`. Swap between tabs or pills by adding the appropriate class.

Great for sub-sections of content like our account settings pages and user timelines for toggling between pages of like content. Available in tabbed or pill styles.

### Basic tabs example

Tabs can be used as regular navigation (loading external pages in the same tab) or as tabbable content areas for swapping out panes of content. We have a tabs plugin that can be used to integrate the latter.

- Home
- Profile
- Messages
- Settings
- Contact
- Dropdown

    <ul class="tabs">
      <li class="active"><a href="#">Home</a></li>
      <li><a href="#">Profile</a></li>
      <li><a href="#">Messages</a></li>
      <li><a href="#">Settings</a></li>
      <li><a href="#">Contact</a></li>
    </ul>

### Basic pills example

- Home
- Profile
- Messages
- Settings
- Contact

    <ul class="pills">
      <li class="active"><a href="#">Home</a></li>
      <li><a href="#">Profile</a></li>
      <li><a href="#">Messages</a></li>
      <li><a href="#">Settings</a></li>
      <li><a href="#">Contact</a></li>
    </ul>

## Breadcrumbs

Breadcrumb navigation is used as a way to show users where they are within an app or a site, but not for primary navigation.

    <ul class="breadcrumb">
      <li><a href="#">Home</a> <span class="divider">/</span></li>
      <li><a href="#">Middle page</a> <span class="divider">/</span></li>
      <li><a href="#">Another one</a> <span class="divider">/</span></li>
      <li class="active">You are here</li>
    </ul>

## Pagination

Ultra simplistic and minimally styled pagination inspired by Rdio. The large block is hard to miss, easily scalable, and provides large click areas.

- ← Previous
- 1
- 2
- 3
- 4
- 5
- Next →

- ← Previous
- 10
- 11
- 12
- …
- 19
- 20
- 21
- Next →

- ← Previous
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- Next →

    <div class="pagination">
      <ul>
        <li class="prev disabled"><a href="#">&larr; Previous</a></li>
        <li class="active"><a href="#">1</a></li>
        <li><a href="#">2</a></li>
        <li><a href="#">3</a></li>
        <li><a href="#">4</a></li>
        <li><a href="#">5</a></li>
        <li class="next"><a href="#">Next &rarr;</a></li>
      </ul>
    </div>

# Alerts & Errors Styles for success, warning, error, and info messages

## Basic alerts

`.alert-message`

One-line messages for highlighting the failure, possible failure, or success of an action. Particularly useful for forms.

Get the javascript »

×

Holy guacamole! Best check yo self, you’re not looking too good.

×

Oh snap! Change this and that and try again.

×

Well done! You successfully read this alert message.

×

Heads up! This is an alert that needs your attention, but it’s not a huge priority just yet.

#### Example code

    <div class="alert-message warning">
      <a class="close" href="#">×</a>
      <p><strong>Holy guacamole!</strong> Best check yo self, you’re not looking too good.</p>
    </div>

## Block messages

`.alert-message.block-message`

For messages that require a bit of explanation, we have paragraph style alerts. These are perfect for bubbling up longer error messages, warning a user of a pending action, or just presenting information for more emphasis on the page.

Get the javascript »

×

Holy guacamole! This is a warning! Best check yo self, you’re not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.

Take this action Or do this
×

Oh snap! You got an error! Change this and that and try again.

- Duis mollis est non commodo luctus
- Nisi erat porttitor ligula
- Eget lacinia odio sem nec elit

Take this action Or do this
×

Well done! You successfully read this alert message. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Maecenas faucibus mollis interdum.

Take this action Or do this
×

Heads up! This is an alert that needs your attention, but it’s not a huge priority just yet.

Take this action Or do this

#### Example code

    <div class="alert-message block-message warning">
      <a class="close" href="#">×</a>
      <p><strong>Holy guacamole! This is a warning!</strong> Best check yo self, you’re not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</p>
      <div class="alert-actions">
        <a class="btn small" href="#">Take this action</a> <a class="btn small" href="#">Or do this</a>
      </div>
    </div>

# Popovers Components for displaying content in modals, tooltips, and popovers

## Modals

Modals—dialogs or lightboxes—are great for contextual actions in situations where it’s important that the background context be maintained.

Get the javascript »

×

### Modal Heading

One fine body…

## Tooltips

Twipsies are super useful for aiding a confused user and pointing them in the right direction.

Get the javascript »

Lorem ipsum dolar sit amet illo error ipsum veritatis aut iste perspiciatis iste voluptas natus illo quasi odit aut natus consequuntur consequuntur, aut natus illo voluptatem odit perspiciatis laudantium rem doloremque totam voluptas. Voluptasdicta eaque beatae aperiam ut enim voluptatem explicabo explicabo, voluptas quia odit fugit accusantium totam totam architecto explicabo sit quasi fugit fugit, totam doloremque unde sunt sed dicta quae accusantium fugit voluptas nemo voluptas voluptatem rem quae aut veritatis quasi quae.

## Popovers

Use popovers to provide subtextual information to a page without affecting layout.

Get the javascript »

### Popover Title

Etiam porta sem malesuada magna mollis euismod. Maecenas faucibus mollis interdum. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

# Using javascript with Bootstrap An index of plugins to get you started

## Getting started

Integrating javascript with the Bootstrap library is super easy. Below we go over the basics and provide you with some awesome plugins to get you started!

View javascript docs »

### What's included

Bring some of Bootstrap's primary components to life with new custom plugins that work with jQuery and Ender. We encourage you to extend and modify them to fit your specific development needs.

File | Description
--- | ---
bootstrap-modal.js | Our Modal plugin is a super slim take on the traditional modal js plugin! We took special care to include only the bare functionality that we require at twitter.
bootstrap-alerts.js | The alert plugin is a super tiny class for adding close functionality to alerts.
bootstrap-dropdown.js | This plugin is for adding dropdown interaction to the bootstrap topbar or tabbed navigations.
bootstrap-scrollspy.js | The ScrollSpy plugin is for adding an auto updating nav based on scroll position to the bootstrap topbar.
bootstrap-buttons.js | This plugin offers additional functionality for managing button state.
bootstrap-tabs.js | This plugin adds quick, dynamic tab and pill functionality for cycling through local content.
bootstrap-twipsy.js | Based on the excellent jQuery.tipsy plugin written by Jason Frame; twipsy is an updated version, which doesn't rely on images, uses css3 for animations, and data-attributes for local title storage!
bootstrap-popover.js | The popover plugin provides a simple interface for adding popovers to your application. It extends the boostrap-twipsy.js plugin, so be sure to grab that file as well when including popovers in your project!

### Is javascript necessary?

Nope! Bootstrap is designed first and foremost to be a CSS library. This javascript provides a basic interactive layer on top of the included styles.

However, for those who do need javascript, we've provided the plugins above to help you understand how to integrate Bootstrap with javascript and to give you a quick, lightweight option for the basic functionality right away.

For more information and to see some live demos, please refer to our plugin documentation page.

# Using Bootstrap with Less Supercharge your CSS with variables, mixins, and functions

Bootstrap was built from Preboot, an open-source pack of mixins and variables to be used in conjunction with Less, a CSS preprocessor for faster and easier web development.

Check out how we used Preboot in Bootstrap and how you can make use of it should you choose to run Less on your next project.

## How to use it

Use this option to make full use of Bootstrap’s Less variables, mixins, and nesting in CSS via javascript in your browser.

    <link rel="stylesheet/less" href="less/bootstrap.less" media="all" />
    <script src="js/less-1.1.4.min.js"></script>

Not feeling the .js solution? Try the Less Mac app or use Node.js to compile when you deploy your code.

## What’s included

Here are some of the highlights of what’s included in Twitter Bootstrap as part of Bootstrap. Head over to the Bootstrap website or Github project page to download and learn more.

### Variables

Variables in Less are perfect for maintaining and updating your CSS headache free. When you want to change a color value or a frequently used value, update it in one spot and you’re set.

    // Links
    @linkColor:         #8b59c2;
    @linkColorHover:    darken(@linkColor, 10);

    // Grays
    @black:             #000;
    @grayDark:          lighten(@black, 25%);
    @gray:              lighten(@black, 50%);
    @grayLight:         lighten(@black, 70%);
    @grayLighter:       lighten(@black, 90%);
    @white:             #fff;

    // Accent Colors
    @blue:              #08b5fb;
    @green:             #46a546;
    @red:               #9d261d;
    @yellow:            #ffc40d;
    @orange:            #f89406;
    @pink:              #c3325f;
    @purple:            #7a43b6;

    // Baseline grid
    @basefont:          13px;
    @baseline:          18px;

### Commenting

Less also provides another style of commenting in addition to CSS’s normal `/* ... */` syntax.

    // This is a comment
    /* This is also a comment */

### Mixins up the wazoo

Mixins are basically includes or partials for CSS, allowing you to combine a block of code into one. They’re great for vendor prefixed properties like `box-shadow`, cross-browser gradients, font stacks, and more. Below is a sample of the mixins that are included with Bootstrap.

#### Font stacks

    #font {
      .shorthand(@weight: normal, @size: 14px, @lineHeight: 20px) {
        font-size: @size;
        font-weight: @weight;
        line-height: @lineHeight;
      }
      .sans-serif(@weight: normal, @size: 14px, @lineHeight: 20px) {
        font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
        font-size: @size;
        font-weight: @weight;
        line-height: @lineHeight;
      }
      ...
    }

#### Gradients

    #gradient {
      ...
      .vertical (@startColor: #555, @endColor: #333) {
        background-color: @endColor;
        background-repeat: repeat-x;
        background-image: -khtml-gradient(linear, left top, left bottom, from(@startColor), to(@endColor)); // Konqueror
        background-image: -moz-linear-gradient(@startColor, @endColor); // FF 3.6+
        background-image: -ms-linear-gradient(@startColor, @endColor); // IE10
        background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, @startColor), color-stop(100%, @endColor)); // Safari 4+, Chrome 2+
        background-image: -webkit-linear-gradient(@startColor, @endColor); // Safari 5.1+, Chrome 10+
        background-image: -o-linear-gradient(@startColor, @endColor); // Opera 11.10
        background-image: linear-gradient(@startColor, @endColor); // The standard
      }
      ...
    }

### Operations

Get fancy and perform some math to generate flexible and powerful mixins like the one below.

    // Griditude
    @gridColumns:       16;
    @gridColumnWidth:   40px;
    @gridGutterWidth:   20px;
    @siteWidth:         (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1));

    // Make some columns
    .columns(@columnSpan: 1) {
      width: (@gridColumnWidth * @columnSpan) + (@gridGutterWidth * (@columnSpan - 1));
    }

## Compiling Less

After modifying the `.less` files in /lib/, you'll need to recompile them in order to regenerate the bootstrap-*.*.*.css and bootstrap-*.*.*.min.css files. If you're submitting a pull request to GitHub, you must always recompile.

### Ways to compile

Method | Steps
--- | ---
Node with makefile | Install the less command line compiler with npm by running the following command:
    $ npm install lessc
Once installed just run `make` from the root of your bootstrap directory and you're all set. Additionally, if you have watchr installed, you may run `make watch` to have bootstrap automatically rebuilt every time you edit a file in the bootstrap lib (this isn't required, just a convenience method).
| Javascript | Download the latest Less.js and include the path to it (and Bootstrap) in the `head`.
    <link rel="stylesheet/less" href="/path/to/bootstrap.less">
    <script src="/path/to/less.js"></script>
To recompile the .less files, just save them and reload your page. Less.js compiles them and stores them in local storage.
Command line | If you already have the less command line tool installed, simply run the following command:
    $ lessc ./lib/bootstrap.less > bootstrap.css
Be sure to include `--compress` in that command if you're trying to save some bytes!
Less Mac app | The unofficial Mac app watches directories of .less files and compiles the code to local files after every save of a watched .less file. If you like, you can toggle preferences in the app for automatic minifying and which directory the compiled files end up in.