ctf-server

old server for hosting capture-the-flag

git clone https://9o.is/git/ctf-server.git

mixins.orig.less

(21869B)


      1 //
      2 // Mixins
      3 // --------------------------------------------------
      4 
      5 
      6 // UTILITY MIXINS
      7 // --------------------------------------------------
      8 
      9 // Clearfix
     10 // --------
     11 // For clearing floats like a boss h5bp.com/q
     12 .clearfix {
     13   *zoom: 1;
     14   &:before,
     15   &:after {
     16     display: table;
     17     content: "";
     18     // Fixes Opera/contenteditable bug:
     19     // http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952
     20     line-height: 0;
     21   }
     22   &:after {
     23     clear: both;
     24   }
     25 }
     26 
     27 // Webkit-style focus
     28 // ------------------
     29 .tab-focus() {
     30   // Default
     31   outline: thin dotted #333;
     32   // Webkit
     33   outline: 5px auto -webkit-focus-ring-color;
     34   outline-offset: -2px;
     35 }
     36 
     37 // Center-align a block level element
     38 // ----------------------------------
     39 .center-block() {
     40   display: block;
     41   margin-left: auto;
     42   margin-right: auto;
     43 }
     44 
     45 // IE7 inline-block
     46 // ----------------
     47 .ie7-inline-block() {
     48   *display: inline; /* IE7 inline-block hack */
     49   *zoom: 1;
     50 }
     51 
     52 // IE7 likes to collapse whitespace on either side of the inline-block elements.
     53 // Ems because we're attempting to match the width of a space character. Left
     54 // version is for form buttons, which typically come after other elements, and
     55 // right version is for icons, which come before. Applying both is ok, but it will
     56 // mean that space between those elements will be .6em (~2 space characters) in IE7,
     57 // instead of the 1 space in other browsers.
     58 .ie7-restore-left-whitespace() {
     59   *margin-left: .3em;
     60 
     61   &:first-child {
     62     *margin-left: 0;
     63   }
     64 }
     65 
     66 .ie7-restore-right-whitespace() {
     67   *margin-right: .3em;
     68 }
     69 
     70 // Sizing shortcuts
     71 // -------------------------
     72 .size(@height, @width) {
     73   width: @width;
     74   height: @height;
     75 }
     76 .square(@size) {
     77   .size(@size, @size);
     78 }
     79 
     80 // Placeholder text
     81 // -------------------------
     82 .placeholder(@color: @placeholderText) {
     83   &:-moz-placeholder {
     84     color: @color;
     85   }
     86   &:-ms-input-placeholder {
     87     color: @color;
     88   }
     89   &::-webkit-input-placeholder {
     90     color: @color;
     91   }
     92 }
     93 
     94 // Text overflow
     95 // -------------------------
     96 // Requires inline-block or block for proper styling
     97 .text-overflow() {
     98   overflow: hidden;
     99   text-overflow: ellipsis;
    100   white-space: nowrap;
    101 }
    102 
    103 // CSS image replacement
    104 // -------------------------
    105 // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
    106 .hide-text {
    107   font: 0/0 a;
    108   color: transparent;
    109   text-shadow: none;
    110   background-color: transparent;
    111   border: 0;
    112 }
    113 
    114 
    115 // FONTS
    116 // --------------------------------------------------
    117 
    118 #font {
    119   #family {
    120     .serif() {
    121       font-family: @serifFontFamily;
    122     }
    123     .sans-serif() {
    124       font-family: @sansFontFamily;
    125     }
    126     .monospace() {
    127       font-family: @monoFontFamily;
    128     }
    129   }
    130   .shorthand(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
    131     font-size: @size;
    132     font-weight: @weight;
    133     line-height: @lineHeight;
    134   }
    135   .serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
    136     #font > #family > .serif;
    137     #font > .shorthand(@size, @weight, @lineHeight);
    138   }
    139   .sans-serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
    140     #font > #family > .sans-serif;
    141     #font > .shorthand(@size, @weight, @lineHeight);
    142   }
    143   .monospace(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
    144     #font > #family > .monospace;
    145     #font > .shorthand(@size, @weight, @lineHeight);
    146   }
    147 }
    148 
    149 
    150 // FORMS
    151 // --------------------------------------------------
    152 
    153 // Block level inputs
    154 .input-block-level {
    155   display: block;
    156   width: 100%;
    157   min-height: @inputHeight; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
    158   .box-sizing(border-box); // Makes inputs behave like true block-level elements
    159 }
    160 
    161 
    162 
    163 // Mixin for form field states
    164 .formFieldState(@textColor: #555, @borderColor: #ccc, @backgroundColor: #f5f5f5) {
    165   // Set the text color
    166   .control-label,
    167   .help-block,
    168   .help-inline {
    169     color: @textColor;
    170   }
    171   // Style inputs accordingly
    172   .checkbox,
    173   .radio,
    174   input,
    175   select,
    176   textarea {
    177     color: @textColor;
    178   }
    179   input,
    180   select,
    181   textarea {
    182     border-color: @borderColor;
    183     .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
    184     &:focus {
    185       border-color: darken(@borderColor, 10%);
    186       @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@borderColor, 20%);
    187       .box-shadow(@shadow);
    188     }
    189   }
    190   // Give a small background color for input-prepend/-append
    191   .input-prepend .add-on,
    192   .input-append .add-on {
    193     color: @textColor;
    194     background-color: @backgroundColor;
    195     border-color: @textColor;
    196   }
    197 }
    198 
    199 
    200 
    201 // CSS3 PROPERTIES
    202 // --------------------------------------------------
    203 
    204 // Border Radius
    205 .border-radius(@radius) {
    206   -webkit-border-radius: @radius;
    207      -moz-border-radius: @radius;
    208           border-radius: @radius;
    209 }
    210 
    211 // Single Corner Border Radius
    212 .border-top-left-radius(@radius) {
    213   -webkit-border-top-left-radius: @radius;
    214       -moz-border-radius-topleft: @radius;
    215           border-top-left-radius: @radius;
    216 }
    217 .border-top-right-radius(@radius) {
    218   -webkit-border-top-right-radius: @radius;
    219       -moz-border-radius-topright: @radius;
    220           border-top-right-radius: @radius;
    221 }
    222 .border-bottom-right-radius(@radius) {
    223   -webkit-border-bottom-right-radius: @radius;
    224       -moz-border-radius-bottomright: @radius;
    225           border-bottom-right-radius: @radius;
    226 }
    227 .border-bottom-left-radius(@radius) {
    228   -webkit-border-bottom-left-radius: @radius;
    229       -moz-border-radius-bottomleft: @radius;
    230           border-bottom-left-radius: @radius;
    231 }
    232 
    233 // Single Side Border Radius
    234 .border-top-radius(@radius) {
    235   .border-top-right-radius(@radius);
    236   .border-top-left-radius(@radius);
    237 }
    238 .border-right-radius(@radius) {
    239   .border-top-right-radius(@radius);
    240   .border-bottom-right-radius(@radius);
    241 }
    242 .border-bottom-radius(@radius) {
    243   .border-bottom-right-radius(@radius);
    244   .border-bottom-left-radius(@radius);
    245 }
    246 .border-left-radius(@radius) {
    247   .border-top-left-radius(@radius);
    248   .border-bottom-left-radius(@radius);
    249 }
    250 
    251 // Drop shadows
    252 .box-shadow(@shadow) {
    253   -webkit-box-shadow: @shadow;
    254      -moz-box-shadow: @shadow;
    255           box-shadow: @shadow;
    256 }
    257 
    258 // Transitions
    259 .transition(@transition) {
    260   -webkit-transition: @transition;
    261      -moz-transition: @transition;
    262        -o-transition: @transition;
    263           transition: @transition;
    264 }
    265 .transition-delay(@transition-delay) {
    266   -webkit-transition-delay: @transition-delay;
    267      -moz-transition-delay: @transition-delay;
    268        -o-transition-delay: @transition-delay;
    269           transition-delay: @transition-delay;
    270 }
    271 
    272 // Transformations
    273 .rotate(@degrees) {
    274   -webkit-transform: rotate(@degrees);
    275      -moz-transform: rotate(@degrees);
    276       -ms-transform: rotate(@degrees);
    277        -o-transform: rotate(@degrees);
    278           transform: rotate(@degrees);
    279 }
    280 .scale(@ratio) {
    281   -webkit-transform: scale(@ratio);
    282      -moz-transform: scale(@ratio);
    283       -ms-transform: scale(@ratio);
    284        -o-transform: scale(@ratio);
    285           transform: scale(@ratio);
    286 }
    287 .translate(@x, @y) {
    288   -webkit-transform: translate(@x, @y);
    289      -moz-transform: translate(@x, @y);
    290       -ms-transform: translate(@x, @y);
    291        -o-transform: translate(@x, @y);
    292           transform: translate(@x, @y);
    293 }
    294 .skew(@x, @y) {
    295   -webkit-transform: skew(@x, @y);
    296      -moz-transform: skew(@x, @y);
    297       -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twitter/bootstrap/issues/4885
    298        -o-transform: skew(@x, @y);
    299           transform: skew(@x, @y);
    300   -webkit-backface-visibility: hidden; // See https://github.com/twitter/bootstrap/issues/5319
    301 }
    302 .translate3d(@x, @y, @z) {
    303   -webkit-transform: translate3d(@x, @y, @z);
    304      -moz-transform: translate3d(@x, @y, @z);
    305        -o-transform: translate3d(@x, @y, @z);
    306           transform: translate3d(@x, @y, @z);
    307 }
    308 
    309 // Backface visibility
    310 // Prevent browsers from flickering when using CSS 3D transforms.
    311 // Default value is `visible`, but can be changed to `hidden
    312 // See git pull https://github.com/dannykeane/bootstrap.git backface-visibility for examples
    313 .backface-visibility(@visibility){
    314 	-webkit-backface-visibility: @visibility;
    315 	   -moz-backface-visibility: @visibility;
    316 	        backface-visibility: @visibility;
    317 }
    318 
    319 // Background clipping
    320 // Heads up: FF 3.6 and under need "padding" instead of "padding-box"
    321 .background-clip(@clip) {
    322   -webkit-background-clip: @clip;
    323      -moz-background-clip: @clip;
    324           background-clip: @clip;
    325 }
    326 
    327 // Background sizing
    328 .background-size(@size) {
    329   -webkit-background-size: @size;
    330      -moz-background-size: @size;
    331        -o-background-size: @size;
    332           background-size: @size;
    333 }
    334 
    335 
    336 // Box sizing
    337 .box-sizing(@boxmodel) {
    338   -webkit-box-sizing: @boxmodel;
    339      -moz-box-sizing: @boxmodel;
    340           box-sizing: @boxmodel;
    341 }
    342 
    343 // User select
    344 // For selecting text on the page
    345 .user-select(@select) {
    346   -webkit-user-select: @select;
    347      -moz-user-select: @select;
    348       -ms-user-select: @select;
    349        -o-user-select: @select;
    350           user-select: @select;
    351 }
    352 
    353 // Resize anything
    354 .resizable(@direction) {
    355   resize: @direction; // Options: horizontal, vertical, both
    356   overflow: auto; // Safari fix
    357 }
    358 
    359 // CSS3 Content Columns
    360 .content-columns(@columnCount, @columnGap: @gridGutterWidth) {
    361   -webkit-column-count: @columnCount;
    362      -moz-column-count: @columnCount;
    363           column-count: @columnCount;
    364   -webkit-column-gap: @columnGap;
    365      -moz-column-gap: @columnGap;
    366           column-gap: @columnGap;
    367 }
    368 
    369 // Optional hyphenation
    370 .hyphens(@mode: auto) {
    371   word-wrap: break-word;
    372   -webkit-hyphens: @mode;
    373      -moz-hyphens: @mode;
    374       -ms-hyphens: @mode;
    375        -o-hyphens: @mode;
    376           hyphens: @mode;
    377 }
    378 
    379 // Opacity
    380 .opacity(@opacity) {
    381   opacity: @opacity / 100;
    382   filter: ~"alpha(opacity=@{opacity})";
    383 }
    384 
    385 
    386 
    387 // BACKGROUNDS
    388 // --------------------------------------------------
    389 
    390 // Add an alphatransparency value to any background or border color (via Elyse Holladay)
    391 #translucent {
    392   .background(@color: @white, @alpha: 1) {
    393     background-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
    394   }
    395   .border(@color: @white, @alpha: 1) {
    396     border-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
    397     .background-clip(padding-box);
    398   }
    399 }
    400 
    401 // Gradient Bar Colors for buttons and alerts
    402 .gradientBar(@primaryColor, @secondaryColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) {
    403   color: @textColor;
    404   text-shadow: @textShadow;
    405   #gradient > .vertical(@primaryColor, @secondaryColor);
    406   border-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%);
    407   border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);
    408 }
    409 
    410 // Gradients
    411 #gradient {
    412   .horizontal(@startColor: #555, @endColor: #333) {
    413     background-color: @endColor;
    414     background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
    415     background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
    416     background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
    417     background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
    418     background-image: linear-gradient(to right, @startColor, @endColor); // Standard, IE10
    419     background-repeat: repeat-x;
    420     filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@startColor),argb(@endColor))); // IE9 and down
    421   }
    422   .vertical(@startColor: #555, @endColor: #333) {
    423     background-color: mix(@startColor, @endColor, 60%);
    424     background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
    425     background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
    426     background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
    427     background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
    428     background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10
    429     background-repeat: repeat-x;
    430     filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down
    431   }
    432   .directional(@startColor: #555, @endColor: #333, @deg: 45deg) {
    433     background-color: @endColor;
    434     background-repeat: repeat-x;
    435     background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+
    436     background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+
    437     background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10
    438     background-image: linear-gradient(@deg, @startColor, @endColor); // Standard, IE10
    439   }
    440   .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
    441     background-color: mix(@midColor, @endColor, 80%);
    442     background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
    443     background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor);
    444     background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor);
    445     background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor);
    446     background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor);
    447     background-repeat: no-repeat;
    448     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
    449   }
    450   .radial(@innerColor: #555, @outerColor: #333) {
    451     background-color: @outerColor;
    452     background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor));
    453     background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor);
    454     background-image: -moz-radial-gradient(circle, @innerColor, @outerColor);
    455     background-image: -o-radial-gradient(circle, @innerColor, @outerColor);
    456     background-repeat: no-repeat;
    457   }
    458   .striped(@color: #555, @angle: 45deg) {
    459     background-color: @color;
    460     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));
    461     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);
    462     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);
    463     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);
    464     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);
    465   }
    466 }
    467 // Reset filters for IE
    468 .reset-filter() {
    469   filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
    470 }
    471 
    472 
    473 
    474 // COMPONENT MIXINS
    475 // --------------------------------------------------
    476 
    477 // Horizontal dividers
    478 // -------------------------
    479 // Dividers (basically an hr) within dropdowns and nav lists
    480 .nav-divider(@top: #e5e5e5, @bottom: @white) {
    481   // IE7 needs a set width since we gave a height. Restricting just
    482   // to IE7 to keep the 1px left/right space in other browsers.
    483   // It is unclear where IE is getting the extra space that we need
    484   // to negative-margin away, but so it goes.
    485   *width: 100%;
    486   height: 1px;
    487   margin: ((@baseLineHeight / 2) - 1) 1px; // 8px 1px
    488   *margin: -5px 0 5px;
    489   overflow: hidden;
    490   background-color: @top;
    491   border-bottom: 1px solid @bottom;
    492 }
    493 
    494 // Button backgrounds
    495 // ------------------
    496 .buttonBackground(@startColor, @endColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) {
    497   // gradientBar will set the background to a pleasing blend of these, to support IE<=9
    498   .gradientBar(@startColor, @endColor, @textColor, @textShadow);
    499   *background-color: @endColor; /* Darken IE7 buttons by default so they stand out more given they won't have borders */
    500   .reset-filter();
    501 
    502   // in these cases the gradient won't cover the background, so we override
    503   &:hover, &:active, &.active, &.disabled, &[disabled] {
    504     color: @textColor;
    505     background-color: @endColor;
    506     *background-color: darken(@endColor, 5%);
    507   }
    508 
    509   // IE 7 + 8 can't handle box-shadow to show active, so we darken a bit ourselves
    510   &:active,
    511   &.active {
    512     background-color: darken(@endColor, 10%) e("\9");
    513   }
    514 }
    515 
    516 // Navbar vertical align
    517 // -------------------------
    518 // Vertically center elements in the navbar.
    519 // Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin.
    520 .navbarVerticalAlign(@elementHeight) {
    521   margin-top: (@navbarHeight - @elementHeight) / 2;
    522 }
    523 
    524 
    525 
    526 // Grid System
    527 // -----------
    528 
    529 // Centered container element
    530 .container-fixed() {
    531   margin-right: auto;
    532   margin-left: auto;
    533   .clearfix();
    534 }
    535 
    536 // Table columns
    537 .tableColumns(@columnSpan: 1) {
    538   float: none; // undo default grid column styles
    539   width: ((@gridColumnWidth) * @columnSpan) + (@gridGutterWidth * (@columnSpan - 1)) - 16; // 16 is total padding on left and right of table cells
    540   margin-left: 0; // undo default grid column styles
    541 }
    542 
    543 // Make a Grid
    544 // Use .makeRow and .makeColumn to assign semantic layouts grid system behavior
    545 .makeRow() {
    546   margin-left: @gridGutterWidth * -1;
    547   .clearfix();
    548 }
    549 .makeColumn(@columns: 1, @offset: 0) {
    550   float: left;
    551   margin-left: (@gridColumnWidth * @offset) + (@gridGutterWidth * (@offset - 1)) + (@gridGutterWidth * 2);
    552   width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
    553 }
    554 
    555 // The Grid
    556 #grid {
    557 
    558   .core (@gridColumnWidth, @gridGutterWidth) {
    559 
    560     .spanX (@index) when (@index > 0) {
    561       (~".span@{index}") { .span(@index); }
    562       .spanX(@index - 1);
    563     }
    564     .spanX (0) {}
    565 
    566     .offsetX (@index) when (@index > 0) {
    567       (~".offset@{index}") { .offset(@index); }
    568       .offsetX(@index - 1);
    569     }
    570     .offsetX (0) {}
    571 
    572     .offset (@columns) {
    573       margin-left: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns + 1));
    574     }
    575 
    576     .span (@columns) {
    577       width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
    578     }
    579 
    580     .row {
    581       margin-left: @gridGutterWidth * -1;
    582       .clearfix();
    583     }
    584 
    585     [class*="span"] {
    586       float: left;
    587       min-height: 1px; // prevent collapsing columns
    588       margin-left: @gridGutterWidth;
    589     }
    590 
    591     // Set the container width, and override it for fixed navbars in media queries
    592     .container,
    593     .navbar-static-top .container,
    594     .navbar-fixed-top .container,
    595     .navbar-fixed-bottom .container { .span(@gridColumns); }
    596 
    597     // generate .spanX and .offsetX
    598     .spanX (@gridColumns);
    599     .offsetX (@gridColumns);
    600 
    601   }
    602 
    603   .fluid (@fluidGridColumnWidth, @fluidGridGutterWidth) {
    604 
    605     .spanX (@index) when (@index > 0) {
    606       (~".span@{index}") { .span(@index); }
    607       .spanX(@index - 1);
    608     }
    609     .spanX (0) {}
    610 
    611     .offsetX (@index) when (@index > 0) {
    612       (~'.offset@{index}') { .offset(@index); }
    613       (~'.offset@{index}:first-child') { .offsetFirstChild(@index); }
    614       .offsetX(@index - 1);
    615     }
    616     .offsetX (0) {}
    617 
    618     .offset (@columns) {
    619       margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth*2);
    620   	  *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + (@fluidGridGutterWidth*2) - (.5 / @gridRowWidth * 100 * 1%);
    621     }
    622 
    623     .offsetFirstChild (@columns) {
    624       margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth);
    625       *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%);
    626     }
    627 
    628     .span (@columns) {
    629       width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1));
    630       *width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%);
    631     }
    632 
    633     .row-fluid {
    634       width: 100%;
    635       .clearfix();
    636       [class*="span"] {
    637         .input-block-level();
    638         float: left;
    639         margin-left: @fluidGridGutterWidth;
    640         *margin-left: @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%);
    641       }
    642       [class*="span"]:first-child {
    643         margin-left: 0;
    644       }
    645 
    646       // Space grid-sized controls properly if multiple per line
    647       .controls-row [class*="span"] + [class*="span"] {
    648         margin-left: @fluidGridGutterWidth;
    649       }
    650 
    651       // generate .spanX and .offsetX
    652       .spanX (@gridColumns);
    653       .offsetX (@gridColumns);
    654     }
    655 
    656   }
    657 
    658   .input(@gridColumnWidth, @gridGutterWidth) {
    659 
    660     .spanX (@index) when (@index > 0) {
    661       (~"input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index}") { .span(@index); }
    662       .spanX(@index - 1);
    663     }
    664     .spanX (0) {}
    665 
    666     .span(@columns) {
    667       width: ((@gridColumnWidth) * @columns) + (@gridGutterWidth * (@columns - 1)) - 14;
    668     }
    669 
    670     input,
    671     textarea,
    672     .uneditable-input {
    673       margin-left: 0; // override margin-left from core grid system
    674     }
    675 
    676     // Space grid-sized controls properly if multiple per line
    677     .controls-row [class*="span"] + [class*="span"] {
    678       margin-left: @gridGutterWidth;
    679     }
    680 
    681     // generate .spanX
    682     .spanX (@gridColumns);
    683 
    684   }
    685 
    686 }