mirror of
https://github.com/andwati/andwati.com.git
synced 2026-11-09 18:35:12 +00:00
redesign site as "case file" theme
- new paper/ink palette with single red accent, replacing catppuccin - self-hosted IBM Plex Serif (display) + Source Serif 4 (body), drop Outfit - rebuilt homepage masthead, numbered post index, navbar with active states - switch syntax highlighting + utterances to gruvbox, synced via postMessage - remove terminal/404 easter egg chrome, clean up remaining inline styles - fix stray syntax.css link causing a 404
This commit is contained in:
+11
-25
@@ -1,35 +1,21 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}404 — command not found | {{ config.title }}{% endblock title %}
|
||||
{% block title %}404 — Document Not Found | {{ config.title }}{% endblock title %}
|
||||
{% block description %}The page you requested could not be found.{% endblock description %}
|
||||
|
||||
{% block content %}
|
||||
<div class="notfound-wrap">
|
||||
<div class="term-window" role="main" aria-label="404 error terminal">
|
||||
|
||||
<div class="term-titlebar" aria-hidden="true">
|
||||
<div class="term-dots">
|
||||
<span class="dot-red"></span>
|
||||
<span class="dot-yellow"></span>
|
||||
<span class="dot-green"></span>
|
||||
</div>
|
||||
<span class="term-titlebar-label">bash — {{ config.extra.terminal_hostname | default(value="pwnbox") }}</span>
|
||||
<div class="case-notice">
|
||||
<p class="case-notice-ref">STATUS: NOT FOUND</p>
|
||||
<h1 class="case-notice-title">Document Not Found</h1>
|
||||
<p class="case-notice-body">
|
||||
This page couldn't be located in the archive. It may have been moved, renamed, or never filed.
|
||||
</p>
|
||||
<div class="case-notice-links">
|
||||
<a href="{{ get_url(path="") }}">Home</a>
|
||||
<a href="{{ get_url(path="/posts") }}">Posts</a>
|
||||
<a href="{{ get_url(path="/tags") }}">Tags</a>
|
||||
</div>
|
||||
|
||||
<div class="term-body" id="term-body"
|
||||
data-link-home="{{ get_url(path="") }}"
|
||||
data-link-posts="{{ get_url(path="/posts") }}"
|
||||
data-link-tags="{{ get_url(path="/tags") }}"
|
||||
data-prompt="{{ config.extra.terminal_prompt_user | default(value="user@pwnbox") }}"
|
||||
data-hostname="{{ config.extra.terminal_hostname | default(value="pwnbox") }}"
|
||||
data-whoami="{{ config.extra.terminal_whoami | default(value="l0st_r3ader") }}">
|
||||
<!-- lines injected by 404.js -->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{% endblock content %}
|
||||
|
||||
{% block scripts %}
|
||||
<script defer src="{{ get_url(path="js/404.js") }}"></script>
|
||||
{% endblock scripts %}
|
||||
|
||||
+9
-35
@@ -1,46 +1,20 @@
|
||||
{% extends "base.html" %} {% block title %}{{ section.title }} | {{ config.title }}{% endblock title
|
||||
%} {% block content %}
|
||||
<div class="post-detail">
|
||||
<header class="post-header" style="margin-bottom: 3rem">
|
||||
<h1 class="post-title" style="font-size: clamp(2.5rem, 5vw, 4.5rem)">Archive</h1>
|
||||
<header class="post-header list-page-header">
|
||||
<h1 class="post-title list-page-title">Archive</h1>
|
||||
</header>
|
||||
|
||||
<div class="archive-list" style="max-width: 65ch; margin: 0 auto">
|
||||
<div class="archive-list">
|
||||
{% set section = get_section(path="posts/_index.md") %} {% for year, posts in section.pages |
|
||||
sort(attribute="date") | reverse | group_by(attribute="year") %}
|
||||
<div class="archive" style="margin-bottom: 2rem">
|
||||
<h2
|
||||
style="font-size: 1.5rem; color: var(--text-color); margin-bottom: 1rem; margin-top: 2rem"
|
||||
>
|
||||
{{ year }}
|
||||
</h2>
|
||||
<ul
|
||||
style="
|
||||
list-style-type: none;
|
||||
padding-left: 1rem;
|
||||
margin: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.75rem;
|
||||
"
|
||||
>
|
||||
<div class="archive-year">
|
||||
<h2 class="archive-year-title">{{ year }}</h2>
|
||||
<ul class="archive-items">
|
||||
{% for post in posts %}
|
||||
<li class="hover-scale" style="display: flex; gap: 1rem; align-items: baseline">
|
||||
<time
|
||||
datetime="{{ post.date }}"
|
||||
style="
|
||||
color: var(--text-muted);
|
||||
font-size: 0.95rem;
|
||||
white-space: nowrap;
|
||||
font-family: var(--font-mono);
|
||||
"
|
||||
>{{ post.date | date(format="%d-%b") }}</time
|
||||
>
|
||||
<a
|
||||
href="{{ post.permalink }}"
|
||||
style="color: var(--accent-color); font-weight: 500; font-size: 1.05rem"
|
||||
>{{ post.title }}</a
|
||||
>
|
||||
<li class="archive-item hover-scale">
|
||||
<time datetime="{{ post.date }}" class="archive-date">{{ post.date | date(format="%d-%b") }}</time>
|
||||
<a href="{{ post.permalink }}" class="archive-link">{{ post.title }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
+18
-19
@@ -190,32 +190,32 @@
|
||||
--cc-btn-primary-hover-bg: var(--accent-hover);
|
||||
--cc-btn-primary-hover-border-color: var(--accent-hover);
|
||||
--cc-toggle-on-bg: var(--accent-color);
|
||||
--cc-font-family: 'Outfit', sans-serif;
|
||||
--cc-btn-border-radius: 6px;
|
||||
--cc-modal-border-radius: 10px;
|
||||
--cc-font-family: 'Source Serif 4', Georgia, serif;
|
||||
--cc-btn-border-radius: 2px;
|
||||
--cc-modal-border-radius: 2px;
|
||||
}
|
||||
|
||||
/* Dark mode — synced with html.dark via darkMode: ['class', 'dark'] */
|
||||
#cc-main.cc--darkmode {
|
||||
--cc-bg: #111111;
|
||||
--cc-primary-color: #f4f4f5;
|
||||
--cc-secondary-color: #a1a1aa;
|
||||
--cc-bg: #1b1a17;
|
||||
--cc-primary-color: #e9e7de;
|
||||
--cc-secondary-color: #8b8a80;
|
||||
--cc-btn-primary-bg: var(--accent-color);
|
||||
--cc-btn-primary-color: #ffffff;
|
||||
--cc-btn-primary-border-color: var(--accent-color);
|
||||
--cc-btn-primary-hover-bg: var(--accent-hover);
|
||||
--cc-btn-primary-hover-border-color: var(--accent-hover);
|
||||
--cc-btn-secondary-bg: rgba(255,255,255,0.06);
|
||||
--cc-btn-secondary-color: #a1a1aa;
|
||||
--cc-btn-secondary-border-color: rgba(255,255,255,0.1);
|
||||
--cc-btn-secondary-hover-bg: rgba(255,255,255,0.12);
|
||||
--cc-btn-secondary-hover-color: #f4f4f5;
|
||||
--cc-separator-border-color: rgba(255,255,255,0.1);
|
||||
--cc-cookie-category-block-bg: rgba(255,255,255,0.04);
|
||||
--cc-cookie-category-block-border: rgba(255,255,255,0.08);
|
||||
--cc-btn-secondary-bg: rgba(233,231,222,0.06);
|
||||
--cc-btn-secondary-color: #8b8a80;
|
||||
--cc-btn-secondary-border-color: rgba(233,231,222,0.1);
|
||||
--cc-btn-secondary-hover-bg: rgba(233,231,222,0.12);
|
||||
--cc-btn-secondary-hover-color: #e9e7de;
|
||||
--cc-separator-border-color: rgba(233,231,222,0.1);
|
||||
--cc-cookie-category-block-bg: rgba(233,231,222,0.04);
|
||||
--cc-cookie-category-block-border: rgba(233,231,222,0.08);
|
||||
--cc-toggle-on-bg: var(--accent-color);
|
||||
--cc-footer-bg: #0a0a0a;
|
||||
--cc-footer-border-color: rgba(255,255,255,0.08);
|
||||
--cc-footer-bg: #131311;
|
||||
--cc-footer-border-color: rgba(233,231,222,0.08);
|
||||
}
|
||||
|
||||
/* Accent top border, no default box-shadow */
|
||||
@@ -227,12 +227,11 @@
|
||||
{% block head %}{% endblock head %}
|
||||
|
||||
<!-- Font preloads (eliminate FOUT on first paint) -->
|
||||
<link rel="preload" href="{{ get_url(path="fonts/outfit/outfit-v15-latin-regular.woff2") }}" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="{{ get_url(path="fonts/jetbrains-mono/JetBrainsMono-Regular.woff2") }}" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="{{ get_url(path="fonts/source-serif-4/source-serif-4-v14-latin-regular.woff2") }}" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="{{ get_url(path="fonts/ibm-plex-serif/ibm-plex-serif-v20-latin-700.woff2") }}" as="font" type="font/woff2" crossorigin>
|
||||
|
||||
<!-- CSS -->
|
||||
<link rel="stylesheet" href="{{ get_url(path="main.css") }}">
|
||||
<link rel="stylesheet" href="{{ get_url(path="css/syntax.css") }}">
|
||||
|
||||
<!-- Fonts (self-hosted) -->
|
||||
<link rel="stylesheet" href="{{ get_url(path="css/fonts.css") }}">
|
||||
|
||||
@@ -30,11 +30,13 @@ block og_url %}{{ config.base_url }}/{% endblock og_url %} {% block head %}
|
||||
</script>
|
||||
{% endblock head %} {% block content %} {% include "partials/profile.html" %}
|
||||
|
||||
<div
|
||||
class="post-feed-list"
|
||||
style="max-width: 65ch; margin: 0 auto; display: flex; flex-direction: column; gap: 2.5rem"
|
||||
>
|
||||
{% set section = get_section(path="posts/_index.md") %}
|
||||
{% set section = get_section(path="posts/_index.md") %}
|
||||
<p class="feed-eyebrow">
|
||||
<span>Recent Entries</span>
|
||||
<span>{{ section.pages | length }} filed</span>
|
||||
</p>
|
||||
|
||||
<div class="post-feed-list">
|
||||
{% set post_limit = config.extra.homepage_post_limit | default(value=3) %}
|
||||
{% for page in section.pages | slice(end=post_limit) %} {% include "partials/post-card.html" %} {% endfor %}
|
||||
</div>
|
||||
|
||||
+1
-2
@@ -108,7 +108,6 @@
|
||||
<div class="post-meta">
|
||||
{% if page.date %}
|
||||
<span class="post-meta-item">
|
||||
<span class="post-meta-label">Posted</span>
|
||||
<time datetime="{{ page.date }}">{{ page.date | date(format="%B %e, %Y") }}</time>
|
||||
</span>
|
||||
{% endif %}
|
||||
@@ -145,7 +144,7 @@
|
||||
<div class="post-tags">
|
||||
{% if page.taxonomies.tags %}
|
||||
{% for tag in page.taxonomies.tags %}
|
||||
<span class="tag">#{{ tag }}</span>
|
||||
<a href="{{ get_taxonomy_url(kind="tags", name=tag) }}" class="tag">#{{ tag }}</a>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
{% if config.extra.enable_comments and config.extra.utterances_repo and page %}
|
||||
{% if page.extra.comments is not defined or page.extra.comments %}
|
||||
<div class="comments" id="comments" style="margin-top: 4rem;">
|
||||
<div class="comments" id="comments"
|
||||
data-utterances-theme-dark="{{ config.extra.utterances_theme | default(value="github-dark") }}"
|
||||
data-utterances-theme-light="{{ config.extra.utterances_theme_light | default(value="github-light") }}">
|
||||
<script src="https://utteranc.es/client.js"
|
||||
repo="{{ config.extra.utterances_repo }}"
|
||||
issue-term="pathname"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<header class="site-header">
|
||||
<nav class="nav-container">
|
||||
<a href="{{ get_url(path="") }}" class="brand-link">
|
||||
<span class="brand-text">{{ config.title | default(value="pwna4profit") }}</span>
|
||||
<span class="brand-text">{{ config.title }}</span>
|
||||
</a>
|
||||
|
||||
<div class="nav-right">
|
||||
@@ -9,7 +9,9 @@
|
||||
<div id="nav-links" class="nav-links">
|
||||
{% if config.extra.menu %}
|
||||
{% for item in config.extra.menu %}
|
||||
<a href="{{ get_url(path=item.url) }}" class="nav-item">{{ item.name }}</a>
|
||||
{% set current = current_path | default(value="") %}
|
||||
{% set is_active = item.match and current is starting_with(item.match) %}
|
||||
<a href="{{ get_url(path=item.url) }}" class="nav-item{% if is_active %} is-active{% endif %}"{% if is_active %} aria-current="page"{% endif %}>{{ item.name }}</a>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
@@ -1,69 +1,37 @@
|
||||
<article
|
||||
class="feed-item"
|
||||
style="border-bottom: 1px dashed var(--border-color); padding-bottom: 2rem"
|
||||
>
|
||||
<h2 class="item-title" style="font-size: 1.25rem; margin-bottom: 0.5rem; font-weight: 600">
|
||||
<a href="{{ page.permalink }}">{{ page.title }}</a>
|
||||
</h2>
|
||||
<article class="feed-item card hover-scale">
|
||||
<span class="item-index">{% if loop.index < 10 %}0{{ loop.index }}{% else %}{{ loop.index }}{% endif %}</span>
|
||||
|
||||
<div
|
||||
class="item-meta"
|
||||
style="
|
||||
font-size: 0.85rem;
|
||||
color: var(--text-muted);
|
||||
margin-bottom: 1rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.25rem;
|
||||
"
|
||||
>
|
||||
<span>{{ page.date | date(format="%Y-%m-%d") }}</span>
|
||||
{% if page.reading_time %}
|
||||
<span style="opacity: 0.5;">·</span>
|
||||
<span>{{ page.reading_time }} min read</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="item-body">
|
||||
<h2 class="item-title">
|
||||
<a href="{{ page.permalink }}">{{ page.title }}</a>
|
||||
</h2>
|
||||
|
||||
<div
|
||||
class="item-snippet"
|
||||
style="font-size: 0.95rem; color: var(--text-color); margin-bottom: 1rem; opacity: 0.9"
|
||||
>
|
||||
{% if page.description %}
|
||||
<p style="margin: 0">{{ page.description }}</p>
|
||||
{% else %}
|
||||
<p style="margin: 0">{{ page.content | striptags | truncate(length=120) | safe }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="item-meta">
|
||||
<span>{{ page.date | date(format="%Y-%m-%d") }}</span>
|
||||
{% if page.reading_time %}
|
||||
<span class="item-meta-sep">·</span>
|
||||
<span>{{ page.reading_time }} min read</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="item-footer"
|
||||
style="display: flex; justify-content: space-between; align-items: center; font-size: 0.85rem"
|
||||
>
|
||||
<a href="{{ page.permalink }}" style="color: var(--accent-color)">Read more...</a>
|
||||
<div class="item-snippet">
|
||||
{% if page.description %}
|
||||
<p>{{ page.description }}</p>
|
||||
{% else %}
|
||||
<p>{{ page.content | striptags | truncate(length=120) | safe }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if page.taxonomies.tags %}
|
||||
<div
|
||||
class="item-tags"
|
||||
style="display: flex; align-items: center; gap: 0.5rem; color: var(--text-muted)"
|
||||
>
|
||||
<svg
|
||||
viewBox="0 0 24 24"
|
||||
width="14"
|
||||
height="14"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
fill="none"
|
||||
>
|
||||
<path
|
||||
d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"
|
||||
></path>
|
||||
<line x1="7" y1="7" x2="7.01" y2="7"></line>
|
||||
</svg>
|
||||
<span>
|
||||
{% for tag in page.taxonomies.tags %} {{ tag }}{% if not loop.last %}, {% endif %} {% endfor
|
||||
%}
|
||||
</span>
|
||||
<div class="item-footer">
|
||||
<a href="{{ page.permalink }}" class="item-readmore">Read more<span class="readmore-arrow">→</span></a>
|
||||
|
||||
{% if page.taxonomies.tags %}
|
||||
<div class="item-tags">
|
||||
{% for tag in page.taxonomies.tags %}
|
||||
<a href="{{ get_taxonomy_url(kind="tags", name=tag) }}" class="tag">{{ tag }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -1,45 +1,16 @@
|
||||
{% if config.extra.show_profile %}
|
||||
<div class="profile-section" style="display: flex; flex-direction: column; align-items: center; justify-content: center; margin-bottom: 4rem; text-align: center;">
|
||||
{% if config.extra.avatar_url %}
|
||||
<div class="avatar" style="width: 100px; height: 100px; border-radius: 50%; overflow: hidden; margin-bottom: 1rem; background-color: #1a1a1a; display: flex; align-items: center; justify-content: center;">
|
||||
<img src="{{ config.extra.avatar_url }}" alt="Avatar" loading="lazy" decoding="async" style="width: 100%; height: 100%; object-fit: cover;" onerror="this.src='data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 24 24\' fill=\'none\' stroke=\'%23f9fafb\' stroke-width=\'2\' stroke-linecap=\'round\' stroke-linejoin=\'round\'><path d=\'M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\'></path><circle cx=\'12\' cy=\'7\' r=\'4\'></circle></svg>'"/>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if config.extra.profile_subtitle %}
|
||||
<p class="profile-subtitle" style="color: var(--text-muted); font-size: 1rem; margin-bottom: 1rem;">{{ config.extra.profile_subtitle }}</p>
|
||||
{% endif %}
|
||||
|
||||
<div class="social-links" style="display: flex; gap: 1rem; color: var(--text-muted);">
|
||||
{% if config.extra.github_url %}
|
||||
<a href="{{ config.extra.github_url }}" style="color: inherit;" class="hover-scale" aria-label="GitHub">
|
||||
<svg viewBox="0 0 24 24" width="20" height="20" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"></path></svg>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if config.extra.twitter_url %}
|
||||
<a href="{{ config.extra.twitter_url }}" style="color: inherit;" class="hover-scale" aria-label="Twitter">
|
||||
<svg viewBox="0 0 24 24" width="20" height="20" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z"></path></svg>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if config.extra.youtube_url %}
|
||||
<a href="{{ config.extra.youtube_url }}" style="color: inherit;" class="hover-scale" aria-label="YouTube">
|
||||
<svg viewBox="0 0 24 24" width="20" height="20" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.42a2.78 2.78 0 0 0-1.94 2C1 8.13 1 12 1 12s0 3.87.46 5.58a2.78 2.78 0 0 0 1.94 2C5.12 20 12 20 12 20s6.88 0 8.6-.42a2.78 2.78 0 0 0 1.94-2C23 15.87 23 12 23 12s0-3.87-.46-5.58z"></path><polygon points="9.75 15.02 15.5 12 9.75 8.98 9.75 15.02"></polygon></svg>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if config.extra.linkedin_url %}
|
||||
<a href="{{ config.extra.linkedin_url }}" style="color: inherit;" class="hover-scale" aria-label="LinkedIn">
|
||||
<svg viewBox="0 0 24 24" width="20" height="20" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if config.extra.email %}
|
||||
<a href="mailto:{{ config.extra.email }}" style="color: inherit;" class="hover-scale" aria-label="Email">
|
||||
<svg viewBox="0 0 24 24" width="20" height="20" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if config.extra.show_rss_link %}
|
||||
<a href="{{ get_url(path="rss.xml") }}" style="color: inherit;" class="hover-scale" aria-label="RSS">
|
||||
<svg viewBox="0 0 24 24" width="20" height="20" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M4 11a9 9 0 0 1 9 9"></path><path d="M4 4a16 16 0 0 1 16 16"></path><circle cx="5" cy="19" r="1"></circle></svg>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="masthead">
|
||||
<p class="masthead-kicker">{{ config.extra.author | default(value="andwati") }}{% if config.extra.profile_subtitle %} — {{ config.extra.profile_subtitle }}{% endif %}</p>
|
||||
<h1 class="hero-title masthead-title">{{ config.title }}</h1>
|
||||
<p class="hero-subtitle">{{ config.description }}</p>
|
||||
|
||||
<div class="masthead-links">
|
||||
{% if config.extra.github_url %}<a href="{{ config.extra.github_url }}" target="_blank" rel="noopener noreferrer">GitHub</a>{% endif %}
|
||||
{% if config.extra.twitter_url %}<a href="{{ config.extra.twitter_url }}" target="_blank" rel="noopener noreferrer">Twitter</a>{% endif %}
|
||||
{% if config.extra.youtube_url %}<a href="{{ config.extra.youtube_url }}" target="_blank" rel="noopener noreferrer">YouTube</a>{% endif %}
|
||||
{% if config.extra.linkedin_url %}<a href="{{ config.extra.linkedin_url }}" target="_blank" rel="noopener noreferrer">LinkedIn</a>{% endif %}
|
||||
{% if config.extra.email %}<a href="mailto:{{ config.extra.email }}">Email</a>{% endif %}
|
||||
{% if config.extra.show_rss_link %}<a href="{{ get_url(path="rss.xml") }}">RSS</a>{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
@@ -42,7 +42,7 @@ and offensive security.{% endblock og_description %} {% block og_url %}{% if pag
|
||||
paginator.next %}<link rel="next" href="{{ paginator.next }}" />{% endif %} {% endblock head %} {%
|
||||
block content %}
|
||||
<div class="feed-page">
|
||||
<div class="hero" style="padding-bottom: 2rem">
|
||||
<div class="hero hero-compact">
|
||||
<div class="hero-content">
|
||||
<h1 class="hero-title">Posts</h1>
|
||||
<p class="hero-subtitle">
|
||||
@@ -55,13 +55,13 @@ block content %}
|
||||
{% for page in paginator.pages %}
|
||||
<article class="feed-item hover-scale">
|
||||
<a href="{{ page.permalink }}" class="item-link">
|
||||
<div style="display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.25rem;">
|
||||
<div class="item-date-row">
|
||||
<time datetime="{{ page.date }}" class="item-date"
|
||||
>{{ page.date | date(format="%b %d, %Y") }}</time
|
||||
>
|
||||
{% if page.reading_time %}
|
||||
<span style="color: var(--text-muted); font-size: 0.85rem; opacity: 0.6;">·</span>
|
||||
<span style="color: var(--text-muted); font-size: 0.85rem; font-family: var(--font-mono);">∼{{ page.reading_time }} min read</span>
|
||||
<span class="item-meta-sep">·</span>
|
||||
<span class="item-reading-time">∼{{ page.reading_time }} min read</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<h2 class="item-title">{{ page.title }}</h2>
|
||||
|
||||
@@ -14,43 +14,19 @@ og_description %} {% block og_url %}{{ config.base_url }}/tags/{% endblock og_ur
|
||||
"name": "Tags | {{ config.title }}",
|
||||
"description": "Browse all tags on {{ config.title }}",
|
||||
"url": "{{ config.base_url }}/tags/",
|
||||
"inLanguage": "en-US",
|
||||
"isPartOf": {
|
||||
"@type": "WebSite",
|
||||
"@id": "{{ config.base_url }}/#website"
|
||||
}
|
||||
"inLanguage": "en-US"
|
||||
}
|
||||
</script>
|
||||
{% endblock head %} {% block content %}
|
||||
<div
|
||||
class="tags-page"
|
||||
style="max-width: 65ch; margin: 0 auto; padding-top: 4rem; text-align: center"
|
||||
>
|
||||
<header class="page-header" style="margin-bottom: 3rem">
|
||||
<h1 class="page-title" style="font-size: 2rem; font-weight: 600">All Tags</h1>
|
||||
<div class="tags-page">
|
||||
<header class="page-header tags-page-header">
|
||||
<h1 class="page-title">All Tags</h1>
|
||||
</header>
|
||||
|
||||
<div
|
||||
class="tags-container"
|
||||
style="display: flex; flex-wrap: wrap; gap: 2rem; justify-content: center; align-items: center"
|
||||
>
|
||||
<div class="tags-container">
|
||||
{% for term in terms %}
|
||||
<a
|
||||
href="{{ term.permalink }}"
|
||||
class="hover-scale"
|
||||
style="
|
||||
font-size: 1.1rem;
|
||||
color: var(--text-color);
|
||||
font-weight: 400;
|
||||
text-decoration: none;
|
||||
display: inline-flex;
|
||||
align-items: flex-start;
|
||||
"
|
||||
>
|
||||
{{ term.name }}<sup
|
||||
style="font-size: 0.7em; color: var(--text-muted); margin-left: 0.15rem; margin-top: 0.1rem"
|
||||
>{{ term.pages | length }}</sup
|
||||
>
|
||||
<a href="{{ term.permalink }}" class="tag-link hover-scale">
|
||||
{{ term.name }}<sup class="tag-count">{{ term.pages | length }}</sup>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
@@ -33,41 +33,17 @@ term.permalink }}{% endblock og_url %} {% block head %}
|
||||
</script>
|
||||
{% endblock head %} {% block content %}
|
||||
<div class="post-detail">
|
||||
<header class="post-header" style="margin-bottom: 3rem">
|
||||
<h1 class="post-title" style="font-size: clamp(2rem, 4vw, 3.5rem)">
|
||||
<span style="color: var(--text-muted)">#</span>{{ term.name }}
|
||||
</h1>
|
||||
<header class="post-header list-page-header">
|
||||
<h1 class="post-title list-page-title"><span class="term-hash">#</span>{{ term.name }}</h1>
|
||||
</header>
|
||||
|
||||
<div class="archive-list" style="max-width: 65ch; margin: 0 auto">
|
||||
<div class="archive">
|
||||
<ul
|
||||
style="
|
||||
list-style-type: none;
|
||||
padding-left: 0;
|
||||
margin: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.75rem;
|
||||
"
|
||||
>
|
||||
<div class="archive-list">
|
||||
<div class="archive-year">
|
||||
<ul class="archive-items">
|
||||
{% for page in term.pages %}
|
||||
<li class="hover-scale" style="display: flex; gap: 1rem; align-items: baseline">
|
||||
<time
|
||||
datetime="{{ page.date }}"
|
||||
style="
|
||||
color: var(--text-muted);
|
||||
font-size: 0.95rem;
|
||||
white-space: nowrap;
|
||||
font-family: var(--font-mono);
|
||||
"
|
||||
>{{ page.date | date(format="%d-%b") }}</time
|
||||
>
|
||||
<a
|
||||
href="{{ page.permalink }}"
|
||||
style="color: var(--accent-color); font-weight: 500; font-size: 1.05rem"
|
||||
>{{ page.title }}</a
|
||||
>
|
||||
<li class="archive-item hover-scale">
|
||||
<time datetime="{{ page.date }}" class="archive-date">{{ page.date | date(format="%d-%b") }}</time>
|
||||
<a href="{{ page.permalink }}" class="archive-link">{{ page.title }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
Reference in New Issue
Block a user