middleman-gumby 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +43 -0
  6. data/Rakefile +1 -0
  7. data/lib/middleman/gumby.rb +17 -0
  8. data/lib/middleman/gumby/version.rb +5 -0
  9. data/middleman-gumby.gemspec +25 -0
  10. data/vendor/assets/fonts/icons/entypo.eot +0 -0
  11. data/vendor/assets/fonts/icons/entypo.ttf +0 -0
  12. data/vendor/assets/fonts/icons/entypo.woff +0 -0
  13. data/vendor/assets/javascripts/gumby/libs/gumby.init.js +47 -0
  14. data/vendor/assets/javascripts/gumby/libs/gumby.js +258 -0
  15. data/vendor/assets/javascripts/gumby/libs/gumby.min.js +1 -0
  16. data/vendor/assets/javascripts/gumby/libs/jquery-1.10.1.min.js +6 -0
  17. data/vendor/assets/javascripts/gumby/libs/jquery-1.10.1.min.map +1 -0
  18. data/vendor/assets/javascripts/gumby/libs/jquery-2.0.2.min.js +6 -0
  19. data/vendor/assets/javascripts/gumby/libs/jquery-2.0.2.min.map +1 -0
  20. data/vendor/assets/javascripts/gumby/libs/jquery.mobile.custom.min.js +3 -0
  21. data/vendor/assets/javascripts/gumby/libs/modernizr-2.6.2.min.js +4 -0
  22. data/vendor/assets/javascripts/gumby/libs/ui/gumby.checkbox.js +101 -0
  23. data/vendor/assets/javascripts/gumby/libs/ui/gumby.fixed.js +240 -0
  24. data/vendor/assets/javascripts/gumby/libs/ui/gumby.navbar.js +111 -0
  25. data/vendor/assets/javascripts/gumby/libs/ui/gumby.radiobtn.js +90 -0
  26. data/vendor/assets/javascripts/gumby/libs/ui/gumby.retina.js +81 -0
  27. data/vendor/assets/javascripts/gumby/libs/ui/gumby.skiplink.js +157 -0
  28. data/vendor/assets/javascripts/gumby/libs/ui/gumby.tabs.js +80 -0
  29. data/vendor/assets/javascripts/gumby/libs/ui/gumby.toggleswitch.js +264 -0
  30. data/vendor/assets/javascripts/gumby/libs/ui/jquery.validation.js +142 -0
  31. data/vendor/assets/javascripts/gumby/main.js +23 -0
  32. data/vendor/assets/javascripts/gumby/plugins.js +4 -0
  33. data/vendor/assets/javascripts/gumby/production.js +3 -0
  34. data/vendor/assets/sass/_base.scss +49 -0
  35. data/vendor/assets/sass/_custom.scss +1 -0
  36. data/vendor/assets/sass/_fonts.scss +28 -0
  37. data/vendor/assets/sass/_grid.scss +339 -0
  38. data/vendor/assets/sass/_shame.scss +36 -0
  39. data/vendor/assets/sass/_typography.scss +272 -0
  40. data/vendor/assets/sass/extensions/modular-scale/lib/modular-scale.rb +128 -0
  41. data/vendor/assets/sass/extensions/modular-scale/stylesheets/_modular-scale.scss +310 -0
  42. data/vendor/assets/sass/extensions/sassy-math/lib/sassy-math.rb +159 -0
  43. data/vendor/assets/sass/extensions/sassy-math/stylesheets/_math.scss +310 -0
  44. data/vendor/assets/sass/functions/_all.scss +25 -0
  45. data/vendor/assets/sass/functions/_breakpoints.scss +11 -0
  46. data/vendor/assets/sass/functions/_button-size.scss +44 -0
  47. data/vendor/assets/sass/functions/_clearfix.scss +25 -0
  48. data/vendor/assets/sass/functions/_em.scss +11 -0
  49. data/vendor/assets/sass/functions/_even.scss +10 -0
  50. data/vendor/assets/sass/functions/_fade.scss +20 -0
  51. data/vendor/assets/sass/functions/_fancytiles.scss +29 -0
  52. data/vendor/assets/sass/functions/_fixed.scss +21 -0
  53. data/vendor/assets/sass/functions/_forms.scss +18 -0
  54. data/vendor/assets/sass/functions/_grid-calc.scss +82 -0
  55. data/vendor/assets/sass/functions/_height-calc.scss +6 -0
  56. data/vendor/assets/sass/functions/_icons.scss +35 -0
  57. data/vendor/assets/sass/functions/_line-and-height.scss +7 -0
  58. data/vendor/assets/sass/functions/_palette.scss +76 -0
  59. data/vendor/assets/sass/functions/_responsivity.scss +34 -0
  60. data/vendor/assets/sass/functions/_semantic-grid.scss +170 -0
  61. data/vendor/assets/sass/functions/_shapes.scss +22 -0
  62. data/vendor/assets/sass/functions/_strip-units.scss +5 -0
  63. data/vendor/assets/sass/functions/_tooltips.scss +98 -0
  64. data/vendor/assets/sass/functions/_typography.scss +15 -0
  65. data/vendor/assets/sass/functions/_visibility.scss +17 -0
  66. data/vendor/assets/sass/gumby.scss +39 -0
  67. data/vendor/assets/sass/ui/_all.scss +11 -0
  68. data/vendor/assets/sass/ui/_buttons.scss +154 -0
  69. data/vendor/assets/sass/ui/_forms.scss +392 -0
  70. data/vendor/assets/sass/ui/_icons.scss +23 -0
  71. data/vendor/assets/sass/ui/_images.scss +23 -0
  72. data/vendor/assets/sass/ui/_labels.scss +87 -0
  73. data/vendor/assets/sass/ui/_navbar.scss +440 -0
  74. data/vendor/assets/sass/ui/_tables.scss +89 -0
  75. data/vendor/assets/sass/ui/_tabs.scss +156 -0
  76. data/vendor/assets/sass/ui/_toggles.scss +73 -0
  77. data/vendor/assets/sass/ui/_tooltips.scss +12 -0
  78. data/vendor/assets/sass/ui/_video.scss +24 -0
  79. data/vendor/assets/sass/var/_lists.scss +20 -0
  80. data/vendor/assets/sass/var/_settings.scss +169 -0
  81. data/vendor/assets/sass/var/icons/_entypo-icon-list.scss +286 -0
  82. data/vendor/assets/sass/var/icons/_entypo.scss +294 -0
  83. metadata +167 -0
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Gumby jQuery Validation Plugin
3
+ */
4
+ !function($) {
5
+
6
+ 'use strict';
7
+
8
+ function Validation($this, req) {
9
+
10
+ if(Gumby) {
11
+ Gumby.debug('Initializing Validation', $this);
12
+ }
13
+
14
+ // input and holder .field
15
+ this.$this = $this;
16
+ this.$field = this.$this.parents('.field');
17
+
18
+ // supplied validation function with default length check
19
+ this.req = req || function() {
20
+ return !!this.$this.val().length;
21
+ };
22
+
23
+ // reference to this class
24
+ var scope = this;
25
+
26
+ // checkboxes and radio buttons use gumby.onChange event to validate
27
+ if(this.$this.is('[type=checkbox], [type=radio]')) {
28
+ this.$field = this.$this.parent('label');
29
+ this.$field.on('gumby.onChange', function() {
30
+ scope.validate();
31
+ });
32
+
33
+ // selects validate on change
34
+ } else if(this.$this.is('select')) {
35
+ this.$field = this.$this.parents('.picker');
36
+ this.$field.on('change', function() {
37
+ scope.validate();
38
+ });
39
+
40
+ // others (text input, textarea) use blur
41
+ } else {
42
+ this.$this.on('blur', function(e) {
43
+ // ignore tab
44
+ if(e.which !== 9) {
45
+ scope.validate();
46
+ }
47
+ });
48
+ }
49
+ }
50
+
51
+ // validate field
52
+ Validation.prototype.validate = function() {
53
+
54
+ var result = this.req(this.$this);
55
+
56
+ // failed
57
+ if(!result) {
58
+ this.$field.removeClass('success').addClass('danger');
59
+
60
+ // passed
61
+ } else {
62
+ //} else if(this.$field.hasClass('danger')) {
63
+ this.$field.removeClass('danger').addClass('success');
64
+ }
65
+
66
+ return result;
67
+ };
68
+
69
+ // jQuery plugin definition
70
+ $.fn.validation = function(options) {
71
+
72
+ var // extend params with defaults
73
+ settings = $.extend({
74
+ submit : false,
75
+ fail: false,
76
+ required : []
77
+ }, options),
78
+ // store validation objects
79
+ validations = [];
80
+
81
+ // init each form plugin is called on
82
+ return this.each(function() {
83
+
84
+ // no required fields so plugin is pointless
85
+ if(!settings.required.length) {
86
+ return false;
87
+ }
88
+
89
+ var $this = $(this),
90
+ reqLength = settings.required.length,
91
+ i;
92
+
93
+ // loop round each required field and instantiate new validation object
94
+ for(i = 0; i < reqLength; i++) {
95
+ validations.push(new Validation(
96
+ $this.find('[name="'+settings.required[i].name+'"]'),
97
+ settings.required[i].validate || false
98
+ ));
99
+ }
100
+
101
+ // hijack submit event
102
+ $this.on('submit', function(e) {
103
+
104
+ // reference to whole form pass/fail
105
+ var failed = false;
106
+
107
+ // if no passed attribute found we should halt form submit
108
+ if(!$this.data('passed')) {
109
+ e.preventDefault();
110
+
111
+ // loop round validation objects and validate each
112
+ var reqLength = validations.length, i;
113
+ for(i = 0; i < reqLength; i++) {
114
+ if(!validations[i].validate()) {
115
+ failed = true;
116
+ }
117
+ }
118
+
119
+ // passed
120
+ if(!failed) {
121
+ // if submit method present call that otherwise submit form
122
+ if(settings.submit && typeof settings.submit === 'function') {
123
+ settings.submit($this.serializeArray());
124
+ return;
125
+ }
126
+
127
+ // store passed bool and re-submit
128
+ $this.data('passed', true).submit();
129
+
130
+ // failed
131
+ } else {
132
+ // call fail method if present
133
+ if(settings.fail && typeof settings.fail === 'function') {
134
+ settings.fail();
135
+ return;
136
+ }
137
+ }
138
+ }
139
+ });
140
+ });
141
+ };
142
+ }(jQuery);
@@ -0,0 +1,23 @@
1
+ // Gumby is ready to go
2
+ Gumby.ready(function() {
3
+ Gumby.log('Gumby is ready to go...', Gumby.dump());
4
+
5
+ // placeholder polyfil
6
+ if(Gumby.isOldie || Gumby.$dom.find('html').hasClass('ie9')) {
7
+ $('input, textarea').placeholder();
8
+ }
9
+
10
+ // skip link and toggle on one element
11
+ // when the skip link completes, trigger the switch
12
+ $('#skip-switch').on('gumby.onComplete', function() {
13
+ $(this).trigger('gumby.trigger');
14
+ });
15
+
16
+ // Oldie document loaded
17
+ }).oldie(function() {
18
+ Gumby.warn("This is an oldie browser...");
19
+
20
+ // Touch devices loaded
21
+ }).touch(function() {
22
+ Gumby.log("This is a touch enabled device...");
23
+ });
@@ -0,0 +1,4 @@
1
+ /*! http://mths.be/placeholder v2.0.7 by @mathias */
2
+ ;(function(f,h,$){var a='placeholder' in h.createElement('input'),d='placeholder' in h.createElement('textarea'),i=$.fn,c=$.valHooks,k,j;if(a&&d){j=i.placeholder=function(){return this};j.input=j.textarea=true}else{j=i.placeholder=function(){var l=this;l.filter((a?'textarea':':input')+'[placeholder]').not('.placeholder').bind({'focus.placeholder':b,'blur.placeholder':e}).data('placeholder-enabled',true).trigger('blur.placeholder');return l};j.input=a;j.textarea=d;k={get:function(m){var l=$(m);return l.data('placeholder-enabled')&&l.hasClass('placeholder')?'':m.value},set:function(m,n){var l=$(m);if(!l.data('placeholder-enabled')){return m.value=n}if(n==''){m.value=n;if(m!=h.activeElement){e.call(m)}}else{if(l.hasClass('placeholder')){b.call(m,true,n)||(m.value=n)}else{m.value=n}}return l}};a||(c.input=k);d||(c.textarea=k);$(function(){$(h).delegate('form','submit.placeholder',function(){var l=$('.placeholder',this).each(b);setTimeout(function(){l.each(e)},10)})});$(f).bind('beforeunload.placeholder',function(){$('.placeholder').each(function(){this.value=''})})}function g(m){var l={},n=/^jQuery\d+$/;$.each(m.attributes,function(p,o){if(o.specified&&!n.test(o.name)){l[o.name]=o.value}});return l}function b(m,n){var l=this,o=$(l);if(l.value==o.attr('placeholder')&&o.hasClass('placeholder')){if(o.data('placeholder-password')){o=o.hide().next().show().attr('id',o.removeAttr('id').data('placeholder-id'));if(m===true){return o[0].value=n}o.focus()}else{l.value='';o.removeClass('placeholder');l==h.activeElement&&l.select()}}}function e(){var q,l=this,p=$(l),m=p,o=this.id;if(l.value==''){if(l.type=='password'){if(!p.data('placeholder-textinput')){try{q=p.clone().attr({type:'text'})}catch(n){q=$('<input>').attr($.extend(g(this),{type:'text'}))}q.removeAttr('name').data({'placeholder-password':true,'placeholder-id':o}).bind('focus.placeholder',b);p.data({'placeholder-textinput':q,'placeholder-id':o}).before(q)}p=p.removeAttr('id').hide().prev().attr('id',o).show()}p.addClass('placeholder');p[0].value=p.attr('placeholder')}else{p.removeClass('placeholder')}}}(this,document,jQuery));
3
+
4
+ // place any jQuery/helper plugins in here, instead of separate, slower script files.
@@ -0,0 +1,3 @@
1
+ //= require gumby/libs/modernizr-2.6.2.min
2
+ //= require gumby/libs/jquery-2.0.2.min
3
+ //= require gumby/libs/gumby.min
@@ -0,0 +1,49 @@
1
+ /* Base Styles */
2
+
3
+ @import "compass/typography/vertical_rhythm";
4
+ @include establish-baseline;
5
+
6
+ * { @include box-sizing(border-box); }
7
+
8
+ body {
9
+ background: $global-bg-color;
10
+ font-family: $font-family;
11
+ font-weight: $body-font-weight;
12
+ color: $body-font-color;
13
+ position: relative;
14
+ -webkit-font-smoothing: $font-smoothing;
15
+ -moz-osx-font-smoothing: grayscale;
16
+ @include respond(all-phones) {
17
+ -webkit-text-size-adjust: none;
18
+ -ms-text-size-adjust: none;
19
+ width: 100%;
20
+ min-width: 0;
21
+ }
22
+ }
23
+
24
+ html, body {
25
+ height: 100%;
26
+ }
27
+
28
+ .hide {
29
+ display: none;
30
+ }
31
+
32
+ .hide.active, .show {
33
+ display: block;
34
+ }
35
+
36
+ // include all entypo icon classes
37
+ @include icon(all);
38
+
39
+ // .fixed elements will be static at supplied breakpoint
40
+ // set arg to false for permanent .fixed elements
41
+ @include fixed(portrait-tablets);
42
+
43
+ .text-center { @extend %text-center; }
44
+ .text-left { @extend %text-left; }
45
+ .text-right { @extend %text-right; }
46
+ // Partial to align Text Left or Right
47
+ %text-center { text-align: center; }
48
+ %text-left { text-align: left; }
49
+ %text-right { text-align: right; }
@@ -0,0 +1 @@
1
+ // Your custom SCSS should be written here...
@@ -0,0 +1,28 @@
1
+ /* Fonts */
2
+
3
+ // Import Google Web Fonts
4
+ @import url(//fonts.googleapis.com/css?family=Open+Sans:400,300,600,700);
5
+
6
+
7
+ // Set local icon font
8
+ @font-face {
9
+ font-family: '#{$icons}';
10
+ font-style: normal;
11
+ font-weight: 400;
12
+ src: url(../fonts/icons/#{$icons}.eot);
13
+ src: url('../fonts/icons/#{$icons}.eot?#iefix') format('ie9-skip-eot'),
14
+ url('../fonts/icons/#{$icons}.woff') format('woff'),
15
+ url('../fonts/icons/#{$icons}.ttf') format('truetype');
16
+ }
17
+
18
+ // To include your own, local copies of fonts, use the following template
19
+ //
20
+ //@font-face {
21
+ // font-family: '#{$some-font-variable}';
22
+ // font-style: normal;
23
+ // font-weight: 400;
24
+ // src: url(../fonts/icons/#{$some-font-variable}.eot);
25
+ // src: url('../fonts/icons/#{$some-font-variable}.eot?#iefix') format('ie9-skip-eot'),
26
+ // url('../fonts/icons/#{$some-font-variable}.woff') format('woff'),
27
+ // url('../fonts/icons/#{$some-font-variable}.ttf') format('truetype');
28
+ //}
@@ -0,0 +1,339 @@
1
+ %zero-margin-left {
2
+ margin-left: 0;
3
+ }
4
+
5
+
6
+ /*=================================================
7
+
8
+ +++ LE GRID +++
9
+ A Responsive Grid -- Gumby defaults to a standard 960 grid,
10
+ but you can change it to whatever you'd like.
11
+
12
+ ==================================================*/
13
+
14
+ // We're removing the container class in favor
15
+ // of adding padding to rows at the $device-width
16
+ // breakpoint.
17
+
18
+ /*.container {
19
+ padding: 0 $gutter-in-px;
20
+ }*/
21
+
22
+ .row {
23
+ width: 100%;
24
+ max-width: $row-max-width + 40px;
25
+ min-width: $min-device-width;
26
+ margin: 0 auto;
27
+ padding-left: 20px;
28
+ padding-right: 20px;
29
+ .row {
30
+ min-width: 0;
31
+ padding-left: 0;
32
+ padding-right: 0;
33
+ }
34
+ }
35
+
36
+ /* To fix the grid into a different size, set max-width to your desired width */
37
+
38
+ .column, .columns {
39
+ margin-left: $gutter;
40
+ float: $default-float;
41
+ min-height: 1px;
42
+ @include box-sizing(border-box);
43
+ }
44
+
45
+ .column:first-child, .columns:first-child, .alpha {
46
+ margin-left: 0;
47
+ }
48
+
49
+ .column.omega, .columns.omega {
50
+ float: $switch-float;
51
+ }
52
+
53
+ // Generate the Grid
54
+
55
+ /* Column Classes */
56
+
57
+ // Generate Column Classes
58
+ .row {
59
+ @for $i from 1 through $cols{
60
+ @if $i == 1 {
61
+ .one.column {
62
+ width: columns($i);
63
+ }
64
+ }
65
+ .#{number-as-word($i)}.columns {
66
+ width: columns($i);
67
+ }
68
+ }
69
+ }
70
+
71
+ /* Push and Pull Classes */
72
+
73
+ // Generate Push and Pull Classes
74
+ .row {
75
+ @for $i from 1 through $cols - 1 {
76
+ .push_#{number-as-word($i)} {
77
+ margin-left: push_x($i);
78
+ &:first-child {
79
+ margin-left: push_x($i, true);
80
+ }
81
+ }
82
+ .pull_#{number-as-word($i)} {
83
+ // pull classes need to know the width of the container being pulled
84
+ @for $j from 1 through $cols - 1 {
85
+ @if $i + $j == $cols {
86
+ &.#{number-as-word($j)}.columns {
87
+ @extend %pull-100-percent;
88
+ }
89
+ }
90
+ @elseif $j == 1 {
91
+ &.one.column {
92
+ margin-left: pull_x($i, $j);
93
+ &:first-child {
94
+ @extend %zero-margin-left;
95
+ }
96
+ }
97
+ }
98
+ @else {
99
+ &.#{number-as-word($j)}.columns {
100
+ margin-left: pull_x($i, $j);
101
+ &:first-child {
102
+ @extend %zero-margin-left;
103
+ }
104
+ }
105
+ }
106
+ }
107
+ }
108
+ }
109
+ }
110
+
111
+ /* Centered Classes */
112
+
113
+ // Generate Centered Classes
114
+ .row {
115
+ @for $i from 1 through $cols - 1 {
116
+ .#{number-as-word($i)}.centered {
117
+ margin-left: centered($i);
118
+ }
119
+ }
120
+ }
121
+
122
+ /* Hybrid Grid Columns */
123
+
124
+ // Generate Hybrid Grid Column Classes
125
+ .#{number-as-word($hybrid)}.colgrid .row {
126
+ @for $i from 1 through $hybrid{
127
+ @if $i == 1 {
128
+ .one.column {
129
+ width: columns($i, true);
130
+ }
131
+ }
132
+ .#{number-as-word($i)}.columns{
133
+ width: columns($i, true);
134
+ }
135
+ }
136
+ }
137
+
138
+ /* Hybrid Push and Pull Classes */
139
+
140
+ // Generate Hybrid Push Classes
141
+ .#{number-as-word($hybrid)}.colgrid .row {
142
+ @for $i from 1 through $hybrid - 1{
143
+ .push_#{number-as-word($i)} {
144
+ margin-left: push_x($i, false, true);
145
+ &:first-child {
146
+ margin-left: push_x($i, true, true);
147
+ }
148
+ }
149
+ .pull_#{number-as-word($i)} {
150
+ // pull classes need to know the width of the container being pulled
151
+ @for $j from 1 through $hybrid - 1 {
152
+ @if $i + $j == $hybrid {
153
+ &.#{number-as-word($j)}.columns {
154
+ @extend %pull-100-percent;
155
+ }
156
+ }
157
+ @elseif $j == 1 {
158
+ &.one.column {
159
+ margin-left: pull_x($i, $j, true);
160
+ &:first-child {
161
+ @extend %zero-margin-left;
162
+ }
163
+ }
164
+ }
165
+ @else {
166
+ &.#{number-as-word($j)}.columns {
167
+ margin-left: pull_x($i, $j, true);
168
+ &:first-child {
169
+ @extend %zero-margin-left;
170
+ }
171
+ }
172
+ }
173
+ }
174
+ }
175
+ }
176
+ }
177
+
178
+ // helper placeholder to condense the repeated
179
+ // need for resetting first-child margins to zero
180
+ %zero-margin-left {
181
+ margin-left: 0;
182
+ }
183
+
184
+ %pull-100-percent {
185
+ margin-left: -100%;
186
+ }
187
+
188
+ /* Hybrid Centered Classes */
189
+
190
+ // Generate Centered Classes
191
+ .#{number-as-word($hybrid)}.colgrid .row {
192
+ @for $i from 1 through $hybrid - 1 {
193
+ .#{number-as-word($i)}.centered {
194
+ margin-left: centered($i, true);
195
+ }
196
+ }
197
+ }
198
+
199
+ .pull_right { @include pull(right); }
200
+
201
+ .pull_left { @include pull(left); }
202
+
203
+ img, object, embed {
204
+ max-width: 100%;
205
+ height: auto;
206
+ }
207
+
208
+ img {
209
+ -ms-interpolation-mode: bicubic;
210
+ }
211
+
212
+ #map_canvas img, .map_canvas img {
213
+ max-width: none !important;
214
+ }
215
+
216
+ /* Tile Grid */
217
+
218
+ .tiles {
219
+ display: block;
220
+ overflow: hidden;
221
+ > li, > .tile {
222
+ display: block;
223
+ height: auto;
224
+ float: left;
225
+ padding-bottom:0;
226
+ }
227
+ &.two_up {
228
+ margin-left: -4%;
229
+ > li, > .tile {
230
+ margin-left: 4%;
231
+ width: 46%;
232
+ }
233
+ }
234
+ &.three_up, &.four_up {
235
+ margin-left: -2%;
236
+ }
237
+ &.three_up > li, &.three_up > .tile {
238
+ margin-left: 2%;
239
+ width: 31.3%;
240
+ }
241
+ &.four_up > li, &.four_up > .tile {
242
+ margin-left: 2%;
243
+ width: 23%;
244
+ }
245
+ &.five_up {
246
+ margin-left: -1.5%;
247
+ > li, > .tile {
248
+ margin-left: 1.5%;
249
+ width: 18.5%;
250
+ }
251
+ }
252
+ }
253
+
254
+ /* Nicolas Gallagher's micro clearfix */
255
+
256
+ .clearfix {
257
+ @include clearfix();
258
+ }
259
+
260
+ .row {
261
+ @include clearfix();
262
+ }
263
+
264
+
265
+ // vertically align stuff
266
+
267
+ .valign {
268
+ &:before {
269
+ content:' ';
270
+ display: inline-block;
271
+ height: 400px;
272
+ vertical-align: middle;
273
+ margin-right: -0.25em;
274
+ }
275
+ > div, > article, > section, > figure {
276
+ display: inline-block;
277
+ vertical-align: middle;
278
+ }
279
+ }
280
+
281
+
282
+ /* Mobile */
283
+
284
+ @include respond(all-phones) {
285
+ body {
286
+ -webkit-text-size-adjust: none;
287
+ -ms-text-size-adjust: none;
288
+ width: 100%;
289
+ min-width: 0;
290
+ }
291
+ .container {
292
+ min-width: 0;
293
+ margin-left: 0;
294
+ margin-right: 0;
295
+ }
296
+ .row {
297
+ width: 100%;
298
+ min-width: 0;
299
+ margin-left: 0;
300
+ margin-right: 0;
301
+ .row {
302
+ .column, .columns {
303
+ padding: 0;
304
+ }
305
+ }
306
+ .centered {
307
+ margin-left: 0 !important;
308
+ }
309
+ }
310
+ .column, .columns {
311
+ width: auto !important;
312
+ float: none;
313
+ margin-left: 0;
314
+ margin-right: 0;
315
+ }
316
+ .column:last-child, .columns:last-child {
317
+ margin-right: 0;
318
+ float: none;
319
+ }
320
+
321
+ [class*="column"] {
322
+ + [class*="column"]:last-child {
323
+ float: none;
324
+ }
325
+ &:before {
326
+ display: table;
327
+ }
328
+ &:after {
329
+ display: table;
330
+ clear: both;
331
+ }
332
+ }
333
+ [class^="push_"],
334
+ [class*="push_"],
335
+ [class^="pull_"],
336
+ [class*="pull_"] {
337
+ margin-left: 0 !important;
338
+ }
339
+ }