rawfeed 0.0.1 → 0.1.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 (133) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +21 -0
  3. data/README.md +153 -1
  4. data/_data/resume.yml +184 -0
  5. data/_includes/alert +3 -0
  6. data/_includes/chart +34 -0
  7. data/_includes/details +57 -0
  8. data/_includes/enddetails +2 -0
  9. data/_includes/endtabs +2 -0
  10. data/_includes/image +61 -0
  11. data/_includes/layout/blog_search.html +18 -0
  12. data/_includes/layout/data.liquid +8 -0
  13. data/_includes/layout/disqus.html +30 -0
  14. data/_includes/layout/footer.html +34 -0
  15. data/_includes/layout/giscus.html +21 -0
  16. data/_includes/layout/google_analytics.html +11 -0
  17. data/_includes/layout/head.html +59 -0
  18. data/_includes/layout/header.html +143 -0
  19. data/_includes/layout/maintenance.html +30 -0
  20. data/_includes/layout/paginator.html +35 -0
  21. data/_includes/socials +22 -0
  22. data/_includes/tabs +94 -0
  23. data/_includes/toc +160 -0
  24. data/_includes/video +10 -0
  25. data/_layouts/blog.html +46 -0
  26. data/_layouts/contact.html +285 -0
  27. data/_layouts/default.html +351 -0
  28. data/_layouts/error.html +15 -0
  29. data/_layouts/home.html +58 -0
  30. data/_layouts/page.html +9 -0
  31. data/_layouts/post.html +103 -0
  32. data/_layouts/resume.html +239 -0
  33. data/_layouts/tag.html +22 -0
  34. data/_layouts/tag_posts.html +27 -0
  35. data/_sass/base/_index.scss +63 -0
  36. data/_sass/base/_reset.scss +10 -0
  37. data/_sass/base/_typography.scss +0 -0
  38. data/_sass/components/_badges.scss +24 -0
  39. data/_sass/components/_button.scss +17 -0
  40. data/_sass/components/_forms.scss +42 -0
  41. data/_sass/components/_gifs.scss +5 -0
  42. data/_sass/components/_index.scss +5 -0
  43. data/_sass/components/_markdown.scss +454 -0
  44. data/_sass/includes/_footer.scss +45 -0
  45. data/_sass/includes/_header.scss +240 -0
  46. data/_sass/includes/_highlight.scss +87 -0
  47. data/_sass/includes/_index.scss +9 -0
  48. data/_sass/includes/_maintenance.scss +16 -0
  49. data/_sass/includes/_paginator.scss +22 -0
  50. data/_sass/includes/_rouge-dark.scss +81 -0
  51. data/_sass/includes/_rouge-light.scss +121 -0
  52. data/_sass/includes/_terminal.scss +208 -0
  53. data/_sass/layouts/_blog.scss +96 -0
  54. data/_sass/layouts/_contact.scss +55 -0
  55. data/_sass/layouts/_default.scss +14 -0
  56. data/_sass/layouts/_error.scss +18 -0
  57. data/_sass/layouts/_home.scss +19 -0
  58. data/_sass/layouts/_index.scss +10 -0
  59. data/_sass/layouts/_page.scss +5 -0
  60. data/_sass/layouts/_post.scss +109 -0
  61. data/_sass/layouts/_resume.scss +330 -0
  62. data/_sass/layouts/_tag-posts.scss +48 -0
  63. data/_sass/layouts/_tag.scss +22 -0
  64. data/_sass/main.scss +128 -0
  65. data/_sass/theme/_dark.scss +79 -0
  66. data/_sass/theme/_index.scss +13 -0
  67. data/_sass/theme/_light.scss +56 -0
  68. data/assets/css/style.scss +5 -0
  69. data/assets/images/avatar_back.png +0 -0
  70. data/assets/images/avatar_dark.png +0 -0
  71. data/assets/images/avatar_light.png +0 -0
  72. data/assets/images/favicon.png +0 -0
  73. data/assets/js/avatar.js +50 -0
  74. data/assets/js/default.js +148 -0
  75. data/assets/js/terminal.js +18 -0
  76. data/assets/js/toc.js +22 -0
  77. data/assets/json/blog_search.json +16 -0
  78. data/assets/vendor/bootstrap/css/bootstrap-grid.css +4124 -0
  79. data/assets/vendor/bootstrap/css/bootstrap-grid.css.map +1 -0
  80. data/assets/vendor/bootstrap/css/bootstrap-grid.min.css +7 -0
  81. data/assets/vendor/bootstrap/css/bootstrap-grid.min.css.map +1 -0
  82. data/assets/vendor/bootstrap/css/bootstrap-grid.rtl.css +4123 -0
  83. data/assets/vendor/bootstrap/css/bootstrap-grid.rtl.css.map +1 -0
  84. data/assets/vendor/bootstrap/css/bootstrap-grid.rtl.min.css +7 -0
  85. data/assets/vendor/bootstrap/css/bootstrap-grid.rtl.min.css.map +1 -0
  86. data/assets/vendor/bootstrap/css/bootstrap-reboot.css +488 -0
  87. data/assets/vendor/bootstrap/css/bootstrap-reboot.css.map +1 -0
  88. data/assets/vendor/bootstrap/css/bootstrap-reboot.min.css +7 -0
  89. data/assets/vendor/bootstrap/css/bootstrap-reboot.min.css.map +1 -0
  90. data/assets/vendor/bootstrap/css/bootstrap-reboot.rtl.css +485 -0
  91. data/assets/vendor/bootstrap/css/bootstrap-reboot.rtl.css.map +1 -0
  92. data/assets/vendor/bootstrap/css/bootstrap-reboot.rtl.min.css +7 -0
  93. data/assets/vendor/bootstrap/css/bootstrap-reboot.rtl.min.css.map +1 -0
  94. data/assets/vendor/bootstrap/css/bootstrap-utilities.css +4266 -0
  95. data/assets/vendor/bootstrap/css/bootstrap-utilities.css.map +1 -0
  96. data/assets/vendor/bootstrap/css/bootstrap-utilities.min.css +7 -0
  97. data/assets/vendor/bootstrap/css/bootstrap-utilities.min.css.map +1 -0
  98. data/assets/vendor/bootstrap/css/bootstrap-utilities.rtl.css +4257 -0
  99. data/assets/vendor/bootstrap/css/bootstrap-utilities.rtl.css.map +1 -0
  100. data/assets/vendor/bootstrap/css/bootstrap-utilities.rtl.min.css +7 -0
  101. data/assets/vendor/bootstrap/css/bootstrap-utilities.rtl.min.css.map +1 -0
  102. data/assets/vendor/bootstrap/css/bootstrap.css +10878 -0
  103. data/assets/vendor/bootstrap/css/bootstrap.css.map +1 -0
  104. data/assets/vendor/bootstrap/css/bootstrap.min.css +7 -0
  105. data/assets/vendor/bootstrap/css/bootstrap.min.css.map +1 -0
  106. data/assets/vendor/bootstrap/css/bootstrap.rtl.css +10842 -0
  107. data/assets/vendor/bootstrap/css/bootstrap.rtl.css.map +1 -0
  108. data/assets/vendor/bootstrap/css/bootstrap.rtl.min.css +7 -0
  109. data/assets/vendor/bootstrap/css/bootstrap.rtl.min.css.map +1 -0
  110. data/assets/vendor/bootstrap/js/bootstrap.bundle.js +7075 -0
  111. data/assets/vendor/bootstrap/js/bootstrap.bundle.js.map +1 -0
  112. data/assets/vendor/bootstrap/js/bootstrap.bundle.min.js +7 -0
  113. data/assets/vendor/bootstrap/js/bootstrap.bundle.min.js.map +1 -0
  114. data/assets/vendor/bootstrap/js/bootstrap.esm.js +5202 -0
  115. data/assets/vendor/bootstrap/js/bootstrap.esm.js.map +1 -0
  116. data/assets/vendor/bootstrap/js/bootstrap.esm.min.js +7 -0
  117. data/assets/vendor/bootstrap/js/bootstrap.esm.min.js.map +1 -0
  118. data/assets/vendor/bootstrap/js/bootstrap.js +5249 -0
  119. data/assets/vendor/bootstrap/js/bootstrap.js.map +1 -0
  120. data/assets/vendor/bootstrap/js/bootstrap.min.js +7 -0
  121. data/assets/vendor/bootstrap/js/bootstrap.min.js.map +1 -0
  122. data/assets/vendor/simple-jekyll-search.js +433 -0
  123. data/assets/vendor/simple-jekyll-search.min.js +6 -0
  124. data/lib/rawfeed/draft.rb +31 -0
  125. data/lib/rawfeed/installer.rb +37 -0
  126. data/lib/rawfeed/layout.rb +138 -0
  127. data/lib/rawfeed/page.rb +33 -0
  128. data/lib/rawfeed/post.rb +60 -0
  129. data/lib/rawfeed/resume.rb +59 -0
  130. data/lib/rawfeed/utils.rb +74 -0
  131. data/lib/rawfeed/version.rb +1 -1
  132. data/lib/rawfeed.rb +5 -7
  133. metadata +144 -2
@@ -0,0 +1,454 @@
1
+ %markdown {
2
+ text-align: justify !important;
3
+ line-height: 1.6 !important;
4
+ text-justify: inter-word !important;
5
+
6
+ h1 {
7
+ font-size: 1.8rem;
8
+ }
9
+
10
+ h2 {
11
+ font-size: 1.5rem;
12
+ }
13
+
14
+ h3 {
15
+ font-size: 1.2rem;
16
+ }
17
+
18
+ h4 {
19
+ font-size: 1rem;
20
+ }
21
+
22
+ h1,
23
+ h2,
24
+ h3,
25
+ h4 {
26
+ font-weight: bold;
27
+ margin-top: 60px;
28
+ margin-bottom: 25px;
29
+ }
30
+
31
+ p {
32
+ code {
33
+ color: var(--code-color);
34
+ }
35
+ }
36
+
37
+ blockquote {
38
+ border-left: 2px solid var(--primary-color);
39
+ padding: 15px 10px 1px 10px;
40
+ font-style: italic;
41
+ background-color: var(--blockquote-bg-color);
42
+ }
43
+
44
+ .task-list {
45
+ margin-left: 0;
46
+ padding-left: 18px;
47
+
48
+ &-item {
49
+ list-style-type: none;
50
+
51
+ &-checkbox {
52
+ position: relative;
53
+ margin-right: 9px;
54
+ margin-left: -15px;
55
+ appearance: none;
56
+ border: 8px solid var(--checkbox-border-color);
57
+ vertical-align: text-top;
58
+ z-index: -1;
59
+
60
+ &:checked::after {
61
+ border-color: var(--checkbox-border-color-after);
62
+ }
63
+
64
+ &::after {
65
+ content: "";
66
+ position: absolute;
67
+ top: -7px;
68
+ left: -3px;
69
+ width: 6px;
70
+ height: 10px;
71
+ border: solid transparent;
72
+ border-top-width: medium;
73
+ border-top-color: transparent;
74
+ border-right-width: medium;
75
+ border-right-color: transparent;
76
+ border-bottom-width: medium;
77
+ border-bottom-color: transparent;
78
+ border-left-width: medium;
79
+ border-left-color: transparent;
80
+ border-width: 0 2px 2px 0;
81
+ transform: rotate(45deg);
82
+ }
83
+ }
84
+ }
85
+ }
86
+
87
+ /* table */
88
+ table {
89
+ margin-bottom: 30px;
90
+ width: 100%;
91
+ text-align: left;
92
+ border-collapse: collapse;
93
+ color: var(--table-color);
94
+ border: 1px solid var(--table-border-color);
95
+
96
+ thead {
97
+ display: table-header-group;
98
+ vertical-align: middle;
99
+ unicode-bidi: isolate;
100
+ border-color: inherit;
101
+ }
102
+
103
+ th {
104
+ background-color: var(--table-tr-bg-color);
105
+ border: 1px solid var(--table-tr-border-color);
106
+ }
107
+
108
+ td {
109
+ border: 1px solid var(--table-td-border-color);
110
+ }
111
+
112
+ th,
113
+ td {
114
+ padding: 8px 10px;
115
+ }
116
+
117
+ tbody {
118
+ display: table-row-group;
119
+ vertical-align: middle;
120
+ unicode-bidi: isolate;
121
+ border-color: inherit;
122
+
123
+ tr:nth-child(odd) {
124
+ background-color: var(--table-tr-odd-bg-color);
125
+ }
126
+
127
+ tr:nth-child(even) {
128
+ background-color: var(--table-tr-even-bg-color);
129
+ }
130
+ }
131
+ }
132
+
133
+ /* images */
134
+ .img-include {
135
+ &-wrapper {
136
+ display: block;
137
+ max-width: 100%;
138
+ margin-bottom: 15px;
139
+ line-height: 1;
140
+
141
+ img {
142
+ display: block;
143
+ width: 100%;
144
+ height: auto;
145
+ object-fit: cover;
146
+ }
147
+
148
+ .img-include-caption {
149
+ display: block;
150
+ margin-top: 6px;
151
+ font-size: 0.85rem;
152
+ color: #777;
153
+ }
154
+ }
155
+ }
156
+
157
+ .img-include-align-left {
158
+ float: left;
159
+ margin-right: 10px;
160
+ }
161
+
162
+ .img-include-align-right {
163
+ float: right;
164
+ margin-left: 10px;
165
+ }
166
+
167
+ .img-include-align-center {
168
+ margin-left: auto;
169
+ margin-right: auto;
170
+ text-align: center;
171
+
172
+ .img-include-caption {
173
+ text-align: center;
174
+ }
175
+ }
176
+
177
+ .clearfix::after {
178
+ content: "";
179
+ display: table;
180
+ clear: both;
181
+ }
182
+
183
+ /* alerts */
184
+ .alert {
185
+ padding: 1rem;
186
+ border-radius: 0.1rem;
187
+ }
188
+
189
+ .alert.info {
190
+ background-color: #1e1e2f;
191
+ border-left: 4px solid #00bfff;
192
+ color: #cce7ff;
193
+ }
194
+
195
+ .alert.success {
196
+ background-color: #1e2f1e;
197
+ border-left: 4px solid #00ff88;
198
+ color: #b8ffb0;
199
+ }
200
+
201
+ .alert.warning {
202
+ background-color: #2f2a1e;
203
+ border-left: 4px solid #ffaa00;
204
+ color: #ffe5b0;
205
+ }
206
+
207
+ .alert.danger {
208
+ background-color: #2f1e1e;
209
+ border-left: 4px solid #ff5555;
210
+ color: #ffb0b0;
211
+ }
212
+
213
+ /* tabs */
214
+ .tabs {
215
+ &-wrap {
216
+ background: var(--tabs-bg-color);
217
+ border-radius: 0.1rem;
218
+ padding: 0.6rem;
219
+ margin: 1rem 0;
220
+ color: var(--tabs-color);
221
+ border: 1px solid var(--tabs-border-color);
222
+ }
223
+
224
+ &-nav {
225
+ display: flex;
226
+ gap: .25rem;
227
+ flex-wrap: wrap;
228
+ border-bottom: 1px solid var(--tabs-nav-border-color);
229
+ padding-bottom: .4rem;
230
+ margin-bottom: .6rem;
231
+ }
232
+ }
233
+
234
+ .tab {
235
+ &-btn {
236
+ background: none;
237
+ border: none;
238
+ color: var(--tab-btn-color);
239
+ padding: .4rem .8rem;
240
+ cursor: pointer;
241
+ border-bottom: 2px solid transparent;
242
+ font-family: inherit;
243
+ font-size: .95rem;
244
+ font-weight: 600;
245
+
246
+ &:hover {
247
+ color: var(--tab-btn-color-hover);
248
+ }
249
+
250
+ &.active {
251
+ color: var(--tab-btn-color-active);
252
+ border-bottom-color: var(--tab-btn-color-active);
253
+ font-weight: 600;
254
+ }
255
+ }
256
+
257
+ &-panel {
258
+ display: none;
259
+
260
+ &.active {
261
+ display: block;
262
+ animation: fadeIn .18s ease;
263
+ }
264
+ }
265
+ }
266
+
267
+ @keyframes fadeIn {
268
+ from {
269
+ opacity: 0
270
+ }
271
+
272
+ to {
273
+ opacity: 1
274
+ }
275
+ }
276
+
277
+ /* chart */
278
+ .chart {
279
+ max-width: 100%;
280
+ background: var(--chart-bg-color);
281
+ padding: 1rem;
282
+ border-radius: .1rem;
283
+ color: var(--text-color);
284
+ box-shadow: 0 0 10px var(--chart-box-shadow-color);
285
+ }
286
+
287
+ #chart-sales {
288
+ color: var(--text-color) !important;
289
+ }
290
+
291
+ /* toc/sumary */
292
+ .toc {
293
+ padding: 1rem 2rem;
294
+ margin: 1rem 0;
295
+ background: var(--sumary-bg-color);
296
+ color: var(--text-color);
297
+ border: 1px solid var(--border-color);
298
+ box-shadow: 0 2px 8px var(--shadow-color);
299
+ margin-bottom: 80px;
300
+
301
+ &-fixed {
302
+ position: fixed;
303
+ top: 0;
304
+ left: 0;
305
+ overflow: hidden;
306
+ display: flex;
307
+ flex-direction: column;
308
+ z-index: 9999;
309
+ min-width: 520px !important;
310
+ max-width: 780px;
311
+ width: auto !important;
312
+ margin: 0 auto;
313
+ max-height: 100vh;
314
+ }
315
+
316
+ &-head {
317
+ display: flex;
318
+ align-items: center;
319
+ justify-content: space-between;
320
+ }
321
+
322
+ h2 {
323
+ margin: 0;
324
+ font-size: 1rem;
325
+ color: var(--text-color);
326
+ }
327
+
328
+ &-toggle {
329
+ background: none;
330
+ border: 0;
331
+ color: var(--primary-color);
332
+ font-weight: bold;
333
+ text-decoration: underline;
334
+ cursor: pointer;
335
+
336
+ &:hover {
337
+ color: var(--text-color);
338
+ }
339
+ }
340
+
341
+ &-list-wrapper {
342
+ flex: 1;
343
+ overflow-y: auto;
344
+ padding-right: 6px;
345
+
346
+ &::-webkit-scrollbar {
347
+ width: 6px;
348
+ }
349
+
350
+ &::-webkit-scrollbar-thumb {
351
+ background: var(--text-color);
352
+ border-radius: 4px;
353
+ }
354
+ }
355
+
356
+ &-list {
357
+ list-style: none;
358
+ padding-left: 0;
359
+ margin: 0;
360
+
361
+ ul {
362
+ padding-left: 1.2em;
363
+ margin-top: 0.3em;
364
+ border-left: 1px solid var(--border-color);
365
+ }
366
+
367
+ li {
368
+ margin: 0.25em 0;
369
+ }
370
+
371
+ a {
372
+ text-decoration: none;
373
+ color: var(--primary-color);
374
+ font-weight: bold;
375
+ text-decoration: underline;
376
+ opacity: 0.9;
377
+
378
+ &:hover {
379
+ color: var(--text-color);
380
+ }
381
+
382
+ &:active {
383
+ font-weight: bold;
384
+ color: var(--text-color);
385
+ }
386
+ }
387
+ }
388
+ }
389
+
390
+ /* video youtube */
391
+ .video-wrapper {
392
+ position: relative;
393
+ padding-bottom: 56.25%;
394
+ /* 16:9 ratio */
395
+ height: 0;
396
+ overflow: hidden;
397
+ margin: 1rem 0;
398
+ border: 3px solid var(--video-border-color);
399
+ border-radius: 0.1rem;
400
+ }
401
+
402
+ .video-wrapper iframe {
403
+ position: absolute;
404
+ top: 0;
405
+ left: 0;
406
+ width: 100%;
407
+ height: 100%;
408
+ border: none;
409
+ }
410
+
411
+ /* details */
412
+ details {
413
+ background: var(--details-bg-color);
414
+ border: 1px solid var(--border-color);
415
+ padding: .8rem 1rem;
416
+ margin: 1rem 0;
417
+ transition: all .25s ease;
418
+ width: 100%;
419
+ color: var(--text-color);
420
+
421
+ summary {
422
+ cursor: pointer;
423
+ font-weight: 600;
424
+ color: var(--primary-color);
425
+ list-style: none;
426
+ position: relative;
427
+ padding-left: 1.2rem;
428
+
429
+ &::before {
430
+ content: "▸";
431
+ position: absolute;
432
+ left: 0;
433
+ transition: transform .2s ease;
434
+ }
435
+ }
436
+ }
437
+
438
+ .details-content-wrapper {
439
+ margin-top: 30px;
440
+ }
441
+
442
+ details details summary details[open] summary::before {
443
+ transform: rotate(90deg);
444
+ }
445
+
446
+ details[open] {
447
+ background: var(--details-bg-color);
448
+ border-color: var(--border-color);
449
+ }
450
+
451
+ details p:last-child {
452
+ margin-bottom: 0px;
453
+ }
454
+ }
@@ -0,0 +1,45 @@
1
+ .footer {
2
+ color: var(--text-color) !important;
3
+ font-size: .8rem;
4
+
5
+ &-wrapper {
6
+ height: 24px;
7
+ padding-top: 5px;
8
+ border-top: 1px solid var(--footer-border-color);
9
+ background-color: var(--footer-bg-color);
10
+ }
11
+
12
+ .top {
13
+ background-color: transparent;
14
+ margin-bottom: 5px;
15
+ margin-right: 2px;
16
+ @media (max-width: 1040px) {
17
+ display: none;
18
+ }
19
+ &-link {
20
+ font-size: 3rem;
21
+ display: none;
22
+ text-decoration: none !important;
23
+ z-index: 99;
24
+ }
25
+ }
26
+
27
+ &-copyright {
28
+ text-align: left;
29
+ @media (max-width: 400px) {
30
+ text-align: center !important;
31
+ }
32
+ }
33
+ &-message {
34
+ text-align: center;
35
+ @media (max-width: 1040px) {
36
+ display: none;
37
+ }
38
+ }
39
+ &-made-by {
40
+ text-align: right;
41
+ @media (max-width: 400px) {
42
+ display: none;
43
+ }
44
+ }
45
+ }
@@ -0,0 +1,240 @@
1
+ @use "../components/index";
2
+
3
+ @keyframes flip-coin {
4
+ 0% {
5
+ transform: rotateY(0deg) scale(1);
6
+ }
7
+
8
+ 50% {
9
+ transform: rotateY(90deg) scale(0.8);
10
+ opacity: 0.5;
11
+ }
12
+
13
+ 100% {
14
+ transform: rotateY(180deg) scale(0.6);
15
+ opacity: 0;
16
+ }
17
+ }
18
+
19
+ @keyframes appear {
20
+ 0% {
21
+ transform: rotateY(180deg) scale(0.6);
22
+ opacity: 0;
23
+ }
24
+
25
+ 50% {
26
+ transform: rotateY(270deg) scale(0.8);
27
+ opacity: 0.5;
28
+ }
29
+
30
+ 100% {
31
+ transform: rotateY(360deg) scale(1);
32
+ opacity: 1;
33
+ }
34
+ }
35
+
36
+ .menu-active {
37
+ color: var(--text-color) !important;
38
+ text-decoration: none !important;
39
+ border-bottom: 1px solid var(--text-color);
40
+ }
41
+
42
+ .header {
43
+ margin: 20px 0px 30px 0px;
44
+ transition: margin 0.3s ease;
45
+
46
+ .menu-separator {
47
+ margin-top: 5px;
48
+ border-bottom: 2px dotted var(--text-color);
49
+ width: 100% !important;
50
+ }
51
+
52
+ span {
53
+ font-weight: bold;
54
+ }
55
+
56
+ .column-center {
57
+ @media (max-width: 400px) {
58
+ max-width: 399px;
59
+ justify-content: end !important;
60
+ position: absolute;
61
+ float: right;
62
+ right: 0;
63
+ }
64
+ }
65
+
66
+ .blog-menu {
67
+ button {
68
+ @extend %button;
69
+ }
70
+
71
+ &__link {
72
+ margin: 0 !important;
73
+ }
74
+ }
75
+
76
+ .column-bottom {
77
+ margin-top: 5px;
78
+ }
79
+
80
+ .title {
81
+ text-align: center;
82
+ font-weight: bold !important;
83
+ color: var(--text-color);
84
+ }
85
+
86
+ .description {
87
+ text-align: center;
88
+ color: var(--text-muted-color);
89
+ font-weight: normal !important;
90
+ font-family: "SUSE Mono", sans-serif;
91
+ }
92
+
93
+ a {
94
+ font-weight: bold;
95
+ text-decoration: underline;
96
+ // margin: 0px 5px;
97
+ }
98
+
99
+
100
+ // O contêiner que reage ao hover
101
+
102
+
103
+ .avatar {
104
+ &-wrapper {
105
+ // Define a perspectiva para o efeito 3D
106
+ perspective: 1000px;
107
+ }
108
+
109
+ &-img {
110
+ border: 2px dotted var(--primary-color);
111
+ border-radius: 10%;
112
+ margin-bottom: 5px;
113
+ cursor: pointer !important;
114
+
115
+ &__open-true {
116
+ object-fit: cover;
117
+ transition: transform 0.3s ease;
118
+ transition: opacity 0.4s ease;
119
+
120
+ &:hover {
121
+ transform: scale(1.05);
122
+ }
123
+
124
+ &.hidden {
125
+ opacity: 0;
126
+ visibility: hidden;
127
+ }
128
+ }
129
+ }
130
+
131
+ &-flipper {
132
+ width: 70px;
133
+ height: 70px;
134
+ position: relative;
135
+
136
+ // Hides the dark theme avatar by default
137
+ &.dark-theme {
138
+ display: none;
139
+ }
140
+
141
+ // Hover logic: Rotates the card when you hover the mouse over the flipper
142
+ &.can-flip:hover {
143
+ .avatar-card {
144
+ transform: rotateY(180deg);
145
+ }
146
+ }
147
+ }
148
+
149
+ &-card {
150
+ width: 100%;
151
+ height: 100%;
152
+ position: relative;
153
+ transition: transform 0.6s;
154
+ transform-style: preserve-3d; // Enables 3D space
155
+ }
156
+
157
+ // Styles for the front and back
158
+ &-front,
159
+ &-back {
160
+ position: absolute;
161
+ width: 100%;
162
+ height: 100%;
163
+ -webkit-backface-visibility: hidden; // Prevents the back of the element from being visible
164
+ backface-visibility: hidden;
165
+ }
166
+
167
+ // The verse starts already turned
168
+ &-back {
169
+ transform: rotateY(180deg);
170
+ }
171
+
172
+ // disable for mobile
173
+ @media (max-width: 578px) {
174
+ display: none !important;
175
+ }
176
+ }
177
+
178
+ .fa-sun {
179
+ color: white;
180
+ }
181
+
182
+ .fa-moon {
183
+ color: black;
184
+ }
185
+
186
+ .fa-sun,
187
+ .fa-moon {
188
+ cursor: pointer !important;
189
+ font-size: 1.1rem;
190
+ }
191
+
192
+ a {
193
+ // all link menu in lowercase
194
+ text-transform: lowercase !important;
195
+ }
196
+ }
197
+
198
+ // toggle avatar
199
+ #avatarImgDark {
200
+ display: none;
201
+ }
202
+
203
+ [data-theme="dark"] #avatarImgLight {
204
+ display: none;
205
+ }
206
+
207
+ [data-theme="dark"] #avatarImgDark {
208
+ display: inline-block;
209
+ }
210
+
211
+ // modal avatar
212
+ .flip-avatar {
213
+ animation: flip-coin 0.6s forwards;
214
+ }
215
+
216
+ .modal-avatar {
217
+ max-width: 90vw;
218
+ max-height: 80vh;
219
+ border-radius: 12px;
220
+ animation: appear 0.6s ease forwards;
221
+ transform: rotateY(180deg) scale(0.6);
222
+ opacity: 0;
223
+ border: 4px dotted var(--text-color);
224
+ }
225
+
226
+ [data-theme="dark"] {
227
+ .avatar {
228
+ &-flipper {
229
+ &.light-theme {
230
+ display: none;
231
+ }
232
+ }
233
+
234
+ &-flipper {
235
+ &.dark-theme {
236
+ display: block;
237
+ }
238
+ }
239
+ }
240
+ }