Update to hugo v0.15
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
<!-- This file is the homepage of the website. -->
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<!--
|
||||
This section just sets up some metadata for the website.
|
||||
|
||||
It probably does not need to be changed.
|
||||
-->
|
||||
<meta charset="utf-8">
|
||||
<base href="{{ .Site.BaseURL }}">
|
||||
<title>{{ .Site.Title }}</title>
|
||||
<link rel="canonical" href="{{ .Permalink }}">
|
||||
<link href="{{ .RSSlink }}" rel="alternate" type="application/rss+xml" title="{{ .Site.Title }}" />
|
||||
|
||||
{{ partial "head_includes.html" . }}
|
||||
</head>
|
||||
<body class="theme-base-08" lang="en">
|
||||
|
||||
{{ partial "sidebar.html" . }}
|
||||
|
||||
<!-- See /layouts/indexes/category.html for explanation of this section -->
|
||||
<div class="wrap">
|
||||
<div class="masthead">
|
||||
<div class="container">
|
||||
<h3 class="masthead-title">
|
||||
<a href="/" title="Home">Home</a>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
This section contains the content of our home page.
|
||||
|
||||
I have broken it into three main sections:
|
||||
(1) about the blog
|
||||
(2) about me
|
||||
(3) Recent posts
|
||||
|
||||
The first two sections are pretty self explanatory.
|
||||
|
||||
In the recent posts section we ask Hugo to use the template found in
|
||||
/layouts/posts/summary.html to show a summary of the 10 most recent
|
||||
posts we have made.
|
||||
-->
|
||||
<div class="container content">
|
||||
<h1>This is a Blog</h1>
|
||||
|
||||
<p class="lead"> Welcome to my blog! </p>
|
||||
|
||||
<p>This is really just a barebones website to stand as a template for creating a blog that is statically generated by <a href="http://hugo.spf13.com">Hugo</a> and hosted at on GitHub via <a href="http://pages.github.com/">GitHub Pages</a>.</p>
|
||||
|
||||
<p>I am using a slightly modified version of the <a href="http://lanyon.getpoole.com">Lanyon</a> Jekyll theme. I think it is very simple, clean, and elegant.</p>
|
||||
|
||||
<!-- About me subsection -->
|
||||
<h2>About me</h2>
|
||||
|
||||
<p>Sometimes people have an "About me" section on the homepage of their website.</p>
|
||||
|
||||
<p>It might even include a picture: </p>
|
||||
|
||||
<!-- Recent Posts section -->
|
||||
<h1 class="post-title">Recent Posts</h1>
|
||||
<section id="main">
|
||||
<ul id="list">
|
||||
{{ range first 10 .Data.Pages }}
|
||||
{{ .Render "summary"}}
|
||||
{{ end }}
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="sidebar-checkbox" class="sidebar-toggle"></label>
|
||||
|
||||
{{ partial "footer.html" . }}
|
||||
@@ -0,0 +1,56 @@
|
||||
<!--
|
||||
This file is used to render a list of all posts that belong to a specific
|
||||
category.
|
||||
-->
|
||||
|
||||
|
||||
{{ partial "header.html" . }}
|
||||
|
||||
<body class="theme-base-08">
|
||||
{{ partial "sidebar.html" . }}
|
||||
|
||||
<!--
|
||||
Taken from Lanyon example site.
|
||||
|
||||
Putting everything in the wrap div makes the whole page slide over when the
|
||||
navigation button is pressed.
|
||||
|
||||
The masthead is a special Lanyon class that is above the horizontal line at
|
||||
the top of each page. To me it seemed like a place to put the page title.
|
||||
|
||||
We want the title to be Blog Posts and we want it to be a link to the
|
||||
root of the /posts section of the site.
|
||||
|
||||
-->
|
||||
<div class="wrap">
|
||||
<div class="masthead">
|
||||
<div class="container">
|
||||
<h3 class="masthead-title">
|
||||
<a href="/posts" title="Blog">Blog Posts</a>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Show summary of all posts in a category -->
|
||||
<div class="container content">
|
||||
<h1 class="post-title">Recent Posts</h1>
|
||||
<section id="main">
|
||||
<div>
|
||||
<h5><a href="/categories">Full Category Index</a></h5>
|
||||
<h2>Posts in “{{ .Title }}”</h2>
|
||||
{{ range .Data.Pages }}
|
||||
{{ .Render "summary"}}
|
||||
{{ end }}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="sidebar-checkbox" class="sidebar-toggle"></label>
|
||||
|
||||
<!-- Include footer (ends <body> and <html>) -->
|
||||
{{ partial "footer.html" }}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
<!--
|
||||
This file is used to generate the root file of a Hugo index.
|
||||
In our case this is only the index for categories, so it will render the
|
||||
page baseurl/categories
|
||||
-->
|
||||
|
||||
{{ partial "header.html" . }}
|
||||
|
||||
<body class="theme-base-08">
|
||||
{{ partial "sidebar.html" . }}
|
||||
|
||||
<!-- See /layouts/indexes/category.html for explanation of this section -->
|
||||
<div class="wrap">
|
||||
<div class="masthead">
|
||||
<div class="container">
|
||||
<h3 class="masthead-title">
|
||||
<a href="/posts" title="Blog">Blog Posts</a>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
In this section we instruct Hugo to list all the different items in the
|
||||
index. Because we only have an index for categories, each item will be
|
||||
a category name. The name is a link to a page that displays all posts in
|
||||
that category.
|
||||
|
||||
We also list the number of entries in each category in parenthesis next
|
||||
to the category name.
|
||||
-->
|
||||
<div class="container content">
|
||||
<section id="main">
|
||||
<div>
|
||||
<h1>Archive of Posts, by {{ .Data.Singular }}</h1>
|
||||
<ul class="category">
|
||||
{{ $data := .Data }}
|
||||
{{ range $key,$value := .Data.Index.ByCount }}
|
||||
<li><a href="/{{ $data.Plural }}/{{ $value.Name | urlize }}"> {{ $value.Name }} </a> ({{ $value.Count }} entries) </li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="sidebar-checkbox" class="sidebar-toggle"></label>
|
||||
|
||||
<!-- Include footer (ends <body> and <html>) -->
|
||||
{{ partial "footer.html" }}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
<!--
|
||||
This file is used to render a list of all posts on our blog.
|
||||
-->
|
||||
|
||||
{{ partial "header.html" . }}
|
||||
|
||||
<body class="theme-base-08">
|
||||
{{ partial "sidebar.html" . }}
|
||||
|
||||
<!-- See /layouts/indexes/category.html for explanation of this section -->
|
||||
<div class="wrap">
|
||||
<div class="masthead">
|
||||
<div class="container">
|
||||
<h3 class="masthead-title">
|
||||
<a href="/posts" title="Blog">Blog Posts</a>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
In this section we have Hugo generate a list of all blog posts, ordered
|
||||
by date.
|
||||
|
||||
When showing each post we ask Hugo to use the template in
|
||||
/layouts/posts/li.html to provide a short description of each post.
|
||||
-->
|
||||
<div class="container content">
|
||||
<p>Here are all my blog posts, in descending order by creation date. If you would like to view them by topic, see the <a href="/categories">Categories</a> page.</p>
|
||||
<h1 class="post-title">All Blog Posts (By Date)</h1>
|
||||
<section id="main">
|
||||
<ul id="list">
|
||||
{{ range .Data.Pages }}
|
||||
{{ .Render "li"}}
|
||||
{{ end }}
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="sidebar-checkbox" class="sidebar-toggle"></label>
|
||||
|
||||
<!-- Include footer (ends <body> and <html>) -->
|
||||
{{ partial "footer.html" }}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
<!--
|
||||
This file is a template that is included various places to have a list of
|
||||
that particular posts categories generated.
|
||||
-->
|
||||
<div class="container">
|
||||
<ul class="catlist">
|
||||
<li><em>Categories: </em></li>
|
||||
{{ range .Params.categories }}
|
||||
<li><a href="/categories/{{ . | urlize }}">{{ . }}</a> </li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
@@ -0,0 +1,27 @@
|
||||
<!--
|
||||
This is the main footer for the website. It is included on every page.
|
||||
|
||||
It is very basic. It has some text and a link back to the home page of the
|
||||
site.
|
||||
|
||||
It includes the google analytics template from /layouts/chrome/ga.html
|
||||
|
||||
It also closes the <body> and <html> tags for each page.
|
||||
-->
|
||||
|
||||
<div class="container content">
|
||||
<footer>
|
||||
<div>
|
||||
<p class="right credit">
|
||||
Fancy footer here. Link to <a href="/">Home Page</a>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
{{ partial "ga.html" . }}
|
||||
-->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,17 @@
|
||||
<!--
|
||||
This file contains the necessary information for google analytics to track
|
||||
visitors and their behavior on my website.
|
||||
|
||||
This is specific to this website and will need to be changed for any other
|
||||
site
|
||||
-->
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', 'UA-36732392-2', 'sglyon.com');
|
||||
ga('send', 'pageview');
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,13 @@
|
||||
<!--
|
||||
This file simply includes all the css and fonts that should go into the
|
||||
header of each page.
|
||||
|
||||
It is separate from the rest of the header because the actual header for the
|
||||
homepage of the site is different, but we want every page of the site
|
||||
(including the homepage) to have the same assets.
|
||||
-->
|
||||
|
||||
<link rel="stylesheet" href="/css/poole.css">
|
||||
<link rel="stylesheet" href="/css/syntax.css">
|
||||
<link rel="stylesheet" href="/css/lanyon.css">
|
||||
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=PT+Serif:400,400italic,700|PT+Sans:400">
|
||||
@@ -0,0 +1,16 @@
|
||||
<!--
|
||||
This is the actual header for each page of the site except the homepage.
|
||||
|
||||
It simply shows the title of the page and includes the css/fonts found in
|
||||
/layouts/chrome/header.html
|
||||
-->
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<base href="{{ .Site.BaseURL }}">
|
||||
<title> {{ .Title }} </title>
|
||||
<link rel="canonical" href="{{ .Permalink }}">
|
||||
{{ partial "head_includes.html" . }}
|
||||
</head>
|
||||
@@ -0,0 +1,29 @@
|
||||
<!--
|
||||
This is a helper file that adds previous and next links to the bottom of each
|
||||
blog post. (below next and previous refer to chronological next and previous)
|
||||
|
||||
It will check to see if there is a previous blog post. If is, it will print
|
||||
an arrow as well as the title of the previous post as a link as
|
||||
left-justified text.
|
||||
|
||||
It will then check for a next blog post. If there is one it prints the title
|
||||
of the next post with a right arrow as right justified text on the same line.
|
||||
|
||||
If there is ever not a next or previous post, it does nothing.
|
||||
-->
|
||||
|
||||
<div class="container">
|
||||
<hr />
|
||||
<hr />
|
||||
{{if .Prev}}
|
||||
<span class="left">
|
||||
<em>« Previous:</em> <a class="next" href="{{.Prev.Permalink}}">{{.Prev.Title}}</a>
|
||||
</span>
|
||||
{{end}}
|
||||
|
||||
{{if .Next}}
|
||||
<span class="right">
|
||||
<em>Next: </em><a class="next" href="{{.Next.Permalink}}"> {{ .Next.Title }}</a> »
|
||||
</span>
|
||||
{{end}}
|
||||
</div>
|
||||
@@ -0,0 +1,29 @@
|
||||
<!--
|
||||
This file defines the main sidebar that the user can toggle in and out of
|
||||
view. This is included in every file.
|
||||
|
||||
Most of this was taken directly from the Lanyon example site.
|
||||
|
||||
Here we simply include a link to the homepage, a link to the blog posts,
|
||||
and some copyright information.
|
||||
-->
|
||||
|
||||
<!-- Target for toggling the sidebar `.sidebar-checkbox` is for regular
|
||||
styles, `#sidebar-checkbox` for behavior. -->
|
||||
<input type="checkbox" class="sidebar-checkbox" id="sidebar-checkbox">
|
||||
|
||||
<!-- Toggleable sidebar -->
|
||||
<div class="sidebar" id="sidebar">
|
||||
|
||||
<nav class="sidebar-nav">
|
||||
<a class="sidebar-nav-item" href="/">Home</a>
|
||||
|
||||
<a class="sidebar-nav-item" href="/posts">Blog</a>
|
||||
</nav>
|
||||
|
||||
<div class="sidebar-item">
|
||||
<p>
|
||||
© 2014 Spencer Lyon. Powered by <a href="http://hugo.spf13.com">Hugo</a>. Design adapted from <a href="http://lanyon.getpoole.com">Lanyon</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,26 @@
|
||||
<!--
|
||||
This file defines how a summary of a specifc post should be presented in a
|
||||
list (hence the file name li.html for "list item"). This is used in the
|
||||
template /layouts/indexes/posts.html
|
||||
|
||||
The lines of the displayed list item are as follows:
|
||||
(1) The name of the post
|
||||
(2) The date the post was written as left-justified text and a
|
||||
right-justified horizontal list of categories for that post.
|
||||
(3) The contents of the description field in the metadata of the actual
|
||||
markdown source of the post.
|
||||
-->
|
||||
<li>
|
||||
<span><h2><a href='{{ .Permalink }}'> {{ .Title }}</a> </h2></span>
|
||||
<span class="left">{{ .Date.Format "Mon, Jan 2, 2006" }}</span>
|
||||
<span class="right">
|
||||
<ul class="catlist">
|
||||
{{ range .Params.categories }}
|
||||
<li><a href="/categories/{{ . | urlize }}">{{ . }}</a> </li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
{{ .Description }}
|
||||
</li>
|
||||
@@ -0,0 +1,51 @@
|
||||
<!--
|
||||
This file is responsible for rendering a single blog post.
|
||||
-->
|
||||
|
||||
{{ partial "header.html" . }}
|
||||
|
||||
<body class="theme-base-08">
|
||||
{{ partial "sidebar.html" . }}
|
||||
|
||||
<!-- See /layouts/indexes/category.html for explanation of this section -->
|
||||
<div class="wrap">
|
||||
<div class="masthead">
|
||||
<div class="container">
|
||||
<h3 class="masthead-title">
|
||||
<a href="/posts" title="Blog">Blog Posts</a>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
This is where the actual post is displayed.
|
||||
|
||||
We first access the title metadata field from the markdown source and
|
||||
display it as a heading.
|
||||
|
||||
We then access the date the post was written (also in the markdown
|
||||
metadata) and display a formated version of it
|
||||
|
||||
Finally we include the actual content of the post.
|
||||
-->
|
||||
<div class="container content">
|
||||
<h1 class="post-title">{{ .Title }}</h1>
|
||||
<section id="main">
|
||||
<h5 id="date"> {{ .Date.Format "Mon Jan 2, 2006" }} </h5>
|
||||
{{ .Content }}
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="sidebar-checkbox" class="sidebar-toggle"></label>
|
||||
|
||||
{{ partial "prev_next.html" . }}
|
||||
<br />
|
||||
{{ partial "categories.html" . }}
|
||||
|
||||
|
||||
<!-- Include footer (ends <body class="theme-base-08"> and <html>) -->
|
||||
{{ partial "footer.html" }}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
<!--
|
||||
This file defines how a summary of a specifc post should be presented. This
|
||||
is similar to the file /layouts/posts/li.html, but is meant have a bit longer
|
||||
of a representation than the one in that file.
|
||||
|
||||
This template does the following:
|
||||
(1) Shows the name of the post
|
||||
(2) Shows the date the post was created (from metadata in post markdown
|
||||
source)
|
||||
(3) Displays a Hugo-generated summary of the post
|
||||
(4) Provides a link with text Read More that points to the post
|
||||
-->
|
||||
|
||||
<article class="post">
|
||||
<header>
|
||||
<h2><a href='{{ .Permalink }}'> {{ .Title }}</a> </h2>
|
||||
<div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
|
||||
</header>
|
||||
|
||||
{{ .Summary }}
|
||||
<footer>
|
||||
<a href='{{ .Permalink }}'><nobr>Read more →</nobr></a>
|
||||
</footer>
|
||||
</article>
|
||||
@@ -0,0 +1,527 @@
|
||||
/*
|
||||
* ___
|
||||
* /\_ \
|
||||
* \//\ \ __ ___ __ __ ___ ___
|
||||
* \ \ \ /'__`\ /' _ `\/\ \/\ \ / __`\ /' _ `\
|
||||
* \_\ \_/\ \_\.\_/\ \/\ \ \ \_\ \/\ \_\ \/\ \/\ \
|
||||
* /\____\ \__/.\_\ \_\ \_\/`____ \ \____/\ \_\ \_\
|
||||
* \/____/\/__/\/_/\/_/\/_/`/___/> \/___/ \/_/\/_/
|
||||
* /\___/
|
||||
* \/__/
|
||||
*
|
||||
* Designed, built, and released under MIT license by @mdo. Learn more at
|
||||
* https://github.com/poole/lanyon.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Contents
|
||||
*
|
||||
* Global resets
|
||||
* Masthead
|
||||
* Sidebar
|
||||
* Slide effect
|
||||
* Posts and pages
|
||||
* Pagination
|
||||
* Reverse layout
|
||||
* Themes
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Global resets
|
||||
*
|
||||
* Update the foundational and global aspects of the page.
|
||||
*/
|
||||
|
||||
/* Prevent scroll on narrow devices */
|
||||
html,
|
||||
body {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: "PT Serif", Georgia, "Times New Roman", serif;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-family: "PT Sans", Helvetica, Arial, sans-serif;
|
||||
font-weight: 400;
|
||||
color: #313131;
|
||||
letter-spacing: -.025rem;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Wrapper
|
||||
*
|
||||
* The wrapper is used to position site content when the sidebar is toggled. We
|
||||
* use an outter wrap to position the sidebar without interferring with the
|
||||
* regular page content.
|
||||
*/
|
||||
|
||||
.wrap {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Container
|
||||
*
|
||||
* Center the page content.
|
||||
*/
|
||||
|
||||
.container {
|
||||
max-width: 28rem;
|
||||
}
|
||||
@media (min-width: 38rem) {
|
||||
.container {
|
||||
max-width: 32rem;
|
||||
}
|
||||
}
|
||||
@media (min-width: 56rem) {
|
||||
.container {
|
||||
max-width: 38rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Masthead
|
||||
*
|
||||
* Super small header above the content for site name and short description.
|
||||
*/
|
||||
|
||||
.masthead {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 1rem;
|
||||
margin-bottom: 3rem;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
.masthead-title {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
color: #505050;
|
||||
}
|
||||
.masthead-title a {
|
||||
color: #505050;
|
||||
}
|
||||
.masthead-title small {
|
||||
font-size: 75%;
|
||||
font-weight: 400;
|
||||
color: #c0c0c0;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
@media (max-width: 48rem) {
|
||||
.masthead-title {
|
||||
text-align: center;
|
||||
}
|
||||
.masthead-title small {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Sidebar
|
||||
*
|
||||
* The sidebar is the drawer, the item we are toggling with our handy hamburger
|
||||
* button in the corner of the page.
|
||||
*
|
||||
* This particular sidebar implementation was inspired by Chris Coyier's
|
||||
* "Offcanvas Menu with CSS Target" article, and the checkbox variation from the
|
||||
* comments by a reader. It modifies both implementations to continue using the
|
||||
* checkbox (no change in URL means no polluted browser history), but this uses
|
||||
* `position` for the menu to avoid some potential content reflow issues.
|
||||
*
|
||||
* Source: http://css-tricks.com/off-canvas-menu-with-css-target/#comment-207504
|
||||
*/
|
||||
|
||||
/* Style and "hide" the sidebar */
|
||||
.sidebar {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: -14rem;
|
||||
width: 14rem;
|
||||
visibility: hidden;
|
||||
overflow-y: auto;
|
||||
font-family: "PT Sans", Helvetica, Arial, sans-serif;
|
||||
font-size: .875rem; /* 15px */
|
||||
color: rgba(255,255,255,.6);
|
||||
background-color: #202020;
|
||||
-webkit-transition: all .3s ease-in-out;
|
||||
transition: all .3s ease-in-out;
|
||||
}
|
||||
@media (min-width: 30rem) {
|
||||
.sidebar {
|
||||
font-size: .75rem; /* 14px */
|
||||
}
|
||||
}
|
||||
|
||||
/* Sidebar content */
|
||||
.sidebar a {
|
||||
font-weight: normal;
|
||||
color: #fff;
|
||||
}
|
||||
.sidebar-item {
|
||||
padding: 1rem;
|
||||
}
|
||||
.sidebar-item p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* Sidebar nav */
|
||||
.sidebar-nav {
|
||||
border-bottom: 1px solid rgba(255,255,255,.1);
|
||||
}
|
||||
.sidebar-nav-item {
|
||||
display: block;
|
||||
padding: .5rem 1rem;
|
||||
border-top: 1px solid rgba(255,255,255,.1);
|
||||
}
|
||||
.sidebar-nav-item.active,
|
||||
a.sidebar-nav-item:hover,
|
||||
a.sidebar-nav-item:focus {
|
||||
text-decoration: none;
|
||||
background-color: rgba(255,255,255,.1);
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
@media (min-width: 48rem) {
|
||||
.sidebar-item {
|
||||
padding: 1.5rem;
|
||||
}
|
||||
.sidebar-nav-item {
|
||||
padding-left: 1.5rem;
|
||||
padding-right: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
/* Hide the sidebar checkbox that we toggle with `.sidebar-toggle` */
|
||||
.sidebar-checkbox {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Style the `label` that we use to target the `.sidebar-checkbox` */
|
||||
.sidebar-toggle {
|
||||
position: absolute;
|
||||
top: 1rem;
|
||||
left: 1rem;
|
||||
display: block;
|
||||
width: 2.2rem;
|
||||
padding: .5rem .65rem;
|
||||
color: #505050;
|
||||
background-color: #fff;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.sidebar-toggle:before {
|
||||
display: block;
|
||||
content: "";
|
||||
width: 100%;
|
||||
padding-bottom: .125rem;
|
||||
border-top: .375rem double;
|
||||
border-bottom: .125rem solid;
|
||||
|
||||
/* Make the border inside the box */
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.sidebar-toggle:active,
|
||||
#sidebar-checkbox:checked ~ .sidebar-toggle {
|
||||
color: #fff;
|
||||
background-color: #505050;
|
||||
}
|
||||
|
||||
@media (min-width: 30.1rem) {
|
||||
.sidebar-toggle {
|
||||
position: fixed;
|
||||
width: 2.25rem;
|
||||
}
|
||||
.sidebar-toggle:before {
|
||||
padding-bottom: .15rem;
|
||||
border-top-width: .45rem;
|
||||
border-bottom-width: .15rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Slide effect
|
||||
*
|
||||
* Handle the sliding effects of the sidebar and content in one spot, seperate
|
||||
* from the default styles.
|
||||
*
|
||||
* As an a heads up, we don't use `transform: translate3d()` here because when
|
||||
* mixed with `position: fixed;` for the sidebar toggle, it creates a new
|
||||
* containing block. Put simply, the fixed sidebar toggle behaves like
|
||||
* `position: absolute;` when transformed.
|
||||
*
|
||||
* Read more about it at http://meyerweb.com/eric/thoughts/2011/09/12/.
|
||||
*/
|
||||
|
||||
.wrap,
|
||||
.sidebar,
|
||||
.sidebar-toggle {
|
||||
-webkit-backface-visibility: hidden;
|
||||
-ms-backface-visibility: hidden;
|
||||
backface-visibility: hidden;
|
||||
}
|
||||
.wrap,
|
||||
.sidebar-toggle {
|
||||
-webkit-transition: -webkit-transform .3s ease-in-out;
|
||||
transition: transform .3s ease-in-out;
|
||||
}
|
||||
|
||||
#sidebar-checkbox:checked + .sidebar {
|
||||
visibility: visible;
|
||||
}
|
||||
#sidebar-checkbox:checked ~ .sidebar,
|
||||
#sidebar-checkbox:checked ~ .wrap,
|
||||
#sidebar-checkbox:checked ~ .sidebar-toggle {
|
||||
-webkit-transform: translateX(14rem);
|
||||
-ms-transform: translateX(14rem);
|
||||
transform: translateX(14rem);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Posts and pages
|
||||
*
|
||||
* Each post is wrapped in `.post` and is used on default and post layouts. Each
|
||||
* page is wrapped in `.page` and is only used on the page layout.
|
||||
*/
|
||||
|
||||
.page,
|
||||
.post {
|
||||
margin-bottom: 4em;
|
||||
}
|
||||
|
||||
/* Blog post or page title */
|
||||
.page-title,
|
||||
.post-title,
|
||||
.post-title a {
|
||||
color: #303030;
|
||||
}
|
||||
.page-title,
|
||||
.post-title {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
/* Meta data line below post title */
|
||||
.post-date {
|
||||
display: block;
|
||||
margin-top: -.5rem;
|
||||
margin-bottom: 1rem;
|
||||
color: #9a9a9a;
|
||||
}
|
||||
|
||||
/* Related posts */
|
||||
.related {
|
||||
padding-top: 2rem;
|
||||
padding-bottom: 2rem;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
.related-posts {
|
||||
padding-left: 0;
|
||||
list-style: none;
|
||||
}
|
||||
.related-posts h3 {
|
||||
margin-top: 0;
|
||||
}
|
||||
.related-posts li small {
|
||||
font-size: 75%;
|
||||
color: #999;
|
||||
}
|
||||
.related-posts li a:hover {
|
||||
color: #268bd2;
|
||||
text-decoration: none;
|
||||
}
|
||||
.related-posts li a:hover small {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Pagination
|
||||
*
|
||||
* Super lightweight (HTML-wise) blog pagination. `span`s are provide for when
|
||||
* there are no more previous or next posts to show.
|
||||
*/
|
||||
|
||||
.pagination {
|
||||
overflow: hidden; /* clearfix */
|
||||
margin-left: -1rem;
|
||||
margin-right: -1rem;
|
||||
font-family: "PT Sans", Helvetica, Arial, sans-serif;
|
||||
color: #ccc;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Pagination items can be `span`s or `a`s */
|
||||
.pagination-item {
|
||||
display: block;
|
||||
padding: 1rem;
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
.pagination-item:first-child {
|
||||
margin-bottom: -1px;
|
||||
}
|
||||
|
||||
/* Only provide a hover state for linked pagination items */
|
||||
a.pagination-item:hover {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
@media (min-width: 30rem) {
|
||||
.pagination {
|
||||
margin: 3rem 0;
|
||||
}
|
||||
.pagination-item {
|
||||
float: left;
|
||||
width: 50%;
|
||||
}
|
||||
.pagination-item:first-child {
|
||||
margin-bottom: 0;
|
||||
border-top-left-radius: 4px;
|
||||
border-bottom-left-radius: 4px;
|
||||
}
|
||||
.pagination-item:last-child {
|
||||
margin-left: -1px;
|
||||
border-top-right-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Reverse layout
|
||||
*
|
||||
* Flip the orientation of the page by placing the `.sidebar` and sidebar toggle
|
||||
* on the right side.
|
||||
*/
|
||||
|
||||
.layout-reverse .sidebar {
|
||||
left: auto;
|
||||
right: -14rem;
|
||||
}
|
||||
.layout-reverse .sidebar-toggle {
|
||||
left: auto;
|
||||
right: 1rem;
|
||||
}
|
||||
|
||||
.layout-reverse #sidebar-checkbox:checked ~ .sidebar,
|
||||
.layout-reverse #sidebar-checkbox:checked ~ .wrap,
|
||||
.layout-reverse #sidebar-checkbox:checked ~ .sidebar-toggle {
|
||||
-webkit-transform: translateX(-14rem);
|
||||
-ms-transform: translateX(-14rem);
|
||||
transform: translateX(-14rem);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Themes
|
||||
*
|
||||
* Apply custom color schemes by adding the appropriate class to the `body`.
|
||||
* Based on colors from Base16: http://chriskempson.github.io/base16/#default.
|
||||
*/
|
||||
|
||||
/* Red */
|
||||
.theme-base-08 .sidebar,
|
||||
.theme-base-08 .sidebar-toggle:active,
|
||||
.theme-base-08 #sidebar-checkbox:checked ~ .sidebar-toggle {
|
||||
background-color: #ac4142;
|
||||
}
|
||||
.theme-base-08 .container a,
|
||||
.theme-base-08 .sidebar-toggle,
|
||||
.theme-base-08 .related-posts li a:hover {
|
||||
color: #ac4142;
|
||||
}
|
||||
|
||||
/* Orange */
|
||||
.theme-base-09 .sidebar,
|
||||
.theme-base-09 .sidebar-toggle:active,
|
||||
.theme-base-09 #sidebar-checkbox:checked ~ .sidebar-toggle {
|
||||
background-color: #d28445;
|
||||
}
|
||||
.theme-base-09 .container a,
|
||||
.theme-base-09 .sidebar-toggle,
|
||||
.theme-base-09 .related-posts li a:hover {
|
||||
color: #d28445;
|
||||
}
|
||||
|
||||
/* Yellow */
|
||||
.theme-base-0a .sidebar,
|
||||
.theme-base-0a .sidebar-toggle:active,
|
||||
.theme-base-0a #sidebar-checkbox:checked ~ .sidebar-toggle {
|
||||
background-color: #f4bf75;
|
||||
}
|
||||
.theme-base-0a .container a,
|
||||
.theme-base-0a .sidebar-toggle,
|
||||
.theme-base-0a .related-posts li a:hover {
|
||||
color: #f4bf75;
|
||||
}
|
||||
|
||||
/* Green */
|
||||
.theme-base-0b .sidebar,
|
||||
.theme-base-0b .sidebar-toggle:active,
|
||||
.theme-base-0b #sidebar-checkbox:checked ~ .sidebar-toggle {
|
||||
background-color: #90a959;
|
||||
}
|
||||
.theme-base-0b .container a,
|
||||
.theme-base-0b .sidebar-toggle,
|
||||
.theme-base-0b .related-posts li a:hover {
|
||||
color: #90a959;
|
||||
}
|
||||
|
||||
/* Cyan */
|
||||
.theme-base-0c .sidebar,
|
||||
.theme-base-0c .sidebar-toggle:active,
|
||||
.theme-base-0c #sidebar-checkbox:checked ~ .sidebar-toggle {
|
||||
background-color: #75b5aa;
|
||||
}
|
||||
.theme-base-0c .container a,
|
||||
.theme-base-0c .sidebar-toggle,
|
||||
.theme-base-0c .related-posts li a:hover {
|
||||
color: #75b5aa;
|
||||
}
|
||||
|
||||
/* Blue */
|
||||
.theme-base-0d .sidebar,
|
||||
.theme-base-0d .sidebar-toggle:active,
|
||||
.theme-base-0d #sidebar-checkbox:checked ~ .sidebar-toggle {
|
||||
background-color: #6a9fb5;
|
||||
}
|
||||
.theme-base-0d .container a,
|
||||
.theme-base-0d .sidebar-toggle,
|
||||
.theme-base-0d .related-posts li a:hover {
|
||||
color: #6a9fb5;
|
||||
}
|
||||
|
||||
/* Magenta */
|
||||
.theme-base-0e .sidebar,
|
||||
.theme-base-0e .sidebar-toggle:active,
|
||||
.theme-base-0e #sidebar-checkbox:checked ~ .sidebar-toggle {
|
||||
background-color: #aa759f;
|
||||
}
|
||||
.theme-base-0e .container a,
|
||||
.theme-base-0e .sidebar-toggle,
|
||||
.theme-base-0e .related-posts li a:hover {
|
||||
color: #aa759f;
|
||||
}
|
||||
|
||||
/* Brown */
|
||||
.theme-base-0f .sidebar,
|
||||
.theme-base-0f .sidebar-toggle:active,
|
||||
.theme-base-0f #sidebar-checkbox:checked ~ .sidebar-toggle {
|
||||
background-color: #8f5536;
|
||||
}
|
||||
.theme-base-0f .container a,
|
||||
.theme-base-0f .sidebar-toggle,
|
||||
.theme-base-0f .related-posts li a:hover {
|
||||
color: #8f5536;
|
||||
}
|
||||
@@ -0,0 +1,396 @@
|
||||
/*
|
||||
* ___
|
||||
* /\_ \
|
||||
* _____ ___ ___\//\ \ __
|
||||
* /\ '__`\ / __`\ / __`\\ \ \ /'__`\
|
||||
* \ \ \_\ \/\ \_\ \/\ \_\ \\_\ \_/\ __/
|
||||
* \ \ ,__/\ \____/\ \____//\____\ \____\
|
||||
* \ \ \/ \/___/ \/___/ \/____/\/____/
|
||||
* \ \_\
|
||||
* \/_/
|
||||
*
|
||||
* Designed, built, and released under MIT license by @mdo. Learn more at
|
||||
* https://github.com/poole/poole.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Contents
|
||||
*
|
||||
* Body resets
|
||||
* Custom type
|
||||
* Messages
|
||||
* Container
|
||||
* Masthead
|
||||
* Posts and pages
|
||||
* Reverse layout
|
||||
* Themes
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Body resets
|
||||
*
|
||||
* Update the foundational and global aspects of the page.
|
||||
*/
|
||||
|
||||
* {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-size: 16px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
@media (min-width: 38rem) {
|
||||
html {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
color: #515151;
|
||||
background-color: #fff;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
}
|
||||
|
||||
/* No `:visited` state is required by default (browsers will use `a`) */
|
||||
a {
|
||||
color: #268bd2;
|
||||
text-decoration: none;
|
||||
}
|
||||
/* `:focus` is linked to `:hover` for basic accessibility */
|
||||
a:hover,
|
||||
a:focus {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* Headings */
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-bottom: .5rem;
|
||||
font-weight: bold;
|
||||
line-height: 1.25;
|
||||
color: #313131;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
h1 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
h2 {
|
||||
margin-top: 1rem;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
h3 {
|
||||
margin-top: 1.5rem;
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
h4, h5, h6 {
|
||||
font-family: "ff-meta-web-pro", "Helvetica Neue", "Helvetica", Arial, sans-serif;
|
||||
margin-top: 1rem;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
/* Body text */
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
strong {
|
||||
color: #303030;
|
||||
}
|
||||
|
||||
/* Lists */
|
||||
ul, ol, dl {
|
||||
margin-top: 0;
|
||||
padding-left: 0;
|
||||
margin-bottom: 1rem;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
|
||||
|
||||
dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
dd {
|
||||
margin-bottom: .5rem;
|
||||
}
|
||||
|
||||
/* Misc */
|
||||
hr {
|
||||
position: relative;
|
||||
margin: 1.5rem 0;
|
||||
border: 0;
|
||||
border-top: 1px solid #eee;
|
||||
border-bottom: 1px solid #fff;
|
||||
}
|
||||
|
||||
abbr {
|
||||
font-size: 85%;
|
||||
font-weight: bold;
|
||||
color: #555;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
abbr[title] {
|
||||
cursor: help;
|
||||
border-bottom: 1px dotted #e5e5e5;
|
||||
}
|
||||
|
||||
|
||||
mono, tt, code, pre {
|
||||
font-family: PragmataPro, Menlo, Monaco, "Andale Mono", "Lucida Console", "Courier New", monospace }
|
||||
code {
|
||||
padding: .25em .5em;
|
||||
font-size: 85%;
|
||||
color: #bf616a;
|
||||
background-color: #f9f9f9;
|
||||
border-radius: 3px;
|
||||
}
|
||||
pre {
|
||||
display: block;
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
padding: 1rem;
|
||||
font-size: .8rem;
|
||||
line-height: 1.4;
|
||||
white-space: pre;
|
||||
overflow: auto;
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
pre code {
|
||||
padding: 0;
|
||||
font-size: 100%;
|
||||
color: inherit;
|
||||
background-color: transparent;
|
||||
}
|
||||
.highlight {
|
||||
margin-bottom: 1rem;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.highlight pre {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* Quotes */
|
||||
blockquote {
|
||||
padding: .5rem 1rem;
|
||||
margin: .8rem 0;
|
||||
color: #7a7a7a;
|
||||
border-left: .25rem solid #e5e5e5;
|
||||
}
|
||||
blockquote p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
@media (min-width: 30rem) {
|
||||
blockquote {
|
||||
padding-right: 5rem;
|
||||
padding-left: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
display: block;
|
||||
margin: 0 0 1rem;
|
||||
border-radius: 5px;
|
||||
height: auto;
|
||||
width:100%;
|
||||
}
|
||||
|
||||
.fpimg {
|
||||
padding-bottom: 2rem;
|
||||
}
|
||||
|
||||
.lbg {
|
||||
display: inline;
|
||||
width: auto;
|
||||
padding-left: 1rem;
|
||||
}
|
||||
|
||||
|
||||
.right {
|
||||
float: right;
|
||||
margin-left: 1rem;
|
||||
}
|
||||
|
||||
.left {
|
||||
float: left;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
|
||||
.center {
|
||||
float: center;
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
table {
|
||||
margin-bottom: 1rem;
|
||||
width: 100%;
|
||||
border-top: 1px solid #e5e5e5;
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
td,
|
||||
th {
|
||||
padding: .25rem .5rem;
|
||||
/* border: 1px solid #e5e5e5; */
|
||||
}
|
||||
tbody tr:nth-child(odd) td,
|
||||
tbody tr:nth-child(odd) th {
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Custom type
|
||||
*
|
||||
* Extend paragraphs with `.lead` for larger introductory text.
|
||||
*/
|
||||
|
||||
.lead {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.front {
|
||||
margin-bottom: 500px;
|
||||
}
|
||||
|
||||
.credit {
|
||||
padding-top: 3rem;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
|
||||
ul.category {text-transform: capitalize;}
|
||||
ul.category li {margin-bottom: 1rem;}
|
||||
|
||||
ul.catlist { list-style: none; margin: 0; padding: 0; }
|
||||
ul.catlist li { display: inline; }
|
||||
ul.catlist li:after { content: "・"; }
|
||||
ul.catlist li:last-child:after { content: ""; }
|
||||
|
||||
/* This gets Google to fall into place */
|
||||
.social {
|
||||
font-size: 1px;
|
||||
padding-bottom: 2rem;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
/* From https://gist.github.com/thebigreason/1296097 */
|
||||
/* This gets Facebook to fall into place */
|
||||
.social iframe {
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
/* Set an optional width for your button wrappers */
|
||||
.social span {
|
||||
display: inline-block;
|
||||
width: 110px;
|
||||
}
|
||||
|
||||
/*
|
||||
* Messages
|
||||
*
|
||||
* Show alert messages to users. You may add it to single elements like a `<p>`,
|
||||
* or to a parent if there are multiple elements to show.
|
||||
*/
|
||||
|
||||
.message {
|
||||
margin-bottom: 1rem;
|
||||
padding: 1rem;
|
||||
color: #717171;
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Container
|
||||
*
|
||||
* Center the page content.
|
||||
*/
|
||||
|
||||
.container {
|
||||
max-width: 38rem;
|
||||
padding-left: 1rem;
|
||||
padding-right: 1rem;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Masthead
|
||||
*
|
||||
* Super small header above the content for site name and short description.
|
||||
*/
|
||||
|
||||
.masthead {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 1rem;
|
||||
margin-bottom: 3rem;
|
||||
}
|
||||
.masthead-title {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
color: #505050;
|
||||
}
|
||||
.masthead-title a {
|
||||
color: #505050;
|
||||
}
|
||||
.masthead-title small {
|
||||
font-size: 75%;
|
||||
font-weight: 400;
|
||||
color: #c0c0c0;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Posts and pages
|
||||
*
|
||||
* Each post is wrapped in `.post` and is used on default and post layouts. Each
|
||||
* page is wrapped in `.page` and is only used on the page layout.
|
||||
*/
|
||||
|
||||
.page,
|
||||
.post {
|
||||
margin-bottom: 4em;
|
||||
}
|
||||
|
||||
/* Blog post or page title */
|
||||
.page-title,
|
||||
.post-title,
|
||||
.post-title a {
|
||||
color: #303030;
|
||||
}
|
||||
.page-title,
|
||||
.post-title {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
/* Meta data line below post title */
|
||||
.post-date {
|
||||
display: block;
|
||||
margin-top: -.5rem;
|
||||
margin-bottom: 1rem;
|
||||
color: #9a9a9a;
|
||||
}
|
||||
|
||||
/* Archive list */
|
||||
|
||||
.archive h3 {
|
||||
margin-top:0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user