diff --git a/home.html b/home.html index 96a0d5a..51c26dc 100644 --- a/home.html +++ b/home.html @@ -41,14 +41,29 @@ position: relative; cursor: pointer; } .card:hover { border-color: rgba(75,123,236,.4); background: var(--card-hi); transform: translateY(-2px); } .card .n { font-weight: 600; color: var(--ink); font-size: 15.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + /* TLD suffix (.x, .bch, ...) rendered in the Silent Mode acid so the brand + accent reads instantly across the grid. Subtle glow reinforces it. */ + .card .n .tld { color: var(--acid); font-weight: 700; letter-spacing: .3px; + text-shadow: 0 0 8px rgba(214,255,61,.35); } .card .d { color: var(--mut); font-size: 13px; margin-top: 6px; line-height: 1.4; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } + .card:hover .d { color: var(--ink); } .card .row { display: flex; align-items: center; justify-content: space-between; margin-top: 12px; gap: 8px; } .badge { display: inline-block; font-size: 10.5px; padding: 2px 9px; border-radius: 999px; letter-spacing: .02em; } - .b-on-chain { background: rgba(214,255,61,.14); color: var(--acid); } - .b-Sia { background: rgba(179,157,219,.14); color: var(--sia); } - .b-server { background: rgba(79,209,165,.14); color: var(--srv); } - .b-default { background: rgba(139,152,169,.14); color: var(--mut); } + /* Provenance-typed badges (which chain/storage backed the site). */ + .b-on-chain { background: rgba(214,255,61,.14); color: var(--acid); } + .b-sia { background: rgba(179,157,219,.14); color: var(--sia); } + .b-server { background: rgba(79,209,165,.14); color: var(--srv); } + /* Product-role badges — same acid family with per-role hue shifts. + Kept muted so the badge is legible but doesn't compete with the title. */ + .b-infrastructure { background: rgba(214,255,61,.10); color: var(--acid); } + .b-navigator { background: rgba(75,123,236,.14); color: #7ea3ff; } + .b-registrar { background: rgba(214,255,61,.10); color: var(--acid); } + .b-code-host { background: rgba(179,157,219,.14); color: var(--sia); } + .b-app-store { background: rgba(79,209,165,.14); color: var(--srv); } + .b-search { background: rgba(255,199,95,.14); color: #ffc75f; } + .b-messaging { background: rgba(246,118,138,.14); color: #f6768a; } + .b-default { background: rgba(139,152,169,.14); color: var(--mut); } /* Edit affordances — hidden until Edit mode toggled */ .card .edit-actions { position: absolute; top: 8px; right: 8px; display: none; gap: 4px; } @@ -150,7 +165,18 @@ if (window.home && window.home.navigate) window.home.navigate(q); else window.location.href = "https://duckduckgo.com/?q=" + encodeURIComponent(q); }); - function badgeClass(b) { return b ? "b-" + b : "b-default"; } + function badgeClass(b) { + // Normalize badge label into a CSS class (spaces + case → dashes / lower). + if (!b) return "b-default"; + return "b-" + String(b).toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, ""); + } + // Split a domain-style title so ".X" (or ".bch") can render in the acid brand + // color while the rest stays ink. Preserves capitals in the base label. + function styledTitle(t) { + const m = String(t).match(/^(.+?)(\.[A-Za-z]{1,10})$/); + if (!m) return esc(t); + return esc(m[1]) + '' + esc(m[2]) + ''; + } function render() { const g = $("grid"); g.innerHTML = cards.map((c, i) => { @@ -160,7 +186,7 @@ -