aboutsummaryrefslogtreecommitdiff
path: root/less
diff options
context:
space:
mode:
authorJacob Thornton <[email protected]>2012-08-20 16:13:46 -0700
committerJacob Thornton <[email protected]>2012-08-20 16:13:46 -0700
commit5d63e8e2a84468351b4c1ee6cc21f48e95ea27bf (patch)
tree2d760c794e61c15850d14d5eee1c565ab4f9a871 /less
parent5df1e2c00a295c45db7fa75dba333dc9464b128c (diff)
parentaa2cec6f2f706f8c1754f8bf79a8c9f094445bd8 (diff)
downloadbootstrap-5d63e8e2a84468351b4c1ee6cc21f48e95ea27bf.tar.xz
bootstrap-5d63e8e2a84468351b4c1ee6cc21f48e95ea27bf.zip
fMerge branch '2.1.0-wip'
Conflicts: docs/index.html
Diffstat (limited to 'less')
-rw-r--r--less/accordion.less5
-rw-r--r--less/alerts.less25
-rw-r--r--less/bootstrap.less2
-rw-r--r--less/breadcrumbs.less20
-rw-r--r--less/button-groups.less99
-rw-r--r--less/buttons.less150
-rw-r--r--less/carousel.less16
-rw-r--r--less/close.less6
-rw-r--r--less/code.less11
-rw-r--r--less/component-animations.less7
-rw-r--r--less/dropdowns.less95
-rw-r--r--less/forms.less148
-rw-r--r--less/grid.less18
-rw-r--r--less/hero-unit.less6
-rw-r--r--less/labels-badges.less21
-rw-r--r--less/layouts.less3
-rw-r--r--less/mixins.less171
-rw-r--r--less/modals.less11
-rw-r--r--less/navbar.less365
-rw-r--r--less/navs.less55
-rw-r--r--less/pager.less9
-rw-r--r--less/pagination.less24
-rw-r--r--less/popovers.less134
-rw-r--r--less/progress-bars.less31
-rw-r--r--less/reset.less9
-rw-r--r--less/responsive-1200px-min.less16
-rw-r--r--less/responsive-767px-max.less154
-rw-r--r--less/responsive-768px-979px.less12
-rw-r--r--less/responsive-navbar.less23
-rw-r--r--less/responsive-utilities.less32
-rw-r--r--less/responsive.less10
-rw-r--r--less/scaffolding.less30
-rw-r--r--less/sprites.less34
-rw-r--r--less/tables.less71
-rw-r--r--less/tests/css-tests.css17
-rw-r--r--less/tests/css-tests.html303
-rw-r--r--less/thumbnails.less13
-rw-r--r--less/tooltip.less59
-rw-r--r--less/type.less140
-rw-r--r--less/utilities.less11
-rw-r--r--less/variables.less129
-rw-r--r--less/wells.less12
42 files changed, 1741 insertions, 766 deletions
diff --git a/less/accordion.less b/less/accordion.less
index 31b8cdc33..c13c7be26 100644
--- a/less/accordion.less
+++ b/less/accordion.less
@@ -1,5 +1,6 @@
-// ACCORDION
-// ---------
+//
+// Accordion
+// --------------------------------------------------
// Parent container
diff --git a/less/alerts.less b/less/alerts.less
index 46a0d77bf..6df5fd72d 100644
--- a/less/alerts.less
+++ b/less/alerts.less
@@ -1,7 +1,11 @@
-// ALERT STYLES
-// ------------
+//
+// Alerts
+// --------------------------------------------------
+
+
+// Base styles
+// -------------------------
-// Base alert styles
.alert {
padding: 8px 35px 8px 14px;
margin-bottom: @baseLineHeight;
@@ -11,8 +15,8 @@
.border-radius(4px);
color: @warningText;
}
-.alert-heading {
- color: inherit;
+.alert h4 {
+ margin: 0;
}
// Adjust close link position
@@ -20,15 +24,16 @@
position: relative;
top: -2px;
right: -21px;
- line-height: 18px;
+ line-height: @baseLineHeight;
}
+
// Alternate styles
-// ----------------
+// -------------------------
.alert-success {
background-color: @successBackground;
- border-color: @successBorder;
+ border-color: @successBorder;
color: @successText;
}
.alert-danger,
@@ -43,8 +48,10 @@
color: @infoText;
}
+
// Block alerts
-// ------------------------
+// -------------------------
+
.alert-block {
padding-top: 14px;
padding-bottom: 14px;
diff --git a/less/bootstrap.less b/less/bootstrap.less
index c43875a80..f0df4f1d5 100644
--- a/less/bootstrap.less
+++ b/less/bootstrap.less
@@ -1,5 +1,5 @@
/*!
- * Bootstrap v2.0.4
+ * Bootstrap v2.1.0
*
* Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0
diff --git a/less/breadcrumbs.less b/less/breadcrumbs.less
index 111f12279..fd269b31a 100644
--- a/less/breadcrumbs.less
+++ b/less/breadcrumbs.less
@@ -1,14 +1,14 @@
-// BREADCRUMBS
-// -----------
+//
+// Breadcrumbs
+// --------------------------------------------------
+
.breadcrumb {
- padding: 7px 14px;
+ padding: 8px 15px;
margin: 0 0 @baseLineHeight;
list-style: none;
- #gradient > .vertical(@white, #f5f5f5);
- border: 1px solid #ddd;
- .border-radius(3px);
- .box-shadow(inset 0 1px 0 @white);
+ background-color: #f5f5f5;
+ .border-radius(4px);
li {
display: inline-block;
.ie7-inline-block();
@@ -16,9 +16,9 @@
}
.divider {
padding: 0 5px;
- color: @grayLight;
+ color: #ccc;
}
- .active a {
- color: @grayDark;
+ .active {
+ color: @grayLight;
}
}
diff --git a/less/button-groups.less b/less/button-groups.less
index 5338c5a45..77496d6ab 100644
--- a/less/button-groups.less
+++ b/less/button-groups.less
@@ -1,11 +1,13 @@
-// BUTTON GROUPS
-// -------------
+//
+// Button groups
+// --------------------------------------------------
// Make the div behave like a button
.btn-group {
position: relative;
- .clearfix(); // clears the floated buttons
+ font-size: 0; // remove as part 1 of font-size inline-block hack
+ white-space: nowrap; // prevent buttons from wrapping when in tight spaces (e.g., the table on the tests page)
.ie7-restore-left-whitespace();
}
@@ -16,21 +18,44 @@
// Optional: Group multiple button groups together for a toolbar
.btn-toolbar {
+ font-size: 0; // Hack to remove whitespace that results from using inline-block
margin-top: @baseLineHeight / 2;
margin-bottom: @baseLineHeight / 2;
.btn-group {
display: inline-block;
.ie7-inline-block();
}
+ .btn + .btn,
+ .btn-group + .btn,
+ .btn + .btn-group {
+ margin-left: 5px;
+ }
}
// Float them, remove border radius, then re-add to first and last elements
.btn-group > .btn {
position: relative;
- float: left;
- margin-left: -1px;
.border-radius(0);
}
+.btn-group > .btn + .btn {
+ margin-left: -1px;
+}
+.btn-group > .btn,
+.btn-group > .dropdown-menu {
+ font-size: @baseFontSize; // redeclare as part 2 of font-size inline-block hack
+}
+
+// Reset fonts for other sizes
+.btn-group > .btn-mini {
+ font-size: 11px;
+}
+.btn-group > .btn-small {
+ font-size: 12px;
+}
+.btn-group > .btn-large {
+ font-size: 16px;
+}
+
// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
.btn-group > .btn:first-child {
margin-left: 0;
@@ -91,24 +116,28 @@
// ----------------------
// Give the line between buttons some depth
-.btn-group > .dropdown-toggle {
+.btn-group > .btn + .dropdown-toggle {
padding-left: 8px;
padding-right: 8px;
.box-shadow(~"inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)");
- *padding-top: 4px;
- *padding-bottom: 4px;
+ *padding-top: 5px;
+ *padding-bottom: 5px;
}
-.btn-group > .btn-mini.dropdown-toggle {
+.btn-group > .btn-mini + .dropdown-toggle {
padding-left: 5px;
padding-right: 5px;
+ *padding-top: 2px;
+ *padding-bottom: 2px;
}
-.btn-group > .btn-small.dropdown-toggle {
- *padding-top: 4px;
+.btn-group > .btn-small + .dropdown-toggle {
+ *padding-top: 5px;
*padding-bottom: 4px;
}
-.btn-group > .btn-large.dropdown-toggle {
+.btn-group > .btn-large + .dropdown-toggle {
padding-left: 12px;
padding-right: 12px;
+ *padding-top: 7px;
+ *padding-bottom: 7px;
}
.btn-group.open {
@@ -147,22 +176,16 @@
// Reposition the caret
.btn .caret {
- margin-top: 7px;
+ margin-top: 8px;
margin-left: 0;
}
-.btn:hover .caret,
-.open.btn-group .caret {
- .opacity(100);
-}
// Carets in other button sizes
-.btn-mini .caret {
- margin-top: 5px;
-}
-.btn-small .caret {
+.btn-mini .caret,
+.btn-small .caret,
+.btn-large .caret {
margin-top: 6px;
}
.btn-large .caret {
- margin-top: 6px;
border-left-width: 5px;
border-right-width: 5px;
border-top-width: 5px;
@@ -185,7 +208,37 @@
.caret {
border-top-color: @white;
border-bottom-color: @white;
- .opacity(75);
}
}
+
+
+// Vertical button groups
+// ----------------------
+
+.btn-group-vertical {
+ display: inline-block; // makes buttons only take up the width they need
+ .ie7-inline-block();
+}
+.btn-group-vertical .btn {
+ display: block;
+ float: none;
+ width: 100%;
+ .border-radius(0);
+}
+.btn-group-vertical .btn + .btn {
+ margin-left: 0;
+ margin-top: -1px;
+}
+.btn-group-vertical .btn:first-child {
+ .border-radius(4px 4px 0 0);
+}
+.btn-group-vertical .btn:last-child {
+ .border-radius(0 0 4px 4px);
+}
+.btn-group-vertical .btn-large:first-child {
+ .border-radius(6px 6px 0 0);
+}
+.btn-group-vertical .btn-large:last-child {
+ .border-radius(0 0 6px 6px);
+}
diff --git a/less/buttons.less b/less/buttons.less
index c44ff3e6f..077616e99 100644
--- a/less/buttons.less
+++ b/less/buttons.less
@@ -1,5 +1,6 @@
-// BUTTON STYLES
-// -------------
+//
+// Buttons
+// --------------------------------------------------
// Base styles
@@ -9,64 +10,64 @@
.btn {
display: inline-block;
.ie7-inline-block();
- padding: 4px 10px 4px;
+ padding: 4px 14px;
margin-bottom: 0; // For input.btn
font-size: @baseFontSize;
line-height: @baseLineHeight;
- *line-height: 20px;
- color: @grayDark;
+ *line-height: @baseLineHeight;
text-align: center;
- text-shadow: 0 1px 1px rgba(255,255,255,.75);
vertical-align: middle;
cursor: pointer;
- .buttonBackground(@btnBackground, @btnBackgroundHighlight);
+ .buttonBackground(@btnBackground, @btnBackgroundHighlight, @grayDark, 0 1px 1px rgba(255,255,255,.75));
border: 1px solid @btnBorder;
*border: 0; // Remove the border to prevent IE7's black border on input:focus
border-bottom-color: darken(@btnBorder, 10%);
.border-radius(4px);
.ie7-restore-left-whitespace(); // Give IE7 some love
.box-shadow(~"inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)");
-}
-// Hover state
-.btn:hover {
- color: @grayDark;
- text-decoration: none;
- background-color: darken(@white, 10%);
- *background-color: darken(@white, 15%); /* Buttons in IE7 don't get borders, so darken on hover */
- background-position: 0 -15px;
+ // Hover state
+ &:hover {
+ color: @grayDark;
+ text-decoration: none;
+ background-color: darken(@white, 10%);
+ *background-color: darken(@white, 15%); /* Buttons in IE7 don't get borders, so darken on hover */
+ background-position: 0 -15px;
+
+ // transition is only when going to hover, otherwise the background
+ // behind the gradient (there for IE<=9 fallback) gets mismatched
+ .transition(background-position .1s linear);
+ }
- // transition is only when going to hover, otherwise the background
- // behind the gradient (there for IE<=9 fallback) gets mismatched
- .transition(background-position .1s linear);
-}
+ // Focus state for keyboard and accessibility
+ &:focus {
+ .tab-focus();
+ }
-// Focus state for keyboard and accessibility
-.btn:focus {
- .tab-focus();
-}
+ // Active state
+ &.active,
+ &:active {
+ background-color: darken(@white, 10%);
+ background-color: darken(@white, 15%) e("\9");
+ background-image: none;
+ outline: 0;
+ .box-shadow(~"inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)");
+ }
-// Active state
-.btn.active,
-.btn:active {
- background-color: darken(@white, 10%);
- background-color: darken(@white, 15%) e("\9");
- background-image: none;
- outline: 0;
- .box-shadow(~"inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)");
-}
+ // Disabled state
+ &.disabled,
+ &[disabled] {
+ cursor: default;
+ background-color: darken(@white, 10%);
+ background-image: none;
+ .opacity(65);
+ .box-shadow(none);
+ }
-// Disabled state
-.btn.disabled,
-.btn[disabled] {
- cursor: default;
- background-color: darken(@white, 10%);
- background-image: none;
- .opacity(65);
- .box-shadow(none);
}
+
// Button Sizes
// --------------------------------------------------
@@ -78,47 +79,42 @@
.border-radius(5px);
}
.btn-large [class^="icon-"] {
- margin-top: 1px;
+ margin-top: 2px;
}
// Small
.btn-small {
- padding: 5px 9px;
+ padding: 3px 9px;
font-size: @baseFontSize - 2px;
line-height: @baseLineHeight - 2px;
}
.btn-small [class^="icon-"] {
- margin-top: -1px;
+ margin-top: 0;
}
// Mini
.btn-mini {
padding: 2px 6px;
- font-size: @baseFontSize - 2px;
+ font-size: @baseFontSize - 3px;
line-height: @baseLineHeight - 4px;
}
+// Block button
+.btn-block {
+ display: block;
+ width: 100%;
+ padding-left: 0;
+ padding-right: 0;
+ .box-sizing(border-box);
+}
+.btn-block + .btn-block {
+ margin-top: 5px;
+}
+
// Alternate buttons
// --------------------------------------------------
-// Set text color
-// -------------------------
-.btn-primary,
-.btn-primary:hover,
-.btn-warning,
-.btn-warning:hover,
-.btn-danger,
-.btn-danger:hover,
-.btn-success,
-.btn-success:hover,
-.btn-info,
-.btn-info:hover,
-.btn-inverse,
-.btn-inverse:hover {
- color: @white;
- text-shadow: 0 -1px 0 rgba(0,0,0,.25);
-}
// Provide *some* extra contrast for those who can get it
.btn-primary.active,
.btn-warning.active,
@@ -133,8 +129,8 @@
// -------------------------
.btn {
// reset here as of 2.0.3 due to Recess property order
- border-color: #ccc;
- border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);
+ border-color: #c5c5c5;
+ border-color: rgba(0,0,0,.15) rgba(0,0,0,.15) rgba(0,0,0,.25);
}
.btn-primary {
.buttonBackground(@btnPrimaryBackground, @btnPrimaryBackgroundHighlight);
@@ -174,8 +170,9 @@ input[type="submit"].btn {
}
// IE7 has some default padding on button controls
- *padding-top: 2px;
- *padding-bottom: 2px;
+ *padding-top: 3px;
+ *padding-bottom: 3px;
+
&.btn-large {
*padding-top: 7px;
*padding-bottom: 7px;
@@ -189,3 +186,26 @@ input[type="submit"].btn {
*padding-bottom: 1px;
}
}
+
+
+// Link buttons
+// --------------------------------------------------
+
+// Make a button look and behave like a link
+.btn-link,
+.btn-link:active {
+ background-color: transparent;
+ background-image: none;
+ .box-shadow(none);
+}
+.btn-link {
+ border-color: transparent;
+ cursor: pointer;
+ color: @linkColor;
+ .border-radius(0);
+}
+.btn-link:hover {
+ color: @linkColorHover;
+ text-decoration: underline;
+ background-color: transparent;
+}
diff --git a/less/carousel.less b/less/carousel.less
index 8fbd30315..33f98ac4d 100644
--- a/less/carousel.less
+++ b/less/carousel.less
@@ -1,5 +1,7 @@
-// CAROUSEL
-// --------
+//
+// Carousel
+// --------------------------------------------------
+
.carousel {
position: relative;
@@ -103,6 +105,7 @@
}
}
+
// Caption for text below images
// -----------------------------
@@ -111,11 +114,18 @@
left: 0;
right: 0;
bottom: 0;
- padding: 10px 15px 5px;
+ padding: 15px;
background: @grayDark;
background: rgba(0,0,0,.75);
}
.carousel-caption h4,
.carousel-caption p {
color: @white;
+ line-height: @baseLineHeight;
+}
+.carousel-caption h4 {
+ margin: 0 0 5px;
+}
+.carousel-caption p {
+ margin-bottom: 0;
}
diff --git a/less/close.less b/less/close.less
index 31fe6fcb3..c71a508f3 100644
--- a/less/close.less
+++ b/less/close.less
@@ -1,5 +1,7 @@
-// CLOSE ICONS
-// -----------
+//
+// Close icons
+// --------------------------------------------------
+
.close {
float: right;
diff --git a/less/code.less b/less/code.less
index 0cae749a0..f1851a074 100644
--- a/less/code.less
+++ b/less/code.less
@@ -1,13 +1,14 @@
-// Code.less
-// Code typography styles for the <code> and <pre> elements
-// --------------------------------------------------------
+//
+// Code (inline and blocK)
+// --------------------------------------------------
+
// Inline and block code styles
code,
pre {
padding: 0 3px 2px;
#font > #family > .monospace;
- font-size: @baseFontSize - 1;
+ font-size: @baseFontSize - 2;
color: @grayDark;
.border-radius(3px);
}
@@ -25,7 +26,7 @@ pre {
display: block;
padding: (@baseLineHeight - 1) / 2;
margin: 0 0 @baseLineHeight / 2;
- font-size: @baseFontSize * .925; // 13px to 12px
+ font-size: @baseFontSize - 1; // 14px to 13px
line-height: @baseLineHeight;
word-break: break-all;
word-wrap: break-word;
diff --git a/less/component-animations.less b/less/component-animations.less
index 1e1e78b85..2166776d9 100644
--- a/less/component-animations.less
+++ b/less/component-animations.less
@@ -1,5 +1,7 @@
-// COMPONENT ANIMATIONS
-// --------------------
+//
+// Component animations
+// --------------------------------------------------
+
.fade {
opacity: 0;
@@ -13,6 +15,7 @@
position: relative;
height: 0;
overflow: hidden;
+ overflow: visible \9;
.transition(height .35s ease);
&.in {
height: auto;
diff --git a/less/dropdowns.less b/less/dropdowns.less
index 5e232556a..e83915dba 100644
--- a/less/dropdowns.less
+++ b/less/dropdowns.less
@@ -1,5 +1,7 @@
-// DROPDOWN MENUS
-// --------------
+//
+// Dropdown menus
+// --------------------------------------------------
+
// Use the .menu class on any <li> element within the topbar or ul.tabs and you'll get some superfancy dropdowns
.dropup,
@@ -26,7 +28,6 @@
border-right: 4px solid transparent;
border-left: 4px solid transparent;
content: "";
- .opacity(30);
}
// Place the caret
@@ -34,10 +35,6 @@
margin-top: 8px;
margin-left: 2px;
}
-.dropdown:hover .caret,
-.open .caret {
- .opacity(100);
-}
// The dropdown menu (ul)
// ----------------------
@@ -49,15 +46,15 @@
display: none; // none by default, but block on "open" of the menu
float: left;
min-width: 160px;
- padding: 4px 0;
- margin: 1px 0 0; // override default ul
+ padding: 5px 0;
+ margin: 2px 0 0; // override default ul
list-style: none;
background-color: @dropdownBackground;
- border: 1px solid #ccc;
- border: 1px solid rgba(0,0,0,.2);
+ border: 1px solid #ccc; // Fallback for IE7-8
+ border: 1px solid @dropdownBorder;
*border-right-width: 2px;
*border-bottom-width: 2px;
- .border-radius(5px);
+ .border-radius(6px);
.box-shadow(0 5px 10px rgba(0,0,0,.2));
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
@@ -77,7 +74,7 @@
// Links within the dropdown menu
a {
display: block;
- padding: 3px 15px;
+ padding: 3px 20px;
clear: both;
font-weight: normal;
line-height: @baseLineHeight;
@@ -89,11 +86,37 @@
// Hover state
// -----------
.dropdown-menu li > a:hover,
+.dropdown-menu li > a:focus,
+.dropdown-submenu:hover > a {
+ text-decoration: none;
+ color: @dropdownLinkColorHover;
+ background-color: @dropdownLinkBackgroundHover;
+ #gradient > .vertical(@dropdownLinkBackgroundHover, darken(@dropdownLinkBackgroundHover, 5%));
+}
+
+// Active state
+// ------------
.dropdown-menu .active > a,
.dropdown-menu .active > a:hover {
color: @dropdownLinkColorHover;
text-decoration: none;
- background-color: @dropdownLinkBackgroundHover;
+ outline: 0;
+ background-color: @dropdownLinkBackgroundActive;
+ #gradient > .vertical(@dropdownLinkBackgroundActive, darken(@dropdownLinkBackgroundActive, 5%));
+}
+
+// Disabled state
+// --------------
+// Gray out text and ensure the hover state remains gray
+.dropdown-menu .disabled > a,
+.dropdown-menu .disabled > a:hover {
+ color: @grayLight;
+}
+// Nuke hover effects
+.dropdown-menu .disabled > a:hover {
+ text-decoration: none;
+ background-color: transparent;
+ cursor: default;
}
// Open state for the dropdown
@@ -135,6 +158,50 @@
}
}
+// Sub menus
+// ---------------------------
+.dropdown-submenu {
+ position: relative;
+}
+.dropdown-submenu > .dropdown-menu {
+ top: 0;
+ left: 100%;
+ margin-top: -6px;
+ margin-left: -1px;
+ -webkit-border-radius: 0 6px 6px 6px;
+ -moz-border-radius: 0 6px 6px 6px;
+ border-radius: 0 6px 6px 6px;
+}
+.dropdown-submenu:hover .dropdown-menu {
+ display: block;
+}
+
+.dropdown-submenu > a:after {
+ display: block;
+ content: " ";
+ float: right;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+ border-width: 5px 0 5px 5px;
+ border-left-color: darken(@dropdownBackground, 20%);
+ margin-top: 5px;
+ margin-right: -10px;
+}
+.dropdown-submenu:hover > a:after {
+ border-left-color: @dropdownLinkColorHover;
+}
+
+
+// Tweak nav headers
+// -----------------
+// Increase padding from 15px to 20px on sides
+.dropdown .dropdown-menu .nav-header {
+ padding-left: 20px;
+ padding-right: 20px;
+}
+
// Typeahead
// ---------
.typeahead {
diff --git a/less/forms.less b/less/forms.less
index 1163fe914..77b5135a4 100644
--- a/less/forms.less
+++ b/less/forms.less
@@ -1,6 +1,6 @@
-// Forms.less
-// Base styles for various input types, form layouts, and states
-// -------------------------------------------------------------
+//
+// Forms
+// --------------------------------------------------
// GENERAL STYLES
@@ -22,7 +22,7 @@ legend {
display: block;
width: 100%;
padding: 0;
- margin-bottom: @baseLineHeight * 1.5;
+ margin-bottom: @baseLineHeight;
font-size: @baseFontSize * 1.5;
line-height: @baseLineHeight * 2;
color: @grayDark;
@@ -80,11 +80,12 @@ input[type="color"],
.uneditable-input {
display: inline-block;
height: @baseLineHeight;
- padding: 4px;
+ padding: 4px 6px;
margin-bottom: 9px;
font-size: @baseFontSize;
line-height: @baseLineHeight;
color: @gray;
+ .border-radius(@inputBorderRadius);
}
// Reset appearance properties for textual inputs and textarea
@@ -116,10 +117,8 @@ input[type="color"],
.uneditable-input {
background-color: @inputBackground;
border: 1px solid @inputBorder;
- .border-radius(@inputBorderRadius);
.box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
- @transition: border linear .2s, box-shadow linear .2s;
- .transition(@transition);
+ .transition(~"border linear .2s, box-shadow linear .2s");
// Focus state
&:focus {
@@ -133,13 +132,16 @@ input[type="color"],
// Position radios and checkboxes better
input[type="radio"],
input[type="checkbox"] {
- margin: 3px 0;
+ margin: 4px 0 0;
*margin-top: 0; /* IE7 */
+ margin-top: 1px \9; /* IE8-9 */
line-height: normal;
cursor: pointer;
}
-// Reset width of input buttons, radios, checkboxes
+// Reset width of input images, buttons, radios, checkboxes
+input[type="file"],
+input[type="image"],
input[type="submit"],
input[type="reset"],
input[type="button"],
@@ -148,24 +150,19 @@ input[type="checkbox"] {
width: auto; // Override of generic input selector
}
-// Make uneditable textareas behave like a textarea
-.uneditable-textarea {
- width: auto;
- height: auto;
-}
-
// Set the height of select and file controls to match text inputs
select,
input[type="file"] {
- height: 28px; /* In IE7, the height of the select element cannot be changed by height, only font-size */
+ height: 30px; /* In IE7, the height of the select element cannot be changed by height, only font-size */
*margin-top: 4px; /* For IE7, add top margin to align select with labels */
- line-height: 28px;
+ line-height: 30px;
}
// Make select elements obey height by applying a border
select {
width: 220px; // default input width + 10px of padding that doesn't get applied
border: 1px solid #bbb;
+ background-color: @inputBackground; // Chrome on Linux and Mobile Safari need background-color
}
// Make multiple select elements height not fixed
@@ -183,6 +180,41 @@ input[type="checkbox"]:focus {
}
+// Uneditable inputs
+// -------------------------
+
+// Make uneditable inputs look inactive
+.uneditable-input,
+.uneditable-textarea {
+ color: @grayLight;
+ background-color: darken(@inputBackground, 1%);
+ border-color: @inputBorder;
+ .box-shadow(inset 0 1px 2px rgba(0,0,0,.025));
+ cursor: not-allowed;
+}
+
+// For text that needs to appear as an input but should not be an input
+.uneditable-input {
+ overflow: hidden; // prevent text from wrapping, but still cut it off like an input does
+ white-space: nowrap;
+}
+
+// Make uneditable textareas behave like a textarea
+.uneditable-textarea {
+ width: auto;
+ height: auto;
+}
+
+
+// Placeholder
+// -------------------------
+
+// Placeholder text gets special styles; can't be bundled together though for some reason
+input,
+textarea {
+ .placeholder();
+}
+
// CHECKBOXES & RADIOS
// -------------------
@@ -250,6 +282,10 @@ textarea[class*="span"],
.input-append .uneditable-input[class*="span"],
.input-prepend input[class*="span"],
.input-prepend .uneditable-input[class*="span"],
+.row-fluid input[class*="span"],
+.row-fluid select[class*="span"],
+.row-fluid textarea[class*="span"],
+.row-fluid .uneditable-input[class*="span"],
.row-fluid .input-prepend [class*="span"],
.row-fluid .input-append [class*="span"] {
display: inline-block;
@@ -260,8 +296,18 @@ textarea[class*="span"],
// GRID SIZING FOR INPUTS
// ----------------------
+// Grid sizes
#grid > .input(@gridColumnWidth, @gridGutterWidth);
+// Control row for multiple inputs per line
+.controls-row {
+ .clearfix(); // Clear the float from controls
+}
+.controls-row [class*="span"] {
+ float: left; // Float to collapse white-space for proper grid alignment
+}
+
+
// DISABLED STATE
@@ -276,7 +322,6 @@ select[readonly],
textarea[readonly] {
cursor: not-allowed;
background-color: @inputDisabledBackground;
- border-color: #ddd;
}
// Explicitly reset the colors here
input[type="radio"][disabled],
@@ -332,19 +377,6 @@ select:focus:required:invalid {
.clearfix(); // Adding clearfix to allow for .pull-right button containers
}
-// For text that needs to appear as an input but should not be an input
-.uneditable-input {
- overflow: hidden; // prevent text from wrapping, but still cut it off like an input does
- white-space: nowrap;
- cursor: not-allowed;
- background-color: @inputBackground;
- border-color: #eee;
- .box-shadow(inset 0 1px 2px rgba(0,0,0,.025));
-}
-
-// Placeholder text gets special styles; can't be bundled together though for some reason
-.placeholder();
-
// HELP TEXT
@@ -352,7 +384,7 @@ select:focus:required:invalid {
.help-block,
.help-inline {
- color: @gray; // lighten the text some for contrast
+ color: lighten(@textColor, 15%); // lighten the text some for contrast
}
.help-block {
@@ -373,42 +405,44 @@ select:focus:required:invalid {
// ------------
// Allow us to put symbols and text within the input field for a cleaner look
-.input-prepend,
-.input-append {
+.input-append,
+.input-prepend {
margin-bottom: 5px;
+ font-size: 0;
+ white-space: nowrap; // Prevent span and input from separating
+
input,
select,
.uneditable-input {
position: relative; // placed here by default so that on :focus we can place the input above the .add-on for full border and box-shadow goodness
margin-bottom: 0; // prevent bottom margin from screwing up alignment in stacked forms
*margin-left: 0;
- vertical-align: middle;
+ font-size: @baseFontSize;
+ vertical-align: top;
.border-radius(0 @inputBorderRadius @inputBorderRadius 0);
// Make input on top when focused so blue border and shadow always show
&:focus {
z-index: 2;
}
}
- .uneditable-input {
- border-left-color: #ccc;
- }
.add-on {
display: inline-block;
width: auto;
height: @baseLineHeight;
min-width: 16px;
padding: 4px 5px;
+ font-size: @baseFontSize;
font-weight: normal;
line-height: @baseLineHeight;
text-align: center;
text-shadow: 0 1px 0 @white;
- vertical-align: middle;
background-color: @grayLighter;
border: 1px solid #ccc;
}
.add-on,
.btn {
margin-left: -1px;
+ vertical-align: top;
.border-radius(0);
}
.active {
@@ -432,10 +466,6 @@ select:focus:required:invalid {
.uneditable-input {
.border-radius(@inputBorderRadius 0 0 @inputBorderRadius);
}
- .uneditable-input {
- border-right-color: #ccc;
- border-left-color: #eee;
- }
.add-on:last-child,
.btn:last-child {
.border-radius(0 @inputBorderRadius @inputBorderRadius 0);
@@ -465,17 +495,36 @@ select:focus:required:invalid {
// SEARCH FORM
// -----------
-.search-query {
+input.search-query {
padding-right: 14px;
padding-right: 4px \9;
padding-left: 14px;
padding-left: 4px \9; /* IE7-8 doesn't have border-radius, so don't indent the padding */
- margin-bottom: 0; // remove the default margin on all inputs
- .border-radius(14px);
+ margin-bottom: 0; // Remove the default margin on all inputs
+ .border-radius(15px);
+}
+
+/* Allow for input prepend/append in search forms */
+.form-search .input-append .search-query,
+.form-search .input-prepend .search-query {
+ .border-radius(0); // Override due to specificity
+}
+.form-search .input-append .search-query {
+ .border-radius(14px 0 0 14px)
+}
+.form-search .input-append .btn {
+ .border-radius(0 14px 14px 0)
+}
+.form-search .input-prepend .search-query {
+ .border-radius(0 14px 14px 0)
+}
+.form-search .input-prepend .btn {
+ .border-radius(14px 0 0 14px)
}
+
// HORIZONTAL & VERTICAL FORMS
// ---------------------------
@@ -495,6 +544,7 @@ select:focus:required:invalid {
display: inline-block;
.ie7-inline-block();
margin-bottom: 0;
+ vertical-align: middle;
}
// Re-hide hidden elements due to specifity
.hide {
@@ -502,7 +552,9 @@ select:focus:required:invalid {
}
}
.form-search label,
-.form-inline label {
+.form-inline label,
+.form-search .btn-group,
+.form-inline .btn-group {
display: inline-block;
}
// Remove margin for input-prepend/-append
diff --git a/less/grid.less b/less/grid.less
index e62a96093..750d20351 100644
--- a/less/grid.less
+++ b/less/grid.less
@@ -1,5 +1,21 @@
+//
+// Grid system
+// --------------------------------------------------
+
+
// Fixed (940px)
#grid > .core(@gridColumnWidth, @gridGutterWidth);
// Fluid (940px)
-#grid > .fluid(@fluidGridColumnWidth, @fluidGridGutterWidth); \ No newline at end of file
+#grid > .fluid(@fluidGridColumnWidth, @fluidGridGutterWidth);
+
+// Reset utility classes due to specificity
+[class*="span"].hide,
+.row-fluid [class*="span"].hide {
+ display: none;
+}
+
+[class*="span"].pull-right,
+.row-fluid [class*="span"].pull-right {
+ float: right;
+}
diff --git a/less/hero-unit.less b/less/hero-unit.less
index 0ffe82962..672b7d7c7 100644
--- a/less/hero-unit.less
+++ b/less/hero-unit.less
@@ -1,5 +1,7 @@
-// HERO UNIT
-// ---------
+//
+// Hero unit
+// --------------------------------------------------
+
.hero-unit {
padding: 60px;
diff --git a/less/labels-badges.less b/less/labels-badges.less
index 0fbd7bbc6..2f15fec05 100644
--- a/less/labels-badges.less
+++ b/less/labels-badges.less
@@ -1,5 +1,7 @@
-// LABELS & BADGES
-// ---------------
+//
+// Labels and badges
+// --------------------------------------------------
+
// Base classes
.label,
@@ -53,3 +55,18 @@ a {
&-inverse { background-color: @grayDark; }
&-inverse[href] { background-color: darken(@grayDark, 10%); }
}
+
+// Quick fix for labels/badges in buttons
+.btn {
+ .label,
+ .badge {
+ position: relative;
+ top: -1px;
+ }
+}
+.btn-mini {
+ .label,
+ .badge {
+ top: 0;
+ }
+}
diff --git a/less/layouts.less b/less/layouts.less
index cc53627ff..24a206211 100644
--- a/less/layouts.less
+++ b/less/layouts.less
@@ -1,7 +1,6 @@
//
// Layouts
-// Fixed-width and fluid (with sidebar) layouts
-// --------------------------------------------
+// --------------------------------------------------
// Container (centered, fixed-width layouts)
diff --git a/less/mixins.less b/less/mixins.less
index c3b57ed14..db60f1aea 100644
--- a/less/mixins.less
+++ b/less/mixins.less
@@ -1,6 +1,6 @@
-// Mixins.less
-// Snippets of reusable CSS to develop faster and keep code readable
-// -----------------------------------------------------------------
+//
+// Mixins
+// --------------------------------------------------
// UTILITY MIXINS
@@ -15,6 +15,9 @@
&:after {
display: table;
content: "";
+ // Fixes Opera/contenteditable bug:
+ // http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952
+ line-height: 0;
}
&:after {
clear: both;
@@ -62,10 +65,6 @@
.ie7-restore-right-whitespace() {
*margin-right: .3em;
-
- &:last-child {
- *margin-left: 0;
- }
}
// Sizing shortcuts
@@ -155,11 +154,12 @@
.input-block-level {
display: block;
width: 100%;
- min-height: 28px; // Make inputs at least the height of their button counterpart
+ min-height: 30px; // Make inputs at least the height of their button counterpart
.box-sizing(border-box); // Makes inputs behave like true block-level elements
}
+
// Mixin for form field states
.formFieldState(@textColor: #555, @borderColor: #ccc, @backgroundColor: #f5f5f5) {
// Set the text color
@@ -176,9 +176,13 @@
textarea {
color: @textColor;
border-color: @borderColor;
+ .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
&:focus {
border-color: darken(@borderColor, 10%);
- .box-shadow(0 0 6px lighten(@borderColor, 20%));
+ // Write out in full since the lighten() function isn't easily escaped
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@borderColor, 20%);
+ -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@borderColor, 20%);
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@borderColor, 20%);
}
}
// Give a small background color for input-prepend/-append
@@ -202,6 +206,46 @@
border-radius: @radius;
}
+// Single Corner Border Radius
+.border-top-left-radius(@radius) {
+ -webkit-border-top-left-radius: @radius;
+ -moz-border-radius-topleft: @radius;
+ border-top-left-radius: @radius;
+}
+.border-top-right-radius(@radius) {
+ -webkit-border-top-right-radius: @radius;
+ -moz-border-radius-topright: @radius;
+ border-top-right-radius: @radius;
+}
+.border-bottom-right-radius(@radius) {
+ -webkit-border-bottom-right-radius: @radius;
+ -moz-border-radius-bottomright: @radius;
+ border-bottom-right-radius: @radius;
+}
+.border-bottom-left-radius(@radius) {
+ -webkit-border-bottom-left-radius: @radius;
+ -moz-border-radius-bottomleft: @radius;
+ border-bottom-left-radius: @radius;
+}
+
+// Single Side Border Radius
+.border-top-radius(@radius) {
+ .border-top-right-radius(@radius);
+ .border-top-left-radius(@radius);
+}
+.border-right-radius(@radius) {
+ .border-top-right-radius(@radius);
+ .border-bottom-right-radius(@radius);
+}
+.border-bottom-radius(@radius) {
+ .border-bottom-right-radius(@radius);
+ .border-bottom-left-radius(@radius);
+}
+.border-left-radius(@radius) {
+ .border-top-left-radius(@radius);
+ .border-bottom-left-radius(@radius);
+}
+
// Drop shadows
.box-shadow(@shadow) {
-webkit-box-shadow: @shadow;
@@ -213,7 +257,6 @@
.transition(@transition) {
-webkit-transition: @transition;
-moz-transition: @transition;
- -ms-transition: @transition;
-o-transition: @transition;
transition: @transition;
}
@@ -248,11 +291,10 @@
transform: skew(@x, @y);
}
.translate3d(@x, @y, @z) {
- -webkit-transform: translate(@x, @y, @z);
- -moz-transform: translate(@x, @y, @z);
- -ms-transform: translate(@x, @y, @z);
- -o-transform: translate(@x, @y, @z);
- transform: translate(@x, @y, @z);
+ -webkit-transform: translate3d(@x, @y, @z);
+ -moz-transform: translate3d(@x, @y, @z);
+ -o-transform: translate3d(@x, @y, @z);
+ transform: translate3d(@x, @y, @z);
}
// Backface visibility
@@ -262,7 +304,6 @@
.backface-visibility(@visibility){
-webkit-backface-visibility: @visibility;
-moz-backface-visibility: @visibility;
- -ms-backface-visibility: @visibility;
backface-visibility: @visibility;
}
@@ -287,7 +328,6 @@
.box-sizing(@boxmodel) {
-webkit-box-sizing: @boxmodel;
-moz-box-sizing: @boxmodel;
- -ms-box-sizing: @boxmodel;
box-sizing: @boxmodel;
}
@@ -350,7 +390,9 @@
}
// Gradient Bar Colors for buttons and alerts
-.gradientBar(@primaryColor, @secondaryColor) {
+.gradientBar(@primaryColor, @secondaryColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) {
+ color: @textColor;
+ text-shadow: @textShadow;
#gradient > .vertical(@primaryColor, @secondaryColor);
border-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%);
border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);
@@ -361,60 +403,54 @@
.horizontal(@startColor: #555, @endColor: #333) {
background-color: @endColor;
background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
- background-image: -ms-linear-gradient(left, @startColor, @endColor); // IE10
background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
- background-image: linear-gradient(left, @startColor, @endColor); // Le standard
+ background-image: linear-gradient(to right, @startColor, @endColor); // Standard, IE10
background-repeat: repeat-x;
- filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",@startColor,@endColor)); // IE9 and down
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@startColor),argb(@endColor))); // IE9 and down
}
.vertical(@startColor: #555, @endColor: #333) {
background-color: mix(@startColor, @endColor, 60%);
background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
- background-image: -ms-linear-gradient(top, @startColor, @endColor); // IE10
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
- background-image: linear-gradient(top, @startColor, @endColor); // The standard
+ background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10
background-repeat: repeat-x;
- filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE9 and down
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down
}
.directional(@startColor: #555, @endColor: #333, @deg: 45deg) {
background-color: @endColor;
background-repeat: repeat-x;
background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+
- background-image: -ms-linear-gradient(@deg, @startColor, @endColor); // IE10
background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+
background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10
- background-image: linear-gradient(@deg, @startColor, @endColor); // The standard
+ background-image: linear-gradient(@deg, @startColor, @endColor); // Standard, IE10
}
.vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
background-color: mix(@midColor, @endColor, 80%);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor);
- background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor);
- background-image: -ms-linear-gradient(@startColor, @midColor @colorStop, @endColor);
+ background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop*100%, @endColor);
background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor);
background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor);
background-repeat: no-repeat;
- filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE9 and down, gets no color-stop at all for proper fallback
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback
}
.radial(@innerColor: #555, @outerColor: #333) {
background-color: @outerColor;
background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor));
background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor);
background-image: -moz-radial-gradient(circle, @innerColor, @outerColor);
- background-image: -ms-radial-gradient(circle, @innerColor, @outerColor);
background-image: -o-radial-gradient(circle, @innerColor, @outerColor);
background-repeat: no-repeat;
}
- .striped(@color, @angle: -45deg) {
+ .striped(@color, @angle: 45deg) {
background-color: @color;
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
- background-image: -ms-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
}
@@ -448,14 +484,15 @@
// Button backgrounds
// ------------------
-.buttonBackground(@startColor, @endColor) {
+.buttonBackground(@startColor, @endColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) {
// gradientBar will set the background to a pleasing blend of these, to support IE<=9
- .gradientBar(@startColor, @endColor);
+ .gradientBar(@startColor, @endColor, @textColor, @textShadow);
*background-color: @endColor; /* Darken IE7 buttons by default so they stand out more given they won't have borders */
.reset-filter();
// in these cases the gradient won't cover the background, so we override
&:hover, &:active, &.active, &.disabled, &[disabled] {
+ color: @textColor;
background-color: @endColor;
*background-color: darken(@endColor, 5%);
}
@@ -475,43 +512,7 @@
margin-top: (@navbarHeight - @elementHeight) / 2;
}
-// Popover arrows
-// -------------------------
-// For tipsies and popovers
-#popoverArrow {
- .top(@arrowWidth: 5px, @color: @black) {
- bottom: 0;
- left: 50%;
- margin-left: -@arrowWidth;
- border-left: @arrowWidth solid transparent;
- border-right: @arrowWidth solid transparent;
- border-top: @arrowWidth solid @color;
- }
- .left(@arrowWidth: 5px, @color: @black) {
- top: 50%;
- right: 0;
- margin-top: -@arrowWidth;
- border-top: @arrowWidth solid transparent;
- border-bottom: @arrowWidth solid transparent;
- border-left: @arrowWidth solid @color;
- }
- .bottom(@arrowWidth: 5px, @color: @black) {
- top: 0;
- left: 50%;
- margin-left: -@arrowWidth;
- border-left: @arrowWidth solid transparent;
- border-right: @arrowWidth solid transparent;
- border-bottom: @arrowWidth solid @color;
- }
- .right(@arrowWidth: 5px, @color: @black) {
- top: 50%;
- left: 0;
- margin-top: -@arrowWidth;
- border-top: @arrowWidth solid transparent;
- border-bottom: @arrowWidth solid transparent;
- border-right: @arrowWidth solid @color;
- }
-}
+
// Grid System
// -----------
@@ -579,6 +580,7 @@
// Set the container width, and override it for fixed navbars in media queries
.container,
+ .navbar-static-top .container,
.navbar-fixed-top .container,
.navbar-fixed-bottom .container { .span(@gridColumns); }
@@ -596,6 +598,23 @@
}
.spanX (0) {}
+ .offsetX (@index) when (@index > 0) {
+ (~'.offset@{index}') { .offset(@index); }
+ (~'.offset@{index}:first-child') { .offsetFirstChild(@index); }
+ .offsetX(@index - 1);
+ }
+ .offsetX (0) {}
+
+ .offset (@columns) {
+ margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth*2);
+ *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + (@fluidGridGutterWidth*2) - (.5 / @gridRowWidth * 100 * 1%);
+ }
+
+ .offsetFirstChild (@columns) {
+ margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth);
+ *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%);
+ }
+
.span (@columns) {
width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1));
*width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%);
@@ -614,8 +633,9 @@
margin-left: 0;
}
- // generate .spanX
+ // generate .spanX and .offsetX
.spanX (@gridColumns);
+ .offsetX (@gridColumns);
}
}
@@ -629,7 +649,7 @@
.spanX (0) {}
.span(@columns) {
- width: ((@gridColumnWidth) * @columns) + (@gridGutterWidth * (@columns - 1)) - 10;
+ width: ((@gridColumnWidth) * @columns) + (@gridGutterWidth * (@columns - 1)) - 14;
}
input,
@@ -638,6 +658,11 @@
margin-left: 0; // override margin-left from core grid system
}
+ // Space grid-sized controls properly if multiple per line
+ .controls-row [class*="span"] + [class*="span"] {
+ margin-left: @gridGutterWidth;
+ }
+
// generate .spanX
.spanX (@gridColumns);
diff --git a/less/modals.less b/less/modals.less
index 870ad0dfe..e515bb796 100644
--- a/less/modals.less
+++ b/less/modals.less
@@ -1,5 +1,7 @@
-// MODALS
-// ------
+//
+// Modals
+// --------------------------------------------------
+
// Recalculate z-index where appropriate
.modal-open {
@@ -54,6 +56,11 @@
border-bottom: 1px solid #eee;
// Close icon
.close { margin-top: 2px; }
+ // Heading
+ h3 {
+ margin: 0;
+ line-height: 30px;
+ }
}
// Body (where all modal content resides)
diff --git a/less/navbar.less b/less/navbar.less
index 818f8a5a2..70501e459 100644
--- a/less/navbar.less
+++ b/less/navbar.less
@@ -1,27 +1,32 @@
-// NAVBAR (FIXED AND STATIC)
-// -------------------------
+//
+// Navbars (Redux)
+// --------------------------------------------------
// COMMON STYLES
// -------------
+// Base class and wrapper
.navbar {
+ overflow: visible;
+ margin-bottom: @baseLineHeight;
+ color: @navbarText;
+
// Fix for IE7's bad z-indexing so dropdowns don't appear below content that follows the navbar
*position: relative;
*z-index: 2;
-
- overflow: visible;
- margin-bottom: @baseLineHeight;
}
-// Gradient is applied to it's own element because overflow visible is not honored by IE when filter is present
+// Inner for background effects
+// Gradient is applied to its own element because overflow visible is not honored by IE when filter is present
.navbar-inner {
min-height: @navbarHeight;
padding-left: 20px;
padding-right: 20px;
#gradient > .vertical(@navbarBackgroundHighlight, @navbarBackground);
+ border: 1px solid @navbarBorder;
.border-radius(4px);
- .box-shadow(~"0 1px 3px rgba(0,0,0,.25), inset 0 -1px 0 rgba(0,0,0,.1)");
+ .box-shadow(0 1px 4px rgba(0,0,0,.065));
}
// Set width to auto for default container
@@ -36,48 +41,58 @@
}
-// Brand, links, text, and buttons
-.navbar {
- color: @navbarText;
- // Hover and active states
- .brand:hover {
+// Brand: website or project name
+// -------------------------
+.navbar .brand {
+ float: left;
+ display: block;
+ // Vertically center the text given @navbarHeight
+ padding: ((@navbarHeight - @baseLineHeight) / 2) 20px ((@navbarHeight - @baseLineHeight) / 2);
+ margin-left: -20px; // negative indent to left-align the text down the page
+ font-size: 20px;
+ font-weight: 200;
+ color: @navbarBrandColor;
+ text-shadow: 0 1px 0 @navbarBackgroundHighlight;
+ &:hover {
text-decoration: none;
}
- // Website or project name
- .brand {
- float: left;
- display: block;
- // Vertically center the text given @navbarHeight
- @elementHeight: 20px;
- padding: ((@navbarHeight - @elementHeight) / 2 - 2) 20px ((@navbarHeight - @elementHeight) / 2 + 2);
- margin-left: -20px; // negative indent to left-align the text down the page
- font-size: 20px;
- font-weight: 200;
- line-height: 1;
- color: @navbarBrandColor;
- }
- // Plain text in topbar
- .navbar-text {
- margin-bottom: 0;
- line-height: @navbarHeight;
- }
- // Janky solution for now to account for links outside the .nav
- .navbar-link {
- color: @navbarLinkColor;
- &:hover {
- color: @navbarLinkColorHover;
- }
- }
- // Buttons in navbar
- .btn,
- .btn-group {
- .navbarVerticalAlign(30px); // Vertically center in navbar
- }
- .btn-group .btn {
- margin: 0; // then undo the margin here so we don't accidentally double it
+}
+
+// Plain text in topbar
+// -------------------------
+.navbar-text {
+ margin-bottom: 0;
+ line-height: @navbarHeight;
+}
+
+// Janky solution for now to account for links outside the .nav
+// -------------------------
+.navbar-link {
+ color: @navbarLinkColor;
+ &:hover {
+ color: @navbarLinkColorHover;
}
}
+// Dividers in navbar
+// -------------------------
+.navbar .divider-vertical {
+ height: @navbarHeight;
+ margin: 0 9px;
+ border-left: 1px solid @navbarBackground;
+ border-right: 1px solid @navbarBackgroundHighlight;
+}
+
+// Buttons in navbar
+// -------------------------
+.navbar .btn,
+.navbar .btn-group {
+ .navbarVerticalAlign(28px); // Vertically center in navbar
+}
+.navbar .btn-group .btn {
+ margin: 0; // then undo the margin here so we don't accidentally double it
+}
+
// Navbar forms
.navbar-form {
margin-bottom: 0; // remove default bottom margin
@@ -89,7 +104,8 @@
.navbarVerticalAlign(30px); // Vertically center in navbar
}
input,
- select {
+ select,
+ .btn {
display: inline-block;
margin-bottom: 0;
}
@@ -112,37 +128,34 @@
.navbar-search {
position: relative;
float: left;
- .navbarVerticalAlign(28px); // Vertically center in navbar
+ .navbarVerticalAlign(30px); // Vertically center in navbar
margin-bottom: 0;
.search-query {
- padding: 4px 9px;
+ margin-bottom: 0;
+ padding: 4px 14px;
#font > .sans-serif(13px, normal, 1);
- color: @white;
- background-color: @navbarSearchBackground;
- border: 1px solid @navbarSearchBorder;
- .box-shadow(~"inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15)");
- .transition(none);
-
- .placeholder(@navbarSearchPlaceholderColor);
-
- // Focus states (we use .focused since IE7-8 and down doesn't support :focus)
- &:focus,
- &.focused {
- padding: 5px 10px;
- color: @grayDark;
- text-shadow: 0 1px 0 @white;
- background-color: @navbarSearchBackgroundFocus;
- border: 0;
- .box-shadow(0 0 3px rgba(0,0,0,.15));
- outline: 0;
- }
+ .border-radius(15px); // redeclare because of specificity of the type attribute
}
}
-// FIXED NAVBAR
-// ------------
+// Static navbar
+// -------------------------
+
+.navbar-static-top {
+ position: static;
+ width: 100%;
+ margin-bottom: 0; // remove 18px margin for default navbar
+ .navbar-inner {
+ .border-radius(0);
+ }
+}
+
+
+
+// Fixed navbar
+// -------------------------
// Shared (top/bottom) styles
.navbar-fixed-top,
@@ -151,7 +164,14 @@
right: 0;
left: 0;
z-index: @zindexFixedNavbar;
- margin-bottom: 0; // remove 18px margin for static navbar
+ margin-bottom: 0; // remove 18px margin for default navbar
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom,
+.navbar-static-top {
+ .navbar-inner {
+ border: 0;
+ }
}
.navbar-fixed-top .navbar-inner,
.navbar-fixed-bottom .navbar-inner {
@@ -160,6 +180,9 @@
.border-radius(0);
}
+// Reset container width
+// Required here as we reset the width earlier on and the grid mixins don't override early enough
+.navbar-static-top .container,
.navbar-fixed-top .container,
.navbar-fixed-bottom .container {
#grid > .core > .span(@gridColumns);
@@ -169,10 +192,19 @@
.navbar-fixed-top {
top: 0;
}
+.navbar-fixed-top,
+.navbar-static-top {
+ .navbar-inner {
+ .box-shadow(~"inset 0 -1px 0 rgba(0,0,0,.1), 0 1px 10px rgba(0,0,0,.1)");
+ }
+}
// Fixed to bottom
.navbar-fixed-bottom {
bottom: 0;
+ .navbar-inner {
+ .box-shadow(~"inset 0 1px 0 rgba(0,0,0,.1), 0 -1px 10px rgba(0,0,0,.1)");
+ }
}
@@ -191,7 +223,6 @@
float: right; // redeclare due to specificity
}
.navbar .nav > li {
- display: block;
float: left;
}
@@ -199,29 +230,17 @@
.navbar .nav > li > a {
float: none;
// Vertically center the text given @navbarHeight
- @elementHeight: 20px;
- padding: ((@navbarHeight - @elementHeight) / 2 - 1) 10px ((@navbarHeight - @elementHeight) / 2 + 1);
- line-height: 19px;
+ padding: ((@navbarHeight - @baseLineHeight) / 2) 15px ((@navbarHeight - @baseLineHeight) / 2);
color: @navbarLinkColor;
text-decoration: none;
- text-shadow: 0 -1px 0 rgba(0,0,0,.25);
-}
-// Buttons
-.navbar .btn {
- display: inline-block;
- padding: 4px 10px 4px;
- // Vertically center the button given @navbarHeight
- @elementHeight: 28px;
- margin: ((@navbarHeight - @elementHeight) / 2 - 1) 5px ((@navbarHeight - @elementHeight) / 2);
- line-height: @baseLineHeight;
+ text-shadow: 0 1px 0 @navbarBackgroundHighlight;
}
-.navbar .btn-group {
- margin: 0;
- // Vertically center the button given @navbarHeight
- @elementHeight: 28px;
- padding: ((@navbarHeight - @elementHeight) / 2 - 1) 5px ((@navbarHeight - @elementHeight) / 2);
+.navbar .nav .dropdown-toggle .caret {
+ margin-top: 8px;
}
+
// Hover
+.navbar .nav > li > a:focus,
.navbar .nav > li > a:hover {
background-color: @navbarLinkBackgroundHover; // "transparent" is default to differentiate :hover from .active
color: @navbarLinkColorHover;
@@ -229,27 +248,15 @@
}
// Active nav items
-.navbar .nav .active > a,
-.navbar .nav .active > a:hover {
+.navbar .nav > .active > a,
+.navbar .nav > .active > a:hover,
+.navbar .nav > .active > a:focus {
color: @navbarLinkColorActive;
text-decoration: none;
background-color: @navbarLinkBackgroundActive;
-}
-
-// Dividers (basically a vertical hr)
-.navbar .divider-vertical {
- height: @navbarHeight;
- width: 1px;
- margin: 0 9px;
- overflow: hidden;
- background-color: @navbarBackground;
- border-right: 1px solid @navbarBackgroundHighlight;
-}
-
-// Secondary (floated right) nav in topbar
-.navbar .nav.pull-right {
- margin-left: 10px;
- margin-right: 0;
+ -webkit-box-shadow: inset 0 3px 8px rgba(0,0,0,.125);
+ -moz-box-shadow: inset 0 3px 8px rgba(0,0,0,.125);
+ box-shadow: inset 0 3px 8px rgba(0,0,0,.125);
}
// Navbar button for toggling navbar items in responsive layouts
@@ -260,7 +267,7 @@
padding: 7px 10px;
margin-left: 5px;
margin-right: 5px;
- .buttonBackground(@navbarBackgroundHighlight, @navbarBackground);
+ .buttonBackground(darken(@navbarBackgroundHighlight, 5%), darken(@navbarBackground, 5%));
.box-shadow(~"inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075)");
}
.navbar .btn-navbar .icon-bar {
@@ -276,11 +283,12 @@
}
+
// Dropdown menus
// --------------
// Menu position and menu carets
-.navbar .dropdown-menu {
+.navbar .nav > li > .dropdown-menu {
&:before {
content: '';
display: inline-block;
@@ -304,7 +312,7 @@
}
}
// Menu position and menu caret support for dropups via extra dropup class
-.navbar-fixed-bottom .dropdown-menu {
+.navbar-fixed-bottom .nav > li > .dropdown-menu {
&:before {
border-top: 7px solid #ccc;
border-top-color: @dropdownBorder;
@@ -319,32 +327,28 @@
top: auto;
}
}
-// Dropdown toggle caret
-.navbar .nav li.dropdown .dropdown-toggle .caret,
-.navbar .nav li.dropdown.open .caret {
- border-top-color: @white;
- border-bottom-color: @white;
-}
-.navbar .nav li.dropdown.active .caret {
- .opacity(100);
-}
// Remove background color from open dropdown
.navbar .nav li.dropdown.open > .dropdown-toggle,
.navbar .nav li.dropdown.active > .dropdown-toggle,
.navbar .nav li.dropdown.open.active > .dropdown-toggle {
- background-color: transparent;
+ background-color: @navbarLinkBackgroundActive;
+ color: @navbarLinkColorActive;
}
-
-// Dropdown link on hover
-.navbar .nav li.dropdown.active > .dropdown-toggle:hover {
- color: @white;
+.navbar .nav li.dropdown > .dropdown-toggle .caret {
+ border-top-color: @navbarLinkColor;
+ border-bottom-color: @navbarLinkColor;
+}
+.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
+.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
+.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
+ border-top-color: @navbarLinkColorActive;
+ border-bottom-color: @navbarLinkColorActive;
}
// Right aligned menus need alt position
-// TODO: rejigger this at some point to simplify the selectors
-.navbar .pull-right .dropdown-menu,
-.navbar .dropdown-menu.pull-right {
+.navbar .pull-right > li > .dropdown-menu,
+.navbar .nav > li > .dropdown-menu.pull-right {
left: auto;
right: 0;
&:before {
@@ -355,4 +359,111 @@
left: auto;
right: 13px;
}
-} \ No newline at end of file
+ .dropdown-menu {
+ left: auto;
+ right: 100%;
+ margin-left: 0;
+ margin-right: -1px;
+ .border-radius(6px 0 6px 6px);
+ }
+}
+
+
+// Inverted navbar
+// -------------------------
+
+.navbar-inverse {
+ color: @navbarInverseText;
+
+ .navbar-inner {
+ #gradient > .vertical(@navbarInverseBackgroundHighlight, @navbarInverseBackground);
+ border-color: @navbarInverseBorder;
+ }
+
+ .brand,
+ .nav > li > a {
+ color: @navbarInverseLinkColor;
+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
+ &:hover {
+ color: @navbarInverseLinkColorHover;
+ }
+ }
+
+ .nav > li > a:focus,
+ .nav > li > a:hover {
+ background-color: @navbarInverseLinkBackgroundHover;
+ color: @navbarInverseLinkColorHover;
+ }
+
+ .nav .active > a,
+ .nav .active > a:hover,
+ .nav .active > a:focus {
+ color: @navbarInverseLinkColorActive;
+ background-color: @navbarInverseLinkBackgroundActive;
+ }
+
+ // Inline text links
+ .navbar-link {
+ color: @navbarInverseLinkColor;
+ &:hover {
+ color: @navbarInverseLinkColorHover;
+ }
+ }
+
+ // Dividers in navbar
+ .divider-vertical {
+ border-left-color: @navbarInverseBackground;
+ border-right-color: @navbarInverseBackgroundHighlight;
+ }
+
+ // Dropdowns
+ .nav li.dropdown.open > .dropdown-toggle,
+ .nav li.dropdown.active > .dropdown-toggle,
+ .nav li.dropdown.open.active > .dropdown-toggle {
+ background-color: @navbarInverseLinkBackgroundActive;
+ color: @navbarInverseLinkColorActive;
+ }
+ .nav li.dropdown > .dropdown-toggle .caret {
+ border-top-color: @navbarInverseLinkColor;
+ border-bottom-color: @navbarInverseLinkColor;
+ }
+ .nav li.dropdown.open > .dropdown-toggle .caret,
+ .nav li.dropdown.active > .dropdown-toggle .caret,
+ .nav li.dropdown.open.active > .dropdown-toggle .caret {
+ border-top-color: @navbarInverseLinkColorActive;
+ border-bottom-color: @navbarInverseLinkColorActive;
+ }
+
+ // Navbar search
+ .navbar-search {
+ .search-query {
+ color: @white;
+ background-color: @navbarInverseSearchBackground;
+ border-color: @navbarInverseSearchBorder;
+ .box-shadow(~"inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15)");
+ .transition(none);
+ .placeholder(@navbarInverseSearchPlaceholderColor);
+
+ // Focus states (we use .focused since IE7-8 and down doesn't support :focus)
+ &:focus,
+ &.focused {
+ padding: 5px 15px;
+ color: @grayDark;
+ text-shadow: 0 1px 0 @white;
+ background-color: @navbarInverseSearchBackgroundFocus;
+ border: 0;
+ .box-shadow(0 0 3px rgba(0,0,0,.15));
+ outline: 0;
+ }
+ }
+ }
+
+ // Navbar collapse button
+ .btn-navbar {
+ .buttonBackground(darken(@navbarInverseBackgroundHighlight, 5%), darken(@navbarInverseBackground, 5%));
+ }
+
+}
+
+
+
diff --git a/less/navs.less b/less/navs.less
index 5cb9f9f3a..4c38f7dbf 100644
--- a/less/navs.less
+++ b/less/navs.less
@@ -1,6 +1,6 @@
-// NAVIGATIONS
-// -----------
-
+//
+// Navs
+// --------------------------------------------------
// BASE CLASS
@@ -27,7 +27,7 @@
}
// Nav headers (for dropdowns and lists)
-.nav .nav-header {
+.nav-header {
display: block;
padding: 3px 15px;
font-size: 11px;
@@ -43,6 +43,7 @@
}
+
// NAV LIST
// --------
@@ -170,10 +171,10 @@
.border-radius(0);
}
.nav-tabs.nav-stacked > li:first-child > a {
- .border-radius(4px 4px 0 0);
+ .border-top-radius(4px);
}
.nav-tabs.nav-stacked > li:last-child > a {
- .border-radius(0 0 4px 4px);
+ .border-bottom-radius(4px);
}
.nav-tabs.nav-stacked > li > a:hover {
border-color: #ddd;
@@ -194,39 +195,43 @@
// ---------
.nav-tabs .dropdown-menu {
- .border-radius(0 0 5px 5px); // remove the top rounded corners here since there is a hard edge above the menu
+ .border-radius(0 0 6px 6px); // remove the top rounded corners here since there is a hard edge above the menu
}
.nav-pills .dropdown-menu {
- .border-radius(4px); // make rounded corners match the pills
+ .border-radius(6px); // make rounded corners match the pills
}
// Default dropdown links
// -------------------------
// Make carets use linkColor to start
-.nav-tabs .dropdown-toggle .caret,
-.nav-pills .dropdown-toggle .caret {
+.nav .dropdown-toggle .caret {
border-top-color: @linkColor;
border-bottom-color: @linkColor;
margin-top: 6px;
}
-.nav-tabs .dropdown-toggle:hover .caret,
-.nav-pills .dropdown-toggle:hover .caret {
+.nav .dropdown-toggle:hover .caret {
border-top-color: @linkColorHover;
border-bottom-color: @linkColorHover;
}
+/* move down carets for tabs */
+.nav-tabs .dropdown-toggle .caret {
+ margin-top: 8px;
+}
// Active dropdown links
// -------------------------
-.nav-tabs .active .dropdown-toggle .caret,
-.nav-pills .active .dropdown-toggle .caret {
- border-top-color: @grayDark;
- border-bottom-color: @grayDark;
+.nav .active .dropdown-toggle .caret {
+ border-top-color: #fff;
+ border-bottom-color: #fff;
+}
+.nav-tabs .active .dropdown-toggle .caret {
+ border-top-color: @gray;
+ border-bottom-color: @gray;
}
// Active:hover dropdown links
// -------------------------
.nav > .dropdown.active > a:hover {
- color: @black;
cursor: pointer;
}
@@ -361,3 +366,19 @@
border-color: #ddd #ddd #ddd transparent;
*border-left-color: @white;
}
+
+
+
+// DISABLED STATES
+// ---------------
+
+// Gray out text
+.nav > .disabled > a {
+ color: @grayLight;
+}
+// Nuke hover effects
+.nav > .disabled > a:hover {
+ text-decoration: none;
+ background-color: transparent;
+ cursor: default;
+}
diff --git a/less/pager.less b/less/pager.less
index 4244b5eb8..2b854b4be 100644
--- a/less/pager.less
+++ b/less/pager.less
@@ -1,9 +1,10 @@
-// PAGER
-// -----
+//
+// Pager pagination
+// --------------------------------------------------
+
.pager {
- margin-left: 0;
- margin-bottom: @baseLineHeight;
+ margin: @baseLineHeight 0;
list-style: none;
text-align: center;
.clearfix();
diff --git a/less/pagination.less b/less/pagination.less
index 38cf65cc4..2c19880c0 100644
--- a/less/pagination.less
+++ b/less/pagination.less
@@ -1,5 +1,7 @@
-// PAGINATION
-// ----------
+//
+// Pagination (multiple pages)
+// --------------------------------------------------
+
.pagination {
height: @baseLineHeight * 2;
@@ -16,19 +18,23 @@
.pagination li {
display: inline;
}
-.pagination a {
+.pagination a,
+.pagination span {
float: left;
padding: 0 14px;
line-height: (@baseLineHeight * 2) - 2;
text-decoration: none;
- border: 1px solid #ddd;
+ background-color: @paginationBackground;
+ border: 1px solid @paginationBorder;
border-left-width: 0;
}
.pagination a:hover,
-.pagination .active a {
+.pagination .active a,
+.pagination .active span {
background-color: #f5f5f5;
}
-.pagination .active a {
+.pagination .active a,
+.pagination .active span {
color: @grayLight;
cursor: default;
}
@@ -39,11 +45,13 @@
background-color: transparent;
cursor: default;
}
-.pagination li:first-child a {
+.pagination li:first-child a,
+.pagination li:first-child span {
border-left-width: 1px;
.border-radius(3px 0 0 3px);
}
-.pagination li:last-child a {
+.pagination li:last-child a,
+.pagination li:last-child span {
.border-radius(0 3px 3px 0);
}
diff --git a/less/popovers.less b/less/popovers.less
index 558d99ec9..2b3f1b059 100644
--- a/less/popovers.less
+++ b/less/popovers.less
@@ -1,5 +1,7 @@
-// POPOVERS
-// --------
+//
+// Popovers
+// --------------------------------------------------
+
.popover {
position: absolute;
@@ -7,43 +9,109 @@
left: 0;
z-index: @zindexPopover;
display: none;
- padding: 5px;
- &.top { margin-top: -5px; }
- &.right { margin-left: 5px; }
- &.bottom { margin-top: 5px; }
- &.left { margin-left: -5px; }
- &.top .arrow { #popoverArrow > .top(); }
- &.right .arrow { #popoverArrow > .right(); }
- &.bottom .arrow { #popoverArrow > .bottom(); }
- &.left .arrow { #popoverArrow > .left(); }
- .arrow {
- position: absolute;
- width: 0;
- height: 0;
- }
-}
-.popover-inner {
- padding: 3px;
- width: 280px;
- overflow: hidden;
- background: @black; // has to be full background declaration for IE fallback
- background: rgba(0,0,0,.8);
+ width: 236px;
+ padding: 1px;
+ background-color: @popoverBackground;
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding;
+ background-clip: padding-box;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0,0,0,.2);
.border-radius(6px);
- .box-shadow(0 3px 7px rgba(0,0,0,0.3));
+ .box-shadow(0 5px 10px rgba(0,0,0,.2));
+
+ // Offset the popover to account for the popover arrow
+ &.top { margin-bottom: 10px; }
+ &.right { margin-left: 10px; }
+ &.bottom { margin-top: 10px; }
+ &.left { margin-right: 10px; }
+
}
+
.popover-title {
- padding: 9px 15px;
- line-height: 1;
- background-color: #f5f5f5;
- border-bottom:1px solid #eee;
- .border-radius(3px 3px 0 0);
+ margin: 0; // reset heading margin
+ padding: 8px 14px;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 18px;
+ background-color: @popoverTitleBackground;
+ border-bottom: 1px solid darken(@popoverTitleBackground, 5%);
+ .border-radius(5px 5px 0 0);
}
+
.popover-content {
- padding: 14px;
- background-color: @white;
- .border-radius(0 0 3px 3px);
- .background-clip(padding-box);
+ padding: 9px 14px;
p, ul, ol {
margin-bottom: 0;
}
}
+
+// Arrows
+.popover .arrow,
+.popover .arrow:after {
+ position: absolute;
+ display: inline-block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.popover .arrow:after {
+ content: "";
+ z-index: -1;
+}
+
+.popover {
+ &.top .arrow {
+ bottom: -@popoverArrowWidth;
+ left: 50%;
+ margin-left: -@popoverArrowWidth;
+ border-width: @popoverArrowWidth @popoverArrowWidth 0;
+ border-top-color: @popoverArrowColor;
+ &:after {
+ border-width: @popoverArrowOuterWidth @popoverArrowOuterWidth 0;
+ border-top-color: @popoverArrowOuterColor;
+ bottom: -1px;
+ left: -@popoverArrowOuterWidth;
+ }
+ }
+ &.right .arrow {
+ top: 50%;
+ left: -@popoverArrowWidth;
+ margin-top: -@popoverArrowWidth;
+ border-width: @popoverArrowWidth @popoverArrowWidth @popoverArrowWidth 0;
+ border-right-color: @popoverArrowColor;
+ &:after {
+ border-width: @popoverArrowOuterWidth @popoverArrowOuterWidth @popoverArrowOuterWidth 0;
+ border-right-color: @popoverArrowOuterColor;
+ bottom: -@popoverArrowOuterWidth;
+ left: -1px;
+ }
+ }
+ &.bottom .arrow {
+ top: -@popoverArrowWidth;
+ left: 50%;
+ margin-left: -@popoverArrowWidth;
+ border-width: 0 @popoverArrowWidth @popoverArrowWidth;
+ border-bottom-color: @popoverArrowColor;
+ &:after {
+ border-width: 0 @popoverArrowOuterWidth @popoverArrowOuterWidth;
+ border-bottom-color: @popoverArrowOuterColor;
+ top: -1px;
+ left: -@popoverArrowOuterWidth;
+ }
+ }
+ &.left .arrow {
+ top: 50%;
+ right: -@popoverArrowWidth;
+ margin-top: -@popoverArrowWidth;
+ border-width: @popoverArrowWidth 0 @popoverArrowWidth @popoverArrowWidth;
+ border-left-color: @popoverArrowColor;
+ &:after {
+ border-width: @popoverArrowOuterWidth 0 @popoverArrowOuterWidth @popoverArrowOuterWidth;
+ border-left-color: @popoverArrowOuterColor;
+ bottom: -@popoverArrowOuterWidth;
+ right: -1px;
+ }
+ }
+}
diff --git a/less/progress-bars.less b/less/progress-bars.less
index 3b47e6482..36744d89c 100644
--- a/less/progress-bars.less
+++ b/less/progress-bars.less
@@ -1,5 +1,6 @@
-// PROGRESS BARS
-// -------------
+//
+// Progress bars
+// --------------------------------------------------
// ANIMATIONS
@@ -43,8 +44,8 @@
// Outer container
.progress {
overflow: hidden;
- height: 18px;
- margin-bottom: 18px;
+ height: @baseLineHeight;
+ margin-bottom: @baseLineHeight;
#gradient > .vertical(#f5f5f5, #f9f9f9);
.box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
.border-radius(4px);
@@ -53,8 +54,9 @@
// Bar of progress
.progress .bar {
width: 0%;
- height: 18px;
+ height: 100%;
color: @white;
+ float: left;
font-size: 12px;
text-align: center;
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
@@ -63,6 +65,9 @@
.box-sizing(border-box);
.transition(width .6s ease);
}
+.progress .bar + .bar {
+ .box-shadow(~"inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15)");
+}
// Striped bars
.progress-striped .bar {
@@ -85,33 +90,33 @@
// ------
// Danger (red)
-.progress-danger .bar {
+.progress-danger .bar, .progress .bar-danger {
#gradient > .vertical(#ee5f5b, #c43c35);
}
-.progress-danger.progress-striped .bar {
+.progress-danger.progress-striped .bar, .progress-striped .bar-danger {
#gradient > .striped(#ee5f5b);
}
// Success (green)
-.progress-success .bar {
+.progress-success .bar, .progress .bar-success {
#gradient > .vertical(#62c462, #57a957);
}
-.progress-success.progress-striped .bar {
+.progress-success.progress-striped .bar, .progress-striped .bar-success {
#gradient > .striped(#62c462);
}
// Info (teal)
-.progress-info .bar {
+.progress-info .bar, .progress .bar-info {
#gradient > .vertical(#5bc0de, #339bb9);
}
-.progress-info.progress-striped .bar {
+.progress-info.progress-striped .bar, .progress-striped .bar-info {
#gradient > .striped(#5bc0de);
}
// Warning (orange)
-.progress-warning .bar {
+.progress-warning .bar, .progress .bar-warning {
#gradient > .vertical(lighten(@orange, 15%), @orange);
}
-.progress-warning.progress-striped .bar {
+.progress-warning.progress-striped .bar, .progress-striped .bar-warning {
#gradient > .striped(lighten(@orange, 15%));
}
diff --git a/less/reset.less b/less/reset.less
index 2332e03c3..fc27e9c87 100644
--- a/less/reset.less
+++ b/less/reset.less
@@ -1,6 +1,8 @@
-// Reset.less
-// Adapted from Normalize.css http://github.com/necolas/normalize.css
-// ------------------------------------------------------------------------
+//
+// Modals
+// Adapted from http://github.com/necolas/normalize.css
+// --------------------------------------------------
+
// Display in IE6-9 and FF3
// -------------------------
@@ -76,6 +78,7 @@ sub {
img {
max-width: 100%; // Make images inherently responsive
+ height: auto; // Make images inherently responsive
vertical-align: middle;
border: 0;
-ms-interpolation-mode: bicubic;
diff --git a/less/responsive-1200px-min.less b/less/responsive-1200px-min.less
index a7c9f4e00..4f35ba6ca 100644
--- a/less/responsive-1200px-min.less
+++ b/less/responsive-1200px-min.less
@@ -1,23 +1,25 @@
-// LARGE DESKTOP & UP
-// ------------------
+//
+// Responsive: Large desktop and up
+// --------------------------------------------------
+
@media (min-width: 1200px) {
// Fixed grid
- #grid > .core(70px, 30px);
+ #grid > .core(@gridColumnWidth1200, @gridGutterWidth1200);
// Fluid grid
- #grid > .fluid(5.982905983%, 2.564102564%);
+ #grid > .fluid(@fluidGridColumnWidth1200, @fluidGridGutterWidth1200);
// Input grid
- #grid > .input(70px, 30px);
+ #grid > .input(@gridColumnWidth1200, @gridGutterWidth1200);
// Thumbnails
.thumbnails {
- margin-left: -30px;
+ margin-left: -@gridGutterWidth1200;
}
.thumbnails > li {
- margin-left: 30px;
+ margin-left: @gridGutterWidth1200;
}
.row-fluid .thumbnails {
margin-left: 0;
diff --git a/less/responsive-767px-max.less b/less/responsive-767px-max.less
index 614c6905c..b2e3da25c 100644
--- a/less/responsive-767px-max.less
+++ b/less/responsive-767px-max.less
@@ -1,73 +1,8 @@
-// UP TO LANDSCAPE PHONE
-// ---------------------
-
-@media (max-width: 480px) {
-
- // Smooth out the collapsing/expanding nav
- .nav-collapse {
- -webkit-transform: translate3d(0, 0, 0); // activate the GPU
- }
-
- // Block level the page header small tag for readability
- .page-header h1 small {
- display: block;
- line-height: @baseLineHeight;
- }
-
- // Update checkboxes for iOS
- input[type="checkbox"],
- input[type="radio"] {
- border: 1px solid #ccc;
- }
-
- // Remove the horizontal form styles
- .form-horizontal .control-group > label {
- float: none;
- width: auto;
- padding-top: 0;
- text-align: left;
- }
- // Move over all input controls and content
- .form-horizontal .controls {
- margin-left: 0;
- }
- // Move the options list down to align with labels
- .form-horizontal .control-list {
- padding-top: 0; // has to be padding because margin collaspes
- }
- // Move over buttons in .form-actions to align with .controls
- .form-horizontal .form-actions {
- padding-left: 10px;
- padding-right: 10px;
- }
-
- // Modals
- .modal {
- position: absolute;
- top: 10px;
- left: 10px;
- right: 10px;
- width: auto;
- margin: 0;
- &.fade.in { top: auto; }
- }
- .modal-header .close {
- padding: 10px;
- margin: -10px;
- }
-
- // Carousel
- .carousel-caption {
- position: static;
- }
-
-}
-
-
-
-// LANDSCAPE PHONE TO SMALL DESKTOP & PORTRAIT TABLET
+//
+// Responsive: Landscape phone to desktop/tablet
// --------------------------------------------------
+
@media (max-width: 767px) {
// Padding to set content in a bit
@@ -116,6 +51,10 @@
.thumbnails {
margin-left: 0;
}
+ .thumbnails > li {
+ float: none;
+ margin-left: 0; // Reset the default margin for all li elements when no .span* classes are present
+ }
// Make all grid-sized elements block level again
[class*="span"],
.row-fluid [class*="span"] {
@@ -124,6 +63,11 @@
width: auto;
margin-left: 0;
}
+ .span12,
+ .row-fluid .span12 {
+ width: 100%;
+ .box-sizing(border-box);
+ }
// FORM FIELDS
// -----------
@@ -146,4 +90,78 @@
width: auto;
}
+ // Modals
+ .modal {
+ position: fixed;
+ top: 20px;
+ left: 20px;
+ right: 20px;
+ width: auto;
+ margin: 0;
+ &.fade.in { top: auto; }
+ }
+
+}
+
+
+
+// UP TO LANDSCAPE PHONE
+// ---------------------
+
+@media (max-width: 480px) {
+
+ // Smooth out the collapsing/expanding nav
+ .nav-collapse {
+ -webkit-transform: translate3d(0, 0, 0); // activate the GPU
+ }
+
+ // Block level the page header small tag for readability
+ .page-header h1 small {
+ display: block;
+ line-height: @baseLineHeight;
+ }
+
+ // Update checkboxes for iOS
+ input[type="checkbox"],
+ input[type="radio"] {
+ border: 1px solid #ccc;
+ }
+
+ // Remove the horizontal form styles
+ .form-horizontal .control-group > label {
+ float: none;
+ width: auto;
+ padding-top: 0;
+ text-align: left;
+ }
+ // Move over all input controls and content
+ .form-horizontal .controls {
+ margin-left: 0;
+ }
+ // Move the options list down to align with labels
+ .form-horizontal .control-list {
+ padding-top: 0; // has to be padding because margin collaspes
+ }
+ // Move over buttons in .form-actions to align with .controls
+ .form-horizontal .form-actions {
+ padding-left: 10px;
+ padding-right: 10px;
+ }
+
+ // Modals
+ .modal {
+ top: 10px;
+ left: 10px;
+ right: 10px;
+ }
+ .modal-header .close {
+ padding: 10px;
+ margin: -10px;
+ }
+
+ // Carousel
+ .carousel-caption {
+ position: static;
+ }
+
}
diff --git a/less/responsive-768px-979px.less b/less/responsive-768px-979px.less
index 76f4f6df1..8e8c486a0 100644
--- a/less/responsive-768px-979px.less
+++ b/less/responsive-768px-979px.less
@@ -1,16 +1,18 @@
-// PORTRAIT TABLET TO DEFAULT DESKTOP
-// ----------------------------------
+//
+// Responsive: Tablet to desktop
+// --------------------------------------------------
+
@media (min-width: 768px) and (max-width: 979px) {
// Fixed grid
- #grid > .core(42px, 20px);
+ #grid > .core(@gridColumnWidth768, @gridGutterWidth768);
// Fluid grid
- #grid > .fluid(5.801104972%, 2.762430939%);
+ #grid > .fluid(@fluidGridColumnWidth768, @fluidGridGutterWidth768);
// Input grid
- #grid > .input(42px, 20px);
+ #grid > .input(@gridColumnWidth768, @gridGutterWidth768);
// No need to reset .thumbnails here since it's the same @gridGutterWidth
diff --git a/less/responsive-navbar.less b/less/responsive-navbar.less
index 8d31db531..3498863c8 100644
--- a/less/responsive-navbar.less
+++ b/less/responsive-navbar.less
@@ -1,6 +1,11 @@
+//
+// Responsive: Navbar
+// --------------------------------------------------
+
+
// TABLETS AND BELOW
// -----------------
-@media (max-width: 979px) {
+@media (max-width: @navbarCollapseWidth) {
// UNFIX THE TOPBAR
// ----------------
@@ -8,7 +13,7 @@
body {
padding-top: 0;
}
- // Unfix the navbar
+ // Unfix the navbars
.navbar-fixed-top,
.navbar-fixed-bottom {
position: static;
@@ -61,7 +66,7 @@
// Nav and dropdown links in navbar
.nav-collapse .nav > li > a,
.nav-collapse .dropdown-menu a {
- padding: 6px 15px;
+ padding: 9px 15px;
font-weight: bold;
color: @navbarLinkColor;
.border-radius(3px);
@@ -79,6 +84,10 @@
.nav-collapse .dropdown-menu a:hover {
background-color: @navbarBackground;
}
+ .navbar-inverse .nav-collapse .nav > li > a:hover,
+ .navbar-inverse .nav-collapse .dropdown-menu a:hover {
+ background-color: @navbarInverseBackground;
+ }
// Buttons in the navbar
.nav-collapse.in .btn-group {
margin-top: 5px;
@@ -138,16 +147,20 @@
padding-left: 10px;
padding-right: 10px;
}
+
+
}
// DEFAULT DESKTOP
// ---------------
-// Required to make the collapsing navbar work on regular desktops
@media (min-width: 980px) {
+
+ // Required to make the collapsing navbar work on regular desktops
.nav-collapse.collapse {
height: auto !important;
overflow: visible !important;
}
-} \ No newline at end of file
+
+}
diff --git a/less/responsive-utilities.less b/less/responsive-utilities.less
index 572846c0f..2c3f6c15f 100644
--- a/less/responsive-utilities.less
+++ b/less/responsive-utilities.less
@@ -1,5 +1,7 @@
-// RESPONSIVE CLASSES
-// ------------------
+//
+// Responsive: Utility classes
+// --------------------------------------------------
+
// Hide from screenreaders and browsers
// Credit: HTML5 Boilerplate
@@ -13,29 +15,29 @@
// For desktops
.visible-phone { display: none !important; }
.visible-tablet { display: none !important; }
-.visible-desktop { } // Don't set initially
.hidden-phone { }
.hidden-tablet { }
.hidden-desktop { display: none !important; }
-
-// Phones only
-@media (max-width: 767px) {
- // Show
- .visible-phone { display: inherit !important; } // Use inherit to restore previous behavior
- // Hide
- .hidden-phone { display: none !important; }
- // Hide everything else
- .hidden-desktop { display: inherit !important; }
- .visible-desktop { display: none !important; }
-}
+.visible-desktop { display: inherit !important; }
// Tablets & small desktops only
@media (min-width: 768px) and (max-width: 979px) {
+ // Hide everything else
+ .hidden-desktop { display: inherit !important; }
+ .visible-desktop { display: none !important ; }
// Show
.visible-tablet { display: inherit !important; }
// Hide
.hidden-tablet { display: none !important; }
+}
+
+// Phones only
+@media (max-width: 767px) {
// Hide everything else
.hidden-desktop { display: inherit !important; }
- .visible-desktop { display: none !important ; }
+ .visible-desktop { display: none !important; }
+ // Show
+ .visible-phone { display: inherit !important; } // Use inherit to restore previous behavior
+ // Hide
+ .hidden-phone { display: none !important; }
}
diff --git a/less/responsive.less b/less/responsive.less
index 734b1988b..5a62e4a50 100644
--- a/less/responsive.less
+++ b/less/responsive.less
@@ -1,5 +1,5 @@
/*!
- * Bootstrap Responsive v2.0.4
+ * Bootstrap Responsive v2.1.0
*
* Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0
@@ -31,14 +31,14 @@
// MEDIA QUERIES
// ------------------
-// Phones to portrait tablets and narrow desktops
-@import "responsive-767px-max.less";
+// Large desktops
+@import "responsive-1200px-min.less";
// Tablets to regular desktops
@import "responsive-768px-979px.less";
-// Large desktops
-@import "responsive-1200px-min.less";
+// Phones to portrait tablets and narrow desktops
+@import "responsive-767px-max.less";
// RESPONSIVE NAVBAR
diff --git a/less/scaffolding.less b/less/scaffolding.less
index 57c74eda0..342dcf705 100644
--- a/less/scaffolding.less
+++ b/less/scaffolding.less
@@ -1,10 +1,10 @@
+//
// Scaffolding
-// Basic and global styles for generating a grid system, structural layout, and page templates
-// -------------------------------------------------------------------------------------------
+// --------------------------------------------------
// Body reset
-// ----------
+// -------------------------
body {
margin: 0;
@@ -17,7 +17,7 @@ body {
// Links
-// -----
+// -------------------------
a {
color: @linkColor;
@@ -27,3 +27,25 @@ a:hover {
color: @linkColorHover;
text-decoration: underline;
}
+
+
+// Images
+// -------------------------
+
+.img-rounded {
+ .border-radius(6px);
+}
+
+.img-polaroid {
+ padding: 4px;
+ background-color: #fff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0,0,0,.2);
+ -webkit-box-shadow: 0 1px 3px rgba(0,0,0,.1);
+ -moz-box-shadow: 0 1px 3px rgba(0,0,0,.1);
+ box-shadow: 0 1px 3px rgba(0,0,0,.1);
+}
+
+.img-circle {
+ .border-radius(500px);
+}
diff --git a/less/sprites.less b/less/sprites.less
index 72a3a916b..8d5e40e7a 100644
--- a/less/sprites.less
+++ b/less/sprites.less
@@ -1,6 +1,6 @@
-// SPRITES
-// Glyphs and icons for buttons, nav, and more
-// -------------------------------------------
+//
+// Sprites
+// --------------------------------------------------
// ICONS
@@ -25,9 +25,17 @@
background-image: url("@{iconSpritePath}");
background-position: 14px 14px;
background-repeat: no-repeat;
-
+ margin-top: 1px;
}
-.icon-white {
+
+/* White icons with optional class, or on hover/active states of certain elements */
+.icon-white,
+.nav > .active > a > [class^="icon-"],
+.nav > .active > a > [class*=" icon-"],
+.dropdown-menu > li > a:hover > [class^="icon-"],
+.dropdown-menu > li > a:hover > [class*=" icon-"],
+.dropdown-menu > .active > a > [class^="icon-"],
+.dropdown-menu > .active > a > [class*=" icon-"] {
background-image: url("@{iconWhiteSpritePath}");
}
@@ -145,7 +153,7 @@
.icon-warning-sign { background-position: -144px -120px; }
.icon-plane { background-position: -168px -120px; }
.icon-calendar { background-position: -192px -120px; }
-.icon-random { background-position: -216px -120px; }
+.icon-random { background-position: -216px -120px; width: 16px; }
.icon-comment { background-position: -240px -120px; }
.icon-magnet { background-position: -264px -120px; }
.icon-chevron-up { background-position: -288px -120px; }
@@ -153,7 +161,7 @@
.icon-retweet { background-position: -336px -120px; }
.icon-shopping-cart { background-position: -360px -120px; }
.icon-folder-close { background-position: -384px -120px; }
-.icon-folder-open { background-position: -408px -120px; }
+.icon-folder-open { background-position: -408px -120px; width: 16px; }
.icon-resize-vertical { background-position: -432px -119px; } // 1px, 1px off
.icon-resize-horizontal { background-position: -456px -118px; } // 1px, 2px off
@@ -177,15 +185,3 @@
.icon-filter { background-position: -408px -144px; }
.icon-briefcase { background-position: -432px -144px; }
.icon-fullscreen { background-position: -456px -144px; }
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/less/tables.less b/less/tables.less
index b4f6027bf..853b97e39 100644
--- a/less/tables.less
+++ b/less/tables.less
@@ -1,7 +1,6 @@
//
-// Tables.less
-// Tables for, you guessed it, tabular data
-// ----------------------------------------
+// Tables
+// --------------------------------------------------
// BASE TABLES
@@ -70,7 +69,7 @@ table {
.table-bordered {
border: 1px solid @tableBorder;
border-collapse: separate; // Done so we can round those corners!
- *border-collapse: collapsed; // IE7 can't round corners anyway
+ *border-collapse: collapse; // IE7 can't round corners anyway
border-left: 0;
.border-radius(4px);
th,
@@ -104,21 +103,44 @@ table {
}
// For first th or td in the first row in the first thead or tbody
thead:last-child tr:last-child th:first-child,
- tbody:last-child tr:last-child td:first-child {
+ tbody:last-child tr:last-child td:first-child,
+ tfoot:last-child tr:last-child td:first-child {
.border-radius(0 0 0 4px);
-webkit-border-bottom-left-radius: 4px;
border-bottom-left-radius: 4px;
-moz-border-radius-bottomleft: 4px;
}
thead:last-child tr:last-child th:last-child,
- tbody:last-child tr:last-child td:last-child {
+ tbody:last-child tr:last-child td:last-child,
+ tfoot:last-child tr:last-child td:last-child {
-webkit-border-bottom-right-radius: 4px;
border-bottom-right-radius: 4px;
-moz-border-radius-bottomright: 4px;
}
+
+ // Special fixes to round the left border on the first td/th
+ caption + thead tr:first-child th:first-child,
+ caption + tbody tr:first-child td:first-child,
+ colgroup + thead tr:first-child th:first-child,
+ colgroup + tbody tr:first-child td:first-child {
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+ }
+ caption + thead tr:first-child th:last-child,
+ caption + tbody tr:first-child td:last-child,
+ colgroup + thead tr:first-child th:last-child,
+ colgroup + tbody tr:first-child td:last-child {
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -moz-border-right-topleft: 4px;
+ }
+
}
+
+
// ZEBRA-STRIPING
// --------------
@@ -136,10 +158,12 @@ table {
// HOVER EFFECT
// ------------
// Placed here since it has to come after the potential zebra striping
-.table {
- tbody tr:hover td,
- tbody tr:hover th {
- background-color: @tableBackgroundHover;
+.table-hover {
+ tbody {
+ tr:hover td,
+ tr:hover th {
+ background-color: @tableBackgroundHover;
+ }
}
}
@@ -147,7 +171,15 @@ table {
// TABLE CELL SIZING
// -----------------
-// Change the columns
+// Reset default grid behavior
+table [class*=span],
+.row-fluid table [class*=span] {
+ display: table-cell;
+ float: none; // undo default grid column styles
+ margin-left: 0; // undo default grid column styles
+}
+
+// Change the column widths to account for td/th padding
table {
.span1 { .tableColumns(1); }
.span2 { .tableColumns(2); }
@@ -174,3 +206,20 @@ table {
.span23 { .tableColumns(23); }
.span24 { .tableColumns(24); }
}
+
+
+// TABLE BACKGROUNDS
+// -----------------
+// Exact selectors below required to override .table-striped
+
+.table {
+ tbody tr.success td {
+ background-color: @successBackground;
+ }
+ tbody tr.error td {
+ background-color: @errorBackground;
+ }
+ tbody tr.info td {
+ background-color: @infoBackground;
+ }
+}
diff --git a/less/tests/css-tests.css b/less/tests/css-tests.css
index e0870be44..6001f53aa 100644
--- a/less/tests/css-tests.css
+++ b/less/tests/css-tests.css
@@ -12,9 +12,24 @@ body {
.subhead {
margin-bottom: 36px;
}
-h4 {
+/*h4 {
margin-bottom: 5px;
}
+*/
+
+.type-test {
+ margin-bottom: 20px;
+ padding: 0 20px 20px;
+ background: url(../../docs/assets/img/grid-baseline-20px.png);
+}
+.type-test h1,
+.type-test h2,
+.type-test h3,
+.type-test h4,
+.type-test h5,
+.type-test h6 {
+ background-color: rgba(255,0,0,.2);
+}
/* colgroup tests */
diff --git a/less/tests/css-tests.html b/less/tests/css-tests.html
index b7177e5c6..6786454cc 100644
--- a/less/tests/css-tests.html
+++ b/less/tests/css-tests.html
@@ -34,7 +34,7 @@
<!-- Navbar
================================================== -->
- <div class="navbar navbar-fixed-top">
+ <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="brand" href="../../docs/index.html">Bootstrap</a>
@@ -42,17 +42,60 @@
</div>
</div>
- <div class="container">
-
<!-- Masthead
================================================== -->
<header class="jumbotron subhead" id="overview">
- <h1>CSS Tests</h1>
- <p class="lead">One stop shop for quick debugging and edge-case tests of CSS.</p>
+ <div class="container">
+ <h1>CSS Tests</h1>
+ <p class="lead">One stop shop for quick debugging and edge-case tests of CSS.</p>
+ </div>
</header>
+<div class="bs-docs-canvas">
+
+ <div class="container">
+
+
+
+<!-- Typography
+================================================== -->
+
+<div class="page-header">
+ <h1>Typography</h1>
+</div>
+
+<div class="row">
+ <div class="span6">
+ <div class="type-test">
+ <h1>h1. Heading 1</h1>
+ <h2>h2. Heading 2</h2>
+ <h3>h3. Heading 3</h3>
+ <h4>h4. Heading 4</h4>
+ <h5>h5. Heading 5</h5>
+ <h6>h6. Heading 6</h6>
+ <p>Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
+ </div>
+ </div>
+ <div class="span6">
+ <div class="type-test">
+ <h1>h1. Heading 1</h1>
+ <p>Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
+ <h2>h2. Heading 2</h2>
+ <p>Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
+ <h3>h3. Heading 3</h3>
+ <p>Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
+ <h4>h4. Heading 4</h4>
+ <p>Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
+ <h5>h5. Heading 5</h5>
+ <p>Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
+ <h6>h6. Heading 6</h6>
+ <p>Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
+ </div>
+ </div>
+</div>
+
<!-- Fluid grid
@@ -363,6 +406,13 @@
<td>3</td>
</tr>
</tbody>
+ <tfoot>
+ <tr>
+ <td>3</td>
+ <td>6</td>
+ <td>9</td>
+ </tr>
+ </tfoot>
</table>
<h4>Bordered with thead, with colgroup</h4>
<table class="table table-bordered">
@@ -373,9 +423,9 @@
</colgroup>
<thead>
<tr>
- <td>1</td>
- <td>2</td>
- <td>3</td>
+ <th>A</th>
+ <th>B</th>
+ <th>C</th>
</tr>
</thead>
<tbody>
@@ -395,6 +445,13 @@
<td>3</td>
</tr>
</tbody>
+ <tfoot>
+ <tr>
+ <td>3</td>
+ <td>6</td>
+ <td>9</td>
+ </tr>
+ </tfoot>
</table>
</div><!--/span-->
<div class="span6">
@@ -425,6 +482,13 @@
<td>3</td>
</tr>
</tbody>
+ <tfoot>
+ <tr>
+ <td>3</td>
+ <td>6</td>
+ <td>9</td>
+ </tr>
+ </tfoot>
</table>
<h4>Bordered with rowspan and colspan</h4>
<table class="table table-bordered">
@@ -458,6 +522,73 @@
</div><!--/row-->
+<h4>Grid sizing</h4>
+<div class="row">
+ <div class="span12">
+ <table class="table table-bordered">
+ <thead>
+ <tr>
+ <th class="span3">1</th>
+ <th class="span4">2</th>
+ <th>3</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td colspan="2">1 and 2</td>
+ <td>3</td>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td rowspan="2">2</td>
+ <td>3</td>
+ </tr>
+ <tr>
+ <td rowspan="2">1</td>
+ <td>3</td>
+ </tr>
+ <tr>
+ <td colspan="2">2 and 3</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+</div><!--/row-->
+
+<h4>Fluid grid sizing</h4>
+<div class="row-fluid">
+ <div class="span12">
+ <table class="table table-bordered">
+ <thead>
+ <tr>
+ <th class="span3">1</th>
+ <th class="span4">2</th>
+ <th>3</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td colspan="2">1 and 2</td>
+ <td>3</td>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td rowspan="2">2</td>
+ <td>3</td>
+ </tr>
+ <tr>
+ <td rowspan="2">1</td>
+ <td>3</td>
+ </tr>
+ <tr>
+ <td colspan="2">2 and 3</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+</div><!--/row-->
+
+
<!-- Forms
================================================== -->
@@ -472,17 +603,21 @@
<form>
<div class="controls">
<div class="input-prepend">
- <span class="add-on">@</span><input class="span2" id="prependedInput" size="16" type="text">
+ <span class="add-on">@</span>
+ <input class="span2" id="prependedInput" size="16" type="text">
</div>
</div>
<div class="controls">
<div class="input-append">
- <input class="span2" id="prependedInput" size="16" type="text"><span class="add-on">@</span>
+ <input class="span2" id="prependedInput" size="16" type="text">
+ <span class="add-on">@</span>
</div>
</div>
<div class="controls">
<div class="input-prepend input-append">
- <span class="add-on">$</span><input class="span2" id="prependedInput" size="16" type="text"><span class="add-on">.00</span>
+ <span class="add-on">$</span>
+ <input class="span2" id="prependedInput" size="16" type="text">
+ <span class="add-on">.00</span>
</div>
</div>
</form>
@@ -491,10 +626,17 @@
<h4>Prepend and append with uneditable</h4>
<form>
<div class="input-prepend">
- <span class="add-on">$</span><span class="span2 uneditable-input">Some value here</span>
+ <span class="add-on">$</span>
+ <span class="span2 uneditable-input">Some value here</span>
</div>
<div class="input-append">
- <span class="span2 uneditable-input">Some value here</span><span class="add-on">.00</span>
+ <span class="span2 uneditable-input">Some value here</span>
+ <span class="add-on">.00</span>
+ </div>
+ <div class="input-prepend input-append">
+ <span class="add-on">$</span>
+ <span class="span2 uneditable-input">Some value here</span>
+ <span class="add-on">.00</span>
</div>
</form>
</div><!--/span-->
@@ -654,8 +796,51 @@
</div><!--/span-->
</div><!--/row-->
</div>
+
<br>
+<h4>Inline form in fluid row</h4>
+
+<div class="row-fluid">
+ <div class="span12">
+ <form class="form-inline">
+ <input type="text" class="span3" placeholder="Email">
+ <input type="password" class="span3" placeholder="Password">
+ <label class="checkbox">
+ <input type="checkbox"> Remember me
+ </label>
+ <button type="submit" class="btn">Sign in</button>
+ </form>
+ </div>
+</div>
+
+
+<br>
+
+
+<h4>Fluid textarea at .span12</h4>
+<div class="row-fluid">
+ <div class="span12">
+ <textarea class="span12"></textarea>
+ </div>
+</div>
+
+
+<br>
+
+
+<h4>Selects</h4>
+<form>
+ <select class="span4">
+ <option>Option</option>
+ </select>
+</form>
+
+
+<br>
+
+
+
<!-- Dropdowns
================================================== -->
@@ -848,6 +1033,7 @@
</div>
</div> <!-- /tabbable -->
+<br>
<!-- Labels
@@ -869,27 +1055,104 @@
</form>
</div><!--/span-->
<div class="span4">
-
+ <button class="btn">Action <span class="badge">2</span></button>
+ <button class="btn">Action <span class="label">2</span></button>
</div><!--/span-->
</div><!--/row-->
+<br>
+
+
+<!-- Button groups
+================================================== -->
+
+<div class="page-header">
+ <h1>Buttons</h1>
+</div>
+
+<table class="table table-bordered">
+ <tbody>
+ <tr>
+ <td>
+ Maecenas faucibus mollis interdum. Nulla vitae elit libero, a pharetra augue. Donec ullamcorper nulla non metus auctor fringilla. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.
+ </td>
+ <td>
+ <div class="btn-group">
+ <button class="btn">1</button>
+ <button class="btn">2</button>
+ <button class="btn">3</button>
+ <button class="btn">4</button>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h4>Mini buttons: text and icon</h4>
+<div class="btn-group">
+ <button class="btn btn-mini">Button text</button>
+ <button class="btn btn-mini"><i class="icon-cog"></i></button>
+</div>
+
+<br>
+
+
+<!-- Responsive utility classes
+================================================== -->
+
+<div class="page-header">
+ <h1>Responsive utility classes</h1>
+</div>
+
+<h4>Visible on...</h4>
+<ul class="responsive-utilities-test visible-on">
+ <li>Phone<span class="visible-phone">✔ Phone</span></li>
+ <li>Tablet<span class="visible-tablet">✔ Tablet</span></li>
+ <li>Desktop<span class="visible-desktop">✔ Desktop</span></li>
+</ul>
+<ul class="responsive-utilities-test visible-on">
+ <li>Phone + Tablet<span class="visible-phone visible-tablet">✔ Phone + Tablet</span></li>
+ <li>Tablet + Desktop<span class="visible-tablet visible-desktop">✔ Tablet + Desktop</span></li>
+ <li>All<span class="visible-phone visible-tablet visible-desktop">✔ All</span></li>
+</ul>
+<h4>Hidden on...</h4>
+<ul class="responsive-utilities-test hidden-on">
+ <li>Phone<span class="hidden-phone">✔ Phone</span></li>
+ <li>Tablet<span class="hidden-tablet">✔ Tablet</span></li>
+ <li>Desktop<span class="hidden-desktop">✔ Desktop</span></li>
+</ul>
+<ul class="responsive-utilities-test hidden-on">
+ <li>Phone + Tablet<span class="hidden-phone hidden-tablet">✔ Phone + Tablet</span></li>
+ <li>Tablet + Desktop<span class="hidden-tablet hidden-desktop">✔ Tablet + Desktop</span></li>
+ <li>All<span class="hidden-phone hidden-tablet hidden-desktop">✔ All</span></li>
+</ul>
- <!-- Footer
- ================================================== -->
- <footer class="footer">
+ </div><!-- /container -->
+
+
+
+ <!-- Footer
+ ================================================== -->
+ <footer class="footer">
+ <div class="container">
<p class="pull-right"><a href="#">Back to top</a></p>
<p>Designed and built with all the love in the world <a href="http://twitter.com/twitter" target="_blank">@twitter</a> by <a href="http://twitter.com/mdo" target="_blank">@mdo</a> and <a href="http://twitter.com/fat" target="_blank">@fat</a>.</p>
<p>Code licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache License v2.0</a>. Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
<p>Icons from <a href="http://glyphicons.com">Glyphicons Free</a>, licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
- </footer>
-
- </div><!-- /container -->
+ <ul class="footer-links">
+ <li><a href="http://blog.getbootstrap.com">Read the blog</a></li>
+ <li><a href="https://github.com/twitter/bootstrap/issues?state=open">Submit issues</a></li>
+ <li><a href="https://github.com/twitter/bootstrap/wiki">Roadmap and changelog</a></li>
+ </ul>
+ </div>
+ </footer>
+</div>
<!-- Le javascript
diff --git a/less/thumbnails.less b/less/thumbnails.less
index aa69f8e33..91b75f785 100644
--- a/less/thumbnails.less
+++ b/less/thumbnails.less
@@ -1,5 +1,8 @@
-// THUMBNAILS
-// ----------
+//
+// Thumbnails
+// --------------------------------------------------
+
+
// Note: `.thumbnails` and `.thumbnails > li` are overriden in responsive files
// Make wrapper ul behave like the grid
@@ -24,10 +27,11 @@
.thumbnail {
display: block;
padding: 4px;
- line-height: 1;
+ line-height: @baseLineHeight;
border: 1px solid #ddd;
.border-radius(4px);
- .box-shadow(0 1px 1px rgba(0,0,0,.075));
+ .box-shadow(0 1px 3px rgba(0,0,0,.055));
+ .transition(all .2s ease-in-out);
}
// Add a hover state for linked versions only
a.thumbnail:hover {
@@ -44,4 +48,5 @@ a.thumbnail:hover {
}
.thumbnail .caption {
padding: 9px;
+ color: @gray;
}
diff --git a/less/tooltip.less b/less/tooltip.less
index 5111a193f..fba1856f5 100644
--- a/less/tooltip.less
+++ b/less/tooltip.less
@@ -1,6 +1,9 @@
-// TOOLTIP
-// ------=
+//
+// Tooltips
+// --------------------------------------------------
+
+// Base class
.tooltip {
position: absolute;
z-index: @zindexTooltip;
@@ -10,26 +13,58 @@
font-size: 11px;
.opacity(0);
&.in { .opacity(80); }
- &.top { margin-top: -2px; }
- &.right { margin-left: 2px; }
- &.bottom { margin-top: 2px; }
- &.left { margin-left: -2px; }
- &.top .tooltip-arrow { #popoverArrow > .top(); }
- &.left .tooltip-arrow { #popoverArrow > .left(); }
- &.bottom .tooltip-arrow { #popoverArrow > .bottom(); }
- &.right .tooltip-arrow { #popoverArrow > .right(); }
+ &.top { margin-top: -3px; }
+ &.right { margin-left: 3px; }
+ &.bottom { margin-top: 3px; }
+ &.left { margin-left: -3px; }
}
+
+// Wrapper for the tooltip content
.tooltip-inner {
max-width: 200px;
padding: 3px 8px;
- color: @white;
+ color: @tooltipColor;
text-align: center;
text-decoration: none;
- background-color: @black;
+ background-color: @tooltipBackground;
.border-radius(4px);
}
+
+// Arrows
.tooltip-arrow {
position: absolute;
width: 0;
height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.tooltip {
+ &.top .tooltip-arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -@tooltipArrowWidth;
+ border-width: @tooltipArrowWidth @tooltipArrowWidth 0;
+ border-top-color: @tooltipArrowColor;
+ }
+ &.right .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -@tooltipArrowWidth;
+ border-width: @tooltipArrowWidth @tooltipArrowWidth @tooltipArrowWidth 0;
+ border-right-color: @tooltipArrowColor;
+ }
+ &.left .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -@tooltipArrowWidth;
+ border-width: @tooltipArrowWidth 0 @tooltipArrowWidth @tooltipArrowWidth;
+ border-left-color: @tooltipArrowColor;
+ }
+ &.bottom .tooltip-arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -@tooltipArrowWidth;
+ border-width: 0 @tooltipArrowWidth @tooltipArrowWidth;
+ border-bottom-color: @tooltipArrowColor;
+ }
}
diff --git a/less/type.less b/less/type.less
index bdf8e605e..58723f788 100644
--- a/less/type.less
+++ b/less/type.less
@@ -1,17 +1,13 @@
-// Typography.less
-// Headings, body text, lists, code, and more for a versatile and durable typography system
-// ----------------------------------------------------------------------------------------
+//
+// Typography
+// --------------------------------------------------
-// BODY TEXT
-// ---------
+// Body text
+// -------------------------
p {
margin: 0 0 @baseLineHeight / 2;
- small {
- font-size: @baseFontSize - 2;
- color: @grayLight;
- }
}
.lead {
margin-bottom: @baseLineHeight;
@@ -20,73 +16,69 @@ p {
line-height: @baseLineHeight * 1.5;
}
-// HEADINGS
-// --------
+
+// Emphasis & misc
+// -------------------------
+
+small {
+ font-size: 85%; // Ex: 14px base font * 85% = about 12px
+}
+strong {
+ font-weight: bold;
+}
+em {
+ font-style: italic;
+}
+cite {
+ font-style: normal;
+}
+.muted {
+ color: @grayLight;
+}
+
+
+// Headings
+// -------------------------
h1, h2, h3, h4, h5, h6 {
- margin: 0;
+ margin: (@baseLineHeight / 2) 0;
font-family: @headingsFontFamily;
font-weight: @headingsFontWeight;
+ line-height: 1;
color: @headingsColor;
text-rendering: optimizelegibility; // Fix the character spacing for headings
small {
font-weight: normal;
+ line-height: 1;
color: @grayLight;
}
}
-h1 {
- font-size: 30px;
- line-height: @baseLineHeight * 2;
- small {
- font-size: 18px;
- }
-}
-h2 {
- font-size: 24px;
- line-height: @baseLineHeight * 2;
- small {
- font-size: 18px;
- }
-}
-h3 {
- font-size: 18px;
- line-height: @baseLineHeight * 1.5;
- small {
- font-size: 14px;
- }
-}
-h4, h5, h6 {
- line-height: @baseLineHeight;
-}
-h4 {
- font-size: 14px;
- small {
- font-size: 12px;
- }
-}
-h5 {
- font-size: 12px;
-}
-h6 {
- font-size: 11px;
- color: @grayLight;
- text-transform: uppercase;
-}
+h1 { font-size: 36px; line-height: 40px; }
+h2 { font-size: 30px; line-height: 40px; }
+h3 { font-size: 24px; line-height: 40px; }
+h4 { font-size: 18px; line-height: 20px; }
+h5 { font-size: 14px; line-height: 20px; }
+h6 { font-size: 12px; line-height: 20px; }
+
+h1 small { font-size: 24px; }
+h2 small { font-size: 18px; }
+h3 small { font-size: 14px; }
+h4 small { font-size: 14px; }
+
// Page header
+// -------------------------
+
.page-header {
- padding-bottom: @baseLineHeight - 1;
- margin: @baseLineHeight 0;
+ padding-bottom: (@baseLineHeight / 2) - 1;
+ margin: @baseLineHeight 0 (@baseLineHeight * 1.5);
border-bottom: 1px solid @grayLighter;
}
-.page-header h1 {
- line-height: 1;
-}
-// LISTS
-// -----
+// Lists
+// --------------------------------------------------
// Unordered and Ordered lists
ul, ol {
@@ -99,12 +91,6 @@ ol ol,
ol ul {
margin-bottom: 0;
}
-ul {
- list-style: disc;
-}
-ol {
- list-style: decimal;
-}
li {
line-height: @baseLineHeight;
}
@@ -124,7 +110,6 @@ dd {
}
dt {
font-weight: bold;
- line-height: @baseLineHeight - 1; // fix jank Helvetica Neue font bug
}
dd {
margin-left: @baseLineHeight / 2;
@@ -154,17 +139,6 @@ hr {
border-bottom: 1px solid @white;
}
-// Emphasis
-strong {
- font-weight: bold;
-}
-em {
- font-style: italic;
-}
-.muted {
- color: @grayLight;
-}
-
// Abbreviations and acronyms
abbr[title] {
cursor: help;
@@ -204,6 +178,14 @@ blockquote {
small {
text-align: right;
}
+ small {
+ &:before {
+ content: '';
+ }
+ &:after {
+ content: '\00A0 \2014';
+ }
+ }
}
}
@@ -222,11 +204,3 @@ address {
font-style: normal;
line-height: @baseLineHeight;
}
-
-// Misc
-small {
- font-size: 100%;
-}
-cite {
- font-style: normal;
-}
diff --git a/less/utilities.less b/less/utilities.less
index d60d22031..314b4ffdb 100644
--- a/less/utilities.less
+++ b/less/utilities.less
@@ -1,5 +1,7 @@
-// UTILITY CLASSES
-// ---------------
+//
+// Utility classes
+// --------------------------------------------------
+
// Quick floats
.pull-right {
@@ -21,3 +23,8 @@
.invisible {
visibility: hidden;
}
+
+// For Affix plugin
+.affix {
+ position: fixed;
+}
diff --git a/less/variables.less b/less/variables.less
index b931d3d2a..a5c8cdd98 100644
--- a/less/variables.less
+++ b/less/variables.less
@@ -1,10 +1,9 @@
-// Variables.less
-// Variables to customize the look and feel of Bootstrap
-// -----------------------------------------------------
-
+//
+// Variables
+// --------------------------------------------------
-// GLOBAL VALUES
+// Global values
// --------------------------------------------------
@@ -47,11 +46,11 @@
// -------------------------
@sansFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif;
@serifFontFamily: Georgia, "Times New Roman", Times, serif;
-@monoFontFamily: Menlo, Monaco, Consolas, "Courier New", monospace;
+@monoFontFamily: Monaco, Menlo, Consolas, "Courier New", monospace;
-@baseFontSize: 13px;
+@baseFontSize: 14px;
@baseFontFamily: @sansFontFamily;
-@baseLineHeight: 18px;
+@baseLineHeight: 20px;
@altFontFamily: @serifFontFamily;
@headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily
@@ -71,10 +70,10 @@
// -------------------------
@btnBackground: @white;
@btnBackgroundHighlight: darken(@white, 10%);
-@btnBorder: #ccc;
+@btnBorder: #bbb;
@btnPrimaryBackground: @linkColor;
-@btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 15%);
+@btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 20%);
@btnInfoBackground: #5bc0de;
@btnInfoBackgroundHighlight: #2f96b4;
@@ -88,7 +87,7 @@
@btnDangerBackground: #ee5f5b;
@btnDangerBackgroundHighlight: #bd362f;
-@btnInverseBackground: @gray;
+@btnInverseBackground: #444;
@btnInverseBackgroundHighlight: @grayDarker;
@@ -104,12 +103,17 @@
// -------------------------
@dropdownBackground: @white;
@dropdownBorder: rgba(0,0,0,.2);
-@dropdownLinkColor: @grayDark;
-@dropdownLinkColorHover: @white;
-@dropdownLinkBackgroundHover: @linkColor;
@dropdownDividerTop: #e5e5e5;
@dropdownDividerBottom: @white;
+@dropdownLinkColor: @grayDark;
+
+@dropdownLinkColorHover: @white;
+@dropdownLinkBackgroundHover: @dropdownLinkBackgroundActive;
+
+@dropdownLinkColorActive: @dropdownLinkColor;
+@dropdownLinkBackgroundActive: @linkColor;
+
// COMPONENT VARIABLES
@@ -121,7 +125,7 @@
// Try to avoid customizing these :)
@zindexDropdown: 1000;
@zindexPopover: 1010;
-@zindexTooltip: 1020;
+@zindexTooltip: 1030;
@zindexFixedNavbar: 1030;
@zindexModalBackdrop: 1040;
@zindexModal: 1050;
@@ -143,25 +147,55 @@
@hrBorder: @grayLighter;
+// Wells
+// -------------------------
+@wellBackground: #f5f5f5;
+
+
// Navbar
// -------------------------
-@navbarHeight: 40px;
-@navbarBackground: @grayDarker;
-@navbarBackgroundHighlight: @grayDark;
+@navbarCollapseWidth: 979px;
-@navbarText: @grayLight;
-@navbarLinkColor: @grayLight;
-@navbarLinkColorHover: @white;
-@navbarLinkColorActive: @navbarLinkColorHover;
+@navbarHeight: 40px;
+@navbarBackground: darken(@navbarBackgroundHighlight, 5%);
+@navbarBackgroundHighlight: #ffffff;
+@navbarBorder: darken(@navbarBackground, 12%);
+
+@navbarText: @gray;
+@navbarLinkColor: @gray;
+@navbarLinkColorHover: @grayDark;
+@navbarLinkColorActive: @gray;
@navbarLinkBackgroundHover: transparent;
-@navbarLinkBackgroundActive: @navbarBackground;
+@navbarLinkBackgroundActive: darken(@navbarBackground, 5%);
-@navbarSearchBackground: lighten(@navbarBackground, 25%);
-@navbarSearchBackgroundFocus: @white;
-@navbarSearchBorder: darken(@navbarSearchBackground, 30%);
-@navbarSearchPlaceholderColor: #ccc;
@navbarBrandColor: @navbarLinkColor;
+// Inverted navbar
+@navbarInverseBackground: #111111;
+@navbarInverseBackgroundHighlight: #222222;
+@navbarInverseBorder: #252525;
+
+@navbarInverseText: @grayLight;
+@navbarInverseLinkColor: @grayLight;
+@navbarInverseLinkColorHover: @white;
+@navbarInverseLinkColorActive: @navbarInverseLinkColorHover;
+@navbarInverseLinkBackgroundHover: transparent;
+@navbarInverseLinkBackgroundActive: @navbarInverseBackground;
+
+@navbarInverseSearchBackground: lighten(@navbarInverseBackground, 25%);
+@navbarInverseSearchBackgroundFocus: @white;
+@navbarInverseSearchBorder: @navbarInverseBackground;
+@navbarInverseSearchPlaceholderColor: #ccc;
+
+@navbarInverseBrandColor: @navbarInverseLinkColor;
+
+
+// Pagination
+// -------------------------
+@paginationBackground: #fff;
+@paginationBorder: #ddd;
+@paginationActiveBackground: #f5f5f5;
+
// Hero unit
// -------------------------
@@ -189,10 +223,28 @@
@infoBorder: darken(spin(@infoBackground, -10), 7%);
+// Tooltips and popovers
+// -------------------------
+@tooltipColor: #fff;
+@tooltipBackground: #000;
+@tooltipArrowWidth: 5px;
+@tooltipArrowColor: @tooltipBackground;
+
+@popoverBackground: #fff;
+@popoverArrowWidth: 10px;
+@popoverArrowColor: #fff;
+@popoverTitleBackground: darken(@popoverBackground, 3%);
+
+// Special enhancement for popovers
+@popoverArrowOuterWidth: @popoverArrowWidth + 1;
+@popoverArrowOuterColor: rgba(0,0,0,.25);
+
+
// GRID
// --------------------------------------------------
+
// Default 940px grid
// -------------------------
@gridColumns: 12;
@@ -200,7 +252,26 @@
@gridGutterWidth: 20px;
@gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1));
+// 1200px min
+@gridColumnWidth1200: 70px;
+@gridGutterWidth1200: 30px;
+@gridRowWidth1200: (@gridColumns * @gridColumnWidth1200) + (@gridGutterWidth1200 * (@gridColumns - 1));
+
+// 768px-979px
+@gridColumnWidth768: 42px;
+@gridGutterWidth768: 20px;
+@gridRowWidth768: (@gridColumns * @gridColumnWidth768) + (@gridGutterWidth768 * (@gridColumns - 1));
+
+
// Fluid grid
// -------------------------
-@fluidGridColumnWidth: 6.382978723%;
-@fluidGridGutterWidth: 2.127659574%;
+@fluidGridColumnWidth: percentage(@gridColumnWidth/@gridRowWidth);
+@fluidGridGutterWidth: percentage(@gridGutterWidth/@gridRowWidth);
+
+// 1200px min
+@fluidGridColumnWidth1200: percentage(@gridColumnWidth1200/@gridRowWidth1200);
+@fluidGridGutterWidth1200: percentage(@gridGutterWidth1200/@gridRowWidth1200);
+
+// 768px-979px
+@fluidGridColumnWidth768: percentage(@gridColumnWidth768/@gridRowWidth768);
+@fluidGridGutterWidth768: percentage(@gridGutterWidth768/@gridRowWidth768);
diff --git a/less/wells.less b/less/wells.less
index 9300061a5..e4e0a9beb 100644
--- a/less/wells.less
+++ b/less/wells.less
@@ -1,13 +1,15 @@
-// WELLS
-// -----
+//
+// Wells
+// --------------------------------------------------
+
+// Base class
.well {
min-height: 20px;
padding: 19px;
margin-bottom: 20px;
- background-color: #f5f5f5;
- border: 1px solid #eee;
- border: 1px solid rgba(0,0,0,.05);
+ background-color: @wellBackground;
+ border: 1px solid darken(@wellBackground, 7%);
.border-radius(4px);
.box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
blockquote {