askclass-course-theme 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ }