Commit 49f15c5187

49f15c51872d2fb7a5503c7029de81a1f989d10f

parent: 5920370e91

Unsigned

cmc <hello@cleberg.net> · 2026-01-21 04:43 UTC

update theme again to be more legible

Layout: unified · split

theme/static/styles.css +100 −307
@@ -1,339 +1,132 @@
1/* --- Variables & System Logic --- */
12:root {
2 --bg: #0a0b10;
3 --green: #00ff9d;
4 --green-dim: rgba(0, 255, 157, 0.2);
5 --glass: rgba(0, 255, 157, 0.03);
6 --text: #c0fce6;
7 --font: "Lucida Console", "Monaco", "Consolas", monospace;
8 --emacs-blue: #51afef;
9 --emacs-bg: #1c1f24;
10}
11
12/* Base Terminal Environment */
13html, body {
14 height: 100%;
15 margin: 0;
16 padding: 0;
17 background-color: var(--bg);
18}
3 color-scheme: light dark;
4 /* Light Mode Palette */
5 --bg: #ffffff;
6 --fg: #1a1a1a;
7 --accent: #0000ff; /* Classic HTML blue */
8 --border: #000000;
9 --code-bg: #f4f4f4;
10 --meta: #666666;
11 --max-width: 800px;
12}
13
14@media (prefers-color-scheme: dark) {
15 :root {
16 --bg: #0d0d0d;
17 --fg: #e0e0e0;
18 --accent: #4dabff;
19 --border: #333333;
20 --code-bg: #1a1a1a;
21 --meta: #999999;
22 }
23}
24
25/* --- Layout Architecture --- */
26* { box-sizing: border-box; }
1927
2028body {
21 color: var(--text);
22 font-family: var(--font);
23 font-size: 0.85rem;
24 line-height: 1.5;
25 display: flex;
26 flex-direction: column;
27 align-items: center;
28 overflow: hidden; /* Desktop keeps terminal-shell fixed */
29 background: var(--bg);
30 color: var(--fg);
31 font-family: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace;
32 line-height: 1.6;
33 max-width: var(--max-width);
34 margin: 0 auto;
35 padding: 2rem 1rem;
36 text-rendering: optimizeLegibility;
2937}
3038
31img {
32 max-width: 100%;
33}
39/* --- Navigation & Footer --- */
40nav ul { list-style: none; padding: 0; display: flex; gap: 1rem; border-bottom: 4px solid var(--fg); padding-bottom: 0.5rem; }
41nav a { text-transform: uppercase; font-weight: 900; text-decoration: none; }
42nav a:hover { background: var(--fg); color: var(--bg); }
3443
35/* CRT Scanline Effect */
36.scanlines {
37 position: fixed;
38 top: 0; left: 0; width: 100%; height: 100%;
39 background: linear-gradient(
40 rgba(18, 16, 16, 0) 50%,
41 rgba(0, 0, 0, 0.15) 50%
42 );
43 background-size: 100% 4px;
44 z-index: 9999;
45 pointer-events: none;
46}
44footer { margin-top: 4rem; border-top: 1px solid var(--border); padding-top: 1rem; font-size: 0.8rem; text-transform: uppercase; }
4745
48.terminal-shell {
49 width: 95%;
50 max-width: 1000px;
51 height: 98vh;
52 display: flex;
53 flex-direction: column;
54 padding: 10px 0;
55}
46/* --- Typography (Brutalist) --- */
47h1, h2, h3 { line-height: 1.1; margin-top: 2rem; font-weight: 900; text-transform: uppercase; }
48h1 { font-size: 2.2rem; margin-bottom: 1rem; }
49h2 { border-left: 10px solid var(--accent); padding-left: 0.75rem; }
5650
57main {
58 flex: 1;
59 overflow-x: scroll;
60 overflow-y: auto;
61 margin: 10px 0;
62 scrollbar-width: thin;
63 scrollbar-color: var(--green) transparent;
64}
51a { color: var(--accent); text-decoration: underline; text-underline-offset: 3px; }
52a:hover { background: var(--accent); color: var(--bg); text-decoration: none; }
6553
66/* Navigation & Header */
67.system-header {
68 border-bottom: 1px solid var(--green-dim);
69 padding-bottom: 0.5rem;
70 margin-bottom: 1.5rem;
71 display: flex;
72 justify-content: space-between;
73 align-items: center;
74 font-size: 0.8rem;
75}
54/* --- Weblorg / Template Specifics --- */
55section b { display: block; font-size: 0.7rem; text-transform: uppercase; color: var(--meta); margin-top: 0.5rem; }
56section span { display: block; font-weight: bold; border-bottom: 1px solid var(--border); padding-bottom: 0.25rem; }
7657
77nav ul {
78 list-style: none;
79 display: flex;
80 gap: 1.5rem;
81 margin: 0;
82 padding: 0;
83}
58.post { display: flex; justify-content: space-between; border-bottom: 1px dashed var(--border); padding: 0.5rem 0; }
59.post time { font-size: 0.8rem; color: var(--meta); }
8460
85nav a {
86 color: var(--green);
87 text-decoration: none;
88 text-transform: uppercase;
89}
61/* --- Org-Mode Tables (Heavy Grid) --- */
62table { width: 100%; border-collapse: collapse; margin: 2rem 0; border: 3px solid var(--fg); }
63th, td { border: 1px solid var(--fg); padding: 0.75rem; text-align: left; }
64th { background: var(--fg); color: var(--bg); text-transform: uppercase; font-size: 0.8rem; }
9065
91nav a:hover {
92 text-shadow: 0 0 8px var(--green);
93 background: var(--green-dim);
94}
66/* --- Code & Pre blocks --- */
67pre { padding: 1rem; border: 1px solid var(--border); background: var(--code-bg); overflow-x: auto; }
68code { background: var(--code-bg); padding: 0.2rem 0.4rem; }
9569
96/* Content Pane (The Glass) */
97.glass-pane {
98 background: var(--glass);
99 backdrop-filter: blur(4px);
100 border: 1px solid var(--green-dim);
101 padding: 1.5rem;
102 min-height: 100%;
103 box-sizing: border-box;
104}
105
106/* Stylized Data Blocks */
107.sys-readout {
108 border: 1px solid var(--green-dim);
109 background: rgba(0, 0, 0, 0.3);
110 padding: 1rem;
111 margin-bottom: 2rem;
112 font-size: 0.8rem;
113 display: grid;
114 grid-template-columns: auto 1fr;
115 gap: 0.5rem 1rem;
116}
117
118.sys-readout b {
119 color: var(--green);
120 text-transform: uppercase;
121 opacity: 0.7;
122}
70/* --- Accessibility & Efficiency --- */
71img { max-width: 100%; height: auto; filter: grayscale(1); }
72img:hover { filter: grayscale(0); }
12373
124/* Typography & Elements */
125h1, h2, h3 {
126 color: var(--green);
74/* --- Accessibility: Skip Link --- */
75.skip-link {
76 position: absolute;
77 top: -100px; /* Hide off-screen */
78 left: 50%;
79 transform: translateX(-50%);
80 background: var(--fg);
81 color: var(--bg);
82 padding: 1rem 2rem;
83 z-index: 999;
84 font-weight: 900;
12785 text-transform: uppercase;
128 letter-spacing: 2px;
129}
130
131h1 { font-size: 1.5rem; margin-bottom: 1rem; }
132h2 { font-size: 1.2rem; margin-top: 1.5rem; }
133h3 { font-size: 1rem; }
134
135a {
136 color: var(--green);
137 transition: 0.2s;
138 text-decoration-thickness: 1px;
139 text-underline-offset: 3px;
140}
141
142a:hover {
143 color: #fff;
144 text-shadow: 0 0 5px var(--green);
86 border: 3px solid var(--accent);
87 text-decoration: none;
88 transition: top 0.2s ease-in-out;
14589}
14690
147code {
148 background: var(--green-dim);
149 padding: 2px 4px;
150 color: #fff;
91/* Show the link when a user tabs to it */
92.skip-link:focus {
93 top: 0;
94 outline: none; /* We use the border and color change as the indicator */
15195}
15296
153/* Blockquotes: Emacs Style */
154blockquote {
155 background: var(--emacs-bg);
156 border-left: 4px solid var(--emacs-blue);
157 margin: 1.5rem 0;
158 padding: 1rem;
159 color: #bbc2cf;
160 font-style: italic;
161 position: relative;
97/* Ensure the main area doesn't show a blue ring when focused via skip-link */
98#main-content:focus {
99 outline: none;
162100}
163101
164blockquote::before {
165 content: "/* COMMENT */";
166 position: absolute;
167 top: -10px;
168 right: 10px;
169 font-size: 0.6rem;
170 color: var(--emacs-blue);
171 background: var(--bg);
172 padding: 0 5px;
173}
174
175/* Blog List (TUI Style) */
176.post {
177 margin: 0.5rem 0;
178 padding: 8px 5px;
179 border-bottom: 1px dashed rgba(0, 255, 157, 0.1);
102/* --- Footnote Alignment --- */
103.footdef {
180104 display: flex;
181 flex-direction: row; /* Default: Side-by-side for desktop */
182 align-items: baseline;
183}
184
185.post time {
186 color: var(--green);
187 opacity: 0.6;
188 font-size: 0.75rem;
189 margin-right: 1.5rem;
190 white-space: nowrap; /* Prevents date from wrapping */
191 font-family: var(--font);
105 align-items: flex-start; /* Keeps number at the top if text wraps */
106 gap: 1rem; /* Space between number and text */
107 margin-bottom: 0.5rem;
192108}
193109
194.post a {
195 font-size: 0.85rem;
196 text-decoration: none;
110/* Ensure the paragraph doesn't add its own block margins */
111.footpara {
112 margin: 0;
197113 flex: 1;
198}
199
200.post a::before {
201 content: "DIR_ ";
202 font-size: 0.7rem;
203 opacity: 0.5;
204}
205
206/* Code Blocks */
207pre {
208 background: var(--emacs-bg);
209 border: 1px solid #3e4451;
210 border-left: 4px solid var(--emacs-blue);
211 padding: 1rem;
212 overflow-x: auto;
213 position: relative;
214 margin: 1.5rem 0;
215}
216
217pre::before {
218 content: "-uuu:--- F1 buffer.txt All (1,0)";
219 display: block;
220 background: #282c34;
221 color: #bbc2cf;
222 font-size: 0.7rem;
223 margin: -1rem -1rem 1rem -1rem;
224 padding: 4px 10px;
225 border-bottom: 1px solid #3e4451;
226 opacity: 0.7;
227}
228
229/* Tables */
230.table-wrapper {
231 width: 100%;
232 overflow-x: auto;
233 margin: 2rem 0;
234}
235
236table {
237 width: 100%;
238 border-collapse: collapse;
239 font-size: 0.85rem;
240 background: rgba(0, 0, 0, 0.2);
241}
242
243th {
244 background: var(--green-dim);
245 color: var(--green);
246 text-transform: uppercase;
247 text-align: left;
248 padding: 12px;
249 border-bottom: 1px solid var(--green);
250}
251
252td {
253 padding: 10px;
254 border-bottom: 1px solid rgba(0, 255, 157, 0.1);
255 color: var(--text);
256 border-right: 1px solid rgba(0, 255, 157, 0.05);
257}
258
259table, thead, tbody, th, tr, td {
260 border: 1px solid var(--green-dim);
261}
262
263td:last-child { border-right: none; }
264
265/* Footer & Status Bar */
266footer {
267 margin-top: auto;
268 font-size: 0.7rem;
269}
270
271.system-log {
272 border-top: 2px solid var(--green);
273 background: linear-gradient(to bottom, rgba(0,255,157,0.05), transparent);
274 padding: 10px;
275}
276
277.log-entry { font-size: 0.7rem; line-height: 1.4; color: var(--green); }
278
279.status-bar {
280 background: var(--green);
281 color: var(--bg);
282 font-size: 0.7rem;
283 padding: 2px 10px;
284114 display: flex;
285 justify-content: space-between;
286 font-weight: bold;
287}
288
289/* Fix for Footer Link Visibility */
290.status-bar a {
291 color: #000; /* High contrast black on green bar */
292 text-decoration: underline;
293 font-weight: 900;
294}
295
296.status-bar a:hover {
297 background: #000;
298 color: var(--green);
299}
300
301.status-node::before {
302 content: "● NORMAL ";
303 background: #000;
304 color: var(--green);
305 padding: 0 8px;
306 margin-right: 10px;
307}
308
309@media (max-width: 600px) {
115 flex-direction: column;
116 gap: 0.5rem;
310117}
311118
312/* Mobile Responsiveness for Blog List */
313@media (max-width: 650px) {
314 .post {
315 flex-direction: column;
316 align-items: flex-start;
317 gap: 4px;
318 }
319
320 .post time {
321 margin-right: 0;
322 margin-bottom: 2px;
323 font-size: 0.7rem;
324 opacity: 0.4;
325 }
326
327 .post a {
328 padding: 4px 0;
329 }
119/* Style the footnote number to be a fixed width for alignment */
120.footnum {
121 font-weight: bold;
122 min-width: 1.5rem;
123 text-align: right;
124 text-decoration: none;
125 font-size: 0.85rem;
126 color: var(--accent);
330127}
331128
332/* General Layout Mobile Fixes */
333129@media (max-width: 600px) {
334 body { overflow-y: auto; }
335 .terminal-shell { height: auto; }
336 .system-header { flex-direction: column; align-items: flex-start; gap: 1rem; }
337 nav ul { flex-wrap: wrap; gap: 10px 20px;}
338 .glass-pane { padding: 1rem; }
130 body { padding: 1rem; }
131 .post { flex-direction: column; }
339132}
\ No newline at end of file
theme/templates/base.html +17 −42
@@ -17,50 +17,25 @@
1717 {% endblock %}
1818</head>
1919<body>
20 <div class="scanlines"></div>
21 <div class="terminal-shell">
22 <header class="system-header">
23 <div class="sys-info">SYS_OS [VER 2.26.1]</div>
24 <nav aria-label="Site Navigation">
25 <ul>
26 <li><a href="/">Home</a></li>
27 <li><a href="/about/">About</a></li>
28 <li><a href="/blog/">Blog</a></li>
29 <li><a href="/services/">Services</a></li>
30 </ul>
31 </nav>
32 </header>
20 <a href="#main-content" class="skip-link">Skip to content</a>
21 <nav aria-label="Site Navigation">
22 <ul>
23 <li><a href="/">Home</a></li>
24 <li><a href="/about/">About</a></li>
25 <li><a href="/blog/">Blog</a></li>
26 <li><a href="/services/">Services</a></li>
27 </ul>
28 </nav>
3329
34 <main id="main">
35 <div class="glass-pane"> {% block main %}{% endblock %}
36 </div>
37 </main>
38
39<footer>
40 <div class="system-log">
41 <div class="log-entry">
42 <span class="log-time">[{{ now() | strftime("%H:%M:%S") }}]</span>
43 <span class="log-msg">KERNEL: CLEBERG_OS_NODE INITIALIZED</span>
44 </div>
45 <div class="log-entry">
46 <span class="log-time">[{{ now() | strftime("%H:%M:%S") }}]</span>
47 <span class="log-msg">BUILD_TS: &lt;{{ now() | strftime("%Y-%m-%d %a %H:%M:%S") }}&gt;</span>
30 <main id="main">
31 <div> {% block main %}{% endblock %}
4832 </div>
49 <div class="log-entry">
50 <span class="log-time">[{{ now() | strftime("%H:%M:%S") }}]</span>
51 <span class="log-msg">STATUS: SESSION_ID #<span class="session-id"></span> ACTIVE</span>
52 </div>
53 </div>
54
55 <div class="status-bar">
56 <span class="status-node">NODE: CLEBERG_NET</span>
57 <span class="status-links">
58 <a href="https://git.cleberg.net/cleberg.net.git">SOURCE</a> &middot;
59 <a href="/feed.xml">RSS</a> &middot;
60 <a href="http://sv3g2dlyvwyk2nvi3eeh55fcrpdvjlclhi6wwsx57cste6lwdjanzyyd.onion">ONION</a>
61 </span>
62 </div>
33 </main>
34
35<footer>
36 <a href="https://git.cleberg.net/cleberg.net.git">SOURCE</a> &middot;
37 <a href="/feed.xml">RSS</a> &middot;
38 <a href="http://sv3g2dlyvwyk2nvi3eeh55fcrpdvjlclhi6wwsx57cste6lwdjanzyyd.onion">ONION</a>
6339</footer>
64 </div>
6540</body>
6641</html>
theme/templates/index.html +3 −3
@@ -1,10 +1,10 @@
11{% extends "base.html" %} {% block main %}
2<section class="sys-readout">
2<section>
33 <b>User</b> <span>Christian Cleberg &lt;hello@cleberg.net&gt;</span>
44 <b>Context</b> <span>Technology Assurance Manager</span>
5 <b>Status</b> <span style="color: #fff; text-shadow: 0 0 5px var(--green);">[ ACTIVE ]</span>
5 <b>Status</b>Active</span>
66</section>
7<section class="recent-posts">
7<section>
88 <h2>Recent Posts</h2>
99 <!-- BEGIN_POSTS -->
1010 <!-- END_POSTS -->
theme/templates/post.html +1 −1
@@ -9,7 +9,7 @@
99{% endif %} {% endblock %} {% block main %}
1010<article>
1111 <section>
12 <section class="sys-readout">
12 <section>
1313 <b>Object</b> <span>{{ post.title }}</span>
1414 <b>Timestamp</b> <span><time datetime='{{ post.date|strftime("%Y-%m-%d") }}'>{{ post.date|strftime("%Y-%m-%d %H:%M:%S") }}</time></span>
1515 <b>Summary</b> <span>{{ post.description }}</span>