spree_frontend 4.1.0.rc3 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/cart.svg +1 -0
  3. data/app/assets/javascripts/spree/frontend/cart.js +9 -9
  4. data/app/assets/javascripts/spree/frontend/turbolinks_scroll_fix.js +55 -0
  5. data/app/assets/javascripts/spree/frontend/views/spree/home/product_carousels.js +22 -12
  6. data/app/assets/javascripts/spree/frontend/views/spree/products/cart_form.js +9 -4
  7. data/app/assets/javascripts/spree/frontend/views/spree/products/description.js +2 -2
  8. data/app/assets/javascripts/spree/frontend/views/spree/products/index.js +31 -27
  9. data/app/assets/stylesheets/spree/frontend/helpers/spree/frontend_helper.scss +6 -4
  10. data/app/assets/stylesheets/spree/frontend/views/spree/checkout/confirm.scss +7 -2
  11. data/app/assets/stylesheets/spree/frontend/views/spree/checkout/edit.scss +8 -1
  12. data/app/assets/stylesheets/spree/frontend/views/spree/layouts/spree_application.scss +18 -3
  13. data/app/assets/stylesheets/spree/frontend/views/spree/orders/show.scss +4 -3
  14. data/app/assets/stylesheets/spree/frontend/views/spree/products/cart_form.scss +10 -0
  15. data/app/assets/stylesheets/spree/frontend/views/spree/products/index.scss +3 -3
  16. data/app/assets/stylesheets/spree/frontend/views/spree/products/show.scss +7 -4
  17. data/app/assets/stylesheets/spree/frontend/views/spree/shared/_color_select.scss +7 -2
  18. data/app/assets/stylesheets/spree/frontend/views/spree/shared/carousel/single.scss +4 -0
  19. data/app/assets/stylesheets/spree/frontend/views/spree/shared/carousel/thumbnails.scss +1 -1
  20. data/app/assets/stylesheets/spree/frontend/views/spree/shared/cart.scss +2 -4
  21. data/app/helpers/spree/frontend_helper.rb +37 -7
  22. data/app/helpers/spree/structured_data_helper.rb +1 -1
  23. data/app/views/spree/checkout/_confirm.html.erb +4 -38
  24. data/app/views/spree/checkout/_payment.html.erb +3 -1
  25. data/app/views/spree/checkout/_summary.html.erb +17 -16
  26. data/app/views/spree/checkout/edit.html.erb +1 -1
  27. data/app/views/spree/checkout/registration.html.erb +2 -2
  28. data/app/views/spree/orders/_line_item.html.erb +1 -5
  29. data/app/views/spree/orders/_line_item_data.html.erb +1 -1
  30. data/app/views/spree/orders/edit.html.erb +36 -4
  31. data/app/views/spree/orders/show.html.erb +7 -6
  32. data/app/views/spree/products/_cart_form.html.erb +2 -2
  33. data/app/views/spree/products/_filters_desktop.html.erb +2 -2
  34. data/app/views/spree/products/_filters_mobile.html.erb +2 -2
  35. data/app/views/spree/products/_gallery.html.erb +8 -12
  36. data/app/views/spree/products/_gallery_modal.html.erb +34 -23
  37. data/app/views/spree/shared/_cart.html.erb +2 -2
  38. data/app/views/spree/shared/_checkout_header.html.erb +15 -6
  39. data/app/views/spree/shared/_color_select.html.erb +2 -2
  40. data/app/views/spree/shared/_line_item.html.erb +34 -0
  41. data/app/views/spree/shared/_nav_bar.html.erb +2 -10
  42. data/app/views/spree/shared/_option_values.html.erb +2 -2
  43. data/app/views/spree/shared/_order_details.html.erb +1 -5
  44. data/app/views/spree/shared/_product_added_modal.html.erb +1 -1
  45. data/app/views/spree/taxons/_subcategories.html.erb +5 -1
  46. data/app/views/spree/users/show.html.erb +1 -1
  47. data/lib/generators/spree/frontend/copy_storefront/copy_storefront_generator.rb +2 -1
  48. metadata +11 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6300d485b7d4f5e1ceab8dc942affa9be2a7fcb0cca1e233837428e230d45742
4
- data.tar.gz: b5c81d760faa402320a3f2298f9c4e22eef9ec08c63e938bae635b35c989e529
3
+ metadata.gz: 5317d2a7a6ca3ca3bfb57ecec0acf3855ac522773bff72c884ee245475c5fda7
4
+ data.tar.gz: 5b18212fba5963c66c4ef309335f5627506c384fde5ac8f50f84130f1bfdecc1
5
5
  SHA512:
6
- metadata.gz: dbdb68dfcc5c7a71b48e2e3777428e40bbbc7f86307d3fcf55fb8d5e15070414445ea372f647b3b60819f68adc0dc37bdf6de3fc3db4c45c5e424b5f6b6edb27
7
- data.tar.gz: 748be2c488b297951807df6038a97f99f48efbe2b188d19117276eeee8f260ece52dfcf2bfd38dc9bc0b6e14ecbb755c63fa3e4a721563f1fe5230070ded6585
6
+ metadata.gz: 581b2b7605797cbd41255ae3a7c6039599bfb927ca626081fc90db6ed763a70bc2be1f6e2f8b8f32199f37cdbf165dcea7cb4950ab17efe52c68d2a46782e409
7
+ data.tar.gz: 4cdc7a0dd326ff60029ea95993a213efd34ff292f01e1a2e5ff497f7d968ee61fde81e784d2993a8a86a97c77015e2e2088d7a2ef9275a0b1d9671019f5bc416
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="92" viewBox="0 0 82.6 91.7" width="83"><g fill="currentColor"><path d="M33.6 73.3c0 0 0 0 0 0 -5 0-9.2 4.1-9.2 9.2 0 5 4.1 9.2 9.2 9.2 5 0 9.2-4.1 9.2-9.2 0 0 0 0 0 0 0-5-4.2-9.2-9.2-9.2Zm0 12.4c0 0 0 0 0 0 -1.8 0-3.3-1.5-3.3-3.3 0-1.8 1.5-3.3 3.3-3.3 1.8 0 3.3 1.5 3.3 3.3 0 1.8-1.5 3.3-3.3 3.3Z"/><path d="M64.3 73.3c-5 0-9.2 4.1-9.2 9.2 0 5 4.1 9.2 9.2 9.2 5 0 9.2-4.1 9.2-9.2 0 0 0 0 0 0 0-5-4.2-9.2-9.2-9.2Zm0 12.4c-1.8 0-3.3-1.5-3.3-3.3 0-1.8 1.5-3.3 3.3-3.3 1.8 0 3.3 1.5 3.3 3.3 0 1.8-1.5 3.3-3.3 3.3Z"/><path d="M82 31.3c-0.6-0.7-1.4-1.2-2.3-1.2l-59.2 0 -2.5-9.6c-0.3-1.3-1.5-2.2-2.9-2.2l-12.2 0c-1.6 0-3 1.3-3 3 0 1.6 1.3 3 3 3l9.9 0 2.5 9.5c0 0.1 0 0.1 0 0.2l9.2 35.3c0.3 1.3 1.5 2.2 2.9 2.2l43.1 0c1.3 0 2.5-0.9 2.9-2.2l9.2-35.3c0.2-0.9 0-1.8-0.5-2.6Zm-13.8 34.2l-38.5 0 -7.6-29.4 53.8 0 -7.6 29.4Z"/></g></svg>
@@ -12,24 +12,24 @@ Spree.ready(function ($) {
12
12
  }
13
13
  }
14
14
 
15
- $('form#update-cart a.delete').show().one('click', function () {
15
+ formUpdateCart.find('a.delete').show().one('click', function () {
16
16
  $(this).parents('.shopping-cart-item').first().find('input.shopping-cart-item-quantity-input').val(0)
17
17
  clearInvalidCouponField()
18
- $(this).parents('form').first().submit()
18
+ formUpdateCart.submit()
19
19
  return false
20
20
  })
21
- $('form#update-cart input.shopping-cart-item-quantity-input').on('keyup', function(e) {
21
+ formUpdateCart.find('input.shopping-cart-item-quantity-input').on('keyup', function(e) {
22
22
  var itemId = $(this).attr('data-id')
23
23
  var value = $(this).val()
24
24
  var newValue = isNaN(value) || value === '' ? value : parseInt(value, 10)
25
25
  var targetInputs = $("form#update-cart input.shopping-cart-item-quantity-input[data-id='" + itemId + "']")
26
26
  $(targetInputs).val(newValue)
27
27
  })
28
- $('form#update-cart input.shopping-cart-item-quantity-input').on('change', function(e) {
28
+ formUpdateCart.find('input.shopping-cart-item-quantity-input').on('change', function(e) {
29
29
  clearInvalidCouponField()
30
30
  formUpdateCart.submit()
31
31
  })
32
- $('form#update-cart button.shopping-cart-item-quantity-decrease-btn').off('click').on('click', function() {
32
+ formUpdateCart.find('button.shopping-cart-item-quantity-decrease-btn').off('click').on('click', function() {
33
33
  var itemId = $(this).attr('data-id')
34
34
  var input = $("input[data-id='" + itemId + "']")
35
35
  var inputValue = parseInt($(input).val(), 10)
@@ -40,7 +40,7 @@ Spree.ready(function ($) {
40
40
  formUpdateCart.submit()
41
41
  }
42
42
  })
43
- $('form#update-cart button.shopping-cart-item-quantity-increase-btn').off('click').on('click', function() {
43
+ formUpdateCart.find('button.shopping-cart-item-quantity-increase-btn').off('click').on('click', function() {
44
44
  var itemId = $(this).attr('data-id')
45
45
  var input = $("input[data-id='" + itemId + "']")
46
46
  var inputValue = parseInt($(input).val(), 10)
@@ -49,7 +49,7 @@ Spree.ready(function ($) {
49
49
  clearInvalidCouponField()
50
50
  formUpdateCart.submit()
51
51
  })
52
- $('form#update-cart button#shopping-cart-coupon-code-button').off('click').on('click', function(event) {
52
+ formUpdateCart.find('button#shopping-cart-coupon-code-button').off('click').on('click', function(event) {
53
53
  var couponCodeField = $('#order_coupon_code');
54
54
 
55
55
  if (!$.trim(couponCodeField.val()).length) {
@@ -58,7 +58,7 @@ Spree.ready(function ($) {
58
58
  }
59
59
  })
60
60
 
61
- $('form#update-cart button#shopping-cart-remove-coupon-code-button').off('click').on('click', function(event) {
61
+ formUpdateCart.find('button#shopping-cart-remove-coupon-code-button').off('click').on('click', function(event) {
62
62
  var input = {
63
63
  appliedCouponCodeField: $('#order_applied_coupon_code'),
64
64
  couponCodeField: $('#order_coupon_code'),
@@ -81,7 +81,7 @@ Spree.ready(function ($) {
81
81
  couponStatus: $('#coupon_status'),
82
82
  couponButton: $('#shopping-cart-coupon-code-button')
83
83
  }
84
- var updateButton = $('form#update-cart #update-button')
84
+ var updateButton = formUpdateCart.find('#update-button')
85
85
  updateButton.attr('disabled', true)
86
86
  if ($.trim(input.couponCodeField.val()).length > 0) {
87
87
  // eslint-disable-next-line no-undef
@@ -0,0 +1,55 @@
1
+ ; (function () {
2
+ // Tell the browser not to handle scrolling when restoring via the history or
3
+ // when reloading
4
+ if ('scrollRestoration' in history) {
5
+ history.scrollRestoration = 'manual'
6
+ }
7
+
8
+ var SCROLL_POSITION = 'scroll-position'
9
+ var PAGE_INVALIDATED = 'page-invalidated'
10
+
11
+ // Persist the scroll position on refresh
12
+ addEventListener('beforeunload', function () {
13
+ sessionStorage.setItem(SCROLL_POSITION, JSON.stringify(scrollData()))
14
+ });
15
+
16
+ // Invalidate the page when the next page is different from the current page
17
+ // Persist scroll information across pages
18
+ document.addEventListener('turbolinks:before-visit', function (event) {
19
+ if (event.data.url !== location.href) {
20
+ sessionStorage.setItem(PAGE_INVALIDATED, 'true')
21
+ }
22
+ sessionStorage.setItem(SCROLL_POSITION, JSON.stringify(scrollData()))
23
+ })
24
+
25
+ // When a page is fully loaded:
26
+ // 1. Get the persisted scroll position
27
+ // 2. If the locations match and the load did not originate from a page
28
+ // invalidation,
29
+ // 3. scroll to the persisted position if there, or to the top otherwise
30
+ // 4. Remove the persisted information
31
+ addEventListener('turbolinks:load', function (event) {
32
+ var scrollPosition = JSON.parse(sessionStorage.getItem(SCROLL_POSITION))
33
+
34
+ if (shouldScroll(scrollPosition)) {
35
+ scrollTo(scrollPosition.scrollX, scrollPosition.scrollY)
36
+ } else {
37
+ scrollTo(0, 0)
38
+ }
39
+ sessionStorage.removeItem(PAGE_INVALIDATED)
40
+ });
41
+
42
+ function shouldScroll(scrollPosition) {
43
+ return (scrollPosition
44
+ && scrollPosition.location === location.href
45
+ && !JSON.parse(sessionStorage.getItem(PAGE_INVALIDATED)))
46
+ }
47
+
48
+ function scrollData() {
49
+ return {
50
+ scrollX: scrollX,
51
+ scrollY: scrollY,
52
+ location: location.href
53
+ }
54
+ }
55
+ })()
@@ -9,23 +9,33 @@ Spree.fetchProductCarousel = function (taxonId, htmlContainer) {
9
9
  })
10
10
  }
11
11
 
12
+ Spree.loadCarousel = function (element, div) {
13
+ var container = $(element)
14
+ var productCarousel = $(div)
15
+ var carouselLoaded = productCarousel.attr('data-product-carousel-loaded')
16
+
17
+ if (container.length && !carouselLoaded && container.isInViewport()) {
18
+ var taxonId = productCarousel.attr('data-product-carousel-taxon-id')
19
+ productCarousel.attr('data-product-carousel-loaded', 'true')
20
+
21
+ Spree.fetchProductCarousel(taxonId, container)
22
+ }
23
+ }
24
+
25
+ Spree.loadsCarouselElements = function () {
26
+ $('div[data-product-carousel]').each(function (_index, element) { Spree.loadCarousel(element, this) })
27
+ }
28
+
12
29
  document.addEventListener('turbolinks:load', function () {
13
30
  var homePage = $('body#home')
14
31
 
15
32
  if (homePage.length) {
33
+ // load Carousels straight away if they are in the viewport
34
+ Spree.loadsCarouselElements()
35
+
36
+ // load additional Carousels when scrolling down
16
37
  $(window).on('resize scroll', function () {
17
- $('div[data-product-carousel').each(function (_index, element) {
18
- var container = $(element)
19
- var productCarousel = $(this)
20
- var carouselLoaded = productCarousel.attr('data-product-carousel-loaded')
21
-
22
- if (container.length && !carouselLoaded && container.isInViewport()) {
23
- var taxonId = productCarousel.attr('data-product-carousel-taxon-id')
24
- productCarousel.attr('data-product-carousel-loaded', 'true')
25
-
26
- Spree.fetchProductCarousel(taxonId, container)
27
- }
28
- })
38
+ Spree.loadsCarouselElements()
29
39
  })
30
40
  }
31
41
  })
@@ -34,7 +34,7 @@ function CartForm($, $cartForm) {
34
34
  this.initializeForm = function() {
35
35
  if (this.withOptionValues) {
36
36
  var $optionValue = this.firstCheckedOptionValue()
37
- this.applyCheckedOptionValue($optionValue)
37
+ this.applyCheckedOptionValue($optionValue, true)
38
38
  } else {
39
39
  this.updateAddToCart()
40
40
  this.triggerVariantImages()
@@ -49,11 +49,12 @@ function CartForm($, $cartForm) {
49
49
  this.applyCheckedOptionValue($(event.currentTarget))
50
50
  }.bind(this)
51
51
 
52
- this.applyCheckedOptionValue = function($optionValue) {
52
+ this.applyCheckedOptionValue = function($optionValue, initialUpdate) {
53
53
  this.saveCheckedOptionValue($optionValue)
54
54
  this.showAvailableVariants()
55
55
  this.updateAddToCart()
56
- this.updateVariantAvailability()
56
+ // we don't want to remove availability status on initial page load
57
+ if (!initialUpdate) this.updateVariantAvailability()
57
58
  this.updateVariantPrice()
58
59
  this.updateVariantId()
59
60
 
@@ -203,7 +204,11 @@ function CartForm($, $cartForm) {
203
204
  this.updateVariantAvailability = function() {
204
205
  var variant = this.selectedVariant()
205
206
 
206
- if (!variant) return
207
+ if (!variant) {
208
+ return $cartForm
209
+ .find('.add-to-cart-form-general-availability .add-to-cart-form-general-availability-value')
210
+ .html('')
211
+ }
207
212
 
208
213
  return $cartForm
209
214
  .find('.add-to-cart-form-general-availability .add-to-cart-form-general-availability-value')
@@ -1,5 +1,5 @@
1
- $(function() {
2
- $('#product-description-arrow').click(function() {
1
+ document.addEventListener('turbolinks:load', function () {
2
+ $('#product-description-arrow').click(function () {
3
3
  document.getElementById('product-description-long').classList.remove('d-none')
4
4
  document.getElementById('product-description-short').classList.add('d-none')
5
5
  document.getElementById('product-description-arrow').classList.remove('d-flex')
@@ -1,37 +1,41 @@
1
1
  Spree.ready(function($) {
2
- $('#sort-by-overlay-show-button').click(function() { $('#sort-by-overlay').show() })
3
- $('#sort-by-overlay-hide-button').click(function() { $('#sort-by-overlay').hide() })
4
-
5
- $('#filter-by-overlay-show-button').click(function() { $('#filter-by-overlay').show() })
6
- $('#filter-by-overlay-hide-button').click(function() { $('#filter-by-overlay').hide() })
2
+ $('#sort-by-overlay-show-button').click(function() {
3
+ $('#sort-by-overlay').show();
4
+ });
5
+ $('#sort-by-overlay-hide-button').click(function() {
6
+ $('#sort-by-overlay').hide();
7
+ });
8
+
9
+ $('#filter-by-overlay-show-button').click(function() {
10
+ $('#filter-by-overlay').show();
11
+ });
12
+ $('#filter-by-overlay-hide-button').click(function() {
13
+ $('#filter-by-overlay').hide();
14
+ });
7
15
 
8
16
  function closeNoProductModal() {
9
- $('#no-product-available').removeClass('shown')
10
- $('#overlay').removeClass('shown')
17
+ $('#no-product-available').removeClass('shown');
18
+ $('#overlay').removeClass('shown');
11
19
  }
12
20
 
13
- $('#no-product-available-close-button').click(closeNoProductModal)
14
- $('#no-product-available-hide-button').click(closeNoProductModal)
21
+ $('#no-product-available-close-button').click(closeNoProductModal);
22
+ $('#no-product-available-hide-button').click(closeNoProductModal);
15
23
 
16
24
  $('.plp-overlay-card-item').click(function() {
17
- $(this).toggleClass('plp-overlay-card-item--selected')
18
- })
19
-
20
- $('.color-select').click(function() {
21
- var allOptionsBorders = $('.color-select-border')
22
- var borderElement = $(this).find('.color-select-border')
25
+ $(this).toggleClass('plp-overlay-card-item--selected');
26
+ });
23
27
 
24
- allOptionsBorders.each(function() {
25
- $(this).removeClass('color-select-border--selected')
26
- })
27
- borderElement.addClass('color-select-border--selected')
28
- })
28
+ $('#filters-accordion .color-select, #plp-filters-accordion .color-select').click(function() {
29
+ $(this).find('.plp-overlay-color-item').toggleClass('color-select-border--selected')
30
+ });
29
31
 
30
32
  $('.plp-overlay-ul-li').click(function() {
31
- $('.plp-overlay-ul-li--active').removeClass('plp-overlay-ul-li--active')
32
- .addClass('plp-overlay-ul-li')
33
-
34
- $(this).removeClass('plp-overlay-ul-li')
35
- .addClass('plp-overlay-ul-li--active')
36
- })
37
- })
33
+ $('.plp-overlay-ul-li--active')
34
+ .removeClass('plp-overlay-ul-li--active')
35
+ .addClass('plp-overlay-ul-li');
36
+
37
+ $(this)
38
+ .removeClass('plp-overlay-ul-li')
39
+ .addClass('plp-overlay-ul-li--active');
40
+ });
41
+ });
@@ -14,10 +14,12 @@
14
14
  @include media-breakpoint-up(lg) {
15
15
  font-size: font-px-to-rem(12px);
16
16
  }
17
- span {
18
- a {
19
- color: inherit;
20
- }
17
+ a {
18
+ color: inherit;
21
19
  }
22
20
  }
23
21
  }
22
+
23
+ .breadcrumb-product-name {
24
+ padding-right: 9.5px;
25
+ }
@@ -62,11 +62,11 @@
62
62
  height: auto;
63
63
 
64
64
  @include media-breakpoint-up(sm) {
65
- width: 206px;
65
+ width: 120px;
66
66
  }
67
67
 
68
68
  @include media-breakpoint-up(lg) {
69
- width: 255px;
69
+ width: 190px;
70
70
  }
71
71
  }
72
72
 
@@ -185,6 +185,11 @@
185
185
  }
186
186
 
187
187
  &-delivery-informations {
188
+ div:first-child {
189
+ flex-shrink: unset;
190
+ -webkit-flex: unset;
191
+ }
192
+
188
193
  border-bottom: 1px solid $global-border-style;
189
194
  font-weight: 500;
190
195
 
@@ -25,12 +25,18 @@
25
25
  }
26
26
  a {
27
27
  color: $header-font-color;
28
- padding-left: 15px;
29
28
  letter-spacing: 0.5px;
29
+ text-decoration: none;
30
30
  @include media-breakpoint-down(sm) {
31
31
  padding-left: 0px;
32
32
  }
33
33
  }
34
+ &-text {
35
+ padding-left: 15px;
36
+ &:hover {
37
+ text-decoration: underline;
38
+ }
39
+ }
34
40
  }
35
41
  &-title {
36
42
  margin: 10px 0;
@@ -499,6 +505,7 @@
499
505
  }
500
506
 
501
507
  @include media-breakpoint-up(lg) {
508
+ height: 100%;
502
509
  padding: 0;
503
510
  max-width: 380px;
504
511
  align-self: flex-end;
@@ -12,7 +12,7 @@ body {
12
12
  left: 0;
13
13
  right: 0;
14
14
  bottom: 0;
15
- background-color: theme-color('overlay');
15
+ background-color: theme-color("overlay");
16
16
  opacity: 0;
17
17
  z-index: 5;
18
18
  cursor: pointer;
@@ -24,12 +24,12 @@ body {
24
24
  }
25
25
  }
26
26
 
27
-
28
27
  .dropdown-menu {
29
28
  background: $primary-background;
30
29
  border-color: $global-border-style;
31
30
  .dropdown-item {
32
- &:hover, &:focus {
31
+ &:hover,
32
+ &:focus {
33
33
  background: $secondary-background;
34
34
  color: $secondary-font-color;
35
35
  }
@@ -42,3 +42,18 @@ body {
42
42
  background: $input-background;
43
43
  color: color-yiq($input-background);
44
44
  }
45
+
46
+ @include media-breakpoint-down(md) {
47
+ input[type="email"],
48
+ input[type="number"],
49
+ input[type="password"],
50
+ input[type="search"],
51
+ input[type="tel"],
52
+ input[type="text"],
53
+ input[type="url"],
54
+ select,
55
+ select:focus,
56
+ textarea {
57
+ font-size: 16px !important;
58
+ }
59
+ }
@@ -5,8 +5,10 @@
5
5
  & > .order-show-check-mark {
6
6
  color: $secondary-color;
7
7
  margin-bottom: 25px;
8
+ margin-top: 27px;
8
9
  @include media-breakpoint-up(sm) {
9
10
  margin-bottom: 42px;
11
+ margin-top: 84px;
10
12
  }
11
13
  }
12
14
 
@@ -45,7 +47,7 @@
45
47
  }
46
48
 
47
49
  &-number {
48
- margin-top: 100px;
50
+ margin-top: 38px;
49
51
  margin-bottom: 38px;
50
52
  @include media-breakpoint-up(sm) {
51
53
  margin-top: 80px;
@@ -105,7 +107,7 @@
105
107
  padding-bottom: 0;
106
108
  }
107
109
  }
108
-
110
+
109
111
  a {
110
112
  max-width: 50%;
111
113
  margin-right: 20px;
@@ -270,4 +272,3 @@
270
272
  }
271
273
  }
272
274
  }
273
-