feat(web): library homepage, chain in settings

Implements the §9.7 shell rulings (issue #173): "/" renders the library
and the board route is gone — every former board target (Esc, cleared
search, detail parent routes, the not-found fallback) lands on the
library. The signal chain moves into /settings as its first section,
lamps still driven by the health poll; the master lamp stays on the
rail. The wordmark is now a real anchor that navigates home.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Miguel Palhas
2026-08-24 16:39:07 +01:00
co-authored by Claude Fable 5
parent 60642d8709
commit 7ef24088a5
5 changed files with 143 additions and 173 deletions
+13 -26
View File
@@ -156,6 +156,8 @@ body {
gap: var(--space-3);
}
/* §9.7: the wordmark is a link home — quiet at rest, cyan on approach
like every other interactive control */
.wordmark {
margin: 0;
font-family: var(--font-display);
@@ -163,6 +165,13 @@ body {
font-weight: 700;
letter-spacing: 0.1em;
line-height: 1;
color: var(--ink);
text-decoration: none;
}
.wordmark:hover,
.wordmark:focus-visible {
color: var(--accent-bright);
}
.rail-meta {
@@ -247,44 +256,26 @@ body {
}
}
.board.powered .lamp {
.chain.powered .lamp {
animation: lamp-strike 420ms var(--ease-out) both;
animation-delay: calc(var(--strike, 0) * 120ms);
}
.board.powered .lamp[data-state="off"] {
.chain.powered .lamp[data-state="off"] {
animation: none;
}
@media (prefers-reduced-motion: reduce) {
.lamp[data-state="probing"],
.board.powered .lamp {
.chain.powered .lamp {
animation: none;
}
}
/* ---- board and chain ------------------------------------------------- */
.board {
width: 100%;
max-width: 68rem;
margin: 0 auto;
padding: var(--space-12) var(--space-6);
flex: 1;
display: flex;
align-items: center;
}
/* the deck swaps in over the board; flex would beat [hidden] otherwise */
.board[hidden] {
display: none;
}
/* ---- signal chain (§9.7: a settings section, no route of its own) ----- */
.chain {
width: 100%;
}
.chain {
display: grid;
grid-template-columns: 1fr 2.5rem 1.2fr 2.5rem 1fr;
grid-template-areas:
@@ -1811,10 +1802,6 @@ body {
flex: 1;
}
.board {
padding: var(--space-6) var(--space-4);
}
.chain {
grid-template-columns: 1fr;
grid-template-areas: