├── .gitignore ├── CODE_OF_CONDUCT.md ├── Gemfile ├── LICENSE ├── README.md ├── _config.yml ├── _includes ├── analytics.html ├── baidu_statistic.html ├── cnzz_statistic.html ├── comments.html ├── disqus_comments.html ├── footer.html ├── giscus_comments.html ├── gitalk_comments.html ├── head.html ├── image.html ├── navigation.html └── tag_cloud.html ├── _layouts ├── archive.html ├── default.html ├── home.html ├── page.html ├── post.html ├── relics.html ├── tag-archive.html └── tag_page.html ├── _pages └── about.md ├── _posts ├── 2017-03-05-pagination-post.md ├── 2017-03-06-the-mystery-of-the-filler-post.md ├── 2017-03-07-the-case-of-the-missing-post.md ├── 2017-03-10-welcome-to-jekyll.md ├── 2017-03-16-example-content.md └── 2017-03-29-introducing-tale.md ├── _sass ├── tale.scss ├── tale │ ├── _base.scss │ ├── _catalogue.scss │ ├── _code.scss │ ├── _commentation.scss │ ├── _layout.scss │ ├── _pagination.scss │ ├── _post.scss │ ├── _relic.scss │ ├── _syntax.scss │ └── _variables.scss ├── type │ ├── __all.scss │ ├── _functions.scss │ ├── _mixins.scss │ ├── _mq.scss │ └── _variables.scss └── vendor │ ├── _gitalk-plus.scss │ └── _gitalk.scss ├── assets ├── apple-touch-icon.png ├── favicon-16x16.png ├── favicon-32x32.png ├── js │ ├── disqusLoader.js │ └── gitalk.min.js └── main.scss ├── favicon.ico ├── index.html └── tale.gemspec /.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | .bundle 3 | .DS_Store 4 | .sass-cache 5 | _site 6 | Gemfile.lock 7 | .jekyll-cache 8 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at chesterhow@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source "https://rubygems.org" 4 | gemspec -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Chester How 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Tale - theme for hutusi.com 2 | 3 | [![Gem Version](https://badge.fury.io/rb/tale.svg)](https://badge.fury.io/rb/tale) 4 | 5 | Tale is a minimal Jekyll theme curated for storytellers. Checkout the demo [here](https://chesterhow.github.io/tale/). 6 | 7 | ![Tale screenshot](http://i.imgur.com/pXZrtmo.png) 8 | 9 | ## Features 10 | - Easy installation 11 | - Compatible with GitHub Pages 12 | - Responsive design (looks just as good on mobile) 13 | - Syntax highlighting, with the help of Pygments 14 | - Markdown and HTML text formatting 15 | - Pagination of posts 16 | - [Disqus comments (can be enabled if needed)](#enabling-comments) 17 | 18 | ## Installation 19 | There are 3 ways to install this theme 20 | 21 | 1. Install it as a Ruby Gem (for self-hosted sites) 22 | 2. Install it with the `jekyll-remote-theme` plugin (for GitHub Pages hosted sites) 23 | 3. Fork the project directly 24 | 25 | ### Ruby Gem method 26 | 1. Add this line to your `Gemfile`: 27 | 28 | ```ruby 29 | gem "tale" 30 | ``` 31 | 32 | 2. Install the theme's gems and dependencies: 33 | 34 | ```bash 35 | $ bundle 36 | ``` 37 | 38 | 3. In `_config.yml` add these lines: 39 | 40 | ```yaml 41 | theme: tale 42 | 43 | permalink: /:year-:month-:day/:title 44 | paginate: 5 45 | ``` 46 | 47 | Remove any other `theme:` lines. 48 | 49 | 4. Rename `index.md` to `index.html`. Without this, the `jekyll-paginate` gem will not work. 50 | 51 | 5. In `about.md`, change the `layout:` field to `post`: 52 | 53 | ```Markdown 54 | layout: post 55 | ``` 56 | 57 | ### GitHub Pages method 58 | 1. Add these 2 lines in to your `Gemfile`: 59 | 60 | ```ruby 61 | gem "jekyll-remote-theme" 62 | gem "jekyll-paginate" 63 | ``` 64 | 65 | 2. Install the newly added gems: 66 | 67 | ```bash 68 | $ bundle 69 | ``` 70 | 71 | 3. In `_config.yml` add these lines: 72 | 73 | ```yaml 74 | remote_theme: chesterhow/tale 75 | 76 | permalink: /:year-:month-:day/:title 77 | paginate: 5 78 | 79 | plugins: 80 | - jekyll-paginate 81 | - jekyll-remote-theme 82 | ``` 83 | 84 | Remove any other `theme:` or `remote_theme:` lines. 85 | 86 | 4. Rename `index.md` to `index.html`. Without this, the `jekyll-paginate` gem will not work. 87 | 88 | 5. In `about.md`, change the `layout:` field to `post`: 89 | 90 | ```Markdown 91 | layout: post 92 | ``` 93 | 94 | ### Fork method 95 | 1. Fork this repository 96 | 97 | 2. Delete the unnecessary files/folders: `CODE_OF_CONDUCT.md`, `LICENSE`, `README.md`, `tale.gemspec` 98 | 99 | 3. Delete the `baseurl` line in `_config.yml`: 100 | 101 | ```yaml 102 | baseurl: "/tale" # delete this line 103 | ``` 104 | 105 | ## Usage 106 | Once you've installed the theme, you're ready to work on your Jekyll site. To start off, I would recommend updating `_config.yml` with your site's details. 107 | 108 | To build and serve your site, run: 109 | 110 | ```bash 111 | $ bundle exec jekyll serve 112 | ``` 113 | 114 | And you're all set! Head over to http://127.0.0.1:4000/ to see your site in action. 115 | 116 | ### Enabling Comments 117 | Comments are disabled by default. To enable them, look for the following line in `_config.yml` and change `jekyll-tale` to your site's Disqus id. 118 | 119 | ```yml 120 | disqus: jekyll-tale 121 | ``` 122 | 123 | Next, add `comments: true` to the YAML front matter of the posts which you would like to enable comments for. 124 | 125 | ## Contributing 126 | Found a bug or have a suggestion? Feel free to create an issue or make a pull request! 127 | 128 | ## License 129 | See [LICENSE](https://github.com/chesterhow/tale/blob/master/LICENSE) 130 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # Site settings 2 | title: Tale 3 | description: "Minimal Jekyll theme for hutusi.com" 4 | baseurl: "/tale" 5 | url: "https://hutusi.com" 6 | 7 | # Google Analytics 8 | google_analytics: UA-30399492-1 9 | 10 | # Baidu Statistic 11 | baidu_statistic: 6e5f92006f4eed18f39b7cb30f420d8a 12 | 13 | # Google AdSense 14 | google_adsense: 15 | 16 | # cnzz statistic 17 | cnzz_statistic: 18 | 19 | # addthis 20 | addthis: 21 | 22 | copyright: 'hutusi.com' 23 | # Author 24 | author: 25 | name: hutusi 26 | url: https://hutusi.com 27 | email: huziyong@gmail.com 28 | 29 | # images CDN 30 | images_baseurl: '/images' 31 | wechat_official: '' 32 | 33 | # Build settings 34 | markdown: kramdown 35 | include: 36 | - _pages 37 | 38 | # Assets 39 | sass: 40 | sass_dir: _sass 41 | style: compressed 42 | 43 | # Gems 44 | plugins: 45 | - jekyll-feed 46 | - jekyll-paginate 47 | - jekyll-seo-tag 48 | # - jekyll/tagging 49 | # - jekyll-sitemap 50 | # - jemoji #Uncomment this to allow emoji in your post 51 | 52 | # Permalinks 53 | permalink: /:year-:month-:day/:title 54 | paginate: 5 55 | 56 | # Navigators 57 | nav_page_names: ['about.md'] 58 | # can be ['feeds.pub', 'xml', 'na'] 59 | nav_feed: 'feeds.pub' 60 | 61 | # Excludes 62 | exclude: [ Gemfile, Gemfile.lock, tale.gemspec ] 63 | 64 | # Tagging 65 | # tag_page_dir: tag 66 | # tag_page_layout: tag_page 67 | # tag_permalink_style: pretty 68 | 69 | # tag_page_data: 70 | # sitemap: false 71 | 72 | # can be ['disqus', 'gitalk', 'giscus'] 73 | comments_engine: na 74 | 75 | # Disqus (Set to your disqus id) 76 | disqus: jekyll-tale 77 | 78 | gitalk: 79 | client_id: '' 80 | client_secret: '' 81 | repo: '' 82 | owner: '' 83 | admin: 84 | - '' 85 | 86 | giscus: 87 | repo: '' 88 | repo_id: '' 89 | category: '' 90 | category_id: '' 91 | mapping: 'pathname' 92 | input_position: 'bottom' 93 | theme: 'light' 94 | lang: "en" 95 | -------------------------------------------------------------------------------- /_includes/analytics.html: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 15 | 16 | -------------------------------------------------------------------------------- /_includes/baidu_statistic.html: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /_includes/cnzz_statistic.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |
6 | -------------------------------------------------------------------------------- /_includes/comments.html: -------------------------------------------------------------------------------- 1 |
2 |
对我博客最大的鼓励来自于你的评论,欢迎选择 3 | 4 | 或 5 | 6 | 来回复, 7 | 也可以在 GitHub discussion 留言。 8 |
9 | 10 |
11 | 12 |
13 | {% include giscus_comments.html %} 14 |
15 | 18 |
19 | 20 | 43 | -------------------------------------------------------------------------------- /_includes/disqus_comments.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 20 | 21 | -------------------------------------------------------------------------------- /_includes/footer.html: -------------------------------------------------------------------------------- 1 | 46 | -------------------------------------------------------------------------------- /_includes/giscus_comments.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /_includes/gitalk_comments.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
欢迎留言,请在下面评论框或直接在 GitHub issue 评论。
6 | 7 | 8 | 9 | 10 |
11 |
12 | 13 |
14 |
15 | 16 | 17 | 18 | 47 | 48 | 49 | 50 | 51 | 90 | -------------------------------------------------------------------------------- /_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {% seo %} 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | {% feed_meta %} 18 | 19 | 20 | {% if site.google_analytics %} 21 | {% include analytics.html %} 22 | {% endif %} 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /_includes/image.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | {{ include.caption}} 5 |
{{ include.caption }}
6 |
-------------------------------------------------------------------------------- /_includes/navigation.html: -------------------------------------------------------------------------------- 1 | 34 | -------------------------------------------------------------------------------- /_includes/tag_cloud.html: -------------------------------------------------------------------------------- 1 | 2 | {% capture temptags %} 3 | {% for tag in site.tags %} 4 | {{ tag[1].size | plus: 1000 }}#{{ tag[0] }}#{{ tag[1].size }} 5 | {% endfor %} 6 | {% endcapture %} 7 | {% assign sortedtemptags = temptags | split:' ' | sort | reverse %} 8 | {% for temptag in sortedtemptags %} 9 | {% assign tagitems = temptag | split: '#' %} 10 | {% capture tagname %}{{ tagitems[1] }}{% endcapture %} 11 | {{ tagname }} 12 | {% endfor %} 13 | -------------------------------------------------------------------------------- /_layouts/archive.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |

Archive of posts with {{ page.type }} '{{ page.title }}'

6 | 14 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% include head.html %} 5 | 6 | 7 | 8 | {% include navigation.html %} 9 | 10 |
11 | {{ content }} 12 |
13 | 14 | {% include footer.html %} 15 | 16 | 17 | -------------------------------------------------------------------------------- /_layouts/home.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 | {% for post in paginator.posts %} 7 | 8 |
9 | 10 |

{{ post.title }}

11 |
12 | 13 |

14 | {{ post.content | strip_html | strip_newlines | truncate: 95, "..." }} 15 |

16 | 17 |
18 |
19 | {% endfor %} 20 |
21 | 22 | 32 | -------------------------------------------------------------------------------- /_layouts/page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 |

{{ page.title }}

7 |
8 | 9 | {{ content }} 10 |
11 | 12 | {% if page.commentable %} 13 | {% include comments.html %} 14 | {% endif %} 15 | 16 | -------------------------------------------------------------------------------- /_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 |

{{ page.title }}

7 |

{{ page.subtitle }}

8 | 9 |
10 | {% if page.date %} 11 | 12 | {% endif %} 13 |
14 | 15 | {{ content }} 16 |
17 | 18 |
19 | {% for tag in page.tags %} 20 | {{ tag }} 21 | {% endfor %} 22 |
23 | 24 |
25 | 26 |
27 | 知识共享许可协议 28 | 本文采用「CC BY-SA 4.0」知识共享许可协议,如果还喜欢其他文章, 29 | 欢迎订阅“胡涂说”博客。 30 | 31 |
32 | 公众号 33 |
微信公众号同步更新,欢迎关注😊
34 |
35 |
36 | 37 | {% include comments.html %} 38 | 39 | 49 | 50 | {% if site.addthis %} 51 | 52 | 53 | {% endif %} 54 | -------------------------------------------------------------------------------- /_layouts/relics.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 |

{{ page.title }}

7 |

{{ page.subtitle }}

8 | 9 |
10 | {% if page.type %} 11 |
12 | 类型: {{ page.type }} 13 |
14 | {% endif %} 15 | 16 | {% if page.opendate %} 17 |
18 | 上线日期: {{ page.opendate | date: "%Y-%m-%d" }} 19 |
20 | {% endif %} 21 | 22 | {% if page.closedate %} 23 |
24 | 下线日期: {{ page.closedate | date: "%Y-%m-%d" }} 25 |
26 | {% endif %} 27 | 28 | {% if page.website %} 29 |
30 | 原网址: {{ page.website }} 31 |
32 | {% endif %} 33 | 34 | {% if page.archive %} 35 |
36 | 互联网档案馆存档: {{ page.archive }} 37 |
38 | {% endif %} 39 |
40 | 41 |
42 | 43 | {{ content }} 44 |
45 | 46 |
47 | {% for tag in page.tags %} 48 | {{ tag }} 49 | {% endfor %} 50 |
51 | 52 |
53 | 54 |
本文采用「CC BY-SA 4.0」知识共享许可协议,如果还喜欢其他文章, 55 | 欢迎订阅“胡涂说”博客。 56 | 知识共享许可协议 57 |
58 | 59 | {% include comments.html %} 60 | 61 | 71 | 72 | {% if site.addthis %} 73 | 74 | 75 | {% endif %} 76 | -------------------------------------------------------------------------------- /_layouts/tag-archive.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |

{{ page.title }}

6 | 12 | 13 |

All tags

14 | 15 |
16 | {% include tag_cloud.html %} 17 |
18 | -------------------------------------------------------------------------------- /_layouts/tag_page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |

{{ page.tag }}

6 | 11 | 12 |

All tags

13 | 14 |
15 | {{ site | tag_cloud }} 16 |
17 | -------------------------------------------------------------------------------- /_pages/about.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "About" 4 | author: "Chester" 5 | permalink: /about/ 6 | --- 7 | 8 | A friend of mine writes short stories. One sunny day, I asked if he wanted a website to showcase his works and he agreed. I decided to use GitHub Pages to host his site. That way he wouldn't have to buy a domain and a server. 9 | 10 | While doing some research up on GitHub Pages, I accidentally chanced upon this _simple, blog-aware, static site generator_ called [Jekyll](https://jekyllrb.com/) which works really well with GitHub Pages. I figured it would do just fine for my friend and I set about searching for a pretty theme. I wanted a theme with a _book-ish_ vibe. Unfortunately, most of the themes were too modern. Eventually, I caved and begun working on my own theme. With the help of [Poole](https://github.com/poole/poole), the Jekyll Butler, I was able to build **Tale**. 11 | 12 | ## Contribute 13 | Feel free to create an issue or make a pull request on [GitHub](https://github.com/chesterhow/tale). 14 | 15 | Thanks for reading! 16 | -------------------------------------------------------------------------------- /_posts/2017-03-05-pagination-post.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Pagination Post" 4 | author: "Chester" 5 | --- 6 | 7 | Here we see **Tale's** pagination feature in action. It is set to 5 posts per page by default. Feel free to change this number in the `_config.yml` file! 8 | -------------------------------------------------------------------------------- /_posts/2017-03-06-the-mystery-of-the-filler-post.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "The Mystery of the Filler Post" 4 | author: "Chester" 5 | --- 6 | 7 | Hornswaggle measured fer yer chains chase run a shot across the bow Chain Shot flogging Pirate Round galleon rope's end aft. Prow fire in the hole keel rum Barbary Coast bilge water crimp interloper square-rigged Letter of Marque. Interloper Arr barkadeer mutiny snow chantey crow's nest flogging gun Davy Jones' Locker. 8 | 9 | Bilge jolly boat barque topsail interloper chandler spanker scuttle Arr sloop. Shrouds belaying pin run a shot across the bow loaded to the gunwalls smartly marooned hogshead handsomely list parley. Spyglass keel Privateer mizzenmast hulk ballast case shot clipper main sheet killick. 10 | 11 | Careen hempen halter Letter of Marque pillage swing the lead take a caulk Sail ho jury mast walk the plank ho. Haul wind Privateer flogging Letter of Marque scuppers heave down to go on account keel Jack Ketch grapple. Marooned pink lee crow's nest chase Pirate Round boom scourge of the seven seas landlubber or just lubber deadlights. 12 | 13 | [Pirate Ipsum](http://pirateipsum.me/) 14 | -------------------------------------------------------------------------------- /_posts/2017-03-07-the-case-of-the-missing-post.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "The Case of the Missing Post" 4 | author: "Chester" 5 | --- 6 | 7 | Kitty power! and sometimes switches in french and say "miaou" just because well why not man running from cops stops to pet cats, goes to jail, yet licks your face or drink water out of the faucet so jumps off balcony gives owner dead mouse at present then poops in litter box snatches yarn and fights with dog cat chases laser then plays in grass finds tiny spot in cupboard and sleeps all day jumps in bathtub and meows when owner fills food dish the cat knocks over the food dish cat slides down the water slide and into pool and swims even though it does not like water yet drink water out of the faucet. Pelt around the house and up and down stairs chasing phantoms. 8 | 9 | Sit in window and stare ooo, a bird! yum. Sit and stare. Sweet beast loves cheeseburgers. Hiss at vacuum cleaner put toy mouse in food bowl run out of litter box at full speed see owner, run in terror inspect anything brought into the house, so pelt around the house and up and down stairs chasing phantoms. Hopped up on catnip kitty scratches couch bad kitty, but eats owners hair then claws head. Lie on your belly and purr when you are asleep kitty power! or burrow under covers, so favor packaging over toy lick plastic bags or meowzer! yet unwrap toilet paper. 10 | 11 | [Cat Ipsum](http://www.catipsum.com/) 12 | -------------------------------------------------------------------------------- /_posts/2017-03-10-welcome-to-jekyll.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Welcome to Jekyll!" 4 | author: "Jekyll" 5 | --- 6 | 7 | You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. 8 | 9 | To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. 10 | 11 | Jekyll also offers powerful support for code snippets: like these 12 | 13 | {% highlight ruby %} 14 | def print_hi(name) 15 | puts "Hi, #{name}" 16 | end 17 | print_hi('Tom') 18 | #=> prints 'Hi, Tom' to STDOUT. 19 | {% endhighlight %} 20 | 21 | Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. 22 | 23 | [jekyll-docs]: https://jekyllrb.com/docs/home 24 | [jekyll-gh]: https://github.com/jekyll/jekyll 25 | [jekyll-talk]: https://talk.jekyllrb.com/ 26 | -------------------------------------------------------------------------------- /_posts/2017-03-16-example-content.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Example Content" 4 | author: "Chester" 5 | --- 6 | 7 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas tincidunt ornare nibh, non elementum augue tempus eget. Pellentesque tempus scelerisque iaculis. Nullam interdum ultricies nibh quis sollicitudin. Donec ornare fermentum facilisis. Ut at sem ac sem imperdiet varius a eget tortor. Nam eu augue eget orci semper maximus in eget augue. Mauris ornare, nisl ut suscipit consectetur, mi quam interdum tellus, at rutrum quam eros ultrices mi. 8 | 9 | # Headers 10 | {% highlight markdown %} 11 | # H1 12 | ## H2 13 | ### H3 14 | #### H4 15 | ##### H5 16 | ###### H6 17 | {% endhighlight %} 18 | 19 | # H1 20 | ## H2 21 | ### H3 22 | #### H4 23 | ##### H5 24 | ###### H6 25 | 26 | # Text formatting 27 | {% highlight markdown %} 28 | - **Bold** 29 | - _Italics_ 30 | - ~~Strikethrough~~ 31 | - Underline 32 | - Superscript 33 | - Subscript 34 | - Abbreviation: HTML 35 | - Citation: — Chester How 36 | {% endhighlight %} 37 | 38 | - **Bold** 39 | - _Italics_ 40 | - ~~Strikethrough~~ 41 | - Underline 42 | - Superscript 43 | - Subscript 44 | - Abbreviation: HTML 45 | - Citation: — Chester How 46 | 47 | # Lists 48 | {% highlight markdown %} 49 | 1. Ordered list item 1 50 | 2. Ordered list item 2 51 | 3. Ordered list item 3 52 | 53 | * Unordered list item 1 54 | * Unordered list item 2 55 | * Unordered list item 3 56 | {% endhighlight %} 57 | 58 | 1. Ordered list item 1 59 | 2. Ordered list item 2 60 | 3. Ordered list item 3 61 | 62 | * Unordered list item 1 63 | * Unordered list item 2 64 | * Unordered list item 3 65 | 66 | # Links 67 | {% highlight markdown %} 68 | Check out tale on [GitHub](https://github.com/chesterhow/tale). 69 | {% endhighlight %} 70 | 71 | Check out tale on [GitHub](https://github.com/chesterhow/tale). 72 | 73 | # Images 74 | {% highlight markdown %} 75 | ![Placeholder image](https://placehold.it/800x400 "Placeholder image") 76 | 77 | ![Image with caption](https://placehold.it/700x400 "Image with caption") 78 | _This is an image with a caption_ 79 | {% endhighlight %} 80 | 81 | ![Placeholder image](https://placehold.it/800x400 "Placeholder image") 82 | 83 | ![Image with caption](https://placehold.it/700x400 "Image with caption") 84 | _This is an image with a caption_ 85 | 86 | # Code and Syntax Highlighting 87 | Use back-ticks for `inline code`. Multi-line code snippets are supported too through Pygments. 88 | 89 | {% highlight js %} 90 | // Sample javascript code 91 | var s = "JavaScript syntax highlighting"; 92 | alert(s); 93 | {% endhighlight %} 94 | 95 | {% highlight python %} 96 | # Sample python code 97 | s = "Python syntax highlighting" 98 | print s 99 | {% endhighlight %} 100 | 101 | Adding `linenos` to the highlight tag enables line numbers. 102 | 103 | {% highlight js linenos %} 104 | // Sample javascript code 105 | var s = "JavaScript syntax highlighting"; 106 | alert(s); 107 | {% endhighlight %} 108 | 109 | # Blockquotes 110 | {% highlight markdown %} 111 | > Curabitur blandit tempus porttitor. Nullam quis risus eget urna mollis ornare vel eu leo. Nullam id dolor id nibh ultricies vehicula ut id elit. 112 | 113 | {% endhighlight %} 114 | 115 | > Curabitur blandit tempus porttitor. Nullam quis risus eget urna mollis ornare vel eu leo. Nullam id dolor id nibh ultricies vehicula ut id elit. 116 | 117 | # Horizontal Rule & Line Break 118 | {% highlight markdown %} 119 | Use `
` for horizontal rules 120 | 121 |
122 | 123 | and `
` for line breaks. 124 | 125 |
126 | {% endhighlight %} 127 | 128 | Use `
` for horizontal rules 129 | 130 |
131 | 132 | and `
` for line breaks. 133 | 134 |
135 | 136 | _The end_ 137 | -------------------------------------------------------------------------------- /_posts/2017-03-29-introducing-tale.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Introducing Tale" 4 | author: "Chester" 5 | comments: true 6 | --- 7 | 8 | Tale is a minimal [Jekyll](https://jekyllrb.com/) theme curated for storytellers. It is designed and developed by [myself](https://github.com/chesterhow/) for a friend who writes short stories. 9 | 10 | ## Tale features 11 | - Compatible with GitHub Pages 12 | - Responsive design (looks just as good on mobile) 13 | - Syntax highlighting, with the help of Pygments 14 | - Markdown and HTML text formatting 15 | - Pagination of posts 16 | 17 | Head over to the [Example Content]({{ site.baseurl }}/2017-03-16/example-content) post for a showcase of Tale's text formatting features. 18 | 19 | ## Browser Support 20 | Tale works on most if not all modern browsers, including Chrome, Safari and Firefox 👍🏼 21 | 22 | ## Download or Contribute 23 | Tale is publicly hosted on GitHub, so go ahead and download or fork it at the [GitHub repository](https://github.com/chesterhow/tale). If you spot any bugs or have any suggestions, feel free to create an issue or make a pull request. 24 | 25 | Thanks for checking out Tale! 26 | -------------------------------------------------------------------------------- /_sass/tale.scss: -------------------------------------------------------------------------------- 1 | @import 'type/_all'; 2 | 3 | @import 'tale/variables'; 4 | @import 'tale/base'; 5 | @import 'tale/code'; 6 | @import 'tale/post'; 7 | @import 'tale/relic'; 8 | @import 'tale/syntax'; 9 | @import 'tale/layout'; 10 | @import 'tale/pagination'; 11 | @import 'tale/catalogue'; 12 | @import 'tale/commentation'; 13 | 14 | @import 'vendor/gitalk'; 15 | @import 'vendor/gitalk-plus'; 16 | -------------------------------------------------------------------------------- /_sass/tale/_base.scss: -------------------------------------------------------------------------------- 1 | * { 2 | @include box-sizing; 3 | line-height: 1.5; 4 | } 5 | 6 | html, 7 | body { 8 | color: $default-color; 9 | margin: 0; 10 | padding: 0; 11 | } 12 | 13 | html { 14 | font-family: $serif-primary; 15 | font-size: 14px; 16 | overflow-y: scroll; 17 | 18 | @media (min-width: 600px) { 19 | font-size: 16px; 20 | } 21 | } 22 | 23 | body { 24 | -webkit-text-size-adjust: 100%; 25 | } 26 | 27 | h1, 28 | h2, 29 | h3, 30 | h4, 31 | h5, 32 | h6 { 33 | color: $default-shade; 34 | font-family: $sans-serif; 35 | line-height: normal; 36 | } 37 | 38 | a { 39 | color: $blue; 40 | text-decoration: none; 41 | } 42 | 43 | blockquote { 44 | border-left: .25rem solid $grey-2; 45 | color: $grey-1; 46 | margin: .8rem 0; 47 | padding: .5rem 1rem; 48 | 49 | p:last-child { 50 | margin-bottom: 0; 51 | } 52 | 53 | @media (min-width: 600px) { 54 | padding: 0 5rem 0 1.25rem; 55 | } 56 | } 57 | 58 | img { 59 | display: block; 60 | margin: 0 0 1rem; 61 | max-width: 100%; 62 | } 63 | 64 | td { 65 | vertical-align: top; 66 | } 67 | 68 | @media (max-width: 600px) { 69 | .hidden-mobile { 70 | visibility: hidden; 71 | display: none; 72 | clear: both; 73 | float: left; 74 | width: 100%; 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /_sass/tale/_catalogue.scss: -------------------------------------------------------------------------------- 1 | .catalogue { 2 | &-item { 3 | border-bottom: 1px solid $grey-2; 4 | color: $default-color; 5 | display: block; 6 | padding: 2rem 0; 7 | 8 | &:hover .catalogue-line, 9 | &:focus .catalogue-line { 10 | width: 5rem; 11 | } 12 | 13 | &:last-child { 14 | border: 0; 15 | } 16 | } 17 | 18 | &-time { 19 | color: $default-tint; 20 | font-family: $serif-secondary; 21 | letter-spacing: .5px; 22 | } 23 | 24 | &-title { 25 | color: $default-shade; 26 | display: block; 27 | font-family: $sans-serif; 28 | font-size: 1.5rem; 29 | font-weight: 700; 30 | margin: .5rem 0; 31 | } 32 | 33 | &-line { 34 | @include transition(all .3s ease-out); 35 | border-top: .2rem solid $default-shade; 36 | display: block; 37 | width: 2rem; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /_sass/tale/_code.scss: -------------------------------------------------------------------------------- 1 | pre, 2 | code { 3 | font-family: $monospaced; 4 | } 5 | 6 | code { 7 | background-color: $grey-3; 8 | border-radius: 3px; 9 | color: $code-color; 10 | font-size: 85%; 11 | padding: .25em .5em; 12 | } 13 | 14 | pre { 15 | margin: 0 0 1rem; 16 | } 17 | 18 | pre code { 19 | background-color: transparent; 20 | color: inherit; 21 | font-size: 100%; 22 | padding: 0; 23 | } 24 | 25 | .highlight { 26 | background-color: $grey-3; 27 | border-radius: 3px; 28 | line-height: 1.4; 29 | margin: 0 0 1rem; 30 | padding: 1rem; 31 | 32 | pre { 33 | margin-bottom: 0; 34 | overflow-x: auto; 35 | } 36 | 37 | .lineno { 38 | color: $default-tint; 39 | display: inline-block; // Ensures the null space also isn't selectable 40 | padding: 0 .75rem 0 .25rem; 41 | // Make sure numbers aren't selectable 42 | -webkit-user-select: none; 43 | -moz-user-select: none; 44 | user-select: none; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /_sass/tale/_commentation.scss: -------------------------------------------------------------------------------- 1 | .commentation { 2 | border-top: .5px solid $grey-2; 3 | font-family: $serif-secondary; 4 | padding-top: 2rem; 5 | margin-top: 1rem; 6 | position: relative; 7 | text-align: center; 8 | 9 | .active, .btn:hover { 10 | background-color: #666; 11 | color: white; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /_sass/tale/_layout.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | margin: 0 auto; 3 | max-width: 800px; 4 | width: 80%; 5 | } 6 | 7 | main, 8 | footer, 9 | .nav-container { 10 | display: block; 11 | margin: 0 auto; 12 | max-width: 800px; 13 | width: 80%; 14 | } 15 | 16 | .nav { 17 | box-shadow: 0 2px 2px -2px $shadow-color; 18 | overflow: auto; 19 | 20 | &-container { 21 | margin: 1rem auto; 22 | position: relative; 23 | text-align: center; 24 | } 25 | 26 | &-title { 27 | @include transition(all .2s ease-out); 28 | color: $default-color; 29 | display: inline-block; 30 | margin: 0; 31 | padding-right: .2rem; 32 | 33 | &:hover, 34 | &:focus { 35 | opacity: .6; 36 | } 37 | } 38 | 39 | ul { 40 | list-style-type: none; 41 | margin: 1rem 0 0; 42 | padding: 0; 43 | text-align: center; 44 | } 45 | 46 | li { 47 | @include transition(all .2s ease-out); 48 | color: $default-color; 49 | display: inline-block; 50 | opacity: .6; 51 | padding: 0 2rem 0 0; 52 | 53 | &:last-child { 54 | padding-right: 0; 55 | } 56 | 57 | &:hover, 58 | &:focus { 59 | opacity: 1; 60 | } 61 | 62 | .center { 63 | height: 15px; 64 | position: relative; 65 | } 66 | } 67 | 68 | a { 69 | color: $default-color; 70 | font-family: $sans-serif; 71 | } 72 | } 73 | 74 | @media (min-width: 600px) { 75 | .nav { 76 | &-container { 77 | text-align: left; 78 | } 79 | 80 | ul { 81 | bottom: 0; 82 | position: absolute; 83 | right: 0; 84 | } 85 | } 86 | } 87 | 88 | footer { 89 | font-family: $serif-secondary; 90 | padding: 2rem 0; 91 | text-align: center; 92 | 93 | span { 94 | color: $default-color; 95 | font-size: .8rem; 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /_sass/tale/_pagination.scss: -------------------------------------------------------------------------------- 1 | .pagination { 2 | border-top: .5px solid $grey-2; 3 | font-family: $serif-secondary; 4 | padding-top: 2rem; 5 | position: relative; 6 | text-align: center; 7 | 8 | span { 9 | color: $default-shade; 10 | font-size: 1.1rem; 11 | } 12 | 13 | .top { 14 | @include transition(all .3s ease-out); 15 | color: $default-color; 16 | font-family: $sans-serif; 17 | font-size: 1.1rem; 18 | opacity: .6; 19 | 20 | &:hover { 21 | opacity: 1; 22 | } 23 | } 24 | 25 | .arrow { 26 | @include transition(all .3s ease-out); 27 | color: $default-color; 28 | position: absolute; 29 | 30 | &:hover, 31 | &:focus { 32 | opacity: .6; 33 | text-decoration: none; 34 | } 35 | } 36 | 37 | .left { 38 | left: 0; 39 | } 40 | 41 | .right { 42 | right: 0; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /_sass/tale/_post.scss: -------------------------------------------------------------------------------- 1 | .post { 2 | padding: 3rem 0; 3 | font-size: 18px; 4 | line-height: 20px; 5 | // @media (min-width: 600px) { 6 | // font-size: 19px; 7 | // } 8 | 9 | &-info { 10 | color: $default-tint; 11 | font-family: $serif-secondary; 12 | letter-spacing: 0.5px; 13 | text-align: center; 14 | margin-bottom: 25px; 15 | 16 | span { 17 | font-style: italic; 18 | } 19 | } 20 | 21 | &-title { 22 | color: $default-shade; 23 | font-family: $sans-serif; 24 | font-size: 2rem; 25 | margin: 1rem 0; 26 | text-align: center; 27 | } 28 | 29 | &-subtitle { 30 | color: $default-shade; 31 | font-family: $serif-secondary; 32 | font-size: 18px; 33 | text-align: center; 34 | } 35 | 36 | &-line { 37 | border-top: 0.4rem solid $default-shade; 38 | display: block; 39 | margin: 0 auto 3rem; 40 | width: 5rem; 41 | } 42 | 43 | p { 44 | margin: 0 0 1rem; 45 | text-align: justify; 46 | } 47 | 48 | a:hover { 49 | text-decoration: underline; 50 | } 51 | 52 | img { 53 | margin: 0 auto 0.5rem; 54 | } 55 | 56 | img + em { 57 | color: $default-tint; 58 | display: block; 59 | font-family: $sans-serif; 60 | font-size: 0.9rem; 61 | font-style: normal; 62 | text-align: center; 63 | } 64 | 65 | // CSS for making emoji inline 66 | img.emoji { 67 | display: inline-block; 68 | left: 0; 69 | transform: none; 70 | width: 1rem; 71 | height: 1rem; 72 | vertical-align: text-top; 73 | padding: 0; 74 | margin: 0; 75 | } 76 | 77 | .footnotes { 78 | margin-top: 30px; 79 | font-size: 14px; 80 | } 81 | } 82 | 83 | .tags { 84 | a { 85 | display: inline-block; 86 | padding: quarter($base-spacing-unit) $base-spacing-unit; 87 | margin: 0 $base-spacing-unit quarter($base-spacing-unit) 0; 88 | 89 | font-size: $font-size-small; 90 | font-family: $font-base; 91 | line-height: $line-height-medium; 92 | 93 | background-color: $bg-color-gray; 94 | transition: $global-transition; 95 | 96 | @include attention() { 97 | text-decoration: none; 98 | background-color: $bg-color-gray; 99 | } 100 | } 101 | 102 | @include mq($until: tablet) { 103 | margin-bottom: $line-height-medium - half(quarter($line-height-medium)); 104 | } 105 | } 106 | 107 | .extra-info { 108 | 109 | figure { 110 | display: block; 111 | margin: auto; 112 | 113 | img { 114 | display: block; 115 | margin: auto; 116 | text-align: center; 117 | } 118 | 119 | figcaption { 120 | text-align: center; 121 | font-size: 14px; 122 | } 123 | } 124 | } 125 | 126 | -------------------------------------------------------------------------------- /_sass/tale/_relic.scss: -------------------------------------------------------------------------------- 1 | .relic { 2 | padding: 3rem 0; 3 | font-size: 18px; 4 | line-height: 20px; 5 | // @media (min-width: 600px) { 6 | // font-size: 19px; 7 | // } 8 | 9 | &-info { 10 | color: $default-tint; 11 | font-family: $serif-secondary; 12 | letter-spacing: 0.5px; 13 | text-align: center; 14 | margin-bottom: 25px; 15 | 16 | span { 17 | font-style: italic; 18 | } 19 | } 20 | 21 | &-title { 22 | color: $default-shade; 23 | font-family: $sans-serif; 24 | font-size: 2rem; 25 | margin: 1rem 0; 26 | text-align: center; 27 | } 28 | 29 | &-subtitle { 30 | color: $default-shade; 31 | font-family: $serif-secondary; 32 | font-size: 18px; 33 | text-align: center; 34 | } 35 | 36 | &-line { 37 | border-top: 0.4rem solid $default-shade; 38 | display: block; 39 | margin: 0 auto 3rem; 40 | width: 5rem; 41 | } 42 | 43 | &-meta { 44 | color: $default-shade; 45 | font-family: $serif-secondary; 46 | font-size: 18px; 47 | text-align: center; 48 | &-item { 49 | // display: inline-block; 50 | margin: 0.5rem 5rem 1rem 5rem; 51 | } 52 | } 53 | 54 | p { 55 | margin: 0 0 1rem; 56 | text-align: justify; 57 | } 58 | 59 | a:hover { 60 | text-decoration: underline; 61 | } 62 | 63 | img { 64 | margin: 0 auto 0.5rem; 65 | } 66 | 67 | img + em { 68 | color: $default-tint; 69 | display: block; 70 | font-family: $sans-serif; 71 | font-size: 0.9rem; 72 | font-style: normal; 73 | text-align: center; 74 | } 75 | 76 | // CSS for making emoji inline 77 | img.emoji { 78 | display: inline-block; 79 | left: 0; 80 | transform: none; 81 | width: 1rem; 82 | height: 1rem; 83 | vertical-align: text-top; 84 | padding: 0; 85 | margin: 0; 86 | } 87 | 88 | .footnotes { 89 | margin-top: 30px; 90 | font-size: 14px; 91 | } 92 | } 93 | 94 | .tags { 95 | a { 96 | display: inline-block; 97 | padding: quarter($base-spacing-unit) $base-spacing-unit; 98 | margin: 0 $base-spacing-unit quarter($base-spacing-unit) 0; 99 | 100 | font-size: $font-size-small; 101 | font-family: $font-base; 102 | line-height: $line-height-medium; 103 | 104 | background-color: $bg-color-gray; 105 | transition: $global-transition; 106 | 107 | @include attention() { 108 | text-decoration: none; 109 | background-color: $bg-color-gray; 110 | } 111 | } 112 | 113 | @include mq($until: tablet) { 114 | margin-bottom: $line-height-medium - half(quarter($line-height-medium)); 115 | } 116 | } -------------------------------------------------------------------------------- /_sass/tale/_syntax.scss: -------------------------------------------------------------------------------- 1 | .highlight .hll { background-color: #ffc; } 2 | .highlight .c { color: #999; } /* Comment */ 3 | .highlight .err { color: #a00; background-color: #faa } /* Error */ 4 | .highlight .k { color: #069; } /* Keyword */ 5 | .highlight .o { color: #555 } /* Operator */ 6 | .highlight .cm { color: #09f; font-style: italic } /* Comment.Multiline */ 7 | .highlight .cp { color: #099 } /* Comment.Preproc */ 8 | .highlight .c1 { color: #999; } /* Comment.Single */ 9 | .highlight .cs { color: #999; } /* Comment.Special */ 10 | .highlight .gd { background-color: #fcc; border: 1px solid #c00 } /* Generic.Deleted */ 11 | .highlight .ge { font-style: italic } /* Generic.Emph */ 12 | .highlight .gr { color: #f00 } /* Generic.Error */ 13 | .highlight .gh { color: #030; } /* Generic.Heading */ 14 | .highlight .gi { background-color: #cfc; border: 1px solid #0c0 } /* Generic.Inserted */ 15 | .highlight .go { color: #aaa } /* Generic.Output */ 16 | .highlight .gp { color: #009; } /* Generic.Prompt */ 17 | .highlight .gs { } /* Generic.Strong */ 18 | .highlight .gu { color: #030; } /* Generic.Subheading */ 19 | .highlight .gt { color: #9c6 } /* Generic.Traceback */ 20 | .highlight .kc { color: #069; } /* Keyword.Constant */ 21 | .highlight .kd { color: #069; } /* Keyword.Declaration */ 22 | .highlight .kn { color: #069; } /* Keyword.Namespace */ 23 | .highlight .kp { color: #069 } /* Keyword.Pseudo */ 24 | .highlight .kr { color: #069; } /* Keyword.Reserved */ 25 | .highlight .kt { color: #078; } /* Keyword.Type */ 26 | .highlight .m { color: #f60 } /* Literal.Number */ 27 | .highlight .s { color: #d44950 } /* Literal.String */ 28 | .highlight .na { color: #4f9fcf } /* Name.Attribute */ 29 | .highlight .nb { color: #366 } /* Name.Builtin */ 30 | .highlight .nc { color: #0a8; } /* Name.Class */ 31 | .highlight .no { color: #360 } /* Name.Constant */ 32 | .highlight .nd { color: #99f } /* Name.Decorator */ 33 | .highlight .ni { color: #999; } /* Name.Entity */ 34 | .highlight .ne { color: #c00; } /* Name.Exception */ 35 | .highlight .nf { color: #c0f } /* Name.Function */ 36 | .highlight .nl { color: #99f } /* Name.Label */ 37 | .highlight .nn { color: #0cf; } /* Name.Namespace */ 38 | .highlight .nt { color: #2f6f9f; } /* Name.Tag */ 39 | .highlight .nv { color: #033 } /* Name.Variable */ 40 | .highlight .ow { color: #000; } /* Operator.Word */ 41 | .highlight .w { color: #bbb } /* Text.Whitespace */ 42 | .highlight .mf { color: #f60 } /* Literal.Number.Float */ 43 | .highlight .mh { color: #f60 } /* Literal.Number.Hex */ 44 | .highlight .mi { color: #f60 } /* Literal.Number.Integer */ 45 | .highlight .mo { color: #f60 } /* Literal.Number.Oct */ 46 | .highlight .sb { color: #c30 } /* Literal.String.Backtick */ 47 | .highlight .sc { color: #c30 } /* Literal.String.Char */ 48 | .highlight .sd { color: #c30; font-style: italic } /* Literal.String.Doc */ 49 | .highlight .s2 { color: #c30 } /* Literal.String.Double */ 50 | .highlight .se { color: #c30; } /* Literal.String.Escape */ 51 | .highlight .sh { color: #c30 } /* Literal.String.Heredoc */ 52 | .highlight .si { color: #a00 } /* Literal.String.Interpol */ 53 | .highlight .sx { color: #c30 } /* Literal.String.Other */ 54 | .highlight .sr { color: #3aa } /* Literal.String.Regex */ 55 | .highlight .s1 { color: #c30 } /* Literal.String.Single */ 56 | .highlight .ss { color: #fc3 } /* Literal.String.Symbol */ 57 | .highlight .bp { color: #366 } /* Name.Builtin.Pseudo */ 58 | .highlight .vc { color: #033 } /* Name.Variable.Class */ 59 | .highlight .vg { color: #033 } /* Name.Variable.Global */ 60 | .highlight .vi { color: #033 } /* Name.Variable.Instance */ 61 | .highlight .il { color: #f60 } /* Literal.Number.Integer.Long */ 62 | 63 | .css .o, 64 | .css .o + .nt, 65 | .css .nt + .nt { color: #999; } 66 | -------------------------------------------------------------------------------- /_sass/tale/_variables.scss: -------------------------------------------------------------------------------- 1 | // Colors 2 | $default-color: #555; 3 | $default-shade: #353535; 4 | $default-tint: #aaa; 5 | $grey-1: #979797; 6 | $grey-2: #e5e5e5; 7 | $grey-3: #f9f9f9; 8 | $white: #fff; 9 | $blue: #4a9ae1; 10 | $shadow-color: rgba(0, 0, 0, .2); 11 | $code-color: #bf616a; 12 | 13 | // Fonts 14 | $serif-primary: '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Helvetica', 'Microsoft YaHei', 'Times New Roman', Times, serif; 15 | $serif-secondary: Palatino, 'Palatino LT STD', 'Palatino Linotype', 'Book Antiqua', 'Georgia', serif; 16 | $sans-serif: 'Helvetica Neue', 'Segoe UI', Helvetica, Arial, sans-serif; 17 | $monospaced: Menlo, Monaco, monospace; 18 | 19 | @mixin box-sizing($type: border-box) { 20 | -webkit-box-sizing: $type; 21 | -moz-box-sizing: $type; 22 | box-sizing: $type; 23 | } 24 | 25 | @mixin transition($args...) { 26 | -webkit-transition: $args; 27 | -moz-transition: $args; 28 | transition: $args; 29 | } 30 | -------------------------------------------------------------------------------- /_sass/type/__all.scss: -------------------------------------------------------------------------------- 1 | // *----------------------------------*\ 2 | // Type 3 | // *----------------------------------*/ 4 | 5 | @import 'mq'; 6 | @import 'mixins'; 7 | @import 'functions'; 8 | 9 | @import 'variables'; 10 | -------------------------------------------------------------------------------- /_sass/type/_functions.scss: -------------------------------------------------------------------------------- 1 | // *----------------------------------*\ 2 | // Tools > Functions 3 | // *----------------------------------*/ 4 | 5 | @function half($n) { 6 | @return round($n / 2); 7 | } 8 | 9 | @function quarter($n) { 10 | @return round($n / 4); 11 | } 12 | 13 | @function double($n) { 14 | @return round($n * 2); 15 | } 16 | 17 | @function quadruple($n) { 18 | @return round($n * 4); 19 | } -------------------------------------------------------------------------------- /_sass/type/_mixins.scss: -------------------------------------------------------------------------------- 1 | // *----------------------------------*\ 2 | // Tools > Mixins 3 | // *----------------------------------*/ 4 | 5 | // Apply ‘attention’ styles in one go. 6 | // https://goo.gl/LFx8on 7 | // 8 | // Example use: 9 | // 10 | // @include attention() { 11 | // text-decoration: underline; 12 | // } 13 | @mixin attention() { 14 | &:hover, 15 | &:active, 16 | &:focus { 17 | @content; 18 | } 19 | } 20 | 21 | // Mixin to drop micro clearfix into a selector. 22 | // 23 | // // Example use: 24 | // 25 | // .class { 26 | // @include clearfix(); 27 | // } 28 | @mixin clearfix() { 29 | &:after { 30 | content: ''; 31 | display: table; 32 | clear: both; 33 | } 34 | } -------------------------------------------------------------------------------- /_sass/type/_mq.scss: -------------------------------------------------------------------------------- 1 | @use 'sass:math'; 2 | @charset "UTF-8"; // Fixes an issue where Ruby locale is not set properly 3 | // See https://github.com/sass-mq/sass-mq/pull/10 4 | 5 | /// Base font size on the `` element 6 | /// @type Number (unit) 7 | $mq-base-font-size: 16px !default; 8 | 9 | /// Responsive mode 10 | /// 11 | /// Set to `false` to enable support for browsers that do not support @media queries, 12 | /// (IE <= 8, Firefox <= 3, Opera <= 9) 13 | /// 14 | /// You could create a stylesheet served exclusively to older browsers, 15 | /// where @media queries are rasterized 16 | /// 17 | /// @example scss 18 | /// // old-ie.scss 19 | /// $mq-responsive: false; 20 | /// @import 'main'; // @media queries in this file will be rasterized up to $mq-static-breakpoint 21 | /// // larger breakpoints will be ignored 22 | /// 23 | /// @type Boolean 24 | /// @link https://github.com/sass-mq/sass-mq#responsive-mode-off Disabled responsive mode documentation 25 | $mq-responsive: true !default; 26 | 27 | /// Breakpoint list 28 | /// 29 | /// Name your breakpoints in a way that creates a ubiquitous language 30 | /// across team members. It will improve communication between 31 | /// stakeholders, designers, developers, and testers. 32 | /// 33 | /// @type Map 34 | /// @link https://github.com/sass-mq/sass-mq#seeing-the-currently-active-breakpoint Full documentation and examples 35 | $mq-breakpoints: ( 36 | mobile: 320px, 37 | tablet: 740px, 38 | desktop: 980px, 39 | wide: 1300px 40 | ) !default; 41 | 42 | /// Static breakpoint (for fixed-width layouts) 43 | /// 44 | /// Define the breakpoint from $mq-breakpoints that should 45 | /// be used as the target width for the fixed-width layout 46 | /// (i.e. when $mq-responsive is set to 'false') in a old-ie.scss 47 | /// 48 | /// @example scss 49 | /// // tablet-only.scss 50 | /// // 51 | /// // Ignore all styles above tablet breakpoint, 52 | /// // and fix the styles (e.g. layout) at tablet width 53 | /// $mq-responsive: false; 54 | /// $mq-static-breakpoint: tablet; 55 | /// @import 'main'; // @media queries in this file will be rasterized up to tablet 56 | /// // larger breakpoints will be ignored 57 | /// 58 | /// @type String 59 | /// @link https://github.com/sass-mq/sass-mq#adding-custom-breakpoints Full documentation and examples 60 | $mq-static-breakpoint: desktop !default; 61 | 62 | /// Show breakpoints in the top right corner 63 | /// 64 | /// If you want to display the currently active breakpoint in the top 65 | /// right corner of your site during development, add the breakpoints 66 | /// to this list, ordered by width, e.g. (mobile, tablet, desktop). 67 | /// 68 | /// @type map 69 | $mq-show-breakpoints: () !default; 70 | 71 | /// Customize the media type (e.g. `@media screen` or `@media print`) 72 | /// By default sass-mq uses an "all" media type (`@media all and …`) 73 | /// 74 | /// @type String 75 | /// @link https://github.com/sass-mq/sass-mq#changing-media-type Full documentation and examples 76 | $mq-media-type: all !default; 77 | 78 | /// Convert pixels to ems 79 | /// 80 | /// @param {Number} $px - value to convert 81 | /// @param {Number} $base-font-size ($mq-base-font-size) - `` font size 82 | /// 83 | /// @example scss 84 | /// $font-size-in-ems: mq-px2em(16px); 85 | /// p { font-size: mq-px2em(16px); } 86 | /// 87 | /// @requires $mq-base-font-size 88 | /// @returns {Number} 89 | @function mq-px2em($px, $base-font-size: $mq-base-font-size) { 90 | @if unitless($px) { 91 | @warn "Assuming #{$px} to be in pixels, attempting to convert it into pixels."; 92 | @return mq-px2em($px * 1px, $base-font-size); 93 | } @else if unit($px) == em { 94 | @return $px; 95 | } 96 | @return math.div($px, $base-font-size) * 1em; 97 | } 98 | 99 | /// Get a breakpoint's width 100 | /// 101 | /// @param {String} $name - Name of the breakpoint. One of $mq-breakpoints 102 | /// 103 | /// @example scss 104 | /// $tablet-width: mq-get-breakpoint-width(tablet); 105 | /// @media (min-width: mq-get-breakpoint-width(desktop)) {} 106 | /// 107 | /// @requires {Variable} $mq-breakpoints 108 | /// 109 | /// @returns {Number} Value in pixels 110 | @function mq-get-breakpoint-width($name, $breakpoints: $mq-breakpoints) { 111 | @if map-has-key($breakpoints, $name) { 112 | @return map-get($breakpoints, $name); 113 | } @else { 114 | @warn "Breakpoint #{$name} wasn't found in $breakpoints."; 115 | } 116 | } 117 | 118 | /// Media Query mixin 119 | /// 120 | /// @param {String | Boolean} $from (false) - One of $mq-breakpoints 121 | /// @param {String | Boolean} $until (false) - One of $mq-breakpoints 122 | /// @param {String | Boolean} $and (false) - Additional media query parameters 123 | /// @param {String} $media-type ($mq-media-type) - Media type: screen, print… 124 | /// 125 | /// @ignore Undocumented API, for advanced use only: 126 | /// @ignore @param {Map} $breakpoints ($mq-breakpoints) 127 | /// @ignore @param {String} $static-breakpoint ($mq-static-breakpoint) 128 | /// 129 | /// @content styling rules, wrapped into a @media query when $responsive is true 130 | /// 131 | /// @requires {Variable} $mq-media-type 132 | /// @requires {Variable} $mq-breakpoints 133 | /// @requires {Variable} $mq-static-breakpoint 134 | /// @requires {function} mq-px2em 135 | /// @requires {function} mq-get-breakpoint-width 136 | /// 137 | /// @link https://github.com/sass-mq/sass-mq#responsive-mode-on-default Full documentation and examples 138 | /// 139 | /// @example scss 140 | /// .element { 141 | /// @include mq($from: mobile) { 142 | /// color: red; 143 | /// } 144 | /// @include mq($until: tablet) { 145 | /// color: blue; 146 | /// } 147 | /// @include mq(mobile, tablet) { 148 | /// color: green; 149 | /// } 150 | /// @include mq($from: tablet, $and: '(orientation: landscape)') { 151 | /// color: teal; 152 | /// } 153 | /// @include mq(950px) { 154 | /// color: hotpink; 155 | /// } 156 | /// @include mq(tablet, $media-type: screen) { 157 | /// color: hotpink; 158 | /// } 159 | /// // Advanced use: 160 | /// $my-breakpoints: (L: 900px, XL: 1200px); 161 | /// @include mq(L, $breakpoints: $my-breakpoints, $static-breakpoint: L) { 162 | /// color: hotpink; 163 | /// } 164 | /// } 165 | @mixin mq( 166 | $from: false, 167 | $until: false, 168 | $and: false, 169 | $media-type: $mq-media-type, 170 | $breakpoints: $mq-breakpoints, 171 | $responsive: $mq-responsive, 172 | $static-breakpoint: $mq-static-breakpoint 173 | ) { 174 | $min-width: 0; 175 | $max-width: 0; 176 | $media-query: ''; 177 | 178 | // From: this breakpoint (inclusive) 179 | @if $from { 180 | @if type-of($from) == number { 181 | $min-width: mq-px2em($from); 182 | } @else { 183 | $min-width: mq-px2em(mq-get-breakpoint-width($from, $breakpoints)); 184 | } 185 | } 186 | 187 | // Until: that breakpoint (exclusive) 188 | @if $until { 189 | @if type-of($until) == number { 190 | $max-width: mq-px2em($until); 191 | } @else { 192 | $max-width: mq-px2em(mq-get-breakpoint-width($until, $breakpoints)) - .01em; 193 | } 194 | } 195 | 196 | // Responsive support is disabled, rasterize the output outside @media blocks 197 | // The browser will rely on the cascade itself. 198 | @if $responsive == false { 199 | $static-breakpoint-width: mq-get-breakpoint-width($static-breakpoint, $breakpoints); 200 | $target-width: mq-px2em($static-breakpoint-width); 201 | 202 | // Output only rules that start at or span our target width 203 | @if ( 204 | $and == false 205 | and $min-width <= $target-width 206 | and ( 207 | $until == false or $max-width >= $target-width 208 | ) 209 | ) { 210 | @content; 211 | } 212 | } 213 | 214 | // Responsive support is enabled, output rules inside @media queries 215 | @else { 216 | @if $min-width != 0 { $media-query: '#{$media-query} and (min-width: #{$min-width})'; } 217 | @if $max-width != 0 { $media-query: '#{$media-query} and (max-width: #{$max-width})'; } 218 | @if $and { $media-query: '#{$media-query} and #{$and}'; } 219 | 220 | // Remove unnecessary media query prefix 'all and ' 221 | @if ($media-type == 'all' and $media-query != '') { 222 | $media-type: ''; 223 | $media-query: str-slice(unquote($media-query), 6); 224 | } 225 | 226 | @media #{$media-type + $media-query} { 227 | @content; 228 | } 229 | } 230 | } 231 | 232 | /// Add a breakpoint 233 | /// 234 | /// @param {String} $name - Name of the breakpoint 235 | /// @param {Number} $width - Width of the breakpoint 236 | /// 237 | /// @requires {Variable} $mq-breakpoints 238 | /// 239 | /// @example scss 240 | /// @include mq-add-breakpoint(tvscreen, 1920px); 241 | /// @include mq(tvscreen) {} 242 | @mixin mq-add-breakpoint($name, $width) { 243 | $new-breakpoint: ($name: $width); 244 | $mq-breakpoints: map-merge($mq-breakpoints, $new-breakpoint) !global; 245 | } 246 | 247 | /// Show the active breakpoint in the top right corner of the viewport 248 | /// @link https://github.com/sass-mq/sass-mq#seeing-the-currently-active-breakpoint 249 | /// 250 | /// @param {List} $show-breakpoints ($mq-show-breakpoints) - List of breakpoints to show in the top right corner 251 | /// @param {Map} $breakpoints ($mq-breakpoints) - Breakpoint names and sizes 252 | /// 253 | /// @requires {Variable} $mq-breakpoints 254 | /// @requires {Variable} $mq-show-breakpoints 255 | /// 256 | /// @example scss 257 | /// // Show breakpoints using global settings 258 | /// @include mq-show-breakpoints; 259 | /// 260 | /// // Show breakpoints using custom settings 261 | /// @include mq-show-breakpoints((L, XL), (S: 300px, L: 800px, XL: 1200px)); 262 | @mixin mq-show-breakpoints($show-breakpoints: $mq-show-breakpoints, $breakpoints: $mq-breakpoints) { 263 | body:before { 264 | background-color: #FCF8E3; 265 | border-bottom: 1px solid #FBEED5; 266 | border-left: 1px solid #FBEED5; 267 | color: #C09853; 268 | font: small-caption; 269 | padding: 3px 6px; 270 | pointer-events: none; 271 | position: fixed; 272 | right: 0; 273 | top: 0; 274 | z-index: 100; 275 | 276 | // Loop through the breakpoints that should be shown 277 | @each $show-breakpoint in $show-breakpoints { 278 | $width: mq-get-breakpoint-width($show-breakpoint, $breakpoints); 279 | @include mq($show-breakpoint, $breakpoints: $breakpoints) { 280 | content: "#{$show-breakpoint} ≥ #{$width} (#{mq-px2em($width)})"; 281 | } 282 | } 283 | } 284 | } 285 | 286 | @if length($mq-show-breakpoints) > 0 { 287 | @include mq-show-breakpoints; 288 | } 289 | -------------------------------------------------------------------------------- /_sass/type/_variables.scss: -------------------------------------------------------------------------------- 1 | // *----------------------------------*\ 2 | // imported from type 3 | // *----------------------------------*/ 4 | 5 | $mq-breakpoints: ( 6 | mobile: 320px, 7 | tablet: 640px, 8 | desktop: 1024px 9 | ); 10 | 11 | $base-spacing-unit: 16px; 12 | 13 | $global-transition: .4s; 14 | 15 | // Colors 16 | $color-brand: #00A0FF; 17 | $color-white: #FFFFFF; 18 | $color-text: #323232; 19 | $color-gray: #2B5F72; 20 | 21 | // Background Colors 22 | $bg-color-white: $color-white; 23 | $bg-color-dark: #222228; 24 | $bg-color-gray: #FAFAFA; 25 | 26 | // Border 27 | $color-border: #E9EFF3; 28 | 29 | // Links 30 | $color-link: $color-text; 31 | $color-link-hover: $color-brand; 32 | 33 | // Fonts 34 | $font-base: 35 | -apple-system, 36 | BlinkMacSystemFont, 37 | 'Segoe UI', 38 | Helvetica, 39 | 'Microsoft YaHei', 40 | 华文细黑, 41 | Arial, 42 | sans-serif, 43 | 'Apple Color Emoji', 44 | 'Segoe UI Emoji', 45 | 'Segoe UI Symbol'; 46 | $font-monospace: Courier, monospace; 47 | 48 | $font-size-base: 19px; 49 | $font-size-medium: 16px; 50 | $font-size-small: 14px; 51 | $font-size-tiny: 12px; 52 | 53 | $font-weight-light: 300; 54 | $font-weight-regular: 400; 55 | $font-weight-bold: 600; 56 | $font-weight-bolder: 900; 57 | 58 | $line-height-base: round($font-size-base * 1.7); 59 | $line-height-medium: round($font-size-medium * 1.55); 60 | $line-height-small: round($font-size-small * 1.55); 61 | $line-height-tiny: round($font-size-tiny * 1.55); 62 | -------------------------------------------------------------------------------- /_sass/vendor/_gitalk-plus.scss: -------------------------------------------------------------------------------- 1 | /* https://gist.github.com/geektutu/f379d87767787979507a0e4a20da64ba */ 2 | 3 | #gitalk-related.dis-wrapper { 4 | font-size: 14px; 5 | margin: 70px 0; 6 | overflow: hidden; 7 | padding-bottom: 10px; 8 | } 9 | 10 | #gitalk-related * { 11 | margin: 0; 12 | padding: 0; 13 | box-sizing: border-box; 14 | text-decoration: none; 15 | transform: none; 16 | -webkit-transform: none; 17 | } 18 | 19 | #gitalk-related .dis-divide { 20 | border-top: 2px solid #e7e9ee; 21 | width: 100%; 22 | float: left; 23 | padding: 5px 10px; 24 | margin-top: 20px; 25 | text-align: center; 26 | } 27 | 28 | #gitalk-related .dis-item { 29 | width: 50%; 30 | float: left; 31 | padding: 0px 10px; 32 | margin-top: 20px; 33 | height: 108px; 34 | overflow: hidden; 35 | } 36 | 37 | #gitalk-related .dis-item-title { 38 | font-size: 16px; 39 | color: #6190e8; 40 | font-weight: 500; 41 | max-height: 3em; 42 | line-height: 1.5; 43 | overflow: hidden; 44 | } 45 | 46 | #gitalk-related .dis-item-des { 47 | font-size: 0.85em; 48 | } 49 | 50 | #gitalk-related .dis-divide a, 51 | #gitalk-related .dis-item-des, 52 | #gitalk-related .dis-item-user { 53 | color: rgba(30, 55, 70, .4); 54 | } 55 | 56 | #gitalk-related .dis-item-img { 57 | width: 30px; 58 | height: 30px; 59 | margin-top: 3px; 60 | } 61 | 62 | #gitalk-related .dis-item-content { 63 | display: flex; 64 | } 65 | 66 | #gitalk-related .dis-item-content>p { 67 | padding-left: 10px; 68 | color: #333; 69 | line-height: 1.4em; 70 | max-height: 4.2em; 71 | overflow: hidden; 72 | } 73 | 74 | .text-center { 75 | text-align: center !important; 76 | } 77 | -------------------------------------------------------------------------------- /_sass/vendor/_gitalk.scss: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: octicons-link; 3 | src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==) format('woff'); 4 | } 5 | 6 | .markdown-body { 7 | -ms-text-size-adjust: 100%; 8 | -webkit-text-size-adjust: 100%; 9 | line-height: 1.5; 10 | color: #24292e; 11 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; 12 | font-size: 16px; 13 | line-height: 1.5; 14 | word-wrap: break-word; 15 | } 16 | 17 | .markdown-body .pl-c { 18 | color: #6a737d; 19 | } 20 | 21 | .markdown-body .pl-c1, 22 | .markdown-body .pl-s .pl-v { 23 | color: #005cc5; 24 | } 25 | 26 | .markdown-body .pl-e, 27 | .markdown-body .pl-en { 28 | color: #6f42c1; 29 | } 30 | 31 | .markdown-body .pl-smi, 32 | .markdown-body .pl-s .pl-s1 { 33 | color: #24292e; 34 | } 35 | 36 | .markdown-body .pl-ent { 37 | color: #22863a; 38 | } 39 | 40 | .markdown-body .pl-k { 41 | color: #d73a49; 42 | } 43 | 44 | .markdown-body .pl-s, 45 | .markdown-body .pl-pds, 46 | .markdown-body .pl-s .pl-pse .pl-s1, 47 | .markdown-body .pl-sr, 48 | .markdown-body .pl-sr .pl-cce, 49 | .markdown-body .pl-sr .pl-sre, 50 | .markdown-body .pl-sr .pl-sra { 51 | color: #032f62; 52 | } 53 | 54 | .markdown-body .pl-v, 55 | .markdown-body .pl-smw { 56 | color: #e36209; 57 | } 58 | 59 | .markdown-body .pl-bu { 60 | color: #b31d28; 61 | } 62 | 63 | .markdown-body .pl-ii { 64 | color: #fafbfc; 65 | background-color: #b31d28; 66 | } 67 | 68 | .markdown-body .pl-c2 { 69 | color: #fafbfc; 70 | background-color: #d73a49; 71 | } 72 | 73 | .markdown-body .pl-c2::before { 74 | content: "^M"; 75 | } 76 | 77 | .markdown-body .pl-sr .pl-cce { 78 | font-weight: bold; 79 | color: #22863a; 80 | } 81 | 82 | .markdown-body .pl-ml { 83 | color: #735c0f; 84 | } 85 | 86 | .markdown-body .pl-mh, 87 | .markdown-body .pl-mh .pl-en, 88 | .markdown-body .pl-ms { 89 | font-weight: bold; 90 | color: #005cc5; 91 | } 92 | 93 | .markdown-body .pl-mi { 94 | font-style: italic; 95 | color: #24292e; 96 | } 97 | 98 | .markdown-body .pl-mb { 99 | font-weight: bold; 100 | color: #24292e; 101 | } 102 | 103 | .markdown-body .pl-md { 104 | color: #b31d28; 105 | background-color: #ffeef0; 106 | } 107 | 108 | .markdown-body .pl-mi1 { 109 | color: #22863a; 110 | background-color: #f0fff4; 111 | } 112 | 113 | .markdown-body .pl-mc { 114 | color: #e36209; 115 | background-color: #ffebda; 116 | } 117 | 118 | .markdown-body .pl-mi2 { 119 | color: #f6f8fa; 120 | background-color: #005cc5; 121 | } 122 | 123 | .markdown-body .pl-mdr { 124 | font-weight: bold; 125 | color: #6f42c1; 126 | } 127 | 128 | .markdown-body .pl-ba { 129 | color: #586069; 130 | } 131 | 132 | .markdown-body .pl-sg { 133 | color: #959da5; 134 | } 135 | 136 | .markdown-body .pl-corl { 137 | text-decoration: underline; 138 | color: #032f62; 139 | } 140 | 141 | .markdown-body .octicon { 142 | display: inline-block; 143 | vertical-align: text-top; 144 | fill: currentColor; 145 | } 146 | 147 | .markdown-body a { 148 | background-color: transparent; 149 | -webkit-text-decoration-skip: objects; 150 | } 151 | 152 | .markdown-body a:active, 153 | .markdown-body a:hover { 154 | outline-width: 0; 155 | } 156 | 157 | .markdown-body strong { 158 | font-weight: inherit; 159 | } 160 | 161 | .markdown-body strong { 162 | font-weight: bolder; 163 | } 164 | 165 | .markdown-body h1 { 166 | font-size: 2em; 167 | margin: 0.67em 0; 168 | } 169 | 170 | .markdown-body img { 171 | border-style: none; 172 | } 173 | 174 | .markdown-body svg:not(:root) { 175 | overflow: hidden; 176 | } 177 | 178 | .markdown-body code, 179 | .markdown-body kbd, 180 | .markdown-body pre { 181 | font-family: monospace, monospace; 182 | font-size: 1em; 183 | } 184 | 185 | .markdown-body hr { 186 | -webkit-box-sizing: content-box; 187 | box-sizing: content-box; 188 | height: 0; 189 | overflow: visible; 190 | } 191 | 192 | .markdown-body input { 193 | font: inherit; 194 | margin: 0; 195 | } 196 | 197 | .markdown-body input { 198 | overflow: visible; 199 | } 200 | 201 | .markdown-body [type="checkbox"] { 202 | -webkit-box-sizing: border-box; 203 | box-sizing: border-box; 204 | padding: 0; 205 | } 206 | 207 | .markdown-body * { 208 | -webkit-box-sizing: border-box; 209 | box-sizing: border-box; 210 | } 211 | 212 | .markdown-body input { 213 | font-family: inherit; 214 | font-size: inherit; 215 | line-height: inherit; 216 | } 217 | 218 | .markdown-body a { 219 | color: #0366d6; 220 | text-decoration: none; 221 | } 222 | 223 | .markdown-body a:hover { 224 | text-decoration: underline; 225 | } 226 | 227 | .markdown-body strong { 228 | font-weight: 600; 229 | } 230 | 231 | .markdown-body hr { 232 | height: 0; 233 | margin: 15px 0; 234 | overflow: hidden; 235 | background: transparent; 236 | border: 0; 237 | border-bottom: 1px solid #dfe2e5; 238 | } 239 | 240 | .markdown-body hr::before { 241 | display: table; 242 | content: ""; 243 | } 244 | 245 | .markdown-body hr::after { 246 | display: table; 247 | clear: both; 248 | content: ""; 249 | } 250 | 251 | .markdown-body table { 252 | border-spacing: 0; 253 | border-collapse: collapse; 254 | } 255 | 256 | .markdown-body td, 257 | .markdown-body th { 258 | padding: 0; 259 | } 260 | 261 | .markdown-body h1, 262 | .markdown-body h2, 263 | .markdown-body h3, 264 | .markdown-body h4, 265 | .markdown-body h5, 266 | .markdown-body h6 { 267 | margin-top: 0; 268 | margin-bottom: 0; 269 | } 270 | 271 | .markdown-body h1 { 272 | font-size: 32px; 273 | font-weight: 600; 274 | } 275 | 276 | .markdown-body h2 { 277 | font-size: 24px; 278 | font-weight: 600; 279 | } 280 | 281 | .markdown-body h3 { 282 | font-size: 20px; 283 | font-weight: 600; 284 | } 285 | 286 | .markdown-body h4 { 287 | font-size: 16px; 288 | font-weight: 600; 289 | } 290 | 291 | .markdown-body h5 { 292 | font-size: 14px; 293 | font-weight: 600; 294 | } 295 | 296 | .markdown-body h6 { 297 | font-size: 12px; 298 | font-weight: 600; 299 | } 300 | 301 | .markdown-body p { 302 | margin-top: 0; 303 | margin-bottom: 10px; 304 | } 305 | 306 | .markdown-body blockquote { 307 | margin: 0; 308 | } 309 | 310 | .markdown-body ul, 311 | .markdown-body ol { 312 | padding-left: 0; 313 | margin-top: 0; 314 | margin-bottom: 0; 315 | } 316 | 317 | .markdown-body ol ol, 318 | .markdown-body ul ol { 319 | list-style-type: lower-roman; 320 | } 321 | 322 | .markdown-body ul ul ol, 323 | .markdown-body ul ol ol, 324 | .markdown-body ol ul ol, 325 | .markdown-body ol ol ol { 326 | list-style-type: lower-alpha; 327 | } 328 | 329 | .markdown-body dd { 330 | margin-left: 0; 331 | } 332 | 333 | .markdown-body code { 334 | font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; 335 | font-size: 12px; 336 | } 337 | 338 | .markdown-body pre { 339 | margin-top: 0; 340 | margin-bottom: 0; 341 | font: 12px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; 342 | } 343 | 344 | .markdown-body .octicon { 345 | vertical-align: text-bottom; 346 | } 347 | 348 | .markdown-body .pl-0 { 349 | padding-left: 0 !important; 350 | } 351 | 352 | .markdown-body .pl-1 { 353 | padding-left: 4px !important; 354 | } 355 | 356 | .markdown-body .pl-2 { 357 | padding-left: 8px !important; 358 | } 359 | 360 | .markdown-body .pl-3 { 361 | padding-left: 16px !important; 362 | } 363 | 364 | .markdown-body .pl-4 { 365 | padding-left: 24px !important; 366 | } 367 | 368 | .markdown-body .pl-5 { 369 | padding-left: 32px !important; 370 | } 371 | 372 | .markdown-body .pl-6 { 373 | padding-left: 40px !important; 374 | } 375 | 376 | .markdown-body::before { 377 | display: table; 378 | content: ""; 379 | } 380 | 381 | .markdown-body::after { 382 | display: table; 383 | clear: both; 384 | content: ""; 385 | } 386 | 387 | .markdown-body>*:first-child { 388 | margin-top: 0 !important; 389 | } 390 | 391 | .markdown-body>*:last-child { 392 | margin-bottom: 0 !important; 393 | } 394 | 395 | .markdown-body a:not([href]) { 396 | color: inherit; 397 | text-decoration: none; 398 | } 399 | 400 | .markdown-body .anchor { 401 | float: left; 402 | padding-right: 4px; 403 | margin-left: -20px; 404 | line-height: 1; 405 | } 406 | 407 | .markdown-body .anchor:focus { 408 | outline: none; 409 | } 410 | 411 | .markdown-body p, 412 | .markdown-body blockquote, 413 | .markdown-body ul, 414 | .markdown-body ol, 415 | .markdown-body dl, 416 | .markdown-body table, 417 | .markdown-body pre { 418 | margin-top: 0; 419 | margin-bottom: 16px; 420 | } 421 | 422 | .markdown-body hr { 423 | height: 0.25em; 424 | padding: 0; 425 | margin: 24px 0; 426 | background-color: #e1e4e8; 427 | border: 0; 428 | } 429 | 430 | .markdown-body blockquote { 431 | padding: 0 1em; 432 | color: #6a737d; 433 | border-left: 0.25em solid #dfe2e5; 434 | } 435 | 436 | .markdown-body blockquote>:first-child { 437 | margin-top: 0; 438 | } 439 | 440 | .markdown-body blockquote>:last-child { 441 | margin-bottom: 0; 442 | } 443 | 444 | .markdown-body kbd { 445 | display: inline-block; 446 | padding: 3px 5px; 447 | font-size: 11px; 448 | line-height: 10px; 449 | color: #444d56; 450 | vertical-align: middle; 451 | background-color: #fafbfc; 452 | border: solid 1px #c6cbd1; 453 | border-bottom-color: #959da5; 454 | border-radius: 3px; 455 | -webkit-box-shadow: inset 0 -1px 0 #959da5; 456 | box-shadow: inset 0 -1px 0 #959da5; 457 | } 458 | 459 | .markdown-body h1, 460 | .markdown-body h2, 461 | .markdown-body h3, 462 | .markdown-body h4, 463 | .markdown-body h5, 464 | .markdown-body h6 { 465 | margin-top: 24px; 466 | margin-bottom: 16px; 467 | font-weight: 600; 468 | line-height: 1.25; 469 | } 470 | 471 | .markdown-body h1 .octicon-link, 472 | .markdown-body h2 .octicon-link, 473 | .markdown-body h3 .octicon-link, 474 | .markdown-body h4 .octicon-link, 475 | .markdown-body h5 .octicon-link, 476 | .markdown-body h6 .octicon-link { 477 | color: #1b1f23; 478 | vertical-align: middle; 479 | visibility: hidden; 480 | } 481 | 482 | .markdown-body h1:hover .anchor, 483 | .markdown-body h2:hover .anchor, 484 | .markdown-body h3:hover .anchor, 485 | .markdown-body h4:hover .anchor, 486 | .markdown-body h5:hover .anchor, 487 | .markdown-body h6:hover .anchor { 488 | text-decoration: none; 489 | } 490 | 491 | .markdown-body h1:hover .anchor .octicon-link, 492 | .markdown-body h2:hover .anchor .octicon-link, 493 | .markdown-body h3:hover .anchor .octicon-link, 494 | .markdown-body h4:hover .anchor .octicon-link, 495 | .markdown-body h5:hover .anchor .octicon-link, 496 | .markdown-body h6:hover .anchor .octicon-link { 497 | visibility: visible; 498 | } 499 | 500 | .markdown-body h1 { 501 | padding-bottom: 0.3em; 502 | font-size: 2em; 503 | border-bottom: 1px solid #eaecef; 504 | } 505 | 506 | .markdown-body h2 { 507 | padding-bottom: 0.3em; 508 | font-size: 1.5em; 509 | border-bottom: 1px solid #eaecef; 510 | } 511 | 512 | .markdown-body h3 { 513 | font-size: 1.25em; 514 | } 515 | 516 | .markdown-body h4 { 517 | font-size: 1em; 518 | } 519 | 520 | .markdown-body h5 { 521 | font-size: 0.875em; 522 | } 523 | 524 | .markdown-body h6 { 525 | font-size: 0.85em; 526 | color: #6a737d; 527 | } 528 | 529 | .markdown-body ul, 530 | .markdown-body ol { 531 | padding-left: 2em; 532 | } 533 | 534 | .markdown-body ul ul, 535 | .markdown-body ul ol, 536 | .markdown-body ol ol, 537 | .markdown-body ol ul { 538 | margin-top: 0; 539 | margin-bottom: 0; 540 | } 541 | 542 | .markdown-body li>p { 543 | margin-top: 16px; 544 | } 545 | 546 | .markdown-body li+li { 547 | margin-top: 0.25em; 548 | } 549 | 550 | .markdown-body dl { 551 | padding: 0; 552 | } 553 | 554 | .markdown-body dl dt { 555 | padding: 0; 556 | margin-top: 16px; 557 | font-size: 1em; 558 | font-style: italic; 559 | font-weight: 600; 560 | } 561 | 562 | .markdown-body dl dd { 563 | padding: 0 16px; 564 | margin-bottom: 16px; 565 | } 566 | 567 | .markdown-body table { 568 | display: block; 569 | width: 100%; 570 | overflow: auto; 571 | } 572 | 573 | .markdown-body table th { 574 | font-weight: 600; 575 | } 576 | 577 | .markdown-body table th, 578 | .markdown-body table td { 579 | padding: 6px 13px; 580 | border: 1px solid #dfe2e5; 581 | } 582 | 583 | .markdown-body table tr { 584 | background-color: #fff; 585 | border-top: 1px solid #c6cbd1; 586 | } 587 | 588 | .markdown-body table tr:nth-child(2n) { 589 | background-color: #f6f8fa; 590 | } 591 | 592 | .markdown-body img { 593 | max-width: 100%; 594 | -webkit-box-sizing: content-box; 595 | box-sizing: content-box; 596 | background-color: #fff; 597 | } 598 | 599 | .markdown-body code { 600 | padding: 0; 601 | padding-top: 0.2em; 602 | padding-bottom: 0.2em; 603 | margin: 0; 604 | font-size: 85%; 605 | background-color: rgba(27,31,35,0.05); 606 | border-radius: 3px; 607 | } 608 | 609 | .markdown-body code::before, 610 | .markdown-body code::after { 611 | letter-spacing: -0.2em; 612 | content: "\A0"; 613 | } 614 | 615 | .markdown-body pre { 616 | word-wrap: normal; 617 | } 618 | 619 | .markdown-body pre>code { 620 | padding: 0; 621 | margin: 0; 622 | font-size: 100%; 623 | word-break: normal; 624 | white-space: pre; 625 | background: transparent; 626 | border: 0; 627 | } 628 | 629 | .markdown-body .highlight { 630 | margin-bottom: 16px; 631 | } 632 | 633 | .markdown-body .highlight pre { 634 | margin-bottom: 0; 635 | word-break: normal; 636 | } 637 | 638 | .markdown-body .highlight pre, 639 | .markdown-body pre { 640 | padding: 16px; 641 | overflow: auto; 642 | font-size: 85%; 643 | line-height: 1.45; 644 | background-color: #f6f8fa; 645 | border-radius: 3px; 646 | } 647 | 648 | .markdown-body pre code { 649 | display: inline; 650 | max-width: auto; 651 | padding: 0; 652 | margin: 0; 653 | overflow: visible; 654 | line-height: inherit; 655 | word-wrap: normal; 656 | background-color: transparent; 657 | border: 0; 658 | } 659 | 660 | .markdown-body pre code::before, 661 | .markdown-body pre code::after { 662 | content: normal; 663 | } 664 | 665 | .markdown-body .full-commit .btn-outline:not(:disabled):hover { 666 | color: #005cc5; 667 | border-color: #005cc5; 668 | } 669 | 670 | .markdown-body kbd { 671 | display: inline-block; 672 | padding: 3px 5px; 673 | font: 11px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; 674 | line-height: 10px; 675 | color: #444d56; 676 | vertical-align: middle; 677 | background-color: #fafbfc; 678 | border: solid 1px #d1d5da; 679 | border-bottom-color: #c6cbd1; 680 | border-radius: 3px; 681 | -webkit-box-shadow: inset 0 -1px 0 #c6cbd1; 682 | box-shadow: inset 0 -1px 0 #c6cbd1; 683 | } 684 | 685 | .markdown-body :checked+.radio-label { 686 | position: relative; 687 | z-index: 1; 688 | border-color: #0366d6; 689 | } 690 | 691 | .markdown-body .task-list-item { 692 | list-style-type: none; 693 | } 694 | 695 | .markdown-body .task-list-item+.task-list-item { 696 | margin-top: 3px; 697 | } 698 | 699 | .markdown-body .task-list-item input { 700 | margin: 0 0.2em 0.25em -1.6em; 701 | vertical-align: middle; 702 | } 703 | 704 | .markdown-body hr { 705 | border-bottom-color: #eee; 706 | } 707 | /* variables */ 708 | /* functions & mixins */ 709 | /* variables - calculated */ 710 | /* styles */ 711 | .gt-container { 712 | -webkit-box-sizing: border-box; 713 | box-sizing: border-box; 714 | font-size: 16px; 715 | /* loader */ 716 | /* error */ 717 | /* initing */ 718 | /* no int */ 719 | /* link */ 720 | /* meta */ 721 | /* popup */ 722 | /* header */ 723 | /* comments */ 724 | /* comment */ 725 | } 726 | .gt-container * { 727 | -webkit-box-sizing: border-box; 728 | box-sizing: border-box; 729 | } 730 | .gt-container a { 731 | color: #6190e8; 732 | } 733 | .gt-container a:hover { 734 | color: #81a6ed; 735 | border-color: #81a6ed; 736 | } 737 | .gt-container a.is--active { 738 | color: #333; 739 | cursor: default !important; 740 | } 741 | .gt-container a.is--active:hover { 742 | color: #333; 743 | } 744 | .gt-container .hide { 745 | display: none !important; 746 | } 747 | .gt-container .gt-svg { 748 | display: inline-block; 749 | width: 1em; 750 | height: 1em; 751 | vertical-align: sub; 752 | } 753 | .gt-container .gt-svg svg { 754 | width: 100%; 755 | height: 100%; 756 | fill: #6190e8; 757 | } 758 | .gt-container .gt-ico { 759 | display: inline-block; 760 | } 761 | .gt-container .gt-ico-text { 762 | margin-left: 0.3125em; 763 | } 764 | .gt-container .gt-ico-github { 765 | width: 100%; 766 | height: 100%; 767 | } 768 | .gt-container .gt-ico-github .gt-svg { 769 | width: 100%; 770 | height: 100%; 771 | } 772 | .gt-container .gt-ico-github svg { 773 | fill: inherit; 774 | } 775 | .gt-container .gt-spinner { 776 | position: relative; 777 | } 778 | .gt-container .gt-spinner::before { 779 | content: ''; 780 | -webkit-box-sizing: border-box; 781 | box-sizing: border-box; 782 | position: absolute; 783 | top: 3px; 784 | width: 0.75em; 785 | height: 0.75em; 786 | margin-top: -0.1875em; 787 | margin-left: -0.375em; 788 | border-radius: 50%; 789 | border: 1px solid #fff; 790 | border-top-color: #6190e8; 791 | -webkit-animation: gt-kf-rotate 0.6s linear infinite; 792 | animation: gt-kf-rotate 0.6s linear infinite; 793 | } 794 | .gt-container .gt-loader { 795 | position: relative; 796 | border: 1px solid #999; 797 | -webkit-animation: ease gt-kf-rotate 1.5s infinite; 798 | animation: ease gt-kf-rotate 1.5s infinite; 799 | display: inline-block; 800 | font-style: normal; 801 | width: 1.75em; 802 | height: 1.75em; 803 | line-height: 1.75em; 804 | border-radius: 50%; 805 | } 806 | .gt-container .gt-loader:before { 807 | content: ''; 808 | position: absolute; 809 | display: block; 810 | top: 0; 811 | left: 50%; 812 | margin-top: -0.1875em; 813 | margin-left: -0.1875em; 814 | width: 0.375em; 815 | height: 0.375em; 816 | background-color: #999; 817 | border-radius: 50%; 818 | } 819 | .gt-container .gt-avatar { 820 | display: inline-block; 821 | width: 3.125em; 822 | height: 3.125em; 823 | } 824 | @media (max-width: 479px) { 825 | .gt-container .gt-avatar { 826 | width: 2em; 827 | height: 2em; 828 | } 829 | } 830 | .gt-container .gt-avatar img { 831 | width: 100%; 832 | height: auto; 833 | border-radius: 3px; 834 | } 835 | .gt-container .gt-avatar-github { 836 | width: 3em; 837 | height: 3em; 838 | cursor: pointer; 839 | } 840 | @media (max-width: 479px) { 841 | .gt-container .gt-avatar-github { 842 | width: 1.875em; 843 | height: 1.875em; 844 | } 845 | } 846 | .gt-container .gt-btn { 847 | padding: 0.75em 1.25em; 848 | display: inline-block; 849 | line-height: 1; 850 | text-decoration: none; 851 | white-space: nowrap; 852 | cursor: pointer; 853 | border: 1px solid #6190e8; 854 | border-radius: 5px; 855 | background-color: #6190e8; 856 | color: #fff; 857 | outline: none; 858 | font-size: 0.75em; 859 | } 860 | .gt-container .gt-btn-text { 861 | font-weight: 400; 862 | } 863 | .gt-container .gt-btn-loading { 864 | position: relative; 865 | margin-left: 0.5em; 866 | display: inline-block; 867 | width: 0.75em; 868 | height: 1em; 869 | vertical-align: top; 870 | } 871 | .gt-container .gt-btn.is--disable { 872 | cursor: not-allowed; 873 | opacity: 0.5; 874 | } 875 | .gt-container .gt-btn-login { 876 | margin-right: 0; 877 | } 878 | .gt-container .gt-btn-preview { 879 | background-color: #fff; 880 | color: #6190e8; 881 | } 882 | .gt-container .gt-btn-preview:hover { 883 | background-color: #f2f2f2; 884 | border-color: #81a6ed; 885 | } 886 | .gt-container .gt-btn-public:hover { 887 | background-color: #81a6ed; 888 | border-color: #81a6ed; 889 | } 890 | .gt-container .gt-error { 891 | text-align: center; 892 | margin: 0.625em; 893 | color: #ff3860; 894 | } 895 | .gt-container .gt-initing { 896 | padding: 1.25em 0; 897 | text-align: center; 898 | } 899 | .gt-container .gt-initing-text { 900 | margin: 0.625em auto; 901 | font-size: 92%; 902 | } 903 | .gt-container .gt-no-init { 904 | padding: 1.25em 0; 905 | text-align: center; 906 | } 907 | .gt-container .gt-link { 908 | border-bottom: 1px dotted #6190e8; 909 | } 910 | .gt-container .gt-link-counts, 911 | .gt-container .gt-link-project { 912 | text-decoration: none; 913 | } 914 | .gt-container .gt-meta { 915 | margin: 1.25em 0; 916 | padding: 1em 0; 917 | position: relative; 918 | border-bottom: 1px solid #e9e9e9; 919 | font-size: 1em; 920 | position: relative; 921 | z-index: 10; 922 | } 923 | .gt-container .gt-meta:before, 924 | .gt-container .gt-meta:after { 925 | content: " "; 926 | display: table; 927 | } 928 | .gt-container .gt-meta:after { 929 | clear: both; 930 | } 931 | .gt-container .gt-counts { 932 | margin: 0 0.625em 0 0; 933 | } 934 | .gt-container .gt-user { 935 | float: right; 936 | margin: 0; 937 | font-size: 92%; 938 | } 939 | .gt-container .gt-user-pic { 940 | width: 16px; 941 | height: 16px; 942 | vertical-align: top; 943 | margin-right: 0.5em; 944 | } 945 | .gt-container .gt-user-inner { 946 | display: inline-block; 947 | cursor: pointer; 948 | } 949 | .gt-container .gt-user .gt-ico { 950 | margin: 0 0 0 0.3125em; 951 | } 952 | .gt-container .gt-user .gt-ico svg { 953 | fill: inherit; 954 | } 955 | .gt-container .gt-user .is--poping .gt-ico svg { 956 | fill: #6190e8; 957 | } 958 | .gt-container .gt-version { 959 | color: #a1a1a1; 960 | margin-left: 0.375em; 961 | } 962 | .gt-container .gt-copyright { 963 | margin: 0 0.9375em 0.5em; 964 | border-top: 1px solid #e9e9e9; 965 | padding-top: 0.5em; 966 | } 967 | .gt-container .gt-popup { 968 | position: absolute; 969 | right: 0; 970 | top: 2.375em; 971 | background: #fff; 972 | display: inline-block; 973 | border: 1px solid #e9e9e9; 974 | padding: 0.625em 0; 975 | font-size: 0.875em; 976 | letter-spacing: 0.5px; 977 | } 978 | .gt-container .gt-popup .gt-action { 979 | cursor: pointer; 980 | display: block; 981 | margin: 0.5em 0; 982 | padding: 0 1.125em; 983 | position: relative; 984 | text-decoration: none; 985 | } 986 | .gt-container .gt-popup .gt-action.is--active:before { 987 | content: ''; 988 | width: 0.25em; 989 | height: 0.25em; 990 | background: #6190e8; 991 | position: absolute; 992 | left: 0.5em; 993 | top: 0.4375em; 994 | } 995 | .gt-container .gt-header { 996 | position: relative; 997 | display: -webkit-box; 998 | display: -ms-flexbox; 999 | display: flex; 1000 | } 1001 | .gt-container .gt-header-comment { 1002 | -webkit-box-flex: 1; 1003 | -ms-flex: 1; 1004 | flex: 1; 1005 | margin-left: 1.25em; 1006 | } 1007 | @media (max-width: 479px) { 1008 | .gt-container .gt-header-comment { 1009 | margin-left: 0.875em; 1010 | } 1011 | } 1012 | .gt-container .gt-header-textarea { 1013 | padding: 0.75em; 1014 | display: block; 1015 | -webkit-box-sizing: border-box; 1016 | box-sizing: border-box; 1017 | width: 100%; 1018 | min-height: 5.125em; 1019 | max-height: 15em; 1020 | border-radius: 5px; 1021 | border: 1px solid rgba(0,0,0,0.1); 1022 | font-size: 0.875em; 1023 | word-wrap: break-word; 1024 | resize: vertical; 1025 | background-color: #f6f6f6; 1026 | outline: none; 1027 | -webkit-transition: all 0.25s ease; 1028 | transition: all 0.25s ease; 1029 | } 1030 | .gt-container .gt-header-textarea:hover { 1031 | background-color: #fbfbfb; 1032 | } 1033 | .gt-container .gt-header-preview { 1034 | padding: 0.75em; 1035 | border-radius: 5px; 1036 | border: 1px solid rgba(0,0,0,0.1); 1037 | background-color: #f6f6f6; 1038 | } 1039 | .gt-container .gt-header-controls { 1040 | position: relative; 1041 | margin: 0.75em 0 0; 1042 | } 1043 | .gt-container .gt-header-controls:before, 1044 | .gt-container .gt-header-controls:after { 1045 | content: " "; 1046 | display: table; 1047 | } 1048 | .gt-container .gt-header-controls:after { 1049 | clear: both; 1050 | } 1051 | @media (max-width: 479px) { 1052 | .gt-container .gt-header-controls { 1053 | margin: 0; 1054 | } 1055 | } 1056 | .gt-container .gt-header-controls-tip { 1057 | font-size: 0.875em; 1058 | color: #6190e8; 1059 | text-decoration: none; 1060 | vertical-align: sub; 1061 | } 1062 | @media (max-width: 479px) { 1063 | .gt-container .gt-header-controls-tip { 1064 | display: none; 1065 | } 1066 | } 1067 | .gt-container .gt-header-controls .gt-btn { 1068 | float: right; 1069 | margin-left: 1.25em; 1070 | } 1071 | @media (max-width: 479px) { 1072 | .gt-container .gt-header-controls .gt-btn { 1073 | float: none; 1074 | width: 100%; 1075 | margin: 0.75em 0 0; 1076 | } 1077 | } 1078 | .gt-container:after { 1079 | content: ''; 1080 | position: fixed; 1081 | bottom: 100%; 1082 | left: 0; 1083 | right: 0; 1084 | top: 0; 1085 | opacity: 0; 1086 | } 1087 | .gt-container.gt-input-focused { 1088 | position: relative; 1089 | } 1090 | .gt-container.gt-input-focused:after { 1091 | content: ''; 1092 | position: fixed; 1093 | bottom: 0%; 1094 | left: 0; 1095 | right: 0; 1096 | top: 0; 1097 | background: #000; 1098 | opacity: 0.6; 1099 | -webkit-transition: opacity 0.3s, bottom 0s; 1100 | transition: opacity 0.3s, bottom 0s; 1101 | z-index: 9999; 1102 | } 1103 | .gt-container.gt-input-focused .gt-header-comment { 1104 | z-index: 10000; 1105 | } 1106 | .gt-container .gt-comments { 1107 | padding-top: 1.25em; 1108 | } 1109 | .gt-container .gt-comments-null { 1110 | text-align: center; 1111 | } 1112 | .gt-container .gt-comments-controls { 1113 | margin: 1.25em 0; 1114 | text-align: center; 1115 | } 1116 | .gt-container .gt-comment { 1117 | position: relative; 1118 | padding: 0.625em 0; 1119 | display: -webkit-box; 1120 | display: -ms-flexbox; 1121 | display: flex; 1122 | } 1123 | .gt-container .gt-comment-content { 1124 | -webkit-box-flex: 1; 1125 | -ms-flex: 1; 1126 | flex: 1; 1127 | margin-left: 1.25em; 1128 | padding: 0.75em 1em; 1129 | background-color: #f9f9f9; 1130 | overflow: auto; 1131 | -webkit-transition: all ease 0.25s; 1132 | transition: all ease 0.25s; 1133 | } 1134 | .gt-container .gt-comment-content:hover { 1135 | -webkit-box-shadow: 0 0.625em 3.75em 0 #f4f4f4; 1136 | box-shadow: 0 0.625em 3.75em 0 #f4f4f4; 1137 | } 1138 | @media (max-width: 479px) { 1139 | .gt-container .gt-comment-content { 1140 | margin-left: 0.875em; 1141 | padding: 0.625em 0.75em; 1142 | } 1143 | } 1144 | .gt-container .gt-comment-header { 1145 | margin-bottom: 0.5em; 1146 | font-size: 0.875em; 1147 | position: relative; 1148 | } 1149 | .gt-container .gt-comment-block-1 { 1150 | float: right; 1151 | height: 1.375em; 1152 | width: 2em; 1153 | } 1154 | .gt-container .gt-comment-block-2 { 1155 | float: right; 1156 | height: 1.375em; 1157 | width: 4em; 1158 | } 1159 | .gt-container .gt-comment-username { 1160 | font-weight: 500; 1161 | color: #6190e8; 1162 | text-decoration: none; 1163 | } 1164 | .gt-container .gt-comment-username:hover { 1165 | text-decoration: underline; 1166 | } 1167 | .gt-container .gt-comment-text { 1168 | margin-left: 0.5em; 1169 | color: #a1a1a1; 1170 | } 1171 | .gt-container .gt-comment-date { 1172 | margin-left: 0.5em; 1173 | color: #a1a1a1; 1174 | } 1175 | .gt-container .gt-comment-like, 1176 | .gt-container .gt-comment-edit, 1177 | .gt-container .gt-comment-reply { 1178 | position: absolute; 1179 | height: 1.375em; 1180 | } 1181 | .gt-container .gt-comment-like:hover, 1182 | .gt-container .gt-comment-edit:hover, 1183 | .gt-container .gt-comment-reply:hover { 1184 | cursor: pointer; 1185 | } 1186 | .gt-container .gt-comment-like { 1187 | top: 0; 1188 | right: 2em; 1189 | } 1190 | .gt-container .gt-comment-edit, 1191 | .gt-container .gt-comment-reply { 1192 | top: 0; 1193 | right: 0; 1194 | } 1195 | .gt-container .gt-comment-body { 1196 | color: #333 !important; 1197 | } 1198 | .gt-container .gt-comment-body .email-hidden-toggle a { 1199 | display: inline-block; 1200 | height: 12px; 1201 | padding: 0 9px; 1202 | font-size: 12px; 1203 | font-weight: 600; 1204 | line-height: 6px; 1205 | color: #444d56; 1206 | text-decoration: none; 1207 | vertical-align: middle; 1208 | background: #dfe2e5; 1209 | border-radius: 1px; 1210 | } 1211 | .gt-container .gt-comment-body .email-hidden-toggle a:hover { 1212 | background-color: #c6cbd1; 1213 | } 1214 | .gt-container .gt-comment-body .email-hidden-reply { 1215 | display: none; 1216 | white-space: pre-wrap; 1217 | } 1218 | .gt-container .gt-comment-body .email-hidden-reply .email-signature-reply { 1219 | padding: 0 15px; 1220 | margin: 15px 0; 1221 | color: #586069; 1222 | border-left: 4px solid #dfe2e5; 1223 | } 1224 | .gt-container .gt-comment-body .email-hidden-reply.expanded { 1225 | display: block; 1226 | } 1227 | .gt-container .gt-comment-admin .gt-comment-content { 1228 | background-color: #f6f9fe; 1229 | } 1230 | @-webkit-keyframes gt-kf-rotate { 1231 | 0% { 1232 | -webkit-transform: rotate(0); 1233 | transform: rotate(0); 1234 | } 1235 | 100% { 1236 | -webkit-transform: rotate(360deg); 1237 | transform: rotate(360deg); 1238 | } 1239 | } 1240 | @keyframes gt-kf-rotate { 1241 | 0% { 1242 | -webkit-transform: rotate(0); 1243 | transform: rotate(0); 1244 | } 1245 | 100% { 1246 | -webkit-transform: rotate(360deg); 1247 | transform: rotate(360deg); 1248 | } 1249 | } 1250 | 1251 | /*# sourceMappingURL=gitalk.css.map*/ -------------------------------------------------------------------------------- /assets/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hutusi/taletype/bc7119867e10d9ad5312cb41e9e2e471e40e256a/assets/apple-touch-icon.png -------------------------------------------------------------------------------- /assets/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hutusi/taletype/bc7119867e10d9ad5312cb41e9e2e471e40e256a/assets/favicon-16x16.png -------------------------------------------------------------------------------- /assets/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hutusi/taletype/bc7119867e10d9ad5312cb41e9e2e471e40e256a/assets/favicon-32x32.png -------------------------------------------------------------------------------- /assets/js/disqusLoader.js: -------------------------------------------------------------------------------- 1 | /* 2 | disqusLoader.js v1.0 3 | A JavaScript plugin for lazy-loading Disqus comments widget. 4 | - 5 | By Osvaldas Valutis, www.osvaldas.info 6 | Available for use under the MIT License 7 | */ 8 | (function(b,f,l){var r=function(a){a=a.getBoundingClientRect();return{top:a.top+f.body.scrollTop,left:a.left+f.body.scrollLeft}},t=function(a,c){var d=f.createElement("script");d.src=a;d.async=!0;d.setAttribute("data-timestamp",+new Date);d.addEventListener("load",function(){"function"===typeof c&&c()});(f.head||f.body).appendChild(d)};l=function(a,c){var d,e;return function(){var g=this,f=arguments,b=+new Date;d&&bb.innerHeight*n||0= 4.0" 16 | spec.add_runtime_dependency "jekyll-paginate", ">= 1.1" 17 | spec.add_runtime_dependency "jekyll-feed", ">= 0.10" 18 | spec.add_runtime_dependency "jekyll-seo-tag", ">= 2.5" 19 | # TODO: don't know why, run error when adding jekyll-tagging 20 | # spec.add_runtime_dependency "jekyll-tagging" 21 | # spec.add_runtime_dependency "jekyll-sitemap" 22 | 23 | spec.add_development_dependency "bundler", ">= 2.0" 24 | spec.add_development_dependency "rake", ">= 12.3" 25 | end 26 | --------------------------------------------------------------------------------