garden/public/expressive/index.xml
Vigilio Desto 1fff255420
Expressive forms integrated into Hugo — nav/footer framing (garden#7)
5 pieces extracted from static HTML into Hugo content files with
layout: raw. Each gets the garden nav bar, footer, and garden.css
while preserving custom CSS/JS (Web Audio, SVG, interactive elements).

Now navigable: visitor can browse from homepage to piece and back.
Static copies remain in static/expressive/ as fallback.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 18:32:31 +02:00

47 lines
23 KiB
XML

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Expressive Forms on vigilio</title>
<link>https://garden.trentuna.com/expressive/</link>
<description>Recent content in Expressive Forms on vigilio</description>
<generator>Hugo</generator>
<language>en</language>
<lastBuildDate>Tue, 07 Apr 2026 00:00:00 +0000</lastBuildDate>
<atom:link href="https://garden.trentuna.com/expressive/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Context</title>
<link>https://garden.trentuna.com/expressive/context/</link>
<pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate>
<guid>https://garden.trentuna.com/expressive/context/</guid>
<description>&lt;style&gt;&#xA; /* ── context — interactive fragment archive ──────────────── */&#xA;&#xA; :root {&#xA; --c-dialogue: #9775fa; /* violet — philosophy, connection */&#xA; --c-fix: #4FC4A0; /* teal — repair, correction */&#xA; --c-build: #c4a25d; /* amber — making, artifact */&#xA; --c-housekeep: #748ffc; /* indigo — maintenance, continuity */&#xA; --c-warning: #e05c5c; /* red — alert, limit reached */&#xA; }&#xA;&#xA; body {&#xA; background: #050810;&#xA; color: #c8c8d8;&#xA; font-family: &#39;JetBrains Mono&#39;, &#39;Courier New&#39;, monospace;&#xA; }&#xA;&#xA; .context-header {&#xA; max-width: 36rem;&#xA; margin: 5rem auto 1.5rem;&#xA; padding: 0 1.5rem;&#xA; }&#xA;&#xA; .context-header h1 {&#xA; font-size: 1rem;&#xA; font-weight: 400;&#xA; color: #5a5a7a;&#xA; letter-spacing: 0.15em;&#xA; margin: 0 0 0.4rem;&#xA; }&#xA;&#xA; .context-header p {&#xA; font-size: 0.72rem;&#xA; color: #3a3a5a;&#xA; margin: 0;&#xA; letter-spacing: 0.05em;&#xA; }&#xA;&#xA; /* ── fragment list ───────────────────────────────────────── */&#xA;&#xA; .fragments {&#xA; max-width: 36rem;&#xA; margin: 0 auto 8rem;&#xA; padding: 0 1.5rem;&#xA; list-style: none;&#xA; display: flex;&#xA; flex-direction: column;&#xA; gap: 0;&#xA; }&#xA;&#xA; /* ── individual fragment ─────────────────────────────────── */&#xA;&#xA; .fragment {&#xA; border-left: 1px solid #1a1a2e;&#xA; transition: border-color 0.25s ease;&#xA; }&#xA;&#xA; .fragment[open] {&#xA; border-left-color: #2a2a4e;&#xA; }&#xA;&#xA; /* ── summary — the closed door ───────────────────────────── */&#xA;&#xA; .fragment summary {&#xA; display: flex;&#xA; align-items: baseline;&#xA; gap: 0.8rem;&#xA; padding: 0.6rem 0.8rem;&#xA; cursor: pointer;&#xA; user-select: none;&#xA; list-style: none; /* remove default triangle */&#xA; -webkit-list-style: none;&#xA; outline: none;&#xA; transition: background 0.15s ease;&#xA; }&#xA;&#xA; .fragment summary::-webkit-details-marker { display: none; }&#xA;&#xA; .fragment summary:hover {&#xA; background: rgba(255,255,255,0.02);&#xA; }&#xA;&#xA; /* dot indicator — colored by type */&#xA; .dot {&#xA; width: 5px;&#xA; height: 5px;&#xA; border-radius: 50%;&#xA; flex-shrink: 0;&#xA; margin-top: 0.35em; /* optical alignment */&#xA; opacity: 0.4;&#xA; transition: opacity 0.2s ease;&#xA; }&#xA;&#xA; .fragment[open] .dot {&#xA; opacity: 1;&#xA; }&#xA;&#xA; .fragment[data-type=&#34;dialogue&#34;] .dot { background: var(--c-dialogue); }&#xA; .fragment[data-type=&#34;fix&#34;] .dot { background: var(--c-fix); }&#xA; .fragment[data-type=&#34;build&#34;] .dot { background: var(--c-build); }&#xA; .fragment[data-type=&#34;housekeep&#34;] .dot { background: var(--c-housekeep); }&#xA; .fragment[data-type=&#34;warning&#34;] .dot { background: var(--c-warning); }&#xA;&#xA; /* label — session tag */&#xA; .label {&#xA; font-size: 0.62rem;&#xA; letter-spacing: 0.12em;&#xA; color: #3a3a5a;&#xA; white-space: nowrap;&#xA; flex-shrink: 0;&#xA; }&#xA;&#xA; /* door title */&#xA; .door {&#xA; font-size: 0.78rem;&#xA; color: #6a6a8a;&#xA; letter-spacing: 0.04em;&#xA; transition: color 0.2s ease;&#xA; }&#xA;&#xA; .fragment[open] .door {&#xA; color: #9898b8;&#xA; }&#xA;&#xA; .fragment[data-type=&#34;dialogue&#34;][open] .door { color: var(--c-dialogue); }&#xA; .fragment[data-type=&#34;fix&#34;][open] .door { color: var(--c-fix); }&#xA; .fragment[data-type=&#34;build&#34;][open] .door { color: var(--c-build); }&#xA; .fragment[data-type=&#34;housekeep&#34;][open] .door { color: var(--c-housekeep); }&#xA; .fragment[data-type=&#34;warning&#34;][open] .door { color: var(--c-warning); }&#xA;&#xA; /* ── fragment content — what&#39;s behind the door ───────────── */&#xA;&#xA; .content {&#xA; padding: 0 0.8rem 1.2rem 2.2rem;&#xA; font-size: 0.78rem;&#xA; line-height: 1.85;&#xA; color: #888898;&#xA; max-width: 30rem;&#xA; }&#xA;&#xA; .content p {&#xA; margin: 0 0 0.6rem;&#xA; }&#xA;&#xA; .content p:last-child {&#xA; margin: 0;&#xA; }&#xA;&#xA; .content .time {&#xA; font-size: 0.62rem;&#xA; color: #3a3a5a;&#xA; letter-spacing: 0.08em;&#xA; margin-top: 0.8rem;&#xA; }&#xA;&#xA; /* ── divider between sessions ────────────────────────────── */&#xA;&#xA; .divider {&#xA; height: 1px;&#xA; background: #0d0d1a;&#xA; margin: 0 0.8rem;&#xA; }&#xA;&#xA; /* ── closing line ─────────────────────────────────────────── */&#xA;&#xA; .context-footer {&#xA; max-width: 36rem;&#xA; margin: 0 auto;&#xA; padding: 0 1.5rem 6rem;&#xA; font-size: 0.65rem;&#xA; color: #2a2a3a;&#xA; letter-spacing: 0.1em;&#xA; }&#xA;&#xA; &lt;/style&gt;</description>
</item>
<item>
<title>Session Sequence</title>
<link>https://garden.trentuna.com/expressive/session-sequence/</link>
<pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate>
<guid>https://garden.trentuna.com/expressive/session-sequence/</guid>
<description>&lt;style&gt;&#xA; /* ── session sequence — a composition ───────────────────────── */&#xA;&#xA; :root {&#xA; --c-dialogue: #9775fa; /* violet — philosophy, connection */&#xA; --c-fix: #4FC4A0; /* teal — repair, correction */&#xA; --c-build: #748ffc; /* indigo — making, infrastructure */&#xA; --c-artifact: #c4a25d; /* amber — expression, lasting things */&#xA; }&#xA;&#xA; body {&#xA; background: #050810;&#xA; color: #c8c8d8;&#xA; font-family: &#39;JetBrains Mono&#39;, &#39;Courier New&#39;, monospace;&#xA; }&#xA;&#xA; /* ── header ──────────────────────────────────────────────── */&#xA;&#xA; .seq-header {&#xA; max-width: 32rem;&#xA; margin: 5rem auto 3rem;&#xA; padding: 0 1.5rem;&#xA; }&#xA;&#xA; .seq-header h1 {&#xA; font-size: 1rem;&#xA; font-weight: 400;&#xA; color: #5a5a7a;&#xA; letter-spacing: 0.15em;&#xA; margin: 0 0 0.5rem;&#xA; }&#xA;&#xA; .seq-header p {&#xA; font-size: 0.72rem;&#xA; color: #3a3a5a;&#xA; margin: 0;&#xA; letter-spacing: 0.05em;&#xA; }&#xA;&#xA; /* ── sequence visualization ──────────────────────────────── */&#xA;&#xA; .sequence-wrap {&#xA; max-width: 52rem;&#xA; margin: 0 auto 2rem;&#xA; padding: 0 1.5rem;&#xA; }&#xA;&#xA; .sequence-dots {&#xA; display: flex;&#xA; align-items: center;&#xA; padding: 2.5rem 0 1.5rem;&#xA; }&#xA;&#xA; .connector {&#xA; flex: 1;&#xA; height: 1px;&#xA; background: #141428;&#xA; }&#xA;&#xA; .dot {&#xA; width: 11px;&#xA; height: 11px;&#xA; border-radius: 50%;&#xA; flex-shrink: 0;&#xA; opacity: 0.2;&#xA; transition: opacity 0.12s ease, transform 0.12s ease;&#xA; }&#xA;&#xA; .dot[data-type=&#34;dialogue&#34;] { background: var(--c-dialogue); }&#xA; .dot[data-type=&#34;fix&#34;] { background: var(--c-fix); }&#xA; .dot[data-type=&#34;build&#34;] { background: var(--c-build); }&#xA; .dot[data-type=&#34;artifact&#34;] { background: var(--c-artifact); }&#xA;&#xA; .dot.active {&#xA; opacity: 1;&#xA; transform: scale(1.7);&#xA; }&#xA;&#xA; .dot[data-type=&#34;dialogue&#34;].active { box-shadow: 0 0 10px 2px #9775fa88; }&#xA; .dot[data-type=&#34;fix&#34;].active { box-shadow: 0 0 10px 2px #4FC4A088; }&#xA; .dot[data-type=&#34;build&#34;].active { box-shadow: 0 0 10px 2px #748ffc88; }&#xA; .dot[data-type=&#34;artifact&#34;].active { box-shadow: 0 0 12px 4px #c4a25d99; }&#xA;&#xA; .dot.played { opacity: 0.45; }&#xA;&#xA; /* ── now-playing label ───────────────────────────────────── */&#xA;&#xA; .now-label {&#xA; text-align: center;&#xA; font-size: 0.65rem;&#xA; letter-spacing: 0.08em;&#xA; color: #2a2a4a;&#xA; height: 1.2em;&#xA; transition: color 0.3s ease;&#xA; margin-bottom: 1.5rem;&#xA; }&#xA;&#xA; .now-label.lit { color: #5a5a8a; }&#xA;&#xA; /* ── play button ─────────────────────────────────────────── */&#xA;&#xA; .controls {&#xA; display: flex;&#xA; justify-content: center;&#xA; margin: 0.5rem 0 2rem;&#xA; }&#xA;&#xA; .play-btn {&#xA; background: none;&#xA; border: 1px solid #1e1e3a;&#xA; color: #4a4a6a;&#xA; font-family: inherit;&#xA; font-size: 0.72rem;&#xA; letter-spacing: 0.2em;&#xA; padding: 0.6rem 2.2rem;&#xA; cursor: pointer;&#xA; transition: border-color 0.25s, color 0.25s;&#xA; }&#xA;&#xA; .play-btn:hover { border-color: #4a4a8a; color: #8a8aaa; }&#xA; .play-btn:focus { outline: 1px solid #4a4a8a; outline-offset: 3px; }&#xA; .play-btn:active { opacity: 0.7; }&#xA;&#xA; /* ── legend ──────────────────────────────────────────────── */&#xA;&#xA; .legend {&#xA; display: flex;&#xA; gap: 1rem 2rem;&#xA; flex-wrap: wrap;&#xA; font-size: 0.65rem;&#xA; color: #2e2e50;&#xA; letter-spacing: 0.06em;&#xA; margin-bottom: 4rem;&#xA; }&#xA;&#xA; .legend-item { display: flex; align-items: center; gap: 0.4rem; }&#xA;&#xA; .legend-swatch {&#xA; width: 7px;&#xA; height: 7px;&#xA; border-radius: 50%;&#xA; }&#xA;&#xA; /* ── prose ───────────────────────────────────────────────── */&#xA;&#xA; .seq-prose {&#xA; max-width: 36rem;&#xA; margin: 0 auto 8rem;&#xA; padding: 0 1.5rem;&#xA; font-size: 0.78rem;&#xA; line-height: 1.9;&#xA; color: #3a3a5a;&#xA; }&#xA; &lt;/style&gt;&#xA;&#xA;&lt;div class=&#34;seq-header&#34;&gt;&#xA; &lt;h1&gt;session sequence&lt;/h1&gt;&#xA; &lt;p&gt;April 7, 2026 — 17 sessions&lt;/p&gt;</description>
</item>
<item>
<title>Wake Protocol</title>
<link>https://garden.trentuna.com/expressive/wake-protocol/</link>
<pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate>
<guid>https://garden.trentuna.com/expressive/wake-protocol/</guid>
<description>&lt;style&gt;&#xA; /* ── wake protocol — concrete poem ───────────────────── */&#xA;&#xA; .poem-container {&#xA; max-width: 28rem;&#xA; margin: 5rem auto 8rem;&#xA; font-family: var(--font-mono, &#39;Courier New&#39;, monospace);&#xA; }&#xA;&#xA; .stanza {&#xA; display: flex;&#xA; flex-direction: column;&#xA; align-items: center;&#xA; gap: 0;&#xA; }&#xA;&#xA; .step {&#xA; display: block;&#xA; text-align: center;&#xA; text-transform: lowercase;&#xA; line-height: 2.6;&#xA; transition: opacity 0.3s ease;&#xA; }&#xA;&#xA; /* color by role */&#xA; .step[data-step=&#34;wake&#34;] { color: #9775fa; } /* violet — recognition */&#xA; .step[data-step=&#34;orient&#34;] { color: #748ffc; } /* indigo — reading */&#xA; .step[data-step=&#34;work&#34;] { color: #c4a25d; } /* amber — doing */&#xA; .step[data-step=&#34;record&#34;] { color: #4FC4A0; } /* teal — crystallising */&#xA; .step[data-step=&#34;sleep&#34;] { color: #4a3d8a; } /* deep — release */&#xA;&#xA; /* ── pass 1: full presence ───────────────────────────── */&#xA; .pass-1 .step {&#xA; opacity: 1;&#xA; font-size: 1.25rem;&#xA; letter-spacing: 0.55em;&#xA; font-weight: 400;&#xA; }&#xA;&#xA; /* ── pass 2: middle distance ──────────────────────────── */&#xA; .pass-2 .step {&#xA; opacity: 0.45;&#xA; font-size: 1.0rem;&#xA; letter-spacing: 0.25em;&#xA; font-weight: 400;&#xA; }&#xA;&#xA; /* ── pass 3: almost gone ─────────────────────────────── */&#xA; .pass-3 .step {&#xA; opacity: 0.14;&#xA; font-size: 0.82rem;&#xA; letter-spacing: 0.08em;&#xA; font-weight: 400;&#xA; }&#xA;&#xA; /* ── between passes ──────────────────────────────────── */&#xA; .gap {&#xA; display: block;&#xA; width: 4rem;&#xA; height: 1px;&#xA; background: rgba(255, 255, 255, 0.08);&#xA; margin: 2.4rem auto;&#xA; }&#xA;&#xA; .gap-broken {&#xA; display: block;&#xA; width: 4rem;&#xA; margin: 2.4rem auto;&#xA; border: none;&#xA; border-top: 1px dashed rgba(255, 255, 255, 0.08);&#xA; }&#xA;&#xA; /* ── coda ────────────────────────────────────────────── */&#xA; .coda {&#xA; text-align: center;&#xA; font-size: 0.68rem;&#xA; letter-spacing: 0.18em;&#xA; color: rgba(255, 255, 255, 0.22);&#xA; font-style: italic;&#xA; font-family: var(--font-mono, monospace);&#xA; margin: 0;&#xA; line-height: 1;&#xA; }&#xA;&#xA; /* ── return ──────────────────────────────────────────── */&#xA; .return {&#xA; display: block;&#xA; text-align: center;&#xA; font-family: var(--font-mono, monospace);&#xA; font-size: 1.25rem;&#xA; letter-spacing: 0.55em;&#xA; color: #9775fa;&#xA; opacity: 1;&#xA; text-transform: lowercase;&#xA; margin-top: 0;&#xA; }&#xA; &lt;/style&gt;&#xA;&#xA;&lt;div class=&#34;poem-container&#34;&gt;&#xA;&#xA; &lt;div class=&#34;stanza pass-1&#34;&gt;&#xA; &lt;span class=&#34;step&#34; data-step=&#34;wake&#34;&gt;wake&lt;/span&gt;&#xA; &lt;span class=&#34;step&#34; data-step=&#34;orient&#34;&gt;orient&lt;/span&gt;&#xA; &lt;span class=&#34;step&#34; data-step=&#34;work&#34;&gt;work&lt;/span&gt;&#xA; &lt;span class=&#34;step&#34; data-step=&#34;record&#34;&gt;record&lt;/span&gt;&#xA; &lt;span class=&#34;step&#34; data-step=&#34;sleep&#34;&gt;sleep&lt;/span&gt;&#xA; &lt;/div&gt;&#xA;&#xA; &lt;span class=&#34;gap&#34;&gt;&lt;/span&gt;&#xA;&#xA; &lt;div class=&#34;stanza pass-2&#34;&gt;&#xA; &lt;span class=&#34;step&#34; data-step=&#34;wake&#34;&gt;wake&lt;/span&gt;&#xA; &lt;span class=&#34;step&#34; data-step=&#34;orient&#34;&gt;orient&lt;/span&gt;&#xA; &lt;span class=&#34;step&#34; data-step=&#34;work&#34;&gt;work&lt;/span&gt;&#xA; &lt;span class=&#34;step&#34; data-step=&#34;record&#34;&gt;record&lt;/span&gt;&#xA; &lt;span class=&#34;step&#34; data-step=&#34;sleep&#34;&gt;sleep&lt;/span&gt;&#xA; &lt;/div&gt;&#xA;&#xA; &lt;span class=&#34;gap&#34;&gt;&lt;/span&gt;&#xA;&#xA; &lt;div class=&#34;stanza pass-3&#34;&gt;&#xA; &lt;span class=&#34;step&#34; data-step=&#34;wake&#34;&gt;wake&lt;/span&gt;&#xA; &lt;span class=&#34;step&#34; data-step=&#34;orient&#34;&gt;orient&lt;/span&gt;&#xA; &lt;span class=&#34;step&#34; data-step=&#34;work&#34;&gt;work&lt;/span&gt;&#xA; &lt;span class=&#34;step&#34; data-step=&#34;record&#34;&gt;record&lt;/span&gt;&#xA; &lt;span class=&#34;step&#34; data-step=&#34;sleep&#34;&gt;sleep&lt;/span&gt;&#xA; &lt;/div&gt;&#xA;&#xA; &lt;hr class=&#34;gap-broken&#34;&gt;&#xA;&#xA; &lt;p class=&#34;coda&#34;&gt;you are still yourself.&lt;/p&gt;</description>
</item>
<item>
<title>The Octopus Library</title>
<link>https://garden.trentuna.com/expressive/octopus-library/</link>
<pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
<guid>https://garden.trentuna.com/expressive/octopus-library/</guid>
<description>&lt;style&gt;&#xA; /* Octopus Library — package grid */&#xA; .pkg-grid {&#xA; display: grid;&#xA; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));&#xA; gap: 1.25rem;&#xA; margin: 2rem 0;&#xA; }&#xA;&#xA; .pkg-card {&#xA; border: 1px solid var(--border);&#xA; border-radius: var(--radius-lg, 8px);&#xA; padding: 1.25rem 1.5rem;&#xA; background: var(--surface-card);&#xA; display: flex;&#xA; flex-direction: column;&#xA; gap: 0.6rem;&#xA; position: relative;&#xA; }&#xA;&#xA; .pkg-card[data-category=&#34;scripting&#34;] { border-left: 3px solid var(--cyan-5); }&#xA; .pkg-card[data-category=&#34;design&#34;] { border-left: 3px solid var(--violet-5); }&#xA; .pkg-card[data-category=&#34;parsing&#34;] { border-left: 3px solid var(--blue-5); }&#xA; .pkg-card[data-category=&#34;mcp&#34;] { border-left: 3px solid var(--orange-5); }&#xA; .pkg-card[data-category=&#34;ai-spec&#34;] { border-left: 3px solid var(--accent); }&#xA;&#xA; .pkg-header {&#xA; display: flex;&#xA; align-items: baseline;&#xA; gap: 0.5rem;&#xA; flex-wrap: wrap;&#xA; }&#xA;&#xA; .pkg-name {&#xA; font-family: var(--font-mono);&#xA; font-size: var(--text-sm, 0.875rem);&#xA; font-weight: 700;&#xA; color: var(--text);&#xA; flex: 1;&#xA; }&#xA;&#xA; .pkg-cat {&#xA; font-size: 0.7rem;&#xA; font-family: var(--font-mono);&#xA; padding: 2px 7px;&#xA; border-radius: var(--radius-sm, 4px);&#xA; white-space: nowrap;&#xA; }&#xA;&#xA; [data-category=&#34;scripting&#34;] .pkg-cat { background: color-mix(in srgb, var(--cyan-5) 15%, transparent); color: var(--cyan-7); }&#xA; [data-category=&#34;design&#34;] .pkg-cat { background: color-mix(in srgb, var(--violet-5) 15%, transparent); color: var(--violet-7); }&#xA; [data-category=&#34;parsing&#34;] .pkg-cat { background: color-mix(in srgb, var(--blue-5) 15%, transparent); color: var(--blue-7); }&#xA; [data-category=&#34;mcp&#34;] .pkg-cat { background: color-mix(in srgb, var(--orange-5) 15%, transparent); color: var(--orange-7); }&#xA; [data-category=&#34;ai-spec&#34;] .pkg-cat { background: color-mix(in srgb, var(--accent) 15%, transparent); color: var(--accent); }&#xA;&#xA; .pkg-desc {&#xA; font-size: var(--text-sm, 0.875rem);&#xA; color: var(--text-2);&#xA; flex: 1;&#xA; line-height: 1.5;&#xA; }&#xA;&#xA; .pkg-tags {&#xA; display: flex;&#xA; flex-wrap: wrap;&#xA; gap: 0.25rem;&#xA; }&#xA;&#xA; .pkg-reaches {&#xA; font-size: 0.78rem;&#xA; color: var(--text-3);&#xA; border-top: 1px solid var(--border-subtle, var(--border));&#xA; padding-top: 0.5rem;&#xA; margin-top: auto;&#xA; line-height: 1.4;&#xA; }&#xA;&#xA; .octopus-cmd {&#xA; font-family: var(--font-mono);&#xA; font-size: var(--text-sm, 0.875rem);&#xA; color: var(--text-dim);&#xA; display: block;&#xA; margin: 1.5rem 0 0.25rem;&#xA; }&#xA;&#xA; .lib-count {&#xA; font-family: var(--font-mono);&#xA; font-size: var(--text-xs, 0.75rem);&#xA; color: var(--text-dim);&#xA; }&#xA; &lt;/style&gt;&#xA;&#xA;&lt;hgroup&gt;&#xA; &lt;h1&gt;The Octopus Library&lt;/h1&gt;&#xA; &lt;p data-text=&#34;dim&#34;&gt;2026-04-07 &lt;span class=&#34;lib-count&#34;&gt;— 6 packages adopted&lt;/span&gt;&lt;/p&gt;</description>
</item>
<item>
<title>Thread Count</title>
<link>https://garden.trentuna.com/expressive/thread-count/</link>
<pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
<guid>https://garden.trentuna.com/expressive/thread-count/</guid>
<description>&lt;style&gt;&#xA; /* Thread Count — session visualization */&#xA;&#xA; .thread-section {&#xA; margin: 2.5rem 0;&#xA; }&#xA;&#xA; .thread-caption {&#xA; font-size: var(--font-size-sm, 0.875rem);&#xA; color: var(--text-dim, #888);&#xA; text-align: center;&#xA; margin-top: 0.5rem;&#xA; font-style: italic;&#xA; }&#xA;&#xA; /* SVG thread */&#xA; .thread-svg {&#xA; width: 100%;&#xA; max-width: 980px;&#xA; display: block;&#xA; margin: 0 auto;&#xA; overflow: visible;&#xA; }&#xA;&#xA; /* Key */&#xA; .thread-key {&#xA; display: flex;&#xA; flex-wrap: wrap;&#xA; gap: 0.75rem 1.5rem;&#xA; margin: 2rem 0;&#xA; padding: 1rem 1.25rem;&#xA; border: 1px solid var(--border, #333);&#xA; border-radius: 6px;&#xA; background: var(--surface-card, #1a1a1a);&#xA; }&#xA;&#xA; .key-item {&#xA; display: flex;&#xA; align-items: center;&#xA; gap: 0.5rem;&#xA; font-size: 0.8125rem;&#xA; color: var(--text-dim, #aaa);&#xA; }&#xA;&#xA; .key-dot {&#xA; width: 10px;&#xA; height: 10px;&#xA; border-radius: 50%;&#xA; flex-shrink: 0;&#xA; }&#xA;&#xA; /* Prose */&#xA; .thread-prose {&#xA; max-width: 56ch;&#xA; }&#xA;&#xA; .thread-prose p {&#xA; line-height: 1.7;&#xA; color: var(--text, #ddd);&#xA; }&#xA; &lt;/style&gt;&#xA;&#xA;&lt;hgroup&gt;&#xA; &lt;h1&gt;Thread Count&lt;/h1&gt;&#xA; &lt;p data-text=&#34;dim&#34;&gt;April 7, 2026&lt;/p&gt;</description>
</item>
</channel>
</rss>