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 --- */
1:root { 2:root {
2 --bg: #0a0b10; 3 color-scheme: light dark;
3 --green: #00ff9d; 4 /* Light Mode Palette */
4 --green-dim: rgba(0, 255, 157, 0.2); 5 --bg: #ffffff;
5 --glass: rgba(0, 255, 157, 0.03); 6 --fg: #1a1a1a;
6 --text: #c0fce6; 7 --accent: #0000ff; /* Classic HTML blue */
7 --font: "Lucida Console", "Monaco", "Consolas", monospace; 8 --border: #000000;
8 --emacs-blue: #51afef; 9 --code-bg: #f4f4f4;
9 --emacs-bg: #1c1f24; 10 --meta: #666666;
10} 11 --max-width: 800px;
11 12}
12/* Base Terminal Environment */ 13
13html, body { 14@media (prefers-color-scheme: dark) {
14 height: 100%; 15 :root {
15 margin: 0; 16 --bg: #0d0d0d;
16 padding: 0; 17 --fg: #e0e0e0;
17 background-color: var(--bg); 18 --accent: #4dabff;
18} 19 --border: #333333;
20 --code-bg: #1a1a1a;
21 --meta: #999999;
22 }
23}
24
25/* --- Layout Architecture --- */
26* { box-sizing: border-box; }
19 27
20body { 28body {
21 color: var(--text); 29 background: var(--bg);
22 font-family: var(--font); 30 color: var(--fg);
23 font-size: 0.85rem; 31 font-family: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace;
24 line-height: 1.5; 32 line-height: 1.6;
25 display: flex; 33 max-width: var(--max-width);
26 flex-direction: column; 34 margin: 0 auto;
27 align-items: center; 35 padding: 2rem 1rem;
28 overflow: hidden; /* Desktop keeps terminal-shell fixed */ 36 text-rendering: optimizeLegibility;
29} 37}
30 38
31img { 39/* --- Navigation & Footer --- */
32 max-width: 100%; 40nav ul { list-style: none; padding: 0; display: flex; gap: 1rem; border-bottom: 4px solid var(--fg); padding-bottom: 0.5rem; }
33} 41nav a { text-transform: uppercase; font-weight: 900; text-decoration: none; }
42nav a:hover { background: var(--fg); color: var(--bg); }
34 43
35/* CRT Scanline Effect */ 44footer { margin-top: 4rem; border-top: 1px solid var(--border); padding-top: 1rem; font-size: 0.8rem; text-transform: uppercase; }
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}
47 45
48.terminal-shell { 46/* --- Typography (Brutalist) --- */
49 width: 95%; 47h1, h2, h3 { line-height: 1.1; margin-top: 2rem; font-weight: 900; text-transform: uppercase; }
50 max-width: 1000px; 48h1 { font-size: 2.2rem; margin-bottom: 1rem; }
51 height: 98vh; 49h2 { border-left: 10px solid var(--accent); padding-left: 0.75rem; }
52 display: flex;
53 flex-direction: column;
54 padding: 10px 0;
55}
56 50
57main { 51a { color: var(--accent); text-decoration: underline; text-underline-offset: 3px; }
58 flex: 1; 52a:hover { background: var(--accent); color: var(--bg); text-decoration: none; }
59 overflow-x: scroll;
60 overflow-y: auto;
61 margin: 10px 0;
62 scrollbar-width: thin;
63 scrollbar-color: var(--green) transparent;
64}
65 53
66/* Navigation & Header */ 54/* --- Weblorg / Template Specifics --- */
67.system-header { 55section b { display: block; font-size: 0.7rem; text-transform: uppercase; color: var(--meta); margin-top: 0.5rem; }
68 border-bottom: 1px solid var(--green-dim); 56section span { display: block; font-weight: bold; border-bottom: 1px solid var(--border); padding-bottom: 0.25rem; }
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}
76 57
77nav ul { 58.post { display: flex; justify-content: space-between; border-bottom: 1px dashed var(--border); padding: 0.5rem 0; }
78 list-style: none; 59.post time { font-size: 0.8rem; color: var(--meta); }
79 display: flex;
80 gap: 1.5rem;
81 margin: 0;
82 padding: 0;
83}
84 60
85nav a { 61/* --- Org-Mode Tables (Heavy Grid) --- */
86 color: var(--green); 62table { width: 100%; border-collapse: collapse; margin: 2rem 0; border: 3px solid var(--fg); }
87 text-decoration: none; 63th, td { border: 1px solid var(--fg); padding: 0.75rem; text-align: left; }
88 text-transform: uppercase; 64th { background: var(--fg); color: var(--bg); text-transform: uppercase; font-size: 0.8rem; }
89}
90 65
91nav a:hover { 66/* --- Code & Pre blocks --- */
92 text-shadow: 0 0 8px var(--green); 67pre { padding: 1rem; border: 1px solid var(--border); background: var(--code-bg); overflow-x: auto; }
93 background: var(--green-dim); 68code { background: var(--code-bg); padding: 0.2rem 0.4rem; }
94}
95 69
96/* Content Pane (The Glass) */ 70/* --- Accessibility & Efficiency --- */
97.glass-pane { 71img { max-width: 100%; height: auto; filter: grayscale(1); }
98 background: var(--glass); 72img:hover { filter: grayscale(0); }
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}
123 73
124/* Typography & Elements */ 74/* --- Accessibility: Skip Link --- */
125h1, h2, h3 { 75.skip-link {
126 color: var(--green); 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;
127 text-transform: uppercase; 85 text-transform: uppercase;
128 letter-spacing: 2px; 86 border: 3px solid var(--accent);
129} 87 text-decoration: none;
130 88 transition: top 0.2s ease-in-out;
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);
145} 89}
146 90
147code { 91/* Show the link when a user tabs to it */
148 background: var(--green-dim); 92.skip-link:focus {
149 padding: 2px 4px; 93 top: 0;
150 color: #fff; 94 outline: none; /* We use the border and color change as the indicator */
151} 95}
152 96
153/* Blockquotes: Emacs Style */ 97/* Ensure the main area doesn't show a blue ring when focused via skip-link */
154blockquote { 98#main-content:focus {
155 background: var(--emacs-bg); 99 outline: none;
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;
162} 100}
163 101
164blockquote::before { 102/* --- Footnote Alignment --- */
165 content: "/* COMMENT */"; 103.footdef {
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);
180 display: flex; 104 display: flex;
181 flex-direction: row; /* Default: Side-by-side for desktop */ 105 align-items: flex-start; /* Keeps number at the top if text wraps */
182 align-items: baseline; 106 gap: 1rem; /* Space between number and text */
183} 107 margin-bottom: 0.5rem;
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);
192} 108}
193 109
194.post a { 110/* Ensure the paragraph doesn't add its own block margins */
195 font-size: 0.85rem; 111.footpara {
196 text-decoration: none; 112 margin: 0;
197 flex: 1; 113 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;
284 display: flex; 114 display: flex;
285 justify-content: space-between; 115 flex-direction: column;
286 font-weight: bold; 116 gap: 0.5rem;
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) {
310} 117}
311 118
312/* Mobile Responsiveness for Blog List */ 119/* Style the footnote number to be a fixed width for alignment */
313@media (max-width: 650px) { 120.footnum {
314 .post { 121 font-weight: bold;
315 flex-direction: column; 122 min-width: 1.5rem;
316 align-items: flex-start; 123 text-align: right;
317 gap: 4px; 124 text-decoration: none;
318 } 125 font-size: 0.85rem;
319 126 color: var(--accent);
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 }
330} 127}
331 128
332/* General Layout Mobile Fixes */
333@media (max-width: 600px) { 129@media (max-width: 600px) {
334 body { overflow-y: auto; } 130 body { padding: 1rem; }
335 .terminal-shell { height: auto; } 131 .post { flex-direction: column; }
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; }
339}\ No newline at end of file 132}\ No newline at end of file
theme/templates/base.html +17 −42
@@ -17,50 +17,25 @@
17 {% endblock %} 17 {% endblock %}
18</head> 18</head>
19<body> 19<body>
20 <div class="scanlines"></div> 20 <a href="#main-content" class="skip-link">Skip to content</a>
21 <div class="terminal-shell"> 21 <nav aria-label="Site Navigation">
22 <header class="system-header"> 22 <ul>
23 <div class="sys-info">SYS_OS [VER 2.26.1]</div> 23 <li><a href="/">Home</a></li>
24 <nav aria-label="Site Navigation"> 24 <li><a href="/about/">About</a></li>
25 <ul> 25 <li><a href="/blog/">Blog</a></li>
26 <li><a href="/">Home</a></li> 26 <li><a href="/services/">Services</a></li>
27 <li><a href="/about/">About</a></li> 27 </ul>
28 <li><a href="/blog/">Blog</a></li> 28 </nav>
29 <li><a href="/services/">Services</a></li>
30 </ul>
31 </nav>
32 </header>
33 29
34 <main id="main"> 30 <main id="main">
35 <div class="glass-pane"> {% block main %}{% endblock %} 31 <div> {% 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>
48 </div> 32 </div>
49 <div class="log-entry"> 33 </main>
50 <span class="log-time">[{{ now() | strftime("%H:%M:%S") }}]</span> 34
51 <span class="log-msg">STATUS: SESSION_ID #<span class="session-id"></span> ACTIVE</span> 35<footer>
52 </div> 36 <a href="https://git.cleberg.net/cleberg.net.git">SOURCE</a> &middot;
53 </div> 37 <a href="/feed.xml">RSS</a> &middot;
54 38 <a href="http://sv3g2dlyvwyk2nvi3eeh55fcrpdvjlclhi6wwsx57cste6lwdjanzyyd.onion">ONION</a>
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>
63</footer> 39</footer>
64 </div>
65</body> 40</body>
66</html> 41</html>
theme/templates/index.html +3 −3
@@ -1,10 +1,10 @@
1{% extends "base.html" %} {% block main %} 1{% extends "base.html" %} {% block main %}
2<section class="sys-readout"> 2<section>
3 <b>User</b> <span>Christian Cleberg &lt;hello@cleberg.net&gt;</span> 3 <b>User</b> <span>Christian Cleberg &lt;hello@cleberg.net&gt;</span>
4 <b>Context</b> <span>Technology Assurance Manager</span> 4 <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>
6</section> 6</section>
7<section class="recent-posts"> 7<section>
8 <h2>Recent Posts</h2> 8 <h2>Recent Posts</h2>
9 <!-- BEGIN_POSTS --> 9 <!-- BEGIN_POSTS -->
10 <!-- END_POSTS --> 10 <!-- END_POSTS -->
theme/templates/post.html +1 −1
@@ -9,7 +9,7 @@
9{% endif %} {% endblock %} {% block main %} 9{% endif %} {% endblock %} {% block main %}
10<article> 10<article>
11 <section> 11 <section>
12 <section class="sys-readout"> 12 <section>
13 <b>Object</b> <span>{{ post.title }}</span> 13 <b>Object</b> <span>{{ post.title }}</span>
14 <b>Timestamp</b> <span><time datetime='{{ post.date|strftime("%Y-%m-%d") }}'>{{ post.date|strftime("%Y-%m-%d %H:%M:%S") }}</time></span> 14 <b>Timestamp</b> <span><time datetime='{{ post.date|strftime("%Y-%m-%d") }}'>{{ post.date|strftime("%Y-%m-%d %H:%M:%S") }}</time></span>
15 <b>Summary</b> <span>{{ post.description }}</span> 15 <b>Summary</b> <span>{{ post.description }}</span>