slow-steps 0.1.1 → 0.1.6

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 (48) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/.DS_Store +0 -0
  3. data/_includes/footer/footer_full.html +42 -18
  4. data/_includes/functions/calc-svg-coord.html +40 -0
  5. data/_includes/functions/pull_page_args.html +31 -0
  6. data/_includes/head/.DS_Store +0 -0
  7. data/_includes/head/head.html +1 -2
  8. data/_includes/scripts.html +12 -0
  9. data/_includes/vimeoPlayer.html +12 -0
  10. data/_layouts/about.html +53 -21
  11. data/_layouts/default.html +2 -4
  12. data/_layouts/env/clinician.html +96 -25
  13. data/_layouts/env/landing.html +35 -18
  14. data/_layouts/env/pwp.html +100 -30
  15. data/_layouts/feed.html +7 -3
  16. data/_layouts/full-width.html +11 -0
  17. data/_sass/_functions.sass +2 -0
  18. data/_sass/_mixins.sass +100 -0
  19. data/_sass/_variables.sass +5 -0
  20. data/_sass/about.sass +16 -30
  21. data/_sass/colors/_variables.sass +27 -6
  22. data/_sass/colors/breakpoints/{768.sass → 1024.sass} +2 -2
  23. data/_sass/colors/env/_clinician.sass +1 -1
  24. data/_sass/colors/global.sass +2 -0
  25. data/_sass/env/breakpoints/768.sass +15 -42
  26. data/_sass/env/clinician.sass +35 -133
  27. data/_sass/env/landing.sass +35 -53
  28. data/_sass/env/pwp.sass +44 -152
  29. data/_sass/feed.sass +43 -23
  30. data/_sass/footer_full.sass +139 -48
  31. data/_sass/global.sass +297 -4
  32. data/_sass/navigation/breakpoints/{768.sass → 1024.sass} +6 -3
  33. data/_sass/navigation/burger.sass +1 -1
  34. data/_sass/navigation/env/clinician.sass +1 -10
  35. data/_sass/navigation/env/landing.sass +6 -9
  36. data/_sass/navigation/env/pwp.sass +1 -14
  37. data/_sass/navigation/global.sass +4 -3
  38. data/assets/css/env/gaitq_clinician.sass +9 -5
  39. data/assets/css/env/gaitq_landing.sass +4 -0
  40. data/assets/css/env/gaitq_pwp.sass +8 -4
  41. data/assets/css/gaitq_about.sass +22 -0
  42. data/assets/css/gaitq_global.sass +8 -4
  43. data/assets/css/gaitq_post.sass +1 -0
  44. data/assets/js/mobile-nav-slider.js +2 -2
  45. data/assets/js/svg_aos.js +25 -0
  46. data/assets/js/svg_text_width.js +44 -0
  47. metadata +15 -5
  48. data/assets/css/img_handler.sass +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cd34733d1843e4e27502c6013bdfcc2f1a8550681d93567f6d107276f2a5b1d8
4
- data.tar.gz: d7fbf1db79bdbcf602526b92160a7286f3a56f4a64164f0dce65b7437382cd22
3
+ metadata.gz: ea0adad81a3cdbea1a8db232f1da78ab42069e6e86e52bef7ce62f17860b9867
4
+ data.tar.gz: 2dd0710e2683aaba83cc677066fb7d55bbb581372d044977c879c0e1e887eea2
5
5
  SHA512:
6
- metadata.gz: 731535f31508600501b23c473a9e2edfab5e536e5afbeb66edc4884d1737d001e4bffff0731e6ae9342392ff5325b3e27e9bb5d7f4653d08bf30fc4b296613c4
7
- data.tar.gz: 4e10a526240dfd3afc7bb8ee3ec067c01f41735cf0963581b37a6c8d00b718968077e3d4712e3f9511486f362cb36a7bc7ddb1fa2dddcc6efd323f33762432d4
6
+ metadata.gz: 37704673dbcb40560041f0ad82b94842ce2b11edeb21dcf49bb5850b9b5cb5969cce20f82f7ff5fd233bb0113745904f44821460a0f2578010a4bd9c38ecb5d7
7
+ data.tar.gz: b75c4f3e0db8825fbd23f3475bc1e2329c360edb50f9cc44f8ee3c4e2540418796f18583c6505b8372582c08f2c9869aa8c32ce4bc53f88685a65350e3047826
Binary file
@@ -1,43 +1,67 @@
1
1
  <!-- footer -->
2
- <footer class="ft-wrapper">
2
+ <footer class="ft__wrapper">
3
3
 
4
4
  <div class="ft__head">
5
- <a href="{{ site.baseurl }}/">
6
- {% include /branding/site-logo.svg %}</a>
5
+
7
6
  </div>
8
7
  <div class="ft__body">
9
8
 
10
- <section class="ft__sitemap">
9
+ <div class="ft__contact ft__col">
10
+
11
+ <a href="{{ site.baseurl }}/">
12
+ {% include /branding/site-logo.svg %}
13
+ </a>
14
+ <div class="ft__contact__add">
15
+ <ul class="ft__contact--list">
16
+ {% for item in site.postal_add %}
17
+ <li class="address">{{ item[1] }}</li>
18
+ {% endfor %}
19
+ <li>{{ site.phone }}</li>
20
+ <li>{{ site.email }}</li>
21
+ </ul>
22
+
23
+ </div>
24
+ </div>
25
+
26
+ <div class="ft__sitemap ft__col">
11
27
  <div class="ft__sitemap--menu">
28
+ <h3 class="ft__sitemap--header">INFORMATION FOR</h3>
29
+
30
+ <div class="ft__sitemap--env-wrap">
12
31
  {% for item in site.data.menu.navigation %}
13
- <h2 class="ft__sitemap--header">{{ item.name }}</h2>
14
- <ul class="ft__sitemap--submenu">
32
+
33
+ <div class="ft__sitemap--env">
34
+
35
+ <h4 class="ft__sitemap--env-header">{{ item.name }}</h4>
36
+ <ul class="ft__sitemap--submenu">
15
37
  {% for sub in item.submenu %}
16
- <li><a href="{{ sub.url }}">{{ sub.name }}</a></li>
38
+ <li><a href="{{ sub.url }}">{{ sub.alt }}</a></li>
17
39
  {% endfor %}
18
- </ul>
40
+ </ul>
41
+ </div>
42
+
19
43
  {% endfor %}
20
- </div>
21
- </section>
22
44
 
23
- <!-- quick contact form -->
45
+ </div>
46
+ </div>
47
+ </div>
24
48
 
25
- <section class="ft__contact">
26
- {% include /forms/mc-register.html %}
27
- </section>
28
49
  </div>
29
50
  <!-- footer base and copyright -->
30
51
 
31
52
  <div class="ft__base">
32
- <a href="{{ site.author.url }}" class="slogan">made slowly</a>
53
+
54
+ <p class="copyright">&copy; <script>
55
+ document.write(new Date().getFullYear())
56
+ </script> {{ site.title }}</p>
57
+
58
+
33
59
  <div class="legal-links">
34
60
  {% for item in site.data.menu.legals %}
35
61
  <a href="{{ item.url }}">{{ item.name }}</a>
36
62
  {% endfor %}
37
63
  </div>
38
- <p class="copyright">&copy; <script>
39
- document.write(new Date().getFullYear())
40
- </script> {{ site.title }} Limited</p>
64
+ <a href="{{ site.author.url }}" class="slogan">made slowly</a>
41
65
  </div>
42
66
 
43
67
  </footer>
@@ -0,0 +1,40 @@
1
+ <!-- Take inputs from page front matter and calculate the coordinates of the svg elements -->
2
+ {% assign image_handle = include.image_handle %}
3
+
4
+ {% if page[image_handle].augment %}
5
+
6
+ <!-- get image dimensions -->
7
+ {%- assign imageX = page[image_handle].augment.image | split: ', ' | first -%}
8
+ {%- assign imageY = page[image_handle].augment.image | split: ', ' | last -%}
9
+
10
+ <!-- pre-assign arrays for circle centers and line ends -->
11
+ {% assign cX = '' | split: ',' %}
12
+ {% assign cY = '' | split: ',' %}
13
+
14
+ <!-- loop over all the requested labels -->
15
+ {% for item in page[image_handle].augment.labels %}
16
+
17
+ <!-- x(i) and y(i) -->
18
+ {% assign ix = item.coord | split: ', ' | first %}
19
+ {% assign iy = item.coord | split: ', ' | last %}
20
+
21
+ <!-- calculate circle centers as percentage of image size -->
22
+ {% assign cx = ix | times: 100 | divided_by: imageX | append: ', ' %}
23
+ {% assign cy = iy | times: 100 | divided_by: imageY | append: ', ' %}
24
+ <!-- push into arrays -->
25
+ {% assign cX = cX | push: cx %}
26
+ {% assign cY = cY | push: cy %}
27
+
28
+ {% endfor %}
29
+
30
+ {% endif %}
31
+
32
+ <!--
33
+ in: [imageX, imageY] pixels
34
+ [x, y] pixels
35
+
36
+ out: cX = [cx_1, cx_2, ... , cx_n]
37
+ cY = [cy_1, cy_2, ... , cy_n]
38
+
39
+ X1 = [x1_1, x1_2, ... , x1_n]
40
+ -->
@@ -0,0 +1,31 @@
1
+
2
+ <script type="text/javascript">
3
+
4
+ function svg_aug_contained_image(){
5
+
6
+ var x_i = document.getElementsByClassName("image--guarantee")[0].offsetWidth ;
7
+ var y_i = document.getElementsByClassName("image--guarantee")[0].offsetHeight ;
8
+ /* ge scg labels */
9
+ var svg = document.querySelectorAll('.svg__augment > .augment--guarantee');
10
+
11
+ /* origanal image width in pixels */
12
+ var x_0 = {{ page.guarantee.augment.image | split: ', ' | first }} ;
13
+ var y_0 = {{ page.guarantee.augment.image | split: ', ' | last }} ;
14
+
15
+ for (let i = 0; i < svg.length; i++) {
16
+ /* origanal x position in pixels */
17
+ var dx_0 = parseInt( svg[i].getAttribute('x'), 10 ) / 100 ;
18
+ var dy_0 = parseInt( svg[i].getAttribute('y'), 10 ) / 100 ;
19
+
20
+ var dx_0Pixel = dx_0 * x_0 ;
21
+ var dy_0Pixel = dy_0 * y_0 ;
22
+
23
+ svg[i].setAttribute("x", (dx_0Pixel - ( x_0 / 2) + (x_i / 2) ) / x_i * 100 + '%');
24
+ svg[i].setAttribute("y", (dy_0Pixel - ( y_0 / 2) + (y_i / 2) ) / y_i * 100 + '%');
25
+ };
26
+
27
+ }
28
+
29
+ //window.setInterval(svg_aug_contained_image, 200 )
30
+
31
+ </script>
Binary file
@@ -56,9 +56,8 @@
56
56
  <link rel="stylesheet" type="text/css" title="made slowly has all the style" href="{{ site.baseurl }}/assets/css/gaitq_feed.css" media="screen" />
57
57
  {% endif %}
58
58
 
59
- {% if page.id %} <!-- it's a post -->
60
59
  <link rel="stylesheet" type="text/css" title="made slowly has all the style" href="{{ site.baseurl }}/assets/css/gaitq_post.css" media="screen" />
61
- {% endif %}
60
+
62
61
 
63
62
  {% if page.env %}
64
63
  {% include /head/env/conditional.html %}
@@ -1,4 +1,16 @@
1
1
 
2
+ {% assign scripts = page.scripts | split: ', '%}
3
+ {% if scripts contains 'svg-aos' %}
4
+ <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.6.1/lodash.min.js" ></script>
5
+
6
+ <script type="text/javascript" src="{{ "{{ site.baseurl }}/assets/js/svg_text_width.js" | relative_url }}" async></script>
7
+
8
+ <script type="text/javascript" src="{{ "{{ site.baseurl }}/assets/js/svg_aos.js" | relative_url }}" async></script>
9
+
10
+ {% include functions/pull_page_args.html %}
11
+
12
+ {% endif %}
13
+
2
14
 
3
15
  <script type="text/javascript" src="{{ "{{ site.baseurl }}/assets/js/animate_after_load.js" | relative_url }}" async></script>
4
16
 
@@ -0,0 +1,12 @@
1
+
2
+ <div class="embed-container">
3
+ <iframe
4
+ src="https://player.vimeo.com/video/{{ include.id }}"
5
+ width="500"
6
+ height="281"
7
+ frameborder="0"
8
+ webkitallowfullscreen
9
+ mozallowfullscreen
10
+ allowfullscreen>
11
+ </iframe>
12
+ </div>
@@ -2,26 +2,46 @@
2
2
  layout: default
3
3
  ---
4
4
 
5
- <div class="about__head__bg"></div>
5
+ <!--
6
6
 
7
- <div class="about__head">
8
- <!-- exclude if no title is provided -->
9
- {% if site.data.copy.about[page.env].title %}
10
- {% assign strap = site.data.copy.about[page.env].title %}
7
+ Last full read through 29/12/2020
11
8
 
12
- <h1>
9
+ ##############################################
10
+ # About Layout /_layouts/about.html
11
+ ##############################################
12
+
13
+ -->
14
+
15
+ {% if site.data.copy.about[page.env].title %}
16
+ {% assign strap = site.data.copy.about[page.env].title %}
17
+ {% else %}
18
+ {% assign strap = site.description %}
19
+ {% endif %}
20
+
21
+ <div class="hero hero-65">
22
+
23
+ <div class="hero__overlay h-100">
24
+ {% picture {{ page.hero.image | prepend: 'content/' }}
25
+ --img class="hero__image hero__image--fixed hero-65"
26
+ --alt {{ page.hero.alt }} %}</div>
27
+
28
+ <header class="hero__strap hero__strap--center image__filter--blur hero-65" aria-label="{{ strap }}">
29
+
30
+ <h1 aria-hidden="true" >
13
31
  {% assign n = strap.size | minus: 1 %}
14
32
  {%- for char in (0..n ) -%}
15
33
 
16
- <span style="animation-delay: {{ char | times: 60 | plus: 800 }}ms;">{{ strap | slice: char }}</span>
34
+ <span style="animation-delay: {{ char | times: 40 | plus: 200 }}ms;">{{ strap | slice: char }}</span>
17
35
  {%- endfor -%}</h1>
18
36
 
19
- {% endif %}
37
+ </header>
20
38
 
21
39
  </div>
40
+
41
+
22
42
  <!-- exclude if no text is provided -->
23
43
  {% if site.data.copy.about[page.env].text %}
24
- <div class="about__copy" data-aos="fade-in">
44
+ <div class="about__copy bg--env-100" >
25
45
 
26
46
  {% for item in site.data.copy.about[page.env].text %}
27
47
  <p class="about--copy" data-aos="fade-in">
@@ -32,26 +52,29 @@ layout: default
32
52
 
33
53
  <div class="about__team">
34
54
 
35
- <div class="team__head">
55
+ <div class="team__head bg--env-50">
36
56
  {% for menu in site.data.team.menu %}
37
- <h3 class="team__title team--js-script-{{ menu.script }}" id="team{{ menu.script }}" onclick="team{{ menu.script }}()">
57
+ <h3 class="team__title team--js-script-{{ menu.script }}"
58
+ id="team{{ menu.script }}"
59
+ onclick="team{{ menu.script }}()">
60
+
38
61
  <i class="{{ menu.icon }}"></i>
39
62
  <span class="title__title--text">{{ menu.name }}</span></h3>
40
63
  {% endfor %}
41
64
  </div>
42
65
 
43
- <div class="team__members" onload="display_core()">
66
+ <div class="team__members">
44
67
 
45
68
  {% for member in site.data.team.members %}
46
69
 
47
- <div class=" single__member
70
+ <div class=" single__member single__member--active
48
71
  {% assign ships = member.membership | split: ', ' %}
49
72
  {% for item in ships %}
50
73
  team--{{ item }}
51
74
  {% endfor %} ">
52
75
 
53
76
  <div class="single__member__image">
54
- <img class="member--image"src="{{ member.image | prepend: '/assets/images/content/people/' }}" alt="{{ member.name }} is the {{ member.position }}" />
77
+ <img class="member--image" src="{% if member.image %}{{ member.image | prepend: '/assets/images/content/people/' }}{% else %}{{ 'team-placeholder.jpg' | prepend: '/assets/images/defaults/' }}{% endif %}" alt="{{ member.name }} is the {{ member.position }}" />
55
78
  </div>
56
79
 
57
80
  <div class="single__member__text">
@@ -86,20 +109,29 @@ layout: default
86
109
  </div>
87
110
  </div>
88
111
 
89
- <!-- By default, .single__member is display:none, so in the event of JS disabled we see everyone -->
112
+ <!--
113
+
114
+ -->
90
115
  <script>
91
- /* get core .team__title and style */
116
+ /*
117
+ On load we hide some members.
118
+ '.single__member.single__member--active' is applied to all members, such that all members are 'display: flex' so in the event of no JS we see everyone. Removing '.single__member--active' defaults display to 'display: none'.
119
+ */
120
+
121
+ /* get core .team__title and apply style */
92
122
  const title = document.querySelectorAll(".team__title.team--js-script-core");
93
123
  for(var i = 0; i < title.length; i++)
94
124
  title[i].classList.add('team__title--active');
95
125
 
96
- /* get core .single__member and style */
97
- const members = document.querySelectorAll(".single__member.team--core");
126
+ /* get members that do not belong to '.team--core' and remove '.single__member--active' */
127
+ const members = document.querySelectorAll(".single__member:not(.team--core)");
98
128
  for(var i = 0; i < members.length; i++)
99
- members[i].classList.add('single__member--active');
100
-
129
+ members[i].classList.remove('single__member--active');
101
130
  </script>
102
131
 
132
+ <!--
133
+ For each team we need a script to handle click events on the team menu.
134
+ -->
103
135
  {% for menu in site.data.team.menu %}
104
136
 
105
137
  <script>
@@ -131,7 +163,7 @@ layout: default
131
163
 
132
164
 
133
165
  <script>
134
-
166
+ /* Watch for clicks on more info and reveal text */
135
167
  document.querySelectorAll('.info__conceal').forEach(function(el){
136
168
  el.addEventListener('click', function() {
137
169
  this.classList.toggle('info__reveal');
@@ -8,11 +8,9 @@ layout: compress
8
8
 
9
9
  {{ content }}
10
10
 
11
- {% if page.layout == "env/landing" or page.layout == "error-page" %}
11
+ {% if page.layout != "error-page" %}
12
12
 
13
- {% else %}
14
-
15
- {% include footer/footer.html %}
13
+ {% include footer/footer_full.html %}
16
14
 
17
15
  {% endif %}
18
16
 
@@ -2,47 +2,118 @@
2
2
  layout: default
3
3
  ---
4
4
 
5
- <div class="clinician__hero">
5
+ <!--
6
6
 
7
- <div class="clinician__overlay">
8
- <div class="clinician__bg">
9
- </div>
10
- </div>
7
+ Last full read through 27/12/2020
8
+
9
+ ##############################################
10
+ # Clinician Layout/_layouts/env/clinician.html
11
+ ##############################################
12
+
13
+ -->
14
+
15
+ <!-- assign description with site decsription as fallback -->
11
16
 
12
- <div class="clinician__strap">
13
- <h1>{{ site.data.copy.about.clinician.title }}</h1>
14
- <p data-aos="fade-up">{{ site.data.copy.about.clinician.description }}</p>
17
+ {% if site.data.copy.landing.clinician.description %}
18
+ {% assign description = site.data.copy.landing.clinician.description %}
19
+ {% else %}
20
+ {% assign description = site.description %}
21
+ {% endif %}
22
+
23
+ <div class="hero hero-65">
24
+
25
+ <div class="hero__overlay">
26
+ {% picture {{ page.hero.image | prepend: 'content/' }}
27
+ --img class="hero__image image__filter--mix"
28
+ --alt {{ page.hero.alt }} %}</div>
29
+
30
+ <div class="hero__strap hero__strap--baseline bg--env-100">
31
+ <h2>{{ site.data.copy.landing.clinician.title }}</h2>
32
+ <p data-aos="fade-up">{{ site.data.copy.landing.clinician.description }}</p>
15
33
  </div>
16
34
 
17
- <div class="clinician__follow"></div>
35
+ <div class="hero__follow"></div>
18
36
 
19
37
  </div>
20
38
 
21
39
 
22
- {% picture
23
- {{ page.image | prepend: 'content/' }}
24
- --img class="clinician__hero__2"
25
- --alt {{ page.image_alt }} %}
40
+ <div class="augmented-image">
26
41
 
42
+ {% picture {{ page.subhero.image | prepend: 'content/' }}
43
+ --img class="hero__image"
44
+ --alt {{ page.subhero.alt }} %}
27
45
 
46
+ <svg class="svg__augment" viewBox="-50 -50 100 100" width="100%" height="100%" xmlns="http://www.w3.org/2000/svg">
47
+ <defs>
48
+ <radialGradient id="augmentLED" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
49
+ <stop offset="0%" />
50
+ <stop offset="100%" />
51
+ </radialGradient>
52
+ </defs>
53
+
54
+ <circle class="svg__augment--pulse" cx="32%" cy="2%" />
55
+ <circle class="svg__augment--led" cx="32%" cy="2%" r=".5" />
56
+
57
+ </svg>
58
+
59
+ </div>
60
+
61
+ <div class="segment__wrap">
62
+
63
+ <div class="segment__left">
64
+
65
+
66
+ <div class="center-text segment__keywords strap--opd-trust">
67
+ {% assign keyword = site.data.copy.landing.clinician.keywords | split: ", " %}
68
+ {% for word in (1..keyword.size) %}
69
+ <h3 data-aos="fade-in">{{ keyword[forloop.index0] }}</h3>
70
+ {% endfor %}</div>
71
+
72
+ <!-- setup liquid variables -->
73
+ {%- assign env = site.data.menu.navigation | where: 'env', 'clinician' -%}
74
+ {%- assign env = env[0] -%}
75
+
76
+ {%- assign cta = env.submenu | where: 'id', 'cta' -%}
77
+ {%- assign cta = cta[0] -%}
78
+
79
+ <a class="action__call" aria-label="{{ cta.aria }}" href="{{ cta.url }}">
80
+ <span>{{ cta.alt }}</span>
81
+ <!-- svg arrow -->
82
+ <svg width="13px" height="10px" viewBox="0 0 13 10">
83
+ <path d="M1,5 L11,5"></path>
84
+ <polyline points="8 1 12 5 8 9"></polyline></svg>
85
+ </a>
28
86
 
29
- <div class="clinician__grid-wrap">
30
87
 
31
- <div class="clinician__grid-col-l">
32
- <div class="clinician__straps clinician__grid_img"></div>
33
- </div>
34
- <div class="clinician__grid-col-r">
35
- <div class="clinician__straps "></div>
36
88
  </div>
37
89
 
38
- <div class="clinician__grid__text">
90
+ <div class="segment__right augmented-image" >
91
+
92
+ {% picture {{ page.guarantee.image | prepend: 'content/' }}
93
+ --img class="hero__image image--guarantee h-100"
94
+ --alt {{ page.guarantee.alt }} %}
95
+
96
+ <svg class="svg__augment " width="100%" height="100%" xmlns="http://www.w3.org/2000/svg">
97
+
98
+ {% include functions/calc-svg-coord.html image_handle="guarantee" %}
99
+
100
+ {% for item in page.guarantee.augment.labels %}
101
+
102
+ <svg class="svg__labels hidden" x="{{ cX[forloop.index0] | remove: ", " }}%" y="{{ cY[forloop.index0] | remove: ", " }}%" style="overflow: visible">
103
+
104
+ <circle class="svg--elem svg--circle" cx="0%" cy="0%" r="6" />
105
+
106
+ <line class="svg--elem svg--line" x1="0" y1="0" y2="0" />
107
+
108
+ <text class="svg--elem svg--text trans-{% if item.reverse %}right{% else %}left{% endif %}" >{{ item.text }}</text>
109
+
110
+ </svg>
111
+
112
+ {% endfor %}
113
+
114
+ </svg>
39
115
 
40
- {% assign keyword = site.data.copy.about.clinician.keywords | split: ", " %}
41
- {% for word in (1..keyword.size) %}
42
- <p class="clinician__grid--keywords" data-aos="fade-in" data-aos-anchor-placement="top-bottom">{{ keyword[forloop.index0] }}</p>
43
- {% endfor %}
44
116
 
45
- <div class="action__call"></div>
46
117
  </div>
47
118
 
48
119
  </div>