diff --git a/assets/bitblocks.css b/assets/bitblocks.css index 0b5b70b..0d4c5ee 100644 --- a/assets/bitblocks.css +++ b/assets/bitblocks.css @@ -176,6 +176,30 @@ section { border-top: 1px solid var(--line); } .flow .node .sq { width: 20px; height: 20px; background: var(--bc); margin-bottom: 12px; } .flow .node .nm { font-weight: 720; font-size: 18px; letter-spacing: -0.01em; } .flow .node .role { color: var(--muted); font-size: 13px; margin-top: 3px; } + +/* Layered architecture diagram (§03): substrate -> primitives -> apps. */ +.arch { margin-top: 4px; } +.tier { border: 1px solid var(--line); background: var(--surface); } +.tier .tk { display: block; font-family: 'Ubuntu Sans Mono V', ui-monospace, monospace; font-size: 10.5px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); padding: 13px 18px; } +.tier-row { display: grid; gap: 1px; background: var(--line); border-top: 1px solid var(--line); } +.tier-row.n4 { grid-template-columns: repeat(4, 1fr); } +.tier-row.n3 { grid-template-columns: repeat(3, 1fr); } +.tier-row.n2 { grid-template-columns: repeat(2, 1fr); } +.arch .cell { background: var(--surface); padding: 20px 18px; display: flex; flex-direction: column; gap: 3px; position: relative; text-decoration: none; color: var(--ink); overflow: hidden; } +.arch .cell .sq { width: 18px; height: 18px; background: var(--bc, var(--line)); margin-bottom: 8px; } +.arch .cell b { font-weight: 720; font-size: 17px; letter-spacing: -0.01em; font-variation-settings: 'wdth' 90; } +.arch .cell span { color: var(--muted); font-size: 12.5px; } +.arch a.cell::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--bc); transform: scaleY(0.25); transition: transform 0.25s; } +.arch a.cell:hover { background: color-mix(in srgb, var(--bc) 8%, transparent); } +.arch a.cell:hover::before { transform: scaleY(1); } +.arch .cell.ghost { background: repeating-linear-gradient(135deg, transparent, transparent 7px, var(--line-soft) 7px, var(--line-soft) 8px); } +.arch .cell.ghost .sq { background: var(--line); } +.arch .cell.ghost b { color: var(--muted); } +.tier-join { text-align: center; font-family: 'Ubuntu Sans Mono V', ui-monospace, monospace; font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--muted); padding: 9px 0; } +@media (max-width: 700px) { .tier-row.n4, .tier-row.n3, .tier-row.n2 { grid-template-columns: 1fr; } } +/* §02 tier band before the built-with (Tessera) row. */ +.tier-label { padding: 13px 22px; background: var(--paper); border-bottom: 1px solid var(--line); font-family: 'Ubuntu Sans Mono V', ui-monospace, monospace; font-size: 10.5px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); } + .compose .note { margin-top: 30px; color: var(--muted); max-width: 66ch; } .compose .note b { color: var(--ink); font-weight: 600; } diff --git a/index.html b/index.html index b623338..05f5d75 100644 --- a/index.html +++ b/index.html @@ -41,7 +41,7 @@ How they fit together -
§ 02 — the blocks
-Each block is small, opinionated, and independent. Use one, or snap them together — they were - designed to compose, not to depend.
+Four small, independent primitives — identity, policy, feeds, payments. Use one, or snap them + together. Then Tessera proves they compose: a real application built from the four.
The capability network for agents — Agent Plugins published, curated, and @@ -129,21 +130,43 @@
§ 03 — how they compose
-Read left to right, they answer the full lifecycle of a sovereign app. Any block can stand - alone; together they interlock.
+Read it bottom to top: an open substrate, four primitives built on it, and applications + assembled from those primitives. The client is the disposable part.
Tessera is the worked example. It signs users in with BitLogin, moderates with BitGate's four dimensions, ranks its feed with BitFeed-shaped recipes, and gates paid - plugins through BitUnlock — a real application assembled entirely from the blocks. Nothing about - it is special-cased; it's just a client over public events, which is the whole point.
+ plugins through BitUnlock — a real application assembled entirely from the four. Nothing about it + is special-cased; it's just a client over public events. Prove the architecture and a second, + unlike app should assemble from the same four the same way.