askclass-course-theme 0.1.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 (59) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +373 -0
  3. data/README.md +51 -0
  4. data/_config.yml +96 -0
  5. data/_includes/course.html +57 -0
  6. data/_includes/foot/mathjax.html +2 -0
  7. data/_includes/foot/pwaupdate.html +8 -0
  8. data/_includes/footer.html +11 -0
  9. data/_includes/head/common.html +44 -0
  10. data/_includes/head/meta.html +10 -0
  11. data/_includes/header.html +12 -0
  12. data/_includes/logo.html +15 -0
  13. data/_includes/segment/common.html +25 -0
  14. data/_includes/segment/header.html +10 -0
  15. data/_includes/segment/index.html +44 -0
  16. data/_includes/segment/nav.html +40 -0
  17. data/_includes/session/content_revealer.html +6 -0
  18. data/_includes/session/footer.html +29 -0
  19. data/_includes/session/header.html +35 -0
  20. data/_includes/session/item.html +3 -0
  21. data/_includes/session/points.html +11 -0
  22. data/_includes/session/videos.html +5 -0
  23. data/_includes/session/youtube.html +6 -0
  24. data/_layouts/default.html +11 -0
  25. data/_layouts/segment.html +17 -0
  26. data/_layouts/session.html +26 -0
  27. data/_sass/_bullets.scss +15 -0
  28. data/_sass/_default.scss +224 -0
  29. data/_sass/_grid.scss +24 -0
  30. data/_sass/_lesson.scss +35 -0
  31. data/_sass/_paginator.scss +34 -0
  32. data/_sass/_post.scss +57 -0
  33. data/_sass/_tab-colors.scss +81 -0
  34. data/_sass/_tab.scss +138 -0
  35. data/_sass/_tab.scsse +125 -0
  36. data/_sass/_table.scss +17 -0
  37. data/_sass/_video.scss +13 -0
  38. data/assets/css/grid.scss +5 -0
  39. data/assets/css/md.scss +10 -0
  40. data/assets/css/style.scss +4 -0
  41. data/assets/css/tab.scss +5 -0
  42. data/assets/favicon.ico +0 -0
  43. data/assets/loading.svg +6 -0
  44. data/assets/logo-144.png +0 -0
  45. data/assets/logo-192.png +0 -0
  46. data/assets/logo-300.png +0 -0
  47. data/assets/logo-48.png +0 -0
  48. data/assets/logo-512.png +0 -0
  49. data/assets/logo-96.png +0 -0
  50. data/assets/logo-icon.svg +4 -0
  51. data/assets/logo-square-144.png +0 -0
  52. data/assets/logo-square-192.png +0 -0
  53. data/assets/logo-square-300.png +0 -0
  54. data/assets/logo-square-48.png +0 -0
  55. data/assets/logo-square-512.png +0 -0
  56. data/assets/logo-square-96.png +0 -0
  57. data/assets/logo.svg +3 -0
  58. data/assets/site.webmanifest +57 -0
  59. metadata +114 -0
@@ -0,0 +1,12 @@
1
+ <head>
2
+ {%- include head/meta.html -%}
3
+ {%- include head/common.html -%}
4
+ {%- if page.collection == 'session' -%}
5
+ <link rel="preload" as="style" href="{{ 'assets/css/md.css' | relative_url }}"
6
+ onload='this.onload=null;this.rel="stylesheet"' />
7
+ {%- else -%}
8
+ <link rel="stylesheet" href="{{ 'assets/css/grid.css' | relative_url }}" />
9
+ <link rel="stylesheet" href="{{ 'assets/css/tab.css' | relative_url }}" />
10
+ {%- endif -%}
11
+ <link rel="stylesheet" href="{{ 'assets/css/style.css' | relative_url }}" />
12
+ </head>
@@ -0,0 +1,15 @@
1
+ <section class="center-align">
2
+ <a href="/">
3
+ <img src="/assets/{{ include.image | default: site.acc.logo.image }}"
4
+ width="{{ include.size | default: site.acc.logo.size }}"
5
+ height="{{ include.height | default: site.acc.logo.height | default: site.acc.logo.size }}"
6
+ title="{{ site.title }}"/>
7
+ </a>
8
+ {%- if include.href %}
9
+ <h4 class="special"><a href="{{ include.href }}">{{ include.title | default: site.title }}</a></h4>
10
+ {% elsif include.title %}
11
+ <h4 class="special" style="color: var(--secondaryColor); margin: 0 0 1em 0">{{ include.title }}</h4>
12
+ {% else %}
13
+ <h4 class="special">{{ include.title | default: site.title }}</h4>
14
+ {% endif -%}
15
+ </section>
@@ -0,0 +1,25 @@
1
+ {% assign classes = site.data.common.index.classes %}
2
+
3
+ <div class="center-align">
4
+ <a href="/"><img src="/assets/logo.svg" width="100" title="{{ site.title }}"/></a>
5
+
6
+ <h1 class="special">{{ page.title }}</h1>
7
+ </div>
8
+
9
+ <ul>
10
+ {% for class in classes %}
11
+ {% assign item = site.data.common.index[class] %}
12
+ {% assign count = site.data.common[class] | size %}
13
+ <li class="card-tab c{{ forloop.index }}">
14
+ <div class="top-bar">{{ item.title }}</div>
15
+ <div class="tab">{{ count }}</div>
16
+ <div class="header">&nbsp;</div>
17
+
18
+ {% if count > 0 %}
19
+ <div class="body">
20
+ <h2><a href="/{{ page.collection }}/{{ class }}">{{ item.title }}</a></h2>
21
+ </div>
22
+ {% endif %}
23
+ </li>
24
+ {% endfor %}
25
+ </ul>
@@ -0,0 +1,10 @@
1
+ {% assign info = include.info %}
2
+ <section class="center-align">
3
+ <h1 class="special">{{ info.title }}</h1>
4
+
5
+ {% if info.begin and info.end %}
6
+ {{ info.begin | date: '%b %e' }} - {{ info.end | date: '%b %e, %Y' }}
7
+ {% else %}
8
+ {{ info.date }}
9
+ {% endif %}
10
+ </section>
@@ -0,0 +1,44 @@
1
+ {% assign info = include.info %}
2
+
3
+ <ul class="grid">
4
+ {% for item in info.items %}
5
+ {% assign session = site.data.sessions[item] %}
6
+ <li class="card-tab {{ info.theme }}">
7
+
8
+ {% if session.type %}
9
+ <div class="top-bar">{{ session.type }}</div>
10
+ <div class="tab">{{ session.sequence }}</div>
11
+ {% elsif session.sequence %}
12
+ <div class="top-bar">{{ site.data.course.session_tag }}</div>
13
+ <div class="tab">{{ session.sequence }}</div>
14
+ {% else %}
15
+ <div class="top-bar">&nbsp;</div>
16
+ {% endif %}
17
+
18
+ {% if session.due %}
19
+ <div class="header">
20
+ <span class="material-symbols-outlined">alarm_on</span>
21
+ {{ session.due | date: '%b %e, %y' }}
22
+ </div>
23
+ {% elsif session.type %}
24
+ <div class="header">{{ session.header }}</div>
25
+ {% else %}
26
+ <div class="header">&nbsp;</div>
27
+ {% endif %}
28
+
29
+ <div class="body">
30
+ {% if session.url %}
31
+ <h3><a href="/session/{{ session.url }}">{{ session.title }}</a></h3>
32
+ {% else %}
33
+ <h3>{{ session.title }}</h3>
34
+ {% endif %}
35
+
36
+ {% if session.part %}
37
+ <div class="item">
38
+ Part {{ session.part }}
39
+ </div>
40
+ {% endif %}
41
+ </div>
42
+ </li>
43
+ {% endfor %}
44
+ </ul>
@@ -0,0 +1,40 @@
1
+ {% assign segs = site.data.course.segments %}
2
+ {% for s in segs %}
3
+ {% if s == include.segment %}
4
+ {% assign segnum = forloop.index0 %}
5
+ {% break %}
6
+ {% endif %}
7
+ {% endfor %}
8
+
9
+ {% assign p = segnum | minus: 1 %}
10
+ {% assign n = segnum | plus: 1 %}
11
+ {% if p != -1 %}{% assign prev = segs[p] %}{% endif %}
12
+ {% assign next = segs[n] %}
13
+
14
+ <section class="center-align">
15
+ <div class="middle-align">
16
+ {% if prev %}
17
+ {% if include.icon %}
18
+ {{ site.data.syllabus[prev].title }}
19
+ {% endif %}
20
+ <a href="/segment/{{ prev }}" class="material-symbols-outlined md-48">navigate_before</a>
21
+ {% else %}
22
+ <span class="material-symbols-outlined md-48 md-disabled">navigate_before</span>
23
+ {% endif %}
24
+
25
+ {% if include.icon %}
26
+ <a href="/segment/{{ include.segment }}" class="material-symbols-outlined">calendar_today</a>
27
+ {% else %}
28
+ <a href="/segment/{{ include.segment }}"><h3>{{ site.data.syllabus[include.segment].title }}</h3></a>
29
+ {% endif %}
30
+
31
+ {% if next %}
32
+ <a href="/segment/{{ next }}" class="material-symbols-outlined md-48">navigate_next</a>
33
+ {% if include.icon %}
34
+ {{ site.data.syllabus[next].title }}
35
+ {% endif %}
36
+ {% else %}
37
+ <span class="material-symbols-outlined md-48 md-disabled">navigate_next</span>
38
+ {% endif %}
39
+ </div>
40
+ </section>
@@ -0,0 +1,6 @@
1
+ <script defer>
2
+ const samps = document.querySelectorAll('samp');
3
+ samps.forEach( el => el.addEventListener('click', function(e) {
4
+ e.target.classList.toggle('on');
5
+ }, false));
6
+ </script>
@@ -0,0 +1,29 @@
1
+ {% for s in segment_data.items %}
2
+ {% if s == session_id %}
3
+ {% assign _index = forloop.index0 %}
4
+ {% break %}
5
+ {% endif %}
6
+ {% endfor %}
7
+
8
+ <div class="center-align spacer special">
9
+ {% include segment/nav.html segment=session_data.segment icon=1 %}
10
+
11
+ {% assign _next_index = _index | plus: 1 %}
12
+ {% assign _next_segment = segment_data.items[_next_index] %}
13
+ <div class="middle-align">
14
+ <span>{% include session/item.html item=session_data %}</span>
15
+
16
+
17
+ {% assign _next_item = site.data.sessions[_next_segment] %}
18
+ {% if _next_item %}
19
+ <span class="material-symbols-outlined md-24">navigate_next</span>
20
+ {% if _next_item.url %}
21
+ <a href="/session/{{ _next_item.url }}">
22
+ {% include session/item.html item=_next_item %}
23
+ </a>
24
+ {% else %}
25
+ {% include session/item.html item=_next_item %}
26
+ {% endif %}
27
+ {% endif %}
28
+ </div>
29
+ </div>
@@ -0,0 +1,35 @@
1
+ <section class="center-align special">
2
+ {% if session_data.header %}
3
+ <div>{{ session_data.header }}</div>
4
+ {% endif %}
5
+
6
+ <h1 class="special">{{ session_data.title }}</h1>
7
+
8
+ {% if session_data.part %}
9
+ <div>Part {{ session_data.part }}</div>
10
+ {% endif %}
11
+
12
+ {% include segment/nav.html segment=session_data.segment %}
13
+
14
+ <div>
15
+ {% if segment_data.begin and segment_data.end %}
16
+ {{ segment_data.begin | date: '%b %e' }} - {{ segment_data.end | date: '%b %e, %Y' }}
17
+ {% else %}
18
+ {{ segment_data.date }}
19
+ {% endif %}
20
+ </div>
21
+
22
+ <div class="middle-align">
23
+ {% for item in segment_data.items %}
24
+ {% assign _info = site.data.sessions[item] %}
25
+
26
+ {% if item == session_id %}
27
+ <span class="lesson-number current">{{ _info.sequence }}</span>
28
+ {% elsif _info.url %}
29
+ <a class="lesson-number" href="/session/{{ _info.url }}">{{ _info.sequence }}</a>
30
+ {% else %}
31
+ <span class="lesson-number">{{ _info.sequence }}</span>
32
+ {% endif %}
33
+ {% endfor %}
34
+ </div>
35
+ </section>
@@ -0,0 +1,3 @@
1
+ {% assign item = include.item %}
2
+ {{ item.header }}: {{ item.title }}
3
+ {% if item.part %}Part: {{ item.part }}{% endif %}
@@ -0,0 +1,11 @@
1
+ {%- if session_data.type == 'Assignment' -%}
2
+ <pre>
3
+ {%- if session_data.points -%}
4
+ Points: {{ session_data.points }}
5
+ {%- endif -%}
6
+
7
+ {%- if session_data.due %}
8
+ Due: {{ session_data.due | date: '%B %d, %Y' }}
9
+ {%- endif -%}
10
+ </pre>
11
+ {%- endif -%}
@@ -0,0 +1,5 @@
1
+ {% for v in include.videos %}
2
+ {% include session/youtube.html id=v %}
3
+ {% assign _size = videos | size %}
4
+ {% if forloop.index != _size %}<hr />{% endif %}
5
+ {% endfor %}
@@ -0,0 +1,6 @@
1
+ <div class="video-background">
2
+ <iframe
3
+ src="https://www.youtube.com/embed/{{ include.id }}?start={{ include.start }}&end={{ include.end }}&rel=0&showinfo=0&modestbranding=1"
4
+ frameborder="0"
5
+ allowfullscreen></iframe>
6
+ </div>
@@ -0,0 +1,11 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ {% include header.html %}
4
+ <body>
5
+ {% include logo.html %}
6
+ {{ content }}
7
+ {% include footer.html %}
8
+ {% include foot/pwaupdate.html %}
9
+ </body>
10
+ </html>
11
+
@@ -0,0 +1,17 @@
1
+ {% assign segment = page.id | split: '/' | last %}
2
+ {% assign info = site.data.syllabus[segment] %}
3
+
4
+ <!doctype html>
5
+ <html lang="en">
6
+ {% include header.html %}
7
+ <body>
8
+ {% include logo.html size=50 title=site.data.course.id %}
9
+ {% include segment/header.html info=info %}
10
+
11
+ {% include segment/index.html info=info %}
12
+
13
+ {{ content }}
14
+
15
+ {% include segment/nav.html segment=segment %}
16
+ </body>
17
+ </html>
@@ -0,0 +1,26 @@
1
+ {% assign session_id = page.id | split: '/' | last %}
2
+ {% assign session_data = site.data.sessions[session_id] %}
3
+ {% assign segment_data = site.data.syllabus[session_data.segment] %}
4
+
5
+ <!doctype html>
6
+ <html lang="en">
7
+ {% include header.html %}
8
+ <body>
9
+ {% include logo.html size=50 title=site.data.course.id %}
10
+ {% include session/header.html %}
11
+
12
+ <section class="center-align spacer content">
13
+ <article>
14
+ {% include session/points.html %}
15
+
16
+ {% include session/videos.html videos=session_data.videos %}
17
+ {{ content }}
18
+ </article>
19
+ </section>
20
+
21
+ {% include session/footer.html %}
22
+ {% include session/content_revealer.html %}
23
+ {% include footer.html %}
24
+ {% include foot/mathjax.html -%}
25
+ </body>
26
+ </html>
@@ -0,0 +1,15 @@
1
+ ol > li {
2
+ ul > li {
3
+ list-style-type: disclosure-closed;
4
+ }
5
+ ol > li {
6
+ list-style: lower-alpha;
7
+ }
8
+ }
9
+
10
+ ul > li > ul > li {
11
+ list-style-type: square;
12
+ ul > li {
13
+ list-style-type: circle;
14
+ }
15
+ }
@@ -0,0 +1,224 @@
1
+ $font-main: 'Open Sans', sans-serif;
2
+ $font-secondary: 'Teko', sans-serif;
3
+ $font-special: 'Josefin Sans', sans-serif;
4
+ $font-mono: 'Share Tech Mono', monospace;
5
+ $color-primary: aliceblue;
6
+ $color-secondary: skyblue;
7
+ $color-tertiary: #2cdd88;
8
+ $color-bg: #222;
9
+ $color-fg: ivory;
10
+ $color-dark: gray;
11
+ $color-link: deeppink;
12
+ $color-theme: #ffc100;
13
+ $content-width: 600px;
14
+
15
+ html {
16
+ --specialFont: #{$font-special};
17
+ --mainFont: #{$font-main};
18
+ --secondaryFont: #{$font-secondary};
19
+ --monoFont: #{$font-mono};
20
+ --primaryColor: #{$color-primary};
21
+ --secondaryColor: #{$color-secondary};
22
+ --linkColor: #{$color-link};
23
+ --bgColor: #{$color-bg};
24
+ --fgColor: #{$color-fg};
25
+ --darkColor: #{$color-dark};
26
+ --contentWidth: #{$content-width};
27
+ --themeColor: #{$color-theme};
28
+ --tertiaryColor: #{$color-tertiary};
29
+ }
30
+
31
+ body {
32
+ font-family: $font-main;
33
+ font-size: 17px;
34
+ line-height: 1.6;
35
+ background-color: $color-bg;
36
+ color: $color-fg;
37
+ &::-webkit-scrollbar {
38
+ width: 6px;
39
+ height: 6px;
40
+ }
41
+ &::-webkit-scrollbar-thumb {
42
+ background-color: rgba(0,0,0,0.5);
43
+ border-radius: 6px;
44
+ }
45
+ &::-webkit-scrollbar-corner {
46
+ background-color: transparent;
47
+ }
48
+ }
49
+
50
+ hr {
51
+ width: 300px;
52
+ margin-bottom: 20px;
53
+ margin-top: 40px;
54
+ border-color: $color-bg;
55
+ }
56
+
57
+ a {
58
+ color: $color-link;
59
+ text-decoration: none;
60
+ }
61
+
62
+ h1, h2, h3, h4, h5, h6 {
63
+ font-family: $font-secondary;
64
+ font-weight: normal;
65
+ color: $color-secondary;
66
+ line-height: 1;
67
+ }
68
+
69
+ h1 { font-size: 2.5em }
70
+ h2 { font-size: 2em }
71
+ h3 { font-size: 1.7em }
72
+ h4 { font-size: 1.4em }
73
+ h5 { font-size: 1.2em }
74
+ h6 { font-size: 1em }
75
+
76
+ .special {
77
+ font-family: $font-special;
78
+ text-align: center;
79
+ color: $color-primary;
80
+ margin: 10px 0 5px 0;
81
+ }
82
+
83
+ code, pre {
84
+ font-family: $font-mono;
85
+ }
86
+
87
+ code {
88
+ white-space: pre-wrap;
89
+ color: $color-secondary;
90
+ &.rounded {
91
+ border-radius: 5px;
92
+ margin: 0 3px;
93
+ padding: 2px 5px;
94
+ }
95
+ }
96
+
97
+ pre {
98
+ background: linear-gradient(rgba(0,0,0,0.05),rgba(0,0,0,0.05));
99
+ padding: 10px;
100
+ code {
101
+ color: inherit;
102
+ }
103
+ }
104
+
105
+ sub, sup {
106
+ font-size: small;
107
+ }
108
+ sup {
109
+ vertical-align: 6px;
110
+ }
111
+ sub {
112
+ vertical-align: 0px;
113
+ }
114
+
115
+ .md-18 { font-size: 18px; }
116
+ .md-24 { font-size: 24px; }
117
+ .md-36 { font-size: 36px; }
118
+ .md-48 { font-size: 48px; }
119
+ .md-disabled { color: rgba(0,0,0,0.6); }
120
+
121
+ .buttons {
122
+ margin-bottom: 1em;
123
+ a {
124
+ text-decoration: none;
125
+ color: yellowgreen;
126
+ }
127
+ }
128
+
129
+ @mixin margin-top() {
130
+ margin-top: 100px;
131
+ }
132
+
133
+ @mixin align-middle() {
134
+ display: flex;
135
+ align-items: center;
136
+ text-decoration: none;
137
+ text-align: center;
138
+ img {
139
+ margin-right: 5px;
140
+ }
141
+ }
142
+ @mixin align-center() {
143
+ display: flex;
144
+ align-items: center;
145
+ text-decoration: none;
146
+ flex-direction: column;
147
+ }
148
+
149
+ .middle-align {
150
+ @include align-middle();
151
+ }
152
+
153
+ .center-align {
154
+ @include align-center();
155
+ }
156
+
157
+ .spacer {
158
+ margin-top: 100px;
159
+ }
160
+
161
+ footer {
162
+ @include margin-top();
163
+ @include align-center();
164
+ color: $color-dark;
165
+ font-size: 14px;
166
+ ul {
167
+ padding: 0;
168
+ display: flex;
169
+ li {
170
+ @include align-middle();
171
+ margin: 0 5px;
172
+ a {
173
+ color: $color-secondary;
174
+ }
175
+ }
176
+ }
177
+ }
178
+
179
+ article {
180
+ &.center {
181
+ @include align-center();
182
+ }
183
+ &.center img {
184
+ border-radius: 50%;
185
+ object-fit: cover;
186
+ }
187
+ &.left img {
188
+ float: left;
189
+ object-fit: cover;
190
+ margin: 5px 10px 0 0;
191
+ display: inline-block;
192
+ }
193
+ }
194
+
195
+ article.tiles {
196
+ ul {
197
+ list-style-type: none;
198
+ padding-inline-start: unset;
199
+ display: grid;
200
+ grid-gap: 1rem;
201
+ grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
202
+ li {
203
+ padding: 5px;
204
+ margin: 5px;
205
+ border-radius: 5px;
206
+ text-align: center;
207
+ background-color: $color-theme;
208
+ height: 60px;
209
+ display: flex;
210
+ align-items: center;
211
+ justify-content: center;
212
+ a {
213
+ color: $color-bg;
214
+ overflow: hidden;
215
+ text-overflow: ellipsis;
216
+ word-break: break-word;
217
+ }
218
+ sup {
219
+ vertical-align: 3px;
220
+ }
221
+ }
222
+ }
223
+ }
224
+
data/_sass/_grid.scss ADDED
@@ -0,0 +1,24 @@
1
+ $size-width: 180px;
2
+ $size-height: 180px;
3
+
4
+ ul.grid {
5
+ list-style-type: none;
6
+ padding-inline-start: unset;
7
+ display: grid;
8
+ grid-gap: 1rem;
9
+ grid-template-columns: repeat(auto-fit, minmax($size-width, 1fr));
10
+ clear: both;
11
+
12
+ li {
13
+ position: relative;
14
+ text-align: center;
15
+ .disabled {
16
+ opacity: .7;
17
+ }
18
+ }
19
+ img {
20
+ object-fit: cover;
21
+ width: 100%;
22
+ height: $size-height;
23
+ }
24
+ }
@@ -0,0 +1,35 @@
1
+ samp {
2
+ filter: blur(4px);
3
+ font-family: var(--specialFont);
4
+ font-size: 18px;
5
+ cursor: pointer;
6
+ &.on {
7
+ filter: none;
8
+ color: var(--secondaryColor);
9
+ }
10
+ }
11
+
12
+ .lesson-number {
13
+ display: flex;
14
+ align-items: center;
15
+ justify-content: center;
16
+ text-decoration: none;
17
+ padding: 7px 5px 3px 5px;
18
+ margin: 0 5px;
19
+ background-color: var(--fgColor);
20
+ font-family: var(--fontText);
21
+ color: var(--bgColor);
22
+ border-radius: 50%;
23
+ width: 25px;
24
+ height: 25px;
25
+ font-size: 16px;
26
+
27
+ &.current {
28
+ background-color: var(--secondaryColor);
29
+ }
30
+ }
31
+
32
+ a.lesson-number{
33
+ color: var(--fgColor);
34
+ background-color: var(--linkColor);
35
+ }
@@ -0,0 +1,34 @@
1
+ $size-width: 150px;
2
+
3
+ .paginator-container {
4
+ max-width: var(--contentWidth);
5
+ width: 100%;
6
+ display: flex;
7
+ justify-content: space-between;
8
+ }
9
+
10
+ .paginator {
11
+ width: $size-width;
12
+ a {
13
+ text-align: center;
14
+ display: block;
15
+ font-size: 14px;
16
+ line-height: 1.3;
17
+ }
18
+ img {
19
+ object-fit: cover;
20
+ width: 100%;
21
+ height: 100px;
22
+ }
23
+ }
24
+
25
+ .pull-left, .pull-right {
26
+ color: var(--darkColor);
27
+ display: flex;
28
+ align-items: end;
29
+ justify-content: flex-end;
30
+ }
31
+
32
+ .pull-left {
33
+ flex-direction: row-reverse;
34
+ }