jekyll_patternbot 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +12 -0
  3. data/.gitattributes +13 -0
  4. data/.gitignore +73 -0
  5. data/CHANGELOG.md +68 -0
  6. data/Gemfile +16 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +39 -0
  9. data/Rakefile +1 -0
  10. data/_config.yml +54 -0
  11. data/_data/locales/en-ca.yml +5 -0
  12. data/_includes/patternbot_icons.html +38 -0
  13. data/_includes/patternbot_pattern_brand_color_swatches.html +48 -0
  14. data/_includes/patternbot_pattern_brand_typeface.html +32 -0
  15. data/_includes/patternbot_pattern_brand_typeface_weight.html +15 -0
  16. data/_includes/patternbot_pattern_copy_script.html +22 -0
  17. data/_includes/patternbot_patternlib_pattern.html +241 -0
  18. data/_layouts/patternbot_pattern_internal.html +94 -0
  19. data/_layouts/patternbot_pattern_lib.html +214 -0
  20. data/_layouts/patternbot_pattern_user.html +27 -0
  21. data/_patterns/brand/colors.html +23 -0
  22. data/_patterns/brand/config.yml +22 -0
  23. data/_patterns/brand/logos.html +43 -0
  24. data/_patterns/brand/typefaces.html +18 -0
  25. data/_patterns/grid/config.yml +14 -0
  26. data/_patterns/grid/grid-sizes.html +47 -0
  27. data/_patterns/icons/config.yml +13 -0
  28. data/_patterns/icons/icons.html +91 -0
  29. data/_patterns/modules/config.yml +32 -0
  30. data/_patterns/modules/embed.html +23 -0
  31. data/_patterns/modules/list-groups.html +21 -0
  32. data/_patterns/modules/media-objects.html +16 -0
  33. data/_patterns/typography/config.yml +55 -0
  34. data/_patterns/typography/emphasis-and-edits.html +80 -0
  35. data/_patterns/typography/font-sizes.html +90 -0
  36. data/_patterns/typography/headings.html +31 -0
  37. data/_patterns/typography/horizontal-spacing.html +46 -0
  38. data/_patterns/typography/links.html +11 -0
  39. data/_patterns/typography/lists.html +43 -0
  40. data/_patterns/typography/quotations.html +17 -0
  41. data/_patterns/typography/size-adjustments.html +20 -0
  42. data/_patterns/typography/typesetting.html +32 -0
  43. data/_patterns/typography/vertical-spacing.html +55 -0
  44. data/_patterns/utilities/config.yml +11 -0
  45. data/_patterns/utilities/utilities.html +18 -0
  46. data/_plugins/jekyll_patternbot/config.rb +19 -0
  47. data/_plugins/jekyll_patternbot/filters/color.rb +87 -0
  48. data/_plugins/jekyll_patternbot/filters/number.rb +11 -0
  49. data/_plugins/jekyll_patternbot/filters/pattern.rb +15 -0
  50. data/_plugins/jekyll_patternbot/filters/text.rb +33 -0
  51. data/_plugins/jekyll_patternbot/finders/finder.rb +34 -0
  52. data/_plugins/jekyll_patternbot/finders/icons.rb +25 -0
  53. data/_plugins/jekyll_patternbot/finders/logos.rb +26 -0
  54. data/_plugins/jekyll_patternbot/finders/patterns.rb +69 -0
  55. data/_plugins/jekyll_patternbot/finders/sample_pages.rb +18 -0
  56. data/_plugins/jekyll_patternbot/generators/internal_patterns.rb +56 -0
  57. data/_plugins/jekyll_patternbot/generators/pattern_lib.rb +27 -0
  58. data/_plugins/jekyll_patternbot/generators/user_patterns.rb +57 -0
  59. data/_plugins/jekyll_patternbot/helpers/color.rb +26 -0
  60. data/_plugins/jekyll_patternbot/helpers/file.rb +17 -0
  61. data/_plugins/jekyll_patternbot/helpers/jekyll.rb +60 -0
  62. data/_plugins/jekyll_patternbot/helpers/pattern.rb +36 -0
  63. data/_plugins/jekyll_patternbot/hooks/pattern_lib.rb +57 -0
  64. data/_plugins/jekyll_patternbot/loggers/patternbot.rb +24 -0
  65. data/_plugins/jekyll_patternbot/parsers/css_color.rb +54 -0
  66. data/_plugins/jekyll_patternbot/parsers/css_font.rb +109 -0
  67. data/_plugins/jekyll_patternbot/parsers/css_utility.rb +27 -0
  68. data/_plugins/jekyll_patternbot/parsers/gridifier.rb +22 -0
  69. data/_plugins/jekyll_patternbot/parsers/icons.rb +27 -0
  70. data/_plugins/jekyll_patternbot/parsers/modulifier.rb +10 -0
  71. data/_plugins/jekyll_patternbot/parsers/theme.rb +39 -0
  72. data/_plugins/jekyll_patternbot/parsers/typografier.rb +21 -0
  73. data/_plugins/jekyll_patternbot/parsers/web_dev_tool.rb +41 -0
  74. data/_plugins/jekyll_patternbot/processors/brand.rb +22 -0
  75. data/_plugins/jekyll_patternbot/processors/modules.rb +35 -0
  76. data/_plugins/jekyll_patternbot/tags/pattern.rb +19 -0
  77. data/_plugins/jekyll_patternbot/tags/pattern_css.rb +27 -0
  78. data/_plugins/jekyll_patternbot/tags/pattern_js.rb +27 -0
  79. data/_plugins/jekyll_patternbot.rb +55 -0
  80. data/_sass/.gitignore +0 -0
  81. data/assets/.gitignore +0 -0
  82. data/assets/_patternbot/common/common.css +223 -0
  83. data/assets/_patternbot/common/common.min.css +1 -0
  84. data/assets/_patternbot/common/gridifier.css +1175 -0
  85. data/assets/_patternbot/common/gridifier.min.css +1 -0
  86. data/assets/_patternbot/common/modulifier.css +539 -0
  87. data/assets/_patternbot/common/modulifier.min.css +1 -0
  88. data/assets/_patternbot/common/typografier.css +1787 -0
  89. data/assets/_patternbot/common/typografier.min.css +1 -0
  90. data/assets/_patternbot/images/placeholder-16by9.svg +1 -0
  91. data/assets/_patternbot/images/placeholder-1by1.svg +1 -0
  92. data/assets/_patternbot/patterns/brand/brand.css +79 -0
  93. data/assets/_patternbot/patterns/brand/brand.min.css +1 -0
  94. data/assets/_patternbot/patterns/grid/grid.css +27 -0
  95. data/assets/_patternbot/patterns/grid/grid.min.css +1 -0
  96. data/assets/_patternbot/patterns/icons/icons.css +41 -0
  97. data/assets/_patternbot/patterns/icons/icons.min.css +1 -0
  98. data/assets/_patternbot/patterns/modules/modules.css +4 -0
  99. data/assets/_patternbot/patterns/modules/modules.min.css +1 -0
  100. data/assets/_patternbot/patterns/typography/typography.css +11 -0
  101. data/assets/_patternbot/patterns/typography/typography.min.css +1 -0
  102. data/assets/_patternbot/patterns/utilities/utilities.css +4 -0
  103. data/assets/_patternbot/patterns/utilities/utilities.min.css +1 -0
  104. data/assets/_patternbot/ui/gridifier.css +1175 -0
  105. data/assets/_patternbot/ui/main.css +513 -0
  106. data/assets/_patternbot/ui/main.js +301 -0
  107. data/assets/_patternbot/ui/modulifier.css +725 -0
  108. data/assets/_patternbot/ui/pattern-lib.css +4 -0
  109. data/assets/_patternbot/ui/pattern-lib.min.css +1 -0
  110. data/assets/_patternbot/ui/pattern-lib.min.js +1 -0
  111. data/assets/_patternbot/ui/typografier.css +1787 -0
  112. data/jekyll_patternbot.gemspec +34 -0
  113. data/package.json +35 -0
  114. data/version.rb +3 -0
  115. data/yarn.lock +2783 -0
  116. metadata +312 -0
@@ -0,0 +1,301 @@
1
+ var patternbot = {};
2
+
3
+ /*
4
+ ================================================
5
+ IFRAME CSS & JS INJECTION
6
+ ================================================
7
+ */
8
+
9
+ (function () {
10
+ var injectCss = function (iframe) {
11
+ var style = document.createElement('style');
12
+
13
+ if (iframe.dataset.injectCss.trim().length > 0) {
14
+ style.innerHTML = iframe.dataset.injectCss.trim();
15
+ }
16
+
17
+ iframe.contentWindow.document.head.appendChild(style);
18
+ };
19
+
20
+ var injectAssetsIntoIframe = function (iframe) {
21
+ injectCss(iframe);
22
+ };
23
+
24
+ patternbot.injectAssetsIntoIframe = injectAssetsIntoIframe;
25
+ }());
26
+
27
+ /*
28
+ ================================================
29
+ IFRAME RESPONSIVENESS
30
+ ================================================
31
+ */
32
+ (function () {
33
+ 'use strict';
34
+
35
+ var iframes = document.querySelectorAll('iframe');
36
+
37
+ [].forEach.call(iframes, function (iframe) {
38
+ var outside = iframe.parentNode;
39
+ var resizeLength = iframe.parentNode.querySelector('.resizeable-pattern-length');
40
+
41
+ if (!resizeLength) return;
42
+
43
+ interact(resizeLength).resizable({
44
+ edges: {
45
+ left: '.resize-handle-left',
46
+ right: '.resize-handle-right',
47
+ bottom: false,
48
+ top: false,
49
+ },
50
+ onmove: function (e) {
51
+ var width = e.rect.width;
52
+ var availableSpace = outside.parentNode.clientWidth - parseInt(getComputedStyle(outside.parentNode).paddingLeft.replace(/px/), 10) - parseInt(getComputedStyle(outside.parentNode).paddingRight.replace(/px/), 10);
53
+
54
+ if (width < 120) width = 120;
55
+ if ((width * 2) > availableSpace) width = availableSpace / 2;
56
+
57
+ iframe.style.pointerEvents = 'none';
58
+ outside.style.width = (width * 2) + 'px';
59
+ resizeLength.style.width = (width * 1) + 'px';
60
+ iframe.iFrameResizer.resize();
61
+ },
62
+ onend: function () {
63
+ iframe.style.pointerEvents = 'auto';
64
+ iframe.iFrameResizer.resize();
65
+ },
66
+ });
67
+ });
68
+ }());
69
+
70
+ /*
71
+ ================================================
72
+ NAVIGATION TABS
73
+ ================================================
74
+ */
75
+ (function () {
76
+ 'use strict';
77
+
78
+ var tablist = document.querySelectorAll('[role="tablist"] a');
79
+ var showAllBtn = document.getElementById('patternbot-nav-show-all');
80
+ var possibleInitialTab;
81
+
82
+ var areAllPatternsShowing = function () {
83
+ return (showAllBtn.getAttribute('aria-pressed') == 'true');
84
+ }
85
+
86
+ var loadAllVisibleIframes = function () {
87
+ var visibleIframes = document.querySelectorAll('[role="tabpanel"]:not([hidden]) iframe');
88
+
89
+ if (!visibleIframes) return;
90
+
91
+ [].forEach.call(visibleIframes, function (iframe) {
92
+ if (!iframe.src) {
93
+ iframe.addEventListener('load', function (e) {
94
+ patternbot.injectAssetsIntoIframe(e.target);
95
+
96
+ iFrameResize({
97
+ heightCalculationMethod: 'max',
98
+ minHeight: (e.target.dataset.minHeight) ? parseInt(e.target.dataset.minHeight, 10) : 0,
99
+ resizedCallback: function (opts) {
100
+ opts.iframe.previousElementSibling.setAttribute('hidden', true);
101
+ opts.iframe.parentNode.style.minHeight = 0;
102
+ opts.iframe.style.opacity = 1;
103
+ },
104
+ }, e.target);
105
+ });
106
+
107
+ iframe.src = iframe.dataset.src;
108
+ }
109
+ });
110
+ };
111
+
112
+ var switchTabs = function (link) {
113
+ var openLinks = document.querySelectorAll('[role="tab"][aria-selected="true"]');
114
+ var openTabs = document.querySelectorAll('[role="tabpanel"]:not([hidden])');
115
+ var newTab = document.getElementById(link.getAttribute('aria-controls'));
116
+
117
+ if (openTabs) {
118
+ [].forEach.call(openTabs, function (openTab) {
119
+ openTab.setAttribute('hidden', true);
120
+ openTab.setAttribute('aria-hidden', true);
121
+ });
122
+ }
123
+
124
+ if (openLinks) {
125
+ [].forEach.call(openLinks, function (openLink) {
126
+ openLink.setAttribute('aria-selected', false);
127
+ });
128
+ }
129
+
130
+ newTab.removeAttribute('hidden');
131
+ newTab.setAttribute('aria-hidden', false);
132
+ link.setAttribute('aria-selected', true);
133
+ window.location.hash = link.getAttribute('href');
134
+
135
+ requestAnimationFrame(function () { window.scrollTo(0, 0); });
136
+
137
+ loadAllVisibleIframes();
138
+ };
139
+
140
+ var switchToFirstTab = function () {
141
+ var firstATag = document.querySelector('[role="tablist"] > li:first-child [role="tab"]');
142
+
143
+ if (firstATag) switchTabs(firstATag);
144
+ };
145
+
146
+ var showAllTabs = function () {
147
+ var allTabs = document.querySelectorAll('[role="tabpanel"]');
148
+ var allLinks = document.querySelectorAll('[role="tab"]');
149
+
150
+ if (!allTabs) return;
151
+
152
+ [].forEach.call(allTabs, function (tab) {
153
+ tab.removeAttribute('hidden');
154
+ tab.setAttribute('aria-hidden', false);
155
+ });
156
+
157
+ [].forEach.call(allLinks, function (link) {
158
+ link.setAttribute('aria-selected', false);
159
+ });
160
+
161
+ loadAllVisibleIframes();
162
+ };
163
+
164
+ if (!tablist || !showAllBtn) return;
165
+
166
+ [].forEach.call(tablist, function (link) {
167
+ link.addEventListener('click', function (e) {
168
+ if (areAllPatternsShowing()) return true;
169
+
170
+ switchTabs(link);
171
+ });
172
+ });
173
+
174
+ showAllBtn.addEventListener('click', function (e) {
175
+ if (areAllPatternsShowing()) {
176
+ this.setAttribute('aria-pressed', false);
177
+ localStorage.setItem('show-all-patterns', false);
178
+ document.body.classList.remove('patternbot-showing-all-patterns');
179
+ switchToFirstTab();
180
+ } else {
181
+ this.setAttribute('aria-pressed', true);
182
+ localStorage.setItem('show-all-patterns', true);
183
+ document.body.classList.add('patternbot-showing-all-patterns');
184
+ showAllTabs();
185
+ }
186
+ });
187
+
188
+ if (localStorage.getItem('show-all-patterns') == 'true') {
189
+ showAllBtn.setAttribute('aria-pressed', true);
190
+ document.body.classList.add('patternbot-showing-all-patterns');
191
+ showAllTabs();
192
+ } else {
193
+ if (window.location.hash) {
194
+ possibleInitialTab = document.querySelector('[role="tab"][href="' + window.location.hash.split(/\-\-/)[0] + '"]');
195
+
196
+ if (possibleInitialTab) {
197
+ switchTabs(possibleInitialTab);
198
+ } else {
199
+ switchToFirstTab();
200
+ }
201
+ } else {
202
+ switchToFirstTab();
203
+ }
204
+ }
205
+ }());
206
+
207
+ /*
208
+ ================================================
209
+ CODE TOGGLE BUTTON
210
+ ================================================
211
+ */
212
+ (function () {
213
+ 'use strict';
214
+
215
+ var codeBtns = document.querySelectorAll('.pattern-code-btn');
216
+
217
+ var toggleCodeSample = function (e) {
218
+ var theId, theCodeBlock;
219
+
220
+ e.preventDefault();
221
+
222
+ theId = this.getAttribute('aria-controls');
223
+ theCodeBlock = document.getElementById(theId);
224
+
225
+ if (this.getAttribute('aria-pressed') == 'true') {
226
+ this.setAttribute('aria-pressed', false);
227
+ theCodeBlock.setAttribute('hidden', true);
228
+ theCodeBlock.setAttribute('aria-hidden', true);
229
+ } else {
230
+ this.setAttribute('aria-pressed', true);
231
+ theCodeBlock.removeAttribute('hidden');
232
+ theCodeBlock.setAttribute('aria-hidden', false);
233
+ theCodeBlock.focus();
234
+ }
235
+ };
236
+
237
+ if (!codeBtns) return;
238
+
239
+ [].forEach.call(codeBtns, function (btn) {
240
+ btn.addEventListener('click', toggleCodeSample);
241
+ });
242
+ }());
243
+
244
+ /*
245
+ ================================================
246
+ TOGGLE NAVIGATION
247
+ ================================================
248
+ */
249
+ (function () {
250
+ 'use strict';
251
+
252
+ var navBtn = document.querySelector('.nav-btn');
253
+ var nav = document.getElementById('patternbot-nav');
254
+
255
+ var showNav = function () {
256
+ nav.setAttribute('aria-hidden', false);
257
+ navBtn.setAttribute('aria-expanded', true);
258
+ navBtn.setAttribute('aria-label', 'Close nav');
259
+ };
260
+
261
+ var hideNav = function () {
262
+ nav.setAttribute('aria-hidden', true);
263
+ navBtn.setAttribute('aria-expanded', false);
264
+ navBtn.setAttribute('aria-label', 'Open nav');
265
+ };
266
+
267
+ var toggleNav = function () {
268
+ if (nav.getAttribute('aria-hidden') === 'true') {
269
+ showNav();
270
+ } else {
271
+ hideNav();
272
+ }
273
+ };
274
+
275
+ var toggleBasedOnScreen = function () {
276
+ if (window.matchMedia('(min-width: 38em)').matches) {
277
+ showNav();
278
+ } else {
279
+ hideNav();
280
+ }
281
+ };
282
+
283
+ navBtn.addEventListener('click', toggleNav);
284
+
285
+ nav.addEventListener('click', function (e) {
286
+ if (e.target.matches('a, button')) toggleNav();
287
+ });
288
+
289
+ try {
290
+ window.matchMedia('(min-width: 38em)').addEventListener('change', toggleBasedOnScreen);
291
+ } catch (e) {
292
+ var windowResizeTimer;
293
+
294
+ window.addEventListener('resize', function () {
295
+ clearTimeout(windowResizeTimer);
296
+ setTimeout(toggleBasedOnScreen, 100);
297
+ });
298
+ }
299
+
300
+ toggleBasedOnScreen();
301
+ }());
@@ -0,0 +1,725 @@
1
+ /*
2
+ * Modulifier || Code released under the UNLICENSE
3
+ * Code under other copyrights & licenses listed below.
4
+ * https://modulifier.web-dev.tools/#responsive;images;list-group;icons;hidden;positioning;nice-lists;buttons;accessibility
5
+ */
6
+
7
+ @-moz-viewport { width: device-width; scale: 1; }
8
+ @-ms-viewport { width: device-width; scale: 1; }
9
+ @-o-viewport { width: device-width; scale: 1; }
10
+ @-webkit-viewport { width: device-width; scale: 1; }
11
+ @viewport { width: device-width; scale: 1; }
12
+
13
+ html {
14
+ box-sizing: border-box;
15
+ -moz-text-size-adjust: 100%;
16
+ -ms-text-size-adjust: 100%;
17
+ -webkit-text-size-adjust: 100%;
18
+ text-size-adjust: 100%;
19
+ }
20
+
21
+ *, *::before, *::after {
22
+ box-sizing: inherit;
23
+ }
24
+
25
+ body {
26
+ margin: 0;
27
+ }
28
+
29
+ article,
30
+ aside,
31
+ details,
32
+ figcaption,
33
+ figure,
34
+ footer,
35
+ header,
36
+ main,
37
+ menu,
38
+ nav,
39
+ section,
40
+ summary {
41
+ display: block;
42
+ }
43
+
44
+ audio,
45
+ canvas,
46
+ progress,
47
+ video {
48
+ display: inline-block;
49
+ vertical-align: baseline;
50
+ }
51
+
52
+ template {
53
+ display: none;
54
+ }
55
+
56
+ details {
57
+ cursor: pointer;
58
+ }
59
+
60
+ audio:not([controls]) {
61
+ display: none;
62
+ height: 0;
63
+ }
64
+
65
+ a,
66
+ area,
67
+ button,
68
+ input,
69
+ label,
70
+ select,
71
+ textarea,
72
+ [tabindex] {
73
+ -ms-touch-action: manipulation;
74
+ touch-action: manipulation;
75
+ }
76
+
77
+ img {
78
+ border: 0;
79
+ }
80
+
81
+ .img-flex,
82
+ .img-flex img {
83
+ display: block;
84
+ width: 100%;
85
+ }
86
+
87
+ svg {
88
+ fill: currentColor;
89
+ }
90
+
91
+ svg:not(:root) {
92
+ overflow: hidden;
93
+ }
94
+
95
+ svg.img-flex {
96
+ width: 100%;
97
+ height: 100%;
98
+ }
99
+
100
+ .image-replacement, .ir {
101
+ overflow: hidden;
102
+ direction: ltr;
103
+ text-align: left;
104
+ text-indent: 100%;
105
+ white-space: nowrap;
106
+ }
107
+
108
+ .list-group, .list-group-inline, .list-group--inline {
109
+ padding-left: 0;
110
+ list-style-type: none;
111
+ }
112
+
113
+ .list-group > dd {
114
+ margin-left: 0;
115
+ }
116
+
117
+ .list-group-inline::before,
118
+ .list-group-inline::after,
119
+ .list-group--inline::before,
120
+ .list-group--inline::after {
121
+ content: "";
122
+ display: table;
123
+ }
124
+
125
+ .list-group-inline::after,
126
+ .list-group--inline::after {
127
+ clear: both;
128
+ }
129
+
130
+ .list-group-inline > li,
131
+ .list-group--inline > li {
132
+ display: inline-block;
133
+ }
134
+
135
+ .list-group-inline > dt,
136
+ .list-group--inline > dt {
137
+ clear: left;
138
+ float: left;
139
+ width: 11em;
140
+ }
141
+
142
+ .list-group-inline > dd,
143
+ .list-group--inline > dd {
144
+ float: left;
145
+ min-width: 12em;
146
+ }
147
+
148
+ .icon {
149
+ display: inline-block;
150
+ position: relative;
151
+ background: transparent none no-repeat center center;
152
+ background-size: contain;
153
+ vertical-align: middle;
154
+ }
155
+
156
+ .i-16, .i--16 {
157
+ height: 16px;
158
+ width: 16px;
159
+ }
160
+
161
+ .i-18, .i--18 {
162
+ height: 18px;
163
+ width: 18px;
164
+ }
165
+
166
+ .i-20, .i--20 {
167
+ height: 20px;
168
+ width: 20px;
169
+ }
170
+
171
+ .i-24, .i--24 {
172
+ height: 24px;
173
+ width: 24px;
174
+ }
175
+
176
+ .i-32, .i--32 {
177
+ height: 32px;
178
+ width: 32px;
179
+ }
180
+
181
+ .i-48, .i--48 {
182
+ height: 48px;
183
+ width: 48px;
184
+ }
185
+
186
+ .i-64, .i--64 {
187
+ height: 64px;
188
+ width: 64px;
189
+ }
190
+
191
+ .i-96, .i--96 {
192
+ height: 96px;
193
+ width: 96px;
194
+ }
195
+
196
+ .i-128, .i--128 {
197
+ height: 128px;
198
+ width: 128px;
199
+ }
200
+
201
+ .i-192, .i--192 {
202
+ height: 192px;
203
+ width: 192px;
204
+ }
205
+
206
+ .i-256, .i--256 {
207
+ height: 256px;
208
+ width: 256px;
209
+ }
210
+
211
+ .icon img,
212
+ .icon svg {
213
+ left: 0;
214
+ height: 100%;
215
+ position: absolute;
216
+ top: 0;
217
+ width: 100%;
218
+ fill: currentColor;
219
+ }
220
+
221
+ .icon-label {
222
+ vertical-align: middle;
223
+ }
224
+
225
+ .icon-link,
226
+ .icon-link:focus,
227
+ .icon-link:hover {
228
+ text-decoration: none;
229
+ }
230
+
231
+ [hidden], .hidden {
232
+ /* stylelint-disable declaration-no-important */
233
+ display: none !important;
234
+ visibility: hidden !important;
235
+ /* stylelint-enable */
236
+ }
237
+
238
+ .visually-hidden {
239
+ height: 1px;
240
+ margin: -1px;
241
+ overflow: hidden;
242
+ padding: 0;
243
+ position: absolute;
244
+ width: 1px;
245
+ border: 0;
246
+ clip: rect(0 0 0 0);
247
+ clip-path: inset(50%);
248
+ }
249
+
250
+ .visually-hidden.focusable:active, .visually-hidden.focusable:focus {
251
+ height: auto;
252
+ margin: 0;
253
+ overflow: visible;
254
+ position: static;
255
+ width: auto;
256
+ clip: auto;
257
+ clip-path: none;
258
+ }
259
+
260
+ .invisible {
261
+ visibility: hidden;
262
+ }
263
+
264
+ .chop,
265
+ .crop {
266
+ overflow: hidden;
267
+ }
268
+
269
+ .truncate {
270
+ max-width: 100%;
271
+ overflow: hidden;
272
+ width: 100%;
273
+ text-overflow: ellipsis;
274
+ white-space: nowrap;
275
+ }
276
+
277
+ .scrollable {
278
+ max-width: 100%;
279
+ overflow-x: auto;
280
+ overflow-y: hidden;
281
+ -webkit-overflow-scrolling: touch;
282
+ }
283
+
284
+ .clearfix::after {
285
+ content: " ";
286
+ display: block;
287
+ clear: both;
288
+ }
289
+
290
+ .left {
291
+ float: left;
292
+ }
293
+
294
+ .right {
295
+ float: right;
296
+ }
297
+
298
+ .center-text,
299
+ .center-flow {
300
+ text-align: center;
301
+ }
302
+
303
+ .center-block {
304
+ margin-left: auto;
305
+ margin-right: auto;
306
+ }
307
+
308
+ .no-auto-margins,
309
+ .not-centered {
310
+ /* stylelint-disable declaration-no-important */
311
+ margin-left: 0 !important;
312
+ margin-right: 0 !important;
313
+ /* stylelint-enable */
314
+ }
315
+
316
+ .center-content,
317
+ .center-content-vertical,
318
+ .center-contents,
319
+ .center-contents-vertical {
320
+ display: -webkit-flex;
321
+ display: -ms-flexbox;
322
+ display: flex;
323
+ -webkit-justify-content: center;
324
+ -ms-flex-pack: center;
325
+ justify-content: center;
326
+ -webkit-align-items: center;
327
+ -ms-flex-align: center;
328
+ align-items: center;
329
+ -webkit-align-content: center;
330
+ -ms-flex-line-pack: center;
331
+ align-content: center;
332
+ -webkit-flex-direction: column wrap;
333
+ -ms-flex-direction: column wrap;
334
+ flex-flow: column wrap;
335
+ }
336
+
337
+ .center-content-start,
338
+ .center-content-vertical-start,
339
+ .center-contents-start,
340
+ .center-contents-vertical-start {
341
+ display: -webkit-flex;
342
+ display: -ms-flexbox;
343
+ display: flex;
344
+ -webkit-justify-content: center;
345
+ -ms-flex-pack: center;
346
+ justify-content: center;
347
+ -webkit-flex-direction: column wrap;
348
+ -ms-flex-direction: column wrap;
349
+ flex-flow: column wrap;
350
+ }
351
+
352
+ .center-content-horizontal,
353
+ .center-contents-horizontal {
354
+ display: -webkit-flex;
355
+ display: -ms-flexbox;
356
+ display: flex;
357
+ -webkit-justify-content: center;
358
+ -ms-flex-pack: center;
359
+ justify-content: center;
360
+ -webkit-align-items: center;
361
+ -ms-flex-align: center;
362
+ align-items: center;
363
+ -webkit-align-content: center;
364
+ -ms-flex-line-pack: center;
365
+ align-content: center;
366
+ -webkit-flex-direction: row wrap;
367
+ -ms-flex-direction: row wrap;
368
+ flex-flow: row wrap;
369
+ }
370
+
371
+ .inline {
372
+ display: inline;
373
+ }
374
+
375
+ .block {
376
+ display: block;
377
+ }
378
+
379
+ .inline-block, .ib {
380
+ display: inline-block;
381
+ }
382
+
383
+ .valign-top {
384
+ vertical-align: top;
385
+ }
386
+
387
+ .valign-bottom {
388
+ vertical-align: bottom;
389
+ }
390
+
391
+ .valign-middle {
392
+ vertical-align: middle;
393
+ }
394
+
395
+ .fixed {
396
+ position: fixed;
397
+ }
398
+
399
+ .relative {
400
+ position: relative;
401
+ }
402
+
403
+ [class*="pin-"],
404
+ .absolute {
405
+ position: absolute;
406
+ }
407
+
408
+ .static {
409
+ position: static;
410
+ }
411
+
412
+ .zindex-1 {
413
+ z-index: 1;
414
+ }
415
+
416
+ .zindex-2 {
417
+ z-index: 2;
418
+ }
419
+
420
+ .zindex-3 {
421
+ z-index: 3;
422
+ }
423
+
424
+ .zindex-1000 {
425
+ z-index: 1000;
426
+ }
427
+
428
+ .pin-top-left,
429
+ .pin-left-top,
430
+ .pin-tl,
431
+ .pin-lt {
432
+ top: 0;
433
+ left: 0;
434
+ }
435
+
436
+ .pin-top-right,
437
+ .pin-right-top,
438
+ .pin-tr,
439
+ .pin-rt {
440
+ top: 0;
441
+ right: 0;
442
+ }
443
+
444
+ .pin-bottom-left,
445
+ .pin-left-bottom,
446
+ .pin-bl,
447
+ .pin-lb {
448
+ bottom: 0;
449
+ left: 0;
450
+ }
451
+
452
+ .pin-bottom-right,
453
+ .pin-right-bottom,
454
+ .pin-br,
455
+ .pin-rb {
456
+ bottom: 0;
457
+ right: 0;
458
+ }
459
+
460
+ .pin-top-center,
461
+ .pin-center-top,
462
+ .pin-tc,
463
+ .pin-ct {
464
+ left: 50%;
465
+ top: 0;
466
+ transform: translateX(-50%);
467
+ }
468
+
469
+ .pin-bottom-center,
470
+ .pin-center-bottom,
471
+ .pin-bc,
472
+ .pin-cb {
473
+ bottom: 0;
474
+ left: 50%;
475
+ transform: translateX(-50%);
476
+ }
477
+
478
+ .pin-center-left,
479
+ .pin-left-center,
480
+ .pin-cl,
481
+ .pin-lc {
482
+ left: 0;
483
+ top: 50%;
484
+ transform: translateY(-50%);
485
+ }
486
+
487
+ .pin-center-right,
488
+ .pin-right-center,
489
+ .pin-cr,
490
+ .pin-rc {
491
+ right: 0;
492
+ top: 50%;
493
+ transform: translateY(-50%);
494
+ }
495
+
496
+ .pin-center, .pin-c {
497
+ left: 50%;
498
+ top: 50%;
499
+ transform: translate(-50%, -50%);
500
+ }
501
+
502
+ .width-quarter, .w-1-4 {
503
+ width: 25%;
504
+ }
505
+
506
+ .width-half, .w-1-2 {
507
+ width: 50%;
508
+ }
509
+
510
+ .width-full, .w-1 {
511
+ width: 100%;
512
+ }
513
+
514
+ .height-quarter, .h-1-4 {
515
+ height: 25%;
516
+ }
517
+
518
+ .height-half, .h-1-2 {
519
+ height: 50%;
520
+ }
521
+
522
+ .height-full, .h-1 {
523
+ height: 100%;
524
+ }
525
+
526
+ .height-win-quarter, .h-w-1-4 {
527
+ height: 25vh;
528
+ max-height: 46em;
529
+ }
530
+
531
+ .height-win-half, .h-w-1-2 {
532
+ height: 50vh;
533
+ max-height: 46em;
534
+ }
535
+
536
+ .height-win-full, .h-w-1 {
537
+ height: 100vh;
538
+ max-height: 46em;
539
+ }
540
+
541
+ ul {
542
+ list-style-type: none;
543
+ }
544
+
545
+ ul > li::before {
546
+ content: "·";
547
+ float: left;
548
+ margin-left: -1.6em;
549
+ width: 1.3em;
550
+ text-align: right;
551
+ }
552
+
553
+ ol {
554
+ counter-reset: ol-simple-numbers;
555
+ list-style-type: none;
556
+ }
557
+
558
+ ol > li::before {
559
+ float: left;
560
+ margin-left: -1.6em;
561
+ width: 1.3em;
562
+ counter-increment: ol-simple-numbers;
563
+ content: counter(ol-simple-numbers);
564
+ text-align: right;
565
+ }
566
+
567
+ .list-group > li::before,
568
+ .list-group-inline > li::before,
569
+ .list-group--inline > li::before {
570
+ content: none;
571
+ }
572
+
573
+ .link-box {
574
+ display: block;
575
+ text-decoration: none;
576
+ }
577
+
578
+ /* stylelint-disable no-descending-specificity */
579
+
580
+ button,
581
+ .btn {
582
+ cursor: pointer;
583
+ display: inline-block;
584
+ margin: 0;
585
+ overflow: visible;
586
+ padding: .375em .75em .42em;
587
+ -webkit-appearance: none;
588
+ -moz-appearance: none;
589
+ appearance: none;
590
+ background-color: #333;
591
+ border-radius: 4px;
592
+ border: 3px solid #333;
593
+ color: #fff;
594
+ font: inherit;
595
+ text-decoration: none;
596
+ text-transform: none;
597
+ }
598
+
599
+ button::-moz-focus-inner {
600
+ border: 0;
601
+ padding: 0;
602
+ }
603
+
604
+ /* stylelint-enable */
605
+
606
+ button:focus,
607
+ button:hover,
608
+ .btn:focus,
609
+ .btn:hover {
610
+ background-color: #000;
611
+ border-color: #000;
612
+ color: #fff;
613
+ }
614
+
615
+ button[disabled] {
616
+ cursor: default;
617
+ }
618
+
619
+ .btn-light, .btn--light {
620
+ background-color: #e2e2e2;
621
+ border-color: #e2e2e2;
622
+ color: #000;
623
+ }
624
+
625
+ .btn-light:focus,
626
+ .btn-light:hover,
627
+ .btn--light:focus,
628
+ .btn--light:hover {
629
+ background-color: #666;
630
+ border-color: #666;
631
+ color: #fff;
632
+ }
633
+
634
+ .btn-ghost,
635
+ .btn--ghost {
636
+ background-color: transparent;
637
+ border-color: #333;
638
+ color: #000;
639
+ }
640
+
641
+ .btn-ghost:focus,
642
+ .btn-ghost:hover,
643
+ .btn--ghost:focus,
644
+ .btn--ghost:hover {
645
+ background-color: #e2e2e2;
646
+ border-color: #000;
647
+ color: #000;
648
+ }
649
+
650
+ .btn-link {
651
+ display: inline;
652
+ padding: 0;
653
+ background-color: transparent;
654
+ border-radius: 0;
655
+ border: 0;
656
+ color: inherit;
657
+ }
658
+
659
+ .btn-link:focus,
660
+ .btn-link:hover {
661
+ background-color: transparent;
662
+ color: inherit;
663
+ }
664
+
665
+ a:hover, a:active {
666
+ outline: none;
667
+ }
668
+
669
+ a:focus,
670
+ [tabindex="0"]:focus,
671
+ details:focus,
672
+ summary:focus,
673
+ input:focus,
674
+ textarea:focus,
675
+ button:focus,
676
+ select:focus {
677
+ outline: 3px solid #000;
678
+ outline-offset: 0;
679
+ }
680
+
681
+ a:focus, [tabindex="0"]:focus {
682
+ outline-offset: 3px;
683
+ }
684
+
685
+ .skip-links {
686
+ margin: 0;
687
+ padding: 0;
688
+ list-style-type: none;
689
+ }
690
+
691
+ .skip-links > li::before {
692
+ content: none; /* Remove the bullets if nice lists is selected */
693
+ }
694
+
695
+ .skip-links a,
696
+ .skip-links button {
697
+ padding: .5em .75em;
698
+ position: absolute;
699
+ top: -10em;
700
+ z-index: 10000; /* To make sure they're always on top */
701
+ background-color: #000;
702
+ border: 0;
703
+ color: #fff;
704
+ font-size: 1.125rem;
705
+ font-weight: bold;
706
+ text-decoration: none;
707
+ }
708
+
709
+ .skip-links a:focus,
710
+ .skip-links button:focus {
711
+ outline-offset: 3px;
712
+ top: 0;
713
+ }
714
+
715
+ [aria-busy="true"] {
716
+ cursor: progress;
717
+ }
718
+
719
+ [aria-controls] {
720
+ cursor: pointer;
721
+ }
722
+
723
+ [aria-disabled] {
724
+ cursor: default;
725
+ }