coppermind 0.1.2 → 2.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e34ba52e9a2070fb0c765a966467c93fee14a091dacbb7d96f15e2f25ad6edc0
4
- data.tar.gz: 266e15cfcb233c225daee40ba592f79dcef9b495bd956f039297abc2796bee49
3
+ metadata.gz: d85311b5f847dd20ebc63db72f8efc2525074715d54ebf76d1d9b1732af17303
4
+ data.tar.gz: 1f0b0cc4e492500878c5bafff2146ea220719c3ebd2753e78117e63fba0cc546
5
5
  SHA512:
6
- metadata.gz: a7321e170df3cf2f27aeb0953fd34acd6b35b1a4868e3795c2b5ace29dd4fa8b37926299a425c6b424aa866335e12ab6eff2779d3b4abac3329c1f8e8b28f632
7
- data.tar.gz: 01d03cdddfb9ea7f0b14dc969511e0d8ab4876f339aacafb9911dce3219840b4759270089b6f7856f87f3930abd8d2ec730289c4498f5dd1829ed5b91d3f4969
6
+ metadata.gz: 6223994aba02357d888488e8152040b796c5d2e819b5633a66013bcb8410415b965724f6fe9df87ca972b943200e6e3ff1726ea0a2d064e2eb7ea03d38c12545
7
+ data.tar.gz: da4614c409421179969f7e37a360b1c698e620038aae0100280eaf40882ebe04c846ca558ed266141913e803577101d3a3bf6decf9f66426e7d189dc5a9f2331
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2021 Jesse Williamson
4
+ Copyright (c) 2021 Song-Zi Vong
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in
14
+ all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Coppermind <!-- omit in toc -->
2
+
3
+ Coppermind is a minimal, suckless jekyll theme built upon monophase.
data/_config.yml ADDED
@@ -0,0 +1,45 @@
1
+ # Welcome to Jekyll!
2
+ #
3
+ # This config file is meant for settings that affect your whole blog, values
4
+ # which you are expected to set up once and rarely edit after that. If you find
5
+ # yourself editing this file very often, consider using Jekyll's data files
6
+ # feature for the data you need to update frequently.
7
+ #
8
+ # For technical reasons, this file is *NOT* reloaded automatically when you use
9
+ # 'bundle exec jekyll serve'. If you change this file, please restart the server process.
10
+
11
+ # Site settings
12
+ # These are used to personalize your new site. If you look in the HTML files,
13
+ # you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
14
+ # You can create any custom variable you would like, and they will be accessible
15
+ # in the templates via {{ site.myvariable }}.
16
+ title: Coppermind
17
+ tagline:
18
+ author:
19
+ name: Jesse Williamson
20
+
21
+ # Build settings
22
+ markdown: kramdown
23
+ plugins:
24
+ - jekyll-feed
25
+ - jekyll-paginate
26
+ - jekyll-seo-tag
27
+ - kramdown-parser-gfm
28
+
29
+ paginate: 2
30
+
31
+ tags_path: /tags/
32
+ categories_path: /categories/
33
+
34
+
35
+ # Exclude from processing.
36
+ # The following items will not be processed, by default. Create a custom list
37
+ # to override the default setting.
38
+ # exclude:
39
+ # - Gemfile
40
+ # - Gemfile.lock
41
+ # - node_modules
42
+ # - vendor/bundle/
43
+ # - vendor/cache/
44
+ # - vendor/gems/
45
+ # - vendor/ruby/
@@ -0,0 +1,71 @@
1
+ {%- if page.type == 'categories' -%}
2
+ {%- assign taxonomies = site.categories -%}
3
+ {%- elsif page.type == 'tags' -%}
4
+ {%- assign taxonomies = site.tags -%}
5
+ {%- else -%}
6
+ {%- assign taxonomies = none -%}
7
+ {%- endif -%}
8
+
9
+ {%- assign max_count = 0 -%}
10
+ {%- for taxonomy in taxonomies -%}
11
+ {%- assign posts = taxonomy[1] -%}
12
+ {%- if posts.size > max_count -%}
13
+ {%- assign max_count = posts.size -%}
14
+ {%- endif -%}
15
+ {%- endfor -%}
16
+
17
+ <div class="taxonomies-wrapper">
18
+ <ul class="taxonomies">
19
+ {%- for i in (1..max_count) reversed -%}
20
+ {%- for taxonomy in taxonomies -%}
21
+ {%- assign taxonomy_name = taxonomy[0] -%}
22
+ {%- assign slugified_taxonomy_name = taxonomy_name | slugify -%}
23
+ {%- assign posts = taxonomy[1] -%}
24
+ {%- if posts.size == i -%}
25
+ <li>
26
+ {%- capture link -%}{{ page.permalink }}#{{ slugified_taxonomy_name }}{%- endcapture -%}
27
+ <a class="taxonomy" href="{{ link | relative_url }}">
28
+ <span>
29
+ {%- if page.type == 'tags' -%}
30
+ {{ slugified_taxonomy_name }}
31
+ {%- else -%}
32
+ {{ taxonomy_name }}
33
+ {%- endif -%}
34
+ </span>
35
+ <span class="taxonomy-count">{{ posts.size }}</span>
36
+ </a>
37
+ </li>
38
+ {%- endif -%}
39
+ {%- endfor -%}
40
+ {%- endfor -%}
41
+ </ul>
42
+ </div>
43
+
44
+ {%- for i in (1..max_count) reversed -%}
45
+ {%- for taxonomy in taxonomies -%}
46
+ {%- assign taxonomy_name = taxonomy[0] -%}
47
+ {%- assign slugified_taxonomy_name = taxonomy_name | slugify -%}
48
+ {%- assign posts = taxonomy[1] -%}
49
+ {%- if posts.size == i -%}
50
+ <h2 id="{{ slugified_taxonomy_name }}">
51
+ {%- if page.type == 'tags' -%}
52
+ {{ slugified_taxonomy_name }}
53
+ {%- else -%}
54
+ {{ taxonomy_name }}
55
+ {%- endif -%}
56
+ </h2>
57
+ <ul class="post-list-by-taxonomy">
58
+ {%- for post in posts -%}
59
+ <li>
60
+ <time datetime="{{ page.date | date_to_xmlschema }}">{{ post.date | date: "%Y-%m-%d" }}</time>
61
+ &raquo;
62
+ <a href="{{ post.url | relative_url }}">{{ post.title | escape }}</a>
63
+ </li>
64
+ {%- endfor -%}
65
+ </ul>
66
+ <a href="#" onclick="backToTop()" class="back-to-top">^</a>
67
+ {%- endif -%}
68
+ {%- endfor -%}
69
+ {%- endfor -%}
70
+
71
+ {% include back-to-top.html %}
@@ -0,0 +1,32 @@
1
+ {% assign taxonomies = site.posts | group_by_exp: "post", "post.date | date: '%Y'" %}
2
+
3
+ <div class="taxonomies-wrapper">
4
+ <ul class="taxonomies">
5
+ {%- for taxonomy in taxonomies -%}
6
+ <li>
7
+ {%- capture link -%}{{ page.permalink }}#{{ taxonomy.name }}{%- endcapture -%}
8
+ <a class="taxonomy" href="{{ link | relative_url }}">
9
+ <span>{{ taxonomy.name }}</span>
10
+ <span class="taxonomy-count">{{ taxonomy.size }}</span>
11
+ </a>
12
+ </li>
13
+ {%- endfor -%}
14
+ </ul>
15
+ </div>
16
+
17
+ {%- for taxonomy in taxonomies -%}
18
+ <h2 id="{{ taxonomy.name }}">{{ taxonomy.name }}</h2>
19
+ <ul class="post-list-by-taxonomy">
20
+ {%- assign posts = taxonomy.items -%}
21
+ {%- for post in posts -%}
22
+ <li>
23
+ <time datetime="{{ page.date | date_to_xmlschema }}">{{ post.date | date: "%Y-%m-%d" }}</time>
24
+ &raquo;
25
+ <a href="{{ post.url | relative_url }}">{{ post.title | escape }}</a>
26
+ </li>
27
+ {%- endfor -%}
28
+ </ul>
29
+ <a href="#" onclick="backToTop()" class="back-to-top">^</a>
30
+ {%- endfor -%}
31
+
32
+ {% include back-to-top.html %}
@@ -0,0 +1,6 @@
1
+ <script>
2
+ function backToTop() {
3
+ const main = document.getElementById("site-main");
4
+ main.scrollTop = 0;
5
+ }
6
+ </script>
@@ -0,0 +1,6 @@
1
+ {% comment %}
2
+ Placeholder to allow defining custom head, in principle, you can add anything here, e.g. favicons:
3
+
4
+ 1. Head over to https://realfavicongenerator.net/ to add your own favicons.
5
+ 2. Customize default _includes/custom-head.html in your source directory and insert the given code snippet.
6
+ {% endcomment %}
@@ -0,0 +1,17 @@
1
+ <div id="disqus_thread"></div>
2
+ <script>
3
+ var disqus_config = function () {
4
+ this.page.url = '{{ page.url | absolute_url }}';
5
+ this.page.identifier = '{{ page.url | absolute_url }}';
6
+ };
7
+
8
+ (function() {
9
+ var d = document, s = d.createElement('script');
10
+
11
+ s.src = 'https://{{ site.disqus }}.disqus.com/embed.js';
12
+
13
+ s.setAttribute('data-timestamp', +new Date());
14
+ (d.head || d.body).appendChild(s);
15
+ })();
16
+ </script>
17
+ <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
@@ -0,0 +1,39 @@
1
+ <footer class="footer">
2
+ <div class="footer-column">
3
+ <p>
4
+ <small>
5
+ &copy;&nbsp;
6
+ {%- assign date_from = site.posts[-1].date | date_to_xmlschema -%}
7
+ {%- assign year_from = date_from | date: '%Y' -%}
8
+ {%- assign date_to = site.time | date_to_xmlschema -%}
9
+ {%- assign year_to = date_to | date: '%Y' -%}
10
+ {%- unless year_from == nil or year_from == year_to -%}
11
+ <time datetime="{{ date_from }}">{{ year_from }}</time>-
12
+ {%- endunless -%}
13
+ <time datetime="{{ date_to }}">{{ year_to }}</time>
14
+ {%- if site.author -%}
15
+ &nbsp;<a href="{{ site.author.url }}" target="_blank">{{ site.author.name }}</a>
16
+ {%- endif -%}
17
+ . All right reserved.
18
+ </small>
19
+ </p>
20
+ <p>
21
+ <small>
22
+ Powered by <a href="https://github.com/JustSoval/Coppermind" target="_blank">Coppermind</a>
23
+ </small>
24
+ </p>
25
+ </div>
26
+ {% if site.data.social %}
27
+ <div class="footer-column">
28
+ <ul class="social-icons">
29
+ {% for social in site.data.social %}
30
+ <li class="social-icon-item">
31
+ <a class="social-icon" href="{{ social.url }}" target="_blank">
32
+ <i class="{{ social.icon | default: 'fas fa-link' }}" title="{{ social.title }}"></i>
33
+ </a>
34
+ </li>
35
+ {% endfor %}
36
+ </ul>
37
+ </div>
38
+ {% endif %}
39
+ </footer>
@@ -0,0 +1,9 @@
1
+ <!-- Global site tag (gtag.js) - Google Analytics -->
2
+ <script async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}"></script>
3
+ <script>
4
+ window.dataLayer = window.dataLayer || [];
5
+ function gtag(){dataLayer.push(arguments);}
6
+ gtag('js', new Date());
7
+
8
+ gtag('config', '{{ site.google_analytics }}');
9
+ </script>
@@ -0,0 +1,13 @@
1
+ <head>
2
+ <meta charset="UTF-8">
3
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
4
+ <link rel="stylesheet" href="{{ 'assets/normalize.css' | relative_url }}">
5
+ <link rel="stylesheet" href="{{ 'assets/open-color.css' | relative_url }}">
6
+ <link rel="stylesheet" href="{{ 'assets/monophase/styles.css' | relative_url }}">
7
+ {% feed_meta %}
8
+ {% seo %}
9
+
10
+ <script async src="https://use.fontawesome.com/releases/v5.0.12/js/all.js"></script>
11
+
12
+ {% include custom-head.html %}
13
+ </head>
@@ -0,0 +1,20 @@
1
+ <header class="masthead">
2
+ <div class="masthead-title">
3
+ <a href="{{ '/' | relative_url }}" title="Home">{{ site.title }}</a>
4
+ <small class="tagline">{{ site.tagline }}</small>
5
+ </div>
6
+
7
+ {% if site.data.navigation %}
8
+ <nav class="nav">
9
+ <ul class="nav-list">
10
+ {% for item in site.data.navigation %}
11
+ <li class="nav-item">
12
+ <a href="{{ item.url | relative_url }}" class="{% if page.url == item.url %}current{% endif %}">
13
+ {{ item.title }}
14
+ </a>
15
+ </li>
16
+ {% endfor %}
17
+ </ul>
18
+ </nav>
19
+ {% endif %}
20
+ </header>
@@ -0,0 +1,2 @@
1
+ <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
2
+ <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
@@ -0,0 +1,15 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <article>
6
+ <h1>{{ page.title }}</h1>
7
+
8
+ {{ content }}
9
+
10
+ {% if page.type == "years" %}
11
+ {% include archive-by-years.html %}
12
+ {% else %}
13
+ {% include archive-by-tagories.html %}
14
+ {% endif %}
15
+ </article>
@@ -0,0 +1,23 @@
1
+ <!DOCTYPE html>
2
+ <html lang="{{ page.lang | default: site.lang | default: 'en' }}">
3
+ {% include head.html %}
4
+ <body>
5
+ <div class="container">
6
+ {% include header.html %}
7
+
8
+ <main>
9
+ {{ content }}
10
+ </main>
11
+
12
+ {% include footer.html %}
13
+ </div>
14
+
15
+ {% if page.math %}
16
+ {% include mathjax.html %}
17
+ {% endif %}
18
+
19
+ {% if jekyll.environment == 'production' and site.google_analytics %}
20
+ {% include google-analytics.html %}
21
+ {% endif %}
22
+ </body>
23
+ </html>
@@ -0,0 +1,44 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <div class="posts">
6
+ {% assign posts = site.posts %}
7
+ {% if paginator %}
8
+ {% assign posts = paginator.posts %}
9
+ {% endif %}
10
+ {% for post in posts %}
11
+ <div class="post">
12
+ <h2 class="post-title">
13
+ <a href="{{ post.url | relative_url }}">
14
+ {{ post.title }}
15
+ </a>
16
+ </h2>
17
+
18
+ <time datetime="{{ post.date | date_to_xmlschema }}" class="post-meta">{{ post.date | date_to_string }}</time>
19
+
20
+ <p class="post-excerpt">
21
+ {% if post.description %}
22
+ {{ post.description | strip_html }}
23
+ {% else %}
24
+ {{ post.excerpt | strip_html }}
25
+ {% endif %}
26
+ </p>
27
+ </div>
28
+ {% endfor %}
29
+ </div>
30
+
31
+ {% if paginator %}
32
+ <div class="pagination">
33
+ {% if paginator.next_page %}
34
+ <a class="pagination-item older" href="{{ paginator.next_page_path | relative_url }}">Older</a>
35
+ {% else %}
36
+ <span class="pagination-item older">Older</span>
37
+ {% endif %}
38
+ {% if paginator.previous_page %}
39
+ <a class="pagination-item newer" href="{{ paginator.previous_page_path | relative_url }}">Newer</a>
40
+ {% else %}
41
+ <span class="pagination-item newer">Newer</span>
42
+ {% endif %}
43
+ </div>
44
+ {% endif %}
@@ -0,0 +1,8 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <article class="page">
6
+ <h1 class="page-title">{{ page.title }}</h1>
7
+ {{ content }}
8
+ </article>
@@ -0,0 +1,86 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <article class="post">
6
+ <h1 class="post-title">{{ page.title }}</h1>
7
+ <div class="post-meta">
8
+ <time datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">
9
+ {{ page.date | date_to_string }}
10
+ </time>
11
+ {%- if page.last_modified_at -%}
12
+ <span> ~ </span>
13
+ {%- assign mdate = page.last_modified_at | date_to_xmlschema -%}
14
+ <time datetime="{{ mdate }}" itemprop="dateModified">
15
+ {{ mdate | date_to_string }}
16
+ </time>
17
+ {%- endif -%}
18
+ {%- if page.author -%}
19
+ <span> • </span>
20
+ {% for author in page.author %}
21
+ <span itemprop="author" itemscope itemtype="http://schema.org/Person">
22
+ {{ author }}
23
+ </span>
24
+ {%- if forloop.last == false %}, {% endif -%}
25
+ {% endfor %}
26
+ {%- endif -%}
27
+ {% if page.categories.size > 0 %}
28
+ <span> • </span>
29
+ <span class="post-categories-section">
30
+ <i class="post-categories-icon fas fa-folder"></i>
31
+ <ul class="post-categories">
32
+ {%- for category in page.categories -%}
33
+ <li>
34
+ {% assign slugified_category = category | slugify %}
35
+ {%- if site.categories_path -%}
36
+ <a class="post-category" href="{{ site.categories_path | relative_url }}#{{ slugified_category }}">{{ category }}</a>
37
+ {%- else -%}
38
+ <span class="post-category">{{ category }}</span>
39
+ {%- endif -%}
40
+ </li>
41
+ {%- endfor -%}
42
+ </ul>
43
+ </span>
44
+ {% endif %}
45
+ {% if page.tags.size > 0 %}
46
+ <span> • </span>
47
+ <span class="post-tags-section">
48
+ <i class="post-tags-icon fas fa-tag"></i>
49
+ <ul class="post-tags">
50
+ {%- for tag in page.tags -%}
51
+ <li>
52
+ {% assign slugified_tag = tag | slugify %}
53
+ {%- if site.tags_path -%}
54
+ <a class="post-tag" href="{{ site.tags_path | relative_url }}#{{ slugified_tag }}">{{ slugified_tag }}</a>
55
+ {%- else -%}
56
+ <span class="post-tag">{{ slugified_tag }}</span>
57
+ {%- endif -%}
58
+ </li>
59
+ {%- endfor -%}
60
+ </ul>
61
+ </span>
62
+ {% endif %}
63
+ </div>
64
+
65
+ {{ content }}
66
+
67
+ {% if jekyll.environment == "production" and site.disqus and page.comments != false %}
68
+ {% include disqus.html %}
69
+ {% endif %}
70
+ </article>
71
+
72
+ {% if site.related_posts != empty %}
73
+ <aside class="related">
74
+ <h2 class="related-title">Related posts</h2>
75
+ <ul class="related-posts">
76
+ {% for post in site.related_posts limit:3 %}
77
+ <li>
78
+ <a href="{{ post.url | relative_url }}">
79
+ {{ post.title }}
80
+ </a>
81
+ <small><time datetime="{{ post.date | date_to_xmlschema }}">{{ post.date | date_to_string }}</time></small>
82
+ </li>
83
+ {% endfor %}
84
+ </ul>
85
+ </aside>
86
+ {% endif %}
@@ -0,0 +1,128 @@
1
+ * {
2
+ box-sizing: border-box;
3
+ }
4
+
5
+ body {
6
+ color: var(--body-color);
7
+ background-color: var(--body-bg-color);
8
+ font-family: var(--body-font-family);
9
+ font-size: var(--body-font-size);
10
+ line-height: var(--body-line-height);
11
+ }
12
+
13
+ a {
14
+ color: var(--link-color);
15
+ text-decoration: none;
16
+
17
+ &:hover,
18
+ &:focus {
19
+ color: var(--link-hover-color);
20
+ text-decoration: underline;
21
+ }
22
+ }
23
+
24
+ p {
25
+ margin-top: 0;
26
+ margin-bottom: var(--spacer);
27
+ }
28
+
29
+ ul, ol, dl {
30
+ margin-top: 0;
31
+ margin-bottom: var(--spacer);
32
+ }
33
+
34
+ blockquote {
35
+ padding: 0 var(--spacer);
36
+ margin: 0 0 var(--spacer) 0;
37
+ border-left: .25em solid var(--border-color);
38
+ opacity: .65;
39
+ }
40
+
41
+ figure {
42
+ margin: 0;
43
+ }
44
+
45
+ figcaption {
46
+ margin-bottom: var(--spacer);
47
+ font-size: .85em;
48
+ }
49
+
50
+ img {
51
+ display: block;
52
+ max-width: 100%;
53
+ margin-top: 0;
54
+ margin-bottom: var(--spacer);
55
+ border-radius: var(--border-radius);
56
+ }
57
+
58
+ code,
59
+ pre {
60
+ font-family: var(--code-font-family);
61
+ }
62
+
63
+ code {
64
+ padding: .1em .25em;
65
+ background-color: var(--code-bg-color);
66
+ border-radius: var(--border-radius);
67
+ }
68
+
69
+ pre {
70
+ display: block;
71
+ overflow: auto;
72
+ padding: var(--spacer);
73
+ margin: var(--spacer) 0;
74
+
75
+ code {
76
+ padding: 0;
77
+ background-color: inherit;
78
+ }
79
+ }
80
+
81
+ table {
82
+ margin-top: 0;
83
+ margin-bottom: var(--spacer);
84
+ width: 100%;
85
+ border: 0 solid var(--border-color);
86
+ border-collapse: collapse;
87
+ }
88
+
89
+ td,
90
+ th {
91
+ padding: .25em .5em;
92
+ border-color: inherit;
93
+ border-style: solid;
94
+ border-width: 0;
95
+ border-bottom-width: 1px;
96
+ }
97
+
98
+ th {
99
+ text-align: left;
100
+ }
101
+
102
+ thead th {
103
+ border-bottom-color: currentColor;
104
+ }
105
+
106
+ mark {
107
+ padding: .15em;
108
+ border-radius: var(--border-radius);
109
+ color: var(--body-bg-color);
110
+ background-color: var(--info-color);
111
+ }
112
+
113
+ hr {
114
+ position: relative;
115
+ margin: var(--spacer-2) 0;
116
+ border: 0;
117
+ border-top: 1px solid var(--border-color);
118
+ }
119
+
120
+ abbr {
121
+ font-weight: bold;
122
+ text-transform: uppercase;
123
+
124
+ &[title] {
125
+ cursor: help;
126
+ border-bottom: 1px dotted var(--border-color);
127
+ }
128
+ }