app/assets/stylesheets/lib/bootstrap/preboot.scss
/* Preboot.less
* Variables and mixins to pre-ignite any new web development project
* ------------------------------------------------------------------ */
// VARIABLES
// ---------
// Links
$linkColor: #04BFBF;
$linkColorHover: darken($linkColor, 10);
// Grays
$black: #000;
$grayDark: lighten($black, 25%);
$gray: lighten($black, 50%);
$grayLight: lighten($black, 75%);
$grayLighter: lighten($black, 90%);
$white: #fff;
// Accent Colors
$blue: #04BFBF;
$blueDark: #008a8a;
$green: #C0D966 - #111;
$red: #9d261d;
$yellow: #ffc40d;
$orange: #f89406;
$pink: #c3325f;
$purple: #7a43b6;
// Baseline grid
$basefont: 13px;
$baseline: 18px;
// Griditude
$gridColumns: 16;
$gridColumnWidth: 40px;
$gridGutterWidth: 20px;
$extraSpace: ($gridGutterWidth * 2); // For our grid calculations
$siteWidth: ($gridColumns * $gridColumnWidth) + ($gridGutterWidth * ($gridColumns - 1));
// Color Scheme
$baseColor: $blue; // Set a base color
$complement: spin($baseColor, 180); // Determine a complementary color
$split1: spin($baseColor, 158); // Split complements
$split2: spin($baseColor, -158);
$triad1: spin($baseColor, 135); // Triads colors
$triad2: spin($baseColor, -135);
$tetra1: spin($baseColor, 90); // Tetra colors
$tetra2: spin($baseColor, -90);
$analog1: spin($baseColor, 22); // Analogs colors
$analog2: spin($baseColor, -22);
// MIXINS
// ------
// Clearfix for clearing floats like a boss h5bp.com/q
@mixin clearfix {
zoom: 1;
&:before, &:after {
display: table;
content: "";
}
&:after {
clear: both;
}
}
.clearfix {
@include clearfix;
}
// Center-align a block level element
.center-block {
display: block;
margin: 0 auto;
}
// Sizing shortcuts
@mixin size($height: 5px, $width: 5px) {
height: $height;
width: $width;
}
@mixin square($size: 5px) {
@include size($size, $size);
}
// Input placeholder text
@mixin placeholder($color: $grayLight) {
:-moz-placeholder {
color: $color;
}
::-webkit-input-placeholder {
color: $color;
}
}
// Font Stacks
@mixin font-shorthand($weight: normal, $size: 14px, $lineHeight: 20px) {
font-size: $size;
font-weight: $weight;
line-height: $lineHeight;
}
@mixin font-sans-serif($weight: normal, $size: 14px, $lineHeight: 20px) {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: $size;
font-weight: $weight;
line-height: $lineHeight;
}
@mixin font-serif($weight: normal, $size: 14px, $lineHeight: 20px) {
font-family: "Georgia", Times New Roman, Times, serif;
font-size: $size;
font-weight: $weight;
line-height: $lineHeight;
}
@mixin font-monospace($weight: normal, $size: 12px, $lineHeight: 20px) {
font-family: "Monaco", Courier New, monospace;
font-size: $size;
font-weight: $weight;
line-height: $lineHeight;
}
// Grid System
.container {
width: $siteWidth;
margin: 0 auto;
@include clearfix;
}
@mixin columns($columnSpan: 1, $last: false) {
width: ($gridColumnWidth * $columnSpan) + ($gridGutterWidth * ($columnSpan - 1));
display: inline;
float: left;
@if $last {
margin-right: 0;
}
@else {
margin-right: $gridGutterWidth;
}
}
@mixin offset($columnOffset: 1) {
margin-left: ($gridColumnWidth * $columnOffset) + ($gridGutterWidth * ($columnOffset - 1)) + $extraSpace;
}
// Border Radius
@mixin border-radius($radius: 5px) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
border-radius: $radius;
}
// Drop shadows
@mixin box-shadow($shadow: 0 1px 3px rgba(0,0,0,.25)) {
-webkit-box-shadow: $shadow;
-moz-box-shadow: $shadow;
box-shadow: $shadow;
}
// Transitions
@mixin transition($transition) {
-webkit-transition: $transition;
-moz-transition: $transition;
transition: $transition;
}
// Background clipping
@mixin background-clip($clip) {
-webkit-background-clip: $clip;
-moz-background-clip: $clip;
background-clip: $clip;
}
// CSS3 Content Columns
@mixin content-columns($columnCount, $columnGap: 20px) {
-webkit-column-count: $columnCount;
-moz-column-count: $columnCount;
column-count: $columnCount;
-webkit-column-gap: $columnGap;
-moz-column-gap: $columnGap;
column-gap: $columnGap;
}
// Add an alphatransparency value to any background or border color (via Elyse Holladay)
@mixin translucent-background($color: $white, $alpha: 1) {
background-color: hsla(hue($color), saturation($color), lightness($color), $alpha);
}
@mixin translucent-border($color: $white, $alpha: 1) {
border-color: hsla(hue($color), saturation($color), lightness($color), $alpha);
background-clip: padding-box;
}
// Gradients
@mixin gradient-horizontal ($startColor: #555, $endColor: #333) {
background-color: $endColor;
background-repeat: repeat-x;
background-image: -khtml-gradient(linear, left top, right top, from($startColor), to($endColor)); // Konqueror
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, left top, right top, color-stop(0%, $startColor), color-stop(100%, $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
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$startColor}', endColorstr='#{$endColor}', GradientType=1); // IE9 and down
}
@mixin gradient-vertical ($startColor: #555, $endColor: #333) {
background-color: $endColor;
background-repeat: repeat-x;
background-image: -khtml-gradient(linear, left top, left bottom, from($startColor), to($endColor)); // Konqueror
background-image: -moz-linear-gradient(top, $startColor, $endColor); // FF 3.6+
background-image: -ms-linear-gradient(top, $startColor, $endColor); // IE10
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, $startColor), color-stop(100%, $endColor)); // Safari 4+, Chrome 2+
background-image: -webkit-linear-gradient(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
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$startColor}', endColorstr='#{$endColor}', GradientType=0); // IE9 and down
}
@mixin gradient-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
}
@mixin gradient-vertical-three-colors($startColor: #00b3ee, $midColor: #7a43b6, $colorStop: 50%, $endColor: #c3325f) {
background-color: $endColor;
background-repeat: no-repeat;
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($startColor, $midColor $colorStop, $endColor);
background-image: -ms-linear-gradient($startColor, $midColor $colorStop, $endColor);
background-image: -o-linear-gradient($startColor, $midColor $colorStop, $endColor);
background-image: linear-gradient($startColor, $midColor $colorStop, $endColor);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$startColor}', endColorstr='#{$endColor}', GradientType=0); // IE9 and down, gets no color-stop at all for proper fallback
}
// Gradient Bar Colors for buttons and allerts
@mixin gradient-bar($primaryColor, $secondaryColor) {
@include gradient-vertical($primaryColor, $secondaryColor);
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
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%);
}
// Shared colors for buttons and alerts
.btn,
.alert-message {
// Set text color
&.danger,
&.danger:hover,
&.error,
&.error:hover,
&.success,
&.success:hover,
&.info,
&.info:hover {
color: $white
}
// Danger and error appear as red
&.danger,
&.error {
@include gradient-bar(#ee5f5b, #c43c35);
}
// Success appears as green
&.success {
@include gradient-bar(#C0D966 - #111, #C0D966 - #222);
}
// Info appears as a neutral blue
&.info {
@include gradient-bar(#5bc0de, #339bb9);
}
}
// Reset filters for IE
@mixin reset-filter {
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
// Opacity
@mixin opacity($opacity: 100) {
filter: "alpha(opacity=#{$opacity})";
-khtml-opacity: $opacity / 100;
-moz-opacity: $opacity / 100;
opacity: $opacity / 100;
}