diff --git a/_includes/base.njk b/_includes/base.njk index 1af94d9..5091fda 100644 --- a/_includes/base.njk +++ b/_includes/base.njk @@ -8,36 +8,105 @@ {% endif %} - {# Critical CSS inlined for faster initial render #} {# Preload full stylesheet with cache-busted filename #} @@ -72,13 +141,13 @@ - Matrix Logo + Matrix Logo - Forgejo Logo + Forgejo Logo - Mastodon Logo + Mastodon Logo @@ -91,19 +160,19 @@
- Git Logo + Git Logo source - Tor Onion Logo + RSS Logo rss - Tor Onion Logo + Tor Onion Logo onion mirror diff --git a/assets/forgejo-icon.svg b/assets/forgejo-icon-dark.svg similarity index 100% rename from assets/forgejo-icon.svg rename to assets/forgejo-icon-dark.svg diff --git a/assets/git-icon.svg b/assets/git-icon-dark.svg similarity index 100% rename from assets/git-icon.svg rename to assets/git-icon-dark.svg diff --git a/assets/mastodon-icon.svg b/assets/mastodon-icon-dark.svg similarity index 100% rename from assets/mastodon-icon.svg rename to assets/mastodon-icon-dark.svg diff --git a/assets/matrix-icon.svg b/assets/matrix-icon-dark.svg similarity index 100% rename from assets/matrix-icon.svg rename to assets/matrix-icon-dark.svg diff --git a/assets/onion-icon.svg b/assets/onion-icon-dark.svg similarity index 100% rename from assets/onion-icon.svg rename to assets/onion-icon-dark.svg diff --git a/assets/rss-icon.svg b/assets/rss-icon-dark.svg similarity index 100% rename from assets/rss-icon.svg rename to assets/rss-icon-dark.svg diff --git a/css/style.css b/css/style.css index bd9c572..4dd619e 100644 --- a/css/style.css +++ b/css/style.css @@ -1,13 +1,3 @@ -/* Base styles */ -:root { - --primary-color: #2c3e50; - --secondary-color: #3498db; - --text-color: #333; - --background-color: #fff; - --border-color: #ddd; - --code-background: #f5f5f5; -} - * { box-sizing: border-box; margin: 0; @@ -16,30 +6,30 @@ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif; - line-height: 1.6; - color: var(--text-color); - background-color: var(--background-color); + line-height: var(--line-height-body); + color: var(--color-text-primary); + background-color: var(--color-bg-page); max-width: 800px; margin: 0 auto; - padding: 2rem; + padding: var(--space-section); } /* Header and Navigation */ header { - margin-bottom: 2rem; - padding-bottom: 1rem; - border-bottom: 1px solid var(--border-color); + margin-bottom: var(--space-section); + padding-bottom: var(--space-element); + border-bottom: 1px solid var(--color-border-default); } header nav a { - color: var(--primary-color); + color: var(--color-text-heading); text-decoration: none; - font-weight: bold; - font-size: 1.2rem; + font-weight: var(--font-weight-bold); + font-size: var(--font-size-nav); } header nav a:hover { - color: var(--secondary-color); + color: var(--color-text-link); } /* Main content */ @@ -48,20 +38,20 @@ main { } h1, h2, h3, h4, h5, h6 { - color: var(--primary-color); - margin: 1.5rem 0 1rem; + color: var(--color-text-heading); + margin: var(--space-block) 0 var(--space-element); } -h1 { font-size: 2rem; } -h2 { font-size: 1.5rem; } -h3 { font-size: 1.25rem; } +h1 { font-size: var(--font-size-page-title); } +h2 { font-size: var(--font-size-section-title); } +h3 { font-size: var(--font-size-subsection-title); } p { - margin-bottom: 1rem; + margin-bottom: var(--space-element); } a { - color: var(--secondary-color); + color: var(--color-text-link); } /* Section header with view all link */ @@ -72,13 +62,13 @@ a { } .section-header h1 { - margin: 1.5rem 0 1rem; + margin: var(--space-block) 0 var(--space-element); } .view-all { - margin-top: 1.5rem; - font-size: 0.9rem; - color: var(--secondary-color); + margin-top: var(--space-block); + font-size: var(--font-size-small); + color: var(--color-text-link); text-decoration: none; } @@ -92,7 +82,7 @@ a { } .post-list li { - margin-bottom: 1.5rem; + margin-bottom: var(--space-block); } .post-list li:last-child { @@ -102,57 +92,57 @@ a { .post-card { display: block; text-decoration: none; - padding: 1.5rem; - border: 1px solid var(--border-color); - border-radius: 8px; + padding: var(--space-block); + border: 1px solid var(--color-border-default); + border-radius: var(--radius-card); transition: border-color 0.2s, box-shadow 0.2s; } .post-card:hover { - border-color: var(--secondary-color); - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + border-color: var(--color-border-focus); + box-shadow: var(--shadow-card); } .post-card h2 { - margin: 0 0 0.5rem; - color: var(--primary-color); + margin: 0 0 var(--space-tight); + color: var(--color-text-heading); } .post-card:hover h2 { - color: var(--secondary-color); + color: var(--color-text-link); } .post-card time { - color: #666; - font-size: 0.9rem; + color: var(--color-text-muted); + font-size: var(--font-size-small); } .post-card p { - color: var(--text-color); - margin-top: 0.5rem; + color: var(--color-text-primary); + margin-top: var(--space-tight); margin-bottom: 0; } /* Blog post */ .blog-post { - margin-bottom: 2rem; + margin-bottom: var(--space-section); } .post-header { - margin-bottom: 2rem; + margin-bottom: var(--space-section); } .post-header h1 { - margin-bottom: 0.5rem; + margin-bottom: var(--space-tight); } .post-header time { - color: #666; - font-size: 0.9rem; + color: var(--color-text-muted); + font-size: var(--font-size-small); } .post-content { - margin-bottom: 2rem; + margin-bottom: var(--space-section); } .post-content img { @@ -161,18 +151,18 @@ a { } .post-content code { - background-color: var(--code-background); + background-color: var(--color-bg-surface); padding: 0.2rem 0.4rem; - border-radius: 3px; + border-radius: var(--radius-inline); font-size: 0.9em; } .post-content pre { - background-color: var(--code-background); - padding: 1rem; - border-radius: 5px; + background-color: var(--color-bg-surface); + padding: var(--space-element); + border-radius: var(--radius-block); overflow-x: auto; - margin: 1rem 0; + margin: var(--space-element) 0; } .post-content pre code { @@ -189,15 +179,15 @@ a { .post-content .task-list-item { display: flex; align-items: flex-start; - gap: 0.5rem; - margin-bottom: 0.25rem; + gap: var(--space-tight); + margin-bottom: var(--space-micro); } .post-content .task-list-item-checkbox { margin-top: 0.35rem; width: 1rem; height: 1rem; - accent-color: var(--secondary-color); + accent-color: var(--color-text-link); } .post-content .task-list-item > label { @@ -206,73 +196,73 @@ a { /* Nested task lists */ .post-content .task-list-item ul.contains-task-list { - margin-top: 0.25rem; + margin-top: var(--space-micro); } /* Lists in post content */ .post-content ul, .post-content ol { - margin-bottom: 1rem; - padding-left: 1.5rem; + margin-bottom: var(--space-element); + padding-left: var(--space-block); } .post-content li { - margin-bottom: 0.25rem; + margin-bottom: var(--space-micro); } .post-content ul ul, .post-content ul ol, .post-content ol ul, .post-content ol ol { - margin-top: 0.25rem; - margin-bottom: 0.5rem; - padding-left: 1.5rem; + margin-top: var(--space-micro); + margin-bottom: var(--space-tight); + padding-left: var(--space-block); } /* Expandable sections */ .expandable { - border: 1px solid var(--border-color); - border-radius: 5px; - margin: 1rem 0; + border: 1px solid var(--color-border-default); + border-radius: var(--radius-block); + margin: var(--space-element) 0; } .expandable summary { - padding: 0.75rem 1rem; + padding: 0.75rem var(--space-element); cursor: pointer; - font-weight: bold; - background-color: var(--code-background); - border-radius: 5px 5px 0 0; + font-weight: var(--font-weight-bold); + background-color: var(--color-bg-surface); + border-radius: var(--radius-block) var(--radius-block) 0 0; } .expandable[open] summary { - border-bottom: 1px solid var(--border-color); + border-bottom: 1px solid var(--color-border-default); } .expandable > *:not(summary) { - padding: 0 1rem; + padding: 0 var(--space-element); } .expandable > p:last-child { - padding-bottom: 1rem; + padding-bottom: var(--space-element); } /* Tags */ .post-tags { - margin-top: 2rem; - padding-top: 1rem; - border-top: 1px solid var(--border-color); + margin-top: var(--space-section); + padding-top: var(--space-element); + border-top: 1px solid var(--color-border-default); } .post-tags h2 { - font-size: 1rem; - margin-bottom: 0.5rem; + font-size: var(--font-size-body); + margin-bottom: var(--space-tight); } .tag-list { list-style: none; display: flex; flex-wrap: wrap; - gap: 0.5rem 1rem; + gap: var(--space-tight) var(--space-element); } .tag-list li { @@ -280,7 +270,7 @@ a { } .tag-list a { - color: var(--secondary-color); + color: var(--color-text-link); text-decoration: none; } @@ -290,53 +280,64 @@ a { /* Footnotes */ .footnotes { - margin-top: 2rem; - padding-top: 1rem; - border-top: 2px solid var(--border-color); - font-size: 0.9rem; + margin-top: var(--space-section); + padding-top: var(--space-element); + border-top: 2px solid var(--color-border-default); + font-size: var(--font-size-small); } .footnotes h2 { - font-size: 1rem; - margin-bottom: 0.5rem; + font-size: var(--font-size-body); + margin-bottom: var(--space-tight); } .footnotes ol { - padding-left: 1.5rem; + padding-left: var(--space-block); } .footnotes li { - margin-bottom: 0.5rem; + margin-bottom: var(--space-tight); } .footnote-ref a { - color: var(--secondary-color); + color: var(--color-text-link); text-decoration: none; } .footnote-backref { - margin-left: 0.5rem; + margin-left: var(--space-tight); text-decoration: none; } /* Draft Warning Banner */ .draft-warning-banner { - background-color: #fff3cd; - border: 1px solid #ffc107; - border-radius: 5px; - padding: 1rem; - margin-bottom: 1.5rem; - color: #856404; - font-weight: 500; + background-color: var(--color-bg-warning); + border: 1px solid var(--color-border-warning); + border-radius: var(--radius-block); + padding: var(--space-element); + margin-bottom: var(--space-block); + color: var(--color-warning-text); + font-weight: var(--font-weight-medium); text-align: center; } /* Footer */ footer { - margin-top: 2rem; - padding-top: 1rem; - border-top: 1px solid var(--border-color); + margin-top: var(--space-section); + padding-top: var(--space-element); + border-top: 1px solid var(--color-border-default); text-align: center; - color: #666; - font-size: 0.9rem; + color: var(--color-text-muted); + font-size: var(--font-size-small); +} + +/* Icon utilities */ +.icon-invertible { + transition: filter 0.2s; +} + +@media (prefers-color-scheme: dark) { + .icon-invertible { + filter: invert(1) brightness(0.9); + } } \ No newline at end of file diff --git a/posts/drafts/remove-tracking-params-from-links.md b/posts/drafts/remove-tracking-params-from-links.md index 04523fc..3635bcf 100644 --- a/posts/drafts/remove-tracking-params-from-links.md +++ b/posts/drafts/remove-tracking-params-from-links.md @@ -1,4 +1,3 @@ - ## Your internet traffic is being tracked When you open up your phone and click on or share links though websites and applications websites are secretly injecting tracking information into the pages. @@ -19,17 +18,17 @@ TODO: explain why that is a bad thing for privacy, and personal life @@ -524,7 +523,7 @@ The most basic low tech way to remove the trackers is to just delete them yourse