bookends 0.6.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/README.md +28 -24
  4. data/Rakefile +7 -3
  5. data/bin/bookends +5 -0
  6. data/bookends.gemspec +5 -2
  7. data/fixtures/dummy-jekyll/README.md +64 -0
  8. data/fixtures/dummy-jekyll/_config.yml +8 -0
  9. data/fixtures/dummy-jekyll/_layouts/default.html +118 -0
  10. data/fixtures/dummy-jekyll/_layouts/post.html +14 -0
  11. data/fixtures/dummy-jekyll/_sass/_base.scss +478 -0
  12. data/fixtures/dummy-jekyll/_sass/_google-cse.scss +372 -0
  13. data/fixtures/dummy-jekyll/_sass/_header.scss +780 -0
  14. data/fixtures/dummy-jekyll/_sass/_legacy.scss +567 -0
  15. data/fixtures/dummy-jekyll/_sass/_menu-icon.scss +68 -0
  16. data/fixtures/dummy-jekyll/_sass/_mixins.scss +12 -0
  17. data/fixtures/dummy-jekyll/_sass/_search.scss +51 -0
  18. data/{lib/generators/bookends/install/templates/footer.scss → fixtures/dummy-jekyll/_sass/bookends/_footer.scss} +0 -0
  19. data/fixtures/dummy-jekyll/_sass/mixins/_background-image.scss +48 -0
  20. data/fixtures/dummy-jekyll/_sass/mixins/_border-radius.scss +22 -0
  21. data/fixtures/dummy-jekyll/_sass/mixins/_box-sizing.scss +4 -0
  22. data/fixtures/dummy-jekyll/_sass/mixins/_hide-text.scss +5 -0
  23. data/fixtures/dummy-jekyll/_sass/mixins/_hidpi.scss +10 -0
  24. data/fixtures/dummy-jekyll/_sass/mixins/_linear-gradient.scss +41 -0
  25. data/fixtures/dummy-jekyll/_sass/mixins/_prefixer.scss +49 -0
  26. data/fixtures/dummy-jekyll/_sass/mixins/_responsiveness.scss +129 -0
  27. data/fixtures/dummy-jekyll/_sass/mixins/_retina-image.scss +31 -0
  28. data/fixtures/dummy-jekyll/_sass/mixins/_size.scss +44 -0
  29. data/fixtures/dummy-jekyll/_sass/mixins/_transition.scss +34 -0
  30. data/fixtures/dummy-jekyll/_sass/mixins/_triangle.scss +45 -0
  31. data/fixtures/dummy-jekyll/app.json +15 -0
  32. data/fixtures/dummy-jekyll/bin/from-gdoc +3 -0
  33. data/fixtures/dummy-jekyll/bin/platform-setup +15 -0
  34. data/fixtures/dummy-jekyll/feed.xml +34 -0
  35. data/fixtures/dummy-jekyll/index.html +40 -0
  36. data/fixtures/dummy-jekyll/static.json +3 -0
  37. data/fixtures/dummy-rails/README.md +9 -0
  38. data/fixtures/dummy-rails/Rakefile +6 -0
  39. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-book.eot +0 -0
  40. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-book.svg +400 -0
  41. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-book.ttf +0 -0
  42. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-book.woff +0 -0
  43. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-medium.eot +0 -0
  44. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-medium.svg +416 -0
  45. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-medium.ttf +0 -0
  46. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-medium.woff +0 -0
  47. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-regular.eot +0 -0
  48. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-regular.svg +416 -0
  49. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-regular.ttf +0 -0
  50. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-regular.woff +0 -0
  51. data/fixtures/dummy-rails/app/assets/images/.keep +0 -0
  52. data/{lib/generators/bookends/install/templates/footer_images → fixtures/dummy-rails/app/assets/images/bookends/footer}/footer_sprite.png +0 -0
  53. data/{lib/generators/bookends/install/templates/footer_images → fixtures/dummy-rails/app/assets/images/bookends/footer}/footer_sprite@2x.png +0 -0
  54. data/{lib/generators/bookends/install/templates/footer_images → fixtures/dummy-rails/app/assets/images/bookends/footer}/salesforce_heroku_gray.png +0 -0
  55. data/fixtures/dummy-rails/app/assets/javascripts/application.js +15 -0
  56. data/fixtures/dummy-rails/app/assets/stylesheets/application.css.scss +11 -0
  57. data/fixtures/dummy-rails/app/controllers/application_controller.rb +5 -0
  58. data/fixtures/dummy-rails/app/controllers/concerns/.keep +0 -0
  59. data/fixtures/dummy-rails/app/controllers/pages_controller.rb +5 -0
  60. data/fixtures/dummy-rails/app/helpers/application_helper.rb +2 -0
  61. data/fixtures/dummy-rails/app/mailers/.keep +0 -0
  62. data/fixtures/dummy-rails/app/models/.keep +0 -0
  63. data/fixtures/dummy-rails/app/models/concerns/.keep +0 -0
  64. data/fixtures/dummy-rails/app/views/layouts/application.html.erb +16 -0
  65. data/fixtures/dummy-rails/app/views/pages/home.html.erb +1 -0
  66. data/fixtures/dummy-rails/bin/bundle +3 -0
  67. data/fixtures/dummy-rails/bin/rails +4 -0
  68. data/fixtures/dummy-rails/bin/rake +4 -0
  69. data/fixtures/dummy-rails/bin/setup +29 -0
  70. data/fixtures/dummy-rails/config/application.rb +34 -0
  71. data/fixtures/dummy-rails/config/boot.rb +5 -0
  72. data/fixtures/dummy-rails/config/database.yml +25 -0
  73. data/fixtures/dummy-rails/config/environment.rb +5 -0
  74. data/fixtures/dummy-rails/config/environments/development.rb +41 -0
  75. data/fixtures/dummy-rails/config/environments/production.rb +79 -0
  76. data/fixtures/dummy-rails/config/environments/test.rb +42 -0
  77. data/fixtures/dummy-rails/config/initializers/assets.rb +11 -0
  78. data/fixtures/dummy-rails/config/initializers/backtrace_silencers.rb +7 -0
  79. data/fixtures/dummy-rails/config/initializers/cookies_serializer.rb +3 -0
  80. data/fixtures/dummy-rails/config/initializers/filter_parameter_logging.rb +4 -0
  81. data/fixtures/dummy-rails/config/initializers/inflections.rb +16 -0
  82. data/fixtures/dummy-rails/config/initializers/mime_types.rb +4 -0
  83. data/fixtures/dummy-rails/config/initializers/session_store.rb +3 -0
  84. data/fixtures/dummy-rails/config/initializers/wrap_parameters.rb +14 -0
  85. data/fixtures/dummy-rails/config/locales/en.yml +23 -0
  86. data/fixtures/dummy-rails/config/routes.rb +6 -0
  87. data/fixtures/dummy-rails/config/secrets.yml +22 -0
  88. data/fixtures/dummy-rails/config.ru +4 -0
  89. data/fixtures/dummy-rails/db/development.sqlite3 +0 -0
  90. data/fixtures/dummy-rails/lib/assets/.keep +0 -0
  91. data/fixtures/dummy-rails/log/.keep +0 -0
  92. data/fixtures/dummy-rails/log/development.log +1893 -0
  93. data/fixtures/dummy-rails/public/404.html +67 -0
  94. data/fixtures/dummy-rails/public/422.html +67 -0
  95. data/fixtures/dummy-rails/public/500.html +66 -0
  96. data/fixtures/dummy-rails/public/favicon.ico +0 -0
  97. data/lib/bookends/cli.rb +88 -0
  98. data/lib/bookends/config/framework.rb +24 -0
  99. data/lib/bookends/config/turbolinks.rb +18 -0
  100. data/lib/bookends/file_actions.rb +13 -0
  101. data/lib/bookends/jekyll_handler.rb +21 -0
  102. data/lib/bookends/rails_handler.rb +30 -0
  103. data/lib/{generators/bookends/install/templates/footer.html.erb → bookends/templates/footer.html} +18 -18
  104. data/lib/bookends/templates/footer.scss +403 -0
  105. data/lib/bookends/templates/footer_images/footer_sprite.png +0 -0
  106. data/lib/bookends/templates/footer_images/footer_sprite@2x.png +0 -0
  107. data/lib/bookends/templates/footer_images/salesforce.png +0 -0
  108. data/lib/bookends/templates/newsletter-init-turbolinks.js +6 -0
  109. data/lib/bookends/templates/newsletter-init.js +6 -0
  110. data/lib/{generators/bookends/install → bookends}/templates/newsletter.js +0 -4
  111. data/lib/bookends/version.rb +1 -1
  112. data/lib/bookends.rb +1 -1
  113. metadata +138 -11
  114. data/lib/generators/bookends/install/install_generator.rb +0 -21
@@ -0,0 +1,780 @@
1
+ // Header
2
+ //
3
+ // - Navigation
4
+ // - Logo
5
+ // - Hero
6
+
7
+ #header {
8
+ background-color: #3B2F63;
9
+ background-image: -webkit-radial-gradient(50% top, circle, rgba(84,90,182,0.6) 0%, rgba(84,90,182,0) 75%),-webkit-radial-gradient(right top, circle, #794aa2 0%, rgba(121,74,162,0) 57%);
10
+ background-image: radial-gradient(circle at 50% top, rgba(84,90,182,0.6) 0%,rgba(84,90,182,0) 75%),radial-gradient(circle at right top, #794aa2 0%,rgba(121,74,162,0) 57%);
11
+ background-repeat: no-repeat;
12
+ // Show only the top of the gradient when rendering
13
+ // a header without hero
14
+ background-size: 100% 1000px;
15
+ color: lighten($primary-color, 30%);
16
+ margin: 0;
17
+ display: inline-block;
18
+ vertical-align: top;
19
+ width: 100%;
20
+ }
21
+
22
+ #navigation {
23
+ $padding-nav: 20px;
24
+ $padding-nav-inner: 7px;
25
+ $color-link: #F2EEFF;
26
+ $font-size: 14px;
27
+ $font-size-sm: (($font-size / 1px) - 1) + px;
28
+ $font-size-xs: (($font-size / 1px) - 2) + px;
29
+ $dropdown-width: 180px;
30
+ $dropdown-padding: 16px;
31
+
32
+ position: relative;
33
+ font-size: $font-size;
34
+ -webkit-font-smoothing: antialiased;
35
+ font-weight: 600;
36
+ line-height: 1;
37
+
38
+ *,
39
+ *:before,
40
+ *:after {
41
+ @include box-sizing(border-box);
42
+ }
43
+
44
+ ul {
45
+ position: relative;
46
+ padding: 0;
47
+ margin: 0;
48
+ list-style: none;
49
+ }
50
+
51
+ li {
52
+ float: left;
53
+ margin: 0;
54
+ padding: 0 10px;
55
+
56
+ @include tablet-landscape {
57
+ float: none;
58
+ padding: 0;
59
+ }
60
+
61
+ &.has-dropdown {
62
+
63
+ > a {
64
+
65
+ //Caret
66
+ &:after {
67
+ content: "";
68
+ display: inline-block;
69
+ position: relative;
70
+ top: -1px;
71
+ @include size(10px 6px);
72
+ margin-left: 5px;
73
+ background-image: url(components/nav-dropdown-caret.svg);
74
+ background-repeat: no-repeat;
75
+ opacity: .5;
76
+ }
77
+ }
78
+
79
+ //Dropdown hover
80
+ &:hover {
81
+
82
+ .dropdown {
83
+ visibility: visible;
84
+ opacity: 1;
85
+ margin-top: 3px;
86
+ @include transition-delay(0s);
87
+ }
88
+
89
+ > a {
90
+ color: #fff;
91
+
92
+ &:after {
93
+ opacity: 1;
94
+ }
95
+ }
96
+ }
97
+
98
+ }
99
+
100
+ a {
101
+ text-decoration: none;
102
+ &:hover {
103
+ text-decoration: none;
104
+ }
105
+ }
106
+
107
+ > a {
108
+ display: inline-block;
109
+ padding: $padding-nav-inner 0;
110
+ text-decoration: none;
111
+ color: fade-out($color-link, .4);
112
+
113
+ &:hover {
114
+ color: #fff;
115
+ }
116
+
117
+ &:focus {
118
+ outline: 0;
119
+ }
120
+
121
+ &.highlight {
122
+ background: fade-out(black, .8);
123
+ border-radius: $border-radius;
124
+ color: white;
125
+ padding: 6px 12px;
126
+
127
+ &:hover {
128
+ background: rgba(0, 0, 0, 0.3);
129
+ }
130
+ }
131
+ }
132
+ }
133
+
134
+ .dropdown {
135
+ margin-top: 0;
136
+ font-size: $font-size-sm;
137
+ min-width: 200px;
138
+
139
+ @include screen(min-width, $tablet-landscape-threshold) {
140
+ position: absolute;
141
+ max-width: $dropdown-width;
142
+ background: #fff;
143
+ border-radius: 4px;
144
+ z-index: 2;
145
+ padding: $dropdown-padding/2 $dropdown-padding;
146
+ overflow: visible;
147
+ box-shadow: 0 2px 7px fade-out(#000, .825);
148
+ }
149
+
150
+ // Hit area
151
+ &:after {
152
+ content: "";
153
+ position: absolute;
154
+ top: -3px;
155
+ left: 0;
156
+ background: transparent;
157
+ height: 3px;
158
+ width: 100%;
159
+ }
160
+
161
+ // Transition
162
+ visibility: hidden;
163
+ opacity: 0;
164
+ @include transition(visibility 0s 0.15s, opacity 0.15s, margin-top .15s);
165
+
166
+ li a {
167
+ color: #444;
168
+ font-weight: 400;
169
+
170
+ &:hover {
171
+ color: $primary-color;
172
+ }
173
+
174
+ &.addons:before {
175
+ opacity: .9;
176
+ content: '';
177
+ display: inline-block;
178
+ height: 24px;
179
+ width: 24px;
180
+ vertical-align: middle;
181
+ margin-right: 8px;
182
+ position: relative;
183
+ top: -2px;
184
+ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zOnNrZXRjaD0iaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoL25zIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iLTI0MSAzMzMgMTI4IDEyOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtMjQxIDMzMyAxMjggMTI4OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe2ZpbGw6Izc5NTg5RjtzdHJva2U6Izc5NTg5Rjt9PC9zdHlsZT48dGl0bGU+QWRkb25zPC90aXRsZT48ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz48ZyBpZD0iUGFnZS0xIiBza2V0Y2g6dHlwZT0iTVNQYWdlIj48ZyBpZD0iQWRkb25zIiBza2V0Y2g6dHlwZT0iTVNBcnRib2FyZEdyb3VwIj48ZyBpZD0iSW1wb3J0ZWQtTGF5ZXJzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMC4wMDAwMDAsIDQuMDAwMDAwKSIgc2tldGNoOnR5cGU9Ik1TTGF5ZXJHcm91cCI+PHBhdGggaWQ9IkZpbGwtMSIgc2tldGNoOnR5cGU9Ik1TU2hhcGVHcm91cCIgY2xhc3M9InN0MCIgZD0iTS0xNzksMzc4LjdjLTQuNS0yLjQtMTEuNS0yLjQtMTYsMGMtMy41LDEuOC00LDQuMi00LDUuNWMwLDEuMywwLjUsMy42LDQsNS41YzAsMCwwLDAsMCwwYzIuMiwxLjIsNS4xLDEuOCw4LDEuOGMyLjksMCw1LjgtMC42LDgtMS44YzMuNS0xLjgsNC00LjIsNC01LjVDLTE3NSwzODMtMTc1LjUsMzgwLjYtMTc5LDM3OC43TC0xNzksMzc4Ljd6IE0tMTgwLjgsMzg2LjJjLTMuNCwxLjgtOSwxLjgtMTIuNCwwYy0xLjItMC42LTEuOS0xLjQtMS45LTJjMC0wLjYsMC43LTEuNCwxLjktMmMzLjQtMS44LDktMS44LDEyLjQsMGMxLjIsMC42LDEuOSwxLjQsMS45LDJDLTE3OC45LDM4NC44LTE3OS42LDM4NS42LTE4MC44LDM4Ni4yTC0xODAuOCwzODYuMnoiLz48cGF0aCBpZD0iRmlsbC0yIiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIiBjbGFzcz0ic3QwIiBkPSJNLTE5NSwzNjAuOUMtMTk1LDM2MC45LTE5NSwzNjAuOS0xOTUsMzYwLjljMi4zLDEuMiw1LjEsMS44LDgsMS44YzIuOSwwLDUuOC0wLjYsOC0xLjhjMy41LTEuOCw0LTQuMiw0LTUuNWMwLTEuMy0wLjUtMy42LTQtNS41Yy00LjUtMi40LTExLjUtMi40LTE2LDBjLTMuNSwxLjgtNCw0LjItNCw1LjVDLTE5OSwzNTYuNy0xOTguNSwzNTkuMS0xOTUsMzYwLjlMLTE5NSwzNjAuOXogTS0xOTMuMiwzNTMuNWMzLjQtMS44LDktMS44LDEyLjQsMGMxLjIsMC42LDEuOSwxLjQsMS45LDJjMCwwLjYtMC43LDEuNC0xLjksMmMtMy40LDEuOC05LDEuOC0xMi40LDBjLTEuMi0wLjYtMS45LTEuNC0xLjktMkMtMTk1LDM1NC44LTE5NC4zLDM1NC4xLTE5My4yLDM1My41TC0xOTMuMiwzNTMuNXoiLz48cGF0aCBpZD0iRmlsbC0zIiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIiBjbGFzcz0ic3QwIiBkPSJNLTE3MS4zLDM3NS4zQy0xNzEuMywzNzUuMy0xNzEuMywzNzUuMy0xNzEuMywzNzUuM2MyLjIsMS4yLDUuMSwxLjgsOCwxLjhzNS44LTAuNiw4LTEuOGMzLjUtMS44LDQtNC4yLDQtNS41YzAtMS4zLTAuNS0zLjYtNC01LjVjLTQuNS0yLjQtMTEuNS0yLjQtMTYsMGMtMy41LDEuOC00LDQuMi00LDUuNUMtMTc1LjMsMzcxLTE3NC43LDM3My40LTE3MS4zLDM3NS4zTC0xNzEuMywzNzUuM3ogTS0xNjkuNCwzNjcuOGMzLjQtMS44LDktMS44LDEyLjQsMGMxLjIsMC42LDEuOSwxLjQsMS45LDJjMCwwLjYtMC43LDEuNC0xLjksMmMtMy40LDEuOC05LDEuOC0xMi40LDBjLTEuMi0wLjYtMS45LTEuNC0xLjktMkMtMTcxLjMsMzY5LjItMTcwLjYsMzY4LjQtMTY5LjQsMzY3LjhMLTE2OS40LDM2Ny44eiIvPjxwYXRoIGlkPSJGaWxsLTQiIHNrZXRjaDp0eXBlPSJNU1NoYXBlR3JvdXAiIGNsYXNzPSJzdDAiIGQ9Ik0tMjE4LjcsMzc1LjRDLTIxOC43LDM3NS40LTIxOC43LDM3NS40LTIxOC43LDM3NS40YzIuMywxLjIsNS4xLDEuOCw4LDEuOGMyLjksMCw1LjgtMC42LDgtMS44YzMuNS0xLjgsNC00LjIsNC01LjVjMC0xLjMtMC41LTMuNi00LTUuNWMtNC41LTIuNC0xMS41LTIuNC0xNiwwYy0zLjUsMS44LTQsNC4yLTQsNS41Qy0yMjIuNywzNzEuMi0yMjIuMiwzNzMuNS0yMTguNywzNzUuNEwtMjE4LjcsMzc1LjR6IE0tMjE2LjksMzY3LjljMy40LTEuOCw5LTEuOCwxMi40LDBjMS4yLDAuNiwxLjksMS40LDEuOSwyYzAsMC42LTAuNywxLjQtMS45LDJjLTMuNCwxLjgtOSwxLjgtMTIuNCwwYy0xLjItMC42LTEuOS0xLjQtMS45LTJDLTIxOC44LDM2OS4zLTIxOCwzNjguNS0yMTYuOSwzNjcuOUwtMjE2LjksMzY3Ljl6Ii8+PHBhdGggaWQ9IkZpbGwtNSIgc2tldGNoOnR5cGU9Ik1TU2hhcGVHcm91cCIgY2xhc3M9InN0MCIgZD0iTS0xMzMuNCwzODUuM0MtMTMzLjQsMzg1LjItMTMzLjQsMzg1LjItMTMzLjQsMzg1LjNsMC0xMi42YzAtNi42LTMuNi0xMi44LTkuMy0xNi4xbC0zNS0yMC4yYy01LjctMy4zLTEyLjktMy4zLTE4LjYsMGwtMzUsMjAuMmMtNS43LDMuMy05LjMsOS41LTkuMywxNi4xdjQwLjRjMCw2LjYsMy42LDEyLjgsOS4zLDE2LjFsMzUsMjAuMmMyLjksMS43LDYuMSwyLjUsOS4zLDIuNXM2LjQtMC44LDkuMy0yLjVsMzUtMjAuMmM1LjctMy4zLDkuMy05LjUsOS4zLTE2LjF2LTI3LjdDLTEzMy40LDM4NS40LTEzMy40LDM4NS4zLTEzMy40LDM4NS4zTC0xMzMuNCwzODUuM3ogTS0yMjkuMywzNjBsMzUtMjAuMmMyLjMtMS4zLDQuOC0yLDcuMy0yczUuMSwwLjcsNy4zLDJsMzUsMjAuMmM0LjUsMi42LDcuMyw3LjUsNy4zLDEyLjd2MTIuN2MtMC4xLDQuMi0yLjMsNy45LTYsMTBsLTM0LjksMjAuMWMtNS40LDMuMS0xMi4yLDMuMS0xNy42LDBsLTM0LjktMjAuMWMtMy45LTIuMy02LjItNi41LTUuOS0xMS4xYzAsMCwwLDAsMC0wLjF2LTExLjZDLTIzNi42LDM2Ny41LTIzMy44LDM2Mi42LTIyOS4zLDM2MEwtMjI5LjMsMzYweiBNLTEzNy4zLDQxMy4xYzAsNS4yLTIuOCwxMC4xLTcuMywxMi43bC0zNSwyMC4yYy00LjUsMi42LTEwLjEsMi42LTE0LjcsMGwtMzUtMjAuMmMtNC41LTIuNi03LjMtNy41LTcuMy0xMi43di0xNy42YzEuMSwxLjMsMi41LDIuNCw0LDMuM2wzNC45LDIwLjFjMy4zLDEuOSw3LjEsMi45LDEwLjgsMi45YzMuNywwLDcuNS0xLDEwLjgtMi45bDM0LjktMjAuMWMxLjUtMC45LDIuOS0yLDQtMy4zVjQxMy4xTC0xMzcuMyw0MTMuMXoiLz48L2c+PC9nPjwvZz48L3N2Zz4=);
185
+ background-size: cover;
186
+ }
187
+
188
+ &.buttons:before {
189
+ opacity: .9;
190
+ content: '';
191
+ display: inline-block;
192
+ height: 24px;
193
+ width: 24px;
194
+ vertical-align: middle;
195
+ margin-right: 8px;
196
+ position: relative;
197
+ top: -2px;
198
+ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zOnNrZXRjaD0iaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoL25zIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iLTI0MSAzMzMgMTI4IDEyOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtMjQxIDMzMyAxMjggMTI4OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe2ZpbGw6Izc5NTg5RjtzdHJva2U6Izc5NTg5Rjt9PC9zdHlsZT48dGl0bGU+QnV0dG9uczwvdGl0bGU+PGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+PGcgaWQ9IlBhZ2UtMSIgc2tldGNoOnR5cGU9Ik1TUGFnZSI+PGcgaWQ9IkJ1dHRvbnMiIHNrZXRjaDp0eXBlPSJNU0FydGJvYXJkR3JvdXAiPjxnIGlkPSJJbXBvcnRlZC1MYXllcnMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzLjAwMDAwMCwgNC4wMDAwMDApIiBza2V0Y2g6dHlwZT0iTVNMYXllckdyb3VwIj48cGF0aCBpZD0iRmlsbC0xIiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIiBjbGFzcz0ic3QwIiBkPSJNLTE0OCwzNTUuM2wtMzMtMTkuMWMtNS41LTMuMS0xMi4yLTMuMS0xNy43LDBsLTMzLDE5LjFjLTUuNSwzLjEtOC44LDktOC44LDE1LjN2MzguMmMwLDYuMywzLjQsMTIuMiw4LjgsMTUuM2wyMi42LDEzLjFjMC45LDAuNSwyLjEsMC4yLDIuNy0wLjdjMC41LTAuOSwwLjItMi4xLTAuNy0yLjdsLTIyLjYtMTMuMWMtNC4yLTIuNC02LjktNy02LjktMTEuOXYtMzguMmMwLTQuOSwyLjYtOS41LDYuOS0xMS45bDMzLTE5LjFjNC4yLTIuNCw5LjUtMi40LDEzLjcsMGwzMywxOS4xYzQuMiwyLjQsNi45LDcsNi45LDExLjl2MzguMmMwLDQuOS0yLjYsOS41LTYuOSwxMS45bC0yMi42LDEzLjFjLTAuOSwwLjUtMS4zLDEuNy0wLjcsMi43YzAuNCwwLjYsMSwxLDEuNywxYzAuMywwLDAuNy0wLjEsMS0wLjNsMjIuNi0xMy4xYzUuNC0zLjEsOC44LTksOC44LTE1LjN2LTM4LjJDLTEzOS4yLDM2NC4zLTE0Mi42LDM1OC41LTE0OCwzNTUuMyIvPjxwYXRoIGlkPSJGaWxsLTIiIHNrZXRjaDp0eXBlPSJNU1NoYXBlR3JvdXAiIGNsYXNzPSJzdDAiIGQ9Ik0tMTY5LjcsMzk5LjljMC40LDAuNCwwLjksMC42LDEuNCwwLjZzMS0wLjIsMS40LTAuNmMwLjgtMC44LDAuOC0yLDAtMi44bC0yMS42LTIxLjZjLTAuMi0wLjItMC40LTAuMy0wLjYtMC40Yy0wLjUtMC4yLTEtMC4yLTEuNSwwYy0wLjIsMC4xLTAuNSwwLjItMC42LDAuNGwtMjEuNiwyMS42Yy0wLjgsMC44LTAuOCwyLDAsMi44YzAuOCwwLjgsMiwwLjgsMi44LDBsMTguMi0xOC4ydjY4LjNjMCwxLjEsMC45LDIsMiwyYzEuMSwwLDItMC45LDItMnYtNjguM0wtMTY5LjcsMzk5LjkiLz48L2c+PC9nPjwvZz48L3N2Zz4=);
199
+ background-size: cover;
200
+ }
201
+
202
+ &.buildpacks:before {
203
+ opacity: .9;
204
+ content: '';
205
+ display: inline-block;
206
+ height: 24px;
207
+ width: 24px;
208
+ vertical-align: middle;
209
+ margin-right: 8px;
210
+ position: relative;
211
+ top: -2px;
212
+ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zOnNrZXRjaD0iaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoL25zIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iLTI0MSAzMzMgMTI4IDEyOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtMjQxIDMzMyAxMjggMTI4OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe2ZpbGw6Izc5NTg5RjtzdHJva2U6Izc5NTg5Rjt9PC9zdHlsZT48dGl0bGU+QnVpbGRwYWNrczwvdGl0bGU+PGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+PGcgaWQ9IlBhZ2UtMSIgc2tldGNoOnR5cGU9Ik1TUGFnZSI+PGcgaWQ9IkJ1aWxkcGFja3MiIHNrZXRjaDp0eXBlPSJNU0FydGJvYXJkR3JvdXAiPjxnIGlkPSJJbXBvcnRlZC1MYXllcnMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUuMDAwMDAwLCA2LjAwMDAwMCkiIHNrZXRjaDp0eXBlPSJNU0xheWVyR3JvdXAiPjxwYXRoIGlkPSJGaWxsLTEiIHNrZXRjaDp0eXBlPSJNU1NoYXBlR3JvdXAiIGNsYXNzPSJzdDAiIGQ9Ik0tMTU0LjIsMzc0LjZ2LTIyLjVjMC0yLjYtMS40LTUuMS0zLjctNi40bC0xOS41LTExLjJjLTIuMy0xLjMtNS4xLTEuMy03LjQsMGwtMTkuNSwxMS4yYy0yLjMsMS4zLTMuNywzLjgtMy43LDYuNHYyMi41YzAsMi42LDEuNCw1LjEsMy43LDYuNGwxOS41LDExLjNjMS4xLDAuNywyLjQsMSwzLjcsMWMxLjMsMCwyLjYtMC4zLDMuNy0xbDE5LjUtMTEuM0MtMTU1LjYsMzc5LjctMTU0LjIsMzc3LjItMTU0LjIsMzc0LjZMLTE1NC4yLDM3NC42eiBNLTE1OC4xLDM3NC42YzAsMS4yLTAuNywyLjQtMS43LDNsLTE5LjUsMTEuMmMtMS4xLDAuNi0yLjQsMC42LTMuNSwwbC0xOS41LTExLjJjLTEuMS0wLjYtMS43LTEuOC0xLjctM3YtMjIuNWMwLTEuMiwwLjctMi40LDEuNy0zbDE5LjUtMTEuM2MwLjUtMC4zLDEuMS0wLjUsMS43LTAuNWMwLjYsMCwxLjIsMC4yLDEuNywwLjVsMTkuNSwxMS4zYzEuMSwwLjYsMS43LDEuOCwxLjcsM1YzNzQuNkwtMTU4LjEsMzc0LjZ6Ii8+PHBhdGggaWQ9IkZpbGwtMiIgc2tldGNoOnR5cGU9Ik1TU2hhcGVHcm91cCIgY2xhc3M9InN0MCIgZD0iTS0xNjYuNywzNDkuMmwtMTItNy4xYy0xLjUtMC45LTMuMy0wLjktNC44LDBsLTExLjksNy4xYy0xLDAuNi0xLjYsMS43LTEuNiwyLjljMCwxLjIsMC42LDIuMywxLjYsMi45aDBsMTIsNy4xYzAuNywwLjQsMS42LDAuNiwyLjQsMC42YzAuOCwwLDEuNy0wLjIsMi40LTAuN2wxMS45LTcuMWMxLTAuNiwxLjYtMS43LDEuNi0yLjlDLTE2NS4xLDM1MC45LTE2NS43LDM0OS44LTE2Ni43LDM0OS4yTC0xNjYuNywzNDkuMnogTS0xODAuNywzNTguN2MtMC4zLDAuMi0wLjYsMC4yLTAuOCwwbC0xMS4xLTYuN2wxMS4xLTYuNmMwLjMtMC4yLDAuNi0wLjIsMC44LDBsMTEuMSw2LjdMLTE4MC43LDM1OC43TC0xODAuNywzNTguN3oiLz48cGF0aCBpZD0iRmlsbC0zIiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIiBjbGFzcz0ic3QwIiBkPSJNLTE5MCw0MDAuOWwtMTkuNS0xMS4zYy0yLjMtMS4zLTUuMS0xLjMtNy40LDBsLTE5LjUsMTEuM2MwLDAsMCwwLDAsMGMtMi4zLDEuMy0zLjcsMy44LTMuNyw2LjR2MjIuNWMwLDIuNiwxLjQsNS4xLDMuNyw2LjRsMTkuNSwxMS4yYzEuMSwwLjcsMi40LDEsMy43LDFzMi42LTAuMywzLjctMWwxOS41LTExLjJjMi4zLTEuMywzLjctMy44LDMuNy02LjR2LTIyLjVDLTE4Ni4zLDQwNC42LTE4Ny43LDQwMi4yLTE5MCw0MDAuOUwtMTkwLDQwMC45eiBNLTE5MC4yLDQyOS44YzAsMS4yLTAuNywyLjQtMS43LDNsLTE5LjUsMTEuM2MtMS4xLDAuNi0yLjQsMC42LTMuNSwwbC0xOS41LTExLjNjLTEuMS0wLjYtMS43LTEuOC0xLjctM3YtMjIuNWMwLTEuMiwwLjctMi40LDEuNy0zbDE5LjUtMTEuMmMxLjEtMC42LDIuNC0wLjYsMy41LDBsMTkuNSwxMS4yYzEuMSwwLjYsMS43LDEuOCwxLjcsM1Y0MjkuOEwtMTkwLjIsNDI5Ljh6Ii8+PHBhdGggaWQ9IkZpbGwtNCIgc2tldGNoOnR5cGU9Ik1TU2hhcGVHcm91cCIgY2xhc3M9InN0MCIgZD0iTS0xOTguOCw0MDQuNGwtMTItNy4xYy0xLjUtMC45LTMuMy0wLjktNC44LDBsLTExLjksNy4xYy0xLDAuNi0xLjYsMS43LTEuNiwyLjljMCwxLjIsMC42LDIuMywxLjYsMi45bDEyLDcuMWMwLjcsMC40LDEuNiwwLjYsMi40LDAuNmMwLjgsMCwxLjctMC4yLDIuNC0wLjdsMTEuOS03LjFjMS0wLjYsMS42LTEuNywxLjYtMi45Uy0xOTcuOCw0MDUtMTk4LjgsNDA0LjRMLTE5OC44LDQwNC40eiBNLTIxMi44LDQxMy45Yy0wLjMsMC4yLTAuNiwwLjItMC44LDBsLTExLjEtNi43bDExLjEtNi42YzAuMy0wLjIsMC42LTAuMiwwLjgsMGwxMS4xLDYuN0wtMjEyLjgsNDEzLjlMLTIxMi44LDQxMy45eiIvPjxwYXRoIGlkPSJGaWxsLTUiIHNrZXRjaDp0eXBlPSJNU1NoYXBlR3JvdXAiIGNsYXNzPSJzdDAiIGQ9Ik0tMTI1LjgsNDAwLjlsLTE5LjUtMTEuM2MtMi4zLTEuMy01LjEtMS4zLTcuNCwwbC0xOS41LDExLjNjMCwwLDAsMCwwLDBjLTIuMywxLjMtMy43LDMuOC0zLjcsNi40djIyLjVjMCwyLjYsMS40LDUuMSwzLjcsNi40bDE5LjUsMTEuMmMxLjEsMC43LDIuNCwxLDMuNywxczIuNi0wLjMsMy43LTFsMTkuNS0xMS4yYzIuMy0xLjMsMy43LTMuOCwzLjctNi40di0yMi41Qy0xMjIuMSw0MDQuNi0xMjMuNSw0MDIuMi0xMjUuOCw0MDAuOUwtMTI1LjgsNDAwLjl6IE0tMTI2LDQyOS44YzAsMS4yLTAuNywyLjQtMS43LDNsLTE5LjUsMTEuM2MtMS4xLDAuNi0yLjQsMC42LTMuNSwwbC0xOS41LTExLjNjLTEuMS0wLjYtMS43LTEuOC0xLjctM3YtMjIuNWMwLTEuMiwwLjctMi40LDEuNy0zbDE5LjUtMTEuMmMxLjEtMC42LDIuNC0wLjYsMy41LDBsMTkuNSwxMS4yYzEuMSwwLjYsMS43LDEuOCwxLjcsM1Y0MjkuOEwtMTI2LDQyOS44eiIvPjxwYXRoIGlkPSJGaWxsLTYiIHNrZXRjaDp0eXBlPSJNU1NoYXBlR3JvdXAiIGNsYXNzPSJzdDAiIGQ9Ik0tMTM0LjYsNDA0LjRsLTEyLTcuMmMtMS41LTAuOS0zLjMtMC45LTQuOCwwbC0xMS45LDcuMWMtMSwwLjYtMS42LDEuNy0xLjYsMi45czAuNiwyLjMsMS42LDIuOWwxMiw3LjFjMC43LDAuNCwxLjYsMC42LDIuNCwwLjZjMC44LDAsMS43LTAuMiwyLjQtMC43bDExLjktNy4xYzEtMC42LDEuNi0xLjcsMS42LTIuOUMtMTMzLDQwNi4xLTEzMy42LDQwNS0xMzQuNiw0MDQuNEwtMTM0LjYsNDA0LjR6IE0tMTQ4LjUsNDEzLjljLTAuMywwLjItMC42LDAuMi0wLjgsMGwtMTEuMS02LjdsMTEuMS02LjZjMC4zLTAuMiwwLjYtMC4yLDAuOCwwbDExLjEsNi43TC0xNDguNSw0MTMuOUwtMTQ4LjUsNDEzLjl6Ii8+PC9nPjwvZz48L2c+PC9zdmc+);
213
+ background-size: cover;
214
+ }
215
+ &.platform:before {
216
+ opacity: .9;
217
+ content: '';
218
+ display: inline-block;
219
+ height: 24px;
220
+ width: 24px;
221
+ vertical-align: middle;
222
+ margin-right: 8px;
223
+ position: relative;
224
+ top: -2px;
225
+ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zOnNrZXRjaD0iaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoL25zIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iLTI0MSAzMzMgMTI4IDEyOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtMjQxIDMzMyAxMjggMTI4OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe2ZpbGw6Izc5NTg5RjtzdHJva2U6Izc5NTg5Rjt9PC9zdHlsZT48dGl0bGU+QnVpbGRwYWNrczwvdGl0bGU+PGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+PGc+PGc+PGc+PGc+PHBhdGggY2xhc3M9InN0MCIgZD0iTS0xNzcsNDU2LjVjLTMuNywwLTcuNC0xLTEwLjctMi45bC0zNS41LTIwLjVjLTQuNi0yLjYtNy41LTcuMy03LjgtMTIuNmMtMC4zLTUuMywyLTEwLjMsNi4yLTEzLjRjMC42LTAuNSwxLjYtMC4zLDIsMC4zYzAuNSwwLjYsMC4zLDEuNi0wLjMsMmMtMy40LDIuNS01LjMsNi42LTUsMTAuOWMwLjMsNC4zLDIuNiw4LjEsNi4zLDEwLjJsMzUuNSwyMC41YzUuNywzLjMsMTIuOCwzLjMsMTguNSwwbDM1LjUtMjAuNWMzLjgtMi4yLDYuMS01LjksNi4zLTEwLjNjMC4yLTQuMy0xLjctOC40LTUuMS0xMC45Yy0wLjYtMC41LTAuOC0xLjQtMC4zLTJjMC41LTAuNiwxLjQtMC44LDItMC4zYzQuMiwzLjEsNi42LDguMSw2LjMsMTMuNGMtMC4zLDUuMy0zLjIsMTAtNy44LDEyLjZsLTM1LjUsMjAuNUMtMTY5LjYsNDU1LjYtMTczLjMsNDU2LjUtMTc3LDQ1Ni41eiIvPjwvZz48L2c+PGc+PGc+PHBhdGggY2xhc3M9InN0MCIgZD0iTS0xNzcsNDMzLjljLTMuNywwLTcuNC0xLTEwLjctMi45bC0zNS41LTIwLjVjLTQuNi0yLjYtNy41LTcuNC03LjgtMTIuN2MtMC4zLTUuMywyLjEtMTAuMyw2LjMtMTMuNGMwLjYtMC41LDEuNi0wLjMsMiwwLjNjMC41LDAuNiwwLjMsMS42LTAuMywyYy0zLjQsMi41LTUuNCw2LjYtNS4xLDEwLjljMC4yLDQuNCwyLjUsOC4xLDYuMywxMC4zbDM1LjUsMjAuNWM1LjcsMy4zLDEyLjgsMy4zLDE4LjUsMGwzNS41LTIwLjVjMy43LTIuMiw2LTUuOCw2LjMtMTAuMWMwLjMtNC4yLTEuNS04LjMtNC44LTEwLjljLTAuNi0wLjUtMC43LTEuNC0wLjMtMmMwLjUtMC42LDEuNC0wLjgsMi0wLjNjNC4xLDMuMiw2LjMsOC4yLDUuOSwxMy40Yy0wLjQsNS4zLTMuMiw5LjgtNy44LDEyLjRsLTM1LjUsMjAuNUMtMTY5LjYsNDMzLTE3My4zLDQzMy45LTE3Nyw0MzMuOXoiLz48L2c+PC9nPjxnPjxnPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0tMTc3LDQxMS4zYy0zLjcsMC03LjQtMS0xMC43LTIuOWwtMzUuNS0yMC41Yy00LjktMi44LTcuOC03LjktNy44LTEzLjVjMC01LjYsMi45LTEwLjcsNy44LTEzLjVsMCwwbDM1LjUtMjAuNWM2LjYtMy44LDE0LjgtMy44LDIxLjQsMGwzNS41LDIwLjVjNC45LDIuOCw3LjgsNy45LDcuOCwxMy41YzAsNS42LTIuOSwxMC43LTcuOCwxMy41bC0zNS41LDIwLjVDLTE2OS42LDQxMC40LTE3My4zLDQxMS4zLTE3Nyw0MTEuM3ogTS0yMjEuNywzNjMuNWMtNCwyLjMtNi4zLDYuNC02LjMsMTFjMCw0LjYsMi40LDguNyw2LjMsMTFsMzUuNSwyMC41YzUuNywzLjMsMTIuOCwzLjMsMTguNSwwbDM1LjUtMjAuNWM0LTIuMyw2LjMtNi40LDYuMy0xMWMwLTQuNi0yLjQtOC43LTYuMy0xMWwtMzUuNS0yMC41Yy01LjctMy4zLTEyLjgtMy4zLTE4LjUsMEwtMjIxLjcsMzYzLjV6Ii8+PC9nPjwvZz48Zz48Zz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNLTE4OS40LDQzOS42Ii8+PC9nPjwvZz48L2c+PGc+PGc+PGc+PHBhdGggY2xhc3M9InN0MCIgZD0iTS0yMTguOCwzNzguN2MtMS41LDAtMi44LTEuMi0yLjgtMi44YzAtMS41LDEuMi0yLjgsMi44LTIuOGMxLjUsMCwyLjgsMS4yLDIuOCwyLjhDLTIxNiwzNzcuNC0yMTcuMiwzNzguNy0yMTguOCwzNzguN3ogTS0yMTguOCwzNzQuOWMtMC41LDAtMSwwLjQtMSwxYzAsMC41LDAuNCwxLDEsMWMwLjUsMCwxLTAuNCwxLTFDLTIxNy44LDM3NS40LTIxOC4yLDM3NC45LTIxOC44LDM3NC45eiIvPjwvZz48L2c+PGc+PGc+PHBhdGggY2xhc3M9InN0MCIgZD0iTS0yMTAuOCwzODMuM2MtMS41LDAtMi44LTEuMi0yLjgtMi44YzAtMS41LDEuMi0yLjgsMi44LTIuOHMyLjgsMS4yLDIuOCwyLjhDLTIwOCwzODItMjA5LjMsMzgzLjMtMjEwLjgsMzgzLjN6IE0tMjEwLjgsMzc5LjVjLTAuNSwwLTEsMC40LTEsMWMwLDAuNSwwLjQsMSwxLDFjMC41LDAsMS0wLjQsMS0xQy0yMDkuOSwzODAtMjEwLjMsMzc5LjUtMjEwLjgsMzc5LjV6Ii8+PC9nPjwvZz48L2c+PGc+PGc+PGc+PHBhdGggY2xhc3M9InN0MCIgZD0iTS0yMTguOCw0MjUuOGMtMS41LDAtMi44LTEuMi0yLjgtMi44YzAtMS41LDEuMi0yLjgsMi44LTIuOGMxLjUsMCwyLjgsMS4yLDIuOCwyLjhDLTIxNiw0MjQuNi0yMTcuMiw0MjUuOC0yMTguOCw0MjUuOHogTS0yMTguOCw0MjIuMWMtMC41LDAtMSwwLjQtMSwxYzAsMC41LDAuNCwxLDEsMWMwLjUsMCwxLTAuNCwxLTFDLTIxNy44LDQyMi41LTIxOC4yLDQyMi4xLTIxOC44LDQyMi4xeiIvPjwvZz48L2c+PGc+PGc+PHBhdGggY2xhc3M9InN0MCIgZD0iTS0yMTAuOCw0MzAuNGMtMS41LDAtMi44LTEuMi0yLjgtMi44YzAtMS41LDEuMi0yLjgsMi44LTIuOHMyLjgsMS4yLDIuOCwyLjhDLTIwOCw0MjkuMi0yMDkuMyw0MzAuNC0yMTAuOCw0MzAuNHogTS0yMTAuOCw0MjYuN2MtMC41LDAtMSwwLjQtMSwxczAuNCwxLDEsMWMwLjUsMCwxLTAuNCwxLTFTLTIxMC4zLDQyNi43LTIxMC44LDQyNi43eiIvPjwvZz48L2c+PC9nPjxnPjxnPjxnPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0tMjE4LjgsNDAyLjVjLTEuNSwwLTIuOC0xLjItMi44LTIuOGMwLTEuNSwxLjItMi44LDIuOC0yLjhjMS41LDAsMi44LDEuMiwyLjgsMi44Qy0yMTYsNDAxLjMtMjE3LjIsNDAyLjUtMjE4LjgsNDAyLjV6IE0tMjE4LjgsMzk4LjhjLTAuNSwwLTEsMC40LTEsMXMwLjQsMSwxLDFjMC41LDAsMS0wLjQsMS0xUy0yMTguMiwzOTguOC0yMTguOCwzOTguOHoiLz48L2c+PC9nPjxnPjxnPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0tMjEwLjgsNDA3LjFjLTEuNSwwLTIuOC0xLjItMi44LTIuOHMxLjItMi44LDIuOC0yLjhzMi44LDEuMiwyLjgsMi44Uy0yMDkuMyw0MDcuMS0yMTAuOCw0MDcuMXogTS0yMTAuOCw0MDMuNGMtMC41LDAtMSwwLjQtMSwxczAuNCwxLDEsMWMwLjUsMCwxLTAuNCwxLTFTLTIxMC4zLDQwMy40LTIxMC44LDQwMy40eiIvPjwvZz48L2c+PC9nPjwvZz48L3N2Zz4=);
226
+ background-size: cover;
227
+ }
228
+ &.postgres:before {
229
+ opacity: .9;
230
+ content: '';
231
+ display: inline-block;
232
+ height: 24px;
233
+ width: 24px;
234
+ vertical-align: middle;
235
+ margin-right: 8px;
236
+ position: relative;
237
+ top: -2px;
238
+ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zOnNrZXRjaD0iaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoL25zIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iLTI0MSAzMzMgMTI4IDEyOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtMjQxIDMzMyAxMjggMTI4OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe2ZpbGw6Izc5NTg5Rjt9PC9zdHlsZT48Zz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNLTE4NC40LDQwNC44di01OC41YzAtMC44LTAuNy0xLjUtMS41LTEuNWMtMzQuNiwwLTUxLjUsNi4xLTUxLjUsMTguNmMwLDE2LjksMjIuMSw0Mi45LDUxLjUsNDIuOUMtMTg1LjEsNDA2LjMtMTg0LjQsNDA1LjYtMTg0LjQsNDA0Ljh6Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTS0xNjguMSwzNDQuOGMtMC44LDAtMS41LDAuNy0xLjUsMS41djkzLjNjMCw0LjItMi44LDYuOS01LjMsOGMtMi42LDEuMS02LjQsMS4xLTkuNC0xLjljLTAuNi0wLjYtMS41LTAuNi0yLjEsMHMtMC42LDEuNSwwLDIuMWMyLjMsMi4zLDUuMiwzLjQsOC4xLDMuNGMxLjUsMCwzLTAuMyw0LjUtMC45YzQuNC0xLjgsNy4yLTUuOSw3LjItMTAuN3YtMzMuM2MyOC42LTAuOSw1MC0yNi4zLDUwLTQyLjlDLTExNi42LDM1MC45LTEzMy40LDM0NC44LTE2OC4xLDM0NC44eiBNLTE2Ni42LDQwMy4zdi01NS41YzMxLjIsMC4yLDQ3LDUuNCw0NywxNS42Qy0xMTkuNiwzNzguOC0xNDAuNSw0MDIuNC0xNjYuNiw0MDMuM3oiLz48L2c+PC9zdmc+);
239
+ background-size: cover;
240
+ }
241
+ &.redis:before {
242
+ opacity: .9;
243
+ content: '';
244
+ display: inline-block;
245
+ height: 24px;
246
+ width: 24px;
247
+ vertical-align: middle;
248
+ margin-right: 8px;
249
+ position: relative;
250
+ top: -2px;
251
+ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zOnNrZXRjaD0iaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoL25zIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iLTI0MSAzMzMgMTI4IDEyOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtMjQxIDMzMyAxMjggMTI4OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe2ZpbGw6Izc5NTg5Rjt9PC9zdHlsZT48Zz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNLTE4NC41LDMzNi41Yy0yMC4zLDAtMzUsMTQuNy0zNSwzNWMwLDE2LjUsOS44LDI5LjMsMjQuMywzMy42bC0yOS43LDUwYy0wLjMsMC41LTAuMywxLDAsMS41czAuOCwwLjgsMS4zLDAuOGgzOS4xYzAuOCwwLDEuNS0wLjcsMS41LTEuNXYtNTAuOFYzOTB2LTUyQy0xODMsMzM3LjItMTgzLjYsMzM2LjUtMTg0LjUsMzM2LjV6Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTS0xMjguMyw0NTUuNmwtMjYuMy01MmMxMi42LTUuMSwyMC45LTE3LjIsMjAuOS0zMi40YzAtMjAuMy0xNC43LTM1LTM1LTM1Yy0wLjgsMC0xLjUsMC43LTEuNSwxLjVzMC43LDEuNSwxLjUsMS41YzE4LjYsMCwzMiwxMy41LDMyLDMycy0xMy41LDMyLTMyLDMyYy0wLjgsMC0xLjUsMC43LTEuNSwxLjVzMC43LDEuNSwxLjUsMS41YzQsMCw3LjgtMC42LDExLjMtMS43TC0xMzEsNDU3YzAuMywwLjUsMC44LDAuOCwxLjMsMC44YzAuMiwwLDAuNS0wLjEsMC43LTAuMkMtMTI4LjMsNDU3LjMtMTI4LDQ1Ni40LTEyOC4zLDQ1NS42eiIvPjwvZz48L3N2Zz4=);
252
+ background-size: cover;
253
+ }
254
+ &.connect:before {
255
+ opacity: .9;
256
+ content: '';
257
+ display: inline-block;
258
+ height: 24px;
259
+ width: 24px;
260
+ vertical-align: middle;
261
+ margin-right: 8px;
262
+ position: relative;
263
+ top: -2px;
264
+ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zOnNrZXRjaD0iaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoL25zIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iLTI0MSAzMzMgMTI4IDEyOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtMjQxIDMzMyAxMjggMTI4OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe2ZpbGw6Izc5NTg5RjtzdHJva2U6Izc5NTg5Rjt9PC9zdHlsZT48dGl0bGU+QnVpbGRwYWNrczwvdGl0bGU+PGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+PHBhdGggY2xhc3M9InN0MCIgZD0iTS0xMjUuNywzNjguMmMwLTAuMSwwLTAuMy0wLjEtMC40YzAtMC4xLTAuMS0wLjItMC4xLTAuMmMtMC4xLTAuMS0wLjEtMC4zLTAuMi0wLjRjMC0wLjEtMC4xLTAuMS0wLjEtMC4yYy0wLjEtMC4xLTAuMi0wLjMtMC4zLTAuNGMwLDAsMCwwLTAuMSwwYy0wLjEtMC4xLTAuMy0wLjMtMC41LTAuNGwtNDkuNy0yOS4xYy0wLjEtMC4xLTAuMi0wLjEtMC40LTAuMmMtMC4xLDAtMC4yLTAuMS0wLjMtMC4xYy0wLjEsMC0wLjIsMC0wLjMsMGMtMC4zLDAtMC42LDAtMC45LDBjLTAuMSwwLTAuMiwwLTAuMywwYy0wLjEsMC0wLjIsMC4xLTAuMywwLjFjLTAuMSwwLTAuMiwwLjEtMC40LDAuMmwtNDkuNywyOS4xYy0wLjEsMC4xLTAuMiwwLjItMC4zLDAuMmMtMC4xLDAuMS0wLjIsMC4xLTAuMiwwLjJjLTAuMSwwLjEtMC4xLDAuMi0wLjIsMC4yYy0wLjEsMC4xLTAuMiwwLjItMC4yLDAuM2MwLDAuMS0wLjEsMC4yLTAuMSwwLjJjLTAuMSwwLjEtMC4xLDAuMy0wLjIsMC40YzAsMC4xLDAsMC4yLDAsMC4zYzAsMC4xLTAuMSwwLjMtMC4xLDAuNHYzOC4xdjE5LjZjMCwwLjIsMCwwLjUsMC4xLDAuN2MwLDAuMSwwLjEsMC4yLDAuMSwwLjNjMCwwLjEsMC4xLDAuMiwwLjEsMC4zYzAuMSwwLjEsMC4yLDAuMiwwLjMsMC4zYzAuMSwwLjEsMC4xLDAuMSwwLjIsMC4yYzAuMSwwLjEsMC4yLDAuMSwwLjIsMC4yYzAuMSwwLjEsMC4yLDAuMiwwLjMsMC4ybDE2LjQsOS41YzAuMSwwLjEsMC4zLDAuMSwwLjQsMC4yYzAuMSwwLDAuMSwwLjEsMC4yLDAuMWwzMi43LDE4LjhjMC4xLDAuMSwwLjMsMC4xLDAuNCwwLjJjMC4xLDAsMC4xLDAuMSwwLjIsMC4xYzAuMiwwLjEsMC40LDAuMSwwLjcsMC4xczAuNSwwLDAuNy0wLjFjMC4xLDAsMC4xLTAuMSwwLjItMC4xYzAuMS0wLjEsMC4zLTAuMSwwLjQtMC4ybDMyLjctMTguOGMwLDAsMCwwLDAuMSwwYzAuMi0wLjEsMC40LTAuMSwwLjYtMC4ybDE2LjQtOS41YzAuMS0wLjEsMC4yLTAuMiwwLjMtMC4yYzAuMS0wLjEsMC4yLTAuMSwwLjItMC4yYzAuMS0wLjEsMC4xLTAuMSwwLjItMC4yYzAuMS0wLjEsMC4yLTAuMiwwLjMtMC4zYzAuMS0wLjEsMC4xLTAuMiwwLjEtMC4zYzAtMC4xLDAuMS0wLjIsMC4xLTAuM2MwLjEtMC4yLDAuMS0wLjUsMC4xLTAuN3YtMTkuNnYtMzguMUMtMTI1LjYsMzY4LjQtMTI1LjcsMzY4LjMtMTI1LjcsMzY4LjJ6IE0tMTM3LjksNDA5LjFsLTYuOCw0bC0xMS41LTYuNWwxMS41LTYuNWwxMS4xLDYuNUwtMTM3LjksNDA5LjF6IE0tMTU5LDQxMS4xbDExLjYsNi41djEzLjVsLTExLjYtNi41VjQxMS4xeiBNLTE0Miw0MzF2LTEzLjRsMC41LTAuM2wxMC42LTYuMXYxMy40TC0xNDIsNDMxeiBNLTE3OCwzNTUuOWwtOC41LTQuOWwtMi43LTEuNmwxMS4yLTYuOWwxMS4yLDYuOWwtMi44LDEuNkwtMTc4LDM1NS45eiBNLTE5MS44LDM1NC4xbDExLjEsNi40djEyLjlsLTExLjEtNi41VjM1NC4xeiBNLTE3NS40LDM2MC41bDExLjEtNi40VjM2N2wtMTEuMSw2LjVWMzYwLjV6IE0tMTk3LDM1My42djE0LjljMCwwLjksMC41LDEuOCwxLjMsMi4zbDE2LjQsOS41YzAsMCwwLDAsMCwwYzAsMCwwLDAsMCwwYzAuMSwwLjEsMC4zLDAuMSwwLjQsMC4yYzAuMSwwLDAuMiwwLjEsMC4zLDAuMWMwLjIsMC4xLDAuNSwwLjEsMC43LDAuMWMwLjIsMCwwLjUsMCwwLjctMC4xYzAuMSwwLDAuMi0wLjEsMC4zLTAuMWMwLjEsMCwwLjMtMC4xLDAuNC0wLjJjMCwwLDAsMCwwLDBjMCwwLDAsMCwwLDBsMTYuNC05LjVjMC44LTAuNSwxLjMtMS4zLDEuMy0yLjN2LTE0LjlsMjUuNCwxNC45bC01LjEsMi45TC0xNzgsMzk0bC0zOC4yLTIxLjlsLTYuMi0zLjZMLTE5NywzNTMuNnogTS0xOTcsNDExLjJ2MTMuNGwtMTEuNiw2LjV2LTEzbDMuMi0xLjlMLTE5Nyw0MTEuMnogTS0yMTEuMyw0MTMuNWwtMTEuMy02LjlsMTEuMy02LjVsMTEuNiw2LjVMLTIxMS4zLDQxMy41eiBNLTIyNS4xLDQyNC42di0xMy4zbDExLjEsNi44VjQzMUwtMjI1LjEsNDI0LjZ6IE0tMTkzLjEsNDI4LjVjMC44LTAuNSwxLjMtMS4zLDEuMy0yLjN2LTE5LjZjMCwwLDAsMCwwLDBjMCwwLDAsMCwwLDBjMC0wLjEsMC0wLjMtMC4xLTAuNGMwLTAuMSwwLTAuMiwwLTAuM2MwLTAuMi0wLjEtMC4zLTAuMi0wLjVjMC0wLjEsMC0wLjEtMC4xLTAuMmMtMC4xLTAuMS0wLjItMC4zLTAuMy0wLjRjMC0wLjEtMC4xLTAuMS0wLjEtMC4yYy0wLjEtMC4xLTAuMi0wLjEtMC4yLTAuMmMtMC4xLTAuMS0wLjItMC4yLTAuMy0wLjJjMCwwLDAsMCwwLDBsLTE2LjktOS41Yy0wLjgtMC41LTEuOC0wLjQtMi42LDBsLTEyLjQsNy4ydi0yOC45bDIyLjYsMTNsMjEuOCwxMi41djUxLjVsLTI1LjItMTQuNUwtMTkzLjEsNDI4LjV6IE0tMTc1LjQsMzk4LjZsMjEuNC0xMi4zbDIzLjEtMTMuMlY0MDJsLTEyLjQtNy4yYy0wLjgtMC41LTEuOC0wLjUtMi42LDBsLTE2LjksOS41YzAsMCwwLDAsMCwwYzAsMCwwLDAsMCwwYy0wLjEsMC4xLTAuMiwwLjItMC4zLDAuM2MtMC4xLDAuMS0wLjEsMC4xLTAuMiwwLjJjLTAuMSwwLjEtMC4yLDAuMi0wLjMsMC4zYy0wLjEsMC4xLTAuMSwwLjEtMC4yLDAuMmMtMC4xLDAuMS0wLjEsMC4zLTAuMiwwLjRjMCwwLjEtMC4xLDAuMS0wLjEsMC4yYy0wLjEsMC4yLTAuMSwwLjUtMC4xLDAuN3YxOS42YzAsMSwwLjUsMS44LDEuMywyLjNsMTIuOCw3LjJsLTI1LjIsMTQuNVYzOTguNnoiLz48L3N2Zz4=);
265
+ background-size: cover;
266
+ }
267
+ &.enterprise:before {
268
+ opacity: .9;
269
+ content: '';
270
+ display: inline-block;
271
+ height: 24px;
272
+ width: 24px;
273
+ vertical-align: middle;
274
+ margin-right: 8px;
275
+ position: relative;
276
+ top: -2px;
277
+ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zOnNrZXRjaD0iaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoL25zIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iLTI0MSAzMzMgMTI4IDEyOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtMjQxIDMzMyAxMjggMTI4OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe2ZpbGw6Izc5NTg5RjtzdHJva2U6Izc5NTg5Rjt9PC9zdHlsZT48dGl0bGU+QnVpbGRwYWNrczwvdGl0bGU+PGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+PHBhdGggY2xhc3M9InN0MCIgZD0iTS0xNDcuNiw0MjQuNkMtMTQ3LjYsNDI0LjUtMTQ3LjYsNDI0LjUtMTQ3LjYsNDI0LjZsMC0zMWMwLDAsMCwwLDAtMC4xYzAtMC4xLDAtMC4xLDAtMC4yYzAtMC4xLDAtMC4xLDAtMC4yYzAtMC4xLDAtMC4xLDAtMC4xYzAuMi0wLjgsMC0xLjctMC43LTIuMmwtMTIuNS04LjhjMC0wLjEsMC0wLjEsMC0wLjJ2LTE5LjJjMC0wLjYtMC4zLTEuMS0wLjctMS41bC0xNC45LTEyLjFjMCwwLDAsMC0wLjEsMHYtMTAuMmMwLTEuMS0wLjktMi0yLTJzLTIsMC45LTIsMlYzNDljMCwwLDAsMC0wLjEsMGwtMTQuOSwxMi4xYy0wLjUsMC40LTAuNywwLjktMC43LDEuNXYxOS4ybC0xNC43LDkuM2MtMC42LDAuNC0wLjksMS0wLjksMS43djMxLjdjLTUuOCwwLTEwLjYsNC43LTEwLjYsMTAuNmMwLDUuOCw0LjcsMTAuNiwxMC42LDEwLjZzMTAuNi00LjcsMTAuNi0xMC42YzAtNC41LTIuOC04LjMtNi43LTkuOGMwLTAuMSwwLTAuMiwwLTAuNHYtMzFsMTEuNy03LjRWNDIxYzAsMS4xLDAuOSwyLDIsMnMyLTAuOSwyLTJ2LTU0LjJsMTIuNiw4LjhjMC4zLDAuMiwwLjcsMC40LDEuMSwwLjRjMC40LDAsMC44LTAuMSwxLjEtMC40bDEyLjYtOC44djEzLjdjLTAuMSwwLjEtMC4yLDAuMS0wLjMsMC4ybC0xNC41LDEwLjJjLTAuNywwLjUtMSwxLjQtMC43LDIuMmMwLDAsMCwwLDAsMC4xYzAsMC4xLDAsMC4xLDAsMC4yYzAsMC4xLDAsMC4yLDAsMC4zYzAsMCwwLDAuMSwwLDAuMXYwYzAsMCwwLDAsMCwwdjQyLjdjLTUuMSwwLjgtOSw1LjEtOSwxMC40YzAsNS44LDQuNywxMC42LDEwLjYsMTAuNnMxMC42LTQuNywxMC42LTEwLjZjMC01LTMuNS05LjItOC4yLTEwLjN2LTM5LjNsMTEuOCw3LjdjMCwwLjEtMC4xLDAuMy0wLjEsMC41djExLjdjMCwxLjEsMC45LDIsMiwyczItMC45LDItMnYtMTEuN2MwLTAuMiwwLTAuNC0wLjEtMC41bDkuNS03LjJ2MjdjMCwwLjEsMCwwLjIsMCwwLjRjLTQuNSwxLjItNy45LDUuMy03LjksMTAuMmMwLDUuOCw0LjcsMTAuNiwxMC42LDEwLjZjNS44LDAsMTAuNi00LjcsMTAuNi0xMC42Qy0xMzguMiw0MjkuNi0xNDIuMyw0MjUuMS0xNDcuNiw0MjQuNnogTS0yMDUuMSw0MzUuMWMwLDMuNy0zLDYuNy02LjcsNi43cy02LjctMy02LjctNi43YzAtMy43LDMtNi42LDYuNy02LjZTLTIwNS4xLDQzMS40LTIwNS4xLDQzNS4xeiBNLTE3OC41LDM3MS42bC0xMi42LTguOWwxMi42LTEwLjJsMTIuNywxMC4yTC0xNzguNSwzNzEuNnogTS0xNjQsMzg0LjZsMTIsOC40bC0xMC45LDguM2wtMTIuOS04LjRMLTE2NCwzODQuNnogTS0xNzIuMiw0NDYuOGMwLDMuNy0zLDYuNy02LjYsNi43cy02LjYtMy02LjYtNi43YzAtMy43LDMtNi42LDYuNi02LjZTLTE3Mi4yLDQ0My4xLTE3Mi4yLDQ0Ni44eiBNLTE0OC44LDQ0MS43Yy0zLjcsMC02LjYtMy02LjYtNi43YzAtMy43LDMtNi42LDYuNi02LjZjMy43LDAsNi43LDMsNi43LDYuNkMtMTQyLjEsNDM4LjctMTQ1LjEsNDQxLjctMTQ4LjgsNDQxLjd6Ii8+PC9zdmc+);
278
+
279
+ background-size: cover;
280
+ }
281
+ }
282
+
283
+ p a {
284
+ color: #222;
285
+ }
286
+
287
+ &.more {
288
+ width: 160%;
289
+ max-width: 160%;
290
+ position: absolute;
291
+ left: 0;
292
+ right: 0;
293
+ display: block;
294
+ padding: $dropdown-padding/2 0 $dropdown-padding 0;
295
+
296
+ .more-title {
297
+ color: #999;
298
+ display: block;
299
+ font-size: 11px;
300
+ text-transform: uppercase;
301
+ letter-spacing: .05em;
302
+ margin: 12px 0 $dropdown-padding/2;
303
+ padding-bottom: ceil($dropdown-padding/1.5);
304
+ border-bottom: 1px solid #ddd;
305
+ }
306
+
307
+ section {
308
+ display: inline-block;
309
+ float: left;
310
+ height: 100%;
311
+ margin: 0;
312
+ padding: 0 $dropdown-padding;
313
+
314
+ @include tablet() {
315
+ float: none;
316
+ height: auto;
317
+ padding: 0;
318
+ margin: 12px 0;
319
+ }
320
+
321
+ > ul {
322
+ padding-left: 1px;
323
+ padding-right: 1px;
324
+ }
325
+ }
326
+
327
+ .more-resources,
328
+ .more-languages {
329
+ width: 25%;
330
+
331
+ @include tablet {
332
+ width: 100%;
333
+ }
334
+ }
335
+
336
+ .more-blog {
337
+ width: 50%;
338
+
339
+ @include tablet {
340
+ width: 100%;
341
+ }
342
+
343
+ a {
344
+ color: $primary-color;
345
+ }
346
+
347
+ h3 {
348
+ margin-top: 13px;
349
+ margin-bottom: 2px;
350
+ padding: 0;
351
+ font-size: 16px;
352
+ line-height: 1.4em;
353
+ text-align: left;
354
+ }
355
+
356
+ p {
357
+ font-size: $font-size-sm;
358
+ line-height: 1.4;
359
+ color: #333;
360
+ font-weight: 500;
361
+
362
+ a {
363
+ color: #333;
364
+ font-weight: 600;
365
+
366
+ &:hover {
367
+ color: $primary-color;
368
+ }
369
+ }
370
+ }
371
+
372
+ .blog-date {
373
+ margin: 1px 0;
374
+ color: #888;
375
+ font-size: $font-size-xs;
376
+ }
377
+ }
378
+
379
+ .btn-inline {
380
+ margin: 5px 0;
381
+ font-size: $font-size-xs;
382
+ padding-left: 1.5em;
383
+ padding-right: 1.5em;
384
+ border: 1px solid $primary-color;
385
+ }
386
+ }
387
+
388
+ li {
389
+ float: none;
390
+ white-space: nowrap;
391
+ padding: 0;
392
+ }
393
+
394
+ }
395
+
396
+ .main-nav {
397
+ float: left;
398
+ margin: 7px 0 0 15px;
399
+ }
400
+
401
+ @include tablet-landscape {
402
+ .nav-more {
403
+ display: none;
404
+ }
405
+ }
406
+
407
+ .tool-nav {
408
+ float: right;
409
+ margin: ($padding-nav-inner + 1) 0 0 $padding-nav;
410
+
411
+ li {
412
+ font-size: $font-size-sm;
413
+ padding: 0 ceil($padding-nav-inner/2);
414
+ margin: 0 10px;
415
+ &:last-child {
416
+ padding-right: 0;
417
+ margin-right: 0;
418
+ }
419
+ }
420
+ }
421
+
422
+ .user {
423
+
424
+ li {
425
+ font-size: $font-size;
426
+ }
427
+
428
+ > span {
429
+ color: lighten($primary-color, 10%);
430
+ color: fade-out(#fff, .8);
431
+ margin: 0 .2em;
432
+ }
433
+
434
+ &.logged-in {
435
+ > a:first-child {
436
+ margin-right: 12px;
437
+ }
438
+ }
439
+ }
440
+
441
+
442
+
443
+ .nav-wrapper {
444
+ @include tablet-landscape {
445
+ display: none;
446
+ overflow: auto;
447
+ }
448
+ }
449
+
450
+ &.active {
451
+
452
+ .nav-wrapper {
453
+
454
+ $nav-wrapper-bg: fade-out(darken($primary-color, 45%), .05);
455
+
456
+ display: block;
457
+ position: fixed;
458
+ z-index: 11;
459
+ left: 0;
460
+ top: 0;
461
+ width: 100%;
462
+ height: 100%;
463
+ background-color: $nav-wrapper-bg;
464
+
465
+ &:before {
466
+ content: "";
467
+ width: 100%;
468
+ position: fixed;
469
+ top: 0;
470
+ left: 0;
471
+ height: 100px;
472
+ z-index: 0;
473
+ @include linear-gradient($nav-wrapper-bg 50%, fade-out($nav-wrapper-bg, 1) 100%, $fallback: transparent);
474
+ }
475
+ }
476
+
477
+ #logo {
478
+ position: fixed;
479
+ z-index: 12;
480
+
481
+ a {
482
+ @include mobile-landscape {
483
+ overflow: hidden;
484
+ width: 40px;
485
+ }
486
+ }
487
+ }
488
+
489
+ .main-nav {
490
+ position: relative;
491
+ width: 100%;
492
+ padding: 100px 40px;
493
+ font-size: 1.5em;
494
+ margin: 0;
495
+ z-index: -1;
496
+
497
+ @include mobile-landscape {
498
+ padding: 100px 20px;
499
+ }
500
+
501
+ }
502
+
503
+ .tool-nav {
504
+ position: fixed;
505
+ top: 20px;
506
+ right: 70px;
507
+ margin: 8px 0 0 0;
508
+
509
+ @include mobile-landscape {
510
+ width: 100%;
511
+ padding-left: 150px;
512
+ }
513
+
514
+ li {
515
+ float: right;
516
+ margin: 0 16px 0 0;
517
+ padding: 0;
518
+
519
+ @include mobile-landscape {
520
+ float: none;
521
+ }
522
+
523
+ &.user {
524
+ margin-top: -2px;
525
+
526
+ @include mobile-landscape {
527
+ position: fixed;
528
+ bottom: 0;
529
+ width: 100%;
530
+ left: 0;
531
+ padding: 15px;
532
+ background-color: fade-out(#000, .05);
533
+ }
534
+ }
535
+ }
536
+ }
537
+
538
+ .dropdown {
539
+ margin-top: 8px;
540
+ margin-bottom: 16px;
541
+ visibility: visible;
542
+ opacity: 1;
543
+ width: 100%;
544
+
545
+ li {
546
+ display: block;
547
+ font-size: 1.25em;
548
+
549
+ a {
550
+ color: fade-out(white, .2);
551
+ font-weight: 500;
552
+
553
+ &:hover {
554
+ color: $secondary-color;
555
+ }
556
+ }
557
+ }
558
+
559
+ &.more {
560
+ margin-top: 35px;
561
+ text-align: left;
562
+ position: relative;
563
+
564
+ .more-title {
565
+ color: $primary-color;
566
+ border-bottom: 1px solid $primary-color;
567
+ }
568
+
569
+ .btn-default {
570
+ background: transparent;
571
+ color: white;
572
+ }
573
+
574
+ .more-blog {
575
+
576
+ h3,
577
+ h3 a {
578
+ color: white;
579
+ }
580
+
581
+ p {
582
+ color: fade-out(#fff, .2);
583
+
584
+ a {
585
+ color: #fff;
586
+ }
587
+ }
588
+ }
589
+ }
590
+
591
+ }
592
+
593
+
594
+ li {
595
+
596
+ &.has-dropdown {
597
+
598
+ .dropdown {
599
+ margin-top: 8px;
600
+ margin-bottom: 16px;
601
+
602
+ &.more {
603
+ margin-bottom: 0;
604
+ }
605
+ }
606
+
607
+ > a {
608
+ &:after {
609
+ display: none;
610
+ }
611
+ }
612
+ }
613
+
614
+ > a {
615
+ color: fade-out(white, .1);
616
+
617
+ &:hover {
618
+ color: white;
619
+ }
620
+
621
+ &.highlight {
622
+ background: $primary-color;
623
+ padding: 9px 12px;
624
+ }
625
+ }
626
+
627
+ .more-link {
628
+ display: none;
629
+ }
630
+ }
631
+
632
+ .mobile-nav {
633
+ position: fixed;
634
+ }
635
+
636
+ }
637
+
638
+ .mobile-nav {
639
+ display: none;
640
+ position: absolute;
641
+ top: 32px;
642
+ right: 23px;
643
+ z-index: 12;
644
+
645
+ @include tablet-landscape {
646
+ display: block;
647
+ }
648
+ }
649
+
650
+ .site-search {
651
+ position: relative;
652
+ display: block;
653
+ float: right;
654
+ margin-top: -2px;
655
+ margin-right: -10px;
656
+
657
+ @include mobile-landscape {
658
+ float: none;
659
+ }
660
+
661
+ .gsc-input input.gsc-input {
662
+ width: 145px !important;
663
+ background: fade-out(#fff, .9) !important;
664
+ color: white;
665
+ color: fade-out(white, .5);
666
+ font-size: 13px !important;
667
+ @include transition(.15s ease-in-out);
668
+ -webkit-font-smoothing: subpixel-antialiased;
669
+
670
+ @include mobile-landscape {
671
+ width: 100% !important;
672
+ }
673
+
674
+ &:hover {
675
+ box-shadow: 0;
676
+ }
677
+
678
+ &:focus {
679
+ background: fade-out(#fff, .1) !important;
680
+ color: #222;
681
+
682
+ @include screen(min-width, 1110px) {
683
+ width: 200px !important;
684
+ }
685
+ }
686
+ }
687
+
688
+ .gsc-search-button {
689
+ // Temporary
690
+ input {
691
+ display: none;
692
+ }
693
+ }
694
+ }
695
+ }
696
+
697
+ #logo {
698
+ float: left;
699
+ font-size: 1em;
700
+ margin: 0;
701
+
702
+ a {
703
+ @include hide-text;
704
+ @include size(143px 40px);
705
+ background-image: url(logo.svg);
706
+ display: block;
707
+ background-repeat: no-repeat;
708
+ }
709
+ }
710
+
711
+ .prop-label {
712
+ display: block;
713
+ float: left;
714
+ padding: .7em 0 0 .8em;
715
+ font-size: 1.25em;
716
+ font-weight: 400;
717
+ }
718
+
719
+ #hero {
720
+ @include background-image(radial-gradient(0% bottom, ellipse, rgba(118, 72, 160, 0.7) 0%, rgba(118, 72, 160, 0) 60%),
721
+ radial-gradient(90% bottom, ellipse, rgba(82, 63, 140, 1) 0%, rgba(82, 63, 140, 0) 40%));
722
+
723
+ color: lighten($primary-color, 30%);
724
+
725
+ .wrapper {
726
+ padding-bottom: 5.625em;
727
+ padding-top: 4em;
728
+ }
729
+
730
+ .button {
731
+ @include background-image(linear-gradient(#FFFFFF, #E7E4EE));
732
+ background-color: white;
733
+ color: darken($primary-color, 10%);
734
+ display: inline-block;
735
+ min-width: 240px;
736
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.9);
737
+ }
738
+
739
+ h1,
740
+ h2 {
741
+ -webkit-font-smoothing: antialiased;
742
+ }
743
+
744
+ h1 {
745
+ margin: 0;
746
+ color: white;
747
+ font-size: 2em;
748
+ }
749
+
750
+ h2 {
751
+ color: inherit;
752
+ font-weight: 400;
753
+ line-height: 1.5em;
754
+ margin: 0.4em 0 2em;
755
+ }
756
+
757
+ small {
758
+ display: block;
759
+ margin-top: 0.4em;
760
+ }
761
+ }
762
+
763
+ body.purple {
764
+ background-color: #3B2F63;
765
+ @include background-image(radial-gradient(50% top, circle, rgba(84, 90, 182, 0.6) 0%, rgba(84, 90, 182, 0) 75%),
766
+ radial-gradient(right top, circle, rgba(121, 74, 162, 1) 0%, rgba(121, 74 ,162, 0) 57%));
767
+ background-repeat: no-repeat;
768
+ background-size: 100% 1000px;
769
+ color: lighten($primary-color, 30%);
770
+ margin: 0;
771
+ padding: 0;
772
+
773
+ #header {
774
+ background: transparent;
775
+ }
776
+
777
+ .page-content {
778
+ background: transparent;
779
+ }
780
+ }