gridle 2.0.2 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2300b51661efacc64ad8f9403968063a2f4d998d
4
- data.tar.gz: a86161be4699506fe4613ef08001d96c8a0f16cb
3
+ metadata.gz: dcfa079cf092ca80ec0dc421cbac37026f7c0f37
4
+ data.tar.gz: 2ae78f265100dc35593a744bc4588bc96d7d79f2
5
5
  SHA512:
6
- metadata.gz: 4cdb907f5e605d8ea18d07bb07c43d4c4256058d5c2b15a999aba127d5ef4665459a04b35b1389cd64247a60b04fc7909a9e165b1d52820331cbaa9c2889668e
7
- data.tar.gz: f29a6f1616cd658e03f5439d2ac0cb05c3f7ed54b0b5d2b189efb51d1bca69792a973024cce216bba03e37fdc6fbc0e90e99b0d2e4c93fc06c0b35de79093f37
6
+ metadata.gz: 901acf0fca837f2a181002f21374a345eb7b8f1e80673ed1c6cec632a6147329c43fe6fb6da202b0c0d6a60a91df47733f0e9ef3b491748c5ea7d98006d8996d
7
+ data.tar.gz: cb01d68152a8ad7242610aebe74f6ab6f2eb4334869cd2b08d2f39219c550d5b5813797359cd2b85d225103bb85861e6951c660dd28718f4a05762a4554142bb
@@ -17,8 +17,8 @@ Compass::Frameworks.register('gridle', :path => extension_path)
17
17
  # a prerelease version
18
18
  # Date is in the form of YYYY-MM-DD
19
19
  module Extension
20
- VERSION = "2.0.2"
21
- DATE = "2015-10-09"
20
+ VERSION = "2.0.4"
21
+ DATE = "2015-10-21"
22
22
  end
23
23
 
24
24
  # This is where any custom SassScript should be placed. The functions will be
@@ -1,3 +1,20 @@
1
+ //
2
+ // Layout helper
3
+ //
4
+ @mixin gridle_layout(
5
+ $layout,
6
+ $context : null
7
+ ) {
8
+ @include gridle_state($context) {
9
+ @include gridle_row();
10
+ @each $sel, $l in $layout {
11
+ > #{$sel} {
12
+ @include gridle($l);
13
+ }
14
+ }
15
+ }
16
+ }
17
+
1
18
  //
2
19
  // Gridle state
3
20
  //
@@ -47,6 +64,8 @@
47
64
  @include _gridle_state($state, $has-parent, true) {
48
65
  @content;
49
66
  }
67
+ } @else {
68
+ @content;
50
69
  }
51
70
  }
52
71
 
@@ -120,12 +139,23 @@
120
139
  }
121
140
 
122
141
 
142
+ //
143
+ // Gridle helper
144
+ //
145
+ @mixin gridle($layout) {
146
+ $map : _gridle_get_gridle_set_map_from_list($layout);
147
+ @if type-of($map) == map {
148
+ @include gridle_set($map);
149
+ }
150
+ }
151
+
152
+
123
153
  //
124
154
  // Helper to apply multiple config for a certain state with one mixin
125
155
  //
126
156
  @mixin gridle_set(
127
157
  $settings,
128
- $state : default
158
+ $state : current
129
159
  ) {
130
160
  // init if needed
131
161
  @include gridle_init();
@@ -154,9 +184,11 @@
154
184
  }
155
185
  } @else if $sn == grid {
156
186
  @if length($sv) == 2 {
157
- @include gridle(nth($sv,1), nth($sv,2));
187
+ @include gridle_grid(nth($sv,1), nth($sv,2));
188
+ } @else if type-of($sv) == list and length($sv) == 1 {
189
+ @include gridle_grid(nth($sv,1));
158
190
  } @else {
159
- @include gridle($sv);
191
+ @include gridle_grid($sv);
160
192
  }
161
193
  } @else if $sn == grid-grow {
162
194
  @if $sv == true {
@@ -195,7 +227,11 @@
195
227
  @include gridle_suffix($sv);
196
228
  }
197
229
  } @else if $sn == clear-each {
198
- @include gridle_clear_each(nth($sv,1), nth($sv,2));
230
+ @if length($sv) == 2 {
231
+ @include gridle_clear_each(nth($sv,1), nth($sv,2));
232
+ } @else {
233
+ @include gridle_clear_each($sv);
234
+ }
199
235
  } @else if $sn == grid-centered and $sv == true {
200
236
  @include gridle_grid_centered();
201
237
  } @else if $sn == row and $sv == true {
@@ -253,11 +289,23 @@
253
289
  } @else if $sn == float {
254
290
  @include gridle_float($sv);
255
291
  } @else if $sn == clear {
256
- @include gridle_clear($sv);
292
+ @if $sv == true {
293
+ @include gridle_clear();
294
+ } @else {
295
+ @include gridle_clear($sv);
296
+ }
257
297
  } @else if $sn == no-gutter {
258
- @include gridle_no_gutter($sv);
298
+ @if $sv == true {
299
+ @include gridle_no_gutter();
300
+ } @else {
301
+ @include gridle_no_gutter($sv);
302
+ }
259
303
  } @else if $sn == gutter or $sn == gutter-width {
260
- @include gridle_gutter($sv);
304
+ @if $sv == true {
305
+ @include gridle_gutter();
306
+ } @else {
307
+ @include gridle_gutter($sv);
308
+ }
261
309
  } @else {
262
310
  // we do nothing
263
311
  }
@@ -266,6 +314,236 @@
266
314
  }
267
315
 
268
316
 
317
+ //
318
+ // Push
319
+ //
320
+ @mixin _gridle_common_push(
321
+ $state : default
322
+ ) {
323
+ // css
324
+ position:relative;
325
+ // handle direction attribute
326
+ @if gridle_get_state_var(dir-attribute, $state) {
327
+ [dir="rtl"] & {
328
+ left: auto;
329
+ }
330
+ [dir="ltr"] & {
331
+ right: auto;
332
+ }
333
+ }
334
+ }
335
+ @mixin gridle_push(
336
+ $columns,
337
+ $context : null
338
+ ) {
339
+ @include _gridle_call(push) {
340
+ // variables :
341
+ @if type-of($context) != number {
342
+ $context : gridle_get_state_var(context);
343
+ }
344
+ $direction : gridle_get_state_var(direction);
345
+ $name-multiplicator : gridle_get_state_var(name-multiplicator);
346
+ $column-width : gridle_get_state_var(column-width);
347
+
348
+ // vars :
349
+ $width : 0;
350
+ @if $column-width {
351
+ $width : $column-width * ($columns / $name-multiplicator);
352
+ } @else {
353
+ $width : percentage(1 / $context) * ($columns / $name-multiplicator);
354
+ }
355
+ // @if $direction == rtl { $width : $width*-1; }
356
+ // left:$width;
357
+ // @if $direction == ltr {
358
+ // [dir="rtl"] & {
359
+ // left: $width * -1;
360
+ // }
361
+ // }
362
+
363
+ // set value :
364
+ @if $direction == rtl { right:$width; }
365
+ @else { left:$width; }
366
+ // handle direction attribute
367
+ @if gridle_get_state_var(dir-attribute) {
368
+ [dir="rtl"] & {
369
+ right: $width;
370
+ }
371
+ [dir="ltr"] & {
372
+ left: $width;
373
+ }
374
+ }
375
+ }
376
+ }
377
+
378
+
379
+ //
380
+ // Pull
381
+ //
382
+ @mixin _gridle_common_pull(
383
+ $state : default
384
+ ) {
385
+ // css
386
+ position:relative;
387
+ // handle direction attribute
388
+ @if gridle_get_state_var(dir-attribute, $state) {
389
+ [dir="rtl"] & {
390
+ right: auto;
391
+ }
392
+ [dir="ltr"] & {
393
+ left: auto;
394
+ }
395
+ }
396
+ }
397
+ @mixin gridle_pull(
398
+ $columns,
399
+ $context : null
400
+ ) {
401
+ @include _gridle_call(pull) {
402
+ // variables :
403
+ @if type-of($context) != number {
404
+ $context : gridle_get_state_var(context);
405
+ }
406
+ $direction : gridle_get_state_var(direction);
407
+ $name-multiplicator : gridle_get_state_var(name-multiplicator);
408
+ $column-width : gridle_get_state_var(column-width);
409
+
410
+ // vars :
411
+ $width : 0;
412
+ @if $column-width {
413
+ $width : $column-width * ($columns / $name-multiplicator);
414
+ } @else {
415
+ $width : percentage(1 / $context) * ($columns / $name-multiplicator);
416
+ }
417
+ // @if $direction == rtl { $width : $width*-1; }
418
+ // right:$width;
419
+ // @if $direction == ltr {
420
+ // [dir="rtl"] & {
421
+ // left: $width * -1;
422
+ // }
423
+ // }
424
+
425
+ // set value :
426
+ @if $direction == rtl { left:$width; }
427
+ @else { right:$width; }
428
+ // handle direction attribute
429
+ @if gridle_get_state_var(dir-attribute) {
430
+ [dir="rtl"] & {
431
+ left: $width;
432
+ }
433
+ [dir="ltr"] & {
434
+ right: $width;
435
+ }
436
+ }
437
+ }
438
+ }
439
+
440
+
441
+ //
442
+ // Prefix
443
+ //
444
+ @mixin _gridle_common_prefix(
445
+ $state : default
446
+ ) {
447
+ // handle direction attribute
448
+ @if gridle_get_state_var(dir-attribute, $state) {
449
+ [dir="rtl"] & {
450
+ margin-left: auto;
451
+ }
452
+ [dir="ltr"] & {
453
+ margin-right: auto;
454
+ }
455
+ }
456
+ }
457
+ @mixin gridle_prefix(
458
+ $columns,
459
+ $context : null
460
+ ) {
461
+ @include _gridle_call(prefix) {
462
+ // vars :
463
+ @if type-of($context) != number {
464
+ $context : gridle_get_state_var(context);
465
+ }
466
+ $direction : gridle_get_state_var(direction);
467
+ $name-multiplicator : gridle_get_state_var(name-multiplicator);
468
+ $column-width : gridle_get_state_var(column-width);
469
+
470
+ // vars :
471
+ $width : 0;
472
+ @if $column-width {
473
+ $width : $column-width * ($columns / $name-multiplicator);
474
+ } @else {
475
+ $width : percentage(1 / $context) * ($columns / $name-multiplicator);
476
+ }
477
+
478
+ // set value :
479
+ @if $direction == rtl { margin-right:$width; }
480
+ @else { margin-left:$width; }
481
+ // handle direction attribute
482
+ @if gridle_get_state_var(dir-attribute) {
483
+ [dir="rtl"] & {
484
+ margin-right: $width;
485
+ }
486
+ [dir="ltr"] & {
487
+ margin-left: $width;
488
+ }
489
+ }
490
+ }
491
+ }
492
+
493
+
494
+ //
495
+ // Suffix
496
+ //
497
+ @mixin _gridle_common_suffix(
498
+ $state : default
499
+ ) {
500
+ @if gridle_get_state_var(dir-attribute, $state) {
501
+ [dir="rtl"] & {
502
+ margin-right: auto;
503
+ }
504
+ [dir="ltr"] & {
505
+ margin-left: auto;
506
+ }
507
+ }
508
+ }
509
+ @mixin gridle_suffix(
510
+ $columns,
511
+ $context : null
512
+ ) {
513
+ @include _gridle_call(suffix) {
514
+ // vars :
515
+ @if type-of($context) != number {
516
+ $context : gridle_get_state_var(context);
517
+ }
518
+ $direction : gridle_get_state_var(direction);
519
+ $name-multiplicator : gridle_get_state_var(name-multiplicator);
520
+ $column-width : gridle_get_state_var(column-width);
521
+
522
+ // vars :
523
+ $width : 0;
524
+ @if $column-width {
525
+ $width : $column-width * ($columns / $name-multiplicator);
526
+ } @else {
527
+ $width : percentage(1 / $context) * ($columns / $name-multiplicator);
528
+ }
529
+
530
+ // set value :
531
+ @if $direction == rtl { margin-left:$width; }
532
+ @else { margin-right:$width; }
533
+
534
+ // handle direction attribute
535
+ @if gridle_get_state_var(dir-attribute) {
536
+ [dir="rtl"] & {
537
+ margin-left: $width;
538
+ }
539
+ [dir="ltr"] & {
540
+ margin-right: $width;
541
+ }
542
+ }
543
+ }
544
+ }
545
+
546
+
269
547
  //
270
548
  // Row debug
271
549
  //
@@ -527,7 +805,7 @@
527
805
 
528
806
  // check that we have a gutter map
529
807
  @each $side, $value in $gutters {
530
- @if $value > 0 {
808
+ @if $value and $value > 0 {
531
809
  padding-#{$side} : $value;
532
810
  }
533
811
  }
@@ -24,6 +24,22 @@
24
24
  @include _gridle_call(row) {
25
25
  padding-left: 0 !important;
26
26
  padding-right: 0 !important;
27
+ margin-left: -#{gridle_get_state_var(gutter-left)};
28
+ margin-right: -#{gridle_get_state_var(gutter-right)};
29
+ font-size:0; // to avoid problems with inline-block margins
30
+
31
+ // do this only when not in generate phase
32
+ // mean that we use the mixin directly
33
+ @if _gridle_is_in_generate_phase() == false {
34
+ @each $stateName, $state in gridle_get_states() {
35
+ @include gridle_state($state) {
36
+ & #{str-replace(#{&},".state-#{gridle_get_state_var(name, $state)}","")} {
37
+ margin-left: -#{gridle_get_state_var(gutter-left, $state)};
38
+ margin-right: -#{gridle_get_state_var(gutter-right, $state)};
39
+ }
40
+ }
41
+ }
42
+ }
27
43
  }
28
44
  }
29
45
 
@@ -41,6 +57,22 @@
41
57
  @include _gridle_call(col) {
42
58
  padding-left: 0 !important;
43
59
  padding-right: 0 !important;
60
+ margin-left: -#{gridle_get_state_var(gutter-left)};
61
+ margin-right: -#{gridle_get_state_var(gutter-right)};
62
+ font-size:0; // to avoid problems with inline-block margins
63
+
64
+ // do this only when not in generate phase
65
+ // mean that we use the mixin directly
66
+ @if _gridle_is_in_generate_phase() == false {
67
+ @each $stateName, $state in gridle_get_states() {
68
+ @include gridle_state($state) {
69
+ & #{str-replace(#{&},".state-#{gridle_get_state_var(name, $state)}","")} {
70
+ margin-left: -#{gridle_get_state_var(gutter-left, $state)};
71
+ margin-right: -#{gridle_get_state_var(gutter-right, $state)};
72
+ }
73
+ }
74
+ }
75
+ }
44
76
  }
45
77
  }
46
78
 
@@ -84,34 +116,37 @@
84
116
  $state : default
85
117
  ) {
86
118
  // vars
87
- $direction : gridle_get_state_var(direction, $state);
119
+ // $direction : gridle_get_state_var(direction, $state);
88
120
 
89
121
  // css
90
122
  display:inline-block;
91
123
  min-height:1px;
92
- @if $direction == rtl {
93
- float:right;
94
- // direction:rtl;
95
- } @else {
96
- float:left;
97
- // direction:ltr;
98
- }
124
+ // @if $direction == rtl {
125
+ // float:right;
126
+ // // direction:rtl;
127
+ // } @else {
128
+ // float:left;
129
+ // // direction:ltr;
130
+ // }
131
+ // float:left;
99
132
  @if $gridle-vendor-prefix {
100
133
  -webkit-box-sizing: border-box;
101
134
  -moz-box-sizing: border-box;
102
135
  }
136
+ font-size:1rem; // reset the font size
103
137
  box-sizing: border-box;
138
+ vertical-align: top;
104
139
  @include gridle_gutter();
105
140
 
106
141
  }
107
- @mixin gridle(
142
+ @mixin gridle_grid(
108
143
  $columns,
109
144
  $context : null
110
145
  ) {
111
146
  @if $columns == grow {
112
147
  @include gridle_grid_grow();
113
148
  } @else if $columns == adapt {
114
- @include gridle_grow_adapt();
149
+ @include gridle_grid_adapt();
115
150
  } @else {
116
151
 
117
152
  @include _gridle_call(grid) {
@@ -124,9 +159,10 @@
124
159
  $name-multiplicator : gridle_get_state_var(name-multiplicator);
125
160
  $gutter-left : gridle_get_state_var(gutter-left);
126
161
  $gutter-right : gridle_get_state_var(gutter-right);
162
+ $column-width : gridle_get_state_var(column-width);
127
163
 
128
164
  // manage columns
129
- @if type-of($columns) != number and map-has-key($_gridle_columns, $columns) {
165
+ @if type-of($columns) != number and gridle_has_column($columns) {
130
166
  // the columns is a saved one, get the context and column value
131
167
  $column : map-get($_gridle_columns, $columns);
132
168
  $context : map-get($column, context);
@@ -138,24 +174,18 @@
138
174
  }
139
175
 
140
176
  // width :
141
- $width : percentage(1 / $context * $columns);
177
+ $width : 0;
178
+ @if $column-width {
179
+ $width : $column-width * $columns;
180
+ } @else {
181
+ $width : percentage(1 / $context * $columns);
182
+ }
142
183
 
143
184
  // set value :
144
185
  width:$width;
145
-
146
- @if $columns == $context {
147
- display: inline-block;
148
- }
149
186
  }
150
187
  }
151
188
  }
152
- // alias to gridle
153
- @mixin gridle_grid(
154
- $columns,
155
- $context : null
156
- ) {
157
- @include gridle($columns, $context);
158
- }
159
189
 
160
190
 
161
191
  //
@@ -187,7 +217,17 @@
187
217
  @include _gridle_call(row-full) {
188
218
  $direction : gridle_get_state_var(direction);
189
219
  width: 100vw;
190
- @if $direction == rtl {
220
+ @if $direction == ltr {
221
+ margin-left:50% !important;
222
+ margin-right:0 !important;
223
+ @if $gridle-vendor-prefix {
224
+ -webkit-transform: translateX(-50%);
225
+ -moz-transition: translateX(-50%);
226
+ -ms-transform: translateX(-50%);
227
+ -o-transform: translateX(-50%);
228
+ }
229
+ transform: translateX(-50%);
230
+ } @else {
191
231
  margin-right:50% !important;
192
232
  margin-left:0 !important;
193
233
  @if $gridle-vendor-prefix {
@@ -197,16 +237,30 @@
197
237
  -o-transform: translateX(50%);
198
238
  }
199
239
  transform: translateX(50%);
200
- } @else {
201
- margin-left:50% !important;
202
- margin-right:0 !important;
203
- @if $gridle-vendor-prefix {
204
- -webkit-transform: translateX(-50%);
205
- -moz-transition: translateX(-50%);
206
- -ms-transform: translateX(-50%);
207
- -o-transform: translateX(-50%);
240
+ }
241
+ @if gridle_get_state_var(dir-attribute) {
242
+ [dir="ltr"] & {
243
+ margin-left:50% !important;
244
+ margin-right:0 !important;
245
+ @if $gridle-vendor-prefix {
246
+ -webkit-transform: translateX(-50%);
247
+ -moz-transition: translateX(-50%);
248
+ -ms-transform: translateX(-50%);
249
+ -o-transform: translateX(-50%);
250
+ }
251
+ transform: translateX(-50%);
252
+ }
253
+ [dir="rtl"] & {
254
+ margin-right:50% !important;
255
+ margin-left:0 !important;
256
+ @if $gridle-vendor-prefix {
257
+ -webkit-transform: translateX(50%);
258
+ -moz-transition: translateX(50%);
259
+ -ms-transform: translateX(50%);
260
+ -o-transform: translateX(50%);
261
+ }
262
+ transform: translateX(50%);
208
263
  }
209
- transform: translateX(-50%);
210
264
  }
211
265
  }
212
266
  }
@@ -226,6 +280,7 @@
226
280
  -moz-box-sizing: border-box;
227
281
  }
228
282
  box-sizing: border-box;
283
+ font-size: 1rem;
229
284
  @include gridle_gutter();
230
285
  }
231
286
  @mixin gridle_grid_adapt(
@@ -249,6 +304,7 @@
249
304
  -moz-box-sizing: border-box;
250
305
  }
251
306
  box-sizing: border-box;
307
+ font-size: 1rem;
252
308
  @include gridle_gutter();
253
309
 
254
310
  }
@@ -259,122 +315,6 @@
259
315
  }
260
316
 
261
317
 
262
- //
263
- // Push
264
- //
265
- @mixin _gridle_common_push(
266
- $state : default
267
- ) {
268
- // css
269
- position:relative;
270
- }
271
- @mixin gridle_push(
272
- $columns,
273
- $context : null
274
- ) {
275
- @include _gridle_call(push) {
276
- // variables :
277
- @if type-of($context) != number {
278
- $context : gridle_get_state_var(context);
279
- }
280
- $direction : gridle_get_state_var(direction);
281
- $name-multiplicator : gridle_get_state_var(name-multiplicator);
282
-
283
- // vars :
284
- $width : percentage(1 / $context) * ($columns / $name-multiplicator);
285
- @if $direction == rtl { $width : $width*-1; }
286
- left:$width;
287
- }
288
- }
289
-
290
-
291
- //
292
- // Pull
293
- //
294
- @mixin _gridle_common_pull(
295
- $state : default
296
- ) {
297
- // css
298
- position:relative;
299
- }
300
- @mixin gridle_pull(
301
- $columns,
302
- $context : null
303
- ) {
304
- @include _gridle_call(pull) {
305
- // variables :
306
- @if type-of($context) != number {
307
- $context : gridle_get_state_var(context);
308
- }
309
- $direction : gridle_get_state_var(direction);
310
- $name-multiplicator : gridle_get_state_var(name-multiplicator);
311
-
312
- // vars :
313
- $width : percentage(1 / $context) * ($columns / $name-multiplicator);
314
- @if $direction == rtl { $width : $width*-1; }
315
- right:$width;
316
- }
317
- }
318
-
319
-
320
- //
321
- // Prefix
322
- //
323
- @mixin _gridle_common_prefix(
324
- $state : default
325
- ) {
326
- }
327
- @mixin gridle_prefix(
328
- $columns,
329
- $context : null
330
- ) {
331
- @include _gridle_call(prefix) {
332
- // vars :
333
- @if type-of($context) != number {
334
- $context : gridle_get_state_var(context);
335
- }
336
- $direction : gridle_get_state_var(direction);
337
- $name-multiplicator : gridle_get_state_var(name-multiplicator);
338
-
339
- // vars :
340
- $width : percentage(1 / $context) * ($columns / $name-multiplicator);
341
-
342
- // set value :
343
- @if $direction == rtl { margin-right:$width; }
344
- @else { margin-left:$width; }
345
- }
346
- }
347
-
348
-
349
- //
350
- // Suffix
351
- //
352
- @mixin _gridle_common_suffix(
353
- $state : default
354
- ) {
355
- }
356
- @mixin gridle_suffix(
357
- $columns,
358
- $context : null
359
- ) {
360
- @include _gridle_call(suffix) {
361
- // vars :
362
- @if type-of($context) != number {
363
- $context : gridle_get_state_var(context);
364
- }
365
- $direction : gridle_get_state_var(direction);
366
- $name-multiplicator : gridle_get_state_var(name-multiplicator);
367
-
368
- // vars :
369
- $width : percentage(1 / $context) * ($columns / $name-multiplicator);
370
-
371
- // set value :
372
- @if $direction == rtl { margin-left:$width; }
373
- @else { margin-right:$width; }
374
- }
375
- }
376
-
377
-
378
318
  //
379
319
  // Order
380
320
  //
@@ -428,24 +368,29 @@
428
368
 
429
369
  > * {
430
370
  float:none !important;
431
- vertical-align:$align;
371
+ @if in-map($align, top) {
372
+ vertical-align:top;
373
+ } @elseif in-map($align, middle) {
374
+ vertical-align:middle;
375
+ } @else {
376
+ vertical-align:bottom;
377
+ }
432
378
  font-size:1rem;
433
379
  }
434
-
435
380
  }
436
381
 
437
382
  @each $a in $align {
438
- @if $align == left {
383
+ @if $a == left {
439
384
  text-align: left;
440
- } @else if $align == center {
385
+ } @else if $a == center {
441
386
  text-align: center;
442
- } @else if $align == right {
387
+ } @else if $a == right {
443
388
  text-align: right;
444
- } @else if $align == top {
389
+ } @else if $a == top {
445
390
  vertical-align: top;
446
- } @else if $align == middle {
391
+ } @else if $a == middle {
447
392
  vertical-align: middle;
448
- } @else if $align == bottom {
393
+ } @else if $a == bottom {
449
394
  vertical-align: bottom;
450
395
  }
451
396
  }