]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
rearranging everything
authorJacob Thornton <jacobthornton@gmail.com>
Wed, 4 May 2011 01:09:25 +0000 (18:09 -0700)
committerJacob Thornton <jacobthornton@gmail.com>
Wed, 4 May 2011 01:09:25 +0000 (18:09 -0700)
lib/baseline.less [new file with mode: 0644]
lib/bootstrap.less [new file with mode: 0644]
lib/docs.less [new file with mode: 0644]
lib/forms.less [new file with mode: 0644]
lib/patterns.less [new file with mode: 0644]
lib/reset.less [new file with mode: 0644]
lib/scaffolding.less [new file with mode: 0644]
lib/tables.less [new file with mode: 0644]
lib/type.less [new file with mode: 0644]

diff --git a/lib/baseline.less b/lib/baseline.less
new file mode 100644 (file)
index 0000000..8591cfe
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+  Master Stylesheet
+  This file is only for importing all required stylesheets for LESS to include and then compile.
+*/
+
+// CSS Reset
+@import "reset.less";
+
+// Core
+@import "bootstrap.less";
+@import "scaffolding.less";
+
+// Styled patterns and elements
+@import "type.less";
+@import "forms.less";
+@import "tables.less";
+@import "patterns.less";
+
+
+/* Add additional stylesheets below
+-------------------------------------------------- */
+
+// Documentation
+@import "docs.less";
\ No newline at end of file
diff --git a/lib/bootstrap.less b/lib/bootstrap.less
new file mode 100644 (file)
index 0000000..9e131a9
--- /dev/null
@@ -0,0 +1,211 @@
+/*
+  Bootstrap v1.1
+  Variables and mixins to bootstrap any new web development project. Modified from original version for Twitter Blueprint.
+*/
+
+
+/* Variables
+-------------------------------------------------- */
+
+// Links
+@link-color:        #0069d6;
+@link-hover-color:  darken(@link-color, 10);
+
+// Grays
+@white:             #fff;
+@gray-lighter:      #ccc;
+@gray-light:        #777;
+@gray:              #555;
+@gray-dark:         #333;
+@black:             #000;
+
+// Accent Colors
+@blue:              #08b5fb;
+@blue-dark:         #0069d6;
+@green:             #46a546;
+@red:               #9d261d;
+@yellow:            #ffc40d;
+@orange:            #f89406;
+@pink:              #c3325f;
+@purple:            #7a43b6;
+
+// Baseline grid
+@baseline:          20px;
+
+// Griditude
+@grid_columns:        16;
+@grid_column_width:   40px;
+@grid_gutter_width:   20px;
+@site_width:          (@grid_columns * @grid_column_width) + (@grid_gutter_width * (@grid_columns - 1));
+
+
+/* Mixins
+-------------------------------------------------- */
+
+// Clearfix for clearing floats like a boss
+.clearfix {
+  zoom: 1;
+       &:after {
+    display: block;
+    visibility: hidden;
+    height: 0;
+    clear: both;
+    content: ".";
+       }
+}
+
+// Floats
+.right {
+  float: right;
+}
+.left {
+  float: left;
+}
+
+// Input placeholder text
+.placeholder(@color: @gray-light) {
+  :-moz-placeholder {
+    color: @color;
+  }
+  ::-webkit-input-placeholder {
+    color: @color;
+  }
+}
+
+// Font Stacks
+.font(@weight: normal, @size: 14px, @lineheight: 20px) {
+  font-size: @size;
+  font-weight: @weight;
+  line-height: @lineheight;
+}
+.sans-serif(@weight: normal, @size: 14px, @lineheight: 20px) {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: @size;
+  font-weight: @weight;
+  line-height: @lineheight;
+}
+.serif(@weight: normal, @size: 14px, @lineheight: 20px) {
+  font-family: "Georgia", Times New Roman, Times, sans-serif;
+  font-size: @size;
+  font-weight: @weight;
+  line-height: @lineheight;
+}
+.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: @site_width;
+  margin: 0 auto;
+}
+.columns(@column_span: 1) {
+  display: inline;
+  float: left;
+  width: (@grid_column_width * @column_span) + (@grid_gutter_width * (@column_span - 1));
+  margin-left: @grid_gutter_width;
+  &:first-child {
+    margin-left: 0;
+  }
+}
+.offset(@column_offset: 1) {
+  margin-left: (@grid_column_width * @column_offset) + (@grid_gutter_width * (@column_offset - 1)) !important;
+}
+
+// Border Radius
+.border-radius(@radius: 5px) {
+  -moz-border-radius: @radius;
+  border-radius: @radius;
+}
+
+// Drop shadows
+.box-shadow(@shadow: 0 1px 3px rgba(0,0,0,.25)) {
+  -webkit-box-shadow: @shadow;
+  -moz-box-shadow: @shadow;
+  box-shadow: @shadow;
+}
+
+// Transitions
+.transition(@transition) {
+       -webkit-transition: @transition;
+       -moz-transition: @transition;
+       transition: @transition;
+}
+
+// CSS3 Content Columns
+.content-columns(@column_count, @column_gap: 20px) {
+       -webkit-column-count: @count;
+       -webkit-column-gap: @gap;
+       -moz-column-count: @count;
+       -moz-column-gap: @gap;
+       column-count: @count;
+       column-gap: @gap;
+}
+
+// Buttons
+.button(@color: #f9f9f9, @padding: 4px 14px, @text_color: #555, @text_shadow: 0 1px 0 rgba(255,255,255,.75), @font_size: 13px, @border_color: rgba(0,0,0,.1), @rounded: 4px) {
+  display: inline-block;
+  #gradient > .vertical-three-colors(@color, @color, 0.25, darken(@color, 10%));
+  padding: @padding;
+  text-shadow: @text_shadow;
+  color: @text_color;
+  line-height: @baseline;
+  border: 1px solid @border_color;
+  border-bottom-color: fadein(@border_color, 15%);
+  .border-radius(@rounded);
+  @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.1);
+  .box-shadow(@shadow);
+  cursor: pointer;
+  &:hover {
+    background-position: 0 -15px;
+    color: darken(@text_color, 10%);
+    text-decoration: none;
+  }
+}
+
+// Add an alphatransparency value to any background or border color (via Elyse Holladay)
+#translucent {
+  .background(@color: @white, @alpha: 1) {
+    background-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
+       }
+       .border(@color: @white, @alpha: 1) {
+               border-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
+               background-clip: padding-box;
+       }
+}
+
+// Gradients
+#gradient {
+  .horizontal(@startColor: #555, @endColor: #333) {
+    background-color: @endColor;
+    background-repeat: no-repeat;
+    background-image: -webkit-gradient(linear, left top, right top, from(@startColor), to(@endColor));
+    background-image: -webkit-linear-gradient(right center, @startColor, @endColor);
+    background-image: -moz-linear-gradient(right center, @startColor, @endColor);
+    background-image: -o-linear-gradient(left,  @startColor,  @endColor);
+    background-image: -khtml-gradient(linear, left top, right top, from(@startColor), to(@endColor));
+    filter: e(%("progid:DXImageTransform.Microsoft.Gradient(StartColorStr='%d', EndColorStr='%d', GradientType=1)",@startColor,@endColor));
+    -ms-filter: %("progid:DXImageTransform.Microsoft.gradient(startColorStr='%d', EndColorStr='%d', GradientType=1))",@startColor,@endColor);
+  }
+  .vertical(@startColor: #555, @endColor: #333) {
+    background-color: @endColor;
+    background-repeat: no-repeat;
+    background-image: -webkit-gradient(linear, left top, left bottom, from(@startColor), to(@endColor));
+    background-image: -webkit-linear-gradient(@startColor, @endColor);
+    background-image: -moz-linear-gradient(@startColor, @endColor);
+    background-image: -o-linear-gradient(top,  @startColor,  @endColor);
+    background-image: -khtml-gradient(linear, left top, left bottom, from(@startColor), to(@endColor));
+    filter: e(%("progid:DXImageTransform.Microsoft.Gradient(StartColorStr='%d', EndColorStr='%d', GradientType=0)",@startColor,@endColor));
+    -ms-filter: %("progid:DXImageTransform.Microsoft.gradient(startColorStr='%d', EndColorStr='%d', GradientType=0))",@startColor,@endColor);
+  }
+  .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 0.5, @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, color-stop(@colorStop, @midColor), @endColor);
+    background-image: -moz-linear-gradient(@startColor, color-stop(@midColor, @colorStop), @endColor);
+  }
+}
diff --git a/lib/docs.less b/lib/docs.less
new file mode 100644 (file)
index 0000000..84e8af2
--- /dev/null
@@ -0,0 +1,200 @@
+/*
+  Baseline's documentation styles
+  Special styles for presenting Baseline's documentation and examples
+*/
+
+
+/* Body and structure
+-------------------------------------------------- */
+
+// Give us a gradient background
+body {
+  #gradient > .vertical-three-colors(#eee, #fff, 0.15, #fff);
+  background-attachment: fixed;
+  background-position: 0 40px;
+  position: relative;
+}
+
+// Give us some love on HTML5 elements (hardly use these in Basline thus far though)
+header,
+section,
+footer,
+article,
+aside {
+  display: block;
+}
+
+// Break up sections
+section {
+  padding-top: @baseline * 4;
+  margin-bottom: @baseline * -2;
+}
+
+// Blueprint-style header and footer
+#masthead,
+#footer {
+  #gradient > .vertical(darken(@blue-dark, 7.5%), darken(@blue, 7.5%));
+  div.inner {
+    background: transparent url(assets/img/grid-20px.png) 0 -1px;
+    padding: 40px 0;
+    .box-shadow(inset 0 10px 30px rgba(0,0,0,.25));
+  }
+  h1, p, small {
+    color: #fff;
+    text-shadow: 0 2px 0 rgba(0,0,0,.25);
+  }
+}
+#masthead {
+  margin-top: @baseline * 2;
+  margin-bottom: @baseline * -2;
+  h1 {
+    margin-bottom: 0;
+  }
+  p.lead {
+    .font(300,20px,30px);
+    margin: 5px 0;
+  }
+  a.btn {
+    #gradient > .vertical(@purple, darken(@purple, 15%));
+    display: block;
+    margin-bottom: 20px;
+    padding-top: 5px;
+    padding-bottom: 5px;
+    text-align: center;
+    border: 0;
+    @shadow: inset 0 1px 0 rgba(255,255,255,.25), inset 0 -1px 0 rgba(0,0,0,.25), 0 1px 2px rgba(0,0,0,.4);
+    .box-shadow(@shadow);
+    .transition(all .2s linear);
+  }
+  small {
+    display: block;
+    text-align: center;
+    font-size: 13px;
+    line-height: @baseline;
+    color: rgba(255,255,255,.5);
+    a {
+      color: #fff;
+    }
+  }
+}
+
+// Page footer
+#footer {
+  margin-top: @baseline * 4;
+  p {
+    margin-bottom: 0;
+  }
+}
+
+
+/* Special grid styles
+-------------------------------------------------- */
+
+.show-grid {
+  margin-top: 20px;
+  margin-bottom: 20px;
+  .column,
+  .columns {
+    background: rgba(0,0,0,.1);
+    text-align: center;
+    .border-radius(3px);
+    height: 30px;
+    line-height: 30px;
+  }
+  &:hover {
+    .column,
+    .columns {
+      background: rgba(0,0,0,.25);
+    }
+  }
+}
+
+
+/* Hashgrid.js grid (press G & H to view)
+-------------------------------------------------- */
+
+#grid {
+  width: 980px;
+  position: absolute;
+  top: 0;
+  left: 50%;
+  margin-left: -490px;
+}
+#grid div.vert {
+  #translucent > .background(#00CED1, .075);
+  width: 39px;
+  border: solid darkturquoise;
+  border-width: 0 1px;
+  margin-right: 19px;
+}
+#grid div.vert.first-line {
+  margin-left: 19px;
+}
+#grid div.horiz {
+  height: @baseline - 1;
+  border-bottom: 1px solid rgba(255,0,0,.1);
+  margin: 0;
+  padding: 0;
+  &:nth-child(5n) {
+    border-color: rgba(255,0,0,.25);
+  }
+}
+
+
+
+/* Render mini layout previews
+-------------------------------------------------- */
+
+div.mini-layout {
+  height: 340px;
+  margin-bottom: @baseline;
+  padding: 9px;
+  border: 1px solid rgba(0,0,0,.25);
+  .border-radius(6px);
+  .box-shadow(0 1px 3px rgba(0,0,0,.125));
+  // Default mini layout (fixed container)
+  div {
+    .border-radius(3px);
+    &.mini-layout-body {
+      background-color: rgba(141,192,219,.25);
+      margin: 0 auto;
+      width: 450px;
+      height: 340px;
+    }
+  }
+  // Fluid layout (sidebar)
+  &.fluid {
+    div.mini-layout-sidebar,
+    div.mini-layout-header,
+    div.mini-layout-body {
+      float: left;
+    }
+    div.mini-layout-sidebar {
+      background-color: rgba(141,192,219,.5);
+      width: 90px;
+      height: 340px;
+    }
+    div.mini-layout-body {
+      width: 400px;
+      margin-left: 10px;
+    }
+  }
+}
+
+
+
+/* Topbar special styles
+-------------------------------------------------- */
+
+div.topbar-wrapper {
+  position: relative;
+  height: 40px;
+  margin: 5px 0 15px;
+  div.topbar {
+    position: absolute;
+    margin: 0 -20px;
+    padding-left: 20px;
+    padding-right: 20px;
+    .border-radius(4px);
+  }
+}
diff --git a/lib/forms.less b/lib/forms.less
new file mode 100644 (file)
index 0000000..59dae92
--- /dev/null
@@ -0,0 +1,336 @@
+/*
+  Forms
+  Base line styles for various input types, form layouts, and states
+*/
+
+
+/* Global form styles
+-------------------------------------------------- */
+
+form {
+  margin-bottom: @baseline;
+  // Groups of fields with labels on top (legends)
+  fieldset {
+    margin-bottom: @baseline;
+    padding-top: @baseline;
+    legend {
+      display: block;
+      margin-left: 150px;
+      font-size: 20px;
+      line-height: 1;
+      color: @gray-dark;
+    }
+  }
+  // Parent element that clears floats and wraps labels and fields together
+  div.clearfix {
+    margin-bottom: @baseline;
+  }
+  // Set font for forms
+  label, input, select, textarea {
+    .sans-serif(normal,13px,normal);
+  }
+  // Float labels left
+  label {
+    padding-top: 6px;
+    font-size: 13px;
+    line-height: 18px;
+    float: left;
+    width: 130px;
+    text-align: right;
+  }
+  // Shift over the inside div to align all label's relevant content
+  div.input {
+    margin-left: 150px;
+  }
+  // Checkboxs and radio buttons
+  input[type=checkbox],
+  input[type=radio] {
+    cursor: pointer;
+  }
+  // Inputs, Textareas, Selects
+  input[type=text],
+  input[type=password],
+  textarea,
+  select,
+  .uneditable-input {
+    display: block;
+    width: 210px;
+    margin: 0;
+    padding: 4px;
+    font-size: 13px;
+    line-height: @baseline;
+    height: @baseline;
+    color: @gray;
+    border: 1px solid #bbb;
+    .border-radius(3px);
+  }
+  select,
+  input[type=file] {
+    height: @baseline * 1.5;
+    line-height: @baseline * 1.5;
+  }
+  textarea {
+    height: auto;
+  }
+  .uneditable-input {
+    background-color: #eee;
+    display: block;
+    border-color: #ccc;
+    .box-shadow(inset 0 1px 2px rgba(0,0,0,.075));
+  }
+  // Focus states
+  input[type=text], 
+  input[type=password], 
+  select, textarea {
+    @transition: border linear .2s, box-shadow linear .2s;
+    .transition(@transition);
+  }
+  input[type=text]:focus, 
+  input[type=password]:focus, 
+  textarea:focus {
+    outline: none;
+    border-color: rgba(82,168,236,.75);
+    .box-shadow(0 0 8px rgba(82,168,236,.5));
+  }
+  // Error styles
+  div.error {
+    background: lighten(@red, 57%);
+    padding: 10px 0;
+    margin: -10px 0 10px;
+    .border-radius(4px);
+    @error-text: desaturate(lighten(@red, 25%), 25%);
+    > label {
+      color: @red;
+    }
+    input[type=text], 
+    input[type=password], 
+    textarea {
+      border-color: @error-text;
+      .box-shadow(0 0 3px rgba(171,41,32,.25));
+      &:focus {
+        border-color: darken(@error-text, 10%);
+        .box-shadow(0 0 6px rgba(171,41,32,.5));
+      }
+    }
+    div.input-prepend,
+    div.input-append {
+      span.add-on {
+        background: lighten(@red, 50%);
+        border-color: @error-text;
+        color: darken(@error-text, 10%);
+      }
+    }
+  }
+  // Form element sizes
+  .input-mini, input.mini, textarea.mini, select.mini {
+    width: 60px;
+  }
+  .input-small, input.small, textarea.small, select.small {
+    width: 90px;
+  }
+  .input-medium, input.medium, textarea.medium, select.medium {
+    width: 150px;
+  }
+  .input-large, input.large, textarea.large, select.large {
+    width: 210px;
+  }
+  .input-xlarge, input.xlarge, textarea.xlarge, select.xlarge {
+    width: 270px;
+  }
+  .input-xxlarge, input.xxlarge, textarea.xxlarge, select.xxlarge {
+    width: 530px;
+  }
+  textarea.xxlarge {
+    overflow-y: scroll;
+  }
+  // Turn off focus for disabled (read-only) form elements
+  input[readonly]:focus,
+  textarea[readonly]:focus,
+  input.disabled {
+    background: #f5f5f5;
+    border-color: #ddd;
+    .box-shadow(none);
+  }
+}
+
+// Actions (the buttons)
+div.actions {
+  background: #f5f5f5;
+  margin-top: @baseline;
+  margin-bottom: @baseline;
+  padding: (@baseline - 1) 20px @baseline 150px;
+  border-top: 1px solid #ddd;
+  .border-radius(0 0 3px 3px);
+  div.secondary-action {
+    float: right;
+    a {
+      line-height: 30px;
+      &:hover {
+        text-decoration: underline;
+      }
+    }
+  }
+}
+
+// Help Text
+.help-inline,
+.help-block {
+  font-size: 12px;
+  line-height: @baseline;
+  color: @gray-light;
+}
+.help-inline {
+  padding-left: 5px;
+}
+// Big blocks of help text
+.help-block {
+  display: block;
+  max-width: 600px;
+  h5, p, ol li {
+    color: @gray;
+  }
+  p, ol li {
+    font-size: 12px;
+  }
+  p {
+    margin-bottom: 0;
+    font-size: 12px;
+    line-height: @baseline;
+    color: @gray-light;
+  }
+  ol {
+    margin-bottom: 10px;
+    margin-left: 25px;
+  }
+}
+
+// Inline Fields (input fields that appear as inline objects
+div.inline-inputs {
+  color: @gray;
+  span, input[type=text] {
+    display: inline-block;
+  }
+  input.mini {
+    width: 60px;
+  }
+  input.small {
+    width: 90px;
+  }
+  span {
+    padding: 0 2px 0 1px;
+  }
+}
+
+// Allow us to put symbols and text within the input field for a cleaner look
+div.input-prepend,
+div.input-append {
+  input[type=text] {
+    .border-radius(0 3px 3px 0);
+  }
+  .add-on {
+    background: #f5f5f5;
+    float: left;
+    display: block;
+    width: auto;
+    min-width: 16px;
+    padding: 5px 4px 5px 5px;
+    color: @gray-light;
+    font-weight: normal;
+    line-height: 18px;
+    height: 18px;
+    text-align: center;
+    text-shadow: 0 1px 0 #fff;
+    border: 1px solid #bbb;
+    border-right-width: 0;
+    .border-radius(3px 0 0 3px);
+  }
+  .active {
+    background: lighten(@green, 30);
+    border-color: @green;
+  }
+}
+div.input-append {
+  input[type=text] {
+    float: left;
+    .border-radius(3px 0 0 3px);
+  }
+  .add-on {
+    .border-radius(0 3px 3px 0);
+    border-right-width: 1px;
+    border-left-width: 0;
+  }
+}
+
+// Stacked options for forms (radio buttons or checkboxes)
+ul.inputs-list {
+  margin: 0 0 5px;
+  width: 100%;
+  li {
+    display: block;
+    padding: 0;
+    width: 100%;
+    label {
+      display: block;
+      float: none;
+      width: auto;
+      padding: 0;
+      line-height: @baseline;
+      text-align: left;
+      white-space: normal;
+      strong {
+        color: @gray;
+      }
+      small {
+        font-size: 12px;
+        font-weight: normal !important;
+      }
+    }
+    ul.inputs-list {
+      margin-left: 25px;
+      margin-bottom: 10px;
+      padding-top: 0;
+    }
+    &:first-child {
+      padding-top: 5px;
+    }
+  }
+  input[type=radio],
+  input[type=checkbox] {
+    margin-bottom: 0;
+  }
+}
+
+// Stacked forms
+form.form-stacked {
+  fieldset {
+    padding-top: @baseline / 2;
+  }  
+  legend {
+    margin-left: 0;
+  }
+  label {
+    display: block;
+    float: none;
+    width: auto;
+    font-weight: bold;
+    text-align: left;
+    line-height: 20px;
+    padding-top: 0;
+  }
+  div.clearfix {
+    margin-bottom: @baseline / 2;
+    div.input {
+      margin-left: 0;
+    }
+  }
+  ul.inputs-list {
+    margin-bottom: 0;
+    li {
+      padding-top: 0;
+      label {
+        font-weight: normal;
+        padding-top: 0;
+      }
+    }
+  }
+}
diff --git a/lib/patterns.less b/lib/patterns.less
new file mode 100644 (file)
index 0000000..ddad527
--- /dev/null
@@ -0,0 +1,526 @@
+/*
+       Patterns.less
+       Repeatable UI elements outside the base styles provided from the scaffolding
+*/
+
+
+/* Top bar
+-------------------------------------------------- */
+
+/*
+div.topbar {
+  #gradient > .vertical(#333, #222);
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  z-index: 1000;
+  height: 40px;
+  .box-shadow(0 1px 3px rgba(0,0,0,.5));
+  a {
+    color: #999;
+    &:hover {
+      color: @white;
+      text-decoration: none;
+      background-color: rgba(255,255,255,.05);
+    }
+  }
+  a.logo,
+  ul li a {
+    float: left;
+    padding: 0 10px;
+    line-height: 40px;
+    text-shadow: 0 -1px 0 rgba(0,0,0,.25);
+  }
+  // Logo
+  a.logo {
+    margin-left: -10px;
+    margin-right: 10px;
+    color: @gray-light;
+    font-size: 20px;
+    font-weight: 200;
+    img {
+      float: left;
+      margin-top: 9px;
+      margin-right: 6px;
+    }
+    &:hover {
+      color: @white;
+    }
+  }
+  // Nav items
+  ul {
+    float: left;
+    margin: 0;
+    li {
+      display: inline;
+      &.active a {
+        color: #fff;
+        background-color: rgba(0,0,0,.5);
+      }
+    }
+  }
+}
+*/
+
+// Topbar for Branding and Nav
+div.topbar {
+  #gradient > .vertical(#333, #222);
+  height: 40px;
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  z-index: 100;
+  overflow: visible;
+  @shadow: 0 1px 3px rgba(0,0,0,.25), inset 0 -1px 0 rgba(0,0,0,.1);
+  .box-shadow(@shadow);
+  // Links get text shadow
+  a {
+    color: @gray-light;
+    text-shadow: 0 -1px 0 rgba(0,0,0,.25);
+    .transition(all linear .1s);
+  }
+  // Hover and active states for links
+  ul li a:hover,
+  ul li.active a,
+  a.logo:hover {
+    background-color: #333;
+    background-color: rgba(255,255,255,.15);
+    color: @white;
+    text-decoration: none;
+  }
+  // Logo
+  a.logo {
+    float: left;
+    display: block;
+    padding: 8px 20px 12px;
+    margin-left: -20px;
+    color: @white;
+    font-size: 20px;
+    font-weight: 200;
+    line-height: 1;
+    img {
+      display: inline;
+      float: left;
+      margin-right: 6px;
+    }
+  }
+  // Search Form
+  form {
+    float: left;
+    margin: 4px 0 0 0;
+    opacity: 1;
+    position: relative;
+    input {
+      background-color: @gray-light;
+      background-color: rgba(255,255,255,.3);
+      .sans-serif(13px, normal, 1);
+      width: 220px;
+      padding: 4px 9px;
+      color: #fff;
+      color: rgba(255,255,255,.75);
+      border: 1px solid #111;
+      .border-radius(4px);
+      @shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0px rgba(255,255,255,.25);
+      .box-shadow(@shadow);
+      .transition(none);
+      // Placeholder text gets special styles; can't be bundled together though for some reason
+      &:-moz-placeholder {
+        color: @gray-lighter;
+      }
+      &::-webkit-input-placeholder {
+        color: @gray-lighter;
+      }
+      &:hover {
+        background-color: #444;
+        background-color: rgba(255,255,255,.5);
+        color: #fff;
+      }
+      &:focus,
+      &.focused {
+        outline: none;
+        background-color: #fff;
+        color: @gray-dark;
+        text-shadow: 0 1px 0 #fff;
+        border: 0;
+        padding: 5px 10px;
+        .box-shadow(0 0 3px rgba(0,0,0,.15));
+      }
+    }
+  }
+  // Navigation
+  ul {
+    display: block;
+    float: left;
+    margin: 0 10px 0 0;
+    &.secondary-nav {
+      float: right;
+      margin-left: 10px;
+      margin-right: 0;
+    }
+    li {
+      display: block;
+      float: left;
+      font-size: 13px;
+      a {
+        display: block;
+        float: none;
+        padding: 10px 10px 11px;
+        line-height: 19px;
+        text-decoration: none;
+        &:hover {
+          color: #fff;
+          text-decoration: none;
+        }
+      }
+      &.active a {
+        background-color: #222;
+        background-color: rgba(0,0,0,.5);
+        font-weight: bold;
+      }
+      // Vertical rule
+      &.vr {
+        border-left: 1px solid #008db8;
+        border-right: 1px solid #00a0d1;
+        height: 26px;
+        margin: 6px 3px 1px 3px;
+      }
+    }
+    // Dropdowns
+    &.primary-nav li ul {
+      left: 0;
+    }
+    &.secondary-nav li ul {
+      right: 0;
+    }
+    li.menu {
+      position: relative;
+      a.menu {
+        &:after {
+          width: 7px;
+          height: 7px;
+          display: inline-block;
+          background: transparent url(assets/img/dropdown-arrow.gif) no-repeat top center;
+          content: "&darr;";
+          text-indent: -99999px;
+          vertical-align: top;
+          margin-top: 8px;
+          margin-left: 4px;
+          opacity: .5;
+        }
+      }
+      &.open {
+        a.menu,
+        a:hover {
+          background-color: lighten(#00a0d1,5);
+          background-color: rgba(255,255,255,.1);
+          color: #fff;
+        }
+        ul {
+          display: block;
+          li {
+            a {
+              background-color: transparent;
+              font-weight: normal;
+              &:hover {
+                background-color: rgba(255,255,255,.1);
+                color: #fff;
+              }
+            }
+            &.active a {
+              background-color: rgba(255,255,255,.1);
+              font-weight: bold;
+            }
+          }
+        }
+      }
+    }
+    li ul {
+      background-color: #333;
+      float: left;
+      display: none;
+      position: absolute;
+      top: 40px;
+      min-width: 160px;
+      max-width: 220px;
+      _width: 160px;
+      margin-left: 0;
+      margin-right: 0;
+      padding: 0;
+      text-align: left;
+      border: 0;
+      zoom: 1;
+      .border-radius(0 0 5px 5px);
+      .box-shadow(0 1px 2px rgba(0,0,0,0.6));
+      li {
+        float: none;
+        clear: both;
+        display: block;
+        background: none;
+        font-size: 12px;
+        a {
+          display: block;
+          padding: 6px 15px;
+          clear: both;
+          font-weight: normal;
+          line-height: 19px;
+          color: #bbb;
+          &:hover {
+            background-color: #333;
+            background-color: rgba(255,255,255,.25);
+            color: #fff;
+          }
+        }
+        // Dividers (basically an hr)
+        &.divider {
+          height: 1px;
+          overflow: hidden;
+          background: rgba(0,0,0,.2);
+          border-bottom: 1px solid rgba(255,255,255,.1);
+          margin: 5px 0;
+        }
+        // Section separaters
+        span {
+          clear: both;
+          display: block;
+          background: rgba(0,0,0,.2);
+          padding: 6px 15px;
+          cursor: default;
+          color: #666;
+          border-top: 1px solid rgba(0,0,0,.2);
+        }
+      }
+    }
+  }
+}
+
+/* Page Headers
+-------------------------------------------------- */
+
+div.page-header {
+  margin-bottom: @baseline - 1;
+  border-bottom: 1px solid #ddd;
+  .border-radius(6px 6px 0 0);
+  .box-shadow(0 1px 0 rgba(255,255,255,.5));
+  h1 {
+    margin-bottom: 0;
+  }
+}
+
+
+/* Error Styles
+-------------------------------------------------- */
+
+// One-liner alert bars
+div.alert-message {
+  #gradient > .vertical(transparent, rgba(0,0,0,0.15));
+  background-color: @gray-lighter;
+  margin-bottom: @baseline;
+  padding: 10px 15px 9px;
+  .border-radius(6px);
+  color: #fff;
+  border-bottom: 1px solid rgba(0,0,0,.25);
+  text-shadow: 0 -1px 0 rgba(0,0,0,.25);
+  p {
+    color: #fff;
+    margin-bottom: 0;
+    + p {
+      margin-top: 5px;
+    }
+  }
+  &.error {
+    background-color: lighten(@red, 25%);
+  }
+  &.warning {
+    background-color: lighten(@yellow, 15%);
+  }
+  &.success {
+    background-color: lighten(@green, 15%);
+  }
+  &.info {
+    background-color: lighten(@blue, 15%);
+  }
+  a.close {
+    float: right;
+    margin-top: -2px;
+    opacity: .5;
+    color: #fff;
+    font-size: 20px;
+    font-weight: bold;
+    text-shadow: 0 1px 0 rgba(0,0,0,.5);
+    .border-radius(3px);
+    &:hover {
+      opacity: 1;
+      text-decoration: none;
+    }
+  }
+}
+
+// Block-level Alerts
+div.block-message {
+  margin-bottom: @baseline;
+  padding: 14px 19px;
+  color: #333;
+  color: rgba(0,0,0,.8);
+  text-shadow: 0 1px 0 rgba(255,255,255,.25);
+  .border-radius(6px);
+  p {
+    font-size: 13px;
+    line-height: 18px;
+    color: #333;
+    color: rgba(0,0,0,.8);
+    margin-right: 30px;
+    margin-bottom: 0;
+  }
+  ul {
+    margin-bottom: 0;
+  }
+  strong {
+    display: block;
+  }
+  a.close {
+    display: block;
+    color: #333;
+    color: rgba(0,0,0,.5);
+    text-shadow: 0 1px 1px rgba(255,255,255,.75);
+  }
+  &.error {
+    background: lighten(@red, 55%);
+    border: 1px solid lighten(@red, 50%);
+  }
+  &.warning {
+    background: lighten(@yellow, 35%);
+    border: 1px solid lighten(@yellow, 25%)
+  }
+  &.success {
+    background: lighten(@green, 45%);
+    border: 1px solid lighten(@green, 35%)
+  }
+  &.info {
+    background: lighten(@blue, 45%);
+    border: 1px solid lighten(@blue, 40%);
+  }
+}
+
+
+/* Navigation
+-------------------------------------------------- */
+
+// Common tab and pill styles
+ul.tabs,
+ul.pills {
+  margin: 0 0 20px;
+  padding: 0;
+  .clearfix();
+  li {
+    display: inline;
+    a {
+      display: inline;
+      float: left;
+      width: auto;
+    }
+  }
+}
+// Basic Tabs
+ul.tabs {
+  width: 100%;
+  border-bottom: 1px solid #ccc;
+  li {
+    a {
+      margin-bottom: -1px;
+      margin-right: 2px;
+      padding: 0 15px;
+      line-height: (@baseline * 2) - 1;
+      .border-radius(3px 3px 0 0);
+      &:hover {
+        background: #f5f5f5;
+        border-bottom: 1px solid #ccc;
+      }
+    }
+    &.active a {
+      background: #fff;
+      padding: 0 14px;
+      border: 1px solid #ccc;
+      border-bottom: 0;
+      color: @gray;
+    }
+  }
+}
+// Basic pill nav
+ul.pills {
+  li {
+    a {
+      margin: 5px 3px 5px 0;
+      padding: 0 15px;
+      text-shadow: 0 1px 1px #fff;
+      line-height: 30px;
+      .border-radius(15px);
+      &:hover {
+        background: @link-hover-color;
+        color: #fff;
+        text-decoration: none;
+        text-shadow: 0 1px 1px rgba(0,0,0,.25);
+      }
+    }
+    &.active a {
+      background: @link-color;
+      color: #fff;
+      text-shadow: 0 1px 1px rgba(0,0,0,.25);
+    }
+  }
+}
+
+
+/* Pagination
+-------------------------------------------------- */
+
+div.pagination {
+  height: @baseline * 2;
+  margin: @baseline 0;
+  ul {
+    float: left;
+    margin: 0;
+    border: 1px solid rgba(0,0,0,.15);
+    .border-radius(3px);
+    .box-shadow(0 1px 2px rgba(0,0,0,.075);
+    li {
+      display: inline;
+      a {
+        display: inline;
+        float: left;
+        padding: 0 14px;
+        line-height: (@baseline * 2) - 2;
+        border-right: 1px solid rgba(0,0,0,.15);
+        text-decoration: none;
+      }
+      a:hover,
+      &.active a {
+        background-color: lighten(@blue, 45%);
+      }
+      &.disabled a,
+      &.disabled a:hover {
+        background-color: none;
+        color: @gray-light;
+      }
+      &.next a,
+      &:last-child a {
+        border: 0;
+      }
+    }
+  }
+}
+
+
+/* Wells
+-------------------------------------------------- */
+
+div.well {
+  background: #f5f5f5;
+  margin-bottom: 20px;
+  padding: 19px;
+  min-height: 20px;
+  border: 1px solid #ddd;
+  .border-radius(4px);
+  .box-shadow(inset 0 1px 1px rgba(0,0,0,.075);
+}
diff --git a/lib/reset.less b/lib/reset.less
new file mode 100644 (file)
index 0000000..af9a89f
--- /dev/null
@@ -0,0 +1,16 @@
+/*--------------------------------------------------
+
+  Global Reset
+  
+       Props to Eric Meyer (meyerweb.com) for his CSS
+       reset file. We're using an adapted version here
+       that cuts out some of the reset HTML elements we
+       will never need here (i.e., dfn, samp, etc).
+
+-------------------------------------------------- */
+
+       html, body { margin: 0; padding: 0; }
+       h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, cite, code, del, dfn, em, img, q, s, samp, small, strike, strong, sub, sup, tt, var, dd, dl, dt, li, ol, ul, fieldset, form, label, legend, button, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; font-weight: normal; font-style: normal; font-size: 100%; line-height: 1; font-family: inherit; }
+       table { border-collapse: collapse; border-spacing: 0; }
+       ol, ul { list-style: none; }
+       q:before, q:after, blockquote:before, blockquote:after { content: ""; }
\ No newline at end of file
diff --git a/lib/scaffolding.less b/lib/scaffolding.less
new file mode 100644 (file)
index 0000000..fc920ab
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+       Scaffolding
+       Basic and global styles for generating a grid system, structural layout, and page templates
+*/
+
+/* Baseline Grid System
+-------------------------------------------------- */
+
+div.row {
+  .clearfix();
+  div.span1   { .columns(1); }
+  div.span2   { .columns(2); }
+  div.span3   { .columns(3); }
+  div.span4   { .columns(4); }
+  div.span5   { .columns(5); }
+  div.span6   { .columns(6); }
+  div.span7   { .columns(7); }
+  div.span8   { .columns(8); }
+  div.span9   { .columns(9); }
+  div.span10  { .columns(10); }
+  div.span11  { .columns(11); }
+  div.span12  { .columns(12); }
+  div.span13  { .columns(13); }
+  div.span14  { .columns(14); }
+  div.span15  { .columns(15); }
+  div.span16  { .columns(16); }
+}
+
+
+/* Structural Layout
+-------------------------------------------------- */
+
+html, body {
+  background-color: #fff;
+}
+body {
+  margin: 0;
+  .sans-serif(normal,14px,20px);
+  color: @gray;
+  text-rendering: optimizeLegibility;
+  .box-shadow(inset 0 1px 0 #fff);
+}
+
+// Container (centered, fixed-width layouts)
+div.container {
+  width: 940px;
+  margin: 0 auto;
+}
+
+// Fluid layouts (left aligned, with sidebar, min- & max-width content)
+div.container-fluid {
+  padding: 20px;
+  .clearfix();
+  div.sidebar {
+    float: left;
+    width: 220px;
+  }
+  div.content {
+    min-width: 700px;
+    max-width: 1180px;
+    margin-left: 240px;
+  }
+}
+
+
+/* Base Styles
+-------------------------------------------------- */
+
+// Links
+a {
+  color: @link-color;
+  text-decoration: none;
+  line-height: inherit;
+  &:hover {
+    color: @link-hover-color;
+    text-decoration: underline;
+  }
+}
+
+// Buttons
+.btn {
+  .button();
+  &.primary {
+    #gradient > .vertical(@blue, @blue-dark);
+    color: #fff;
+    text-shadow: 0 -1px 0 rgba(0,0,0,.25);
+    &:hover {
+      color: #fff;
+    }
+  }
+  &.large {
+    font-size: 16px;
+    line-height: 30px;
+    .border-radius(6px);
+  }
+  &.small {
+    padding-right: 9px;
+    padding-left: 9px;
+    font-size: 11px;
+    line-height: 16px;
+  }
+}
+// Help Firefox not be a douche about adding extra padding to buttons
+button.btn,
+input[type=submit].btn {
+  &::-moz-focus-inner {
+       padding: 0;
+       border: 0;
+  }
+}
diff --git a/lib/tables.less b/lib/tables.less
new file mode 100644 (file)
index 0000000..4f9098c
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+  Tables
+*/
+
+
+/* Baseline styles
+-------------------------------------------------- */
+
+table {
+  width: 100%;
+  margin-bottom: @baseline;
+  padding: 0;
+  text-align: left;
+  border-collapse: separate;
+  th, td {
+    // #translucent > .background(@green, .15);
+    padding: 10px 10px 9px;
+    line-height: @baseline;
+    vertical-align: middle;
+    border-bottom: 1px solid #ddd;
+  }
+  th {
+    padding-top: 9px;
+    font-weight: bold;
+    border-bottom-width: 2px;
+  }
+}
+
+
+/* Zebra-striping
+-------------------------------------------------- */
+
+// Default zebra-stripe styles (alternating gray and transparent backgrounds)
+table.zebra-striped {
+  tbody {
+    tr:nth-child(odd) td {
+      background-color: #f5f5f5;
+    }
+    tr:hover td {
+      background-color: #f1f1f1;
+    }
+  }
+  // Tablesorting styles w/ jQuery plugin
+  th.header { // For tablesorter tables, make THs have a pointer on hover
+    cursor: pointer;
+    padding-right: 20px;
+  }
+  th.headerSortUp,
+  th.headerSortDown { // Style the sorted column headers (THs)
+    background-image: url(assets/img/tablesorter-indicators.png);
+    background-position: right -23px;
+    background-repeat: no-repeat;
+    background-color: rgba(141,192,219,.25);
+    .border-radius(3px 3px 0 0);
+    text-shadow: 0 1px 1px rgba(255,255,255,.75);
+  }
+  th.header:hover { // Style the ascending (reverse alphabetical) column header
+    background-image: url(assets/img/tablesorter-indicators.png);
+    background-position: right 15px;
+    background-repeat: no-repeat;
+  }
+  th.actions:hover {
+    background-image: none !important;
+  }
+  th.headerSortDown,
+  th.headerSortDown:hover { // Style the descending (alphabetical) column header
+    background-position: right -25px;
+  }
+  th.headerSortUp,
+  th.headerSortUp:hover { // Style the ascending (reverse alphabetical) column header
+    background-position: right -65px;
+  }
+  // Blue Table Headings
+  th.blue {
+    color: @blue;
+    border-bottom-color: @blue;
+  }
+  th.headerSortUp.blue, th.headerSortDown.blue {
+    background-color: lighten(@blue, 40%);
+  }
+  // Green Table Headings
+  th.green {
+    color: @green;
+    border-bottom-color: @green;
+  }
+  th.headerSortUp.green, th.headerSortDown.green { // backround color is 20% of border color
+    background-color: lighten(@green, 40%);
+  }
+  // Red Table Headings
+  th.red {
+    color: @red;
+    border-bottom-color: @red;
+  }
+  th.headerSortUp.red, th.headerSortDown.red { // backround color is 20% of border color
+    background-color: lighten(@red, 50%);
+  }
+  // Yellow Table Headings
+  th.yellow {
+    color: @yellow;
+    border-bottom-color: @yellow;
+  }
+  th.headerSortUp.yellow, th.headerSortDown.yellow { // backround color is 20% of border color
+    background-color: lighten(@yellow, 40%);
+  }
+  // Orange Table Headings
+  th.orange {
+    color: @orange;
+    border-bottom-color: @orange;
+  }
+  th.headerSortUp.orange, th.headerSortDown.orange { // backround color is 20% of border color
+    background-color: lighten(@orange, 40%);
+  }
+  // Purple Table Headings
+  th.purple {
+    color: @purple;
+    border-bottom-color: @purple;
+  }
+  th.headerSortUp.purple, th.headerSortDown.purple { // backround color is 20% of border color
+    background-color: lighten(@purple, 40%);
+  }
+}
diff --git a/lib/type.less b/lib/type.less
new file mode 100644 (file)
index 0000000..cc1f082
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+       Typography
+       Headings, body text, lists, code, and more for a versatile and durable typography system
+*/
+
+
+/* Body text
+-------------------------------------------------- */
+
+p {
+  .font(normal,14px,@baseline);
+  margin-bottom: @baseline;
+  small {
+    font-size: 12px;
+    color: @gray-light;
+  }
+}
+
+
+/* Headings
+-------------------------------------------------- */
+
+h1, h2, h3, h4, h5, h6 {
+  font-weight: 500;
+  color: @gray-dark;
+  small {
+    color: @gray-light;
+  }
+}
+h1 {
+  margin-bottom: @baseline;
+  font-size: 30px;
+  line-height: @baseline * 2;
+  small {
+    font-size: 18px;
+  }
+}
+h2 {
+  font-size: 24px;
+  line-height: @baseline * 2;
+  small {
+    font-size: 14px;
+  }
+}
+h3, h4, h5, h6 {
+  line-height: @baseline * 2;
+}
+h3 {
+  font-size: 18px;
+  small {
+    font-size: 14px;
+  }
+}
+h4 {
+  font-size: 16px;
+  small {
+    font-size: 12px;
+  }
+}
+h5 {
+  font-size: 14px;
+}
+h6 {
+  font-size: 13px;
+  color: @gray-light;
+  text-transform: uppercase;
+}
+
+
+
+/* Colors
+-------------------------------------------------- */
+
+// Unordered and Ordered lists
+ul, ol {
+  margin: 0 0 @baseline 25px;
+}
+ul ul,
+ul ol,
+ol ol,
+ol ul {
+  margin-bottom: 0;
+}
+ul {
+  list-style: disc;
+}
+ol {
+  list-style: decimal;
+}
+li {
+  line-height: @baseline;
+  color: @gray;
+}
+ul.unstyled {
+  list-style: none;
+  margin-left: 0;
+}
+
+// Description Lists
+dl {
+  margin-bottom: @baseline;
+  dt, dd {
+    line-height: @baseline;
+  }
+  dt {
+    font-weight: bold;
+  }
+  dd {
+    margin-left: @baseline / 2;
+  }
+}
+
+
+/* Misc
+-------------------------------------------------- */
+
+// Labels
+span.label {
+  background-color: #ccc;
+  padding: 3px 5px;
+  font-size: 10px;
+  font-weight: bold;
+  color: #fff;
+  text-shadow: 0 0 1px rgba(0,0,0,.01);
+  text-transform: uppercase;
+  .border-radius(3px);
+  &.expired {
+    background-color: #f5f5f5;
+    color: #999;
+  }
+  &.pending {
+    background-color: #48489b;
+  }
+  &.declined {
+    background-color: #9b4848;
+  }
+  &.active,
+  &.approved {
+    background-color: #59bf59;
+  }
+  &.disabled {
+    background-color: #faa226;
+  }
+  &.scheduled {
+    background-color: #f5f5f5;
+    color: #59bf59;
+    text-shadow: 0 1px 0 rgba(255,255,255,.5);
+  }
+}
+
+// Horizontal rules
+hr {
+  margin: 0 0 19px;
+  border: 0;
+  border-bottom: 1px solid #eee;
+}
+
+// Emphasis
+strong {
+  font-style: inherit;
+  font-weight: bold;
+  line-height: inherit;
+}
+em {
+  font-style: italic;
+  font-weight: inherit;
+  line-height: inherit;
+}
+.muted {
+  color: @gray-lighter;
+}
+
+// Blockquotes
+blockquote {
+  margin-bottom: @baseline;
+  border-left: 5px solid #eee;
+  padding-left: 15px;
+  p {
+    .font(300,14px,@baseline);
+    margin-bottom: 0;
+  }
+  cite {
+    display: block;
+    .font(300,12px,@baseline);
+    color: @gray-light;
+    &:before {
+      content: '\2014 \00A0';
+    }
+  }
+}
+
+// Addresses
+address {
+  display: block;
+  line-height: @baseline;
+  margin-bottom: @baseline;
+}
+
+// Inline and block code styles
+code, pre {
+  padding: 0 3px 2px;
+  font-family: Monaco, Andale Mono, Courier New, monospace;
+  font-size: 12px;
+  .border-radius(3px);
+}
+code {
+  background-color: lighten(@orange, 40%);
+  color: rgba(0,0,0,.75);
+  padding: 2px 3px;
+}
+pre {
+  background-color: #f5f5f5;
+  display: block;
+  padding: @baseline - 1;
+  margin: 0 0 @baseline;
+  line-height: @baseline;
+  font-size: 12px;
+  border: 1px solid rgba(0,0,0,.15);
+  .border-radius(3px);
+  white-space: pre-wrap;
+}
+// Code block styling from Chili
+pre.css, pre.html {
+  background-color: #fff;
+}
+pre ol {
+  background-color: lighten(@orange, 42%);
+  list-style: decimal;
+  margin: (@baseline - 1) * -1;
+  padding-left: 59px;
+  .border-radius(2px);
+  li {
+    background-color: #fff;
+    padding: 0 10px;
+    border-left: 1px solid rgba(0,0,0,.1);
+    border-left-color: lighten(@orange, 35%);
+    font-size: 11px;
+    line-height: @baseline;
+    color: @gray-light;
+    text-shadow: 0 1px 1px rgba(255,255,255,.5);
+    word-wrap: break-word;
+    &:hover {
+    }
+    &:first-child {
+      padding-top: 9px;
+    }
+    &:last-child {
+      padding-bottom: 9px;
+    }
+  }
+}
+// Language Styles
+span.html__tag_start,
+span.html__tag_end { color: #277ac1; font-weight: normal; }
+span.html__attr_name { color: #d78b41; }
+span.html__attr_value { color: #de4a3f; }