- added special templates option per category - changed layout for journal/articles: single page, per year grouping - adaptimg wide view
jump to
@@ -196,9 +196,17 @@ taxonomy = 'category'
def __init__(self, name=''): self.name = name + self.topics = NoDupeContainer() super().__init__() def append(self, post): + if len(post.tags) == 1: + topic = post.tags[0] + if topic not in self.topics: + t = NoDupeContainer() + self.topics.append(topic, t) + t = self.topics[topic] + t.append(post.pubtime, post) return super().append(post.pubtime, post) @property@@ -223,6 +231,19 @@ shared.config.get('common', 'domain')
]) @property + def is_altrender(self): + return os.path.exists( + os.path.join( + shared.config.get('dirs', 'tmpl'), + "%s_%s.html" % ( + self.__class__.__name__, + self.name + ) + ) + ) + + + @property def url(self): if self.name: url = "/%s/%s/" % (@@ -253,7 +274,70 @@ if not os.path.isdir(x):
os.makedirs(x) return x - def write_feed(self, posttmpls): + def write_html(self, path, content): + with open(path, 'wt') as out: + logging.debug('writing file %s', path) + out.write(content) + os.utime(path, (self.mtime, self.mtime)) + + + async def render(self): + if self.is_altrender: + self.render_onepage() + else: + self.render_paginated() + self.render_feed() + + def render_onepage(self): + years = {} + for k in list(sorted(self.data.keys(), reverse=True)): + post = self.data[k] + year = int(arrow.get(post.pubtime).format('YYYY')) + if year not in years: + years.update({year: []}) + years[year].append(post.tmplvars) + + tmplvars = { + 'taxonomy': { + 'title': self.title, + 'name': self.name, + 'lastmod': arrow.get(self.mtime).format( + shared.ARROWFORMAT['rcf'] + ), + 'url': self.url, + 'feed': "%s/%s/" % ( + self.url, + shared.config.get('site', 'feed') + ), + }, + 'site': shared.site, + 'by_year': years + } + dirname = self.path_paged(1) + o = os.path.join(dirname, self.indexfile) + logging.info( + "Rendering category %s to %s", + self.name, + o + ) + tmplfile = "%s_%s.html" % ( + self.__class__.__name__, + self.name + ) + r = shared.j2.get_template(tmplfile).render(tmplvars) + self.write_html(o, r) + + + def render_feed(self): + start = 0 + end = int(shared.config.getint('display', 'pagination')) + posttmpls = [ + self.data[k].tmplvars + for k in list(sorted( + self.data.keys(), + reverse=True + ))[start:end] + ] dirname = self.path_paged(1, feed=True) o = os.path.join(dirname, self.feedfile) logging.info(@@ -311,13 +395,7 @@ }
) logging.info(r.text) - def write_html(self, path, content): - with open(path, 'wt') as out: - logging.debug('writing file %s', path) - out.write(content) - os.utime(path, (self.mtime, self.mtime)) - - async def render(self): + def render_paginated(self): pagination = shared.config.getint('display', 'pagination') pages = ceil(len(self.data) / pagination) page = 1@@ -367,11 +445,6 @@ )
tmplfile = "%s.html" % (self.__class__.__name__) r = shared.j2.get_template(tmplfile).render(tmplvars) self.write_html(o, r) - - # render feed - if page == 1: - self.write_feed(posttmpls) - # inc. page counter page = page + 1@@ -632,10 +705,6 @@
@property def html(self): html = "%s" % (self.body) - - ## add photo - #if self.photo: - #html = "%s\n%s" % (str(self.photo), html) return shared.Pandoc().convert(html)@@ -1455,6 +1524,7 @@ # render categories
for name, c in collector_categories: if not c.is_uptodate or shared.config.getboolean('params', 'force'): worker.append(c.render()) + # TODO move ping to separate function and add it as a task # TODO separate an aiohttpworker?@@ -1471,8 +1541,13 @@ logging.info('copying static files')
src = shared.config.get('dirs', 'static') for item in os.listdir(src): s = os.path.join(src, item) + stime = os.path.getmtime(s) d = os.path.join(shared.config.get('common', 'build'), item) - if not os.path.exists(d) or shared.config.getboolean('params', 'force'): + dtime = 0 + if os.path.exists(d): + dtime = os.path.getmtime(d) + + if not os.path.exists(d) or shared.config.getboolean('params', 'force') or dtime < stime: logging.debug("copying static file %s to %s", s, d) shutil.copy2(s, d) if '.html' in item:
@@ -8,14 +8,16 @@
<section class="content-body h-feed"> <aside class="follow"> <p> - <svg class="icon"><use xlink:href="#icon-rss" /></svg> + <svg class="icon" width="16" height="16"> + <use xlink:href="#icon-rss" /> + </svg> <a title="follow {{ taxonomy.title }}" href="{{ site.url }}{{ taxonomy.feed }}">Atom feed</a> </p> </aside> <h1 class="p-name hide">{{ taxonomy.name }}</h1> {% for post in posts %} - <article class="h-entry hentry"> + <article class="h-entry hentry" lang="{{ post.lang }}"> <header> <h2>{% include 'Singular_title.html' %}</h2> </header>@@ -25,7 +27,7 @@ {% if post.summary %}
<div class="e-summary entry-summary"> {{ post.summary }} <span class="more"> - <a href="/{{ post.slug }}" title="{{ post.title }}"></a> + <a href="/{{ post.slug }}" title="{{ post.title }}">[…]</a> </span> <br class="clear" /> </div>
@@ -0,0 +1,49 @@
+{% include 'block_header_open.html' %} + <title>{{ taxonomy.title }}</title> + <link rel="alternate" type="application/atom+xml" title="{{ taxonomy.title }} feed" href="{{ taxonomy.feed }}" /> + <link rel="self" href="{{ site.url }}{{ taxonomy.feed }}/" /> + +{% include 'block_header_close.html' %} + +<section class="content-body h-feed"> + <aside class="follow"> + <p> + <svg class="icon" width="16" height="16"> + <use xlink:href="#icon-rss" /> + </svg> + <a title="follow {{ taxonomy.title }}" href="{{ site.url }}{{ taxonomy.feed }}">Atom feed</a> + </p> + </aside> + + <h1 class="p-name hide">{{ taxonomy.name }}</h1> + +{% for year in by_year.keys()|sort(reverse=True) %} + <h2>{{ year }}</h2> + {% for post in by_year[year]|sort(attribute='pubtime',reverse=True) %} + <article class="h-entry hentry" lang="{{ post.lang }}"> + <header> + <h3>{% include 'Singular_title.html' %}</h3> + </header> + + {% if post.summary %} + <div class="e-summary entry-summary"> + {{ post.summary }} + <span class="more"> + <a href="/{{ post.slug }}" title="{{ post.title }}">[…]</a> + </span> + <br class="clear" /> + </div> + {% else %} + <div class="e-content entry-content"> + {% if post.photo %} + {{ post.photo }} + {% endif %} + {{ post.html }} + </div> + {% endif %} + </article> + {% endfor %} +{% endfor %} +</section> + +{% include 'block_footer.html' %}
@@ -1,86 +0,0 @@
-{% include 'block_header_open.html' %} - <title>{{ taxonomy.title }}</title> - <link rel="alternate" type="application/atom+xml" title="{{ taxonomy.title }} feed" href="{{ taxonomy.feed }}" /> - <link rel="self" href="{{ site.url }}{{ taxonomy.feed }}/" /> - -{% include 'block_header_close.html' %} - -<section class="content-body h-feed photos"> - <aside class="follow"> - <p> - <svg class="icon"><use xlink:href="#icon-rss" /></svg> - <a title="follow {{ taxonomy.title }}" href="{{ site.url }}{{ taxonomy.feed }}">Atom feed</a> - </p> - </aside> - - {% for post in posts %} - {{ post.photo }} - {% endfor %} -</section> - -{% if taxonomy.total > 1 %} - - {# based on: http://dev.dbl-a.com/symfony-2-0/symfony2-and-twig-pagination/ #} - <nav class="pagination"> - <ul> - {% if taxonomy.page > 1 %} - {% set prev = taxonomy.page - 1 %} - <li> - <a rel="prev" href="{{ taxonomy.url }}page/{{ prev }}">«</a> - </li> - <li> - <a rel="prev" href="{{ taxonomy.url }}">1</a> - </li> - {% endif %} - - {% if taxonomy.page - 4 > 0 %} - <li> - <span class="page-numbers dots">…</span> - </li> - {% endif %} - - - {% if ( taxonomy.page - 1 > 1 ) %} - <li> - <a href="{{ taxonomy.url }}page/{{ taxonomy.page - 1 }}">{{ taxonomy.page - 1 }}</a> - </li> - {% endif %} - - - <li> - <span class="page-numbers taxonomy.page">{{ taxonomy.page }}</span> - </li> - - - {% if ( taxonomy.page + 1 <= taxonomy.total -1 ) %} - <li> - <a href="{{ taxonomy.url }}page/{{ taxonomy.page + 1 }}">{{ taxonomy.page + 1 }}</a> - </li> - {% endif %} - - - {% if taxonomy.page + 3 < taxonomy.total %} - <li> - <span class="page-numbers dots">…</span> - </li> - {% endif %} - - - {% if taxonomy.page != taxonomy.total %} - <li> - <a href="{{ taxonomy.url }}page/{{ taxonomy.total }}">{{ taxonomy.total }}</a> - </li> - {% endif %} - - {% if taxonomy.page < taxonomy.total %} - {% set next = taxonomy.page + 1 %} - <li> - <a rel="next" href="{{ taxonomy.url }}page/{{ next }}">»</a> - </li> - {% endif %} - </ul> - </nav> - -{% endif %} - -{% include 'block_footer.html' %}
@@ -1,26 +1,28 @@
<li class="h-entry p-comment"> - <span> - <time class="dt-published" datetime="{{ comment.pubtime }}"> - {{ comment.pubdate }} - </time> - </span> - <span class="p-author h-card"> - {% if comment.author.url %} - <a class="url u-url" href="{{ comment.author.url }}"> - <span class="p-name fn">{{ comment.author.name }}</span> - </a> - {% else %} - <span class="p-name fn">{{ comment.author.name }}</span> - {% endif %} - </span> + <span> + <time class="dt-published" datetime="{{ comment.pubtime }}"> + {{ comment.pubdate }} + </time> + </span> + <span class="p-author h-card"> + {% if comment.author.url %} + <a class="url u-url" href="{{ comment.author.url }}"> + <span class="p-name fn">{{ comment.author.name }}</span> + </a> + {% else %} + <span class="p-name fn">{{ comment.author.name }}</span> + {% endif %} + </span> {% if 'webmention' == comment.type %} - <span class="source"> - <svg class="icon"><use xlink:href="#icon-link"></use></svg> - <a class="u-url" href="{{ comment.source }}">{{ comment.source }}</a> - </span> + <span class="source"> + <svg class="icon" width="16" height="16"> + <use xlink:href="#icon-link"></use> + </svg> + <a class="u-url" href="{{ comment.source }}">{{ comment.source }}</a> + </span> {% else %} - <span class="reaction"> - <a class="u-url" href="{{ comment.source }}">{{ comment.type }} </a> - </span> + <span class="reaction"> + <a class="u-url" href="{{ comment.source }}">{{ comment.type }} </a> + </span> {% endif %} </li>
@@ -15,12 +15,6 @@ <section class="content-body">
<article class="h-entry hentry singular" lang="{{ post.lang }}"> <header> <h1>{% include 'Singular_title.html' %}</h1> - {% if 'article' == post.category and post.age >= 2 %} - <h2 class="old-warning">WARNING: this entry was published at {{ post.pubdate }}.<br />It might be outdated.</h2> - {% endif %} - {% for url in post.syndicate %} - <a href="{{ url }}"></a> - {% endfor %} </header> {% if post.summary %}@@ -52,15 +46,21 @@ </p>
<p class="license"> {% if post.licence.text == 'CC BY 4.0' %} <a rel="license" href="https://creativecommons.org/licenses/by/4.0/" class="hide u-license">CC BY 4.0</a> - <svg class="icon"><use xlink:href="#icon-creative-commons" /></svg> + <svg class="icon" width="16" height="16"> + <use xlink:href="#icon-creative-commons" /> + </svg> Licensed under <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International</a>. You are free to share or republish, even if modified, if you link back here and indicate the modifications, even for commercial use. {% elif post.licence.text == 'CC BY-NC 4.0' %} <a rel="license" href="https://creativecommons.org/licenses/by-nc/4.0/" class="hide u-license">CC BY-NC 4.0</a> - <svg class="icon"><use xlink:href="#icon-creative-commons" /></svg> + <svg class="icon" width="16" height="16"> + <use xlink:href="#icon-creative-commons" /> + </svg> Licensed under <a href="https://creativecommons.org/licenses/by-nc/4.0/">Creative Commons Attribution-NonCommercial 4.0 International</a>. You are free to share or republish, even if modified, if you link back here and indicate the modifications, for non commercial use. For commercial use please contact the author. {% else %} <a rel="license" href="https://creativecommons.org/licenses/by-nc-nd/4.0/" class="hide u-license">CC BY-NC-ND 4.0</a> - <svg class="icon"><use xlink:href="#icon-creative-commons" /></svg> + <svg class="icon" width="16" height="16"> + <use xlink:href="#icon-creative-commons" /> + </svg> Licensed under <a href="https://creativecommons.org/licenses/by-nc-nd/4.0/">Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International</a>. You are free to share if you link back here for non commercial use, but you can't publish any altered versions of it. For commercial use please contact the author. {% endif %} </p>@@ -84,7 +84,9 @@ <li>
<a rel="payment" title="pay {{ site.author.name }} via {{ data.label }} {{ data.value }}" href="{{ data.url }}"> {{ data.value }} <span class="method"> - <svg class="icon"><use xlink:href="#icon-{{ method }}"></use></svg> + <svg class="icon" width="16" height="16"> + <use xlink:href="#icon-{{ method }}"></use> + </svg> with {{ data.label }} </span> </a>@@ -93,10 +95,26 @@ {% endfor %}
</ul> </aside> +{% if post.syndicate|length %} + <section class="syndication"> + <!-- <h2><a name="syndication"></a>Syndicated copies</h2> + <ul> + {% for url in post.syndicate %} + <li> + <a href="{{ url }}" class="u-syndication"></a> + </li> + {% endfor %} + </ul> + --> + {% for url in post.syndicate %} + <a href="{{ url }}" class="u-syndication"></a> + {% endfor %} +{% endif %} + {% if post.replies|length %} <section class="replies"> - <h6><a name="replies"></a>Replies</h6> + <h2><a name="replies"></a>Replies</h2> <ol> {% for mtime, comment in post.replies %} {% include 'Comment.html' %}@@ -106,7 +124,7 @@ </section>
{% endif %} {% if post.reactions|length %} <section class="reactions"> - <h6><a name="reactions"></a>Reactions</h6> + <h2><a name="reactions"></a>Reactions</h2> <dl> {% for character, comments in post.reactions.items() %} <dt>{{ character }}</dt>
@@ -1,6 +1,9 @@
{% if post.is_reply %} <span class="p-name"> - <svg class="icon"><use xlink:href="#icon-reply" /></svg> + <svg class="icon" width="16" height="16"><use xlink:href="#icon-reply" /></svg> + <a href="{{ post.slug }}" class="u-url" title="{{ post.title }}"> + RE: + </a> <a href="{{ post.is_reply }}" class="u-in-reply-to" title="Reply to: {{ post.is_reply }}"> {{ post.is_reply }} </a>
@@ -7,27 +7,27 @@ {{ photo.alt }}{% if photo.is_photo %}<span class="author"> - photo by {{ photo.author }}</span>
<dl class="exif"> {% if photo.exif.camera %} <dt>Camera</dt> -<dd><svg class="icon"><use xlink:href="#icon-camera" /></svg>{{ photo.exif.camera }}</dd> +<dd><svg class="icon" width="16" height="16"><use xlink:href="#icon-camera" /></svg>{{ photo.exif.camera }}</dd> {% endif %} {% if photo.exif.aperture %} <dt>Aperture</dt> -<dd><svg class="icon"><use xlink:href="#icon-aperture" /></svg>f/{{ photo.exif.aperture }}</dd> +<dd><svg class="icon" width="16" height="16"><use xlink:href="#icon-aperture" /></svg>f/{{ photo.exif.aperture }}</dd> {% endif %} {% if photo.exif.shutter_speed %} <dt>Shutter speed</dt> -<dd><svg class="icon"><use xlink:href="#icon-clock" /></svg>{{ photo.exif.shutter_speed }} sec</dd> +<dd><svg class="icon" width="16" height="16"><use xlink:href="#icon-clock" /></svg>{{ photo.exif.shutter_speed }} sec</dd> {% endif %} {% if photo.exif.focallength %} <dt>Focal length (as set)</dt> -<dd><svg class="icon"><use xlink:href="#icon-focallength" /></svg>{{ photo.exif.focallength }}</dd> +<dd><svg class="icon" width="16" height="16"><use xlink:href="#icon-focallength" /></svg>{{ photo.exif.focallength }}</dd> {% endif %} {% if photo.exif.iso %} <dt>Sensitivity</dt> -<dd><svg class="icon"><use xlink:href="#icon-sensitivity" /></svg>ISO {{ photo.exif.iso }}</dd> +<dd><svg class="icon" width="16" height="16"><use xlink:href="#icon-sensitivity" /></svg>ISO {{ photo.exif.iso }}</dd> {% endif %} {% if photo.exif.lens %} <dt>Lens</dt> -<dd><svg class="icon"><use xlink:href="#icon-lens" /></svg>{{ photo.exif.lens }}</dd> +<dd><svg class="icon" width="16" height="16"><use xlink:href="#icon-lens" /></svg>{{ photo.exif.lens }}</dd> {% endif %} </dl> {% endif %}
@@ -3,7 +3,6 @@ {% include 'style-dark.css' %}
</style> </head> <body> -{% include 'symbols.svg' %} <header class="content-header" id="main-header"> <nav class="content-navigation">@@ -14,7 +13,7 @@ {% if taxonomy is defined and taxonomy.name == '' %}
{% set cssclass = 'active' %} {% endif %} <a title="home" href="/" class="{{ cssclass }}"> - <svg class="icon"><use xlink:href="#icon-home" /></svg> + <svg class="icon" width="16" height="16"><use xlink:href="#icon-home" /></svg> home </a> </li>@@ -24,7 +23,7 @@ {% set cssclass = 'active' %}
{% endif %} <li> <a title="photos" href="/category/photo/" class="{{ cssclass }}"> - <svg class="icon"><use xlink:href="#icon-photo" /></svg> + <svg class="icon" width="18" height="16"><use xlink:href="#icon-photo" /></svg> photos </a> </li>@@ -34,7 +33,7 @@ {% set cssclass = 'active' %}
{% endif %} <li> <a title="journal" href="/category/journal/" class="{{ cssclass }}"> - <svg class="icon"><use xlink:href="#icon-journal" /></svg> + <svg class="icon" width="16" height="16"><use xlink:href="#icon-journal" /></svg> journal </a> </li>@@ -44,7 +43,7 @@ {% set cssclass = 'active' %}
{% endif %} <li> <a title="IT" href="/category/article/" class="{{ cssclass }}"> - <svg class="icon"><use xlink:href="#icon-article" /></svg> + <svg class="icon" width="16" height="16"><use xlink:href="#icon-article" /></svg> IT </a> </li>@@ -54,7 +53,7 @@ {% set cssclass = 'active' %}
{% endif %} <li> <a title="notes" href="/category/note/" class="{{ cssclass }}"> - <svg class="icon"><use xlink:href="#icon-note" /></svg> + <svg class="icon" width="16" height="16"><use xlink:href="#icon-note" /></svg> notes </a> </li>
@@ -148,7 +148,7 @@
h3 { font-size: 1rem; border-bottom: 1px dotted #777; - + } .icon {@@ -183,7 +183,7 @@ }
code { padding: 0.1rem; - + } pre code {@@ -220,51 +220,6 @@ max-width: 72ch;
margin: 1rem auto; } -.h-entry { - padding: 0 0.6rem; - font-size: 0.9rem; -} - -.h-feed .h-entry { - margin: 2rem 0 0 0; - padding: 1rem; - border-bottom: 2px solid #333; -} - -/* titles in taxonomy pages */ -.h-feed .h-entry h2 { - border: none; - font-size: 1rem; - margin: 0; - padding: 0; -} - -/* licence, time, author */ -.h-entry footer p { - color: #999; - padding: 0.3rem 0; - display: inline-block; -} - -.h-entry footer a { - color: #ccc; -} - -.h-entry footer a:hover { - color: #eee; -} - -.e-content a { - color:#5193D4; -} - -.e-content a:hover { - color:#71B3F4; -} - -.singular footer { - margin: 2rem 0; -} .footnoteRef, .footnoteRef:hover {@@ -319,7 +274,6 @@ .footnotes ol li a[href^="#"]:hover:after {
color: #ccc; } - .content-header a, .content-footer a { color: #cccccc;@@ -361,6 +315,7 @@ .content-footer dl {
font-size: 0.86rem; } +.content-footer h2, .content-footer svg, .content-footer dl dt { display:none;@@ -445,19 +400,85 @@ .content-navigation ul li a:hover {
border-bottom: 3px solid #fefefe; } + +.h-feed h2 { + margin-bottom: 1rem; +} + +.h-feed .h-entry { + margin-left: 1rem; +} + +.h-feed .h-entry h3 { + font-size: 0.9rem; +} + +.h-feed .h-entry .e-summary, +.h-feed .h-entry .e-content { + font-size: 0.8rem; +} + +.h-feed .h-entry .e-content { + margin-bottom: 3rem; +} + +.h-entry.singular { + padding: 0 0.6rem; + font-size: 0.9rem; +} + +.h-entry.singular .e-content a, +.h-entry.singular .e-summary a { + color:#5193D4; +} + +.h-feed .h-entry h2 a:hover, +.h-entry.singular .e-content a:hover, +.h-entry.singular .e-summary a:hover { + color:#71B3F4; +} + + +.h-entry.singular footer p { + color: #999; + padding: 0.3rem 0; + display: inline-block; +} + +.h-entry.singular footer a { + color: #ccc; +} + +.h-entry.singular footer a:hover { + color: #eee; +} + +.h-entry.singular footer { + margin: 2rem 0; +} + +.reactions h2, +.replies h2, +.syndication h2 { + border:none; +} + figure { margin: 1rem 0; + position:relative; +} + +figcaption dl * { + font-size: 0.5rem; } figcaption { + max-width: 72ch; + margin: 0 auto; background-color: #111; - text-align: left; - max-width: 722px; - margin: 0 auto; padding: 0.6rem; } - .adaptimg { display: block; max-height: 98vh;@@ -490,14 +511,11 @@ .pagination a:hover {
border-bottom-color: #fff; } -.more { - display:block; - font-weight:bold; -} - +/* .more a:before { content:'Continue \00BB'; } +*/ .pagination ul { text-align:center;@@ -542,14 +560,14 @@ }
.w25 { width: 24%; } - +/* .u-in-reply-to::before { content: 'RE:'; dislay: inline-block; margin-right: 0.3rem; font-weight: bold; } - +*/ .search-section { margin-bottom: 1rem;@@ -639,7 +657,7 @@
*/ /* above is mobile first; this is the desktop */ -@media all and (min-width: 50rem) { +@media all and (min-width: 56rem) { .content-navigation ul li a { font-size: 0.9rem;@@ -656,6 +674,19 @@
.search-form { float:right; margin: 0.1rem; + } + + figcaption { + position: absolute; + right: 0; + top: 0; + max-width: 28%; + } + + + .adaptimg { + max-width: 70%; + margin: 0; } }
@@ -62,10 +62,4 @@ </symbol>
<symbol id="icon-creative-commons" viewBox="0 0 16 16"> <path d="M5.402 11.009c1.464 0 2.259-0.893 2.295-0.929 0.071-0.089 0.089-0.223 0.027-0.321l-0.402-0.732c-0.036-0.080-0.125-0.134-0.214-0.152-0.089-0.009-0.179 0.027-0.241 0.098-0.009 0-0.571 0.598-1.393 0.598-0.902 0-1.554-0.661-1.554-1.58 0-0.911 0.634-1.563 1.518-1.563 0.741 0 1.232 0.5 1.232 0.5 0.063 0.063 0.143 0.098 0.232 0.089s0.17-0.054 0.214-0.125l0.473-0.696c0.071-0.107 0.063-0.25-0.018-0.348-0.027-0.036-0.75-0.857-2.17-0.857-1.759 0-3.071 1.295-3.071 3.009 0 1.741 1.286 3.009 3.071 3.009zM11.027 11.009c1.473 0 2.259-0.893 2.295-0.929 0.071-0.089 0.089-0.223 0.036-0.321l-0.402-0.732c-0.045-0.080-0.125-0.134-0.223-0.152-0.089-0.009-0.179 0.027-0.241 0.098-0.009 0-0.571 0.598-1.393 0.598-0.902 0-1.554-0.661-1.554-1.58 0-0.911 0.634-1.563 1.518-1.563 0.75 0 1.232 0.5 1.232 0.5 0.063 0.063 0.143 0.098 0.232 0.089s0.17-0.054 0.214-0.125l0.473-0.696c0.071-0.107 0.063-0.25-0.018-0.348-0.027-0.036-0.75-0.857-2.17-0.857-1.75 0-3.071 1.295-3.071 3.009 0 1.741 1.286 3.009 3.071 3.009zM8 1.429c-3.625 0-6.571 2.946-6.571 6.571s2.946 6.571 6.571 6.571 6.571-2.946 6.571-6.571-2.946-6.571-6.571-6.571zM8 0c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8 3.58-8 8-8z"></path> </symbol> - <symbol id="icon-btc" viewBox="0 0 12 16"> - <path d="M10.42 5.714c0.116 1.188-0.384 1.902-1.17 2.304 1.304 0.313 2.125 1.089 1.964 2.83-0.205 2.17-1.813 2.75-4.116 2.875v2.277h-1.375v-2.241c-0.348 0-0.714 0-1.089-0.009v2.25h-1.375v-2.277c-0.321 0-0.643-0.009-0.973-0.009h-1.786l0.277-1.634c1.009 0.018 0.991 0 0.991 0 0.384 0 0.491-0.277 0.518-0.455v-3.589h0.143c-0.054-0.009-0.107-0.009-0.143-0.009v-2.563c-0.054-0.286-0.232-0.607-0.795-0.607 0 0 0.018-0.018-0.991 0v-1.464l1.893 0.009c0.277 0 0.571 0 0.866-0.009v-2.25h1.375v2.205c0.366-0.009 0.732-0.018 1.089-0.018v-2.188h1.375v2.25c1.768 0.152 3.17 0.696 3.321 2.321zM8.5 10.58c0-1.768-2.911-1.509-3.839-1.509v3.018c0.929 0 3.839 0.196 3.839-1.509zM7.866 6.33c0-1.616-2.429-1.375-3.205-1.375v2.741c0.777 0 3.205 0.179 3.205-1.366z"></path> - </symbol> - <symbol id="icon-phone viewBox="0 0 16 16"> - <path d="M11 10c-1 1-1 2-2 2s-2-1-3-2-2-2-2-3 1-1 2-2-2-4-3-4-3 3-3 3c0 2 2.055 6.055 4 8s6 4 8 4c0 0 3-2 3-3s-3-4-4-3z"></path> - </symbol> </svg>