flatui-rails-less 1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (157) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +38 -0
  6. data/Rakefile +1 -0
  7. data/flatui-rails-less.gemspec +26 -0
  8. data/lib/flatui/rails/less.rb +11 -0
  9. data/lib/flatui/rails/less/version.rb +7 -0
  10. data/vendor/assets/fonts/Flat-UI-Icons.dev.svg +140 -0
  11. data/vendor/assets/fonts/Flat-UI-Icons.eot +0 -0
  12. data/vendor/assets/fonts/Flat-UI-Icons.svg +140 -0
  13. data/vendor/assets/fonts/Flat-UI-Icons.ttf +0 -0
  14. data/vendor/assets/fonts/Flat-UI-Icons.woff +0 -0
  15. data/vendor/assets/fonts/icomoon-session.json +1 -0
  16. data/vendor/assets/fonts/lato/lato-black-webfont.eot +0 -0
  17. data/vendor/assets/fonts/lato/lato-black-webfont.svg +4691 -0
  18. data/vendor/assets/fonts/lato/lato-black-webfont.ttf +0 -0
  19. data/vendor/assets/fonts/lato/lato-black-webfont.woff +0 -0
  20. data/vendor/assets/fonts/lato/lato-bold-webfont.eot +0 -0
  21. data/vendor/assets/fonts/lato/lato-bold-webfont.svg +5085 -0
  22. data/vendor/assets/fonts/lato/lato-bold-webfont.ttf +0 -0
  23. data/vendor/assets/fonts/lato/lato-bold-webfont.woff +0 -0
  24. data/vendor/assets/fonts/lato/lato-bolditalic-webfont.eot +0 -0
  25. data/vendor/assets/fonts/lato/lato-bolditalic-webfont.svg +4514 -0
  26. data/vendor/assets/fonts/lato/lato-bolditalic-webfont.ttf +0 -0
  27. data/vendor/assets/fonts/lato/lato-bolditalic-webfont.woff +0 -0
  28. data/vendor/assets/fonts/lato/lato-italic-webfont.eot +0 -0
  29. data/vendor/assets/fonts/lato/lato-italic-webfont.svg +4514 -0
  30. data/vendor/assets/fonts/lato/lato-italic-webfont.ttf +0 -0
  31. data/vendor/assets/fonts/lato/lato-italic-webfont.woff +0 -0
  32. data/vendor/assets/fonts/lato/lato-light-webfont.eot +0 -0
  33. data/vendor/assets/fonts/lato/lato-light-webfont.svg +4691 -0
  34. data/vendor/assets/fonts/lato/lato-light-webfont.ttf +0 -0
  35. data/vendor/assets/fonts/lato/lato-light-webfont.woff +0 -0
  36. data/vendor/assets/fonts/lato/lato-regular-webfont.eot +0 -0
  37. data/vendor/assets/fonts/lato/lato-regular-webfont.svg +4691 -0
  38. data/vendor/assets/fonts/lato/lato-regular-webfont.ttf +0 -0
  39. data/vendor/assets/fonts/lato/lato-regular-webfont.woff +0 -0
  40. data/vendor/assets/images/demo/browser-2x.png +0 -0
  41. data/vendor/assets/images/demo/browser-author.jpg +0 -0
  42. data/vendor/assets/images/demo/browser-pic-1.jpg +0 -0
  43. data/vendor/assets/images/demo/browser-pic-2.jpg +0 -0
  44. data/vendor/assets/images/demo/browser-pic-3.jpg +0 -0
  45. data/vendor/assets/images/demo/browser-pic-4.jpg +0 -0
  46. data/vendor/assets/images/demo/browser-pic-5.jpg +0 -0
  47. data/vendor/assets/images/demo/browser-pic-6.jpg +0 -0
  48. data/vendor/assets/images/demo/browser.png +0 -0
  49. data/vendor/assets/images/demo/html-icon.png +0 -0
  50. data/vendor/assets/images/demo/logo-mask-2x.png +0 -0
  51. data/vendor/assets/images/demo/logo-mask.png +0 -0
  52. data/vendor/assets/images/demo/video.jpg +0 -0
  53. data/vendor/assets/images/exaple-image.jpg +0 -0
  54. data/vendor/assets/images/favicon.ico +0 -0
  55. data/vendor/assets/images/footer/logo.png +0 -0
  56. data/vendor/assets/images/icons/png/Book.png +0 -0
  57. data/vendor/assets/images/icons/png/Calendar.png +0 -0
  58. data/vendor/assets/images/icons/png/Chat.png +0 -0
  59. data/vendor/assets/images/icons/png/Clipboard.png +0 -0
  60. data/vendor/assets/images/icons/png/Compas.png +0 -0
  61. data/vendor/assets/images/icons/png/Gift-Box.png +0 -0
  62. data/vendor/assets/images/icons/png/Infinity-Loop.png +0 -0
  63. data/vendor/assets/images/icons/png/Mail.png +0 -0
  64. data/vendor/assets/images/icons/png/Map.png +0 -0
  65. data/vendor/assets/images/icons/png/Pensils.png +0 -0
  66. data/vendor/assets/images/icons/png/Pocket.png +0 -0
  67. data/vendor/assets/images/icons/png/Retina-Ready.png +0 -0
  68. data/vendor/assets/images/icons/png/Toilet-Paper.png +0 -0
  69. data/vendor/assets/images/icons/png/Watches.png +0 -0
  70. data/vendor/assets/images/icons/svg/book.svg +1 -0
  71. data/vendor/assets/images/icons/svg/calendar.svg +1 -0
  72. data/vendor/assets/images/icons/svg/chat.svg +1 -0
  73. data/vendor/assets/images/icons/svg/clipboard.svg +1 -0
  74. data/vendor/assets/images/icons/svg/clocks.svg +9 -0
  75. data/vendor/assets/images/icons/svg/compas.svg +1 -0
  76. data/vendor/assets/images/icons/svg/gift-box.svg +1 -0
  77. data/vendor/assets/images/icons/svg/loop.svg +5 -0
  78. data/vendor/assets/images/icons/svg/mail.svg +1 -0
  79. data/vendor/assets/images/icons/svg/map.svg +1 -0
  80. data/vendor/assets/images/icons/svg/paper-bag.svg +1 -0
  81. data/vendor/assets/images/icons/svg/pencils.svg +1 -0
  82. data/vendor/assets/images/icons/svg/retina.svg +1 -0
  83. data/vendor/assets/images/icons/svg/toilet-paper.svg +1 -0
  84. data/vendor/assets/images/login/icon.png +0 -0
  85. data/vendor/assets/images/login/imac-2x.png +0 -0
  86. data/vendor/assets/images/login/imac.png +0 -0
  87. data/vendor/assets/images/switch/mask-square.png +0 -0
  88. data/vendor/assets/images/switch/mask.png +0 -0
  89. data/vendor/assets/images/tile/ribbon-2x.png +0 -0
  90. data/vendor/assets/images/tile/ribbon.png +0 -0
  91. data/vendor/assets/images/todo/done-2x.png +0 -0
  92. data/vendor/assets/images/todo/done.png +0 -0
  93. data/vendor/assets/images/todo/search-2x.png +0 -0
  94. data/vendor/assets/images/todo/search.png +0 -0
  95. data/vendor/assets/images/todo/todo-2x.png +0 -0
  96. data/vendor/assets/images/todo/todo.png +0 -0
  97. data/vendor/assets/images/video/fullscreen-2x.png +0 -0
  98. data/vendor/assets/images/video/fullscreen.png +0 -0
  99. data/vendor/assets/images/video/pause-2x.png +0 -0
  100. data/vendor/assets/images/video/pause.png +0 -0
  101. data/vendor/assets/images/video/play-2x.png +0 -0
  102. data/vendor/assets/images/video/play.png +0 -0
  103. data/vendor/assets/images/video/poster.jpg +0 -0
  104. data/vendor/assets/images/video/volume-full-2x.png +0 -0
  105. data/vendor/assets/images/video/volume-full.png +0 -0
  106. data/vendor/assets/images/video/volume-off-2x.png +0 -0
  107. data/vendor/assets/images/video/volume-off.png +0 -0
  108. data/vendor/assets/javascripts/bootstrap-select.js +412 -0
  109. data/vendor/assets/javascripts/bootstrap-switch.js +251 -0
  110. data/vendor/assets/javascripts/bootstrap-typeahead.js +335 -0
  111. data/vendor/assets/javascripts/bootstrap.min.js +8 -0
  112. data/vendor/assets/javascripts/flat-ui.js +13 -0
  113. data/vendor/assets/javascripts/flatui-checkbox.js +112 -0
  114. data/vendor/assets/javascripts/flatui-radio.js +141 -0
  115. data/vendor/assets/javascripts/html5shiv.js +8 -0
  116. data/vendor/assets/javascripts/icon-font-ie7.js +57 -0
  117. data/vendor/assets/javascripts/jquery-ui-1.10.3.custom.min.js +6 -0
  118. data/vendor/assets/javascripts/jquery.placeholder.js +157 -0
  119. data/vendor/assets/javascripts/jquery.stacktable.js +54 -0
  120. data/vendor/assets/javascripts/jquery.tagsinput.js +355 -0
  121. data/vendor/assets/javascripts/jquery.ui.touch-punch.min.js +11 -0
  122. data/vendor/assets/javascripts/run-application.js +70 -0
  123. data/vendor/assets/stylesheets/demo.less +306 -0
  124. data/vendor/assets/stylesheets/docs.less +411 -0
  125. data/vendor/assets/stylesheets/flat-ui.less +47 -0
  126. data/vendor/assets/stylesheets/fonts.less +65 -0
  127. data/vendor/assets/stylesheets/icon-font.less +128 -0
  128. data/vendor/assets/stylesheets/mixins.less +780 -0
  129. data/vendor/assets/stylesheets/modules/button-groups.less +110 -0
  130. data/vendor/assets/stylesheets/modules/buttons.less +145 -0
  131. data/vendor/assets/stylesheets/modules/caret.less +31 -0
  132. data/vendor/assets/stylesheets/modules/checkbox-and-radio.less +143 -0
  133. data/vendor/assets/stylesheets/modules/code.less +38 -0
  134. data/vendor/assets/stylesheets/modules/dropdown.less +249 -0
  135. data/vendor/assets/stylesheets/modules/footer.less +76 -0
  136. data/vendor/assets/stylesheets/modules/forms.less +127 -0
  137. data/vendor/assets/stylesheets/modules/input-icons.less +71 -0
  138. data/vendor/assets/stylesheets/modules/login.less +111 -0
  139. data/vendor/assets/stylesheets/modules/navbar.less +551 -0
  140. data/vendor/assets/stylesheets/modules/pager.less +51 -0
  141. data/vendor/assets/stylesheets/modules/pagination.less +155 -0
  142. data/vendor/assets/stylesheets/modules/palette.less +71 -0
  143. data/vendor/assets/stylesheets/modules/progress-bars.less +36 -0
  144. data/vendor/assets/stylesheets/modules/select.less +143 -0
  145. data/vendor/assets/stylesheets/modules/share.less +44 -0
  146. data/vendor/assets/stylesheets/modules/switch.less +150 -0
  147. data/vendor/assets/stylesheets/modules/tagsinput.less +121 -0
  148. data/vendor/assets/stylesheets/modules/tile.less +54 -0
  149. data/vendor/assets/stylesheets/modules/todo.less +110 -0
  150. data/vendor/assets/stylesheets/modules/tooltip.less +56 -0
  151. data/vendor/assets/stylesheets/modules/type.less +210 -0
  152. data/vendor/assets/stylesheets/modules/ui-slider.less +62 -0
  153. data/vendor/assets/stylesheets/modules/video.less +458 -0
  154. data/vendor/assets/stylesheets/scaffolding.less +46 -0
  155. data/vendor/assets/stylesheets/spaces.less +172 -0
  156. data/vendor/assets/stylesheets/variables.less +294 -0
  157. metadata +256 -0
@@ -0,0 +1,249 @@
1
+ //
2
+ // Dropdown
3
+ // --------------------------------------------------
4
+
5
+ .dropdown-menu {
6
+ background-color: @dropdown-background;
7
+ border: none;
8
+ display: block;
9
+ margin-top: 8px;
10
+ opacity: 0;
11
+ padding: 0;
12
+ visibility: hidden;
13
+ width: 100%;
14
+ .box-shadow(none);
15
+ .transition(.25s);
16
+
17
+ // Typeahead
18
+ // ---------
19
+ &.typeahead {
20
+ display: none;
21
+ opacity: 1;
22
+ visibility: visible;
23
+ width: auto;
24
+ margin-top: 5px;
25
+ border: 2px solid @brand-secondary;
26
+ padding: 5px 0;
27
+ background-color: @inverse;
28
+ border-radius: @border-radius-large;
29
+
30
+ li {
31
+ a {
32
+ padding: 6px 14px;
33
+ }
34
+ &:first-child,
35
+ &:last-child {
36
+ a {
37
+ padding: 6px 14px;
38
+ border-radius: 0;
39
+ }
40
+ }
41
+ }
42
+ }
43
+
44
+ // Opened state
45
+ .open > & {
46
+ margin-top: 18px !important;
47
+ opacity: 1;
48
+ visibility: visible;
49
+ }
50
+ li {
51
+ &:first-child {
52
+ dt + a {
53
+ border-radius: 0;
54
+ }
55
+ > a {
56
+ border-radius: @border-radius-large @border-radius-large 0 0;
57
+ padding-top: 8px;
58
+ }
59
+ }
60
+
61
+ &:last-child {
62
+ > a {
63
+ border-radius: 0 0 @border-radius-large @border-radius-large;
64
+ padding-bottom: 10px;
65
+ }
66
+ }
67
+
68
+ &.active,
69
+ &.selected {
70
+ > a,
71
+ > a.highlighted {
72
+ background: @brand-secondary;
73
+ color: @inverse;
74
+
75
+ &:hover,
76
+ &:focus {
77
+ background: mix(@brand-secondary, black, 85%);
78
+ color: @inverse;
79
+ }
80
+ }
81
+ }
82
+ > a {
83
+ color: fade(@brand-primary, 75%);
84
+ padding: 6px 15px 8px;
85
+ text-decoration: none;
86
+ .clearfix();
87
+ .transition(background-color .25s);
88
+
89
+ &:hover,
90
+ &:active,
91
+ &:focus {
92
+ background: mix(@inverse, @brand-primary, 85%);
93
+ color: inherit;
94
+ outline: none;
95
+ }
96
+
97
+ &.highlighted {
98
+ background: mix(@inverse, @brand-primary, 73.5%);
99
+ color: @inverse;
100
+
101
+ &:hover,
102
+ &:focus {
103
+ background: mix(@inverse, @brand-primary, 66%);
104
+ color: @inverse;
105
+ }
106
+ }
107
+
108
+ &:before {
109
+ float: right;
110
+ margin-top: 3px;
111
+ }
112
+ }
113
+
114
+ // Submenu title
115
+ dt {
116
+ font-weight: 300;
117
+ margin-bottom: 3px;
118
+ margin-top: 12px;
119
+ padding: 0 15px;
120
+ }
121
+ }
122
+ @media (max-width: 480px) {
123
+ & {
124
+ border-radius: 0 0 @border-radius-large @border-radius-large !important;
125
+ }
126
+ }
127
+ }
128
+
129
+ // Dropdown expands to top
130
+ .dropup,
131
+ .navbar-fixed-bottom .dropdown {
132
+ .dropdown-menu {
133
+ margin-bottom: 8px;
134
+ }
135
+ .dropdown-arrow {
136
+ border-bottom: none;
137
+ border-top: 8px outset mix(@inverse, @brand-primary, 94%);
138
+ bottom: 100%;
139
+ top: auto;
140
+ }
141
+ }
142
+
143
+ // Second level nav
144
+ .navbar-fixed-bottom .nav > li > ul:before {
145
+ border-bottom: none;
146
+ border-top: 9px outset @brand-primary;
147
+ bottom: 4px;
148
+ top: auto;
149
+ }
150
+
151
+ .open {
152
+ &.dropup {
153
+ > .dropdown-menu {
154
+ margin-bottom: 18px;
155
+ }
156
+ > .dropdown-arrow {
157
+ margin-bottom: 10px;
158
+
159
+ &.dropdown-arrow-inverse {
160
+ border-top-color: @brand-primary;
161
+ }
162
+ }
163
+ }
164
+ > .dropdown-arrow {
165
+ margin-top: 9px;
166
+ opacity: 1;
167
+ }
168
+ }
169
+
170
+ // Arrows
171
+ // --------------------------------------------------
172
+ .dropdown-arrow {
173
+ border-style: solid;
174
+ border-width: 0 9px 9px 9px;
175
+ border-color: transparent transparent mix(@inverse, @brand-primary, 94%) transparent;
176
+ height: 0;
177
+ margin-top: 0;
178
+ opacity: 0;
179
+ position: absolute;
180
+ right: 13px;
181
+ top: 100%;
182
+ width: 0;
183
+ z-index: 10;
184
+ -webkit-transform: rotate(360deg); // Make corners smooth
185
+ .transition(.25s);
186
+ }
187
+
188
+ // Alternate Color
189
+ // --------------------------------------------------
190
+ .dropdown-inverse {
191
+ background-color: @brand-primary;
192
+ color: mix(@inverse, black, 80%);
193
+ padding: 4px 0 6px;
194
+
195
+ li {
196
+ margin: 0 4px -2px;
197
+ &:first-child,
198
+ &:last-child {
199
+ > a {
200
+ border-radius: 2px;
201
+ padding-bottom: 7px;
202
+ padding-top: 5px;
203
+ }
204
+ dt + a {
205
+ border-radius: 2px;
206
+ }
207
+ }
208
+
209
+ &.active,
210
+ &.selected {
211
+ > a {
212
+ background: @brand-secondary;
213
+ color: @inverse;
214
+ position: relative;
215
+ z-index: 1;
216
+ }
217
+ }
218
+ dt {
219
+ padding-left: 11px;
220
+ padding-right: 11px;
221
+ }
222
+ .divider {
223
+ margin-left: 11px;
224
+ margin-right: 11px;
225
+ }
226
+ > a {
227
+ border-radius: 2px;
228
+ color: @inverse;
229
+ padding: 5px 11px 7px;
230
+
231
+ &:hover,
232
+ &:active,
233
+ &:focus {
234
+ background: mix(@brand-primary, black, 85%);
235
+ }
236
+ &.highlighted {
237
+ background: mix(@brand-primary, @inverse, 85%);
238
+ &:hover,
239
+ &:focus {
240
+ background: mix(@brand-primary, @inverse, 75%);
241
+ }
242
+ }
243
+ }
244
+ .divider {
245
+ background-color: mix(@brand-primary, white, 85%);
246
+ border-bottom-color: mix(@brand-primary, white, 85%);
247
+ }
248
+ }
249
+ }
@@ -0,0 +1,76 @@
1
+ //
2
+ // Footer
3
+ // --------------------------------------------------
4
+
5
+ footer {
6
+ background-color: mix(@brand-primary, @inverse, 9%);
7
+ color: mix(@brand-primary, @inverse, 34%);
8
+ font-size: 15px;
9
+ padding: 0;
10
+
11
+ a {
12
+ color: mix(@brand-primary, @inverse, 50%);
13
+ font-weight: 700;
14
+ }
15
+ p {
16
+ font-size: 15px;
17
+ line-height: 20px;
18
+ margin-bottom: 10px;
19
+ }
20
+ }
21
+
22
+ .footer-title {
23
+ margin: 0 0 22px;
24
+ padding-top: 21px;
25
+ font-size: 24px;
26
+ line-height: 40px;
27
+ }
28
+
29
+ .footer-brand {
30
+ display: block;
31
+ margin-bottom: 26px;
32
+ width: 220px;
33
+
34
+ img {
35
+ width: 216px;
36
+ }
37
+ }
38
+
39
+ // FOOTER BANNER
40
+ // ----------------------
41
+ .footer-banner {
42
+ background-color: @brand-secondary;
43
+ color: mix(@brand-secondary, @inverse, 20%);
44
+ margin-left: 42px;
45
+ min-height: 316px;
46
+ padding: 0 30px 30px;
47
+
48
+ .footer-title {
49
+ color: @inverse;
50
+ }
51
+ a {
52
+ color: lighten(@brand-secondary, 42%);
53
+ text-decoration: underline;
54
+
55
+ &:hover {
56
+ text-decoration: none;
57
+ }
58
+ }
59
+ ul {
60
+ list-style-type: none;
61
+ margin: 0 0 26px;
62
+ padding: 0;
63
+
64
+ li {
65
+ border-top: 1px solid lighten(@brand-secondary, 2%);
66
+ line-height: 19px;
67
+ padding: 6px 0;
68
+
69
+ &:first-child {
70
+ border-top: none;
71
+ padding-top: 1px;
72
+ }
73
+ }
74
+ }
75
+ }
76
+
@@ -0,0 +1,127 @@
1
+ //
2
+ // Forms
3
+ // --------------------------------------------------
4
+
5
+ // Textarea
6
+ textarea {
7
+ font-size: ceil(@font-size-base * 1.071); // ~15px
8
+ line-height: 24px;
9
+ padding: 5px 11px;
10
+ }
11
+
12
+ // Label
13
+ label {
14
+ font-weight: normal;
15
+ line-height: @line-height-base * 1.1605em; // ~20px
16
+ }
17
+
18
+ // Placeholder
19
+ //
20
+ // Placeholder text gets special styles because when browsers invalidate entire
21
+ // lines if it doesn't understand a selector/
22
+ .form-control {
23
+ .placeholder(desaturate(lighten(@brand-primary, 45%), 15%));
24
+ }
25
+
26
+ // Common form controls
27
+ //
28
+ // Shared size and type resets for form controls. Apply `.form-control` to any
29
+ // of the following form controls:
30
+ //
31
+ // select
32
+ // textarea
33
+ // input[type="text"]
34
+ // input[type="password"]
35
+ // input[type="datetime"]
36
+ // input[type="datetime-local"]
37
+ // input[type="date"]
38
+ // input[type="month"]
39
+ // input[type="time"]
40
+ // input[type="week"]
41
+ // input[type="number"]
42
+ // input[type="email"]
43
+ // input[type="url"]
44
+ // input[type="search"]
45
+ // input[type="tel"]
46
+ // input[type="color"]
47
+
48
+ .form-control {
49
+ border: 2px solid @gray-light;
50
+ color: @brand-primary;
51
+ font-family: @font-family-base;
52
+ font-size: @input-font-size-base;
53
+ padding: 8px 12px;
54
+ height: 42px;
55
+ -webkit-appearance: none;
56
+ border-radius: @input-border-radius;
57
+ .box-shadow(none);
58
+ .transition(~"border .25s linear, color .25s linear, background-color .25s linear");
59
+
60
+ // Customize the `:focus` state
61
+ .form-control-focus();
62
+
63
+ // Disabled and read-only inputs
64
+ // Note: HTML5 says that controls under a fieldset > legend:first-child won't
65
+ // be disabled if the fieldset is disabled. Due to implementation difficulty,
66
+ // we don't honor that edge case; we style them as disabled anyway.
67
+ &[disabled],
68
+ &[readonly],
69
+ fieldset[disabled] & {
70
+ background-color: @input-bg-disabled;
71
+ border-color: mix(@gray, white, 40%);
72
+ color: mix(@gray, white, 40%);
73
+ cursor: default;
74
+ }
75
+
76
+ // Flat (without border)
77
+ &.flat {
78
+ border-color: transparent;
79
+
80
+ &:hover {
81
+ border-color: @gray-light;
82
+ }
83
+ &:focus {
84
+ border-color: @brand-secondary;
85
+ }
86
+ }
87
+ }
88
+
89
+ // Form control sizing
90
+ .input-sm {
91
+ .input-size(@input-height-small; 6px; 10px; @input-font-size-sm; @line-height-base);
92
+ }
93
+
94
+ .input-lg {
95
+ .input-size(@input-height-large; 10px; 15px; @input-font-size-lg; @line-height-base);
96
+ }
97
+
98
+ .input-hg {
99
+ .input-size(@input-height-huge; 10px; 16px; @input-font-size-hg; @line-height-base);
100
+ }
101
+
102
+ // Form control feedback states
103
+ //
104
+ // Apply contextual and semantic states to individual form controls.
105
+
106
+ // Warning
107
+ .has-warning {
108
+ .form-control-validation(@brand-warning; @brand-warning);
109
+ }
110
+ // Error
111
+ .has-error {
112
+ .form-control-validation(@brand-danger; @brand-danger);
113
+ }
114
+ // Success
115
+ .has-success {
116
+ .form-control-validation(@brand-success; @brand-success);
117
+ }
118
+
119
+ // Form groups
120
+ //
121
+ // Designed to help with the organization and spacing of vertical forms. For
122
+ // horizontal forms, use the predefined grid classes.
123
+
124
+ .form-group {
125
+ position: relative;
126
+ margin-bottom: 20px;
127
+ }