@internetstiftelsen/styleguide 2.22.2 → 2.22.3-beta.0.1

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 (72) hide show
  1. package/dist/.DS_Store +0 -0
  2. package/dist/assets/js/anchorScroll.js +16 -0
  3. package/dist/assets/js/offset.js +26 -0
  4. package/dist/assets/js/parallax.js +17 -0
  5. package/dist/components.js +8 -4
  6. package/dist/molecules/continue-video-guide/continue-video-guide.js +91 -0
  7. package/dist/molecules/glider/glider-course.js +7 -7
  8. package/dist/molecules/glider/glider-hero.js +23 -0
  9. package/dist/organisms/timeline/timeline.js +154 -0
  10. package/dist/organisms/video-guide/video-guide.js +298 -0
  11. package/package.json +7 -3
  12. package/src/.DS_Store +0 -0
  13. package/src/app.scss +6 -2
  14. package/src/assets/.DS_Store +0 -0
  15. package/src/{atoms/timeline → assets/js}/anchorScroll.js +3 -0
  16. package/src/assets/js/offset.js +22 -0
  17. package/src/assets/js/parallax.js +15 -0
  18. package/src/assets/video/.DS_Store +0 -0
  19. package/src/assets/video/Internets-Historia-HEVC-h265-HEVC-h265.mov +0 -0
  20. package/src/assets/video/Internets-Historia-HEVC-h265-vp9-chrome.webm +0 -0
  21. package/src/assets/video/chapters.vtt +25 -0
  22. package/src/assets/video/metadata.vtt +25 -0
  23. package/src/assets/video/movie-webm.webm +0 -0
  24. package/src/assets/video/videoplayer.vtt +25 -0
  25. package/src/atoms/.DS_Store +0 -0
  26. package/src/atoms/button/_button.scss +6 -9
  27. package/src/atoms/icon/_all-icons.zip +0 -0
  28. package/src/atoms/icon/spinner-white.svg +1 -9
  29. package/src/atoms/icon/spinner.svg +1 -9
  30. package/src/atoms/icon/sprite.svg +17 -0
  31. package/src/atoms/icon/step-backwards.svg +1 -0
  32. package/src/atoms/icon/step-forwards.svg +1 -0
  33. package/src/atoms/icon/subtitles.svg +1 -0
  34. package/src/atoms/meta/meta.config.js +1 -1
  35. package/src/base/_normalize.scss +1 -1
  36. package/src/base/fonts/_fonts.scss +8 -8
  37. package/src/components.js +4 -2
  38. package/src/configurations/_extends.scss +5 -1
  39. package/src/configurations/_variables.scss +3 -3
  40. package/src/configurations/grid/_grid.scss +17 -2
  41. package/src/configurations/icons.json +1 -1
  42. package/src/configurations/typography/_typography.scss +57 -4
  43. package/src/molecules/.DS_Store +0 -0
  44. package/src/molecules/continue-video-guide/continue-video-guide.config.js +7 -0
  45. package/src/molecules/continue-video-guide/continue-video-guide.js +84 -0
  46. package/src/molecules/continue-video-guide/continue-video-guide.scss +104 -0
  47. package/src/molecules/continue-video-guide/readme.md +3 -0
  48. package/src/molecules/glider/_glider-course.scss +121 -0
  49. package/src/molecules/glider/_glider-hero.scss +325 -0
  50. package/src/molecules/glider/_glider.scss +3 -116
  51. package/src/molecules/glider/glider-course.js +7 -7
  52. package/src/molecules/glider/glider-hero.js +17 -0
  53. package/src/molecules/glider/glider.config.js +7 -0
  54. package/src/organisms/hero/_hero.scss +16 -0
  55. package/src/organisms/hero/hero--dynamic-headline.scss +156 -0
  56. package/src/organisms/hero/hero.config.js +10 -1
  57. package/src/organisms/timeline/_timeline.scss +292 -0
  58. package/src/organisms/timeline/timeline.config.js +7 -0
  59. package/src/organisms/timeline/timeline.js +146 -0
  60. package/src/organisms/video-guide/_video-guide.scss +337 -0
  61. package/src/organisms/video-guide/video-guide.config.js +17 -0
  62. package/src/organisms/video-guide/video-guide.js +293 -0
  63. package/src/assets/css/footer/isolated-footer.css +0 -7367
  64. package/src/assets/css/footer/isolated-footer.css.map +0 -1
  65. package/src/assets/css/footer/isolated-footer.min.css +0 -2
  66. package/src/atoms/timeline/_timeline.scss +0 -159
  67. package/src/brandbook/internetstiftelsen/bildman/303/251r/bildman/303/251r.config.js +0 -5
  68. package/src/brandbook/internetstiftelsen/tonalitet och spr/303/245kbruk/tonalitet och spr/303/245kbruk.config.js" +0 -5
  69. package/src/molecules/timeline-navigation/timeline-navigation.config.js +0 -15
  70. package/src/molecules/timeline-navigation/timeline-navigation.js +0 -32
  71. package/src/molecules/timeline-navigation/timeline-navigation.scss +0 -165
  72. package/src/pages/timeline/timeline.config.js +0 -19
@@ -0,0 +1,325 @@
1
+ @charset "UTF-8";
2
+
3
+ // NOTE: this compnent is dependant on the glider.scss component
4
+ // The Glider components is dependant on JS-classes and is therefore not namespaced
5
+
6
+ .glider-hero-contain {
7
+ display: flex;
8
+ position: relative;
9
+ align-items: center;
10
+ margin: 0;
11
+
12
+ @include e(text) {
13
+ position: absolute;
14
+ top: rhythm(2);
15
+ left: rhythm(2);
16
+ z-index: z_index(background);
17
+ padding-right: rhythm(2);
18
+ max-width: 95%;
19
+
20
+ @include bp-up(sm-xs) {
21
+ top: rhythm(3);
22
+ left: rhythm(3);
23
+ padding-right: rhythm(3);
24
+ max-width: 90%;
25
+ }
26
+
27
+
28
+ @include bp-up(sm) {
29
+ top: rhythm(4);
30
+ left: rhythm(4);
31
+ padding-right: rhythm(4);
32
+ max-width: 80%;
33
+ }
34
+
35
+ @include bp-up(md) {
36
+ top: rhythm(6);
37
+ left: rhythm(6);
38
+ padding-right: rhythm(6);
39
+ max-width: 70%;
40
+ }
41
+
42
+ @include bp-up(lg) {
43
+ top: rhythm(7);
44
+ left: rhythm(7);
45
+ padding-right: 0;
46
+ max-width: 60%;
47
+ }
48
+
49
+ @include bp-up(xl) {
50
+ top: rhythm(8);
51
+ left: rhythm(8);
52
+ }
53
+
54
+ > h1 {
55
+ color: $color-snow;
56
+
57
+ > span {
58
+ background-color: rgba(0,0,0,0.6);
59
+ }
60
+
61
+ @include plumber(
62
+ $font-size: 2,
63
+ $line-height: 3,
64
+ $leading-bottom: 1
65
+ );
66
+
67
+ @include bp-up(sm) {
68
+ @include plumber(
69
+ $font-size: 2.3,
70
+ $line-height: 3,
71
+ $leading-bottom: 1
72
+ );
73
+ }
74
+
75
+ @include bp-up(md) {
76
+ @include plumber(
77
+ $font-size: 3,
78
+ $line-height: 4,
79
+ $leading-bottom: 2
80
+ );
81
+ }
82
+
83
+ @include bp-up(lg) {
84
+ @include plumber(
85
+ $font-size: 4,
86
+ $line-height: 5,
87
+ $leading-bottom: 2
88
+ );
89
+ }
90
+
91
+ @include bp-up(xl) {
92
+ @include plumber(
93
+ $font-size: 5,
94
+ $line-height: 6,
95
+ $leading-bottom: 3
96
+ );
97
+ }
98
+ }
99
+
100
+ > p {
101
+ color: $color-snow;
102
+
103
+ > span {
104
+ background-color: rgba(0,0,0,0.6);
105
+ }
106
+
107
+ @include plumber(
108
+ $font-size: 1.5,
109
+ $line-height: 2,
110
+ );
111
+
112
+ @include bp-up(sm) {
113
+ @include plumber(
114
+ $font-size: 2,
115
+ $line-height: 3,
116
+ );
117
+ }
118
+
119
+ @include bp-up(lg) {
120
+ @include plumber(
121
+ $font-size: 2.5,
122
+ $line-height: 3,
123
+ );
124
+ }
125
+
126
+ @include bp-up(xl) {
127
+ @include plumber(
128
+ $font-size: 3,
129
+ $line-height: 4,
130
+ );
131
+ }
132
+ }
133
+ }
134
+ }
135
+
136
+ .glider-slide {
137
+ @include m(hero) {
138
+ margin: 0;
139
+ padding: 0;
140
+ position: relative;
141
+
142
+ &::after {
143
+ content: '';
144
+ display: block;
145
+ position: absolute;
146
+ top: 0;
147
+ right: 0;
148
+ bottom: 0;
149
+ left: 0;
150
+ background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, rgba($color-black, 0) 35%, rgba($color-black, 1) 100%);
151
+ }
152
+
153
+ @include e(image) {
154
+ display: block;
155
+ object-fit: cover;
156
+ object-position: 50% 50%;
157
+ width: 100%;
158
+ height: 100%;
159
+
160
+ @include bp-up(sm) {
161
+ min-height: rem(500px);
162
+ max-height: 75vh;
163
+ }
164
+ }
165
+
166
+ @include e(text) {
167
+ position: absolute;
168
+ z-index: 1;
169
+ bottom: rhythm(2);
170
+ left: rhythm(2);
171
+ padding-right: rhythm(2);
172
+ color: $color-snow;
173
+ font-family: $font-family-bold;
174
+ max-width: 95%;
175
+
176
+ > span {
177
+ //text-shadow: 0 0 20px rgba(0,0,0,0.8);
178
+
179
+ > a {
180
+ position: relative;
181
+ z-index: 1;
182
+
183
+ &:hover {
184
+ text-decoration: none;
185
+ color: $color-cyberspace !important;
186
+ text-shadow: none;
187
+ }
188
+
189
+ &::before {
190
+ content: '';
191
+ position: absolute;
192
+ z-index: -1;
193
+ width: 100%;
194
+ height: 100%;
195
+ background-color: $color-snow;
196
+ bottom: 0;
197
+ left: 0;
198
+ transform-origin: right;
199
+ transform: scaleX(0);
200
+ transition: transform .3s ease-in-out;
201
+ }
202
+
203
+ &:hover::before {
204
+ transform-origin: left;
205
+ transform: scaleX(1);
206
+ }
207
+ }
208
+ }
209
+
210
+ @include plumber(
211
+ $font-size: 2.3,
212
+ $line-height: 3,
213
+ $leading-bottom: 0,
214
+ $baseline: $headings-baseline
215
+ );
216
+
217
+ @include bp-up(sm-xs) {
218
+ bottom: rhythm(3);
219
+ left: rhythm(3);
220
+ padding-right: rhythm(3);
221
+ max-width: 90%;
222
+
223
+ @include plumber(
224
+ $font-size: 3,
225
+ $line-height: 4,
226
+ $leading-bottom: 0
227
+ );
228
+ }
229
+
230
+
231
+ @include bp-up(sm) {
232
+ bottom: rhythm(4);
233
+ left: rhythm(4);
234
+ padding-right: rhythm(4);
235
+ max-width: 80%;
236
+
237
+ @include plumber(
238
+ $font-size: 4,
239
+ $line-height: 5,
240
+ $leading-bottom: 0
241
+ );
242
+ }
243
+
244
+ @include bp-up(md) {
245
+ bottom: rhythm(6);
246
+ left: rhythm(6);
247
+ padding-right: rhythm(6);
248
+ max-width: 70%;
249
+
250
+ @include plumber(
251
+ $font-size: 5,
252
+ $line-height: 6,
253
+ $leading-bottom: 0
254
+ );
255
+ }
256
+
257
+ @include bp-up(lg) {
258
+ bottom: rhythm(7);
259
+ left: rhythm(7);
260
+ padding-right: 0;
261
+ max-width: 60%;
262
+
263
+ @include plumber(
264
+ $font-size: 6,
265
+ $line-height: 8,
266
+ $leading-bottom: 0
267
+ );
268
+ }
269
+
270
+ @include bp-up(xl) {
271
+ bottom: rhythm(8);
272
+ left: rhythm(8);
273
+ max-width: 50%;
274
+
275
+ @include plumber(
276
+ $font-size: 7,
277
+ $line-height: 9,
278
+ $leading-bottom: 0
279
+ );
280
+ }
281
+
282
+ @include bp-up(xxl) {
283
+ max-width: 45%;
284
+ }
285
+ }
286
+ }
287
+ }
288
+
289
+ .glider-nav {
290
+ transform: scale(0.7) translateY(-100%);
291
+
292
+ @include bp-up(md) {
293
+ transform: scale(1) translateY(0);
294
+ }
295
+
296
+ @include m(hero) {
297
+ &.disabled {
298
+ display: none;
299
+ }
300
+
301
+ &.glider-prev {
302
+ left: 0;
303
+
304
+ @include bp-up(md) {
305
+ left: rhythm(1);
306
+ }
307
+
308
+ @include bp-up(lg) {
309
+ left: rhythm(2);
310
+ }
311
+ }
312
+
313
+ &.glider-next {
314
+ right: 0;
315
+
316
+ @include bp-up(md) {
317
+ right: rhythm(1);
318
+ }
319
+
320
+ @include bp-up(lg) {
321
+ right: rhythm(2);
322
+ }
323
+ }
324
+ }
325
+ }
@@ -1,6 +1,6 @@
1
1
  @charset "UTF-8";
2
2
 
3
- // The Glider component is dependant on JS-classes and is therefore not namespaced
3
+ // The Glider components is dependant on JS-classes and is therefore not namespaced
4
4
 
5
5
  .glider-contain {
6
6
  display: flex;
@@ -12,16 +12,6 @@
12
12
  padding-left: rhythm(8);
13
13
  }
14
14
 
15
- .glider-contain-course {
16
- display: flex;
17
- position: relative;
18
- align-items: center;
19
- margin-top: 0;
20
- margin-bottom: rhythm(2);
21
- padding-left: 0;
22
- padding-right: 0;
23
- }
24
-
25
15
  .glider {
26
16
  position: relative;
27
17
  margin: 0 auto;
@@ -101,120 +91,17 @@
101
91
  }
102
92
  }
103
93
  }
104
-
105
- @include m(course) {
106
- margin-left: 0;
107
- padding-left: 0;
108
- padding-right: 0;
109
-
110
- &::after {
111
- display: none;
112
- }
113
-
114
- @include e(navigation) {
115
- display: flex;
116
- justify-content: space-between;
117
-
118
- @include bp-up(lg) {
119
- justify-content: flex-start;
120
- }
121
- }
122
-
123
- @include e(media) {
124
-
125
- &.zoom {
126
- pointer-events: none;
127
-
128
- @include bp-up(lg) {
129
- pointer-events: auto;
130
- cursor: zoom-in;
131
- transition: all 0.15s ease-out;
132
- position: relative;
133
-
134
- &::after {
135
- content: 'Förstora bilden';
136
- color: $color-snow;
137
- padding: rhythm(1) rhythm(2) rhythm(1) rhythm(4);
138
- display: block;
139
- position: absolute;
140
- top: 0;
141
- left: 0;
142
- border-top-left-radius: $border-radius;
143
- border-bottom-right-radius: $border-radius;
144
- width: auto;
145
- line-height: 1;
146
- height: $icon-size-large * 1.4;
147
- background-color: rgba($color-cyberspace, 0.8);
148
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' id='icon-search' viewbox='0 0 32 32' width='32' height='32' fill='%23ffffff'%3E%3Cpath d='M24,21.8l8,8L29.9,32l-8-8c-5.9,4.6-14.3,3.6-19-2.2S-0.7,7.6,5.1,2.9S19.3-0.7,24,5.1C27.9,10,27.9,16.9,24,21.8L24,21.8z M13.4,23.9c5.8,0,10.5-4.7,10.5-10.5S19.2,3,13.4,3S3,7.7,3,13.4S7.7,23.9,13.4,23.9z'/%3E%3C/svg%3E");
149
- background-position: rhythm(1) center;
150
- background-size: $icon-size-medium $icon-size-medium;
151
- background-repeat: no-repeat;
152
-
153
- }
154
-
155
- img {
156
- transition: all 0.25s ease-out;
157
- }
158
-
159
- // Image zooming
160
- &.is-zoomed {
161
- cursor: zoom-out !important;
162
- position: fixed;
163
- left: 0;
164
- right: 0;
165
- top: 0;
166
- bottom: 0;
167
- z-index: z_index(foreground);
168
- display: flex;
169
- align-items: center;
170
- justify-content: center;
171
- background-color: rgba($color-cyberspace, 0.8);
172
- flex-direction: column;
173
-
174
- &::after {
175
- display: none;
176
- }
177
-
178
- img {
179
- cursor: zoom-out;
180
- max-width: 100%;
181
- max-height: 100vh;
182
- padding: rhythm(1);
183
- height: auto;
184
- }
185
-
186
- figcaption {
187
- max-width: rem(612px);
188
- text-align: center;
189
- color: $color-snow;
190
- padding-left: rhythm(2);
191
- padding-right: rhythm(2);
192
- margin-bottom: 0 !important;
193
- padding-bottom: 0 !important;
194
- }
195
- }
196
- }
197
- }
198
-
199
- figcaption {
200
- margin-top: rhythm(1);
201
- }
202
- @include bp-up(lg) {
203
- display: flex;
204
- flex-direction: column-reverse;
205
- margin-top: 0;
206
- }
207
- }
208
- }
209
94
  }
210
95
 
211
96
  .glider-nav {
212
97
  position: absolute;
213
98
  top: 50%;
214
99
  left: 0;
100
+ z-index: z_index(middleground);
215
101
  transform: translateY(-50%);
216
102
  transition: background-color 0.25s ease-out;
217
103
  user-select: none;
104
+ cursor: pointer;
218
105
 
219
106
  &:focus {
220
107
  background-color: $color-snow;
@@ -1,9 +1,9 @@
1
1
  import Glider from 'glider-js';
2
2
 
3
- const gliderElementSingle = document.querySelector('.js-glider-course');
3
+ const gliderElementCourse = document.querySelector('.js-glider-course');
4
4
 
5
- if (gliderElementSingle) {
6
- const GliderSingle = new Glider(gliderElementSingle, {
5
+ if (gliderElementCourse) {
6
+ const GliderCourse = new Glider(gliderElementCourse, {
7
7
  scrollLock: true,
8
8
  slidesToShow: 1,
9
9
  slidesToScroll: 1,
@@ -13,7 +13,7 @@ if (gliderElementSingle) {
13
13
  const prevBtns = document.querySelectorAll('.js-glider-prev');
14
14
  const siteMain = document.querySelector('#siteMain');
15
15
  const zoomImages = document.querySelectorAll('.js-zoom.zoom');
16
- let slideIndex = GliderSingle.getCurrentSlide();
16
+ let slideIndex = GliderCourse.getCurrentSlide();
17
17
  let bounding = 0;
18
18
 
19
19
  const scrollTop = () => {
@@ -23,7 +23,7 @@ if (gliderElementSingle) {
23
23
  if (nextBtns) {
24
24
  [].forEach.call(nextBtns, (nextBtn) => {
25
25
  nextBtn.addEventListener('click', () => {
26
- GliderSingle.scrollItem(slideIndex += 1, true);
26
+ GliderCourse.scrollItem(slideIndex += 1, true);
27
27
 
28
28
  if (siteMain) {
29
29
  bounding = siteMain.getBoundingClientRect();
@@ -38,7 +38,7 @@ if (gliderElementSingle) {
38
38
  if (prevBtns) {
39
39
  [].forEach.call(prevBtns, (prevBtn) => {
40
40
  prevBtn.addEventListener('click', () => {
41
- GliderSingle.scrollItem(slideIndex -= 1, true);
41
+ GliderCourse.scrollItem(slideIndex -= 1, true);
42
42
 
43
43
  if (siteMain) {
44
44
  bounding = siteMain.getBoundingClientRect();
@@ -58,5 +58,5 @@ if (gliderElementSingle) {
58
58
  });
59
59
  }
60
60
 
61
- module.exports = GliderSingle;
61
+ module.exports = GliderCourse;
62
62
  }
@@ -0,0 +1,17 @@
1
+ import Glider from 'glider-js';
2
+
3
+ const gliderElementHero = document.querySelector('.js-glider-hero');
4
+
5
+ if (gliderElementHero) {
6
+ const GliderHero = new Glider(gliderElementHero, {
7
+ scrollLock: true,
8
+ slidesToShow: 1,
9
+ slidesToScroll: 1,
10
+ arrows: {
11
+ prev: '.js-glider-prev',
12
+ next: '.js-glider-next',
13
+ },
14
+ });
15
+
16
+ module.exports = GliderHero;
17
+ }
@@ -17,6 +17,13 @@ module.exports = {
17
17
  context: {
18
18
  single: true
19
19
  }
20
+ },
21
+ {
22
+ name: 'Hero',
23
+ status: 'wip',
24
+ context: {
25
+ single: true
26
+ }
20
27
  }
21
28
  ]
22
29
  }
@@ -376,6 +376,22 @@
376
376
  }
377
377
  }
378
378
 
379
+ @include m(video-wide) {
380
+ width: 100%;
381
+
382
+ @include e(video) {
383
+ width: 100%;
384
+ object-fit: cover;
385
+ object-position: 50% center;
386
+
387
+ @include bp-up(sm) {
388
+ min-height: rem(500px);
389
+ max-height: 50vh;
390
+ }
391
+
392
+ }
393
+ }
394
+
379
395
  // Event
380
396
  @include m(event) {
381
397
  width: 100%;
@@ -0,0 +1,156 @@
1
+ @charset "UTF-8";
2
+
3
+ @include organism(hero) {
4
+ @include m(dynamic-headline) {
5
+ display: flex;
6
+ flex-direction: column;
7
+ justify-content: space-around;
8
+ overflow: visible;
9
+
10
+ @include e(image) {
11
+ max-height: none;
12
+ min-height: 0;
13
+ height: 100%;
14
+ position: absolute;
15
+ top: 0;
16
+ left: 0;
17
+ right: 0;
18
+ bottom: 0;
19
+ z-index: -1;
20
+ }
21
+
22
+ @include e(caption) {
23
+ display: flex;
24
+ flex-direction: column;
25
+ align-items: flex-start;
26
+ padding: rhythm(3);
27
+ background-image: none;
28
+ position: static;
29
+ z-index: auto;
30
+ color: $color-snow;
31
+
32
+ > h1 {
33
+ --minFontSize: 22px;
34
+ --maxFontSize: 300px;
35
+ --scaler: 10vw;
36
+
37
+ font-size: clamp( var(--minFontSize), var(--scaler), var(--maxFontSize) );
38
+ font-family: $font-family-bold;
39
+ margin: 0;
40
+ padding: 0;
41
+ line-height: 1.2;
42
+ }
43
+
44
+ @include bp-up(sm-xs) {
45
+ padding: rhythm(4);
46
+ }
47
+
48
+ @include bp-up(sm) {
49
+ padding: rhythm(5);
50
+ }
51
+
52
+ @include bp-up(md) {
53
+ padding: rhythm(7);
54
+ }
55
+
56
+ @include bp-up(lg) {
57
+ padding: rhythm(8);
58
+ }
59
+
60
+ @include bp-up(xl) {
61
+ padding: rhythm(10);
62
+ }
63
+
64
+ &::before {
65
+ display: block;
66
+ content: attr(data-meta);
67
+ font-family: $font-family-mono;
68
+ font-size: 14px !important;
69
+ text-transform: uppercase;
70
+
71
+ @include bp-up(sm-xs) {
72
+ margin-left: rhythm(0.5);
73
+ }
74
+
75
+ @include bp-up(md) {
76
+ font-size: 18px !important;
77
+ margin-left: rhythm(1);
78
+ }
79
+
80
+ @include bp-up(lg) {
81
+ font-size: 20px !important;
82
+ }
83
+
84
+ @include bp-up(xl) {
85
+ font-size: 22px !important;
86
+ }
87
+
88
+ @include bp-up(xxl) {
89
+ font-size: 24px !important;
90
+ margin-left: rhythm(2);
91
+ }
92
+ }
93
+ }
94
+
95
+ @include e(button-continue) {
96
+ position: relative;
97
+ z-index: z_index(middleground);
98
+ align-self: center;
99
+ transform: scale(1) translateY(0);
100
+ animation: pulse infinite 1.5s ease;
101
+ will-change: transform;
102
+
103
+ @include bp-up(sm) {
104
+ animation: pulse2 infinite 1.5s ease;
105
+ }
106
+
107
+ @include bp-up(xl) {
108
+ animation: pulse3 infinite 1.5s ease;
109
+ }
110
+ }
111
+
112
+ @keyframes pulse {
113
+ 0% {
114
+ transform: translateY(0);
115
+ }
116
+
117
+ 50% {
118
+ transform: translateY(-25%);
119
+ }
120
+
121
+ 100% {
122
+ transform: translateY(0);
123
+ }
124
+ }
125
+
126
+ @keyframes pulse2 {
127
+ 0% {
128
+ transform: translateY(-25%) scale(2);
129
+ }
130
+
131
+ 50% {
132
+ transform: translateY(-50%) scale(2);
133
+ }
134
+
135
+ 100% {
136
+ transform: translateY(-25%) scale(2);
137
+ }
138
+ }
139
+
140
+ @keyframes pulse3 {
141
+ 0% {
142
+ transform: translateY(-50%) scale(3);
143
+ }
144
+
145
+ 50% {
146
+ transform: translateY(-75%) scale(3);
147
+ }
148
+
149
+ 100% {
150
+ transform: translateY(-50%) scale(3);
151
+ }
152
+ }
153
+
154
+
155
+ }
156
+ }