feat: a red thread through the homepage, in words and as a line

The rail and the "next, you are wondering" links are gone (owner: flat, and
the question stood twice in a row). The page now reads from top to bottom:

Every chapter opens with one sentence, and the sentences follow each other
as the way of a project: you need someone who builds it, first we find out
what you need, sometimes it is less work by hand, sometimes a meeting, then
it always runs the same way, in the end something runs, a few questions
remain, and it starts with an email.

One line runs down the whole page and draws itself as the visitor scrolls.
Under each sentence it crosses the page, stands a figure on the line
(diamond, hexagon, screen, circle, square, triangle) and continues down the
other side; a glowing dot travels at its head and comes to rest in front of
the last sentence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-05 10:35:55 +02:00
co-authored by Claude Opus 5.5
parent 90120b60db
commit 3e0c9a1605
20 changed files with 539 additions and 508 deletions
@@ -18,11 +18,13 @@ export const PortraitSection: React.FC<{
label: string;
title: React.ReactNode;
portraitAlt: string;
/** The sentence of the story this chapter opens with. */
story: string;
children: React.ReactNode;
}> = ({ id, index, label, title, portraitAlt, children }) => (
}> = ({ id, index, label, title, portraitAlt, story, children }) => (
<section
id={id}
data-chapter={id}
data-thread-start=""
className="relative scroll-mt-24 overflow-hidden bg-slate-900 text-white"
>
{/* Portrait: right side on wide screens, top on small ones. */}
@@ -59,6 +61,9 @@ export const PortraitSection: React.FC<{
viewport={{ once: true, margin: "-10%" }}
transition={{ duration: 0.8, delay: 0.2, ease: [0.16, 1, 0.3, 1] }}
>
<p className="m-0 mb-10 max-w-2xl font-sans text-2xl font-bold leading-[1.1] tracking-tight text-white md:mb-16 md:text-5xl">
{story}
</p>
<div className="mb-8 flex items-center gap-4 md:mb-12">
<span className="font-mono text-[11px] font-bold tracking-[0.2em] text-white">
{index}