Files
dlStack/index.html
Joel Brock 543d3bd8e1 Refine Swiss + Editorial themes; add optional date field
Swiss: drop all-caps on titles, soften heavy ink borders to muted rules
or remove them where background contrast carries the form, balance hero
name weights (smaller lighter first name vs heavier italic last name),
fix unreadable white description text on portfolio hover.

Editorial: enlarge the section "No" mark and set it in italic Fraunces so
it reads as typography instead of a tick, swap the first name into DM
Serif Display for a different J, sharpen the section number caption.

Client tile: contain custom logos at 86% so wide marks like
"The Cooperative Way" stop getting cropped to "operative".

New: optional `date` field on every item type (link/card/portfolio/
youtube/client). Accepts YYYY, YYYY-MM, or YYYY-MM-DD. Rendered
human-friendly with the raw ISO preserved in <time datetime>.
Documented in README and demonstrated in links.example.json.
2026-05-15 16:33:53 -07:00

55 lines
2.6 KiB
HTML

<!doctype html>
<html lang="en" data-theme="auto" data-template="editorial">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<meta name="color-scheme" content="light dark">
<meta name="description" content="Joel Brock — consulting technologist in Portland, OR. Links to my work in cooperative technology, projects, and video.">
<title>Links — index</title>
<link rel="icon" type="image/svg+xml" href="favicon.svg">
<link rel="alternate icon" type="image/png" href="data:image/png;base64,">
<!-- Preconnect to font + favicon services for snappy first paint -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="preconnect" href="https://www.google.com">
<link rel="preconnect" href="https://i.ytimg.com">
<!-- Editorial: Fraunces (variable serif) + Geist (refined sans) + Geist Mono
Swiss: Archivo (variable grotesque, near-Akzidenz/Univers) -->
<link href="https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700;900&family=DM+Serif+Display:ital@0;1&family=Fraunces:opsz,wght,SOFT,WONK@9..144,300..600,30..100,0..1&family=Geist:wght@300;400;500;600&family=Geist+Mono:wght@400;500&display=swap" rel="stylesheet">
<script>
// Apply saved theme + template before paint to avoid flash
try {
var t = localStorage.getItem("dlstack-theme");
if (t === "light" || t === "dark") document.documentElement.dataset.theme = t;
var tpl = localStorage.getItem("dlstack-template");
if (tpl === "swiss" || tpl === "editorial") document.documentElement.dataset.template = tpl;
} catch (e) {}
</script>
<link rel="stylesheet" href="assets/css/styles.css">
<link rel="stylesheet" href="assets/css/swiss.css">
<meta property="og:type" content="website">
<meta property="og:title" content="Joel Brock — links">
<meta property="og:description" content="Consulting technologist in Portland, OR. Cooperative technology, projects, and video.">
<meta name="twitter:card" content="summary">
</head>
<body>
<a class="sr-only" href="#app">Skip to content</a>
<div class="shell" id="app">
<noscript>
<p style="color:var(--accent);font-family:var(--mono);padding:2rem;max-width:48ch">
JavaScript is required to render this page — it reads the link list from <code>data/links.json</code>.
Enable JavaScript and reload, or browse <a href="data/links.json">the raw data file</a>.
</p>
</noscript>
</div>
<script src="assets/js/app.js" defer></script>
</body>
</html>